Index: chrome/browser/sync/glue/fake_data_type_controller.cc |
diff --git a/chrome/browser/sync/glue/fake_data_type_controller.cc b/chrome/browser/sync/glue/fake_data_type_controller.cc |
index 510d8ec41d625d606ffeede12ed21884495dc8d8..99f538f1e72fc48982ead1f3f87afb7847f892d8 100755 |
--- a/chrome/browser/sync/glue/fake_data_type_controller.cc |
+++ b/chrome/browser/sync/glue/fake_data_type_controller.cc |
@@ -11,20 +11,26 @@ using syncable::ModelType; |
namespace browser_sync { |
FakeDataTypeController::FakeDataTypeController(ModelType type) |
- : state_(NOT_RUNNING), type_(type) {} |
+ : state_(NOT_RUNNING), model_load_delayed_(false), type_(type) {} |
FakeDataTypeController::~FakeDataTypeController() { |
} |
-// NOT_RUNNING ->MODEL_LOADED. |
+// NOT_RUNNING ->MODEL_LOADED |MODEL_STARTING. |
void FakeDataTypeController::LoadModels( |
const ModelLoadCallback& model_load_callback) { |
if (state_ != NOT_RUNNING) { |
ADD_FAILURE(); |
return; |
} |
- model_load_callback.Run(type(), SyncError()); |
- state_ = MODEL_LOADED; |
+ |
+ if (model_load_delayed_ == false) { |
+ model_load_callback.Run(type(), SyncError()); |
+ state_ = MODEL_LOADED; |
+ } else { |
+ model_load_callback_ = model_load_callback; |
+ state_ = MODEL_STARTING; |
+ } |
} |
void FakeDataTypeController::ModelsLoaded() { |
@@ -35,7 +41,7 @@ void FakeDataTypeController::ModelsLoaded() { |
void FakeDataTypeController::StartAssociating( |
const StartCallback& start_callback) { |
last_start_callback_ = start_callback; |
- state_ = MODEL_STARTING; |
+ state_ = ASSOCIATING; |
} |
// MODEL_STARTING | ASSOCIATING -> RUNNING | DISABLED | NOT_RUNNING |
@@ -108,5 +114,14 @@ void FakeDataTypeController::RecordUnrecoverableError( |
ADD_FAILURE() << message; |
} |
+void FakeDataTypeController::SetDelayModelLoad() { |
+ model_load_delayed_ = true; |
+} |
+ |
+void FakeDataTypeController::FinishModelLoad() { |
+ ModelLoadCallback model_load_callback = model_load_callback_; |
+ model_load_callback.Run(type(), SyncError()); |
+} |
+ |
} // namespace browser_sync |