| 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 0228ae84dcf24ac5f98e8b0c8a60042ada31e9ed..9c7245bc43093991dbe604ac089ce41ac9fae205 100644
|
| --- a/headless/public/util/generic_url_request_job.cc
|
| +++ b/headless/public/util/generic_url_request_job.cc
|
| @@ -48,12 +48,13 @@ void GenericURLRequestJob::SetExtraRequestHeaders(
|
| }
|
|
|
| void GenericURLRequestJob::Start() {
|
| - auto callback = [this](RewriteResult result, const GURL& url) {
|
| + auto callback = [this](RewriteResult result, const GURL& url,
|
| + const std::string& method) {
|
| switch (result) {
|
| case RewriteResult::kAllow:
|
| // Note that we use the rewritten url for selecting cookies.
|
| // Also, rewriting does not affect the request initiator.
|
| - PrepareCookies(url, url::Origin(url));
|
| + PrepareCookies(url, method, url::Origin(url));
|
| break;
|
| case RewriteResult::kDeny:
|
| DispatchStartError(net::ERR_FILE_NOT_FOUND);
|
| @@ -66,14 +67,15 @@ void GenericURLRequestJob::Start() {
|
| }
|
| };
|
|
|
| - if (!delegate_->BlockOrRewriteRequest(request_->url(), request_->referrer(),
|
| - callback)) {
|
| - PrepareCookies(request()->url(),
|
| + if (!delegate_->BlockOrRewriteRequest(request_->url(), request_->method(),
|
| + request_->referrer(), callback)) {
|
| + PrepareCookies(request_->url(), request_->method(),
|
| url::Origin(request_->first_party_for_cookies()));
|
| }
|
| }
|
|
|
| void GenericURLRequestJob::PrepareCookies(const GURL& rewritten_url,
|
| + const std::string& method,
|
| const url::Origin& site_for_cookies) {
|
| net::CookieStore* cookie_store = request_->context()->cookie_store();
|
| net::CookieOptions options;
|
| @@ -98,11 +100,12 @@ void GenericURLRequestJob::PrepareCookies(const GURL& rewritten_url,
|
| cookie_store->GetCookieListWithOptionsAsync(
|
| rewritten_url, options,
|
| base::Bind(&GenericURLRequestJob::OnCookiesAvailable,
|
| - weak_factory_.GetWeakPtr(), rewritten_url));
|
| + weak_factory_.GetWeakPtr(), rewritten_url, method));
|
| }
|
|
|
| void GenericURLRequestJob::OnCookiesAvailable(
|
| const GURL& rewritten_url,
|
| + const std::string& method,
|
| const net::CookieList& cookie_list) {
|
| // TODO(alexclarke): Set user agent.
|
| // Pass cookies, the referrer and any extra headers into the fetch request.
|
| @@ -114,15 +117,16 @@ void GenericURLRequestJob::OnCookiesAvailable(
|
| request_->referrer());
|
|
|
| // The resource may have been supplied in the request.
|
| - const HttpResponse* matched_resource =
|
| - delegate_->MaybeMatchResource(rewritten_url, extra_request_headers_);
|
| + const HttpResponse* matched_resource = delegate_->MaybeMatchResource(
|
| + rewritten_url, method, extra_request_headers_);
|
|
|
| if (matched_resource) {
|
| OnFetchCompleteExtractHeaders(
|
| matched_resource->final_url, matched_resource->http_response_code,
|
| matched_resource->response_data, matched_resource->response_data_size);
|
| } else {
|
| - url_fetcher_->StartFetch(rewritten_url, extra_request_headers_, this);
|
| + url_fetcher_->StartFetch(rewritten_url, method, extra_request_headers_,
|
| + this);
|
| }
|
| }
|
|
|
|
|