• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4//
5// Stores information about an omnibox interaction.
6
7syntax = "proto2";
8
9option optimize_for = LITE_RUNTIME;
10
11package metrics;
12
13// Next tag: 15
14message OmniboxEventProto {
15  // The timestamp for the event, in seconds since the epoch.
16  optional int64 time = 1;
17
18  // The id of the originating tab for this omnibox interaction.
19  // This is the current tab *unless* the user opened the target in a new tab.
20  // In those cases, this is unset.  Tab ids are unique for a given session_id
21  // (in the containing protocol buffer ChromeUserMetricsExtensionsProto).
22  optional int32 tab_id = 2;
23
24  // The number of characters the user had typed before autocompleting.
25  optional int32 typed_length = 3;
26
27  // Whether the user deleted text immediately before selecting an omnibox
28  // suggestion.  This is usually the result of pressing backspace or delete.
29  optional bool just_deleted_text = 11;
30
31  // The number of terms that the user typed in the omnibox.
32  optional int32 num_typed_terms = 4;
33
34  // The index of the item that the user selected in the omnibox popup list.
35  // This corresponds the index of the |suggestion| below.
36  optional int32 selected_index = 5;
37
38  // Whether or not the top match was hidden in the omnibox suggestions
39  // dropdown.
40  optional bool is_top_result_hidden_in_dropdown = 14;
41
42  // The length of the inline autocomplete text in the omnibox.
43  // The sum |typed_length| + |completed_length| gives the full length of the
44  // user-visible text in the omnibox.
45  // This field is only set for inlineable suggestions selected at position 0
46  // (|selected_index| = 0) and will be omitted otherwise.
47  optional int32 completed_length = 6;
48
49  // The amount of time, in milliseconds, since the user first began modifying
50  // the text in the omnibox.  If at some point after modifying the text, the
51  // user reverts the modifications (thus seeing the current web page's URL
52  // again), then writes in the omnibox again, this elapsed time should start
53  // from the time of the second series of modification.
54  optional int64 typing_duration_ms = 7;
55
56  // The amount of time, in milliseconds, since the last time the default
57  // (inline) match changed.  This may be longer than the time since the
58  // last keystroke.  (The last keystroke may not have changed the default
59  // match.)  It may also be shorter than the time since the last keystroke
60  // because the default match might have come from an asynchronous
61  // provider.  Regardless, it should always be less than or equal to
62  // the field |typing_duration_ms|.
63  optional int64 duration_since_last_default_match_update_ms = 13;
64
65  // The type of page currently displayed when the user used the omnibox.
66  enum PageClassification {
67    // An invalid URL; shouldn't happen.
68    INVALID_SPEC = 0;
69
70    // chrome://newtab/.  This can be either the built-in version or a
71    // replacement new tab page from an extension.  Note that when Instant
72    // Extended is enabled, the new tab page will be reported as either
73    // INSTANT_NTP_WITH_OMNIBOX_AS_STARTING_FOCUS or
74    // INSTANT_NTP_WITH_FAKEBOX_AS_STARTING_FOCUS below,
75    // unless an extension is replacing the new tab page, in which case
76    // it will still be reported as NTP.
77    NTP = 1;
78
79    // about:blank.
80    BLANK = 2;
81
82    // The user's home page.  Note that if the home page is set to any
83    // of the new tab page versions or to about:blank, then we'll
84    // classify the page into those categories, not HOME_PAGE.
85    HOME_PAGE = 3;
86
87    // The catch-all entry of everything not included somewhere else
88    // on this list.
89    OTHER = 4;
90
91    // The instant new tab page enum value was deprecated on August 2, 2013.
92    OBSOLETE_INSTANT_NTP = 5;
93
94    // The user is on a search result page that's doing search term
95    // replacement, meaning the search terms should've appeared in the omnibox
96    // before the user started editing it, not the URL of the page.
97    SEARCH_RESULT_PAGE_DOING_SEARCH_TERM_REPLACEMENT = 6;
98
99    // The new tab page in which this omnibox interaction first started
100    // with the user having focus in the omnibox.
101    INSTANT_NTP_WITH_OMNIBOX_AS_STARTING_FOCUS = 7;
102
103    // The new tab page in which this omnibox interaction first started
104    // with the user having focus in the fakebox.
105    INSTANT_NTP_WITH_FAKEBOX_AS_STARTING_FOCUS = 8;
106
107    // The user is on a search result page that's not doing search term
108    // replacement, meaning the URL of the page should've appeared in the
109    // omnibox before the user started editing it, not the search terms.
110    SEARCH_RESULT_PAGE_NO_SEARCH_TERM_REPLACEMENT = 9;
111  }
112  optional PageClassification current_page_classification = 10;
113
114  // What kind of input the user provided.
115  enum InputType {
116    INVALID = 0;        // Empty input (should not reach here)
117    UNKNOWN = 1;        // Valid input whose type cannot be determined
118    REQUESTED_URL = 2;  // DEPRECATED. Input autodetected as UNKNOWN, which the
119                        // user wants to treat as an URL by specifying a
120                        // desired_tld
121    URL = 3;            // Input autodetected as a URL
122    QUERY = 4;          // Input autodetected as a query
123    FORCED_QUERY = 5;   // Input forced to be a query by an initial '?'
124  }
125  optional InputType input_type = 8;
126
127  // An enum used in multiple places below.
128  enum ProviderType {
129    UNKNOWN_PROVIDER = 0;  // Unknown provider (should not reach here)
130    HISTORY_URL = 1;       // URLs in history, or user-typed URLs
131    HISTORY_CONTENTS = 2;  // Matches for page contents of pages in history
132    HISTORY_QUICK = 3;     // Matches for recently or frequently visited pages
133                           // in history
134    SEARCH = 4;            // Search suggestions for the default search engine
135    KEYWORD = 5;           // Keyword-triggered searches
136    BUILTIN = 6;           // Built-in URLs, such as chrome://version
137    SHORTCUTS = 7;         // Recently selected omnibox suggestions
138    EXTENSION_APPS = 8;    // Custom suggestions from extensions and/or apps
139    CONTACT = 9;           // The user's contacts
140    BOOKMARK = 10;         // The user's bookmarks
141    ZERO_SUGGEST = 11;     // Suggestions based on the current page
142  }
143
144  // The result set displayed on the completion popup
145  // Next tag: 6
146  message Suggestion {
147    // Where does this result come from?
148    optional ProviderType provider = 1;
149
150    // What kind of result this is.
151    // This corresponds to the AutocompleteMatch::Type enumeration in
152    // chrome/browser/autocomplete/autocomplete_match.h
153    enum ResultType {
154      UNKNOWN_RESULT_TYPE = 0;    // Unknown type (should not reach here)
155      URL_WHAT_YOU_TYPED = 1;     // The input as a URL
156      HISTORY_URL = 2;            // A past page whose URL contains the input
157      HISTORY_TITLE = 3;          // A past page whose title contains the input
158      HISTORY_BODY = 4;           // A past page whose body contains the input
159      HISTORY_KEYWORD = 5;        // A past page whose keyword contains the
160                                  // input
161      NAVSUGGEST = 6;             // A suggested URL
162      SEARCH_WHAT_YOU_TYPED = 7;  // The input as a search query (with the
163                                  // default engine)
164      SEARCH_HISTORY = 8;         // A past search (with the default engine)
165                                  // containing the input
166      SEARCH_SUGGEST = 9;         // A suggested search (with the default
167                                  // engine) query that doesn't fall into one of
168                                  // the more specific suggestion categories
169                                  // below.
170      SEARCH_OTHER_ENGINE = 10;   // A search with a non-default engine
171      EXTENSION_APP = 11;         // An Extension App with a title/url that
172                                  // contains the input
173      CONTACT = 12;               // One of the user's contacts
174      BOOKMARK_TITLE = 13;        // A bookmark whose title contains the input.
175      SEARCH_SUGGEST_ENTITY = 14; // A suggested search for an entity.
176      SEARCH_SUGGEST_INFINITE = 15; // A suggested search to complete the tail
177                                    // of the query.
178      SEARCH_SUGGEST_PERSONALIZED = 16; // A personalized suggested search.
179      SEARCH_SUGGEST_PROFILE = 17; // A personalized suggested search for a
180                                   // Google+ profile.
181    }
182    optional ResultType result_type = 2;
183
184    // The relevance score for this suggestion.
185    optional int32 relevance = 3;
186
187    // How many times this result was typed in / selected from the omnibox.
188    // Only set for some providers and result_types.  At the time of
189    // writing this comment, it is only set for HistoryURL and
190    // HistoryQuickProvider matches.
191    optional int32 typed_count = 5;
192
193    // Whether this item is starred (bookmarked) or not.
194    optional bool is_starred = 4;
195  }
196  repeated Suggestion suggestion = 9;
197
198  // A data structure that holds per-provider information, general information
199  // not associated with a particular result.
200  // Next tag: 5
201  message ProviderInfo {
202    // Which provider generated this ProviderInfo entry.
203    optional ProviderType provider = 1;
204
205    // The provider's done() value, i.e., whether it's completed processing
206    // the query.  Providers which don't do any asynchronous processing
207    // will always be done.
208    optional bool provider_done = 2;
209
210    // The set of field trials that have triggered in the most recent query,
211    // possibly affecting the shown suggestions.  Each element is a hash
212    // of the corresponding field trial name.
213    // See chrome/browser/autocomplete/search_provider.cc for a specific usage
214    // example.
215    repeated fixed32 field_trial_triggered = 3;
216
217    // Same as above except that the set of field trials is a union of all field
218    // trials that have triggered within the current omnibox session including
219    // the most recent query.
220    // See AutocompleteController::ResetSession() for more details on the
221    // definition of a session.
222    // See chrome/browser/autocomplete/search_provider.cc for a specific usage
223    // example.
224    repeated fixed32 field_trial_triggered_in_session = 4;
225  }
226  // A list of diagnostic information about each provider.  Providers
227  // will appear at most once in this list.
228  repeated ProviderInfo provider_info = 12;
229}
230