summaryrefslogtreecommitdiffstats
path: root/ios/public/provider/chrome/browser/keyed_service_provider.h
blob: 5d054fdfa717730bbebc676eb3a3f43ddf3fbef5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
// Copyright 2015 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 IOS_PUBLIC_PROVIDER_CHROME_BROWSER_KEYED_SERVICE_PROVIDER_H_
#define IOS_PUBLIC_PROVIDER_CHROME_BROWSER_KEYED_SERVICE_PROVIDER_H_

#include "base/macros.h"
#include "base/memory/ref_counted.h"

enum class ServiceAccessType;

class KeyedServiceBaseFactory;
class ProfileOAuth2TokenServiceIOS;
class SigninManager;

namespace autofill {
class AutofillWebDataService;
class PersonalDataManager;
}

namespace bookmarks {
class BookmarkModel;
}

namespace history {
class HistoryService;
}

namespace sync_driver {
class SyncService;
}

namespace ios {

class ChromeBrowserState;
class KeyedServiceProvider;

// Registers and returns the global KeyedService provider.
void SetKeyedServiceProvider(KeyedServiceProvider* provider);
KeyedServiceProvider* GetKeyedServiceProvider();

// A class that provides access to KeyedService that do not have a pure iOS
// implementation yet.
class KeyedServiceProvider {
 public:
  KeyedServiceProvider();
  virtual ~KeyedServiceProvider();

  // Ensures that all KeyedService factories are instantiated. Must be called
  // before any BrowserState instance is created so that dependencies are
  // correct.
  virtual void AssertKeyedFactoriesBuilt() = 0;

  // Returns the bookmarks::BookmarkModel factory for dependencies.
  virtual KeyedServiceBaseFactory* GetBookmarkModelFactory() = 0;

  // Returns an instance of bookmarks::BookmarkModel tied to |browser_state|.
  virtual bookmarks::BookmarkModel* GetBookmarkModelForBrowserState(
      ChromeBrowserState* browser_state) = 0;

  // Returns the ProfileOAuth2TokenServiceIOS factory for dependencies.
  virtual KeyedServiceBaseFactory* GetProfileOAuth2TokenServiceIOSFactory() = 0;

  // Returns an instance of ProfileOAuth2TokenServiceIOS tied to
  // |browser_state|.
  virtual ProfileOAuth2TokenServiceIOS*
  GetProfileOAuth2TokenServiceIOSForBrowserState(
      ChromeBrowserState* browser_state) = 0;

  // Returns the SigninManager factory for dependencies.
  virtual KeyedServiceBaseFactory* GetSigninManagerFactory() = 0;

  // Returns an instance of SigninManager tied to |browser_state|.
  virtual SigninManager* GetSigninManagerForBrowserState(
      ChromeBrowserState* browser_state) = 0;

  // Returns the autofill::AutofillWebDataService factory for dependencies.
  virtual KeyedServiceBaseFactory* GetAutofillWebDataFactory() = 0;

  // Returns an instance of autofill::AutofillWebDataService tied to
  // |browser_state|.
  virtual scoped_refptr<autofill::AutofillWebDataService>
  GetAutofillWebDataForBrowserState(ChromeBrowserState* browser_state,
                                    ServiceAccessType access_type) = 0;

  // Returns the autofill::PersonalDataManager factory for dependencies.
  virtual KeyedServiceBaseFactory* GetPersonalDataManagerFactory() = 0;

  // Returns an instance of autofill::PersonalDataManager tied to
  // |browser_state|.
  virtual autofill::PersonalDataManager* GetPersonalDataManagerForBrowserState(
      ChromeBrowserState* browser_state) = 0;

  // Returns the sync_driver::SyncService factory for dependencies.
  virtual KeyedServiceBaseFactory* GetSyncServiceFactory() = 0;

  // Returns an instance of sync_driver::SyncService tied to |browser_state|.
  virtual sync_driver::SyncService* GetSyncServiceForBrowserState(
      ChromeBrowserState* browser_state) = 0;

  // Returns the history::HistoryService factory for dependencies.
  virtual KeyedServiceBaseFactory* GetHistoryServiceFactory() = 0;

  // Returns an instance of history::HistoryService tied to |browser_state|.
  virtual history::HistoryService* GetHistoryServiceForBrowserState(
      ChromeBrowserState* browser_state,
      ServiceAccessType access_type) = 0;

  // Returns an instance of history::HistoryService tied to |browser_state| if
  // it exists, or null otherwise.
  virtual history::HistoryService* GetHistoryServiceForBrowserStateIfExists(
      ChromeBrowserState* browser_state,
      ServiceAccessType access_type) = 0;

 private:
  DISALLOW_COPY_AND_ASSIGN(KeyedServiceProvider);
};

}  // namespace ios

#endif  // IOS_PUBLIC_PROVIDER_CHROME_BROWSER_KEYED_SERVICE_PROVIDER_H_