Bug 1454485 - Stop passing around the scroll view and container direction since it's already in the scrollbar data. r=botond

MozReview-Commit-ID: 3t4uLBQZSAi
This commit is contained in:
Kartikaya Gupta 2018-04-17 15:04:34 -04:00
parent 878b4beba1
commit abcf2e229e
9 changed files with 32 additions and 67 deletions

View file

@ -91,6 +91,10 @@ struct ScrollbarData {
bool operator!=(const ScrollbarData& aOther) const { bool operator!=(const ScrollbarData& aOther) const {
return !(*this == aOther); return !(*this == aOther);
} }
bool IsThumb() const {
return mScrollbarLayerType == ScrollbarLayerType::Thumb;
}
}; };
/** /**
@ -277,20 +281,10 @@ public:
return mIsFixedPosition; return mIsFixedPosition;
} }
FrameMetrics::ViewID GetScrollbarTargetViewId() const {
return mScrollbarData.mTargetViewId;
}
const ScrollbarData& GetScrollbarData() const { const ScrollbarData& GetScrollbarData() const {
return mScrollbarData; return mScrollbarData;
} }
Maybe<ScrollDirection> GetScrollbarContainerDirection() const {
return (mScrollbarData.mScrollbarLayerType == ScrollbarLayerType::Container)
? mScrollbarData.mDirection
: Nothing();
}
gfx::CompositionOp GetMixBlendMode() const { gfx::CompositionOp GetMixBlendMode() const {
return mMixBlendMode; return mMixBlendMode;
} }

View file

@ -426,19 +426,6 @@ public:
return 0; return 0;
} }
FrameMetrics::ViewID GetScrollbarTargetContainerId() const
{
MOZ_ASSERT(IsValid());
return mLayer->GetScrollbarTargetViewId();
}
Maybe<ScrollDirection> GetScrollbarContainerDirection() const
{
MOZ_ASSERT(IsValid());
return mLayer->GetScrollbarContainerDirection();
}
FrameMetrics::ViewID GetFixedPositionScrollContainerId() const FrameMetrics::ViewID GetFixedPositionScrollContainerId() const
{ {
MOZ_ASSERT(IsValid()); MOZ_ASSERT(IsValid());

View file

@ -618,6 +618,15 @@ Layer::GetLocalTransformTyped()
return ViewAs<LayerToParentLayerMatrix4x4>(GetLocalTransform()); return ViewAs<LayerToParentLayerMatrix4x4>(GetLocalTransform());
} }
bool
Layer::IsScrollbarContainer() const
{
const ScrollbarData& data = GetScrollbarData();
return (data.mScrollbarLayerType == ScrollbarLayerType::Container)
? data.mDirection.isSome()
: false;
}
bool bool
Layer::HasOpacityAnimation() const Layer::HasOpacityAnimation() const
{ {
@ -1813,15 +1822,17 @@ Layer::PrintInfo(std::stringstream& aStream, const char* aPrefix)
if (Is3DContextLeaf()) { if (Is3DContextLeaf()) {
aStream << " [is3DContextLeaf]"; aStream << " [is3DContextLeaf]";
} }
if (GetScrollbarContainerDirection().isSome()) { if (IsScrollbarContainer()) {
aStream << " [scrollbar]"; aStream << " [scrollbar]";
} }
if (Maybe<ScrollDirection> thumbDirection = GetScrollbarData().mDirection) { if (GetScrollbarData().IsThumb()) {
if (*thumbDirection == ScrollDirection::eVertical) { if (Maybe<ScrollDirection> thumbDirection = GetScrollbarData().mDirection) {
aStream << nsPrintfCString(" [vscrollbar=%" PRIu64 "]", GetScrollbarTargetViewId()).get(); if (*thumbDirection == ScrollDirection::eVertical) {
} aStream << nsPrintfCString(" [vscrollbar=%" PRIu64 "]", GetScrollbarData().mTargetViewId).get();
if (*thumbDirection == ScrollDirection::eHorizontal) { }
aStream << nsPrintfCString(" [hscrollbar=%" PRIu64 "]", GetScrollbarTargetViewId()).get(); if (*thumbDirection == ScrollDirection::eHorizontal) {
aStream << nsPrintfCString(" [hscrollbar=%" PRIu64 "]", GetScrollbarData().mTargetViewId).get();
}
} }
} }
if (GetIsFixedPosition()) { if (GetIsFixedPosition()) {
@ -1971,7 +1982,7 @@ Layer::DumpPacket(layerscope::LayersPacket* aPacket, const void* aParent)
layer->set_direct(*GetScrollbarData().mDirection == ScrollDirection::eVertical ? layer->set_direct(*GetScrollbarData().mDirection == ScrollDirection::eVertical ?
LayersPacket::Layer::VERTICAL : LayersPacket::Layer::VERTICAL :
LayersPacket::Layer::HORIZONTAL); LayersPacket::Layer::HORIZONTAL);
layer->set_barid(GetScrollbarTargetViewId()); layer->set_barid(GetScrollbarData().mTargetViewId);
} }
// Mask layer // Mask layer

View file

@ -1328,10 +1328,8 @@ public:
FrameMetrics::ViewID GetStickyScrollContainerId() { return mSimpleAttrs.GetStickyScrollContainerId(); } FrameMetrics::ViewID GetStickyScrollContainerId() { return mSimpleAttrs.GetStickyScrollContainerId(); }
const LayerRectAbsolute& GetStickyScrollRangeOuter() { return mSimpleAttrs.GetStickyScrollRangeOuter(); } const LayerRectAbsolute& GetStickyScrollRangeOuter() { return mSimpleAttrs.GetStickyScrollRangeOuter(); }
const LayerRectAbsolute& GetStickyScrollRangeInner() { return mSimpleAttrs.GetStickyScrollRangeInner(); } const LayerRectAbsolute& GetStickyScrollRangeInner() { return mSimpleAttrs.GetStickyScrollRangeInner(); }
FrameMetrics::ViewID GetScrollbarTargetViewId() { return mSimpleAttrs.GetScrollbarTargetViewId(); }
const ScrollbarData& GetScrollbarData() const { return mSimpleAttrs.GetScrollbarData(); } const ScrollbarData& GetScrollbarData() const { return mSimpleAttrs.GetScrollbarData(); }
bool IsScrollbarContainer() { return mSimpleAttrs.GetScrollbarContainerDirection().isSome(); } bool IsScrollbarContainer() const;
Maybe<ScrollDirection> GetScrollbarContainerDirection() { return mSimpleAttrs.GetScrollbarContainerDirection(); }
Layer* GetMaskLayer() const { return mMaskLayer; } Layer* GetMaskLayer() const { return mMaskLayer; }
bool HasPendingTransform() const { return mPendingTransform; } bool HasPendingTransform() const { return mPendingTransform; }

View file

@ -878,8 +878,7 @@ APZCTreeManager::PrepareNodeForLayer(const ScrollNode& aLayer,
: Nothing(), : Nothing(),
GetEventRegionsOverride(aParent, aLayer), GetEventRegionsOverride(aParent, aLayer),
aLayer.IsBackfaceHidden()); aLayer.IsBackfaceHidden());
node->SetScrollbarData(aLayer.GetScrollbarTargetContainerId(), node->SetScrollbarData(aLayer.GetScrollbarAnimationId(),
aLayer.GetScrollbarAnimationId(),
aLayer.GetScrollbarData()); aLayer.GetScrollbarData());
node->SetFixedPosData(aLayer.GetFixedPositionScrollContainerId()); node->SetFixedPosData(aLayer.GetFixedPositionScrollContainerId());
return node; return node;
@ -1098,8 +1097,7 @@ APZCTreeManager::PrepareNodeForLayer(const ScrollNode& aLayer,
// Note: if layer properties must be propagated to nodes, RecvUpdate in // Note: if layer properties must be propagated to nodes, RecvUpdate in
// LayerTransactionParent.cpp must ensure that APZ will be notified // LayerTransactionParent.cpp must ensure that APZ will be notified
// when those properties change. // when those properties change.
node->SetScrollbarData(aLayer.GetScrollbarTargetContainerId(), node->SetScrollbarData(aLayer.GetScrollbarAnimationId(),
aLayer.GetScrollbarAnimationId(),
aLayer.GetScrollbarData()); aLayer.GetScrollbarData());
node->SetFixedPosData(aLayer.GetFixedPositionScrollContainerId()); node->SetFixedPosData(aLayer.GetFixedPositionScrollContainerId());
return node; return node;

View file

@ -27,7 +27,6 @@ HitTestingTreeNode::HitTestingTreeNode(AsyncPanZoomController* aApzc,
: mApzc(aApzc) : mApzc(aApzc)
, mIsPrimaryApzcHolder(aIsPrimaryHolder) , mIsPrimaryApzcHolder(aIsPrimaryHolder)
, mLayersId(aLayersId) , mLayersId(aLayersId)
, mScrollViewId(FrameMetrics::NULL_SCROLL_ID)
, mScrollbarAnimationId(0) , mScrollbarAnimationId(0)
, mFixedPosTarget(FrameMetrics::NULL_SCROLL_ID) , mFixedPosTarget(FrameMetrics::NULL_SCROLL_ID)
, mIsBackfaceHidden(false) , mIsBackfaceHidden(false)
@ -94,11 +93,9 @@ HitTestingTreeNode::SetLastChild(HitTestingTreeNode* aChild)
} }
void void
HitTestingTreeNode::SetScrollbarData(FrameMetrics::ViewID aScrollViewId, HitTestingTreeNode::SetScrollbarData(const uint64_t& aScrollbarAnimationId,
const uint64_t& aScrollbarAnimationId,
const ScrollbarData& aScrollbarData) const ScrollbarData& aScrollbarData)
{ {
mScrollViewId = aScrollViewId;
mScrollbarAnimationId = aScrollbarAnimationId; mScrollbarAnimationId = aScrollbarAnimationId;
mScrollbarData = aScrollbarData; mScrollbarData = aScrollbarData;
} }
@ -108,7 +105,7 @@ HitTestingTreeNode::MatchesScrollDragMetrics(const AsyncDragMetrics& aDragMetric
{ {
return IsScrollThumbNode() && return IsScrollThumbNode() &&
mScrollbarData.mDirection == aDragMetrics.mDirection && mScrollbarData.mDirection == aDragMetrics.mDirection &&
mScrollViewId == aDragMetrics.mViewId; mScrollbarData.mTargetViewId == aDragMetrics.mViewId;
} }
bool bool
@ -134,7 +131,7 @@ HitTestingTreeNode::GetScrollbarDirection() const
FrameMetrics::ViewID FrameMetrics::ViewID
HitTestingTreeNode::GetScrollTargetId() const HitTestingTreeNode::GetScrollTargetId() const
{ {
return mScrollViewId; return mScrollbarData.mTargetViewId;
} }
const uint64_t& const uint64_t&

View file

@ -95,8 +95,7 @@ public:
/* Scrollbar info */ /* Scrollbar info */
void SetScrollbarData(FrameMetrics::ViewID aScrollViewId, void SetScrollbarData(const uint64_t& aScrollbarAnimationId,
const uint64_t& aScrollbarAnimationId,
const ScrollbarData& aScrollbarData); const ScrollbarData& aScrollbarData);
bool MatchesScrollDragMetrics(const AsyncDragMetrics& aDragMetrics) const; bool MatchesScrollDragMetrics(const AsyncDragMetrics& aDragMetrics) const;
bool IsScrollbarNode() const; // Scroll thumb or scrollbar container layer. bool IsScrollbarNode() const; // Scroll thumb or scrollbar container layer.
@ -140,10 +139,6 @@ private:
LayersId mLayersId; LayersId mLayersId;
// This is set for both scroll track and scroll thumb Container layers, and
// represents the scroll id of the scroll frame scrolled by the scrollbar.
FrameMetrics::ViewID mScrollViewId;
// This is only set to non-zero if WebRender is enabled, and only for HTTNs // This is only set to non-zero if WebRender is enabled, and only for HTTNs
// where IsScrollThumbNode() returns true. It holds the animation id that we // where IsScrollThumbNode() returns true. It holds the animation id that we
// use to move the thumb node to reflect async scrolling. // use to move the thumb node to reflect async scrolling.

