Chromium Code Reviews| 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 c9fb59c24c2d89ae18c2be77d7093e2e95be6a1f..522431b2c623d3c7f6599c4e15351aeaf9efb60f 100644 |
| --- a/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
| +++ b/third_party/WebKit/Source/platform/loader/fetch/ResourceFetcher.cpp |
| @@ -297,18 +297,18 @@ void ResourceFetcher::requestLoadStarted(unsigned long identifier, |
| const FetchRequest& request, |
| ResourceLoadStartType type, |
| bool isStaticData) { |
| - if (type == ResourceLoadingFromCache && |
| + if (type == ResourceLoadStartType::kFromMemoryCache && |
| 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); |
| } |
| if (isStaticData) |
| return; |
| - if (type == ResourceLoadingFromCache && !resource->stillNeedsLoad() && |
| + if (type == ResourceLoadStartType::kFromMemoryCache && |
| + !resource->stillNeedsLoad() && |
| !m_validatedURLs.contains(request.resourceRequest().url())) { |
| // Resources loaded from memory cache should be reported the first time |
| // they're used. |
| @@ -329,6 +329,37 @@ void ResourceFetcher::requestLoadStarted(unsigned long identifier, |
| m_validatedURLs.insert(request.resourceRequest().url()); |
| } |
| +void ResourceFetcher::didLoadResourceFromMemoryCache( |
| + unsigned long identifier, |
| + Resource* resource, |
| + const FetchRequest& request) { |
|
Nate Chapin
2017/03/22 19:02:02
Nit: take const ResourceRequest& instead of const
kinuko
2017/03/24 13:51:51
Done.
|
| + context().dispatchDidLoadResourceFromMemoryCache( |
| + identifier, request.resourceRequest(), resource->response()); |
|
Nate Chapin
2017/03/22 19:02:02
We're sending a different ResoruceRequest for disp
kinuko
2017/03/24 13:51:51
Done.
|
| + { |
| + // dispatchWillSendRequest can modify resourceRequest, while we don't |
| + // really use the modified request here. |
| + // TODO(https://crbug.com/632580): Avoid allowing dispatchWillSendRequest |
| + // to modify requests. |
| + ResourceRequest resourceRequest(resource->url()); |
| + resourceRequest.setFrameType(request.resourceRequest().frameType()); |
| + resourceRequest.setRequestContext( |
| + request.resourceRequest().requestContext()); |
| + context().dispatchWillSendRequest(identifier, resourceRequest, |
| + ResourceResponse() /* redirects */, |
| + resource->options().initiatorInfo); |
| + } |
| + context().dispatchDidReceiveResponse( |
| + identifier, resource->response(), request.resourceRequest().frameType(), |
| + request.resourceRequest().requestContext(), resource, |
| + ResourceLoadStartType::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()); |
| @@ -608,10 +639,10 @@ 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 == Use ? ResourceLoadStartType::kFromMemoryCache |
| + : ResourceLoadStartType::kNotFromMemoryCache, |
| + isStaticData); |
| m_documentResources.set( |
| MemoryCache::removeFragmentIdentifierIfNeeded(request.url()), resource); |
| @@ -1502,7 +1533,7 @@ void ResourceFetcher::emulateLoadStartedForInspector( |
| SecurityViolationReportingPolicy::Report, |
| request.getOriginRestriction()); |
| requestLoadStarted(resource->identifier(), resource, request, |
| - ResourceLoadingFromCache); |
| + ResourceLoadStartType::kFromMemoryCache); |
| } |
| ResourceFetcher::DeadResourceStatsRecorder::DeadResourceStatsRecorder() |