Refactor RegisterViewportLayers parameters into a struct
This CL refactors WebLayerTreeView::RegisterViewportLayers() to
use a ViewportWebLayers struct instead of 6 separate parameters.
Bug: None
Change-Id: I7f72727a098c871321c60ef55421bb48b9ffd97d
Reviewed-on: https://chromium-review.googlesource.com/558320
Commit-Queue: Chandan Padhi <[email protected]>
Reviewed-by: Philip Rogers <[email protected]>
Reviewed-by: Antoine Labour <[email protected]>
Cr-Commit-Position: refs/heads/master@{#484859}
diff --git a/content/renderer/gpu/render_widget_compositor.cc b/content/renderer/gpu/render_widget_compositor.cc
index d7ea7d6..46049eac 100644
--- a/content/renderer/gpu/render_widget_compositor.cc
+++ b/content/renderer/gpu/render_widget_compositor.cc
@@ -777,44 +777,39 @@
}
void RenderWidgetCompositor::RegisterViewportLayers(
- const blink::WebLayer* overscroll_elasticity_layer,
- const blink::WebLayer* page_scale_layer,
- const blink::WebLayer* inner_viewport_container_layer,
- const blink::WebLayer* outer_viewport_container_layer,
- const blink::WebLayer* inner_viewport_scroll_layer,
- const blink::WebLayer* outer_viewport_scroll_layer) {
+ const blink::WebLayerTreeView::ViewportLayers& layers) {
cc::LayerTreeHost::ViewportLayers viewport_layers;
// TODO(bokan): This check can probably be removed now, but it looks
// like overscroll elasticity may still be nullptr until VisualViewport
// registers its layers.
- if (overscroll_elasticity_layer) {
+ if (layers.overscroll_elasticity) {
viewport_layers.overscroll_elasticity =
- static_cast<const cc_blink::WebLayerImpl*>(overscroll_elasticity_layer)
+ static_cast<const cc_blink::WebLayerImpl*>(layers.overscroll_elasticity)
->layer();
}
viewport_layers.page_scale =
- static_cast<const cc_blink::WebLayerImpl*>(page_scale_layer)->layer();
- if (inner_viewport_container_layer) {
+ static_cast<const cc_blink::WebLayerImpl*>(layers.page_scale)->layer();
+ if (layers.inner_viewport_container) {
viewport_layers.inner_viewport_container =
static_cast<const cc_blink::WebLayerImpl*>(
- inner_viewport_container_layer)
+ layers.inner_viewport_container)
->layer();
}
- if (outer_viewport_container_layer) {
+ if (layers.outer_viewport_container) {
viewport_layers.outer_viewport_container =
static_cast<const cc_blink::WebLayerImpl*>(
- outer_viewport_container_layer)
+ layers.outer_viewport_container)
->layer();
}
viewport_layers.inner_viewport_scroll =
- static_cast<const cc_blink::WebLayerImpl*>(inner_viewport_scroll_layer)
+ static_cast<const cc_blink::WebLayerImpl*>(layers.inner_viewport_scroll)
->layer();
// TODO(bokan): This check can probably be removed now, but it looks
// like overscroll elasticity may still be nullptr until VisualViewport
// registers its layers.
- if (outer_viewport_scroll_layer) {
+ if (layers.outer_viewport_scroll) {
viewport_layers.outer_viewport_scroll =
- static_cast<const cc_blink::WebLayerImpl*>(outer_viewport_scroll_layer)
+ static_cast<const cc_blink::WebLayerImpl*>(layers.outer_viewport_scroll)
->layer();
}
layer_tree_host_->RegisterViewportLayers(viewport_layers);
diff --git a/content/renderer/gpu/render_widget_compositor.h b/content/renderer/gpu/render_widget_compositor.h
index 84e8a29..372ef4b8 100644
--- a/content/renderer/gpu/render_widget_compositor.h
+++ b/content/renderer/gpu/render_widget_compositor.h
@@ -146,14 +146,8 @@
void CompositeAndReadbackAsync(
blink::WebCompositeAndReadbackAsyncCallback* callback) override;
void SetDeferCommits(bool defer_commits) override;
- // TODO(pdr): Refactor to use a struct like LayerTreeHost::ViewportLayers.
void RegisterViewportLayers(
- const blink::WebLayer* overscrollElasticityLayer,
- const blink::WebLayer* pageScaleLayer,
- const blink::WebLayer* innerViewportContainerLayer,
- const blink::WebLayer* outerViewportContainerLayer,
- const blink::WebLayer* innerViewportScrollLayer,
- const blink::WebLayer* outerViewportScrollLayer) override;
+ const blink::WebLayerTreeView::ViewportLayers& viewport_layers) override;
void ClearViewportLayers() override;
void RegisterSelection(const blink::WebSelection& selection) override;
void ClearSelection() override;
diff --git a/third_party/WebKit/Source/platform/graphics/GraphicsLayerTest.cpp b/third_party/WebKit/Source/platform/graphics/GraphicsLayerTest.cpp
index 2e354e6..3595d7f3 100644
--- a/third_party/WebKit/Source/platform/graphics/GraphicsLayerTest.cpp
+++ b/third_party/WebKit/Source/platform/graphics/GraphicsLayerTest.cpp
@@ -69,10 +69,13 @@
layer_tree_view_ = WTF::WrapUnique(new WebLayerTreeViewImplForTesting);
DCHECK(layer_tree_view_);
layer_tree_view_->SetRootLayer(*clip_layer_->PlatformLayer());
- layer_tree_view_->RegisterViewportLayers(
- scroll_elasticity_layer_->PlatformLayer(),
- page_scale_layer_->PlatformLayer(), clip_layer_->PlatformLayer(),
- nullptr, graphics_layer_->PlatformLayer(), nullptr);
+ WebLayerTreeView::ViewportLayers viewport_layers;
+ viewport_layers.overscroll_elasticity =
+ scroll_elasticity_layer_->PlatformLayer();
+ viewport_layers.page_scale = page_scale_layer_->PlatformLayer();
+ viewport_layers.inner_viewport_container = clip_layer_->PlatformLayer();
+ viewport_layers.inner_viewport_scroll = graphics_layer_->PlatformLayer();
+ layer_tree_view_->RegisterViewportLayers(viewport_layers);
layer_tree_view_->SetViewportSize(WebSize(1, 1));
}
diff --git a/third_party/WebKit/Source/platform/testing/WebLayerTreeViewImplForTesting.cpp b/third_party/WebKit/Source/platform/testing/WebLayerTreeViewImplForTesting.cpp
index 6e8dc90..90e3280 100644
--- a/third_party/WebKit/Source/platform/testing/WebLayerTreeViewImplForTesting.cpp
+++ b/third_party/WebKit/Source/platform/testing/WebLayerTreeViewImplForTesting.cpp
@@ -147,38 +147,33 @@
}
void WebLayerTreeViewImplForTesting::RegisterViewportLayers(
- const blink::WebLayer* overscroll_elasticity_layer,
- const blink::WebLayer* page_scale_layer,
- const blink::WebLayer* inner_viewport_container_layer,
- const blink::WebLayer* outer_viewport_container_layer,
- const blink::WebLayer* inner_viewport_scroll_layer,
- const blink::WebLayer* outer_viewport_scroll_layer) {
+ const WebLayerTreeView::ViewportLayers& layers) {
cc::LayerTreeHost::ViewportLayers viewport_layers;
- if (overscroll_elasticity_layer) {
+ if (layers.overscroll_elasticity) {
viewport_layers.overscroll_elasticity =
- static_cast<const cc_blink::WebLayerImpl*>(overscroll_elasticity_layer)
+ static_cast<const cc_blink::WebLayerImpl*>(layers.overscroll_elasticity)
->layer();
}
viewport_layers.page_scale =
- static_cast<const cc_blink::WebLayerImpl*>(page_scale_layer)->layer();
- if (inner_viewport_container_layer) {
+ static_cast<const cc_blink::WebLayerImpl*>(layers.page_scale)->layer();
+ if (layers.inner_viewport_container) {
viewport_layers.inner_viewport_container =
static_cast<const cc_blink::WebLayerImpl*>(
- inner_viewport_container_layer)
+ layers.inner_viewport_container)
->layer();
}
- if (outer_viewport_container_layer) {
+ if (layers.outer_viewport_container) {
viewport_layers.outer_viewport_container =
static_cast<const cc_blink::WebLayerImpl*>(
- outer_viewport_container_layer)
+ layers.outer_viewport_container)
->layer();
}
viewport_layers.inner_viewport_scroll =
- static_cast<const cc_blink::WebLayerImpl*>(inner_viewport_scroll_layer)
+ static_cast<const cc_blink::WebLayerImpl*>(layers.inner_viewport_scroll)
->layer();
- if (outer_viewport_scroll_layer) {
+ if (layers.outer_viewport_scroll) {
viewport_layers.outer_viewport_scroll =
- static_cast<const cc_blink::WebLayerImpl*>(outer_viewport_scroll_layer)
+ static_cast<const cc_blink::WebLayerImpl*>(layers.outer_viewport_scroll)
->layer();
}
layer_tree_host_->RegisterViewportLayers(viewport_layers);
diff --git a/third_party/WebKit/Source/platform/testing/WebLayerTreeViewImplForTesting.h b/third_party/WebKit/Source/platform/testing/WebLayerTreeViewImplForTesting.h
index ddf923b..31c916e 100644
--- a/third_party/WebKit/Source/platform/testing/WebLayerTreeViewImplForTesting.h
+++ b/third_party/WebKit/Source/platform/testing/WebLayerTreeViewImplForTesting.h
@@ -58,14 +58,7 @@
void SetNeedsBeginFrame() override;
void DidStopFlinging() override;
void SetDeferCommits(bool) override;
- // TODO(pdr): Refactor to use a struct like LayerTreeHost::ViewportLayers.
- void RegisterViewportLayers(
- const blink::WebLayer* overscroll_elasticity_layer,
- const blink::WebLayer* page_scale_layer_layer,
- const blink::WebLayer* inner_viewport_container_layer,
- const blink::WebLayer* outer_viewport_container_layer,
- const blink::WebLayer* inner_viewport_scroll_layer,
- const blink::WebLayer* outer_viewport_scroll_layer) override;
+ void RegisterViewportLayers(const WebLayerTreeView::ViewportLayers&) override;
void ClearViewportLayers() override;
void RegisterSelection(const blink::WebSelection&) override;
void ClearSelection() override;
diff --git a/third_party/WebKit/Source/web/WebViewImpl.cpp b/third_party/WebKit/Source/web/WebViewImpl.cpp
index a11eb5b..be61617 100644
--- a/third_party/WebKit/Source/web/WebViewImpl.cpp
+++ b/third_party/WebKit/Source/web/WebViewImpl.cpp
@@ -3828,13 +3828,20 @@
// the mehtod.
visual_viewport.SetScrollLayerOnScrollbars(layout_viewport_scroll_web_layer);
- layer_tree_view_->RegisterViewportLayers(
- visual_viewport.OverscrollElasticityLayer()->PlatformLayer(),
- visual_viewport.PageScaleLayer()->PlatformLayer(),
- visual_viewport.ContainerLayer()->PlatformLayer(),
- layout_viewport_container_web_layer,
- visual_viewport.ScrollLayer()->PlatformLayer(),
- layout_viewport_scroll_web_layer);
+ WebLayerTreeView::ViewportLayers viewport_layers;
+ viewport_layers.overscroll_elasticity =
+ visual_viewport.OverscrollElasticityLayer()->PlatformLayer();
+ viewport_layers.page_scale =
+ visual_viewport.PageScaleLayer()->PlatformLayer();
+ viewport_layers.inner_viewport_container =
+ visual_viewport.ContainerLayer()->PlatformLayer();
+ viewport_layers.outer_viewport_container =
+ layout_viewport_container_web_layer;
+ viewport_layers.inner_viewport_scroll =
+ visual_viewport.ScrollLayer()->PlatformLayer();
+ viewport_layers.outer_viewport_scroll = layout_viewport_scroll_web_layer;
+
+ layer_tree_view_->RegisterViewportLayers(viewport_layers);
}
void WebViewImpl::SetRootGraphicsLayer(GraphicsLayer* graphics_layer) {
diff --git a/third_party/WebKit/public/platform/WebLayerTreeView.h b/third_party/WebKit/public/platform/WebLayerTreeView.h
index eac29e0..dd162199 100644
--- a/third_party/WebKit/public/platform/WebLayerTreeView.h
+++ b/third_party/WebKit/public/platform/WebLayerTreeView.h
@@ -139,14 +139,17 @@
// Prevents updates to layer tree from becoming visible.
virtual void SetDeferCommits(bool defer_commits) {}
+ struct ViewportLayers {
+ const WebLayer* overscroll_elasticity = nullptr;
+ const WebLayer* page_scale = nullptr;
+ const WebLayer* inner_viewport_container = nullptr;
+ const WebLayer* outer_viewport_container = nullptr;
+ const WebLayer* inner_viewport_scroll = nullptr;
+ const WebLayer* outer_viewport_scroll = nullptr;
+ };
+
// Identify key viewport layers to the compositor.
- virtual void RegisterViewportLayers(
- const WebLayer* overscroll_elasticity_layer,
- const WebLayer* page_scale_layer,
- const WebLayer* inner_viewport_container_layer,
- const WebLayer* outer_viewport_container_layer,
- const WebLayer* inner_viewport_scroll_layer,
- const WebLayer* outer_viewport_scroll_layer) {}
+ virtual void RegisterViewportLayers(const ViewportLayers& viewport_layers) {}
virtual void ClearViewportLayers() {}
// Used to update the active selection bounds.