| 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
|
| deleted file mode 100644
|
| index a7539c4ce134359b6019765cf933c35ff83a49ed..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h
|
| +++ /dev/null
|
| @@ -1,470 +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_API_DECLARATIVE_WEBREQUEST_WEBREQUEST_ACTION_H_
|
| -#define CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_WEBREQUEST_WEBREQUEST_ACTION_H_
|
| -
|
| -#include <list>
|
| -#include <string>
|
| -#include <vector>
|
| -
|
| -#include "base/compiler_specific.h"
|
| -#include "base/memory/linked_ptr.h"
|
| -#include "base/memory/ref_counted.h"
|
| -#include "chrome/browser/extensions/api/web_request/web_request_api_helpers.h"
|
| -#include "extensions/browser/api/declarative/declarative_rule.h"
|
| -#include "extensions/browser/api/declarative_webrequest/request_stage.h"
|
| -#include "extensions/common/api/events.h"
|
| -#include "url/gurl.h"
|
| -
|
| -class WebRequestPermission;
|
| -
|
| -namespace base {
|
| -class DictionaryValue;
|
| -class Time;
|
| -class Value;
|
| -}
|
| -
|
| -namespace extension_web_request_api_helpers {
|
| -struct EventResponseDelta;
|
| -}
|
| -
|
| -namespace extensions {
|
| -class Extension;
|
| -class InfoMap;
|
| -struct WebRequestData;
|
| -}
|
| -
|
| -namespace net {
|
| -class URLRequest;
|
| -}
|
| -
|
| -namespace re2 {
|
| -class RE2;
|
| -}
|
| -
|
| -namespace extensions {
|
| -
|
| -typedef linked_ptr<extension_web_request_api_helpers::EventResponseDelta>
|
| - LinkedPtrEventResponseDelta;
|
| -
|
| -// Base class for all WebRequestActions of the declarative Web Request API.
|
| -class WebRequestAction : public base::RefCounted<WebRequestAction> {
|
| - public:
|
| - // Type identifiers for concrete WebRequestActions. If you add a new type,
|
| - // also update the unittest WebRequestActionTest.GetName, and add a
|
| - // WebRequestActionWithThreadsTest.Permission* unittest.
|
| - enum Type {
|
| - ACTION_CANCEL_REQUEST,
|
| - ACTION_REDIRECT_REQUEST,
|
| - ACTION_REDIRECT_TO_TRANSPARENT_IMAGE,
|
| - ACTION_REDIRECT_TO_EMPTY_DOCUMENT,
|
| - ACTION_REDIRECT_BY_REGEX_DOCUMENT,
|
| - ACTION_SET_REQUEST_HEADER,
|
| - ACTION_REMOVE_REQUEST_HEADER,
|
| - ACTION_ADD_RESPONSE_HEADER,
|
| - ACTION_REMOVE_RESPONSE_HEADER,
|
| - ACTION_IGNORE_RULES,
|
| - ACTION_MODIFY_REQUEST_COOKIE,
|
| - ACTION_MODIFY_RESPONSE_COOKIE,
|
| - ACTION_SEND_MESSAGE_TO_EXTENSION,
|
| - };
|
| -
|
| - // Strategies for checking host permissions.
|
| - enum HostPermissionsStrategy {
|
| - STRATEGY_NONE, // Do not check host permissions.
|
| - STRATEGY_DEFAULT, // Check for host permissions for all URLs
|
| - // before creating the delta.
|
| - STRATEGY_HOST, // Check that host permissions match the URL
|
| - // of the request.
|
| - };
|
| -
|
| - // Information necessary to decide how to apply a WebRequestAction
|
| - // inside a matching rule.
|
| - struct ApplyInfo {
|
| - const InfoMap* extension_info_map;
|
| - const WebRequestData& request_data;
|
| - bool crosses_incognito;
|
| - // Modified by each applied action:
|
| - std::list<LinkedPtrEventResponseDelta>* deltas;
|
| - std::set<std::string>* ignored_tags;
|
| - };
|
| -
|
| - int stages() const {
|
| - return stages_;
|
| - }
|
| -
|
| - Type type() const {
|
| - return type_;
|
| - }
|
| -
|
| - // Compares the Type of two WebRequestActions, needs to be overridden for
|
| - // parameterized types.
|
| - virtual bool Equals(const WebRequestAction* other) const;
|
| -
|
| - // Return the JavaScript type name corresponding to type(). If there are
|
| - // more names, they are returned separated by a colon.
|
| - virtual std::string GetName() const = 0;
|
| -
|
| - int minimum_priority() const {
|
| - return minimum_priority_;
|
| - }
|
| -
|
| - 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
|
| - // strategy is STRATEGY_DEFAULT.
|
| - // |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 InfoMap* extension_info_map,
|
| - const std::string& extension_id,
|
| - const net::URLRequest* request,
|
| - bool crosses_incognito) const;
|
| -
|
| - // Factory method that instantiates a concrete WebRequestAction
|
| - // implementation according to |json_action|, the representation of the
|
| - // WebRequestAction as received from the extension API.
|
| - // Sets |error| and returns NULL in case of a semantic error that cannot
|
| - // be caught by schema validation. Sets |bad_message| and returns NULL
|
| - // in case the input is syntactically unexpected.
|
| - static scoped_refptr<const WebRequestAction> Create(
|
| - content::BrowserContext* browser_context,
|
| - const Extension* extension,
|
| - const base::Value& json_action,
|
| - std::string* error,
|
| - bool* bad_message);
|
| -
|
| - // Returns a description of the modification to the request caused by
|
| - // this action.
|
| - virtual LinkedPtrEventResponseDelta CreateDelta(
|
| - const WebRequestData& request_data,
|
| - const std::string& extension_id,
|
| - const base::Time& extension_install_time) const = 0;
|
| -
|
| - // Applies this action to a request, recording the results into
|
| - // apply_info.deltas.
|
| - void Apply(const std::string& extension_id,
|
| - base::Time extension_install_time,
|
| - ApplyInfo* apply_info) const;
|
| -
|
| - protected:
|
| - friend class base::RefCounted<WebRequestAction>;
|
| - virtual ~WebRequestAction();
|
| - WebRequestAction(int stages,
|
| - Type type,
|
| - int minimum_priority,
|
| - HostPermissionsStrategy strategy);
|
| -
|
| - private:
|
| - // A bit vector representing a set of extensions::RequestStage during which
|
| - // the condition can be tested.
|
| - const int stages_;
|
| -
|
| - const Type type_;
|
| -
|
| - // The minimum priority of rules that may be evaluated after the rule
|
| - // containing this action.
|
| - const int minimum_priority_;
|
| -
|
| - // Defaults to STRATEGY_DEFAULT.
|
| - const HostPermissionsStrategy host_permissions_strategy_;
|
| -};
|
| -
|
| -typedef DeclarativeActionSet<WebRequestAction> WebRequestActionSet;
|
| -
|
| -//
|
| -// The following are concrete actions.
|
| -//
|
| -
|
| -// Action that instructs to cancel a network request.
|
| -class WebRequestCancelAction : public WebRequestAction {
|
| - public:
|
| - WebRequestCancelAction();
|
| -
|
| - // Implementation of WebRequestAction:
|
| - virtual std::string GetName() const OVERRIDE;
|
| - virtual LinkedPtrEventResponseDelta CreateDelta(
|
| - const WebRequestData& request_data,
|
| - const std::string& extension_id,
|
| - const base::Time& extension_install_time) const OVERRIDE;
|
| -
|
| - private:
|
| - virtual ~WebRequestCancelAction();
|
| - DISALLOW_COPY_AND_ASSIGN(WebRequestCancelAction);
|
| -};
|
| -
|
| -// Action that instructs to redirect a network request.
|
| -class WebRequestRedirectAction : public WebRequestAction {
|
| - public:
|
| - explicit WebRequestRedirectAction(const GURL& redirect_url);
|
| -
|
| - // Implementation of WebRequestAction:
|
| - virtual bool Equals(const WebRequestAction* other) const OVERRIDE;
|
| - virtual std::string GetName() const OVERRIDE;
|
| - virtual LinkedPtrEventResponseDelta CreateDelta(
|
| - const WebRequestData& request_data,
|
| - const std::string& extension_id,
|
| - const base::Time& extension_install_time) const OVERRIDE;
|
| -
|
| - private:
|
| - virtual ~WebRequestRedirectAction();
|
| -
|
| - GURL redirect_url_; // Target to which the request shall be redirected.
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectAction);
|
| -};
|
| -
|
| -// Action that instructs to redirect a network request to a transparent image.
|
| -class WebRequestRedirectToTransparentImageAction : public WebRequestAction {
|
| - public:
|
| - WebRequestRedirectToTransparentImageAction();
|
| -
|
| - // Implementation of WebRequestAction:
|
| - virtual std::string GetName() const OVERRIDE;
|
| - virtual LinkedPtrEventResponseDelta CreateDelta(
|
| - const WebRequestData& request_data,
|
| - const std::string& extension_id,
|
| - const base::Time& extension_install_time) const OVERRIDE;
|
| -
|
| - private:
|
| - virtual ~WebRequestRedirectToTransparentImageAction();
|
| - DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectToTransparentImageAction);
|
| -};
|
| -
|
| -
|
| -// Action that instructs to redirect a network request to an empty document.
|
| -class WebRequestRedirectToEmptyDocumentAction : public WebRequestAction {
|
| - public:
|
| - WebRequestRedirectToEmptyDocumentAction();
|
| -
|
| - // Implementation of WebRequestAction:
|
| - virtual std::string GetName() const OVERRIDE;
|
| - virtual LinkedPtrEventResponseDelta CreateDelta(
|
| - const WebRequestData& request_data,
|
| - const std::string& extension_id,
|
| - const base::Time& extension_install_time) const OVERRIDE;
|
| -
|
| - private:
|
| - virtual ~WebRequestRedirectToEmptyDocumentAction();
|
| - DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectToEmptyDocumentAction);
|
| -};
|
| -
|
| -// Action that instructs to redirect a network request.
|
| -class WebRequestRedirectByRegExAction : public WebRequestAction {
|
| - public:
|
| - // The |to_pattern| has to be passed in RE2 syntax with the exception that
|
| - // capture groups are referenced in Perl style ($1, $2, ...).
|
| - explicit WebRequestRedirectByRegExAction(scoped_ptr<re2::RE2> from_pattern,
|
| - const std::string& to_pattern);
|
| -
|
| - // Conversion of capture group styles between Perl style ($1, $2, ...) and
|
| - // RE2 (\1, \2, ...).
|
| - static std::string PerlToRe2Style(const std::string& perl);
|
| -
|
| - // Implementation of WebRequestAction:
|
| - virtual bool Equals(const WebRequestAction* other) const OVERRIDE;
|
| - virtual std::string GetName() const OVERRIDE;
|
| - virtual LinkedPtrEventResponseDelta CreateDelta(
|
| - const WebRequestData& request_data,
|
| - const std::string& extension_id,
|
| - const base::Time& extension_install_time) const OVERRIDE;
|
| -
|
| - private:
|
| - virtual ~WebRequestRedirectByRegExAction();
|
| -
|
| - scoped_ptr<re2::RE2> from_pattern_;
|
| - std::string to_pattern_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectByRegExAction);
|
| -};
|
| -
|
| -// Action that instructs to set a request header.
|
| -class WebRequestSetRequestHeaderAction : public WebRequestAction {
|
| - public:
|
| - WebRequestSetRequestHeaderAction(const std::string& name,
|
| - const std::string& value);
|
| -
|
| - // Implementation of WebRequestAction:
|
| - virtual bool Equals(const WebRequestAction* other) const OVERRIDE;
|
| - virtual std::string GetName() const OVERRIDE;
|
| - virtual LinkedPtrEventResponseDelta CreateDelta(
|
| - const WebRequestData& request_data,
|
| - const std::string& extension_id,
|
| - const base::Time& extension_install_time) const OVERRIDE;
|
| -
|
| - private:
|
| - virtual ~WebRequestSetRequestHeaderAction();
|
| -
|
| - std::string name_;
|
| - std::string value_;
|
| - DISALLOW_COPY_AND_ASSIGN(WebRequestSetRequestHeaderAction);
|
| -};
|
| -
|
| -// Action that instructs to remove a request header.
|
| -class WebRequestRemoveRequestHeaderAction : public WebRequestAction {
|
| - public:
|
| - explicit WebRequestRemoveRequestHeaderAction(const std::string& name);
|
| -
|
| - // Implementation of WebRequestAction:
|
| - virtual bool Equals(const WebRequestAction* other) const OVERRIDE;
|
| - virtual std::string GetName() const OVERRIDE;
|
| - virtual LinkedPtrEventResponseDelta CreateDelta(
|
| - const WebRequestData& request_data,
|
| - const std::string& extension_id,
|
| - const base::Time& extension_install_time) const OVERRIDE;
|
| -
|
| - private:
|
| - virtual ~WebRequestRemoveRequestHeaderAction();
|
| -
|
| - std::string name_;
|
| - DISALLOW_COPY_AND_ASSIGN(WebRequestRemoveRequestHeaderAction);
|
| -};
|
| -
|
| -// Action that instructs to add a response header.
|
| -class WebRequestAddResponseHeaderAction : public WebRequestAction {
|
| - public:
|
| - WebRequestAddResponseHeaderAction(const std::string& name,
|
| - const std::string& value);
|
| -
|
| - // Implementation of WebRequestAction:
|
| - virtual bool Equals(const WebRequestAction* other) const OVERRIDE;
|
| - virtual std::string GetName() const OVERRIDE;
|
| - virtual LinkedPtrEventResponseDelta CreateDelta(
|
| - const WebRequestData& request_data,
|
| - const std::string& extension_id,
|
| - const base::Time& extension_install_time) const OVERRIDE;
|
| -
|
| - private:
|
| - virtual ~WebRequestAddResponseHeaderAction();
|
| -
|
| - std::string name_;
|
| - std::string value_;
|
| - DISALLOW_COPY_AND_ASSIGN(WebRequestAddResponseHeaderAction);
|
| -};
|
| -
|
| -// Action that instructs to remove a response header.
|
| -class WebRequestRemoveResponseHeaderAction : public WebRequestAction {
|
| - public:
|
| - explicit WebRequestRemoveResponseHeaderAction(const std::string& name,
|
| - const std::string& value,
|
| - bool has_value);
|
| -
|
| - // Implementation of WebRequestAction:
|
| - virtual bool Equals(const WebRequestAction* other) const OVERRIDE;
|
| - virtual std::string GetName() const OVERRIDE;
|
| - virtual LinkedPtrEventResponseDelta CreateDelta(
|
| - const WebRequestData& request_data,
|
| - const std::string& extension_id,
|
| - const base::Time& extension_install_time) const OVERRIDE;
|
| -
|
| - private:
|
| - virtual ~WebRequestRemoveResponseHeaderAction();
|
| -
|
| - std::string name_;
|
| - std::string value_;
|
| - bool has_value_;
|
| - DISALLOW_COPY_AND_ASSIGN(WebRequestRemoveResponseHeaderAction);
|
| -};
|
| -
|
| -// Action that instructs to ignore rules below a certain priority.
|
| -class WebRequestIgnoreRulesAction : public WebRequestAction {
|
| - public:
|
| - explicit WebRequestIgnoreRulesAction(int minimum_priority,
|
| - const std::string& ignore_tag);
|
| -
|
| - // Implementation of WebRequestAction:
|
| - virtual bool Equals(const WebRequestAction* other) const OVERRIDE;
|
| - virtual std::string GetName() const OVERRIDE;
|
| - virtual LinkedPtrEventResponseDelta CreateDelta(
|
| - const WebRequestData& request_data,
|
| - const std::string& extension_id,
|
| - const base::Time& extension_install_time) const OVERRIDE;
|
| - const std::string& ignore_tag() const { return ignore_tag_; }
|
| -
|
| - private:
|
| - virtual ~WebRequestIgnoreRulesAction();
|
| -
|
| - // Rules are ignored if they have a tag matching |ignore_tag_| and
|
| - // |ignore_tag_| is non-empty.
|
| - std::string ignore_tag_;
|
| - DISALLOW_COPY_AND_ASSIGN(WebRequestIgnoreRulesAction);
|
| -};
|
| -
|
| -// Action that instructs to modify (add, edit, remove) a request cookie.
|
| -class WebRequestRequestCookieAction : public WebRequestAction {
|
| - public:
|
| - typedef extension_web_request_api_helpers::RequestCookieModification
|
| - RequestCookieModification;
|
| -
|
| - explicit WebRequestRequestCookieAction(
|
| - linked_ptr<RequestCookieModification> request_cookie_modification);
|
| -
|
| - // Implementation of WebRequestAction:
|
| - virtual bool Equals(const WebRequestAction* other) const OVERRIDE;
|
| - virtual std::string GetName() const OVERRIDE;
|
| - virtual LinkedPtrEventResponseDelta CreateDelta(
|
| - const WebRequestData& request_data,
|
| - const std::string& extension_id,
|
| - const base::Time& extension_install_time) const OVERRIDE;
|
| -
|
| - private:
|
| - virtual ~WebRequestRequestCookieAction();
|
| -
|
| - linked_ptr<RequestCookieModification> request_cookie_modification_;
|
| - DISALLOW_COPY_AND_ASSIGN(WebRequestRequestCookieAction);
|
| -};
|
| -
|
| -// Action that instructs to modify (add, edit, remove) a response cookie.
|
| -class WebRequestResponseCookieAction : public WebRequestAction {
|
| - public:
|
| - typedef extension_web_request_api_helpers::ResponseCookieModification
|
| - ResponseCookieModification;
|
| -
|
| - explicit WebRequestResponseCookieAction(
|
| - linked_ptr<ResponseCookieModification> response_cookie_modification);
|
| -
|
| - // Implementation of WebRequestAction:
|
| - virtual bool Equals(const WebRequestAction* other) const OVERRIDE;
|
| - virtual std::string GetName() const OVERRIDE;
|
| - virtual LinkedPtrEventResponseDelta CreateDelta(
|
| - const WebRequestData& request_data,
|
| - const std::string& extension_id,
|
| - const base::Time& extension_install_time) const OVERRIDE;
|
| -
|
| - private:
|
| - virtual ~WebRequestResponseCookieAction();
|
| -
|
| - linked_ptr<ResponseCookieModification> response_cookie_modification_;
|
| - DISALLOW_COPY_AND_ASSIGN(WebRequestResponseCookieAction);
|
| -};
|
| -
|
| -// Action that triggers the chrome.declarativeWebRequest.onMessage event in
|
| -// the background/event/... pages of the extension.
|
| -class WebRequestSendMessageToExtensionAction : public WebRequestAction {
|
| - public:
|
| - explicit WebRequestSendMessageToExtensionAction(const std::string& message);
|
| -
|
| - // Implementation of WebRequestAction:
|
| - virtual bool Equals(const WebRequestAction* other) const OVERRIDE;
|
| - virtual std::string GetName() const OVERRIDE;
|
| - virtual LinkedPtrEventResponseDelta CreateDelta(
|
| - const WebRequestData& request_data,
|
| - const std::string& extension_id,
|
| - const base::Time& extension_install_time) const OVERRIDE;
|
| -
|
| - private:
|
| - virtual ~WebRequestSendMessageToExtensionAction();
|
| -
|
| - std::string message_;
|
| - DISALLOW_COPY_AND_ASSIGN(WebRequestSendMessageToExtensionAction);
|
| -};
|
| -
|
| -} // namespace extensions
|
| -
|
| -#endif // CHROME_BROWSER_EXTENSIONS_API_DECLARATIVE_WEBREQUEST_WEBREQUEST_ACTION_H_
|
|
|