#include "base/message_loop/message_loop.h"
#include "base/stl_util.h"
#include "components/invalidation/fake_invalidation_state_tracker.h"
+#include "components/invalidation/invalidation_util.h"
+#include "components/invalidation/object_id_invalidation_map.h"
#include "components/invalidation/push_client_channel.h"
#include "components/invalidation/sync_invalidation_listener.h"
+#include "components/invalidation/unacked_invalidation_set_test_util.h"
#include "google/cacheinvalidation/include/invalidation-client.h"
#include "google/cacheinvalidation/include/types.h"
#include "jingle/notifier/listener/fake_push_client.h"
-#include "sync/internal_api/public/util/weak_handle.h"
-#include "sync/notifier/dropped_invalidation_tracker.h"
-#include "sync/notifier/invalidation_util.h"
-#include "sync/notifier/object_id_invalidation_map.h"
-#include "sync/notifier/unacked_invalidation_set_test_util.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace syncer {
class FakeInvalidationClient : public invalidation::InvalidationClient {
public:
FakeInvalidationClient() : started_(false) {}
- virtual ~FakeInvalidationClient() {}
+ ~FakeInvalidationClient() override {}
const ObjectIdSet& GetRegisteredIds() const {
return registered_ids_;
// invalidation::InvalidationClient implementation.
- virtual void Start() OVERRIDE {
- started_ = true;
- }
+ void Start() override { started_ = true; }
- virtual void Stop() OVERRIDE {
- started_ = false;
- }
+ void Stop() override { started_ = false; }
- virtual void Register(const ObjectId& object_id) OVERRIDE {
+ void Register(const ObjectId& object_id) override {
if (!started_) {
ADD_FAILURE();
return;
registered_ids_.insert(object_id);
}
- virtual void Register(
- const invalidation::vector<ObjectId>& object_ids) OVERRIDE {
+ void Register(const invalidation::vector<ObjectId>& object_ids) override {
if (!started_) {
ADD_FAILURE();
return;
registered_ids_.insert(object_ids.begin(), object_ids.end());
}
- virtual void Unregister(const ObjectId& object_id) OVERRIDE {
+ void Unregister(const ObjectId& object_id) override {
if (!started_) {
ADD_FAILURE();
return;
registered_ids_.erase(object_id);
}
- virtual void Unregister(
- const invalidation::vector<ObjectId>& object_ids) OVERRIDE {
+ void Unregister(const invalidation::vector<ObjectId>& object_ids) override {
if (!started_) {
ADD_FAILURE();
return;
}
}
- virtual void Acknowledge(const AckHandle& ack_handle) OVERRIDE {
+ void Acknowledge(const AckHandle& ack_handle) override {
if (!started_) {
ADD_FAILURE();
return;
class FakeDelegate : public SyncInvalidationListener::Delegate {
public:
explicit FakeDelegate(SyncInvalidationListener* listener)
- : state_(TRANSIENT_INVALIDATION_ERROR),
- drop_handlers_deleter_(&drop_handlers_) {}
- virtual ~FakeDelegate() {}
+ : state_(TRANSIENT_INVALIDATION_ERROR) {}
+ ~FakeDelegate() override {}
size_t GetInvalidationCount(const ObjectId& id) const {
Map::const_iterator it = invalidations_.find(id);
return state_;
}
- DroppedInvalidationTracker* GetDropTrackerForObject(const ObjectId& id) {
- DropHandlers::iterator it = drop_handlers_.find(id);
- if (it == drop_handlers_.end()) {
- drop_handlers_.insert(
- std::make_pair(id, new DroppedInvalidationTracker(id)));
- return drop_handlers_.find(id)->second;
- } else {
- return it->second;
- }
- }
-
void AcknowledgeNthInvalidation(const ObjectId& id, size_t n) {
List& list = invalidations_[id];
List::iterator it = list.begin() + n;
}
void DropNthInvalidation(const ObjectId& id, size_t n) {
- DroppedInvalidationTracker* drop_tracker = GetDropTrackerForObject(id);
List& list = invalidations_[id];
List::iterator it = list.begin() + n;
- it->Drop(drop_tracker);
+ it->Drop();
+ dropped_invalidations_map_.erase(id);
+ dropped_invalidations_map_.insert(std::make_pair(id, *it));
}
void RecoverFromDropEvent(const ObjectId& id) {
- DroppedInvalidationTracker* drop_tracker = GetDropTrackerForObject(id);
- drop_tracker->RecordRecoveryFromDropEvent();
+ DropMap::iterator it = dropped_invalidations_map_.find(id);
+ if (it != dropped_invalidations_map_.end()) {
+ it->second.Acknowledge();
+ dropped_invalidations_map_.erase(it);
+ }
}
// SyncInvalidationListener::Delegate implementation.
- virtual void OnInvalidate(
- const ObjectIdInvalidationMap& invalidation_map) OVERRIDE {
+ void OnInvalidate(const ObjectIdInvalidationMap& invalidation_map) override {
ObjectIdSet ids = invalidation_map.GetObjectIds();
for (ObjectIdSet::iterator it = ids.begin(); it != ids.end(); ++it) {
const SingleObjectInvalidationSet& incoming =
}
}
- virtual void OnInvalidatorStateChange(InvalidatorState state) OVERRIDE {
+ void OnInvalidatorStateChange(InvalidatorState state) override {
state_ = state;
}
private:
typedef std::vector<Invalidation> List;
typedef std::map<ObjectId, List, ObjectIdLessThan> Map;
- typedef std::map<ObjectId,
- DroppedInvalidationTracker*,
- ObjectIdLessThan> DropHandlers;
+ typedef std::map<ObjectId, Invalidation, ObjectIdLessThan> DropMap;
Map invalidations_;
InvalidatorState state_;
- DropHandlers drop_handlers_;
- STLValueDeleter<DropHandlers> drop_handlers_deleter_;
+ DropMap dropped_invalidations_map_;
};
invalidation::InvalidationClient* CreateFakeInvalidationClient(
scoped_ptr<notifier::PushClient>(fake_push_client_)))),
fake_delegate_(&listener_) {}
- virtual void SetUp() {
+ void SetUp() override {
StartClient();
registered_ids_.insert(kBookmarksId_);
listener_.UpdateRegisteredIds(registered_ids_);
}
- virtual void TearDown() {
- StopClient();
- }
+ void TearDown() override { StopClient(); }
// Restart client without re-registering IDs.
void RestartClient() {
void StartClient() {
fake_invalidation_client_ = NULL;
- listener_.Start(base::Bind(&CreateFakeInvalidationClient,
- &fake_invalidation_client_),
- kClientId, kClientInfo, kState,
- fake_tracker_.GetSavedInvalidations(),
- MakeWeakHandle(fake_tracker_.AsWeakPtr()),
- &fake_delegate_);
+ listener_.Start(
+ base::Bind(&CreateFakeInvalidationClient, &fake_invalidation_client_),
+ kClientId,
+ kClientInfo,
+ kState,
+ fake_tracker_.GetSavedInvalidations(),
+ fake_tracker_.AsWeakPtr(),
+ base::MessageLoopProxy::current(),
+ &fake_delegate_);
DCHECK(fake_invalidation_client_);
}
return SingleObjectInvalidationSet();
}
ObjectIdInvalidationMap map;
- it->second.ExportInvalidations(WeakHandle<AckHandler>(), &map);
+ it->second.ExportInvalidations(
+ base::WeakPtr<AckHandler>(),
+ scoped_refptr<base::SingleThreadTaskRunner>(),
+ &map);
if (map.Empty()) {
return SingleObjectInvalidationSet();
} else {
class SyncInvalidationListenerTest_WithInitialState
: public SyncInvalidationListenerTest {
public:
- virtual void SetUp() {
+ void SetUp() override {
UnackedInvalidationSet bm_state(kBookmarksId_);
UnackedInvalidationSet ext_state(kExtensionsId_);