зеркало из https://github.com/mozilla/gecko-dev.git
Bug 497519 part 1. Clear the undisplayed map correctly in the presence of XBL. r=dbaron,bzbarsky
This commit is contained in:
Родитель
5be8c26635
Коммит
c20df0835f
|
@ -0,0 +1,28 @@
|
|||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
|
||||
<xbl:bindings xmlns:xbl="http://www.mozilla.org/xbl">
|
||||
<xbl:binding id="foo"><xbl:content><div style="position:relative;"><xbl:children/></div></xbl:content></xbl:binding>
|
||||
</xbl:bindings>
|
||||
|
||||
<script>
|
||||
<![CDATA[
|
||||
function test() {
|
||||
document.getElementById("span").innerHTML = "<table><tr><td></td></tr></table>";
|
||||
}
|
||||
]]>
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
<body onload="test();">
|
||||
|
||||
<div style="-moz-binding: url(#foo)">
|
||||
|
||||
<div style="display:none">text</div>
|
||||
<span id="span">text</span>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -239,5 +239,6 @@ load 492014.xhtml
|
|||
load 492112-1.xhtml
|
||||
load 492163-1.xhtml
|
||||
load 495350-1.html
|
||||
load 497519-1.xhtml
|
||||
load 500467-1.html
|
||||
load 501878-1.html
|
||||
|
|
|
@ -667,6 +667,24 @@ nsFrameManager::ClearAllUndisplayedContentIn(nsIContent* aParentContent)
|
|||
if (mUndisplayedMap) {
|
||||
mUndisplayedMap->RemoveNodesFor(aParentContent);
|
||||
}
|
||||
|
||||
// Need to look at aParentContent's content list due to XBL insertions.
|
||||
// Nodes in aParentContent's content list do not have aParentContent as a
|
||||
// parent, but are treated as children of aParentContent. We get access to
|
||||
// the content list via GetXBLChildNodesFor and just ignore any nodes we
|
||||
// don't care about.
|
||||
nsINodeList* list =
|
||||
aParentContent->GetOwnerDoc()->BindingManager()->GetXBLChildNodesFor(aParentContent);
|
||||
if (list) {
|
||||
PRUint32 length;
|
||||
list->GetLength(&length);
|
||||
for (PRUint32 i = 0; i < length; ++i) {
|
||||
nsIContent* child = list->GetNodeAt(i);
|
||||
if (child->GetParent() != aParentContent) {
|
||||
ClearUndisplayedContentIn(child, child->GetParent());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
|
Загрузка…
Ссылка в новой задаче