Chromium Code Reviews| Index: components/browser_sync/browser/profile_sync_service.h |
| diff --git a/components/browser_sync/browser/profile_sync_service.h b/components/browser_sync/browser/profile_sync_service.h |
| index 3fecc3197fa8b306fb396ec8b051385d7a41aae3..ddc8ecf72e49c1913d865eb400bd8a6b569fe5cb 100644 |
| --- a/components/browser_sync/browser/profile_sync_service.h |
| +++ b/components/browser_sync/browser/profile_sync_service.h |
| @@ -165,14 +165,16 @@ class EncryptedData; |
| // that control the initial sync download: |
| // |
| // * SetFirstSetupComplete() |
| -// * SetSetupInProgress() |
| +// * GetSetupInProgressHandle() |
| // |
| // SetFirstSetupComplete() should be called once the user has finished setting |
| -// up sync at least once on their account. SetSetupInProgress(true) should be |
| -// called while the user is actively configuring their account, and then |
| -// SetSetupInProgress(false) should be called when configuration is complete. |
| -// Once both these conditions have been met, CanConfigureDataTypes() will |
| -// return true and datatype configuration can begin. |
| +// up sync at least once on their account. GetSetupInProgressHandle() should |
| +// be called while the user is actively configuring their account. The handle |
| +// should be deleted once configuration is complete. |
| +// |
| +// Once first setup has completed and there are no outstanding |
| +// setup-in-progress handles, CanConfigureDataTypes() will return true and |
| +// datatype configuration can begin. |
| class ProfileSyncService : public sync_driver::SyncService, |
| public sync_driver::SyncFrontend, |
| public sync_driver::SyncPrefObserver, |
| @@ -280,7 +282,8 @@ class ProfileSyncService : public sync_driver::SyncService, |
| syncer::ModelTypeSet chosen_types) override; |
| void SetFirstSetupComplete() override; |
| bool IsFirstSetupInProgress() const override; |
| - void SetSetupInProgress(bool setup_in_progress) override; |
| + std::unique_ptr<sync_driver::SyncSetupInProgressHandle> |
| + GetSetupInProgressHandle() override; |
| bool IsSetupInProgress() const override; |
| bool ConfigurationDone() const override; |
| const GoogleServiceAuthError& GetAuthError() const override; |
| @@ -802,6 +805,9 @@ class ProfileSyncService : public sync_driver::SyncService, |
| // True if setup has been completed at least once and is not in progress. |
| bool CanConfigureDataTypes() const; |
| + // Called when a SetupInProgressHandle issued by this instance is destroyed. |
| + virtual void OnSetupInProgressHandleDestroyed(); |
| + |
| // This profile's SyncClient, which abstracts away non-Sync dependencies and |
| // the Sync API component factory. |
| std::unique_ptr<sync_driver::SyncClient> sync_client_; |
| @@ -844,6 +850,10 @@ class ProfileSyncService : public sync_driver::SyncService, |
| // is equal to !IsFirstSetupComplete() at the time of OnBackendInitialized(). |
| bool is_first_time_sync_configure_; |
| + // Number of UIs currently configuring the Sync service. When this number |
| + // is decremented back to zero, Sync setup in marked no longer in progress. |
|
Nicolas Zea
2016/06/13 20:01:00
nit: "in marked" -> "is marked"
tommycli
2016/06/13 20:27:31
Done.
|
| + int outstanding_setup_in_progress_handles_ = 0; |
| + |
| // List of available data type controllers. |
| sync_driver::DataTypeController::TypeMap data_type_controllers_; |