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

Unified Diff: remoting/protocol/input_event_tracker_unittest.cc

Issue 799233004: Add touch events to the protocol, the stub layer, and to the client plugin. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add more comments to event proto Created 5 years, 11 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: remoting/protocol/input_event_tracker_unittest.cc
diff --git a/remoting/protocol/input_event_tracker_unittest.cc b/remoting/protocol/input_event_tracker_unittest.cc
index 31a71082b2004a6b435e31b0e413c01c591bcf45..a60e8e8860bfaef0c9cd2b37a11d4fa5ae36026b 100644
--- a/remoting/protocol/input_event_tracker_unittest.cc
+++ b/remoting/protocol/input_event_tracker_unittest.cc
@@ -44,6 +44,17 @@ MATCHER_P4(EqualsMouseEvent, x, y, button, down, "") {
arg.button_down() == down;
}
+MATCHER_P2(TouchPointIdsAndTypeEqual, ids, type, "") {
+ if (arg.event_type() != type)
+ return false;
+
+ std::set<uint32> touch_ids;
+ for (const TouchEventPoint& point : arg.touch_points()) {
+ touch_ids.insert(point.id());
+ }
+ return touch_ids == ids;
+}
+
static KeyEvent NewUsbEvent(uint32 usb_keycode,
bool pressed) {
KeyEvent event;
@@ -70,8 +81,13 @@ static MouseEvent NewMouseEvent(int x, int y,
return event;
}
+void AddTouchPoint(uint32 id, TouchEvent* event) {
+ TouchEventPoint* p = event->add_touch_points();
+ p->set_id(id);
}
+} // namespace
+
// Verify that keys that were pressed and released aren't re-released.
TEST(InputEventTrackerTest, NothingToRelease) {
MockInputStub mock_stub;
@@ -239,5 +255,131 @@ TEST(InputEventTrackerTest, InvalidEventsNotTracked) {
input_tracker.ReleaseAll();
}
+// All touch points added with multiple touch events should be released as a
+// cancel event.
+TEST(InputEventTrackerTest, ReleaseAllTouchPoints) {
+ MockInputStub mock_stub;
+ InputEventTracker input_tracker(&mock_stub);
+ ExpectationSet injects;
+
+ std::set<uint32> expected_ids1;
+ expected_ids1.insert(1);
+ expected_ids1.insert(2);
+ std::set<uint32> expected_ids2;
+ expected_ids2.insert(3);
+ expected_ids2.insert(5);
+ expected_ids2.insert(8);
+
+ {
+ InSequence s;
+ injects += EXPECT_CALL(
+ mock_stub, InjectTouchEvent(TouchPointIdsAndTypeEqual(
+ expected_ids1, TouchEvent::TOUCH_POINT_START)));
+ injects += EXPECT_CALL(
+ mock_stub, InjectTouchEvent(TouchPointIdsAndTypeEqual(
+ expected_ids2, TouchEvent::TOUCH_POINT_START)));
+ }
Wez 2015/02/05 02:09:07 nit: Blank line between this and the next block
Rintaro Kuroiwa 2015/02/06 23:35:02 Done.
+ std::set<uint32> all_touch_point_ids;
+ all_touch_point_ids.insert(expected_ids1.begin(), expected_ids1.end());
+ all_touch_point_ids.insert(expected_ids2.begin(), expected_ids2.end());
+ EXPECT_CALL(mock_stub,
+ InjectTouchEvent(TouchPointIdsAndTypeEqual(
+ all_touch_point_ids, TouchEvent::TOUCH_POINT_CANCEL)))
+ .After(injects);
Wez 2015/02/05 02:09:07 Why is this not just in the sequence |s|?
Rintaro Kuroiwa 2015/02/06 23:35:02 This test works with InSequence. Removed Expecatat
+
+ TouchEvent start_event1;
+ start_event1.set_event_type(TouchEvent::TOUCH_POINT_START);
+ AddTouchPoint(1, &start_event1);
+ AddTouchPoint(2, &start_event1);
+ input_tracker.InjectTouchEvent(start_event1);
+
+ TouchEvent start_event2;
+ start_event2.set_event_type(TouchEvent::TOUCH_POINT_START);
+ AddTouchPoint(3, &start_event2);
+ AddTouchPoint(5, &start_event2);
+ AddTouchPoint(8, &start_event2);
+ input_tracker.InjectTouchEvent(start_event2);
+
+ input_tracker.ReleaseAll();
+}
+
+// Add some touch points and remove only a subset of them. ReleaseAll() should
+// cancel all the remaining touch points.
+TEST(InputEventTrackerTest, ReleaseAllRemainingTouchPoints) {
+ MockInputStub mock_stub;
+ InputEventTracker input_tracker(&mock_stub);
+ ExpectationSet injects;
+
+ std::set<uint32> start_expected_ids;
+ start_expected_ids.insert(1);
+ start_expected_ids.insert(2);
+ std::set<uint32> end_expected_ids;
+ end_expected_ids.insert(1);
+
+ {
+ InSequence s;
+ injects += EXPECT_CALL(
+ mock_stub,
+ InjectTouchEvent(TouchPointIdsAndTypeEqual(
+ start_expected_ids, TouchEvent::TOUCH_POINT_START)));
+ injects += EXPECT_CALL(
+ mock_stub,
+ InjectTouchEvent(TouchPointIdsAndTypeEqual(
+ end_expected_ids, TouchEvent::TOUCH_POINT_END)));
+ }
Wez 2015/02/05 02:09:07 nit: Blank line before next logical block.
Rintaro Kuroiwa 2015/02/06 23:35:02 Done.
+ std::set<uint32> all_remaining_touch_point_ids;
+ all_remaining_touch_point_ids.insert(2);
+ EXPECT_CALL(mock_stub, InjectTouchEvent(TouchPointIdsAndTypeEqual(
+ all_remaining_touch_point_ids,
+ TouchEvent::TOUCH_POINT_CANCEL)))
+ .After(injects);
Wez 2015/02/05 02:09:07 Why is this not just in the sequence |s|?
Rintaro Kuroiwa 2015/02/06 23:35:02 This test works with InSequence. Removed Expecatat
+
+ TouchEvent start_event;
+ start_event.set_event_type(TouchEvent::TOUCH_POINT_START);
+ AddTouchPoint(1, &start_event);
+ AddTouchPoint(2, &start_event);
+ input_tracker.InjectTouchEvent(start_event);
+
+ TouchEvent end_event;
+ end_event.set_event_type(TouchEvent::TOUCH_POINT_END);
+ AddTouchPoint(1, &end_event);
+ input_tracker.InjectTouchEvent(end_event);
+
+ input_tracker.ReleaseAll();
+}
+
+// All touch points are released before ReleaseAll() is called.
Wez 2015/02/05 02:09:08 Do you mean "test that no touch events are generat
Rintaro Kuroiwa 2015/02/06 23:35:02 Yes, that's what I meant :) True, the test above
+TEST(InputEventTrackerTest, NoTouchPointsForReleaseAll) {
+ ::testing::StrictMock<MockInputStub> mock_stub;
+ InputEventTracker input_tracker(&mock_stub);
+
+ std::set<uint32> expected_ids;
+ expected_ids.insert(13);
+ expected_ids.insert(59);
+ {
+ InSequence s;
+ EXPECT_CALL(mock_stub,
+ InjectTouchEvent(TouchPointIdsAndTypeEqual(
+ expected_ids, TouchEvent::TOUCH_POINT_START)));
+ EXPECT_CALL(mock_stub,
+ InjectTouchEvent(TouchPointIdsAndTypeEqual(
+ expected_ids, TouchEvent::TOUCH_POINT_END)));
+ }
+
+ TouchEvent start_touch_event;
+ start_touch_event.set_event_type(TouchEvent::TOUCH_POINT_START);
+ AddTouchPoint(13, &start_touch_event);
+ AddTouchPoint(59, &start_touch_event);
+ input_tracker.InjectTouchEvent(start_touch_event);
+
+ TouchEvent end_touch_event;
+ end_touch_event.set_event_type(TouchEvent::TOUCH_POINT_END);
+ AddTouchPoint(13, &end_touch_event);
+ AddTouchPoint(59, &end_touch_event);
+ input_tracker.InjectTouchEvent(end_touch_event);
+
+ input_tracker.ReleaseAll();
+}
+
} // namespace protocol
} // namespace remoting

Powered by Google App Engine
This is Rietveld 408576698