1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file. 4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_POLICY_POLICY_CERT_SERVICE_FACTORY_H_ 6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_POLICY_POLICY_CERT_SERVICE_FACTORY_H_ 7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include <string> 95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/basictypes.h" 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/compiler_specific.h" 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/memory/scoped_ptr.h" 13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "components/keyed_service/content/browser_context_keyed_service_factory.h" 14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)template <typename T> struct DefaultSingletonTraits; 16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class PrefRegistrySimple; 18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class Profile; 19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace policy { 21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class PolicyCertService; 23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class PolicyCertVerifier; 24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Factory to create PolicyCertServices. 26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class PolicyCertServiceFactory : public BrowserContextKeyedServiceFactory { 27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) public: 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Returns an existing PolicyCertService for |profile|. See 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // CreateForProfile. 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static PolicyCertService* GetForProfile(Profile* profile); 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Creates a new PolicyCertService and returns the associated 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // PolicyCertVerifier. Returns NULL if this service isn't allowed for 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // |profile|, i.e. if NetworkConfigurationUpdater doesn't exist. 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // This service is created separately for the original profile and the 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // incognito profile. 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // Note: NetworkConfigurationUpdater is currently only created for the primary 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // user's profile. 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static scoped_ptr<PolicyCertVerifier> CreateForProfile(Profile* profile); 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) static PolicyCertServiceFactory* GetInstance(); 42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 435d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // Used to mark or clear |user_id| as having used certificates pushed by 445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // policy before. 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static void SetUsedPolicyCertificates(const std::string& user_id); 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static void ClearUsedPolicyCertificates(const std::string& user_id); 475d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static bool UsedPolicyCertificates(const std::string& user_id); 485d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) static void RegisterPrefs(PrefRegistrySimple* local_state); 505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) private: 52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) friend struct DefaultSingletonTraits<PolicyCertServiceFactory>; 53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) PolicyCertServiceFactory(); 55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual ~PolicyCertServiceFactory(); 56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) // BrowserContextKeyedServiceFactory: 58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) virtual KeyedService* BuildServiceInstanceFor( 59f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) content::BrowserContext* context) const OVERRIDE; 60f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual content::BrowserContext* GetBrowserContextToUse( 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) content::BrowserContext* context) const OVERRIDE; 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual void RegisterProfilePrefs( 63f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) user_prefs::PrefRegistrySyncable* registry) OVERRIDE; 64f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) virtual bool ServiceIsNULLWhileTesting() const OVERRIDE; 65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(PolicyCertServiceFactory); 67f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}; 68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 69f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // namespace policy 70f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif // CHROME_BROWSER_CHROMEOS_POLICY_POLICY_CERT_SERVICE_FACTORY_H_ 72