Add "VisibleOnly" key to search predicate
[WebKit-https.git] / LayoutTests / platform / mac / accessibility / search-when-element-starts-in-table.html
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
2 <html>
3 <head>
4 <script src="../../../fast/js/resources/js-test-pre.js"></script>
5 </head>
6 <body id="body">
7
8 <table border=1>
9 <tr><th>Column</th></tr>
10 <tr><td><h1 tabindex="0" id="heading">heading</h1></td></tr>
11 </table>
12
13 <h1>outside heading</h1>
14
15 <p id="description"></p>
16 <div id="console"></div>
17
18 <script>
19     description("This tests that when we start searching from an element within a table, we do not get as a result, the same element.");
20     
21     if (window.accessibilityController) {
22         document.getElementById("body").focus();
23         var containerElement = accessibilityController.focusedElement;
24
25         document.getElementById("heading").focus();
26         var heading = accessibilityController.focusedElement;
27
28         // The next heading should be outside the table
29         resultElement = containerElement.uiElementForSearchPredicate(heading, true, "AXHeadingSearchKey", "", false);
30         shouldBe("resultElement.role", "'AXRole: AXHeading'");
31         shouldBe("resultElement.title", "'AXTitle: outside heading'");        
32
33         // A search for the previous heading should return nothing.
34         resultElement = containerElement.uiElementForSearchPredicate(heading, false, "AXHeadingSearchKey", "", false);
35         shouldBe("resultElement.role", "'AXRole: '");
36
37         // When asking the child of the heading for the previous element, it should return the heading.
38         resultElement = containerElement.uiElementForSearchPredicate(heading.childAtIndex(0), false, "AXAnyTypeSearchKey", "", false);
39         shouldBe("resultElement.role", "'AXRole: AXHeading'");
40
41         // When asking the heading for the previous element, it should return the cell.
42         resultElement = containerElement.uiElementForSearchPredicate(resultElement, false, "AXAnyTypeSearchKey", "", false);
43         shouldBe("resultElement.role", "'AXRole: AXCell'");
44
45         // When asking the cell for the previous element, it should return the row.
46         resultElement = containerElement.uiElementForSearchPredicate(resultElement, false, "AXAnyTypeSearchKey", "", false);
47         shouldBe("resultElement.role", "'AXRole: AXRow'");
48
49         // Now when trying to find the previous static text, it should go into the table's children to find the text in the first cell.
50         resultElement = containerElement.uiElementForSearchPredicate(resultElement, false, "AXStaticTextSearchKey", "", false);
51         shouldBe("resultElement.role", "'AXRole: AXStaticText'");
52         shouldBe("resultElement.stringValue", "'AXValue: Column'");
53
54         // When asking the text for the previous element it should return the first cell of the table.
55         resultElement = containerElement.uiElementForSearchPredicate(resultElement, false, "AXAnyTypeSearchKey", "", false);
56         shouldBe("resultElement.role", "'AXRole: AXCell'");
57         shouldBe("resultElement.rowIndexRange()", "'{0, 1}'");
58         shouldBe("resultElement.columnIndexRange()", "'{0, 1}'");
59         
60     }
61     
62 </script>
63
64 <script src="../../../fast/js/resources/js-test-post.js"></script>
65 </body>
66 </html>