Chromium Code Reviews| Index: chrome/browser/policy/user_cloud_policy_manager_factory.h |
| diff --git a/chrome/browser/policy/user_cloud_policy_manager_factory.h b/chrome/browser/policy/user_cloud_policy_manager_factory.h |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..cde3da770624f235d6d3d7a7f7c894e69baae945 |
| --- /dev/null |
| +++ b/chrome/browser/policy/user_cloud_policy_manager_factory.h |
| @@ -0,0 +1,67 @@ |
| +// Copyright (c) 2012 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_POLICY_USER_CLOUD_POLICY_MANAGER_FACTORY_H_ |
| +#define CHROME_BROWSER_POLICY_USER_CLOUD_POLICY_MANAGER_FACTORY_H_ |
| + |
| +#include <map> |
| + |
| +#include "base/basictypes.h" |
| +#include "base/memory/singleton.h" |
| +#include "chrome/browser/profiles/profile_keyed_base_factory.h" |
| + |
| +class Profile; |
| + |
| +namespace policy { |
| + |
| +class UserCloudPolicyManager; |
| + |
| +// ProfileKeyedBaseFactory implementation for UserCloudPolicyManager |
| +// instances that initialize per-profile cloud policy settings on the desktop |
| +// platforms. |
| +// |
| +// UserCloudPolicyManager is handled different than other ProfileKeyedServices |
| +// because it is a dependency of PrefService. Therefore, lifetime of instances |
| +// is managed by Profile, Profile startup code invokes InitForProfile() |
|
Andrew T Wilson (Slow)
2012/11/23 15:04:20
Is this comment still true?
Mattias Nissler (ping if slow)
2012/11/23 17:36:06
Updated.
|
| +// explicitly and the instance is only deleted after PrefService destruction. |
| +// |
| +// TODO(mnissler): Remove the special lifetime management in favor of |
| +// PrefService directly depending on UserCloudPolicyManager once the former has |
| +// been converted to a ProfileKeyedService. |
| +class UserCloudPolicyManagerFactory : public ProfileKeyedBaseFactory { |
| + public: |
| + // Returns an instance of the UserCloudPolicyManagerFactory singleton. |
| + static UserCloudPolicyManagerFactory* GetInstance(); |
| + |
| + // Returns the UserCloudPolicyManager instance associated with |profile|. |
| + static UserCloudPolicyManager* GetForProfile(Profile* profile); |
| + |
| + private: |
| + friend class UserCloudPolicyManager; |
| + friend struct DefaultSingletonTraits<UserCloudPolicyManagerFactory>; |
| + |
| + UserCloudPolicyManagerFactory(); |
| + virtual ~UserCloudPolicyManagerFactory(); |
| + |
| + // Returns the instance for |profile| or NULL if not found. |
| + UserCloudPolicyManager* GetManagerForProfile(Profile* profile); |
| + |
| + // ProfileKeyedBaseFactory: |
| + virtual void ProfileShutdown(Profile* profile) OVERRIDE; |
| + virtual void SetEmptyTestingFactory(Profile* profile) OVERRIDE; |
| + virtual void CreateServiceNow(Profile* profile) OVERRIDE; |
| + |
| + // Invoked by UserCloudPolicyManager to register/unregister instances. |
| + void Register(Profile* profile, UserCloudPolicyManager* instance); |
| + void Unregister(Profile* profile, UserCloudPolicyManager* instance); |
|
Andrew T Wilson (Slow)
2012/11/23 15:04:20
Is there a reason why creation of UCPMs has to hap
Mattias Nissler (ping if slow)
2012/11/23 17:36:06
Good idea, fixed that. We still need the Unregiste
|
| + |
| + typedef std::map<Profile*, UserCloudPolicyManager*> ManagerMap; |
| + ManagerMap managers_; |
|
Andrew T Wilson (Slow)
2012/11/23 15:04:20
I don't totally understand why we need to do this
Mattias Nissler (ping if slow)
2012/11/23 17:36:06
ProfileKeyedServiceFactory is owning all the servi
|
| + |
| + DISALLOW_COPY_AND_ASSIGN(UserCloudPolicyManagerFactory); |
| +}; |
| + |
| +} // namespace policy |
| + |
| +#endif // CHROME_BROWSER_POLICY_USER_CLOUD_POLICY_MANAGER_FACTORY_H_ |