OLD | NEW |
---|---|
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef COMPONENTS_SYNC_SESSIONS_SYNCED_SESSION_H_ | 5 #ifndef COMPONENTS_SYNC_SESSIONS_SYNCED_SESSION_H_ |
6 #define COMPONENTS_SYNC_SESSIONS_SYNCED_SESSION_H_ | 6 #define COMPONENTS_SYNC_SESSIONS_SYNCED_SESSION_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <memory> | 9 #include <memory> |
10 #include <set> | 10 #include <set> |
11 #include <string> | 11 #include <string> |
12 | 12 |
13 #include "base/macros.h" | 13 #include "base/macros.h" |
14 #include "base/time/time.h" | 14 #include "base/time/time.h" |
15 #include "components/sessions/core/session_id.h" | 15 #include "components/sessions/core/session_id.h" |
16 #include "components/sessions/core/session_types.h" | 16 #include "components/sessions/core/session_types.h" |
17 #include "components/sync/protocol/session_specifics.pb.h" | 17 #include "components/sync/protocol/session_specifics.pb.h" |
18 | 18 |
19 namespace sessions { | 19 namespace sync_sessions { |
20 struct SessionWindow; | |
21 } | |
22 | 20 |
23 namespace sync_sessions { | 21 // A Sync wrapper for a SessionWindow. |
22 struct SyncedSessionWindow { | |
23 SyncedSessionWindow(); | |
24 ~SyncedSessionWindow(); | |
25 | |
26 // Convert this object into its sync protocol buffer equivalent. | |
27 sync_pb::SessionWindow ToSyncSessionWindowPB() const; | |
skym
2017/03/28 04:48:55
The "PB" looks really ugly to me, I'd prefer somet
Nicolas Zea
2017/03/29 19:01:33
Switched to ToSessionWindowProto
| |
28 | |
29 // Type of the window. See session_specifics.proto. | |
30 sync_pb::SessionWindow::BrowserType window_type; | |
31 | |
32 // The SessionWindow this object wraps. | |
33 sessions::SessionWindow wrapped_window; | |
skym
2017/03/28 04:48:55
Does it really make sense to hang onto a SessionWi
Patrick Noland
2017/03/28 20:42:00
It seems like many accesses of wrapped_window just
Nicolas Zea
2017/03/29 19:01:33
I do think it probably makes sense to move away fr
| |
34 | |
35 private: | |
36 DISALLOW_COPY_AND_ASSIGN(SyncedSessionWindow); | |
37 }; | |
24 | 38 |
25 // Defines a synced session for use by session sync. A synced session is a | 39 // Defines a synced session for use by session sync. A synced session is a |
26 // list of windows along with a unique session identifer (tag) and meta-data | 40 // list of windows along with a unique session identifer (tag) and meta-data |
27 // about the device being synced. | 41 // about the device being synced. |
28 struct SyncedSession { | 42 struct SyncedSession { |
29 // The type of device. | 43 // The type of device. |
30 // Please keep in sync with ForeignSessionHelper.java | 44 // Please keep in sync with ForeignSessionHelper.java |
31 enum DeviceType { | 45 enum DeviceType { |
32 TYPE_UNSET = 0, | 46 TYPE_UNSET = 0, |
33 TYPE_WIN = 1, | 47 TYPE_WIN = 1, |
(...skipping 14 matching lines...) Expand all Loading... | |
48 std::string session_name; | 62 std::string session_name; |
49 | 63 |
50 // Type of device this session is from. | 64 // Type of device this session is from. |
51 DeviceType device_type; | 65 DeviceType device_type; |
52 | 66 |
53 // Last time this session was modified remotely. This is the max of the header | 67 // Last time this session was modified remotely. This is the max of the header |
54 // and all children tab mtimes. | 68 // and all children tab mtimes. |
55 base::Time modified_time; | 69 base::Time modified_time; |
56 | 70 |
57 // Map of windows that make up this session. | 71 // Map of windows that make up this session. |
58 std::map<SessionID::id_type, std::unique_ptr<sessions::SessionWindow>> | 72 std::map<SessionID::id_type, std::unique_ptr<SyncedSessionWindow>> windows; |
59 windows; | |
60 | 73 |
61 // A tab node id is part of the identifier for the sync tab objects. Tab node | 74 // A tab node id is part of the identifier for the sync tab objects. Tab node |
62 // ids are not used for interacting with the model/browser tabs. However, when | 75 // ids are not used for interacting with the model/browser tabs. However, when |
63 // when we want to delete a foreign session, we use these values to inform | 76 // when we want to delete a foreign session, we use these values to inform |
64 // sync which tabs to delete. We are extracting these tab node ids from | 77 // sync which tabs to delete. We are extracting these tab node ids from |
65 // individual session (tab, not header) specifics, but store them here in the | 78 // individual session (tab, not header) specifics, but store them here in the |
66 // SyncedSession during runtime. We do this because tab node ids may be reused | 79 // SyncedSession during runtime. We do this because tab node ids may be reused |
67 // for different tabs, and tracking which tab id is currently associated with | 80 // for different tabs, and tracking which tab id is currently associated with |
68 // each tab node id is both difficult and unnecessary. See comments at | 81 // each tab node id is both difficult and unnecessary. See comments at |
69 // SyncedSessionTracker::GetTabImpl for a concrete example of id reuse. | 82 // SyncedSessionTracker::GetTabImpl for a concrete example of id reuse. |
(...skipping 18 matching lines...) Expand all Loading... | |
88 return "phone"; | 101 return "phone"; |
89 case SyncedSession::TYPE_TABLET: | 102 case SyncedSession::TYPE_TABLET: |
90 return "tablet"; | 103 return "tablet"; |
91 default: | 104 default: |
92 return std::string(); | 105 return std::string(); |
93 } | 106 } |
94 } | 107 } |
95 | 108 |
96 // Convert this object to its protocol buffer equivalent. Shallow conversion, | 109 // Convert this object to its protocol buffer equivalent. Shallow conversion, |
97 // does not create SessionTab protobufs. | 110 // does not create SessionTab protobufs. |
98 sync_pb::SessionHeader ToSessionHeader() const; | 111 sync_pb::SessionHeader ToSyncSessionHeaderPB() const; |
99 | 112 |
100 private: | 113 private: |
101 DISALLOW_COPY_AND_ASSIGN(SyncedSession); | 114 DISALLOW_COPY_AND_ASSIGN(SyncedSession); |
102 }; | 115 }; |
103 | 116 |
104 } // namespace sync_sessions | 117 } // namespace sync_sessions |
105 | 118 |
106 #endif // COMPONENTS_SYNC_SESSIONS_SYNCED_SESSION_H_ | 119 #endif // COMPONENTS_SYNC_SESSIONS_SYNCED_SESSION_H_ |
OLD | NEW |