// Copyright 2014 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.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

option java_outer_classname = "OmniboxEventProtos";
option java_package = "org.chromium.components.metrics";

package metrics;

import "omnibox_input_type.proto";

// Stores information about an omnibox interaction.
// Next tag: 21
message OmniboxEventProto {
  // The timestamp for the event, in seconds.
  // This value comes from Chromium's TimeTicks::Now(), which is an abstract
  // time value that is guaranteed to always be non-decreasing (regardless of
  // Daylight Saving Time or any other changes to the system clock).
  // These numbers are only comparable within a session.  To sequence events
  // across sessions, order by the |session_id| from the
  // ChromeUserMetricsExtension message.
  optional int64 time_sec = 1;

  // The id of the originating tab for this omnibox interaction.
  // This is the current tab *unless* the user opened the target in a new tab.
  // In those cases, this is unset.  Tab ids are unique for a given session_id
  // (in the containing protocol buffer ChromeUserMetricsExtensionProto).
  optional int32 tab_id = 2;

  // The number of characters the user had typed before autocompleting.
  optional int32 typed_length = 3;

  // Whether the user deleted text immediately before selecting an omnibox
  // suggestion.  This is usually the result of pressing backspace or delete.
  optional bool just_deleted_text = 11;

  // The number of terms that the user typed in the omnibox.
  optional int32 num_typed_terms = 4;

  // The index of the item that the user selected in the omnibox popup list.
  // This corresponds the index of the |suggestion| below.
  optional int32 selected_index = 5;

  // Whether the user selected the option to switch tabs (or ignored it
  // and navigated). If true, one or more |Suggestions| will have
  // |has_tab_match| set as well, which must include the |selected_index|.
  optional bool selected_tab_match = 17;

  // DEPRECATED. Whether or not the top match was hidden in the omnibox
  // suggestions dropdown.
  optional bool DEPRECATED_is_top_result_hidden_in_dropdown = 14
      [deprecated = true];

  // Whether the omnibox popup is open.  It can be closed if, for instance,
  // the user clicks in the omnibox and hits return to reload the same page.
  // If the popup is closed, the suggestion list will contain only one item
  // and selected_index will be 0 (pointing to that single item).  Because
  // paste-and-search/paste-and-go actions ignore the current content of the
  // omnibox dropdown (if it is open) when they happen, we pretend the
  // dropdown is closed when logging these.
  optional bool is_popup_open = 15;

  // True if this is a paste-and-search or paste-and-go action.  (The codebase
  // refers to both these types as paste-and-go.)
  optional bool is_paste_and_go = 16;

  // The length of the inline autocomplete text in the omnibox.
  // The sum |typed_length| + |completed_length| gives the full length of the
  // user-visible text in the omnibox.
  // This field is only set for suggestions that are allowed to be the default
  // match and omitted otherwise.  The first suggestion is always allowed to
  // be the default match.  (This is an enforced constraint.)  Hence, if
  // |selected_index| == 0, then this field will always be set.
  optional int32 completed_length = 6;

  // The amount of time, in milliseconds, since the user first began modifying
  // the text in the omnibox.  If at some point after modifying the text, the
  // user reverts the modifications (thus seeing the current web page's URL
  // again), then writes in the omnibox again, this elapsed time should start
  // from the time of the second series of modification.
  optional int64 typing_duration_ms = 7;

  // The amount of time, in milliseconds, since the last time the default
  // (inline) match changed.  This may be longer than the time since the
  // last keystroke.  (The last keystroke may not have changed the default
  // match.)  It may also be shorter than the time since the last keystroke
  // because the default match might have come from an asynchronous
  // provider.  Regardless, it should always be less than or equal to
  // the field |typing_duration_ms|.
  optional int64 duration_since_last_default_match_update_ms = 13;

  // The type of page currently displayed when the user used the omnibox.
  enum PageClassification {
    // An invalid URL; shouldn't happen.
    INVALID_SPEC = 0;

    // chrome://newtab/.  This can be either the built-in version or a
    // replacement new tab page from an extension.  Note that when Instant
    // Extended is enabled, the new tab page will be reported as either
    // INSTANT_NTP_WITH_OMNIBOX_AS_STARTING_FOCUS or
    // INSTANT_NTP_WITH_FAKEBOX_AS_STARTING_FOCUS below,
    // unless an extension is replacing the new tab page, in which case
    // it will still be reported as NTP.
    NTP = 1;

    // about:blank.
    BLANK = 2;

    // The user's home page.  Note that if the home page is set to any
    // of the new tab page versions or to about:blank, then we'll
    // classify the page into those categories, not HOME_PAGE.
    HOME_PAGE = 3;

    // The catch-all entry of everything not included somewhere else
    // on this list.
    OTHER = 4;

    // The instant new tab page enum value was deprecated on August 2, 2013.
    OBSOLETE_INSTANT_NTP = 5;

    // The search term replacement enum value was deprecated in August 2016.
    OBSOLETE_SEARCH_RESULT_PAGE_DOING_SEARCH_TERM_REPLACEMENT = 6;

    // The new tab page in which this omnibox interaction first started
    // with the user having focus in the omnibox.
    INSTANT_NTP_WITH_OMNIBOX_AS_STARTING_FOCUS = 7;

    // The new tab page in which this omnibox interaction first started
    // with the user having focus in the fakebox.
    INSTANT_NTP_WITH_FAKEBOX_AS_STARTING_FOCUS = 8;

    // The user is on a search result page that's not doing search term
    // replacement, meaning the URL of the page should've appeared in the
    // omnibox before the user started editing it, not the search terms.
    SEARCH_RESULT_PAGE_NO_SEARCH_TERM_REPLACEMENT = 9;

    // The user is on the home screen.
    APP_HOME = 10;

    // The user is in the search app.
    APP_SEARCH = 11;

    // The user is in the maps app.
    APP_MAPS = 12;

    // This omnibox interaction started with the user tapping the search button.
    SEARCH_BUTTON_AS_STARTING_FOCUS = 13;

    // This interaction started with the user focusing or typing in the search
    // box of the ChromeOS app list (a.k.a., launcher).
    CHROMEOS_APP_LIST = 14;

    // When adding new classifications, please consider adding them in
    // chromium's chrome/browser/resources/omnibox/omnibox.html
    // so that these new options are displayed on about:omnibox.
  }
  optional PageClassification current_page_classification = 10;

  enum ModeType {
    // Unknown type (should not be reported).
    UNKNOWN_MODE = 0;
    // This user is in web mode when looking for suggestions.
    WEB_MODE = 1;
    // This user is in image mode when looking for suggestions.
    IMAGE_MODE = 2;
  }
  optional ModeType mode_type = 18;

  optional OmniboxInputType input_type = 8;

  // An enum used in multiple places below.
  enum ProviderType {
    UNKNOWN_PROVIDER = 0;  // Unknown provider (should not reach here)
    HISTORY_URL = 1;       // URLs in history, or user-typed URLs
    HISTORY_CONTENTS = 2;  // Matches for page contents of pages in history
    HISTORY_QUICK = 3;     // Matches for recently or frequently visited pages
                           // in history
    SEARCH = 4;            // Search suggestions for the default search engine
    KEYWORD = 5;           // Keyword-triggered searches
    BUILTIN = 6;           // Built-in URLs, such as chrome://version
    SHORTCUTS = 7;         // Recently selected omnibox suggestions
    EXTENSION_APPS = 8;    // DEPRECATED. Suggestions from extensions or apps
    CONTACT = 9;           // DEPRECATED. The user's contacts
    BOOKMARK = 10;         // The user's bookmarks
    ZERO_SUGGEST = 11;     // Suggestions based on the current page
    // This enum value is currently only used by Android GSA. It represents
    // a suggestion from the phone powered by go/icing.
    ON_DEVICE = 12;
    // This enum value is currently only used by Android GSA. It represents
    // a suggestion powered by a Chrome content provider.
    ON_DEVICE_CHROME = 13;
    CLIPBOARD = 14;     // Suggestion coming from clipboard.
    PHYSICAL_WEB = 15;  // DEPRECATED. Suggestions triggered by URLs broadcast
                        // by nearby devices.
    DOCUMENT = 16;      // Suggestions for documents in a cloud corpus.
    // Non personalized query suggestions generated from a lightweight on device
    // head model.
    ON_DEVICE_HEAD = 17;
  }

  // The result set displayed on the completion popup
  // Next tag: 10
  message Suggestion {
    // Where does this result come from?
    optional ProviderType provider = 1;

    // What kind of result this is.
    // This corresponds to the AutocompleteMatch::Type enumeration in
    // components/omnibox/autocomplete_match.h
    // (except for Android GSA result types).
    enum ResultType {
      UNKNOWN_RESULT_TYPE = 0;    // Unknown type (should not reach here)
      URL_WHAT_YOU_TYPED = 1;     // The input as a URL
      HISTORY_URL = 2;            // A past page whose URL contains the input
      HISTORY_TITLE = 3;          // A past page whose title contains the input
      HISTORY_BODY = 4;           // DEPRECATED. A past page whose body
                                  // contains the input
      HISTORY_KEYWORD = 5;        // A past page whose keyword contains the
                                  // input
      NAVSUGGEST = 6;             // A suggested URL
                                  //
                                  // result_subtype_identifier is currently used
                                  // for contextual zero-suggest suggestions
                                  // provided by the experimental service (note
                                  // that not all NAVSUUGGEST suggestions come
                                  // from the experimental service).
                                  // For subtype definitions, please contact
                                  // gcomanici@chromium.org.
      SEARCH_WHAT_YOU_TYPED = 7;  // The input as a search query (with the
                                  // default engine)
      SEARCH_HISTORY = 8;         // A past search (with the default engine)
                                  // containing the input
      SEARCH_SUGGEST = 9;         // A suggested search (with the default
                                  // engine) for a query.
      SEARCH_OTHER_ENGINE = 10;   // A search with a non-default engine
      EXTENSION_APP = 11;         // DEPRECATED. An Extension App with a
                                  // title/url that contains the input.
      CONTACT = 12;               // One of the user's contacts
      BOOKMARK_TITLE = 13;        // A bookmark with a title/url that contains
                                  // the input.
      SEARCH_SUGGEST_ENTITY = 14;  // A suggested search for an entity.
      SEARCH_SUGGEST_TAIL = 15;    // A suggested search to complete the tail of
                                   // the query.
      SEARCH_SUGGEST_PERSONALIZED = 16;  // A personalized suggested search.
      SEARCH_SUGGEST_PROFILE = 17;   // A personalized suggested search for a
                                     // Google+ profile.
      APP_RESULT = 18;               // Result from an installed app
                                     // (eg: a gmail email).
                                     // Used by Android GSA for on-device
                                     // suggestion logging.
      APP = 19;                      // An app result (eg: the gmail app).
                                     // Used by Android GSA for on-device
                                     // suggestion logging.
      LEGACY_ON_DEVICE = 20;         // An on-device result from a legacy
                                     // provider. That is, this result is not
                                     // from the on-device suggestion provider
                                     // (go/icing). This field is
                                     // used by Android GSA for on-device
                                     // suggestion logging.
      NAVSUGGEST_PERSONALIZED = 21;  // A personalized url.
      SEARCH_SUGGEST_ANSWER = 22;    // DEPRECATED. Answers no longer have their
                                     // own type but instead can be attached to
                                     // suggestions of any type.
      CALCULATOR = 23;               // A calculator answer.
      CLIPBOARD_URL = 24;            // An URL based on the clipboard.
      PHYSICAL_WEB = 25;             // DEPRECATED. A Physical Web nearby URL.
      PHYSICAL_WEB_OVERFLOW = 26;  // DEPRECATED. An item representing multiple
                                   // Physical Web nearby URLs.
      DOCUMENT = 27;               // An item representing a cloud document
                                   // suggestion.
      CLIPBOARD_TEXT = 28;         // Text based on the clipboard.
      CLIPBOARD_IMAGE = 29;        // An image based on the clipboard.
    }
    optional ResultType result_type = 2;

    // The relevance score for this suggestion.
    optional int32 relevance = 3;

    // How many times this result was typed in / selected from the omnibox.
    // Only set for some providers and result_types.  At the time of
    // writing this comment, it is only set for HistoryURL and
    // HistoryQuickProvider matches.
    optional int32 typed_count = 5;

    // Whether this item is starred (bookmarked) or not.
    optional bool is_starred = 4 [deprecated = true];

    // Whether this item is disabled in the UI (not clickable).
    optional bool is_disabled = 6;

    // Used to identify the specific source / type for suggestions by the
    // suggest server. The meaning of individual values is determined by the
    // provider of each suggestion type and is different for every suggestion
    // type. See enum ResultType above for more details.
    optional int32 result_subtype_identifier = 7;

    // Whether the suggestion presented in the match, regardless of type,
    // matched an open tab.
    optional bool has_tab_match = 8;

    // Whether this suggestion came associated with a keyword.  Does not include
    // suggestions that came from the default search engine unless the search
    // engine was explicitly invoked.  As two common examples,
    // |is_keyword_suggestion| will be true for suggestions from explicitly-
    // invoked suggestions (whether from a search engine or an extension).  It
    // will also be true for suggestions from a keyword that wasn't explicitly
    // requested.  For example, if a user has Google as their default search
    // engine, the input "bing testing" will often show a suggestion to "Search
    // Bing for testing" in the dropdown.  This suggestion will be marked as
    // |is_keyword_suggestion|.
    optional bool is_keyword_suggestion = 9;
  }
  repeated Suggestion suggestion = 9;

  // A data structure that holds per-provider information, general information
  // not associated with a particular result.
  // Next tag: 6
  message ProviderInfo {
    // Which provider generated this ProviderInfo entry.
    optional ProviderType provider = 1;

    // The provider's done() value, i.e., whether it's completed processing
    // the query.  Providers which don't do any asynchronous processing
    // will always be done.
    optional bool provider_done = 2;

    // The set of field trials that have triggered in the most recent query,
    // possibly affecting the shown suggestions.  Each element is a hash
    // of the corresponding field trial name.
    // See chrome/browser/autocomplete/search_provider.cc for a specific usage
    // example.
    repeated fixed32 field_trial_triggered = 3;

    // Same as above except that the set of field trials is a union of all field
    // trials that have triggered within the current omnibox session including
    // the most recent query.
    // See AutocompleteController::ResetSession() for more details on the
    // definition of a session.
    // See chrome/browser/autocomplete/search_provider.cc for a specific usage
    // example.
    repeated fixed32 field_trial_triggered_in_session = 4;

    // The number of times this provider returned a non-zero number of
    // suggestions during this omnibox session.
    // Note that each provider may define a session differently for its
    // purposes.
    optional int32 times_returned_results_in_session = 5;
  }
  // A list of diagnostic information about each provider.  Providers
  // will appear at most once in this list.
  repeated ProviderInfo provider_info = 12;

  // Whether the Omnibox was in keyword mode, however it was entered.
  optional bool in_keyword_mode = 19;

  // How the Omnibox got into keyword mode. Not present if not in keyword
  // mode.
  enum KeywordModeEntryMethod {
    INVALID = 0;
    TAB = 1;                // Select a suggestion that provides a keyword hint
                            // and press Tab.
    SPACE_AT_END = 2;       // Type a complete keyword and press Space.
    SPACE_IN_MIDDLE = 3;    // Press Space in the middle of an input in order to
                            // separate it into a keyword and other text.
    KEYBOARD_SHORTCUT = 4;  // Press ^K.
    QUESTION_MARK = 5;      // Press Question-mark without any other input.
    CLICK_HINT_VIEW = 6;    // Select a suggestion that provides a keyword hint
                            // and click the reminder that one can press Tab.
    TAP_HINT_VIEW = 7;      // Select a suggestion that provides a keyword hint
                            // and touch the reminder that one can press Tab.
    SELECT_SUGGESTION = 8;  // Select a keyword suggestion, such as by arrowing
                            // or tabbing to it.
  }
  optional KeywordModeEntryMethod keyword_mode_entry_method = 20;
}
