// Copyright (c) 2010 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. // // Sync protocol datatype extension for sessions. // Update proto_value_conversions{.h,.cc,_unittest.cc} if you change // any fields in this file. syntax = "proto2"; option optimize_for = LITE_RUNTIME; option retain_unknown_fields = true; package sync_pb; import "sync.proto"; message SessionSpecifics { // Unique id for the client. optional string session_tag = 1; optional SessionHeader header = 2; optional SessionTab tab = 3; } // Properties of session sync objects. message SessionHeader { // Each session is composed of windows. repeated SessionWindow window = 2; } 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 browser. Currently we only store browsers of type // TYPE_NORMAL and TYPE_POPUP. enum BrowserType { TYPE_NORMAL = 1; TYPE_POPUP = 2; } optional BrowserType browser_type = 3 [default = TYPE_NORMAL]; // 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; // 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; } message TabNavigation { // The index in the NavigationController. If this is -1, it means this // TabNavigation is bogus. optional int32 index = 1 [default = -1]; // 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; // Content state is an opaque blob created by WebKit that represents the // state of the page. This includes form entries and scroll position for each // frame. optional string state = 5; // Types of transitions between pages. enum PageTransition { LINK = 0; TYPED = 1; AUTO_BOOKMARK = 2; AUTO_SUBFRAME = 3; MANUAL_SUBFRAME = 4; GENERATED = 5; START_PAGE = 6; FORM_SUBMIT = 7; RELOAD = 8; KEYWORD = 9; KEYWORD_GENERATED = 10; CHAIN_START = 12; CHAIN_END = 13; } // These qualifiers further define the transition. enum PageTransitionQualifier { CLIENT_REDIRECT = 1; SERVER_REDIRECT = 2; } optional PageTransition page_transition = 6 [default = TYPED]; optional PageTransitionQualifier navigation_qualifier = 7; } extend EntitySpecifics { optional SessionSpecifics session = 50119; }