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_TRACKER_H_ | 5 #ifndef COMPONENTS_SYNC_SESSIONS_SYNCED_SESSION_TRACKER_H_ |
6 #define COMPONENTS_SYNC_SESSIONS_SYNCED_SESSION_TRACKER_H_ | 6 #define COMPONENTS_SYNC_SESSIONS_SYNCED_SESSION_TRACKER_H_ |
7 | 7 |
8 #include <stddef.h> | 8 #include <stddef.h> |
9 | 9 |
10 #include <map> | 10 #include <map> |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 | 89 |
90 // Resets the tracking information for the session specified by |session_tag|. | 90 // Resets the tracking information for the session specified by |session_tag|. |
91 // This involves clearing all the windows and tabs from the session, while | 91 // This involves clearing all the windows and tabs from the session, while |
92 // keeping pointers saved in the synced_window_map_ and synced_tab_map_. Once | 92 // keeping pointers saved in the synced_window_map_ and synced_tab_map_. Once |
93 // reset, all calls to PutWindowInSession and PutTabInWindow will denote that | 93 // reset, all calls to PutWindowInSession and PutTabInWindow will denote that |
94 // the requested windows and tabs are owned and add them back to their | 94 // the requested windows and tabs are owned and add them back to their |
95 // session. The next call to CleanupSession(...) will delete those windows and | 95 // session. The next call to CleanupSession(...) will delete those windows and |
96 // tabs not owned. | 96 // tabs not owned. |
97 void ResetSessionTracking(const std::string& session_tag); | 97 void ResetSessionTracking(const std::string& session_tag); |
98 | 98 |
| 99 // Deletes those windows and tabs associated with |session_tag| that are no |
| 100 // longer owned. See ResetSessionTracking(...).. |
| 101 void CleanupSession(const std::string& session_tag); |
| 102 |
99 // Adds the window with id |window_id| to the session specified by | 103 // Adds the window with id |window_id| to the session specified by |
100 // |session_tag|. If none existed for that session, creates one. Similarly, if | 104 // |session_tag|. If none existed for that session, creates one. Similarly, if |
101 // the session did not exist yet, creates it. Ownership of the SessionWindow | 105 // the session did not exist yet, creates it. Ownership of the SessionWindow |
102 // remains within the SyncedSessionTracker. | 106 // remains within the SyncedSessionTracker. |
| 107 // Attempting to add a window to a session multiple times will have no effect. |
103 void PutWindowInSession(const std::string& session_tag, | 108 void PutWindowInSession(const std::string& session_tag, |
104 SessionID::id_type window_id); | 109 SessionID::id_type window_id); |
105 | 110 |
106 // Adds the tab with id |tab_id| to the window |window_id|. If none existed | 111 // Adds the tab with id |tab_id| to the window |window_id|. If none existed |
107 // for that session, creates one. Ownership of the SessionTab remains within | 112 // for that session, creates one. Ownership of the SessionTab remains within |
108 // the SyncedSessionTracker. | 113 // the SyncedSessionTracker. |
109 // | 114 // |
110 // Note: GetSession(..) must have already been called with |session_tag| to | 115 // Note: GetSession(..) must have already been called with |session_tag| to |
111 // ensure we having mapping information for this session. | 116 // ensure we having mapping information for this session. |
112 void PutTabInWindow(const std::string& session_tag, | 117 void PutTabInWindow(const std::string& session_tag, |
(...skipping 25 matching lines...) Expand all Loading... |
138 // parent this tab. Regardless, when the header is updated then cleanup will | 143 // parent this tab. Regardless, when the header is updated then cleanup will |
139 // remove the actual tab data. However, this method always needs to be called | 144 // remove the actual tab data. However, this method always needs to be called |
140 // upon foreign tab deletion, otherwise LookupTabNodeIds(...) may return | 145 // upon foreign tab deletion, otherwise LookupTabNodeIds(...) may return |
141 // already deleted tab node ids. | 146 // already deleted tab node ids. |
142 void DeleteForeignTab(const std::string& session_tag, int tab_node_id); | 147 void DeleteForeignTab(const std::string& session_tag, int tab_node_id); |
143 | 148 |
144 // Deletes the session associated with |session_tag| if it exists. | 149 // Deletes the session associated with |session_tag| if it exists. |
145 // Returns true if the session existed and was deleted, false otherwise. | 150 // Returns true if the session existed and was deleted, false otherwise. |
146 bool DeleteForeignSession(const std::string& session_tag); | 151 bool DeleteForeignSession(const std::string& session_tag); |
147 | 152 |
148 // Deletes those windows and tabs associated with |session_tag| that are no | |
149 // longer owned. See ResetSessionTracking(...).. | |
150 void CleanupForeignSession(const std::string& session_tag); | |
151 | |
152 // **** Methods specific to the local session. **** | 153 // **** Methods specific to the local session. **** |
153 | 154 |
154 // Set the local session tag. Must be called before any other local session | 155 // Set the local session tag. Must be called before any other local session |
155 // methods are invoked. | 156 // methods are invoked. |
156 void SetLocalSessionTag(const std::string& local_session_tag); | 157 void SetLocalSessionTag(const std::string& local_session_tag); |
157 | 158 |
158 // Similar to CleanupForeignSession, but also marks any unmapped tabs as free | 159 // Similar to CleanupForeignSession, but also marks any unmapped tabs as free |
159 // in the tab node pool and fills |deleted_node_ids| with the set of locally | 160 // in the tab node pool and fills |deleted_node_ids| with the set of locally |
160 // free tab nodes to be deleted. | 161 // free tab nodes to be deleted. |
161 void CleanupLocalTabs(std::set<int>* deleted_node_ids); | 162 void CleanupLocalTabs(std::set<int>* deleted_node_ids); |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 | 248 |
248 // Pool of used/available sync nodes associated with local tabs. | 249 // Pool of used/available sync nodes associated with local tabs. |
249 TabNodePool local_tab_pool_; | 250 TabNodePool local_tab_pool_; |
250 | 251 |
251 DISALLOW_COPY_AND_ASSIGN(SyncedSessionTracker); | 252 DISALLOW_COPY_AND_ASSIGN(SyncedSessionTracker); |
252 }; | 253 }; |
253 | 254 |
254 } // namespace sync_sessions | 255 } // namespace sync_sessions |
255 | 256 |
256 #endif // COMPONENTS_SYNC_SESSIONS_SYNCED_SESSION_TRACKER_H_ | 257 #endif // COMPONENTS_SYNC_SESSIONS_SYNCED_SESSION_TRACKER_H_ |
OLD | NEW |