| 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()
|
|
|