| Index: chrome/browser/extensions/api/web_request/web_request_api.cc
|
| diff --git a/chrome/browser/extensions/api/web_request/web_request_api.cc b/chrome/browser/extensions/api/web_request/web_request_api.cc
|
| index e1095698c6533201d7933cd7d3ff3088689ea94a..8b84b2dcafd5686745bf353de2d12d6938284001 100644
|
| --- a/chrome/browser/extensions/api/web_request/web_request_api.cc
|
| +++ b/chrome/browser/extensions/api/web_request/web_request_api.cc
|
| @@ -2229,14 +2229,13 @@ bool WebRequestAddEventListener::RunImpl() {
|
| return true;
|
| }
|
|
|
| -void WebRequestEventHandled::CancelWithError(
|
| +void WebRequestEventHandled::RespondWithError(
|
| const std::string& event_name,
|
| const std::string& sub_event_name,
|
| uint64 request_id,
|
| scoped_ptr<ExtensionWebRequestEventRouter::EventResponse> response,
|
| const std::string& error) {
|
| error_ = error;
|
| - response->cancel = true;
|
| ExtensionWebRequestEventRouter::GetInstance()->OnEventHandled(
|
| profile_id(),
|
| extension_id(),
|
| @@ -2274,11 +2273,11 @@ bool WebRequestEventHandled::RunImpl() {
|
| if (value->HasKey("cancel")) {
|
| // Don't allow cancel mixed with other keys.
|
| if (value->size() != 1) {
|
| - CancelWithError(event_name,
|
| - sub_event_name,
|
| - request_id,
|
| - response.Pass(),
|
| - keys::kInvalidBlockingResponse);
|
| + RespondWithError(event_name,
|
| + sub_event_name,
|
| + request_id,
|
| + response.Pass(),
|
| + keys::kInvalidBlockingResponse);
|
| return false;
|
| }
|
|
|
| @@ -2293,12 +2292,12 @@ bool WebRequestEventHandled::RunImpl() {
|
| &new_url_str));
|
| response->new_url = GURL(new_url_str);
|
| if (!response->new_url.is_valid()) {
|
| - CancelWithError(event_name,
|
| - sub_event_name,
|
| - request_id,
|
| - response.Pass(),
|
| - ErrorUtils::FormatErrorMessage(
|
| - keys::kInvalidRedirectUrl, new_url_str));
|
| + RespondWithError(event_name,
|
| + sub_event_name,
|
| + request_id,
|
| + response.Pass(),
|
| + ErrorUtils::FormatErrorMessage(
|
| + keys::kInvalidRedirectUrl, new_url_str));
|
| return false;
|
| }
|
| }
|
| @@ -2308,21 +2307,23 @@ bool WebRequestEventHandled::RunImpl() {
|
| if (hasRequestHeaders || hasResponseHeaders) {
|
| if (hasRequestHeaders && hasResponseHeaders) {
|
| // Allow only one of the keys, not both.
|
| - CancelWithError(event_name,
|
| - sub_event_name,
|
| - request_id,
|
| - response.Pass(),
|
| - keys::kInvalidHeaderKeyCombination);
|
| + RespondWithError(event_name,
|
| + sub_event_name,
|
| + request_id,
|
| + response.Pass(),
|
| + keys::kInvalidHeaderKeyCombination);
|
| return false;
|
| }
|
|
|
| base::ListValue* headers_value = NULL;
|
| + scoped_ptr<net::HttpRequestHeaders> request_headers;
|
| + scoped_ptr<helpers::ResponseHeaders> response_headers;
|
| if (hasRequestHeaders) {
|
| - response->request_headers.reset(new net::HttpRequestHeaders());
|
| + request_headers.reset(new net::HttpRequestHeaders());
|
| EXTENSION_FUNCTION_VALIDATE(value->GetList(keys::kRequestHeadersKey,
|
| &headers_value));
|
| } else {
|
| - response->response_headers.reset(new helpers::ResponseHeaders());
|
| + response_headers.reset(new helpers::ResponseHeaders());
|
| EXTENSION_FUNCTION_VALIDATE(value->GetList(keys::kResponseHeadersKey,
|
| &headers_value));
|
| }
|
| @@ -2336,37 +2337,40 @@ bool WebRequestEventHandled::RunImpl() {
|
| if (!FromHeaderDictionary(header_value, &name, &value)) {
|
| std::string serialized_header;
|
| base::JSONWriter::Write(header_value, &serialized_header);
|
| - CancelWithError(event_name,
|
| - sub_event_name,
|
| - request_id,
|
| - response.Pass(),
|
| - ErrorUtils::FormatErrorMessage(keys::kInvalidHeader,
|
| - serialized_header));
|
| + RespondWithError(event_name,
|
| + sub_event_name,
|
| + request_id,
|
| + response.Pass(),
|
| + ErrorUtils::FormatErrorMessage(keys::kInvalidHeader,
|
| + serialized_header));
|
| return false;
|
| }
|
| if (!helpers::IsValidHeaderName(name)) {
|
| - CancelWithError(event_name,
|
| - sub_event_name,
|
| - request_id,
|
| - response.Pass(),
|
| - keys::kInvalidHeaderName);
|
| + RespondWithError(event_name,
|
| + sub_event_name,
|
| + request_id,
|
| + response.Pass(),
|
| + keys::kInvalidHeaderName);
|
| return false;
|
| }
|
| if (!helpers::IsValidHeaderValue(value)) {
|
| - CancelWithError(event_name,
|
| - sub_event_name,
|
| - request_id,
|
| - response.Pass(),
|
| - ErrorUtils::FormatErrorMessage(
|
| - keys::kInvalidHeaderValue, name));
|
| + RespondWithError(event_name,
|
| + sub_event_name,
|
| + request_id,
|
| + response.Pass(),
|
| + ErrorUtils::FormatErrorMessage(
|
| + keys::kInvalidHeaderValue, name));
|
| return false;
|
| }
|
| if (hasRequestHeaders)
|
| - response->request_headers->SetHeader(name, value);
|
| + request_headers->SetHeader(name, value);
|
| else
|
| - response->response_headers->push_back(helpers::ResponseHeader(name,
|
| - value));
|
| + response_headers->push_back(helpers::ResponseHeader(name, value));
|
| }
|
| + if (hasRequestHeaders)
|
| + response->request_headers.reset(request_headers.release());
|
| + else
|
| + response->response_headers.reset(response_headers.release());
|
| }
|
|
|
| if (value->HasKey(keys::kAuthCredentialsKey)) {
|
|
|