Bug 1267438 - Remove the (no longer used) isClipFixed=false annotation. r=mstange
MozReview-Commit-ID: LicG7zFHnX3
--- a/gfx/layers/Layers.cpp
+++ b/gfx/layers/Layers.cpp
@@ -1971,21 +1971,20 @@ Layer::PrintInfo(std::stringstream& aStr
if (GetScrollbarDirection() == VERTICAL) {
aStream << nsPrintfCString(" [vscrollbar=%lld]", GetScrollbarTargetContainerId()).get();
}
if (GetScrollbarDirection() == HORIZONTAL) {
aStream << nsPrintfCString(" [hscrollbar=%lld]", GetScrollbarTargetContainerId()).get();
}
if (GetIsFixedPosition()) {
LayerPoint anchor = GetFixedPositionAnchor();
- aStream << nsPrintfCString(" [isFixedPosition scrollId=%lld sides=0x%x anchor=%s%s]",
+ aStream << nsPrintfCString(" [isFixedPosition scrollId=%lld sides=0x%x anchor=%s]",
GetFixedPositionScrollContainerId(),
GetFixedPositionSides(),
- ToString(anchor).c_str(),
- IsClipFixed() ? "" : " scrollingClip").get();
+ ToString(anchor).c_str()).get();
}
if (GetIsStickyPosition()) {
aStream << nsPrintfCString(" [isStickyPosition scrollId=%d outer=%f,%f %fx%f "
"inner=%f,%f %fx%f]", mStickyPositionData->mScrollId,
mStickyPositionData->mOuter.x, mStickyPositionData->mOuter.y,
mStickyPositionData->mOuter.width, mStickyPositionData->mOuter.height,
mStickyPositionData->mInner.x, mStickyPositionData->mInner.y,
mStickyPositionData->mInner.width, mStickyPositionData->mInner.height).get();
--- a/gfx/layers/Layers.h
+++ b/gfx/layers/Layers.h
@@ -1213,40 +1213,32 @@ public:
* point, that is, the point which remains in the same position when
* compositing the layer tree with a transformation (such as when
* asynchronously scrolling and zooming).
*
* - |aSides| is the set of sides to which the element is fixed relative to.
* This is used if the viewport size is changed in the compositor and
* fixed position items need to shift accordingly. This value is made up
* combining appropriate values from mozilla::SideBits.
- *
- * - |aIsClipFixed| is true if this layer's clip rect and mask layer
- * should also remain fixed during async scrolling/animations.
- * This is the case for fixed position layers, but not for
- * fixed background layers.
*/
void SetFixedPositionData(FrameMetrics::ViewID aScrollId,
const LayerPoint& aAnchor,
- int32_t aSides,
- bool aIsClipFixed)
+ int32_t aSides)
{
if (!mFixedPositionData ||
mFixedPositionData->mScrollId != aScrollId ||
mFixedPositionData->mAnchor != aAnchor ||
- mFixedPositionData->mSides != aSides ||
- mFixedPositionData->mIsClipFixed != aIsClipFixed) {
+ mFixedPositionData->mSides != aSides) {
MOZ_LAYERS_LOG_IF_SHADOWABLE(this, ("Layer::Mutated(%p) FixedPositionData", this));
if (!mFixedPositionData) {
mFixedPositionData = MakeUnique<FixedPositionData>();
}
mFixedPositionData->mScrollId = aScrollId;
mFixedPositionData->mAnchor = aAnchor;
mFixedPositionData->mSides = aSides;
- mFixedPositionData->mIsClipFixed = aIsClipFixed;
Mutated();
}
}
/**
* CONSTRUCTION PHASE ONLY
* If a layer is "sticky position", |aScrollId| holds the scroll identifier
* of the scrollable content that contains it. The difference between the two
@@ -1338,17 +1330,16 @@ public:
virtual float GetPostXScale() const { return mPostXScale; }
virtual float GetPostYScale() const { return mPostYScale; }
bool GetIsFixedPosition() { return mIsFixedPosition; }
bool GetTransformIsPerspective() const { return mTransformIsPerspective; }
bool GetIsStickyPosition() { return mStickyPositionData; }
FrameMetrics::ViewID GetFixedPositionScrollContainerId() { return mFixedPositionData ? mFixedPositionData->mScrollId : FrameMetrics::NULL_SCROLL_ID; }
LayerPoint GetFixedPositionAnchor() { return mFixedPositionData ? mFixedPositionData->mAnchor : LayerPoint(); }
int32_t GetFixedPositionSides() { return mFixedPositionData ? mFixedPositionData->mSides : eSideBitsNone; }
- bool IsClipFixed() { return mFixedPositionData ? mFixedPositionData->mIsClipFixed : false; }
FrameMetrics::ViewID GetStickyScrollContainerId() { return mStickyPositionData->mScrollId; }
const LayerRect& GetStickyScrollRangeOuter() { return mStickyPositionData->mOuter; }
const LayerRect& GetStickyScrollRangeInner() { return mStickyPositionData->mInner; }
FrameMetrics::ViewID GetScrollbarTargetContainerId() { return mScrollbarTargetId; }
ScrollDirection GetScrollbarDirection() { return mScrollbarDirection; }
float GetScrollbarThumbRatio() { return mScrollbarThumbRatio; }
bool IsScrollbarContainer() { return mIsScrollbarContainer; }
Layer* GetMaskLayer() const { return mMaskLayer; }
@@ -1891,17 +1882,16 @@ protected:
uint32_t mContentFlags;
bool mUseTileSourceRect;
bool mIsFixedPosition;
bool mTransformIsPerspective;
struct FixedPositionData {
FrameMetrics::ViewID mScrollId;
LayerPoint mAnchor;
int32_t mSides;
- bool mIsClipFixed;
};
UniquePtr<FixedPositionData> mFixedPositionData;
struct StickyPositionData {
FrameMetrics::ViewID mScrollId;
LayerRect mOuter;
LayerRect mInner;
};
nsAutoPtr<StickyPositionData> mStickyPositionData;
--- a/gfx/layers/composite/AsyncCompositionManager.cpp
+++ b/gfx/layers/composite/AsyncCompositionManager.cpp
@@ -523,22 +523,18 @@ AsyncCompositionManager::AlignFixedAndSt
IntervalOverlap(translation.x, stickyInner.x, stickyInner.XMost());
}
// Finally, apply the translation to the layer transform. Note that in cases
// where the async transform on |aTransformedSubtreeRoot| affects this layer's
// clip rect, we need to apply the same translation to said clip rect, so
// that the effective transform on the clip rect takes it back to where it was
// originally, had there been no async scroll.
- // Also, some layers want async scrolling to move their clip rect
- // (IsClipFixed() = false), so we don't make a compensating adjustment for
- // those.
- bool adjustClipRect = aTransformAffectsLayerClip && aLayer->IsClipFixed();
TranslateShadowLayer(aLayer, ThebesPoint(translation.ToUnknownPoint()),
- adjustClipRect, &mClipPartsCache);
+ aTransformAffectsLayerClip, &mClipPartsCache);
}
static void
SampleValue(float aPortion, Animation& aAnimation, StyleAnimationValue& aStart,
StyleAnimationValue& aEnd, Animatable* aValue, Layer* aLayer)
{
StyleAnimationValue interpolatedValue;
NS_ASSERTION(aStart.GetUnit() == aEnd.GetUnit() ||
--- a/gfx/layers/ipc/LayerTransactionParent.cpp
+++ b/gfx/layers/ipc/LayerTransactionParent.cpp
@@ -346,18 +346,17 @@ LayerTransactionParent::RecvUpdate(Infal
layer->SetScrolledClip(common.scrolledClip());
layer->SetBaseTransform(common.transform().value());
layer->SetTransformIsPerspective(common.transformIsPerspective());
layer->SetPostScale(common.postXScale(), common.postYScale());
layer->SetIsFixedPosition(common.isFixedPosition());
if (common.isFixedPosition()) {
layer->SetFixedPositionData(common.fixedPositionScrollContainerId(),
common.fixedPositionAnchor(),
- common.fixedPositionSides(),
- common.isClipFixed());
+ common.fixedPositionSides());
}
if (common.isStickyPosition()) {
layer->SetStickyPositionData(common.stickyScrollContainerId(),
common.stickyScrollRangeOuter(),
common.stickyScrollRangeInner());
}
layer->SetScrollbarData(common.scrollbarTargetContainerId(),
static_cast<Layer::ScrollDirection>(common.scrollbarDirection()),
--- a/gfx/layers/ipc/LayersMessages.ipdlh
+++ b/gfx/layers/ipc/LayersMessages.ipdlh
@@ -219,17 +219,16 @@ struct CommonLayerAttributes {
float opacity;
bool useClipRect;
ParentLayerIntRect clipRect;
MaybeLayerClip scrolledClip;
bool isFixedPosition;
uint64_t fixedPositionScrollContainerId;
LayerPoint fixedPositionAnchor;
int32_t fixedPositionSides;
- bool isClipFixed;
bool isStickyPosition;
uint64_t stickyScrollContainerId;
LayerRect stickyScrollRangeOuter;
LayerRect stickyScrollRangeInner;
uint64_t scrollbarTargetContainerId;
uint32_t scrollbarDirection;
float scrollbarThumbRatio;
bool isScrollbarContainer;
--- a/gfx/layers/ipc/ShadowLayers.cpp
+++ b/gfx/layers/ipc/ShadowLayers.cpp
@@ -809,17 +809,16 @@ ShadowLayerForwarder::EndTransaction(Inf
common.clipRect() = (common.useClipRect() ?
*mutant->GetClipRect() : ParentLayerIntRect());
common.scrolledClip() = mutant->GetScrolledClip();
common.isFixedPosition() = mutant->GetIsFixedPosition();
if (mutant->GetIsFixedPosition()) {
common.fixedPositionScrollContainerId() = mutant->GetFixedPositionScrollContainerId();
common.fixedPositionAnchor() = mutant->GetFixedPositionAnchor();
common.fixedPositionSides() = mutant->GetFixedPositionSides();
- common.isClipFixed() = mutant->IsClipFixed();
}
common.isStickyPosition() = mutant->GetIsStickyPosition();
if (mutant->GetIsStickyPosition()) {
common.stickyScrollContainerId() = mutant->GetStickyScrollContainerId();
common.stickyScrollRangeOuter() = mutant->GetStickyScrollRangeOuter();
common.stickyScrollRangeInner() = mutant->GetStickyScrollRangeInner();
} else {
#ifdef MOZ_VALGRIND
--- a/layout/base/FrameLayerBuilder.cpp
+++ b/layout/base/FrameLayerBuilder.cpp
@@ -4792,17 +4792,17 @@ ContainerState::PostprocessRetainedLayer
data->mAnimatedGeometryRoot = animatedGeometryRootToCover;
}
nsIntRegion clippedOpaque = e->mOpaqueRegion;
Maybe<ParentLayerIntRect> clipRect = e->mLayer->GetCombinedClipRect();
if (clipRect) {
clippedOpaque.AndWith(clipRect->ToUnknownRect());
}
- if (e->mLayer->GetIsFixedPosition() && !e->mLayer->IsClipFixed()) {
+ if (e->mLayer->GetIsFixedPosition() && e->mLayer->GetScrolledClip()) {
// The clip can move asynchronously, so we can't rely on opaque parts
// staying in the same place.
clippedOpaque.SetEmpty();
}
data->mOpaqueRegion.Or(data->mOpaqueRegion, clippedOpaque);
if (e->mHideAllLayersBelow) {
hideAll = true;
}
--- a/layout/base/nsDisplayList.cpp
+++ b/layout/base/nsDisplayList.cpp
@@ -4885,17 +4885,17 @@ nsDisplayFixedPosition::BuildLayer(nsDis
// For background-attachment:fixed items, the anchor point is always the
// top-left of the viewport currently.
viewportFrame = fixedFrame;
}
// The anchorRect top-left is always the viewport top-left.
anchorRect.MoveTo(viewportFrame->GetOffsetToCrossDoc(ReferenceFrame()));
nsLayoutUtils::SetFixedPositionLayerData(layer,
- viewportFrame, anchorRect, fixedFrame, presContext, aContainerParameters, true);
+ viewportFrame, anchorRect, fixedFrame, presContext, aContainerParameters);
return layer.forget();
}
bool nsDisplayFixedPosition::TryMerge(nsDisplayItem* aItem) {
if (aItem->GetType() != TYPE_FIXED_POSITION)
return false;
// Items with the same fixed position frame can be merged.
@@ -4944,17 +4944,17 @@ nsDisplayStickyPosition::BuildLayer(nsDi
if (scrollFrame == presContext->PresShell()->GetRootScrollFrame() &&
presContext->PresShell()->IsScrollPositionClampingScrollPortSizeSet()) {
scrollFrameSize = presContext->PresShell()->
GetScrollPositionClampingScrollPortSize();
}
nsLayoutUtils::SetFixedPositionLayerData(layer, scrollFrame,
nsRect(scrollFrame->GetOffsetToCrossDoc(ReferenceFrame()), scrollFrameSize),
- mFrame, presContext, aContainerParameters, /* clip is fixed = */ true);
+ mFrame, presContext, aContainerParameters);
ViewID scrollId = nsLayoutUtils::FindOrCreateIDFor(
stickyScrollContainer->ScrollFrame()->GetScrolledFrame()->GetContent());
float factor = presContext->AppUnitsPerDevPixel();
nsRect outer;
nsRect inner;
stickyScrollContainer->GetScrollRanges(mFrame, &outer, &inner);
--- a/layout/base/nsLayoutUtils.cpp
+++ b/layout/base/nsLayoutUtils.cpp
@@ -1926,18 +1926,17 @@ nsLayoutUtils::GetScrollableFrameFor(con
}
/* static */ void
nsLayoutUtils::SetFixedPositionLayerData(Layer* aLayer,
const nsIFrame* aViewportFrame,
const nsRect& aAnchorRect,
const nsIFrame* aFixedPosFrame,
nsPresContext* aPresContext,
- const ContainerLayerParameters& aContainerParameters,
- bool aIsClipFixed) {
+ const ContainerLayerParameters& aContainerParameters) {
// Find out the rect of the viewport frame relative to the reference frame.
// This, in conjunction with the container scale, will correspond to the
// coordinate-space of the built layer.
float factor = aPresContext->AppUnitsPerDevPixel();
Rect anchorRect(NSAppUnitsToFloatPixels(aAnchorRect.x, factor) *
aContainerParameters.mXScale,
NSAppUnitsToFloatPixels(aAnchorRect.y, factor) *
aContainerParameters.mYScale,
@@ -1986,17 +1985,17 @@ nsLayoutUtils::SetFixedPositionLayerData
}
ViewID id = FrameMetrics::NULL_SCROLL_ID;
if (nsIFrame* rootScrollFrame = aPresContext->PresShell()->GetRootScrollFrame()) {
if (nsIContent* content = rootScrollFrame->GetContent()) {
id = FindOrCreateIDFor(content);
}
}
- aLayer->SetFixedPositionData(id, anchor, sides, aIsClipFixed);
+ aLayer->SetFixedPositionData(id, anchor, sides);
}
bool
nsLayoutUtils::ViewportHasDisplayPort(nsPresContext* aPresContext)
{
nsIFrame* rootScrollFrame =
aPresContext->PresShell()->GetRootScrollFrame();
return rootScrollFrame &&
--- a/layout/base/nsLayoutUtils.h
+++ b/layout/base/nsLayoutUtils.h
@@ -557,26 +557,22 @@ public:
* Sets the fixed-pos metadata properties on aLayer.
* aAnchorRect is the basic anchor rectangle. If aFixedPosFrame is not a viewport
* frame, then we pick a corner of aAnchorRect to as the anchor point for the
* fixed-pos layer (i.e. the point to remain stable during zooming), based
* on which of the fixed-pos frame's CSS absolute positioning offset
* properties (top, left, right, bottom) are auto. aAnchorRect is in the
* coordinate space of aLayer's container layer (i.e. relative to the reference
* frame of the display item which is building aLayer's container layer).
- * aIsClipFixed is true if the layer's clip rect should also remain fixed
- * during async-scrolling (true for fixed position elements, false for
- * fixed backgrounds).
*/
static void SetFixedPositionLayerData(Layer* aLayer, const nsIFrame* aViewportFrame,
const nsRect& aAnchorRect,
const nsIFrame* aFixedPosFrame,
nsPresContext* aPresContext,
- const ContainerLayerParameters& aContainerParameters,
- bool aIsClipFixed);
+ const ContainerLayerParameters& aContainerParameters);
/**
* Return true if aPresContext's viewport has a displayport.
*/
static bool ViewportHasDisplayPort(nsPresContext* aPresContext);
/**
* Return true if aFrame is a fixed-pos frame and is a child of a viewport