| 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 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 53 class SyncedWindowDelegatesGetter; | 53 class SyncedWindowDelegatesGetter; |
| 54 | 54 |
| 55 // An interface defining the ways in which local open tab events can interact | 55 // An interface defining the ways in which local open tab events can interact |
| 56 // with session sync. All local tab events flow to sync via this interface. | 56 // with session sync. All local tab events flow to sync via this interface. |
| 57 // In that way it is analogous to sync changes flowing to the local model | 57 // In that way it is analogous to sync changes flowing to the local model |
| 58 // via ProcessSyncChanges, just with a more granular breakdown. | 58 // via ProcessSyncChanges, just with a more granular breakdown. |
| 59 class LocalSessionEventHandler { | 59 class LocalSessionEventHandler { |
| 60 public: | 60 public: |
| 61 // A local navigation event took place that affects the synced session | 61 // A local navigation event took place that affects the synced session |
| 62 // for this instance of Chrome. | 62 // for this instance of Chrome. |
| 63 virtual void OnLocalTabModified(SyncedTabDelegate* modified_tab) = 0; | 63 // Returns true if the tab had syncable data, false otherwise. |
| 64 virtual bool OnLocalTabModified(SyncedTabDelegate* modified_tab) = 0; |
| 64 | 65 |
| 65 // A local navigation occurred that triggered updates to favicon data for | 66 // A local navigation occurred that triggered updates to favicon data for |
| 66 // each page URL in |page_urls| (e.g. http://www.google.com) and the icon URL | 67 // each page URL in |page_urls| (e.g. http://www.google.com) and the icon URL |
| 67 // |icon_url| (e.g. http://www.google.com/favicon.ico). This is routed through | 68 // |icon_url| (e.g. http://www.google.com/favicon.ico). This is routed through |
| 68 // Sessions Sync so that we can filter (exclude) favicon updates for pages | 69 // Sessions Sync so that we can filter (exclude) favicon updates for pages |
| 69 // that aren't currently part of the set of local open tabs, and pass relevant | 70 // that aren't currently part of the set of local open tabs, and pass relevant |
| 70 // updates on to FaviconCache for out-of-band favicon syncing. | 71 // updates on to FaviconCache for out-of-band favicon syncing. |
| 71 virtual void OnFaviconsChanged(const std::set<GURL>& page_urls, | 72 virtual void OnFaviconsChanged(const std::set<GURL>& page_urls, |
| 72 const GURL& icon_url) = 0; | 73 const GURL& icon_url) = 0; |
| 73 }; | 74 }; |
| 74 | 75 |
| 75 // The LocalSessionEventRouter is responsible for hooking itself up to various | 76 // The LocalSessionEventRouter is responsible for hooking itself up to various |
| 76 // notification sources in the browser process and forwarding relevant | 77 // notification sources in the browser process and forwarding relevant |
| 77 // events to a handler as defined in the LocalSessionEventHandler contract. | 78 // events to a handler as defined in the LocalSessionEventHandler contract. |
| 78 class LocalSessionEventRouter { | 79 class LocalSessionEventRouter { |
| 79 public: | 80 public: |
| 80 virtual ~LocalSessionEventRouter(); | 81 virtual ~LocalSessionEventRouter(); |
| 81 virtual void StartRoutingTo(LocalSessionEventHandler* handler) = 0; | 82 virtual void StartRoutingTo(LocalSessionEventHandler* handler) = 0; |
| 82 virtual void Stop() = 0; | 83 virtual void Stop() = 0; |
| 83 }; | 84 }; |
| 84 | 85 |
| 85 // Contains all logic for associating the Chrome sessions model and | 86 // Contains all logic for associating the Chrome sessions model and |
| 86 // the sync sessions model. | 87 // the sync sessions model. |
| 87 class SessionsSyncManager : public syncer::SyncableService, | 88 class SessionsSyncManager : public syncer::SyncableService, |
| 88 public sync_driver::OpenTabsUIDelegate, | 89 public sync_driver::OpenTabsUIDelegate, |
| 89 public LocalSessionEventHandler { | 90 public LocalSessionEventHandler { |
| 90 public: | 91 public: |
| 91 SessionsSyncManager( | 92 SessionsSyncManager( |
| 93 sync_sessions::SyncSessionsClient* sessions_client, |
| 92 Profile* profile, | 94 Profile* profile, |
| 93 sync_driver::LocalDeviceInfoProvider* local_device, | 95 sync_driver::LocalDeviceInfoProvider* local_device, |
| 94 scoped_ptr<LocalSessionEventRouter> router, | 96 scoped_ptr<LocalSessionEventRouter> router, |
| 95 scoped_ptr<SyncedWindowDelegatesGetter> synced_window_getter); | 97 scoped_ptr<SyncedWindowDelegatesGetter> synced_window_getter); |
| 96 ~SessionsSyncManager() override; | 98 ~SessionsSyncManager() override; |
| 97 | 99 |
| 98 // syncer::SyncableService implementation. | 100 // syncer::SyncableService implementation. |
| 99 syncer::SyncMergeResult MergeDataAndStartSyncing( | 101 syncer::SyncMergeResult MergeDataAndStartSyncing( |
| 100 syncer::ModelType type, | 102 syncer::ModelType type, |
| 101 const syncer::SyncDataList& initial_sync_data, | 103 const syncer::SyncDataList& initial_sync_data, |
| (...skipping 18 matching lines...) Expand all Loading... |
| 120 const SessionID::id_type tab_id, | 122 const SessionID::id_type tab_id, |
| 121 const sessions::SessionTab** tab) override; | 123 const sessions::SessionTab** tab) override; |
| 122 bool GetForeignSessionTabs( | 124 bool GetForeignSessionTabs( |
| 123 const std::string& tag, | 125 const std::string& tag, |
| 124 std::vector<const sessions::SessionTab*>* tabs) override; | 126 std::vector<const sessions::SessionTab*>* tabs) override; |
| 125 void DeleteForeignSession(const std::string& tag) override; | 127 void DeleteForeignSession(const std::string& tag) override; |
| 126 bool GetLocalSession( | 128 bool GetLocalSession( |
| 127 const sync_driver::SyncedSession** local_session) override; | 129 const sync_driver::SyncedSession** local_session) override; |
| 128 | 130 |
| 129 // LocalSessionEventHandler implementation. | 131 // LocalSessionEventHandler implementation. |
| 130 void OnLocalTabModified(SyncedTabDelegate* modified_tab) override; | 132 bool OnLocalTabModified(SyncedTabDelegate* modified_tab) override; |
| 131 void OnFaviconsChanged(const std::set<GURL>& page_urls, | 133 void OnFaviconsChanged(const std::set<GURL>& page_urls, |
| 132 const GURL& icon_url) override; | 134 const GURL& icon_url) override; |
| 133 | 135 |
| 134 // Returns the tag used to uniquely identify this machine's session in the | 136 // Returns the tag used to uniquely identify this machine's session in the |
| 135 // sync model. | 137 // sync model. |
| 136 const std::string& current_machine_tag() const { | 138 const std::string& current_machine_tag() const { |
| 137 DCHECK(!current_machine_tag_.empty()); | 139 DCHECK(!current_machine_tag_.empty()); |
| 138 return current_machine_tag_; | 140 return current_machine_tag_; |
| 139 } | 141 } |
| 140 | 142 |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 336 syncer::SyncChangeList* change_output); | 338 syncer::SyncChangeList* change_output); |
| 337 | 339 |
| 338 // Stops and re-starts syncing to rebuild association mappings. | 340 // Stops and re-starts syncing to rebuild association mappings. |
| 339 // See |local_tab_pool_out_of_sync_|. | 341 // See |local_tab_pool_out_of_sync_|. |
| 340 void RebuildAssociations(); | 342 void RebuildAssociations(); |
| 341 | 343 |
| 342 // Validates the content of a SessionHeader protobuf. | 344 // Validates the content of a SessionHeader protobuf. |
| 343 // Returns false if validation fails. | 345 // Returns false if validation fails. |
| 344 static bool IsValidSessionHeader(const sync_pb::SessionHeader& header); | 346 static bool IsValidSessionHeader(const sync_pb::SessionHeader& header); |
| 345 | 347 |
| 348 // The client of this sync sessions datatype. |
| 349 sync_sessions::SyncSessionsClient* const sessions_client_; |
| 350 |
| 346 // Mapping of current open (local) tabs to their sync identifiers. | 351 // Mapping of current open (local) tabs to their sync identifiers. |
| 347 TabLinksMap local_tab_map_; | 352 TabLinksMap local_tab_map_; |
| 348 | 353 |
| 349 SyncedSessionTracker session_tracker_; | 354 SyncedSessionTracker session_tracker_; |
| 350 FaviconCache favicon_cache_; | 355 FaviconCache favicon_cache_; |
| 351 | 356 |
| 352 // Pool of used/available sync nodes associated with local tabs. | 357 // Pool of used/available sync nodes associated with local tabs. |
| 353 TabNodePool local_tab_pool_; | 358 TabNodePool local_tab_pool_; |
| 354 | 359 |
| 355 // Tracks whether our local representation of which sync nodes map to what | 360 // Tracks whether our local representation of which sync nodes map to what |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 390 | 395 |
| 391 // Owns revisiting instrumentation logic for page visit events. | 396 // Owns revisiting instrumentation logic for page visit events. |
| 392 PageRevisitBroadcaster page_revisit_broadcaster_; | 397 PageRevisitBroadcaster page_revisit_broadcaster_; |
| 393 | 398 |
| 394 DISALLOW_COPY_AND_ASSIGN(SessionsSyncManager); | 399 DISALLOW_COPY_AND_ASSIGN(SessionsSyncManager); |
| 395 }; | 400 }; |
| 396 | 401 |
| 397 } // namespace browser_sync | 402 } // namespace browser_sync |
| 398 | 403 |
| 399 #endif // CHROME_BROWSER_SYNC_SESSIONS_SESSIONS_SYNC_MANAGER_H_ | 404 #endif // CHROME_BROWSER_SYNC_SESSIONS_SESSIONS_SYNC_MANAGER_H_ |
| OLD | NEW |