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

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

Issue 15666005: Make WebRequestAction::GetName a pure virtual function (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 7 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.cc
diff --git a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.cc b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.cc
index 6cf40a06ad8f4a1814786a4df2789c8a731650ef..0b64d5469f194f4c41b2f1ea5eac53c9b807a4eb 100644
--- a/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.cc
+++ b/chrome/browser/extensions/api/declarative_webrequest/webrequest_action.cc
@@ -346,13 +346,8 @@ scoped_refptr<const WebRequestAction> CreateSendMessageToExtensionAction(
}
struct WebRequestActionFactory {
- typedef std::map<WebRequestAction::Type, const std::string> ActionNames;
-
DedupingFactory<WebRequestAction> factory;
- // Translates action types into the corresponding JavaScript names.
- ActionNames action_names;
-
WebRequestActionFactory() : factory(5) {
factory.RegisterFactoryMethod(
keys::kAddRequestCookieType,
@@ -423,44 +418,6 @@ struct WebRequestActionFactory {
keys::kSendMessageToExtensionType,
DedupingFactory<WebRequestAction>::IS_PARAMETERIZED,
&CreateSendMessageToExtensionAction);
-
-#define INSERT_ACTION_NAME(type, name) \
- action_names.insert(ActionNames::value_type(type, name));
- std::vector<std::string> names_buffer;
- names_buffer.push_back(keys::kAddRequestCookieType);
- names_buffer.push_back(keys::kEditRequestCookieType);
- names_buffer.push_back(keys::kRemoveRequestCookieType);
- INSERT_ACTION_NAME(WebRequestAction::ACTION_MODIFY_REQUEST_COOKIE,
- JoinString(names_buffer, ", "));
- names_buffer.clear();
- names_buffer.push_back(keys::kAddResponseCookieType);
- names_buffer.push_back(keys::kEditResponseCookieType);
- names_buffer.push_back(keys::kRemoveResponseCookieType);
- INSERT_ACTION_NAME(WebRequestAction::ACTION_MODIFY_RESPONSE_COOKIE,
- JoinString(names_buffer, ", "));
- INSERT_ACTION_NAME(WebRequestAction::ACTION_ADD_RESPONSE_HEADER,
- keys::kAddResponseHeaderType);
- INSERT_ACTION_NAME(WebRequestAction::ACTION_CANCEL_REQUEST,
- keys::kCancelRequestType);
- INSERT_ACTION_NAME(WebRequestAction::ACTION_REDIRECT_BY_REGEX_DOCUMENT,
- keys::kRedirectByRegExType);
- INSERT_ACTION_NAME(WebRequestAction::ACTION_REDIRECT_REQUEST,
- keys::kRedirectRequestType);
- INSERT_ACTION_NAME(WebRequestAction::ACTION_REDIRECT_TO_TRANSPARENT_IMAGE,
- keys::kRedirectToTransparentImageType);
- INSERT_ACTION_NAME(WebRequestAction::ACTION_REDIRECT_TO_EMPTY_DOCUMENT,
- keys::kRedirectToEmptyDocumentType);
- INSERT_ACTION_NAME(WebRequestAction::ACTION_SET_REQUEST_HEADER,
- keys::kSetRequestHeaderType);
- INSERT_ACTION_NAME(WebRequestAction::ACTION_REMOVE_REQUEST_HEADER,
- keys::kRemoveRequestHeaderType);
- INSERT_ACTION_NAME(WebRequestAction::ACTION_REMOVE_RESPONSE_HEADER,
- keys::kRemoveResponseHeaderType);
- INSERT_ACTION_NAME(WebRequestAction::ACTION_IGNORE_RULES,
- keys::kIgnoreRulesType);
- INSERT_ACTION_NAME(WebRequestAction::ACTION_SEND_MESSAGE_TO_EXTENSION,
- keys::kSendMessageToExtensionType);
-#undef INSERT_ACTION_NAME
}
};
@@ -479,15 +436,6 @@ bool WebRequestAction::Equals(const WebRequestAction* other) const {
return type() == other->type();
}
-const std::string& WebRequestAction::GetName() const {
- const WebRequestActionFactory::ActionNames& names =
- g_web_request_action_factory.Get().action_names;
- std::map<WebRequestAction::Type, const std::string>::const_iterator it =
- names.find(type());
- CHECK(it != names.end());
- return it->second;
-}
-
bool WebRequestAction::HasPermission(const ExtensionInfoMap* extension_info_map,
const std::string& extension_id,
const net::URLRequest* request,
@@ -580,6 +528,10 @@ WebRequestCancelAction::WebRequestCancelAction()
WebRequestCancelAction::~WebRequestCancelAction() {}
+std::string WebRequestCancelAction::GetName() const {
+ return keys::kCancelRequestType;
+}
+
LinkedPtrEventResponseDelta WebRequestCancelAction::CreateDelta(
const WebRequestData& request_data,
const std::string& extension_id,
@@ -610,6 +562,10 @@ bool WebRequestRedirectAction::Equals(const WebRequestAction* other) const {
static_cast<const WebRequestRedirectAction*>(other)->redirect_url_;
}
+std::string WebRequestRedirectAction::GetName() const {
+ return keys::kRedirectRequestType;
+}
+
LinkedPtrEventResponseDelta WebRequestRedirectAction::CreateDelta(
const WebRequestData& request_data,
const std::string& extension_id,
@@ -637,6 +593,10 @@ WebRequestRedirectToTransparentImageAction::
WebRequestRedirectToTransparentImageAction::
~WebRequestRedirectToTransparentImageAction() {}
+std::string WebRequestRedirectToTransparentImageAction::GetName() const {
+ return keys::kRedirectToTransparentImageType;
+}
+
LinkedPtrEventResponseDelta
WebRequestRedirectToTransparentImageAction::CreateDelta(
const WebRequestData& request_data,
@@ -663,6 +623,10 @@ WebRequestRedirectToEmptyDocumentAction::
WebRequestRedirectToEmptyDocumentAction::
~WebRequestRedirectToEmptyDocumentAction() {}
+std::string WebRequestRedirectToEmptyDocumentAction::GetName() const {
+ return keys::kRedirectToEmptyDocumentType;
+}
+
LinkedPtrEventResponseDelta
WebRequestRedirectToEmptyDocumentAction::CreateDelta(
const WebRequestData& request_data,
@@ -754,6 +718,10 @@ bool WebRequestRedirectByRegExAction::Equals(
to_pattern_ == casted_other->to_pattern_;
}
+std::string WebRequestRedirectByRegExAction::GetName() const {
+ return keys::kRedirectByRegExType;
+}
+
LinkedPtrEventResponseDelta WebRequestRedirectByRegExAction::CreateDelta(
const WebRequestData& request_data,
const std::string& extension_id,
@@ -800,6 +768,11 @@ bool WebRequestSetRequestHeaderAction::Equals(
return name_ == casted_other->name_ && value_ == casted_other->value_;
}
+std::string WebRequestSetRequestHeaderAction::GetName() const {
+ return keys::kSetRequestHeaderType;
+}
+
+
LinkedPtrEventResponseDelta
WebRequestSetRequestHeaderAction::CreateDelta(
const WebRequestData& request_data,
@@ -835,6 +808,10 @@ bool WebRequestRemoveRequestHeaderAction::Equals(
return name_ == casted_other->name_;
}
+std::string WebRequestRemoveRequestHeaderAction::GetName() const {
+ return keys::kRemoveRequestHeaderType;
+}
+
LinkedPtrEventResponseDelta
WebRequestRemoveRequestHeaderAction::CreateDelta(
const WebRequestData& request_data,
@@ -872,6 +849,10 @@ bool WebRequestAddResponseHeaderAction::Equals(
return name_ == casted_other->name_ && value_ == casted_other->value_;
}
+std::string WebRequestAddResponseHeaderAction::GetName() const {
+ return keys::kAddResponseHeaderType;
+}
+
LinkedPtrEventResponseDelta
WebRequestAddResponseHeaderAction::CreateDelta(
const WebRequestData& request_data,
@@ -921,6 +902,10 @@ bool WebRequestRemoveResponseHeaderAction::Equals(
has_value_ == casted_other->has_value_;
}
+std::string WebRequestRemoveResponseHeaderAction::GetName() const {
+ return keys::kRemoveResponseHeaderType;
+}
+
LinkedPtrEventResponseDelta
WebRequestRemoveResponseHeaderAction::CreateDelta(
const WebRequestData& request_data,
@@ -974,6 +959,10 @@ bool WebRequestIgnoreRulesAction::Equals(const WebRequestAction* other) const {
ignore_tag_ == casted_other->ignore_tag_;
}
+std::string WebRequestIgnoreRulesAction::GetName() const {
+ return keys::kIgnoreRulesType;
+}
+
LinkedPtrEventResponseDelta WebRequestIgnoreRulesAction::CreateDelta(
const WebRequestData& request_data,
const std::string& extension_id,
@@ -1009,6 +998,19 @@ bool WebRequestRequestCookieAction::Equals(
casted_other->request_cookie_modification_.get());
}
+std::string WebRequestRequestCookieAction::GetName() const {
+ switch (request_cookie_modification_->type) {
+ case helpers::ADD:
+ return keys::kAddRequestCookieType;
+ case helpers::EDIT:
+ return keys::kEditRequestCookieType;
+ case helpers::REMOVE:
+ return keys::kRemoveRequestCookieType;
+ }
+ NOTREACHED();
+ return "";
+}
+
LinkedPtrEventResponseDelta WebRequestRequestCookieAction::CreateDelta(
const WebRequestData& request_data,
const std::string& extension_id,
@@ -1049,6 +1051,19 @@ bool WebRequestResponseCookieAction::Equals(
casted_other->response_cookie_modification_.get());
}
+std::string WebRequestResponseCookieAction::GetName() const {
+ switch (response_cookie_modification_->type) {
+ case helpers::ADD:
+ return keys::kAddResponseCookieType;
+ case helpers::EDIT:
+ return keys::kEditResponseCookieType;
+ case helpers::REMOVE:
+ return keys::kRemoveResponseCookieType;
+ }
+ NOTREACHED();
+ return "";
+}
+
LinkedPtrEventResponseDelta WebRequestResponseCookieAction::CreateDelta(
const WebRequestData& request_data,
const std::string& extension_id,
@@ -1087,6 +1102,10 @@ bool WebRequestSendMessageToExtensionAction::Equals(
return message_ == casted_other->message_;
}
+std::string WebRequestSendMessageToExtensionAction::GetName() const {
+ return keys::kSendMessageToExtensionType;
+}
+
LinkedPtrEventResponseDelta WebRequestSendMessageToExtensionAction::CreateDelta(
const WebRequestData& request_data,
const std::string& extension_id,

Powered by Google App Engine
This is Rietveld 408576698