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 {