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

Unified Diff: chrome/browser/sync/glue/autofill_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_data_type_controller.cc
diff --git a/chrome/browser/sync/glue/autofill_data_type_controller.cc b/chrome/browser/sync/glue/autofill_data_type_controller.cc
index 20f0c7be2b20bd7b4dcc7c527f3d22d8d90e85b5..ba5a1be4fc88ff15a42ade6b847f29a4d915120e 100644
--- a/chrome/browser/sync/glue/autofill_data_type_controller.cc
+++ b/chrome/browser/sync/glue/autofill_data_type_controller.cc
@@ -40,16 +40,11 @@ void AutofillDataTypeController::WebDatabaseLoaded() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK_EQ(MODEL_STARTING, state());
- if (web_data_service_.get())
- web_data_service_->RemoveDBObserver(this);
-
OnModelLoaded();
}
AutofillDataTypeController::~AutofillDataTypeController() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (web_data_service_.get())
- web_data_service_->RemoveDBObserver(this);
}
bool AutofillDataTypeController::PostTaskOnBackendThread(
@@ -63,13 +58,17 @@ bool AutofillDataTypeController::StartModels() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK_EQ(MODEL_STARTING, state());
- web_data_service_ =
+ autofill::AutofillWebDataService* web_data_service =
autofill::AutofillWebDataService::FromBrowserContext(profile());
- if (web_data_service_->IsDatabaseLoaded()) {
+
+ if (!web_data_service)
+ return false;
+
+ if (web_data_service->IsDatabaseLoaded()) {
return true;
} else {
- if (web_data_service_.get())
- web_data_service_->AddDBObserver(this);
+ web_data_service->RegisterDBLoadedCallback(base::Bind(
+ &AutofillDataTypeController::WebDatabaseLoaded, this));
return false;
}
}
@@ -78,8 +77,6 @@ void AutofillDataTypeController::StopModels() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(state() == STOPPING || state() == NOT_RUNNING || state() == DISABLED);
DVLOG(1) << "AutofillDataTypeController::StopModels() : State = " << state();
- if (web_data_service_.get())
- web_data_service_->RemoveDBObserver(this);
}
void AutofillDataTypeController::StartAssociating(
@@ -89,6 +86,8 @@ void AutofillDataTypeController::StartAssociating(
ProfileSyncService* sync = ProfileSyncServiceFactory::GetForProfile(
profile());
DCHECK(sync);
+ scoped_refptr<autofill::AutofillWebDataService> web_data_service =
+ autofill::AutofillWebDataService::FromBrowserContext(profile());
bool cull_expired_entries = sync->current_experiments().autofill_culling;
// First, post the update task to the DB thread, which guarantees us it
// would run before anything StartAssociating does (e.g.
@@ -98,15 +97,17 @@ void AutofillDataTypeController::StartAssociating(
base::Bind(
&AutofillDataTypeController::UpdateAutofillCullingSettings,
this,
- cull_expired_entries));
+ cull_expired_entries,
+ web_data_service));
NonUIDataTypeController::StartAssociating(start_callback);
}
void AutofillDataTypeController::UpdateAutofillCullingSettings(
- bool cull_expired_entries) {
+ bool cull_expired_entries,
+ scoped_refptr<autofill::AutofillWebDataService> web_data_service) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB));
AutocompleteSyncableService* service =
- AutocompleteSyncableService::FromWebDataService(web_data_service_.get());
+ AutocompleteSyncableService::FromWebDataService(web_data_service);
if (!service) {
DVLOG(1) << "Can't update culling, no AutocompleteSyncableService.";
return;

Powered by Google App Engine
This is Rietveld 408576698