| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |