Blink Compositor: Merge initializeLayerTreeView and layerTreeView.
In WebWidgetClient.
This is a preparation CL to move cc::LayerTreeHost ownership from
content::RenderWidgetCompositor to Blink.
BUG=584551
Review-Url: https://codereview.chromium.org/2594913003
Cr-Commit-Position: refs/heads/master@{#442523}
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index b0cbd261..191694c39 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -1835,11 +1835,11 @@
}
}
-void RenderViewImpl::initializeLayerTreeView() {
- RenderWidget::initializeLayerTreeView();
+blink::WebLayerTreeView* RenderViewImpl::initializeLayerTreeView() {
+ blink::WebLayerTreeView* ltv = RenderWidget::initializeLayerTreeView();
RenderWidgetCompositor* rwc = compositor();
if (!rwc)
- return;
+ return ltv;
RenderThreadImpl* render_thread = RenderThreadImpl::current();
// render_thread may be NULL in tests.
@@ -1851,6 +1851,7 @@
webkit_preferences_.enable_scroll_animator);
has_added_input_handler_ = true;
}
+ return ltv;
}
void RenderViewImpl::closeWidgetSoon() {
diff --git a/content/renderer/render_view_impl.h b/content/renderer/render_view_impl.h
index 69ce1ae1..7cdb321 100644
--- a/content/renderer/render_view_impl.h
+++ b/content/renderer/render_view_impl.h
@@ -266,7 +266,7 @@
void didHandleGestureEvent(const blink::WebGestureEvent& event,
bool event_cancelled) override;
void onMouseDown(const blink::WebNode& mouse_down_node) override;
- void initializeLayerTreeView() override;
+ blink::WebLayerTreeView* initializeLayerTreeView() override;
// TODO(lfg): Remove once WebViewClient no longer inherits from
// WebWidgetClient.
diff --git a/content/renderer/render_widget.cc b/content/renderer/render_widget.cc
index 59b1d939..87b5077 100644
--- a/content/renderer/render_widget.cc
+++ b/content/renderer/render_widget.cc
@@ -1222,7 +1222,7 @@
compositor_->setViewportSize(physical_backing_size_);
}
-void RenderWidget::initializeLayerTreeView() {
+blink::WebLayerTreeView* RenderWidget::initializeLayerTreeView() {
DCHECK(!host_closing_);
compositor_ = RenderWidgetCompositor::Create(this, device_scale_factor_,
@@ -1239,6 +1239,8 @@
DCHECK_NE(MSG_ROUTING_NONE, routing_id_);
compositor_->SetFrameSinkId(
cc::FrameSinkId(RenderThread::Get()->GetClientId(), routing_id_));
+
+ return compositor_.get();
}
void RenderWidget::WillCloseLayerTreeView() {
@@ -1254,10 +1256,6 @@
widget->willCloseLayerTreeView();
}
-blink::WebLayerTreeView* RenderWidget::layerTreeView() {
- return compositor_.get();
-}
-
void RenderWidget::didMeaningfulLayout(blink::WebMeaningfulLayout layout_type) {
if (layout_type == blink::WebMeaningfulLayout::VisuallyNonEmpty) {
QueueMessage(new ViewHostMsg_DidFirstVisuallyNonEmptyPaint(routing_id_),
diff --git a/content/renderer/render_widget.h b/content/renderer/render_widget.h
index f7bfdeb9..a9d6b92 100644
--- a/content/renderer/render_widget.h
+++ b/content/renderer/render_widget.h
@@ -278,8 +278,7 @@
const gfx::Rect& window_screen_rect) override;
// blink::WebWidgetClient
- void initializeLayerTreeView() override;
- blink::WebLayerTreeView* layerTreeView() override;
+ blink::WebLayerTreeView* initializeLayerTreeView() override;
void didMeaningfulLayout(blink::WebMeaningfulLayout layout_type) override;
void didChangeCursor(const blink::WebCursorInfo&) override;
void closeWidgetSoon() override;
diff --git a/content/renderer/render_widget_fullscreen_pepper.cc b/content/renderer/render_widget_fullscreen_pepper.cc
index 97fd63d..d49f12b5 100644
--- a/content/renderer/render_widget_fullscreen_pepper.cc
+++ b/content/renderer/render_widget_fullscreen_pepper.cc
@@ -327,7 +327,7 @@
compositor_->clearRootLayer();
return;
}
- if (!layerTreeView())
+ if (!compositor())
initializeLayerTreeView();
layer_->setBounds(blink::WebSize(size()));
layer_->setDrawsContent(true);
diff --git a/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp b/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp
index a565b87b..dea6584 100644
--- a/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp
+++ b/third_party/WebKit/Source/web/WebFrameWidgetImpl.cpp
@@ -973,8 +973,7 @@
void WebFrameWidgetImpl::initializeLayerTreeView() {
if (m_client) {
DCHECK(!m_mutator);
- m_client->initializeLayerTreeView();
- m_layerTreeView = m_client->layerTreeView();
+ m_layerTreeView = m_client->initializeLayerTreeView();
if (m_layerTreeView && m_layerTreeView->compositorAnimationHost()) {
m_animationHost = WTF::makeUnique<CompositorAnimationHost>(
m_layerTreeView->compositorAnimationHost());
diff --git a/third_party/WebKit/Source/web/WebPagePopupImpl.cpp b/third_party/WebKit/Source/web/WebPagePopupImpl.cpp
index a0bffa4..880e19f 100644
--- a/third_party/WebKit/Source/web/WebPagePopupImpl.cpp
+++ b/third_party/WebKit/Source/web/WebPagePopupImpl.cpp
@@ -383,8 +383,7 @@
TRACE_EVENT0("blink",
"WebPagePopupImpl::setIsAcceleratedCompositingActive(true)");
- m_widgetClient->initializeLayerTreeView();
- m_layerTreeView = m_widgetClient->layerTreeView();
+ m_layerTreeView = m_widgetClient->initializeLayerTreeView();
if (m_layerTreeView) {
m_layerTreeView->setVisible(true);
m_isAcceleratedCompositingActive = true;
diff --git a/third_party/WebKit/Source/web/WebViewImpl.cpp b/third_party/WebKit/Source/web/WebViewImpl.cpp
index 3259fdb2..113edd6 100644
--- a/third_party/WebKit/Source/web/WebViewImpl.cpp
+++ b/third_party/WebKit/Source/web/WebViewImpl.cpp
@@ -3948,8 +3948,7 @@
void WebViewImpl::initializeLayerTreeView() {
if (m_client) {
- m_client->initializeLayerTreeView();
- m_layerTreeView = m_client->widgetClient()->layerTreeView();
+ m_layerTreeView = m_client->initializeLayerTreeView();
if (m_layerTreeView && m_layerTreeView->compositorAnimationHost()) {
m_animationHost = WTF::makeUnique<CompositorAnimationHost>(
m_layerTreeView->compositorAnimationHost());
diff --git a/third_party/WebKit/Source/web/tests/FrameTestHelpers.cpp b/third_party/WebKit/Source/web/tests/FrameTestHelpers.cpp
index 969aae0..a6ea7004 100644
--- a/third_party/WebKit/Source/web/tests/FrameTestHelpers.cpp
+++ b/third_party/WebKit/Source/web/tests/FrameTestHelpers.cpp
@@ -321,16 +321,13 @@
m_frame->close();
}
-void TestWebViewClient::initializeLayerTreeView() {
+WebLayerTreeView* TestWebViewClient::initializeLayerTreeView() {
m_layerTreeView = WTF::wrapUnique(new WebLayerTreeViewImplForTesting);
+ return m_layerTreeView.get();
}
-void TestWebViewWidgetClient::initializeLayerTreeView() {
- m_testWebViewClient->initializeLayerTreeView();
-}
-
-WebLayerTreeView* TestWebViewWidgetClient::layerTreeView() {
- return m_testWebViewClient->layerTreeView();
+WebLayerTreeView* TestWebViewWidgetClient::initializeLayerTreeView() {
+ return m_testWebViewClient->initializeLayerTreeView();
}
void TestWebViewWidgetClient::scheduleAnimation() {
diff --git a/third_party/WebKit/Source/web/tests/FrameTestHelpers.h b/third_party/WebKit/Source/web/tests/FrameTestHelpers.h
index f0197e0e..35e217c 100644
--- a/third_party/WebKit/Source/web/tests/FrameTestHelpers.h
+++ b/third_party/WebKit/Source/web/tests/FrameTestHelpers.h
@@ -149,8 +149,7 @@
: m_testWebViewClient(testWebViewClient) {}
virtual ~TestWebViewWidgetClient() {}
- void initializeLayerTreeView() override;
- WebLayerTreeView* layerTreeView() override;
+ WebLayerTreeView* initializeLayerTreeView() override;
void scheduleAnimation() override;
void didMeaningfulLayout(WebMeaningfulLayout) override;
@@ -163,8 +162,7 @@
TestWebViewClient()
: m_testWebWidgetClient(this), m_animationScheduled(false) {}
virtual ~TestWebViewClient() {}
- void initializeLayerTreeView() override;
- WebLayerTreeView* layerTreeView() override { return m_layerTreeView.get(); }
+ WebLayerTreeView* initializeLayerTreeView() override;
void scheduleAnimation() override { m_animationScheduled = true; }
bool animationScheduled() { return m_animationScheduled; }
diff --git a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
index 628cc592..57c6757 100644
--- a/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
+++ b/third_party/WebKit/Source/web/tests/WebFrameTest.cpp
@@ -5587,7 +5587,9 @@
: public FrameTestHelpers::TestWebViewClient {
public:
~CompositedSelectionBoundsTestWebViewClient() override {}
- WebLayerTreeView* layerTreeView() override { return &m_testLayerTreeView; }
+ WebLayerTreeView* initializeLayerTreeView() override {
+ return &m_testLayerTreeView;
+ }
CompositedSelectionBoundsTestLayerTreeView& selectionLayerTreeView() {
return m_testLayerTreeView;
@@ -8133,7 +8135,7 @@
class TestFullscreenWebViewClient : public FrameTestHelpers::TestWebViewClient {
public:
- WebLayerTreeView* layerTreeView() override {
+ WebLayerTreeView* initializeLayerTreeView() override {
return &testFullscreenLayerTreeView;
}
TestFullscreenWebLayerTreeView testFullscreenLayerTreeView;
diff --git a/third_party/WebKit/Source/web/tests/sim/SimWebViewClient.h b/third_party/WebKit/Source/web/tests/sim/SimWebViewClient.h
index fec3bb3d..581b445 100644
--- a/third_party/WebKit/Source/web/tests/sim/SimWebViewClient.h
+++ b/third_party/WebKit/Source/web/tests/sim/SimWebViewClient.h
@@ -15,7 +15,9 @@
public:
explicit SimWebViewClient(WebLayerTreeView&);
- WebLayerTreeView* layerTreeView() override { return m_layerTreeView; }
+ WebLayerTreeView* initializeLayerTreeView() override {
+ return m_layerTreeView;
+ }
int visuallyNonEmptyLayoutCount() const {
return m_visuallyNonEmptyLayoutCount;
diff --git a/third_party/WebKit/public/web/WebViewClient.h b/third_party/WebKit/public/web/WebViewClient.h
index af3fe7c..3f77867 100644
--- a/third_party/WebKit/public/web/WebViewClient.h
+++ b/third_party/WebKit/public/web/WebViewClient.h
@@ -272,7 +272,7 @@
const WebFloatPoint& positionInViewport,
const WebFloatSize& velocityInViewport) override {}
void hasTouchEventHandlers(bool) override {}
- void initializeLayerTreeView() override {}
+ WebLayerTreeView* initializeLayerTreeView() override { return nullptr; }
void resetInputMethod() override {}
WebScreenInfo screenInfo() override { return WebScreenInfo(); }
void setTouchAction(WebTouchAction touchAction) override {}
diff --git a/third_party/WebKit/public/web/WebWidgetClient.h b/third_party/WebKit/public/web/WebWidgetClient.h
index 60ac185..bd80104e 100644
--- a/third_party/WebKit/public/web/WebWidgetClient.h
+++ b/third_party/WebKit/public/web/WebWidgetClient.h
@@ -61,15 +61,12 @@
// Called when a region of the WebWidget needs to be re-painted.
virtual void didInvalidateRect(const WebRect&) {}
- // Attempt to initialize compositing for this widget. If this is successful,
- // layerTreeView() will return a valid WebLayerTreeView.
- virtual void initializeLayerTreeView() {}
-
- // Return a compositing view used for this widget. This is owned by the
+ // Attempt to initialize compositing view for this widget. If successful,
+ // returns a valid WebLayerTreeView which is owned by the
// WebWidgetClient.
- virtual WebLayerTreeView* layerTreeView() { return 0; }
- // FIXME: Remove all overrides of this and change layerTreeView() above to
- // ASSERT_NOT_REACHED.
+ virtual WebLayerTreeView* initializeLayerTreeView() { return nullptr; }
+
+ // FIXME: Remove all overrides of this.
virtual bool allowsBrokenNullLayerTreeView() const { return false; }
// Called when a call to WebWidget::animate is required