Chromium Code Reviews| Index: chrome/browser/managed_mode.h |
| =================================================================== |
| --- chrome/browser/managed_mode.h (revision 141651) |
| +++ chrome/browser/managed_mode.h (working copy) |
| @@ -6,11 +6,13 @@ |
| #define CHROME_BROWSER_MANAGED_MODE_H_ |
| #include <set> |
| +#include <string> |
| #include <vector> |
| #include "base/callback.h" |
| #include "base/compiler_specific.h" |
| #include "base/memory/singleton.h" |
| +#include "chrome/browser/extensions/management_policy.h" |
| #include "chrome/browser/ui/browser_list.h" |
| #include "content/public/browser/notification_observer.h" |
| #include "content/public/browser/notification_registrar.h" |
| @@ -26,11 +28,16 @@ |
| // The ManagedMode class provides methods to check whether the browser is in |
| // managed mode, and to attempt to enter or leave managed mode. |
| class ManagedMode : public BrowserList::Observer, |
| + public extensions::ManagementPolicy::Provider, |
| public content::NotificationObserver { |
| public: |
| typedef base::Callback<void(bool)> EnterCallback; |
| static void RegisterPrefs(PrefService* prefs); |
| + |
| + // Initializes the singleton, setting the managed_profile_. Must be called |
| + // after g_browser_process and the LocalState have been created. |
| + static void Init(Profile* profile); |
| static bool IsInManagedMode(); |
| // Calls |callback| with the argument true iff managed mode was entered |
| @@ -38,6 +45,13 @@ |
| static void EnterManagedMode(Profile* profile, const EnterCallback& callback); |
| static void LeaveManagedMode(); |
| + // ExtensionManagementPolicy::Provider implementation: |
| + virtual std::string GetDebugPolicyProviderName() const OVERRIDE; |
| + virtual bool UserMayLoad(const extensions::Extension* extension, |
| + string16* error) const OVERRIDE; |
| + virtual bool UserMayModifySettings(const extensions::Extension* extension, |
| + string16* error) const OVERRIDE; |
| + |
| // BrowserList::Observer implementation: |
| virtual void OnBrowserAdded(Browser* browser) OVERRIDE; |
| virtual void OnBrowserRemoved(Browser* browser) OVERRIDE; |
| @@ -52,10 +66,22 @@ |
| virtual ~ManagedMode(); |
| void EnterManagedModeImpl(Profile* profile, const EnterCallback& callback); |
| + // The managed profile. This is NULL iff we are not in managed mode. |
| + Profile* managed_profile_; |
| + |
| private: |
| + virtual void InitImpl(Profile* profile); |
| + |
| + // Internal implementation for ExtensionManagementPolicy::Delegate methods. |
| + // If |error| is not NULL, it will be filled with an error message if the |
| + // requested extension action (install, modify status, etc.) is not permitted. |
| + bool ExtensionManagementPolicyImpl(string16* error) const; |
| + |
| friend struct DefaultSingletonTraits<ManagedMode>; |
| friend class Singleton<ManagedMode>; |
| FRIEND_TEST_ALL_PREFIXES(ExtensionApiTest, ManagedModeOnChange); |
| + FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest, |
| + ManagedModeProhibitsModification); |
| static ManagedMode* GetInstance(); |
| @@ -68,16 +94,22 @@ |
| virtual bool PlatformConfirmEnter(); |
| virtual bool PlatformConfirmLeave(); |
| - virtual bool IsInManagedModeImpl(); |
| - virtual void SetInManagedMode(bool in_managed_mode); |
| + virtual bool IsInManagedModeImpl() const; |
| + // Enables or disables managed mode and registers or unregisters it with the |
| + // ManagementPolicy. When enabling managed mode, the |newly_managed_profile| |
| + // should be the profile for which the mode is being enabled (this is |
| + // typically managed_mode_, but may have other values during testing). |
| + // |newly_managed_profile| is ignored when managed mode is being disabled. |
| + virtual void SetInManagedMode(bool in_managed_mode, |
| + Profile* newly_managed_profile); |
|
Bernhard Bauer
2012/06/18 13:41:06
Is there a case where we call SetInManageMode(true
|
| + |
| content::NotificationRegistrar registrar_; |
| - // The managed profile. This is non-NULL only while we're entering |
| - // managed mode. |
| - const Profile* managed_profile_; |
| std::set<Browser*> browsers_to_close_; |
| std::vector<EnterCallback> callbacks_; |
| + |
| + DISALLOW_COPY_AND_ASSIGN(ManagedMode); |
| }; |
| #endif // CHROME_BROWSER_MANAGED_MODE_H_ |