diff options
author | sdefresne <sdefresne@chromium.org> | 2014-12-15 15:21:56 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-12-15 23:22:23 +0000 |
commit | cb955cd06650ee281f745b5a86aff7864fe44066 (patch) | |
tree | d663541ca9f25582d5de09be3844285467d404dd /components/webdata_services/web_data_service_wrapper.cc | |
parent | 81c98ba5f74cbe9e6f1a12a0b96371b65dd4374e (diff) | |
download | chromium_src-cb955cd06650ee281f745b5a86aff7864fe44066.zip chromium_src-cb955cd06650ee281f745b5a86aff7864fe44066.tar.gz chromium_src-cb955cd06650ee281f745b5a86aff7864fe44066.tar.bz2 |
Introduce new component webdata_services
Move WebDataServiceWrapper into its own component webdata_services so
that the code can be shared with iOS.
The code cannot go into webdata component since it depends on other
components (autofill, password_manager, search_engine, signin) that
depends on webdata (as they implements the WebDataService interface).
BUG=437508
Review URL: https://codereview.chromium.org/777863002
Cr-Commit-Position: refs/heads/master@{#308451}
Diffstat (limited to 'components/webdata_services/web_data_service_wrapper.cc')
-rw-r--r-- | components/webdata_services/web_data_service_wrapper.cc | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/components/webdata_services/web_data_service_wrapper.cc b/components/webdata_services/web_data_service_wrapper.cc new file mode 100644 index 0000000..ca4287e --- /dev/null +++ b/components/webdata_services/web_data_service_wrapper.cc @@ -0,0 +1,107 @@ +// Copyright 2014 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "components/webdata_services/web_data_service_wrapper.h" + +#include "base/bind.h" +#include "base/callback.h" +#include "base/files/file_path.h" +#include "base/message_loop/message_loop_proxy.h" +#include "components/autofill/core/browser/webdata/autofill_table.h" +#include "components/autofill/core/browser/webdata/autofill_webdata_service.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/web_database_service.h" +#include "components/webdata/common/webdata_constants.h" + +#if defined(OS_WIN) +#include "components/password_manager/core/browser/webdata/password_web_data_service_win.h" +#endif + +WebDataServiceWrapper::WebDataServiceWrapper() { +} + +WebDataServiceWrapper::WebDataServiceWrapper( + const base::FilePath& profile_path, + const std::string& application_locale, + const scoped_refptr<base::MessageLoopProxy>& ui_thread, + const scoped_refptr<base::MessageLoopProxy>& db_thread, + ShowErrorCallback show_error_callback) { + base::FilePath path = profile_path.Append(kWebDataFilename); + 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(application_locale))); + 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 autofill::AutofillWebDataService( + web_database_, ui_thread, db_thread, + base::Bind(show_error_callback, ERROR_LOADING_AUTOFILL)); + autofill_web_data_->Init(); + + keyword_web_data_ = new KeywordWebDataService( + web_database_, ui_thread, + base::Bind(show_error_callback, ERROR_LOADING_KEYWORD)); + keyword_web_data_->Init(); + + token_web_data_ = new TokenWebData( + web_database_, ui_thread, db_thread, + base::Bind(show_error_callback, ERROR_LOADING_TOKEN)); + token_web_data_->Init(); + +#if defined(OS_WIN) + password_web_data_ = new PasswordWebDataService( + web_database_, ui_thread, + base::Bind(show_error_callback, ERROR_LOADING_PASSWORD)); + password_web_data_->Init(); +#endif +} + +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<autofill::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 |