Reflect the Omnibox editing session state correctly.
This change fixes measurement of duration the user spent typing in
the Omnibox, that regressed in https://crrev.com/c/6187717.
(cherry picked from commit 393ed7db1c37ff0006d6606f3a7ba5cb1e8b2f7a)
Change-Id: Iad274eb90b12daaf5aafbfe8900f5496e3e4b304
Fixed: b:408493169, 409032975
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6434623
Reviewed-by: Patrick Noland <pnoland@chromium.org>
Commit-Queue: Tomasz Wiszkowski <ender@google.com>
Cr-Original-Commit-Position: refs/heads/main@{#1443529}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6442399
Auto-Submit: Tomasz Wiszkowski <ender@google.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Cr-Commit-Position: refs/branch-heads/7103@{#492}
Cr-Branched-From: e09430c64983fc906f37a9f7e6806275c9b67b86-refs/heads/main@{#1440670}
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java
index b201915..391b3ee 100644
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteMediator.java
@@ -131,6 +131,8 @@
// Suggestions are refreshed several times per keystroke.
private @Nullable Long mFirstSuggestionListModelCreatedTime;
+ private @Nullable Boolean mOmniboxInZeroPrefixState;
+
private @RefineActionUsage int mRefineActionUsage = RefineActionUsage.NOT_USED;
// The timestamp (using SystemClock.elapsedRealtime()) at the point when the user started
@@ -437,6 +439,7 @@
mNumPrefetchesStartedInOmniboxSession = 0;
mLastPrefetchStartedSuggestion = Optional.empty();
+ mOmniboxInZeroPrefixState = null;
mNewOmniboxEditSessionTimestamp = -1;
// Prevent any upcoming omnibox suggestions from showing once a URL is loaded (and as
// a consequence the omnibox is unfocused).
@@ -840,14 +843,24 @@
mListPropertyModel.set(SuggestionListProperties.LIST_IS_FINAL, false);
mAutocompleteInput.setUserText(textWithoutAutocomplete);
+ boolean isInZeroPrefixContext = mAutocompleteInput.isInZeroPrefixContext();
mIgnoreOmniboxItemSelection = true;
cancelAutocompleteRequests();
- mAutocomplete.ifPresent(a -> a.resetSession());
- mNewOmniboxEditSessionTimestamp = SystemClock.elapsedRealtime();
+ // The user recently focused the Omnibox, began typing, or cleared the Omnibox.
+ if (mOmniboxInZeroPrefixState == null
+ || mOmniboxInZeroPrefixState != isInZeroPrefixContext) {
+ mOmniboxInZeroPrefixState = isInZeroPrefixContext;
+ if (!isInZeroPrefixContext) {
+ // User started typing.
+ mAutocomplete.ifPresent(a -> a.resetSession());
+ mNewOmniboxEditSessionTimestamp = SystemClock.elapsedRealtime();
+ }
+ }
+
stopAutocomplete(false);
- if (mAutocompleteInput.isInZeroPrefixContext() || isOnFocusContext) {
+ if (isInZeroPrefixContext || isOnFocusContext) {
clearSuggestions();
startCachedZeroSuggest();
} else {