Commit aa496d1d authored by Matt Falkenhagen's avatar Matt Falkenhagen Committed by Commit Bot

loader: Make Resource::LastResourceResponse() work when no redirects.

Change-Id: I30dd3f55cc8832512f52062d9b5bff085887f392
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2415918Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Commit-Queue: Matt Falkenhagen <falken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#809636}
parent 67064cf3
...@@ -155,12 +155,12 @@ void ResourceLoadObserverForFrame::DidReceiveResponse( ...@@ -155,12 +155,12 @@ void ResourceLoadObserverForFrame::DidReceiveResponse(
if (RuntimeEnabledFeatures::SignedExchangeSubresourcePrefetchEnabled( if (RuntimeEnabledFeatures::SignedExchangeSubresourcePrefetchEnabled(
document_->GetExecutionContext()) && document_->GetExecutionContext()) &&
resource->LastResourceResponse()) { resource->RedirectChainSize() > 0) {
// See if the outer response (which must be the last response in // See if the outer response (which must be the last response in
// the redirect chain) had provided alternate links for the prefetch. // the redirect chain) had provided alternate links for the prefetch.
alternate_resource_info = alternate_resource_info =
AlternateSignedExchangeResourceInfo::CreateIfValid( AlternateSignedExchangeResourceInfo::CreateIfValid(
resource->LastResourceResponse()->HttpHeaderField( resource->LastResourceResponse().HttpHeaderField(
http_names::kLink), http_names::kLink),
response.HttpHeaderField(http_names::kLink)); response.HttpHeaderField(http_names::kLink));
} }
......
...@@ -477,10 +477,14 @@ const ResourceRequestHead& Resource::LastResourceRequest() const { ...@@ -477,10 +477,14 @@ const ResourceRequestHead& Resource::LastResourceRequest() const {
return redirect_chain_.back().request_; return redirect_chain_.back().request_;
} }
const ResourceResponse* Resource::LastResourceResponse() const { const ResourceResponse& Resource::LastResourceResponse() const {
if (!redirect_chain_.size()) if (!redirect_chain_.size())
return nullptr; return GetResponse();
return &redirect_chain_.back().redirect_response_; return redirect_chain_.back().redirect_response_;
}
size_t Resource::RedirectChainSize() const {
return redirect_chain_.size();
} }
void Resource::SetRevalidatingRequest(const ResourceRequestHead& request) { void Resource::SetRevalidatingRequest(const ResourceRequestHead& request) {
......
...@@ -169,7 +169,9 @@ class PLATFORM_EXPORT Resource : public GarbageCollected<Resource>, ...@@ -169,7 +169,9 @@ class PLATFORM_EXPORT Resource : public GarbageCollected<Resource>,
return resource_request_; return resource_request_;
} }
const ResourceRequestHead& LastResourceRequest() const; const ResourceRequestHead& LastResourceRequest() const;
const ResourceResponse* LastResourceResponse() const; const ResourceResponse& LastResourceResponse() const;
// Returns zero if there are no redirects.
size_t RedirectChainSize() const;
virtual void SetRevalidatingRequest(const ResourceRequestHead&); virtual void SetRevalidatingRequest(const ResourceRequestHead&);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment