Index: components/autofill/core/browser/webdata/autofill_profile_data_type_controller.cc |
diff --git a/components/autofill/core/browser/webdata/autofill_profile_data_type_controller.cc b/components/autofill/core/browser/webdata/autofill_profile_data_type_controller.cc |
index d37048b312849135be075b3fc2dfc9801b8a330e..166abbb905a27401783887a5043fe74890531773 100644 |
--- a/components/autofill/core/browser/webdata/autofill_profile_data_type_controller.cc |
+++ b/components/autofill/core/browser/webdata/autofill_profile_data_type_controller.cc |
@@ -17,34 +17,30 @@ using autofill::AutofillWebDataService; |
namespace browser_sync { |
AutofillProfileDataTypeController::AutofillProfileDataTypeController( |
- const scoped_refptr<base::SingleThreadTaskRunner>& ui_thread, |
const scoped_refptr<base::SingleThreadTaskRunner>& db_thread, |
- const base::Closure& error_callback, |
+ const base::Closure& dump_stack, |
sync_driver::SyncClient* sync_client, |
const scoped_refptr<autofill::AutofillWebDataService>& web_data_service) |
- : NonUIDataTypeController(ui_thread, error_callback, sync_client), |
- ui_thread_(ui_thread), |
+ : NonUIDataTypeController(syncer::AUTOFILL_PROFILE, |
+ dump_stack, |
+ sync_client), |
db_thread_(db_thread), |
sync_client_(sync_client), |
web_data_service_(web_data_service), |
callback_registered_(false) {} |
-syncer::ModelType AutofillProfileDataTypeController::type() const { |
- return syncer::AUTOFILL_PROFILE; |
-} |
- |
syncer::ModelSafeGroup AutofillProfileDataTypeController::model_safe_group() |
const { |
return syncer::GROUP_DB; |
} |
void AutofillProfileDataTypeController::WebDatabaseLoaded() { |
- DCHECK(ui_thread_->BelongsToCurrentThread()); |
+ DCHECK(CalledOnValidThread()); |
OnModelLoaded(); |
} |
void AutofillProfileDataTypeController::OnPersonalDataChanged() { |
- DCHECK(ui_thread_->BelongsToCurrentThread()); |
+ DCHECK(CalledOnValidThread()); |
DCHECK_EQ(state(), MODEL_STARTING); |
sync_client_->GetPersonalDataManager()->RemoveObserver(this); |
@@ -55,8 +51,9 @@ void AutofillProfileDataTypeController::OnPersonalDataChanged() { |
if (web_data_service_->IsDatabaseLoaded()) { |
OnModelLoaded(); |
} else if (!callback_registered_) { |
- web_data_service_->RegisterDBLoadedCallback(base::Bind( |
- &AutofillProfileDataTypeController::WebDatabaseLoaded, this)); |
+ web_data_service_->RegisterDBLoadedCallback( |
+ base::Bind(&AutofillProfileDataTypeController::WebDatabaseLoaded, |
+ base::AsWeakPtr(this))); |
callback_registered_ = true; |
} |
} |
@@ -66,12 +63,12 @@ AutofillProfileDataTypeController::~AutofillProfileDataTypeController() {} |
bool AutofillProfileDataTypeController::PostTaskOnBackendThread( |
const tracked_objects::Location& from_here, |
const base::Closure& task) { |
- DCHECK(ui_thread_->BelongsToCurrentThread()); |
+ DCHECK(CalledOnValidThread()); |
return db_thread_->PostTask(from_here, task); |
} |
bool AutofillProfileDataTypeController::StartModels() { |
- DCHECK(ui_thread_->BelongsToCurrentThread()); |
+ DCHECK(CalledOnValidThread()); |
DCHECK_EQ(state(), MODEL_STARTING); |
// Waiting for the personal data is subtle: we do this as the PDM resets |
// its cache of unique IDs once it gets loaded. If we were to proceed with |
@@ -90,8 +87,9 @@ bool AutofillProfileDataTypeController::StartModels() { |
return true; |
if (!callback_registered_) { |
- web_data_service_->RegisterDBLoadedCallback(base::Bind( |
- &AutofillProfileDataTypeController::WebDatabaseLoaded, this)); |
+ web_data_service_->RegisterDBLoadedCallback( |
+ base::Bind(&AutofillProfileDataTypeController::WebDatabaseLoaded, |
+ base::AsWeakPtr(this))); |
callback_registered_ = true; |
} |
@@ -99,7 +97,7 @@ bool AutofillProfileDataTypeController::StartModels() { |
} |
void AutofillProfileDataTypeController::StopModels() { |
- DCHECK(ui_thread_->BelongsToCurrentThread()); |
+ DCHECK(CalledOnValidThread()); |
sync_client_->GetPersonalDataManager()->RemoveObserver(this); |
} |