| 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" |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 const std::vector<webkit::npapi::WebPluginGeometry>& moves) { | 289 const std::vector<webkit::npapi::WebPluginGeometry>& moves) { |
| 290 // We don't have plugin windows on Android. Do nothing. Note: this is called | 290 // We don't have plugin windows on Android. Do nothing. Note: this is called |
| 291 // from RenderWidgetHost::OnUpdateRect which is itself invoked while | 291 // from RenderWidgetHost::OnUpdateRect which is itself invoked while |
| 292 // processing the corresponding message from Renderer. | 292 // processing the corresponding message from Renderer. |
| 293 } | 293 } |
| 294 | 294 |
| 295 void RenderWidgetHostViewAndroid::Focus() { | 295 void RenderWidgetHostViewAndroid::Focus() { |
| 296 host_->Focus(); | 296 host_->Focus(); |
| 297 host_->SetInputMethodActive(true); | 297 host_->SetInputMethodActive(true); |
| 298 ResetClipping(); | 298 ResetClipping(); |
| 299 if (overscroll_effect_) |
| 300 overscroll_effect_->SetEnabled(true); |
| 299 } | 301 } |
| 300 | 302 |
| 301 void RenderWidgetHostViewAndroid::Blur() { | 303 void RenderWidgetHostViewAndroid::Blur() { |
| 302 host_->ExecuteEditCommand("Unselect", ""); | 304 host_->ExecuteEditCommand("Unselect", ""); |
| 303 host_->SetInputMethodActive(false); | 305 host_->SetInputMethodActive(false); |
| 304 host_->Blur(); | 306 host_->Blur(); |
| 305 | |
| 306 if (overscroll_effect_) | 307 if (overscroll_effect_) |
| 307 overscroll_effect_->Finish(); | 308 overscroll_effect_->SetEnabled(false); |
| 308 } | 309 } |
| 309 | 310 |
| 310 bool RenderWidgetHostViewAndroid::HasFocus() const { | 311 bool RenderWidgetHostViewAndroid::HasFocus() const { |
| 311 if (!content_view_core_) | 312 if (!content_view_core_) |
| 312 return false; // ContentViewCore not created yet. | 313 return false; // ContentViewCore not created yet. |
| 313 | 314 |
| 314 return content_view_core_->HasFocus(); | 315 return content_view_core_->HasFocus(); |
| 315 } | 316 } |
| 316 | 317 |
| 317 bool RenderWidgetHostViewAndroid::IsSurfaceAvailableForCopy() const { | 318 bool RenderWidgetHostViewAndroid::IsSurfaceAvailableForCopy() const { |
| (...skipping 414 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 732 if (!content_view_core_) | 733 if (!content_view_core_) |
| 733 return; | 734 return; |
| 734 | 735 |
| 735 if (overscroll_effect_) | 736 if (overscroll_effect_) |
| 736 content_view_core_->RemoveLayer(overscroll_effect_->root_layer()); | 737 content_view_core_->RemoveLayer(overscroll_effect_->root_layer()); |
| 737 | 738 |
| 738 content_view_core_->RemoveLayer(layer_); | 739 content_view_core_->RemoveLayer(layer_); |
| 739 } | 740 } |
| 740 | 741 |
| 741 bool RenderWidgetHostViewAndroid::Animate(base::TimeTicks frame_time) { | 742 bool RenderWidgetHostViewAndroid::Animate(base::TimeTicks frame_time) { |
| 742 if (!overscroll_effect_ || !HasFocus()) | 743 if (!overscroll_effect_) |
| 743 return false; | 744 return false; |
| 744 return overscroll_effect_->Animate(frame_time); | 745 return overscroll_effect_->Animate(frame_time); |
| 745 } | 746 } |
| 746 | 747 |
| 747 void RenderWidgetHostViewAndroid::CreateOverscrollEffectIfNecessary() { | 748 void RenderWidgetHostViewAndroid::CreateOverscrollEffectIfNecessary() { |
| 748 if (!overscroll_effect_enabled_ || overscroll_effect_) | 749 if (!overscroll_effect_enabled_ || overscroll_effect_) |
| 749 return; | 750 return; |
| 750 | 751 |
| 751 overscroll_effect_ = OverscrollGlow::Create(); | 752 overscroll_effect_ = OverscrollGlow::Create(); |
| 752 | 753 |
| (...skipping 15 matching lines...) Expand all Loading... |
| 768 overscroll_effect_->set_horizontal_overscroll_enabled( | 769 overscroll_effect_->set_horizontal_overscroll_enabled( |
| 769 ceiled_viewport_size.width() < frame_metadata.root_layer_size.width()); | 770 ceiled_viewport_size.width() < frame_metadata.root_layer_size.width()); |
| 770 overscroll_effect_->set_vertical_overscroll_enabled( | 771 overscroll_effect_->set_vertical_overscroll_enabled( |
| 771 ceiled_viewport_size.height() < frame_metadata.root_layer_size.height()); | 772 ceiled_viewport_size.height() < frame_metadata.root_layer_size.height()); |
| 772 overscroll_effect_->set_size(content_size_in_layer_); | 773 overscroll_effect_->set_size(content_size_in_layer_); |
| 773 } | 774 } |
| 774 | 775 |
| 775 void RenderWidgetHostViewAndroid::ScheduleAnimationIfNecessary() { | 776 void RenderWidgetHostViewAndroid::ScheduleAnimationIfNecessary() { |
| 776 if (!content_view_core_) | 777 if (!content_view_core_) |
| 777 return; | 778 return; |
| 778 if (overscroll_effect_ && overscroll_effect_->IsActive()) | 779 if (overscroll_effect_ && overscroll_effect_->NeedsAnimate()) |
| 779 content_view_core_->SetNeedsAnimate(); | 780 content_view_core_->SetNeedsAnimate(); |
| 780 } | 781 } |
| 781 | 782 |
| 782 void RenderWidgetHostViewAndroid::AcceleratedSurfacePostSubBuffer( | 783 void RenderWidgetHostViewAndroid::AcceleratedSurfacePostSubBuffer( |
| 783 const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params, | 784 const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params, |
| 784 int gpu_host_id) { | 785 int gpu_host_id) { |
| 785 NOTREACHED(); | 786 NOTREACHED(); |
| 786 } | 787 } |
| 787 | 788 |
| 788 void RenderWidgetHostViewAndroid::AcceleratedSurfaceSuspend() { | 789 void RenderWidgetHostViewAndroid::AcceleratedSurfaceSuspend() { |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 956 } | 957 } |
| 957 | 958 |
| 958 void RenderWidgetHostViewAndroid::SendMouseWheelEvent( | 959 void RenderWidgetHostViewAndroid::SendMouseWheelEvent( |
| 959 const WebKit::WebMouseWheelEvent& event) { | 960 const WebKit::WebMouseWheelEvent& event) { |
| 960 if (host_) | 961 if (host_) |
| 961 host_->ForwardWheelEvent(event); | 962 host_->ForwardWheelEvent(event); |
| 962 } | 963 } |
| 963 | 964 |
| 964 void RenderWidgetHostViewAndroid::SendGestureEvent( | 965 void RenderWidgetHostViewAndroid::SendGestureEvent( |
| 965 const WebKit::WebGestureEvent& event) { | 966 const WebKit::WebGestureEvent& event) { |
| 967 // Sending a gesture that may trigger overscroll should resume the effect. |
| 968 if (overscroll_effect_) |
| 969 overscroll_effect_->SetEnabled(true); |
| 970 |
| 966 if (host_) | 971 if (host_) |
| 967 host_->ForwardGestureEvent(event); | 972 host_->ForwardGestureEvent(event); |
| 968 } | 973 } |
| 969 | 974 |
| 970 void RenderWidgetHostViewAndroid::SelectRange(const gfx::Point& start, | 975 void RenderWidgetHostViewAndroid::SelectRange(const gfx::Point& start, |
| 971 const gfx::Point& end) { | 976 const gfx::Point& end) { |
| 972 if (host_) | 977 if (host_) |
| 973 host_->SelectRange(start, end); | 978 host_->SelectRange(start, end); |
| 974 } | 979 } |
| 975 | 980 |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1023 } | 1028 } |
| 1024 | 1029 |
| 1025 SkColor RenderWidgetHostViewAndroid::GetCachedBackgroundColor() const { | 1030 SkColor RenderWidgetHostViewAndroid::GetCachedBackgroundColor() const { |
| 1026 return cached_background_color_; | 1031 return cached_background_color_; |
| 1027 } | 1032 } |
| 1028 | 1033 |
| 1029 void RenderWidgetHostViewAndroid::OnOverscrolled( | 1034 void RenderWidgetHostViewAndroid::OnOverscrolled( |
| 1030 gfx::Vector2dF accumulated_overscroll, | 1035 gfx::Vector2dF accumulated_overscroll, |
| 1031 gfx::Vector2dF current_fling_velocity) { | 1036 gfx::Vector2dF current_fling_velocity) { |
| 1032 CreateOverscrollEffectIfNecessary(); | 1037 CreateOverscrollEffectIfNecessary(); |
| 1033 if (!overscroll_effect_ || !HasFocus()) | 1038 if (!overscroll_effect_) |
| 1034 return; | 1039 return; |
| 1035 | 1040 |
| 1036 overscroll_effect_->OnOverscrolled(base::TimeTicks::Now(), | 1041 overscroll_effect_->OnOverscrolled(base::TimeTicks::Now(), |
| 1037 accumulated_overscroll, | 1042 accumulated_overscroll, |
| 1038 current_fling_velocity); | 1043 current_fling_velocity); |
| 1039 ScheduleAnimationIfNecessary(); | 1044 ScheduleAnimationIfNecessary(); |
| 1040 } | 1045 } |
| 1041 | 1046 |
| 1042 void RenderWidgetHostViewAndroid::SetContentViewCore( | 1047 void RenderWidgetHostViewAndroid::SetContentViewCore( |
| 1043 ContentViewCoreImpl* content_view_core) { | 1048 ContentViewCoreImpl* content_view_core) { |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1103 // RenderWidgetHostView, public: | 1108 // RenderWidgetHostView, public: |
| 1104 | 1109 |
| 1105 // static | 1110 // static |
| 1106 RenderWidgetHostView* | 1111 RenderWidgetHostView* |
| 1107 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) { | 1112 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) { |
| 1108 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); | 1113 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); |
| 1109 return new RenderWidgetHostViewAndroid(rwhi, NULL); | 1114 return new RenderWidgetHostViewAndroid(rwhi, NULL); |
| 1110 } | 1115 } |
| 1111 | 1116 |
| 1112 } // namespace content | 1117 } // namespace content |
| OLD | NEW |