| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 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 <map> | 9 #include <map> |
| 10 | 10 |
| 11 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
| 12 #include "base/observer_list.h" | 12 #include "base/observer_list.h" |
| 13 #include "base/scoped_ptr.h" | 13 #include "base/scoped_ptr.h" |
| 14 #include "base/time.h" | 14 #include "base/time.h" |
| 15 #include "chrome/browser/google_service_auth_error.h" | 15 #include "chrome/browser/google_service_auth_error.h" |
| 16 #include "chrome/browser/profile.h" | 16 #include "chrome/browser/profile.h" |
| 17 #include "chrome/browser/sync/glue/data_type_controller.h" | 17 #include "chrome/browser/sync/glue/data_type_controller.h" |
| 18 #include "chrome/browser/sync/glue/data_type_manager.h" | 18 #include "chrome/browser/sync/glue/data_type_manager.h" |
| 19 #include "chrome/browser/sync/glue/sync_backend_host.h" | 19 #include "chrome/browser/sync/glue/sync_backend_host.h" |
| 20 #include "chrome/browser/sync/notification_method.h" | 20 #include "chrome/browser/sync/notification_method.h" |
| 21 #include "chrome/browser/sync/sync_setup_wizard.h" | 21 #include "chrome/browser/sync/sync_setup_wizard.h" |
| 22 #include "chrome/browser/sync/syncable/model_type.h" | 22 #include "chrome/browser/sync/syncable/model_type.h" |
| 23 #include "chrome/browser/sync/unrecoverable_error_handler.h" | 23 #include "chrome/browser/sync/unrecoverable_error_handler.h" |
| 24 #include "chrome/common/notification_observer.h" |
| 25 #include "chrome/common/notification_registrar.h" |
| 24 #include "googleurl/src/gurl.h" | 26 #include "googleurl/src/gurl.h" |
| 25 #include "testing/gtest/include/gtest/gtest_prod.h" | 27 #include "testing/gtest/include/gtest/gtest_prod.h" |
| 26 | 28 |
| 29 class NotificationDetails; |
| 30 class NotificationSource; |
| 31 class NotificationType; |
| 32 |
| 27 // Various UI components such as the New Tab page can be driven by observing | 33 // Various UI components such as the New Tab page can be driven by observing |
| 28 // the ProfileSyncService through this interface. | 34 // the ProfileSyncService through this interface. |
| 29 class ProfileSyncServiceObserver { | 35 class ProfileSyncServiceObserver { |
| 30 public: | 36 public: |
| 31 // When one of the following events occurs, OnStateChanged() is called. | 37 // When one of the following events occurs, OnStateChanged() is called. |
| 32 // Observers should query the service to determine what happened. | 38 // Observers should query the service to determine what happened. |
| 33 // - We initialized successfully. | 39 // - We initialized successfully. |
| 34 // - There was an authentication error and the user needs to reauthenticate. | 40 // - There was an authentication error and the user needs to reauthenticate. |
| 35 // - The sync servers are unavailable at this time. | 41 // - The sync servers are unavailable at this time. |
| 36 // - Credentials are now in flight for authentication. | 42 // - Credentials are now in flight for authentication. |
| 37 virtual void OnStateChanged() = 0; | 43 virtual void OnStateChanged() = 0; |
| 38 protected: | 44 protected: |
| 39 virtual ~ProfileSyncServiceObserver() { } | 45 virtual ~ProfileSyncServiceObserver() { } |
| 40 }; | 46 }; |
| 41 | 47 |
| 42 // ProfileSyncService is the layer between browser subsystems like bookmarks, | 48 // ProfileSyncService is the layer between browser subsystems like bookmarks, |
| 43 // and the sync backend. | 49 // and the sync backend. |
| 44 class ProfileSyncService : public browser_sync::SyncFrontend, | 50 class ProfileSyncService : public browser_sync::SyncFrontend, |
| 45 public browser_sync::UnrecoverableErrorHandler { | 51 public browser_sync::UnrecoverableErrorHandler, |
| 52 public NotificationObserver { |
| 46 public: | 53 public: |
| 47 typedef ProfileSyncServiceObserver Observer; | 54 typedef ProfileSyncServiceObserver Observer; |
| 48 typedef browser_sync::SyncBackendHost::Status Status; | 55 typedef browser_sync::SyncBackendHost::Status Status; |
| 49 | 56 |
| 50 enum SyncEventCodes { | 57 enum SyncEventCodes { |
| 51 MIN_SYNC_EVENT_CODE = 0, | 58 MIN_SYNC_EVENT_CODE = 0, |
| 52 | 59 |
| 53 // Events starting the sync service. | 60 // Events starting the sync service. |
| 54 START_FROM_NTP = 1, // Sync was started from the ad in NTP | 61 START_FROM_NTP = 1, // Sync was started from the ad in NTP |
| 55 START_FROM_WRENCH = 2, // Sync was started from the Wrench menu. | 62 START_FROM_WRENCH = 2, // Sync was started from the Wrench menu. |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 195 | 202 |
| 196 browser_sync::SyncBackendHost* backend() { return backend_.get(); } | 203 browser_sync::SyncBackendHost* backend() { return backend_.get(); } |
| 197 | 204 |
| 198 virtual void ActivateDataType( | 205 virtual void ActivateDataType( |
| 199 browser_sync::DataTypeController* data_type_controller, | 206 browser_sync::DataTypeController* data_type_controller, |
| 200 browser_sync::ChangeProcessor* change_processor); | 207 browser_sync::ChangeProcessor* change_processor); |
| 201 virtual void DeactivateDataType( | 208 virtual void DeactivateDataType( |
| 202 browser_sync::DataTypeController* data_type_controller, | 209 browser_sync::DataTypeController* data_type_controller, |
| 203 browser_sync::ChangeProcessor* change_processor); | 210 browser_sync::ChangeProcessor* change_processor); |
| 204 | 211 |
| 212 // NotificationObserver implementation. |
| 213 virtual void Observe(NotificationType type, |
| 214 const NotificationSource& source, |
| 215 const NotificationDetails& details); |
| 216 |
| 205 protected: | 217 protected: |
| 206 // Call this after any of the subsystems being synced (the bookmark | 218 // Call this after any of the subsystems being synced (the bookmark |
| 207 // model and the sync backend) finishes its initialization. When everything | 219 // model and the sync backend) finishes its initialization. When everything |
| 208 // is ready, this function will bootstrap the subsystems so that they are | 220 // is ready, this function will bootstrap the subsystems so that they are |
| 209 // initially in sync, and start forwarding changes between the two models. | 221 // initially in sync, and start forwarding changes between the two models. |
| 210 void StartProcessingChangesIfReady(); | 222 void StartProcessingChangesIfReady(); |
| 211 | 223 |
| 212 // Returns whether processing changes is allowed. Check this before doing | 224 // Returns whether processing changes is allowed. Check this before doing |
| 213 // any model-modifying operations. | 225 // any model-modifying operations. |
| 214 bool ShouldPushChanges(); | 226 bool ShouldPushChanges(); |
| 215 | 227 |
| 216 // Starts up the backend sync components. | 228 // Starts up the backend sync components. |
| 217 void StartUp(); | 229 void StartUp(); |
| 218 // Shuts down the backend sync components. | 230 // Shuts down the backend sync components. |
| 219 // |sync_disabled| indicates if syncing is being disabled or not. | 231 // |sync_disabled| indicates if syncing is being disabled or not. |
| 220 void Shutdown(bool sync_disabled); | 232 void Shutdown(bool sync_disabled); |
| 221 | 233 |
| 222 // Methods to register and remove preferences. | 234 // Methods to register and remove preferences. |
| 223 void RegisterPreferences(); | 235 void RegisterPreferences(); |
| 224 void ClearPreferences(); | 236 void ClearPreferences(); |
| 225 | 237 |
| 226 void DataTypeManagerStartCallback( | |
| 227 browser_sync::DataTypeManager::StartResult result); | |
| 228 | |
| 229 // Tests need to override this. If |delete_sync_data_folder| is true, then | 238 // Tests need to override this. If |delete_sync_data_folder| is true, then |
| 230 // this method will delete all previous "Sync Data" folders. (useful if the | 239 // this method will delete all previous "Sync Data" folders. (useful if the |
| 231 // folder is partial/corrupt) | 240 // folder is partial/corrupt) |
| 232 virtual void InitializeBackend(bool delete_sync_data_folder); | 241 virtual void InitializeBackend(bool delete_sync_data_folder); |
| 233 | 242 |
| 234 // We keep track of the last auth error observed so we can cover up the first | 243 // We keep track of the last auth error observed so we can cover up the first |
| 235 // "expected" auth failure from observers. | 244 // "expected" auth failure from observers. |
| 236 // TODO(timsteele): Same as expecting_first_run_auth_needed_event_. Remove | 245 // TODO(timsteele): Same as expecting_first_run_auth_needed_event_. Remove |
| 237 // this! | 246 // this! |
| 238 GoogleServiceAuthError last_auth_error_; | 247 GoogleServiceAuthError last_auth_error_; |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 309 // As its name suggests, this should NOT be used for anything other than UI. | 318 // As its name suggests, this should NOT be used for anything other than UI. |
| 310 bool is_auth_in_progress_; | 319 bool is_auth_in_progress_; |
| 311 | 320 |
| 312 SyncSetupWizard wizard_; | 321 SyncSetupWizard wizard_; |
| 313 | 322 |
| 314 // True if an unrecoverable error (e.g. violation of an assumed invariant) | 323 // True if an unrecoverable error (e.g. violation of an assumed invariant) |
| 315 // occurred during syncer operation. This value should be checked before | 324 // occurred during syncer operation. This value should be checked before |
| 316 // doing any work that might corrupt things further. | 325 // doing any work that might corrupt things further. |
| 317 bool unrecoverable_error_detected_; | 326 bool unrecoverable_error_detected_; |
| 318 | 327 |
| 319 // True if at least one of the data types started up was started for | |
| 320 // the first time. TODO(sync): Remove this when we have full | |
| 321 // support for starting multiple data types. | |
| 322 bool startup_had_first_time_; | |
| 323 | |
| 324 // Which peer-to-peer notification method to use. | 328 // Which peer-to-peer notification method to use. |
| 325 browser_sync::NotificationMethod notification_method_; | 329 browser_sync::NotificationMethod notification_method_; |
| 326 | 330 |
| 327 // Manages the start and stop of the various data types. | 331 // Manages the start and stop of the various data types. |
| 328 scoped_ptr<browser_sync::DataTypeManager> data_type_manager_; | 332 scoped_ptr<browser_sync::DataTypeManager> data_type_manager_; |
| 329 | 333 |
| 330 ObserverList<Observer> observers_; | 334 ObserverList<Observer> observers_; |
| 331 | 335 |
| 336 NotificationRegistrar registrar_; |
| 337 |
| 332 DISALLOW_COPY_AND_ASSIGN(ProfileSyncService); | 338 DISALLOW_COPY_AND_ASSIGN(ProfileSyncService); |
| 333 }; | 339 }; |
| 334 | 340 |
| 335 #endif // CHROME_BROWSER_SYNC_PROFILE_SYNC_SERVICE_H_ | 341 #endif // CHROME_BROWSER_SYNC_PROFILE_SYNC_SERVICE_H_ |
| OLD | NEW |