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

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: Fix build Created 6 years, 5 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 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
122 const cc::CompositorFrameMetadata& frame_metadata) { 122 const cc::CompositorFrameMetadata& frame_metadata) {
123 const float scale_factor = 123 const float scale_factor =
124 frame_metadata.page_scale_factor * frame_metadata.device_scale_factor; 124 frame_metadata.page_scale_factor * frame_metadata.device_scale_factor;
125 125
126 // Compute the size and offsets for each edge, where each effect is sized to 126 // Compute the size and offsets for each edge, where each effect is sized to
127 // the viewport and offset by the distance of each viewport edge to the 127 // the viewport and offset by the distance of each viewport edge to the
128 // respective content edge. 128 // respective content edge.
129 OverscrollGlow::DisplayParameters params; 129 OverscrollGlow::DisplayParameters params;
130 params.size = gfx::ScaleSize( 130 params.size = gfx::ScaleSize(
131 frame_metadata.scrollable_viewport_size, scale_factor); 131 frame_metadata.scrollable_viewport_size, scale_factor);
132 params.edge_offsets[EdgeEffect::EDGE_TOP] = 132 params.edge_offsets[OverscrollGlow::EDGE_TOP] =
133 -frame_metadata.root_scroll_offset.y() * scale_factor; 133 -frame_metadata.root_scroll_offset.y() * scale_factor;
134 params.edge_offsets[EdgeEffect::EDGE_LEFT] = 134 params.edge_offsets[OverscrollGlow::EDGE_LEFT] =
135 -frame_metadata.root_scroll_offset.x() * scale_factor; 135 -frame_metadata.root_scroll_offset.x() * scale_factor;
136 params.edge_offsets[EdgeEffect::EDGE_BOTTOM] = 136 params.edge_offsets[OverscrollGlow::EDGE_BOTTOM] =
137 (frame_metadata.root_layer_size.height() - 137 (frame_metadata.root_layer_size.height() -
138 frame_metadata.root_scroll_offset.y() - 138 frame_metadata.root_scroll_offset.y() -
139 frame_metadata.scrollable_viewport_size.height()) * scale_factor; 139 frame_metadata.scrollable_viewport_size.height()) * scale_factor;
140 params.edge_offsets[EdgeEffect::EDGE_RIGHT] = 140 params.edge_offsets[OverscrollGlow::EDGE_RIGHT] =
141 (frame_metadata.root_layer_size.width() - 141 (frame_metadata.root_layer_size.width() -
142 frame_metadata.root_scroll_offset.x() - 142 frame_metadata.root_scroll_offset.x() -
143 frame_metadata.scrollable_viewport_size.width()) * scale_factor; 143 frame_metadata.scrollable_viewport_size.width()) * scale_factor;
144 params.device_scale_factor = frame_metadata.device_scale_factor;
145 144
146 return params; 145 return params;
147 } 146 }
148 147
149 ui::GestureProvider::Config CreateGestureProviderConfig() { 148 ui::GestureProvider::Config CreateGestureProviderConfig() {
150 ui::GestureProvider::Config config = ui::DefaultGestureProviderConfig(); 149 ui::GestureProvider::Config config = ui::DefaultGestureProviderConfig();
151 config.disable_click_delay = 150 config.disable_click_delay =
152 CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableClickDelay); 151 CommandLine::ForCurrentProcess()->HasSwitch(switches::kDisableClickDelay);
153 return config; 152 return config;
154 } 153 }
(...skipping 949 matching lines...) Expand 10 before | Expand all | Expand 10 after
1104 1103
1105 void RenderWidgetHostViewAndroid::ProcessAckedTouchEvent( 1104 void RenderWidgetHostViewAndroid::ProcessAckedTouchEvent(
1106 const TouchEventWithLatencyInfo& touch, InputEventAckState ack_result) { 1105 const TouchEventWithLatencyInfo& touch, InputEventAckState ack_result) {
1107 const bool event_consumed = ack_result == INPUT_EVENT_ACK_STATE_CONSUMED; 1106 const bool event_consumed = ack_result == INPUT_EVENT_ACK_STATE_CONSUMED;
1108 gesture_provider_.OnTouchEventAck(event_consumed); 1107 gesture_provider_.OnTouchEventAck(event_consumed);
1109 } 1108 }
1110 1109
1111 void RenderWidgetHostViewAndroid::GestureEventAck( 1110 void RenderWidgetHostViewAndroid::GestureEventAck(
1112 const blink::WebGestureEvent& event, 1111 const blink::WebGestureEvent& event,
1113 InputEventAckState ack_result) { 1112 InputEventAckState ack_result) {
1113 // The overscroll effect requires an explicit release signal that may not be
1114 // sent from the renderer compositor.
1115 if (event.type == blink::WebInputEvent::GestureScrollEnd ||
1116 event.type == blink::WebInputEvent::GestureFlingStart) {
1117 DidOverscroll(DidOverscrollParams());
1118 }
1119
1114 if (content_view_core_) 1120 if (content_view_core_)
1115 content_view_core_->OnGestureEventAck(event, ack_result); 1121 content_view_core_->OnGestureEventAck(event, ack_result);
1116 } 1122 }
1117 1123
1118 InputEventAckState RenderWidgetHostViewAndroid::FilterInputEvent( 1124 InputEventAckState RenderWidgetHostViewAndroid::FilterInputEvent(
1119 const blink::WebInputEvent& input_event) { 1125 const blink::WebInputEvent& input_event) {
1126 if (input_event.type == blink::WebInputEvent::GestureScrollUpdate) {
1127 const blink::WebGestureEvent& gesture =
1128 static_cast<const blink::WebGestureEvent&>(input_event);
1129 last_scroll_update_position_ = gfx::PointF(gesture.x, gesture.y);
1130 }
1131
1120 if (content_view_core_ && 1132 if (content_view_core_ &&
1121 content_view_core_->FilterInputEvent(input_event)) 1133 content_view_core_->FilterInputEvent(input_event))
1122 return INPUT_EVENT_ACK_STATE_CONSUMED; 1134 return INPUT_EVENT_ACK_STATE_CONSUMED;
1123 1135
1124 if (!host_) 1136 if (!host_)
1125 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED; 1137 return INPUT_EVENT_ACK_STATE_NOT_CONSUMED;
1126 1138
1127 if (input_event.type == blink::WebInputEvent::GestureTapDown || 1139 if (input_event.type == blink::WebInputEvent::GestureTapDown ||
1128 input_event.type == blink::WebInputEvent::TouchStart) { 1140 input_event.type == blink::WebInputEvent::TouchStart) {
1129 GpuDataManagerImpl* gpu_data = GpuDataManagerImpl::GetInstance(); 1141 GpuDataManagerImpl* gpu_data = GpuDataManagerImpl::GetInstance();
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
1235 1247
1236 const float device_scale_factor = content_view_core_->GetDpiScale(); 1248 const float device_scale_factor = content_view_core_->GetDpiScale();
1237 if (overscroll_effect_->OnOverscrolled( 1249 if (overscroll_effect_->OnOverscrolled(
1238 content_view_core_->GetLayer(), 1250 content_view_core_->GetLayer(),
1239 base::TimeTicks::Now(), 1251 base::TimeTicks::Now(),
1240 gfx::ScaleVector2d(params.accumulated_overscroll, 1252 gfx::ScaleVector2d(params.accumulated_overscroll,
1241 device_scale_factor), 1253 device_scale_factor),
1242 gfx::ScaleVector2d(params.latest_overscroll_delta, 1254 gfx::ScaleVector2d(params.latest_overscroll_delta,
1243 device_scale_factor), 1255 device_scale_factor),
1244 gfx::ScaleVector2d(params.current_fling_velocity, 1256 gfx::ScaleVector2d(params.current_fling_velocity,
1257 device_scale_factor),
1258 gfx::ScaleVector2d(last_scroll_update_position_.OffsetFromOrigin(),
1245 device_scale_factor))) { 1259 device_scale_factor))) {
1246 SetNeedsAnimate(); 1260 SetNeedsAnimate();
1247 } 1261 }
1248 } 1262 }
1249 1263
1250 void RenderWidgetHostViewAndroid::DidStopFlinging() { 1264 void RenderWidgetHostViewAndroid::DidStopFlinging() {
1251 if (content_view_core_) 1265 if (content_view_core_)
1252 content_view_core_->DidStopFlinging(); 1266 content_view_core_->DidStopFlinging();
1253 } 1267 }
1254 1268
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
1483 results->orientationAngle = display.RotationAsDegree(); 1497 results->orientationAngle = display.RotationAsDegree();
1484 results->orientationType = 1498 results->orientationType =
1485 RenderWidgetHostViewBase::GetOrientationTypeForMobile(display); 1499 RenderWidgetHostViewBase::GetOrientationTypeForMobile(display);
1486 gfx::DeviceDisplayInfo info; 1500 gfx::DeviceDisplayInfo info;
1487 results->depth = info.GetBitsPerPixel(); 1501 results->depth = info.GetBitsPerPixel();
1488 results->depthPerComponent = info.GetBitsPerComponent(); 1502 results->depthPerComponent = info.GetBitsPerComponent();
1489 results->isMonochrome = (results->depthPerComponent == 0); 1503 results->isMonochrome = (results->depthPerComponent == 0);
1490 } 1504 }
1491 1505
1492 } // namespace content 1506 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698