Home | History | Annotate | Download | only in saml
      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.
      4 
      5 #ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SAML_SAML_OFFLINE_SIGNIN_LIMITER_FACTORY_H_
      6 #define CHROME_BROWSER_CHROMEOS_LOGIN_SAML_SAML_OFFLINE_SIGNIN_LIMITER_FACTORY_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/compiler_specific.h"
     10 #include "base/memory/singleton.h"
     11 #include "components/keyed_service/content/browser_context_keyed_service_factory.h"
     12 
     13 class Profile;
     14 
     15 namespace base {
     16 class Clock;
     17 }
     18 
     19 namespace chromeos {
     20 
     21 class SAMLOfflineSigninLimiter;
     22 
     23 // Singleton that owns all SAMLOfflineSigninLimiters and associates them with
     24 // Profiles.
     25 class SAMLOfflineSigninLimiterFactory
     26     : public BrowserContextKeyedServiceFactory {
     27  public:
     28   static SAMLOfflineSigninLimiterFactory* GetInstance();
     29 
     30   static SAMLOfflineSigninLimiter* GetForProfile(Profile* profile);
     31 
     32   // |clock| will be passed to all SAMLOfflineSigninLimiters. Ensure that their
     33   // Shutdown() methods have been called before destroying |clock|.
     34   static void SetClockForTesting(base::Clock* clock);
     35 
     36  private:
     37   friend struct DefaultSingletonTraits<SAMLOfflineSigninLimiterFactory>;
     38 
     39   SAMLOfflineSigninLimiterFactory();
     40   virtual ~SAMLOfflineSigninLimiterFactory();
     41 
     42   // BrowserContextKeyedServiceFactory:
     43   virtual KeyedService* BuildServiceInstanceFor(
     44       content::BrowserContext* context) const OVERRIDE;
     45 
     46   static base::Clock* clock_for_testing_;
     47 
     48   DISALLOW_COPY_AND_ASSIGN(SAMLOfflineSigninLimiterFactory);
     49 };
     50 
     51 }  // namespace chromeos
     52 
     53 #endif  // CHROME_BROWSER_CHROMEOS_LOGIN_SAML_SAML_OFFLINE_SIGNIN_LIMITER_FACTORY_H_
     54