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_ |