blob: 2d77d6a09119c10d1459c29c04b3c4e02889e7b2 [file] [log] [blame]
// 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";
package sync_pb;
import "components/sync/protocol/sync_enums.proto";
import "components/sync/protocol/tab_navigation.proto";
option java_multiple_files = true;
option java_package = "org.chromium.components.sync.protocol";
option optimize_for = LITE_RUNTIME;
message SessionSpecifics {
// Unique id for the client. Since M89, this is sync's cache GUID (client
// ID). Pre-existing sessions using a legacy ID were migrated in M143.
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 {
// The timestamp when this session was started, i.e. when the user signed in
// or turned on the sessions data type. Introduced in M130, and not populated
// for sessions created/started before that milestone.
optional int64 session_start_time_unix_epoch_millis = 6;
// 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];
}