| Index: components/sync_driver/sync_service.h
|
| diff --git a/components/sync_driver/sync_service.h b/components/sync_driver/sync_service.h
|
| index 4ca8b42e870f5ea9939a74acd6d0cd43f8746cdd..95f191014847c6d6673b482d93a06cbf7fbe7d2e 100644
|
| --- a/components/sync_driver/sync_service.h
|
| +++ b/components/sync_driver/sync_service.h
|
| @@ -8,7 +8,7 @@
|
| #include <memory>
|
| #include <string>
|
|
|
| -#include "base/callback_forward.h"
|
| +#include "base/callback.h"
|
| #include "base/location.h"
|
| #include "base/macros.h"
|
| #include "base/memory/weak_ptr.h"
|
| @@ -20,6 +20,7 @@
|
| #include "sync/internal_api/public/connection_status.h"
|
|
|
| class GoogleServiceAuthError;
|
| +class ProfileSyncService;
|
|
|
| namespace browser_sync {
|
| class ProtocolEventObserver;
|
| @@ -46,6 +47,19 @@ class LocalDeviceInfoProvider;
|
| class OpenTabsUIDelegate;
|
| class SyncClient;
|
|
|
| +// UIs that need to prevent Sync startup should hold an instance of this class
|
| +// until the user has finished modifying sync settings.
|
| +class SyncSetupInProgressHandle {
|
| + public:
|
| + ~SyncSetupInProgressHandle();
|
| +
|
| + private:
|
| + friend class ::ProfileSyncService;
|
| + explicit SyncSetupInProgressHandle(base::Closure on_destroy);
|
| +
|
| + base::Closure on_destroy_;
|
| +};
|
| +
|
| class SyncService : public DataTypeEncryptionHandler {
|
| public:
|
| // Used to specify the kind of passphrase with which sync data is encrypted.
|
| @@ -67,7 +81,6 @@ class SyncService : public DataTypeEncryptionHandler {
|
| // Status of sync server connection, sync token and token request.
|
| struct SyncTokenStatus {
|
| SyncTokenStatus();
|
| - ~SyncTokenStatus();
|
|
|
| // Sync server connection status reported by sync backend.
|
| base::Time connection_status_update_time;
|
| @@ -176,12 +189,13 @@ class SyncService : public DataTypeEncryptionHandler {
|
| // Called by the UI to notify the SyncService that UI is visible so it will
|
| // not start syncing. This tells sync whether it's safe to start downloading
|
| // data types yet (we don't start syncing until after sync setup is complete).
|
| - // The UI calls this as soon as any part of the signin wizard is displayed
|
| - // (even just the login UI).
|
| - // If |setup_in_progress| is false, this also kicks the sync engine to ensure
|
| - // that data download starts. In this case, |ReconfigureDatatypeManager| will
|
| - // get triggered.
|
| - virtual void SetSetupInProgress(bool setup_in_progress) = 0;
|
| + // The UI calls this and holds onto the instance for as long as any part of
|
| + // the signin wizard is displayed (even just the login UI).
|
| + // When the last outstanding handle is deleted, this kicks off the sync engine
|
| + // to ensure that data download starts. In this case,
|
| + // |ReconfigureDatatypeManager| will get triggered.
|
| + virtual std::unique_ptr<SyncSetupInProgressHandle>
|
| + GetSetupInProgressHandle() = 0;
|
|
|
| // Used by tests.
|
| virtual bool IsSetupInProgress() const = 0;
|
|
|