Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(37)

Unified Diff: chrome/browser/sync/glue/autofill_profile_data_type_controller.cc

Issue 15927029: Replace WebDatabaseObserver with callbacks (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: clean up Created 7 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/sync/glue/autofill_profile_data_type_controller.cc
diff --git a/chrome/browser/sync/glue/autofill_profile_data_type_controller.cc b/chrome/browser/sync/glue/autofill_profile_data_type_controller.cc
index 479fe764fc07dd220b310a080b0cb9e1f5833ed9..a48073737ee06af20bbd6f97690e532c8e3e34ff 100644
--- a/chrome/browser/sync/glue/autofill_profile_data_type_controller.cc
+++ b/chrome/browser/sync/glue/autofill_profile_data_type_controller.cc
@@ -28,7 +28,8 @@ AutofillProfileDataTypeController::AutofillProfileDataTypeController(
: NonUIDataTypeController(profile_sync_factory,
profile,
sync_service),
- personal_data_(NULL) {}
+ personal_data_(NULL),
+ callback_registered_(false) {}
syncer::ModelType AutofillProfileDataTypeController::type() const {
return syncer::AUTOFILL_PROFILE;
@@ -41,8 +42,6 @@ syncer::ModelSafeGroup
void AutofillProfileDataTypeController::WebDatabaseLoaded() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (web_data_service_.get())
- web_data_service_->RemoveDBObserver(this);
OnModelLoaded();
}
@@ -51,15 +50,19 @@ void AutofillProfileDataTypeController::OnPersonalDataChanged() {
DCHECK_EQ(state(), MODEL_STARTING);
personal_data_->RemoveObserver(this);
- web_data_service_ = AutofillWebDataService::FromBrowserContext(profile());
+ autofill::AutofillWebDataService* web_data_service =
+ autofill::AutofillWebDataService::FromBrowserContext(profile());
- if (!web_data_service_.get())
+ if (!web_data_service)
return;
- if (web_data_service_->IsDatabaseLoaded())
+ if (web_data_service->IsDatabaseLoaded()) {
OnModelLoaded();
- else
- web_data_service_->AddDBObserver(this);
+ } else if (!callback_registered_) {
+ web_data_service->RegisterDBLoadedCallback(base::Bind(
+ &AutofillProfileDataTypeController::WebDatabaseLoaded, this));
+ callback_registered_ = true;
+ }
}
AutofillProfileDataTypeController::~AutofillProfileDataTypeController() {}
@@ -84,15 +87,21 @@ bool AutofillProfileDataTypeController::StartModels() {
return false;
}
- web_data_service_ = AutofillWebDataService::FromBrowserContext(profile());
+ autofill::AutofillWebDataService* web_data_service =
+ AutofillWebDataService::FromBrowserContext(profile());
- if (!web_data_service_.get())
+ if (!web_data_service)
return false;
- if (web_data_service_->IsDatabaseLoaded())
+ if (web_data_service->IsDatabaseLoaded())
return true;
- web_data_service_->AddDBObserver(this);
+ if (!callback_registered_) {
+ web_data_service->RegisterDBLoadedCallback(base::Bind(
+ &AutofillProfileDataTypeController::WebDatabaseLoaded, this));
+ callback_registered_ = true;
+ }
+
return false;
}
@@ -100,9 +109,6 @@ void AutofillProfileDataTypeController::StopModels() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(state() == STOPPING || state() == NOT_RUNNING);
- if (web_data_service_.get())
- web_data_service_->RemoveDBObserver(this);
-
personal_data_->RemoveObserver(this);
}

Powered by Google App Engine
This is Rietveld 408576698