back out e40cbab6a972 (Bug 564705) 590da60fd253 (Bug 507628 and bug 507991) b166415b8c3f (Bug 564368) 0dac5d3eeb97 (Bug 564063) 116e56d84770 (Bug 563407) c51c93f5240f (Bug 536495) for some orange
authorTimothy Nikkel <tnikkel@gmail.com>
Tue, 11 May 2010 22:01:08 -0500
changeset 42182 01befa5163eed6f462d5b920bc0470599dc2cb2d
parent 42181 b279d99d3f45094f96afc09d43ae7d7c51e046eb
child 42183 54540deb463f2a3d68b8cc6b50ce31c7f74a13ad
push id13215
push usertnikkel@gmail.com
push dateWed, 12 May 2010 03:01:28 +0000
treeherdermozilla-central@01befa5163ee [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs564705, 507628, 507991, 564368, 564063, 563407, 536495
milestone1.9.3a5pre
backs oute40cbab6a9726591312375194167c10e065471de
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
back out e40cbab6a972 (Bug 564705) 590da60fd253 (Bug 507628 and bug 507991) b166415b8c3f (Bug 564368) 0dac5d3eeb97 (Bug 564063) 116e56d84770 (Bug 563407) c51c93f5240f (Bug 536495) for some orange
content/base/src/nsGenericElement.cpp
content/base/src/nsTextNode.cpp
content/xbl/crashtests/507628-1.xhtml
content/xbl/crashtests/507991-1.xhtml
content/xbl/crashtests/crashtests.list
layout/base/crashtests/564063-1.html
layout/base/crashtests/crashtests.list
layout/base/nsCSSFrameConstructor.cpp
layout/generic/crashtests/564368-1.xhtml
layout/generic/crashtests/crashtests.list
layout/generic/nsFrameSetFrame.cpp
layout/xul/base/src/nsTextBoxFrame.cpp
modules/libpr0n/src/imgRequestProxy.cpp
--- a/content/base/src/nsGenericElement.cpp
+++ b/content/base/src/nsGenericElement.cpp
@@ -5067,17 +5067,17 @@ nsGenericElement::List(FILE* out, PRInt3
   mNodeInfo->GetQualifiedName(buf);
   fputs(NS_LossyConvertUTF16toASCII(buf).get(), out);
 
   fprintf(out, "@%p", (void *)this);
 
   ListAttributes(out);
 
   fprintf(out, " intrinsicstate=[%08x]", IntrinsicState());
-  fprintf(out, " flags=[%08x]", static_cast<unsigned int>(GetFlags()));
+  fprintf(out, " flags=[%08x]", GetFlags());
   fprintf(out, " primaryframe=%p", static_cast<void*>(GetPrimaryFrame()));
   fprintf(out, " refcount=%d<", mRefCnt.get());
 
   PRUint32 i, length = GetChildCount();
   if (length > 0) {
     fputs("\n", out);
 
     for (i = 0; i < length; ++i) {
--- a/content/base/src/nsTextNode.cpp
+++ b/content/base/src/nsTextNode.cpp
@@ -231,17 +231,17 @@ nsTextNode::UnbindFromAttribute()
 void
 nsTextNode::List(FILE* out, PRInt32 aIndent) const
 {
   PRInt32 index;
   for (index = aIndent; --index >= 0; ) fputs("  ", out);
 
   fprintf(out, "Text@%p", static_cast<const void*>(this));
   fprintf(out, " intrinsicstate=[%08x]", IntrinsicState());
-  fprintf(out, " flags=[%08x]", static_cast<unsigned int>(GetFlags()));
+  fprintf(out, " flags=[%08x]", GetFlags());
   fprintf(out, " primaryframe=%p", static_cast<void*>(GetPrimaryFrame()));
   fprintf(out, " refcount=%d<", mRefCnt.get());
 
   nsAutoString tmp;
   ToCString(tmp, 0, mText.GetLength());
   fputs(NS_LossyConvertUTF16toASCII(tmp).get(), out);
 
   fputs(">\n", out);
deleted file mode 100644
--- a/content/xbl/crashtests/507628-1.xhtml
+++ /dev/null
@@ -1,12 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<bindings xmlns="http://www.mozilla.org/xbl">
-<binding id="b" inheritstyle="false">
-<content>
-<span xmlns="http://www.w3.org/1999/xhtml"/><span xmlns="http://www.w3.org/1999/xhtml"><embed style="display: block;" type="*"/></span>
-</content>
-</binding>
-</bindings>
-
-<div style="-moz-binding:url();"/>
-
-</html>
\ No newline at end of file
deleted file mode 100644
--- a/content/xbl/crashtests/507991-1.xhtml
+++ /dev/null
@@ -1,18 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-
-<head>
-<title>Crash [@ nsSprocketLayout::PopulateBoxSizes] with object and position:absolute;overflow:scroll in binding</title>
-<bindings xmlns="http://www.mozilla.org/xbl">
-<binding id="a" inheritstyle="false">
-<content>
-<object xmlns="http://www.w3.org/1999/xhtml" style="display: table;"/>
-<div xmlns="http://www.w3.org/1999/xhtml" style="position: absolute;overflow: scroll; "/>
-</content>
-</binding>
-</bindings>
-</head>
-
-<body>
-<span style="-moz-binding:url()"></span>
-</body>
-</html>
\ No newline at end of file
--- a/content/xbl/crashtests/crashtests.list
+++ b/content/xbl/crashtests/crashtests.list
@@ -25,10 +25,8 @@ load 420233-1.xhtml
 load 421997-1.xhtml
 load 432813-1.xhtml
 load 454820-1.html
 load 460665-1.xhtml
 load 464863-1.xhtml
 load 472260-1.xhtml
 load 492978-1.xul
 load 495354-1.xhtml
-load 507628-1.xhtml
-load 507991-1.xhtml
deleted file mode 100644
--- a/layout/base/crashtests/564063-1.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<html>
-<head>
-<script type="text/javascript">
-
-function boom()
-{
-  document.documentElement.offsetHeight;
-  document.body.appendChild(document.getElementById("m"));
-  document.getElementsByTagName("area")[0].appendChild(document.createTextNode('x'));
-}
-
-</script>
-</head>
-
-<body onload="setTimeout(boom, 200);">
-
-<map name="m" id="m"><area></map><img src="data:image/gif,GIF89a1%00%3C%00%D5%FF%00%9D%B6%85%18%1C%14%8E%A4xz%8Dg%3AC1%9F%B6%86%A3%B8%89%1F%23%1A%9C%AD%85(%2C!%AD%BC%93%0A%0B%08bkP%BC%C2%A0PP%3E%C7%C5%A9%BD%B4%85%13%11%0C%CA%B8%8A%CE%B6%85%B7%A2v3.%24%D0%B7%88%9F%8Ch%82rU%D2%BA%8D%D8%BF%9B%A2%94%80%D7%C9%B5%26!%1AC9.%C7%AD%96%EB%C6%B5%E6%CB%BE%AD%8F%88%F1%CB%C2%C0%C0%C0%F6%CC%C7%BF%9B%99%D2%A9%A8%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00!%F9%04%01%00%00%24%00%2C%00%00%00%001%00%3C%00%00%06%FF%40%92pH%2C%1A%8F%C4%D2%A8%84l%3AI%A5(%D3Y%0A%3D%14%06%83%E2%11%9A%3E%8DU%0E%E7%F1h4%1E%9CPh%09%25%86%1A%06%80%1CP0%9CC%DFa%89%03%2F%CC%FFu%0Af%0D%1CL%23%0F%06~%7Fru%1Cy%24%1C%0As%03%94%95%03%07%98%07%04%0C%08gp%02%0C%15%09%A3%A3%15%0C%00%06xO%23%0D~%03%09%04%B1%B1%07%0B%A7r%03%B1u%05%A0%0C%02%8B%02%0E%0E%00%0D_%1Cq%B8%03%8B%09%C9%8B%0E%B6%CE%8B%93%09%00%0A%5EG%25%0D%A0%04%CC%7F%CB%D1%03%0E%A2%0B%A4%DB%8B(%A8%23N%23%0A%0C%E5%D1%DE%8B%ED%B6%93%04%E6%E8N!%02%F0%D1%FC%97%DC%DD%F6%14%A4k%12%02%1A%BF%83%B8%0EN%FBsNA%17%82%0B%0F%F2%13%F0%EF%8F0%00%95%CE%D9)%84%24DD%89%20%0F%3A%20%B0%60%5B%1D%03%8E%8Ex%0C%C9%12%24%B2%2C)%8B%1C%FA%D8%B2%E6%1Cg0eF2%F0%D1AE%FF%9B%08%094J%82HN%C4K%BE%80%86%C45t%88%B19%A6%7C%05S%CA%92)%CA!%EB%E48%40%C1U%DCO%AA%8B%12*%88%19%E2X%BDn%F3%C0%F2cp%D1%A1%90%B2%006%85%25%90%14%A3Z%06%A7%F0%26-%F0%40%08%079%07%EA%CEa%9B%F4%80Z%01%01%128%10%80%82Y5H%80E%1A%06%10%400P%C6%B7%CA%09%84%0C%60r%3F9l%D5%02%80%970%15%24%3F%9EA%5E%04%BB%CF%F0U%B8%A9EK%C4%3C%C70_%12Y%DD%C9%3E%08%2C%ED%E4%06Q%1A%00%60%40s%F7%9F%D0%7Flo~%3A%A0%B2qs4%05(%C7S%02Q%01%06%07%02%60%FA%FA%BC%1D%1D%B7%B8%AF%F8%D1%FD%FC%97%BB%CDB%F6H%22_%1E%B4w%3A%C4%88%16%60%DF%3E%163%D3E%CA%D2%07%E0%93Q%81%FF%00%D6%A4%5B%7C2)%B0_9%06%40%A0%E0%82Y(%F2%07Es%08%40%17*%0D%0Cd%C4%03%84E%B3%8D%01%1B%400%FF%C1%87%1FZ%20%01%0A%13%CA%01L%89xi%F1%80%85F%84%60%E0j%B5%09%A0%803%20%D6%88%C2T%A0%05%93%89%03%08p%C0%06%3E%08%8C%C4%CD%2B%09h%40%81%075%82%88%82%04%09%90h_%16*%B2%F8%84%8B%EDd'K%05%1ALPA%92%1F%A20%81%06%0Dl%B0%81%09j%A8!e%1Ea%5C!%E6%06%1D0p%C1%96%5Czy%E6%23Txq%82%08or9%81%97t%F6y%84%96z%F2%E9%E7%A0B%00%1A%A7%05%84%12jh%92(d%90%E8%A0%8B%DA%98%C1%9C%8F6%11%A9%92%93V%FA%C8%08G%06j%01%A5%9A%16%A1%01%5E%81N%00B%A8_P%E0%00%05%A5%9E%8Aj%13%20%60%E0%00%88%16%D4X%C1%05%1A%BCz%C4%08%20%A8z%C1%87%17%D4z%EB%04oZ%E0%EA%A0'%0Ct%82%09%CC6%CB%EC%05%0E%60%F0!%04%1D%7C%D8A%02%AC%B2u%81%AB%234%7B%C2%17%A1TPA0%E4%92%EBA%04%B3N%20%91k%BA%1D%60%80%E4%04%1E%5C%2B%EE%B8%C1T%E0%C1%BD%F8z%80A%1E%BC%C2%1B%01%B1%15D%F0.%BC%D0%FEJA%05%18%80%60%CD%A3%C4u%D0%81%BE%F6b%F0%26%AB%EA%3A%00-%AB%05%7F8%02%A8%AB%88%90%80%87%D0zpA%06%19X%80A%02%BFB%20%F2%C9%F7%BA%E9%E1%87%99%FA%99%A5%06%25%5B%AC%01%1B%BC%BEy%AB%AC%C0%5E%20%2B%0A%F3N%60A%AE%BA%0A1%82%05%17%24%20%B1%D0!f%A0%C1%9A%1Ahpl%D1%24%80%F0A%07NS%ED%A7%09%95%06%01%00%3B" usemap="#m">
-
-</body>
-</html>
--- a/layout/base/crashtests/crashtests.list
+++ b/layout/base/crashtests/crashtests.list
@@ -284,9 +284,8 @@ load 537141-1.xhtml
 load 537562-1.xhtml
 load 538082-1.xul
 load 538207-1.xhtml
 load 538210-1.html
 load 541869-1.xhtml
 load 541869-2.html
 load 560441-1.xhtml
 load 560447-1.html
-load 564063-1.html
--- a/layout/base/nsCSSFrameConstructor.cpp
+++ b/layout/base/nsCSSFrameConstructor.cpp
@@ -6223,46 +6223,33 @@ nsCSSFrameConstructor::MaybeConstructLaz
     }
   }
 
   // We can construct lazily; just need to set suitable bits in the content
   // tree.
 
   // Walk up the tree setting the NODE_DESCENDANTS_NEED_FRAMES bit as we go.
   nsIContent* content = aContainer;
-#ifdef DEBUG
-  // We have to jump through hoops so that we can make some reasonable asserts
-  // due to bug 135040. We detect if we find a bogus primary frame (I'm looking
-  // at you, areas), and relax our assertions for the remaining ancestors.
-  PRBool bogusPrimaryFrame = PR_FALSE;
-#endif
   while (content &&
          !content->HasFlag(NODE_DESCENDANTS_NEED_FRAMES)) {
-    NS_ASSERTION(content->GetPrimaryFrame() || bogusPrimaryFrame ||
+    NS_ASSERTION(content->GetPrimaryFrame() ||
       (content->GetFlattenedTreeParent() &&
        content->GetFlattenedTreeParent()->GetPrimaryFrame() &&
        content->GetFlattenedTreeParent()->GetPrimaryFrame()->IsLeaf()),
       // The clumsy leaf frame check is for leaf frames that process their own
       // children and may ignore anonymous children (eg framesets).
       "Ancestors of nodes with frames to be constructed lazily should have "
       "frames");
-    NS_ASSERTION(!content->HasFlag(NODE_NEEDS_FRAME) || bogusPrimaryFrame ||
-                 (content->GetPrimaryFrame() &&
-                  content->GetPrimaryFrame()->GetContent() != content),
+    NS_ASSERTION(!content->HasFlag(NODE_NEEDS_FRAME) ||
+                 content->GetPrimaryFrame()->GetContent() != content,
                  //XXX the content->GetPrimaryFrame()->GetContent() != content
                  // check is needed due to bug 135040. Remove it once that's
                  // fixed.
                  "Ancestors of nodes with frames to be constructed lazily "
                  "should not have NEEDS_FRAME bit set");
-#ifdef DEBUG
-    if (!bogusPrimaryFrame && content->GetPrimaryFrame() &&
-        content->GetPrimaryFrame()->GetContent() != content) {
-      bogusPrimaryFrame = PR_TRUE;
-    }
-#endif
     content->SetFlags(NODE_DESCENDANTS_NEED_FRAMES);
     content = content->GetFlattenedTreeParent();
   }
 
   // Set NODE_NEEDS_FRAME on the new nodes.
   if (aOperation == CONTENTINSERT) {
     NS_ASSERTION(!aChild->GetPrimaryFrame() ||
                  aChild->GetPrimaryFrame()->GetContent() != aChild,
deleted file mode 100644
--- a/layout/generic/crashtests/564368-1.xhtml
+++ /dev/null
@@ -1,27 +0,0 @@
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<script type="text/javascript">
-<![CDATA[
-
-function boom()
-{
-  var a = document.createElementNS("http://www.w3.org/1999/xhtml", "frameset");
-  var b = document.createElementNS("http://www.w3.org/1999/xhtml", "frameset");
-  var c = document.createElementNS("http://www.w3.org/1999/xhtml", "frameset");
-  var div = document.createElementNS("http://www.w3.org/1999/xhtml", "div");
-
-  a.appendChild(b);
-  document.documentElement.appendChild(a);
-  document.documentElement.offsetHeight;
-  b.appendChild(c);
-  document.documentElement.offsetHeight;
-  c.appendChild(div)
-}
-
-window.addEventListener("load", boom, false);
-
-]]>
-</script></head>
-
-<body></body>
-</html>
--- a/layout/generic/crashtests/crashtests.list
+++ b/layout/generic/crashtests/crashtests.list
@@ -293,9 +293,8 @@ load 533379-1.html
 load 533379-2.html
 load 534082-1.html
 load 541277-1.html
 load 541277-2.html
 load 541714-1.html
 load 541714-2.html
 load 547338.xul
 load 551635-1.html
-load 564368-1.xhtml
--- a/layout/generic/nsFrameSetFrame.cpp
+++ b/layout/generic/nsFrameSetFrame.cpp
@@ -350,25 +350,19 @@ nsHTMLFramesetFrame::Init(nsIContent*   
   mChildCount = 0; // number of <frame> or <frameset> children
   nsIFrame* frame;
 
   // number of any type of children
   PRUint32 numChildren = mContent->GetChildCount();
 
   for (PRUint32 childX = 0; childX < numChildren; childX++) {
     if (mChildCount == numCells) { // we have more <frame> or <frameset> than cells
-      // Clear the lazy bits in the remaining children.
-      for (PRUint32 i = childX; i < numChildren; i++) {
-        mContent->GetChildAt(i)->UnsetFlags(NODE_DESCENDANTS_NEED_FRAMES |
-                                            NODE_NEEDS_FRAME);
-      }
       break;
     }
     nsIContent *child = mContent->GetChildAt(childX);
-    child->UnsetFlags(NODE_DESCENDANTS_NEED_FRAMES | NODE_NEEDS_FRAME);
 
     // IMPORTANT: This must match the conditions in
     // nsCSSFrameConstructor::ContentAppended/Inserted/Removed    
     if (!child->IsHTML())
       continue;
 
     nsIAtom *tag = child->Tag();
     if (tag == nsGkAtoms::frameset || tag == nsGkAtoms::frame) {
--- a/layout/xul/base/src/nsTextBoxFrame.cpp
+++ b/layout/xul/base/src/nsTextBoxFrame.cpp
@@ -871,17 +871,17 @@ nsTextBoxFrame::UpdateAccessTitle()
         // Try to check with
         // our default ellipsis (for non-localized addons) or ':'
         const PRUnichar kLastChar = mTitle.Last();
         if (kLastChar == PRUnichar(0x2026) || kLastChar == PRUnichar(':'))
             offset--;
     }
 
     if (InsertSeparatorBeforeAccessKey() &&
-        offset > 0 && !NS_IS_SPACE(mTitle[offset - 1])) {
+        !NS_IS_SPACE(mTitle[offset - 1])) {
         mTitle.Insert(' ', offset);
         offset++;
     }
 
     mTitle.Insert(accessKeyLabel, offset);
 }
 
 void
--- a/modules/libpr0n/src/imgRequestProxy.cpp
+++ b/modules/libpr0n/src/imgRequestProxy.cpp
@@ -186,17 +186,17 @@ void imgRequestProxy::RemoveFromLoadGrou
 
   /* calling RemoveFromLoadGroup may cause the document to finish
      loading, which could result in our death.  We need to make sure
      that we stay alive long enough to fight another battle... at
      least until we exit this function.
   */
   nsCOMPtr<imgIRequest> kungFuDeathGrip(this);
 
-  mLoadGroup->RemoveRequest(this, nsnull, NS_OK);
+  mLoadGroup->RemoveRequest(this, NS_OK, nsnull);
   mIsInLoadGroup = PR_FALSE;
 
   if (releaseLoadGroup) {
     // We're done with the loadgroup, release it.
     mLoadGroup = nsnull;
   }
 }