blob: b8520b1bdfcf632d743226049e15068a82e6ac6e [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test.js"></script>
</head>
<body id="body" onload="setTimeout('runTest();', 1)">
<div id="content">
<iframe src="data:text/html,<body><input type='search' placeholder=''><input type='search' placeholder=''>"></iframe>
</div>
<div role="group" id="console"></div>
<script>
description("This tests that using an old text marker that references a removed container node won't crash.");
var cachedMarker1 = 0;
var cachedMarker2 = 0;
jsTestIsAsync = true;
function runTest() {
// Retrieve a marker for the search field in the iframe and cache it.
var searchField1 = accessibilityController.accessibleElementById("content").childAtIndex(0).childAtIndex(0).childAtIndex(0).childAtIndex(0);
var range1 = searchField1.textMarkerRangeForElement(searchField1);
cachedMarker1 = searchField1.startTextMarkerForTextMarkerRange(range1);
var searchField2 = accessibilityController.accessibleElementById("content").childAtIndex(0).childAtIndex(0).childAtIndex(0).childAtIndex(1);
var range2 = searchField2.textMarkerRangeForElement(searchField2);
cachedMarker2 = searchField2.startTextMarkerForTextMarkerRange(range2);
debug("Text marker 1 is valid: " + searchField1.isTextMarkerValid(cachedMarker1));
debug("Text marker 2 is valid: " + searchField2.isTextMarkerValid(cachedMarker2));
// Remove the iframe and the search field inside and then force cleanup.
document.getElementById("content").innerHTML = "";
gc();
setTimeout("accessCachedMarker()", "10");
}
function accessCachedMarker() {
var console = accessibilityController.accessibleElementById("console");
// Don't crash accessing the text marker that references a stale Node.
var index1 = console.indexForTextMarker(cachedMarker1);
debug("Text marker 1 is valid: " + console.isTextMarkerValid(cachedMarker1));
var index2 = console.indexForTextMarker(cachedMarker2);
debug("Text marker 2 is valid: " + console.isTextMarkerValid(cachedMarker2));
finishJSTest();
}
</script>
</body>
</html>