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

Unified Diff: chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h

Issue 14358004: Almost all actions in Declarative Web Request require all_urls host permissions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: All URLs -> all hosts; also rebased Created 7 years, 8 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
Index: chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h
diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h
index 2785cfce115367265dde99fd19a98c5eae1a18d9..41c3639e0fdec6aac0ff382d3ad7e9ca6c19923f 100644
--- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h
+++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h
@@ -51,7 +51,10 @@ typedef linked_ptr<extension_web_request_api_helpers::EventResponseDelta>
// Base class for all WebRequestActions of the declarative Web Request API.
class WebRequestAction {
public:
- // Type identifiers for concrete WebRequestActions.
+ // Type identifiers for concrete WebRequestActions. If you add a new type,
+ // also update |action_names| in WebRequestActionFactory, update the
+ // unittest WebRequestActionTest.GetName, and add a
+ // WebRequestActionWithThreadsTest.Permission* unittest.
enum Type {
ACTION_CANCEL_REQUEST,
ACTION_REDIRECT_REQUEST,
@@ -70,13 +73,11 @@ class WebRequestAction {
// Strategies for checking host permissions.
enum HostPermissionsStrategy {
- STRATEGY_NONE, // Do not check host permissions.
- STRATEGY_DEFAULT, // Check host permissions in HasPermission,
+ STRATEGY_NONE, // Do not check host permissions.
+ STRATEGY_DEFAULT, // Check for host permissions for all URLs
// before creating the delta.
- STRATEGY_ALLOW_SAME_DOMAIN, // Skip host permission checks if the request
- // URL and new URL have the same domain.
- // Do these checks in DeltaHasPermission,
- // after creating the delta.
+ STRATEGY_HOST, // Check that host permissions match the URL
+ // of the request.
};
// Information necessary to decide how to apply a WebRequestAction
@@ -90,7 +91,6 @@ class WebRequestAction {
std::set<std::string>* ignored_tags;
};
- WebRequestAction();
virtual ~WebRequestAction();
// Returns a bit vector representing extensions::RequestStage. The bit vector
@@ -100,15 +100,17 @@ class WebRequestAction {
virtual Type GetType() const = 0;
+ // Return the JavaScript type name corresponding to GetType(). If there are
+ // more names, they are returned separated by a colon.
+ const std::string& GetName() const;
+
// Returns the minimum priority of rules that may be evaluated after
// this rule. Defaults to MIN_INT.
virtual int GetMinimumPriority() const;
- // Returns whether host permissions checks depend on the resulting delta
- // and therefore must be checked in DeltaHasPermission, after the delta
- // is created, rather than in HasPermission, before it is created.
- // Defaults to STRATEGY_DEFAULT.
- virtual HostPermissionsStrategy GetHostPermissionsStrategy() const;
+ HostPermissionsStrategy host_permissions_strategy() const {
+ return host_permissions_strategy_;
+ }
// Returns whether the specified extension has permission to execute this
// action on |request|. Checks the host permission if the host permissions
@@ -122,19 +124,6 @@ class WebRequestAction {
const net::URLRequest* request,
bool crosses_incognito) const;
- // Returns whether the specified extension has permission to modify the
- // |request| with this |delta|. This check is in addition to HasPermission;
- // if either fails, the request will not be modified. Unlike HasPermission,
- // it runs after the change is created, so it can use the full information
- // about what the change would be. Checks the host permission if the strategy
- // is STRATEGY_ALLOW_SAME_DOMAIN.
- virtual bool DeltaHasPermission(
- const ExtensionInfoMap* extension_info_map,
- const std::string& extension_id,
- const net::URLRequest* request,
- bool crosses_incognito,
- const LinkedPtrEventResponseDelta& delta) const;
-
// Factory method that instantiates a concrete WebRequestAction
// implementation according to |json_action|, the representation of the
// WebRequestAction as received from the extension API.
@@ -157,6 +146,13 @@ class WebRequestAction {
void Apply(const std::string& extension_id,
base::Time extension_install_time,
ApplyInfo* apply_info) const;
+
+ protected:
+ explicit WebRequestAction(HostPermissionsStrategy strategy);
+
+ private:
+ // Defaults to STRATEGY_DEFAULT.
+ const HostPermissionsStrategy host_permissions_strategy_;
};
typedef DeclarativeActionSet<WebRequestAction> WebRequestActionSet;
@@ -174,7 +170,6 @@ class WebRequestCancelAction : public WebRequestAction {
// Implementation of WebRequestAction:
virtual int GetStages() const OVERRIDE;
virtual Type GetType() const OVERRIDE;
- virtual HostPermissionsStrategy GetHostPermissionsStrategy() const OVERRIDE;
virtual LinkedPtrEventResponseDelta CreateDelta(
const WebRequestData& request_data,
const std::string& extension_id,
@@ -193,7 +188,6 @@ class WebRequestRedirectAction : public WebRequestAction {
// Implementation of WebRequestAction:
virtual int GetStages() const OVERRIDE;
virtual Type GetType() const OVERRIDE;
- virtual HostPermissionsStrategy GetHostPermissionsStrategy() const OVERRIDE;
virtual LinkedPtrEventResponseDelta CreateDelta(
const WebRequestData& request_data,
const std::string& extension_id,
@@ -214,7 +208,6 @@ class WebRequestRedirectToTransparentImageAction : public WebRequestAction {
// Implementation of WebRequestAction:
virtual int GetStages() const OVERRIDE;
virtual Type GetType() const OVERRIDE;
- virtual HostPermissionsStrategy GetHostPermissionsStrategy() const OVERRIDE;
virtual LinkedPtrEventResponseDelta CreateDelta(
const WebRequestData& request_data,
const std::string& extension_id,
@@ -234,7 +227,6 @@ class WebRequestRedirectToEmptyDocumentAction : public WebRequestAction {
// Implementation of WebRequestAction:
virtual int GetStages() const OVERRIDE;
virtual Type GetType() const OVERRIDE;
- virtual HostPermissionsStrategy GetHostPermissionsStrategy() const OVERRIDE;
virtual LinkedPtrEventResponseDelta CreateDelta(
const WebRequestData& request_data,
const std::string& extension_id,
@@ -260,7 +252,6 @@ class WebRequestRedirectByRegExAction : public WebRequestAction {
// Implementation of WebRequestAction:
virtual int GetStages() const OVERRIDE;
virtual Type GetType() const OVERRIDE;
- virtual HostPermissionsStrategy GetHostPermissionsStrategy() const OVERRIDE;
virtual LinkedPtrEventResponseDelta CreateDelta(
const WebRequestData& request_data,
const std::string& extension_id,
@@ -368,7 +359,6 @@ class WebRequestIgnoreRulesAction : public WebRequestAction {
virtual int GetStages() const OVERRIDE;
virtual Type GetType() const OVERRIDE;
virtual int GetMinimumPriority() const OVERRIDE;
- virtual HostPermissionsStrategy GetHostPermissionsStrategy() const OVERRIDE;
virtual LinkedPtrEventResponseDelta CreateDelta(
const WebRequestData& request_data,
const std::string& extension_id,

Powered by Google App Engine
This is Rietveld 408576698