diff --git a/dom/flex/Flex.cpp b/dom/flex/Flex.cpp index 057f49cf3f4b..3183f1f28ff6 100644 --- a/dom/flex/Flex.cpp +++ b/dom/flex/Flex.cpp @@ -7,6 +7,7 @@ #include "Flex.h" #include "FlexLineValues.h" +#include "mozilla/dom/Element.h" #include "mozilla/dom/FlexBinding.h" #include "nsFlexContainerFrame.h" diff --git a/dom/flex/FlexItemValues.cpp b/dom/flex/FlexItemValues.cpp index fd7454cf0877..07465afc999a 100644 --- a/dom/flex/FlexItemValues.cpp +++ b/dom/flex/FlexItemValues.cpp @@ -6,7 +6,9 @@ #include "FlexItemValues.h" +#include "mozilla/dom/DOMRect.h" #include "mozilla/dom/FlexBinding.h" +#include "mozilla/dom/FlexLineValues.h" #include "nsFlexContainerFrame.h" namespace mozilla { diff --git a/dom/flex/FlexItemValues.h b/dom/flex/FlexItemValues.h index bb152d9542d6..c775cdbcfa39 100644 --- a/dom/flex/FlexItemValues.h +++ b/dom/flex/FlexItemValues.h @@ -13,9 +13,13 @@ struct ComputedFlexItemInfo; +class nsINode; + namespace mozilla { namespace dom { +class DOMRectReadOnly; + class FlexLineValues; class FlexItemValues : public nsISupports, public nsWrapperCache { diff --git a/layout/base/LayoutConstants.h b/layout/base/LayoutConstants.h index 21e85d5610da..c05a22077594 100644 --- a/layout/base/LayoutConstants.h +++ b/layout/base/LayoutConstants.h @@ -75,6 +75,12 @@ enum class ComputeSizeFlag : uint8_t { }; using ComputeSizeFlags = mozilla::EnumSet; +/** + * This is used in some nsLayoutUtils functions. + * Declared here so that fewer files need to include nsLayoutUtils.h. + */ +enum class IntrinsicISizeType { MinISize, PrefISize }; + } // namespace mozilla #endif // LayoutConstants_h___ diff --git a/layout/base/nsCSSFrameConstructor.h b/layout/base/nsCSSFrameConstructor.h index ae8829d8fe63..b0c0c0755a38 100644 --- a/layout/base/nsCSSFrameConstructor.h +++ b/layout/base/nsCSSFrameConstructor.h @@ -30,6 +30,7 @@ struct nsStyleDisplay; struct nsGenConInitializer; +class nsBlockFrame; class nsContainerFrame; class nsFirstLineFrame; class nsFirstLetterFrame; diff --git a/layout/base/nsLayoutUtils.cpp b/layout/base/nsLayoutUtils.cpp index 2e3b707b480f..cd93e0e69a10 100644 --- a/layout/base/nsLayoutUtils.cpp +++ b/layout/base/nsLayoutUtils.cpp @@ -5510,12 +5510,11 @@ static bool IsReplacedBoxResolvedAgainstZero( */ static nscoord AddIntrinsicSizeOffset( gfxContext* aRenderingContext, nsIFrame* aFrame, - const nsIFrame::IntrinsicSizeOffsetData& aOffsets, - nsLayoutUtils::IntrinsicISizeType aType, StyleBoxSizing aBoxSizing, - nscoord aContentSize, nscoord aContentMinSize, const StyleSize& aStyleSize, - const nscoord* aFixedMinSize, const StyleSize& aStyleMinSize, - const nscoord* aFixedMaxSize, const StyleMaxSize& aStyleMaxSize, - uint32_t aFlags, PhysicalAxis aAxis) { + const nsIFrame::IntrinsicSizeOffsetData& aOffsets, IntrinsicISizeType aType, + StyleBoxSizing aBoxSizing, nscoord aContentSize, nscoord aContentMinSize, + const StyleSize& aStyleSize, const nscoord* aFixedMinSize, + const StyleSize& aStyleMinSize, const nscoord* aFixedMaxSize, + const StyleMaxSize& aStyleMaxSize, uint32_t aFlags, PhysicalAxis aAxis) { nscoord result = aContentSize; nscoord min = aContentMinSize; nscoord coordOutsideSize = 0; diff --git a/layout/base/nsLayoutUtils.h b/layout/base/nsLayoutUtils.h index 02d292c13fab..12e377392ba8 100644 --- a/layout/base/nsLayoutUtils.h +++ b/layout/base/nsLayoutUtils.h @@ -1555,9 +1555,8 @@ class nsLayoutUtils { * size by reducing the *content size* (flooring at zero). This is used for: * https://drafts.csswg.org/css-grid/#min-size-auto */ - enum class IntrinsicISizeType { MinISize, PrefISize }; - static const auto MIN_ISIZE = IntrinsicISizeType::MinISize; - static const auto PREF_ISIZE = IntrinsicISizeType::PrefISize; + static const auto MIN_ISIZE = mozilla::IntrinsicISizeType::MinISize; + static const auto PREF_ISIZE = mozilla::IntrinsicISizeType::PrefISize; enum { IGNORE_PADDING = 0x01, BAIL_IF_REFLOW_NEEDED = 0x02, // returns NS_INTRINSIC_ISIZE_UNKNOWN if so @@ -1565,7 +1564,7 @@ class nsLayoutUtils { }; static nscoord IntrinsicForAxis( mozilla::PhysicalAxis aAxis, gfxContext* aRenderingContext, - nsIFrame* aFrame, IntrinsicISizeType aType, + nsIFrame* aFrame, mozilla::IntrinsicISizeType aType, const mozilla::Maybe& aPercentageBasis = mozilla::Nothing(), uint32_t aFlags = 0, nscoord aMarginBoxMinSizeClamp = NS_MAXSIZE); /** @@ -1573,7 +1572,7 @@ class nsLayoutUtils { */ static nscoord IntrinsicForContainer(gfxContext* aRenderingContext, nsIFrame* aFrame, - IntrinsicISizeType aType, + mozilla::IntrinsicISizeType aType, uint32_t aFlags = 0); /** @@ -1597,7 +1596,7 @@ class nsLayoutUtils { */ static nscoord MinSizeContributionForAxis(mozilla::PhysicalAxis aAxis, gfxContext* aRC, nsIFrame* aFrame, - IntrinsicISizeType aType, + mozilla::IntrinsicISizeType aType, const LogicalSize& aPercentageBasis, uint32_t aFlags = 0); diff --git a/layout/forms/nsComboboxControlFrame.cpp b/layout/forms/nsComboboxControlFrame.cpp index 13d09b12b4db..76d4bcbe4015 100644 --- a/layout/forms/nsComboboxControlFrame.cpp +++ b/layout/forms/nsComboboxControlFrame.cpp @@ -723,8 +723,8 @@ nscoord nsComboboxControlFrame::DropDownButtonISize() { return presContext->DevPixelsToAppUnits(dropdownButtonSize.width); } -nscoord nsComboboxControlFrame::GetIntrinsicISize( - gfxContext* aRenderingContext, nsLayoutUtils::IntrinsicISizeType aType) { +nscoord nsComboboxControlFrame::GetIntrinsicISize(gfxContext* aRenderingContext, + IntrinsicISizeType aType) { // get the scrollbar width, we'll use this later nscoord scrollbarWidth = 0; nsPresContext* presContext = PresContext(); diff --git a/layout/forms/nsComboboxControlFrame.h b/layout/forms/nsComboboxControlFrame.h index 61b4363167fe..f7513d6adb6b 100644 --- a/layout/forms/nsComboboxControlFrame.h +++ b/layout/forms/nsComboboxControlFrame.h @@ -238,7 +238,7 @@ class nsComboboxControlFrame final : public nsBlockFrame, // Helper for GetMinISize/GetPrefISize nscoord GetIntrinsicISize(gfxContext* aRenderingContext, - nsLayoutUtils::IntrinsicISizeType aType); + mozilla::IntrinsicISizeType aType); class RedisplayTextEvent : public mozilla::Runnable { public: diff --git a/layout/forms/nsFieldSetFrame.cpp b/layout/forms/nsFieldSetFrame.cpp index b526ac1acfe5..16e3fef6be64 100644 --- a/layout/forms/nsFieldSetFrame.cpp +++ b/layout/forms/nsFieldSetFrame.cpp @@ -13,6 +13,7 @@ #include "mozilla/Likely.h" #include "mozilla/PresShell.h" #include "mozilla/Maybe.h" +#include "mozilla/webrender/WebRenderAPI.h" #include "nsCSSAnonBoxes.h" #include "nsCSSFrameConstructor.h" #include "nsCSSRendering.h" @@ -340,8 +341,8 @@ image::ImgDrawResult nsFieldSetFrame::PaintBorder( return result; } -nscoord nsFieldSetFrame::GetIntrinsicISize( - gfxContext* aRenderingContext, nsLayoutUtils::IntrinsicISizeType aType) { +nscoord nsFieldSetFrame::GetIntrinsicISize(gfxContext* aRenderingContext, + IntrinsicISizeType aType) { nscoord legendWidth = 0; nscoord contentWidth = 0; if (!StyleDisplay()->IsContainSize()) { diff --git a/layout/forms/nsFieldSetFrame.h b/layout/forms/nsFieldSetFrame.h index b664097729e8..2d62aa89259c 100644 --- a/layout/forms/nsFieldSetFrame.h +++ b/layout/forms/nsFieldSetFrame.h @@ -21,7 +21,7 @@ class nsFieldSetFrame final : public nsContainerFrame { explicit nsFieldSetFrame(ComputedStyle* aStyle, nsPresContext* aPresContext); nscoord GetIntrinsicISize(gfxContext* aRenderingContext, - nsLayoutUtils::IntrinsicISizeType); + mozilla::IntrinsicISizeType); virtual nscoord GetMinISize(gfxContext* aRenderingContext) override; virtual nscoord GetPrefISize(gfxContext* aRenderingContext) override; diff --git a/layout/generic/nsContainerFrame.cpp b/layout/generic/nsContainerFrame.cpp index a16678b31e63..9efc026ff3be 100644 --- a/layout/generic/nsContainerFrame.cpp +++ b/layout/generic/nsContainerFrame.cpp @@ -11,6 +11,8 @@ #include "mozilla/ComputedStyle.h" #include "mozilla/PresShell.h" #include "mozilla/dom/HTMLSummaryElement.h" +#include "mozilla/gfx/2D.h" +#include "mozilla/gfx/Types.h" #include "nsAbsoluteContainingBlock.h" #include "nsAttrValue.h" #include "nsAttrValueInlines.h" @@ -37,12 +39,19 @@ #include "mozilla/AutoRestore.h" #include "nsIFrameInlines.h" #include "nsPrintfCString.h" +#include "mozilla/webrender/WebRenderAPI.h" #include using namespace mozilla; using namespace mozilla::dom; using namespace mozilla::layout; +using mozilla::gfx::ColorPattern; +using mozilla::gfx::DeviceColor; +using mozilla::gfx::Rect; +using mozilla::gfx::sRGBColor; +using mozilla::gfx::ToDeviceColor; + nsContainerFrame::~nsContainerFrame() = default; NS_QUERYFRAME_HEAD(nsContainerFrame) @@ -873,9 +882,9 @@ static nscoord GetCoord(const LengthPercentageOrAuto& aCoord, return GetCoord(aCoord.AsLengthPercentage(), aIfNotCoord); } -void nsContainerFrame::DoInlineIntrinsicISize( - gfxContext* aRenderingContext, InlineIntrinsicISizeData* aData, - nsLayoutUtils::IntrinsicISizeType aType) { +void nsContainerFrame::DoInlineIntrinsicISize(gfxContext* aRenderingContext, + InlineIntrinsicISizeData* aData, + IntrinsicISizeType aType) { if (GetPrevInFlow()) return; // Already added. MOZ_ASSERT( diff --git a/layout/generic/nsContainerFrame.h b/layout/generic/nsContainerFrame.h index bcf508c75cb2..fd0dfcf01270 100644 --- a/layout/generic/nsContainerFrame.h +++ b/layout/generic/nsContainerFrame.h @@ -10,9 +10,9 @@ #define nsContainerFrame_h___ #include "mozilla/Attributes.h" +#include "LayoutConstants.h" #include "nsSplittableFrame.h" #include "nsFrameList.h" -#include "nsLayoutUtils.h" #include "nsLineBox.h" class nsOverflowContinuationTracker; @@ -213,7 +213,7 @@ class nsContainerFrame : public nsSplittableFrame { // Used by both nsInlineFrame and nsFirstLetterFrame. void DoInlineIntrinsicISize(gfxContext* aRenderingContext, InlineIntrinsicISizeData* aData, - nsLayoutUtils::IntrinsicISizeType aType); + mozilla::IntrinsicISizeType aType); /** * This is the CSS block concept of computing 'auto' widths, which most diff --git a/layout/generic/nsFirstLetterFrame.cpp b/layout/generic/nsFirstLetterFrame.cpp index dc2f165e7fe1..82f93f9193ae 100644 --- a/layout/generic/nsFirstLetterFrame.cpp +++ b/layout/generic/nsFirstLetterFrame.cpp @@ -15,6 +15,7 @@ #include "mozilla/RestyleManager.h" #include "mozilla/ServoStyleSet.h" #include "nsIContent.h" +#include "nsLayoutUtils.h" #include "nsLineLayout.h" #include "nsGkAtoms.h" #include "nsFrameManager.h" diff --git a/layout/generic/nsFlexContainerFrame.cpp b/layout/generic/nsFlexContainerFrame.cpp index e6824d6f4cb7..c1cf5e4d255d 100644 --- a/layout/generic/nsFlexContainerFrame.cpp +++ b/layout/generic/nsFlexContainerFrame.cpp @@ -5545,8 +5545,8 @@ void nsFlexContainerFrame::ReflowPlaceholders( } } -nscoord nsFlexContainerFrame::IntrinsicISize( - gfxContext* aRenderingContext, nsLayoutUtils::IntrinsicISizeType aType) { +nscoord nsFlexContainerFrame::IntrinsicISize(gfxContext* aRenderingContext, + IntrinsicISizeType aType) { nscoord containerISize = 0; const nsStylePosition* stylePos = StylePosition(); const FlexboxAxisTracker axisTracker(this); diff --git a/layout/generic/nsFlexContainerFrame.h b/layout/generic/nsFlexContainerFrame.h index 032893c105fb..9c4a82f3b59f 100644 --- a/layout/generic/nsFlexContainerFrame.h +++ b/layout/generic/nsFlexContainerFrame.h @@ -644,7 +644,7 @@ class nsFlexContainerFrame final : public nsContainerFrame { * Helper for GetMinISize / GetPrefISize. */ nscoord IntrinsicISize(gfxContext* aRenderingContext, - nsLayoutUtils::IntrinsicISizeType aType); + mozilla::IntrinsicISizeType aType); /** * Cached values to optimize GetMinISize/GetPrefISize. diff --git a/layout/generic/nsGridContainerFrame.cpp b/layout/generic/nsGridContainerFrame.cpp index b3812b12e6a2..593a28514241 100644 --- a/layout/generic/nsGridContainerFrame.cpp +++ b/layout/generic/nsGridContainerFrame.cpp @@ -42,7 +42,6 @@ using namespace mozilla; typedef nsAbsoluteContainingBlock::AbsPosReflowFlags AbsPosReflowFlags; typedef nsGridContainerFrame::TrackSize TrackSize; typedef mozilla::CSSAlignUtils::AlignJustifyFlags AlignJustifyFlags; -typedef nsLayoutUtils::IntrinsicISizeType IntrinsicISizeType; using GridTemplate = StyleGridTemplateComponent; using TrackListValue = diff --git a/layout/generic/nsGridContainerFrame.h b/layout/generic/nsGridContainerFrame.h index eacde6b2ba95..b207bed9e4b8 100644 --- a/layout/generic/nsGridContainerFrame.h +++ b/layout/generic/nsGridContainerFrame.h @@ -313,7 +313,6 @@ class nsGridContainerFrame final : public nsContainerFrame { typedef mozilla::LogicalRect LogicalRect; typedef mozilla::LogicalSize LogicalSize; typedef mozilla::WritingMode WritingMode; - typedef nsLayoutUtils::IntrinsicISizeType IntrinsicISizeType; struct Grid; struct GridArea; class LineNameMap; @@ -363,7 +362,7 @@ class nsGridContainerFrame final : public nsContainerFrame { * Helper for GetMinISize / GetPrefISize. */ nscoord IntrinsicISize(gfxContext* aRenderingContext, - IntrinsicISizeType aConstraint); + mozilla::IntrinsicISizeType aConstraint); bool GetBBaseline(BaselineSharingGroup aBaselineGroup, nscoord* aResult) const { diff --git a/layout/svg/SVGGradientFrame.cpp b/layout/svg/SVGGradientFrame.cpp index 724083b62e59..42116a985125 100644 --- a/layout/svg/SVGGradientFrame.cpp +++ b/layout/svg/SVGGradientFrame.cpp @@ -11,6 +11,7 @@ // Keep others in (case-insensitive) order: #include "AutoReferenceChainGuard.h" #include "gfxPattern.h" +#include "gfxUtils.h" #include "mozilla/PresShell.h" #include "mozilla/SVGObserverUtils.h" #include "mozilla/SVGUtils.h" diff --git a/layout/tables/nsTableWrapperFrame.cpp b/layout/tables/nsTableWrapperFrame.cpp index c8d0561567cd..abc473a06934 100644 --- a/layout/tables/nsTableWrapperFrame.cpp +++ b/layout/tables/nsTableWrapperFrame.cpp @@ -340,7 +340,7 @@ nscoord nsTableWrapperFrame::GetPrefISize(gfxContext* aRenderingContext) { maxISize += capMin; } break; default: { - nsLayoutUtils::IntrinsicISizeType iwt; + IntrinsicISizeType iwt; if (captionSide == NS_STYLE_CAPTION_SIDE_TOP || captionSide == NS_STYLE_CAPTION_SIDE_BOTTOM) { // Don't let the caption's pref isize expand the table's pref diff --git a/layout/xul/nsBox.cpp b/layout/xul/nsBox.cpp index 1371f74f0b42..cd36a2dea8d9 100644 --- a/layout/xul/nsBox.cpp +++ b/layout/xul/nsBox.cpp @@ -19,6 +19,7 @@ #include "nsGkAtoms.h" #include "nsITheme.h" #include "nsBoxLayout.h" +#include "nsLayoutUtils.h" #include "FrameLayerBuilder.h" #include "mozilla/dom/Attr.h" #include "mozilla/dom/Element.h"