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

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

Issue 422013003: [Android] Use UIResource for overscroll glow (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 4 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 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 : host_(widget_host), 183 : host_(widget_host),
184 needs_begin_frame_(false), 184 needs_begin_frame_(false),
185 is_showing_(!widget_host->is_hidden()), 185 is_showing_(!widget_host->is_hidden()),
186 content_view_core_(NULL), 186 content_view_core_(NULL),
187 ime_adapter_android_(this), 187 ime_adapter_android_(this),
188 cached_background_color_(SK_ColorWHITE), 188 cached_background_color_(SK_ColorWHITE),
189 last_output_surface_id_(kUndefinedOutputSurfaceId), 189 last_output_surface_id_(kUndefinedOutputSurfaceId),
190 weak_ptr_factory_(this), 190 weak_ptr_factory_(this),
191 overscroll_effect_enabled_(!CommandLine::ForCurrentProcess()->HasSwitch( 191 overscroll_effect_enabled_(!CommandLine::ForCurrentProcess()->HasSwitch(
192 switches::kDisableOverscrollEdgeEffect)), 192 switches::kDisableOverscrollEdgeEffect)),
193 overscroll_effect_(OverscrollGlow::Create(overscroll_effect_enabled_)),
194 gesture_provider_(CreateGestureProviderConfig(), this), 193 gesture_provider_(CreateGestureProviderConfig(), this),
195 gesture_text_selector_(this), 194 gesture_text_selector_(this),
196 touch_scrolling_(false), 195 touch_scrolling_(false),
197 potentially_active_fling_count_(0), 196 potentially_active_fling_count_(0),
198 flush_input_requested_(false), 197 flush_input_requested_(false),
199 accelerated_surface_route_id_(0), 198 accelerated_surface_route_id_(0),
200 using_synchronous_compositor_(SynchronousCompositorImpl::FromID( 199 using_synchronous_compositor_(SynchronousCompositorImpl::FromID(
201 widget_host->GetProcess()->GetID(), 200 widget_host->GetProcess()->GetID(),
202 widget_host->GetRoutingID()) != NULL), 201 widget_host->GetRoutingID()) != NULL),
203 frame_evictor_(new DelegatedFrameEvictor(this)), 202 frame_evictor_(new DelegatedFrameEvictor(this)),
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
359 void RenderWidgetHostViewAndroid::MovePluginWindows( 358 void RenderWidgetHostViewAndroid::MovePluginWindows(
360 const std::vector<WebPluginGeometry>& moves) { 359 const std::vector<WebPluginGeometry>& moves) {
361 // We don't have plugin windows on Android. Do nothing. Note: this is called 360 // We don't have plugin windows on Android. Do nothing. Note: this is called
362 // from RenderWidgetHost::OnUpdateRect which is itself invoked while 361 // from RenderWidgetHost::OnUpdateRect which is itself invoked while
363 // processing the corresponding message from Renderer. 362 // processing the corresponding message from Renderer.
364 } 363 }
365 364
366 void RenderWidgetHostViewAndroid::Focus() { 365 void RenderWidgetHostViewAndroid::Focus() {
367 host_->Focus(); 366 host_->Focus();
368 host_->SetInputMethodActive(true); 367 host_->SetInputMethodActive(true);
369 if (overscroll_effect_enabled_) 368 if (overscroll_effect_)
370 overscroll_effect_->Enable(); 369 overscroll_effect_->Enable();
371 } 370 }
372 371
373 void RenderWidgetHostViewAndroid::Blur() { 372 void RenderWidgetHostViewAndroid::Blur() {
374 host_->ExecuteEditCommand("Unselect", ""); 373 host_->ExecuteEditCommand("Unselect", "");
375 host_->SetInputMethodActive(false); 374 host_->SetInputMethodActive(false);
376 host_->Blur(); 375 host_->Blur();
377 overscroll_effect_->Disable(); 376 if (overscroll_effect_)
377 overscroll_effect_->Disable();
378 } 378 }
379 379
380 bool RenderWidgetHostViewAndroid::HasFocus() const { 380 bool RenderWidgetHostViewAndroid::HasFocus() const {
381 if (!content_view_core_) 381 if (!content_view_core_)
382 return false; // ContentViewCore not created yet. 382 return false; // ContentViewCore not created yet.
383 383
384 return content_view_core_->HasFocus(); 384 return content_view_core_->HasFocus();
385 } 385 }
386 386
387 bool RenderWidgetHostViewAndroid::IsSurfaceAvailableForCopy() const { 387 bool RenderWidgetHostViewAndroid::IsSurfaceAvailableForCopy() const {
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after
919 // Calculate the content size. This should be 0 if the texture_size is 0. 919 // Calculate the content size. This should be 0 if the texture_size is 0.
920 gfx::Vector2dF offset; 920 gfx::Vector2dF offset;
921 if (texture_size_in_layer_.GetArea() > 0) 921 if (texture_size_in_layer_.GetArea() > 0)
922 offset = frame_metadata.location_bar_content_translation; 922 offset = frame_metadata.location_bar_content_translation;
923 offset.set_y(offset.y() + frame_metadata.overdraw_bottom_height); 923 offset.set_y(offset.y() + frame_metadata.overdraw_bottom_height);
924 offset.Scale(frame_metadata.device_scale_factor); 924 offset.Scale(frame_metadata.device_scale_factor);
925 content_size_in_layer_ = 925 content_size_in_layer_ =
926 gfx::Size(texture_size_in_layer_.width() - offset.x(), 926 gfx::Size(texture_size_in_layer_.width() - offset.x(),
927 texture_size_in_layer_.height() - offset.y()); 927 texture_size_in_layer_.height() - offset.y());
928 928
929 overscroll_effect_->UpdateDisplayParameters( 929 if (overscroll_effect_) {
930 CreateOverscrollDisplayParameters(frame_metadata)); 930 overscroll_effect_->UpdateDisplayParameters(
931 CreateOverscrollDisplayParameters(frame_metadata));
932 }
931 } 933 }
932 934
933 void RenderWidgetHostViewAndroid::InternalSwapCompositorFrame( 935 void RenderWidgetHostViewAndroid::InternalSwapCompositorFrame(
934 uint32 output_surface_id, 936 uint32 output_surface_id,
935 scoped_ptr<cc::CompositorFrame> frame) { 937 scoped_ptr<cc::CompositorFrame> frame) {
936 if (!frame->delegated_frame_data) { 938 if (!frame->delegated_frame_data) {
937 LOG(ERROR) << "Non-delegated renderer path no longer supported"; 939 LOG(ERROR) << "Non-delegated renderer path no longer supported";
938 return; 940 return;
939 } 941 }
940 942
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
1133 NOTREACHED() << "Need --composite-to-mailbox or --enable-delegated-renderer"; 1135 NOTREACHED() << "Need --composite-to-mailbox or --enable-delegated-renderer";
1134 } 1136 }
1135 1137
1136 void RenderWidgetHostViewAndroid::AttachLayers() { 1138 void RenderWidgetHostViewAndroid::AttachLayers() {
1137 if (!content_view_core_) 1139 if (!content_view_core_)
1138 return; 1140 return;
1139 if (!layer_.get()) 1141 if (!layer_.get())
1140 return; 1142 return;
1141 1143
1142 content_view_core_->AttachLayer(layer_); 1144 content_view_core_->AttachLayer(layer_);
1143 if (overscroll_effect_enabled_) 1145 if (overscroll_effect_)
1144 overscroll_effect_->Enable(); 1146 overscroll_effect_->Enable();
1145 layer_->SetHideLayerAndSubtree(!is_showing_); 1147 layer_->SetHideLayerAndSubtree(!is_showing_);
1146 } 1148 }
1147 1149
1148 void RenderWidgetHostViewAndroid::RemoveLayers() { 1150 void RenderWidgetHostViewAndroid::RemoveLayers() {
1149 if (!content_view_core_) 1151 if (!content_view_core_)
1150 return; 1152 return;
1151 1153
1152 if (!layer_.get()) 1154 if (!layer_.get())
1153 return; 1155 return;
1154 1156
1155 content_view_core_->RemoveLayer(layer_); 1157 content_view_core_->RemoveLayer(layer_);
1156 overscroll_effect_->Disable(); 1158 if (overscroll_effect_)
1159 overscroll_effect_->Disable();
1157 } 1160 }
1158 1161
1159 bool RenderWidgetHostViewAndroid::Animate(base::TimeTicks frame_time) { 1162 bool RenderWidgetHostViewAndroid::Animate(base::TimeTicks frame_time) {
1160 bool needs_animate = overscroll_effect_->Animate(frame_time); 1163 bool needs_animate =
1164 overscroll_effect_ ? overscroll_effect_->Animate(frame_time) : false;
1161 if (selection_controller_) 1165 if (selection_controller_)
1162 needs_animate |= selection_controller_->Animate(frame_time); 1166 needs_animate |= selection_controller_->Animate(frame_time);
1163 return needs_animate; 1167 return needs_animate;
1164 } 1168 }
1165 1169
1166 void RenderWidgetHostViewAndroid::OnContentScrollingChange() { 1170 void RenderWidgetHostViewAndroid::OnContentScrollingChange() {
1167 if (selection_controller_) 1171 if (selection_controller_)
1168 selection_controller_->SetTemporarilyHidden(IsContentScrolling()); 1172 selection_controller_->SetTemporarilyHidden(IsContentScrolling());
1169 } 1173 }
1170 1174
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
1351 1355
1352 void RenderWidgetHostViewAndroid::SendMouseWheelEvent( 1356 void RenderWidgetHostViewAndroid::SendMouseWheelEvent(
1353 const blink::WebMouseWheelEvent& event) { 1357 const blink::WebMouseWheelEvent& event) {
1354 if (host_) 1358 if (host_)
1355 host_->ForwardWheelEvent(event); 1359 host_->ForwardWheelEvent(event);
1356 } 1360 }
1357 1361
1358 void RenderWidgetHostViewAndroid::SendGestureEvent( 1362 void RenderWidgetHostViewAndroid::SendGestureEvent(
1359 const blink::WebGestureEvent& event) { 1363 const blink::WebGestureEvent& event) {
1360 // Sending a gesture that may trigger overscroll should resume the effect. 1364 // Sending a gesture that may trigger overscroll should resume the effect.
1361 if (overscroll_effect_enabled_) 1365 if (overscroll_effect_)
1362 overscroll_effect_->Enable(); 1366 overscroll_effect_->Enable();
1363 1367
1364 if (host_) 1368 if (host_)
1365 host_->ForwardGestureEventWithLatencyInfo(event, CreateLatencyInfo(event)); 1369 host_->ForwardGestureEventWithLatencyInfo(event, CreateLatencyInfo(event));
1366 } 1370 }
1367 1371
1368 void RenderWidgetHostViewAndroid::MoveCaret(const gfx::Point& point) { 1372 void RenderWidgetHostViewAndroid::MoveCaret(const gfx::Point& point) {
1369 if (host_) 1373 if (host_)
1370 host_->MoveCaret(point); 1374 host_->MoveCaret(point);
1371 } 1375 }
1372 1376
1373 void RenderWidgetHostViewAndroid::HideTextHandles() { 1377 void RenderWidgetHostViewAndroid::HideTextHandles() {
1374 if (selection_controller_) 1378 if (selection_controller_)
1375 selection_controller_->HideAndDisallowShowingAutomatically(); 1379 selection_controller_->HideAndDisallowShowingAutomatically();
1376 } 1380 }
1377 1381
1378 SkColor RenderWidgetHostViewAndroid::GetCachedBackgroundColor() const { 1382 SkColor RenderWidgetHostViewAndroid::GetCachedBackgroundColor() const {
1379 return cached_background_color_; 1383 return cached_background_color_;
1380 } 1384 }
1381 1385
1382 void RenderWidgetHostViewAndroid::DidOverscroll( 1386 void RenderWidgetHostViewAndroid::DidOverscroll(
1383 const DidOverscrollParams& params) { 1387 const DidOverscrollParams& params) {
1384 if (!content_view_core_ || !layer_ || !is_showing_) 1388 if (!content_view_core_ || !layer_ || !is_showing_)
1385 return; 1389 return;
1386 1390
1387 const float device_scale_factor = content_view_core_->GetDpiScale(); 1391 const float device_scale_factor = content_view_core_->GetDpiScale();
1388 if (overscroll_effect_->OnOverscrolled( 1392
1393 if (overscroll_effect_ &&
1394 overscroll_effect_->OnOverscrolled(
1389 content_view_core_->GetLayer(), 1395 content_view_core_->GetLayer(),
1390 base::TimeTicks::Now(), 1396 base::TimeTicks::Now(),
1391 gfx::ScaleVector2d(params.accumulated_overscroll, 1397 gfx::ScaleVector2d(params.accumulated_overscroll,
1392 device_scale_factor), 1398 device_scale_factor),
1393 gfx::ScaleVector2d(params.latest_overscroll_delta, 1399 gfx::ScaleVector2d(params.latest_overscroll_delta,
1394 device_scale_factor), 1400 device_scale_factor),
1395 gfx::ScaleVector2d(params.current_fling_velocity, 1401 gfx::ScaleVector2d(params.current_fling_velocity,
1396 device_scale_factor))) { 1402 device_scale_factor))) {
1397 SetNeedsAnimate(); 1403 SetNeedsAnimate();
1398 } 1404 }
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1445 observing_root_window_ = true; 1451 observing_root_window_ = true;
1446 if (needs_begin_frame_) 1452 if (needs_begin_frame_)
1447 content_view_core_->GetWindowAndroid()->RequestVSyncUpdate(); 1453 content_view_core_->GetWindowAndroid()->RequestVSyncUpdate();
1448 } 1454 }
1449 1455
1450 if (resize) 1456 if (resize)
1451 WasResized(); 1457 WasResized();
1452 1458
1453 if (!selection_controller_) 1459 if (!selection_controller_)
1454 selection_controller_.reset(new TouchSelectionController(this)); 1460 selection_controller_.reset(new TouchSelectionController(this));
1461
1462 if (!content_view_core_) {
1463 overscroll_effect_.reset();
1464 } else if (overscroll_effect_enabled_ && !overscroll_effect_) {
1465 DCHECK(content_view_core_->GetWindowAndroid()->GetCompositor());
1466 overscroll_effect_ =
1467 OverscrollGlow::Create(&content_view_core_->GetWindowAndroid()
1468 ->GetCompositor()
1469 ->GetSystemUIResourceManager());
1470 }
1455 } 1471 }
1456 1472
1457 void RenderWidgetHostViewAndroid::RunAckCallbacks() { 1473 void RenderWidgetHostViewAndroid::RunAckCallbacks() {
1458 while (!ack_callbacks_.empty()) { 1474 while (!ack_callbacks_.empty()) {
1459 ack_callbacks_.front().Run(); 1475 ack_callbacks_.front().Run();
1460 ack_callbacks_.pop(); 1476 ack_callbacks_.pop();
1461 } 1477 }
1462 } 1478 }
1463 1479
1464 void RenderWidgetHostViewAndroid::OnGestureEvent( 1480 void RenderWidgetHostViewAndroid::OnGestureEvent(
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
1650 results->orientationAngle = display.RotationAsDegree(); 1666 results->orientationAngle = display.RotationAsDegree();
1651 results->orientationType = 1667 results->orientationType =
1652 RenderWidgetHostViewBase::GetOrientationTypeForMobile(display); 1668 RenderWidgetHostViewBase::GetOrientationTypeForMobile(display);
1653 gfx::DeviceDisplayInfo info; 1669 gfx::DeviceDisplayInfo info;
1654 results->depth = info.GetBitsPerPixel(); 1670 results->depth = info.GetBitsPerPixel();
1655 results->depthPerComponent = info.GetBitsPerComponent(); 1671 results->depthPerComponent = info.GetBitsPerComponent();
1656 results->isMonochrome = (results->depthPerComponent == 0); 1672 results->isMonochrome = (results->depthPerComponent == 0);
1657 } 1673 }
1658 1674
1659 } // namespace content 1675 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698