diff options
author | leandrogracia@chromium.org <leandrogracia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-04 12:20:24 +0000 |
---|---|---|
committer | leandrogracia@chromium.org <leandrogracia@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-01-04 12:20:24 +0000 |
commit | 11b426f286e9d641c2cbe075e28284ae9d952f94 (patch) | |
tree | 4ba31f147c0bbd919e8cbc8d11b4e9163c5f5924 /android_webview/common | |
parent | 942f75aad836a8ae3b154289f5db27b58b5c182c (diff) | |
download | chromium_src-11b426f286e9d641c2cbe075e28284ae9d952f94.zip chromium_src-11b426f286e9d641c2cbe075e28284ae9d952f94.tar.gz chromium_src-11b426f286e9d641c2cbe075e28284ae9d952f94.tar.bz2 |
[Android WebView] Prepare to simulate SW rendering with the capture picture API backend.
Introduce the required code to get SW rendering working once RenderView is able
to provide the required picture piles from the compositor.
BUG=167913
Review URL: https://codereview.chromium.org/11727005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@175135 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview/common')
-rw-r--r-- | android_webview/common/render_view_messages.h | 8 | ||||
-rw-r--r-- | android_webview/common/renderer_picture_map.cc | 48 | ||||
-rw-r--r-- | android_webview/common/renderer_picture_map.h | 38 |
3 files changed, 94 insertions, 0 deletions
diff --git a/android_webview/common/render_view_messages.h b/android_webview/common/render_view_messages.h index 76f8779..53b23f3 100644 --- a/android_webview/common/render_view_messages.h +++ b/android_webview/common/render_view_messages.h @@ -51,6 +51,10 @@ IPC_MESSAGE_ROUTED2(AwViewMsg_DoHitTest, int /* view_x */, int /* view_y */) +// Enables receiving pictures from the renderer on every new frame. +IPC_MESSAGE_ROUTED1(AwViewMsg_EnableCapturePictureCallback, + bool /* enable */) + //----------------------------------------------------------------------------- // RenderView messages // These are messages sent from the renderer to the browser process. @@ -63,3 +67,7 @@ IPC_MESSAGE_ROUTED2(AwViewHostMsg_DocumentHasImagesResponse, // Response to AwViewMsg_DoHitTest. IPC_MESSAGE_ROUTED1(AwViewHostMsg_UpdateHitTestData, android_webview::AwHitTestData) + +// Notification that a new picture becomes available. It is only sent if +// AwViewMsg_EnableCapturePictureCallback was previously enabled. +IPC_MESSAGE_ROUTED0(AwViewHostMsg_PictureUpdated) diff --git a/android_webview/common/renderer_picture_map.cc b/android_webview/common/renderer_picture_map.cc new file mode 100644 index 0000000..f5e9e03 --- /dev/null +++ b/android_webview/common/renderer_picture_map.cc @@ -0,0 +1,48 @@ +// Copyright (c) 2012 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/common/renderer_picture_map.h" + +using base::AutoLock; + +namespace android_webview { + +static RendererPictureMap* g_renderer_picture_map = NULL; + +// static +void RendererPictureMap::CreateInstance() { + if (!g_renderer_picture_map) + g_renderer_picture_map = new RendererPictureMap(); +} + +// static +RendererPictureMap* RendererPictureMap::GetInstance() { + DCHECK(g_renderer_picture_map); + return g_renderer_picture_map; +} + +RendererPictureMap::RendererPictureMap() { +} + +RendererPictureMap::~RendererPictureMap() { +} + +scoped_refptr<cc::PicturePileImpl> RendererPictureMap::GetRendererPicture( + int id) { + AutoLock lock(lock_); + return picture_map_[id]; +} + +void RendererPictureMap::SetRendererPicture(int id, + scoped_refptr<cc::PicturePileImpl> picture) { + AutoLock lock(lock_); + picture_map_[id] = picture; +} + +void RendererPictureMap::ClearRendererPicture(int id) { + AutoLock lock(lock_); + picture_map_.erase(id); +} + +} // android_webview diff --git a/android_webview/common/renderer_picture_map.h b/android_webview/common/renderer_picture_map.h new file mode 100644 index 0000000..5129129 --- /dev/null +++ b/android_webview/common/renderer_picture_map.h @@ -0,0 +1,38 @@ +// Copyright (c) 2012 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_COMMON_RENDERER_PICTURE_MAP_H_ +#define ANDROID_WEBVIEW_COMMON_RENDERER_PICTURE_MAP_H_ + +#include <map> + +#include "base/memory/ref_counted.h" +#include "base/synchronization/lock.h" +#include "cc/picture_pile_impl.h" + +namespace android_webview { + +// Stores picture piles received from diferent renderers and associates them by +// renderer id. Will only work in single process mode. +class RendererPictureMap { + public: + static void CreateInstance(); + static RendererPictureMap* GetInstance(); + + scoped_refptr<cc::PicturePileImpl> GetRendererPicture(int id); + void SetRendererPicture(int id, scoped_refptr<cc::PicturePileImpl> picture); + void ClearRendererPicture(int id); + + private: + RendererPictureMap(); + ~RendererPictureMap(); + + typedef std::map<int, scoped_refptr<cc::PicturePileImpl> > PictureMap; + PictureMap picture_map_; + base::Lock lock_; +}; + +} // android_webview + +#endif // ANDROID_WEBVIEW_COMMON_RENDERER_PICTURE_MAP_H_ |