// Copyright (c) 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. #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 { const int64 FakeInvalidationStateTracker::kMinVersion = kint64min; FakeInvalidationStateTracker::FakeInvalidationStateTracker() {} FakeInvalidationStateTracker::~FakeInvalidationStateTracker() {} int64 FakeInvalidationStateTracker::GetMaxVersion( const invalidation::ObjectId& id) const { InvalidationStateMap::const_iterator it = state_map_.find(id); return (it == state_map_.end()) ? kMinVersion : it->second.version; } InvalidationStateMap FakeInvalidationStateTracker::GetAllInvalidationStates() const { return state_map_; } 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(); return; } state_map_[id].version = max_version; } void FakeInvalidationStateTracker::Forget(const ObjectIdSet& ids) { for (ObjectIdSet::const_iterator it = ids.begin(); it != ids.end(); ++it) { state_map_.erase(*it); } } void FakeInvalidationStateTracker::SetInvalidatorClientId( const std::string& client_id) { invalidator_client_id_ = client_id; } std::string FakeInvalidationStateTracker::GetInvalidatorClientId() const { return invalidator_client_id_; } void FakeInvalidationStateTracker::SetBootstrapData( const std::string& data) { bootstrap_data_ = data; } std::string FakeInvalidationStateTracker::GetBootstrapData() const { return bootstrap_data_; } void FakeInvalidationStateTracker::GenerateAckHandles( const ObjectIdSet& ids, const scoped_refptr& task_runner, base::Callback 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