Back out fc945dec50bb and de06684dabc4 (bug 642551), 64c328251a24 (bug 683952) and 9d0d13998ebb (bug 684544) for orange on a CLOSED TREE
authorPhil Ringnalda <philringnalda@gmail.com>
Tue, 06 Sep 2011 21:42:54 -0700
changeset 77946 7dd2deecd8f2964b8639abc457e9a248d7a80bdc
parent 77945 d01a282b5a40da07d6f9d85d56eb3c6b6cb620c2
child 77947 81e54da9317b5eb60d136a2512604139f05f8d8a
push id78
push userclegnitto@mozilla.com
push dateFri, 16 Dec 2011 17:32:24 +0000
treeherdermozilla-release@79d24e644fdd [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs642551, 683952, 684544
milestone9.0a1
backs outfc945dec50bb044858b48c22efd7dbc59f9deabd
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Back out fc945dec50bb and de06684dabc4 (bug 642551), 64c328251a24 (bug 683952) and 9d0d13998ebb (bug 684544) for orange on a CLOSED TREE
dom/base/nsDOMClassInfo.cpp
dom/tests/mochitest/bugs/Makefile.in
dom/tests/mochitest/bugs/test_bug684544.html
layout/base/nsPresShell.cpp
layout/generic/nsILineIterator.h
layout/generic/nsLineBox.cpp
layout/generic/nsLineBox.h
layout/tables/nsTableRowGroupFrame.cpp
layout/tables/nsTableRowGroupFrame.h
uriloader/base/nsDocLoader.cpp
uriloader/base/nsDocLoader.h
--- a/dom/base/nsDOMClassInfo.cpp
+++ b/dom/base/nsDOMClassInfo.cpp
@@ -6373,35 +6373,29 @@ LocationSetterGuts(JSContext *cx, JSObje
 
   nsCOMPtr<Interface> xpcomObj = do_QueryWrappedNative(wrapper);
   NS_ENSURE_TRUE(xpcomObj, NS_ERROR_UNEXPECTED);
 
   nsCOMPtr<nsIDOMLocation> location;
   nsresult rv = xpcomObj->GetLocation(getter_AddRefs(location));
   NS_ENSURE_SUCCESS(rv, rv);
 
-  // We have to wrap location into vp before null-checking location, to
-  // avoid assigning the wrong thing into the slot.
-  nsCOMPtr<nsIXPConnectJSObjectHolder> holder;
-  rv = WrapNative(cx, JS_GetGlobalForScopeChain(cx), location,
-                  &NS_GET_IID(nsIDOMLocation), PR_TRUE, vp,
-                  getter_AddRefs(holder));
-
-  if (!location) {
-    // Make this a no-op
-    return NS_OK;
-  }
-
   JSString *val = ::JS_ValueToString(cx, *vp);
   NS_ENSURE_TRUE(val, NS_ERROR_UNEXPECTED);
 
   nsDependentJSString depStr;
   NS_ENSURE_TRUE(depStr.init(cx, val), NS_ERROR_UNEXPECTED);
   
-  return location->SetHref(depStr);
+  rv = location->SetHref(depStr);
+  NS_ENSURE_SUCCESS(rv, rv);
+
+  nsCOMPtr<nsIXPConnectJSObjectHolder> holder;
+  return WrapNative(cx, JS_GetGlobalForScopeChain(cx), location,
+                    &NS_GET_IID(nsIDOMLocation), PR_TRUE, vp,
+                    getter_AddRefs(holder));
 }
 
 template<class Interface>
 static JSBool
 LocationSetter(JSContext *cx, JSObject *obj, jsid id, JSBool strict,
                jsval *vp)
 {
   nsresult rv = LocationSetterGuts<Interface>(cx, obj, vp);
--- a/dom/tests/mochitest/bugs/Makefile.in
+++ b/dom/tests/mochitest/bugs/Makefile.in
@@ -135,17 +135,16 @@ include $(topsrcdir)/config/rules.mk
 		test_bug612267.html \
 		test_bug617296.html \
 		test_bug620947.html \
 		test_bug622361.html \
 		test_bug633133.html \
 		test_bug642026.html \
 		test_bug648465.html \
 		test_bug654137.html \
-		test_bug684544.html \
 		test_window_bar.html \
 		file_window_bar.html \
 		test_resize_move_windows.html \
 		test_devicemotion_multiple_listeners.html \
 		devicemotion_outer.html \
 		devicemotion_inner.html \
 		$(NULL)
 
deleted file mode 100644
--- a/dom/tests/mochitest/bugs/test_bug684544.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=
--->
-<head>
-  <title>Test for Bug </title>
-  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
-  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=">Mozilla Bug </a>
-<p id="display"></p>
-<div id="content" style="display: none">
-  
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug  **/
-
-var f = document.createElement("iframe");
-document.body.appendChild(f);
-var win = f.contentWindow;
-
-// Set location once to make sure it's resolved
-win.location = "data:text/html,1";
-
-// Now try to make the location object go away.
-f.parentNode.removeChild(f);
-
-// Check that location is now null.  If it's not, the test needs changing
-// (e.g. to use window.close() so that it's null).
-is("location" in win, true, "Should still have a location property");
-todo_is(win.location, null, "There should be no location object now");
-
-// Just set the location.  This should not crash.
-win.location = "data:text/html,2";
-
-// And check that we didn't override the slot in the process.
-is(typeof(win.location), "object", "Location should not have become a string");
-is(win.location, null,
-   "There should be no location object for real after the set");
-
-</script>
-</pre>
-</body>
-</html>
--- a/layout/base/nsPresShell.cpp
+++ b/layout/base/nsPresShell.cpp
@@ -4039,29 +4039,23 @@ PresShell::ScrollToAnchor()
  * Helper (per-continuation) for ScrollContentIntoView.
  *
  * @param aContainerFrame [in] the frame which aRect is relative to
  * @param aFrame [in] Frame whose bounds should be unioned
  * @param aUseWholeLineHeightForInlines [in] if true, then for inline frames
  * we should include the top of the line in the added rectangle
  * @param aRect [inout] rect into which its bounds should be unioned
  * @param aHaveRect [inout] whether aRect contains data yet
- * @param aPrevBlock [inout] the block aLines is a line iterator for
- * @param aLines [inout] the line iterator we're using
- * @param aCurLine [inout] the line to start looking from in this iterator
  */
 static void
 AccumulateFrameBounds(nsIFrame* aContainerFrame,
                       nsIFrame* aFrame,
                       PRBool aUseWholeLineHeightForInlines,
                       nsRect& aRect,
-                      PRBool& aHaveRect,
-                      nsIFrame*& aPrevBlock,
-                      nsAutoLineIterator& aLines,
-                      PRInt32& aCurLine)
+                      PRBool& aHaveRect)
 {
   nsRect frameBounds = aFrame->GetRect() +
     aFrame->GetParent()->GetOffsetTo(aContainerFrame);
 
   // If this is an inline frame and either the bounds height is 0 (quirks
   // layout model) or aUseWholeLineHeightForInlines is set, we need to
   // change the top of the bounds to include the whole line.
   if (frameBounds.height == 0 || aUseWholeLineHeightForInlines) {
@@ -4074,32 +4068,27 @@ AccumulateFrameBounds(nsIFrame* aContain
       prevFrame = f;
       f = prevFrame->GetParent();
     }
 
     if (f != aFrame &&
         f &&
         frameType == nsGkAtoms::blockFrame) {
       // find the line containing aFrame and increase the top of |offset|.
-      if (f != aPrevBlock) {
-        aLines = f->GetLineIterator();
-        aPrevBlock = f;
-        aCurLine = 0;
-      }
-      if (aLines) {
-        PRInt32 index = aLines->FindLineContaining(prevFrame, aCurLine);
+      nsAutoLineIterator lines = f->GetLineIterator();
+      if (lines) {
+        PRInt32 index = lines->FindLineContaining(prevFrame);
         if (index >= 0) {
-          aCurLine = index;
           nsIFrame *trash1;
           PRInt32 trash2;
           nsRect lineBounds;
           PRUint32 trash3;
 
-          if (NS_SUCCEEDED(aLines->GetLine(index, &trash1, &trash2,
-                                           lineBounds, &trash3))) {
+          if (NS_SUCCEEDED(lines->GetLine(index, &trash1, &trash2,
+                                          lineBounds, &trash3))) {
             lineBounds += f->GetOffsetTo(aContainerFrame);
             if (lineBounds.y < frameBounds.y) {
               frameBounds.height = frameBounds.YMost() - lineBounds.y;
               frameBounds.y = lineBounds.y;
             }
           }
         }
       }
@@ -4292,26 +4281,19 @@ PresShell::DoScrollContentIntoView(nsICo
   //         appropriately.
   // frameBounds is relative to container. We're assuming
   // that scrollframes don't split so every continuation of frame will
   // be a descendant of container. (Things would still mostly work
   // even if that assumption was false.)
   nsRect frameBounds;
   PRBool haveRect = PR_FALSE;
   PRBool useWholeLineHeightForInlines = aVPercent != NS_PRESSHELL_SCROLL_ANYWHERE;
-  // Reuse the same line iterator across calls to AccumulateFrameBounds.  We set
-  // it every time we detect a new block (stored in prevBlock).
-  nsIFrame* prevBlock = nsnull;
-  nsAutoLineIterator lines;
-  // The last line we found a continuation on in |lines|.  We assume that later
-  // continuations cannot come on earlier lines.
-  PRInt32 curLine = 0;
   do {
     AccumulateFrameBounds(container, frame, useWholeLineHeightForInlines,
-                          frameBounds, haveRect, prevBlock, lines, curLine);
+                          frameBounds, haveRect);
   } while ((frame = frame->GetNextContinuation()));
 
   ScrollFrameRectIntoView(container, frameBounds, aVPercent, aHPercent,
                           aFlags);
 }
 
 PRBool
 PresShell::ScrollFrameRectIntoView(nsIFrame*     aFrame,
--- a/layout/generic/nsILineIterator.h
+++ b/layout/generic/nsILineIterator.h
@@ -99,22 +99,19 @@ public:
   NS_IMETHOD GetLine(PRInt32 aLineNumber,
                      nsIFrame** aFirstFrameOnLine,
                      PRInt32* aNumFramesOnLine,
                      nsRect& aLineBounds,
                      PRUint32* aLineFlags) = 0;
 
   /**
    * Given a frame that's a child of the block, find which line its on
-   * and return that line index, as long as it's at least as big as
-   * aStartLine.  Returns -1 if the frame cannot be found on lines
-   * starting with aStartLine.
+   * and return that line index. Returns -1 if the frame cannot be found.
    */
-  virtual PRInt32 FindLineContaining(nsIFrame* aFrame,
-                                     PRInt32 aStartLine = 0) = 0;
+  virtual PRInt32 FindLineContaining(nsIFrame* aFrame) = 0;
 
   // Given a line number and an X coordinate, find the frame on the
   // line that is nearest to the X coordinate. The
   // aXIsBeforeFirstFrame and aXIsAfterLastFrame flags are updated
   // appropriately.
   NS_IMETHOD FindFrameAt(PRInt32 aLineNumber,
                          nscoord aX,
                          nsIFrame** aFrameFound,
--- a/layout/generic/nsLineBox.cpp
+++ b/layout/generic/nsLineBox.cpp
@@ -621,26 +621,25 @@ nsLineIterator::GetLine(PRInt32 aLineNum
       flags |= NS_LINE_FLAG_ENDS_IN_BREAK;
   }
   *aLineFlags = flags;
 
   return NS_OK;
 }
 
 PRInt32
-nsLineIterator::FindLineContaining(nsIFrame* aFrame, PRInt32 aStartLine)
+nsLineIterator::FindLineContaining(nsIFrame* aFrame)
 {
-  NS_PRECONDITION(aStartLine <= mNumLines, "Bogus line numbers");
-  PRInt32 lineNumber = aStartLine;
+  nsLineBox* line = mLines[0];
+  PRInt32 lineNumber = 0;
   while (lineNumber != mNumLines) {
-    nsLineBox* line = mLines[lineNumber];
     if (line->Contains(aFrame)) {
       return lineNumber;
     }
-    ++lineNumber;
+    line = mLines[++lineNumber];
   }
   return -1;
 }
 
 #ifdef IBMBIDI
 NS_IMETHODIMP
 nsLineIterator::CheckLineOrder(PRInt32                  aLine,
                                PRBool                   *aIsReordered,
--- a/layout/generic/nsLineBox.h
+++ b/layout/generic/nsLineBox.h
@@ -1576,17 +1576,17 @@ public:
 
   virtual PRInt32 GetNumLines();
   virtual PRBool GetDirection();
   NS_IMETHOD GetLine(PRInt32 aLineNumber,
                      nsIFrame** aFirstFrameOnLine,
                      PRInt32* aNumFramesOnLine,
                      nsRect& aLineBounds,
                      PRUint32* aLineFlags);
-  virtual PRInt32 FindLineContaining(nsIFrame* aFrame, PRInt32 aStartLine = 0);
+  virtual PRInt32 FindLineContaining(nsIFrame* aFrame);
   NS_IMETHOD FindFrameAt(PRInt32 aLineNumber,
                          nscoord aX,
                          nsIFrame** aFrameFound,
                          PRBool* aXIsBeforeFirstFrame,
                          PRBool* aXIsAfterLastFrame);
 
   NS_IMETHOD GetNextSiblingOnLine(nsIFrame*& aFrame, PRInt32 aLineNumber);
 #ifdef IBMBIDI
--- a/layout/tables/nsTableRowGroupFrame.cpp
+++ b/layout/tables/nsTableRowGroupFrame.cpp
@@ -1701,26 +1701,24 @@ nsTableRowGroupFrame::GetLine(PRInt32   
       return NS_OK;
     }
   }
   NS_ERROR("cellmap is lying");
   return NS_ERROR_FAILURE;
 }
   
 PRInt32
-nsTableRowGroupFrame::FindLineContaining(nsIFrame* aFrame, PRInt32 aStartLine)
+nsTableRowGroupFrame::FindLineContaining(nsIFrame* aFrame)
 {
   NS_ENSURE_ARG_POINTER(aFrame);
   
   nsTableRowFrame *rowFrame = do_QueryFrame(aFrame);
   NS_ASSERTION(rowFrame, "RowGroup contains a frame that is not a row");
 
-  PRInt32 rowIndexInGroup = rowFrame->GetRowIndex() - GetStartRowIndex();
-
-  return rowIndexInGroup >= aStartLine ? rowIndexInGroup : -1;
+  return rowFrame->GetRowIndex() - GetStartRowIndex();
 }
 
 #ifdef IBMBIDI
 NS_IMETHODIMP
 nsTableRowGroupFrame::CheckLineOrder(PRInt32                  aLine,
                                      PRBool                   *aIsReordered,
                                      nsIFrame                 **aFirstVisual,
                                      nsIFrame                 **aLastVisual)
--- a/layout/tables/nsTableRowGroupFrame.h
+++ b/layout/tables/nsTableRowGroupFrame.h
@@ -253,22 +253,20 @@ public:
   NS_IMETHOD GetLine(PRInt32 aLineNumber,
                      nsIFrame** aFirstFrameOnLine,
                      PRInt32* aNumFramesOnLine,
                      nsRect& aLineBounds,
                      PRUint32* aLineFlags);
   
   /** Given a frame that's a child of the rowgroup, find which line its on.
     * @param aFrame       - frame, should be a row
-    * @param aStartLine   - minimal index to return
     * @return               row index relative to the row group if this a row
-    *                       frame and the index is at least aStartLine.
-    *                       -1 if the frame cannot be found.
+    *                       frame. -1 if the frame cannot be found.
     */
-  virtual PRInt32 FindLineContaining(nsIFrame* aFrame, PRInt32 aStartLine = 0);
+  virtual PRInt32 FindLineContaining(nsIFrame* aFrame);
 
   /** Find the orginating cell frame on a row that is the nearest to the
     * coordinate X.
     * @param aLineNumber          - the index of the row relative to the row group
     * @param aX                   - X coordinate in twips relative to the
     *                               origin of the row group
     * @param aFrameFound          - pointer to the cellframe
     * @param aXIsBeforeFirstFrame - the point is before the first originating
--- a/uriloader/base/nsDocLoader.cpp
+++ b/uriloader/base/nsDocLoader.cpp
@@ -89,60 +89,36 @@ void GetURIStringFromRequest(nsIRequest*
 {
     if (request)
         request->GetName(name);
     else
         name.AssignLiteral("???");
 }
 #endif /* DEBUG */
 
-struct nsStatusInfo : public PRCList
-{
-  nsString mStatusMessage;
-  nsresult mStatusCode;
-  // Weak mRequest is ok; we'll be told if it decides to go away.
-  nsIRequest * const mRequest;
-
-  nsStatusInfo(nsIRequest *aRequest) :
-    mRequest(aRequest)
-  {
-    MOZ_COUNT_CTOR(nsStatusInfo);
-    PR_INIT_CLIST(this);
-  }
-  ~nsStatusInfo()
-  {
-    MOZ_COUNT_DTOR(nsStatusInfo);
-    PR_REMOVE_LINK(this);
-  }
-};
-
 struct nsRequestInfo : public PLDHashEntryHdr
 {
   nsRequestInfo(const void *key)
     : mKey(key), mCurrentProgress(0), mMaxProgress(0), mUploading(PR_FALSE)
-    , mLastStatus(nsnull)
+   , mIsDone(PR_FALSE)
   {
-    MOZ_COUNT_CTOR(nsRequestInfo);
-  }
-
-  ~nsRequestInfo()
-  {
-    MOZ_COUNT_DTOR(nsRequestInfo);
   }
 
   nsIRequest* Request() {
     return static_cast<nsIRequest*>(const_cast<void*>(mKey));
   }
 
   const void* mKey; // Must be first for the pldhash stubs to work
   PRInt64 mCurrentProgress;
   PRInt64 mMaxProgress;
   PRBool mUploading;
 
-  nsAutoPtr<nsStatusInfo> mLastStatus;
+  PRBool mIsDone;
+  nsString mLastStatus;
+  nsresult mLastStatusCode;
 };
 
 
 static PRBool
 RequestInfoHashInitEntry(PLDHashTable *table, PLDHashEntryHdr *entry,
                          const void *key)
 {
   // Initialize the entry with placement new
@@ -205,18 +181,16 @@ nsDocLoader::nsDocLoader()
 
   if (!PL_DHashTableInit(&mRequestInfoHash, &hash_table_ops, nsnull,
                          sizeof(nsRequestInfo), 16)) {
     mRequestInfoHash.ops = nsnull;
   }
 
   ClearInternalProgress();
 
-  PR_INIT_CLIST(&mStatusInfoList);
-
   PR_LOG(gDocLoaderLog, PR_LOG_DEBUG, 
          ("DocLoader:%p: created.\n", this));
 }
 
 nsresult
 nsDocLoader::SetDocLoaderParent(nsDocLoader *aParent)
 {
   mParent = aParent;
@@ -622,20 +596,17 @@ nsDocLoader::OnStopRequest(nsIRequest *a
   //
   // Set the Maximum progress to the same value as the current progress.
   // Since the URI has finished loading, all the data is there.  Also,
   // this will allow a more accurate estimation of the max progress (in case
   // the old value was unknown ie. -1)
   //
   nsRequestInfo *info = GetRequestInfo(aRequest);
   if (info) {
-    // Null out mLastStatus now so we don't find it when looking for
-    // status from now on.  This destroys the nsStatusInfo and hence
-    // removes it from our list.
-    info->mLastStatus = nsnull;
+    info->mIsDone = PR_TRUE;
 
     PRInt64 oldMax = info->mMaxProgress;
 
     info->mMaxProgress = info->mCurrentProgress;
     
     //
     // If a request whose content-length was previously unknown has just
     // finished loading, then use this new data to try to calculate a
@@ -899,16 +870,34 @@ void nsDocLoader::doStartURLLoad(nsIRequ
 
   FireOnStateChange(this,
                     request,
                     nsIWebProgressListener::STATE_START |
                     nsIWebProgressListener::STATE_IS_REQUEST,
                     NS_OK);
 }
 
+// PLDHashTable enumeration callback that finds a RequestInfo that's not done
+// yet.
+static PLDHashOperator
+FindUnfinishedRequestCallback(PLDHashTable *table, PLDHashEntryHdr *hdr,
+                              PRUint32 number, void *arg)
+{
+  nsRequestInfo* info = static_cast<nsRequestInfo *>(hdr);
+  nsRequestInfo** retval = static_cast<nsRequestInfo**>(arg);
+
+  if (!info->mIsDone && !info->mLastStatus.IsEmpty()) {
+    *retval = info;
+    return PL_DHASH_STOP;
+  }
+
+  return PL_DHASH_NEXT;
+}
+
+
 void nsDocLoader::doStopURLLoad(nsIRequest *request, nsresult aStatus)
 {
 #if defined(DEBUG)
   nsCAutoString buffer;
 
   GetURIStringFromRequest(request, buffer);
     PR_LOG(gDocLoaderLog, PR_LOG_DEBUG, 
           ("DocLoader:%p: ++ Firing OnStateChange for end url load (...)."
@@ -917,24 +906,25 @@ void nsDocLoader::doStopURLLoad(nsIReque
 #endif /* DEBUG */
 
   FireOnStateChange(this,
                     request,
                     nsIWebProgressListener::STATE_STOP |
                     nsIWebProgressListener::STATE_IS_REQUEST,
                     aStatus);
 
-  // Fire a status change message for the most recent unfinished
-  // request to make sure that the displayed status is not outdated.
-  if (!PR_CLIST_IS_EMPTY(&mStatusInfoList)) {
-    nsStatusInfo* statusInfo =
-      static_cast<nsStatusInfo*>(PR_LIST_HEAD(&mStatusInfoList));
-    FireOnStatusChange(this, statusInfo->mRequest,
-                       statusInfo->mStatusCode,
-                       statusInfo->mStatusMessage.get());
+  // Fire a status change message for a random unfinished request to make sure
+  // that the displayed status is not outdated.
+  nsRequestInfo* unfinishedRequest = nsnull;
+  PL_DHashTableEnumerate(&mRequestInfoHash, FindUnfinishedRequestCallback,
+                         &unfinishedRequest);
+  if (unfinishedRequest) {
+    FireOnStatusChange(this, unfinishedRequest->Request(),
+                       unfinishedRequest->mLastStatusCode,
+                       unfinishedRequest->mLastStatus.get());
   }
 }
 
 void nsDocLoader::doStopDocumentLoad(nsIRequest *request,
                                          nsresult aStatus)
 {
 #if defined(DEBUG)
   nsCAutoString buffer;
@@ -1194,27 +1184,18 @@ NS_IMETHODIMP nsDocLoader::OnStatus(nsIR
     if (NS_FAILED(rv))
       return rv;
 
     // Keep around the message. In case a request finishes, we need to make sure
     // to send the status message of another request to our user to that we
     // don't display, for example, "Transferring" messages for requests that are
     // already done.
     if (info) {
-      if (!info->mLastStatus) {
-        info->mLastStatus = new nsStatusInfo(aRequest);
-      } else {
-        // We're going to move it to the front of the list, so remove
-        // it from wherever it is now.
-        PR_REMOVE_LINK(info->mLastStatus);
-      }
-      info->mLastStatus->mStatusMessage = msg;
-      info->mLastStatus->mStatusCode = aStatus;
-      // Put the info at the front of the list
-      PR_INSERT_LINK(info->mLastStatus, &mStatusInfoList);
+      info->mLastStatus = msg;
+      info->mLastStatusCode = aStatus;
     }
     FireOnStatusChange(this, aRequest, aStatus, msg);
   }
   return NS_OK;
 }
 
 void nsDocLoader::ClearInternalProgress()
 {
--- a/uriloader/base/nsDocLoader.h
+++ b/uriloader/base/nsDocLoader.h
@@ -54,17 +54,16 @@
 #include "nsIProgressEventSink.h"
 #include "nsIInterfaceRequestor.h"
 #include "nsIInterfaceRequestorUtils.h"
 #include "nsIChannelEventSink.h"
 #include "nsISecurityEventSink.h"
 #include "nsISupportsPriority.h"
 #include "nsCOMPtr.h"
 #include "pldhash.h"
-#include "prclist.h"
 
 struct nsRequestInfo;
 struct nsListenerInfo;
 
 /****************************************************************************
  * nsDocLoader implementation...
  ****************************************************************************/
 
@@ -230,18 +229,16 @@ protected:
     PRInt64 mMaxSelfProgress;
 
     PRInt64 mCurrentTotalProgress;
     PRInt64 mMaxTotalProgress;
 
     PLDHashTable mRequestInfoHash;
     PRInt64 mCompletedTotalProgress;
 
-    PRCList mStatusInfoList;
-
     /*
      * This flag indicates that the loader is loading a document.  It is set
      * from the call to LoadDocument(...) until the OnConnectionsComplete(...)
      * notification is fired...
      */
     PRPackedBool mIsLoadingDocument;
 
     /* Flag to indicate that we're in the process of restoring a document. */