diff options
author | tim@chromium.org <tim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-30 02:34:48 +0000 |
---|---|---|
committer | tim@chromium.org <tim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-05-30 02:34:48 +0000 |
commit | 7800d79ee9ecdfcca77ba895b7679c8f1fb85ee4 (patch) | |
tree | e56bacac84e7ab2ce10ff5b5adcff85859fdbb38 /sync | |
parent | 2404a282786943958a5fce4cd111dfa538ae0a33 (diff) | |
download | chromium_src-7800d79ee9ecdfcca77ba895b7679c8f1fb85ee4.zip chromium_src-7800d79ee9ecdfcca77ba895b7679c8f1fb85ee4.tar.gz chromium_src-7800d79ee9ecdfcca77ba895b7679c8f1fb85ee4.tar.bz2 |
sync: move invalidation version prefs out of SyncPrefs into InvalidatorStorage.
De-coupling so we don't add more sync < > invalidations deps while adding support for storing opaque notification state in InvalidationStateTracker.
Added get/setters to InvalidationStateTracker and impl (InvalidatorStorage), but it's not wired up for use yet.
Next step is to add migration code to move state from syncable::Directory to InvalidationStateTracker.
Comment in invalidator_storage.h explains motivations for not moving out of sync. This patch creates the c/b/s/invalidations directory,
which we can move non-profile-sync-specific chrome invalidations code to (such as BridgedSyncNotifier, and the android
related part of ChromeSyncNotificationsBridge).
BUG=124140
TEST=InvalidatorStorageTest, should be no functional changes
Review URL: https://chromiumcodereview.appspot.com/10451058
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@139464 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync')
-rw-r--r-- | sync/notifier/chrome_invalidation_client_unittest.cc | 2 | ||||
-rw-r--r-- | sync/notifier/invalidation_state_tracker.h | 6 | ||||
-rw-r--r-- | sync/notifier/non_blocking_invalidation_notifier.cc | 4 | ||||
-rw-r--r-- | sync/notifier/non_blocking_invalidation_notifier.h | 1 | ||||
-rw-r--r-- | sync/tools/sync_listen_notifications.cc | 8 |
5 files changed, 20 insertions, 1 deletions
diff --git a/sync/notifier/chrome_invalidation_client_unittest.cc b/sync/notifier/chrome_invalidation_client_unittest.cc index 225eab6..2892491 100644 --- a/sync/notifier/chrome_invalidation_client_unittest.cc +++ b/sync/notifier/chrome_invalidation_client_unittest.cc @@ -52,6 +52,8 @@ class MockInvalidationStateTracker public: MOCK_CONST_METHOD0(GetAllMaxVersions, InvalidationVersionMap()); MOCK_METHOD2(SetMaxVersion, void(syncable::ModelType, int64)); + MOCK_CONST_METHOD0(GetInvalidationState, std::string()); + MOCK_METHOD1(SetInvalidationState, void(const std::string&)); }; class MockStateWriter : public StateWriter { diff --git a/sync/notifier/invalidation_state_tracker.h b/sync/notifier/invalidation_state_tracker.h index dc8ef26..12568e6 100644 --- a/sync/notifier/invalidation_state_tracker.h +++ b/sync/notifier/invalidation_state_tracker.h @@ -28,6 +28,12 @@ class InvalidationStateTracker { virtual void SetMaxVersion(syncable::ModelType model_type, int64 max_version) = 0; + // Used by InvalidationClient for persistence. |state| is opaque data we can + // present back to the client (e.g. after a restart) for it to bootstrap + // itself. + virtual void SetInvalidationState(const std::string& state) = 0; + virtual std::string GetInvalidationState() const = 0; + protected: virtual ~InvalidationStateTracker() {} }; diff --git a/sync/notifier/non_blocking_invalidation_notifier.cc b/sync/notifier/non_blocking_invalidation_notifier.cc index b6436a1..8830a23 100644 --- a/sync/notifier/non_blocking_invalidation_notifier.cc +++ b/sync/notifier/non_blocking_invalidation_notifier.cc @@ -14,6 +14,7 @@ namespace sync_notifier { class NonBlockingInvalidationNotifier::Core : public base::RefCountedThreadSafe<NonBlockingInvalidationNotifier::Core>, + // SyncNotifierObserver to observe the InvalidationNotifier we create. public SyncNotifierObserver { public: // Called on parent thread. |delegate_observer| should be @@ -35,7 +36,8 @@ class NonBlockingInvalidationNotifier::Core void UpdateCredentials(const std::string& email, const std::string& token); void UpdateEnabledTypes(syncable::ModelTypeSet enabled_types); - // SyncNotifierObserver implementation (all called on I/O thread). + // SyncNotifierObserver implementation (all called on I/O thread by + // InvalidationNotifier). virtual void OnIncomingNotification( const syncable::ModelTypePayloadMap& type_payloads, IncomingNotificationSource source); diff --git a/sync/notifier/non_blocking_invalidation_notifier.h b/sync/notifier/non_blocking_invalidation_notifier.h index 1189403..58002f4 100644 --- a/sync/notifier/non_blocking_invalidation_notifier.h +++ b/sync/notifier/non_blocking_invalidation_notifier.h @@ -30,6 +30,7 @@ namespace sync_notifier { class NonBlockingInvalidationNotifier : public SyncNotifier, + // SyncNotifierObserver to "observe" our Core via WeakHandle. public SyncNotifierObserver { public: // |invalidation_state_tracker| must be initialized. diff --git a/sync/tools/sync_listen_notifications.cc b/sync/tools/sync_listen_notifications.cc index 41ed284..9e8948b 100644 --- a/sync/tools/sync_listen_notifications.cc +++ b/sync/tools/sync_listen_notifications.cc @@ -85,6 +85,14 @@ class NullInvalidationStateTracker << syncable::ModelTypeToString(model_type) << " to " << max_invalidation_version; } + + virtual std::string GetInvalidationState() const OVERRIDE { + return std::string(); + } + + virtual void SetInvalidationState(const std::string& state) OVERRIDE { + LOG(INFO) << "Setting invalidation state to: " << state; + } }; const char kEmailSwitch[] = "email"; |