| Index: components/autofill/core/browser/autofill_wallet_data_type_controller.cc
|
| diff --git a/components/autofill/core/browser/autofill_wallet_data_type_controller.cc b/components/autofill/core/browser/autofill_wallet_data_type_controller.cc
|
| index df6fc3330b9b16a2eb7b745a9ab1a576525d6949..efcd206302150e831ace270f0ad2cb1c9eba3326 100644
|
| --- a/components/autofill/core/browser/autofill_wallet_data_type_controller.cc
|
| +++ b/components/autofill/core/browser/autofill_wallet_data_type_controller.cc
|
| @@ -17,36 +17,28 @@
|
| namespace browser_sync {
|
|
|
| AutofillWalletDataTypeController::AutofillWalletDataTypeController(
|
| - const scoped_refptr<base::SingleThreadTaskRunner>& ui_thread,
|
| + syncer::ModelType type,
|
| const scoped_refptr<base::SingleThreadTaskRunner>& db_thread,
|
| - const base::Closure& error_callback,
|
| + const base::Closure& dump_stack,
|
| sync_driver::SyncClient* sync_client,
|
| - syncer::ModelType model_type,
|
| const scoped_refptr<autofill::AutofillWebDataService>& web_data_service)
|
| - : NonUIDataTypeController(ui_thread, error_callback, sync_client),
|
| - ui_thread_(ui_thread),
|
| + : NonUIDataTypeController(type, dump_stack, sync_client),
|
| db_thread_(db_thread),
|
| sync_client_(sync_client),
|
| callback_registered_(false),
|
| - model_type_(model_type),
|
| web_data_service_(web_data_service),
|
| currently_enabled_(IsEnabled()) {
|
| - DCHECK(ui_thread_->BelongsToCurrentThread());
|
| - DCHECK(model_type_ == syncer::AUTOFILL_WALLET_DATA ||
|
| - model_type_ == syncer::AUTOFILL_WALLET_METADATA);
|
| + DCHECK(type == syncer::AUTOFILL_WALLET_DATA ||
|
| + type == syncer::AUTOFILL_WALLET_METADATA);
|
| pref_registrar_.Init(sync_client_->GetPrefService());
|
| pref_registrar_.Add(
|
| autofill::prefs::kAutofillWalletImportEnabled,
|
| base::Bind(&AutofillWalletDataTypeController::OnUserPrefChanged,
|
| - base::Unretained(this)));
|
| + base::AsWeakPtr(this)));
|
| }
|
|
|
| AutofillWalletDataTypeController::~AutofillWalletDataTypeController() {}
|
|
|
| -syncer::ModelType AutofillWalletDataTypeController::type() const {
|
| - return model_type_;
|
| -}
|
| -
|
| syncer::ModelSafeGroup AutofillWalletDataTypeController::model_safe_group()
|
| const {
|
| return syncer::GROUP_DB;
|
| @@ -55,12 +47,12 @@ syncer::ModelSafeGroup AutofillWalletDataTypeController::model_safe_group()
|
| bool AutofillWalletDataTypeController::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 AutofillWalletDataTypeController::StartModels() {
|
| - DCHECK(ui_thread_->BelongsToCurrentThread());
|
| + DCHECK(CalledOnValidThread());
|
| DCHECK_EQ(state(), MODEL_STARTING);
|
|
|
| if (!web_data_service_)
|
| @@ -71,7 +63,8 @@ bool AutofillWalletDataTypeController::StartModels() {
|
|
|
| if (!callback_registered_) {
|
| web_data_service_->RegisterDBLoadedCallback(
|
| - base::Bind(&AutofillWalletDataTypeController::OnModelLoaded, this));
|
| + base::Bind(&AutofillWalletDataTypeController::OnModelLoaded,
|
| + base::AsWeakPtr(this)));
|
| callback_registered_ = true;
|
| }
|
|
|
| @@ -79,7 +72,7 @@ bool AutofillWalletDataTypeController::StartModels() {
|
| }
|
|
|
| void AutofillWalletDataTypeController::StopModels() {
|
| - DCHECK(ui_thread_->BelongsToCurrentThread());
|
| + DCHECK(CalledOnValidThread());
|
|
|
| // This function is called when shutting down (nothing is changing), when
|
| // sync is disabled completely, or when wallet sync is disabled. In the
|
| @@ -102,12 +95,12 @@ void AutofillWalletDataTypeController::StopModels() {
|
| }
|
|
|
| bool AutofillWalletDataTypeController::ReadyForStart() const {
|
| - DCHECK(ui_thread_->BelongsToCurrentThread());
|
| + DCHECK(CalledOnValidThread());
|
| return currently_enabled_;
|
| }
|
|
|
| void AutofillWalletDataTypeController::OnUserPrefChanged() {
|
| - DCHECK(ui_thread_->BelongsToCurrentThread());
|
| + DCHECK(CalledOnValidThread());
|
|
|
| bool new_enabled = IsEnabled();
|
| if (currently_enabled_ == new_enabled)
|
| @@ -120,21 +113,17 @@ void AutofillWalletDataTypeController::OnUserPrefChanged() {
|
| sync_driver::SyncService* sync_service = sync_client_->GetSyncService();
|
| sync_service->ReenableDatatype(type());
|
| } else {
|
| - // Post a task to the backend thread to stop the datatype.
|
| + // Report the error (which will stop the datatype asynchronously).
|
| if (state() != NOT_RUNNING && state() != STOPPING) {
|
| - PostTaskOnBackendThread(
|
| - FROM_HERE,
|
| - base::Bind(&DataTypeController::OnSingleDataTypeUnrecoverableError,
|
| - this,
|
| - syncer::SyncError(
|
| - FROM_HERE, syncer::SyncError::DATATYPE_POLICY_ERROR,
|
| - "Wallet syncing is disabled by policy.", type())));
|
| + CreateErrorHandler()->OnUnrecoverableError(
|
| + syncer::SyncError(FROM_HERE, syncer::SyncError::DATATYPE_POLICY_ERROR,
|
| + "Wallet syncing is disabled by policy.", type()));
|
| }
|
| }
|
| }
|
|
|
| bool AutofillWalletDataTypeController::IsEnabled() {
|
| - DCHECK(ui_thread_->BelongsToCurrentThread());
|
| + DCHECK(CalledOnValidThread());
|
|
|
| // Require the user-visible pref to be enabled to sync Wallet data/metadata.
|
| PrefService* ps = sync_client_->GetPrefService();
|
|
|