1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef SYNC_TEST_TRACKABLE_MOCK_INVALIDATION_H_ 6 #define SYNC_TEST_TRACKABLE_MOCK_INVALIDATION_H_ 7 8 #include "sync/test/mock_invalidation.h" 9 10 namespace syncer { 11 12 class MockInvalidationTracker; 13 14 // A variant of MockInvalidation that supports acknowledgements. 15 // 16 // With the help of a MockInvalidationTracker, this can be used to test 17 // sync's use of the Drop() and Acknowledge() methods. 18 class TrackableMockInvalidation : public MockInvalidation { 19 public: 20 TrackableMockInvalidation(bool is_unknown_version, 21 int64 version, 22 const std::string& payload, 23 MockInvalidationTracker* tracker, 24 int tracking_id); 25 virtual ~TrackableMockInvalidation(); 26 27 // Forwards notice of the acknowledgement of this invalidation to the 28 // |tracker_|. 29 virtual void Acknowledge() OVERRIDE; 30 31 // Forwards notice of the drop of this invalidation to the |tracker_|. 32 virtual void Drop() OVERRIDE; 33 34 // Returns the integer used to identify this object with the |tracker_|. 35 int GetTrackingId(); 36 37 private: 38 // The MockInvalidationTracker that initialized this object, and which keeps 39 // track of its acknowledgement status. It is expected to outlive the 40 // invalidations. The data required for unit test assertions lives there. 41 MockInvalidationTracker* tracker_; 42 43 // An identifier that uniquely identifies this invalidation to its 44 // |tracker_|. 45 // 46 // This is necessary in part because invalidations may be short lived; the 47 // invalidation may be deleted by the time we want to make assertions about 48 // its state. 49 int tracking_id_; 50 }; 51 52 } // namespace syncer 53 54 #endif // SYNC_TEST_TRACKABLE_MOCK_INVALIDATION_H_ 55