diff options
author | marja@chromium.org <marja@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-15 15:15:04 +0000 |
---|---|---|
committer | marja@chromium.org <marja@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-02-15 15:15:04 +0000 |
commit | 2aa56ad912ff2b6514702e630354d2f24e8062a5 (patch) | |
tree | 6c00256016949fe1f89f66faded2dbcdbe8d0027 /android_webview/renderer | |
parent | bb7ec00d9f410f820110a52317587439b3d671e5 (diff) | |
download | chromium_src-2aa56ad912ff2b6514702e630354d2f24e8062a5.zip chromium_src-2aa56ad912ff2b6514702e630354d2f24e8062a5.tar.gz chromium_src-2aa56ad912ff2b6514702e630354d2f24e8062a5.tar.bz2 |
Revert 182710, this broke check_deps.
> [Android WebView] Migrate the rendering code to a separate set of classes.
>
> It takes from https://codereview.chromium.org/11823027/
> and assumes SW rendering and Capture Picture to be ready and enabled.
>
> Most changes just move around code. The major structural changes are:
> - Introduce a browser-layer view renderer interface and move the code to its implementation.
> - Take out the rendering-related IPC to its own separate set of host/renderer classes.
> - Change the way the view hierarchy and the compositor are initialized. Now they are created and set on BrowserViewRendererImpl construction.
> - Content is now provided via a ContentViewCore object when initialized, updating the layer to use and the WebContents to observe.
> - Remove/update the DEPS and gyp changes introduced to support rendering in the native layer.
>
> BUG=167913,167908,161409
> NOTRY=true
>
> Review URL: https://chromiumcodereview.appspot.com/12041009
TBR=leandrogracia@chromium.org
Review URL: https://codereview.chromium.org/12230059
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@182712 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview/renderer')
-rw-r--r-- | android_webview/renderer/aw_content_renderer_client.cc | 2 | ||||
-rw-r--r-- | android_webview/renderer/aw_render_view_ext.cc | 27 | ||||
-rw-r--r-- | android_webview/renderer/aw_render_view_ext.h | 9 | ||||
-rw-r--r-- | android_webview/renderer/view_renderer.cc | 61 | ||||
-rw-r--r-- | android_webview/renderer/view_renderer.h | 39 |
5 files changed, 36 insertions, 102 deletions
diff --git a/android_webview/renderer/aw_content_renderer_client.cc b/android_webview/renderer/aw_content_renderer_client.cc index a1995a3..9a8b21c 100644 --- a/android_webview/renderer/aw_content_renderer_client.cc +++ b/android_webview/renderer/aw_content_renderer_client.cc @@ -7,7 +7,6 @@ #include "android_webview/common/aw_resource.h" #include "android_webview/common/url_constants.h" #include "android_webview/renderer/aw_render_view_ext.h" -#include "android_webview/renderer/view_renderer.h" #include "base/utf_string_conversions.h" #include "components/visitedlink/renderer/visitedlink_slave.h" #include "content/public/renderer/render_thread.h" @@ -43,7 +42,6 @@ void AwContentRendererClient::RenderThreadStarted() { void AwContentRendererClient::RenderViewCreated( content::RenderView* render_view) { AwRenderViewExt::RenderViewCreated(render_view); - ViewRenderer::RenderViewCreated(render_view); } std::string AwContentRendererClient::GetDefaultEncoding() { diff --git a/android_webview/renderer/aw_render_view_ext.cc b/android_webview/renderer/aw_render_view_ext.cc index c895ed47..462553e39 100644 --- a/android_webview/renderer/aw_render_view_ext.cc +++ b/android_webview/renderer/aw_render_view_ext.cc @@ -129,9 +129,14 @@ void PopulateHitTestData(const GURL& absolute_link_url, AwRenderViewExt::AwRenderViewExt(content::RenderView* render_view) : content::RenderViewObserver(render_view) { render_view->GetWebView()->setPermissionClient(this); + // TODO(leandrogracia): remove when SW rendering uses Ubercompositor. + // Until then we need the callback enabled for SW mode invalidation. + // http://crbug.com/170086. + capture_picture_enabled_ = true; } AwRenderViewExt::~AwRenderViewExt() { + RendererPictureMap::GetInstance()->ClearRendererPicture(routing_id()); } // static @@ -144,6 +149,10 @@ bool AwRenderViewExt::OnMessageReceived(const IPC::Message& message) { IPC_BEGIN_MESSAGE_MAP(AwRenderViewExt, message) IPC_MESSAGE_HANDLER(AwViewMsg_DocumentHasImages, OnDocumentHasImagesRequest) IPC_MESSAGE_HANDLER(AwViewMsg_DoHitTest, OnDoHitTest) + IPC_MESSAGE_HANDLER(AwViewMsg_EnableCapturePictureCallback, + OnEnableCapturePictureCallback) + IPC_MESSAGE_HANDLER(AwViewMsg_CapturePictureSync, + OnCapturePictureSync) IPC_MESSAGE_HANDLER(AwViewMsg_SetTextZoomLevel, OnSetTextZoomLevel) IPC_MESSAGE_UNHANDLED(handled = false) IPC_END_MESSAGE_MAP() @@ -218,6 +227,15 @@ void AwRenderViewExt::FocusedNodeChanged(const WebKit::WebNode& node) { Send(new AwViewHostMsg_UpdateHitTestData(routing_id(), data)); } +void AwRenderViewExt::DidCommitCompositorFrame() { + if (!capture_picture_enabled_) + return; + + skia::RefPtr<SkPicture> picture = render_view()->CapturePicture(); + RendererPictureMap::GetInstance()->SetRendererPicture(routing_id(), picture); + Send(new AwViewHostMsg_PictureUpdated(routing_id())); +} + void AwRenderViewExt::OnDoHitTest(int view_x, int view_y) { if (!render_view() || !render_view()->GetWebView()) return; @@ -239,6 +257,15 @@ void AwRenderViewExt::OnDoHitTest(int view_x, int view_y) { Send(new AwViewHostMsg_UpdateHitTestData(routing_id(), data)); } +void AwRenderViewExt::OnEnableCapturePictureCallback(bool enable) { + capture_picture_enabled_ = enable; +} + +void AwRenderViewExt::OnCapturePictureSync() { + RendererPictureMap::GetInstance()->SetRendererPicture( + routing_id(), render_view()->CapturePicture()); +} + void AwRenderViewExt::OnSetTextZoomLevel(double zoom_level) { if (!render_view() || !render_view()->GetWebView()) return; diff --git a/android_webview/renderer/aw_render_view_ext.h b/android_webview/renderer/aw_render_view_ext.h index 8cea6e4..49cee36 100644 --- a/android_webview/renderer/aw_render_view_ext.h +++ b/android_webview/renderer/aw_render_view_ext.h @@ -7,6 +7,7 @@ #include "base/basictypes.h" #include "base/compiler_specific.h" +#include "base/memory/weak_ptr.h" #include "content/public/renderer/render_view_observer.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebPermissionClient.h" @@ -27,6 +28,9 @@ class AwRenderViewExt : public content::RenderViewObserver, public: static void RenderViewCreated(content::RenderView* render_view); + // Required to be public by IPC_MESSAGE_HANDLER for sync messages. + using content::RenderViewObserver::Send; + private: AwRenderViewExt(content::RenderView* render_view); virtual ~AwRenderViewExt(); @@ -36,11 +40,16 @@ class AwRenderViewExt : public content::RenderViewObserver, virtual void DidCommitProvisionalLoad(WebKit::WebFrame* frame, bool is_new_navigation) OVERRIDE; virtual void FocusedNodeChanged(const WebKit::WebNode& node) OVERRIDE; + virtual void DidCommitCompositorFrame() OVERRIDE; void OnDocumentHasImagesRequest(int id); void OnDoHitTest(int view_x, int view_y); + void OnEnableCapturePictureCallback(bool enable); + + void OnCapturePictureSync(); + void OnSetTextZoomLevel(double zoom_level); // WebKit::WebPermissionClient implementation. diff --git a/android_webview/renderer/view_renderer.cc b/android_webview/renderer/view_renderer.cc deleted file mode 100644 index dd0d7e7..0000000 --- a/android_webview/renderer/view_renderer.cc +++ /dev/null @@ -1,61 +0,0 @@ -// Copyright (c) 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "android_webview/renderer/view_renderer.h" - -#include "android_webview/common/render_view_messages.h" -#include "android_webview/common/renderer_picture_map.h" -#include "content/public/renderer/render_view.h" -#include "skia/ext/refptr.h" - -namespace android_webview { - -// static -void ViewRenderer::RenderViewCreated(content::RenderView* render_view) { - new ViewRenderer(render_view); // |render_view| takes ownership. -} - -ViewRenderer::ViewRenderer(content::RenderView* render_view) - : content::RenderViewObserver(render_view), - // TODO(leandrogracia): default to false when SW mode uses Ubercompositor. - // Until then we need picture updates enabled for SW mode invalidation. - // http://crbug.com/170086. - capture_picture_enabled_(true) { -} - -ViewRenderer::~ViewRenderer() { - RendererPictureMap::GetInstance()->ClearRendererPicture(routing_id()); -} - -bool ViewRenderer::OnMessageReceived(const IPC::Message& message) { - bool handled = true; - IPC_BEGIN_MESSAGE_MAP(ViewRenderer, message) - IPC_MESSAGE_HANDLER(AwViewMsg_EnableCapturePictureCallback, - OnEnableCapturePictureCallback) - IPC_MESSAGE_HANDLER(AwViewMsg_CapturePictureSync, - OnCapturePictureSync) - IPC_MESSAGE_UNHANDLED(handled = false) - IPC_END_MESSAGE_MAP() - return handled; -} - -void ViewRenderer::DidCommitCompositorFrame() { - if (!capture_picture_enabled_) - return; - - skia::RefPtr<SkPicture> picture = render_view()->CapturePicture(); - RendererPictureMap::GetInstance()->SetRendererPicture(routing_id(), picture); - Send(new AwViewHostMsg_PictureUpdated(routing_id())); -} - -void ViewRenderer::OnEnableCapturePictureCallback(bool enable) { - capture_picture_enabled_ = enable; -} - -void ViewRenderer::OnCapturePictureSync() { - RendererPictureMap::GetInstance()->SetRendererPicture( - routing_id(), render_view()->CapturePicture()); -} - -} // namespace android_webview diff --git a/android_webview/renderer/view_renderer.h b/android_webview/renderer/view_renderer.h deleted file mode 100644 index 8c4ba8f..0000000 --- a/android_webview/renderer/view_renderer.h +++ /dev/null @@ -1,39 +0,0 @@ -// Copyright (c) 2013 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef ANDROID_WEBVIEW_RENDERER_VIEW_RENDERER_H_ -#define ANDROID_WEBVIEW_RENDERER_VIEW_RENDERER_H_ - -#include "content/public/renderer/render_view_observer.h" - -namespace android_webview { - -// Render-process side of ViewRendererHost. -// Implements required interaction with content::RenderView. -class ViewRenderer : public content::RenderViewObserver { - public: - static void RenderViewCreated(content::RenderView* render_view); - - // Required to be public by IPC_MESSAGE_HANDLER. - using content::RenderViewObserver::Send; - - private: - ViewRenderer(content::RenderView* render_view); - virtual ~ViewRenderer(); - - // content::RenderViewObserver implementation. - virtual bool OnMessageReceived(const IPC::Message& message) OVERRIDE; - virtual void DidCommitCompositorFrame() OVERRIDE; - - void OnEnableCapturePictureCallback(bool enable); - void OnCapturePictureSync(); - - bool capture_picture_enabled_; - - DISALLOW_COPY_AND_ASSIGN(ViewRenderer); -}; - -} // namespace android_webview - -#endif // ANDROID_WEBVIEW_RENDERER_VIEW_RENDERER_H_ |