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