diff --git a/layout/html/base/src/nsFrameList.h b/layout/html/base/src/nsFrameList.h
index 3f0325cd7ed..1da607f67b1 100644
--- a/layout/html/base/src/nsFrameList.h
+++ b/layout/html/base/src/nsFrameList.h
@@ -48,14 +48,24 @@ public:
void AppendFrames(nsIFrame* aParent, nsFrameList& aFrameList) {
AppendFrames(aParent, aFrameList.mFirstChild);
+ aFrameList.mFirstChild = nsnull;
}
void AppendFrame(nsIFrame* aParent, nsIFrame* aFrame);
+ // Take aFrame out of the frame list. This also disconnects aFrame
+ // from the sibling list. This will return PR_FALSE if aFrame is
+ // nsnull or if aFrame is not in the list.
PRBool RemoveFrame(nsIFrame* aFrame);
+ // Remove the first child from the list. The caller is assumed to be
+ // holding a reference to the first child. This call is equivalent
+ // in behavior to calling RemoveFrame(FirstChild()).
PRBool RemoveFirstChild();
+ // Take aFrame out of the frame list and then delete it. This also
+ // disconnects aFrame from the sibling list. This will return
+ // PR_FALSE if aFrame is nsnull or if aFrame is not in the list.
PRBool DeleteFrame(nsIPresContext& aPresContext, nsIFrame* aFrame);
void InsertFrame(nsIFrame* aParent,
@@ -66,6 +76,12 @@ public:
nsIFrame* aPrevSibling,
nsIFrame* aFrameList);
+ void InsertFrames(nsIFrame* aParent, nsIFrame* aPrevSibling,
+ nsFrameList& aFrameList) {
+ InsertFrames(aParent, aPrevSibling, aFrameList.FirstChild());
+ aFrameList.mFirstChild = nsnull;
+ }
+
PRBool ReplaceFrame(nsIFrame* aParent,
nsIFrame* aOldFrame,
nsIFrame* aNewFrame);
@@ -77,9 +93,9 @@ public:
PRBool Split(nsIFrame* aAfterFrame, nsIFrame** aNextFrameResult);
- PRBool PullFrame(nsIFrame* aParent,
- nsFrameList& aFromList,
- nsIFrame** aResult);
+ nsIFrame* PullFrame(nsIFrame* aParent,
+ nsIFrame* aLastChild,
+ nsFrameList& aFromList);
void Join(nsIFrame* aParent, nsFrameList& aList) {
AppendFrames(aParent, aList.mFirstChild);
@@ -108,6 +124,8 @@ public:
nsIFrame* GetPrevSiblingFor(nsIFrame* aFrame) const;
+ void VerifyParent(nsIFrame* aParent) const;
+
protected:
nsIFrame* mFirstChild;
};