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

Unified Diff: remoting/android/javatests/src/org/chromium/chromoting/TouchEventBuilder.java

Issue 2066683003: [Chromoting] Add InputInjector and InputInjectorWrapper for easy unittesting (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Resolve review comments Created 4 years, 6 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/android/javatests/src/org/chromium/chromoting/TouchEventBuilder.java
diff --git a/remoting/android/javatests/src/org/chromium/chromoting/TouchEventBuilder.java b/remoting/android/javatests/src/org/chromium/chromoting/TouchEventBuilder.java
new file mode 100644
index 0000000000000000000000000000000000000000..186c5ef655689c6ffb3316acc18a506b8bf636dc
--- /dev/null
+++ b/remoting/android/javatests/src/org/chromium/chromoting/TouchEventBuilder.java
@@ -0,0 +1,96 @@
+// Copyright 2016 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.
+
+package org.chromium.chromoting;
+
+import org.chromium.chromoting.jni.TouchEventData;
+
+import java.util.ArrayList;
+
+/** A helper class to build a {@link MockInputStub.TouchEvent}. */
+public final class TouchEventBuilder {
+ private final ArrayList<TouchEventData> mData;
+ private TouchEventData.EventType mEventType;
+
+ // Following fields are the of the pending TouchEventData. They will be added to {@link #data}
+ // by calling appendData().
+ private int mId;
+ private float mX;
+ private float mY;
+ private float mRadiusX;
+ private float mRadiusY;
+ private float mAngleInRadians;
+ private float mPressure;
+
+ public TouchEventBuilder() {
+ mData = new ArrayList<>();
+ clear();
+ }
+
+ public TouchEventBuilder withEventType(TouchEventData.EventType eventType) {
+ mEventType = eventType;
+ return this;
+ }
+
+ public TouchEventBuilder withId(int id) {
+ mId = id;
+ return this;
+ }
+
+ public TouchEventBuilder withX(float x) {
+ mX = x;
+ return this;
+ }
+
+ public TouchEventBuilder withY(float y) {
+ mY = y;
+ return this;
+ }
+
+ public TouchEventBuilder withRadiusX(float radiusX) {
+ mRadiusX = radiusX;
+ return this;
+ }
+
+ public TouchEventBuilder withRadiusY(float radiusY) {
+ mRadiusY = radiusY;
+ return this;
+ }
+
+ public TouchEventBuilder withAngleInRadians(float angleInRadians) {
+ mAngleInRadians = angleInRadians;
+ return this;
+ }
+
+ public TouchEventBuilder withPressure(float pressure) {
+ mPressure = pressure;
+ return this;
+ }
+
+ public TouchEventBuilder append() {
+ mData.add(new TouchEventData(mId, mX, mY, mRadiusX, mRadiusY, mAngleInRadians, mPressure));
+ resetPending();
+ return this;
+ }
+
+ public MockInputStub.TouchEvent build() {
+ return new MockInputStub.TouchEvent(mEventType, mData.toArray(new TouchEventData[] {}));
+ }
+
+ private void clear() {
+ mEventType = TouchEventData.EventType.TOUCH_EVENT_UNKNOWN;
+ mData.clear();
+ resetPending();
+ }
+
+ private void resetPending() {
+ mId = MockInputStub.TouchEvent.INVALID_ID;
+ mX = MockInputStub.TouchEvent.INVALID_POSITION;
+ mY = MockInputStub.TouchEvent.INVALID_POSITION;
+ mRadiusX = MockInputStub.TouchEvent.INVALID_POSITION;
+ mRadiusY = MockInputStub.TouchEvent.INVALID_POSITION;
+ mAngleInRadians = MockInputStub.TouchEvent.INVALID_RADIANS;
+ mPressure = MockInputStub.TouchEvent.INVALID_POSITION;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698