blob: 9e7f13220dab55ee9a529d36eb2f2e04925e504c [file] [log] [blame]
// 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;
package metrics;
import "omnibox_input_type.proto";
// Next tag: 17
message OmniboxEventProto {
// The timestamp for the event, in seconds since the epoch.
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;
// Whether or not the top match was hidden in the omnibox suggestions
// dropdown.
optional bool is_top_result_hidden_in_dropdown = 14;
// 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 user is on a search result page that's doing search term
// replacement, meaning the search terms should've appeared in the omnibox
// before the user started editing it, not the URL of the page.
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;
// 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; // Custom suggestions from extensions and/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;
}
// The result set displayed on the completion popup
// Next tag: 6
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
// chrome/browser/autocomplete/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; // A past page whose body contains the input
HISTORY_KEYWORD = 5; // A past page whose keyword contains the
// input
NAVSUGGEST = 6; // A suggested URL
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; // An Extension App with a title/url that
// contains the input
CONTACT = 12; // One of the user's contacts
BOOKMARK_TITLE = 13; // A bookmark whose title contains the input.
SEARCH_SUGGEST_ENTITY = 14; // A suggested search for an entity.
SEARCH_SUGGEST_INFINITE = 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; // A short result for a suggested search.
}
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;
}
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;
}