| Index: chrome/browser/extensions/extension_webrequest_api_helpers.cc
|
| diff --git a/chrome/browser/extensions/extension_webrequest_api_helpers.cc b/chrome/browser/extensions/extension_webrequest_api_helpers.cc
|
| index 9819185dc478a5e54cf2d1df8d6a0f03a90aa615..87cc29578503fc16ca3e61e4cd83bb17597f0264 100644
|
| --- a/chrome/browser/extensions/extension_webrequest_api_helpers.cc
|
| +++ b/chrome/browser/extensions/extension_webrequest_api_helpers.cc
|
| @@ -140,23 +140,27 @@ EventResponseDelta* CalculateOnBeforeSendHeadersDelta(
|
| new EventResponseDelta(extension_id, extension_install_time);
|
| result->cancel = cancel;
|
|
|
| - // Find deleted headers.
|
| - {
|
| - net::HttpRequestHeaders::Iterator i(*old_headers);
|
| - while (i.GetNext()) {
|
| - if (!new_headers->HasHeader(i.name())) {
|
| - result->deleted_request_headers.push_back(i.name());
|
| + // The event listener might not have passed any new headers if he
|
| + // just wanted to cancel the request.
|
| + if (new_headers) {
|
| + // Find deleted headers.
|
| + {
|
| + net::HttpRequestHeaders::Iterator i(*old_headers);
|
| + while (i.GetNext()) {
|
| + if (!new_headers->HasHeader(i.name())) {
|
| + result->deleted_request_headers.push_back(i.name());
|
| + }
|
| }
|
| }
|
| - }
|
|
|
| - // Find modified headers.
|
| - {
|
| - net::HttpRequestHeaders::Iterator i(*new_headers);
|
| - while (i.GetNext()) {
|
| - std::string value;
|
| - if (!old_headers->GetHeader(i.name(), &value) || i.value() != value) {
|
| - result->modified_request_headers.SetHeader(i.name(), i.value());
|
| + // Find modified headers.
|
| + {
|
| + net::HttpRequestHeaders::Iterator i(*new_headers);
|
| + while (i.GetNext()) {
|
| + std::string value;
|
| + if (!old_headers->GetHeader(i.name(), &value) || i.value() != value) {
|
| + result->modified_request_headers.SetHeader(i.name(), i.value());
|
| + }
|
| }
|
| }
|
| }
|
|
|