| Index: chrome/browser/sync/profile_sync_service.h
|
| ===================================================================
|
| --- chrome/browser/sync/profile_sync_service.h (revision 208727)
|
| +++ chrome/browser/sync/profile_sync_service.h (working copy)
|
| @@ -19,6 +19,8 @@
|
| #include "base/strings/string16.h"
|
| #include "base/time.h"
|
| #include "base/timer.h"
|
| +#include "chrome/browser/invalidation/invalidation_frontend.h"
|
| +#include "chrome/browser/invalidation/invalidator_storage.h"
|
| #include "chrome/browser/signin/oauth2_token_service.h"
|
| #include "chrome/browser/signin/signin_global_error.h"
|
| #include "chrome/browser/sync/backend_unrecoverable_error_handler.h"
|
| @@ -63,6 +65,7 @@
|
|
|
| namespace syncer {
|
| class BaseTransaction;
|
| +class InvalidatorRegistrar;
|
| struct SyncCredentials;
|
| struct UserShare;
|
| }
|
| @@ -162,6 +165,7 @@
|
| public syncer::UnrecoverableErrorHandler,
|
| public content::NotificationObserver,
|
| public BrowserContextKeyedService,
|
| + public invalidation::InvalidationFrontend,
|
| public browser_sync::DataTypeEncryptionHandler,
|
| public OAuth2TokenService::Consumer {
|
| public:
|
| @@ -284,6 +288,12 @@
|
| // Disables sync for user. Use ShowLoginDialog to enable.
|
| virtual void DisableForUser();
|
|
|
| + // syncer::InvalidationHandler implementation (via SyncFrontend).
|
| + virtual void OnInvalidatorStateChange(
|
| + syncer::InvalidatorState state) OVERRIDE;
|
| + virtual void OnIncomingInvalidation(
|
| + const syncer::ObjectIdInvalidationMap& invalidation_map) OVERRIDE;
|
| +
|
| // SyncFrontend implementation.
|
| virtual void OnBackendInitialized(
|
| const syncer::WeakHandle<syncer::JsBackend>& js_backend,
|
| @@ -590,6 +600,21 @@
|
| // The set of currently enabled sync experiments.
|
| const syncer::Experiments& current_experiments() const;
|
|
|
| + // InvalidationFrontend implementation. It is an error to have
|
| + // registered handlers when Shutdown() is called.
|
| + virtual void RegisterInvalidationHandler(
|
| + syncer::InvalidationHandler* handler) OVERRIDE;
|
| + virtual void UpdateRegisteredInvalidationIds(
|
| + syncer::InvalidationHandler* handler,
|
| + const syncer::ObjectIdSet& ids) OVERRIDE;
|
| + virtual void UnregisterInvalidationHandler(
|
| + syncer::InvalidationHandler* handler) OVERRIDE;
|
| + virtual void AcknowledgeInvalidation(
|
| + const invalidation::ObjectId& id,
|
| + const syncer::AckHandle& ack_handle) OVERRIDE;
|
| +
|
| + virtual syncer::InvalidatorState GetInvalidatorState() const OVERRIDE;
|
| +
|
| // OAuth2TokenService::Consumer implementation
|
| virtual void OnGetTokenSuccess(
|
| const OAuth2TokenService::Request* request,
|
| @@ -603,6 +628,11 @@
|
| // once (before this object is destroyed).
|
| virtual void Shutdown() OVERRIDE;
|
|
|
| + // Simulate an incoming notification for the given id and payload.
|
| + void EmitInvalidationForTest(
|
| + const invalidation::ObjectId& id,
|
| + const std::string& payload);
|
| +
|
| // Called when a datatype (SyncableService) has a need for sync to start
|
| // ASAP, presumably because a local change event has occurred but we're
|
| // still in deferred start mode, meaning the SyncableService hasn't been
|
| @@ -673,6 +703,8 @@
|
| ERROR_REASON_ACTIONABLE_ERROR,
|
| ERROR_REASON_LIMIT
|
| };
|
| + typedef std::vector<std::pair<invalidation::ObjectId,
|
| + syncer::AckHandle> > AckHandleReplayQueue;
|
| friend class ProfileSyncServicePasswordTest;
|
| friend class SyncTest;
|
| friend class TestProfileSyncService;
|
| @@ -719,7 +751,6 @@
|
| void UpdateLastSyncedTime();
|
|
|
| void NotifyObservers();
|
| - void NotifySyncCycleCompleted();
|
|
|
| void ClearStaleErrors();
|
|
|
| @@ -769,6 +800,11 @@
|
| bool delete_sync_database,
|
| UnrecoverableErrorReason reason);
|
|
|
| + // Must be called every time |backend_initialized_| or
|
| + // |invalidator_state_| is changed (but only if
|
| + // |invalidator_registrar_| is not NULL).
|
| + void UpdateInvalidatorRegistrarState();
|
| +
|
| // Returns the username (in form of an email address) that should be used in
|
| // the credentials.
|
| std::string GetEffectiveUsername();
|
| @@ -783,6 +819,9 @@
|
| // preferences.
|
| browser_sync::SyncPrefs sync_prefs_;
|
|
|
| + // TODO(tim): Move this to InvalidationService, once it exists. Bug 124137.
|
| + invalidation::InvalidatorStorage invalidator_storage_;
|
| +
|
| // TODO(ncarter): Put this in a profile, once there is UI for it.
|
| // This specifies where to find the sync server.
|
| GURL sync_service_url_;
|
| @@ -903,6 +942,18 @@
|
| // Factory the backend will use to build the SyncManager.
|
| syncer::SyncManagerFactory sync_manager_factory_;
|
|
|
| + // Holds the current invalidator state as updated by
|
| + // OnInvalidatorStateChange(). Note that this is different from the
|
| + // state known by |invalidator_registrar_| (See
|
| + // UpdateInvalidatorState()).
|
| + syncer::InvalidatorState invalidator_state_;
|
| +
|
| + // Dispatches invalidations to handlers. Set in Initialize() and
|
| + // unset in Shutdown().
|
| + scoped_ptr<syncer::InvalidatorRegistrar> invalidator_registrar_;
|
| + // Queues any acknowledgements received while the backend is uninitialized.
|
| + AckHandleReplayQueue ack_replay_queue_;
|
| +
|
| // Sync's internal debug info listener. Used to record datatype configuration
|
| // and association information.
|
| syncer::WeakHandle<syncer::DataTypeDebugInfoListener> debug_info_listener_;
|
|
|