Bug 1024875: Make reflow-related functions in nsFlexContainerFrame return void, now that Reflow returns void. r=mats

This commit is contained in:
Daniel Holbert 2014-06-13 08:37:02 -07:00
parent 45e852ca76
commit 1aa2afe367
2 changed files with 44 additions and 57 deletions

View File

@ -1056,7 +1056,7 @@ nsFlexContainerFrame::GenerateFlexItemForChild(
return item;
}
nsresult
void
nsFlexContainerFrame::
ResolveFlexItemMaxContentSizing(nsPresContext* aPresContext,
FlexItem& aFlexItem,
@ -1066,7 +1066,7 @@ nsFlexContainerFrame::
if (IsAxisHorizontal(aAxisTracker.GetMainAxis())) {
// Nothing to do -- this function is only for measuring flex items
// in a vertical flex container.
return NS_OK;
return;
}
if (NS_AUTOHEIGHT != aFlexItem.GetFlexBaseSize()) {
@ -1074,7 +1074,7 @@ nsFlexContainerFrame::
// with a base size of "auto" (or equivalent).
// XXXdholbert If & when we handle "min-height: min-content" for flex items,
// we'll want to resolve that in this function, too.
return NS_OK;
return;
}
// If we get here, we're vertical and our main size ended up being
@ -1148,8 +1148,6 @@ nsFlexContainerFrame::
aFlexItem.SetFlexBaseSizeAndMainSize(childDesiredHeight);
aFlexItem.SetHadMeasuringReflow();
return NS_OK;
}
FlexItem::FlexItem(nsIFrame* aChildFrame,
@ -2623,7 +2621,7 @@ AddNewFlexLineToList(LinkedList<FlexLine>& aLines,
return newLine;
}
nsresult
void
nsFlexContainerFrame::GenerateFlexLines(
nsPresContext* aPresContext,
const nsHTMLReflowState& aReflowState,
@ -2706,9 +2704,8 @@ nsFlexContainerFrame::GenerateFlexLines(
item = GenerateFlexItemForChild(aPresContext, childFrame,
aReflowState, aAxisTracker);
nsresult rv = ResolveFlexItemMaxContentSizing(aPresContext, *item,
aReflowState, aAxisTracker);
NS_ENSURE_SUCCESS(rv,rv);
ResolveFlexItemMaxContentSizing(aPresContext, *item,
aReflowState, aAxisTracker);
}
nscoord itemInnerHypotheticalMainSize = item->GetMainSize();
@ -2738,8 +2735,6 @@ nsFlexContainerFrame::GenerateFlexLines(
}
itemIdxInContainer++;
}
return NS_OK;
}
// Retrieves the content-box main-size of our flex container from the
@ -2945,7 +2940,7 @@ ComputePhysicalAscentFromLogicalAscent(nscoord aLogicalAscent,
aAxisTracker.GetCrossAxis());
}
nsresult
void
nsFlexContainerFrame::SizeItemInCrossAxis(
nsPresContext* aPresContext,
const FlexboxAxisTracker& aAxisTracker,
@ -2964,7 +2959,7 @@ nsFlexContainerFrame::SizeItemInCrossAxis(
"In vert flex container, we depend on FlexItem constructor to "
"convert 'align-self: baseline' to 'align-self: flex-start'");
aItem.SetCrossSize(aChildReflowState.ComputedWidth());
return NS_OK;
return;
}
MOZ_ASSERT(!aItem.HadMeasuringReflow(),
@ -3028,8 +3023,6 @@ nsFlexContainerFrame::SizeItemInCrossAxis(
ResolveReflowedChildAscent(aItem.Frame(), childDesiredSize);
aItem.SetAscent(childDesiredSize.BlockStartAscent());
}
return NS_OK;
}
void
@ -3129,11 +3122,11 @@ nsFlexContainerFrame::Reflow(nsPresContext* aPresContext,
axisTracker);
nsAutoTArray<StrutInfo, 1> struts;
nsresult rv = DoFlexLayout(aPresContext, aDesiredSize, aReflowState, aStatus,
contentBoxMainSize, availableHeightForContent,
struts, axisTracker);
DoFlexLayout(aPresContext, aDesiredSize, aReflowState, aStatus,
contentBoxMainSize, availableHeightForContent,
struts, axisTracker);
if (NS_SUCCEEDED(rv) && !struts.IsEmpty()) {
if (!struts.IsEmpty()) {
// We're restarting flex layout, with new knowledge of collapsed items.
DoFlexLayout(aPresContext, aDesiredSize, aReflowState, aStatus,
contentBoxMainSize, availableHeightForContent,
@ -3169,7 +3162,7 @@ private:
MOZ_DECL_USE_GUARD_OBJECT_NOTIFIER
};
nsresult
void
nsFlexContainerFrame::DoFlexLayout(nsPresContext* aPresContext,
nsHTMLReflowMetrics& aDesiredSize,
const nsHTMLReflowState& aReflowState,
@ -3184,11 +3177,10 @@ nsFlexContainerFrame::DoFlexLayout(nsPresContext* aPresContext,
LinkedList<FlexLine> lines;
AutoFlexLineListClearer cleanupLines(lines);
nsresult rv = GenerateFlexLines(aPresContext, aReflowState,
aContentBoxMainSize,
aAvailableHeightForContent,
aStruts, aAxisTracker, lines);
NS_ENSURE_SUCCESS(rv, rv);
GenerateFlexLines(aPresContext, aReflowState,
aContentBoxMainSize,
aAvailableHeightForContent,
aStruts, aAxisTracker, lines);
aContentBoxMainSize =
ClampFlexContainerMainSize(aReflowState, aAxisTracker,
@ -3218,10 +3210,9 @@ nsFlexContainerFrame::DoFlexLayout(nsPresContext* aPresContext,
} else {
childReflowState.SetComputedHeight(item->GetMainSize());
}
nsresult rv = SizeItemInCrossAxis(aPresContext, aAxisTracker,
childReflowState, *item);
NS_ENSURE_SUCCESS(rv, rv);
SizeItemInCrossAxis(aPresContext, aAxisTracker,
childReflowState, *item);
}
}
// Now that we've finished with this line's items, size the line itself:
@ -3250,7 +3241,7 @@ nsFlexContainerFrame::DoFlexLayout(nsPresContext* aPresContext,
BuildStrutInfoFromCollapsedItems(lines.getFirst(), aStruts);
if (!aStruts.IsEmpty()) {
// Restart flex layout, using our struts.
return NS_OK;
return;
}
}
@ -3486,7 +3477,6 @@ nsFlexContainerFrame::DoFlexLayout(nsPresContext* aPresContext,
aReflowState, aStatus);
NS_FRAME_SET_TRUNCATION(aStatus, aReflowState, aDesiredSize)
return NS_OK;
}
/* virtual */ nscoord

View File

@ -80,14 +80,14 @@ protected:
* to, if we find any visibility:collapse children, and Reflow() does
* everything before that point.)
*/
nsresult DoFlexLayout(nsPresContext* aPresContext,
nsHTMLReflowMetrics& aDesiredSize,
const nsHTMLReflowState& aReflowState,
nsReflowStatus& aStatus,
nscoord aContentBoxMainSize,
nscoord aAvailableHeightForContent,
nsTArray<StrutInfo>& aStruts,
const FlexboxAxisTracker& aAxisTracker);
void DoFlexLayout(nsPresContext* aPresContext,
nsHTMLReflowMetrics& aDesiredSize,
const nsHTMLReflowState& aReflowState,
nsReflowStatus& aStatus,
nscoord aContentBoxMainSize,
nscoord aAvailableHeightForContent,
nsTArray<StrutInfo>& aStruts,
const FlexboxAxisTracker& aAxisTracker);
/**
* Checks whether our child-frame list "mFrames" is sorted, using the given
@ -113,25 +113,22 @@ protected:
const nsHTMLReflowState& aParentReflowState,
const FlexboxAxisTracker& aAxisTracker);
// Returns nsresult because we might have to reflow aFlexItem.Frame() (to
// get its vertical intrinsic size in a vertical flexbox), and if that
// reflow fails (returns a failure nsresult), we want to bail out.
nsresult ResolveFlexItemMaxContentSizing(nsPresContext* aPresContext,
FlexItem& aFlexItem,
const nsHTMLReflowState& aParentReflowState,
const FlexboxAxisTracker& aAxisTracker);
void ResolveFlexItemMaxContentSizing(nsPresContext* aPresContext,
FlexItem& aFlexItem,
const nsHTMLReflowState& aParentReflowState,
const FlexboxAxisTracker& aAxisTracker);
// Creates FlexItems for all of our child frames, arranged in a list of
// FlexLines. These are returned by reference in |aLines|. Our actual
// return value has to be |nsresult|, in case we have to reflow a child
// to establish its flex base size and that reflow fails.
nsresult GenerateFlexLines(nsPresContext* aPresContext,
const nsHTMLReflowState& aReflowState,
nscoord aContentBoxMainSize,
nscoord aAvailableHeightForContent,
const nsTArray<StrutInfo>& aStruts,
const FlexboxAxisTracker& aAxisTracker,
mozilla::LinkedList<FlexLine>& aLines);
void GenerateFlexLines(nsPresContext* aPresContext,
const nsHTMLReflowState& aReflowState,
nscoord aContentBoxMainSize,
nscoord aAvailableHeightForContent,
const nsTArray<StrutInfo>& aStruts,
const FlexboxAxisTracker& aAxisTracker,
mozilla::LinkedList<FlexLine>& aLines);
nscoord GetMainSizeFromReflowState(const nsHTMLReflowState& aReflowState,
const FlexboxAxisTracker& aAxisTracker);
@ -143,10 +140,10 @@ protected:
bool* aIsDefinite,
nsReflowStatus& aStatus);
nsresult SizeItemInCrossAxis(nsPresContext* aPresContext,
const FlexboxAxisTracker& aAxisTracker,
nsHTMLReflowState& aChildReflowState,
FlexItem& aItem);
void SizeItemInCrossAxis(nsPresContext* aPresContext,
const FlexboxAxisTracker& aAxisTracker,
nsHTMLReflowState& aChildReflowState,
FlexItem& aItem);
bool mChildrenHaveBeenReordered; // Have we ever had to reorder our kids
// to satisfy their 'order' values?