4 <script src=
"../../../resources/js-test.js"></script>
6 <body id=
"body" tabindex=
"1">
7 <dialog id=
"top-dialog" tabindex=
"1" style=
"width: 100px; top: 30px"><button id=
"top-dialog-button">I get focus
</button></dialog>
8 <dialog id=
"bottom-dialog" tabindex=
"-1" style=
"width: 100px; bottom: 30px"><button id=
"bottom-dialog-button">I don't get focus.
</button></dialog>
10 <input id=
"text" type=
"text">
11 <input id=
"datetime" type=
"datetime">
12 <input id=
"color" type=
"color">
14 <optgroup id=
"optgroup">
15 <option id=
"option">Option
</option>
18 <div id=
"contenteditable-div" contenteditable
>I'm editable
</div>
19 <span id=
"tabindex-span" tabindex=
"0">I'm tabindexed.
</div>
20 <embed id=
"embed" type=
"application/x-webkit-test-netscape" width=
100 height=
100></embed>
21 <a id=
"anchor" href=
"">Link
</a>
24 description('Test that inert nodes are not focusable. The test passses if only the ' +
25 'topmost dialog and its button are focusable.');
27 function testFocus(element
, expectFocus
) {
28 focusedElement
= null;
29 element
.addEventListener('focus', function() { focusedElement
= element
; }, false);
31 expected
= expectFocus
? "true" : "false"
33 shouldBe('"' + element
.id
+ '"; focusedElement === theElement', expected
);
36 function testTree(element
, expectFocus
) {
37 if (element
.nodeType
== Node
.ELEMENT_NODE
)
38 testFocus(element
, expectFocus
);
39 var childNodes
= element
.childNodes
;
40 for (var i
= 0; i
< childNodes
.length
; i
++)
41 testTree(childNodes
[i
], expectFocus
);
44 var bottomDialog
= document
.getElementById('bottom-dialog');
45 bottomDialog
.showModal();
47 var topDialog
= document
.getElementById('top-dialog');
48 topDialog
.showModal();
50 testFocus(document
.body
, false);
51 testTree(topDialog
, true);
52 testTree(bottomDialog
, false);
53 testTree(document
.getElementById('container'), false);