Index: third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
diff --git a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
index 347855020217e6cc2a729bdee30dadeb5848f728..69b6d57637b078222a9683b5498623af263a940a 100644 |
--- a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
+++ b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
@@ -301,20 +301,19 @@ static const int kMaxValidatedURLsSize = 10000; |
void ResourceFetcher::requestLoadStarted(unsigned long identifier, |
Resource* resource, |
const FetchRequest& request, |
- ResourceLoadStartType type, |
+ RevalidationPolicy policy, |
bool isStaticData) { |
- if (type == ResourceLoadingFromCache && |
- resource->getStatus() == ResourceStatus::Cached && |
+ if (policy == Use && resource->getStatus() == ResourceStatus::Cached && |
!m_validatedURLs.contains(resource->url())) { |
- context().dispatchDidLoadResourceFromMemoryCache( |
- identifier, resource, request.resourceRequest().frameType(), |
- request.resourceRequest().requestContext()); |
+ // Loaded from MemoryCache. |
+ didLoadResourceFromMemoryCache(identifier, resource, |
+ request.resourceRequest()); |
} |
if (isStaticData) |
return; |
- if (type == ResourceLoadingFromCache && !resource->stillNeedsLoad() && |
+ if (policy == Use && !resource->stillNeedsLoad() && |
!m_validatedURLs.contains(request.resourceRequest().url())) { |
// Resources loaded from memory cache should be reported the first time |
// they're used. |
@@ -335,6 +334,30 @@ void ResourceFetcher::requestLoadStarted(unsigned long identifier, |
m_validatedURLs.insert(request.resourceRequest().url()); |
} |
+void ResourceFetcher::didLoadResourceFromMemoryCache( |
+ unsigned long identifier, |
+ Resource* resource, |
+ const ResourceRequest& originalResourceRequest) { |
+ ResourceRequest resourceRequest(resource->url()); |
+ resourceRequest.setFrameType(originalResourceRequest.frameType()); |
+ resourceRequest.setRequestContext(originalResourceRequest.requestContext()); |
+ context().dispatchDidLoadResourceFromMemoryCache(identifier, resourceRequest, |
+ resource->response()); |
+ context().dispatchWillSendRequest(identifier, resourceRequest, |
+ ResourceResponse() /* redirects */, |
+ resource->options().initiatorInfo); |
+ context().dispatchDidReceiveResponse( |
+ identifier, resource->response(), resourceRequest.frameType(), |
+ resourceRequest.requestContext(), resource, |
+ FetchContext::ResourceResponseType::kFromMemoryCache); |
+ |
+ if (resource->encodedSize() > 0) |
+ context().dispatchDidReceiveData(identifier, 0, resource->encodedSize()); |
+ |
+ context().dispatchDidFinishLoading(identifier, 0, 0, |
+ resource->response().decodedBodyLength()); |
+} |
+ |
static std::unique_ptr<TracedValue> urlForTraceEvent(const KURL& url) { |
std::unique_ptr<TracedValue> value = TracedValue::create(); |
value->setString("url", url.getString()); |
@@ -618,10 +641,7 @@ Resource* ResourceFetcher::requestResource( |
// If only the fragment identifiers differ, it is the same resource. |
DCHECK(equalIgnoringFragmentIdentifier(resource->url(), request.url())); |
- requestLoadStarted( |
- identifier, resource, request, |
- policy == Use ? ResourceLoadingFromCache : ResourceLoadingFromNetwork, |
- isStaticData); |
+ requestLoadStarted(identifier, resource, request, policy, isStaticData); |
m_documentResources.set( |
MemoryCache::removeFragmentIdentifierIfNeeded(request.url()), resource); |
@@ -1501,8 +1521,7 @@ void ResourceFetcher::emulateLoadStartedForInspector( |
resource->lastResourceRequest().url(), request.options(), |
SecurityViolationReportingPolicy::Report, |
request.getOriginRestriction()); |
- requestLoadStarted(resource->identifier(), resource, request, |
- ResourceLoadingFromCache); |
+ requestLoadStarted(resource->identifier(), resource, request, Use); |
} |
ResourceFetcher::DeadResourceStatsRecorder::DeadResourceStatsRecorder() |