From 86032d93078833ffac4170ada7029fa23f6c11f0 Mon Sep 17 00:00:00 2001 From: Kartikaya Gupta Date: Mon, 12 Mar 2018 16:06:37 -0400 Subject: [PATCH] Bug 1443792 - Tighten the equivalence between a layer being scrollable and having an APZC. r=botond If we can assume that a layer being composited has an APZC at index i if and only if the frame metrics at index i is scrollable, then we can do the transformations in the next patch without any change in functionality. MozReview-Commit-ID: FRkvhwdd3nh --HG-- extra : rebase_source : f1bee292305730079b3208e447330028c1a40727 --- gfx/layers/Layers.cpp | 2 ++ gfx/layers/Layers.h | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/gfx/layers/Layers.cpp b/gfx/layers/Layers.cpp index 5c19d2139842..8932ac328ce9 100644 --- a/gfx/layers/Layers.cpp +++ b/gfx/layers/Layers.cpp @@ -229,6 +229,8 @@ void Layer::SetAsyncPanZoomController(uint32_t aIndex, AsyncPanZoomController *controller) { MOZ_ASSERT(aIndex < GetScrollMetadataCount()); + // We should never be setting an APZC on a non-scrollable layer + MOZ_ASSERT(!controller || GetFrameMetrics(aIndex).IsScrollable()); mApzcs[aIndex] = controller; } diff --git a/gfx/layers/Layers.h b/gfx/layers/Layers.h index c5da40f7b62e..eff8beed1051 100644 --- a/gfx/layers/Layers.h +++ b/gfx/layers/Layers.h @@ -1798,6 +1798,10 @@ public: // and can be used anytime. // A layer has an APZC at index aIndex only-if GetFrameMetrics(aIndex).IsScrollable(); // attempting to get an APZC for a non-scrollable metrics will return null. + // The reverse is also true (that if GetFrameMetrics(aIndex).IsScrollable() + // is true, then the layer will have an APZC), although that only holds on + // the compositor-side layer tree, and only after the APZ code has had a chance + // to rebuild its internal hit-testing tree using the layer tree. // The aIndex for these functions must be less than GetScrollMetadataCount(). void SetAsyncPanZoomController(uint32_t aIndex, AsyncPanZoomController *controller); AsyncPanZoomController* GetAsyncPanZoomController(uint32_t aIndex) const;