Index: extensions/browser/api/web_request/web_request_api_helpers.cc |
diff --git a/extensions/browser/api/web_request/web_request_api_helpers.cc b/extensions/browser/api/web_request/web_request_api_helpers.cc |
index bdd91f1dfe04310d620abafce152939a6acd4dcb..2e8697e5e5b1f390bcdb7d5feba3121b81d4f39a 100644 |
--- a/extensions/browser/api/web_request/web_request_api_helpers.cc |
+++ b/extensions/browser/api/web_request/web_request_api_helpers.cc |
@@ -652,7 +652,11 @@ void MergeCookiesInOnBeforeSendHeadersResponses( |
const EventResponseDeltas& deltas, |
net::HttpRequestHeaders* request_headers, |
extensions::WarningSet* conflicting_extensions, |
- const net::NetLogWithSource* net_log) { |
+ const net::NetLogWithSource* net_log, |
+ bool* request_cookies_modified) { |
+ DCHECK(request_cookies_modified); |
+ *request_cookies_modified = false; |
+ |
// Skip all work if there are no registered cookie modifications. |
bool cookie_modifications_exist = false; |
EventResponseDeltas::const_iterator delta; |
@@ -670,13 +674,15 @@ void MergeCookiesInOnBeforeSendHeadersResponses( |
net::cookie_util::ParseRequestCookieLine(cookie_header, &cookies); |
// Modify cookies. |
- bool modified = false; |
- modified |= MergeAddRequestCookieModifications(deltas, &cookies); |
- modified |= MergeEditRequestCookieModifications(deltas, &cookies); |
- modified |= MergeRemoveRequestCookieModifications(deltas, &cookies); |
+ *request_cookies_modified |= |
+ MergeAddRequestCookieModifications(deltas, &cookies); |
+ *request_cookies_modified |= |
+ MergeEditRequestCookieModifications(deltas, &cookies); |
+ *request_cookies_modified |= |
+ MergeRemoveRequestCookieModifications(deltas, &cookies); |
// Reassemble and store new cookie line. |
- if (modified) { |
+ if (*request_cookies_modified) { |
std::string new_cookie_header = |
net::cookie_util::SerializeRequestCookieLine(cookies); |
request_headers->SetHeader(net::HttpRequestHeaders::kCookie, |
@@ -725,7 +731,14 @@ void MergeOnBeforeSendHeadersResponses( |
const EventResponseDeltas& deltas, |
net::HttpRequestHeaders* request_headers, |
extensions::WarningSet* conflicting_extensions, |
- const net::NetLogWithSource* net_log) { |
+ const net::NetLogWithSource* net_log, |
+ bool* request_headers_modified, |
+ bool* request_cookies_modified) { |
+ DCHECK(request_headers_modified); |
+ DCHECK(request_cookies_modified); |
+ *request_headers_modified = false; |
+ *request_cookies_modified = false; |
+ |
EventResponseDeltas::const_iterator delta; |
// Here we collect which headers we have removed or set to new values |
@@ -822,6 +835,7 @@ void MergeOnBeforeSendHeadersResponses( |
} |
net_log->AddEvent(net::NetLogEventType::CHROME_EXTENSION_MODIFIED_HEADERS, |
base::Bind(&NetLogModificationCallback, delta->get())); |
+ *request_headers_modified = true; |
} else { |
conflicting_extensions->insert( |
extensions::Warning::CreateRequestHeaderConflictWarning( |
@@ -834,7 +848,8 @@ void MergeOnBeforeSendHeadersResponses( |
} |
MergeCookiesInOnBeforeSendHeadersResponses(deltas, request_headers, |
- conflicting_extensions, net_log); |
+ conflicting_extensions, net_log, |
+ request_cookies_modified); |
} |
// Retrives all cookies from |override_response_headers|. |
@@ -1032,7 +1047,11 @@ void MergeCookiesInOnHeadersReceivedResponses( |
const net::HttpResponseHeaders* original_response_headers, |
scoped_refptr<net::HttpResponseHeaders>* override_response_headers, |
extensions::WarningSet* conflicting_extensions, |
- const net::NetLogWithSource* net_log) { |
+ const net::NetLogWithSource* net_log, |
+ bool* response_cookies_modified) { |
+ DCHECK(response_cookies_modified); |
+ *response_cookies_modified = false; |
+ |
// Skip all work if there are no registered cookie modifications. |
bool cookie_modifications_exist = false; |
EventResponseDeltas::const_reverse_iterator delta; |
@@ -1052,13 +1071,15 @@ void MergeCookiesInOnHeadersReceivedResponses( |
ParsedResponseCookies cookies = |
GetResponseCookies(*override_response_headers); |
- bool modified = false; |
- modified |= MergeAddResponseCookieModifications(deltas, &cookies); |
- modified |= MergeEditResponseCookieModifications(deltas, &cookies); |
- modified |= MergeRemoveResponseCookieModifications(deltas, &cookies); |
+ *response_cookies_modified |= |
+ MergeAddResponseCookieModifications(deltas, &cookies); |
+ *response_cookies_modified |= |
+ MergeEditResponseCookieModifications(deltas, &cookies); |
+ *response_cookies_modified |= |
+ MergeRemoveResponseCookieModifications(deltas, &cookies); |
// Store new value. |
- if (modified) |
+ if (*response_cookies_modified) |
StoreResponseCookies(cookies, *override_response_headers); |
} |
@@ -1088,7 +1109,14 @@ void MergeOnHeadersReceivedResponses( |
scoped_refptr<net::HttpResponseHeaders>* override_response_headers, |
GURL* allowed_unsafe_redirect_url, |
extensions::WarningSet* conflicting_extensions, |
- const net::NetLogWithSource* net_log) { |
+ const net::NetLogWithSource* net_log, |
+ bool* response_headers_modified, |
+ bool* response_cookies_modified) { |
+ DCHECK(response_headers_modified); |
+ DCHECK(response_cookies_modified); |
+ *response_headers_modified = false; |
+ *response_cookies_modified = false; |
+ |
EventResponseDeltas::const_iterator delta; |
// Here we collect which headers we have removed or added so far due to |
@@ -1154,6 +1182,7 @@ void MergeOnHeadersReceivedResponses( |
} |
net_log->AddEvent(net::NetLogEventType::CHROME_EXTENSION_MODIFIED_HEADERS, |
CreateNetLogExtensionIdCallback(delta->get())); |
+ *response_headers_modified = true; |
} else { |
conflicting_extensions->insert( |
extensions::Warning::CreateResponseHeaderConflictWarning( |
@@ -1165,8 +1194,9 @@ void MergeOnHeadersReceivedResponses( |
} |
} |
- MergeCookiesInOnHeadersReceivedResponses(deltas, original_response_headers, |
- override_response_headers, conflicting_extensions, net_log); |
+ MergeCookiesInOnHeadersReceivedResponses( |
+ deltas, original_response_headers, override_response_headers, |
+ conflicting_extensions, net_log, response_cookies_modified); |
GURL new_url; |
MergeRedirectUrlOfResponses( |