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

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

Issue 151103010: Revert of android: Migrate old content readback to use async readback (and delegated renderer) (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
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
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 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
732 output_surface_id, 732 output_surface_id,
733 host_->GetProcess()->GetID(), 733 host_->GetProcess()->GetID(),
734 ack); 734 ack);
735 } 735 }
736 736
737 void RenderWidgetHostViewAndroid::UnusedResourcesAreAvailable() { 737 void RenderWidgetHostViewAndroid::UnusedResourcesAreAvailable() {
738 // TODO(danakj): If no ack is pending, collect and send resources now. 738 // TODO(danakj): If no ack is pending, collect and send resources now.
739 } 739 }
740 740
741 void RenderWidgetHostViewAndroid::DestroyDelegatedContent() { 741 void RenderWidgetHostViewAndroid::DestroyDelegatedContent() {
742 RemoveLayers(); 742 if (are_layers_attached_)
743 RemoveLayers();
743 frame_provider_ = NULL; 744 frame_provider_ = NULL;
744 delegated_renderer_layer_ = NULL; 745 delegated_renderer_layer_ = NULL;
745 layer_ = NULL; 746 layer_ = NULL;
746 } 747 }
747 748
748 void RenderWidgetHostViewAndroid::SwapDelegatedFrame( 749 void RenderWidgetHostViewAndroid::SwapDelegatedFrame(
749 uint32 output_surface_id, 750 uint32 output_surface_id,
750 scoped_ptr<cc::DelegatedFrameData> frame_data) { 751 scoped_ptr<cc::DelegatedFrameData> frame_data) {
751 bool has_content = !texture_size_in_layer_.IsEmpty(); 752 bool has_content = !texture_size_in_layer_.IsEmpty();
752 753
(...skipping 15 matching lines...) Expand all
768 769
769 if (!has_content) { 770 if (!has_content) {
770 DestroyDelegatedContent(); 771 DestroyDelegatedContent();
771 } else { 772 } else {
772 if (!resource_collection_.get()) { 773 if (!resource_collection_.get()) {
773 resource_collection_ = new cc::DelegatedFrameResourceCollection; 774 resource_collection_ = new cc::DelegatedFrameResourceCollection;
774 resource_collection_->SetClient(this); 775 resource_collection_->SetClient(this);
775 } 776 }
776 if (!frame_provider_ || 777 if (!frame_provider_ ||
777 texture_size_in_layer_ != frame_provider_->frame_size()) { 778 texture_size_in_layer_ != frame_provider_->frame_size()) {
778 RemoveLayers(); 779 if (are_layers_attached_)
780 RemoveLayers();
779 frame_provider_ = new cc::DelegatedFrameProvider( 781 frame_provider_ = new cc::DelegatedFrameProvider(
780 resource_collection_.get(), frame_data.Pass()); 782 resource_collection_.get(), frame_data.Pass());
781 delegated_renderer_layer_ = 783 delegated_renderer_layer_ =
782 cc::DelegatedRendererLayer::Create(frame_provider_); 784 cc::DelegatedRendererLayer::Create(frame_provider_);
783 layer_ = delegated_renderer_layer_; 785 layer_ = delegated_renderer_layer_;
784 AttachLayers(); 786 if (are_layers_attached_)
787 AttachLayers();
785 } else { 788 } else {
786 frame_provider_->SetFrameData(frame_data.Pass()); 789 frame_provider_->SetFrameData(frame_data.Pass());
787 } 790 }
788 } 791 }
789 792
790 if (delegated_renderer_layer_.get()) { 793 if (delegated_renderer_layer_.get()) {
791 delegated_renderer_layer_->SetDisplaySize(texture_size_in_layer_); 794 delegated_renderer_layer_->SetDisplaySize(texture_size_in_layer_);
792 delegated_renderer_layer_->SetIsDrawable(true); 795 delegated_renderer_layer_->SetIsDrawable(true);
793 delegated_renderer_layer_->SetContentsOpaque(true); 796 delegated_renderer_layer_->SetContentsOpaque(true);
794 delegated_renderer_layer_->SetBounds(content_size_in_layer_); 797 delegated_renderer_layer_->SetBounds(content_size_in_layer_);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
833 836
834 DCHECK(frame->delegated_frame_data); 837 DCHECK(frame->delegated_frame_data);
835 DCHECK(!frame->delegated_frame_data->render_pass_list.empty()); 838 DCHECK(!frame->delegated_frame_data->render_pass_list.empty());
836 839
837 cc::RenderPass* root_pass = 840 cc::RenderPass* root_pass =
838 frame->delegated_frame_data->render_pass_list.back(); 841 frame->delegated_frame_data->render_pass_list.back();
839 texture_size_in_layer_ = root_pass->output_rect.size(); 842 texture_size_in_layer_ = root_pass->output_rect.size();
840 ComputeContentsSize(frame->metadata); 843 ComputeContentsSize(frame->metadata);
841 844
842 SwapDelegatedFrame(output_surface_id, frame->delegated_frame_data.Pass()); 845 SwapDelegatedFrame(output_surface_id, frame->delegated_frame_data.Pass());
843 frame_evictor_->SwappedFrame(!host_->is_hidden());
844 return; 846 return;
845 } 847 }
846 848
847 DCHECK(!UsingDelegatedRenderer()); 849 DCHECK(!UsingDelegatedRenderer());
848 850
849 if (!frame->gl_frame_data || frame->gl_frame_data->mailbox.IsZero()) 851 if (!frame->gl_frame_data || frame->gl_frame_data->mailbox.IsZero())
850 return; 852 return;
851 853
852 if (output_surface_id != last_output_surface_id_) { 854 if (output_surface_id != last_output_surface_id_) {
853 current_mailbox_ = gpu::Mailbox(); 855 current_mailbox_ = gpu::Mailbox();
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
986 988
987 void RenderWidgetHostViewAndroid::AttachLayers() { 989 void RenderWidgetHostViewAndroid::AttachLayers() {
988 if (!content_view_core_) 990 if (!content_view_core_)
989 return; 991 return;
990 if (!layer_.get()) 992 if (!layer_.get())
991 return; 993 return;
992 994
993 content_view_core_->AttachLayer(layer_); 995 content_view_core_->AttachLayer(layer_);
994 if (overscroll_effect_enabled_) 996 if (overscroll_effect_enabled_)
995 overscroll_effect_->Enable(); 997 overscroll_effect_->Enable();
996 layer_->SetHideLayerAndSubtree(!is_showing_);
997 } 998 }
998 999
999 void RenderWidgetHostViewAndroid::RemoveLayers() { 1000 void RenderWidgetHostViewAndroid::RemoveLayers() {
1000 if (!content_view_core_) 1001 if (!content_view_core_)
1001 return; 1002 return;
1002 if (!layer_.get()) 1003 if (!layer_.get())
1003 return; 1004 return;
1004 1005
1005 content_view_core_->RemoveLayer(layer_); 1006 content_view_core_->RemoveLayer(layer_);
1006 overscroll_effect_->Disable(); 1007 overscroll_effect_->Disable();
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
1307 (offset.y() + clipped_content.height()) * uv_scale.y())); 1308 (offset.y() + clipped_content.height()) * uv_scale.y()));
1308 } 1309 }
1309 1310
1310 SkColor RenderWidgetHostViewAndroid::GetCachedBackgroundColor() const { 1311 SkColor RenderWidgetHostViewAndroid::GetCachedBackgroundColor() const {
1311 return cached_background_color_; 1312 return cached_background_color_;
1312 } 1313 }
1313 1314
1314 void RenderWidgetHostViewAndroid::OnOverscrolled( 1315 void RenderWidgetHostViewAndroid::OnOverscrolled(
1315 gfx::Vector2dF accumulated_overscroll, 1316 gfx::Vector2dF accumulated_overscroll,
1316 gfx::Vector2dF current_fling_velocity) { 1317 gfx::Vector2dF current_fling_velocity) {
1317 if (!content_view_core_ || !layer_ || !is_showing_) 1318 if (!content_view_core_ || !are_layers_attached_)
1318 return; 1319 return;
1319 1320
1320 if (overscroll_effect_->OnOverscrolled(content_view_core_->GetLayer(), 1321 if (overscroll_effect_->OnOverscrolled(content_view_core_->GetLayer(),
1321 base::TimeTicks::Now(), 1322 base::TimeTicks::Now(),
1322 accumulated_overscroll, 1323 accumulated_overscroll,
1323 current_fling_velocity)) { 1324 current_fling_velocity)) {
1324 content_view_core_->SetNeedsAnimate(); 1325 content_view_core_->SetNeedsAnimate();
1325 } 1326 }
1326 } 1327 }
1327 1328
1328 void RenderWidgetHostViewAndroid::DidStopFlinging() { 1329 void RenderWidgetHostViewAndroid::DidStopFlinging() {
1329 if (content_view_core_) 1330 if (content_view_core_)
1330 content_view_core_->DidStopFlinging(); 1331 content_view_core_->DidStopFlinging();
1331 } 1332 }
1332 1333
1333 void RenderWidgetHostViewAndroid::SetContentViewCore( 1334 void RenderWidgetHostViewAndroid::SetContentViewCore(
1334 ContentViewCoreImpl* content_view_core) { 1335 ContentViewCoreImpl* content_view_core) {
1335 RunAckCallbacks(); 1336 RunAckCallbacks();
1336 1337
1337 RemoveLayers(); 1338 if (are_layers_attached_)
1339 RemoveLayers();
1340
1338 if (content_view_core_ && !using_synchronous_compositor_) 1341 if (content_view_core_ && !using_synchronous_compositor_)
1339 content_view_core_->GetWindowAndroid()->RemoveObserver(this); 1342 content_view_core_->GetWindowAndroid()->RemoveObserver(this);
1340 1343
1341 content_view_core_ = content_view_core; 1344 content_view_core_ = content_view_core;
1342 1345
1343 if (GetBrowserAccessibilityManager()) { 1346 if (GetBrowserAccessibilityManager()) {
1344 base::android::ScopedJavaLocalRef<jobject> obj; 1347 base::android::ScopedJavaLocalRef<jobject> obj;
1345 if (content_view_core_) 1348 if (content_view_core_)
1346 obj = content_view_core_->GetJavaObject(); 1349 obj = content_view_core_->GetJavaObject();
1347 GetBrowserAccessibilityManager()->ToBrowserAccessibilityManagerAndroid()-> 1350 GetBrowserAccessibilityManager()->ToBrowserAccessibilityManagerAndroid()->
1348 SetContentViewCore(obj); 1351 SetContentViewCore(obj);
1349 } 1352 }
1350 1353
1351 AttachLayers(); 1354 if (are_layers_attached_) {
1352 if (content_view_core_ && !using_synchronous_compositor_) 1355 AttachLayers();
1353 content_view_core_->GetWindowAndroid()->AddObserver(this); 1356 if (content_view_core_ && !using_synchronous_compositor_)
1357 content_view_core_->GetWindowAndroid()->AddObserver(this);
1358 }
1354 } 1359 }
1355 1360
1356 void RenderWidgetHostViewAndroid::RunAckCallbacks() { 1361 void RenderWidgetHostViewAndroid::RunAckCallbacks() {
1357 while (!ack_callbacks_.empty()) { 1362 while (!ack_callbacks_.empty()) {
1358 ack_callbacks_.front().Run(); 1363 ack_callbacks_.front().Run();
1359 ack_callbacks_.pop(); 1364 ack_callbacks_.pop();
1360 } 1365 }
1361 } 1366 }
1362 1367
1363 void RenderWidgetHostViewAndroid::HasTouchEventHandlers( 1368 void RenderWidgetHostViewAndroid::HasTouchEventHandlers(
(...skipping 19 matching lines...) Expand all
1383 RunAckCallbacks(); 1388 RunAckCallbacks();
1384 } 1389 }
1385 1390
1386 // static 1391 // static
1387 void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult( 1392 void RenderWidgetHostViewAndroid::PrepareTextureCopyOutputResult(
1388 const gfx::Size& dst_size_in_pixel, 1393 const gfx::Size& dst_size_in_pixel,
1389 const SkBitmap::Config bitmap_config, 1394 const SkBitmap::Config bitmap_config,
1390 const base::TimeTicks& start_time, 1395 const base::TimeTicks& start_time,
1391 const base::Callback<void(bool, const SkBitmap&)>& callback, 1396 const base::Callback<void(bool, const SkBitmap&)>& callback,
1392 scoped_ptr<cc::CopyOutputResult> result) { 1397 scoped_ptr<cc::CopyOutputResult> result) {
1398 DCHECK(result->HasTexture());
1393 base::ScopedClosureRunner scoped_callback_runner( 1399 base::ScopedClosureRunner scoped_callback_runner(
1394 base::Bind(callback, false, SkBitmap())); 1400 base::Bind(callback, false, SkBitmap()));
1395 1401
1396 if (!result->HasTexture() || result->IsEmpty() || result->size().IsEmpty()) 1402 if (!result->HasTexture() || result->IsEmpty() || result->size().IsEmpty())
1397 return; 1403 return;
1398 1404
1399 scoped_ptr<SkBitmap> bitmap(new SkBitmap); 1405 scoped_ptr<SkBitmap> bitmap(new SkBitmap);
1400 bitmap->setConfig(bitmap_config, 1406 bitmap->setConfig(bitmap_config,
1401 dst_size_in_pixel.width(), 1407 dst_size_in_pixel.width(),
1402 dst_size_in_pixel.height(), 1408 dst_size_in_pixel.height(),
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
1486 // RenderWidgetHostView, public: 1492 // RenderWidgetHostView, public:
1487 1493
1488 // static 1494 // static
1489 RenderWidgetHostView* 1495 RenderWidgetHostView*
1490 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) { 1496 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) {
1491 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); 1497 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget);
1492 return new RenderWidgetHostViewAndroid(rwhi, NULL); 1498 return new RenderWidgetHostViewAndroid(rwhi, NULL);
1493 } 1499 }
1494 1500
1495 } // namespace content 1501 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/renderer_host/render_widget_host_view_android.h ('k') | content/public/browser/android/compositor.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698