Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 CHROME_BROWSER_SYNC_PROFILE_SYNC_SERVICE_H_ | 5 #ifndef CHROME_BROWSER_SYNC_PROFILE_SYNC_SERVICE_H_ |
| 6 #define CHROME_BROWSER_SYNC_PROFILE_SYNC_SERVICE_H_ | 6 #define CHROME_BROWSER_SYNC_PROFILE_SYNC_SERVICE_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 24 #include "chrome/browser/sync/glue/data_type_controller.h" | 24 #include "chrome/browser/sync/glue/data_type_controller.h" |
| 25 #include "chrome/browser/sync/glue/data_type_encryption_handler.h" | 25 #include "chrome/browser/sync/glue/data_type_encryption_handler.h" |
| 26 #include "chrome/browser/sync/glue/data_type_manager.h" | 26 #include "chrome/browser/sync/glue/data_type_manager.h" |
| 27 #include "chrome/browser/sync/glue/data_type_manager_observer.h" | 27 #include "chrome/browser/sync/glue/data_type_manager_observer.h" |
| 28 #include "chrome/browser/sync/glue/failed_data_types_handler.h" | 28 #include "chrome/browser/sync/glue/failed_data_types_handler.h" |
| 29 #include "chrome/browser/sync/glue/sync_backend_host.h" | 29 #include "chrome/browser/sync/glue/sync_backend_host.h" |
| 30 #include "chrome/browser/sync/glue/sync_frontend.h" | 30 #include "chrome/browser/sync/glue/sync_frontend.h" |
| 31 #include "chrome/browser/sync/glue/synced_device_tracker.h" | 31 #include "chrome/browser/sync/glue/synced_device_tracker.h" |
| 32 #include "chrome/browser/sync/profile_sync_service_base.h" | 32 #include "chrome/browser/sync/profile_sync_service_base.h" |
| 33 #include "chrome/browser/sync/profile_sync_service_observer.h" | 33 #include "chrome/browser/sync/profile_sync_service_observer.h" |
| 34 #include "chrome/browser/sync/sessions2/sessions_sync_manager.h" | |
| 34 #include "chrome/browser/sync/sync_prefs.h" | 35 #include "chrome/browser/sync/sync_prefs.h" |
| 35 #include "components/browser_context_keyed_service/browser_context_keyed_service .h" | 36 #include "components/browser_context_keyed_service/browser_context_keyed_service .h" |
| 36 #include "content/public/browser/notification_observer.h" | 37 #include "content/public/browser/notification_observer.h" |
| 37 #include "content/public/browser/notification_registrar.h" | 38 #include "content/public/browser/notification_registrar.h" |
| 38 #include "content/public/browser/notification_types.h" | 39 #include "content/public/browser/notification_types.h" |
| 39 #include "google_apis/gaia/google_service_auth_error.h" | 40 #include "google_apis/gaia/google_service_auth_error.h" |
| 40 #include "google_apis/gaia/oauth2_token_service.h" | 41 #include "google_apis/gaia/oauth2_token_service.h" |
| 41 #include "net/base/backoff_entry.h" | 42 #include "net/base/backoff_entry.h" |
| 42 #include "sync/internal_api/public/base/model_type.h" | 43 #include "sync/internal_api/public/base/model_type.h" |
| 43 #include "sync/internal_api/public/engine/model_safe_worker.h" | 44 #include "sync/internal_api/public/engine/model_safe_worker.h" |
| 44 #include "sync/internal_api/public/sync_manager_factory.h" | 45 #include "sync/internal_api/public/sync_manager_factory.h" |
| 45 #include "sync/internal_api/public/util/experiments.h" | 46 #include "sync/internal_api/public/util/experiments.h" |
| 46 #include "sync/internal_api/public/util/unrecoverable_error_handler.h" | 47 #include "sync/internal_api/public/util/unrecoverable_error_handler.h" |
| 47 #include "sync/js/sync_js_controller.h" | 48 #include "sync/js/sync_js_controller.h" |
| 48 #include "url/gurl.h" | 49 #include "url/gurl.h" |
| 49 | 50 |
| 50 class Profile; | 51 class Profile; |
| 51 class ProfileOAuth2TokenService; | 52 class ProfileOAuth2TokenService; |
| 52 class ProfileSyncComponentsFactory; | 53 class ProfileSyncComponentsFactory; |
| 53 class SigninManagerBase; | 54 class SigninManagerBase; |
| 54 class SyncGlobalError; | 55 class SyncGlobalError; |
| 55 | 56 |
| 56 namespace browser_sync { | 57 namespace browser_sync { |
| 57 class BackendMigrator; | 58 class BackendMigrator; |
| 58 class ChangeProcessor; | 59 class ChangeProcessor; |
| 59 class DataTypeManager; | 60 class DataTypeManager; |
| 60 class DeviceInfo; | 61 class DeviceInfo; |
| 62 class FaviconCache; | |
| 61 class JsController; | 63 class JsController; |
| 64 class OpenTabsUIDelegate; | |
| 62 class SessionModelAssociator; | 65 class SessionModelAssociator; |
| 63 | 66 |
| 64 namespace sessions { | 67 namespace sessions { |
| 65 class SyncSessionSnapshot; | 68 class SyncSessionSnapshot; |
| 66 } // namespace sessions | 69 } // namespace sessions |
| 67 } // namespace browser_sync | 70 } // namespace browser_sync |
| 68 | 71 |
| 69 namespace syncer { | 72 namespace syncer { |
| 70 class BaseTransaction; | 73 class BaseTransaction; |
| 71 struct SyncCredentials; | 74 struct SyncCredentials; |
| 72 struct UserShare; | 75 struct UserShare; |
| 73 } // namespace syncer | 76 } // namespace syncer |
| 74 | 77 |
| 75 namespace sync_pb { | 78 namespace sync_pb { |
| 76 class EncryptedData; | 79 class EncryptedData; |
| 77 } // namespace sync_pb | 80 } // namespace sync_pb |
| 78 | 81 |
| 82 using browser_sync::SessionsSyncManager; | |
| 83 | |
| 79 // ProfileSyncService is the layer between browser subsystems like bookmarks, | 84 // ProfileSyncService is the layer between browser subsystems like bookmarks, |
| 80 // and the sync backend. Each subsystem is logically thought of as being | 85 // and the sync backend. Each subsystem is logically thought of as being |
| 81 // a sync datatype. | 86 // a sync datatype. |
| 82 // | 87 // |
| 83 // Individual datatypes can, at any point, be in a variety of stages of being | 88 // Individual datatypes can, at any point, be in a variety of stages of being |
| 84 // "enabled". Here are some specific terms for concepts used in this class: | 89 // "enabled". Here are some specific terms for concepts used in this class: |
| 85 // | 90 // |
| 86 // 'Registered' (feature suppression for a datatype) | 91 // 'Registered' (feature suppression for a datatype) |
| 87 // | 92 // |
| 88 // When a datatype is registered, the user has the option of syncing it. | 93 // When a datatype is registered, the user has the option of syncing it. |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 152 // called while the user is actively configuring their account, and then | 157 // called while the user is actively configuring their account, and then |
| 153 // SetSetupInProgress(false) should be called when configuration is complete. | 158 // SetSetupInProgress(false) should be called when configuration is complete. |
| 154 // When SetSyncSetupCompleted() == false, but SetSetupInProgress(true) has | 159 // When SetSyncSetupCompleted() == false, but SetSetupInProgress(true) has |
| 155 // been called, then the sync engine knows not to download any user data. | 160 // been called, then the sync engine knows not to download any user data. |
| 156 // | 161 // |
| 157 // When initial sync is complete, the UI code should call | 162 // When initial sync is complete, the UI code should call |
| 158 // SetSyncSetupCompleted() followed by SetSetupInProgress(false) - this will | 163 // SetSyncSetupCompleted() followed by SetSetupInProgress(false) - this will |
| 159 // tell the sync engine that setup is completed and it can begin downloading | 164 // tell the sync engine that setup is completed and it can begin downloading |
| 160 // data from the sync server. | 165 // data from the sync server. |
| 161 // | 166 // |
| 162 class ProfileSyncService : public ProfileSyncServiceBase, | 167 class ProfileSyncService |
| 163 public browser_sync::SyncFrontend, | 168 : public ProfileSyncServiceBase, |
| 164 public browser_sync::SyncPrefObserver, | 169 public browser_sync::SyncFrontend, |
| 165 public browser_sync::DataTypeManagerObserver, | 170 public browser_sync::SyncPrefObserver, |
| 166 public syncer::UnrecoverableErrorHandler, | 171 public browser_sync::DataTypeManagerObserver, |
| 167 public content::NotificationObserver, | 172 public syncer::UnrecoverableErrorHandler, |
| 168 public BrowserContextKeyedService, | 173 public content::NotificationObserver, |
| 169 public browser_sync::DataTypeEncryptionHandler, | 174 public BrowserContextKeyedService, |
| 170 public OAuth2TokenService::Consumer, | 175 public browser_sync::DataTypeEncryptionHandler, |
| 171 public OAuth2TokenService::Observer { | 176 public OAuth2TokenService::Consumer, |
| 177 public OAuth2TokenService::Observer, | |
| 178 public SessionsSyncManager::SyncInternalApiDelegate { | |
| 172 public: | 179 public: |
| 173 typedef browser_sync::SyncBackendHost::Status Status; | 180 typedef browser_sync::SyncBackendHost::Status Status; |
| 174 | 181 |
| 175 // Status of sync server connection, sync token and token request. | 182 // Status of sync server connection, sync token and token request. |
| 176 struct SyncTokenStatus { | 183 struct SyncTokenStatus { |
| 177 SyncTokenStatus(); | 184 SyncTokenStatus(); |
| 178 ~SyncTokenStatus(); | 185 ~SyncTokenStatus(); |
| 179 | 186 |
| 180 // Sync server connection status reported by sync backend. | 187 // Sync server connection status reported by sync backend. |
| 181 base::Time connection_status_update_time; | 188 base::Time connection_status_update_time; |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 292 // Registers a data type controller with the sync service. This | 299 // Registers a data type controller with the sync service. This |
| 293 // makes the data type controller available for use, it does not | 300 // makes the data type controller available for use, it does not |
| 294 // enable or activate the synchronization of the data type (see | 301 // enable or activate the synchronization of the data type (see |
| 295 // ActivateDataType). Takes ownership of the pointer. | 302 // ActivateDataType). Takes ownership of the pointer. |
| 296 void RegisterDataTypeController( | 303 void RegisterDataTypeController( |
| 297 browser_sync::DataTypeController* data_type_controller); | 304 browser_sync::DataTypeController* data_type_controller); |
| 298 | 305 |
| 299 // Returns the session model associator associated with this type, but only if | 306 // Returns the session model associator associated with this type, but only if |
| 300 // the associator is running. If it is doing anything else, it will return | 307 // the associator is running. If it is doing anything else, it will return |
| 301 // null. | 308 // null. |
| 302 // TODO(zea): Figure out a better way to expose this to the UI elements that | 309 // |
| 303 // need it. | 310 // ### DONT USE THIS ANYMORE! *** |
|
rlarocque
2013/11/18 23:20:08
That's a pretty strong comment.
nit: Could you be
tim (not reviewing)
2013/11/20 18:38:57
Yeah, I want to be a bit scary :) I'll be removin
| |
| 304 virtual browser_sync::SessionModelAssociator* GetSessionModelAssociator(); | 311 // If you think you want to use this, think again! Can you use |
| 312 // GetOpenTabsUIDelegate instead? | |
| 313 // TODO(tim): Remove this method. | |
| 314 virtual browser_sync::SessionModelAssociator* | |
| 315 GetSessionModelAssociatorDeprecated(); | |
| 305 | 316 |
| 317 // Return the active OpenTabsUIDelegate. If sessions is not enabled or not | |
| 318 // currently syncing, returns NULL. | |
| 319 virtual browser_sync::OpenTabsUIDelegate* GetOpenTabsUIDelegate(); | |
| 320 | |
| 321 // Returns the SyncableService for syncer::SESSIONS. | |
| 322 virtual syncer::SyncableService* GetSessionsSyncableService(); | |
| 323 | |
| 324 // SyncInternalApiDelegate implementation. | |
| 325 // | |
| 306 // Returns sync's representation of the local device info. | 326 // Returns sync's representation of the local device info. |
| 307 // Return value is an empty scoped_ptr if the device info is unavailable. | 327 // Return value is an empty scoped_ptr if the device info is unavailable. |
| 308 virtual scoped_ptr<browser_sync::DeviceInfo> GetLocalDeviceInfo() const; | 328 virtual scoped_ptr<browser_sync::DeviceInfo> GetLocalDeviceInfo() |
| 329 const OVERRIDE; | |
| 330 | |
| 331 // Gets the guid for the local device. Can be used by other layers to | |
| 332 // to distinguish sync data that belongs to the local device vs data | |
| 333 // that belongs to remote devices. Returns empty string if sync is not | |
| 334 // initialized. | |
| 335 virtual std::string GetLocalDeviceGUID() const OVERRIDE; | |
|
rlarocque
2013/11/18 23:20:08
Is this the sync cache GUID? If so, could you ren
tim (not reviewing)
2013/11/20 18:38:57
Good point. I actually had it called CacheGuid (s
| |
| 309 | 336 |
| 310 // Returns sync's representation of the device info for a client identified | 337 // Returns sync's representation of the device info for a client identified |
| 311 // by |client_id|. Return value is an empty scoped ptr if the device info | 338 // by |client_id|. Return value is an empty scoped ptr if the device info |
| 312 // is unavailable. | 339 // is unavailable. |
| 313 virtual scoped_ptr<browser_sync::DeviceInfo> GetDeviceInfo( | 340 virtual scoped_ptr<browser_sync::DeviceInfo> GetDeviceInfo( |
| 314 const std::string& client_id) const; | 341 const std::string& client_id) const; |
| 315 | 342 |
| 316 // Gets the device info for all devices signed into the account associated | 343 // Gets the device info for all devices signed into the account associated |
| 317 // with this profile. | 344 // with this profile. |
| 318 virtual ScopedVector<browser_sync::DeviceInfo> GetAllSignedInDevices() const; | 345 virtual ScopedVector<browser_sync::DeviceInfo> GetAllSignedInDevices() const; |
| 319 | 346 |
| 320 // Gets the partnership guid for the local device. Can be used by other | |
| 321 // layers to distinguish sync data that belongs to the local device vs | |
| 322 // data that belong to remote devices. Returns null if sync is not | |
| 323 // initialized. | |
| 324 virtual std::string GetLocalDeviceGUID() const; | |
| 325 | |
| 326 // Notifies the observer of any device info changes. | 347 // Notifies the observer of any device info changes. |
| 327 virtual void AddObserverForDeviceInfoChange( | 348 virtual void AddObserverForDeviceInfoChange( |
| 328 browser_sync::SyncedDeviceTracker::Observer* observer); | 349 browser_sync::SyncedDeviceTracker::Observer* observer); |
| 329 | 350 |
| 330 // Removes the observer from device info notification. | 351 // Removes the observer from device info notification. |
| 331 virtual void RemoveObserverForDeviceInfoChange( | 352 virtual void RemoveObserverForDeviceInfoChange( |
| 332 browser_sync::SyncedDeviceTracker::Observer* observer); | 353 browser_sync::SyncedDeviceTracker::Observer* observer); |
| 333 | 354 |
| 334 // Fills state_map with a map of current data types that are possible to | 355 // Fills state_map with a map of current data types that are possible to |
| 335 // sync, as well as their states. | 356 // sync, as well as their states. |
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 668 | 689 |
| 669 // Called when a datatype (SyncableService) has a need for sync to start | 690 // Called when a datatype (SyncableService) has a need for sync to start |
| 670 // ASAP, presumably because a local change event has occurred but we're | 691 // ASAP, presumably because a local change event has occurred but we're |
| 671 // still in deferred start mode, meaning the SyncableService hasn't been | 692 // still in deferred start mode, meaning the SyncableService hasn't been |
| 672 // told to MergeDataAndStartSyncing yet. | 693 // told to MergeDataAndStartSyncing yet. |
| 673 void OnDataTypeRequestsSyncStartup(syncer::ModelType type); | 694 void OnDataTypeRequestsSyncStartup(syncer::ModelType type); |
| 674 | 695 |
| 675 // Return sync token status. | 696 // Return sync token status. |
| 676 SyncTokenStatus GetSyncTokenStatus() const; | 697 SyncTokenStatus GetSyncTokenStatus() const; |
| 677 | 698 |
| 699 browser_sync::FaviconCache* GetFaviconCache(); | |
| 700 | |
| 678 protected: | 701 protected: |
| 679 // Used by test classes that derive from ProfileSyncService. | 702 // Used by test classes that derive from ProfileSyncService. |
| 680 virtual browser_sync::SyncBackendHost* GetBackendForTest(); | 703 virtual browser_sync::SyncBackendHost* GetBackendForTest(); |
| 681 | 704 |
| 682 // Helper to configure the priority data types. | 705 // Helper to configure the priority data types. |
| 683 void ConfigurePriorityDataTypes(); | 706 void ConfigurePriorityDataTypes(); |
| 684 | 707 |
| 685 // Helper to install and configure a data type manager. | 708 // Helper to install and configure a data type manager. |
| 686 void ConfigureDataTypeManager(); | 709 void ConfigureDataTypeManager(); |
| 687 | 710 |
| (...skipping 319 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1007 base::WeakPtrFactory<ProfileSyncService> weak_factory_; | 1030 base::WeakPtrFactory<ProfileSyncService> weak_factory_; |
| 1008 | 1031 |
| 1009 // States related to sync token and connection. | 1032 // States related to sync token and connection. |
| 1010 base::Time connection_status_update_time_; | 1033 base::Time connection_status_update_time_; |
| 1011 syncer::ConnectionStatus connection_status_; | 1034 syncer::ConnectionStatus connection_status_; |
| 1012 base::Time token_request_time_; | 1035 base::Time token_request_time_; |
| 1013 base::Time token_receive_time_; | 1036 base::Time token_receive_time_; |
| 1014 GoogleServiceAuthError last_get_token_error_; | 1037 GoogleServiceAuthError last_get_token_error_; |
| 1015 base::Time next_token_request_time_; | 1038 base::Time next_token_request_time_; |
| 1016 | 1039 |
| 1040 scoped_ptr<SessionsSyncManager> sessions_sync_manager_; | |
| 1041 | |
| 1017 DISALLOW_COPY_AND_ASSIGN(ProfileSyncService); | 1042 DISALLOW_COPY_AND_ASSIGN(ProfileSyncService); |
| 1018 }; | 1043 }; |
| 1019 | 1044 |
| 1020 bool ShouldShowActionOnUI( | 1045 bool ShouldShowActionOnUI( |
| 1021 const syncer::SyncProtocolError& error); | 1046 const syncer::SyncProtocolError& error); |
| 1022 | 1047 |
| 1023 | 1048 |
| 1024 #endif // CHROME_BROWSER_SYNC_PROFILE_SYNC_SERVICE_H_ | 1049 #endif // CHROME_BROWSER_SYNC_PROFILE_SYNC_SERVICE_H_ |
| OLD | NEW |