// Copyright 2013 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 CHROME_BROWSER_CHROMEOS_POLICY_POLICY_CERT_SERVICE_FACTORY_H_ #define CHROME_BROWSER_CHROMEOS_POLICY_POLICY_CERT_SERVICE_FACTORY_H_ #include #include "base/basictypes.h" #include "base/compiler_specific.h" #include "base/memory/scoped_ptr.h" #include "components/keyed_service/content/browser_context_keyed_service_factory.h" template struct DefaultSingletonTraits; class PrefRegistrySimple; class Profile; namespace policy { class PolicyCertService; class PolicyCertVerifier; // Factory to create PolicyCertServices. class PolicyCertServiceFactory : public BrowserContextKeyedServiceFactory { public: // Returns an existing PolicyCertService for |profile|. See // CreateForProfile. static PolicyCertService* GetForProfile(Profile* profile); // Creates a new PolicyCertService and returns the associated // PolicyCertVerifier. Returns NULL if this service isn't allowed for // |profile|, i.e. if NetworkConfigurationUpdater doesn't exist. // This service is created separately for the original profile and the // incognito profile. // Note: NetworkConfigurationUpdater is currently only created for the primary // user's profile. static scoped_ptr CreateForProfile(Profile* profile); static PolicyCertServiceFactory* GetInstance(); // Used to mark or clear |user_id| as having used certificates pushed by // policy before. static void SetUsedPolicyCertificates(const std::string& user_id); static void ClearUsedPolicyCertificates(const std::string& user_id); static bool UsedPolicyCertificates(const std::string& user_id); static void RegisterPrefs(PrefRegistrySimple* local_state); private: friend struct DefaultSingletonTraits; PolicyCertServiceFactory(); virtual ~PolicyCertServiceFactory(); // BrowserContextKeyedServiceFactory: virtual KeyedService* BuildServiceInstanceFor( content::BrowserContext* context) const OVERRIDE; virtual content::BrowserContext* GetBrowserContextToUse( content::BrowserContext* context) const OVERRIDE; virtual void RegisterProfilePrefs( user_prefs::PrefRegistrySyncable* registry) OVERRIDE; virtual bool ServiceIsNULLWhileTesting() const OVERRIDE; DISALLOW_COPY_AND_ASSIGN(PolicyCertServiceFactory); }; } // namespace policy #endif // CHROME_BROWSER_CHROMEOS_POLICY_POLICY_CERT_SERVICE_FACTORY_H_