| <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
| <html> |
| <head> |
| <script src="../resources/js-test.js"></script> |
| <script src="../resources/accessibility-helper.js"></script> |
| </head> |
| <body> |
| |
| <div id="content"> |
| <!-- A link always gets its accessible text from contents. --> |
| <a id="link" href="#">A</a> |
| |
| <!-- A generic focusable div should not get its accessible text from contents. --> |
| <div id="div" tabindex="0">B</div> |
| <div id="div2" tabindex="0"><div></div>C</div> |
| <div id="div3" tabindex="0" aria-label="D"></div> |
| |
| <!-- A generic focusable div should not get accessible text from children that are focusable or containers. --> |
| <div id="div4" tabindex="0"><a href="#">Link</a></div> |
| <div id="div5" tabindex="0">Initial text before link<a href="#">Link</a></div> |
| <div id="div6" tabindex="0"><ul><li>List item</li></ul></div> |
| <div id="div7" tabindex="0">Initial text before list<ul><li>List item</li></ul></div> |
| </div> |
| |
| <script> |
| description("This test makes sure that a generic focusable div can get accessibility focus. It should not get accessible text from its children automatically though."); |
| |
| function lastChar(str) { |
| return str.substr(str.length - 1); |
| } |
| |
| async function waitForFocus(id) { |
| document.getElementById(id).focus(); |
| shouldBe("document.activeElement.id", `"${id}"`); |
| let axFocusedElement; |
| await waitFor(() => { |
| axFocusedElement = accessibilityController.focusedElement; |
| return axFocusedElement && axFocusedElement.domIdentifier === id; |
| }); |
| return axFocusedElement; |
| } |
| |
| if (window.accessibilityController) { |
| window.jsTestIsAsync = true; |
| |
| setTimeout(async function() { |
| window.axLink = await waitForFocus("link"); |
| shouldBe("lastChar(axLink.title)", "\"A\""); |
| |
| window.axDiv = await waitForFocus("div"); |
| shouldBe("lastChar(axDiv.title)", "' '"); |
| |
| window.axDiv2 = await waitForFocus("div2"); |
| shouldBe("lastChar(axDiv2.title)", "' '"); |
| |
| window.accNameForDiv3 = platformValueForW3CName(await waitForFocus("div3")); |
| shouldBe("lastChar(accNameForDiv3)", "\"D\""); |
| |
| window.axDiv4 = await waitForFocus("div4"); |
| shouldBe("axDiv4.title.indexOf('Link')", "-1"); |
| |
| window.axDiv5 = await waitForFocus("div5"); |
| shouldBe("axDiv5.title.indexOf('Link')", "-1"); |
| shouldBe("axDiv5.title.indexOf('Initial text before link') >= 0", "false"); |
| |
| window.axDiv6 = await waitForFocus("div6"); |
| shouldBe("axDiv6.title.indexOf('List item')", "-1"); |
| |
| window.axDiv7 = await waitForFocus("div7"); |
| shouldBe("axDiv7.title.indexOf('List item')", "-1"); |
| shouldBe("axDiv7.title.indexOf('Initial text before list') >= 0", "false"); |
| |
| document.getElementById("content").style.visibility = "hidden"; |
| |
| finishJSTest(); |
| }, 0); |
| } |
| </script> |
| </body> |
| </html> |