| 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 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |