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

Unified Diff: chrome/browser/extensions/api/web_request/web_request_api.cc

Issue 154473002: Support redirectUrl at onHeadersReceived in WebRequest / DWR API (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased Created 6 years, 10 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/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 cb7a821dcdbc4f0e811d3cef0c8df2d7af90fcd4..867acb25e53c90dd8fff5982ecd5f9a7c4db8f4a 100644
--- a/chrome/browser/extensions/api/web_request/web_request_api.cc
+++ b/chrome/browser/extensions/api/web_request/web_request_api.cc
@@ -495,7 +495,7 @@ struct ExtensionWebRequestEventRouter::BlockedRequest {
net::CompletionCallback callback;
// If non-empty, this contains the new URL that the request will redirect to.
- // Only valid for OnBeforeRequest.
+ // Only valid for OnBeforeRequest and OnHeadersReceived.
GURL* new_url;
// The request headers that will be issued along with this request. Only valid
@@ -827,6 +827,7 @@ int ExtensionWebRequestEventRouter::OnHeadersReceived(
InfoMap* extension_info_map,
net::URLRequest* request,
const net::CompletionCallback& callback,
+ GURL* new_url,
const net::HttpResponseHeaders* original_response_headers,
scoped_refptr<net::HttpResponseHeaders>* override_response_headers) {
// We hide events from the system context as well as sensitive requests.
@@ -874,6 +875,7 @@ int ExtensionWebRequestEventRouter::OnHeadersReceived(
blocked_requests_[request->identifier()].request = request;
blocked_requests_[request->identifier()].callback = callback;
blocked_requests_[request->identifier()].net_log = &request->net_log();
+ blocked_requests_[request->identifier()].new_url = new_url;
blocked_requests_[request->identifier()].override_response_headers =
override_response_headers;
blocked_requests_[request->identifier()].original_response_headers =
@@ -1555,7 +1557,7 @@ helpers::EventResponseDelta* CalculateDelta(
response->response_headers.get();
return helpers::CalculateOnHeadersReceivedDelta(
response->extension_id, response->extension_install_time,
- response->cancel, old_headers, new_headers);
+ response->cancel, response->new_url, old_headers, new_headers);
}
case ExtensionWebRequestEventRouter::kOnAuthRequired:
return helpers::CalculateOnAuthRequiredDelta(
@@ -1843,6 +1845,7 @@ int ExtensionWebRequestEventRouter::ExecuteDeltas(
CHECK(!blocked_request.callback.is_null());
helpers::MergeOnHeadersReceivedResponses(
blocked_request.response_deltas,
+ blocked_request.new_url,
blocked_request.original_response_headers.get(),
blocked_request.override_response_headers,
&warnings,

Powered by Google App Engine
This is Rietveld 408576698