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_; |