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_ |