summaryrefslogtreecommitdiffstats
path: root/sync/protocol/session_specifics.proto
blob: 4bb8b3e11a6555824fa644bd0326290a542d8cc9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
// Copyright (c) 2012 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_enums.proto";

message SessionSpecifics {
  // Unique id for the client.
  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 type of device.
  optional SyncEnums.DeviceType device_type = 4;
}

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_TABBED and TYPE_POPUP.
  enum BrowserType {
    TYPE_TABBED = 1;
    TYPE_POPUP = 2;
  }
  optional 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;
  // 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;

  // Fields 8 through 11 are deprecated.
  // The favicon for the current url the tab is displaying. Either empty
  // or a valid PNG encoded favicon.
  optional bytes favicon = 8;
  // The type of favicon. For now only normal web favicons are supported.
  enum FaviconType {
    TYPE_WEB_FAVICON = 1;
  }
  optional FaviconType favicon_type = 9;
  // The url of the actual favicon (as opposed to the page using the favicon).
  optional string favicon_source = 11;
}

message TabNavigation {
  // The index in the NavigationController. If this is -1, it means this
  // TabNavigation is bogus.
  // optional int32 index = 1 [default = -1];  // obsolete.
  // 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;
  // The core transition type.
  optional SyncEnums.PageTransition page_transition = 6 [default = TYPED];
  // 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/foward 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 beginning of a navigation chain.
  optional bool navigation_chain_start = 13;
  // The last transition in a redirect chain.
  optional bool navigation_chain_end = 14;
  // The id for this navigation, which is globally unique with high
  // probability.
  optional int64 global_id = 15;
  // Search terms extracted from the URL.
  optional string search_terms = 16;
  // The favicon url associated with this page.
  optional string favicon_url = 17;
  enum BlockedState {
    STATE_ALLOWED = 1;
    STATE_BLOCKED = 2;
  }
  // Whether access to the URL was allowed or blocked.
  optional BlockedState blocked_state = 18 [default=STATE_ALLOWED];
  // A list of category identifiers for the URL.
  repeated string content_pack_categories = 19;
  // The status code from the last navigation.
  optional int32 http_status_code = 20;
}