Bug 1384616 - Save APZ-relevant scrollbar data into the WR scroll data for layers-free transactions. r=jrmuizel

MozReview-Commit-ID: 6DQz9N6Wq0H

--HG--
extra : rebase_source : 8a113d4a53e1562b55cc05a0bc411675a2ca9eb1
This commit is contained in:
Kartikaya Gupta 2017-07-31 15:27:30 -04:00
Родитель 4ed905c664
Коммит c3e4aef0b4
3 изменённых файлов: 31 добавлений и 1 удалений

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

@ -70,10 +70,16 @@ public:
void SetReferentId(uint64_t aReferentId) { mReferentId = Some(aReferentId); }
Maybe<uint64_t> GetReferentId() const { return mReferentId; }
EventRegionsOverride GetEventRegionsOverride() const { return mEventRegionsOverride; }
void SetScrollThumbData(const ScrollThumbData& aData) { mScrollThumbData = aData; }
const ScrollThumbData& GetScrollThumbData() const { return mScrollThumbData; }
void SetScrollbarAnimationId(const uint64_t& aId) { mScrollbarAnimationId = aId; }
const uint64_t& GetScrollbarAnimationId() const { return mScrollbarAnimationId; }
void SetScrollbarTargetContainerId(FrameMetrics::ViewID aId) { mScrollbarTargetContainerId = aId; }
FrameMetrics::ViewID GetScrollbarTargetContainerId() const { return mScrollbarTargetContainerId; }
void SetIsScrollbarContainer() { mIsScrollbarContainer = true; }
bool IsScrollbarContainer() const { return mIsScrollbarContainer; }
void SetFixedPositionScrollContainerId(FrameMetrics::ViewID aId) { mFixedPosScrollContainerId = aId; }
FrameMetrics::ViewID GetFixedPositionScrollContainerId() const { return mFixedPosScrollContainerId; }

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

@ -6390,6 +6390,28 @@ nsDisplayOwnLayer::BuildLayer(nsDisplayListBuilder* aBuilder,
return layer.forget();
}
bool
nsDisplayOwnLayer::UpdateScrollData(mozilla::layers::WebRenderScrollData* aData,
mozilla::layers::WebRenderLayerScrollData* aLayerData)
{
bool ret = false;
if (IsScrollThumbLayer()) {
ret = true;
if (aLayerData) {
aLayerData->SetScrollThumbData(mThumbData);
aLayerData->SetScrollbarTargetContainerId(mScrollTarget);
}
}
if (mFlags & SCROLLBAR_CONTAINER) {
ret = true;
if (aLayerData) {
aLayerData->SetIsScrollbarContainer();
aLayerData->SetScrollbarTargetContainerId(mScrollTarget);
}
}
return ret;
}
nsDisplaySubDocument::nsDisplaySubDocument(nsDisplayListBuilder* aBuilder,
nsIFrame* aFrame, nsDisplayList* aList,
uint32_t aFlags)
@ -6697,7 +6719,7 @@ nsDisplayFixedPosition::UpdateScrollData(mozilla::layers::WebRenderScrollData* a
Frame()->PresContext());
aLayerData->SetFixedPositionScrollContainerId(id);
}
return true;
return nsDisplayOwnLayer::UpdateScrollData(aData, aLayerData) | true;
}
TableType

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

@ -4150,6 +4150,8 @@ public:
virtual already_AddRefed<Layer> BuildLayer(nsDisplayListBuilder* aBuilder,
LayerManager* aManager,
const ContainerLayerParameters& aContainerParameters) override;
virtual bool UpdateScrollData(mozilla::layers::WebRenderScrollData* aData,
mozilla::layers::WebRenderLayerScrollData* aLayerData) override;
virtual LayerState GetLayerState(nsDisplayListBuilder* aBuilder,
LayerManager* aManager,
const ContainerLayerParameters& aParameters) override;