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

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

Issue 10449069: Support redirects by regular expression in declarative WebRequest API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed comments Created 8 years, 6 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 5c8a6cb633871fa8db3043e6a0ae14fc84c8f579..65ccef233a3b9c670a81068548c834fc326ff35d 100644
--- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h
+++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.h
@@ -16,6 +16,7 @@
#include "chrome/browser/extensions/api/declarative_webrequest/webrequest_rule.h"
#include "chrome/common/extensions/api/events.h"
#include "googleurl/src/gurl.h"
+#include "unicode/regex.h"
namespace base {
class DictionaryValue;
@@ -47,6 +48,7 @@ class WebRequestAction {
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,
@@ -216,6 +218,37 @@ class WebRequestRedirectToEmptyDocumentAction : public WebRequestAction {
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 ICU syntax.
+ // TODO(battre): Change this to Perl style when migrated to RE2.
+ explicit WebRequestRedirectByRegExAction(
+ scoped_ptr<icu::RegexPattern> from_pattern,
+ const std::string& to_pattern);
+ virtual ~WebRequestRedirectByRegExAction();
+
+ // 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 int GetStages() const OVERRIDE;
+ virtual Type GetType() const OVERRIDE;
+ virtual LinkedPtrEventResponseDelta CreateDelta(
+ net::URLRequest* request,
+ RequestStages request_stage,
+ const WebRequestRule::OptionalRequestData& optional_request_data,
+ const std::string& extension_id,
+ const base::Time& extension_install_time) const OVERRIDE;
+
+ private:
+ scoped_ptr<icu::RegexPattern> from_pattern_;
+ icu::UnicodeString to_pattern_;
+
+ DISALLOW_COPY_AND_ASSIGN(WebRequestRedirectByRegExAction);
+};
+
// Action that instructs to set a request header.
class WebRequestSetRequestHeaderAction : public WebRequestAction {
public:

Powered by Google App Engine
This is Rietveld 408576698