Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(210)

Unified Diff: third_party/WebKit/Source/core/loader/FrameFetchContext.cpp

Issue 2751143003: Move FrameFetchContext::dispatchDidLoadResourceFromMemoryCache logic into ResourceFetcher (Closed)
Patch Set: addressed comments Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/loader/FrameFetchContext.cpp
diff --git a/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp b/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp
index 34ec8253a454e9adec3fa4eefa0c86c31fbef9d1..be6fa4cabfe3196fdd62321606047fd919f40dc7 100644
--- a/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp
+++ b/third_party/WebKit/Source/core/loader/FrameFetchContext.cpp
@@ -487,10 +487,50 @@ void FrameFetchContext::dispatchDidReceiveResponse(
const ResourceResponse& response,
WebURLRequest::FrameType frameType,
WebURLRequest::RequestContext requestContext,
- Resource* resource) {
- dispatchDidReceiveResponseInternal(identifier, response, frameType,
- requestContext, resource,
- LinkLoader::LoadResourcesAndPreconnect);
+ Resource* resource,
+ ResourceResponseType responseType) {
+ if (responseType == ResourceResponseType::kFromMemoryCache) {
+ // Note: probe::willSendRequest needs to precede before this probe method.
+ probe::markResourceAsCached(frame(), identifier);
+ if (response.isNull())
+ return;
+ }
+
+ MixedContentChecker::checkMixedPrivatePublic(frame(),
+ response.remoteIPAddress());
+ LinkLoader::CanLoadResources resourceLoadingPolicy =
+ responseType == ResourceResponseType::kFromMemoryCache
+ ? LinkLoader::DoNotLoadResources
+ : LinkLoader::LoadResourcesAndPreconnect;
+ if (m_documentLoader &&
+ m_documentLoader ==
+ m_documentLoader->frame()->loader().provisionalDocumentLoader()) {
+ FrameClientHintsPreferencesContext hintsContext(frame());
+ m_documentLoader->clientHintsPreferences()
+ .updateFromAcceptClientHintsHeader(
+ response.httpHeaderField(HTTPNames::Accept_CH), &hintsContext);
+ // When response is received with a provisional docloader, the resource
+ // haven't committed yet, and we cannot load resources, only preconnect.
+ resourceLoadingPolicy = LinkLoader::DoNotLoadResources;
+ }
+ LinkLoader::loadLinksFromHeader(
+ response.httpHeaderField(HTTPNames::Link), response.url(),
+ frame()->document(), NetworkHintsInterfaceImpl(), resourceLoadingPolicy,
+ LinkLoader::LoadAll, nullptr);
+
+ if (response.hasMajorCertificateErrors()) {
+ MixedContentChecker::handleCertificateError(frame(), response, frameType,
+ requestContext);
+ }
+
+ frame()->loader().progress().incrementProgress(identifier, response);
+ localFrameClient()->dispatchDidReceiveResponse(response);
+ DocumentLoader* documentLoader = masterDocumentLoader();
+ probe::didReceiveResourceResponse(frame(), identifier, documentLoader,
+ response, resource);
+ // It is essential that inspector gets resource response BEFORE console.
+ frame()->console().reportResourceResponseReceived(documentLoader, identifier,
+ response);
}
void FrameFetchContext::dispatchDidReceiveData(unsigned long identifier,
@@ -540,28 +580,10 @@ void FrameFetchContext::dispatchDidFail(unsigned long identifier,
void FrameFetchContext::dispatchDidLoadResourceFromMemoryCache(
unsigned long identifier,
- Resource* resource,
- WebURLRequest::FrameType frameType,
- WebURLRequest::RequestContext requestContext) {
- ResourceRequest request(resource->url());
- request.setFrameType(frameType);
- request.setRequestContext(requestContext);
- localFrameClient()->dispatchDidLoadResourceFromMemoryCache(
- request, resource->response());
- dispatchWillSendRequest(identifier, request, ResourceResponse(),
- resource->options().initiatorInfo);
- probe::markResourceAsCached(frame(), identifier);
- if (!resource->response().isNull()) {
- dispatchDidReceiveResponseInternal(identifier, resource->response(),
- frameType, requestContext, resource,
- LinkLoader::DoNotLoadResources);
- }
-
- if (resource->encodedSize() > 0)
- dispatchDidReceiveData(identifier, 0, resource->encodedSize());
-
- dispatchDidFinishLoading(identifier, 0, 0,
- resource->response().decodedBodyLength());
+ const ResourceRequest& resourceRequest,
+ const ResourceResponse& resourceResponse) {
+ localFrameClient()->dispatchDidLoadResourceFromMemoryCache(resourceRequest,
+ resourceResponse);
}
bool FrameFetchContext::shouldLoadNewResource(Resource::Type type) const {
@@ -1034,46 +1056,6 @@ RefPtr<WebTaskRunner> FrameFetchContext::loadingTaskRunner() const {
return frame()->frameScheduler()->loadingTaskRunner();
}
-void FrameFetchContext::dispatchDidReceiveResponseInternal(
- unsigned long identifier,
- const ResourceResponse& response,
- WebURLRequest::FrameType frameType,
- WebURLRequest::RequestContext requestContext,
- Resource* resource,
- LinkLoader::CanLoadResources resourceLoadingPolicy) {
- MixedContentChecker::checkMixedPrivatePublic(frame(),
- response.remoteIPAddress());
- if (m_documentLoader &&
- m_documentLoader ==
- m_documentLoader->frame()->loader().provisionalDocumentLoader()) {
- FrameClientHintsPreferencesContext hintsContext(frame());
- m_documentLoader->clientHintsPreferences()
- .updateFromAcceptClientHintsHeader(
- response.httpHeaderField(HTTPNames::Accept_CH), &hintsContext);
- // When response is received with a provisional docloader, the resource
- // haven't committed yet, and we cannot load resources, only preconnect.
- resourceLoadingPolicy = LinkLoader::DoNotLoadResources;
- }
- LinkLoader::loadLinksFromHeader(
- response.httpHeaderField(HTTPNames::Link), response.url(),
- frame()->document(), NetworkHintsInterfaceImpl(), resourceLoadingPolicy,
- LinkLoader::LoadAll, nullptr);
-
- if (response.hasMajorCertificateErrors()) {
- MixedContentChecker::handleCertificateError(frame(), response, frameType,
- requestContext);
- }
-
- frame()->loader().progress().incrementProgress(identifier, response);
- localFrameClient()->dispatchDidReceiveResponse(response);
- DocumentLoader* documentLoader = masterDocumentLoader();
- probe::didReceiveResourceResponse(frame(), identifier, documentLoader,
- response, resource);
- // It is essential that inspector gets resource response BEFORE console.
- frame()->console().reportResourceResponseReceived(documentLoader, identifier,
- response);
-}
-
DEFINE_TRACE(FrameFetchContext) {
visitor->trace(m_document);
visitor->trace(m_documentLoader);

Powered by Google App Engine
This is Rietveld 408576698