| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/memory/scoped_ptr.h" | 6 #include "base/memory/scoped_ptr.h" |
| 7 #include "base/time/time.h" | 7 #include "base/time/time.h" |
| 8 #include "content/browser/renderer_host/input/synthetic_gesture.h" | 8 #include "content/browser/renderer_host/input/synthetic_gesture.h" |
| 9 #include "content/browser/renderer_host/input/synthetic_gesture_controller.h" | 9 #include "content/browser/renderer_host/input/synthetic_gesture_controller.h" |
| 10 #include "content/browser/renderer_host/input/synthetic_gesture_target.h" | 10 #include "content/browser/renderer_host/input/synthetic_gesture_target.h" |
| 11 #include "content/browser/renderer_host/input/synthetic_pinch_gesture.h" | 11 #include "content/browser/renderer_host/input/synthetic_pinch_gesture.h" |
| 12 #include "content/browser/renderer_host/input/synthetic_smooth_drag_gesture.h" | 12 #include "content/browser/renderer_host/input/synthetic_smooth_drag_gesture.h" |
| 13 #include "content/browser/renderer_host/input/synthetic_smooth_move_gesture.h" | 13 #include "content/browser/renderer_host/input/synthetic_smooth_move_gesture.h" |
| 14 #include "content/browser/renderer_host/input/synthetic_smooth_scroll_gesture.h" | 14 #include "content/browser/renderer_host/input/synthetic_smooth_scroll_gesture.h" |
| 15 #include "content/browser/renderer_host/input/synthetic_tap_gesture.h" | 15 #include "content/browser/renderer_host/input/synthetic_tap_gesture.h" |
| 16 #include "content/browser/renderer_host/input/synthetic_touchpad_pinch_gesture.h
" |
| 17 #include "content/browser/renderer_host/input/synthetic_touchscreen_pinch_gestur
e.h" |
| 16 #include "content/browser/renderer_host/render_widget_host_delegate.h" | 18 #include "content/browser/renderer_host/render_widget_host_delegate.h" |
| 17 #include "content/common/input/synthetic_pinch_gesture_params.h" | 19 #include "content/common/input/synthetic_pinch_gesture_params.h" |
| 18 #include "content/common/input/synthetic_smooth_drag_gesture_params.h" | 20 #include "content/common/input/synthetic_smooth_drag_gesture_params.h" |
| 19 #include "content/common/input/synthetic_smooth_scroll_gesture_params.h" | 21 #include "content/common/input/synthetic_smooth_scroll_gesture_params.h" |
| 20 #include "content/common/input/synthetic_tap_gesture_params.h" | 22 #include "content/common/input/synthetic_tap_gesture_params.h" |
| 21 #include "content/public/test/mock_render_process_host.h" | 23 #include "content/public/test/mock_render_process_host.h" |
| 22 #include "content/public/test/test_browser_context.h" | 24 #include "content/public/test/test_browser_context.h" |
| 23 #include "content/test/test_render_view_host.h" | 25 #include "content/test/test_render_view_host.h" |
| 24 #include "testing/gtest/include/gtest/gtest.h" | 26 #include "testing/gtest/include/gtest/gtest.h" |
| 25 #include "third_party/WebKit/public/web/WebInputEvent.h" | 27 #include "third_party/WebKit/public/web/WebInputEvent.h" |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 211 start_to_end_distance_ = mouse_point - start_; | 213 start_to_end_distance_ = mouse_point - start_; |
| 212 last_mouse_point_ = mouse_point; | 214 last_mouse_point_ = mouse_point; |
| 213 } | 215 } |
| 214 } | 216 } |
| 215 | 217 |
| 216 private: | 218 private: |
| 217 bool started_; | 219 bool started_; |
| 218 gfx::PointF start_, last_mouse_point_; | 220 gfx::PointF start_, last_mouse_point_; |
| 219 }; | 221 }; |
| 220 | 222 |
| 221 class MockSyntheticPinchTouchTarget : public MockSyntheticGestureTarget { | 223 class MockSyntheticTouchscreenPinchTouchTarget |
| 224 : public MockSyntheticGestureTarget { |
| 222 public: | 225 public: |
| 223 enum ZoomDirection { | 226 enum ZoomDirection { |
| 224 ZOOM_DIRECTION_UNKNOWN, | 227 ZOOM_DIRECTION_UNKNOWN, |
| 225 ZOOM_IN, | 228 ZOOM_IN, |
| 226 ZOOM_OUT | 229 ZOOM_OUT |
| 227 }; | 230 }; |
| 228 | 231 |
| 229 MockSyntheticPinchTouchTarget() | 232 MockSyntheticTouchscreenPinchTouchTarget() |
| 230 : initial_pointer_distance_(0), | 233 : initial_pointer_distance_(0), |
| 231 last_pointer_distance_(0), | 234 last_pointer_distance_(0), |
| 232 zoom_direction_(ZOOM_DIRECTION_UNKNOWN), | 235 zoom_direction_(ZOOM_DIRECTION_UNKNOWN), |
| 233 started_(false) {} | 236 started_(false) {} |
| 234 ~MockSyntheticPinchTouchTarget() override {} | 237 ~MockSyntheticTouchscreenPinchTouchTarget() override {} |
| 235 | 238 |
| 236 void DispatchInputEventToPlatform(const WebInputEvent& event) override { | 239 void DispatchInputEventToPlatform(const WebInputEvent& event) override { |
| 237 ASSERT_TRUE(WebInputEvent::isTouchEventType(event.type)); | 240 ASSERT_TRUE(WebInputEvent::isTouchEventType(event.type)); |
| 238 const WebTouchEvent& touch_event = static_cast<const WebTouchEvent&>(event); | 241 const WebTouchEvent& touch_event = static_cast<const WebTouchEvent&>(event); |
| 239 ASSERT_EQ(touch_event.touchesLength, 2U); | 242 ASSERT_EQ(touch_event.touchesLength, 2U); |
| 240 | 243 |
| 241 if (!started_) { | 244 if (!started_) { |
| 242 ASSERT_EQ(touch_event.type, WebInputEvent::TouchStart); | 245 ASSERT_EQ(touch_event.type, WebInputEvent::TouchStart); |
| 243 | 246 |
| 244 start_0_ = gfx::PointF(touch_event.touches[0].position); | 247 start_0_ = gfx::PointF(touch_event.touches[0].position); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 264 else | 267 else |
| 265 EXPECT_EQ( | 268 EXPECT_EQ( |
| 266 zoom_direction_, | 269 zoom_direction_, |
| 267 ComputeZoomDirection(last_pointer_distance_, pointer_distance)); | 270 ComputeZoomDirection(last_pointer_distance_, pointer_distance)); |
| 268 } | 271 } |
| 269 | 272 |
| 270 last_pointer_distance_ = pointer_distance; | 273 last_pointer_distance_ = pointer_distance; |
| 271 } | 274 } |
| 272 } | 275 } |
| 273 | 276 |
| 277 SyntheticGestureParams::GestureSourceType |
| 278 GetDefaultSyntheticGestureSourceType() const override { |
| 279 return SyntheticGestureParams::TOUCH_INPUT; |
| 280 } |
| 281 |
| 274 ZoomDirection zoom_direction() const { return zoom_direction_; } | 282 ZoomDirection zoom_direction() const { return zoom_direction_; } |
| 275 | 283 |
| 276 float ComputeScaleFactor() const { | 284 float ComputeScaleFactor() const { |
| 277 switch (zoom_direction_) { | 285 switch (zoom_direction_) { |
| 278 case ZOOM_IN: | 286 case ZOOM_IN: |
| 279 return last_pointer_distance_ / | 287 return last_pointer_distance_ / |
| 280 (initial_pointer_distance_ + 2 * GetTouchSlopInDips()); | 288 (initial_pointer_distance_ + 2 * GetTouchSlopInDips()); |
| 281 case ZOOM_OUT: | 289 case ZOOM_OUT: |
| 282 return last_pointer_distance_ / | 290 return last_pointer_distance_ / |
| 283 (initial_pointer_distance_ - 2 * GetTouchSlopInDips()); | 291 (initial_pointer_distance_ - 2 * GetTouchSlopInDips()); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 298 } | 306 } |
| 299 | 307 |
| 300 float initial_pointer_distance_; | 308 float initial_pointer_distance_; |
| 301 float last_pointer_distance_; | 309 float last_pointer_distance_; |
| 302 ZoomDirection zoom_direction_; | 310 ZoomDirection zoom_direction_; |
| 303 gfx::PointF start_0_; | 311 gfx::PointF start_0_; |
| 304 gfx::PointF start_1_; | 312 gfx::PointF start_1_; |
| 305 bool started_; | 313 bool started_; |
| 306 }; | 314 }; |
| 307 | 315 |
| 316 class MockSyntheticTouchpadPinchTouchTarget |
| 317 : public MockSyntheticGestureTarget { |
| 318 public: |
| 319 enum ZoomDirection { ZOOM_DIRECTION_UNKNOWN, ZOOM_IN, ZOOM_OUT }; |
| 320 |
| 321 MockSyntheticTouchpadPinchTouchTarget() |
| 322 : zoom_direction_(ZOOM_DIRECTION_UNKNOWN), |
| 323 started_(false), |
| 324 ended_(false), |
| 325 scale_factor_(1.0f) {} |
| 326 ~MockSyntheticTouchpadPinchTouchTarget() override {} |
| 327 |
| 328 void DispatchInputEventToPlatform(const WebInputEvent& event) override { |
| 329 EXPECT_TRUE(WebInputEvent::isGestureEventType(event.type)); |
| 330 const blink::WebGestureEvent& gesture_event = |
| 331 static_cast<const blink::WebGestureEvent&>(event); |
| 332 |
| 333 if (gesture_event.type == WebInputEvent::GesturePinchBegin) { |
| 334 EXPECT_FALSE(started_); |
| 335 EXPECT_FALSE(ended_); |
| 336 started_ = true; |
| 337 } else if (gesture_event.type == WebInputEvent::GesturePinchEnd) { |
| 338 EXPECT_TRUE(started_); |
| 339 EXPECT_FALSE(ended_); |
| 340 ended_ = true; |
| 341 } else { |
| 342 EXPECT_EQ(WebInputEvent::GesturePinchUpdate, gesture_event.type); |
| 343 EXPECT_TRUE(started_); |
| 344 EXPECT_FALSE(ended_); |
| 345 const float scale = gesture_event.data.pinchUpdate.scale; |
| 346 if (scale != 1.0f) { |
| 347 if (zoom_direction_ == ZOOM_DIRECTION_UNKNOWN) { |
| 348 zoom_direction_ = scale > 1.0f ? ZOOM_IN : ZOOM_OUT; |
| 349 } else if (zoom_direction_ == ZOOM_IN) { |
| 350 EXPECT_GT(scale, 1.0f); |
| 351 } else { |
| 352 EXPECT_EQ(ZOOM_OUT, zoom_direction_); |
| 353 EXPECT_LT(scale, 1.0f); |
| 354 } |
| 355 |
| 356 scale_factor_ *= scale; |
| 357 } |
| 358 } |
| 359 } |
| 360 |
| 361 SyntheticGestureParams::GestureSourceType |
| 362 GetDefaultSyntheticGestureSourceType() const override { |
| 363 return SyntheticGestureParams::MOUSE_INPUT; |
| 364 } |
| 365 |
| 366 ZoomDirection zoom_direction() const { return zoom_direction_; } |
| 367 |
| 368 float scale_factor() const { return scale_factor_; } |
| 369 |
| 370 private: |
| 371 ZoomDirection zoom_direction_; |
| 372 bool started_; |
| 373 bool ended_; |
| 374 float scale_factor_; |
| 375 }; |
| 376 |
| 308 class MockSyntheticTapGestureTarget : public MockSyntheticGestureTarget { | 377 class MockSyntheticTapGestureTarget : public MockSyntheticGestureTarget { |
| 309 public: | 378 public: |
| 310 MockSyntheticTapGestureTarget() : state_(NOT_STARTED) {} | 379 MockSyntheticTapGestureTarget() : state_(NOT_STARTED) {} |
| 311 ~MockSyntheticTapGestureTarget() override {} | 380 ~MockSyntheticTapGestureTarget() override {} |
| 312 | 381 |
| 313 bool GestureFinished() const { return state_ == FINISHED; } | 382 bool GestureFinished() const { return state_ == FINISHED; } |
| 314 gfx::PointF position() const { return position_; } | 383 gfx::PointF position() const { return position_; } |
| 315 base::TimeDelta GetDuration() const { return stop_time_ - start_time_; } | 384 base::TimeDelta GetDuration() const { return stop_time_ - start_time_; } |
| 316 | 385 |
| 317 protected: | 386 protected: |
| (...skipping 775 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1093 params.anchor.SetPoint(432, 89); | 1162 params.anchor.SetPoint(432, 89); |
| 1094 params.distances.push_back(gfx::Vector2d(0, -234)); | 1163 params.distances.push_back(gfx::Vector2d(0, -234)); |
| 1095 params.speed_in_pixels_s = 800; | 1164 params.speed_in_pixels_s = 800; |
| 1096 | 1165 |
| 1097 scoped_ptr<SyntheticSmoothScrollGesture> gesture( | 1166 scoped_ptr<SyntheticSmoothScrollGesture> gesture( |
| 1098 new SyntheticSmoothScrollGesture(params)); | 1167 new SyntheticSmoothScrollGesture(params)); |
| 1099 const base::TimeTicks timestamp; | 1168 const base::TimeTicks timestamp; |
| 1100 gesture->ForwardInputEvents(timestamp, target_); | 1169 gesture->ForwardInputEvents(timestamp, target_); |
| 1101 } | 1170 } |
| 1102 | 1171 |
| 1103 TEST_F(SyntheticGestureControllerTest, PinchGestureTouchZoomIn) { | 1172 TEST_F(SyntheticGestureControllerTest, |
| 1104 CreateControllerAndTarget<MockSyntheticPinchTouchTarget>(); | 1173 TouchscreenTouchpadPinchGestureTouchZoomIn) { |
| 1105 | 1174 CreateControllerAndTarget<MockSyntheticTouchscreenPinchTouchTarget>(); |
| 1106 SyntheticPinchGestureParams params; | 1175 |
| 1107 params.gesture_source_type = SyntheticGestureParams::TOUCH_INPUT; | 1176 SyntheticPinchGestureParams params; |
| 1108 params.scale_factor = 2.3f; | 1177 params.gesture_source_type = SyntheticGestureParams::TOUCH_INPUT; |
| 1109 params.anchor.SetPoint(54, 89); | 1178 params.scale_factor = 2.3f; |
| 1110 | 1179 params.anchor.SetPoint(54, 89); |
| 1111 scoped_ptr<SyntheticPinchGesture> gesture(new SyntheticPinchGesture(params)); | 1180 |
| 1112 QueueSyntheticGesture(gesture.Pass()); | 1181 scoped_ptr<SyntheticTouchscreenPinchGesture> gesture( |
| 1113 FlushInputUntilComplete(); | 1182 new SyntheticTouchscreenPinchGesture(params)); |
| 1114 | 1183 QueueSyntheticGesture(gesture.Pass()); |
| 1115 MockSyntheticPinchTouchTarget* pinch_target = | 1184 FlushInputUntilComplete(); |
| 1116 static_cast<MockSyntheticPinchTouchTarget*>(target_); | 1185 |
| 1117 EXPECT_EQ(1, num_success_); | 1186 MockSyntheticTouchscreenPinchTouchTarget* pinch_target = |
| 1118 EXPECT_EQ(0, num_failure_); | 1187 static_cast<MockSyntheticTouchscreenPinchTouchTarget*>(target_); |
| 1119 EXPECT_EQ(pinch_target->zoom_direction(), | 1188 EXPECT_EQ(1, num_success_); |
| 1120 MockSyntheticPinchTouchTarget::ZOOM_IN); | 1189 EXPECT_EQ(0, num_failure_); |
| 1190 EXPECT_EQ(pinch_target->zoom_direction(), |
| 1191 MockSyntheticTouchscreenPinchTouchTarget::ZOOM_IN); |
| 1121 EXPECT_FLOAT_EQ(params.scale_factor, pinch_target->ComputeScaleFactor()); | 1192 EXPECT_FLOAT_EQ(params.scale_factor, pinch_target->ComputeScaleFactor()); |
| 1122 } | 1193 } |
| 1123 | 1194 |
| 1124 TEST_F(SyntheticGestureControllerTest, PinchGestureTouchZoomOut) { | 1195 TEST_F(SyntheticGestureControllerTest, |
| 1125 CreateControllerAndTarget<MockSyntheticPinchTouchTarget>(); | 1196 TouchscreenTouchpadPinchGestureTouchZoomOut) { |
| 1197 CreateControllerAndTarget<MockSyntheticTouchscreenPinchTouchTarget>(); |
| 1126 | 1198 |
| 1127 SyntheticPinchGestureParams params; | 1199 SyntheticPinchGestureParams params; |
| 1128 params.gesture_source_type = SyntheticGestureParams::TOUCH_INPUT; | 1200 params.gesture_source_type = SyntheticGestureParams::TOUCH_INPUT; |
| 1129 params.scale_factor = 0.4f; | 1201 params.scale_factor = 0.4f; |
| 1130 params.anchor.SetPoint(-12, 93); | 1202 params.anchor.SetPoint(-12, 93); |
| 1131 | 1203 |
| 1132 scoped_ptr<SyntheticPinchGesture> gesture(new SyntheticPinchGesture(params)); | 1204 scoped_ptr<SyntheticTouchscreenPinchGesture> gesture( |
| 1133 QueueSyntheticGesture(gesture.Pass()); | 1205 new SyntheticTouchscreenPinchGesture(params)); |
| 1134 FlushInputUntilComplete(); | 1206 QueueSyntheticGesture(gesture.Pass()); |
| 1135 | 1207 FlushInputUntilComplete(); |
| 1136 MockSyntheticPinchTouchTarget* pinch_target = | 1208 |
| 1137 static_cast<MockSyntheticPinchTouchTarget*>(target_); | 1209 MockSyntheticTouchscreenPinchTouchTarget* pinch_target = |
| 1138 EXPECT_EQ(1, num_success_); | 1210 static_cast<MockSyntheticTouchscreenPinchTouchTarget*>(target_); |
| 1139 EXPECT_EQ(0, num_failure_); | 1211 EXPECT_EQ(1, num_success_); |
| 1140 EXPECT_EQ(pinch_target->zoom_direction(), | 1212 EXPECT_EQ(0, num_failure_); |
| 1141 MockSyntheticPinchTouchTarget::ZOOM_OUT); | 1213 EXPECT_EQ(pinch_target->zoom_direction(), |
| 1214 MockSyntheticTouchscreenPinchTouchTarget::ZOOM_OUT); |
| 1142 EXPECT_FLOAT_EQ(params.scale_factor, pinch_target->ComputeScaleFactor()); | 1215 EXPECT_FLOAT_EQ(params.scale_factor, pinch_target->ComputeScaleFactor()); |
| 1143 } | 1216 } |
| 1144 | 1217 |
| 1145 TEST_F(SyntheticGestureControllerTest, PinchGestureTouchNoScaling) { | 1218 TEST_F(SyntheticGestureControllerTest, |
| 1146 CreateControllerAndTarget<MockSyntheticPinchTouchTarget>(); | 1219 TouchscreenTouchpadPinchGestureTouchNoScaling) { |
| 1220 CreateControllerAndTarget<MockSyntheticTouchscreenPinchTouchTarget>(); |
| 1147 | 1221 |
| 1148 SyntheticPinchGestureParams params; | 1222 SyntheticPinchGestureParams params; |
| 1149 params.gesture_source_type = SyntheticGestureParams::TOUCH_INPUT; | 1223 params.gesture_source_type = SyntheticGestureParams::TOUCH_INPUT; |
| 1150 params.scale_factor = 1.0f; | 1224 params.scale_factor = 1.0f; |
| 1151 | 1225 |
| 1152 scoped_ptr<SyntheticPinchGesture> gesture(new SyntheticPinchGesture(params)); | 1226 scoped_ptr<SyntheticTouchscreenPinchGesture> gesture( |
| 1153 QueueSyntheticGesture(gesture.Pass()); | 1227 new SyntheticTouchscreenPinchGesture(params)); |
| 1154 FlushInputUntilComplete(); | 1228 QueueSyntheticGesture(gesture.Pass()); |
| 1155 | 1229 FlushInputUntilComplete(); |
| 1156 MockSyntheticPinchTouchTarget* pinch_target = | 1230 |
| 1157 static_cast<MockSyntheticPinchTouchTarget*>(target_); | 1231 MockSyntheticTouchscreenPinchTouchTarget* pinch_target = |
| 1158 EXPECT_EQ(1, num_success_); | 1232 static_cast<MockSyntheticTouchscreenPinchTouchTarget*>(target_); |
| 1159 EXPECT_EQ(0, num_failure_); | 1233 EXPECT_EQ(1, num_success_); |
| 1160 EXPECT_EQ(pinch_target->zoom_direction(), | 1234 EXPECT_EQ(0, num_failure_); |
| 1161 MockSyntheticPinchTouchTarget::ZOOM_DIRECTION_UNKNOWN); | 1235 EXPECT_EQ(pinch_target->zoom_direction(), |
| 1236 MockSyntheticTouchscreenPinchTouchTarget::ZOOM_DIRECTION_UNKNOWN); |
| 1162 EXPECT_EQ(params.scale_factor, pinch_target->ComputeScaleFactor()); | 1237 EXPECT_EQ(params.scale_factor, pinch_target->ComputeScaleFactor()); |
| 1163 } | 1238 } |
| 1164 | 1239 |
| 1240 TEST_F(SyntheticGestureControllerTest, TouchpadPinchGestureTouchZoomIn) { |
| 1241 CreateControllerAndTarget<MockSyntheticTouchpadPinchTouchTarget>(); |
| 1242 |
| 1243 SyntheticPinchGestureParams params; |
| 1244 params.gesture_source_type = SyntheticGestureParams::MOUSE_INPUT; |
| 1245 params.scale_factor = 2.3f; |
| 1246 params.anchor.SetPoint(54, 89); |
| 1247 |
| 1248 scoped_ptr<SyntheticTouchpadPinchGesture> gesture( |
| 1249 new SyntheticTouchpadPinchGesture(params)); |
| 1250 QueueSyntheticGesture(gesture.Pass()); |
| 1251 FlushInputUntilComplete(); |
| 1252 |
| 1253 MockSyntheticTouchpadPinchTouchTarget* pinch_target = |
| 1254 static_cast<MockSyntheticTouchpadPinchTouchTarget*>(target_); |
| 1255 EXPECT_EQ(1, num_success_); |
| 1256 EXPECT_EQ(0, num_failure_); |
| 1257 EXPECT_EQ(pinch_target->zoom_direction(), |
| 1258 MockSyntheticTouchpadPinchTouchTarget::ZOOM_IN); |
| 1259 EXPECT_FLOAT_EQ(params.scale_factor, pinch_target->scale_factor()); |
| 1260 } |
| 1261 |
| 1262 TEST_F(SyntheticGestureControllerTest, TouchpadPinchGestureTouchZoomOut) { |
| 1263 CreateControllerAndTarget<MockSyntheticTouchpadPinchTouchTarget>(); |
| 1264 |
| 1265 SyntheticPinchGestureParams params; |
| 1266 params.gesture_source_type = SyntheticGestureParams::MOUSE_INPUT; |
| 1267 params.scale_factor = 0.4f; |
| 1268 params.anchor.SetPoint(-12, 93); |
| 1269 |
| 1270 scoped_ptr<SyntheticTouchpadPinchGesture> gesture( |
| 1271 new SyntheticTouchpadPinchGesture(params)); |
| 1272 QueueSyntheticGesture(gesture.Pass()); |
| 1273 FlushInputUntilComplete(); |
| 1274 |
| 1275 MockSyntheticTouchpadPinchTouchTarget* pinch_target = |
| 1276 static_cast<MockSyntheticTouchpadPinchTouchTarget*>(target_); |
| 1277 EXPECT_EQ(1, num_success_); |
| 1278 EXPECT_EQ(0, num_failure_); |
| 1279 EXPECT_EQ(pinch_target->zoom_direction(), |
| 1280 MockSyntheticTouchpadPinchTouchTarget::ZOOM_OUT); |
| 1281 EXPECT_FLOAT_EQ(params.scale_factor, pinch_target->scale_factor()); |
| 1282 } |
| 1283 |
| 1284 TEST_F(SyntheticGestureControllerTest, TouchpadPinchGestureTouchNoScaling) { |
| 1285 CreateControllerAndTarget<MockSyntheticTouchpadPinchTouchTarget>(); |
| 1286 |
| 1287 SyntheticPinchGestureParams params; |
| 1288 params.gesture_source_type = SyntheticGestureParams::MOUSE_INPUT; |
| 1289 params.scale_factor = 1.0f; |
| 1290 |
| 1291 scoped_ptr<SyntheticTouchpadPinchGesture> gesture( |
| 1292 new SyntheticTouchpadPinchGesture(params)); |
| 1293 QueueSyntheticGesture(gesture.Pass()); |
| 1294 FlushInputUntilComplete(); |
| 1295 |
| 1296 MockSyntheticTouchpadPinchTouchTarget* pinch_target = |
| 1297 static_cast<MockSyntheticTouchpadPinchTouchTarget*>(target_); |
| 1298 EXPECT_EQ(1, num_success_); |
| 1299 EXPECT_EQ(0, num_failure_); |
| 1300 EXPECT_EQ(pinch_target->zoom_direction(), |
| 1301 MockSyntheticTouchpadPinchTouchTarget::ZOOM_DIRECTION_UNKNOWN); |
| 1302 EXPECT_EQ(params.scale_factor, pinch_target->scale_factor()); |
| 1303 } |
| 1304 |
| 1305 // Ensure that if SyntheticPinchGesture is instantiated with TOUCH_INPUT it |
| 1306 // correctly creates a touchscreen gesture. |
| 1307 TEST_F(SyntheticGestureControllerTest, PinchGestureExplicitTouch) { |
| 1308 CreateControllerAndTarget<MockSyntheticTouchscreenPinchTouchTarget>(); |
| 1309 |
| 1310 SyntheticPinchGestureParams params; |
| 1311 params.gesture_source_type = SyntheticGestureParams::TOUCH_INPUT; |
| 1312 params.scale_factor = 2.3f; |
| 1313 params.anchor.SetPoint(54, 89); |
| 1314 |
| 1315 scoped_ptr<SyntheticPinchGesture> gesture(new SyntheticPinchGesture(params)); |
| 1316 QueueSyntheticGesture(gesture.Pass()); |
| 1317 FlushInputUntilComplete(); |
| 1318 |
| 1319 // Gesture target will fail expectations if the wrong underlying |
| 1320 // SyntheticPinch*Gesture was instantiated. |
| 1321 } |
| 1322 |
| 1323 // Ensure that if SyntheticPinchGesture is instantiated with MOUSE_INPUT it |
| 1324 // correctly creates a touchpad gesture. |
| 1325 TEST_F(SyntheticGestureControllerTest, PinchGestureExplicitMouse) { |
| 1326 CreateControllerAndTarget<MockSyntheticTouchpadPinchTouchTarget>(); |
| 1327 |
| 1328 SyntheticPinchGestureParams params; |
| 1329 params.gesture_source_type = SyntheticGestureParams::MOUSE_INPUT; |
| 1330 params.scale_factor = 2.3f; |
| 1331 params.anchor.SetPoint(54, 89); |
| 1332 |
| 1333 scoped_ptr<SyntheticPinchGesture> gesture(new SyntheticPinchGesture(params)); |
| 1334 QueueSyntheticGesture(gesture.Pass()); |
| 1335 FlushInputUntilComplete(); |
| 1336 |
| 1337 // Gesture target will fail expectations if the wrong underlying |
| 1338 // SyntheticPinch*Gesture was instantiated. |
| 1339 } |
| 1340 |
| 1341 // Ensure that if SyntheticPinchGesture is instantiated with DEFAULT_INPUT it |
| 1342 // correctly creates a touchscreen gesture for a touchscreen controller. |
| 1343 TEST_F(SyntheticGestureControllerTest, PinchGestureDefaultTouch) { |
| 1344 CreateControllerAndTarget<MockSyntheticTouchscreenPinchTouchTarget>(); |
| 1345 |
| 1346 SyntheticPinchGestureParams params; |
| 1347 params.gesture_source_type = SyntheticGestureParams::DEFAULT_INPUT; |
| 1348 params.scale_factor = 2.3f; |
| 1349 params.anchor.SetPoint(54, 89); |
| 1350 |
| 1351 scoped_ptr<SyntheticPinchGesture> gesture(new SyntheticPinchGesture(params)); |
| 1352 QueueSyntheticGesture(gesture.Pass()); |
| 1353 FlushInputUntilComplete(); |
| 1354 |
| 1355 // Gesture target will fail expectations if the wrong underlying |
| 1356 // SyntheticPinch*Gesture was instantiated. |
| 1357 } |
| 1358 |
| 1359 // Ensure that if SyntheticPinchGesture is instantiated with DEFAULT_INPUT it |
| 1360 // correctly creates a touchpad gesture for a touchpad controller. |
| 1361 TEST_F(SyntheticGestureControllerTest, PinchGestureDefaultMouse) { |
| 1362 CreateControllerAndTarget<MockSyntheticTouchpadPinchTouchTarget>(); |
| 1363 |
| 1364 SyntheticPinchGestureParams params; |
| 1365 params.gesture_source_type = SyntheticGestureParams::DEFAULT_INPUT; |
| 1366 params.scale_factor = 2.3f; |
| 1367 params.anchor.SetPoint(54, 89); |
| 1368 |
| 1369 scoped_ptr<SyntheticPinchGesture> gesture(new SyntheticPinchGesture(params)); |
| 1370 QueueSyntheticGesture(gesture.Pass()); |
| 1371 FlushInputUntilComplete(); |
| 1372 |
| 1373 // Gesture target will fail expectations if the wrong underlying |
| 1374 // SyntheticPinch*Gesture was instantiated. |
| 1375 } |
| 1376 |
| 1165 TEST_F(SyntheticGestureControllerTest, TapGestureTouch) { | 1377 TEST_F(SyntheticGestureControllerTest, TapGestureTouch) { |
| 1166 CreateControllerAndTarget<MockSyntheticTapTouchTarget>(); | 1378 CreateControllerAndTarget<MockSyntheticTapTouchTarget>(); |
| 1167 | 1379 |
| 1168 SyntheticTapGestureParams params; | 1380 SyntheticTapGestureParams params; |
| 1169 params.gesture_source_type = SyntheticGestureParams::TOUCH_INPUT; | 1381 params.gesture_source_type = SyntheticGestureParams::TOUCH_INPUT; |
| 1170 params.duration_ms = 123; | 1382 params.duration_ms = 123; |
| 1171 params.position.SetPoint(87, -124); | 1383 params.position.SetPoint(87, -124); |
| 1172 | 1384 |
| 1173 scoped_ptr<SyntheticTapGesture> gesture(new SyntheticTapGesture(params)); | 1385 scoped_ptr<SyntheticTapGesture> gesture(new SyntheticTapGesture(params)); |
| 1174 QueueSyntheticGesture(gesture.Pass()); | 1386 QueueSyntheticGesture(gesture.Pass()); |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1204 EXPECT_TRUE(tap_target->GestureFinished()); | 1416 EXPECT_TRUE(tap_target->GestureFinished()); |
| 1205 EXPECT_EQ(tap_target->position(), params.position); | 1417 EXPECT_EQ(tap_target->position(), params.position); |
| 1206 EXPECT_EQ(tap_target->GetDuration().InMilliseconds(), params.duration_ms); | 1418 EXPECT_EQ(tap_target->GetDuration().InMilliseconds(), params.duration_ms); |
| 1207 EXPECT_GE(GetTotalTime(), | 1419 EXPECT_GE(GetTotalTime(), |
| 1208 base::TimeDelta::FromMilliseconds(params.duration_ms)); | 1420 base::TimeDelta::FromMilliseconds(params.duration_ms)); |
| 1209 } | 1421 } |
| 1210 | 1422 |
| 1211 } // namespace | 1423 } // namespace |
| 1212 | 1424 |
| 1213 } // namespace content | 1425 } // namespace content |
| OLD | NEW |