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

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

Issue 10831008: Refactor and fix declarative webRequest API permissions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixed license headers Created 8 years, 5 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 01f7e4aea1ac1e9b6cf2beeb9e5025c527858b50..96d0a3d42e1dbb65ea27a36429f7de38db23bf68 100644
--- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h
+++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h
@@ -17,6 +17,8 @@
#include "googleurl/src/gurl.h"
#include "unicode/regex.h"
+class WebRequestPermission;
+
namespace base {
class DictionaryValue;
class Time;
@@ -72,12 +74,21 @@ class WebRequestAction {
// this rule. Defaults to MIN_INT.
virtual int GetMinimumPriority() const;
- // Returns whether |extension| has permission to execute this action
- // on |request|. Defaults to checking the host permission.
- // |extension| may only be NULL for during testing, in which case
- // host permissions are ignored.
- virtual bool HasPermission(const extensions::Extension* extension,
- const net::URLRequest* request) const;
+ // Returns whether the specified extension has permission to execute this
+ // action on |request|. Checks the host permission if
+ // ShouldEnforceHostPermissions instructs to do that.
+ // |extension_info_map| may only be NULL for during testing, in which case
+ // host permissions are ignored. |crosses_incognito| specifies
+ // whether the request comes from a different profile than |extension_id|
+ // but was processed because the extension is in spanning mode.
+ virtual bool HasPermission(const ExtensionInfoMap* extension_info_map,
+ const std::string& extension_id,
+ const net::URLRequest* request,
+ bool crosses_incognito) const;
+
+ // Returns whether host permissions shall be enforced by this actions.
+ // Used by the standard implementation of HasPermission. Defaults to true.
+ virtual bool ShouldEnforceHostPermissions() const;
// Factory method that instantiates a concrete WebRequestAction
// implementation according to |json_action|, the representation of the
@@ -123,11 +134,12 @@ class WebRequestActionSet {
// |actions_| that can be executed at |request_stage|. If |extension|
// is not NULL, permissions of extensions are checked.
std::list<LinkedPtrEventResponseDelta> CreateDeltas(
- const extensions::Extension* extension,
+ const ExtensionInfoMap* extension_info_map,
+ const std::string& extension_id,
net::URLRequest* request,
+ bool crosses_incognito,
RequestStages request_stage,
const WebRequestRule::OptionalRequestData& optional_request_data,
- const std::string& extension_id,
const base::Time& extension_install_time) const;
// Returns the minimum priority of rules that may be evaluated after
@@ -197,8 +209,7 @@ class WebRequestRedirectToTransparentImageAction : public WebRequestAction {
// Implementation of WebRequestAction:
virtual int GetStages() const OVERRIDE;
virtual Type GetType() const OVERRIDE;
- virtual bool HasPermission(const extensions::Extension* extension,
- const net::URLRequest* request) const OVERRIDE;
+ virtual bool ShouldEnforceHostPermissions() const OVERRIDE;
virtual LinkedPtrEventResponseDelta CreateDelta(
net::URLRequest* request,
RequestStages request_stage,
@@ -220,8 +231,7 @@ class WebRequestRedirectToEmptyDocumentAction : public WebRequestAction {
// Implementation of WebRequestAction:
virtual int GetStages() const OVERRIDE;
virtual Type GetType() const OVERRIDE;
- virtual bool HasPermission(const extensions::Extension* extension,
- const net::URLRequest* request) const OVERRIDE;
+ virtual bool ShouldEnforceHostPermissions() const OVERRIDE;
virtual LinkedPtrEventResponseDelta CreateDelta(
net::URLRequest* request,
RequestStages request_stage,
@@ -366,8 +376,7 @@ class WebRequestIgnoreRulesAction : public WebRequestAction {
virtual int GetStages() const OVERRIDE;
virtual Type GetType() const OVERRIDE;
virtual int GetMinimumPriority() const OVERRIDE;
- virtual bool HasPermission(const extensions::Extension* extension,
- const net::URLRequest* request) const OVERRIDE;
+ virtual bool ShouldEnforceHostPermissions() const OVERRIDE;
virtual LinkedPtrEventResponseDelta CreateDelta(
net::URLRequest* request,
RequestStages request_stage,

Powered by Google App Engine
This is Rietveld 408576698