| Index: components/sync_driver/model_association_manager.cc
|
| diff --git a/components/sync_driver/model_association_manager.cc b/components/sync_driver/model_association_manager.cc
|
| index 0b89f81945ea8fd55b03376ecd5a01091c8a8135..a66372f7f3aab1ba8c0987b752631f1addd4a88f 100644
|
| --- a/components/sync_driver/model_association_manager.cc
|
| +++ b/components/sync_driver/model_association_manager.cc
|
| @@ -110,10 +110,10 @@ syncer::DataTypeAssociationStats BuildAssociationStatsFromMergeResults(
|
|
|
| ModelAssociationManager::ModelAssociationManager(
|
| const DataTypeController::TypeMap* controllers,
|
| - ModelAssociationResultProcessor* processor)
|
| + ModelAssociationManagerDelegate* processor)
|
| : state_(IDLE),
|
| controllers_(controllers),
|
| - result_processor_(processor),
|
| + delegate_(processor),
|
| weak_ptr_factory_(this),
|
| configure_status_(DataTypeManager::UNKNOWN) {
|
| // Ensure all data type controllers are stopped.
|
| @@ -150,6 +150,15 @@ void ModelAssociationManager::Initialize(syncer::ModelTypeSet desired_types) {
|
| LoadEnabledTypes();
|
| }
|
|
|
| +void ModelAssociationManager::StopDatatype(DataTypeController* dtc) {
|
| + // First tell the sync backend that we no longer want to listen to
|
| + // changes for this type.
|
| + delegate_->OnSingleDataTypeWillStop(dtc->type());
|
| +
|
| + // Then tell all data type specific logic to shut down.
|
| + dtc->Stop();
|
| +}
|
| +
|
| void ModelAssociationManager::StopDisabledTypes() {
|
| DVLOG(1) << "ModelAssociationManager: Stopping disabled types.";
|
| for (DataTypeController::TypeMap::const_iterator it = controllers_->begin();
|
| @@ -159,8 +168,7 @@ void ModelAssociationManager::StopDisabledTypes() {
|
| (!desired_types_.Has(dtc->type()) ||
|
| failed_data_types_info_.count(dtc->type()) > 0)) {
|
| DVLOG(1) << "ModelTypeToString: stop " << dtc->name();
|
| - dtc->Stop();
|
| -
|
| + StopDatatype(dtc);
|
| loaded_types_.Remove(dtc->type());
|
| associated_types_.Remove(dtc->type());
|
| }
|
| @@ -261,7 +269,7 @@ void ModelAssociationManager::Stop() {
|
| it != controllers_->end(); ++it) {
|
| DataTypeController* dtc = (*it).second.get();
|
| if (dtc->state() != DataTypeController::NOT_RUNNING) {
|
| - dtc->Stop();
|
| + StopDatatype(dtc);
|
| DVLOG(1) << "ModelAssociationManager: Stopped " << dtc->name();
|
| }
|
| }
|
| @@ -353,7 +361,7 @@ void ModelAssociationManager::TypeStartCallback(
|
| // enabled.
|
| DataTypeController* dtc = controllers_->find(type)->second.get();
|
| if (dtc->state() != DataTypeController::NOT_RUNNING)
|
| - dtc->Stop();
|
| + StopDatatype(dtc);
|
| loaded_types_.Remove(type);
|
| } else {
|
| // Record error in CONFIGURING or INITIALIZED_TO_CONFIGURE mode. The error
|
| @@ -389,7 +397,7 @@ void ModelAssociationManager::TypeStartCallback(
|
| syncer_merge_result,
|
| association_wait_time,
|
| association_time);
|
| - result_processor_->OnSingleDataTypeAssociationDone(type, stats);
|
| + delegate_->OnSingleDataTypeAssociationDone(type, stats);
|
| }
|
|
|
| // Update configuration result.
|
| @@ -440,12 +448,12 @@ void ModelAssociationManager::ModelAssociationDone() {
|
| associating_types_,
|
| needs_crypto_types_);
|
|
|
| - // Reset state before notifying |result_processor_| because that might
|
| + // Reset state before notifying |delegate_| because that might
|
| // trigger a new round of configuration.
|
| ResetForNextAssociation();
|
| state_ = IDLE;
|
|
|
| - result_processor_->OnModelAssociationDone(result);
|
| + delegate_->OnModelAssociationDone(result);
|
| }
|
|
|
| base::OneShotTimer<ModelAssociationManager>*
|
|
|