author | Boris Zbarsky <bzbarsky@mit.edu> |
Tue, 19 Mar 2013 21:47:52 -0400 | |
changeset 125545 | 24959a8177a2f8f15ffbeae25c5b323e2d7a6c25 |
parent 125544 | 24eb52ac37b4a12e2925a3d544658fd48fcf440f |
child 125546 | f090c4fb54b8d3b63641f44e57020d8fc951bd71 |
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 @@ -3469,17 +3469,17 @@ nsCSSFrameConstructor::FindCanvasData(El } static const FrameConstructionData sCanvasData = FCDATA_WITH_WRAPPING_BLOCK(0, NS_NewHTMLCanvasFrame, nsCSSAnonBoxes::htmlCanvasContent); return &sCanvasData; } -nsresult +void nsCSSFrameConstructor::ConstructFrameFromItemInternal(FrameConstructionItem& aItem, nsFrameConstructorState& aState, nsIFrame* aParentFrame, nsFrameItems& aFrameItems) { const FrameConstructionData* data = aItem.mFCData; NS_ASSERTION(data, "Must have frame construction data"); @@ -3510,17 +3510,17 @@ nsCSSFrameConstructor::ConstructFrameFro data->mFullConstructor == &nsCSSFrameConstructor::ConstructNonScrollableBlock), "Unexpected FCDATA_FORCED_NON_SCROLLABLE_BLOCK flag"); // Don't create a subdocument frame for iframes if we're creating extra frames if (aState.mCreatingExtraFrames && aItem.mContent->IsHTML() && aItem.mContent->Tag() == nsGkAtoms::iframe) { - return NS_OK; + return; } nsStyleContext* const styleContext = aItem.mStyleContext; const nsStyleDisplay* display = styleContext->StyleDisplay(); nsIContent* const content = aItem.mContent; // Push the content as a style ancestor now, so we don't have to do // it in our various full-constructor functions. In particular, @@ -3555,18 +3555,16 @@ nsCSSFrameConstructor::ConstructFrameFro nsGkAtoms::popupSetFrame), "Should have a containing block here!"); nsIFrame* geometricParent = isPopup ? aState.mPopupItems.containingBlock : (allowOutOfFlow ? aState.GetGeometricParent(display, aParentFrame) : aParentFrame); - nsresult rv = NS_OK; - // 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 { InitAndRestoreFrame(aState, content, geometricParent, nullptr, newFrame); @@ -3588,20 +3586,16 @@ nsCSSFrameConstructor::ConstructFrameFro nsIFrame* possiblyLeafFrame = newFrame; if (bits & FCDATA_CREATE_BLOCK_WRAPPER_FOR_ALL_KIDS) { nsRefPtr<nsStyleContext> blockContext; blockContext = mPresShell->StyleSet()->ResolveAnonymousBoxStyle(*data->mAnonBoxPseudo, styleContext); nsIFrame* blockFrame = NS_NewBlockFormattingContext(mPresShell, blockContext); - if (MOZ_UNLIKELY(!blockFrame)) { - primaryFrame->Destroy(); - return NS_ERROR_OUT_OF_MEMORY; - } 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. @@ -3673,17 +3667,17 @@ nsCSSFrameConstructor::ConstructFrameFro content->HasAttr(kNameSpaceID_None, nsGkAtoms::tooltip))) { nsIRootBox* rootBox = nsIRootBox::GetRootBox(mPresShell); if (rootBox) { rootBox->AddTooltipSupport(content); } } #endif - if (NS_SUCCEEDED(rv) && (bits & FCDATA_WRAP_KIDS_IN_BLOCKS)) { + if (bits & FCDATA_WRAP_KIDS_IN_BLOCKS) { nsFrameItems newItems; nsFrameItems currentBlockItems; nsIFrame* f; while ((f = childItems.FirstChild()) != nullptr) { bool wrapFrame = IsInlineFrame(f) || IsFrameSpecial(f); if (!wrapFrame) { FlushAccumulatedBlock(aState, content, newFrame, currentBlockItems, newItems); @@ -3722,18 +3716,16 @@ nsCSSFrameConstructor::ConstructFrameFro // the frame bit, because by this point mIsGeneratedContent has been cleared // on aItem. if ((!aState.mCreatingExtraFrames || ((primaryFrame->GetStateBits() & NS_FRAME_GENERATED_CONTENT) && !aItem.mContent->GetPrimaryFrame())) && !(bits & FCDATA_SKIP_FRAMESET)) { aItem.mContent->SetPrimaryFrame(primaryFrame); } - - return NS_OK; } // after the node has been constructed and initialized create any // anonymous content a node needs. nsresult nsCSSFrameConstructor::CreateAnonymousFrames(nsFrameConstructorState& aState, nsIContent* aParent, nsIFrame* aParentFrame, @@ -4994,19 +4986,17 @@ nsCSSFrameConstructor::ConstructFrame(ns AddFrameConstructionItems(aState, aContent, true, aParentFrame, items); } items.SetTriedConstructingFrames(); for (FCItemIterator iter(items); !iter.IsDone(); iter.Next()) { NS_ASSERTION(iter.item().DesiredParentType() == GetParentType(aParentFrame), "This is not going to work"); - nsresult rv = - ConstructFramesFromItem(aState, iter, aParentFrame, aFrameItems); - NS_ENSURE_SUCCESS(rv, rv); + ConstructFramesFromItem(aState, iter, aParentFrame, aFrameItems); } return NS_OK; } void nsCSSFrameConstructor::AddFrameConstructionItems(nsFrameConstructorState& aState, nsIContent* aContent, @@ -5432,17 +5422,17 @@ nsCSSFrameConstructor::AtLineBoundary(FC !next.item().mSuppressWhiteSpaceOptimizations && aIter.item().mContent->GetNextSibling() == next.item().mContent) return true; } return false; } -nsresult +void nsCSSFrameConstructor::ConstructFramesFromItem(nsFrameConstructorState& aState, FCItemIterator& aIter, nsIFrame* aParentFrame, nsFrameItems& aFrameItems) { nsIFrame* adjParentFrame = aParentFrame; FrameConstructionItem& item = aIter.item(); nsStyleContext* styleContext = item.mStyleContext; @@ -5465,22 +5455,22 @@ nsCSSFrameConstructor::ConstructFramesFr // measure the white space glyphs due to x/y/dx/dy attributes. if (AtLineBoundary(aIter) && !styleContext->StyleText()->WhiteSpaceOrNewlineIsSignificant() && aIter.List()->ParentHasNoXBLChildren() && !(aState.mAdditionalStateBits & NS_FRAME_GENERATED_CONTENT) && (item.mFCData->mBits & FCDATA_IS_LINE_PARTICIPANT) && !(item.mFCData->mBits & FCDATA_IS_SVG_TEXT) && item.IsWhitespace(aState)) - return NS_OK; + return; ConstructTextFrame(item.mFCData, aState, item.mContent, adjParentFrame, styleContext, aFrameItems); - return NS_OK; + return; } // Start background loads during frame construction so that we're // guaranteed that they will be started before onload fires. styleContext->StartBackgroundImageLoads(); nsFrameState savedStateBits = aState.mAdditionalStateBits; if (item.mIsGeneratedContent) { @@ -5497,22 +5487,19 @@ nsCSSFrameConstructor::ConstructFramesFr item.mContent); // Now that we've passed ownership of item.mContent to the frame, unset // our generated content flag so we don't release or unbind it ourselves. item.mIsGeneratedContent = false; } // XXXbz maybe just inline ConstructFrameFromItemInternal here or something? - nsresult rv = ConstructFrameFromItemInternal(item, aState, adjParentFrame, - aFrameItems); + ConstructFrameFromItemInternal(item, aState, adjParentFrame, aFrameItems); aState.mAdditionalStateBits = savedStateBits; - - return rv; } inline bool IsRootBoxFrame(nsIFrame *aFrame) { return (aFrame->GetType() == nsGkAtoms::rootFrame); } @@ -8905,19 +8892,17 @@ nsCSSFrameConstructor::ReplicateFixedFra ITEM_ALLOW_XBL_BASE | ITEM_ALLOW_PAGE_BREAK, items); items.SetTriedConstructingFrames(); for (FCItemIterator iter(items); !iter.IsDone(); iter.Next()) { NS_ASSERTION(iter.item().DesiredParentType() == GetParentType(canvasFrame), "This is not going to work"); - nsresult rv = - ConstructFramesFromItem(state, iter, canvasFrame, fixedPlaceholders); - NS_ENSURE_SUCCESS(rv, rv); + ConstructFramesFromItem(state, iter, canvasFrame, fixedPlaceholders); } } } // Add the placeholders to our primary child list. // XXXbz this is a little screwed up, since the fixed frames will have // broken auto-positioning. Oh, well. NS_ASSERTION(!canvasFrame->GetFirstPrincipalChild(), @@ -9835,20 +9820,17 @@ nsCSSFrameConstructor::ConstructFramesFr #ifdef DEBUG for (FCItemIterator iter(aItems); !iter.IsDone(); iter.Next()) { NS_ASSERTION(iter.item().DesiredParentType() == GetParentType(aParentFrame), "Needed pseudos didn't get created; expect bad things"); } #endif for (FCItemIterator iter(aItems); !iter.IsDone(); iter.Next()) { - nsresult rv = ConstructFramesFromItem(aState, iter, aParentFrame, aFrameItems); - if (NS_FAILED(rv)) { - NS_RUNTIMEABORT("Frame construction failure"); - } + ConstructFramesFromItem(aState, iter, aParentFrame, aFrameItems); } NS_ASSERTION(!aState.mHavePendingPopupgroup, "Should have proccessed it by now"); } void nsCSSFrameConstructor::ProcessChildren(nsFrameConstructorState& aState,
--- a/layout/base/nsCSSFrameConstructor.h +++ b/layout/base/nsCSSFrameConstructor.h @@ -1252,20 +1252,20 @@ private: @param aItem the FrameConstructionItem to use. @param aState the frame construction state to use. @param aParentFrame the frame to set as the parent of the newly-constructed frame. @param aFrameItems the frame list to add the new frame (or its placeholder) to. */ - nsresult ConstructFrameFromItemInternal(FrameConstructionItem& aItem, - nsFrameConstructorState& aState, - nsIFrame* aParentFrame, - nsFrameItems& aFrameItems); + void ConstructFrameFromItemInternal(FrameConstructionItem& aItem, + nsFrameConstructorState& aState, + nsIFrame* aParentFrame, + nsFrameItems& aFrameItems); // possible flags for AddFrameConstructionItemInternal's aFlags argument /* Allow xbl:base to affect the tag/namespace used. */ #define ITEM_ALLOW_XBL_BASE 0x1 /* Allow page-break before and after items to be created if the style asks for them. */ #define ITEM_ALLOW_PAGE_BREAK 0x2 /* The item is a generated content item. */ @@ -1290,20 +1290,20 @@ private: /** * Construct frames for the given item list and parent frame, and put the * resulting frames in aFrameItems. */ void ConstructFramesFromItemList(nsFrameConstructorState& aState, FrameConstructionItemList& aItems, nsIFrame* aParentFrame, nsFrameItems& aFrameItems); - nsresult ConstructFramesFromItem(nsFrameConstructorState& aState, - FCItemIterator& aItem, - nsIFrame* aParentFrame, - nsFrameItems& aFrameItems); + void ConstructFramesFromItem(nsFrameConstructorState& aState, + FCItemIterator& aItem, + nsIFrame* aParentFrame, + nsFrameItems& aFrameItems); static bool AtLineBoundary(FCItemIterator& aIter); nsresult CreateAnonymousFrames(nsFrameConstructorState& aState, nsIContent* aParent, nsIFrame* aParentFrame, PendingBinding * aPendingBinding, nsFrameItems& aChildItems);