Bug 1355193 - Stop looking for a parent stacking context in the scroll metadata. r?mchang draft
authorKartikaya Gupta <kgupta@mozilla.com>
Mon, 10 Apr 2017 15:46:03 -0400
changeset 559903 fb63669b4913004495fb85d819a86720a961740d
parent 559892 22a9e4fe2c6f63f88b2bb04d47cf29b0a503388a
child 623555 75e859a9780bd63baedf642dd24d23cd04986a1c
push id53265
push userkgupta@mozilla.com
push dateMon, 10 Apr 2017 19:46:22 +0000
reviewersmchang
bugs1355193
milestone55.0a1
Bug 1355193 - Stop looking for a parent stacking context in the scroll metadata. r?mchang MozReview-Commit-ID: A2VjaUohUxh
gfx/layers/wr/WebRenderLayerManager.cpp
gfx/layers/wr/WebRenderLayerManager.h
--- a/gfx/layers/wr/WebRenderLayerManager.cpp
+++ b/gfx/layers/wr/WebRenderLayerManager.cpp
@@ -56,45 +56,40 @@ WebRenderLayer::RelativeToTransformedVis
 {
   IntRect bounds = GetLayer()->GetVisibleRegion().GetBounds().ToUnknownRect();
   Rect transformed = GetLayer()->GetTransform().TransformBounds(IntRectToRect(bounds));
   aRect.MoveBy(-transformed.x, -transformed.y);
   return aRect;
 }
 
 Rect
-WebRenderLayer::ParentStackingContextBounds(size_t aScrollMetadataIndex)
+WebRenderLayer::ParentStackingContextBounds()
 {
   // Walk up to find the parent stacking context. This will be created either
   // by the nearest scrollable metrics, or by the parent layer which must be a
   // ContainerLayer.
   Layer* layer = GetLayer();
-  for (size_t i = aScrollMetadataIndex + 1; i < layer->GetScrollMetadataCount(); i++) {
-    if (layer->GetFrameMetrics(i).IsScrollable()) {
-      return layer->GetFrameMetrics(i).GetCompositionBounds().ToUnknownRect();
-    }
-  }
   if (layer->GetParent()) {
     return IntRectToRect(layer->GetParent()->GetVisibleRegion().GetBounds().ToUnknownRect());
   }
   return Rect();
 }
 
 Rect
 WebRenderLayer::RelativeToParent(Rect aRect)
 {
-  Rect parentBounds = ParentStackingContextBounds(-1);
+  Rect parentBounds = ParentStackingContextBounds();
   aRect.MoveBy(-parentBounds.x, -parentBounds.y);
   return aRect;
 }
 
 Point
 WebRenderLayer::GetOffsetToParent()
 {
-  Rect parentBounds = ParentStackingContextBounds(-1);
+  Rect parentBounds = ParentStackingContextBounds();
   return parentBounds.TopLeft();
 }
 
 Rect
 WebRenderLayer::VisibleBoundsRelativeToParent()
 {
   return RelativeToParent(IntRectToRect(GetLayer()->GetVisibleRegion().GetBounds().ToUnknownRect()));
 }
--- a/gfx/layers/wr/WebRenderLayerManager.h
+++ b/gfx/layers/wr/WebRenderLayerManager.h
@@ -43,17 +43,17 @@ public:
     return static_cast<WebRenderLayer*>(aLayer->ImplData());
   }
 
   WebRenderLayerManager* WrManager();
   WebRenderBridgeChild* WrBridge();
 
   gfx::Rect RelativeToVisible(gfx::Rect aRect);
   gfx::Rect RelativeToTransformedVisible(gfx::Rect aRect);
-  gfx::Rect ParentStackingContextBounds(size_t aScrollMetadataIndex);
+  gfx::Rect ParentStackingContextBounds();
   gfx::Rect RelativeToParent(gfx::Rect aRect);
   gfx::Rect VisibleBoundsRelativeToParent();
   gfx::Point GetOffsetToParent();
   gfx::Rect TransformedVisibleBoundsRelativeToParent();
 protected:
   gfx::Rect GetWrBoundsRect();
   gfx::Rect GetWrRelBounds();
   gfx::Rect GetWrClipRect(gfx::Rect& aRect);