|
Lines 221-227
void NetworkResourceLoader::retrieveCacheEntry(const ResourceRequest& request)
a/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp_sec1
|
| 221 |
ASSERT(m_parameters.options.mode == FetchOptions::Mode::Navigate); |
221 |
ASSERT(m_parameters.options.mode == FetchOptions::Mode::Navigate); |
| 222 |
if (auto* session = m_connection->networkProcess().networkSession(sessionID())) { |
222 |
if (auto* session = m_connection->networkProcess().networkSession(sessionID())) { |
| 223 |
if (auto entry = session->prefetchCache().take(request.url())) { |
223 |
if (auto entry = session->prefetchCache().take(request.url())) { |
| 224 |
// FIXME: Deal with credentials (https://bugs.webkit.org/show_bug.cgi?id=200000) |
|
|
| 225 |
if (!entry->redirectRequest.isNull()) { |
224 |
if (!entry->redirectRequest.isNull()) { |
| 226 |
auto cacheEntry = m_cache->makeRedirectEntry(request, entry->response, entry->redirectRequest); |
225 |
auto cacheEntry = m_cache->makeRedirectEntry(request, entry->response, entry->redirectRequest); |
| 227 |
retrieveCacheEntryInternal(WTFMove(cacheEntry), ResourceRequest { request }); |
226 |
retrieveCacheEntryInternal(WTFMove(cacheEntry), ResourceRequest { request }); |
|
Lines 370-375
void NetworkResourceLoader::abort()
a/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp_sec2
|
| 370 |
return; |
369 |
return; |
| 371 |
} |
370 |
} |
| 372 |
|
371 |
|
|
|
372 |
if (isCrossOriginPrefetch()) { |
| 373 |
m_connection->transferOngoingCrossOriginPrefetchLoad(*this); |
| 374 |
return; |
| 375 |
} |
| 376 |
|
| 373 |
if (m_networkLoad) { |
377 |
if (m_networkLoad) { |
| 374 |
if (canUseCache(m_networkLoad->currentRequest())) { |
378 |
if (canUseCache(m_networkLoad->currentRequest())) { |
| 375 |
// We might already have used data from this incomplete load. Ensure older versions don't remain in the cache after cancel. |
379 |
// We might already have used data from this incomplete load. Ensure older versions don't remain in the cache after cancel. |
|
Lines 500-507
void NetworkResourceLoader::didReceiveResponse(ResourceResponse&& receivedRespon
a/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp_sec3
|
| 500 |
return completionHandler(PolicyAction::Use); |
504 |
return completionHandler(PolicyAction::Use); |
| 501 |
} |
505 |
} |
| 502 |
|
506 |
|
| 503 |
if (isCrossOriginPrefetch()) |
507 |
if (isCrossOriginPrefetch()) { |
|
|
508 |
if (response.httpHeaderField(HTTPHeaderName::Vary).contains("Cookie")) { |
| 509 |
abort(); |
| 510 |
return completionHandler(PolicyAction::Ignore); |
| 511 |
} |
| 504 |
return completionHandler(PolicyAction::Use); |
512 |
return completionHandler(PolicyAction::Use); |
|
|
513 |
} |
| 505 |
|
514 |
|
| 506 |
// We wait to receive message NetworkResourceLoader::ContinueDidReceiveResponse before continuing a load for |
515 |
// We wait to receive message NetworkResourceLoader::ContinueDidReceiveResponse before continuing a load for |
| 507 |
// a main resource because the embedding client must decide whether to allow the load. |
516 |
// a main resource because the embedding client must decide whether to allow the load. |
|
Lines 837-844
void NetworkResourceLoader::tryStoreAsCacheEntry()
a/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp_sec4
|
| 837 |
return; |
846 |
return; |
| 838 |
|
847 |
|
| 839 |
if (isCrossOriginPrefetch()) { |
848 |
if (isCrossOriginPrefetch()) { |
| 840 |
if (auto* session = m_connection->networkProcess().networkSession(sessionID())) |
849 |
m_connection->prefetchFinished(sessionID(), m_networkLoad->currentRequest().url(), WTFMove(m_response), WTFMove(m_bufferedDataForCache)); |
| 841 |
session->prefetchCache().store(m_networkLoad->currentRequest().url(), WTFMove(m_response), WTFMove(m_bufferedDataForCache)); |
|
|
| 842 |
return; |
850 |
return; |
| 843 |
} |
851 |
} |
| 844 |
m_cache->store(m_networkLoad->currentRequest(), m_response, WTFMove(m_bufferedDataForCache), [loader = makeRef(*this)](auto& mappedBody) mutable { |
852 |
m_cache->store(m_networkLoad->currentRequest(), m_response, WTFMove(m_bufferedDataForCache), [loader = makeRef(*this)](auto& mappedBody) mutable { |
|
Lines 1184-1190
void NetworkResourceLoader::logSlowCacheRetrieveIfNeeded(const NetworkCache::Cac
a/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp_sec5
|
| 1184 |
bool NetworkResourceLoader::isCrossOriginPrefetch() const |
1192 |
bool NetworkResourceLoader::isCrossOriginPrefetch() const |
| 1185 |
{ |
1193 |
{ |
| 1186 |
auto& request = originalRequest(); |
1194 |
auto& request = originalRequest(); |
| 1187 |
return request.httpHeaderField(HTTPHeaderName::Purpose) == "prefetch" && !m_parameters.sourceOrigin->canRequest(request.url()); |
1195 |
return request.isPrefetch() && !m_parameters.sourceOrigin->canRequest(request.url()); |
| 1188 |
} |
1196 |
} |
| 1189 |
|
1197 |
|
| 1190 |
} // namespace WebKit |
1198 |
} // namespace WebKit |