View file

@ -755,7 +755,7 @@ MoveScrollbarForLayerMargin(Layer* aRoot, FrameMetrics::ViewID aRootScrollId,
[aRootScrollId](Layer* aNode) { [aRootScrollId](Layer* aNode) {
return (aNode->GetScrollbarData().mDirection.isSome() && return (aNode->GetScrollbarData().mDirection.isSome() &&
*aNode->GetScrollbarData().mDirection == ScrollDirection::eHorizontal && *aNode->GetScrollbarData().mDirection == ScrollDirection::eHorizontal &&
aNode->GetScrollbarTargetViewId() == aRootScrollId); aNode->GetScrollbarData().mTargetViewId == aRootScrollId);
}); });
if (scrollbar) { if (scrollbar) {
// Shift the horizontal scrollbar down into the new space exposed by the // Shift the horizontal scrollbar down into the new space exposed by the
@ -1050,7 +1050,7 @@ LayerIsScrollbarTarget(const LayerMetricsWrapper& aTarget, Layer* aScrollbar)
} }
const FrameMetrics& metrics = aTarget.Metrics(); const FrameMetrics& metrics = aTarget.Metrics();
MOZ_ASSERT(metrics.IsScrollable()); MOZ_ASSERT(metrics.IsScrollable());
if (metrics.GetScrollId() != aScrollbar->GetScrollbarTargetViewId()) { if (metrics.GetScrollId() != aScrollbar->GetScrollbarData().mTargetViewId) {
return false; return false;
} }
return !metrics.IsScrollInfoLayer(); return !metrics.IsScrollInfoLayer();

View file

@ -300,21 +300,6 @@ public:
return mLayer->GetScrollbarAnimationId(); return mLayer->GetScrollbarAnimationId();
} }
FrameMetrics::ViewID GetScrollbarTargetContainerId() const
{
MOZ_ASSERT(IsValid());
return mLayer->GetScrollbarData().mTargetViewId;
}
Maybe<ScrollDirection> GetScrollbarContainerDirection() const
{
MOZ_ASSERT(IsValid());
const ScrollbarData& data = mLayer->GetScrollbarData();
return (data.mScrollbarLayerType == ScrollbarLayerType::Container)
? data.mDirection
: Nothing();
}
FrameMetrics::ViewID GetFixedPositionScrollContainerId() const FrameMetrics::ViewID GetFixedPositionScrollContainerId() const
{ {
MOZ_ASSERT(IsValid()); MOZ_ASSERT(IsValid());