| OLD | NEW |
| 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/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| 11 #include "base/command_line.h" | 11 #include "base/command_line.h" |
| 12 #include "base/logging.h" | 12 #include "base/logging.h" |
| 13 #include "base/message_loop.h" | 13 #include "base/message_loop.h" |
| 14 #include "base/utf_string_conversions.h" | 14 #include "base/utf_string_conversions.h" |
| 15 #include "cc/layers/delegated_renderer_layer.h" | 15 #include "cc/layers/delegated_renderer_layer.h" |
| 16 #include "cc/layers/layer.h" | 16 #include "cc/layers/layer.h" |
| 17 #include "cc/layers/texture_layer.h" | 17 #include "cc/layers/texture_layer.h" |
| 18 #include "cc/output/compositor_frame.h" | 18 #include "cc/output/compositor_frame.h" |
| 19 #include "cc/output/compositor_frame_ack.h" | 19 #include "cc/output/compositor_frame_ack.h" |
| 20 #include "content/browser/android/content_view_core_impl.h" | 20 #include "content/browser/android/content_view_core_impl.h" |
| 21 #include "content/browser/android/overscroll_glow.h" |
| 21 #include "content/browser/gpu/gpu_surface_tracker.h" | 22 #include "content/browser/gpu/gpu_surface_tracker.h" |
| 22 #include "content/browser/renderer_host/compositor_impl_android.h" | 23 #include "content/browser/renderer_host/compositor_impl_android.h" |
| 23 #include "content/browser/renderer_host/image_transport_factory_android.h" | 24 #include "content/browser/renderer_host/image_transport_factory_android.h" |
| 24 #include "content/browser/renderer_host/render_widget_host_impl.h" | 25 #include "content/browser/renderer_host/render_widget_host_impl.h" |
| 25 #include "content/browser/renderer_host/surface_texture_transport_client_android
.h" | 26 #include "content/browser/renderer_host/surface_texture_transport_client_android
.h" |
| 26 #include "content/browser/renderer_host/touch_smooth_scroll_gesture_android.h" | 27 #include "content/browser/renderer_host/touch_smooth_scroll_gesture_android.h" |
| 27 #include "content/common/gpu/client/gl_helper.h" | 28 #include "content/common/gpu/client/gl_helper.h" |
| 28 #include "content/common/gpu/gpu_messages.h" | 29 #include "content/common/gpu/gpu_messages.h" |
| 29 #include "content/common/input_messages.h" | 30 #include "content/common/input_messages.h" |
| 30 #include "content/common/view_messages.h" | 31 #include "content/common/view_messages.h" |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 RenderWidgetHostImpl::SendSwapCompositorFrameAck( | 69 RenderWidgetHostImpl::SendSwapCompositorFrameAck( |
| 69 route_id, renderer_host_id, ack); | 70 route_id, renderer_host_id, ack); |
| 70 } | 71 } |
| 71 | 72 |
| 72 } // anonymous namespace | 73 } // anonymous namespace |
| 73 | 74 |
| 74 RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid( | 75 RenderWidgetHostViewAndroid::RenderWidgetHostViewAndroid( |
| 75 RenderWidgetHostImpl* widget_host, | 76 RenderWidgetHostImpl* widget_host, |
| 76 ContentViewCoreImpl* content_view_core) | 77 ContentViewCoreImpl* content_view_core) |
| 77 : host_(widget_host), | 78 : host_(widget_host), |
| 78 is_layer_attached_(true), | 79 are_layers_attached_(true), |
| 79 content_view_core_(NULL), | 80 content_view_core_(NULL), |
| 80 ime_adapter_android_(this), | 81 ime_adapter_android_(this), |
| 81 cached_background_color_(SK_ColorWHITE), | 82 cached_background_color_(SK_ColorWHITE), |
| 82 texture_id_in_layer_(0), | 83 texture_id_in_layer_(0), |
| 83 weak_ptr_factory_(this) { | 84 weak_ptr_factory_(this) { |
| 84 if (CompositorImpl::UsesDirectGL()) { | 85 if (CompositorImpl::UsesDirectGL()) { |
| 85 surface_texture_transport_.reset(new SurfaceTextureTransportClient()); | 86 surface_texture_transport_.reset(new SurfaceTextureTransportClient()); |
| 86 layer_ = surface_texture_transport_->Initialize(); | 87 layer_ = surface_texture_transport_->Initialize(); |
| 87 layer_->SetIsDrawable(true); | 88 layer_->SetIsDrawable(true); |
| 88 } else { | 89 } else { |
| 89 if (CommandLine::ForCurrentProcess()->HasSwitch( | 90 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 90 switches::kEnableDelegatedRenderer)) { | 91 switches::kEnableDelegatedRenderer)) { |
| 91 delegated_renderer_layer_ = cc::DelegatedRendererLayer::Create(this); | 92 delegated_renderer_layer_ = cc::DelegatedRendererLayer::Create(this); |
| 92 layer_ = delegated_renderer_layer_; | 93 layer_ = delegated_renderer_layer_; |
| 93 } else { | 94 } else { |
| 94 texture_layer_ = cc::TextureLayer::Create(this); | 95 texture_layer_ = cc::TextureLayer::Create(this); |
| 95 layer_ = texture_layer_; | 96 layer_ = texture_layer_; |
| 96 } | 97 } |
| 97 } | 98 } |
| 98 | 99 |
| 99 layer_->SetContentsOpaque(true); | 100 layer_->SetContentsOpaque(true); |
| 100 | 101 |
| 102 if (!CommandLine::ForCurrentProcess()-> |
| 103 HasSwitch(switches::kDisableOverscrollEdgeEffect)) { |
| 104 overscroll_effect_ = OverscrollGlow::Create(); |
| 105 } |
| 106 |
| 101 host_->SetView(this); | 107 host_->SetView(this); |
| 102 SetContentViewCore(content_view_core); | 108 SetContentViewCore(content_view_core); |
| 103 } | 109 } |
| 104 | 110 |
| 105 RenderWidgetHostViewAndroid::~RenderWidgetHostViewAndroid() { | 111 RenderWidgetHostViewAndroid::~RenderWidgetHostViewAndroid() { |
| 106 SetContentViewCore(NULL); | 112 SetContentViewCore(NULL); |
| 107 DCHECK(ack_callbacks_.empty()); | 113 DCHECK(ack_callbacks_.empty()); |
| 108 if (texture_id_in_layer_ || !last_mailbox_.IsZero()) { | 114 if (texture_id_in_layer_ || !last_mailbox_.IsZero()) { |
| 109 ImageTransportFactoryAndroid* factory = | 115 ImageTransportFactoryAndroid* factory = |
| 110 ImageTransportFactoryAndroid::GetInstance(); | 116 ImageTransportFactoryAndroid::GetInstance(); |
| (...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 285 host_->Focus(); | 291 host_->Focus(); |
| 286 host_->SetInputMethodActive(true); | 292 host_->SetInputMethodActive(true); |
| 287 ResetClipping(); | 293 ResetClipping(); |
| 288 } | 294 } |
| 289 | 295 |
| 290 void RenderWidgetHostViewAndroid::Blur() { | 296 void RenderWidgetHostViewAndroid::Blur() { |
| 291 host_->Send(new InputMsg_ExecuteEditCommand( | 297 host_->Send(new InputMsg_ExecuteEditCommand( |
| 292 host_->GetRoutingID(), "Unselect", "")); | 298 host_->GetRoutingID(), "Unselect", "")); |
| 293 host_->SetInputMethodActive(false); | 299 host_->SetInputMethodActive(false); |
| 294 host_->Blur(); | 300 host_->Blur(); |
| 301 |
| 302 if (overscroll_effect_) |
| 303 overscroll_effect_->Finish(); |
| 295 } | 304 } |
| 296 | 305 |
| 297 bool RenderWidgetHostViewAndroid::HasFocus() const { | 306 bool RenderWidgetHostViewAndroid::HasFocus() const { |
| 298 if (!content_view_core_) | 307 if (!content_view_core_) |
| 299 return false; // ContentViewCore not created yet. | 308 return false; // ContentViewCore not created yet. |
| 300 | 309 |
| 301 return content_view_core_->HasFocus(); | 310 return content_view_core_->HasFocus(); |
| 302 } | 311 } |
| 303 | 312 |
| 304 bool RenderWidgetHostViewAndroid::IsSurfaceAvailableForCopy() const { | 313 bool RenderWidgetHostViewAndroid::IsSurfaceAvailableForCopy() const { |
| 305 NOTIMPLEMENTED(); | 314 NOTIMPLEMENTED(); |
| 306 return false; | 315 return false; |
| 307 } | 316 } |
| 308 | 317 |
| 309 void RenderWidgetHostViewAndroid::Show() { | 318 void RenderWidgetHostViewAndroid::Show() { |
| 310 if (is_layer_attached_) | 319 if (are_layers_attached_) |
| 311 return; | 320 return; |
| 312 | 321 |
| 313 is_layer_attached_ = true; | 322 are_layers_attached_ = true; |
| 314 if (content_view_core_) | 323 AttachLayers(); |
| 315 content_view_core_->AttachLayer(layer_); | |
| 316 } | 324 } |
| 317 | 325 |
| 318 void RenderWidgetHostViewAndroid::Hide() { | 326 void RenderWidgetHostViewAndroid::Hide() { |
| 319 if (!is_layer_attached_) | 327 if (!are_layers_attached_) |
| 320 return; | 328 return; |
| 321 | 329 |
| 322 is_layer_attached_ = false; | 330 are_layers_attached_ = false; |
| 323 if (content_view_core_) | 331 RemoveLayers(); |
| 324 content_view_core_->RemoveLayer(layer_); | |
| 325 } | 332 } |
| 326 | 333 |
| 327 bool RenderWidgetHostViewAndroid::IsShowing() { | 334 bool RenderWidgetHostViewAndroid::IsShowing() { |
| 328 // ContentViewCoreImpl represents the native side of the Java | 335 // ContentViewCoreImpl represents the native side of the Java |
| 329 // ContentViewCore. It being NULL means that it is not attached | 336 // ContentViewCore. It being NULL means that it is not attached |
| 330 // to the View system yet, so we treat this RWHVA as hidden. | 337 // to the View system yet, so we treat this RWHVA as hidden. |
| 331 return is_layer_attached_ && content_view_core_; | 338 return are_layers_attached_ && content_view_core_; |
| 332 } | 339 } |
| 333 | 340 |
| 334 gfx::Rect RenderWidgetHostViewAndroid::GetViewBounds() const { | 341 gfx::Rect RenderWidgetHostViewAndroid::GetViewBounds() const { |
| 335 if (!content_view_core_) | 342 if (!content_view_core_) |
| 336 return gfx::Rect(); | 343 return gfx::Rect(); |
| 337 | 344 |
| 338 gfx::Size size = content_view_core_->GetViewportSizeDip(); | 345 gfx::Size size = content_view_core_->GetViewportSizeDip(); |
| 339 gfx::Size offset = content_view_core_->GetViewportSizeOffsetDip(); | 346 gfx::Size offset = content_view_core_->GetViewportSizeOffsetDip(); |
| 340 size.Enlarge(-offset.width(), -offset.height()); | 347 size.Enlarge(-offset.width(), -offset.height()); |
| 341 | 348 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 391 SkColor color) { | 398 SkColor color) { |
| 392 if (cached_background_color_ == color) | 399 if (cached_background_color_ == color) |
| 393 return; | 400 return; |
| 394 | 401 |
| 395 cached_background_color_ = color; | 402 cached_background_color_ = color; |
| 396 if (content_view_core_) | 403 if (content_view_core_) |
| 397 content_view_core_->OnBackgroundColorChanged(color); | 404 content_view_core_->OnBackgroundColorChanged(color); |
| 398 } | 405 } |
| 399 | 406 |
| 400 void RenderWidgetHostViewAndroid::SendVSync(base::TimeTicks frame_time) { | 407 void RenderWidgetHostViewAndroid::SendVSync(base::TimeTicks frame_time) { |
| 401 host_->Send(new ViewMsg_DidVSync(host_->GetRoutingID(), frame_time)); | 408 if (host_) |
| 409 host_->Send(new ViewMsg_DidVSync(host_->GetRoutingID(), frame_time)); |
| 402 } | 410 } |
| 403 | 411 |
| 404 void RenderWidgetHostViewAndroid::OnSetVSyncNotificationEnabled(bool enabled) { | 412 void RenderWidgetHostViewAndroid::OnSetVSyncNotificationEnabled(bool enabled) { |
| 405 if (content_view_core_) | 413 if (content_view_core_) |
| 406 content_view_core_->SetVSyncNotificationEnabled(enabled); | 414 content_view_core_->SetVSyncNotificationEnabled(enabled); |
| 407 } | 415 } |
| 408 | 416 |
| 409 void RenderWidgetHostViewAndroid::OnStartContentIntent( | 417 void RenderWidgetHostViewAndroid::OnStartContentIntent( |
| 410 const GURL& content_url) { | 418 const GURL& content_url) { |
| 411 if (content_view_core_) | 419 if (content_view_core_) |
| (...skipping 15 matching lines...) Expand all Loading... |
| 427 const std::vector<gfx::Rect>& copy_rects) { | 435 const std::vector<gfx::Rect>& copy_rects) { |
| 428 NOTIMPLEMENTED(); | 436 NOTIMPLEMENTED(); |
| 429 } | 437 } |
| 430 | 438 |
| 431 void RenderWidgetHostViewAndroid::RenderViewGone( | 439 void RenderWidgetHostViewAndroid::RenderViewGone( |
| 432 base::TerminationStatus status, int error_code) { | 440 base::TerminationStatus status, int error_code) { |
| 433 Destroy(); | 441 Destroy(); |
| 434 } | 442 } |
| 435 | 443 |
| 436 void RenderWidgetHostViewAndroid::Destroy() { | 444 void RenderWidgetHostViewAndroid::Destroy() { |
| 437 if (content_view_core_) { | 445 RemoveLayers(); |
| 438 content_view_core_->RemoveLayer(layer_); | 446 content_view_core_ = NULL; |
| 439 content_view_core_ = NULL; | |
| 440 } | |
| 441 | 447 |
| 442 // The RenderWidgetHost's destruction led here, so don't call it. | 448 // The RenderWidgetHost's destruction led here, so don't call it. |
| 443 host_ = NULL; | 449 host_ = NULL; |
| 444 | 450 |
| 445 delete this; | 451 delete this; |
| 446 } | 452 } |
| 447 | 453 |
| 448 void RenderWidgetHostViewAndroid::SetTooltipText( | 454 void RenderWidgetHostViewAndroid::SetTooltipText( |
| 449 const string16& tooltip_text) { | 455 const string16& tooltip_text) { |
| 450 // Tooltips don't makes sense on Android. | 456 // Tooltips don't makes sense on Android. |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 567 const cc::CompositorFrame* frame) { | 573 const cc::CompositorFrame* frame) { |
| 568 // Calculate the content size. This should be 0 if the texture_size is 0. | 574 // Calculate the content size. This should be 0 if the texture_size is 0. |
| 569 gfx::Vector2dF offset; | 575 gfx::Vector2dF offset; |
| 570 if (texture_size_in_layer_.GetArea() > 0) | 576 if (texture_size_in_layer_.GetArea() > 0) |
| 571 offset = frame->metadata.location_bar_content_translation; | 577 offset = frame->metadata.location_bar_content_translation; |
| 572 offset.set_y(offset.y() + frame->metadata.overdraw_bottom_height); | 578 offset.set_y(offset.y() + frame->metadata.overdraw_bottom_height); |
| 573 offset.Scale(frame->metadata.device_scale_factor); | 579 offset.Scale(frame->metadata.device_scale_factor); |
| 574 content_size_in_layer_ = | 580 content_size_in_layer_ = |
| 575 gfx::Size(texture_size_in_layer_.width() - offset.x(), | 581 gfx::Size(texture_size_in_layer_.width() - offset.x(), |
| 576 texture_size_in_layer_.height() - offset.y()); | 582 texture_size_in_layer_.height() - offset.y()); |
| 583 // Content size changes should be reflected in associated animation effects. |
| 584 UpdateAnimationSize(frame); |
| 577 } | 585 } |
| 578 | 586 |
| 579 void RenderWidgetHostViewAndroid::OnSwapCompositorFrame( | 587 void RenderWidgetHostViewAndroid::OnSwapCompositorFrame( |
| 580 scoped_ptr<cc::CompositorFrame> frame) { | 588 scoped_ptr<cc::CompositorFrame> frame) { |
| 581 // Always let ContentViewCore know about the new frame first, so it can decide | 589 // Always let ContentViewCore know about the new frame first, so it can decide |
| 582 // to schedule a Draw immediately when it sees the texture layer invalidation. | 590 // to schedule a Draw immediately when it sees the texture layer invalidation. |
| 583 if (content_view_core_) { | 591 if (content_view_core_) { |
| 584 // All offsets and sizes are in CSS pixels. | 592 // All offsets and sizes are in CSS pixels. |
| 585 content_view_core_->UpdateFrameInfo( | 593 content_view_core_->UpdateFrameInfo( |
| 586 frame->metadata.root_scroll_offset, | 594 frame->metadata.root_scroll_offset, |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 680 ResetClipping(); | 688 ResetClipping(); |
| 681 | 689 |
| 682 current_mailbox_ = mailbox; | 690 current_mailbox_ = mailbox; |
| 683 | 691 |
| 684 if (host_->is_hidden()) | 692 if (host_->is_hidden()) |
| 685 ack_callback.Run(); | 693 ack_callback.Run(); |
| 686 else | 694 else |
| 687 ack_callbacks_.push(ack_callback); | 695 ack_callbacks_.push(ack_callback); |
| 688 } | 696 } |
| 689 | 697 |
| 698 void RenderWidgetHostViewAndroid::AttachLayers() { |
| 699 if (!content_view_core_) |
| 700 return; |
| 701 |
| 702 content_view_core_->AttachLayer(layer_); |
| 703 |
| 704 if (overscroll_effect_) |
| 705 content_view_core_->AttachLayer(overscroll_effect_->root_layer()); |
| 706 } |
| 707 |
| 708 void RenderWidgetHostViewAndroid::RemoveLayers() { |
| 709 if (!content_view_core_) |
| 710 return; |
| 711 |
| 712 if (overscroll_effect_) |
| 713 content_view_core_->RemoveLayer(overscroll_effect_->root_layer()); |
| 714 |
| 715 content_view_core_->RemoveLayer(layer_); |
| 716 } |
| 717 |
| 718 bool RenderWidgetHostViewAndroid::Animate(base::TimeTicks frame_time) { |
| 719 if (!overscroll_effect_ || !HasFocus()) |
| 720 return false; |
| 721 return overscroll_effect_->Animate(frame_time); |
| 722 } |
| 723 |
| 724 void RenderWidgetHostViewAndroid::UpdateAnimationSize( |
| 725 const cc::CompositorFrame* frame) { |
| 726 if (!overscroll_effect_) |
| 727 return; |
| 728 // Disable edge effects for axes on which scrolling is impossible. |
| 729 const cc::CompositorFrameMetadata& metadata = frame->metadata; |
| 730 overscroll_effect_->set_horizontal_overscroll_enabled( |
| 731 metadata.root_layer_size.width() != metadata.viewport_size.width()); |
| 732 overscroll_effect_->set_vertical_overscroll_enabled( |
| 733 metadata.root_layer_size.height() != metadata.viewport_size.height()); |
| 734 overscroll_effect_->set_size(content_size_in_layer_); |
| 735 } |
| 736 |
| 737 void RenderWidgetHostViewAndroid::ScheduleAnimationIfNecessary() { |
| 738 if (!content_view_core_) |
| 739 return; |
| 740 if (overscroll_effect_ && overscroll_effect_->IsActive()) |
| 741 content_view_core_->SetNeedsAnimate(); |
| 742 } |
| 743 |
| 690 void RenderWidgetHostViewAndroid::AcceleratedSurfacePostSubBuffer( | 744 void RenderWidgetHostViewAndroid::AcceleratedSurfacePostSubBuffer( |
| 691 const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params, | 745 const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params, |
| 692 int gpu_host_id) { | 746 int gpu_host_id) { |
| 693 NOTREACHED(); | 747 NOTREACHED(); |
| 694 } | 748 } |
| 695 | 749 |
| 696 void RenderWidgetHostViewAndroid::AcceleratedSurfaceSuspend() { | 750 void RenderWidgetHostViewAndroid::AcceleratedSurfaceSuspend() { |
| 697 NOTREACHED(); | 751 NOTREACHED(); |
| 698 } | 752 } |
| 699 | 753 |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 862 gfx::PointF(offset.x() * uv_scale.x(), | 916 gfx::PointF(offset.x() * uv_scale.x(), |
| 863 offset.y() * uv_scale.y()), | 917 offset.y() * uv_scale.y()), |
| 864 gfx::PointF((offset.x() + clipped_content.width()) * uv_scale.x(), | 918 gfx::PointF((offset.x() + clipped_content.width()) * uv_scale.x(), |
| 865 (offset.y() + clipped_content.height()) * uv_scale.y())); | 919 (offset.y() + clipped_content.height()) * uv_scale.y())); |
| 866 } | 920 } |
| 867 | 921 |
| 868 SkColor RenderWidgetHostViewAndroid::GetCachedBackgroundColor() const { | 922 SkColor RenderWidgetHostViewAndroid::GetCachedBackgroundColor() const { |
| 869 return cached_background_color_; | 923 return cached_background_color_; |
| 870 } | 924 } |
| 871 | 925 |
| 926 void RenderWidgetHostViewAndroid::OnOverscrolled( |
| 927 gfx::Vector2dF accumulated_overscroll, |
| 928 gfx::Vector2dF current_fling_velocity) { |
| 929 if (!overscroll_effect_ || !HasFocus()) |
| 930 return; |
| 931 overscroll_effect_->OnOverscrolled(base::TimeTicks::Now(), |
| 932 accumulated_overscroll, |
| 933 current_fling_velocity); |
| 934 ScheduleAnimationIfNecessary(); |
| 935 } |
| 936 |
| 872 void RenderWidgetHostViewAndroid::SetContentViewCore( | 937 void RenderWidgetHostViewAndroid::SetContentViewCore( |
| 873 ContentViewCoreImpl* content_view_core) { | 938 ContentViewCoreImpl* content_view_core) { |
| 874 RunAckCallbacks(); | 939 RunAckCallbacks(); |
| 875 | 940 |
| 876 if (content_view_core_ && is_layer_attached_) | 941 if (are_layers_attached_) |
| 877 content_view_core_->RemoveLayer(layer_); | 942 RemoveLayers(); |
| 878 | 943 |
| 879 content_view_core_ = content_view_core; | 944 content_view_core_ = content_view_core; |
| 880 if (content_view_core_ && is_layer_attached_) | 945 |
| 881 content_view_core_->AttachLayer(layer_); | 946 if (are_layers_attached_) |
| 947 AttachLayers(); |
| 882 } | 948 } |
| 883 | 949 |
| 884 void RenderWidgetHostViewAndroid::RunAckCallbacks() { | 950 void RenderWidgetHostViewAndroid::RunAckCallbacks() { |
| 885 while (!ack_callbacks_.empty()) { | 951 while (!ack_callbacks_.empty()) { |
| 886 ack_callbacks_.front().Run(); | 952 ack_callbacks_.front().Run(); |
| 887 ack_callbacks_.pop(); | 953 ack_callbacks_.pop(); |
| 888 } | 954 } |
| 889 } | 955 } |
| 890 | 956 |
| 891 void RenderWidgetHostViewAndroid::HasTouchEventHandlers( | 957 void RenderWidgetHostViewAndroid::HasTouchEventHandlers( |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 932 // RenderWidgetHostView, public: | 998 // RenderWidgetHostView, public: |
| 933 | 999 |
| 934 // static | 1000 // static |
| 935 RenderWidgetHostView* | 1001 RenderWidgetHostView* |
| 936 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) { | 1002 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) { |
| 937 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); | 1003 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); |
| 938 return new RenderWidgetHostViewAndroid(rwhi, NULL); | 1004 return new RenderWidgetHostViewAndroid(rwhi, NULL); |
| 939 } | 1005 } |
| 940 | 1006 |
| 941 } // namespace content | 1007 } // namespace content |
| OLD | NEW |