author | Boris Zbarsky <bzbarsky@mit.edu> |
Tue, 19 Mar 2013 21:47:50 -0400 | |
changeset 125535 | e7c3afbdba55e43177d1a05298ee747bd802fcf0 |
parent 125534 | 6a00b0041bd5bcfcabf11f012f13eba27b8040f4 |
child 125536 | fed22daf94ee9e336d978e09ccf5fa380d01d94d |
push id | 24459 |
push user | emorley@mozilla.com |
push date | Wed, 20 Mar 2013 11:46:36 +0000 |
treeherder | mozilla-central@1d6fe70c79c5 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | dholbert |
bugs | 852501 |
milestone | 22.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
|
layout/base/nsCSSFrameConstructor.cpp | file | annotate | diff | comparison | revisions | |
layout/base/nsCSSFrameConstructor.h | file | annotate | diff | comparison | revisions |
--- a/layout/base/nsCSSFrameConstructor.cpp +++ b/layout/base/nsCSSFrameConstructor.cpp @@ -3215,23 +3215,17 @@ nsCSSFrameConstructor::ConstructTextFram { NS_PRECONDITION(aData, "Must have frame construction data"); nsIFrame* newFrame = (*aData->mFunc.mCreationFunc)(mPresShell, aStyleContext); if (MOZ_UNLIKELY(!newFrame)) return NS_ERROR_OUT_OF_MEMORY; - nsresult rv = InitAndRestoreFrame(aState, aContent, aParentFrame, - nullptr, newFrame); - - if (NS_FAILED(rv)) { - newFrame->Destroy(); - return rv; - } + InitAndRestoreFrame(aState, aContent, aParentFrame, nullptr, newFrame); // We never need to create a view for a text frame. if (newFrame->IsGeneratedContentFrame()) { nsAutoPtr<nsGenConInitializer> initializer; initializer = static_cast<nsGenConInitializer*>( aContent->UnsetProperty(nsGkAtoms::genConInitializerProperty)); @@ -3245,17 +3239,17 @@ nsCSSFrameConstructor::ConstructTextFram } // Add the newly constructed frame to the flow aFrameItems.AddChild(newFrame); if (!aState.mCreatingExtraFrames) aContent->SetPrimaryFrame(newFrame); - return rv; + return NS_OK; } /* static */ const nsCSSFrameConstructor::FrameConstructionData* nsCSSFrameConstructor::FindDataByInt(int32_t aInt, Element* aElement, nsStyleContext* aStyleContext, const FrameConstructionDataByInt* aDataPtr, @@ -3620,19 +3614,17 @@ nsCSSFrameConstructor::ConstructFrameFro // Must init frameToAddToList to null, since it's inout nsIFrame* frameToAddToList = nullptr; if ((bits & FCDATA_MAY_NEED_SCROLLFRAME) && display->IsScrollableOverflow()) { BuildScrollFrame(aState, content, styleContext, newFrame, geometricParent, frameToAddToList); } else { - rv = InitAndRestoreFrame(aState, content, geometricParent, nullptr, - newFrame); - NS_ASSERTION(NS_SUCCEEDED(rv), "InitAndRestoreFrame failed"); + InitAndRestoreFrame(aState, content, geometricParent, nullptr, newFrame); // See whether we need to create a view nsContainerFrame::CreateViewForFrame(newFrame, false); frameToAddToList = newFrame; } // Use frameToAddToList as the primary frame. In the non-scrollframe case // they're equal, but in the scrollframe case newFrame is the scrolled // frame, while frameToAddToList is the scrollframe (and should be the @@ -3651,22 +3643,17 @@ nsCSSFrameConstructor::ConstructFrameFro styleContext); nsIFrame* blockFrame = NS_NewBlockFormattingContext(mPresShell, blockContext); if (MOZ_UNLIKELY(!blockFrame)) { primaryFrame->Destroy(); return NS_ERROR_OUT_OF_MEMORY; } - rv = InitAndRestoreFrame(aState, content, newFrame, nullptr, blockFrame); - if (NS_FAILED(rv)) { - blockFrame->Destroy(); - primaryFrame->Destroy(); - return rv; - } + InitAndRestoreFrame(aState, content, newFrame, nullptr, blockFrame); SetInitialSingleChild(newFrame, blockFrame); // Now figure out whether newFrame or blockFrame should be the // absolute container. It should be the latter if it's // positioned, otherwise the former. const nsStyleDisplay* blockDisplay = blockContext->StyleDisplay(); if (blockDisplay->IsPositioned(blockFrame)) { @@ -4495,46 +4482,42 @@ nsCSSFrameConstructor::ConstructNonScrol return ConstructBlock(aState, aDisplay, aItem.mContent, aState.GetGeometricParent(aDisplay, aParentFrame), aParentFrame, styleContext, aNewFrame, aFrameItems, aDisplay->IsPositioned(*aNewFrame), aItem.mPendingBinding); } -nsresult +void nsCSSFrameConstructor::InitAndRestoreFrame(const nsFrameConstructorState& aState, nsIContent* aContent, nsIFrame* aParentFrame, nsIFrame* aPrevInFlow, nsIFrame* aNewFrame, bool aAllowCounters) { NS_PRECONDITION(mUpdateCount != 0, "Should be in an update while creating frames"); - NS_ASSERTION(aNewFrame, "Null frame cannot be initialized"); - if (!aNewFrame) - return NS_ERROR_NULL_POINTER; + MOZ_ASSERT(aNewFrame, "Null frame cannot be initialized"); // Initialize the frame aNewFrame->Init(aContent, aParentFrame, aPrevInFlow); aNewFrame->AddStateBits(aState.mAdditionalStateBits); if (aState.mFrameState) { // Restore frame state for just the newly created frame. RestoreFrameStateFor(aNewFrame, aState.mFrameState); } if (aAllowCounters && !aPrevInFlow && mCounterManager.AddCounterResetsAndIncrements(aNewFrame)) { CountersDirty(); } - - return NS_OK; } already_AddRefed<nsStyleContext> nsCSSFrameConstructor::ResolveStyleContext(nsIFrame* aParentFrame, nsIContent* aContent, nsFrameConstructorState* aState) { nsStyleContext* parentStyleContext = nullptr; @@ -10178,18 +10161,18 @@ nsCSSFrameConstructor::WrapFramesInFirst nsCSSPseudoElements::firstLine)-> StyleContext(); nsRefPtr<nsStyleContext> firstLineStyle = GetFirstLineStyle(aBlockContent, parentStyle); aLineFrame = NS_NewFirstLineFrame(mPresShell, firstLineStyle); // Initialize the line frame - rv = InitAndRestoreFrame(aState, aBlockContent, aBlockFrame, nullptr, - aLineFrame); + InitAndRestoreFrame(aState, aBlockContent, aBlockFrame, nullptr, + aLineFrame); // The lineFrame will be the block's first child; the rest of the // frame list (after lastInlineFrame) will be the second and // subsequent children; insert lineFrame into aFrameItems. aFrameItems.InsertFrame(nullptr, nullptr, aLineFrame); NS_ASSERTION(aLineFrame->StyleContext() == firstLineStyle, "Bogus style context on line frame"); @@ -10302,18 +10285,18 @@ nsCSSFrameConstructor::InsertFirstLineFr nsStyleContext* parentStyle = nsFrame::CorrectStyleParentFrame(aBlockFrame, nsCSSPseudoElements::firstLine)-> StyleContext(); nsRefPtr<nsStyleContext> firstLineStyle = GetFirstLineStyle(aContent, parentStyle); // Initialize the line frame - rv = InitAndRestoreFrame(aState, aContent, aBlockFrame, - nullptr, lineFrame); + InitAndRestoreFrame(aState, aContent, aBlockFrame, + nullptr, lineFrame); // Make sure the caller inserts the lineFrame into the // blocks list of children. aFrameItems.childList = lineFrame; aFrameItems.lastChild = lineFrame; // Give the inline frames to the lineFrame <b>after</b> // reparenting them
--- a/layout/base/nsCSSFrameConstructor.h +++ b/layout/base/nsCSSFrameConstructor.h @@ -396,22 +396,22 @@ private: /* aMinHint is the minimal change that should be made to the element */ // XXXbz do we really need the aPrimaryFrame argument here? void RestyleElement(Element* aElement, nsIFrame* aPrimaryFrame, nsChangeHint aMinHint, RestyleTracker& aRestyleTracker, bool aRestyleDescendants); - nsresult InitAndRestoreFrame (const nsFrameConstructorState& aState, - nsIContent* aContent, - nsIFrame* aParentFrame, - nsIFrame* aPrevInFlow, - nsIFrame* aNewFrame, - bool aAllowCounters = true); + void InitAndRestoreFrame (const nsFrameConstructorState& aState, + nsIContent* aContent, + nsIFrame* aParentFrame, + nsIFrame* aPrevInFlow, + nsIFrame* aNewFrame, + bool aAllowCounters = true); // aState can be null if not available; it's used as an optimization. // XXXbz IsValidSibling is the only caller that doesn't pass a state here! already_AddRefed<nsStyleContext> ResolveStyleContext(nsIFrame* aParentFrame, nsIContent* aContent, nsFrameConstructorState* aState); already_AddRefed<nsStyleContext>