Backed out 5 changesets (bug 1554499) for frequent crashes, at least on OS X (bug 1594381). a=backout

Backed out changeset 3a49bec95338 (bug 1554499)
Backed out changeset c802ab8cc730 (bug 1554499)
Backed out changeset f60fee484460 (bug 1554499)
Backed out changeset a49d1c9e8b14 (bug 1554499)
Backed out changeset 133cddb65f59 (bug 1554499)
This commit is contained in:
Sebastian Hengst 2019-11-06 14:29:12 +01:00
Родитель d061ba55ac
Коммит 80da66f898
9 изменённых файлов: 128 добавлений и 378 удалений

Просмотреть файл

@ -192,17 +192,8 @@ class WebRenderCommandBuilder final {
frame->AddProperty(WebRenderUserDataProperty::Key(), userDataTable);
}
// TODO (miko): This is a slight hack. For OMTA, WebRenderAnimationData
// needs to be accessible with just (frame, display item type) -key,
// so a more specific per frame key cannot be used.
const uint32_t key =
T::Type() == WebRenderUserData::UserDataType::eAnimation
? static_cast<uint32_t>(aItem->GetType())
: aItem->GetPerFrameKey();
RefPtr<WebRenderUserData>& data =
userDataTable->GetOrInsert(WebRenderUserDataKey(key, T::Type()));
RefPtr<WebRenderUserData>& data = userDataTable->GetOrInsert(
WebRenderUserDataKey(aItem->GetPerFrameKey(), T::Type()));
if (!data) {
data = new T(GetRenderRootStateManager(aRenderRoot), aItem);
mWebRenderUserDatas.PutEntry(data);

Просмотреть файл

@ -338,8 +338,7 @@ WebRenderImageData* WebRenderFallbackData::PaintIntoImage() {
WebRenderAnimationData::WebRenderAnimationData(RenderRootStateManager* aManager,
nsDisplayItem* aItem)
: WebRenderUserData(aManager, static_cast<uint32_t>(aItem->GetType()),
aItem->Frame()) {}
: WebRenderUserData(aManager, aItem) {}
WebRenderAnimationData::~WebRenderAnimationData() {
// It may be the case that nsDisplayItem that created this WebRenderUserData

Просмотреть файл

@ -157,20 +157,10 @@ class nsDisplayTextOverflowMarker final : public nsPaintedDisplayItem {
: nsPaintedDisplayItem(aBuilder, aFrame),
mRect(aRect),
mStyle(aStyle),
mAscent(aAscent) {
mAscent(aAscent),
mIndex((aLineNumber << 1) + aIndex) {
MOZ_COUNT_CTOR(nsDisplayTextOverflowMarker);
}
// Should have the same argument signature as the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, const nsRect& aRect,
nscoord aAscent,
const StyleTextOverflowSide& aStyle,
uint32_t aLineNumber,
uint16_t aIndex) {
return (aLineNumber << 1) + aIndex;
}
#ifdef NS_BUILD_REFCNT_LOGGING
virtual ~nsDisplayTextOverflowMarker() {
MOZ_COUNT_DTOR(nsDisplayTextOverflowMarker);
@ -199,6 +189,8 @@ class nsDisplayTextOverflowMarker final : public nsPaintedDisplayItem {
virtual void Paint(nsDisplayListBuilder* aBuilder, gfxContext* aCtx) override;
virtual uint16_t CalculatePerFrameKey() const override { return mIndex; }
void PaintTextToContext(gfxContext* aCtx, nsPoint aOffsetFromRect);
virtual bool CreateWebRenderCommands(
@ -213,6 +205,7 @@ class nsDisplayTextOverflowMarker final : public nsPaintedDisplayItem {
nsRect mRect; // in reference frame coordinates
const StyleTextOverflowSide mStyle;
nscoord mAscent; // baseline for the marker text in mRect
uint16_t mIndex;
};
static void PaintTextShadowCallback(gfxContext* aCtx, nsPoint aShadowOffset,

Просмотреть файл

@ -1720,17 +1720,10 @@ class nsDisplayMathMLCharForeground final : public nsPaintedDisplayItem {
uint16_t aIndex, bool aIsSelected)
: nsPaintedDisplayItem(aBuilder, aFrame),
mChar(aChar),
mIndex(aIndex),
mIsSelected(aIsSelected) {
MOZ_COUNT_CTOR(nsDisplayMathMLCharForeground);
}
// Should have the same argument signature as the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, nsMathMLChar* aChar,
uint16_t aIndex, bool aIsSelected) {
return aIndex;
}
#ifdef NS_BUILD_REFCNT_LOGGING
virtual ~nsDisplayMathMLCharForeground() {
MOZ_COUNT_DTOR(nsDisplayMathMLCharForeground);
@ -1765,8 +1758,11 @@ class nsDisplayMathMLCharForeground final : public nsPaintedDisplayItem {
return GetBounds(aBuilder, &snap);
}
virtual uint16_t CalculatePerFrameKey() const override { return mIndex; }
private:
nsMathMLChar* mChar;
uint16_t mIndex;
bool mIsSelected;
};

Просмотреть файл

@ -304,25 +304,20 @@ class nsDisplayMathMLBar final : public nsPaintedDisplayItem {
public:
nsDisplayMathMLBar(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
const nsRect& aRect, uint16_t aIndex)
: nsPaintedDisplayItem(aBuilder, aFrame), mRect(aRect) {
: nsPaintedDisplayItem(aBuilder, aFrame), mRect(aRect), mIndex(aIndex) {
MOZ_COUNT_CTOR(nsDisplayMathMLBar);
}
// Should have the same argument signature as the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, const nsRect& aRect,
uint16_t aIndex) {
return aIndex;
}
#ifdef NS_BUILD_REFCNT_LOGGING
virtual ~nsDisplayMathMLBar() { MOZ_COUNT_DTOR(nsDisplayMathMLBar); }
#endif
virtual uint16_t CalculatePerFrameKey() const override { return mIndex; }
virtual void Paint(nsDisplayListBuilder* aBuilder, gfxContext* aCtx) override;
NS_DISPLAY_DECL_NAME("MathMLBar", TYPE_MATHML_BAR)
private:
nsRect mRect;
uint16_t mIndex;
};
void nsDisplayMathMLBar::Paint(nsDisplayListBuilder* aBuilder,

Просмотреть файл

@ -717,19 +717,12 @@ class nsDisplayNotation final : public nsPaintedDisplayItem {
mType(aType) {
MOZ_COUNT_CTOR(nsDisplayNotation);
}
// Should have the same argument signature as the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, const nsRect& aRect,
nscoord aThickness,
nsMencloseNotation aType) {
return aType;
}
#ifdef NS_BUILD_REFCNT_LOGGING
virtual ~nsDisplayNotation() { MOZ_COUNT_DTOR(nsDisplayNotation); }
#endif
virtual uint16_t CalculatePerFrameKey() const override { return mType; }
virtual void Paint(nsDisplayListBuilder* aBuilder, gfxContext* aCtx) override;
NS_DISPLAY_DECL_NAME("MathMLMencloseNotation", TYPE_MATHML_MENCLOSE_NOTATION)

Просмотреть файл

@ -4112,13 +4112,6 @@ nsDisplayBackgroundImage::nsDisplayBackgroundImage(
}
}
// Should have an identical argument signature to the above ctor
uint16_t nsDisplayBackgroundImage::CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, const InitData& aInitData,
nsIFrame* aFrameForBounds) {
return aInitData.layer;
}
nsDisplayBackgroundImage::~nsDisplayBackgroundImage() {
#ifdef NS_BUILD_REFCNT_LOGGING
MOZ_COUNT_DTOR(nsDisplayBackgroundImage);
@ -4922,20 +4915,13 @@ nsDisplayTableBackgroundImage::nsDisplayTableBackgroundImage(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, const InitData& aData,
nsIFrame* aCellFrame)
: nsDisplayBackgroundImage(aBuilder, aFrame, aData, aCellFrame),
mStyleFrame(aCellFrame) {
mStyleFrame(aCellFrame),
mTableType(GetTableTypeFromFrame(mStyleFrame)) {
if (aBuilder->IsRetainingDisplayList()) {
mStyleFrame->AddDisplayItem(this);
}
}
// Should have an identical argument signature to the above ctor
uint16_t nsDisplayTableBackgroundImage::CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, const InitData& aData,
nsIFrame* aCellFrame) {
return CalculateTablePerFrameKey(aData.layer,
GetTableTypeFromFrame(aCellFrame));
}
nsDisplayTableBackgroundImage::~nsDisplayTableBackgroundImage() {
if (mStyleFrame) {
mStyleFrame->RemoveDisplayItem(this);
@ -5528,6 +5514,7 @@ nsDisplayCompositorHitTestInfo::nsDisplayCompositorHitTestInfo(
const mozilla::gfx::CompositorHitTestInfo& aHitTestFlags, uint16_t aIndex,
const mozilla::Maybe<nsRect>& aArea)
: nsDisplayHitTestInfoItem(aBuilder, aFrame),
mIndex(aIndex),
mAppUnitsPerDevPixel(mFrame->PresContext()->AppUnitsPerDevPixel()) {
MOZ_COUNT_CTOR(nsDisplayCompositorHitTestInfo);
// We should never even create this display item if we're not building
@ -5543,31 +5530,17 @@ nsDisplayCompositorHitTestInfo::nsDisplayCompositorHitTestInfo(
InitializeScrollTarget(aBuilder);
}
// Should have the same argument signature as the above ctor
uint16_t nsDisplayCompositorHitTestInfo::CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
const mozilla::gfx::CompositorHitTestInfo& aHitTestFlags, uint16_t aIndex,
const mozilla::Maybe<nsRect>& aArea) {
return aIndex;
}
nsDisplayCompositorHitTestInfo::nsDisplayCompositorHitTestInfo(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
mozilla::UniquePtr<HitTestInfo>&& aHitTestInfo)
: nsDisplayHitTestInfoItem(aBuilder, aFrame),
mIndex(0),
mAppUnitsPerDevPixel(mFrame->PresContext()->AppUnitsPerDevPixel()) {
MOZ_COUNT_CTOR(nsDisplayCompositorHitTestInfo);
SetHitTestInfo(std::move(aHitTestInfo));
InitializeScrollTarget(aBuilder);
}
// Should have the same argument signature as the above ctor
uint16_t nsDisplayCompositorHitTestInfo::CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
mozilla::UniquePtr<HitTestInfo>&& aHitTestInfo) {
return 0;
}
void nsDisplayCompositorHitTestInfo::InitializeScrollTarget(
nsDisplayListBuilder* aBuilder) {
if (aBuilder->GetCurrentScrollbarDirection().isSome()) {
@ -5622,6 +5595,10 @@ bool nsDisplayCompositorHitTestInfo::CreateWebRenderCommands(
return true;
}
uint16_t nsDisplayCompositorHitTestInfo::CalculatePerFrameKey() const {
return mIndex;
}
int32_t nsDisplayCompositorHitTestInfo::ZIndex() const {
return mOverrideZIndex ? *mOverrideZIndex
: nsDisplayHitTestInfoItem::ZIndex();
@ -6159,6 +6136,7 @@ nsDisplayWrapList::nsDisplayWrapList(
: nsDisplayHitTestInfoItem(aBuilder, aFrame, aActiveScrolledRoot),
mFrameActiveScrolledRoot(aBuilder->CurrentActiveScrolledRoot()),
mOverrideZIndex(0),
mIndex(aIndex),
mHasZIndexOverride(false),
mClearingClipChain(aClearClipChain) {
MOZ_COUNT_CTOR(nsDisplayWrapList);
@ -6202,6 +6180,7 @@ nsDisplayWrapList::nsDisplayWrapList(nsDisplayListBuilder* aBuilder,
: nsDisplayHitTestInfoItem(aBuilder, aFrame,
aBuilder->CurrentActiveScrolledRoot()),
mOverrideZIndex(0),
mIndex(0),
mHasZIndexOverride(false) {
MOZ_COUNT_CTOR(nsDisplayWrapList);
@ -6759,7 +6738,7 @@ nsDisplayBlendMode::nsDisplayBlendMode(
uint16_t aIndex)
: nsDisplayWrapList(aBuilder, aFrame, aList, aActiveScrolledRoot, true),
mBlendMode(aBlendMode),
mIsBackgroundBlendMode(aIndex != 0) {
mIndex(aIndex) {
MOZ_COUNT_CTOR(nsDisplayBlendMode);
}
@ -6841,7 +6820,7 @@ bool nsDisplayBlendMode::CanMerge(const nsDisplayItem* aItem) const {
const nsDisplayBlendMode* item =
static_cast<const nsDisplayBlendMode*>(aItem);
if (item->mIsBackgroundBlendMode || mIsBackgroundBlendMode) {
if (item->mIndex != 0 || mIndex != 0) {
// Don't merge background-blend-mode items
return false;
}
@ -6935,7 +6914,8 @@ nsDisplayOwnLayer::nsDisplayOwnLayer(
mFlags(aFlags),
mScrollbarData(aScrollbarData),
mForceActive(aForceActive),
mWrAnimationId(0) {
mWrAnimationId(0),
mIndex(aIndex) {
MOZ_COUNT_CTOR(nsDisplayOwnLayer);
// For scroll thumb layers, override the AGR to be the thumb's AGR rather
@ -7395,6 +7375,7 @@ nsDisplayFixedPosition::nsDisplayFixedPosition(
const ActiveScrolledRoot* aContainerASR)
: nsDisplayOwnLayer(aBuilder, aFrame, aList, aActiveScrolledRoot),
mContainerASR(aContainerASR),
mIndex(0),
mIsFixedBackground(false) {
MOZ_COUNT_CTOR(nsDisplayFixedPosition);
Init(aBuilder);
@ -7407,6 +7388,7 @@ nsDisplayFixedPosition::nsDisplayFixedPosition(nsDisplayListBuilder* aBuilder,
: nsDisplayOwnLayer(aBuilder, aFrame, aList,
aBuilder->CurrentActiveScrolledRoot()),
mContainerASR(nullptr), // XXX maybe this should be something?
mIndex(aIndex),
mIsFixedBackground(true) {
MOZ_COUNT_CTOR(nsDisplayFixedPosition);
Init(aBuilder);
@ -7542,7 +7524,8 @@ nsDisplayTableFixedPosition::nsDisplayTableFixedPosition(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, nsDisplayList* aList,
uint16_t aIndex, nsIFrame* aAncestorFrame)
: nsDisplayFixedPosition(aBuilder, aFrame, aList, aIndex),
mAncestorFrame(aAncestorFrame) {
mAncestorFrame(aAncestorFrame),
mTableType(GetTableTypeFromFrame(aAncestorFrame)) {
if (aBuilder->IsRetainingDisplayList()) {
mAncestorFrame->AddDisplayItem(this);
}
@ -8024,6 +8007,7 @@ nsDisplayTransform::nsDisplayTransform(nsDisplayListBuilder* aBuilder,
mAnimatedGeometryRootForChildren(mAnimatedGeometryRoot),
mAnimatedGeometryRootForScrollMetadata(mAnimatedGeometryRoot),
mChildrenBuildingRect(aChildrenBuildingRect),
mIndex(aIndex),
mIsTransformSeparator(true),
mAllowAsyncAnimation(false) {
MOZ_COUNT_CTOR(nsDisplayTransform);
@ -8041,6 +8025,7 @@ nsDisplayTransform::nsDisplayTransform(nsDisplayListBuilder* aBuilder,
mAnimatedGeometryRootForChildren(mAnimatedGeometryRoot),
mAnimatedGeometryRootForScrollMetadata(mAnimatedGeometryRoot),
mChildrenBuildingRect(aChildrenBuildingRect),
mIndex(aIndex),
mIsTransformSeparator(false),
mAllowAsyncAnimation(aAllowAsyncAnimation) {
MOZ_COUNT_CTOR(nsDisplayTransform);
@ -8058,6 +8043,7 @@ nsDisplayTransform::nsDisplayTransform(
mAnimatedGeometryRootForChildren(mAnimatedGeometryRoot),
mAnimatedGeometryRootForScrollMetadata(mAnimatedGeometryRoot),
mChildrenBuildingRect(aChildrenBuildingRect),
mIndex(aIndex),
mIsTransformSeparator(false),
mAllowAsyncAnimation(false) {
MOZ_COUNT_CTOR(nsDisplayTransform);

Просмотреть файл

@ -2070,10 +2070,9 @@ class RetainedDisplayList;
template <typename T>
MOZ_ALWAYS_INLINE T* MakeClone(nsDisplayListBuilder* aBuilder, const T* aItem) {
uint16_t key = aItem->GetPerFrameIndex();
T* item = new (aBuilder) T(aBuilder, *aItem);
item->SetType(T::ItemType());
item->SetPerFrameIndex(key);
item->SetPerFrameKey(item->CalculatePerFrameKey());
return item;
}
@ -2104,15 +2103,13 @@ MOZ_ALWAYS_INLINE T* MakeDisplayItem(nsDisplayListBuilder* aBuilder, F* aFrame,
return nullptr;
}
uint16_t key =
T::CalculatePerFrameIndex(aBuilder, aFrame, std::forward<Args>(aArgs)...);
T* item = new (aBuilder) T(aBuilder, aFrame, std::forward<Args>(aArgs)...);
if (type != DisplayItemType::TYPE_GENERIC) {
item->SetType(type);
}
item->SetPerFrameIndex(key);
item->SetPerFrameKey(item->CalculatePerFrameKey());
item->SetExtraPageForPageNum(aBuilder->GetBuildingExtraPagesForPageNum());
nsPaintedDisplayItem* paintedItem = item->AsPaintedDisplayItem();
@ -2279,25 +2276,9 @@ class nsDisplayItemBase : public nsDisplayItemLink {
}
/**
* Gets the core component of the PerFrameKey without mixing it.
* (This is only used by MakeClone, everyone else should use GetPerFrameKey.)
* Returns the initial per frame key for this display item.
*/
uint16_t GetPerFrameIndex() const { return mKey; }
/**
* Returns the per-frame-key that this display item wants to have for the
* given constructor arguments. If the display item doesn't provide an impl of
* CalculatePerFrameIndex, then this implementation that just returns 0 will
* be used.
*
* This is computed independently of the actual ctor so that we can identify
* if we've already allocated an instance of this display item which we can
* reuse. (not yet implemented)
*/
template <typename... Args>
static uint16_t CalculatePerFrameIndex(Args&&... aArgs) {
return 0;
}
virtual uint16_t CalculatePerFrameKey() const { return 0; }
/**
* Returns true if this item was reused during display list merging.
@ -2410,7 +2391,7 @@ class nsDisplayItemBase : public nsDisplayItemLink {
}
void SetType(const DisplayItemType aType) { mType = aType; }
void SetPerFrameIndex(const uint16_t aKey) { mKey = aKey; }
void SetPerFrameKey(const uint16_t aKey) { mKey = aKey; }
// Display list building for printing can build duplicate
// container display items when they contain a mixture of
@ -4404,7 +4385,9 @@ class nsDisplaySolidColor : public nsDisplaySolidColorBase {
nsDisplaySolidColor(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
const nsRect& aBounds, nscolor aColor,
uint16_t aIndex = 0, bool aCanBeReused = true)
: nsDisplaySolidColorBase(aBuilder, aFrame, aColor), mBounds(aBounds) {
: nsDisplaySolidColorBase(aBuilder, aFrame, aColor),
mBounds(aBounds),
mIndex(aIndex) {
NS_ASSERTION(NS_GET_A(aColor) > 0,
"Don't create invisible nsDisplaySolidColors!");
MOZ_COUNT_CTOR(nsDisplaySolidColor);
@ -4413,21 +4396,6 @@ class nsDisplaySolidColor : public nsDisplaySolidColorBase {
}
}
/**
* If we have multiple SolidColor items in a single frame's
* display list, aIndex should be used as their unique
* identifier. Note this mapping remains stable even if the
* dirty rect changes.
*/
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame,
const nsRect& aBounds, nscolor aColor,
uint16_t aIndex = 0,
bool aCanBeReused = true) {
return aIndex;
}
#ifdef NS_BUILD_REFCNT_LOGGING
~nsDisplaySolidColor() override { MOZ_COUNT_DTOR(nsDisplaySolidColor); }
#endif
@ -4460,10 +4428,18 @@ class nsDisplaySolidColor : public nsDisplaySolidColorBase {
void SetOverrideZIndex(int32_t aZIndex) {
mOverrideZIndex = mozilla::Some(aZIndex);
}
/**
* If we have multiple SolidColor items in a single frame's
* display list, mIndex should be used as their unique
* identifier. Note this mapping remains stable even if the
* dirty rect changes.
*/
uint16_t CalculatePerFrameKey() const override { return mIndex; }
private:
nsRect mBounds;
mozilla::Maybe<int32_t> mOverrideZIndex;
const uint16_t mIndex;
};
/**
@ -4562,13 +4538,6 @@ class nsDisplayBackgroundImage : public nsDisplayImageContainer {
explicit nsDisplayBackgroundImage(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, const InitData& aInitData,
nsIFrame* aFrameForBounds = nullptr);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame,
const InitData& aInitData,
nsIFrame* aFrameForBounds = nullptr);
~nsDisplayBackgroundImage() override;
NS_DISPLAY_DECL_NAME("Background", TYPE_BACKGROUND)
@ -4616,6 +4585,8 @@ class nsDisplayBackgroundImage : public nsDisplayImageContainer {
void Paint(nsDisplayListBuilder* aBuilder, gfxContext* aCtx) override;
uint16_t CalculatePerFrameKey() const override { return mLayer; }
/**
* Return the background positioning area.
* (GetBounds() returns the background painting area.)
@ -4760,17 +4731,14 @@ class nsDisplayTableBackgroundImage : public nsDisplayBackgroundImage {
nsDisplayTableBackgroundImage(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, const InitData& aInitData,
nsIFrame* aCellFrame);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame,
const InitData& aInitData,
nsIFrame* aCellFrame);
~nsDisplayTableBackgroundImage() override;
NS_DISPLAY_DECL_NAME("TableBackgroundImage", TYPE_TABLE_BACKGROUND_IMAGE)
uint16_t CalculatePerFrameKey() const override {
return CalculateTablePerFrameKey(mLayer, mTableType);
}
bool IsInvalid(nsRect& aRect) const override;
nsIFrame* FrameForInvalidation() const override { return mStyleFrame; }
@ -4787,6 +4755,7 @@ class nsDisplayTableBackgroundImage : public nsDisplayBackgroundImage {
nsIFrame* StyleFrame() const override { return mStyleFrame; }
nsIFrame* mStyleFrame;
TableType mTableType;
};
/**
@ -4879,20 +4848,13 @@ class nsDisplayTableThemedBackground : public nsDisplayThemedBackground {
const nsRect& aBackgroundRect,
nsIFrame* aAncestorFrame)
: nsDisplayThemedBackground(aBuilder, aFrame, aBackgroundRect),
mAncestorFrame(aAncestorFrame) {
mAncestorFrame(aAncestorFrame),
mTableType(GetTableTypeFromFrame(aAncestorFrame)) {
if (aBuilder->IsRetainingDisplayList()) {
mAncestorFrame->AddDisplayItem(this);
}
}
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame,
const nsRect& aBackgroundRect,
nsIFrame* aAncestorFrame) {
return static_cast<uint8_t>(GetTableTypeFromFrame(aAncestorFrame));
}
~nsDisplayTableThemedBackground() override {
if (mAncestorFrame) {
mAncestorFrame->RemoveDisplayItem(this);
@ -4902,6 +4864,10 @@ class nsDisplayTableThemedBackground : public nsDisplayThemedBackground {
NS_DISPLAY_DECL_NAME("TableThemedBackground",
TYPE_TABLE_THEMED_BACKGROUND_IMAGE)
uint16_t CalculatePerFrameKey() const override {
return static_cast<uint8_t>(mTableType);
}
nsIFrame* FrameForInvalidation() const override { return mAncestorFrame; }
void RemoveFrame(nsIFrame* aFrame) override {
@ -4915,6 +4881,7 @@ class nsDisplayTableThemedBackground : public nsDisplayThemedBackground {
protected:
nsIFrame* StyleFrame() const override { return mAncestorFrame; }
nsIFrame* mAncestorFrame;
TableType mTableType;
};
class nsDisplayBackgroundColor : public nsPaintedDisplayItem {
@ -5064,21 +5031,13 @@ class nsDisplayTableBackgroundColor : public nsDisplayBackgroundColor {
const nscolor& aColor, nsIFrame* aAncestorFrame)
: nsDisplayBackgroundColor(aBuilder, aFrame, aBackgroundRect,
aBackgroundStyle, aColor),
mAncestorFrame(aAncestorFrame) {
mAncestorFrame(aAncestorFrame),
mTableType(GetTableTypeFromFrame(aAncestorFrame)) {
if (aBuilder->IsRetainingDisplayList()) {
mAncestorFrame->AddDisplayItem(this);
}
}
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
const nsRect& aBackgroundRect,
const mozilla::ComputedStyle* aBackgroundStyle, const nscolor& aColor,
nsIFrame* aAncestorFrame) {
return static_cast<uint8_t>(GetTableTypeFromFrame(aAncestorFrame));
}
~nsDisplayTableBackgroundColor() override {
if (mAncestorFrame) {
mAncestorFrame->RemoveDisplayItem(this);
@ -5097,12 +5056,17 @@ class nsDisplayTableBackgroundColor : public nsDisplayBackgroundColor {
nsDisplayBackgroundColor::RemoveFrame(aFrame);
}
uint16_t CalculatePerFrameKey() const override {
return static_cast<uint8_t>(mTableType);
}
bool CanUseAsyncAnimations(nsDisplayListBuilder* aBuilder) override {
return false;
}
protected:
nsIFrame* mAncestorFrame;
TableType mTableType;
};
/**
@ -5299,22 +5263,10 @@ class nsDisplayCompositorHitTestInfo : public nsDisplayHitTestInfoItem {
uint16_t aIndex = 0,
const mozilla::Maybe<nsRect>& aArea = mozilla::Nothing());
// Should have the same argument signature as the above ctor
static uint16_t CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
const mozilla::gfx::CompositorHitTestInfo& aHitTestFlags,
uint16_t aIndex = 0,
const mozilla::Maybe<nsRect>& aArea = mozilla::Nothing());
nsDisplayCompositorHitTestInfo(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
mozilla::UniquePtr<HitTestInfo>&& aHitTestInfo);
// Should have the same argument signature as the above ctor
static uint16_t CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
mozilla::UniquePtr<HitTestInfo>&& aHitTestInfo);
#ifdef NS_BUILD_REFCNT_LOGGING
~nsDisplayCompositorHitTestInfo() override {
MOZ_COUNT_DTOR(nsDisplayCompositorHitTestInfo);
@ -5331,7 +5283,7 @@ class nsDisplayCompositorHitTestInfo : public nsDisplayHitTestInfoItem {
const StackingContextHelper& aSc,
mozilla::layers::RenderRootStateManager* aManager,
nsDisplayListBuilder* aDisplayListBuilder) override;
uint16_t CalculatePerFrameKey() const override;
int32_t ZIndex() const override;
void SetOverrideZIndex(int32_t aZIndex);
@ -5353,6 +5305,7 @@ class nsDisplayCompositorHitTestInfo : public nsDisplayHitTestInfoItem {
private:
mozilla::Maybe<mozilla::layers::ScrollableLayerGuid::ViewID> mScrollTarget;
uint16_t mIndex;
mozilla::Maybe<int32_t> mOverrideZIndex;
int32_t mAppUnitsPerDevPixel;
};
@ -5379,52 +5332,25 @@ class nsDisplayWrapList : public nsDisplayHitTestInfoItem {
nsDisplayWrapList(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
nsDisplayList* aList);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame,
nsDisplayList* aList) {
return 0;
}
nsDisplayWrapList(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
nsDisplayItem* aItem);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame,
nsDisplayItem* aItem) {
return 0;
}
nsDisplayWrapList(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
nsDisplayList* aList,
const ActiveScrolledRoot* aActiveScrolledRoot,
bool aClearClipChain = false, uint16_t aIndex = 0);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, nsDisplayList* aList,
const ActiveScrolledRoot* aActiveScrolledRoot,
bool aClearClipChain = false, uint16_t aIndex = 0) {
return aIndex;
}
nsDisplayWrapList(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame)
: nsDisplayHitTestInfoItem(aBuilder, aFrame),
mFrameActiveScrolledRoot(aBuilder->CurrentActiveScrolledRoot()),
mOverrideZIndex(0),
mIndex(0),
mHasZIndexOverride(false) {
MOZ_COUNT_CTOR(nsDisplayWrapList);
mBaseBuildingRect = GetBuildingRect();
mListPtr = &mList;
}
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame) {
return 0;
}
nsDisplayWrapList() = delete;
/**
@ -5441,6 +5367,7 @@ class nsDisplayWrapList : public nsDisplayHitTestInfoItem {
mBounds(aOther.mBounds),
mBaseBuildingRect(aOther.mBaseBuildingRect),
mOverrideZIndex(aOther.mOverrideZIndex),
mIndex(aOther.mIndex),
mHasZIndexOverride(aOther.mHasZIndexOverride),
mClearingClipChain(aOther.mClearingClipChain) {
MOZ_COUNT_CTOR(nsDisplayWrapList);
@ -5514,6 +5441,8 @@ class nsDisplayWrapList : public nsDisplayHitTestInfoItem {
bool ComputeVisibility(nsDisplayListBuilder* aBuilder,
nsRegion* aVisibleRegion) override;
uint16_t CalculatePerFrameKey() const override { return mIndex; }
/**
* Checks if the given display item can be merged with this item.
* @return true if the merging is possible, otherwise false.
@ -5634,6 +5563,7 @@ class nsDisplayWrapList : public nsDisplayHitTestInfoItem {
// Our mBuildingRect may include the visible areas of children.
nsRect mBaseBuildingRect;
int32_t mOverrideZIndex;
uint16_t mIndex;
bool mHasZIndexOverride;
bool mClearingClipChain = false;
@ -5811,20 +5741,11 @@ class nsDisplayBlendMode : public nsDisplayWrapList {
nsDisplayList* aList, uint8_t aBlendMode,
const ActiveScrolledRoot* aActiveScrolledRoot,
uint16_t aIndex = 0);
// Should have the same argument signature as the above ctor
static uint16_t CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, nsDisplayList* aList,
uint8_t aBlendMode, const ActiveScrolledRoot* aActiveScrolledRoot,
uint16_t aIndex = 0) {
return aIndex;
}
nsDisplayBlendMode(nsDisplayListBuilder* aBuilder,
const nsDisplayBlendMode& aOther)
: nsDisplayWrapList(aBuilder, aOther),
mBlendMode(aOther.mBlendMode),
mIsBackgroundBlendMode(aOther.mIsBackgroundBlendMode) {
mIndex(aOther.mIndex) {
MOZ_COUNT_CTOR(nsDisplayBlendMode);
}
@ -5846,6 +5767,8 @@ class nsDisplayBlendMode : public nsDisplayWrapList {
// LayerTreeInvalidation
}
uint16_t CalculatePerFrameKey() const override { return mIndex; }
LayerState GetLayerState(
nsDisplayListBuilder* aBuilder, LayerManager* aManager,
const ContainerLayerParameters& aParameters) override;
@ -5868,7 +5791,7 @@ class nsDisplayBlendMode : public nsDisplayWrapList {
protected:
uint8_t mBlendMode;
bool mIsBackgroundBlendMode;
uint16_t mIndex;
private:
NS_DISPLAY_ALLOW_CLONING()
@ -5882,25 +5805,18 @@ class nsDisplayTableBlendMode : public nsDisplayBlendMode {
uint16_t aIndex, nsIFrame* aAncestorFrame)
: nsDisplayBlendMode(aBuilder, aFrame, aList, aBlendMode,
aActiveScrolledRoot, aIndex),
mAncestorFrame(aAncestorFrame) {
mAncestorFrame(aAncestorFrame),
mTableType(GetTableTypeFromFrame(aAncestorFrame)) {
if (aBuilder->IsRetainingDisplayList()) {
mAncestorFrame->AddDisplayItem(this);
}
}
// Should have the same argument signature as the above ctor
static uint16_t CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, nsDisplayList* aList,
uint8_t aBlendMode, const ActiveScrolledRoot* aActiveScrolledRoot,
uint16_t aIndex, nsIFrame* aAncestorFrame) {
return CalculateTablePerFrameKey(aIndex,
GetTableTypeFromFrame(aAncestorFrame));
}
nsDisplayTableBlendMode(nsDisplayListBuilder* aBuilder,
const nsDisplayTableBlendMode& aOther)
: nsDisplayBlendMode(aBuilder, aOther),
mAncestorFrame(aOther.mAncestorFrame) {
mAncestorFrame(aOther.mAncestorFrame),
mTableType(aOther.mTableType) {
if (aBuilder->IsRetainingDisplayList()) {
mAncestorFrame->AddDisplayItem(this);
}
@ -5924,8 +5840,13 @@ class nsDisplayTableBlendMode : public nsDisplayBlendMode {
nsDisplayBlendMode::RemoveFrame(aFrame);
}
uint16_t CalculatePerFrameKey() const override {
return CalculateTablePerFrameKey(mIndex, mTableType);
}
protected:
nsIFrame* mAncestorFrame;
TableType mTableType;
private:
NS_DISPLAY_ALLOW_CLONING()
@ -5976,19 +5897,15 @@ class nsDisplayBlendContainer : public nsDisplayWrapList {
return false;
}
uint16_t CalculatePerFrameKey() const override {
return mIsForBackground ? 1 : 0;
}
protected:
nsDisplayBlendContainer(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
nsDisplayList* aList,
const ActiveScrolledRoot* aActiveScrolledRoot,
bool aIsForBackground);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, nsDisplayList* aList,
const ActiveScrolledRoot* aActiveScrolledRoot, bool aIsForBackground) {
return aIsForBackground ? 1 : 0;
}
nsDisplayBlendContainer(nsDisplayListBuilder* aBuilder,
const nsDisplayBlendContainer& aOther)
: nsDisplayWrapList(aBuilder, aOther),
@ -6022,6 +5939,10 @@ class nsDisplayTableBlendContainer : public nsDisplayBlendContainer {
nsDisplayBlendContainer::RemoveFrame(aFrame);
}
uint16_t CalculatePerFrameKey() const override {
return static_cast<uint8_t>(mTableType);
}
protected:
nsDisplayTableBlendContainer(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
nsDisplayList* aList,
@ -6029,24 +5950,18 @@ class nsDisplayTableBlendContainer : public nsDisplayBlendContainer {
bool aIsForBackground, nsIFrame* aAncestorFrame)
: nsDisplayBlendContainer(aBuilder, aFrame, aList, aActiveScrolledRoot,
aIsForBackground),
mAncestorFrame(aAncestorFrame) {
mAncestorFrame(aAncestorFrame),
mTableType(GetTableTypeFromFrame(aAncestorFrame)) {
if (aBuilder->IsRetainingDisplayList()) {
mAncestorFrame->AddDisplayItem(this);
}
}
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, nsDisplayList* aList,
const ActiveScrolledRoot* aActiveScrolledRoot, bool aIsForBackground,
nsIFrame* aAncestorFrame) {
return static_cast<uint8_t>(GetTableTypeFromFrame(aAncestorFrame));
}
nsDisplayTableBlendContainer(nsDisplayListBuilder* aBuilder,
const nsDisplayTableBlendContainer& aOther)
: nsDisplayBlendContainer(aBuilder, aOther),
mAncestorFrame(aOther.mAncestorFrame) {}
mAncestorFrame(aOther.mAncestorFrame),
mTableType(aOther.mTableType) {}
~nsDisplayTableBlendContainer() override {
if (mAncestorFrame) {
@ -6055,6 +5970,7 @@ class nsDisplayTableBlendContainer : public nsDisplayBlendContainer {
}
nsIFrame* mAncestorFrame;
TableType mTableType;
private:
NS_DISPLAY_ALLOW_CLONING()
@ -6110,24 +6026,14 @@ class nsDisplayOwnLayer : public nsDisplayWrapList {
bool aForceActive = true, bool aClearClipChain = false,
uint16_t aIndex = 0);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, nsDisplayList* aList,
const ActiveScrolledRoot* aActiveScrolledRoot,
nsDisplayOwnLayerFlags aFlags = nsDisplayOwnLayerFlags::None,
const ScrollbarData& aScrollbarData = ScrollbarData{},
bool aForceActive = true, bool aClearClipChain = false,
uint16_t aIndex = 0) {
return aIndex;
}
nsDisplayOwnLayer(nsDisplayListBuilder* aBuilder,
const nsDisplayOwnLayer& aOther)
: nsDisplayWrapList(aBuilder, aOther),
mFlags(aOther.mFlags),
mScrollbarData(aOther.mScrollbarData),
mForceActive(aOther.mForceActive),
mWrAnimationId(aOther.mWrAnimationId) {
mWrAnimationId(aOther.mWrAnimationId),
mIndex(aOther.mIndex) {
MOZ_COUNT_CTOR(nsDisplayOwnLayer);
}
@ -6158,6 +6064,8 @@ class nsDisplayOwnLayer : public nsDisplayWrapList {
return false;
}
uint16_t CalculatePerFrameKey() const override { return mIndex; }
bool ShouldFlattenAway(nsDisplayListBuilder* aBuilder) override {
return false;
}
@ -6181,6 +6089,7 @@ class nsDisplayOwnLayer : public nsDisplayWrapList {
ScrollbarData mScrollbarData;
bool mForceActive;
uint64_t mWrAnimationId;
uint16_t mIndex;
};
class nsDisplayRenderRoot : public nsDisplayWrapList {
@ -6189,14 +6098,6 @@ class nsDisplayRenderRoot : public nsDisplayWrapList {
const ActiveScrolledRoot* aActiveScrolledRoot,
mozilla::wr::RenderRoot aRenderRoot);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, nsDisplayList* aList,
const ActiveScrolledRoot* aActiveScrolledRoot,
mozilla::wr::RenderRoot aRenderRoot) {
return 0;
}
#ifdef NS_BUILD_REFCNT_LOGGING
~nsDisplayRenderRoot() override { MOZ_COUNT_DTOR(nsDisplayRenderRoot); }
#endif
@ -6240,16 +6141,6 @@ class nsDisplaySubDocument : public nsDisplayOwnLayer {
nsDisplaySubDocument(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
nsSubDocumentFrame* aSubDocFrame, nsDisplayList* aList,
nsDisplayOwnLayerFlags aFlags);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame,
nsSubDocumentFrame* aSubDocFrame,
nsDisplayList* aList,
nsDisplayOwnLayerFlags aFlags) {
return 0;
}
~nsDisplaySubDocument() override;
NS_DISPLAY_DECL_NAME("SubDocument", TYPE_SUBDOCUMENT)
@ -6330,15 +6221,6 @@ class nsDisplayStickyPosition : public nsDisplayOwnLayer {
nsDisplayList* aList,
const ActiveScrolledRoot* aActiveScrolledRoot,
const ActiveScrolledRoot* aContainerASR);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, nsDisplayList* aList,
const ActiveScrolledRoot* aActiveScrolledRoot,
const ActiveScrolledRoot* aContainerASR) {
return 0;
}
nsDisplayStickyPosition(nsDisplayListBuilder* aBuilder,
const nsDisplayStickyPosition& aOther)
: nsDisplayOwnLayer(aBuilder, aOther),
@ -6389,21 +6271,13 @@ class nsDisplayFixedPosition : public nsDisplayOwnLayer {
nsDisplayList* aList,
const ActiveScrolledRoot* aActiveScrolledRoot,
const ActiveScrolledRoot* aContainerASR);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, nsDisplayList* aList,
const ActiveScrolledRoot* aActiveScrolledRoot,
const ActiveScrolledRoot* aContainerASR) {
return 0;
}
nsDisplayFixedPosition(nsDisplayListBuilder* aBuilder,
const nsDisplayFixedPosition& aOther)
: nsDisplayOwnLayer(aBuilder, aOther),
mAnimatedGeometryRootForScrollMetadata(
aOther.mAnimatedGeometryRootForScrollMetadata),
mContainerASR(aOther.mContainerASR),
mIndex(aOther.mIndex),
mIsFixedBackground(aOther.mIsFixedBackground) {
MOZ_COUNT_CTOR(nsDisplayFixedPosition);
}
@ -6432,6 +6306,8 @@ class nsDisplayFixedPosition : public nsDisplayOwnLayer {
return mIsFixedBackground;
}
uint16_t CalculatePerFrameKey() const override { return mIndex; }
AnimatedGeometryRoot* AnimatedGeometryRootForScrollMetadata() const override {
return mAnimatedGeometryRootForScrollMetadata;
}
@ -6451,19 +6327,12 @@ class nsDisplayFixedPosition : public nsDisplayOwnLayer {
// For background-attachment:fixed
nsDisplayFixedPosition(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
nsDisplayList* aList, uint16_t aIndex);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, nsDisplayList* aList,
uint16_t aIndex) {
return aIndex;
}
void Init(nsDisplayListBuilder* aBuilder);
ViewID GetScrollTargetId();
RefPtr<AnimatedGeometryRoot> mAnimatedGeometryRootForScrollMetadata;
RefPtr<const ActiveScrolledRoot> mContainerASR;
uint16_t mIndex;
bool mIsFixedBackground;
private:
@ -6489,24 +6358,20 @@ class nsDisplayTableFixedPosition : public nsDisplayFixedPosition {
nsDisplayFixedPosition::RemoveFrame(aFrame);
}
uint16_t CalculatePerFrameKey() const override {
return CalculateTablePerFrameKey(mIndex, mTableType);
}
protected:
nsDisplayTableFixedPosition(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
nsDisplayList* aList, uint16_t aIndex,
nsIFrame* aAncestorFrame);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, nsDisplayList* aList,
uint16_t aIndex,
nsIFrame* aAncestorFrame) {
return CalculateTablePerFrameKey(aIndex,
GetTableTypeFromFrame(aAncestorFrame));
}
nsDisplayTableFixedPosition(nsDisplayListBuilder* aBuilder,
const nsDisplayTableFixedPosition& aOther)
: nsDisplayFixedPosition(aBuilder, aOther),
mAncestorFrame(aOther.mAncestorFrame) {}
mAncestorFrame(aOther.mAncestorFrame),
mTableType(aOther.mTableType) {}
~nsDisplayTableFixedPosition() override {
if (mAncestorFrame) {
@ -6515,6 +6380,7 @@ class nsDisplayTableFixedPosition : public nsDisplayFixedPosition {
}
nsIFrame* mAncestorFrame;
TableType mTableType;
private:
NS_DISPLAY_ALLOW_CLONING()
@ -6530,13 +6396,6 @@ class nsDisplayScrollInfoLayer : public nsDisplayWrapList {
nsDisplayScrollInfoLayer(nsDisplayListBuilder* aBuilder,
nsIFrame* aScrolledFrame, nsIFrame* aScrollFrame);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aScrolledFrame,
nsIFrame* aScrollFrame) {
return 0;
}
#ifdef NS_BUILD_REFCNT_LOGGING
~nsDisplayScrollInfoLayer() override {
MOZ_COUNT_DTOR(nsDisplayScrollInfoLayer);
@ -6598,15 +6457,6 @@ class nsDisplayZoom : public nsDisplaySubDocument {
int32_t aAPD, int32_t aParentAPD,
nsDisplayOwnLayerFlags aFlags = nsDisplayOwnLayerFlags::None);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
nsSubDocumentFrame* aSubDocFrame, nsDisplayList* aList, int32_t aAPD,
int32_t aParentAPD,
nsDisplayOwnLayerFlags aFlags = nsDisplayOwnLayerFlags::None) {
return 0;
}
#ifdef NS_BUILD_REFCNT_LOGGING
~nsDisplayZoom() override { MOZ_COUNT_DTOR(nsDisplayZoom); }
#endif
@ -6646,15 +6496,6 @@ class nsDisplayAsyncZoom : public nsDisplayOwnLayer {
nsDisplayList* aList,
const ActiveScrolledRoot* aActiveScrolledRoot,
mozilla::layers::FrameMetrics::ViewID aViewID);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, nsDisplayList* aList,
const ActiveScrolledRoot* aActiveScrolledRoot,
mozilla::layers::FrameMetrics::ViewID aViewID) {
return 0;
}
nsDisplayAsyncZoom(nsDisplayListBuilder* aBuilder,
const nsDisplayAsyncZoom& aOther)
: nsDisplayOwnLayer(aBuilder, aOther), mViewID(aOther.mViewID) {
@ -6888,12 +6729,6 @@ class nsDisplayBackdropFilters : public nsDisplayWrapList {
MOZ_COUNT_CTOR(nsDisplayBackdropFilters);
}
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, nsDisplayList* aList,
const nsRect& aBackdropRect) {
return 0;
}
#ifdef NS_BUILD_REFCNT_LOGGING
~nsDisplayBackdropFilters() override {
MOZ_COUNT_DTOR(nsDisplayBackdropFilters);
@ -7044,40 +6879,15 @@ class nsDisplayTransform : public nsDisplayHitTestInfoItem {
nsDisplayList* aList, const nsRect& aChildrenBuildingRect,
uint16_t aIndex);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, nsDisplayList* aList,
const nsRect& aChildrenBuildingRect,
uint16_t aIndex) {
return aIndex;
}
nsDisplayTransform(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
nsDisplayList* aList, const nsRect& aChildrenBuildingRect,
uint16_t aIndex, bool aAllowAsyncAnimation);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, nsDisplayList* aList,
const nsRect& aChildrenBuildingRect,
uint16_t aIndex,
bool aAllowAsyncAnimation) {
return aIndex;
}
nsDisplayTransform(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
nsDisplayList* aList, const nsRect& aChildrenBuildingRect,
uint16_t aIndex,
ComputeTransformFunction aTransformGetter);
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(
nsDisplayListBuilder* aBuilder, nsIFrame* aFrame, nsDisplayList* aList,
const nsRect& aChildrenBuildingRect, uint16_t aIndex,
ComputeTransformFunction aTransformGetter) {
return aIndex;
}
#ifdef NS_BUILD_REFCNT_LOGGING
~nsDisplayTransform() override { MOZ_COUNT_DTOR(nsDisplayTransform); }
#endif
@ -7143,6 +6953,8 @@ class nsDisplayTransform : public nsDisplayHitTestInfoItem {
bool ComputeVisibility(nsDisplayListBuilder* aBuilder,
nsRegion* aVisibleRegion) override;
uint16_t CalculatePerFrameKey() const override { return mIndex; }
nsDisplayItemGeometry* AllocateGeometry(
nsDisplayListBuilder* aBuilder) override {
return new nsDisplayTransformGeometry(
@ -7395,6 +7207,7 @@ class nsDisplayTransform : public nsDisplayHitTestInfoItem {
RefPtr<AnimatedGeometryRoot> mAnimatedGeometryRootForScrollMetadata;
nsRect mChildrenBuildingRect;
mutable RetainedDisplayList mChildren;
uint16_t mIndex;
// The untransformed bounds of |mChildren|.
nsRect mChildBounds;

Просмотреть файл

@ -1263,26 +1263,10 @@ class nsDisplayXULEventRedirector final : public nsDisplayWrapList {
nsDisplayItem* aItem, nsIFrame* aTargetFrame)
: nsDisplayWrapList(aBuilder, aFrame, aItem),
mTargetFrame(aTargetFrame) {}
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, nsDisplayItem* aItem,
nsIFrame* aTargetFrame) {
return 0;
}
nsDisplayXULEventRedirector(nsDisplayListBuilder* aBuilder, nsIFrame* aFrame,
nsDisplayList* aList, nsIFrame* aTargetFrame)
: nsDisplayWrapList(aBuilder, aFrame, aList),
mTargetFrame(aTargetFrame) {}
// Should have an identical argument signature to the above ctor
static uint16_t CalculatePerFrameIndex(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, nsDisplayList* aList,
nsIFrame* aTargetFrame) {
return 0;
}
virtual void HitTest(nsDisplayListBuilder* aBuilder, const nsRect& aRect,
HitTestState* aState,
nsTArray<nsIFrame*>* aOutFrames) override;