Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(53)

Unified Diff: content/browser/renderer_host/input/synthetic_gesture_controller_unittest.cc

Issue 2336803003: Make SyntheticPointerAction to flush the pointer action sequence (Closed)
Patch Set: controller Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/renderer_host/input/synthetic_gesture_controller_unittest.cc
diff --git a/content/browser/renderer_host/input/synthetic_gesture_controller_unittest.cc b/content/browser/renderer_host/input/synthetic_gesture_controller_unittest.cc
index c2e16707f9d306ef4a0bc8f65fe4e4fdb2882557..10fd98a01c83aa51d63fa538c51ec89b8773a07f 100644
--- a/content/browser/renderer_host/input/synthetic_gesture_controller_unittest.cc
+++ b/content/browser/renderer_host/input/synthetic_gesture_controller_unittest.cc
@@ -478,17 +478,9 @@ class MockSyntheticPointerActionTarget : public MockSyntheticGestureTarget {
MockSyntheticPointerActionTarget() {}
~MockSyntheticPointerActionTarget() override {}
- gfx::PointF positions(int index) const { return positions_[index]; }
- int indexes(int index) const { return indexes_[index]; }
- WebTouchPoint::State states(int index) { return states_[index]; }
- unsigned touch_length() const { return touch_length_; }
WebInputEvent::Type type() const { return type_; }
protected:
- gfx::PointF positions_[kTouchPointersLength];
- unsigned touch_length_;
- int indexes_[kTouchPointersLength];
- WebTouchPoint::State states_[kTouchPointersLength];
WebInputEvent::Type type_;
};
@@ -509,6 +501,42 @@ class MockSyntheticPointerTouchActionTarget
}
touch_length_ = touch_event.touchesLength;
}
+
+ gfx::PointF positions(int index) const { return positions_[index]; }
+ int indexes(int index) const { return indexes_[index]; }
+ WebTouchPoint::State states(int index) { return states_[index]; }
+ unsigned touch_length() const { return touch_length_; }
+
+ private:
+ gfx::PointF positions_[kTouchPointersLength];
+ unsigned touch_length_;
+ int indexes_[kTouchPointersLength];
+ WebTouchPoint::State states_[kTouchPointersLength];
+};
+
+class MockSyntheticPointerMouseActionTarget
+ : public MockSyntheticPointerActionTarget {
+ public:
+ MockSyntheticPointerMouseActionTarget() {}
+ ~MockSyntheticPointerMouseActionTarget() override {}
+
+ void DispatchInputEventToPlatform(const WebInputEvent& event) override {
+ ASSERT_TRUE(WebInputEvent::isMouseEventType(event.type));
+ const WebMouseEvent& mouse_event = static_cast<const WebMouseEvent&>(event);
+ type_ = mouse_event.type;
+ position_ = gfx::PointF(mouse_event.x, mouse_event.y);
+ clickCount_ = mouse_event.clickCount;
+ button_ = mouse_event.button;
+ }
+
+ gfx::PointF position() const { return position_; }
+ int clickCount() const { return clickCount_; }
+ WebMouseEvent::Button button() const { return button_; }
+
+ private:
+ gfx::PointF position_;
+ int clickCount_;
+ WebMouseEvent::Button button_;
};
class SyntheticGestureControllerTestBase {
@@ -1472,6 +1500,145 @@ TEST_F(SyntheticGestureControllerTest, TapGestureMouse) {
base::TimeDelta::FromMilliseconds(params.duration_ms));
}
+TEST_F(SyntheticGestureControllerTest, PointerTouchAction) {
+ CreateControllerAndTarget<MockSyntheticPointerTouchActionTarget>();
+ std::unique_ptr<SyntheticPointer> synthetic_pointer =
+ SyntheticPointer::Create(SyntheticGestureParams::TOUCH_INPUT);
+ SyntheticPointerAction::IndexMap index_map;
+ std::fill(index_map.begin(), index_map.end(), -1);
+ std::vector<SyntheticPointerActionParams> action_param_list;
+
+ SyntheticPointerActionParams params0 = SyntheticPointerActionParams(
+ SyntheticGestureParams::TOUCH_INPUT,
+ SyntheticPointerActionParams::PointerActionType::PRESS);
+ SyntheticPointerActionParams params1 = SyntheticPointerActionParams(
+ SyntheticGestureParams::TOUCH_INPUT,
+ SyntheticPointerActionParams::PointerActionType::PRESS);
+ params0.set_index(0);
+ params0.set_position(gfx::PointF(54, 89));
+ params1.set_index(1);
+ params1.set_position(gfx::PointF(79, 132));
+ action_param_list.push_back(params0);
+ action_param_list.push_back(params1);
+ std::unique_ptr<SyntheticPointerAction> gesture(new SyntheticPointerAction(
+ action_param_list, synthetic_pointer.get(), &index_map));
+ QueueSyntheticGesture(std::move(gesture));
+ FlushInputUntilComplete();
+
+ MockSyntheticPointerTouchActionTarget* pointer_touch_target =
+ static_cast<MockSyntheticPointerTouchActionTarget*>(target_);
+ ASSERT_EQ(pointer_touch_target->touch_length(), 2u);
+ EXPECT_EQ(pointer_touch_target->indexes(0), params0.index());
+ EXPECT_EQ(pointer_touch_target->positions(0), params0.position());
+ EXPECT_EQ(pointer_touch_target->states(0), WebTouchPoint::StatePressed);
+ EXPECT_EQ(pointer_touch_target->indexes(1), params1.index());
+ EXPECT_EQ(pointer_touch_target->positions(1), params1.position());
+ EXPECT_EQ(pointer_touch_target->states(1), WebTouchPoint::StatePressed);
+
+ action_param_list.clear();
+ params0.set_pointer_action_type(
+ SyntheticPointerActionParams::PointerActionType::RELEASE);
+ params1.set_pointer_action_type(
+ SyntheticPointerActionParams::PointerActionType::MOVE);
+ params1.set_position(gfx::PointF(183, 239));
+ action_param_list.push_back(params0);
+ action_param_list.push_back(params1);
+ gesture.reset(new SyntheticPointerAction(
+ action_param_list, synthetic_pointer.get(), &index_map));
+ QueueSyntheticGesture(std::move(gesture));
+ FlushInputUntilComplete();
+
+ ASSERT_EQ(pointer_touch_target->touch_length(), 2u);
+ EXPECT_EQ(pointer_touch_target->indexes(0), params0.index());
+ EXPECT_EQ(pointer_touch_target->states(0), WebTouchPoint::StateReleased);
+ EXPECT_EQ(pointer_touch_target->indexes(1), params1.index());
+ EXPECT_EQ(pointer_touch_target->positions(1), params1.position());
+ EXPECT_EQ(pointer_touch_target->states(1), WebTouchPoint::StateMoved);
+
+ action_param_list.clear();
+ params1.set_pointer_action_type(
+ SyntheticPointerActionParams::PointerActionType::RELEASE);
+ action_param_list.push_back(params1);
+ gesture.reset(new SyntheticPointerAction(
+ action_param_list, synthetic_pointer.get(), &index_map));
+ QueueSyntheticGesture(std::move(gesture));
+ FlushInputUntilComplete();
+
+ ASSERT_EQ(pointer_touch_target->touch_length(), 2u);
+ EXPECT_EQ(pointer_touch_target->indexes(1), params1.index());
+ EXPECT_EQ(pointer_touch_target->states(1), WebTouchPoint::StateReleased);
+}
+
+TEST_F(SyntheticGestureControllerTest, PointerMouseAction) {
+ CreateControllerAndTarget<MockSyntheticPointerMouseActionTarget>();
+ std::unique_ptr<SyntheticPointer> synthetic_pointer =
+ SyntheticPointer::Create(SyntheticGestureParams::MOUSE_INPUT);
+ SyntheticPointerAction::IndexMap index_map;
+ std::fill(index_map.begin(), index_map.end(), -1);
+ std::vector<SyntheticPointerActionParams> action_param_list;
+
+ SyntheticPointerActionParams params = SyntheticPointerActionParams(
+ SyntheticGestureParams::MOUSE_INPUT,
+ SyntheticPointerActionParams::PointerActionType::MOVE);
+ params.set_index(0);
+ params.set_position(gfx::PointF(54, 89));
+ action_param_list.push_back(params);
+ std::unique_ptr<SyntheticPointerAction> gesture(new SyntheticPointerAction(
+ action_param_list, synthetic_pointer.get(), &index_map));
+ QueueSyntheticGesture(std::move(gesture));
+ FlushInputUntilComplete();
+
+ MockSyntheticPointerMouseActionTarget* pointer_mouse_target =
+ static_cast<MockSyntheticPointerMouseActionTarget*>(target_);
+ EXPECT_EQ(pointer_mouse_target->type(), WebInputEvent::MouseMove);
+ EXPECT_EQ(pointer_mouse_target->position(), params.position());
+ EXPECT_EQ(pointer_mouse_target->clickCount(), 0);
+ EXPECT_EQ(pointer_mouse_target->button(), WebMouseEvent::Button::NoButton);
+
+ action_param_list.clear();
+ params.set_pointer_action_type(
+ SyntheticPointerActionParams::PointerActionType::PRESS);
+ params.set_position(gfx::PointF(183, 239));
+ action_param_list.push_back(params);
+ gesture.reset(new SyntheticPointerAction(
+ action_param_list, synthetic_pointer.get(), &index_map));
+ QueueSyntheticGesture(std::move(gesture));
+ FlushInputUntilComplete();
+
+ EXPECT_EQ(pointer_mouse_target->type(), WebInputEvent::MouseDown);
+ EXPECT_EQ(pointer_mouse_target->position(), params.position());
+ EXPECT_EQ(pointer_mouse_target->clickCount(), 1);
+ EXPECT_EQ(pointer_mouse_target->button(), WebMouseEvent::Button::Left);
+
+ action_param_list.clear();
+ params.set_pointer_action_type(
+ SyntheticPointerActionParams::PointerActionType::MOVE);
+ params.set_position(gfx::PointF(254, 279));
+ action_param_list.push_back(params);
+ gesture.reset(new SyntheticPointerAction(
+ action_param_list, synthetic_pointer.get(), &index_map));
+ QueueSyntheticGesture(std::move(gesture));
+ FlushInputUntilComplete();
+
+ EXPECT_EQ(pointer_mouse_target->type(), WebInputEvent::MouseMove);
+ EXPECT_EQ(pointer_mouse_target->position(), params.position());
+ EXPECT_EQ(pointer_mouse_target->clickCount(), 1);
+ EXPECT_EQ(pointer_mouse_target->button(), WebMouseEvent::Button::Left);
+
+ action_param_list.clear();
+ params.set_pointer_action_type(
+ SyntheticPointerActionParams::PointerActionType::RELEASE);
+ action_param_list.push_back(params);
+ gesture.reset(new SyntheticPointerAction(
+ action_param_list, synthetic_pointer.get(), &index_map));
+ QueueSyntheticGesture(std::move(gesture));
+ FlushInputUntilComplete();
+
+ EXPECT_EQ(pointer_mouse_target->type(), WebInputEvent::MouseUp);
+ EXPECT_EQ(pointer_mouse_target->clickCount(), 1);
+ EXPECT_EQ(pointer_mouse_target->button(), WebMouseEvent::Button::Left);
+}
+
} // namespace
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698