summaryrefslogtreecommitdiffstats
path: root/sync/notifier/fake_invalidation_state_tracker.cc
diff options
context:
space:
mode:
authordcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-05 05:31:12 +0000
committerdcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-05 05:31:12 +0000
commit0e7f2b7f4023f10cc1d4d4a9eabca701faedec01 (patch)
tree5eed13dfa3d07adf11853b833434fa785ee34776 /sync/notifier/fake_invalidation_state_tracker.cc
parent5fbd63798b997475fded3cc90f456425c607edcd (diff)
downloadchromium_src-0e7f2b7f4023f10cc1d4d4a9eabca701faedec01.zip
chromium_src-0e7f2b7f4023f10cc1d4d4a9eabca701faedec01.tar.gz
chromium_src-0e7f2b7f4023f10cc1d4d4a9eabca701faedec01.tar.bz2
Implement features needed for local ack handling in InvalidationStateTracker.
Adds the ability to save payloads in InvalidationStateTracker, and also adds the functionality to generate, track, and acknowledge local ack handles. BUG=124149 Review URL: https://codereview.chromium.org/11415049 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171165 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sync/notifier/fake_invalidation_state_tracker.cc')
-rw-r--r--sync/notifier/fake_invalidation_state_tracker.cc31
1 files changed, 29 insertions, 2 deletions
diff --git a/sync/notifier/fake_invalidation_state_tracker.cc b/sync/notifier/fake_invalidation_state_tracker.cc
index 9073e45b..2af5db5 100644
--- a/sync/notifier/fake_invalidation_state_tracker.cc
+++ b/sync/notifier/fake_invalidation_state_tracker.cc
@@ -4,6 +4,10 @@
#include "sync/notifier/fake_invalidation_state_tracker.h"
+#include "base/bind.h"
+#include "base/callback.h"
+#include "base/location.h"
+#include "base/task_runner.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace syncer {
@@ -25,8 +29,10 @@ FakeInvalidationStateTracker::GetAllInvalidationStates() const {
return state_map_;
}
-void FakeInvalidationStateTracker::SetMaxVersion(
- const invalidation::ObjectId& id, int64 max_version) {
+void FakeInvalidationStateTracker::SetMaxVersionAndPayload(
+ const invalidation::ObjectId& id,
+ int64 max_version,
+ const std::string& payload) {
InvalidationStateMap::const_iterator it = state_map_.find(id);
if ((it != state_map_.end()) && (max_version <= it->second.version)) {
ADD_FAILURE();
@@ -50,4 +56,25 @@ std::string FakeInvalidationStateTracker::GetBootstrapData() const {
return bootstrap_data_;
}
+void FakeInvalidationStateTracker::GenerateAckHandles(
+ const ObjectIdSet& ids,
+ const scoped_refptr<base::TaskRunner>& task_runner,
+ base::Callback<void(const AckHandleMap&)> callback) {
+ AckHandleMap ack_handles;
+ for (ObjectIdSet::const_iterator it = ids.begin(); it != ids.end(); ++it) {
+ state_map_[*it].expected = AckHandle::CreateUnique();
+ ack_handles.insert(std::make_pair(*it, state_map_[*it].expected));
+ }
+ if (!task_runner->PostTask(FROM_HERE, base::Bind(callback, ack_handles)))
+ ADD_FAILURE();
+}
+
+void FakeInvalidationStateTracker::Acknowledge(const invalidation::ObjectId& id,
+ const AckHandle& ack_handle) {
+ InvalidationStateMap::iterator it = state_map_.find(id);
+ if (it == state_map_.end())
+ ADD_FAILURE();
+ it->second.current = ack_handle;
+}
+
} // namespace syncer