| Index: ios/chrome/browser/sync/sync_setup_service.h
|
| diff --git a/ios/chrome/browser/sync/sync_setup_service.h b/ios/chrome/browser/sync/sync_setup_service.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..491a09bdc27509aa4255c5539e0e5f18aea7dd77
|
| --- /dev/null
|
| +++ b/ios/chrome/browser/sync/sync_setup_service.h
|
| @@ -0,0 +1,111 @@
|
| +// Copyright 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef IOS_CHROME_BROWSER_SYNC_SYNC_SETUP_SERVICE_H_
|
| +#define IOS_CHROME_BROWSER_SYNC_SYNC_SETUP_SERVICE_H_
|
| +
|
| +#include <map>
|
| +
|
| +#include "base/basictypes.h"
|
| +#include "base/strings/string16.h"
|
| +#include "components/keyed_service/core/keyed_service.h"
|
| +#include "sync/internal_api/public/base/model_type.h"
|
| +#include "sync/internal_api/public/util/syncer_error.h"
|
| +
|
| +namespace sync_driver {
|
| +class SyncService;
|
| +}
|
| +
|
| +class PrefService;
|
| +
|
| +// Class that allows configuring sync. It handles enabling and disabling it, as
|
| +// well as choosing datatypes. Most actions are delayed until a commit is done,
|
| +// to allow the complex sync setup flow on iOS.
|
| +class SyncSetupService : public KeyedService {
|
| + public:
|
| + typedef enum {
|
| + kNoSyncServiceError,
|
| + kSyncServiceSignInNeedsUpdate,
|
| + kSyncServiceCouldNotConnect,
|
| + kSyncServiceServiceUnavailable,
|
| + kSyncServiceNeedsPassphrase,
|
| + kSyncServiceUnrecoverableError,
|
| + kLastSyncServiceError = kSyncServiceUnrecoverableError
|
| + } SyncServiceState;
|
| +
|
| + // The set of user-selectable datatypes handled by Chrome for iOS.
|
| + typedef enum {
|
| + kSyncBookmarks,
|
| + kSyncOmniboxHistory,
|
| + kSyncPasswords,
|
| + kSyncOpenTabs,
|
| + kSyncAutofill,
|
| + kNumberOfSyncableDatatypes
|
| + } SyncableDatatype;
|
| +
|
| + SyncSetupService(sync_driver::SyncService* sync_service, PrefService* prefs);
|
| + ~SyncSetupService() override;
|
| +
|
| + // Returns the |syncer::ModelType| associated to the given
|
| + // |SyncableDatatypes|.
|
| + syncer::ModelType GetModelType(SyncableDatatype datatype);
|
| +
|
| + // Returns whether sync is enabled.
|
| + virtual bool IsSyncEnabled() const;
|
| + // Enables or disables sync. Changes won't take effect in the sync backend
|
| + // before the next call to |CommitChanges|.
|
| + virtual void SetSyncEnabled(bool sync_enabled);
|
| +
|
| + // Returns all currently enabled datatypes.
|
| + syncer::ModelTypeSet GetDataTypes() const;
|
| + // Returns whether the given datatype is enabled.
|
| + virtual bool IsDataTypeEnabled(syncer::ModelType datatype) const;
|
| + // Enables or disables the given datatype. To be noted: this can be called at
|
| + // any time, but will only be meaningful if |IsSyncEnabled| is true and
|
| + // |IsSyncingAllDataTypes| is false. Changes won't take effect in the sync
|
| + // backend before the next call to |CommitChanges|.
|
| + void SetDataTypeEnabled(syncer::ModelType datatype, bool enabled);
|
| +
|
| + // Returns whether the user needs to enter a passphrase or enable sync to make
|
| + // sync work.
|
| + bool UserActionIsRequiredToHaveSyncWork();
|
| +
|
| + // Returns whether all datatypes are being synced.
|
| + virtual bool IsSyncingAllDataTypes() const;
|
| + // Sets whether all datatypes should be synced or not. Changes won't take
|
| + // effect before the next call to |CommitChanges|.
|
| + virtual void SetSyncingAllDataTypes(bool sync_all);
|
| +
|
| + // Returns the current sync service state.
|
| + virtual SyncServiceState GetSyncServiceState();
|
| +
|
| + // Returns true if the user has gone through the initial sync configuration.
|
| + // This method is guaranteed not to start the sync backend so it can be
|
| + // called at start-up.
|
| + bool HasFinishedInitialSetup();
|
| +
|
| + // Pauses sync allowing the user to configure what data to sync before
|
| + // actually starting to sync data with the server.
|
| + void PrepareForFirstSyncSetup();
|
| +
|
| + // Commit the current state of the configuration to the sync backend.
|
| + void CommitChanges();
|
| +
|
| + // Returns true if there are uncommitted sync changes;
|
| + bool HasUncommittedChanges();
|
| +
|
| + private:
|
| + // Enables or disables sync. Changes won't take effect in the sync backend
|
| + // before the next call to |CommitChanges|. No changes are made to the
|
| + // currently selected datatypes.
|
| + void SetSyncEnabledWithoutChangingDatatypes(bool sync_enabled);
|
| +
|
| + sync_driver::SyncService* const sync_service_;
|
| + PrefService* const prefs_;
|
| + syncer::ModelTypeSet user_selectable_types_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(SyncSetupService);
|
| +};
|
| +
|
| +#endif // IOS_CHROME_BROWSER_SYNC_SYNC_SETUP_SERVICE_H_
|
|
|