| Index: chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchSelectionController.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchSelectionController.java b/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchSelectionController.java
|
| index 6060aeaf2342d3a2eb637af0ee899ab2659f253e..eabeb5537e33184e653ff71968e9f3a185725401 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchSelectionController.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/contextualsearch/ContextualSearchSelectionController.java
|
| @@ -46,6 +46,8 @@ public class ContextualSearchSelectionController {
|
| // Max selection length must be limited or the entire request URL can go past the 2K limit.
|
| private static final int MAX_SELECTION_LENGTH = 100;
|
|
|
| + private static final int INVALID_DURATION = -1;
|
| +
|
| private final ChromeActivity mActivity;
|
| private final ContextualSearchSelectionHandler mHandler;
|
| private final float mPxToDp;
|
| @@ -71,6 +73,9 @@ public class ContextualSearchSelectionController {
|
| // When the last tap gesture happened.
|
| private long mTapTimeNanoseconds;
|
|
|
| + // The duration of the last tap gesture in milliseconds, or 0 if not set.
|
| + private int mTapDurationMs = INVALID_DURATION;
|
| +
|
| private class ContextualSearchGestureStateListener extends GestureStateListener {
|
| @Override
|
| public void onScrollStarted(int scrollOffsetY, int scrollExtentY) {
|
| @@ -89,13 +94,9 @@ public class ContextualSearchSelectionController {
|
| mLastScrollTimeNs = System.nanoTime();
|
| }
|
|
|
| - // TODO(donnd): Remove this once we get notification of the selection changing
|
| - // after a tap-select gets a subsequent tap nearby. Currently there's no
|
| - // notification in this case.
|
| - // See crbug.com/444114.
|
| @Override
|
| - public void onSingleTap(boolean consumed) {
|
| - // TODO(donnd): remove completely!
|
| + public void onTouchDown() {
|
| + mTapTimeNanoseconds = System.nanoTime();
|
| }
|
| }
|
|
|
| @@ -292,6 +293,7 @@ public class ContextualSearchSelectionController {
|
| mLastTapState = null;
|
| mLastScrollTimeNs = 0;
|
| mTapTimeNanoseconds = 0;
|
| + mTapDurationMs = INVALID_DURATION;
|
| mDidExpandSelection = false;
|
| }
|
|
|
| @@ -322,9 +324,11 @@ public class ContextualSearchSelectionController {
|
| mWasTapGestureDetected = false;
|
| // TODO(donnd): refactor to avoid needing a new handler API method as suggested by Pedro.
|
| if (mSelectionType != SelectionType.LONG_PRESS) {
|
| + assert mTapTimeNanoseconds != 0 : "mTapTimeNanoseconds not set!";
|
| + mTapDurationMs = (int) ((System.nanoTime() - mTapTimeNanoseconds)
|
| + / ContextualSearchHeuristic.NANOSECONDS_IN_A_MILLISECOND);
|
| mWasTapGestureDetected = true;
|
| mSelectionType = SelectionType.TAP;
|
| - mTapTimeNanoseconds = System.nanoTime();
|
| mX = x;
|
| mY = y;
|
| mHandler.handleValidTap();
|
| @@ -353,8 +357,9 @@ public class ContextualSearchSelectionController {
|
| ChromePreferenceManager prefs = ChromePreferenceManager.getInstance();
|
| int adjustedTapsSinceOpen = prefs.getContextualSearchTapCount()
|
| - prefs.getContextualSearchTapQuickAnswerCount();
|
| - TapSuppressionHeuristics tapHeuristics = new TapSuppressionHeuristics(
|
| - this, mLastTapState, x, y, adjustedTapsSinceOpen, contextualSearchContext);
|
| + assert mTapDurationMs != INVALID_DURATION : "mTapDurationMs not set!";
|
| + TapSuppressionHeuristics tapHeuristics = new TapSuppressionHeuristics(this, mLastTapState,
|
| + x, y, adjustedTapsSinceOpen, contextualSearchContext, mTapDurationMs);
|
| // TODO(donnd): Move to be called when the panel closes to work with states that change.
|
| tapHeuristics.logConditionState();
|
|
|
|
|