Bug 487539. Don't use an <area>'s primary frame as a primary frame hint. r+sr=roc

This commit is contained in:
Boris Zbarsky 2009-04-09 21:37:37 -04:00
parent c5784fb1a5
commit 8a4ff1a34f
3 changed files with 50 additions and 1 deletions

View File

@ -386,7 +386,10 @@ nsFrameManager::GetPrimaryFrameFor(nsIContent* aContent,
entry = static_cast<PrimaryFrameMapEntry*>
(PL_DHashTableOperate(&mPrimaryFrameMap, prevSibling,
PL_DHASH_LOOKUP));
if (PL_DHASH_ENTRY_IS_BUSY(entry))
// XXXbz the GetContent() == prevSibling check is needed due to bug
// 135040. Remove it once that's fixed.
if (PL_DHASH_ENTRY_IS_BUSY(entry) && entry->frame &&
entry->frame->GetContent() == prevSibling)
hint.mPrimaryFrameForPrevSibling = entry->frame;
}
}

View File

@ -0,0 +1,45 @@
<!DOCTYPE html>
<html class="reftest-wait">
<head>
<script type="text/javascript">
var img = document.createElement("img");
img.setAttributeNS(null, "usemap", "#map");
img.setAttributeNS(null, "src", "data:image/gif;base64,R0lGODlhEwATAKIAAP//AMzMADMzAP8AAAAAAP///wAAAAAAACH5BAEAAAUALAAAAAATABMAAANWWLrUTisyEoC1oUlFr8dQRHykFRad+Y0gdzlv86KVKdsskOUAjHu312rFK5FuxaMNIMgYe85GrVfKZVDAR7DHmVoG4IHn6vqEgZLU90xOq8OazUS7SQAAOw==");
function boom()
{
map = document.createElement("map");
map.setAttributeNS(null, "name", "map");
area = document.createElement("area");
map.appendChild(area);
span = document.createElement("span");
span.appendChild(img);
td = document.createElement("td");
span.appendChild(td);
map.appendChild(span);
document.body.appendChild(map);
boom2();
}
function boom2()
{
// For reliable reproduction, need a flush here.
var x = document.body.offsetWidth;
// needs to be async, apparently.
setTimeout(boom3, 0);
}
function boom3()
{
span.parentNode.removeChild(span);
document.documentElement.removeAttribute("class");
}
</script>
</head>
<body onload="boom();"></body>
</html>

View File

@ -1203,3 +1203,4 @@ fails == 472020-2.xul 472020-2-ref.xul
== 486052-2f.html 486052-2-ref.html
== 486052-2g.html 486052-2-ref.html
== 486848-1.xul 486848-1-ref.xul
== 487539-1.html about:blank