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

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

Issue 82553015: Switch the android overscroll glow to use UIResources. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: minor naming changes Created 7 years 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 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 using_synchronous_compositor_(SynchronousCompositorImpl::FromID( 117 using_synchronous_compositor_(SynchronousCompositorImpl::FromID(
118 widget_host->GetProcess()->GetID(), 118 widget_host->GetProcess()->GetID(),
119 widget_host->GetRoutingID()) != NULL) { 119 widget_host->GetRoutingID()) != NULL) {
120 if (!UsingDelegatedRenderer()) { 120 if (!UsingDelegatedRenderer()) {
121 texture_layer_ = cc::TextureLayer::Create(NULL); 121 texture_layer_ = cc::TextureLayer::Create(NULL);
122 layer_ = texture_layer_; 122 layer_ = texture_layer_;
123 } 123 }
124 124
125 overscroll_effect_enabled_ = !CommandLine::ForCurrentProcess()-> 125 overscroll_effect_enabled_ = !CommandLine::ForCurrentProcess()->
126 HasSwitch(switches::kDisableOverscrollEdgeEffect); 126 HasSwitch(switches::kDisableOverscrollEdgeEffect);
127 // Don't block the main thread with effect resource loading.
128 // Actual effect creation is deferred until an overscroll event is received.
129 if (overscroll_effect_enabled_) {
130 base::WorkerPool::PostTask(FROM_HERE,
131 base::Bind(&OverscrollGlow::EnsureResources),
132 true);
133 }
134 127
135 host_->SetView(this); 128 host_->SetView(this);
136 SetContentViewCore(content_view_core); 129 SetContentViewCore(content_view_core);
137 ImageTransportFactoryAndroid::AddObserver(this); 130 ImageTransportFactoryAndroid::AddObserver(this);
138 } 131 }
139 132
140 RenderWidgetHostViewAndroid::~RenderWidgetHostViewAndroid() { 133 RenderWidgetHostViewAndroid::~RenderWidgetHostViewAndroid() {
141 ImageTransportFactoryAndroid::RemoveObserver(this); 134 ImageTransportFactoryAndroid::RemoveObserver(this);
142 SetContentViewCore(NULL); 135 SetContentViewCore(NULL);
143 DCHECK(ack_callbacks_.empty()); 136 DCHECK(ack_callbacks_.empty());
(...skipping 714 matching lines...) Expand 10 before | Expand all | Expand 10 after
858 content_view_core_->AttachLayer(layer_); 851 content_view_core_->AttachLayer(layer_);
859 } 852 }
860 853
861 void RenderWidgetHostViewAndroid::RemoveLayers() { 854 void RenderWidgetHostViewAndroid::RemoveLayers() {
862 if (!content_view_core_) 855 if (!content_view_core_)
863 return; 856 return;
864 if (!layer_.get()) 857 if (!layer_.get())
865 return; 858 return;
866 859
867 if (overscroll_effect_) 860 if (overscroll_effect_)
868 content_view_core_->RemoveLayer(overscroll_effect_->root_layer()); 861 overscroll_effect_->RemoveLayer();
869 862
870 content_view_core_->RemoveLayer(layer_); 863 content_view_core_->RemoveLayer(layer_);
871 } 864 }
872 865
873 bool RenderWidgetHostViewAndroid::Animate(base::TimeTicks frame_time) { 866 bool RenderWidgetHostViewAndroid::Animate(base::TimeTicks frame_time) {
874 if (!overscroll_effect_) 867 if (!overscroll_effect_)
875 return false; 868 return false;
876 869
877 bool overscroll_running = overscroll_effect_->Animate(frame_time); 870 bool overscroll_running = overscroll_effect_->Animate(frame_time);
878 if (!overscroll_running) 871 if (!overscroll_running)
879 content_view_core_->RemoveLayer(overscroll_effect_->root_layer()); 872 overscroll_effect_->RemoveLayer();
880 873
881 return overscroll_running; 874 return overscroll_running;
882 } 875 }
883 876
884 void RenderWidgetHostViewAndroid::CreateOverscrollEffectIfNecessary() { 877 void RenderWidgetHostViewAndroid::CreateOverscrollEffectIfNecessary() {
885 if (!overscroll_effect_enabled_ || overscroll_effect_) 878 if (!overscroll_effect_enabled_ || overscroll_effect_)
886 return; 879 return;
887 880
888 overscroll_effect_ = OverscrollGlow::Create(true, content_size_in_layer_); 881 overscroll_effect_ = OverscrollGlow::Create(true, content_size_in_layer_);
889 882
(...skipping 14 matching lines...) Expand all
904 overscroll_effect_->set_vertical_overscroll_enabled( 897 overscroll_effect_->set_vertical_overscroll_enabled(
905 ceiled_viewport_size.height() < frame_metadata.root_layer_size.height()); 898 ceiled_viewport_size.height() < frame_metadata.root_layer_size.height());
906 overscroll_effect_->set_size(content_size_in_layer_); 899 overscroll_effect_->set_size(content_size_in_layer_);
907 } 900 }
908 901
909 void RenderWidgetHostViewAndroid::ScheduleAnimationIfNecessary() { 902 void RenderWidgetHostViewAndroid::ScheduleAnimationIfNecessary() {
910 if (!content_view_core_ || !overscroll_effect_) 903 if (!content_view_core_ || !overscroll_effect_)
911 return; 904 return;
912 905
913 if (overscroll_effect_->NeedsAnimate() && are_layers_attached_) { 906 if (overscroll_effect_->NeedsAnimate() && are_layers_attached_) {
914 if (!overscroll_effect_->root_layer()->parent()) 907 if (!overscroll_effect_->IsAttached())
915 content_view_core_->AttachLayer(overscroll_effect_->root_layer()); 908 overscroll_effect_->AttachLayerTo(content_view_core_->GetLayer());
916 content_view_core_->SetNeedsAnimate(); 909 content_view_core_->SetNeedsAnimate();
917 } else { 910 } else {
918 content_view_core_->RemoveLayer(overscroll_effect_->root_layer()); 911 overscroll_effect_->RemoveLayer();
919 } 912 }
920 } 913 }
921 914
922 void RenderWidgetHostViewAndroid::AcceleratedSurfacePostSubBuffer( 915 void RenderWidgetHostViewAndroid::AcceleratedSurfacePostSubBuffer(
923 const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params, 916 const GpuHostMsg_AcceleratedSurfacePostSubBuffer_Params& params,
924 int gpu_host_id) { 917 int gpu_host_id) {
925 NOTREACHED(); 918 NOTREACHED();
926 } 919 }
927 920
928 void RenderWidgetHostViewAndroid::AcceleratedSurfaceSuspend() { 921 void RenderWidgetHostViewAndroid::AcceleratedSurfaceSuspend() {
(...skipping 326 matching lines...) Expand 10 before | Expand all | Expand 10 after
1255 ack_callbacks_.pop(); 1248 ack_callbacks_.pop();
1256 } 1249 }
1257 } 1250 }
1258 1251
1259 void RenderWidgetHostViewAndroid::HasTouchEventHandlers( 1252 void RenderWidgetHostViewAndroid::HasTouchEventHandlers(
1260 bool need_touch_events) { 1253 bool need_touch_events) {
1261 if (content_view_core_) 1254 if (content_view_core_)
1262 content_view_core_->HasTouchEventHandlers(need_touch_events); 1255 content_view_core_->HasTouchEventHandlers(need_touch_events);
1263 } 1256 }
1264 1257
1265 void RenderWidgetHostViewAndroid::OnCompositingDidCommit() { 1258 void RenderWidgetHostViewAndroid::OnCompositingDidCommit(
1259 Compositor* compositor) {
1266 RunAckCallbacks(); 1260 RunAckCallbacks();
1261 if (overscroll_effect_) {
1262 cc::UIResourceId edge_id = compositor->GetOverscrollEdgeId();
1263 cc::UIResourceId glow_id = compositor->GetOverscrollGlowId();
1264 if (edge_id && glow_id) {
1265 bool updated_resources = overscroll_effect_->SetLayerResources(
1266 edge_id,
1267 glow_id,
1268 compositor->GetUIResourceSize(edge_id),
1269 compositor->GetUIResourceSize(glow_id));
1270 if (updated_resources)
1271 ScheduleAnimationIfNecessary();
1272 }
1273 }
1267 } 1274 }
1268 1275
1269 void RenderWidgetHostViewAndroid::OnDetachCompositor() { 1276 void RenderWidgetHostViewAndroid::OnDetachCompositor() {
1270 DCHECK(content_view_core_); 1277 DCHECK(content_view_core_);
1271 DCHECK(!using_synchronous_compositor_); 1278 DCHECK(!using_synchronous_compositor_);
1272 RunAckCallbacks(); 1279 RunAckCallbacks();
1273 } 1280 }
1274 1281
1275 void RenderWidgetHostViewAndroid::OnLostResources() { 1282 void RenderWidgetHostViewAndroid::OnLostResources() {
1276 if (texture_layer_.get()) 1283 if (texture_layer_.get())
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
1376 // RenderWidgetHostView, public: 1383 // RenderWidgetHostView, public:
1377 1384
1378 // static 1385 // static
1379 RenderWidgetHostView* 1386 RenderWidgetHostView*
1380 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) { 1387 RenderWidgetHostView::CreateViewForWidget(RenderWidgetHost* widget) {
1381 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget); 1388 RenderWidgetHostImpl* rwhi = RenderWidgetHostImpl::From(widget);
1382 return new RenderWidgetHostViewAndroid(rwhi, NULL); 1389 return new RenderWidgetHostViewAndroid(rwhi, NULL);
1383 } 1390 }
1384 1391
1385 } // namespace content 1392 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698