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

Side by Side Diff: trunk/src/content/browser/renderer_host/render_widget_host_view_android.cc

Issue 149653004: Revert 248827 "android: Migrate old content readback to use asyn..." (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 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
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 "content/browser/renderer_host/render_widget_host_view_android.h" 5 #include "content/browser/renderer_host/render_widget_host_view_android.h"
6 6
7 #include <android/bitmap.h> 7 #include <android/bitmap.h>
8 8
9 #include "base/basictypes.h" 9 #include "base/basictypes.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
132 return latency_info; 132 return latency_info;
133 } 133 }
134 134
135 } // anonymous namespace 135 } // anonymous namespace
136 136
137 RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid( 137 RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid(
138 RenderWidgetHostImpl* widget_host, 138 RenderWidgetHostImpl* widget_host,
139 ContentViewCoreImpl* content_view_core) 139 ContentViewCoreImpl* content_view_core)
140 : host_(widget_host), 140 : host_(widget_host),
141 needs_begin_frame_(false), 141 needs_begin_frame_(false),
142 is_showing_(!widget_host->is_hidden()), 142 are_layers_attached_(!widget_host->is_hidden()),
143 content_view_core_(NULL), 143 content_view_core_(NULL),
144 ime_adapter_android_(this), 144 ime_adapter_android_(this),
145 cached_background_color_(SK_ColorWHITE), 145 cached_background_color_(SK_ColorWHITE),
146 texture_id_in_layer_(0), 146 texture_id_in_layer_(0),
147 last_output_surface_id_(kUndefinedOutputSurfaceId), 147 last_output_surface_id_(kUndefinedOutputSurfaceId),
148 weak_ptr_factory_(this), 148 weak_ptr_factory_(this),
149 overscroll_effect_enabled_( 149 overscroll_effect_enabled_(
150 !CommandLine::ForCurrentProcess()-> 150 !CommandLine::ForCurrentProcess()->
151 HasSwitch(switches::kDisableOverscrollEdgeEffect)), 151 HasSwitch(switches::kDisableOverscrollEdgeEffect)),
152 overscroll_effect_(OverscrollGlow::Create(overscroll_effect_enabled_)), 152 overscroll_effect_(OverscrollGlow::Create(overscroll_effect_enabled_)),
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 // Ignore the given size as only the Java code has the power to 252 // Ignore the given size as only the Java code has the power to
253 // resize the view on Android. 253 // resize the view on Android.
254 default_size_ = size; 254 default_size_ = size;
255 WasResized(); 255 WasResized();
256 } 256 }
257 257
258 void RenderWidgetHostViewAndroid::SetBounds(const gfx::Rect& rect) { 258 void RenderWidgetHostViewAndroid::SetBounds(const gfx::Rect& rect) {
259 SetSize(rect.size()); 259 SetSize(rect.size());
260 } 260 }
261 261
262 void RenderWidgetHostViewAndroid::GetScaledContentBitmap( 262 blink::WebGLId RenderWidgetHostViewAndroid::GetScaledContentTexture(
263 float scale, 263 float scale,
264 gfx::Size* out_size, 264 gfx::Size* out_size) {
265 const base::Callback<void(bool, const SkBitmap&)>& result_callback) { 265 gfx::Size size(gfx::ToCeiledSize(
266 if (!IsSurfaceAvailableForCopy()) { 266 gfx::ScaleSize(texture_size_in_layer_, scale)));
267 result_callback.Run(false, SkBitmap()); 267
268 return; 268 if (!CompositorImpl::IsInitialized() ||
269 texture_id_in_layer_ == 0 ||
270 texture_size_in_layer_.IsEmpty() ||
271 size.IsEmpty()) {
272 if (out_size)
273 out_size->SetSize(0, 0);
274
275 return 0;
269 } 276 }
270 277
271 gfx::Size bounds = layer_->bounds(); 278 if (out_size)
272 gfx::Rect src_subrect(bounds); 279 *out_size = size;
273 const gfx::Display& display = 280
274 gfx::Screen::GetNativeScreen()->GetPrimaryDisplay(); 281 GLHelper* helper = ImageTransportFactoryAndroid::GetInstance()->GetGLHelper();
275 float device_scale_factor = display.device_scale_factor(); 282 return helper->CopyAndScaleTexture(texture_id_in_layer_,
276 DCHECK_GT(device_scale_factor, 0); 283 texture_size_in_layer_,
277 gfx::Size dst_size( 284 size,
278 gfx::ToCeiledSize(gfx::ScaleSize(bounds, scale / device_scale_factor))); 285 true,
279 *out_size = dst_size; 286 GLHelper::SCALER_QUALITY_FAST);
280 CopyFromCompositingSurface(
281 src_subrect, dst_size, result_callback, SkBitmap::kARGB_8888_Config);
282 } 287 }
283 288
284 bool RenderWidgetHostViewAndroid::PopulateBitmapWithContents(jobject jbitmap) { 289 bool RenderWidgetHostViewAndroid::PopulateBitmapWithContents(jobject jbitmap) {
285 if (!CompositorImpl::IsInitialized() || 290 if (!CompositorImpl::IsInitialized() ||
286 texture_id_in_layer_ == 0 || 291 texture_id_in_layer_ == 0 ||
287 texture_size_in_layer_.IsEmpty()) 292 texture_size_in_layer_.IsEmpty())
288 return false; 293 return false;
289 294
290 gfx::JavaBitmap bitmap(jbitmap); 295 gfx::JavaBitmap bitmap(jbitmap);
291 296
(...skipping 19 matching lines...) Expand all
311 gpu::gles2::GLES2Interface* gl = 316 gpu::gles2::GLES2Interface* gl =
312 ImageTransportFactoryAndroid::GetInstance()->GetContextGL(); 317 ImageTransportFactoryAndroid::GetInstance()->GetContextGL();
313 gl->DeleteTextures(1, &texture); 318 gl->DeleteTextures(1, &texture);
314 319
315 return true; 320 return true;
316 } 321 }
317 322
318 bool RenderWidgetHostViewAndroid::HasValidFrame() const { 323 bool RenderWidgetHostViewAndroid::HasValidFrame() const {
319 if (!content_view_core_) 324 if (!content_view_core_)
320 return false; 325 return false;
321 if (!layer_)
322 return false;
323
324 if (texture_size_in_layer_.IsEmpty()) 326 if (texture_size_in_layer_.IsEmpty())
325 return false; 327 return false;
326 328
327 if (UsingDelegatedRenderer()) { 329 if (UsingDelegatedRenderer()) {
328 if (!delegated_renderer_layer_.get()) 330 if (!delegated_renderer_layer_.get())
329 return false; 331 return false;
330 } else { 332 } else {
331 if (texture_id_in_layer_ == 0) 333 if (texture_id_in_layer_ == 0)
332 return false; 334 return false;
333 } 335 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 return false; // ContentViewCore not created yet. 380 return false; // ContentViewCore not created yet.
379 381
380 return content_view_core_->HasFocus(); 382 return content_view_core_->HasFocus();
381 } 383 }
382 384
383 bool RenderWidgetHostViewAndroid::IsSurfaceAvailableForCopy() const { 385 bool RenderWidgetHostViewAndroid::IsSurfaceAvailableForCopy() const {
384 return HasValidFrame(); 386 return HasValidFrame();
385 } 387 }
386 388
387 void RenderWidgetHostViewAndroid::Show() { 389 void RenderWidgetHostViewAndroid::Show() {
388 if (is_showing_) 390 if (are_layers_attached_)
389 return; 391 return;
390 392
391 is_showing_ = true; 393 are_layers_attached_ = true;
392 if (layer_) 394 AttachLayers();
393 layer_->SetHideLayerAndSubtree(false);
394 395
395 frame_evictor_->SetVisible(true); 396 frame_evictor_->SetVisible(true);
396 WasShown(); 397 WasShown();
397 } 398 }
398 399
399 void RenderWidgetHostViewAndroid::Hide() { 400 void RenderWidgetHostViewAndroid::Hide() {
400 if (!is_showing_) 401 if (!are_layers_attached_)
401 return; 402 return;
402 403
403 is_showing_ = false; 404 are_layers_attached_ = false;
404 if (layer_) 405 RemoveLayers();
405 layer_->SetHideLayerAndSubtree(true);
406 406
407 frame_evictor_->SetVisible(false); 407 frame_evictor_->SetVisible(false);
408 WasHidden(); 408 WasHidden();
409 } 409 }
410 410
411 bool RenderWidgetHostViewAndroid::IsShowing() { 411 bool RenderWidgetHostViewAndroid::IsShowing() {
412 // ContentViewCoreImpl represents the native side of the Java 412 // ContentViewCoreImpl represents the native side of the Java
413 // ContentViewCore. It being NULL means that it is not attached 413 // ContentViewCore. It being NULL means that it is not attached
414 // to the View system yet, so we treat this RWHVA as hidden. 414 // to the View system yet, so we treat this RWHVA as hidden.
415 return is_showing_ && content_view_core_; 415 return are_layers_attached_ && content_view_core_;
416 } 416 }
417 417
418 void RenderWidgetHostViewAndroid::LockResources() { 418 void RenderWidgetHostViewAndroid::LockResources() {
419 DCHECK(HasValidFrame()); 419 DCHECK(HasValidFrame());
420 DCHECK(host_); 420 DCHECK(host_);
421 DCHECK(!host_->is_hidden()); 421 DCHECK(!host_->is_hidden());
422 frame_evictor_->LockFrame(); 422 frame_evictor_->LockFrame();
423 } 423 }
424 424
425 void RenderWidgetHostViewAndroid::UnlockResources() { 425 void RenderWidgetHostViewAndroid::UnlockResources() {
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 ack); 749 ack);
750 } 750 }
751 751
752 void RenderWidgetHostViewAndroid::UnusedResourcesAreAvailable() { 752 void RenderWidgetHostViewAndroid::UnusedResourcesAreAvailable() {
753 if (ack_callbacks_.size()) 753 if (ack_callbacks_.size())
754 return; 754 return;
755 SendReturnedDelegatedResources(last_output_surface_id_); 755 SendReturnedDelegatedResources(last_output_surface_id_);
756 } 756 }
757 757
758 void RenderWidgetHostViewAndroid::DestroyDelegatedContent() { 758 void RenderWidgetHostViewAndroid::DestroyDelegatedContent() {
759 RemoveLayers(); 759 if (are_layers_attached_)
760 RemoveLayers();
760 frame_provider_ = NULL; 761 frame_provider_ = NULL;
761 delegated_renderer_layer_ = NULL; 762 delegated_renderer_layer_ = NULL;
762 layer_ = NULL; 763 layer_ = NULL;
763 } 764 }
764 765
765 void RenderWidgetHostViewAndroid::SwapDelegatedFrame( 766 void RenderWidgetHostViewAndroid::SwapDelegatedFrame(
766 uint32 output_surface_id, 767 uint32 output_surface_id,
767 scoped_ptr<cc::DelegatedFrameData> frame_data) { 768 scoped_ptr<cc::DelegatedFrameData> frame_data) {
768 bool has_content = !texture_size_in_layer_.IsEmpty(); 769 bool has_content = !texture_size_in_layer_.IsEmpty();
769 770
(...skipping 14 matching lines...) Expand all
784 785
785 if (!has_content) { 786 if (!has_content) {
786 DestroyDelegatedContent(); 787 DestroyDelegatedContent();
787 } else { 788 } else {
788 if (!resource_collection_.get()) { 789 if (!resource_collection_.get()) {
789 resource_collection_ = new cc::DelegatedFrameResourceCollection; 790 resource_collection_ = new cc::DelegatedFrameResourceCollection;
790 resource_collection_->SetClient(this); 791 resource_collection_->SetClient(this);
791 } 792 }
792 if (!frame_provider_ || 793 if (!frame_provider_ ||
793 texture_size_in_layer_ != frame_provider_->frame_size()) { 794 texture_size_in_layer_ != frame_provider_->frame_size()) {
794 RemoveLayers(); 795 if (are_layers_attached_)
796 RemoveLayers();
795 frame_provider_ = new cc::DelegatedFrameProvider( 797 frame_provider_ = new cc::DelegatedFrameProvider(
796 resource_collection_.get(), frame_data.Pass()); 798 resource_collection_.get(), frame_data.Pass());
797 delegated_renderer_layer_ = 799 delegated_renderer_layer_ =
798 cc::DelegatedRendererLayer::Create(frame_provider_); 800 cc::DelegatedRendererLayer::Create(frame_provider_);
799 layer_ = delegated_renderer_layer_; 801 layer_ = delegated_renderer_layer_;
800 AttachLayers(); 802 if (are_layers_attached_)
803 AttachLayers();
801 } else { 804 } else {
802 frame_provider_->SetFrameData(frame_data.Pass()); 805 frame_provider_->SetFrameData(frame_data.Pass());
803 } 806 }
804 } 807 }
805 808
806 if (delegated_renderer_layer_.get()) { 809 if (delegated_renderer_layer_.get()) {
807 delegated_renderer_layer_->SetDisplaySize(texture_size_in_layer_); 810 delegated_renderer_layer_->SetDisplaySize(texture_size_in_layer_);
808 delegated_renderer_layer_->SetIsDrawable(true); 811 delegated_renderer_layer_->SetIsDrawable(true);
809 delegated_renderer_layer_->SetContentsOpaque(true); 812 delegated_renderer_layer_->SetContentsOpaque(true);
810 delegated_renderer_layer_->SetBounds(content_size_in_layer_); 813 delegated_renderer_layer_->SetBounds(content_size_in_layer_);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
849 852
850 DCHECK(frame->delegated_frame_data); 853 DCHECK(frame->delegated_frame_data);
851 DCHECK(!frame->delegated_frame_data->render_pass_list.empty()); 854 DCHECK(!frame->delegated_frame_data->render_pass_list.empty());
852 855
853 cc::RenderPass* root_pass = 856 cc::RenderPass* root_pass =
854 frame->delegated_frame_data->render_pass_list.back(); 857 frame->delegated_frame_data->render_pass_list.back();
855 texture_size_in_layer_ = root_pass->output_rect.size(); 858 texture_size_in_layer_ = root_pass->output_rect.size();
856 ComputeContentsSize(frame->metadata); 859 ComputeContentsSize(frame->metadata);
857 860
858 SwapDelegatedFrame(output_surface_id, frame->delegated_frame_data.Pass()); 861 SwapDelegatedFrame(output_surface_id, frame->delegated_frame_data.Pass());
859 frame_evictor_->SwappedFrame(!host_->is_hidden());
860 return; 862 return;
861 } 863 }
862 864
863 DCHECK(!UsingDelegatedRenderer()); 865 DCHECK(!UsingDelegatedRenderer());
864 866
865 if (!frame->gl_frame_data || frame->gl_frame_data->mailbox.IsZero()) 867 if (!frame->gl_frame_data || frame->gl_frame_data->mailbox.IsZero())
866 return; 868 return;
867 869
868 if (output_surface_id != last_output_surface_id_) { 870 if (output_surface_id != last_output_surface_id_) {
869 current_mailbox_ = gpu::Mailbox(); 871 current_mailbox_ = gpu::Mailbox();
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
1002 1004
1003 void RenderWidgetHostViewAndroid::AttachLayers() { 1005 void RenderWidgetHostViewAndroid::AttachLayers() {
1004 if (!content_view_core_) 1006 if (!content_view_core_)
1005 return; 1007 return;
1006 if (!layer_.get()) 1008 if (!layer_.get())
1007 return; 1009 return;
1008 1010
1009 content_view_core_->AttachLayer(layer_); 1011 content_view_core_->AttachLayer(layer_);
1010 if (overscroll_effect_enabled_) 1012 if (overscroll_effect_enabled_)
1011 overscroll_effect_->Enable(); 1013 overscroll_effect_->Enable();
1012 layer_->SetHideLayerAndSubtree(!is_showing_);
1013 } 1014 }
1014 1015
1015 void RenderWidgetHostViewAndroid::RemoveLayers() { 1016 void RenderWidgetHostViewAndroid::RemoveLayers() {
1016 if (!content_view_core_) 1017 if (!content_view_core_)
1017 return; 1018 return;
1018 if (!layer_.get()) 1019 if (!layer_.get())
1019 return; 1020 return;
1020 1021
1021 content_view_core_->RemoveLayer(layer_); 1022 content_view_core_->RemoveLayer(layer_);
1022 overscroll_effect_->Disable(); 1023 overscroll_effect_->Disable();
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
1323 (offset.y() + clipped_content.height()) * uv_scale.y())); 1324 (offset.y() + clipped_content.height()) * uv_scale.y()));
1324 } 1325 }
1325 1326
1326 SkColor RenderWidgetHostViewAndroid::GetCachedBackgroundColor() const { 1327 SkColor RenderWidgetHostViewAndroid::GetCachedBackgroundColor() const {
1327 return cached_background_color_; 1328 return cached_background_color_;
1328 } 1329 }
1329 1330
1330 void RenderWidgetHostViewAndroid::OnOverscrolled( 1331 void RenderWidgetHostViewAndroid::OnOverscrolled(
1331 gfx::Vector2dF accumulated_overscroll, 1332 gfx::Vector2dF accumulated_overscroll,
1332 gfx::Vector2dF current_fling_velocity) { 1333 gfx::Vector2dF current_fling_velocity) {
1333 if (!content_view_core_ || !layer_ || !is_showing_) 1334 if (!content_view_core_ || !are_layers_attached_)
1334 return; 1335 return;
1335 1336
1336 if (overscroll_effect_->OnOverscrolled(content_view_core_->GetLayer(), 1337 if (overscroll_effect_->OnOverscrolled(content_view_core_->GetLayer(),
1337 base::TimeTicks::Now(), 1338 base::TimeTicks::Now(),
1338 accumulated_overscroll, 1339 accumulated_overscroll,
1339 current_fling_velocity)) { 1340 current_fling_velocity)) {
1340 content_view_core_->SetNeedsAnimate(); 1341 content_view_core_->SetNeedsAnimate();
1341 } 1342 }
1342 } 1343 }
1343 1344
1344 void RenderWidgetHostViewAndroid::DidStopFlinging() { 1345 void RenderWidgetHostViewAndroid::DidStopFlinging() {
1345 if (content_view_core_) 1346 if (content_view_core_)
1346 content_view_core_->DidStopFlinging(); 1347 content_view_core_->DidStopFlinging();
1347 } 1348 }
1348 1349
1349 void RenderWidgetHostViewAndroid::SetContentViewCore( 1350 void RenderWidgetHostViewAndroid::SetContentViewCore(
1350 ContentViewCoreImpl* content_view_core) { 1351 ContentViewCoreImpl* content_view_core) {
1351 RunAckCallbacks(); 1352 RunAckCallbacks();
1352 1353
1353 RemoveLayers(); 1354 if (are_layers_attached_)
1355 RemoveLayers();
1356
1354 if (content_view_core_ && !using_synchronous_compositor_) 1357 if (content_view_core_ && !using_synchronous_compositor_)
1355 content_view_core_->GetWindowAndroid()->RemoveObserver(this); 1358 content_view_core_->GetWindowAndroid()->RemoveObserver(this);
1356 1359
1357 content_view_core_ = content_view_core; 1360 content_view_core_ = content_view_core;
1358 1361
1359 if (GetBrowserAccessibilityManager()) { 1362 if (GetBrowserAccessibilityManager()) {
1360 base::android::ScopedJavaLocalRef<jobject> obj; 1363 base::android::ScopedJavaLocalRef<jobject> obj;
1361 if (content_view_core_) 1364 if (content_view_core_)
1362 obj = content_view_core_->GetJavaObject(); 1365 obj = content_view_core_->GetJavaObject();
1363 GetBrowserAccessibilityManager()->ToBrowserAccessibilityManagerAndroid()-> 1366 GetBrowserAccessibilityManager()->ToBrowserAccessibilityManagerAndroid()->
1364 SetContentViewCore(obj); 1367 SetContentViewCore(obj);
1365 } 1368 }
1366 1369
1367 AttachLayers(); 1370 if (are_layers_attached_) {
1368 if (content_view_core_ && !using_synchronous_compositor_) 1371 AttachLayers();
1369 content_view_core_->GetWindowAndroid()->AddObserver(this); 1372 if (content_view_core_ && !using_synchronous_compositor_)
1373 content_view_core_->GetWindowAndroid()->AddObserver(this);
1374 }
1370 } 1375 }
1371 1376
1372 void RenderWidgetHostViewAndroid::RunAckCallbacks() { 1377 void RenderWidgetHostViewAndroid::RunAckCallbacks() {
1373 while (!ack_callbacks_.empty()) { 1378 while (!ack_callbacks_.empty()) {
1374 ack_callbacks_.front().Run(); 1379 ack_callbacks_.front().Run();
1375 ack_callbacks_.pop(); 1380 ack_callbacks_.pop();
1376 } 1381 }
1377 } 1382 }
1378 1383
1379 void RenderWidgetHostViewAndroid::OnCompositingDidCommit() { 1384 void RenderWidgetHostViewAndroid::OnCompositingDidCommit() {
(...skipping 15 matching lines...) Expand all
1395 RunAckCallbacks(); 1400 RunAckCallbacks();
1396 } 1401 }
1397 1402
1398 // static 1403 // static
1399 void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult( 1404 void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult(
1400 const gfx::Size& dst_size_in_pixel, 1405 const gfx::Size& dst_size_in_pixel,
1401 const SkBitmap::Config bitmap_config, 1406 const SkBitmap::Config bitmap_config,
1402 const base::TimeTicks& start_time, 1407 const base::TimeTicks& start_time,
1403 const base::Callback<void(bool, const SkBitmap&)>& callback, 1408 const base::Callback<void(bool, const SkBitmap&)>& callback,
1404 scoped_ptr<cc::CopyOutputResult> result) { 1409 scoped_ptr<cc::CopyOutputResult> result) {
1410 DCHECK(result->HasTexture());
1405 base::ScopedClosureRunner scoped_callback_runner( 1411 base::ScopedClosureRunner scoped_callback_runner(
1406 base::Bind(callback, false, SkBitmap())); 1412 base::Bind(callback, false, SkBitmap()));
1407 1413
1408 if (!result->HasTexture() || result->IsEmpty() || result->size().IsEmpty()) 1414 if (!result->HasTexture() || result->IsEmpty() || result->size().IsEmpty())
1409 return; 1415 return;
1410 1416
1411 scoped_ptr<SkBitmap> bitmap(new SkBitmap); 1417 scoped_ptr<SkBitmap> bitmap(new SkBitmap);
1412 bitmap->setConfig(bitmap_config, 1418 bitmap->setConfig(bitmap_config,
1413 dst_size_in_pixel.width(), 1419 dst_size_in_pixel.width(),
1414 dst_size_in_pixel.height(), 1420 dst_size_in_pixel.height(),
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
1498 // RenderWidgetHostView, public: 1504 // RenderWidgetHostView, public:
1499 1505
1500 // static 1506 // static
1501 RenderWidgetHostView* 1507 RenderWidgetHostView*
1502 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) { 1508 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) {
1503 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); 1509 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget);
1504 return new RenderWidgetHostViewAndroid(rwhi, NULL); 1510 return new RenderWidgetHostViewAndroid(rwhi, NULL);
1505 } 1511 }
1506 1512
1507 } // namespace content 1513 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698