| Index: chrome/browser/managed_mode.h
|
| ===================================================================
|
| --- chrome/browser/managed_mode.h (revision 142678)
|
| +++ 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,21 @@
|
| 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. If |newly_managed_profile| is NULL, managed mode will
|
| + // be disabled. Otherwise, managed mode will be enabled for that profile
|
| + // (typically |managed_profile_|, but other values are possible during
|
| + // testing).
|
| + virtual void SetInManagedMode(Profile* newly_managed_profile);
|
| +
|
| 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_
|
|
|