1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef COMPONENTS_WEBDATA_SERVICES_WEB_DATA_SERVICE_WRAPPER_H_
6 #define COMPONENTS_WEBDATA_SERVICES_WEB_DATA_SERVICE_WRAPPER_H_
10 #include "base/callback_forward.h"
11 #include "base/macros.h"
12 #include "base/memory/ref_counted.h"
13 #include "components/keyed_service/core/keyed_service.h"
14 #include "sql/init_status.h"
15 #include "sync/api/syncable_service.h"
17 class KeywordWebDataService
;
19 class WebDatabaseService
;
22 class PasswordWebDataService
;
26 class AutofillWebDataBackend
;
27 class AutofillWebDataService
;
28 } // namespace autofill
32 class SingleThreadTaskRunner
;
35 // WebDataServiceWrapper is a KeyedService that owns multiple WebDataServices
36 // so that they can be associated with a context.
37 class WebDataServiceWrapper
: public KeyedService
{
39 // ErrorType indicates which service encountered an error loading its data.
41 ERROR_LOADING_AUTOFILL
,
42 ERROR_LOADING_KEYWORD
,
44 ERROR_LOADING_PASSWORD
,
47 // Shows an error message if a loading error occurs.
48 using ShowErrorCallback
= void (*)(ErrorType
, sql::InitStatus
);
50 // Constructor for WebDataServiceWrapper that initializes the different
51 // WebDataServices and starts the synchronization services using |flare|.
52 // Since |flare| will be copied and called multiple times, it cannot bind
53 // values using base::Owned nor base::Passed; it should only bind simple or
55 WebDataServiceWrapper(
56 const base::FilePath
& context_path
,
57 const std::string
& application_locale
,
58 const scoped_refptr
<base::SingleThreadTaskRunner
>& ui_thread
,
59 const scoped_refptr
<base::SingleThreadTaskRunner
>& db_thread
,
60 const syncer::SyncableService::StartSyncFlare
& flare
,
61 ShowErrorCallback show_error_callback
);
62 ~WebDataServiceWrapper() override
;
65 WebDataServiceWrapper();
68 void Shutdown() override
;
70 // Create the various types of service instances. These methods are virtual
71 // for testing purpose.
72 virtual scoped_refptr
<autofill::AutofillWebDataService
> GetAutofillWebData();
73 virtual scoped_refptr
<KeywordWebDataService
> GetKeywordWebData();
74 virtual scoped_refptr
<TokenWebData
> GetTokenWebData();
76 virtual scoped_refptr
<PasswordWebDataService
> GetPasswordWebData();
80 scoped_refptr
<WebDatabaseService
> web_database_
;
82 scoped_refptr
<autofill::AutofillWebDataService
> autofill_web_data_
;
83 scoped_refptr
<KeywordWebDataService
> keyword_web_data_
;
84 scoped_refptr
<TokenWebData
> token_web_data_
;
87 scoped_refptr
<PasswordWebDataService
> password_web_data_
;
90 DISALLOW_COPY_AND_ASSIGN(WebDataServiceWrapper
);
93 #endif // COMPONENTS_WEBDATA_SERVICES_WEB_DATA_SERVICE_WRAPPER_H_