Index: headless/public/util/generic_url_request_job.cc |
diff --git a/headless/public/util/generic_url_request_job.cc b/headless/public/util/generic_url_request_job.cc |
index a82925d9623c5a77dbcb681a2b00c95c162aecfc..7918dec7836afcb09ae919ffcad04584f3c20cd3 100644 |
--- a/headless/public/util/generic_url_request_job.cc |
+++ b/headless/public/util/generic_url_request_job.cc |
@@ -25,6 +25,9 @@ bool IsMethodSafe(const std::string& method) { |
method == "TRACE"; |
} |
+// Keep in sync with X_DevTools_Request_Id defined in HTTPNames.json5. |
+const char kDevtoolsRequestId[] = "X-DevTools-Request-Id"; |
+ |
} // namespace |
GenericURLRequestJob::GenericURLRequestJob( |
@@ -45,6 +48,11 @@ GenericURLRequestJob::~GenericURLRequestJob() = default; |
void GenericURLRequestJob::SetExtraRequestHeaders( |
const net::HttpRequestHeaders& headers) { |
extra_request_headers_ = headers; |
+ |
+ if (extra_request_headers_.GetHeader(kDevtoolsRequestId, |
+ &devtools_request_id_)) { |
+ extra_request_headers_.RemoveHeader(kDevtoolsRequestId); |
+ } |
} |
void GenericURLRequestJob::Start() { |
@@ -67,7 +75,8 @@ void GenericURLRequestJob::Start() { |
} |
}; |
- if (!delegate_->BlockOrRewriteRequest(request_->url(), request_->method(), |
+ if (!delegate_->BlockOrRewriteRequest(request_->url(), devtools_request_id_, |
+ request_->method(), |
request_->referrer(), callback)) { |
PrepareCookies(request_->url(), request_->method(), |
url::Origin(request_->first_party_for_cookies())); |
@@ -118,7 +127,7 @@ void GenericURLRequestJob::OnCookiesAvailable( |
// The resource may have been supplied in the request. |
const HttpResponse* matched_resource = delegate_->MaybeMatchResource( |
- rewritten_url, method, extra_request_headers_); |
+ rewritten_url, devtools_request_id_, method, extra_request_headers_); |
if (matched_resource) { |
OnFetchCompleteExtractHeaders( |
@@ -151,7 +160,8 @@ void GenericURLRequestJob::OnFetchComplete( |
std::string mime_type; |
GetMimeType(&mime_type); |
- delegate_->OnResourceLoadComplete(final_url, mime_type, http_response_code); |
+ delegate_->OnResourceLoadComplete(final_url, devtools_request_id_, mime_type, |
+ http_response_code); |
} |
int GenericURLRequestJob::ReadRawData(net::IOBuffer* buf, int buf_size) { |
@@ -193,4 +203,46 @@ void GenericURLRequestJob::GetLoadTimingInfo( |
load_timing_info->receive_headers_end = response_time_; |
} |
+bool GenericURLRequestJob::Delegate::BlockOrRewriteRequest( |
+ const GURL& url, |
+ const std::string& devtools_id, |
+ const std::string& method, |
+ const std::string& referrer, |
+ RewriteCallback callback) { |
+ return BlockOrRewriteRequest(url, method, referrer, callback); |
+} |
+ |
+bool GenericURLRequestJob::Delegate::BlockOrRewriteRequest( |
+ const GURL& url, |
+ const std::string& method, |
+ const std::string& referrer, |
+ RewriteCallback callback) { |
+ return false; |
+} |
+ |
+const GenericURLRequestJob::HttpResponse* |
+GenericURLRequestJob::Delegate::MaybeMatchResource( |
+ const GURL& url, |
+ const std::string& devtools_id, |
+ const std::string& method, |
+ const net::HttpRequestHeaders& request_headers) { |
+ return MaybeMatchResource(url, method, request_headers); |
+} |
+ |
+const GenericURLRequestJob::HttpResponse* |
+GenericURLRequestJob::Delegate::MaybeMatchResource( |
+ const GURL& url, |
+ const std::string& method, |
+ const net::HttpRequestHeaders& request_headers) { |
+ return nullptr; |
+} |
+ |
+void GenericURLRequestJob::Delegate::OnResourceLoadComplete( |
+ const GURL& final_url, |
+ const std::string& devtools_id, |
+ const std::string& mime_type, |
+ int http_response_code) { |
+ OnResourceLoadComplete(final_url, mime_type, http_response_code); |
+} |
+ |
} // namespace headless |