author | Chris Lord <chrislord.net@gmail.com> |
Wed, 19 Sep 2012 12:39:53 +0100 | |
changeset 107473 | c82b3a413e0d39220546567f83b3d43cf205a6ed |
parent 107472 | 9857e5cfa42b6d3a600d64fdeb567b5177ea4c5f |
child 107474 | 41e495ebeb89709269b923059619e40cfc2a3fac |
push id | 15058 |
push user | chrislord.net@gmail.com |
push date | Wed, 19 Sep 2012 11:40:02 +0000 |
treeherder | mozilla-inbound@c82b3a413e0d [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | bz |
bugs | 788202 |
milestone | 18.0a1 |
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
|
--- a/layout/generic/nsBlockFrame.cpp +++ b/layout/generic/nsBlockFrame.cpp @@ -328,17 +328,17 @@ NS_QUERYFRAME_TAIL_INHERITING(nsBlockFra nsSplittableType nsBlockFrame::GetSplittableType() const { return NS_FRAME_SPLITTABLE_NON_RECTANGULAR; } #ifdef DEBUG NS_METHOD -nsBlockFrame::List(FILE* out, int32_t aIndent) const +nsBlockFrame::List(FILE* out, int32_t aIndent, uint32_t aFlags) const { IndentBy(out, aIndent); ListTag(out); #ifdef DEBUG_waterson fprintf(out, " [parent=%p]", mParent); #endif if (HasView()) { fprintf(out, " [view=%p]", static_cast<void*>(GetView())); @@ -417,29 +417,29 @@ nsBlockFrame::List(FILE* out, int32_t aI fputs("<\n", out); aIndent++; // Output the lines if (!mLines.empty()) { const_line_iterator line = begin_lines(), line_end = end_lines(); for ( ; line != line_end; ++line) { - line->List(out, aIndent); + line->List(out, aIndent, aFlags); } } // Output the overflow lines. const FrameLines* overflowLines = GetOverflowLines(); if (overflowLines && !overflowLines->mLines.empty()) { IndentBy(out, aIndent); fputs("Overflow-lines<\n", out); const_line_iterator line = overflowLines->mLines.begin(), line_end = overflowLines->mLines.end(); for ( ; line != line_end; ++line) { - line->List(out, aIndent + 1); + line->List(out, aIndent + 1, aFlags); } IndentBy(out, aIndent); fputs(">\n", out); } // skip the principal list - we printed the lines above // skip the overflow list - we printed the overflow lines above ChildListIterator lists(this); @@ -448,17 +448,17 @@ nsBlockFrame::List(FILE* out, int32_t aI if (skip.Contains(lists.CurrentID())) { continue; } IndentBy(out, aIndent); fprintf(out, "%s<\n", mozilla::layout::ChildListName(lists.CurrentID())); nsFrameList::Enumerator childFrames(lists.CurrentList()); for (; !childFrames.AtEnd(); childFrames.Next()) { nsIFrame* kid = childFrames.get(); - kid->List(out, aIndent + 1); + kid->List(out, aIndent + 1, aFlags); } IndentBy(out, aIndent); fputs(">\n", out); } aIndent--; IndentBy(out, aIndent); fputs(">\n", out);
--- a/layout/generic/nsBlockFrame.h +++ b/layout/generic/nsBlockFrame.h @@ -165,17 +165,17 @@ public: virtual bool IsFrameOfType(uint32_t aFlags) const { return nsContainerFrame::IsFrameOfType(aFlags & ~(nsIFrame::eCanContainOverflowContainers | nsIFrame::eBlockFrame)); } #ifdef DEBUG - NS_IMETHOD List(FILE* out, int32_t aIndent) const; + NS_IMETHOD List(FILE* out, int32_t aIndent, uint32_t aFlags = 0) const; NS_IMETHOD_(nsFrameState) GetDebugStateBits() const; NS_IMETHOD GetFrameName(nsAString& aResult) const; #endif #ifdef ACCESSIBILITY virtual already_AddRefed<Accessible> CreateAccessible(); #endif
--- a/layout/generic/nsContainerFrame.cpp +++ b/layout/generic/nsContainerFrame.cpp @@ -1758,17 +1758,17 @@ nsOverflowContinuationTracker::Finish(ns } } ///////////////////////////////////////////////////////////////////////////// // Debugging #ifdef DEBUG NS_IMETHODIMP -nsContainerFrame::List(FILE* out, int32_t aIndent) const +nsContainerFrame::List(FILE* out, int32_t aIndent, uint32_t aFlags) const { IndentBy(out, aIndent); ListTag(out); #ifdef DEBUG_waterson fprintf(out, " [parent=%p]", static_cast<void*>(mParent)); #endif if (HasView()) { fprintf(out, " [view=%p]", static_cast<void*>(GetView())); @@ -1825,17 +1825,17 @@ nsContainerFrame::List(FILE* out, int32_ fputs("<\n", out); nsFrameList::Enumerator childFrames(lists.CurrentList()); for (; !childFrames.AtEnd(); childFrames.Next()) { nsIFrame* kid = childFrames.get(); // Verify the child frame's parent frame pointer is correct NS_ASSERTION(kid->GetParent() == this, "bad parent frame pointer"); // Have the child frame list - kid->List(out, aIndent + 1); + kid->List(out, aIndent + 1, aFlags); } IndentBy(out, aIndent); fputs(">\n", out); } if (!outputOneList) { fputs("<>\n", out); }
--- a/layout/generic/nsContainerFrame.h +++ b/layout/generic/nsContainerFrame.h @@ -69,17 +69,17 @@ public: virtual void ChildIsDirty(nsIFrame* aChild) MOZ_OVERRIDE; virtual bool IsLeaf() const; virtual bool PeekOffsetNoAmount(bool aForward, int32_t* aOffset) MOZ_OVERRIDE; virtual bool PeekOffsetCharacter(bool aForward, int32_t* aOffset, bool aRespectClusters = true) MOZ_OVERRIDE; #ifdef DEBUG - NS_IMETHOD List(FILE* out, int32_t aIndent) const MOZ_OVERRIDE; + NS_IMETHOD List(FILE* out, int32_t aIndent, uint32_t aFlags = 0) const MOZ_OVERRIDE; #endif // nsContainerFrame methods /** * Helper method to create next-in-flows if necessary. If aFrame * already has a next-in-flow then this method does * nothing. Otherwise, a new continuation frame is created and
--- a/layout/generic/nsFrame.cpp +++ b/layout/generic/nsFrame.cpp @@ -5404,17 +5404,17 @@ void DebugListFrameTree(nsIFrame* aFrame) { ((nsFrame*)aFrame)->List(stdout, 0); } // Debugging NS_IMETHODIMP -nsFrame::List(FILE* out, int32_t aIndent) const +nsFrame::List(FILE* out, int32_t aIndent, uint32_t aFlags) const { IndentBy(out, aIndent); ListTag(out); #ifdef DEBUG_waterson fprintf(out, " [parent=%p]", static_cast<void*>(mParent)); #endif if (HasView()) { fprintf(out, " [view=%p]", static_cast<void*>(GetView()));
--- a/layout/generic/nsFrame.h +++ b/layout/generic/nsFrame.h @@ -663,17 +663,17 @@ private: NS_IMETHODIMP RefreshSizeCache(nsBoxLayoutState& aState); virtual nsILineIterator* GetLineIterator(); #ifdef DEBUG public: // Formerly the nsIFrameDebug interface - NS_IMETHOD List(FILE* out, int32_t aIndent) const; + NS_IMETHOD List(FILE* out, int32_t aIndent, uint32_t aFlags = 0) const; /** * lists the frames beginning from the root frame * - calls root frame's List(...) */ static void RootFrameList(nsPresContext* aPresContext, FILE* out, int32_t aIndent); static void DumpFrameTree(nsIFrame* aFrame);
--- a/layout/generic/nsIFrame.h +++ b/layout/generic/nsIFrame.h @@ -3080,17 +3080,20 @@ private: * Returns true if any overflow changed. */ bool SetOverflowAreas(const nsOverflowAreas& aOverflowAreas); nsPoint GetOffsetToCrossDoc(const nsIFrame* aOther, const int32_t aAPD) const; #ifdef DEBUG public: // Formerly nsIFrameDebug - NS_IMETHOD List(FILE* out, int32_t aIndent) const = 0; + enum { + TRAVERSE_SUBDOCUMENT_FRAMES = 0x01 + }; + NS_IMETHOD List(FILE* out, int32_t aIndent, uint32_t aFlags = 0) const = 0; NS_IMETHOD GetFrameName(nsAString& aResult) const = 0; NS_IMETHOD_(nsFrameState) GetDebugStateBits() const = 0; NS_IMETHOD DumpRegressionData(nsPresContext* aPresContext, FILE* out, int32_t aIndent) = 0; #endif }; //----------------------------------------------------------------------
--- a/layout/generic/nsImageFrame.cpp +++ b/layout/generic/nsImageFrame.cpp @@ -1703,17 +1703,17 @@ nsImageFrame::GetType() const #ifdef DEBUG NS_IMETHODIMP nsImageFrame::GetFrameName(nsAString& aResult) const { return MakeFrameName(NS_LITERAL_STRING("ImageFrame"), aResult); } NS_IMETHODIMP -nsImageFrame::List(FILE* out, int32_t aIndent) const +nsImageFrame::List(FILE* out, int32_t aIndent, uint32_t aFlags) const { IndentBy(out, aIndent); ListTag(out); #ifdef DEBUG_waterson fprintf(out, " [parent=%p]", mParent); #endif if (HasView()) { fprintf(out, " [view=%p]", (void*)GetView());
--- a/layout/generic/nsImageFrame.h +++ b/layout/generic/nsImageFrame.h @@ -117,17 +117,17 @@ public: virtual bool IsFrameOfType(uint32_t aFlags) const { return ImageFrameSuper::IsFrameOfType(aFlags & ~(nsIFrame::eReplaced)); } #ifdef DEBUG NS_IMETHOD GetFrameName(nsAString& aResult) const; - NS_IMETHOD List(FILE* out, int32_t aIndent) const; + NS_IMETHOD List(FILE* out, int32_t aIndent, uint32_t aFlags = 0) const; #endif virtual int GetSkipSides() const; nsresult GetIntrinsicImageSize(nsSize& aSize); static void ReleaseGlobals() { if (gIconLoad) {
--- a/layout/generic/nsLineBox.cpp +++ b/layout/generic/nsLineBox.cpp @@ -219,17 +219,17 @@ nsLineBox::StateToString(char* aBuf, int IsLineWrapped() ? "wrapped" : "not wrapped", BreakTypeToString(GetBreakTypeBefore()), BreakTypeToString(GetBreakTypeAfter()), mAllFlags); return aBuf; } void -nsLineBox::List(FILE* out, int32_t aIndent) const +nsLineBox::List(FILE* out, int32_t aIndent, uint32_t aFlags) const { int32_t i; for (i = aIndent; --i >= 0; ) fputs(" ", out); char cbuf[100]; fprintf(out, "line %p: count=%d state=%s ", static_cast<const void*>(this), GetChildCount(), StateToString(cbuf, sizeof(cbuf))); @@ -249,17 +249,17 @@ nsLineBox::List(FILE* out, int32_t aInde mData->mOverflowAreas.ScrollableOverflow().width, mData->mOverflowAreas.ScrollableOverflow().height); } fprintf(out, "<\n"); nsIFrame* frame = mFirstChild; int32_t n = GetChildCount(); while (--n >= 0) { - frame->List(out, aIndent + 1); + frame->List(out, aIndent + 1, aFlags); frame = frame->GetNextSibling(); } for (i = aIndent; --i >= 0; ) fputs(" ", out); if (HasFloats()) { fputs("> floats <\n", out); ListFloats(out, aIndent + 1, mInlineData->mFloats); for (i = aIndent; --i >= 0; ) fputs(" ", out);
--- a/layout/generic/nsLineBox.h +++ b/layout/generic/nsLineBox.h @@ -496,17 +496,17 @@ public: const nsLineList_iterator& aBegin, nsLineList_iterator& aEnd, nsIFrame* aLastFrameBeforeEnd, int32_t* aFrameIndexInLine); #ifdef DEBUG char* StateToString(char* aBuf, int32_t aBufSize) const; - void List(FILE* out, int32_t aIndent) const; + void List(FILE* out, int32_t aIndent, uint32_t aFlags = 0) const; nsIFrame* LastChild() const; #endif private: int32_t IndexOf(nsIFrame* aFrame) const; public: bool Contains(nsIFrame* aFrame) const {
--- a/layout/generic/nsPlaceholderFrame.cpp +++ b/layout/generic/nsPlaceholderFrame.cpp @@ -223,17 +223,17 @@ nsPlaceholderFrame::BuildDisplayList(nsD #ifdef DEBUG NS_IMETHODIMP nsPlaceholderFrame::GetFrameName(nsAString& aResult) const { return MakeFrameName(NS_LITERAL_STRING("Placeholder"), aResult); } NS_IMETHODIMP -nsPlaceholderFrame::List(FILE* out, int32_t aIndent) const +nsPlaceholderFrame::List(FILE* out, int32_t aIndent, uint32_t aFlags) const { IndentBy(out, aIndent); ListTag(out); #ifdef DEBUG_waterson fprintf(out, " [parent=%p]", static_cast<void*>(mParent)); #endif if (HasView()) { fprintf(out, " [view=%p]", (void*)GetView());
--- a/layout/generic/nsPlaceholderFrame.h +++ b/layout/generic/nsPlaceholderFrame.h @@ -110,17 +110,17 @@ public: // nsIFrame overrides #if defined(DEBUG) || (defined(MOZ_REFLOW_PERF_DSP) && defined(MOZ_REFLOW_PERF)) NS_IMETHOD BuildDisplayList(nsDisplayListBuilder* aBuilder, const nsRect& aDirtyRect, const nsDisplayListSet& aLists); #endif // DEBUG || (MOZ_REFLOW_PERF_DSP && MOZ_REFLOW_PERF) #ifdef DEBUG - NS_IMETHOD List(FILE* out, int32_t aIndent) const MOZ_OVERRIDE; + NS_IMETHOD List(FILE* out, int32_t aIndent, uint32_t aFlags = 0) const MOZ_OVERRIDE; #endif // DEBUG /** * Get the "type" of the frame * * @see nsGkAtoms::placeholderFrame */ virtual nsIAtom* GetType() const MOZ_OVERRIDE;
--- a/layout/generic/nsSubDocumentFrame.cpp +++ b/layout/generic/nsSubDocumentFrame.cpp @@ -450,16 +450,62 @@ nsSubDocumentFrame::GetIntrinsicHeight() NS_ASSERTION(ObtainIntrinsicSizeFrame() == nullptr, "Intrinsic height should come from the embedded document."); // Use 150px, for compatibility with IE, and per CSS2.1 draft. return nsPresContext::CSSPixelsToAppUnits(150); } #ifdef DEBUG +NS_IMETHODIMP +nsSubDocumentFrame::List(FILE* out, int32_t aIndent, uint32_t aFlags) const +{ + IndentBy(out, aIndent); + ListTag(out); +#ifdef DEBUG_waterson + fprintf(out, " [parent=%p]", static_cast<void*>(mParent)); +#endif + if (HasView()) { + fprintf(out, " [view=%p]", static_cast<void*>(GetView())); + } + fprintf(out, " {%d,%d,%d,%d}", mRect.x, mRect.y, mRect.width, mRect.height); + if (0 != mState) { + fprintf(out, " [state=%016llx]", (unsigned long long)mState); + } + nsIFrame* prevInFlow = GetPrevInFlow(); + nsIFrame* nextInFlow = GetNextInFlow(); + if (nullptr != prevInFlow) { + fprintf(out, " prev-in-flow=%p", static_cast<void*>(prevInFlow)); + } + if (nullptr != nextInFlow) { + fprintf(out, " next-in-flow=%p", static_cast<void*>(nextInFlow)); + } + fprintf(out, " [content=%p]", static_cast<void*>(mContent)); + nsSubDocumentFrame* f = const_cast<nsSubDocumentFrame*>(this); + if (f->HasOverflowAreas()) { + nsRect overflowArea = f->GetVisualOverflowRect(); + fprintf(out, " [vis-overflow=%d,%d,%d,%d]", overflowArea.x, overflowArea.y, + overflowArea.width, overflowArea.height); + overflowArea = f->GetScrollableOverflowRect(); + fprintf(out, " [scr-overflow=%d,%d,%d,%d]", overflowArea.x, overflowArea.y, + overflowArea.width, overflowArea.height); + } + fprintf(out, " [sc=%p]", static_cast<void*>(mStyleContext)); + fputs("\n", out); + + if (aFlags & TRAVERSE_SUBDOCUMENT_FRAMES) { + nsIFrame* subdocRootFrame = f->GetSubdocumentRootFrame(); + if (subdocRootFrame) { + subdocRootFrame->List(out, aIndent + 1); + } + } + + return NS_OK; +} + NS_IMETHODIMP nsSubDocumentFrame::GetFrameName(nsAString& aResult) const { return MakeFrameName(NS_LITERAL_STRING("FrameOuter"), aResult); } #endif nsIAtom* nsSubDocumentFrame::GetType() const
--- a/layout/generic/nsSubDocumentFrame.h +++ b/layout/generic/nsSubDocumentFrame.h @@ -19,16 +19,17 @@ class nsSubDocumentFrame : public nsLeaf { public: NS_DECL_QUERYFRAME_TARGET(nsSubDocumentFrame) NS_DECL_FRAMEARENA_HELPERS nsSubDocumentFrame(nsStyleContext* aContext); #ifdef DEBUG + NS_IMETHOD List(FILE* out, int32_t aIndent, uint32_t aFlags = 0) const; NS_IMETHOD GetFrameName(nsAString& aResult) const; #endif NS_DECL_QUERYFRAME virtual nsIAtom* GetType() const; virtual bool IsFrameOfType(uint32_t aFlags) const
--- a/layout/generic/nsTextFrame.h +++ b/layout/generic/nsTextFrame.h @@ -109,17 +109,17 @@ public: { // Set the frame state bit for text frames to mark them as replaced. // XXX kipp: temporary return nsFrame::IsFrameOfType(aFlags & ~(nsIFrame::eReplaced | nsIFrame::eLineParticipant)); } #ifdef DEBUG - NS_IMETHOD List(FILE* out, int32_t aIndent) const; + NS_IMETHOD List(FILE* out, int32_t aIndent, uint32_t aFlags = 0) const; NS_IMETHOD GetFrameName(nsAString& aResult) const; NS_IMETHOD_(nsFrameState) GetDebugStateBits() const ; #endif virtual ContentOffsets CalcContentOffsetsFromFramePoint(nsPoint aPoint); ContentOffsets GetCharacterOffsetAtFramePoint(const nsPoint &aPoint); /**
--- a/layout/generic/nsTextFrameThebes.cpp +++ b/layout/generic/nsTextFrameThebes.cpp @@ -8387,17 +8387,17 @@ NS_IMETHODIMP_(nsFrameState) nsTextFrame::GetDebugStateBits() const { // mask out our emptystate flags; those are just caches return nsFrame::GetDebugStateBits() & ~(TEXT_WHITESPACE_FLAGS | TEXT_REFLOW_FLAGS); } NS_IMETHODIMP -nsTextFrame::List(FILE* out, int32_t aIndent) const +nsTextFrame::List(FILE* out, int32_t aIndent, uint32_t aFlags) const { // Output the tag IndentBy(out, aIndent); ListTag(out); if (HasView()) { fprintf(out, " [view=%p]", static_cast<void*>(GetView())); } fprintf(out, " [run=%p]", static_cast<void*>(mTextRun));