// 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 #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" #include "sync/api/syncable_service.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 SingleThreadTaskRunner; } // 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); // Constructor for WebDataServiceWrapper that initializes the different // WebDataServices and starts the synchronization services using |flare|. // Since |flare| will be copied and called multiple times, it cannot bind // values using base::Owned nor base::Passed; it should only bind simple or // refcounted types. WebDataServiceWrapper( const base::FilePath& context_path, const std::string& application_locale, const scoped_refptr& ui_thread, const scoped_refptr& db_thread, const syncer::SyncableService::StartSyncFlare& flare, 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 GetAutofillWebData(); virtual scoped_refptr GetKeywordWebData(); virtual scoped_refptr GetTokenWebData(); #if defined(OS_WIN) virtual scoped_refptr GetPasswordWebData(); #endif private: scoped_refptr web_database_; scoped_refptr autofill_web_data_; scoped_refptr keyword_web_data_; scoped_refptr token_web_data_; #if defined(OS_WIN) scoped_refptr password_web_data_; #endif DISALLOW_COPY_AND_ASSIGN(WebDataServiceWrapper); }; #endif // COMPONENTS_WEBDATA_SERVICES_WEB_DATA_SERVICE_WRAPPER_H_