// Copyright 2012 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // Sync protocol datatype extension for sessions. // If you change or add any fields in this file, update proto_visitors.h and // potentially proto_enum_conversions.{h, cc}. syntax = "proto2"; option go_package = "./sync_pb"; option java_multiple_files = true; option java_package = "org.chromium.components.sync.protocol"; option optimize_for = LITE_RUNTIME; package sync_pb; import "sync_enums.proto"; message SessionSpecifics { // Unique id for the client. M89 and higher use sync's cache GUID (client ID) // to populate this tag for *new* sessions. optional string session_tag = 1; optional SessionHeader header = 2; optional SessionTab tab = 3; // The local tab id used by sync. Unique across all nodes for that client. optional int32 tab_node_id = 4 [default = -1]; } // Properties of session sync objects. message SessionHeader { // Each session is composed of windows. repeated SessionWindow window = 2; // A non-unique but human-readable name to describe this client. optional string client_name = 3; // The form factor of device. optional SyncEnums.DeviceFormFactor device_form_factor = 5; // The type of device. // Mandatory until M115. Replaced by device_form_factor afterwards, but still // populated for backward compatibility. optional SyncEnums.DeviceType device_type = 4 [deprecated = true]; } message SessionWindow { // Unique (to the owner) id for this window. optional int32 window_id = 1; // Index of the selected tab in tabs; -1 if no tab is selected. optional int32 selected_tab_index = 2 [default = -1]; // Type of the window. optional SyncEnums.BrowserType browser_type = 3 [default = TYPE_TABBED]; // The tabs that compose a window (correspond to tab id's). repeated int32 tab = 4; } message SessionTab { // Unique (to the owner) id for this tab. optional int32 tab_id = 1 [default = -1]; // The unique id for the window this tab belongs to. optional int32 window_id = 2; // Visual index of the tab within its window. There may be gaps in these // values. optional int32 tab_visual_index = 3 [default = -1]; // Identifies the index of the current navigation in navigations. For // example, if this is 2 it means the current navigation is navigations[2]. optional int32 current_navigation_index = 4 [default = -1]; // True if the tab is pinned. optional bool pinned = 5 [default = false]; // If non-empty, this tab is an app tab and this is the id of the extension. optional string extension_app_id = 6; // Tabs are navigated, and the navigation data is here. repeated TabNavigation navigation = 7; optional SyncEnums.BrowserType browser_type = 13; // Timestamp for when this tab was last activated. // Corresponds to WebContents::GetLastActiveTime(). optional int64 last_active_time_unix_epoch_millis = 14; // The favicon for the current url the tab is displaying. Either empty // or a valid PNG encoded favicon. optional bytes favicon = 8 [deprecated = true]; // The type of favicon. For now only normal web favicons are supported. enum FaviconType { TYPE_WEB_FAVICON = 1; } optional FaviconType favicon_type = 9 [deprecated = true]; // The url of the actual favicon (as opposed to the page using the favicon). optional string favicon_source = 11 [deprecated = true]; // Ids of the currently assigned variations which should be sent to sync. repeated uint64 variation_id = 12 [deprecated = true]; } message TabNavigation { // The virtual URL, when nonempty, will override the actual URL of the page // when we display it to the user. optional string virtual_url = 2; // The referring URL, which can be empty. optional string referrer = 3; // The title of the page. optional string title = 4; // The core transition type. optional SyncEnums.PageTransition page_transition = 6 [default = LINK]; // If this transition was triggered by a redirect, the redirect type. optional SyncEnums.PageTransitionRedirectType redirect_type = 7; // The unique navigation id (within this client). optional int32 unique_id = 8; // Timestamp for when this navigation last occurred (in client time). // If the user goes back/forward in history the timestamp may refresh. optional int64 timestamp_msec = 9; // User used the Forward or Back button to navigate among browsing history. optional bool navigation_forward_back = 10; // User used the address bar to trigger this navigation. optional bool navigation_from_address_bar = 11; // User is navigating to the home page. optional bool navigation_home_page = 12; // The id for this navigation, which is globally unique with high // probability. optional int64 global_id = 15; // The favicon url associated with this page. optional string favicon_url = 17; // The status code from the last navigation. optional int32 http_status_code = 20; // Correct referrer policy. Valid enums are defined in // third_party/WebKit/public/platform/WebReferrerPolicy.h. optional int32 correct_referrer_policy = 25 [default = 1]; // Whether the Password Manager saw a password field on the page. optional SyncEnums.PasswordState password_state = 26; // The start/end of a redirect chain. Deprecated in M108 because they were // always set to false in practice, and don't make sense in the first place - // this message corresponds to a complete chain. optional bool navigation_chain_start = 13 [deprecated = true]; optional bool navigation_chain_end = 14 [deprecated = true]; // Search terms extracted from the URL. Deprecated in M64. optional string search_terms = 16 [deprecated = true]; enum BlockedState { STATE_ALLOWED = 1; STATE_BLOCKED = 2; } // Whether access to the URL was allowed or blocked. Deprecated in M121 // because it was unused. optional BlockedState blocked_state = 18 [deprecated = true, default = STATE_ALLOWED]; // Referrer policy. Old, broken value. Deprecated in M61. optional int32 obsolete_referrer_policy = 21 [deprecated = true]; // True if created from restored navigation entry that hasn't been loaded. // Deprecated in M121 because it was unused. optional bool is_restored = 22 [deprecated = true]; // The chain of redirections for this navigation, from the original URL // through the last URL that redirected. Deprecated in M121 because it was // unused. repeated NavigationRedirect navigation_redirect = 23 [deprecated = true]; // The last URL traversed when different from the virtual_url. Deprecated in // M121 because it was unused. optional string last_navigation_redirect_url = 24 [deprecated = true]; // The id for the task associated with this navigation, which is globally // unique with high probability. Deprecated in M121 because it was unused. optional int64 task_id = 27 [deprecated = true]; // Task ids of all ancestor navigations, which can be from other tabs, from // root to parent. Deprecated in M121 because it was unused. repeated int64 ancestor_task_id = 28 [deprecated = true]; // When a history entry is replaced (e.g. history.replaceState()), this // contained some information about the entry prior to being replaced. // Deprecated in M121 because it was unused. optional ReplacedNavigation replaced_navigation = 29 [deprecated = true]; // The page language as determined by its textual content. An ISO 639 language // code (two letters, except for Chinese where a localization is necessary). // Deprecated in M121 because it was unused. optional string page_language = 30 [deprecated = true]; reserved 1; reserved "index"; reserved 5; reserved "state"; reserved 19; reserved "content_pack_categories"; } // Navigation information for a single redirection within a single navigation. message NavigationRedirect { // A URL that redirected while navigating to the virtual_url. optional string url = 1; } // Subset of TabNavigation fields representing a navigation that was later // replaced in history (e.g. history.replaceState()), which allows tracking // information about the original navigation prior to the first replacement. message ReplacedNavigation { optional string first_committed_url = 1; optional int64 first_timestamp_msec = 2; optional SyncEnums.PageTransition first_page_transition = 3; }