summaryrefslogtreecommitdiffstats
path: root/sync
diff options
context:
space:
mode:
authortim@chromium.org <tim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-30 02:34:48 +0000
committertim@chromium.org <tim@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-05-30 02:34:48 +0000
commit7800d79ee9ecdfcca77ba895b7679c8f1fb85ee4 (patch)
treee56bacac84e7ab2ce10ff5b5adcff85859fdbb38 /sync
parent2404a282786943958a5fce4cd111dfa538ae0a33 (diff)
downloadchromium_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.cc2
-rw-r--r--sync/notifier/invalidation_state_tracker.h6
-rw-r--r--sync/notifier/non_blocking_invalidation_notifier.cc4
-rw-r--r--sync/notifier/non_blocking_invalidation_notifier.h1
-rw-r--r--sync/tools/sync_listen_notifications.cc8
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";