Index: components/webdata_services/web_data_service_wrapper.h |
diff --git a/components/webdata_services/web_data_service_wrapper.h b/components/webdata_services/web_data_service_wrapper.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..76f5693352ef63e0658c0f1ba90eddd4ce6d27b9 |
--- /dev/null |
+++ b/components/webdata_services/web_data_service_wrapper.h |
@@ -0,0 +1,85 @@ |
+// 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. |
+ |
+#ifndef COMPONENTS_WEBDATA_SERVICES_WEB_DATA_SERVICE_WRAPPER_H_ |
+#define COMPONENTS_WEBDATA_SERVICES_WEB_DATA_SERVICE_WRAPPER_H_ |
+ |
+#include <string> |
+ |
+#include "base/callback_forward.h" |
+#include "base/macros.h" |
+#include "base/memory/ref_counted.h" |
+#include "components/keyed_service/core/keyed_service.h" |
+#include "sql/init_status.h" |
+ |
+class KeywordWebDataService; |
+class TokenWebData; |
+class WebDatabaseService; |
+ |
+#if defined(OS_WIN) |
+class PasswordWebDataService; |
+#endif |
+ |
+namespace autofill { |
+class AutofillWebDataBackend; |
+class AutofillWebDataService; |
+} // namespace autofill |
+ |
+namespace base { |
+class FilePath; |
+class MessageLoopProxy; |
+} // namespace base |
+ |
+// WebDataServiceWrapper is a KeyedService that owns multiple WebDataServices |
+// so that they can be associated with a context. |
+class WebDataServiceWrapper : public KeyedService { |
+ public: |
+ // ErrorType indicates which service encountered an error loading its data. |
+ enum ErrorType { |
+ ERROR_LOADING_AUTOFILL, |
+ ERROR_LOADING_KEYWORD, |
+ ERROR_LOADING_TOKEN, |
+ ERROR_LOADING_PASSWORD, |
+ }; |
+ |
+ // Shows an error message if a loading error occurs. |
+ using ShowErrorCallback = void (*)(ErrorType, sql::InitStatus); |
+ |
+ 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); |
+ ~WebDataServiceWrapper() override; |
+ |
+ // For testing. |
+ WebDataServiceWrapper(); |
+ |
+ // KeyedService: |
+ void Shutdown() override; |
+ |
+ // Create the various types of service instances. These methods are virtual |
+ // for testing purpose. |
+ virtual scoped_refptr<autofill::AutofillWebDataService> GetAutofillWebData(); |
+ virtual scoped_refptr<KeywordWebDataService> GetKeywordWebData(); |
+ virtual scoped_refptr<TokenWebData> GetTokenWebData(); |
+#if defined(OS_WIN) |
+ virtual scoped_refptr<PasswordWebDataService> GetPasswordWebData(); |
+#endif |
+ |
+ private: |
+ scoped_refptr<WebDatabaseService> web_database_; |
+ |
+ scoped_refptr<autofill::AutofillWebDataService> autofill_web_data_; |
+ scoped_refptr<KeywordWebDataService> keyword_web_data_; |
+ scoped_refptr<TokenWebData> token_web_data_; |
+ |
+#if defined(OS_WIN) |
+ scoped_refptr<PasswordWebDataService> password_web_data_; |
+#endif |
+ |
+ DISALLOW_COPY_AND_ASSIGN(WebDataServiceWrapper); |
+}; |
+ |
+#endif // COMPONENTS_WEBDATA_SERVICES_WEB_DATA_SERVICE_WRAPPER_H_ |