Upstream version 7.35.144.0
[platform/framework/web/crosswalk.git] / src / chrome / common / metrics / proto / omnibox_event.proto
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
7 syntax = "proto2";
8
9 option optimize_for = LITE_RUNTIME;
10
11 package metrics;
12
13 // Next tag: 15
14 message 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     // When adding new classifications, please consider adding them in
113     // chrome/browser/resources/omnibox/omnibox.html
114     // so that these new options are displayed on about:omnibox.
115   }
116   optional PageClassification current_page_classification = 10;
117
118   // What kind of input the user provided.
119   enum InputType {
120     INVALID = 0;        // Empty input (should not reach here)
121     UNKNOWN = 1;        // Valid input whose type cannot be determined
122     REQUESTED_URL = 2;  // DEPRECATED. Input autodetected as UNKNOWN, which the
123                         // user wants to treat as an URL by specifying a
124                         // desired_tld
125     URL = 3;            // Input autodetected as a URL
126     QUERY = 4;          // Input autodetected as a query
127     FORCED_QUERY = 5;   // Input forced to be a query by an initial '?'
128   }
129   optional InputType input_type = 8;
130
131   // An enum used in multiple places below.
132   enum ProviderType {
133     UNKNOWN_PROVIDER = 0;  // Unknown provider (should not reach here)
134     HISTORY_URL = 1;       // URLs in history, or user-typed URLs
135     HISTORY_CONTENTS = 2;  // Matches for page contents of pages in history
136     HISTORY_QUICK = 3;     // Matches for recently or frequently visited pages
137                            // in history
138     SEARCH = 4;            // Search suggestions for the default search engine
139     KEYWORD = 5;           // Keyword-triggered searches
140     BUILTIN = 6;           // Built-in URLs, such as chrome://version
141     SHORTCUTS = 7;         // Recently selected omnibox suggestions
142     EXTENSION_APPS = 8;    // Custom suggestions from extensions and/or apps
143     CONTACT = 9;           // DEPRECATED. The user's contacts
144     BOOKMARK = 10;         // The user's bookmarks
145     ZERO_SUGGEST = 11;     // Suggestions based on the current page
146     // This enum value is currently only used by Android GSA. It represents
147     // a suggestion from the phone.
148     ON_DEVICE = 12;
149   }
150
151   // The result set displayed on the completion popup
152   // Next tag: 6
153   message Suggestion {
154     // Where does this result come from?
155     optional ProviderType provider = 1;
156
157     // What kind of result this is.
158     // This corresponds to the AutocompleteMatch::Type enumeration in
159     // chrome/browser/autocomplete/autocomplete_match.h (except for Android
160     // GSA result types).
161     enum ResultType {
162       UNKNOWN_RESULT_TYPE = 0;    // Unknown type (should not reach here)
163       URL_WHAT_YOU_TYPED = 1;     // The input as a URL
164       HISTORY_URL = 2;            // A past page whose URL contains the input
165       HISTORY_TITLE = 3;          // A past page whose title contains the input
166       HISTORY_BODY = 4;           // A past page whose body contains the input
167       HISTORY_KEYWORD = 5;        // A past page whose keyword contains the
168                                   // input
169       NAVSUGGEST = 6;             // A suggested URL
170       SEARCH_WHAT_YOU_TYPED = 7;  // The input as a search query (with the
171                                   // default engine)
172       SEARCH_HISTORY = 8;         // A past search (with the default engine)
173                                   // containing the input
174       SEARCH_SUGGEST = 9;         // A suggested search (with the default
175                                   // engine) query that doesn't fall into one of
176                                   // the more specific suggestion categories
177                                   // below.
178       SEARCH_OTHER_ENGINE = 10;   // A search with a non-default engine
179       EXTENSION_APP = 11;         // An Extension App with a title/url that
180                                   // contains the input
181       CONTACT = 12;               // DEPRECATED. One of the user's contacts
182       BOOKMARK_TITLE = 13;        // A bookmark whose title contains the input.
183       SEARCH_SUGGEST_ENTITY = 14; // A suggested search for an entity.
184       SEARCH_SUGGEST_INFINITE = 15; // A suggested search to complete the tail
185                                     // of the query.
186       SEARCH_SUGGEST_PERSONALIZED = 16; // A personalized suggested search.
187       SEARCH_SUGGEST_PROFILE = 17; // A personalized suggested search for a
188                                    // Google+ profile.      
189       APP_RESULT = 18;             // Result from an installed app
190                                    // (eg: a gmail email).
191                                    // Used by Android GSA for on-device
192                                    // suggestion logging.
193       APP = 19;                    // An app result (eg: the gmail app).
194                                    // Used by Android GSA for on-device
195                                    // suggestion logging.
196     }
197     optional ResultType result_type = 2;
198
199     // The relevance score for this suggestion.
200     optional int32 relevance = 3;
201
202     // How many times this result was typed in / selected from the omnibox.
203     // Only set for some providers and result_types.  At the time of
204     // writing this comment, it is only set for HistoryURL and
205     // HistoryQuickProvider matches.
206     optional int32 typed_count = 5;
207
208     // Whether this item is starred (bookmarked) or not.
209     optional bool is_starred = 4;
210   }
211   repeated Suggestion suggestion = 9;
212
213   // A data structure that holds per-provider information, general information
214   // not associated with a particular result.
215   // Next tag: 5
216   message ProviderInfo {
217     // Which provider generated this ProviderInfo entry.
218     optional ProviderType provider = 1;
219
220     // The provider's done() value, i.e., whether it's completed processing
221     // the query.  Providers which don't do any asynchronous processing
222     // will always be done.
223     optional bool provider_done = 2;
224
225     // The set of field trials that have triggered in the most recent query,
226     // possibly affecting the shown suggestions.  Each element is a hash
227     // of the corresponding field trial name.
228     // See chrome/browser/autocomplete/search_provider.cc for a specific usage
229     // example.
230     repeated fixed32 field_trial_triggered = 3;
231
232     // Same as above except that the set of field trials is a union of all field
233     // trials that have triggered within the current omnibox session including
234     // the most recent query.
235     // See AutocompleteController::ResetSession() for more details on the
236     // definition of a session.
237     // See chrome/browser/autocomplete/search_provider.cc for a specific usage
238     // example.
239     repeated fixed32 field_trial_triggered_in_session = 4;
240   }
241   // A list of diagnostic information about each provider.  Providers
242   // will appear at most once in this list.
243   repeated ProviderInfo provider_info = 12;
244 }