2012-08-15 21:31:35 +00:00
<!DOCTYPE HTML>
< html >
< body >
2013-09-08 01:18:24 +00:00
< script src = "../resources/js-test-pre.js" > < / script >
2012-08-15 21:31:35 +00:00
< div id = "container" tabindex = "-1" > < / div >
< canvas id = "canvas" tabindex = "-1" > < / canvas >
< div id = "console" > < / div >
< script >
description("This test makes sure that AccessibilityNodeObjects are properly detached when the node they point to is reparented to a location that allows them to have a renderer.");
if (window.testRunner & & window.accessibilityController) {
window.testRunner.dumpAsText();
// Create an ordinary button on the page, focus it and get its accessibility role.
var button = document.createElement('button');
document.body.appendChild(button);
button.focus();
window.axElement = accessibilityController.focusedElement;
window.expectedButtonRole = axElement.role;
// Now remove the node from the tree and get the role of the detached accessibility object.
document.body.removeChild(button);
window.expectedDetachedRole = axElement.role;
shouldBeTrue("expectedButtonRole != expectedDetachedRole");
// This time create a button that's a child of a canvas element. It will be focusable but not rendered.
// In particular, this will create an AccessibilityNodeObject rather than an AccessibilityRenderObject.
var canvas = document.getElementById('canvas');
(function() {
var button = document.createElement('button');
canvas.appendChild(button);
// Note: focusing the button and using that to get its accessibility object creates an extra
// reference to the button and it won't get deleted when we want it to. So instead we focus the
// canvas and get its first child.
canvas.focus();
window.axElement = accessibilityController.focusedElement.childAtIndex(0);
window.canvasButtonRole = axElement.role;
shouldBe("canvasButtonRole", "expectedButtonRole");
// Now reparent the node to a container that's not a canvas.
var container = document.getElementById('container');
container.appendChild(button);
container.focus();
window.axReparentedElement = accessibilityController.focusedElement.childAtIndex(0);
})();
// Ensure that the old accessibility object is detached by checking its role.
window.detachedCanvasButtonRole = axElement.role;
shouldBe("detachedCanvasButtonRole", "expectedDetachedRole");
// Ensure that the new accessibility object for the now-reparented node has the correct role.
window.reparentedButtonRole = axReparentedElement.role;
shouldBe("reparentedButtonRole", "expectedButtonRole");
}
< / script >
2013-09-08 01:18:24 +00:00
< script src = "../resources/js-test-post.js" > < / script >
2012-08-15 21:31:35 +00:00
< / body >
< / html >