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 CHROME_BROWSER_SYNC_GLUE_FAKE_DATA_TYPE_CONTROLLER_H__ 6 #define CHROME_BROWSER_SYNC_GLUE_FAKE_DATA_TYPE_CONTROLLER_H__ 7 8 #include "chrome/browser/sync/glue/data_type_controller.h" 9 #include "chrome/browser/sync/glue/data_type_manager.h" 10 11 namespace 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.) 21 class 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 virtual void SimulateModelLoadFinishing(); 55 56 protected: 57 virtual ~FakeDataTypeController(); 58 59 private: 60 DataTypeController::State state_; 61 bool model_load_delayed_; 62 syncer::ModelType type_; 63 StartCallback last_start_callback_; 64 ModelLoadCallback model_load_callback_; 65 }; 66 67 } // namespace browser_sync 68 #endif // CHROME_BROWSER_SYNC_GLUE_FAKE_DATA_TYPE_CONTROLLER_H__ 69