fake_data_type_controller.h revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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 COMPONENTS_SYNC_DRIVER_FAKE_DATA_TYPE_CONTROLLER_H__
6#define COMPONENTS_SYNC_DRIVER_FAKE_DATA_TYPE_CONTROLLER_H__
7
8#include "components/sync_driver/data_type_controller.h"
9#include "components/sync_driver/data_type_manager.h"
10
11namespace browser_sync {
12// Fake DataTypeController implementation that simulates the state
13// machine of a typical asynchronous data type.
14//
15// TODO(akalin): Consider using subclasses of
16// {Frontend,NonFrontend,NewNonFrontend}DataTypeController instead, so
17// that we don't have to update this class if we change the expected
18// behavior of controllers. (It would be easier of the above classes
19// used delegation instead of subclassing for per-data-type
20// functionality.)
21class FakeDataTypeController : public DataTypeController {
22 public:
23  explicit FakeDataTypeController(syncer::ModelType type);
24
25  virtual void LoadModels(
26      const ModelLoadCallback& model_load_callback) OVERRIDE;
27
28  virtual void OnModelLoaded() OVERRIDE;
29
30  virtual void StartAssociating(const StartCallback& start_callback) OVERRIDE;
31
32  void FinishStart(StartResult result);
33
34  virtual void Stop() OVERRIDE;
35
36  virtual syncer::ModelType type() const OVERRIDE;
37
38  virtual std::string name() const OVERRIDE;
39
40  virtual syncer::ModelSafeGroup model_safe_group() const OVERRIDE;
41
42  virtual State state() const OVERRIDE;
43
44  virtual void OnSingleDatatypeUnrecoverableError(
45      const tracked_objects::Location& from_here,
46      const std::string& message) OVERRIDE;
47
48  virtual void RecordUnrecoverableError(
49      const tracked_objects::Location& from_here,
50      const std::string& message) OVERRIDE;
51
52  virtual void SetDelayModelLoad();
53
54  void SetModelLoadError(syncer::SyncError error);
55
56  virtual void SimulateModelLoadFinishing();
57
58 protected:
59  virtual ~FakeDataTypeController();
60
61 private:
62  DataTypeController::State state_;
63  bool model_load_delayed_;
64  syncer::ModelType type_;
65  StartCallback last_start_callback_;
66  ModelLoadCallback model_load_callback_;
67  syncer::SyncError load_error_;
68};
69
70}  // namespace browser_sync
71#endif  // COMPONENTS_SYNC_DRIVER_FAKE_DATA_TYPE_CONTROLLER_H__
72