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