// Copyright 2014 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.

#ifndef SYNC_TEST_TRACKABLE_MOCK_INVALIDATION_H_
#define SYNC_TEST_TRACKABLE_MOCK_INVALIDATION_H_

#include <stdint.h>

#include <string>

#include "sync/test/mock_invalidation.h"

namespace syncer {

class MockInvalidationTracker;

// A variant of MockInvalidation that supports acknowledgements.
//
// With the help of a MockInvalidationTracker, this can be used to test
// sync's use of the Drop() and Acknowledge() methods.
class TrackableMockInvalidation : public MockInvalidation {
 public:
  TrackableMockInvalidation(bool is_unknown_version,
                            int64_t version,
                            const std::string& payload,
                            MockInvalidationTracker* tracker,
                            int tracking_id);
  ~TrackableMockInvalidation() override;

  // Forwards notice of the acknowledgement of this invalidation to the
  // |tracker_|.
  void Acknowledge() override;

  // Forwards notice of the drop of this invalidation to the |tracker_|.
  void Drop() override;

  // Returns the integer used to identify this object with the |tracker_|.
  int GetTrackingId();

 private:
  // The MockInvalidationTracker that initialized this object, and which keeps
  // track of its acknowledgement status.  It is expected to outlive the
  // invalidations.  The data required for unit test assertions lives there.
  MockInvalidationTracker* tracker_;

  // An identifier that uniquely identifies this invalidation to its
  // |tracker_|.
  //
  // This is necessary in part because invalidations may be short lived; the
  // invalidation may be deleted by the time we want to make assertions about
  // its state.
  int tracking_id_;
};

}  // namespace syncer

#endif  // SYNC_TEST_TRACKABLE_MOCK_INVALIDATION_H_
