Index: chrome/browser/webdata/web_data_service.cc |
diff --git a/chrome/browser/webdata/web_data_service.cc b/chrome/browser/webdata/web_data_service.cc |
index 80fae6321842d23633af8abdc194a50135b32568..8f5bf9345842af7276f5aa38c1fc1dd4904dd11f 100644 |
--- a/chrome/browser/webdata/web_data_service.cc |
+++ b/chrome/browser/webdata/web_data_service.cc |
@@ -15,6 +15,7 @@ |
#include "chrome/browser/ui/profile_error_dialog.h" |
#include "chrome/browser/webdata/autofill_change.h" |
#include "chrome/browser/webdata/autofill_entry.h" |
+#include "chrome/browser/webdata/autofill_profile_syncable_service.h" |
#include "chrome/browser/webdata/autofill_table.h" |
#include "chrome/browser/webdata/keyword_table.h" |
#include "chrome/browser/webdata/logins_table.h" |
@@ -74,6 +75,7 @@ WDKeywordsResult::~WDKeywordsResult() {} |
WebDataService::WebDataService() |
: is_running_(false), |
db_(NULL), |
+ autofill_profile_syncable_service_(NULL), |
failed_init_(false), |
should_commit_(false), |
next_request_handle_(1), |
@@ -101,6 +103,7 @@ bool WebDataService::Init(const FilePath& profile_path) { |
} |
void WebDataService::Shutdown() { |
+ ScheduleTask(Bind(&WebDataService::ShutdownSyncableServices, this)); |
UnloadDatabase(); |
} |
@@ -538,6 +541,7 @@ bool WebDataService::InitWithPath(const FilePath& path) { |
path_ = path; |
is_running_ = true; |
ScheduleTask(Bind(&WebDataService::InitializeDatabaseIfNecessary, this)); |
+ ScheduleTask(Bind(&WebDataService::InitializeSyncableServices, this)); |
return true; |
} |
@@ -628,6 +632,13 @@ void WebDataService::InitializeDatabaseIfNecessary() { |
db_->BeginTransaction(); |
} |
+void WebDataService::InitializeSyncableServices() { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
+ DCHECK(!autofill_profile_syncable_service_); |
+ |
+ autofill_profile_syncable_service_ = new AutofillProfileSyncableService(this); |
+} |
+ |
void WebDataService::NotifyDatabaseLoadedOnUIThread() { |
// Notify that the database has been initialized. |
NotificationService::current()->Notify( |
@@ -645,6 +656,13 @@ void WebDataService::ShutdownDatabase() { |
} |
} |
+void WebDataService::ShutdownSyncableServices() { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
+ |
+ delete autofill_profile_syncable_service_; |
+ autofill_profile_syncable_service_ = NULL; |
+} |
+ |
void WebDataService::Commit() { |
if (should_commit_) { |
should_commit_ = false; |
@@ -1360,6 +1378,14 @@ void WebDataService::RemoveAutofillProfilesAndCreditCardsModifiedBetweenImpl( |
request->RequestComplete(); |
} |
+AutofillProfileSyncableService* |
+ WebDataService::GetAutofillProfileSyncableService() const { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::DB)); |
+ DCHECK(autofill_profile_syncable_service_); // Make sure we're initialized. |
+ |
+ return autofill_profile_syncable_service_; |
+} |
+ |
//////////////////////////////////////////////////////////////////////////////// |
// |
// WebDataRequest implementation. |