Chromium Code Reviews| 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 |