Commit 1060f1f7 authored by lanwei's avatar lanwei Committed by Commit bot

Rename SyntheticPointer to SyntheticPointerDriver

Rename SyntheticPointer to SyntheticPointerDriver, SyntheticTouchPointer to
SyntheticTouchDriver, and SyntheticMousePointer to SyntheticMouseDriver,
because these classes do not represent the synthetic pointers. They actually create
synthetic pointers for each pointer types and their actions.

BUG=525187

Review-Url: https://codereview.chromium.org/2478423002
Cr-Commit-Position: refs/heads/master@{#434763}
parent 8c5f7030
...@@ -1031,14 +1031,14 @@ source_set("browser") { ...@@ -1031,14 +1031,14 @@ source_set("browser") {
"renderer_host/input/synthetic_gesture_target_base.h", "renderer_host/input/synthetic_gesture_target_base.h",
"renderer_host/input/synthetic_gesture_target_mac.h", "renderer_host/input/synthetic_gesture_target_mac.h",
"renderer_host/input/synthetic_gesture_target_mac.mm", "renderer_host/input/synthetic_gesture_target_mac.mm",
"renderer_host/input/synthetic_mouse_pointer.cc", "renderer_host/input/synthetic_mouse_driver.cc",
"renderer_host/input/synthetic_mouse_pointer.h", "renderer_host/input/synthetic_mouse_driver.h",
"renderer_host/input/synthetic_pinch_gesture.cc", "renderer_host/input/synthetic_pinch_gesture.cc",
"renderer_host/input/synthetic_pinch_gesture.h", "renderer_host/input/synthetic_pinch_gesture.h",
"renderer_host/input/synthetic_pointer.cc",
"renderer_host/input/synthetic_pointer.h",
"renderer_host/input/synthetic_pointer_action.cc", "renderer_host/input/synthetic_pointer_action.cc",
"renderer_host/input/synthetic_pointer_action.h", "renderer_host/input/synthetic_pointer_action.h",
"renderer_host/input/synthetic_pointer_driver.cc",
"renderer_host/input/synthetic_pointer_driver.h",
"renderer_host/input/synthetic_smooth_drag_gesture.cc", "renderer_host/input/synthetic_smooth_drag_gesture.cc",
"renderer_host/input/synthetic_smooth_drag_gesture.h", "renderer_host/input/synthetic_smooth_drag_gesture.h",
"renderer_host/input/synthetic_smooth_move_gesture.cc", "renderer_host/input/synthetic_smooth_move_gesture.cc",
...@@ -1047,8 +1047,8 @@ source_set("browser") { ...@@ -1047,8 +1047,8 @@ source_set("browser") {
"renderer_host/input/synthetic_smooth_scroll_gesture.h", "renderer_host/input/synthetic_smooth_scroll_gesture.h",
"renderer_host/input/synthetic_tap_gesture.cc", "renderer_host/input/synthetic_tap_gesture.cc",
"renderer_host/input/synthetic_tap_gesture.h", "renderer_host/input/synthetic_tap_gesture.h",
"renderer_host/input/synthetic_touch_pointer.cc", "renderer_host/input/synthetic_touch_driver.cc",
"renderer_host/input/synthetic_touch_pointer.h", "renderer_host/input/synthetic_touch_driver.h",
"renderer_host/input/synthetic_touchpad_pinch_gesture.cc", "renderer_host/input/synthetic_touchpad_pinch_gesture.cc",
"renderer_host/input/synthetic_touchpad_pinch_gesture.h", "renderer_host/input/synthetic_touchpad_pinch_gesture.h",
"renderer_host/input/synthetic_touchscreen_pinch_gesture.cc", "renderer_host/input/synthetic_touchscreen_pinch_gesture.cc",
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
#include "content/browser/renderer_host/input/synthetic_smooth_move_gesture.h" #include "content/browser/renderer_host/input/synthetic_smooth_move_gesture.h"
#include "content/browser/renderer_host/input/synthetic_smooth_scroll_gesture.h" #include "content/browser/renderer_host/input/synthetic_smooth_scroll_gesture.h"
#include "content/browser/renderer_host/input/synthetic_tap_gesture.h" #include "content/browser/renderer_host/input/synthetic_tap_gesture.h"
#include "content/browser/renderer_host/input/synthetic_touch_pointer.h"
#include "content/browser/renderer_host/input/synthetic_touchpad_pinch_gesture.h" #include "content/browser/renderer_host/input/synthetic_touchpad_pinch_gesture.h"
#include "content/browser/renderer_host/input/synthetic_touchscreen_pinch_gesture.h" #include "content/browser/renderer_host/input/synthetic_touchscreen_pinch_gesture.h"
#include "content/browser/renderer_host/render_widget_host_delegate.h" #include "content/browser/renderer_host/render_widget_host_delegate.h"
......
...@@ -2,37 +2,31 @@ ...@@ -2,37 +2,31 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "content/browser/renderer_host/input/synthetic_mouse_pointer.h" #include "content/browser/renderer_host/input/synthetic_mouse_driver.h"
#include "content/browser/renderer_host/input/synthetic_gesture_target.h" #include "content/browser/renderer_host/input/synthetic_gesture_target.h"
namespace content { namespace content {
SyntheticMousePointer::SyntheticMousePointer() {} SyntheticMouseDriver::SyntheticMouseDriver() {}
SyntheticMousePointer::~SyntheticMousePointer() {} SyntheticMouseDriver::~SyntheticMouseDriver() {}
void SyntheticMousePointer::DispatchEvent(SyntheticGestureTarget* target, void SyntheticMouseDriver::DispatchEvent(SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) { const base::TimeTicks& timestamp) {
mouse_event_.timeStampSeconds = ConvertTimestampToSeconds(timestamp); mouse_event_.timeStampSeconds = ConvertTimestampToSeconds(timestamp);
target->DispatchInputEventToPlatform(mouse_event_); target->DispatchInputEventToPlatform(mouse_event_);
} }
int SyntheticMousePointer::Press(float x, int SyntheticMouseDriver::Press(float x, float y) {
float y,
SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) {
mouse_event_ = SyntheticWebMouseEventBuilder::Build( mouse_event_ = SyntheticWebMouseEventBuilder::Build(
blink::WebInputEvent::MouseDown, x, y, 0); blink::WebInputEvent::MouseDown, x, y, 0);
mouse_event_.clickCount = 1; mouse_event_.clickCount = 1;
return 0; return 0;
} }
void SyntheticMousePointer::Move(int index, void SyntheticMouseDriver::Move(float x, float y, int index) {
float x, DCHECK_EQ(index, 0);
float y,
SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) {
blink::WebMouseEvent::Button button = mouse_event_.button; blink::WebMouseEvent::Button button = mouse_event_.button;
int click_count = mouse_event_.clickCount; int click_count = mouse_event_.clickCount;
mouse_event_ = SyntheticWebMouseEventBuilder::Build( mouse_event_ = SyntheticWebMouseEventBuilder::Build(
...@@ -41,17 +35,36 @@ void SyntheticMousePointer::Move(int index, ...@@ -41,17 +35,36 @@ void SyntheticMousePointer::Move(int index,
mouse_event_.clickCount = click_count; mouse_event_.clickCount = click_count;
} }
void SyntheticMousePointer::Release(int index, void SyntheticMouseDriver::Release(int index) {
SyntheticGestureTarget* target, DCHECK_EQ(index, 0);
const base::TimeTicks& timestamp) {
mouse_event_ = SyntheticWebMouseEventBuilder::Build( mouse_event_ = SyntheticWebMouseEventBuilder::Build(
blink::WebInputEvent::MouseUp, mouse_event_.x, mouse_event_.y, 0); blink::WebInputEvent::MouseUp, mouse_event_.x, mouse_event_.y, 0);
mouse_event_.clickCount = 1; mouse_event_.clickCount = 1;
} }
SyntheticGestureParams::GestureSourceType SyntheticMousePointer::SourceType() bool SyntheticMouseDriver::UserInputCheck(
const { const SyntheticPointerActionParams& params) const {
return SyntheticGestureParams::MOUSE_INPUT; if (params.gesture_source_type != SyntheticGestureParams::MOUSE_INPUT)
return false;
if (params.pointer_action_type() ==
SyntheticPointerActionParams::PointerActionType::NOT_INITIALIZED) {
return false;
}
if (params.pointer_action_type() ==
SyntheticPointerActionParams::PointerActionType::PRESS &&
mouse_event_.clickCount > 0) {
return false;
}
if (params.pointer_action_type() ==
SyntheticPointerActionParams::PointerActionType::RELEASE &&
mouse_event_.clickCount <= 0) {
return false;
}
return true;
} }
} // namespace content } // namespace content
...@@ -2,44 +2,36 @@ ...@@ -2,44 +2,36 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_MOUSE_POINTER_H_ #ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_MOUSE_DRIVER_H_
#define CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_MOUSE_POINTER_H_ #define CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_MOUSE_DRIVER_H_
#include "base/macros.h" #include "base/macros.h"
#include "content/browser/renderer_host/input/synthetic_pointer.h" #include "content/browser/renderer_host/input/synthetic_pointer_driver.h"
#include "content/common/content_export.h" #include "content/common/content_export.h"
#include "content/common/input/synthetic_web_input_event_builders.h" #include "content/common/input/synthetic_web_input_event_builders.h"
namespace content { namespace content {
class CONTENT_EXPORT SyntheticMousePointer : public SyntheticPointer { class CONTENT_EXPORT SyntheticMouseDriver : public SyntheticPointerDriver {
public: public:
SyntheticMousePointer(); SyntheticMouseDriver();
~SyntheticMousePointer() override; ~SyntheticMouseDriver() override;
void DispatchEvent(SyntheticGestureTarget* target, void DispatchEvent(SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) override; const base::TimeTicks& timestamp) override;
int Press(float x, int Press(float x, float y) override;
float y, void Move(float x, float y, int index = 0) override;
SyntheticGestureTarget* target, void Release(int index = 0) override;
const base::TimeTicks& timestamp) override;
void Move(int index, bool UserInputCheck(
float x, const SyntheticPointerActionParams& params) const override;
float y,
SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) override;
void Release(int index,
SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) override;
SyntheticGestureParams::GestureSourceType SourceType() const override;
private: private:
blink::WebMouseEvent mouse_event_; blink::WebMouseEvent mouse_event_;
DISALLOW_COPY_AND_ASSIGN(SyntheticMousePointer); DISALLOW_COPY_AND_ASSIGN(SyntheticMouseDriver);
}; };
} // namespace content } // namespace content
#endif // CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_MOUSE_POINTER_H_ #endif // CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_MOUSE_DRIVER_H_
...@@ -15,81 +15,54 @@ SyntheticPointerAction::SyntheticPointerAction( ...@@ -15,81 +15,54 @@ SyntheticPointerAction::SyntheticPointerAction(
: params_(params) {} : params_(params) {}
SyntheticPointerAction::SyntheticPointerAction( SyntheticPointerAction::SyntheticPointerAction(
std::unique_ptr<std::vector<SyntheticPointerActionParams>> param_list, std::vector<SyntheticPointerActionParams>* param_list,
SyntheticPointer* synthetic_pointer, SyntheticPointerDriver* synthetic_pointer_driver)
IndexMap* index_map) : param_list_(param_list),
: param_list_(std::move(param_list)), synthetic_pointer_driver_(synthetic_pointer_driver) {}
synthetic_pointer_(synthetic_pointer),
index_map_(index_map) {}
SyntheticPointerAction::~SyntheticPointerAction() {} SyntheticPointerAction::~SyntheticPointerAction() {}
SyntheticGesture::Result SyntheticPointerAction::ForwardInputEvents( SyntheticGesture::Result SyntheticPointerAction::ForwardInputEvents(
const base::TimeTicks& timestamp, const base::TimeTicks& timestamp,
SyntheticGestureTarget* target) { SyntheticGestureTarget* target) {
DCHECK(synthetic_pointer_); DCHECK(synthetic_pointer_driver_);
return ForwardTouchOrMouseInputEvents(timestamp, target); return ForwardTouchOrMouseInputEvents(timestamp, target);
} }
SyntheticGesture::Result SyntheticPointerAction::ForwardTouchOrMouseInputEvents( SyntheticGesture::Result SyntheticPointerAction::ForwardTouchOrMouseInputEvents(
const base::TimeTicks& timestamp, const base::TimeTicks& timestamp,
SyntheticGestureTarget* target) { SyntheticGestureTarget* target) {
int point_index; for (SyntheticPointerActionParams& params : *param_list_) {
for (const SyntheticPointerActionParams& params : *param_list_) { if (!synthetic_pointer_driver_->UserInputCheck(params))
if (!UserInputCheck(params))
return POINTER_ACTION_INPUT_INVALID; return POINTER_ACTION_INPUT_INVALID;
switch (params.pointer_action_type()) { switch (params.pointer_action_type()) {
case SyntheticPointerActionParams::PointerActionType::PRESS: case SyntheticPointerActionParams::PointerActionType::PRESS: {
point_index = synthetic_pointer_->Press( int index = synthetic_pointer_driver_->Press(params.position().x(),
params.position().x(), params.position().y(), target, timestamp); params.position().y());
SetPointIndex(params.index(), point_index); params.set_index(index);
break; break;
}
case SyntheticPointerActionParams::PointerActionType::MOVE: case SyntheticPointerActionParams::PointerActionType::MOVE:
point_index = GetPointIndex(params.index()); synthetic_pointer_driver_->Move(params.position().x(),
synthetic_pointer_->Move(point_index, params.position().x(), params.position().y(), params.index());
params.position().y(), target, timestamp);
break; break;
case SyntheticPointerActionParams::PointerActionType::RELEASE: case SyntheticPointerActionParams::PointerActionType::RELEASE:
point_index = GetPointIndex(params.index()); synthetic_pointer_driver_->Release(params.index());
synthetic_pointer_->Release(point_index, target, timestamp); // Only reset the index for touch pointers.
SetPointIndex(params.index(), -1); if (params.gesture_source_type != SyntheticGestureParams::MOUSE_INPUT)
params.set_index(-1);
break; break;
default: case SyntheticPointerActionParams::PointerActionType::IDLE:
break;
case SyntheticPointerActionParams::PointerActionType::NOT_INITIALIZED:
return POINTER_ACTION_INPUT_INVALID; return POINTER_ACTION_INPUT_INVALID;
case SyntheticPointerActionParams::PointerActionType::FINISH:
return GESTURE_FINISHED;
} }
} }
synthetic_pointer_->DispatchEvent(target, timestamp); synthetic_pointer_driver_->DispatchEvent(target, timestamp);
return GESTURE_FINISHED; return GESTURE_FINISHED;
} }
bool SyntheticPointerAction::UserInputCheck(
const SyntheticPointerActionParams& params) {
if (params.index() < 0 || params.index() >= WebTouchEvent::kTouchesLengthCap)
return false;
if (synthetic_pointer_->SourceType() != params.gesture_source_type)
return false;
if (params.pointer_action_type() ==
SyntheticPointerActionParams::PointerActionType::PRESS &&
GetPointIndex(params.index()) >= 0) {
return false;
}
if (synthetic_pointer_->SourceType() == SyntheticGestureParams::TOUCH_INPUT &&
params.pointer_action_type() ==
SyntheticPointerActionParams::PointerActionType::MOVE &&
GetPointIndex(params.index()) < 0) {
return false;
}
if (params.pointer_action_type() ==
SyntheticPointerActionParams::PointerActionType::RELEASE &&
GetPointIndex(params.index()) < 0) {
return false;
}
return true;
}
} // namespace content } // namespace content
...@@ -5,11 +5,10 @@ ...@@ -5,11 +5,10 @@
#ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_POINTER_ACTION_H_ #ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_POINTER_ACTION_H_
#define CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_POINTER_ACTION_H_ #define CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_POINTER_ACTION_H_
#include <array>
#include "base/macros.h" #include "base/macros.h"
#include "content/browser/renderer_host/input/synthetic_gesture.h" #include "content/browser/renderer_host/input/synthetic_gesture.h"
#include "content/browser/renderer_host/input/synthetic_gesture_target.h" #include "content/browser/renderer_host/input/synthetic_gesture_target.h"
#include "content/browser/renderer_host/input/synthetic_pointer.h" #include "content/browser/renderer_host/input/synthetic_pointer_driver.h"
#include "content/common/content_export.h" #include "content/common/content_export.h"
#include "content/common/input/synthetic_pointer_action_params.h" #include "content/common/input/synthetic_pointer_action_params.h"
...@@ -19,12 +18,8 @@ namespace content { ...@@ -19,12 +18,8 @@ namespace content {
class CONTENT_EXPORT SyntheticPointerAction : public SyntheticGesture { class CONTENT_EXPORT SyntheticPointerAction : public SyntheticGesture {
public: public:
using IndexMap = std::array<int, WebTouchEvent::kTouchesLengthCap>; SyntheticPointerAction(std::vector<SyntheticPointerActionParams>* param_list,
SyntheticPointerDriver* synthetic_pointer_driver);
SyntheticPointerAction(
std::unique_ptr<std::vector<SyntheticPointerActionParams>> param_list,
SyntheticPointer* synthetic_pointer,
IndexMap* index_map);
~SyntheticPointerAction() override; ~SyntheticPointerAction() override;
SyntheticGesture::Result ForwardInputEvents( SyntheticGesture::Result ForwardInputEvents(
...@@ -36,26 +31,17 @@ class CONTENT_EXPORT SyntheticPointerAction : public SyntheticGesture { ...@@ -36,26 +31,17 @@ class CONTENT_EXPORT SyntheticPointerAction : public SyntheticGesture {
SyntheticGesture::Result ForwardTouchOrMouseInputEvents( SyntheticGesture::Result ForwardTouchOrMouseInputEvents(
const base::TimeTicks& timestamp, const base::TimeTicks& timestamp,
SyntheticGestureTarget* target); SyntheticGestureTarget* target);
int GetPointIndex(int index) const { return (*index_map_)[index]; }
void SetPointIndex(int index, int point_index) {
(*index_map_)[index] = point_index;
}
// Check if the user inputs in the SyntheticPointerActionParams can generate
// a valid sequence of pointer actions.
bool UserInputCheck(const SyntheticPointerActionParams& params);
// SyntheticGestureController is responsible to create the // SyntheticGestureController is responsible to create the
// SyntheticPointerActions and control when to forward them. // SyntheticPointerActions and control when to forward them.
// This will be passed from SyntheticGestureController, which will reset its
// value to push a new batch of action parameters.
// This contains a list of pointer actions which will be dispatched together.
const std::unique_ptr<std::vector<SyntheticPointerActionParams>> param_list_;
// These two objects will be owned by SyntheticGestureController, which // These two objects will be owned by SyntheticGestureController, which
// will manage their lifetime by initiating them when it starts processing a // will manage their lifetime by initiating them when it starts processing a
// pointer action sequence and resetting them when it finishes. // pointer action sequence and resetting them when it finishes.
SyntheticPointer* synthetic_pointer_; // param_list_ contains a list of pointer actions which will be dispatched
IndexMap* index_map_; // together.
std::vector<SyntheticPointerActionParams>* param_list_;
SyntheticPointerDriver* synthetic_pointer_driver_;
SyntheticPointerActionParams params_; SyntheticPointerActionParams params_;
......
...@@ -2,33 +2,32 @@ ...@@ -2,33 +2,32 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#include "content/browser/renderer_host/input/synthetic_pointer.h" #include "content/browser/renderer_host/input/synthetic_pointer_driver.h"
#include "base/memory/ptr_util.h" #include "base/memory/ptr_util.h"
#include "content/browser/renderer_host/input/synthetic_mouse_pointer.h" #include "content/browser/renderer_host/input/synthetic_mouse_driver.h"
#include "content/browser/renderer_host/input/synthetic_touch_pointer.h" #include "content/browser/renderer_host/input/synthetic_touch_driver.h"
#include "third_party/WebKit/public/platform/WebInputEvent.h"
namespace content { namespace content {
SyntheticPointer::SyntheticPointer() {} SyntheticPointerDriver::SyntheticPointerDriver() {}
SyntheticPointer::~SyntheticPointer() {} SyntheticPointerDriver::~SyntheticPointerDriver() {}
// static // static
std::unique_ptr<SyntheticPointer> SyntheticPointer::Create( std::unique_ptr<SyntheticPointerDriver> SyntheticPointerDriver::Create(
SyntheticGestureParams::GestureSourceType gesture_source_type) { SyntheticGestureParams::GestureSourceType gesture_source_type) {
if (gesture_source_type == SyntheticGestureParams::TOUCH_INPUT) { if (gesture_source_type == SyntheticGestureParams::TOUCH_INPUT) {
return base::MakeUnique<SyntheticTouchPointer>(); return base::MakeUnique<SyntheticTouchDriver>();
} else if (gesture_source_type == SyntheticGestureParams::MOUSE_INPUT) { } else if (gesture_source_type == SyntheticGestureParams::MOUSE_INPUT) {
return base::MakeUnique<SyntheticMousePointer>(); return base::MakeUnique<SyntheticMouseDriver>();
} else { } else {
NOTREACHED() << "Invalid gesture source type"; NOTREACHED() << "Invalid gesture source type";
return std::unique_ptr<SyntheticPointer>(); return std::unique_ptr<SyntheticPointerDriver>();
} }
} }
// static // static
double SyntheticPointer::ConvertTimestampToSeconds( double SyntheticPointerDriver::ConvertTimestampToSeconds(
const base::TimeTicks& timestamp) { const base::TimeTicks& timestamp) {
return (timestamp - base::TimeTicks()).InSecondsF(); return (timestamp - base::TimeTicks()).InSecondsF();
} }
......
...@@ -2,53 +2,48 @@ ...@@ -2,53 +2,48 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_POINTER_H_ #ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_POINTER_DRIVER_H_
#define CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_POINTER_H_ #define CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_POINTER_DRIVER_H_
#include <memory> #include <memory>
#include "base/macros.h" #include "base/macros.h"
#include "content/common/content_export.h" #include "content/common/content_export.h"
#include "content/common/input/synthetic_gesture_params.h" #include "content/common/input/synthetic_gesture_params.h"
#include "content/common/input/synthetic_pointer_action_params.h"
#include "content/common/input/synthetic_web_input_event_builders.h" #include "content/common/input/synthetic_web_input_event_builders.h"
namespace content { namespace content {
class SyntheticGestureTarget; class SyntheticGestureTarget;
class CONTENT_EXPORT SyntheticPointer { class CONTENT_EXPORT SyntheticPointerDriver {
public: public:
SyntheticPointer(); SyntheticPointerDriver();
virtual ~SyntheticPointer(); virtual ~SyntheticPointerDriver();
static std::unique_ptr<SyntheticPointer> Create( static std::unique_ptr<SyntheticPointerDriver> Create(
SyntheticGestureParams::GestureSourceType gesture_source_type); SyntheticGestureParams::GestureSourceType gesture_source_type);
virtual void DispatchEvent(SyntheticGestureTarget* target, virtual void DispatchEvent(SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) = 0; const base::TimeTicks& timestamp) = 0;
virtual int Press(float x, virtual int Press(float x, float y) = 0;
float y, virtual void Move(float x, float y, int index = 0) = 0;
SyntheticGestureTarget* target, virtual void Release(int index = 0) = 0;
const base::TimeTicks& timestamp) = 0;
virtual void Move(int index, // Check if the user inputs in the SyntheticPointerActionParams can generate
float x, // a valid sequence of pointer actions.
float y, virtual bool UserInputCheck(
SyntheticGestureTarget* target, const SyntheticPointerActionParams& params) const = 0;
const base::TimeTicks& timestamp) = 0;
virtual void Release(int index,
SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) = 0;
virtual SyntheticGestureParams::GestureSourceType SourceType() const = 0;
protected: protected:
static double ConvertTimestampToSeconds(const base::TimeTicks& timestamp); static double ConvertTimestampToSeconds(const base::TimeTicks& timestamp);
private: private:
DISALLOW_COPY_AND_ASSIGN(SyntheticPointer); DISALLOW_COPY_AND_ASSIGN(SyntheticPointerDriver);
}; };
} // namespace content } // namespace content
#endif // CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_POINTER_H_ #endif // CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_POINTER_DRIVER_H_
...@@ -67,15 +67,15 @@ SyntheticGesture::Result SyntheticSmoothMoveGesture::ForwardInputEvents( ...@@ -67,15 +67,15 @@ SyntheticGesture::Result SyntheticSmoothMoveGesture::ForwardInputEvents(
switch (params_.input_type) { switch (params_.input_type) {
case SyntheticSmoothMoveGestureParams::TOUCH_INPUT: case SyntheticSmoothMoveGestureParams::TOUCH_INPUT:
if (!synthetic_pointer_) if (!synthetic_pointer_driver_)
synthetic_pointer_ = synthetic_pointer_driver_ =
SyntheticPointer::Create(SyntheticGestureParams::TOUCH_INPUT); SyntheticPointerDriver::Create(SyntheticGestureParams::TOUCH_INPUT);
ForwardTouchInputEvents(timestamp, target); ForwardTouchInputEvents(timestamp, target);
break; break;
case SyntheticSmoothMoveGestureParams::MOUSE_DRAG_INPUT: case SyntheticSmoothMoveGestureParams::MOUSE_DRAG_INPUT:
if (!synthetic_pointer_) if (!synthetic_pointer_driver_)
synthetic_pointer_ = synthetic_pointer_driver_ =
SyntheticPointer::Create(SyntheticGestureParams::MOUSE_INPUT); SyntheticPointerDriver::Create(SyntheticGestureParams::MOUSE_INPUT);
ForwardMouseClickInputEvents(timestamp, target); ForwardMouseClickInputEvents(timestamp, target);
break; break;
case SyntheticSmoothMoveGestureParams::MOUSE_WHEEL_INPUT: case SyntheticSmoothMoveGestureParams::MOUSE_WHEEL_INPUT:
...@@ -256,10 +256,9 @@ void SyntheticSmoothMoveGesture::ForwardMouseWheelEvent( ...@@ -256,10 +256,9 @@ void SyntheticSmoothMoveGesture::ForwardMouseWheelEvent(
void SyntheticSmoothMoveGesture::PressPoint(SyntheticGestureTarget* target, void SyntheticSmoothMoveGesture::PressPoint(SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) { const base::TimeTicks& timestamp) {
DCHECK_EQ(current_move_segment_, 0); DCHECK_EQ(current_move_segment_, 0);
synthetic_pointer_->Press(current_move_segment_start_position_.x(), synthetic_pointer_driver_->Press(current_move_segment_start_position_.x(),
current_move_segment_start_position_.y(), target, current_move_segment_start_position_.y());
timestamp); synthetic_pointer_driver_->DispatchEvent(target, timestamp);
synthetic_pointer_->DispatchEvent(target, timestamp);
} }
void SyntheticSmoothMoveGesture::MovePoint(SyntheticGestureTarget* target, void SyntheticSmoothMoveGesture::MovePoint(SyntheticGestureTarget* target,
...@@ -268,9 +267,8 @@ void SyntheticSmoothMoveGesture::MovePoint(SyntheticGestureTarget* target, ...@@ -268,9 +267,8 @@ void SyntheticSmoothMoveGesture::MovePoint(SyntheticGestureTarget* target,
DCHECK_GE(current_move_segment_, 0); DCHECK_GE(current_move_segment_, 0);
DCHECK_LT(current_move_segment_, static_cast<int>(params_.distances.size())); DCHECK_LT(current_move_segment_, static_cast<int>(params_.distances.size()));
gfx::PointF new_position = current_move_segment_start_position_ + delta; gfx::PointF new_position = current_move_segment_start_position_ + delta;
synthetic_pointer_->Move(0, new_position.x(), new_position.y(), target, synthetic_pointer_driver_->Move(new_position.x(), new_position.y());
timestamp); synthetic_pointer_driver_->DispatchEvent(target, timestamp);
synthetic_pointer_->DispatchEvent(target, timestamp);
} }
void SyntheticSmoothMoveGesture::ReleasePoint( void SyntheticSmoothMoveGesture::ReleasePoint(
...@@ -284,8 +282,8 @@ void SyntheticSmoothMoveGesture::ReleasePoint( ...@@ -284,8 +282,8 @@ void SyntheticSmoothMoveGesture::ReleasePoint(
position = current_move_segment_start_position_ + position = current_move_segment_start_position_ +
GetPositionDeltaAtTime(timestamp); GetPositionDeltaAtTime(timestamp);
} }
synthetic_pointer_->Release(0, target, timestamp); synthetic_pointer_driver_->Release();
synthetic_pointer_->DispatchEvent(target, timestamp); synthetic_pointer_driver_->DispatchEvent(target, timestamp);
} }
void SyntheticSmoothMoveGesture::AddTouchSlopToFirstDistance( void SyntheticSmoothMoveGesture::AddTouchSlopToFirstDistance(
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
#include "base/time/time.h" #include "base/time/time.h"
#include "content/browser/renderer_host/input/synthetic_gesture.h" #include "content/browser/renderer_host/input/synthetic_gesture.h"
#include "content/browser/renderer_host/input/synthetic_gesture_target.h" #include "content/browser/renderer_host/input/synthetic_gesture_target.h"
#include "content/browser/renderer_host/input/synthetic_pointer.h" #include "content/browser/renderer_host/input/synthetic_pointer_driver.h"
#include "content/common/content_export.h" #include "content/common/content_export.h"
#include "content/common/input/synthetic_smooth_drag_gesture_params.h" #include "content/common/input/synthetic_smooth_drag_gesture_params.h"
#include "content/common/input/synthetic_smooth_scroll_gesture_params.h" #include "content/common/input/synthetic_smooth_scroll_gesture_params.h"
...@@ -93,7 +93,7 @@ class CONTENT_EXPORT SyntheticSmoothMoveGesture : public SyntheticGesture { ...@@ -93,7 +93,7 @@ class CONTENT_EXPORT SyntheticSmoothMoveGesture : public SyntheticGesture {
bool MoveIsNoOp() const; bool MoveIsNoOp() const;
SyntheticSmoothMoveGestureParams params_; SyntheticSmoothMoveGestureParams params_;
std::unique_ptr<SyntheticPointer> synthetic_pointer_; std::unique_ptr<SyntheticPointerDriver> synthetic_pointer_driver_;
// Used for mouse input. // Used for mouse input.
gfx::Vector2d current_move_segment_total_delta_discrete_; gfx::Vector2d current_move_segment_total_delta_discrete_;
// Used for touch input. // Used for touch input.
......
...@@ -32,8 +32,9 @@ SyntheticGesture::Result SyntheticTapGesture::ForwardInputEvents( ...@@ -32,8 +32,9 @@ SyntheticGesture::Result SyntheticTapGesture::ForwardInputEvents(
DCHECK_NE(gesture_source_type_, SyntheticGestureParams::DEFAULT_INPUT); DCHECK_NE(gesture_source_type_, SyntheticGestureParams::DEFAULT_INPUT);
if (!synthetic_pointer_) if (!synthetic_pointer_driver_)
synthetic_pointer_ = SyntheticPointer::Create(gesture_source_type_); synthetic_pointer_driver_ =
SyntheticPointerDriver::Create(gesture_source_type_);
if (gesture_source_type_ == SyntheticGestureParams::TOUCH_INPUT || if (gesture_source_type_ == SyntheticGestureParams::TOUCH_INPUT ||
gesture_source_type_ == SyntheticGestureParams::MOUSE_INPUT) gesture_source_type_ == SyntheticGestureParams::MOUSE_INPUT)
...@@ -49,13 +50,13 @@ void SyntheticTapGesture::ForwardTouchOrMouseInputEvents( ...@@ -49,13 +50,13 @@ void SyntheticTapGesture::ForwardTouchOrMouseInputEvents(
const base::TimeTicks& timestamp, SyntheticGestureTarget* target) { const base::TimeTicks& timestamp, SyntheticGestureTarget* target) {
switch (state_) { switch (state_) {
case PRESS: case PRESS:
synthetic_pointer_->Press(params_.position.x(), params_.position.y(), synthetic_pointer_driver_->Press(params_.position.x(),
target, timestamp); params_.position.y());
synthetic_pointer_->DispatchEvent(target, timestamp); synthetic_pointer_driver_->DispatchEvent(target, timestamp);
// Release immediately if duration is 0. // Release immediately if duration is 0.
if (params_.duration_ms == 0) { if (params_.duration_ms == 0) {
synthetic_pointer_->Release(0, target, timestamp); synthetic_pointer_driver_->Release();
synthetic_pointer_->DispatchEvent(target, timestamp); synthetic_pointer_driver_->DispatchEvent(target, timestamp);
state_ = DONE; state_ = DONE;
} else { } else {
start_time_ = timestamp; start_time_ = timestamp;
...@@ -64,8 +65,9 @@ void SyntheticTapGesture::ForwardTouchOrMouseInputEvents( ...@@ -64,8 +65,9 @@ void SyntheticTapGesture::ForwardTouchOrMouseInputEvents(
break; break;
case WAITING_TO_RELEASE: case WAITING_TO_RELEASE:
if (timestamp - start_time_ >= GetDuration()) { if (timestamp - start_time_ >= GetDuration()) {
synthetic_pointer_->Release(0, target, start_time_ + GetDuration()); synthetic_pointer_driver_->Release();
synthetic_pointer_->DispatchEvent(target, start_time_ + GetDuration()); synthetic_pointer_driver_->DispatchEvent(target,
start_time_ + GetDuration());
state_ = DONE; state_ = DONE;
} }
break; break;
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#include "base/macros.h" #include "base/macros.h"
#include "content/browser/renderer_host/input/synthetic_gesture.h" #include "content/browser/renderer_host/input/synthetic_gesture.h"
#include "content/browser/renderer_host/input/synthetic_gesture_target.h" #include "content/browser/renderer_host/input/synthetic_gesture_target.h"
#include "content/browser/renderer_host/input/synthetic_pointer.h" #include "content/browser/renderer_host/input/synthetic_pointer_driver.h"
#include "content/common/content_export.h" #include "content/common/content_export.h"
#include "content/common/input/synthetic_tap_gesture_params.h" #include "content/common/input/synthetic_tap_gesture_params.h"
...@@ -37,7 +37,7 @@ class CONTENT_EXPORT SyntheticTapGesture : public SyntheticGesture { ...@@ -37,7 +37,7 @@ class CONTENT_EXPORT SyntheticTapGesture : public SyntheticGesture {
base::TimeDelta GetDuration() const; base::TimeDelta GetDuration() const;
SyntheticTapGestureParams params_; SyntheticTapGestureParams params_;
std::unique_ptr<SyntheticPointer> synthetic_pointer_; std::unique_ptr<SyntheticPointerDriver> synthetic_pointer_driver_;
base::TimeTicks start_time_; base::TimeTicks start_time_;
SyntheticGestureParams::GestureSourceType gesture_source_type_; SyntheticGestureParams::GestureSourceType gesture_source_type_;
GestureState state_; GestureState state_;
......
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/browser/renderer_host/input/synthetic_touch_driver.h"
#include "content/browser/renderer_host/input/synthetic_gesture_target.h"
using blink::WebTouchEvent;
namespace content {
SyntheticTouchDriver::SyntheticTouchDriver() {}
SyntheticTouchDriver::SyntheticTouchDriver(SyntheticWebTouchEvent touch_event)
: touch_event_(touch_event) {}
SyntheticTouchDriver::~SyntheticTouchDriver() {}
void SyntheticTouchDriver::DispatchEvent(SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) {
touch_event_.timeStampSeconds = ConvertTimestampToSeconds(timestamp);
target->DispatchInputEventToPlatform(touch_event_);
}
int SyntheticTouchDriver::Press(float x, float y) {
int index = touch_event_.PressPoint(x, y);
return index;
}
void SyntheticTouchDriver::Move(float x, float y, int index) {
touch_event_.MovePoint(index, x, y);
}
void SyntheticTouchDriver::Release(int index) {
touch_event_.ReleasePoint(index);
}
bool SyntheticTouchDriver::UserInputCheck(
const SyntheticPointerActionParams& params) const {
DCHECK_GE(params.index(), -1);
DCHECK_LT(params.index(), WebTouchEvent::kTouchesLengthCap);
if (params.gesture_source_type != SyntheticGestureParams::TOUCH_INPUT)
return false;
if (params.pointer_action_type() ==
SyntheticPointerActionParams::PointerActionType::NOT_INITIALIZED) {
return false;
}
if (params.pointer_action_type() ==
SyntheticPointerActionParams::PointerActionType::PRESS &&
params.index() >= 0) {
return false;
}
if (params.pointer_action_type() ==
SyntheticPointerActionParams::PointerActionType::MOVE &&
params.index() == -1) {
return false;
}
if (params.pointer_action_type() ==
SyntheticPointerActionParams::PointerActionType::RELEASE &&
params.index() == -1) {
return false;
}
return true;
}
} // namespace content
...@@ -2,46 +2,38 @@ ...@@ -2,46 +2,38 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
#ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_TOUCH_POINTER_H_ #ifndef CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_TOUCH_DRIVER_H_
#define CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_TOUCH_POINTER_H_ #define CONTENT_BROWSER_RENDERER_HOST_INPUT_SYNTHETIC_TOUCH_DRIVER_H_
#include <array>
#include "base/macros.h" #include "base/macros.h"
#include "content/browser/renderer_host/input/synthetic_pointer.h" #include "content/browser/renderer_host/input/synthetic_pointer_driver.h"
#include "content/common/content_export.h" #include "content/common/content_export.h"
#include "content/common/input/synthetic_web_input_event_builders.h" #include "content/common/input/synthetic_web_input_event_builders.h"
namespace content { namespace content {
class CONTENT_EXPORT SyntheticTouchPointer : public SyntheticPointer { class CONTENT_EXPORT SyntheticTouchDriver : public SyntheticPointerDriver {
public: public:
SyntheticTouchPointer(); SyntheticTouchDriver();
explicit SyntheticTouchPointer(SyntheticWebTouchEvent touch_event); explicit SyntheticTouchDriver(SyntheticWebTouchEvent touch_event);
~SyntheticTouchPointer() override; ~SyntheticTouchDriver() override;
void DispatchEvent(SyntheticGestureTarget* target, void DispatchEvent(SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) override; const base::TimeTicks& timestamp) override;
int Press(float x, int Press(float x, float y) override;
float y, void Move(float x, float y, int index) override;
SyntheticGestureTarget* target, void Release(int index) override;
const base::TimeTicks& timestamp) override;
void Move(int index, bool UserInputCheck(
float x, const SyntheticPointerActionParams& params) const override;
float y,
SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) override;
void Release(int index,
SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) override;
SyntheticGestureParams::GestureSourceType SourceType() const override;
private: private:
SyntheticWebTouchEvent touch_event_; SyntheticWebTouchEvent touch_event_;
DISALLOW_COPY_AND_ASSIGN(SyntheticTouchDriver);
DISALLOW_COPY_AND_ASSIGN(SyntheticTouchPointer);
}; };
} // namespace content } // namespace content
#endif // CONTENT_COMMON_INPUT_SYNTHETIC_TOUCH_POINTER_H_ #endif // CONTENT_COMMON_INPUT_SYNTHETIC_TOUCH_DRIVER_H_
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/browser/renderer_host/input/synthetic_touch_pointer.h"
#include "content/browser/renderer_host/input/synthetic_gesture_target.h"
namespace content {
SyntheticTouchPointer::SyntheticTouchPointer() {}
SyntheticTouchPointer::SyntheticTouchPointer(SyntheticWebTouchEvent touch_event)
: touch_event_(touch_event) {}
SyntheticTouchPointer::~SyntheticTouchPointer() {}
void SyntheticTouchPointer::DispatchEvent(SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) {
touch_event_.timeStampSeconds = ConvertTimestampToSeconds(timestamp);
target->DispatchInputEventToPlatform(touch_event_);
}
int SyntheticTouchPointer::Press(float x,
float y,
SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) {
int index = touch_event_.PressPoint(x, y);
return index;
}
void SyntheticTouchPointer::Move(int index,
float x,
float y,
SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) {
touch_event_.MovePoint(index, x, y);
}
void SyntheticTouchPointer::Release(int index,
SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) {
touch_event_.ReleasePoint(index);
}
SyntheticGestureParams::GestureSourceType SyntheticTouchPointer::SourceType()
const {
return SyntheticGestureParams::TOUCH_INPUT;
}
} // namespace content
...@@ -40,8 +40,9 @@ SyntheticGesture::Result SyntheticTouchscreenPinchGesture::ForwardInputEvents( ...@@ -40,8 +40,9 @@ SyntheticGesture::Result SyntheticTouchscreenPinchGesture::ForwardInputEvents(
DCHECK_NE(gesture_source_type_, SyntheticGestureParams::DEFAULT_INPUT); DCHECK_NE(gesture_source_type_, SyntheticGestureParams::DEFAULT_INPUT);
if (!synthetic_pointer_) if (!synthetic_pointer_driver_)
synthetic_pointer_ = SyntheticPointer::Create(gesture_source_type_); synthetic_pointer_driver_ =
SyntheticPointerDriver::Create(gesture_source_type_);
if (gesture_source_type_ == SyntheticGestureParams::TOUCH_INPUT) { if (gesture_source_type_ == SyntheticGestureParams::TOUCH_INPUT) {
ForwardTouchInputEvents(timestamp, target); ForwardTouchInputEvents(timestamp, target);
...@@ -86,9 +87,9 @@ void SyntheticTouchscreenPinchGesture::ForwardTouchInputEvents( ...@@ -86,9 +87,9 @@ void SyntheticTouchscreenPinchGesture::ForwardTouchInputEvents(
void SyntheticTouchscreenPinchGesture::PressTouchPoints( void SyntheticTouchscreenPinchGesture::PressTouchPoints(
SyntheticGestureTarget* target, SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) { const base::TimeTicks& timestamp) {
synthetic_pointer_->Press(params_.anchor.x(), start_y_0_, target, timestamp); synthetic_pointer_driver_->Press(params_.anchor.x(), start_y_0_);
synthetic_pointer_->Press(params_.anchor.x(), start_y_1_, target, timestamp); synthetic_pointer_driver_->Press(params_.anchor.x(), start_y_1_);
synthetic_pointer_->DispatchEvent(target, timestamp); synthetic_pointer_driver_->DispatchEvent(target, timestamp);
} }
void SyntheticTouchscreenPinchGesture::MoveTouchPoints( void SyntheticTouchscreenPinchGesture::MoveTouchPoints(
...@@ -99,19 +100,17 @@ void SyntheticTouchscreenPinchGesture::MoveTouchPoints( ...@@ -99,19 +100,17 @@ void SyntheticTouchscreenPinchGesture::MoveTouchPoints(
float current_y_0 = start_y_0_ + delta; float current_y_0 = start_y_0_ + delta;
float current_y_1 = start_y_1_ - delta; float current_y_1 = start_y_1_ - delta;
synthetic_pointer_->Move(0, params_.anchor.x(), current_y_0, target, synthetic_pointer_driver_->Move(params_.anchor.x(), current_y_0, 0);
timestamp); synthetic_pointer_driver_->Move(params_.anchor.x(), current_y_1, 1);
synthetic_pointer_->Move(1, params_.anchor.x(), current_y_1, target, synthetic_pointer_driver_->DispatchEvent(target, timestamp);
timestamp);
synthetic_pointer_->DispatchEvent(target, timestamp);
} }
void SyntheticTouchscreenPinchGesture::ReleaseTouchPoints( void SyntheticTouchscreenPinchGesture::ReleaseTouchPoints(
SyntheticGestureTarget* target, SyntheticGestureTarget* target,
const base::TimeTicks& timestamp) { const base::TimeTicks& timestamp) {
synthetic_pointer_->Release(0, target, timestamp); synthetic_pointer_driver_->Release(0);
synthetic_pointer_->Release(1, target, timestamp); synthetic_pointer_driver_->Release(1);
synthetic_pointer_->DispatchEvent(target, timestamp); synthetic_pointer_driver_->DispatchEvent(target, timestamp);
} }
void SyntheticTouchscreenPinchGesture::SetupCoordinatesAndStopTime( void SyntheticTouchscreenPinchGesture::SetupCoordinatesAndStopTime(
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
#include "base/time/time.h" #include "base/time/time.h"
#include "content/browser/renderer_host/input/synthetic_gesture.h" #include "content/browser/renderer_host/input/synthetic_gesture.h"
#include "content/browser/renderer_host/input/synthetic_gesture_target.h" #include "content/browser/renderer_host/input/synthetic_gesture_target.h"
#include "content/browser/renderer_host/input/synthetic_pointer.h" #include "content/browser/renderer_host/input/synthetic_pointer_driver.h"
#include "content/common/content_export.h" #include "content/common/content_export.h"
#include "content/common/input/synthetic_pinch_gesture_params.h" #include "content/common/input/synthetic_pinch_gesture_params.h"
#include "content/common/input/synthetic_web_input_event_builders.h" #include "content/common/input/synthetic_web_input_event_builders.h"
...@@ -48,7 +48,7 @@ class CONTENT_EXPORT SyntheticTouchscreenPinchGesture ...@@ -48,7 +48,7 @@ class CONTENT_EXPORT SyntheticTouchscreenPinchGesture
bool HasReachedTarget(const base::TimeTicks& timestamp) const; bool HasReachedTarget(const base::TimeTicks& timestamp) const;
SyntheticPinchGestureParams params_; SyntheticPinchGestureParams params_;
std::unique_ptr<SyntheticPointer> synthetic_pointer_; std::unique_ptr<SyntheticPointerDriver> synthetic_pointer_driver_;
float start_y_0_; float start_y_0_;
float start_y_1_; float start_y_1_;
float max_pointer_delta_0_; float max_pointer_delta_0_;
......
...@@ -91,8 +91,6 @@ class InputParamTraitsTest : public testing::Test { ...@@ -91,8 +91,6 @@ class InputParamTraitsTest : public testing::Test {
EXPECT_EQ(a->position(), b->position()); EXPECT_EQ(a->position(), b->position());
} }
if (a->pointer_action_type() != if (a->pointer_action_type() !=
SyntheticPointerActionParams::PointerActionType::PROCESS &&
a->pointer_action_type() !=
SyntheticPointerActionParams::PointerActionType::FINISH) { SyntheticPointerActionParams::PointerActionType::FINISH) {
EXPECT_EQ(a->index(), b->index()); EXPECT_EQ(a->index(), b->index());
} }
...@@ -278,8 +276,8 @@ TEST_F(InputParamTraitsTest, SyntheticTapGestureParams) { ...@@ -278,8 +276,8 @@ TEST_F(InputParamTraitsTest, SyntheticTapGestureParams) {
TEST_F(InputParamTraitsTest, SyntheticPointerActionParamsMove) { TEST_F(InputParamTraitsTest, SyntheticPointerActionParamsMove) {
std::unique_ptr<SyntheticPointerActionParams> gesture_params = std::unique_ptr<SyntheticPointerActionParams> gesture_params =
base::MakeUnique<SyntheticPointerActionParams>( base::MakeUnique<SyntheticPointerActionParams>(
SyntheticPointerActionParams::PointerActionType::MOVE); SyntheticPointerActionParams::PointerActionType::MOVE,
gesture_params->gesture_source_type = SyntheticGestureParams::TOUCH_INPUT; SyntheticGestureParams::TOUCH_INPUT);
gesture_params->set_position(gfx::PointF(356, 287)); gesture_params->set_position(gfx::PointF(356, 287));
gesture_params->set_index(0); gesture_params->set_index(0);
ASSERT_EQ(SyntheticGestureParams::POINTER_ACTION, ASSERT_EQ(SyntheticGestureParams::POINTER_ACTION,
...@@ -292,8 +290,8 @@ TEST_F(InputParamTraitsTest, SyntheticPointerActionParamsMove) { ...@@ -292,8 +290,8 @@ TEST_F(InputParamTraitsTest, SyntheticPointerActionParamsMove) {
TEST_F(InputParamTraitsTest, SyntheticPointerActionParamsRelease) { TEST_F(InputParamTraitsTest, SyntheticPointerActionParamsRelease) {
std::unique_ptr<SyntheticPointerActionParams> gesture_params = std::unique_ptr<SyntheticPointerActionParams> gesture_params =
base::MakeUnique<SyntheticPointerActionParams>( base::MakeUnique<SyntheticPointerActionParams>(
SyntheticPointerActionParams::PointerActionType::RELEASE); SyntheticPointerActionParams::PointerActionType::RELEASE,
gesture_params->gesture_source_type = SyntheticGestureParams::TOUCH_INPUT; SyntheticGestureParams::TOUCH_INPUT);
gesture_params->set_index(0); gesture_params->set_index(0);
ASSERT_EQ(SyntheticGestureParams::POINTER_ACTION, ASSERT_EQ(SyntheticGestureParams::POINTER_ACTION,
gesture_params->GetGestureType()); gesture_params->GetGestureType());
...@@ -305,8 +303,9 @@ TEST_F(InputParamTraitsTest, SyntheticPointerActionParamsRelease) { ...@@ -305,8 +303,9 @@ TEST_F(InputParamTraitsTest, SyntheticPointerActionParamsRelease) {
TEST_F(InputParamTraitsTest, SyntheticPointerActionParamsProcess) { TEST_F(InputParamTraitsTest, SyntheticPointerActionParamsProcess) {
std::unique_ptr<SyntheticPointerActionParams> gesture_params = std::unique_ptr<SyntheticPointerActionParams> gesture_params =
base::MakeUnique<SyntheticPointerActionParams>( base::MakeUnique<SyntheticPointerActionParams>(
SyntheticPointerActionParams::PointerActionType::PROCESS); SyntheticPointerActionParams::PointerActionType::IDLE,
gesture_params->gesture_source_type = SyntheticGestureParams::TOUCH_INPUT; SyntheticGestureParams::TOUCH_INPUT);
gesture_params->set_index(0);
ASSERT_EQ(SyntheticGestureParams::POINTER_ACTION, ASSERT_EQ(SyntheticGestureParams::POINTER_ACTION,
gesture_params->GetGestureType()); gesture_params->GetGestureType());
SyntheticGesturePacket packet_in; SyntheticGesturePacket packet_in;
...@@ -317,8 +316,8 @@ TEST_F(InputParamTraitsTest, SyntheticPointerActionParamsProcess) { ...@@ -317,8 +316,8 @@ TEST_F(InputParamTraitsTest, SyntheticPointerActionParamsProcess) {
TEST_F(InputParamTraitsTest, SyntheticPointerActionParamsFinish) { TEST_F(InputParamTraitsTest, SyntheticPointerActionParamsFinish) {
std::unique_ptr<SyntheticPointerActionParams> gesture_params = std::unique_ptr<SyntheticPointerActionParams> gesture_params =
base::MakeUnique<SyntheticPointerActionParams>( base::MakeUnique<SyntheticPointerActionParams>(
SyntheticPointerActionParams::PointerActionType::FINISH); SyntheticPointerActionParams::PointerActionType::FINISH,
gesture_params->gesture_source_type = SyntheticGestureParams::TOUCH_INPUT; SyntheticGestureParams::TOUCH_INPUT);
ASSERT_EQ(SyntheticGestureParams::POINTER_ACTION, ASSERT_EQ(SyntheticGestureParams::POINTER_ACTION,
gesture_params->GetGestureType()); gesture_params->GetGestureType());
SyntheticGesturePacket packet_in; SyntheticGesturePacket packet_in;
......
...@@ -7,11 +7,17 @@ ...@@ -7,11 +7,17 @@
namespace content { namespace content {
SyntheticPointerActionParams::SyntheticPointerActionParams() SyntheticPointerActionParams::SyntheticPointerActionParams()
: pointer_action_type_(PointerActionType::NOT_INITIALIZED), index_(-1) {} : pointer_action_type_(PointerActionType::NOT_INITIALIZED) {
index_ = gesture_source_type != MOUSE_INPUT ? -1 : 0;
}
SyntheticPointerActionParams::SyntheticPointerActionParams( SyntheticPointerActionParams::SyntheticPointerActionParams(
PointerActionType type) PointerActionType action_type,
: pointer_action_type_(type), index_(-1) {} GestureSourceType source_type)
: pointer_action_type_(action_type) {
gesture_source_type = source_type;
index_ = gesture_source_type != MOUSE_INPUT ? -1 : 0;
}
SyntheticPointerActionParams::SyntheticPointerActionParams( SyntheticPointerActionParams::SyntheticPointerActionParams(
const SyntheticPointerActionParams& other) const SyntheticPointerActionParams& other)
...@@ -24,9 +30,11 @@ SyntheticPointerActionParams::SyntheticPointerActionParams( ...@@ -24,9 +30,11 @@ SyntheticPointerActionParams::SyntheticPointerActionParams(
position_ = other.position(); position_ = other.position();
break; break;
case PointerActionType::RELEASE: case PointerActionType::RELEASE:
case PointerActionType::IDLE:
case PointerActionType::NOT_INITIALIZED:
index_ = other.index(); index_ = other.index();
break; break;
default: case PointerActionType::FINISH:
break; break;
} }
} }
......
...@@ -21,21 +21,22 @@ namespace content { ...@@ -21,21 +21,22 @@ namespace content {
struct CONTENT_EXPORT SyntheticPointerActionParams struct CONTENT_EXPORT SyntheticPointerActionParams
: public SyntheticGestureParams { : public SyntheticGestureParams {
public: public:
// Actions are queued up until we receive a PROCESS action, at which point // All the pointer actions that will be dispatched together will be grouped
// we'll dispatch all queued events. A FINISH action will be received when // in an array. A FINISH action will be received when we reach the end of the
// we reach the end of the action sequence. // action sequence.
enum class PointerActionType { enum class PointerActionType {
NOT_INITIALIZED, NOT_INITIALIZED,
PRESS, PRESS,
MOVE, MOVE,
RELEASE, RELEASE,
PROCESS, IDLE,
FINISH, FINISH,
POINTER_ACTION_TYPE_MAX = FINISH POINTER_ACTION_TYPE_MAX = FINISH
}; };
SyntheticPointerActionParams(); SyntheticPointerActionParams();
explicit SyntheticPointerActionParams(PointerActionType type); SyntheticPointerActionParams(PointerActionType action_type,
GestureSourceType source_type);
SyntheticPointerActionParams(const SyntheticPointerActionParams& other); SyntheticPointerActionParams(const SyntheticPointerActionParams& other);
~SyntheticPointerActionParams() override; ~SyntheticPointerActionParams() override;
...@@ -49,9 +50,8 @@ struct CONTENT_EXPORT SyntheticPointerActionParams ...@@ -49,9 +50,8 @@ struct CONTENT_EXPORT SyntheticPointerActionParams
} }
void set_index(int index) { void set_index(int index) {
DCHECK(pointer_action_type_ != PointerActionType::PROCESS && DCHECK(pointer_action_type_ != PointerActionType::FINISH);
pointer_action_type_ != PointerActionType::FINISH); // For mouse pointers, the index should always be 0.
// For all mouse pointer actions, the index should always be 0.
DCHECK(gesture_source_type != MOUSE_INPUT || index == 0); DCHECK(gesture_source_type != MOUSE_INPUT || index == 0);
index_ = index; index_ = index;
} }
...@@ -65,8 +65,8 @@ struct CONTENT_EXPORT SyntheticPointerActionParams ...@@ -65,8 +65,8 @@ struct CONTENT_EXPORT SyntheticPointerActionParams
PointerActionType pointer_action_type() const { return pointer_action_type_; } PointerActionType pointer_action_type() const { return pointer_action_type_; }
int index() const { int index() const {
DCHECK(pointer_action_type_ != PointerActionType::PROCESS && DCHECK(pointer_action_type_ != PointerActionType::FINISH);
pointer_action_type_ != PointerActionType::FINISH); // For mouse pointers, the index should always be 0.
DCHECK(gesture_source_type != MOUSE_INPUT || index_ == 0); DCHECK(gesture_source_type != MOUSE_INPUT || index_ == 0);
return index_; return index_;
} }
......
...@@ -954,7 +954,8 @@ struct FuzzTraits<content::SyntheticGesturePacket> { ...@@ -954,7 +954,8 @@ struct FuzzTraits<content::SyntheticGesturePacket> {
if (!FuzzParam(&index, fuzzer)) if (!FuzzParam(&index, fuzzer))
return false; return false;
content::SyntheticPointerActionParams* params = content::SyntheticPointerActionParams* params =
new content::SyntheticPointerActionParams(action_type); new content::SyntheticPointerActionParams();
params->set_pointer_action_type(action_type);
params->set_position(position); params->set_position(position);
params->set_index(index); params->set_index(index);
gesture_params.reset(params); gesture_params.reset(params);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment