Index: chrome/browser/sync/glue/extension_setting_data_type_controller.cc |
diff --git a/chrome/browser/sync/glue/extension_setting_data_type_controller.cc b/chrome/browser/sync/glue/extension_setting_data_type_controller.cc |
index e48b4d7eb4130a7ebdb18b0d5f1127803d3fcb88..08bfae170719c2746ca579b91f94439bd4761cc8 100644 |
--- a/chrome/browser/sync/glue/extension_setting_data_type_controller.cc |
+++ b/chrome/browser/sync/glue/extension_setting_data_type_controller.cc |
@@ -4,6 +4,7 @@ |
#include "chrome/browser/sync/glue/extension_setting_data_type_controller.h" |
+#include "base/bind.h" |
#include "base/metrics/histogram.h" |
#include "chrome/browser/extensions/extension_service.h" |
#include "chrome/browser/extensions/settings/settings_frontend.h" |
@@ -45,33 +46,24 @@ ExtensionSettingDataTypeController::model_safe_group() const { |
return browser_sync::GROUP_FILE; |
} |
-bool ExtensionSettingDataTypeController::StartModels() { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- profile_->InitExtensions(true); |
- return true; |
-} |
- |
-bool ExtensionSettingDataTypeController::StartAssociationAsync() { |
+bool ExtensionSettingDataTypeController::PostTaskOnBackendThread( |
+ const tracked_objects::Location& from_here, |
+ const base::Closure& task) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK_EQ(state(), ASSOCIATING); |
DCHECK(profile_->GetExtensionService()); |
profile_->GetExtensionService()->settings_frontend()->RunWithSyncableService( |
type_, |
base::Bind( |
- &ExtensionSettingDataTypeController:: |
- StartAssociationWithExtensionSettingsService, |
- this)); |
+ &ExtensionSettingDataTypeController::RunTaskOnBackendThread, |
+ this, |
+ task)); |
return true; |
} |
-void ExtensionSettingDataTypeController:: |
- StartAssociationWithExtensionSettingsService( |
- SyncableService* settings_service) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
- settings_service_ = settings_service; |
- // Calls CreateSyncComponents, which expects settings_service_ to be |
- // non-NULL. |
- StartAssociation(); |
+bool ExtensionSettingDataTypeController::StartModels() { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ profile_->InitExtensions(true); |
+ return true; |
} |
void ExtensionSettingDataTypeController::CreateSyncComponents() { |
@@ -85,20 +77,6 @@ void ExtensionSettingDataTypeController::CreateSyncComponents() { |
set_change_processor(sync_components.change_processor); |
} |
-bool ExtensionSettingDataTypeController::StopAssociationAsync() { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK_EQ(state(), STOPPING); |
- if (!BrowserThread::PostTask( |
- BrowserThread::FILE, |
- FROM_HERE, |
- base::Bind( |
- &ExtensionSettingDataTypeController::StopAssociation, |
- this))) { |
- NOTREACHED(); |
- } |
- return true; |
-} |
- |
void ExtensionSettingDataTypeController::RecordUnrecoverableError( |
const tracked_objects::Location& from_here, |
const std::string& message) { |
@@ -116,4 +94,13 @@ void ExtensionSettingDataTypeController::RecordStartFailure( |
"Sync.ExtensionSettingStartFailures", result, MAX_START_RESULT); |
} |
+void ExtensionSettingDataTypeController::RunTaskOnBackendThread( |
+ const base::Closure& task, |
+ SyncableService* settings_service) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
+ // Store |settings_service| so that |task| can use it. |
+ settings_service_ = settings_service; |
+ task.Run(); |
+} |
+ |
} // namespace browser_sync |