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

Unified Diff: chrome/browser/webdata/web_data_service_factory.cc

Issue 777863002: Introduce new component webdata_services (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Compile as static_library instead of component Created 6 years 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
« no previous file with comments | « chrome/browser/webdata/web_data_service_factory.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/webdata/web_data_service_factory.cc
diff --git a/chrome/browser/webdata/web_data_service_factory.cc b/chrome/browser/webdata/web_data_service_factory.cc
index 18f9c4054da74202a8987e44289bff424489731b..036350d5dd82bce53f3fd4101997612217a291db 100644
--- a/chrome/browser/webdata/web_data_service_factory.cc
+++ b/chrome/browser/webdata/web_data_service_factory.cc
@@ -6,6 +6,7 @@
#include "base/bind.h"
#include "base/files/file_path.h"
+#include "base/memory/singleton.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/profiles/incognito_helpers.h"
#include "chrome/browser/sync/glue/sync_start_util.h"
@@ -13,39 +14,58 @@
#include "chrome/browser/webdata/autocomplete_syncable_service.h"
#include "chrome/grit/chromium_strings.h"
#include "chrome/grit/generated_resources.h"
-#include "components/autofill/core/browser/autofill_country.h"
#include "components/autofill/core/browser/webdata/autofill_profile_syncable_service.h"
-#include "components/autofill/core/browser/webdata/autofill_table.h"
-#include "components/autofill/core/browser/webdata/autofill_webdata_service.h"
#include "components/keyed_service/content/browser_context_dependency_manager.h"
-#include "components/password_manager/core/browser/webdata/logins_table.h"
-#include "components/search_engines/keyword_table.h"
#include "components/search_engines/keyword_web_data_service.h"
-#include "components/signin/core/browser/webdata/token_service_table.h"
#include "components/signin/core/browser/webdata/token_web_data.h"
-#include "components/webdata/common/webdata_constants.h"
+#include "components/webdata_services/web_data_service_wrapper.h"
#include "content/public/browser/browser_thread.h"
#if defined(OS_WIN)
#include "components/password_manager/core/browser/webdata/password_web_data_service_win.h"
#endif
-using autofill::AutofillWebDataService;
using autofill::AutofillProfileSyncableService;
using content::BrowserThread;
namespace {
+// Converts a WebDataServiceWrapper::ErrorType to ProfileErrorType.
+ProfileErrorType ProfileErrorFromWebDataServiceWrapperError(
+ WebDataServiceWrapper::ErrorType error_type) {
+ switch (error_type) {
+ case WebDataServiceWrapper::ERROR_LOADING_AUTOFILL:
+ return PROFILE_ERROR_DB_AUTOFILL_WEB_DATA;
+
+ case WebDataServiceWrapper::ERROR_LOADING_KEYWORD:
+ return PROFILE_ERROR_DB_KEYWORD_WEB_DATA;
+
+ case WebDataServiceWrapper::ERROR_LOADING_TOKEN:
+ return PROFILE_ERROR_DB_TOKEN_WEB_DATA;
+
+ case WebDataServiceWrapper::ERROR_LOADING_PASSWORD:
+ return PROFILE_ERROR_DB_WEB_DATA;
+
+ default:
+ NOTREACHED()
+ << "Unknown WebDataServiceWrapper::ErrorType: " << error_type;
+ return PROFILE_ERROR_DB_WEB_DATA;
+ }
+}
+
// Callback to show error dialog on profile load error.
-void ProfileErrorCallback(ProfileErrorType type, sql::InitStatus status) {
+void ProfileErrorCallback(WebDataServiceWrapper::ErrorType error_type,
+ sql::InitStatus status) {
ShowProfileErrorDialog(
- type,
+ ProfileErrorFromWebDataServiceWrapperError(error_type),
(status == sql::INIT_FAILURE) ?
IDS_COULDNT_OPEN_PROFILE_ERROR : IDS_PROFILE_TOO_NEW_ERROR);
}
+} // namespace
+
void InitSyncableServicesOnDBThread(
- scoped_refptr<AutofillWebDataService> autofill_web_data,
+ scoped_refptr<autofill::AutofillWebDataService> autofill_web_data,
const base::FilePath& profile_path,
const std::string& app_locale,
autofill::AutofillWebDataBackend* autofill_backend) {
@@ -65,105 +85,6 @@ void InitSyncableServicesOnDBThread(
sync_start_util::GetFlareForSyncableService(profile_path));
}
-} // namespace
-
-WebDataServiceWrapper::WebDataServiceWrapper() {
-}
-
-WebDataServiceWrapper::WebDataServiceWrapper(Profile* profile) {
- base::FilePath profile_path = profile->GetPath();
- base::FilePath path = profile_path.Append(kWebDataFilename);
-
- scoped_refptr<base::MessageLoopProxy> ui_thread =
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI);
- scoped_refptr<base::MessageLoopProxy> db_thread =
- BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB);
- web_database_ = new WebDatabaseService(path, ui_thread, db_thread);
-
- // All tables objects that participate in managing the database must
- // be added here.
- web_database_->AddTable(scoped_ptr<WebDatabaseTable>(
- new autofill::AutofillTable(g_browser_process->GetApplicationLocale())));
- web_database_->AddTable(scoped_ptr<WebDatabaseTable>(new KeywordTable()));
- // TODO(mdm): We only really need the LoginsTable on Windows for IE7 password
- // access, but for now, we still create it on all platforms since it deletes
- // the old logins table. We can remove this after a while, e.g. in M22 or so.
- web_database_->AddTable(scoped_ptr<WebDatabaseTable>(new LoginsTable()));
- web_database_->AddTable(
- scoped_ptr<WebDatabaseTable>(new TokenServiceTable()));
-
- web_database_->LoadDatabase();
-
- autofill_web_data_ = new AutofillWebDataService(
- web_database_,
- ui_thread,
- db_thread,
- base::Bind(&ProfileErrorCallback, PROFILE_ERROR_DB_AUTOFILL_WEB_DATA));
- autofill_web_data_->Init();
-
- keyword_web_data_ = new KeywordWebDataService(
- web_database_,
- ui_thread,
- base::Bind(&ProfileErrorCallback, PROFILE_ERROR_DB_KEYWORD_WEB_DATA));
- keyword_web_data_->Init();
-
- token_web_data_ = new TokenWebData(
- web_database_,
- ui_thread,
- db_thread,
- base::Bind(&ProfileErrorCallback, PROFILE_ERROR_DB_TOKEN_WEB_DATA));
- token_web_data_->Init();
-
-#if defined(OS_WIN)
- password_web_data_ = new PasswordWebDataService(
- web_database_,
- ui_thread,
- base::Bind(&ProfileErrorCallback, PROFILE_ERROR_DB_WEB_DATA));
- password_web_data_->Init();
-#endif
-
- autofill_web_data_->GetAutofillBackend(
- base::Bind(&InitSyncableServicesOnDBThread,
- autofill_web_data_,
- profile_path,
- g_browser_process->GetApplicationLocale()));
-}
-
-WebDataServiceWrapper::~WebDataServiceWrapper() {
-}
-
-void WebDataServiceWrapper::Shutdown() {
- autofill_web_data_->ShutdownOnUIThread();
- keyword_web_data_->ShutdownOnUIThread();
- token_web_data_->ShutdownOnUIThread();
-
-#if defined(OS_WIN)
- password_web_data_->ShutdownOnUIThread();
-#endif
- web_database_->ShutdownDatabase();
-}
-
-scoped_refptr<AutofillWebDataService>
-WebDataServiceWrapper::GetAutofillWebData() {
- return autofill_web_data_.get();
-}
-
-scoped_refptr<KeywordWebDataService>
-WebDataServiceWrapper::GetKeywordWebData() {
- return keyword_web_data_.get();
-}
-
-scoped_refptr<TokenWebData> WebDataServiceWrapper::GetTokenWebData() {
- return token_web_data_.get();
-}
-
-#if defined(OS_WIN)
-scoped_refptr<PasswordWebDataService>
-WebDataServiceWrapper::GetPasswordWebData() {
- return password_web_data_.get();
-}
-#endif
-
WebDataServiceFactory::WebDataServiceFactory()
: BrowserContextKeyedServiceFactory(
"WebDataService",
@@ -199,16 +120,16 @@ WebDataServiceWrapper* WebDataServiceFactory::GetForProfileIfExists(
}
// static
-scoped_refptr<AutofillWebDataService>
+scoped_refptr<autofill::AutofillWebDataService>
WebDataServiceFactory::GetAutofillWebDataForProfile(
Profile* profile,
Profile::ServiceAccessType access_type) {
WebDataServiceWrapper* wrapper =
WebDataServiceFactory::GetForProfile(profile, access_type);
- // |wrapper| can be NULL in Incognito mode.
+ // |wrapper| can be null in Incognito mode.
return wrapper ?
wrapper->GetAutofillWebData() :
- scoped_refptr<AutofillWebDataService>(NULL);
+ scoped_refptr<autofill::AutofillWebDataService>(nullptr);
}
// static
@@ -218,9 +139,10 @@ WebDataServiceFactory::GetKeywordWebDataForProfile(
Profile::ServiceAccessType access_type) {
WebDataServiceWrapper* wrapper =
WebDataServiceFactory::GetForProfile(profile, access_type);
- // |wrapper| can be NULL in Incognito mode.
+ // |wrapper| can be null in Incognito mode.
return wrapper ?
- wrapper->GetKeywordWebData() : scoped_refptr<KeywordWebDataService>(NULL);
+ wrapper->GetKeywordWebData() :
+ scoped_refptr<KeywordWebDataService>(nullptr);
}
// static
@@ -229,9 +151,9 @@ scoped_refptr<TokenWebData> WebDataServiceFactory::GetTokenWebDataForProfile(
Profile::ServiceAccessType access_type) {
WebDataServiceWrapper* wrapper =
WebDataServiceFactory::GetForProfile(profile, access_type);
- // |wrapper| can be NULL in Incognito mode.
+ // |wrapper| can be null in Incognito mode.
return wrapper ?
- wrapper->GetTokenWebData() : scoped_refptr<TokenWebData>(NULL);
+ wrapper->GetTokenWebData() : scoped_refptr<TokenWebData>(nullptr);
}
#if defined(OS_WIN)
@@ -242,10 +164,10 @@ WebDataServiceFactory::GetPasswordWebDataForProfile(
Profile::ServiceAccessType access_type) {
WebDataServiceWrapper* wrapper =
WebDataServiceFactory::GetForProfile(profile, access_type);
- // |wrapper| can be NULL in Incognito mode.
+ // |wrapper| can be null in Incognito mode.
return wrapper ?
wrapper->GetPasswordWebData() :
- scoped_refptr<PasswordWebDataService>(NULL);
+ scoped_refptr<PasswordWebDataService>(nullptr);
}
#endif
@@ -261,7 +183,18 @@ content::BrowserContext* WebDataServiceFactory::GetBrowserContextToUse(
KeyedService* WebDataServiceFactory::BuildServiceInstanceFor(
content::BrowserContext* profile) const {
- return new WebDataServiceWrapper(static_cast<Profile*>(profile));
+ WebDataServiceWrapper* web_data_service_wrapper = new WebDataServiceWrapper(
+ static_cast<Profile*>(profile)->GetPath(),
+ g_browser_process->GetApplicationLocale(),
+ BrowserThread::GetMessageLoopProxyForThread(BrowserThread::UI),
+ BrowserThread::GetMessageLoopProxyForThread(BrowserThread::DB),
+ &ProfileErrorCallback);
+ web_data_service_wrapper->GetAutofillWebData()->GetAutofillBackend(
+ base::Bind(&InitSyncableServicesOnDBThread,
+ web_data_service_wrapper->GetAutofillWebData(),
+ static_cast<Profile*>(profile)->GetPath(),
+ g_browser_process->GetApplicationLocale()));
+ return web_data_service_wrapper;
}
bool WebDataServiceFactory::ServiceIsNULLWhileTesting() const {
« no previous file with comments | « chrome/browser/webdata/web_data_service_factory.h ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698