| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/input/touch_emulator.h" | 5 #include "content/browser/renderer_host/input/touch_emulator.h" |
| 6 | 6 |
| 7 #include "content/browser/renderer_host/input/motion_event_web.h" | 7 #include "content/browser/renderer_host/input/motion_event_web.h" |
| 8 #include "content/browser/renderer_host/input/web_input_event_util.h" | 8 #include "content/browser/renderer_host/input/web_input_event_util.h" |
| 9 #include "content/common/input/web_touch_event_traits.h" |
| 9 #include "content/public/common/content_client.h" | 10 #include "content/public/common/content_client.h" |
| 10 #include "content/public/common/content_switches.h" | 11 #include "content/public/common/content_switches.h" |
| 11 #include "grit/content_resources.h" | 12 #include "grit/content_resources.h" |
| 12 #include "third_party/WebKit/public/platform/WebCursorInfo.h" | 13 #include "third_party/WebKit/public/platform/WebCursorInfo.h" |
| 13 #include "ui/events/gesture_detection/gesture_config_helper.h" | 14 #include "ui/events/gesture_detection/gesture_config_helper.h" |
| 14 #include "ui/gfx/image/image.h" | 15 #include "ui/gfx/image/image.h" |
| 15 #include "ui/gfx/screen.h" | 16 #include "ui/gfx/screen.h" |
| 16 | 17 |
| 17 using blink::WebGestureEvent; | 18 using blink::WebGestureEvent; |
| 18 using blink::WebInputEvent; | 19 using blink::WebInputEvent; |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 default: | 255 default: |
| 255 // Everything else goes through. | 256 // Everything else goes through. |
| 256 client_->ForwardGestureEvent(gesture_event); | 257 client_->ForwardGestureEvent(gesture_event); |
| 257 } | 258 } |
| 258 } | 259 } |
| 259 | 260 |
| 260 void TouchEmulator::CancelTouch() { | 261 void TouchEmulator::CancelTouch() { |
| 261 if (!touch_active_) | 262 if (!touch_active_) |
| 262 return; | 263 return; |
| 263 | 264 |
| 264 touch_event_.timeStampSeconds = | 265 WebTouchEventTraits::ResetTypeAndTouchStates( |
| 265 (base::TimeTicks::Now() - base::TimeTicks()).InSecondsF(); | 266 WebInputEvent::TouchCancel, |
| 266 touch_event_.type = WebInputEvent::TouchCancel; | 267 (base::TimeTicks::Now() - base::TimeTicks()).InSecondsF(), |
| 267 touch_event_.touches[0].state = WebTouchPoint::StateCancelled; | 268 &touch_event_); |
| 268 touch_active_ = false; | 269 touch_active_ = false; |
| 269 if (gesture_provider_.OnTouchEvent(MotionEventWeb(touch_event_))) | 270 if (gesture_provider_.OnTouchEvent(MotionEventWeb(touch_event_))) |
| 270 client_->ForwardTouchEvent(touch_event_); | 271 client_->ForwardTouchEvent(touch_event_); |
| 271 } | 272 } |
| 272 | 273 |
| 273 void TouchEmulator::UpdateCursor() { | 274 void TouchEmulator::UpdateCursor() { |
| 274 if (!enabled_) | 275 if (!enabled_) |
| 275 client_->SetCursor(pointer_cursor_); | 276 client_->SetCursor(pointer_cursor_); |
| 276 else | 277 else |
| 277 client_->SetCursor(InPinchGestureMode() ? pinch_cursor_ : touch_cursor_); | 278 client_->SetCursor(InPinchGestureMode() ? pinch_cursor_ : touch_cursor_); |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 332 client_->ForwardGestureEvent(scroll_event); | 333 client_->ForwardGestureEvent(scroll_event); |
| 333 } | 334 } |
| 334 | 335 |
| 335 bool TouchEmulator::FillTouchEventAndPoint(const WebMouseEvent& mouse_event) { | 336 bool TouchEmulator::FillTouchEventAndPoint(const WebMouseEvent& mouse_event) { |
| 336 if (mouse_event.type != WebInputEvent::MouseDown && | 337 if (mouse_event.type != WebInputEvent::MouseDown && |
| 337 mouse_event.type != WebInputEvent::MouseMove && | 338 mouse_event.type != WebInputEvent::MouseMove && |
| 338 mouse_event.type != WebInputEvent::MouseUp) { | 339 mouse_event.type != WebInputEvent::MouseUp) { |
| 339 return false; | 340 return false; |
| 340 } | 341 } |
| 341 | 342 |
| 343 WebInputEvent::Type eventType; |
| 344 switch (mouse_event.type) { |
| 345 case WebInputEvent::MouseDown: |
| 346 eventType = WebInputEvent::TouchStart; |
| 347 touch_active_ = true; |
| 348 break; |
| 349 case WebInputEvent::MouseMove: |
| 350 eventType = WebInputEvent::TouchMove; |
| 351 break; |
| 352 case WebInputEvent::MouseUp: |
| 353 eventType = WebInputEvent::TouchEnd; |
| 354 break; |
| 355 default: |
| 356 eventType = WebInputEvent::Undefined; |
| 357 NOTREACHED(); |
| 358 } |
| 342 touch_event_.touchesLength = 1; | 359 touch_event_.touchesLength = 1; |
| 343 touch_event_.timeStampSeconds = mouse_event.timeStampSeconds; | |
| 344 touch_event_.modifiers = mouse_event.modifiers; | 360 touch_event_.modifiers = mouse_event.modifiers; |
| 361 WebTouchEventTraits::ResetTypeAndTouchStates( |
| 362 eventType, mouse_event.timeStampSeconds, &touch_event_); |
| 345 | 363 |
| 346 WebTouchPoint& point = touch_event_.touches[0]; | 364 WebTouchPoint& point = touch_event_.touches[0]; |
| 347 point.id = 0; | 365 point.id = 0; |
| 348 point.radiusX = point.radiusY = 1.f; | 366 point.radiusX = point.radiusY = 1.f; |
| 349 point.force = 1.f; | 367 point.force = 1.f; |
| 350 point.rotationAngle = 0.f; | 368 point.rotationAngle = 0.f; |
| 351 point.position.x = mouse_event.x; | 369 point.position.x = mouse_event.x; |
| 352 point.screenPosition.x = mouse_event.globalX; | 370 point.screenPosition.x = mouse_event.globalX; |
| 353 point.position.y = mouse_event.y; | 371 point.position.y = mouse_event.y; |
| 354 point.screenPosition.y = mouse_event.globalY; | 372 point.screenPosition.y = mouse_event.globalY; |
| 355 | 373 |
| 356 switch (mouse_event.type) { | |
| 357 case WebInputEvent::MouseDown: | |
| 358 touch_event_.type = WebInputEvent::TouchStart; | |
| 359 touch_active_ = true; | |
| 360 point.state = WebTouchPoint::StatePressed; | |
| 361 break; | |
| 362 case WebInputEvent::MouseMove: | |
| 363 touch_event_.type = WebInputEvent::TouchMove; | |
| 364 point.state = WebTouchPoint::StateMoved; | |
| 365 break; | |
| 366 case WebInputEvent::MouseUp: | |
| 367 touch_event_.type = WebInputEvent::TouchEnd; | |
| 368 touch_active_ = false; | |
| 369 point.state = WebTouchPoint::StateReleased; | |
| 370 break; | |
| 371 default: | |
| 372 NOTREACHED(); | |
| 373 } | |
| 374 return true; | 374 return true; |
| 375 } | 375 } |
| 376 | 376 |
| 377 bool TouchEmulator::InPinchGestureMode() const { | 377 bool TouchEmulator::InPinchGestureMode() const { |
| 378 return shift_pressed_ && allow_pinch_; | 378 return shift_pressed_ && allow_pinch_; |
| 379 } | 379 } |
| 380 | 380 |
| 381 } // namespace content | 381 } // namespace content |
| OLD | NEW |