blob: 303f38c0f27ff117bde8b2976d17d5ed6649a2db [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<script src="../../resources/js-test-pre.js"></script>
</head>
<body id="body">
<iframe id="iframe" width=100 height=100></iframe>
<p id="description"></p>
<div id="console"></div>
<script>
description("This protects against a crash when a text marker still holds a reference to a node that's been deallocated.");
// Add an element that a text marker can be retrieved from.
var contentDoc = document.getElementById("iframe").contentDocument;
contentDoc.body.innerHTML = "<h1 tabindex='0'>content</h1>";
// Tab to the element.
// Note: If the element has an "id" it won't get de-allocated in time, so .focus() can't be used.
eventSender.keyDown("\t");
// get a marker that will become invalid when the node disappears.
var axDiv = accessibilityController.focusedElement;
var textMarkerRange = axDiv.textMarkerRangeForElement(axDiv);
var invalidMarker = axDiv.startTextMarkerForTextMarkerRange(textMarkerRange);
</script>
<script>
// Write new content to cause all content to disappear.
contentDoc.body.innerHTML = "<h2>new content</h2>";
</script>
<script>
// Access the invalid marker (it should not crash).
document.getElementById("body").focus();
var body = accessibilityController.focusedElement;
body.accessibilityElementForTextMarker(invalidMarker);
</script>
<script src="../../resources/js-test-post.js"></script>
</body>
</html>