diff options
Diffstat (limited to 'chrome/browser/webdata/web_data_service.cc')
-rw-r--r-- | chrome/browser/webdata/web_data_service.cc | 41 |
1 files changed, 26 insertions, 15 deletions
diff --git a/chrome/browser/webdata/web_data_service.cc b/chrome/browser/webdata/web_data_service.cc index 6cf2631..ee99257 100644 --- a/chrome/browser/webdata/web_data_service.cc +++ b/chrome/browser/webdata/web_data_service.cc @@ -28,6 +28,9 @@ #include "chrome/browser/webdata/web_intents_table.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_notification_types.h" +#ifdef DEBUG +#include "content/public/browser/browser_thread.h" +#endif #include "content/public/browser/notification_details.h" #include "content/public/browser/notification_service.h" #include "content/public/browser/notification_source.h" @@ -78,14 +81,19 @@ WDKeywordsResult::WDKeywordsResult() WDKeywordsResult::~WDKeywordsResult() {} WebDataService::WebDataService() - : is_running_(false), - db_(NULL), - autocomplete_syncable_service_(NULL), - autofill_profile_syncable_service_(NULL), - failed_init_(false), - should_commit_(false), - next_request_handle_(1), - main_loop_(MessageLoop::current()) { + : RefcountedProfileKeyedService(BrowserThread::UI), + is_running_(false), + db_(NULL), + autocomplete_syncable_service_(NULL), + autofill_profile_syncable_service_(NULL), + failed_init_(false), + should_commit_(false), + next_request_handle_(1), + main_loop_(MessageLoop::current()) { + // WebDataService requires DB thread if instantiated. + // Set WebDataServiceFactory::GetInstance()->SetTestingFactory(&profile, NULL) + // if you do not want to instantiate WebDataService in your test. + DCHECK(BrowserThread::IsWellKnownThread(BrowserThread::DB)); } // static @@ -102,18 +110,18 @@ void WebDataService::NotifyOfMultipleAutofillChanges( make_scoped_refptr(web_data_service))); } +void WebDataService::ShutdownOnUIThread() { + ScheduleTask(FROM_HERE, + Bind(&WebDataService::ShutdownSyncableServices, this)); + UnloadDatabase(); +} + bool WebDataService::Init(const FilePath& profile_path) { FilePath path = profile_path; path = path.Append(chrome::kWebDataFilename); return InitWithPath(path); } -void WebDataService::Shutdown() { - ScheduleTask(FROM_HERE, - Bind(&WebDataService::ShutdownSyncableServices, this)); - UnloadDatabase(); -} - bool WebDataService::IsRunning() const { return is_running_; } @@ -554,6 +562,7 @@ void WebDataService::RemoveAutofillProfilesAndCreditCardsModifiedBetween( WebDataService::~WebDataService() { if (is_running_ && db_) { DLOG_ASSERT("WebDataService dtor called without Shutdown"); + NOTREACHED(); } } @@ -565,7 +574,9 @@ bool WebDataService::InitWithPath(const FilePath& path) { // [ http://crbug.com/100745 ], call |AutofillCountry::ApplicationLocale()| to // cache the application locale before we try to access it on the DB thread. // This should be safe to remove once [ http://crbug.com/100845 ] is fixed. - AutofillCountry::ApplicationLocale(); + // Do not do it if the thread is not UI (can happen only in some tests). + if (BrowserThread::CurrentlyOn(BrowserThread::UI)) + AutofillCountry::ApplicationLocale(); ScheduleTask(FROM_HERE, Bind(&WebDataService::InitializeDatabaseIfNecessary, this)); |