Chromium Code Reviews| 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..bac55b2eece7dc0584c9cb146aee381b9c770ccd 100644 |
| --- a/headless/public/util/generic_url_request_job.cc |
| +++ b/headless/public/util/generic_url_request_job.cc |
| @@ -25,6 +25,10 @@ bool IsMethodSafe(const std::string& method) { |
| method == "TRACE"; |
| } |
| +// Keep in sync with X_DevTools_Emulate_Network_Conditions_Client_Id defined in |
|
Sami
2017/02/27 12:39:07
Comment talks about a different header.
alex clarke (OOO till 29th)
2017/02/27 13:51:16
Done.
|
| +// HTTPNames.in. |
| +const char kDevtoolsRequestId[] = "X-DevTools-Request-Id"; |
| + |
| } // namespace |
| GenericURLRequestJob::GenericURLRequestJob( |
| @@ -45,6 +49,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 +76,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 +128,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 +161,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 +204,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 |