Diff
Modified: trunk/Source/WebKit/ChangeLog (239724 => 239725)
--- trunk/Source/WebKit/ChangeLog 2019-01-08 15:18:49 UTC (rev 239724)
+++ trunk/Source/WebKit/ChangeLog 2019-01-08 16:43:14 UTC (rev 239725)
@@ -1,3 +1,20 @@
+2019-01-08 Alex Christensen <[email protected]>
+
+ Always call CompletionHandler in Cache::store
+ https://bugs.webkit.org/show_bug.cgi?id=193237
+
+ Reviewed by Chris Dumez.
+
+ No change in behavior. This just fixes an assertion introduced in r239710 when the speculative loader finishes.
+
+ * NetworkProcess/NetworkResourceLoader.cpp:
+ (WebKit::NetworkResourceLoader::tryStoreAsCacheEntry):
+ * NetworkProcess/cache/NetworkCache.cpp:
+ (WebKit::NetworkCache::Cache::store):
+ * NetworkProcess/cache/NetworkCache.h:
+ * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
+ (WebKit::NetworkCache::SpeculativeLoad::didFinishLoading):
+
2019-01-08 Carlos Garcia Campos <[email protected]>
Unreviewed. Update OptionsGTK.cmake and NEWS for 2.23.2 release
Modified: trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp (239724 => 239725)
--- trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp 2019-01-08 15:18:49 UTC (rev 239724)
+++ trunk/Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp 2019-01-08 16:43:14 UTC (rev 239725)
@@ -794,12 +794,12 @@
if (!m_bufferedDataForCache)
return;
- m_cache->store(m_networkLoad->currentRequest(), m_response, WTFMove(m_bufferedDataForCache), [loader = makeRef(*this)](auto& mappedBody) mutable {
+ m_cache->store(m_networkLoad->currentRequest(), m_response, WTFMove(m_bufferedDataForCache), [loader = makeRef(*this)](auto* mappedBody) mutable {
#if ENABLE(SHAREABLE_RESOURCE)
- if (mappedBody.shareableResourceHandle.isNull())
+ if (!mappedBody || mappedBody->shareableResourceHandle.isNull())
return;
LOG(NetworkCache, "(NetworkProcess) sending DidCacheResource");
- loader->send(Messages::NetworkProcessConnection::DidCacheResource(loader->originalRequest(), mappedBody.shareableResourceHandle, loader->sessionID()));
+ loader->send(Messages::NetworkProcessConnection::DidCacheResource(loader->originalRequest(), mappedBody->shareableResourceHandle, loader->sessionID()));
#endif
});
}
Modified: trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.cpp (239724 => 239725)
--- trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.cpp 2019-01-08 15:18:49 UTC (rev 239724)
+++ trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.cpp 2019-01-08 16:43:14 UTC (rev 239725)
@@ -371,7 +371,7 @@
return std::make_unique<Entry>(makeCacheKey(request), response, redirectRequest, WebCore::collectVaryingRequestHeaders(request, response));
}
-std::unique_ptr<Entry> Cache::store(const WebCore::ResourceRequest& request, const WebCore::ResourceResponse& response, RefPtr<WebCore::SharedBuffer>&& responseData, CompletionHandler<void(MappedBody&)>&& completionHandler)
+std::unique_ptr<Entry> Cache::store(const WebCore::ResourceRequest& request, const WebCore::ResourceResponse& response, RefPtr<WebCore::SharedBuffer>&& responseData, CompletionHandler<void(MappedBody*)>&& completionHandler)
{
ASSERT(responseData);
@@ -391,6 +391,7 @@
if (m_statistics)
m_statistics->recordNotCachingResponse(key, storeDecision);
+ completionHandler(nullptr);
return nullptr;
}
@@ -406,7 +407,7 @@
mappedBody.shareableResource->createHandle(mappedBody.shareableResourceHandle);
}
#endif
- completionHandler(mappedBody);
+ completionHandler(&mappedBody);
LOG(NetworkCache, "(NetworkProcess) stored");
});
Modified: trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.h (239724 => 239725)
--- trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.h 2019-01-08 15:18:49 UTC (rev 239724)
+++ trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.h 2019-01-08 16:43:14 UTC (rev 239725)
@@ -113,7 +113,7 @@
};
using RetrieveCompletionHandler = CompletionHandler<void(std::unique_ptr<Entry>, const RetrieveInfo&)>;
void retrieve(const WebCore::ResourceRequest&, const GlobalFrameID&, RetrieveCompletionHandler&&);
- std::unique_ptr<Entry> store(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, RefPtr<WebCore::SharedBuffer>&&, CompletionHandler<void(MappedBody&)>&&);
+ std::unique_ptr<Entry> store(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, RefPtr<WebCore::SharedBuffer>&&, CompletionHandler<void(MappedBody*)>&&);
std::unique_ptr<Entry> storeRedirect(const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, const WebCore::ResourceRequest& redirectRequest, Optional<Seconds> maxAgeCap);
std::unique_ptr<Entry> update(const WebCore::ResourceRequest&, const GlobalFrameID&, const Entry&, const WebCore::ResourceResponse& validatingResponse);
Modified: trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp (239724 => 239725)
--- trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp 2019-01-08 15:18:49 UTC (rev 239724)
+++ trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp 2019-01-08 16:43:14 UTC (rev 239725)
@@ -121,7 +121,7 @@
if (m_didComplete)
return;
if (!m_cacheEntry && m_bufferedDataForCache) {
- m_cacheEntry = m_cache->store(m_originalRequest, m_response, m_bufferedDataForCache.copyRef(), [](auto& mappedBody) { });
+ m_cacheEntry = m_cache->store(m_originalRequest, m_response, m_bufferedDataForCache.copyRef(), [](auto* mappedBody) { });
// Create a synthetic cache entry if we can't store.
if (!m_cacheEntry && isStatusCodeCacheableByDefault(m_response.httpStatusCode()))
m_cacheEntry = m_cache->makeEntry(m_originalRequest, m_response, WTFMove(m_bufferedDataForCache));
Modified: trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp (239724 => 239725)
--- trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp 2019-01-08 15:18:49 UTC (rev 239724)
+++ trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp 2019-01-08 16:43:14 UTC (rev 239725)
@@ -884,8 +884,10 @@
ASSERT(RunLoop::isMain());
ASSERT(!record.key.isNull());
- if (!m_capacity)
+ if (!m_capacity) {
+ completionHandler(0);
return;
+ }
auto writeOperation = std::make_unique<WriteOperation>(*this, record, WTFMove(mappedBodyHandler), WTFMove(completionHandler));
m_pendingWriteOperations.prepend(WTFMove(writeOperation));