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