| // 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; |
| } |