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

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

Issue 367173003: [Android] Implementation of overscroll effect for Android L (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Write event location through DidOverscrollParams 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 115 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 const cc::CompositorFrameMetadata& frame_metadata) { 126 const cc::CompositorFrameMetadata& frame_metadata) {
127 const float scale_factor = 127 const float scale_factor =
128 frame_metadata.page_scale_factor * frame_metadata.device_scale_factor; 128 frame_metadata.page_scale_factor * frame_metadata.device_scale_factor;
129 129
130 // Compute the size and offsets for each edge, where each effect is sized to 130 // Compute the size and offsets for each edge, where each effect is sized to
131 // the viewport and offset by the distance of each viewport edge to the 131 // the viewport and offset by the distance of each viewport edge to the
132 // respective content edge. 132 // respective content edge.
133 OverscrollGlow::DisplayParameters params; 133 OverscrollGlow::DisplayParameters params;
134 params.size = gfx::ScaleSize( 134 params.size = gfx::ScaleSize(
135 frame_metadata.scrollable_viewport_size, scale_factor); 135 frame_metadata.scrollable_viewport_size, scale_factor);
136 params.edge_offsets[EdgeEffect::EDGE_TOP] = 136 params.edge_offsets[OverscrollGlow::EDGE_TOP] =
137 -frame_metadata.root_scroll_offset.y() * scale_factor; 137 -frame_metadata.root_scroll_offset.y() * scale_factor;
138 params.edge_offsets[EdgeEffect::EDGE_LEFT] = 138 params.edge_offsets[OverscrollGlow::EDGE_LEFT] =
139 -frame_metadata.root_scroll_offset.x() * scale_factor; 139 -frame_metadata.root_scroll_offset.x() * scale_factor;
140 params.edge_offsets[EdgeEffect::EDGE_BOTTOM] = 140 params.edge_offsets[OverscrollGlow::EDGE_BOTTOM] =
141 (frame_metadata.root_layer_size.height() - 141 (frame_metadata.root_layer_size.height() -
142 frame_metadata.root_scroll_offset.y() - 142 frame_metadata.root_scroll_offset.y() -
143 frame_metadata.scrollable_viewport_size.height()) * scale_factor; 143 frame_metadata.scrollable_viewport_size.height()) *
144 params.edge_offsets[EdgeEffect::EDGE_RIGHT] = 144 scale_factor;
145 params.edge_offsets[OverscrollGlow::EDGE_RIGHT] =
145 (frame_metadata.root_layer_size.width() - 146 (frame_metadata.root_layer_size.width() -
146 frame_metadata.root_scroll_offset.x() - 147 frame_metadata.root_scroll_offset.x() -
147 frame_metadata.scrollable_viewport_size.width()) * scale_factor; 148 frame_metadata.scrollable_viewport_size.width()) *
148 params.device_scale_factor = frame_metadata.device_scale_factor; 149 scale_factor;
149 150
150 return params; 151 return params;
151 } 152 }
152 153
153 ui::GestureProvider::Config CreateGestureProviderConfig() { 154 ui::GestureProvider::Config CreateGestureProviderConfig() {
154 ui::GestureProvider::Config config = ui::DefaultGestureProviderConfig(); 155 ui::GestureProvider::Config config = ui::DefaultGestureProviderConfig();
155 config.disable_click_delay = 156 config.disable_click_delay =
156 base::CommandLine::ForCurrentProcess()->HasSwitch( 157 base::CommandLine::ForCurrentProcess()->HasSwitch(
157 switches::kDisableClickDelay); 158 switches::kDisableClickDelay);
158 return config; 159 return config;
(...skipping 1071 matching lines...) Expand 10 before | Expand all | Expand 10 after
1230 1231
1231 void RenderWidgetHostViewAndroid::ProcessAckedTouchEvent( 1232 void RenderWidgetHostViewAndroid::ProcessAckedTouchEvent(
1232 const TouchEventWithLatencyInfo& touch, InputEventAckState ack_result) { 1233 const TouchEventWithLatencyInfo& touch, InputEventAckState ack_result) {
1233 const bool event_consumed = ack_result == INPUT_EVENT_ACK_STATE_CONSUMED; 1234 const bool event_consumed = ack_result == INPUT_EVENT_ACK_STATE_CONSUMED;
1234 gesture_provider_.OnTouchEventAck(event_consumed); 1235 gesture_provider_.OnTouchEventAck(event_consumed);
1235 } 1236 }
1236 1237
1237 void RenderWidgetHostViewAndroid::GestureEventAck( 1238 void RenderWidgetHostViewAndroid::GestureEventAck(
1238 const blink::WebGestureEvent& event, 1239 const blink::WebGestureEvent& event,
1239 InputEventAckState ack_result) { 1240 InputEventAckState ack_result) {
1241 // The overscroll effect requires an explicit release signal that may not be
1242 // sent from the renderer compositor.
1243 if (event.type == blink::WebInputEvent::GestureScrollEnd ||
1244 event.type == blink::WebInputEvent::GestureFlingStart) {
1245 DidOverscroll(DidOverscrollParams());
1246 }
1247
1240 switch (event.type) { 1248 switch (event.type) {
1241 case blink::WebInputEvent::GestureScrollBegin: 1249 case blink::WebInputEvent::GestureScrollBegin:
1242 touch_scrolling_ = true; 1250 touch_scrolling_ = true;
1243 potentially_active_fling_count_ = 0; 1251 potentially_active_fling_count_ = 0;
1244 OnContentScrollingChange(); 1252 OnContentScrollingChange();
1245 break; 1253 break;
1246 case blink::WebInputEvent::GestureScrollEnd: 1254 case blink::WebInputEvent::GestureScrollEnd:
1247 touch_scrolling_ = false; 1255 touch_scrolling_ = false;
1248 OnContentScrollingChange(); 1256 OnContentScrollingChange();
1249 break; 1257 break;
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after
1417 1425
1418 if (overscroll_effect_ && 1426 if (overscroll_effect_ &&
1419 overscroll_effect_->OnOverscrolled( 1427 overscroll_effect_->OnOverscrolled(
1420 content_view_core_->GetLayer(), 1428 content_view_core_->GetLayer(),
1421 base::TimeTicks::Now(), 1429 base::TimeTicks::Now(),
1422 gfx::ScaleVector2d(params.accumulated_overscroll, 1430 gfx::ScaleVector2d(params.accumulated_overscroll,
1423 device_scale_factor), 1431 device_scale_factor),
1424 gfx::ScaleVector2d(params.latest_overscroll_delta, 1432 gfx::ScaleVector2d(params.latest_overscroll_delta,
1425 device_scale_factor), 1433 device_scale_factor),
1426 gfx::ScaleVector2d(params.current_fling_velocity, 1434 gfx::ScaleVector2d(params.current_fling_velocity,
1427 device_scale_factor))) { 1435 device_scale_factor),
1436 gfx::ScaleVector2d(
1437 params.causal_event_viewport_point.OffsetFromOrigin(),
1438 device_scale_factor))) {
1428 SetNeedsAnimate(); 1439 SetNeedsAnimate();
1429 } 1440 }
1430 } 1441 }
1431 1442
1432 void RenderWidgetHostViewAndroid::DidStopFlinging() { 1443 void RenderWidgetHostViewAndroid::DidStopFlinging() {
1433 if (potentially_active_fling_count_) { 1444 if (potentially_active_fling_count_) {
1434 --potentially_active_fling_count_; 1445 --potentially_active_fling_count_;
1435 OnContentScrollingChange(); 1446 OnContentScrollingChange();
1436 } 1447 }
1437 1448
(...skipping 255 matching lines...) Expand 10 before | Expand all | Expand 10 after
1693 results->orientationAngle = display.RotationAsDegree(); 1704 results->orientationAngle = display.RotationAsDegree();
1694 results->orientationType = 1705 results->orientationType =
1695 RenderWidgetHostViewBase::GetOrientationTypeForMobile(display); 1706 RenderWidgetHostViewBase::GetOrientationTypeForMobile(display);
1696 gfx::DeviceDisplayInfo info; 1707 gfx::DeviceDisplayInfo info;
1697 results->depth = info.GetBitsPerPixel(); 1708 results->depth = info.GetBitsPerPixel();
1698 results->depthPerComponent = info.GetBitsPerComponent(); 1709 results->depthPerComponent = info.GetBitsPerComponent();
1699 results->isMonochrome = (results->depthPerComponent == 0); 1710 results->isMonochrome = (results->depthPerComponent == 0);
1700 } 1711 }
1701 1712
1702 } // namespace content 1713 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698