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#ifndef SYNC_TEST_TRACKABLE_MOCK_INVALIDATION_H_ 6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define SYNC_TEST_TRACKABLE_MOCK_INVALIDATION_H_ 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "sync/test/mock_invalidation.h" 9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 10116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace syncer { 11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 12116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass MockInvalidationTracker; 13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// A variant of MockInvalidation that supports acknowledgements. 15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// 16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// With the help of a MockInvalidationTracker, this can be used to test 17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// sync's use of the Drop() and Acknowledge() methods. 18116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass TrackableMockInvalidation : public MockInvalidation { 19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch public: 20116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch TrackableMockInvalidation(bool is_unknown_version, 21116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int64 version, 22116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch const std::string& payload, 23116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch MockInvalidationTracker* tracker, 24116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int tracking_id); 25116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual ~TrackableMockInvalidation(); 26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Forwards notice of the acknowledgement of this invalidation to the 28116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // |tracker_|. 29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void Acknowledge() OVERRIDE; 30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 31116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Forwards notice of the drop of this invalidation to the |tracker_|. 32116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch virtual void Drop() OVERRIDE; 33116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 34116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Returns the integer used to identify this object with the |tracker_|. 35116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int GetTrackingId(); 36116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 37116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch private: 38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // The MockInvalidationTracker that initialized this object, and which keeps 39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // track of its acknowledgement status. It is expected to outlive the 40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // invalidations. The data required for unit test assertions lives there. 41116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch MockInvalidationTracker* tracker_; 42116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 43116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // An identifier that uniquely identifies this invalidation to its 44116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // |tracker_|. 45116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // 46116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // This is necessary in part because invalidations may be short lived; the 47116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // invalidation may be deleted by the time we want to make assertions about 48116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // its state. 49116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch int tracking_id_; 50116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}; 51116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 52116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} // namespace syncer 53116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 54116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif // SYNC_TEST_TRACKABLE_MOCK_INVALIDATION_H_ 55