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

Unified Diff: content/common/input/touch_event_stream_validator_unittest.cc

Issue 537733003: [Android] Enable input event stream validation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Code review and fix tests Created 6 years, 3 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
« no previous file with comments | « content/common/input/touch_event_stream_validator.cc ('k') | content/content_tests.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/common/input/touch_event_stream_validator_unittest.cc
diff --git a/content/common/input/touch_event_stream_validator_unittest.cc b/content/common/input/touch_event_stream_validator_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..5e3b767fb1d09364de01342fc5736bc0e349ed71
--- /dev/null
+++ b/content/common/input/touch_event_stream_validator_unittest.cc
@@ -0,0 +1,173 @@
+// Copyright 2014 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/common/input/touch_event_stream_validator.h"
+
+#include "content/common/input/synthetic_web_input_event_builders.h"
+#include "content/common/input/web_touch_event_traits.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+using blink::WebInputEvent;
+using blink::WebTouchEvent;
+using blink::WebTouchPoint;
+
+namespace content {
+
+TEST(TouchEventStreamValidator, ValidTouchStream) {
+ TouchEventStreamValidator validator;
+ SyntheticWebTouchEvent event;
+ std::string error_msg;
+
+ event.PressPoint(0, 1);
+ EXPECT_TRUE(validator.Validate(event, &error_msg));
+ EXPECT_TRUE(error_msg.empty());
+ event.ResetPoints();
+
+ event.PressPoint(1, 0);
+ EXPECT_TRUE(validator.Validate(event, &error_msg));
+ EXPECT_TRUE(error_msg.empty());
+ event.ResetPoints();
+
+ event.MovePoint(1, 1, 1);
+ EXPECT_TRUE(validator.Validate(event, &error_msg));
+ EXPECT_TRUE(error_msg.empty());
+ event.ResetPoints();
+
+ event.ReleasePoint(1);
+ EXPECT_TRUE(validator.Validate(event, &error_msg));
+ EXPECT_TRUE(error_msg.empty());
+ event.ResetPoints();
+
+ event.MovePoint(0, -1, 0);
+ EXPECT_TRUE(validator.Validate(event, &error_msg));
+ EXPECT_TRUE(error_msg.empty());
+ event.ResetPoints();
+
+ event.CancelPoint(0);
+ EXPECT_TRUE(validator.Validate(event, &error_msg));
+ EXPECT_TRUE(error_msg.empty());
+ event.ResetPoints();
+
+ event.PressPoint(-1, -1);
+ EXPECT_TRUE(validator.Validate(event, &error_msg));
+ EXPECT_TRUE(error_msg.empty());
+}
+
+TEST(TouchEventStreamValidator, ResetOnNewTouchStream) {
+ TouchEventStreamValidator validator;
+ SyntheticWebTouchEvent event;
+ std::string error_msg;
+
+ event.PressPoint(0, 1);
+ EXPECT_TRUE(validator.Validate(event, &error_msg));
+ EXPECT_TRUE(error_msg.empty());
+ event.ResetPoints();
+
+ event.CancelPoint(0);
+ event.ResetPoints();
+ event.PressPoint(1, 0);
+ EXPECT_TRUE(validator.Validate(event, &error_msg));
+ EXPECT_TRUE(error_msg.empty());
+}
+
+TEST(TouchEventStreamValidator, MissedTouchStart) {
+ TouchEventStreamValidator validator;
+ SyntheticWebTouchEvent event;
+ std::string error_msg;
+
+ event.PressPoint(0, 1);
+ EXPECT_TRUE(validator.Validate(event, &error_msg));
+ EXPECT_TRUE(error_msg.empty());
+
+ event.PressPoint(1, 0);
+ event.ResetPoints();
+ event.PressPoint(1, 1);
+ EXPECT_FALSE(validator.Validate(event, &error_msg));
+ EXPECT_FALSE(error_msg.empty());
+}
+
+TEST(TouchEventStreamValidator, MissedTouchEnd) {
+ TouchEventStreamValidator validator;
+ SyntheticWebTouchEvent event;
+ std::string error_msg;
+
+ event.PressPoint(0, 1);
+ EXPECT_TRUE(validator.Validate(event, &error_msg));
+ EXPECT_TRUE(error_msg.empty());
+ event.ResetPoints();
+
+ event.PressPoint(0, 1);
+ EXPECT_TRUE(validator.Validate(event, &error_msg));
+ EXPECT_TRUE(error_msg.empty());
+ event.ResetPoints();
+
+ event.ReleasePoint(1);
+ event.ResetPoints();
+ event.PressPoint(1, 1);
+ EXPECT_FALSE(validator.Validate(event, &error_msg));
+ EXPECT_FALSE(error_msg.empty());
+}
+
+TEST(TouchEventStreamValidator, EmptyEvent) {
+ TouchEventStreamValidator validator;
+ WebTouchEvent event;
+ std::string error_msg;
+
+ EXPECT_FALSE(validator.Validate(event, &error_msg));
+ EXPECT_FALSE(error_msg.empty());
+}
+
+TEST(TouchEventStreamValidator, InvalidEventType) {
+ TouchEventStreamValidator validator;
+ WebTouchEvent event;
+ std::string error_msg;
+
+ event.type = WebInputEvent::GestureScrollBegin;
+ event.touchesLength = 1;
+ event.touches[0].state = WebTouchPoint::StatePressed;
+
+ EXPECT_FALSE(validator.Validate(event, &error_msg));
+ EXPECT_FALSE(error_msg.empty());
+}
+
+TEST(TouchEventStreamValidator, InvalidPointStates) {
+ TouchEventStreamValidator validator;
+ std::string error_msg;
+
+ WebInputEvent::Type kTouchTypes[4] = {
+ WebInputEvent::TouchStart, WebInputEvent::TouchMove,
+ WebInputEvent::TouchEnd, WebInputEvent::TouchCancel,
+ };
+
+ WebTouchPoint::State kValidTouchPointStatesForType[4] = {
+ WebTouchPoint::StatePressed, WebTouchPoint::StateMoved,
+ WebTouchPoint::StateReleased, WebTouchPoint::StateCancelled,
+ };
+
+ SyntheticWebTouchEvent start;
+ start.PressPoint(0, 0);
+ for (size_t i = 0; i < 4; ++i) {
+ // Always start with a touchstart to reset the stream validation.
+ EXPECT_TRUE(validator.Validate(start, &error_msg));
+ EXPECT_TRUE(error_msg.empty());
+
+ WebTouchEvent event;
+ event.touchesLength = 1;
+ event.type = kTouchTypes[i];
+ for (size_t j = WebTouchPoint::StateUndefined;
+ j <= WebTouchPoint::StateCancelled;
+ ++j) {
+ event.touches[0].state = static_cast<WebTouchPoint::State>(j);
+ if (event.touches[0].state == kValidTouchPointStatesForType[i]) {
+ EXPECT_TRUE(validator.Validate(event, &error_msg));
+ EXPECT_TRUE(error_msg.empty());
+ } else {
+ EXPECT_FALSE(validator.Validate(event, &error_msg));
+ EXPECT_FALSE(error_msg.empty());
+ }
+ }
+ }
+}
+
+} // namespace content
« no previous file with comments | « content/common/input/touch_event_stream_validator.cc ('k') | content/content_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698