| // 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: 18 |
| 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; |
| |
| 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_URL = 14; // Suggestion coming from clipboard (iOS only). |
| PHYSICAL_WEB = 15; // Suggestions triggered by URLs broadcast by nearby |
| // devices (iOS and Android). |
| DOCUMENT = 16; // Suggestions for documents in a cloud corpus. |
| } |
| |
| // The result set displayed on the completion popup |
| // Next tag: 9 |
| 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 = 24; // An URL based on the clipboard. |
| PHYSICAL_WEB = 25; // A Physical Web nearby URL. |
| PHYSICAL_WEB_OVERFLOW = 26; // An item representing multiple Physical |
| // Web nearby URLs. |
| DOCUMENT = 27; // An item representing a cloud document |
| // suggestion. |
| } |
| 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; |
| } |
| 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; |
| } |