OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2015 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. | |
4 | |
5 #ifndef IOS_CHROME_BROWSER_SIGNIN_SIGNIN_MANAGER_FACTORY_H_ | |
6 #define IOS_CHROME_BROWSER_SIGNIN_SIGNIN_MANAGER_FACTORY_H_ | |
7 | |
8 #include "base/macros.h" | |
9 #include "base/memory/scoped_ptr.h" | |
10 #include "base/observer_list.h" | |
11 #include "components/keyed_service/ios/browser_state_keyed_service_factory.h" | |
12 | |
13 template <typename T> | |
14 struct DefaultSingletonTraits; | |
15 | |
16 class SigninManager; | |
17 class SigninManagerBase; | |
18 class PrefRegistrySimple; | |
19 | |
20 namespace ios { | |
21 | |
22 class ChromeBrowserState; | |
23 | |
24 // Singleton that owns all SigninManagers and associates them with browser | |
25 // states. | |
26 class SigninManagerFactory : public BrowserStateKeyedServiceFactory { | |
27 public: | |
28 class Observer { | |
sdefresne
2015/07/24 12:38:46
Can you move out of the factory so that it can be
| |
29 public: | |
30 // Called when a SigninManager(Base) instance is created. | |
sdefresne
2015/07/24 12:38:46
Since you are writing this interface, why not dire
| |
31 virtual void SigninManagerCreated(SigninManagerBase* manager) {} | |
32 | |
33 // Called when a SigninManager(Base) instance is being shut down. Observers | |
34 // of |manager| should remove themselves at this point. | |
35 virtual void SigninManagerShutdown(SigninManagerBase* manager) {} | |
36 | |
37 protected: | |
38 virtual ~Observer() {} | |
sdefresne
2015/07/24 12:38:46
I prefer to have public destructors on Observers s
| |
39 }; | |
sdefresne
2015/07/24 12:38:47
DISALLOW_COPY_AND_ASSIGN()
| |
40 | |
41 static SigninManager* GetForBrowserState( | |
42 ios::ChromeBrowserState* browser_state); | |
43 static SigninManager* GetForBrowserStateIfExists( | |
44 ios::ChromeBrowserState* browser_state); | |
45 // static const SigninManager* GetForBrowserStateIfExists(const | |
sdefresne
2015/07/24 12:38:46
Please remove.
| |
46 // ios::ChromeBrowserState* browser_state); | |
47 | |
48 // Returns an instance of the SigninManagerFactory singleton. | |
49 static SigninManagerFactory* GetInstance(); | |
50 | |
51 // Implementation of BrowserStateKeyedServiceFactory (public so tests | |
52 // can call it). | |
53 void RegisterBrowserStatePrefs( | |
54 user_prefs::PrefRegistrySyncable* registry) override; | |
55 | |
56 // Registers the browser-global prefs used by SigninManager. | |
57 static void RegisterPrefs(PrefRegistrySimple* registry); | |
58 | |
59 // Methods to register or remove observers of SigninManager creation/shutdown. | |
60 void AddObserver(Observer* observer); | |
61 void RemoveObserver(Observer* observer); | |
62 | |
63 // Notifies observers of |manager|'s creation. Should be called only by test | |
64 // SigninManager subclasses whose construction does not occur in | |
65 // |BuildServiceInstanceFor()|. | |
66 void NotifyObserversOfSigninManagerCreationForTesting( | |
67 SigninManagerBase* manager); | |
68 | |
69 private: | |
70 friend struct DefaultSingletonTraits<SigninManagerFactory>; | |
71 | |
72 SigninManagerFactory(); | |
73 ~SigninManagerFactory() override; | |
74 | |
75 // List of observers. Checks that list is empty on destruction. | |
76 mutable base::ObserverList<Observer, true> observer_list_; | |
77 | |
78 // BrowserStateKeyedServiceFactory: | |
79 scoped_ptr<KeyedService> BuildServiceInstanceFor( | |
80 web::BrowserState* context) const override; | |
81 void BrowserStateShutdown(web::BrowserState* context) override; | |
82 }; | |
83 } | |
84 | |
85 #endif // IOS_CHROME_BROWSER_SIGNIN_SIGNIN_MANAGER_FACTORY_H_ | |
OLD | NEW |