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

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

Issue 17413016: Fix overscroll glow when the FIP dialog is active (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Explicit enable on creation Created 7 years, 6 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
« no previous file with comments | « content/browser/android/overscroll_glow.cc ('k') | no next file » | 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 "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
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
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(true);
752 753
753 // Prevent future creation attempts on failure. 754 // Prevent future creation attempts on failure.
754 if (!overscroll_effect_) 755 if (!overscroll_effect_)
755 overscroll_effect_enabled_ = false; 756 overscroll_effect_enabled_ = false;
756 757
757 if (overscroll_effect_ && content_view_core_ && are_layers_attached_) 758 if (overscroll_effect_ && content_view_core_ && are_layers_attached_)
758 content_view_core_->AttachLayer(overscroll_effect_->root_layer()); 759 content_view_core_->AttachLayer(overscroll_effect_->root_layer());
759 } 760 }
760 761
761 void RenderWidgetHostViewAndroid::UpdateAnimationSize( 762 void RenderWidgetHostViewAndroid::UpdateAnimationSize(
762 const cc::CompositorFrameMetadata& frame_metadata) { 763 const cc::CompositorFrameMetadata& frame_metadata) {
763 if (!overscroll_effect_) 764 if (!overscroll_effect_)
764 return; 765 return;
765 // Disable edge effects for axes on which scrolling is impossible. 766 // Disable edge effects for axes on which scrolling is impossible.
766 gfx::SizeF ceiled_viewport_size = 767 gfx::SizeF ceiled_viewport_size =
767 gfx::ToCeiledSize(frame_metadata.viewport_size); 768 gfx::ToCeiledSize(frame_metadata.viewport_size);
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
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
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
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
OLDNEW
« no previous file with comments | « content/browser/android/overscroll_glow.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698