1// Copyright (c) 2010 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4//
5// Sync protocol datatype extension for sessions.
6
7// Update proto_value_conversions{.h,.cc,_unittest.cc} if you change
8// any fields in this file.
9
10syntax = "proto2";
11
12option optimize_for = LITE_RUNTIME;
13option retain_unknown_fields = true;
14
15package sync_pb;
16
17import "sync.proto";
18
19message SessionSpecifics {
20  // Unique id for the client.
21  optional string session_tag = 1;
22  optional SessionHeader header = 2;
23  optional SessionTab tab = 3;  
24}
25// Properties of session sync objects.
26message SessionHeader {
27  // Each session is composed of windows.
28  repeated SessionWindow window = 2;
29}
30message SessionWindow {
31  // Unique (to the owner) id for this window.
32  optional int32 window_id = 1;
33  // Index of the selected tab in tabs; -1 if no tab is selected.
34  optional int32 selected_tab_index = 2 [default = -1];
35  // Type of the browser. Currently we only store browsers of type
36  // TYPE_NORMAL and TYPE_POPUP.
37  enum BrowserType {
38    TYPE_NORMAL = 1;
39    TYPE_POPUP = 2;
40  }
41  optional BrowserType browser_type = 3 [default = TYPE_NORMAL];
42  // The tabs that compose a window (correspond to tab id's).
43  repeated int32 tab = 4;
44}
45message SessionTab {
46  // Unique (to the owner) id for this tab.
47  optional int32 tab_id = 1;
48  // The unique id for the window this tab belongs to.
49  optional int32 window_id = 2;
50  // Visual index of the tab within its window. There may be gaps in these
51  // values.
52  optional int32 tab_visual_index = 3 [default = -1];
53  // Identifies the index of the current navigation in navigations. For
54  // example, if this is 2 it means the current navigation is navigations[2].
55  optional int32 current_navigation_index = 4 [default = -1];
56  // True if the tab is pinned.
57  optional bool pinned = 5 [default = false];
58  // If non-empty, this tab is an app tab and this is the id of the extension.
59  optional string extension_app_id = 6;
60  // Tabs are navigated, and the navigation data is here.
61  repeated TabNavigation navigation = 7;
62}
63message TabNavigation {
64  // The index in the NavigationController. If this is -1, it means this
65  // TabNavigation is bogus.
66  optional int32 index = 1 [default = -1];
67  // The virtual URL, when nonempty, will override the actual URL of the page
68  // when we display it to the user.
69  optional string virtual_url = 2;
70  // The referring URL, which can be empty.
71  optional string referrer = 3;
72  // The title of the page.
73  optional string title = 4;
74  // Content state is an opaque blob created by WebKit that represents the
75  // state of the page. This includes form entries and scroll position for each
76  // frame.
77  optional string state = 5;
78  // Types of transitions between pages.
79  enum PageTransition {
80    LINK = 0;
81    TYPED = 1;
82    AUTO_BOOKMARK = 2;
83    AUTO_SUBFRAME = 3;
84    MANUAL_SUBFRAME = 4;
85    GENERATED = 5;
86    START_PAGE = 6;
87    FORM_SUBMIT = 7;
88    RELOAD = 8;
89    KEYWORD = 9;
90    KEYWORD_GENERATED = 10;
91    CHAIN_START = 12;
92    CHAIN_END = 13;
93  }
94  // These qualifiers further define the transition.
95  enum PageTransitionQualifier {
96    CLIENT_REDIRECT = 1;
97    SERVER_REDIRECT = 2;
98  }
99  optional PageTransition page_transition = 6 [default = TYPED];
100  optional PageTransitionQualifier navigation_qualifier = 7;
101}
102
103extend EntitySpecifics {
104  optional SessionSpecifics session = 50119;
105}
106