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