1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be 3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file. 4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "sync/test/mock_invalidation_tracker.h" 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/logging.h" 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "sync/test/trackable_mock_invalidation.h" 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace syncer { 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdochscoped_ptr<TrackableMockInvalidation> 13116680a4aac90f2aa7413d9095a592090648e557Ben MurdochMockInvalidationTracker::IssueUnknownVersionInvalidation() { 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return scoped_ptr<TrackableMockInvalidation>( 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch new TrackableMockInvalidation(true, -1, std::string(), this, next_id_++)); 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdochscoped_ptr<TrackableMockInvalidation> 19116680a4aac90f2aa7413d9095a592090648e557Ben MurdochMockInvalidationTracker::IssueInvalidation(int64 version, 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& payload) { 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return scoped_ptr<TrackableMockInvalidation>( 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch new TrackableMockInvalidation(false, version, payload, this, next_id_++)); 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 25116680a4aac90f2aa7413d9095a592090648e557Ben MurdochMockInvalidationTracker::MockInvalidationTracker() : next_id_(0) { 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 28116680a4aac90f2aa7413d9095a592090648e557Ben MurdochMockInvalidationTracker::~MockInvalidationTracker() { 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid MockInvalidationTracker::Acknowledge(int invalidation_id) { 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch acknowledged_.insert(invalidation_id); 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdochvoid MockInvalidationTracker::Drop(int invalidation_id) { 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch dropped_.insert(invalidation_id); 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool MockInvalidationTracker::IsUnacked(int invalidation_id) const { 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DCHECK_LE(invalidation_id, next_id_); 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return !IsAcknowledged(invalidation_id) && !IsDropped(invalidation_id); 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool MockInvalidationTracker::IsAcknowledged(int invalidation_id) const { 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DCHECK_LE(invalidation_id, next_id_); 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return acknowledged_.find(invalidation_id) != acknowledged_.end(); 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool MockInvalidationTracker::IsDropped(int invalidation_id) const { 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch DCHECK_LE(invalidation_id, next_id_); 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return dropped_.find(invalidation_id) != dropped_.end(); 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdochbool MockInvalidationTracker::AllInvalidationsAccountedFor() const { 55116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch for (int i = 0; i < next_id_; ++i) { 56116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch if (IsUnacked(i)) { 57116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return false; 58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch } 60116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch return true; 61116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 62116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace syncer 64