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

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

Issue 2097273002: [Chromoting] Add InputMonitor and InputState (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Resolve review comments Created 4 years, 5 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/java/src/org/chromium/chromoting/InputState.java
diff --git a/remoting/android/java/src/org/chromium/chromoting/InputState.java b/remoting/android/java/src/org/chromium/chromoting/InputState.java
new file mode 100644
index 0000000000000000000000000000000000000000..1356c76e125f5a946fb1571f99950131c2331ca7
--- /dev/null
+++ b/remoting/android/java/src/org/chromium/chromoting/InputState.java
@@ -0,0 +1,99 @@
+// 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;
+
+/**
+ * A state machine to indicate user input actions. It stores the start action (tap or long tap),
+ * finger count, detected action, etc.
+ */
+public class InputState {
+ /**
+ * A settable {@link InputState}.
+ */
+ public static final class Settable extends InputState {
+ public void setFingerCount(int fingerCount) {
+ mFingerCount = fingerCount;
+ if (mFingerCount == 0) {
+ mStartAction = StartAction.UNDEFINED;
+ mDetectedAction = DetectedAction.UNDEFINED;
+ }
+ }
+
+ public void setStartAction(StartAction startAction) {
+ Preconditions.isTrue(startAction != StartAction.UNDEFINED);
+ mStartAction = startAction;
+ }
+
+ public void setDetectedAction(DetectedAction detectedAction) {
+ Preconditions.isTrue(detectedAction != DetectedAction.UNDEFINED);
+ mDetectedAction = detectedAction;
+ }
+ }
+
+ public enum StartAction {
+ UNDEFINED,
+ // The action started from a long press. Note, a tap won't need to impact InputState.
+ LONG_PRESS,
+ }
+
+ public enum DetectedAction {
+ UNDEFINED,
+ SCROLL,
+ SCROLL_FLING,
+ // AFTER_SCROLL_FLING is a fake action to indicate the state after a scroll fling has been
+ // performed.
+ AFTER_SCROLL_FLING,
+ FLING,
+ SCALE,
+ SWIPE,
+ MOVE,
+ SCROLL_EDGE,
+ }
+
+ protected int mFingerCount;
+ protected StartAction mStartAction;
+ protected DetectedAction mDetectedAction;
+
+ public InputState() {
+ mStartAction = StartAction.UNDEFINED;
+ mFingerCount = 0;
+ mDetectedAction = DetectedAction.UNDEFINED;
+ }
+
+ public int getFingerCount() {
+ return mFingerCount;
+ }
+
+ public StartAction getStartAction() {
+ return mStartAction;
+ }
+
+ public DetectedAction getDetectedAction() {
+ return mDetectedAction;
+ }
+
+ public boolean shouldSuppressCursorMovement() {
+ return mDetectedAction == DetectedAction.SWIPE
+ || mDetectedAction == DetectedAction.SCROLL_FLING
+ || mDetectedAction == DetectedAction.SCROLL_EDGE;
+ }
+
+ public boolean shouldSuppressFling() {
+ return mDetectedAction == DetectedAction.SWIPE
+ || mStartAction == StartAction.LONG_PRESS;
+ }
+
+ public boolean isScrollFling() {
+ return mDetectedAction == DetectedAction.SCROLL_FLING;
+ }
+
+ public boolean swipeCompleted() {
+ return mDetectedAction == DetectedAction.SWIPE;
+ }
+
+ public boolean isDragging() {
+ return mStartAction == StartAction.LONG_PRESS;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698