bug 895082 - recursively cache children in DocAccessible::ProcessContentInserted() r=surkov

This commit is contained in:
Trevor Saunders 2013-10-31 15:28:51 -04:00
parent 899501b7a2
commit e67500c4ba
3 changed files with 54 additions and 1 deletions

View File

@ -1732,7 +1732,8 @@ DocAccessible::ProcessContentInserted(Accessible* aContainer,
// accessibles into accessible tree. We need to invalidate children even
// there's no inserted accessibles in the end because accessible children
// are created while parent recaches child accessibles.
aContainer->UpdateChildren();
aContainer->InvalidateChildren();
CacheChildrenInSubtree(aContainer);
}
UpdateTree(aContainer, aInsertedContent->ElementAt(idx), true);

View File

@ -2,6 +2,7 @@
[test_ariadialog.html]
[test_bug852150.xhtml]
[test_bug895082.html]
[test_canvas.html]
[test_colorpicker.xul]
[test_contextmenu.xul]

View File

@ -0,0 +1,51 @@
<!DOCTYPE html>
<html>
<head>
<title>Replace body test</title>
<link rel="stylesheet" type="text/css"
href="chrome://mochikit/content/tests/SimpleTest/test.css" />
<script type="application/javascript"
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript"
src="../common.js"></script>
<script type="application/javascript"
src="../role.js"></script>
<script type="application/javascript"
src="../events.js"></script>
<script type="application/javascript">
function doTest()
{
var y = document.getElementById("y");
var oldBody = document.body;
var newBody = document.createElement("body")
document.documentElement.insertBefore(newBody, oldBody);
setTimeout(function() {
document.documentElement.removeChild(oldBody);
newBody.appendChild(y);
ok(true, "we didn't assert");
SimpleTest.finish();
}, 0);
}
SimpleTest.waitForExplicitFinish();
addA11yLoadEvent(doTest);
</script>
</head>
<body>
<a target="_blank"
href="https://bugzilla.mozilla.org/show_bug.cgi?id=895082"
title="Bug 895082 - replacing body element asserts">
Bug 895082</a>
<p id="display"></p>
<div id="content" style="display: none"></div>
<pre id="test">
</pre>
<div><div id="y"></div></div>
</body>
</html>