Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Side by Side Diff: android_webview/renderer/aw_render_view_ext.cc

Issue 12041009: [Android WebView] Migrate the rendering code to a separate set of classes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: upload error, re-uploading. Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « android_webview/renderer/aw_render_view_ext.h ('k') | android_webview/renderer/view_renderer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "android_webview/renderer/aw_render_view_ext.h" 5 #include "android_webview/renderer/aw_render_view_ext.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "android_webview/common/aw_hit_test_data.h" 9 #include "android_webview/common/aw_hit_test_data.h"
10 #include "android_webview/common/render_view_messages.h" 10 #include "android_webview/common/render_view_messages.h"
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 data->type = AwHitTestData::EDIT_TEXT_TYPE; 122 data->type = AwHitTestData::EDIT_TEXT_TYPE;
123 DCHECK(data->extra_data_for_type.length() == 0); 123 DCHECK(data->extra_data_for_type.length() == 0);
124 } 124 }
125 } 125 }
126 126
127 } // namespace 127 } // namespace
128 128
129 AwRenderViewExt::AwRenderViewExt(content::RenderView* render_view) 129 AwRenderViewExt::AwRenderViewExt(content::RenderView* render_view)
130 : content::RenderViewObserver(render_view) { 130 : content::RenderViewObserver(render_view) {
131 render_view->GetWebView()->setPermissionClient(this); 131 render_view->GetWebView()->setPermissionClient(this);
132 // TODO(leandrogracia): remove when SW rendering uses Ubercompositor.
133 // Until then we need the callback enabled for SW mode invalidation.
134 // http://crbug.com/170086.
135 capture_picture_enabled_ = true;
136 } 132 }
137 133
138 AwRenderViewExt::~AwRenderViewExt() { 134 AwRenderViewExt::~AwRenderViewExt() {
139 RendererPictureMap::GetInstance()->ClearRendererPicture(routing_id());
140 } 135 }
141 136
142 // static 137 // static
143 void AwRenderViewExt::RenderViewCreated(content::RenderView* render_view) { 138 void AwRenderViewExt::RenderViewCreated(content::RenderView* render_view) {
144 new AwRenderViewExt(render_view); // |render_view| takes ownership. 139 new AwRenderViewExt(render_view); // |render_view| takes ownership.
145 } 140 }
146 141
147 bool AwRenderViewExt::OnMessageReceived(const IPC::Message& message) { 142 bool AwRenderViewExt::OnMessageReceived(const IPC::Message& message) {
148 bool handled = true; 143 bool handled = true;
149 IPC_BEGIN_MESSAGE_MAP(AwRenderViewExt, message) 144 IPC_BEGIN_MESSAGE_MAP(AwRenderViewExt, message)
150 IPC_MESSAGE_HANDLER(AwViewMsg_DocumentHasImages, OnDocumentHasImagesRequest) 145 IPC_MESSAGE_HANDLER(AwViewMsg_DocumentHasImages, OnDocumentHasImagesRequest)
151 IPC_MESSAGE_HANDLER(AwViewMsg_DoHitTest, OnDoHitTest) 146 IPC_MESSAGE_HANDLER(AwViewMsg_DoHitTest, OnDoHitTest)
152 IPC_MESSAGE_HANDLER(AwViewMsg_EnableCapturePictureCallback,
153 OnEnableCapturePictureCallback)
154 IPC_MESSAGE_HANDLER(AwViewMsg_CapturePictureSync,
155 OnCapturePictureSync)
156 IPC_MESSAGE_HANDLER(AwViewMsg_SetTextZoomLevel, OnSetTextZoomLevel) 147 IPC_MESSAGE_HANDLER(AwViewMsg_SetTextZoomLevel, OnSetTextZoomLevel)
157 IPC_MESSAGE_UNHANDLED(handled = false) 148 IPC_MESSAGE_UNHANDLED(handled = false)
158 IPC_END_MESSAGE_MAP() 149 IPC_END_MESSAGE_MAP()
159 return handled; 150 return handled;
160 } 151 }
161 152
162 void AwRenderViewExt::OnDocumentHasImagesRequest(int id) { 153 void AwRenderViewExt::OnDocumentHasImagesRequest(int id) {
163 bool hasImages = false; 154 bool hasImages = false;
164 if (render_view()) { 155 if (render_view()) {
165 WebKit::WebView* webview = render_view()->GetWebView(); 156 WebKit::WebView* webview = render_view()->GetWebView();
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 GetAbsoluteSrcUrl(child_img.toConst<WebKit::WebElement>()); 211 GetAbsoluteSrcUrl(child_img.toConst<WebKit::WebElement>());
221 } 212 }
222 213
223 PopulateHitTestData(absolute_link_url, 214 PopulateHitTestData(absolute_link_url,
224 absolute_image_url, 215 absolute_image_url,
225 render_view()->IsEditableNode(node), 216 render_view()->IsEditableNode(node),
226 &data); 217 &data);
227 Send(new AwViewHostMsg_UpdateHitTestData(routing_id(), data)); 218 Send(new AwViewHostMsg_UpdateHitTestData(routing_id(), data));
228 } 219 }
229 220
230 void AwRenderViewExt::DidCommitCompositorFrame() {
231 if (!capture_picture_enabled_)
232 return;
233
234 skia::RefPtr<SkPicture> picture = render_view()->CapturePicture();
235 RendererPictureMap::GetInstance()->SetRendererPicture(routing_id(), picture);
236 Send(new AwViewHostMsg_PictureUpdated(routing_id()));
237 }
238
239 void AwRenderViewExt::OnDoHitTest(int view_x, int view_y) { 221 void AwRenderViewExt::OnDoHitTest(int view_x, int view_y) {
240 if (!render_view() || !render_view()->GetWebView()) 222 if (!render_view() || !render_view()->GetWebView())
241 return; 223 return;
242 224
243 const WebKit::WebHitTestResult result = 225 const WebKit::WebHitTestResult result =
244 render_view()->GetWebView()->hitTestResultAt( 226 render_view()->GetWebView()->hitTestResultAt(
245 WebKit::WebPoint(view_x, view_y)); 227 WebKit::WebPoint(view_x, view_y));
246 AwHitTestData data; 228 AwHitTestData data;
247 229
248 if (!result.urlElement().isNull()) { 230 if (!result.urlElement().isNull()) {
249 data.anchor_text = result.urlElement().innerText(); 231 data.anchor_text = result.urlElement().innerText();
250 data.href = GetHref(result.urlElement()); 232 data.href = GetHref(result.urlElement());
251 } 233 }
252 234
253 PopulateHitTestData(result.absoluteLinkURL(), 235 PopulateHitTestData(result.absoluteLinkURL(),
254 result.absoluteImageURL(), 236 result.absoluteImageURL(),
255 result.isContentEditable(), 237 result.isContentEditable(),
256 &data); 238 &data);
257 Send(new AwViewHostMsg_UpdateHitTestData(routing_id(), data)); 239 Send(new AwViewHostMsg_UpdateHitTestData(routing_id(), data));
258 } 240 }
259 241
260 void AwRenderViewExt::OnEnableCapturePictureCallback(bool enable) {
261 capture_picture_enabled_ = enable;
262 }
263
264 void AwRenderViewExt::OnCapturePictureSync() {
265 RendererPictureMap::GetInstance()->SetRendererPicture(
266 routing_id(), render_view()->CapturePicture());
267 }
268
269 void AwRenderViewExt::OnSetTextZoomLevel(double zoom_level) { 242 void AwRenderViewExt::OnSetTextZoomLevel(double zoom_level) {
270 if (!render_view() || !render_view()->GetWebView()) 243 if (!render_view() || !render_view()->GetWebView())
271 return; 244 return;
272 // Hide selection and autofill popups. 245 // Hide selection and autofill popups.
273 render_view()->GetWebView()->hidePopups(); 246 render_view()->GetWebView()->hidePopups();
274 render_view()->GetWebView()->setZoomLevel(true, zoom_level); 247 render_view()->GetWebView()->setZoomLevel(true, zoom_level);
275 } 248 }
276 249
277 } // namespace android_webview 250 } // namespace android_webview
OLDNEW
« no previous file with comments | « android_webview/renderer/aw_render_view_ext.h ('k') | android_webview/renderer/view_renderer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698