Title: [239725] trunk/Source/WebKit
Revision
239725
Author
[email protected]
Date
2019-01-08 08:43:14 -0800 (Tue, 08 Jan 2019)

Log Message

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

Modified Paths

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));
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to