1// Copyright (c) 2012 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_TEST_TRANSACTION_OBSERVER_H_
6#define SYNC_TEST_TEST_TRANSACTION_OBSERVER_H_
7
8#include "base/memory/weak_ptr.h"
9#include "sync/internal_api/public/base/model_type.h"
10#include "sync/syncable/transaction_observer.h"
11#include "sync/syncable/write_transaction_info.h"
12
13namespace syncer {
14namespace syncable {
15
16// This class acts as a TransactionObserver for the syncable::Directory.
17// It gathers information that is useful for writing test assertions.
18class TestTransactionObserver :
19  public base::SupportsWeakPtr<TestTransactionObserver>,
20  public TransactionObserver {
21 public:
22  TestTransactionObserver();
23  virtual ~TestTransactionObserver();
24  virtual void OnTransactionWrite(
25      const ImmutableWriteTransactionInfo& write_transaction_info,
26      ModelTypeSet models_with_changes) OVERRIDE;
27
28  // Returns the number of transactions observed.
29  //
30  // Transactions are generated only when meaningful changes are made.  For most
31  // testing purposes, you may assume that this counts the number of syncer
32  // nudges generated.
33  int transactions_observed();
34
35 private:
36  DISALLOW_COPY_AND_ASSIGN(TestTransactionObserver);
37
38  int transactions_observed_;
39};
40
41}  // namespace syncable
42}  // namespace syncer
43
44
45#endif  // SYNC_TEST_TEST_TRANSACTION_OBSERVER_H_
46