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

Unified Diff: chrome/browser/extensions/management_policy.h

Issue 82773002: Move some dependencies of ExtensionService down to extensions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Presubmit check fixed Created 7 years, 1 month 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/installed_loader.cc ('k') | chrome/browser/extensions/management_policy.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/extensions/management_policy.h
diff --git a/chrome/browser/extensions/management_policy.h b/chrome/browser/extensions/management_policy.h
deleted file mode 100644
index 1aafc41ebd9ee6c7e40550722ef5644cd0e393ac..0000000000000000000000000000000000000000
--- a/chrome/browser/extensions/management_policy.h
+++ /dev/null
@@ -1,141 +0,0 @@
-// 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_EXTENSIONS_MANAGEMENT_POLICY_H_
-#define CHROME_BROWSER_EXTENSIONS_MANAGEMENT_POLICY_H_
-
-#include <set>
-#include <string>
-
-#include "base/basictypes.h"
-#include "extensions/common/extension.h"
-
-namespace extensions {
-
-// This class registers providers that want to prohibit certain actions from
-// being applied to extensions. It must be called, via the ExtensionService,
-// before allowing a user or a user-level mechanism to perform the respective
-// action. (That is, installing or otherwise modifying an extension in order
-// to conform to enterprise administrator policy must be exempted from these
-// checks.)
-//
-// This "policy" and its providers should not be confused with administrator
-// policy, although admin policy is one of the sources ("Providers") of
-// restrictions registered with and exposed by the ManagementPolicy.
-class ManagementPolicy {
- public:
- // Each mechanism that wishes to limit users' ability to control extensions,
- // whether one individual extension or the whole system, should implement
- // the methods of this Provider interface that it needs. In each case, if the
- // provider does not need to control a certain action, that method does not
- // need to be implemented.
- //
- // It is not guaranteed that a particular Provider's methods will be called
- // each time a user tries to perform one of the controlled actions (the list
- // of providers is short-circuited as soon as a decision is possible), so
- // implementations of these methods must have no side effects.
- //
- // For all of the Provider methods below, if |error| is not NULL and the
- // method imposes a restriction on the desired action, |error| may be set
- // to an applicable error message, but this is not required.
- class Provider {
- public:
- Provider() {}
- virtual ~Provider() {}
-
- // A human-readable name for this provider, for use in debug messages.
- // Implementers should return an empty string in non-debug builds, to save
- // executable size.
- virtual std::string GetDebugPolicyProviderName() const = 0;
-
- // Providers should return false if a user may not install the |extension|,
- // or load or run it if it has already been installed.
- virtual bool UserMayLoad(const Extension* extension,
- string16* error) const;
-
- // Providers should return false if a user may not enable, disable, or
- // uninstall the |extension|, or change its usage options (incognito
- // permission, file access, etc.).
- virtual bool UserMayModifySettings(const Extension* extension,
- string16* error) const;
-
- // Providers should return true if the |extension| must always remain
- // enabled. This is distinct from UserMayModifySettings() in that the latter
- // also prohibits enabling the extension if it is currently disabled.
- // Providers implementing this method should also implement the others
- // above, if they wish to completely lock in an extension.
- virtual bool MustRemainEnabled(const Extension* extension,
- string16* error) const;
-
- // Similar to MustRemainEnabled, but for whether an extension must remain
- // disabled, and returns an error and/or reason if the caller needs it.
- virtual bool MustRemainDisabled(const Extension* extension,
- Extension::DisableReason* reason,
- string16* error) const;
-
- private:
- DISALLOW_COPY_AND_ASSIGN(Provider);
- };
-
- ManagementPolicy();
- ~ManagementPolicy();
-
- // Registers or unregisters a provider, causing it to be added to or removed
- // from the list of providers queried. Ownership of the provider remains with
- // the caller. Providers do not need to be unregistered on shutdown.
- void RegisterProvider(Provider* provider);
- void UnregisterProvider(Provider* provider);
-
- // Returns true if the user is permitted to install, load, and run the given
- // extension. If not, |error| may be set to an appropriate message.
- bool UserMayLoad(const Extension* extension, string16* error) const;
-
- // Returns true if the user is permitted to enable, disable, or uninstall the
- // given extension, or change the extension's usage options (incognito mode,
- // file access, etc.). If not, |error| may be set to an appropriate message.
- bool UserMayModifySettings(const Extension* extension,
- string16* error) const;
-
- // Returns true if the extension must remain enabled at all times (e.g. a
- // compoment extension). In that case, |error| may be set to an appropriate
- // message.
- bool MustRemainEnabled(const Extension* extension,
- string16* error) const;
-
- // Returns true immediately if any registered provider's MustRemainDisabled
- // function returns true.
- bool MustRemainDisabled(const Extension* extension,
- Extension::DisableReason* reason,
- string16* error) const;
-
- // For use in testing.
- void UnregisterAllProviders();
- int GetNumProviders() const;
-
- private:
- // This is a pointer to a function in the Provider interface, used in
- // ApplyToProviderList.
- typedef bool (Provider::*ProviderFunction)(const Extension*, string16*) const;
-
- typedef std::set<Provider*> ProviderList;
-
- // This is a helper to apply a method in the Provider interface to each of
- // the Provider objects in |providers_|. The return value of this function
- // will be |normal_result|, unless any of the Provider calls to |function|
- // return !normal_result, in which case this function will then early-return
- // !normal_result.
- bool ApplyToProviderList(ProviderFunction function,
- const char* debug_operation_name,
- bool normal_result,
- const Extension* extension,
- string16* error) const;
-
- ProviderList providers_;
-
- DISALLOW_COPY_AND_ASSIGN(ManagementPolicy);
-};
-
-} // namespace extensions
-
-#endif // CHROME_BROWSER_EXTENSIONS_MANAGEMENT_POLICY_H_
« no previous file with comments | « chrome/browser/extensions/installed_loader.cc ('k') | chrome/browser/extensions/management_policy.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698