Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(318)

Side by Side Diff: chrome/browser/sync/sessions/sessions_sync_manager.h

Issue 1408643002: [Sync] Componentize synced_tab_delegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test broken by rebase Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 class SessionSpecifics; 42 class SessionSpecifics;
43 class SessionTab; 43 class SessionTab;
44 class SessionWindow; 44 class SessionWindow;
45 class TabNavigation; 45 class TabNavigation;
46 } // namespace sync_pb 46 } // namespace sync_pb
47 47
48 namespace browser_sync { 48 namespace browser_sync {
49 49
50 class DataTypeErrorHandler; 50 class DataTypeErrorHandler;
51 class SyncedTabDelegate; 51 class SyncedTabDelegate;
52 class SyncedWindowDelegate;
53 class SyncedWindowDelegatesGetter; 52 class SyncedWindowDelegatesGetter;
54 53
55 // An interface defining the ways in which local open tab events can interact 54 // 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. 55 // 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 56 // In that way it is analogous to sync changes flowing to the local model
58 // via ProcessSyncChanges, just with a more granular breakdown. 57 // via ProcessSyncChanges, just with a more granular breakdown.
59 class LocalSessionEventHandler { 58 class LocalSessionEventHandler {
60 public: 59 public:
61 // A local navigation event took place that affects the synced session 60 // A local navigation event took place that affects the synced session
62 // for this instance of Chrome. 61 // for this instance of Chrome.
(...skipping 18 matching lines...) Expand all
81 virtual void StartRoutingTo(LocalSessionEventHandler* handler) = 0; 80 virtual void StartRoutingTo(LocalSessionEventHandler* handler) = 0;
82 virtual void Stop() = 0; 81 virtual void Stop() = 0;
83 }; 82 };
84 83
85 // Contains all logic for associating the Chrome sessions model and 84 // Contains all logic for associating the Chrome sessions model and
86 // the sync sessions model. 85 // the sync sessions model.
87 class SessionsSyncManager : public syncer::SyncableService, 86 class SessionsSyncManager : public syncer::SyncableService,
88 public sync_driver::OpenTabsUIDelegate, 87 public sync_driver::OpenTabsUIDelegate,
89 public LocalSessionEventHandler { 88 public LocalSessionEventHandler {
90 public: 89 public:
91 SessionsSyncManager( 90 SessionsSyncManager(sync_sessions::SyncSessionsClient* sessions_client,
92 Profile* profile, 91 Profile* profile,
93 sync_driver::LocalDeviceInfoProvider* local_device, 92 sync_driver::LocalDeviceInfoProvider* local_device,
94 scoped_ptr<LocalSessionEventRouter> router, 93 scoped_ptr<LocalSessionEventRouter> router);
95 scoped_ptr<SyncedWindowDelegatesGetter> synced_window_getter);
96 ~SessionsSyncManager() override; 94 ~SessionsSyncManager() override;
97 95
98 // syncer::SyncableService implementation. 96 // syncer::SyncableService implementation.
99 syncer::SyncMergeResult MergeDataAndStartSyncing( 97 syncer::SyncMergeResult MergeDataAndStartSyncing(
100 syncer::ModelType type, 98 syncer::ModelType type,
101 const syncer::SyncDataList& initial_sync_data, 99 const syncer::SyncDataList& initial_sync_data,
102 scoped_ptr<syncer::SyncChangeProcessor> sync_processor, 100 scoped_ptr<syncer::SyncChangeProcessor> sync_processor,
103 scoped_ptr<syncer::SyncErrorFactory> error_handler) override; 101 scoped_ptr<syncer::SyncErrorFactory> error_handler) override;
104 void StopSyncing(syncer::ModelType type) override; 102 void StopSyncing(syncer::ModelType type) override;
105 syncer::SyncDataList GetAllSyncData(syncer::ModelType type) const override; 103 syncer::SyncDataList GetAllSyncData(syncer::ModelType type) const override;
(...skipping 26 matching lines...) Expand all
132 const GURL& icon_url) override; 130 const GURL& icon_url) override;
133 131
134 // Returns the tag used to uniquely identify this machine's session in the 132 // Returns the tag used to uniquely identify this machine's session in the
135 // sync model. 133 // sync model.
136 const std::string& current_machine_tag() const { 134 const std::string& current_machine_tag() const {
137 DCHECK(!current_machine_tag_.empty()); 135 DCHECK(!current_machine_tag_.empty());
138 return current_machine_tag_; 136 return current_machine_tag_;
139 } 137 }
140 138
141 // Return the virtual URL of the current tab, even if it's pending. 139 // Return the virtual URL of the current tab, even if it's pending.
142 static GURL GetCurrentVirtualURL(const SyncedTabDelegate& tab_delegate); 140 static GURL GetCurrentVirtualURL(const SyncedTabDelegate& tab_delegate);
sdefresne 2015/10/28 10:45:46 I think you forgot to remove this method declarati
143 141
144 // Return the favicon url of the current tab, even if it's pending. 142 // Return the favicon url of the current tab, even if it's pending.
145 static GURL GetCurrentFaviconURL(const SyncedTabDelegate& tab_delegate); 143 static GURL GetCurrentFaviconURL(const SyncedTabDelegate& tab_delegate);
sdefresne 2015/10/28 10:45:46 Same here.
146 144
147 FaviconCache* GetFaviconCache(); 145 FaviconCache* GetFaviconCache();
148 146
149 SyncedWindowDelegatesGetter* GetSyncedWindowDelegatesGetter() const; 147 SyncedWindowDelegatesGetter* GetSyncedWindowDelegatesGetter() const;
150 148
151 // Triggers garbage collection of stale sessions (as defined by 149 // Triggers garbage collection of stale sessions (as defined by
152 // |stale_session_threshold_days_|). This is called automatically every 150 // |stale_session_threshold_days_|). This is called automatically every
153 // time we start up (via AssociateModels) and when new sessions data is 151 // time we start up (via AssociateModels) and when new sessions data is
154 // downloaded (sync cycles complete). 152 // downloaded (sync cycles complete).
155 void DoGarbageCollection(); 153 void DoGarbageCollection();
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 296
299 // Loads and reassociates the local tabs referenced in |tabs|. 297 // Loads and reassociates the local tabs referenced in |tabs|.
300 // |change_output| *must* be provided as a link to the SyncChange pipeline 298 // |change_output| *must* be provided as a link to the SyncChange pipeline
301 // that exists in the caller's context. This function will append necessary 299 // that exists in the caller's context. This function will append necessary
302 // changes for processing later. 300 // changes for processing later.
303 void AssociateTab(SyncedTabDelegate* const tab, 301 void AssociateTab(SyncedTabDelegate* const tab,
304 syncer::SyncChangeList* change_output); 302 syncer::SyncChangeList* change_output);
305 303
306 // Set |session_tab| from |tab_delegate| and |mtime|. 304 // Set |session_tab| from |tab_delegate| and |mtime|.
307 static void SetSessionTabFromDelegate( 305 static void SetSessionTabFromDelegate(
306 SyncedWindowDelegatesGetter* synced_window_getter,
308 const SyncedTabDelegate& tab_delegate, 307 const SyncedTabDelegate& tab_delegate,
309 base::Time mtime, 308 base::Time mtime,
310 sessions::SessionTab* session_tab); 309 sessions::SessionTab* session_tab);
311 310
312 // Sets |variation_ids| field of |session_tab| with the ids of the currently 311 // Sets |variation_ids| field of |session_tab| with the ids of the currently
313 // assigned variations which should be sent to sync. 312 // assigned variations which should be sent to sync.
314 static void SetVariationIds(sessions::SessionTab* session_tab); 313 static void SetVariationIds(sessions::SessionTab* session_tab);
315 314
316 // Populates |specifics| based on the data in |tab_delegate|. 315 // Populates |specifics| based on the data in |tab_delegate|.
317 void LocalTabDelegateToSpecifics(const SyncedTabDelegate& tab_delegate, 316 void LocalTabDelegateToSpecifics(const SyncedTabDelegate& tab_delegate,
(...skipping 18 matching lines...) Expand all
336 syncer::SyncChangeList* change_output); 335 syncer::SyncChangeList* change_output);
337 336
338 // Stops and re-starts syncing to rebuild association mappings. 337 // Stops and re-starts syncing to rebuild association mappings.
339 // See |local_tab_pool_out_of_sync_|. 338 // See |local_tab_pool_out_of_sync_|.
340 void RebuildAssociations(); 339 void RebuildAssociations();
341 340
342 // Validates the content of a SessionHeader protobuf. 341 // Validates the content of a SessionHeader protobuf.
343 // Returns false if validation fails. 342 // Returns false if validation fails.
344 static bool IsValidSessionHeader(const sync_pb::SessionHeader& header); 343 static bool IsValidSessionHeader(const sync_pb::SessionHeader& header);
345 344
345 // The client of this sync sessions datatype.
346 sync_sessions::SyncSessionsClient* const sessions_client_;
347
346 // Mapping of current open (local) tabs to their sync identifiers. 348 // Mapping of current open (local) tabs to their sync identifiers.
347 TabLinksMap local_tab_map_; 349 TabLinksMap local_tab_map_;
348 350
349 SyncedSessionTracker session_tracker_; 351 SyncedSessionTracker session_tracker_;
350 FaviconCache favicon_cache_; 352 FaviconCache favicon_cache_;
351 353
352 // Pool of used/available sync nodes associated with local tabs. 354 // Pool of used/available sync nodes associated with local tabs.
353 TabNodePool local_tab_pool_; 355 TabNodePool local_tab_pool_;
354 356
355 // Tracks whether our local representation of which sync nodes map to what 357 // Tracks whether our local representation of which sync nodes map to what
(...skipping 23 matching lines...) Expand all
379 381
380 // SyncID for the sync node containing all the window information for this 382 // SyncID for the sync node containing all the window information for this
381 // client. 383 // client.
382 int local_session_header_node_id_; 384 int local_session_header_node_id_;
383 385
384 // Number of days without activity after which we consider a session to be 386 // Number of days without activity after which we consider a session to be
385 // stale and a candidate for garbage collection. 387 // stale and a candidate for garbage collection.
386 size_t stale_session_threshold_days_; 388 size_t stale_session_threshold_days_;
387 389
388 scoped_ptr<LocalSessionEventRouter> local_event_router_; 390 scoped_ptr<LocalSessionEventRouter> local_event_router_;
389 scoped_ptr<SyncedWindowDelegatesGetter> synced_window_getter_; 391 SyncedWindowDelegatesGetter* synced_window_getter_;
390 392
391 // Owns revisiting instrumentation logic for page visit events. 393 // Owns revisiting instrumentation logic for page visit events.
392 PageRevisitBroadcaster page_revisit_broadcaster_; 394 PageRevisitBroadcaster page_revisit_broadcaster_;
393 395
394 DISALLOW_COPY_AND_ASSIGN(SessionsSyncManager); 396 DISALLOW_COPY_AND_ASSIGN(SessionsSyncManager);
395 }; 397 };
396 398
397 } // namespace browser_sync 399 } // namespace browser_sync
398 400
399 #endif // CHROME_BROWSER_SYNC_SESSIONS_SESSIONS_SYNC_MANAGER_H_ 401 #endif // CHROME_BROWSER_SYNC_SESSIONS_SESSIONS_SYNC_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698