| <!DOCTYPE html> |
| <html> |
| <head> |
| <script src="../../../resources/js-test-pre.js"></script> |
| <title>Search Text 1</title> |
| </head> |
| <body id="body"> |
| |
| <p contenteditable="true" id="text">The quick brown fox <span id="target">jumps</span> over the lazy dog. </p> |
| |
| <p contenteditable="true" id="text2">TEXT2: The quick brown fox jumps over the lazy dog. The quick brown fox jumps over the lazy dog.</p> |
| |
| <p id="description"></p> |
| <div id="console"></div> |
| |
| <script> |
| description("This tests the ability to search for text given a starting point and a direction for the search."); |
| |
| function selectElementText(element) { |
| var range = document.createRange(); |
| range.selectNodeContents(element); |
| |
| var selection = window.getSelection(); |
| selection.removeAllRanges(); |
| selection.addRange(range); |
| } |
| |
| if (window.accessibilityController) { |
| var text = accessibilityController.accessibleElementById("text"); |
| var result = 0; |
| var selection = 0; |
| var target = document.getElementById("target"); |
| |
| // Select target element. |
| selectElementText(target); |
| |
| // Search for text after selection (single search string). |
| result = text.searchTextWithCriteria("lazy", "AXSearchTextStartFromSelection", "AXSearchTextDirectionForward"); |
| shouldBe("result.length", "1"); |
| shouldBe("text.stringForTextMarkerRange(result[0])", "'lazy'"); |
| |
| // Search for text before selection (single search string). |
| result = text.searchTextWithCriteria("quick", "AXSearchTextStartFromSelection", "AXSearchTextDirectionBackward"); |
| shouldBe("result.length", "1"); |
| shouldBe("text.stringForTextMarkerRange(result[0])", "'quick'"); |
| |
| // Search for text closest to selection (single search string). |
| result = text.searchTextWithCriteria("the", "AXSearchTextStartFromSelection", "AXSearchTextDirectionClosest"); |
| shouldBe("result.length", "1"); |
| shouldBe("text.stringForTextMarkerRange(result[0])", "'the'"); |
| |
| // Search from the beginning (single search string). |
| result = text.searchTextWithCriteria("the", "AXSearchTextStartFromBegin", "AXSearchTextDirectionClosest"); |
| shouldBe("result.length", "1"); |
| shouldBe("text.stringForTextMarkerRange(result[0])", "'The'"); |
| |
| // Search for all occurrences from the beginning of document (single search string). |
| var body = accessibilityController.rootElement.childAtIndex(0); |
| result = body.searchTextWithCriteria("dog", "AXSearchTextStartFromBegin", "AXSearchTextDirectionAll"); |
| shouldBe("result.length", "3"); |
| for (var i = 0; i < result.length; i++) |
| shouldBe("body.stringForTextMarkerRange(result[i])", "'dog'"); |
| |
| // Search for all occurrences from the end of document (single search string). |
| result = body.searchTextWithCriteria("fox", "AXSearchTextStartFromEnd", "AXSearchTextDirectionAll"); |
| shouldBe("result.length", "3"); |
| for (var i = 0; i < result.length; i++) |
| shouldBe("body.stringForTextMarkerRange(result[i])", "'fox'"); |
| |
| // Search for a non-present string (single search string). |
| result = body.searchTextWithCriteria("cat", "AXSearchTextStartFromBegin", "AXSearchTextDirectionAll"); |
| shouldBe("typeof result", "'undefined'"); |
| |
| // Search for multiple strings after selection. |
| result = text.searchTextWithCriteria(["lazy", "over"], "AXSearchTextStartFromSelection", "AXSearchTextDirectionForward"); |
| shouldBe("result.length", "1"); |
| shouldBe("text.stringForTextMarkerRange(result[0])", "'over'"); |
| |
| // Search for multiple strings before selection. |
| result = text.searchTextWithCriteria(["quick", "fox"], "AXSearchTextStartFromSelection", "AXSearchTextDirectionBackward"); |
| shouldBe("result.length", "1"); |
| shouldBe("text.stringForTextMarkerRange(result[0])", "'fox'"); |
| |
| // Search for multiple strings closest to selection. |
| result = text.searchTextWithCriteria(["dog", "fox"], "AXSearchTextStartFromSelection", "AXSearchTextDirectionClosest"); |
| shouldBe("result.length", "1"); |
| shouldBe("text.stringForTextMarkerRange(result[0])", "'fox'"); |
| } |
| </script> |
| |
| <script src="../../../resources/js-test-post.js"></script> |
| </body> |
| </html> |