59 lines
2.2 KiB
HTML
59 lines
2.2 KiB
HTML
<!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>
|