blob: 2174db056dffebeccd6432a3c15bb67a44429286 [file] [log] [blame]
/*
* Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file
* for details. All rights reserved. Use of this source code is governed by a
* BSD-style license that can be found in the LICENSE file.
*/
/**
* @description This test makes sure that focusable elements in canvas fallback
* content are focusable.
*/
import "dart:html";
import "dart:math" as Math;
import "../../testcommon.dart";
import "../../../Utils/async_utils.dart";
main() {
document.body.setInnerHtml('''
<div>
<a id="link1" href="#">Link</a>
<button id="button1">Button</button>
<input id="text1" type="text">
<input id="checkbox1" type="checkbox">
<input id="radio1" type="radio">
<input id="slider1" type="range">
<input id="submit1" type="submit">
<select id="combobox1"><option>1<option>2</select>
<select id="listbox1" multiple><option>1<option>2</select>
<textarea id="textarea1"></textarea>
<div id="focusable1" tabindex="0">Focusable</div>
</div>
<canvas id="myCanvas" width="300" height="300">
<a id="link2" href="#">Link</a>
<button id="button2">Button</button>
<input id="text2" type="text">
<input id="checkbox2" type="checkbox">
<input id="radio2" type="radio">
<input id="slider2" type="range">
<input id="submit2" type="submit">
<select id="combobox2"><option>1<option>2</select>
<select id="listbox2" multiple><option>1<option>2</select>
<textarea id="textarea2"></textarea>
<div id="focusable2" tabindex="0">Focusable</div>
</canvas>
<canvas hidden id="hiddenCanvas" width="300" height="300">
<a id="linkInHiddenCanvas" href="#">Link</a>
</canvas>
<div id="console"></div>
''', treeSanitizer: new NullTreeSanitizer());
var element;
checkFocusable(id) {
debug(id + " should be focusable.");
element = document.getElementById(id);
element.focus();
shouldBe(document.activeElement, element);
debug("");
}
checkFocusable("link1");
checkFocusable("button1");
checkFocusable("text1");
checkFocusable("checkbox1");
checkFocusable("radio1");
checkFocusable("slider1");
checkFocusable("submit1");
checkFocusable("combobox1");
checkFocusable("listbox1");
checkFocusable("textarea1");
checkFocusable("focusable1");
checkFocusable("link2");
checkFocusable("button2");
checkFocusable("text2");
checkFocusable("checkbox2");
checkFocusable("radio2");
checkFocusable("slider2");
checkFocusable("submit2");
checkFocusable("combobox2");
checkFocusable("listbox2");
checkFocusable("textarea2");
checkFocusable("focusable2");
var previousFocusedElement;
checkNotFocusable(id) {
debug(id + " should not be focusable.");
previousFocusedElement = document.activeElement;
element = document.getElementById(id);
element.focus();
shouldBe(document.activeElement, previousFocusedElement);
debug("");
}
checkNotFocusable("linkInHiddenCanvas");
}