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

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

Issue 367153005: Sync: Refactoring of DEVICE_INFO syncable type - Part 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed build issues in browser_tests Created 6 years, 5 months 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 25 matching lines...) Expand all
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;
46 class SyncedTabDelegate; 47 class SyncedTabDelegate;
47 class SyncedWindowDelegate; 48 class SyncedWindowDelegate;
48 class SyncedWindowDelegatesGetter; 49 class SyncedWindowDelegatesGetter;
49 50
50 // An interface defining the ways in which local open tab events can interact 51 // An interface defining the ways in which local open tab events can interact
51 // with session sync. All local tab events flow to sync via this interface. 52 // with session sync. All local tab events flow to sync via this interface.
52 // In that way it is analogous to sync changes flowing to the local model 53 // In that way it is analogous to sync changes flowing to the local model
53 // via ProcessSyncChanges, just with a more granular breakdown. 54 // via ProcessSyncChanges, just with a more granular breakdown.
54 class LocalSessionEventHandler { 55 class LocalSessionEventHandler {
55 public: 56 public:
(...skipping 19 matching lines...) Expand all
75 virtual void StartRoutingTo(LocalSessionEventHandler* handler) = 0; 76 virtual void StartRoutingTo(LocalSessionEventHandler* handler) = 0;
76 virtual void Stop() = 0; 77 virtual void Stop() = 0;
77 }; 78 };
78 79
79 // Contains all logic for associating the Chrome sessions model and 80 // Contains all logic for associating the Chrome sessions model and
80 // the sync sessions model. 81 // the sync sessions model.
81 class SessionsSyncManager : public syncer::SyncableService, 82 class SessionsSyncManager : public syncer::SyncableService,
82 public OpenTabsUIDelegate, 83 public OpenTabsUIDelegate,
83 public LocalSessionEventHandler { 84 public LocalSessionEventHandler {
84 public: 85 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
98 SessionsSyncManager(Profile* profile, 86 SessionsSyncManager(Profile* profile,
99 SyncInternalApiDelegate* delegate, 87 LocalDeviceInfoProvider* local_device_info_provider,
maniscalco 2014/07/08 21:17:53 local_device_info_provider must outlive this Sessi
stanisc 2014/07/09 21:58:36 Done.
100 scoped_ptr<LocalSessionEventRouter> router); 88 scoped_ptr<LocalSessionEventRouter> router);
101 virtual ~SessionsSyncManager(); 89 virtual ~SessionsSyncManager();
102 90
103 // syncer::SyncableService implementation. 91 // syncer::SyncableService implementation.
104 virtual syncer::SyncMergeResult MergeDataAndStartSyncing( 92 virtual syncer::SyncMergeResult MergeDataAndStartSyncing(
105 syncer::ModelType type, 93 syncer::ModelType type,
106 const syncer::SyncDataList& initial_sync_data, 94 const syncer::SyncDataList& initial_sync_data,
107 scoped_ptr<syncer::SyncChangeProcessor> sync_processor, 95 scoped_ptr<syncer::SyncChangeProcessor> sync_processor,
108 scoped_ptr<syncer::SyncErrorFactory> error_handler) OVERRIDE; 96 scoped_ptr<syncer::SyncErrorFactory> error_handler) OVERRIDE;
109 virtual void StopSyncing(syncer::ModelType type) OVERRIDE; 97 virtual void StopSyncing(syncer::ModelType type) OVERRIDE;
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 } 129 }
142 130
143 // Return the virtual URL of the current tab, even if it's pending. 131 // Return the virtual URL of the current tab, even if it's pending.
144 static GURL GetCurrentVirtualURL(const SyncedTabDelegate& tab_delegate); 132 static GURL GetCurrentVirtualURL(const SyncedTabDelegate& tab_delegate);
145 133
146 // Return the favicon url of the current tab, even if it's pending. 134 // Return the favicon url of the current tab, even if it's pending.
147 static GURL GetCurrentFaviconURL(const SyncedTabDelegate& tab_delegate); 135 static GURL GetCurrentFaviconURL(const SyncedTabDelegate& tab_delegate);
148 136
149 FaviconCache* GetFaviconCache(); 137 FaviconCache* GetFaviconCache();
150 138
139 SyncedWindowDelegatesGetter* GetSyncedWindowDelegatesGetter() const;
140
151 // Triggers garbage collection of stale sessions (as defined by 141 // Triggers garbage collection of stale sessions (as defined by
152 // |stale_session_threshold_days_|). This is called automatically every 142 // |stale_session_threshold_days_|). This is called automatically every
153 // time we start up (via AssociateModels) and when new sessions data is 143 // time we start up (via AssociateModels) and when new sessions data is
154 // downloaded (sync cycles complete). 144 // downloaded (sync cycles complete).
155 void DoGarbageCollection(); 145 void DoGarbageCollection();
156 146
157 private: 147 private:
158 // Keep all the links to local tab data in one place. A tab_node_id and tab 148 // Keep all the links to local tab data in one place. A tab_node_id and tab
159 // must be passed at creation. The tab_node_id is not mutable, although 149 // must be passed at creation. The tab_node_id is not mutable, although
160 // all other fields are. 150 // all other fields are.
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 // proves that we are still relevant. 337 // proves that we are still relevant.
348 bool local_tab_pool_out_of_sync_; 338 bool local_tab_pool_out_of_sync_;
349 339
350 sync_driver::SyncPrefs sync_prefs_; 340 sync_driver::SyncPrefs sync_prefs_;
351 341
352 const Profile* const profile_; 342 const Profile* const profile_;
353 343
354 scoped_ptr<syncer::SyncErrorFactory> error_handler_; 344 scoped_ptr<syncer::SyncErrorFactory> error_handler_;
355 scoped_ptr<syncer::SyncChangeProcessor> sync_processor_; 345 scoped_ptr<syncer::SyncChangeProcessor> sync_processor_;
356 346
357 const SyncInternalApiDelegate* const delegate_; 347 const LocalDeviceInfoProvider* const local_device_info_provider_;
358 348
359 // Unique client tag. 349 // Unique client tag.
360 std::string current_machine_tag_; 350 std::string current_machine_tag_;
361 351
362 // User-visible machine name. 352 // User-visible machine name.
363 std::string current_session_name_; 353 std::string current_session_name_;
364 354
365 // SyncID for the sync node containing all the window information for this 355 // SyncID for the sync node containing all the window information for this
366 // client. 356 // client.
367 int local_session_header_node_id_; 357 int local_session_header_node_id_;
368 358
369 // Number of days without activity after which we consider a session to be 359 // Number of days without activity after which we consider a session to be
370 // stale and a candidate for garbage collection. 360 // stale and a candidate for garbage collection.
371 size_t stale_session_threshold_days_; 361 size_t stale_session_threshold_days_;
372 362
373 scoped_ptr<LocalSessionEventRouter> local_event_router_; 363 scoped_ptr<LocalSessionEventRouter> local_event_router_;
374 scoped_ptr<SyncedWindowDelegatesGetter> synced_window_getter_; 364 scoped_ptr<SyncedWindowDelegatesGetter> synced_window_getter_;
375 365
376 DISALLOW_COPY_AND_ASSIGN(SessionsSyncManager); 366 DISALLOW_COPY_AND_ASSIGN(SessionsSyncManager);
377 }; 367 };
378 368
379 } // namespace browser_sync 369 } // namespace browser_sync
380 370
381 #endif // CHROME_BROWSER_SYNC_SESSIONS_SESSIONS_SYNC_MANAGER_H_ 371 #endif // CHROME_BROWSER_SYNC_SESSIONS_SESSIONS_SYNC_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698