Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/synthetic_pointer_action.h" | 5 #include "content/browser/renderer_host/input/synthetic_pointer_action.h" |
| 6 | 6 |
| 7 #include "base/logging.h" | 7 #include "base/logging.h" |
| 8 #include "third_party/WebKit/public/platform/WebInputEvent.h" | 8 #include "third_party/WebKit/public/platform/WebInputEvent.h" |
| 9 #include "ui/events/latency_info.h" | 9 #include "ui/events/latency_info.h" |
| 10 | 10 |
| 11 namespace content { | 11 namespace content { |
| 12 | 12 |
| 13 SyntheticPointerAction::SyntheticPointerAction( | 13 SyntheticPointerAction::SyntheticPointerAction( |
| 14 const SyntheticPointerActionParams& params) | 14 const SyntheticPointerActionListParams& params) |
| 15 : params_(params) {} | 15 : params_(params), |
| 16 | 16 gesture_source_type_(SyntheticGestureParams::DEFAULT_INPUT), |
| 17 SyntheticPointerAction::SyntheticPointerAction( | 17 state_(SETUP), |
| 18 std::vector<SyntheticPointerActionParams>* param_list, | 18 count_(0U) {} |
| 19 SyntheticPointerDriver* synthetic_pointer_driver) | |
| 20 : param_list_(param_list), | |
| 21 synthetic_pointer_driver_(synthetic_pointer_driver) {} | |
| 22 | 19 |
| 23 SyntheticPointerAction::~SyntheticPointerAction() {} | 20 SyntheticPointerAction::~SyntheticPointerAction() {} |
| 24 | 21 |
| 25 SyntheticGesture::Result SyntheticPointerAction::ForwardInputEvents( | 22 SyntheticGesture::Result SyntheticPointerAction::ForwardInputEvents( |
| 26 const base::TimeTicks& timestamp, | 23 const base::TimeTicks& timestamp, |
| 27 SyntheticGestureTarget* target) { | 24 SyntheticGestureTarget* target) { |
| 28 DCHECK(synthetic_pointer_driver_); | 25 if (state_ == SETUP) { |
|
Navid Zolghadr
2016/12/06 17:05:38
I assume this function needs to be called multiple
lanwei
2016/12/07 19:04:27
https://codesearch.chromium.org/chromium/src/conte
Navid Zolghadr
2016/12/09 16:04:47
So should that change be part of this patch or are
| |
| 29 return ForwardTouchOrMouseInputEvents(timestamp, target); | 26 gesture_source_type_ = params_.gesture_source_type; |
| 27 if (gesture_source_type_ == SyntheticGestureParams::DEFAULT_INPUT) | |
| 28 gesture_source_type_ = target->GetDefaultSyntheticGestureSourceType(); | |
| 29 | |
| 30 state_ = RUNNING; | |
| 31 } | |
| 32 | |
| 33 DCHECK_NE(gesture_source_type_, SyntheticGestureParams::DEFAULT_INPUT); | |
| 34 | |
| 35 if (!synthetic_pointer_driver_) { | |
| 36 synthetic_pointer_driver_ = | |
| 37 SyntheticPointerDriver::Create(gesture_source_type_); | |
| 38 } | |
| 39 | |
| 40 if (gesture_source_type_ == SyntheticGestureParams::TOUCH_INPUT || | |
| 41 gesture_source_type_ == SyntheticGestureParams::MOUSE_INPUT) { | |
| 42 state_ = ForwardTouchOrMouseInputEvents(timestamp, target); | |
| 43 } else { | |
| 44 return SyntheticGesture::GESTURE_SOURCE_TYPE_NOT_IMPLEMENTED; | |
| 45 } | |
| 46 | |
| 47 if (state_ == INVALID) | |
| 48 return POINTER_ACTION_INPUT_INVALID; | |
| 49 | |
| 50 return (state_ == DONE) ? SyntheticGesture::GESTURE_FINISHED | |
| 51 : SyntheticGesture::GESTURE_RUNNING; | |
| 30 } | 52 } |
| 31 | 53 |
| 32 SyntheticGesture::Result SyntheticPointerAction::ForwardTouchOrMouseInputEvents( | 54 SyntheticPointerAction::GestureState |
| 55 SyntheticPointerAction::ForwardTouchOrMouseInputEvents( | |
| 33 const base::TimeTicks& timestamp, | 56 const base::TimeTicks& timestamp, |
| 34 SyntheticGestureTarget* target) { | 57 SyntheticGestureTarget* target) { |
| 35 for (SyntheticPointerActionParams& params : *param_list_) { | 58 DCHECK_GE(count_, 0U); |
| 36 if (!synthetic_pointer_driver_->UserInputCheck(params)) | 59 DCHECK_LT(count_, params_.params.size()); |
| 37 return POINTER_ACTION_INPUT_INVALID; | 60 SyntheticPointerActionListParams::ParamList& param_list = |
| 61 params_.params[count_]; | |
| 62 for (SyntheticPointerActionParams& param : param_list) { | |
| 63 if (param.gesture_source_type() == SyntheticGestureParams::DEFAULT_INPUT) | |
| 64 param.set_gesture_source_type(gesture_source_type_); | |
| 38 | 65 |
| 39 switch (params.pointer_action_type()) { | 66 if (!synthetic_pointer_driver_->UserInputCheck(param)) |
| 40 case SyntheticPointerActionParams::PointerActionType::PRESS: { | 67 return INVALID; |
| 41 int index = synthetic_pointer_driver_->Press(params.position().x(), | 68 |
| 42 params.position().y()); | 69 switch (param.pointer_action_type()) { |
| 43 params.set_index(index); | 70 case SyntheticPointerActionParams::PointerActionType::PRESS: |
| 71 synthetic_pointer_driver_->Press(param.position().x(), | |
| 72 param.position().y(), param.index()); | |
| 44 break; | 73 break; |
| 45 } | |
| 46 case SyntheticPointerActionParams::PointerActionType::MOVE: | 74 case SyntheticPointerActionParams::PointerActionType::MOVE: |
| 47 synthetic_pointer_driver_->Move(params.position().x(), | 75 synthetic_pointer_driver_->Move(param.position().x(), |
| 48 params.position().y(), params.index()); | 76 param.position().y(), param.index()); |
| 49 break; | 77 break; |
| 50 case SyntheticPointerActionParams::PointerActionType::RELEASE: | 78 case SyntheticPointerActionParams::PointerActionType::RELEASE: |
| 51 synthetic_pointer_driver_->Release(params.index()); | 79 synthetic_pointer_driver_->Release(param.index()); |
| 52 // Only reset the index for touch pointers. | |
| 53 if (params.gesture_source_type != SyntheticGestureParams::MOUSE_INPUT) | |
| 54 params.set_index(-1); | |
| 55 break; | |
| 56 case SyntheticPointerActionParams::PointerActionType::IDLE: | |
| 57 break; | 80 break; |
| 58 case SyntheticPointerActionParams::PointerActionType::NOT_INITIALIZED: | 81 case SyntheticPointerActionParams::PointerActionType::NOT_INITIALIZED: |
| 59 return POINTER_ACTION_INPUT_INVALID; | 82 return INVALID; |
| 60 case SyntheticPointerActionParams::PointerActionType::FINISH: | |
| 61 return GESTURE_FINISHED; | |
| 62 } | 83 } |
| 63 } | 84 } |
| 64 synthetic_pointer_driver_->DispatchEvent(target, timestamp); | 85 synthetic_pointer_driver_->DispatchEvent(target, timestamp); |
| 65 return GESTURE_FINISHED; | 86 count_++; |
| 87 if (count_ == params_.params.size()) | |
| 88 return DONE; | |
| 89 else | |
| 90 return RUNNING; | |
| 66 } | 91 } |
| 67 | 92 |
| 68 } // namespace content | 93 } // namespace content |
| OLD | NEW |