summaryrefslogtreecommitdiff
path: root/chromium/components/metrics/proto/omnibox_event.proto
blob: 1998a08fb219cf5d2bfec562b952cef7e7029aab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
// 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.
//
// Stores information about an omnibox interaction.

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";

// Next tag: 17
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 = 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;

  // 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;

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

  optional OmniboxInputType.Type 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.
    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).
  }

  // The result set displayed on the completion popup
  // Next tag: 8
  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.
    }
    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;
  }
  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;
}