Index: chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchInternalStateControllerWrapper.java |
diff --git a/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchInternalStateControllerWrapper.java b/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchInternalStateControllerWrapper.java |
new file mode 100644 |
index 0000000000000000000000000000000000000000..fb26d2c9937d0e66b34001d92f40f3decf254c57 |
--- /dev/null |
+++ b/chrome/android/javatests/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchInternalStateControllerWrapper.java |
@@ -0,0 +1,77 @@ |
+// Copyright 2017 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.chrome.browser.contextualsearch; |
+ |
+import org.chromium.base.CollectionUtil; |
+ |
+import java.util.ArrayList; |
+import java.util.List; |
+ |
+/** |
+ * Wraps the {@link ContextualSearchInternalStateController} and adds some simple instrumentation |
+ * for testing. |
+ */ |
+class ContextualSearchInternalStateControllerWrapper |
+ extends ContextualSearchInternalStateController { |
+ static final List<InternalState> EXPECTED_TAP_RESOLVE_SEQUENCE = |
+ CollectionUtil.newArrayList(InternalState.SELECTION_CLEARED_RECOGNIZED, |
+ InternalState.TAP_RECOGNIZED, InternalState.GATHERING_SURROUNDINGS, |
+ InternalState.DECIDING_SUPPRESSION, InternalState.START_SHOWING_TAP_UI, |
+ InternalState.SHOW_FULL_TAP_UI, InternalState.RESOLVING); |
+ static final List<InternalState> EXPECTED_LONGPRESS_SEQUENCE = |
+ CollectionUtil.newArrayList(InternalState.LONG_PRESS_RECOGNIZED, |
+ InternalState.GATHERING_SURROUNDINGS, InternalState.SHOWING_LONGPRESS_SEARCH); |
+ |
+ private List<InternalState> mStartedStates = new ArrayList<InternalState>(); |
+ private List<InternalState> mFinishedStates = new ArrayList<InternalState>(); |
+ |
+ /** |
+ * Creates a wrapper around a {@link ContextualSearchInternalStateController} with the given |
+ * parameters. |
+ * @param policy The {@link ContextualSearchPolicy} to construct the controller with. |
+ * @param handler The {@link ContextualSearchInternalStateHandler} to use for state transitions. |
+ */ |
+ private ContextualSearchInternalStateControllerWrapper( |
+ ContextualSearchPolicy policy, ContextualSearchInternalStateHandler handler) { |
+ super(policy, handler); |
+ } |
+ |
+ @Override |
+ void notifyStartingWorkOn(InternalState state) { |
+ mStartedStates.add(state); |
+ super.notifyStartingWorkOn(state); |
+ } |
+ |
+ @Override |
+ void notifyFinishedWorkOn(InternalState state) { |
+ mFinishedStates.add(state); |
+ super.notifyFinishedWorkOn(state); |
+ } |
+ |
+ /** |
+ * @return A {@link List} of all states that were started. |
+ */ |
+ List<InternalState> getStartedStates() { |
+ return mStartedStates; |
+ } |
+ |
+ /** |
+ * @return A {@link List} of all states that were finished. |
+ */ |
+ List<InternalState> getFinishedStates() { |
+ return mFinishedStates; |
+ } |
+ |
+ /** |
+ * @return A wrapper for a new {@link ContextualSearchInternalStateHandler} created using |
+ * parameters from the given manager. |
+ */ |
+ static ContextualSearchInternalStateControllerWrapper makeNewInternalStateControllerWrapper( |
+ ContextualSearchManager manager) { |
+ return new ContextualSearchInternalStateControllerWrapper( |
+ manager.getContextualSearchPolicy(), |
+ manager.getContextualSearchInternalStateHandler()); |
+ } |
+} |