Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4049)

Unified Diff: chrome/browser/managed_mode.h

Issue 10542023: Disable modifying extensions when in managed mode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Fixed Evan's nits Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/extensions/test_management_policy.cc ('k') | chrome/browser/managed_mode.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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,13 +66,25 @@
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:
friend struct DefaultSingletonTraits<ManagedMode>;
friend class Singleton<ManagedMode>;
FRIEND_TEST_ALL_PREFIXES(ExtensionApiTest, ManagedModeOnChange);
+ FRIEND_TEST_ALL_PREFIXES(ExtensionServiceTest,
+ ManagedModeProhibitsModification);
static ManagedMode* GetInstance();
+ 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;
+
void LeaveManagedModeImpl();
void FinalizeEnter(bool result);
@@ -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_
« no previous file with comments | « chrome/browser/extensions/test_management_policy.cc ('k') | chrome/browser/managed_mode.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698