OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 CHROME_BROWSER_SYNC_SESSIONS_SESSIONS_SYNC_MANAGER_H_ | 5 #ifndef CHROME_BROWSER_SYNC_SESSIONS_SESSIONS_SYNC_MANAGER_H_ |
6 #define CHROME_BROWSER_SYNC_SESSIONS_SESSIONS_SYNC_MANAGER_H_ | 6 #define CHROME_BROWSER_SYNC_SESSIONS_SESSIONS_SYNC_MANAGER_H_ |
7 | 7 |
8 #include <map> | 8 #include <map> |
9 #include <set> | 9 #include <set> |
10 #include <string> | 10 #include <string> |
(...skipping 25 matching lines...) Expand all Loading... |
36 class SessionHeader; | 36 class SessionHeader; |
37 class SessionSpecifics; | 37 class SessionSpecifics; |
38 class SessionTab; | 38 class SessionTab; |
39 class SessionWindow; | 39 class SessionWindow; |
40 class TabNavigation; | 40 class TabNavigation; |
41 } // namespace sync_pb | 41 } // namespace sync_pb |
42 | 42 |
43 namespace browser_sync { | 43 namespace browser_sync { |
44 | 44 |
45 class DataTypeErrorHandler; | 45 class DataTypeErrorHandler; |
46 class LocalDeviceInfoProvider; | |
47 class SyncedTabDelegate; | 46 class SyncedTabDelegate; |
48 class SyncedWindowDelegate; | 47 class SyncedWindowDelegate; |
49 class SyncedWindowDelegatesGetter; | 48 class SyncedWindowDelegatesGetter; |
50 | 49 |
51 // An interface defining the ways in which local open tab events can interact | 50 // An interface defining the ways in which local open tab events can interact |
52 // with session sync. All local tab events flow to sync via this interface. | 51 // with session sync. All local tab events flow to sync via this interface. |
53 // In that way it is analogous to sync changes flowing to the local model | 52 // In that way it is analogous to sync changes flowing to the local model |
54 // via ProcessSyncChanges, just with a more granular breakdown. | 53 // via ProcessSyncChanges, just with a more granular breakdown. |
55 class LocalSessionEventHandler { | 54 class LocalSessionEventHandler { |
56 public: | 55 public: |
(...skipping 19 matching lines...) Expand all Loading... |
76 virtual void StartRoutingTo(LocalSessionEventHandler* handler) = 0; | 75 virtual void StartRoutingTo(LocalSessionEventHandler* handler) = 0; |
77 virtual void Stop() = 0; | 76 virtual void Stop() = 0; |
78 }; | 77 }; |
79 | 78 |
80 // Contains all logic for associating the Chrome sessions model and | 79 // Contains all logic for associating the Chrome sessions model and |
81 // the sync sessions model. | 80 // the sync sessions model. |
82 class SessionsSyncManager : public syncer::SyncableService, | 81 class SessionsSyncManager : public syncer::SyncableService, |
83 public OpenTabsUIDelegate, | 82 public OpenTabsUIDelegate, |
84 public LocalSessionEventHandler { | 83 public LocalSessionEventHandler { |
85 public: | 84 public: |
| 85 // Isolates SessionsSyncManager from having to depend on sync internals. |
| 86 class SyncInternalApiDelegate { |
| 87 public: |
| 88 virtual ~SyncInternalApiDelegate() {} |
| 89 |
| 90 // Returns sync's representation of the local device info. |
| 91 // Return value is an empty scoped_ptr if the device info is unavailable. |
| 92 virtual scoped_ptr<DeviceInfo> GetLocalDeviceInfo() const = 0; |
| 93 |
| 94 // Used for creation of the machine tag for this local session. |
| 95 virtual std::string GetLocalSyncCacheGUID() const = 0; |
| 96 }; |
| 97 |
86 SessionsSyncManager(Profile* profile, | 98 SessionsSyncManager(Profile* profile, |
87 LocalDeviceInfoProvider* local_device, | 99 SyncInternalApiDelegate* delegate, |
88 scoped_ptr<LocalSessionEventRouter> router); | 100 scoped_ptr<LocalSessionEventRouter> router); |
89 virtual ~SessionsSyncManager(); | 101 virtual ~SessionsSyncManager(); |
90 | 102 |
91 // syncer::SyncableService implementation. | 103 // syncer::SyncableService implementation. |
92 virtual syncer::SyncMergeResult MergeDataAndStartSyncing( | 104 virtual syncer::SyncMergeResult MergeDataAndStartSyncing( |
93 syncer::ModelType type, | 105 syncer::ModelType type, |
94 const syncer::SyncDataList& initial_sync_data, | 106 const syncer::SyncDataList& initial_sync_data, |
95 scoped_ptr<syncer::SyncChangeProcessor> sync_processor, | 107 scoped_ptr<syncer::SyncChangeProcessor> sync_processor, |
96 scoped_ptr<syncer::SyncErrorFactory> error_handler) OVERRIDE; | 108 scoped_ptr<syncer::SyncErrorFactory> error_handler) OVERRIDE; |
97 virtual void StopSyncing(syncer::ModelType type) OVERRIDE; | 109 virtual void StopSyncing(syncer::ModelType type) OVERRIDE; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 } | 141 } |
130 | 142 |
131 // Return the virtual URL of the current tab, even if it's pending. | 143 // Return the virtual URL of the current tab, even if it's pending. |
132 static GURL GetCurrentVirtualURL(const SyncedTabDelegate& tab_delegate); | 144 static GURL GetCurrentVirtualURL(const SyncedTabDelegate& tab_delegate); |
133 | 145 |
134 // Return the favicon url of the current tab, even if it's pending. | 146 // Return the favicon url of the current tab, even if it's pending. |
135 static GURL GetCurrentFaviconURL(const SyncedTabDelegate& tab_delegate); | 147 static GURL GetCurrentFaviconURL(const SyncedTabDelegate& tab_delegate); |
136 | 148 |
137 FaviconCache* GetFaviconCache(); | 149 FaviconCache* GetFaviconCache(); |
138 | 150 |
139 SyncedWindowDelegatesGetter* GetSyncedWindowDelegatesGetter() const; | |
140 | |
141 // Triggers garbage collection of stale sessions (as defined by | 151 // Triggers garbage collection of stale sessions (as defined by |
142 // |stale_session_threshold_days_|). This is called automatically every | 152 // |stale_session_threshold_days_|). This is called automatically every |
143 // time we start up (via AssociateModels) and when new sessions data is | 153 // time we start up (via AssociateModels) and when new sessions data is |
144 // downloaded (sync cycles complete). | 154 // downloaded (sync cycles complete). |
145 void DoGarbageCollection(); | 155 void DoGarbageCollection(); |
146 | 156 |
147 private: | 157 private: |
148 // Keep all the links to local tab data in one place. A tab_node_id and tab | 158 // Keep all the links to local tab data in one place. A tab_node_id and tab |
149 // must be passed at creation. The tab_node_id is not mutable, although | 159 // must be passed at creation. The tab_node_id is not mutable, although |
150 // all other fields are. | 160 // all other fields are. |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
337 // proves that we are still relevant. | 347 // proves that we are still relevant. |
338 bool local_tab_pool_out_of_sync_; | 348 bool local_tab_pool_out_of_sync_; |
339 | 349 |
340 sync_driver::SyncPrefs sync_prefs_; | 350 sync_driver::SyncPrefs sync_prefs_; |
341 | 351 |
342 const Profile* const profile_; | 352 const Profile* const profile_; |
343 | 353 |
344 scoped_ptr<syncer::SyncErrorFactory> error_handler_; | 354 scoped_ptr<syncer::SyncErrorFactory> error_handler_; |
345 scoped_ptr<syncer::SyncChangeProcessor> sync_processor_; | 355 scoped_ptr<syncer::SyncChangeProcessor> sync_processor_; |
346 | 356 |
347 // Local device info provider, owned by ProfileSyncService. | 357 const SyncInternalApiDelegate* const delegate_; |
348 const LocalDeviceInfoProvider* const local_device_; | |
349 | 358 |
350 // Unique client tag. | 359 // Unique client tag. |
351 std::string current_machine_tag_; | 360 std::string current_machine_tag_; |
352 | 361 |
353 // User-visible machine name. | 362 // User-visible machine name. |
354 std::string current_session_name_; | 363 std::string current_session_name_; |
355 | 364 |
356 // SyncID for the sync node containing all the window information for this | 365 // SyncID for the sync node containing all the window information for this |
357 // client. | 366 // client. |
358 int local_session_header_node_id_; | 367 int local_session_header_node_id_; |
359 | 368 |
360 // Number of days without activity after which we consider a session to be | 369 // Number of days without activity after which we consider a session to be |
361 // stale and a candidate for garbage collection. | 370 // stale and a candidate for garbage collection. |
362 size_t stale_session_threshold_days_; | 371 size_t stale_session_threshold_days_; |
363 | 372 |
364 scoped_ptr<LocalSessionEventRouter> local_event_router_; | 373 scoped_ptr<LocalSessionEventRouter> local_event_router_; |
365 scoped_ptr<SyncedWindowDelegatesGetter> synced_window_getter_; | 374 scoped_ptr<SyncedWindowDelegatesGetter> synced_window_getter_; |
366 | 375 |
367 DISALLOW_COPY_AND_ASSIGN(SessionsSyncManager); | 376 DISALLOW_COPY_AND_ASSIGN(SessionsSyncManager); |
368 }; | 377 }; |
369 | 378 |
370 } // namespace browser_sync | 379 } // namespace browser_sync |
371 | 380 |
372 #endif // CHROME_BROWSER_SYNC_SESSIONS_SESSIONS_SYNC_MANAGER_H_ | 381 #endif // CHROME_BROWSER_SYNC_SESSIONS_SESSIONS_SYNC_MANAGER_H_ |
OLD | NEW |