Title: [245715] trunk
Revision
245715
Author
[email protected]
Date
2019-05-23 14:15:33 -0700 (Thu, 23 May 2019)

Log Message

CacheStorageConnection callbacks should be completed on network connection close
https://bugs.webkit.org/show_bug.cgi?id=195757

Reviewed by Alex Christensen.

Source/WebCore:

Move HashMap-based callbacks to WorkerCacheStorageConnection.
Make CacheStorageConnection default API to implement use callbacks.
This is used by WebKit layer to do AsyncReply IPC.

Move DOMCacheEngine callbacks to CompletionHandler.

Test: http/wpt/cache-storage/cache-storage-networkprocess-crash.html

* Modules/cache/CacheStorageConnection.cpp:
* Modules/cache/CacheStorageConnection.h:
(WebCore::CacheStorageConnection::engineRepresentation):
* Modules/cache/DOMCacheEngine.h:
* Modules/cache/WorkerCacheStorageConnection.cpp:
(WebCore::recordsDataFromRecords):
(WebCore::recordsDataOrErrorFromRecords):
(WebCore::recordsFromRecordsData):
(WebCore::recordsOrErrorFromRecordsData):
(WebCore::WorkerCacheStorageConnection::open):
(WebCore::WorkerCacheStorageConnection::openOrRemoveCompleted):
(WebCore::WorkerCacheStorageConnection::remove):
(WebCore::WorkerCacheStorageConnection::retrieveCaches):
(WebCore::WorkerCacheStorageConnection::retrieveCachesCompleted):
(WebCore::WorkerCacheStorageConnection::retrieveRecords):
(WebCore::WorkerCacheStorageConnection::retrieveRecordsCompleted):
(WebCore::WorkerCacheStorageConnection::batchDeleteOperation):
(WebCore::WorkerCacheStorageConnection::deleteRecordsCompleted):
(WebCore::WorkerCacheStorageConnection::batchPutOperation):
(WebCore::WorkerCacheStorageConnection::putRecordsCompleted):
(WebCore::WorkerCacheStorageConnection::reference):
(WebCore::WorkerCacheStorageConnection::dereference):
(WebCore::WorkerCacheStorageConnection::clearPendingRequests):
* Modules/cache/WorkerCacheStorageConnection.h:
* page/CacheStorageProvider.h:
(WebCore::CacheStorageProvider::createCacheStorageConnection):

Source/WebKit:

Update according new WebCore CacheStorageConnection interface.
Use Async IPC replies so that the completion handlers are called on network crash.

Allow to have specific error handling in case of cancelled reply or badly decoded message.
This allows to reject the corresponding JS promise.

* CMakeLists.txt:
* DerivedSources-output.xcfilelist:
* DerivedSources.make:
* NetworkProcess/cache/CacheStorageEngine.cpp:
(WebKit::CacheStorage::Engine::clearMemoryRepresentation):
* NetworkProcess/cache/CacheStorageEngineCaches.cpp:
(WebKit::CacheStorage::Caches::requestSpace):
(WebKit::CacheStorage::Caches::writeRecord):
* NetworkProcess/cache/CacheStorageEngineConnection.cpp:
(WebKit::CacheStorageEngineConnection::open):
(WebKit::CacheStorageEngineConnection::remove):
(WebKit::CacheStorageEngineConnection::caches):
(WebKit::CacheStorageEngineConnection::retrieveRecords):
(WebKit::CacheStorageEngineConnection::deleteMatchingRecords):
(WebKit::CacheStorageEngineConnection::putRecords):
* NetworkProcess/cache/CacheStorageEngineConnection.h:
(IPC::AsyncReplyError<WebCore::DOMCacheEngine::CacheIdentifierOrError>::create):
(IPC::AsyncReplyError<WebCore::DOMCacheEngine::RecordIdentifiersOrError>::create):
(IPC::AsyncReplyError<WebCore::DOMCacheEngine::CacheInfosOrError>::create):
(IPC::AsyncReplyError<WebCore::DOMCacheEngine::RecordsOrError>::create):
* NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
* Platform/IPC/ArgumentCoders.h:
* Platform/IPC/Connection.h:
(IPC::AsyncReplyError::create):
* Scripts/webkit/messages.py:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/Cache/WebCacheStorageConnection.cpp:
(WebKit::WebCacheStorageConnection::open):
(WebKit::WebCacheStorageConnection::remove):
(WebKit::WebCacheStorageConnection::retrieveCaches):
(WebKit::WebCacheStorageConnection::retrieveRecords):
(WebKit::WebCacheStorageConnection::batchDeleteOperation):
(WebKit::WebCacheStorageConnection::batchPutOperation):
(WebKit::WebCacheStorageConnection::engineRepresentation):
* WebProcess/Cache/WebCacheStorageConnection.h:
* WebProcess/Cache/WebCacheStorageConnection.messages.in: Removed.
* WebProcess/Network/NetworkProcessConnection.cpp:
(WebKit::NetworkProcessConnection::didReceiveMessage):

LayoutTests:

* http/wpt/cache-storage/cache-storage-networkprocess-crash-expected.txt: Added.
* http/wpt/cache-storage/cache-storage-networkprocess-crash.html: Added.

Modified Paths

Added Paths

Removed Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (245714 => 245715)


--- trunk/LayoutTests/ChangeLog	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/LayoutTests/ChangeLog	2019-05-23 21:15:33 UTC (rev 245715)
@@ -1,5 +1,15 @@
 2019-05-23  Youenn Fablet  <[email protected]>
 
+        CacheStorageConnection callbacks should be completed on network connection close
+        https://bugs.webkit.org/show_bug.cgi?id=195757
+
+        Reviewed by Alex Christensen.
+
+        * http/wpt/cache-storage/cache-storage-networkprocess-crash-expected.txt: Added.
+        * http/wpt/cache-storage/cache-storage-networkprocess-crash.html: Added.
+
+2019-05-23  Youenn Fablet  <[email protected]>
+
         Multiple videos (with audios) with autoplay & playinline not working. Only one video play at a time.
         https://bugs.webkit.org/show_bug.cgi?id=193312
         <rdar://problem/47189864>

Added: trunk/LayoutTests/http/wpt/cache-storage/cache-storage-networkprocess-crash-expected.txt (0 => 245715)


--- trunk/LayoutTests/http/wpt/cache-storage/cache-storage-networkprocess-crash-expected.txt	                        (rev 0)
+++ trunk/LayoutTests/http/wpt/cache-storage/cache-storage-networkprocess-crash-expected.txt	2019-05-23 21:15:33 UTC (rev 245715)
@@ -0,0 +1,8 @@
+CONSOLE MESSAGE: Cache API operation failed: Internal error
+CONSOLE MESSAGE: Cache API operation failed: Internal error
+CONSOLE MESSAGE: Cache API operation failed: Internal error
+CONSOLE MESSAGE: Cache API operation failed: Internal error
+CONSOLE MESSAGE: Cache API operation failed: Internal error
+
+PASS Pending cache operation on network process crash 
+

Added: trunk/LayoutTests/http/wpt/cache-storage/cache-storage-networkprocess-crash.html (0 => 245715)


--- trunk/LayoutTests/http/wpt/cache-storage/cache-storage-networkprocess-crash.html	                        (rev 0)
+++ trunk/LayoutTests/http/wpt/cache-storage/cache-storage-networkprocess-crash.html	2019-05-23 21:15:33 UTC (rev 245715)
@@ -0,0 +1,27 @@
+<!DOCTYPE html>
+<html>
+<head>
+<title>Cache Storage: network process crash</title>
+<script src=""
+<script src=""
+</head>
+<body>
+<script>
+promise_test(async test => {
+    const cache = await self.caches.open("test1");
+    const response1Mo = new Response(new ArrayBuffer(1024 * 1024));
+    if (!window.testRunner)
+        return Promise.reject("Requires internals API");
+    testRunner.terminateNetworkProcess();
+    return promise_rejects(test, new TypeError, Promise.all([
+        cache.put("1Mo1", response1Mo.clone()),
+        cache.put("1Mo2", response1Mo.clone()),
+        cache.put("1Mo3", response1Mo.clone()),
+        cache.put("1Mo4", response1Mo.clone()),
+        cache.put("1Mo5", response1Mo.clone()),
+    ]));
+}, "Pending cache operation on network process crash");
+</script>
+</body>
+</html>
+

Modified: trunk/Source/WebCore/ChangeLog (245714 => 245715)


--- trunk/Source/WebCore/ChangeLog	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebCore/ChangeLog	2019-05-23 21:15:33 UTC (rev 245715)
@@ -1,5 +1,47 @@
 2019-05-23  Youenn Fablet  <[email protected]>
 
+        CacheStorageConnection callbacks should be completed on network connection close
+        https://bugs.webkit.org/show_bug.cgi?id=195757
+
+        Reviewed by Alex Christensen.
+
+        Move HashMap-based callbacks to WorkerCacheStorageConnection.
+        Make CacheStorageConnection default API to implement use callbacks.
+        This is used by WebKit layer to do AsyncReply IPC.
+
+        Move DOMCacheEngine callbacks to CompletionHandler.
+
+        Test: http/wpt/cache-storage/cache-storage-networkprocess-crash.html
+
+        * Modules/cache/CacheStorageConnection.cpp:
+        * Modules/cache/CacheStorageConnection.h:
+        (WebCore::CacheStorageConnection::engineRepresentation):
+        * Modules/cache/DOMCacheEngine.h:
+        * Modules/cache/WorkerCacheStorageConnection.cpp:
+        (WebCore::recordsDataFromRecords):
+        (WebCore::recordsDataOrErrorFromRecords):
+        (WebCore::recordsFromRecordsData):
+        (WebCore::recordsOrErrorFromRecordsData):
+        (WebCore::WorkerCacheStorageConnection::open):
+        (WebCore::WorkerCacheStorageConnection::openOrRemoveCompleted):
+        (WebCore::WorkerCacheStorageConnection::remove):
+        (WebCore::WorkerCacheStorageConnection::retrieveCaches):
+        (WebCore::WorkerCacheStorageConnection::retrieveCachesCompleted):
+        (WebCore::WorkerCacheStorageConnection::retrieveRecords):
+        (WebCore::WorkerCacheStorageConnection::retrieveRecordsCompleted):
+        (WebCore::WorkerCacheStorageConnection::batchDeleteOperation):
+        (WebCore::WorkerCacheStorageConnection::deleteRecordsCompleted):
+        (WebCore::WorkerCacheStorageConnection::batchPutOperation):
+        (WebCore::WorkerCacheStorageConnection::putRecordsCompleted):
+        (WebCore::WorkerCacheStorageConnection::reference):
+        (WebCore::WorkerCacheStorageConnection::dereference):
+        (WebCore::WorkerCacheStorageConnection::clearPendingRequests):
+        * Modules/cache/WorkerCacheStorageConnection.h:
+        * page/CacheStorageProvider.h:
+        (WebCore::CacheStorageProvider::createCacheStorageConnection):
+
+2019-05-23  Youenn Fablet  <[email protected]>
+
         Multiple videos (with audios) with autoplay & playinline not working. Only one video play at a time.
         https://bugs.webkit.org/show_bug.cgi?id=193312
         <rdar://problem/47189864>

Modified: trunk/Source/WebCore/Modules/cache/CacheStorageConnection.cpp (245714 => 245715)


--- trunk/Source/WebCore/Modules/cache/CacheStorageConnection.cpp	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebCore/Modules/cache/CacheStorageConnection.cpp	2019-05-23 21:15:33 UTC (rev 245715)
@@ -33,65 +33,6 @@
 namespace WebCore {
 using namespace WebCore::DOMCacheEngine;
 
-void CacheStorageConnection::clearPendingRequests()
-{
-    auto openAndRemoveCachePendingRequests = WTFMove(m_openAndRemoveCachePendingRequests);
-    for (auto& callback : openAndRemoveCachePendingRequests.values())
-        callback(makeUnexpected(DOMCacheEngine::Error::Stopped));
-
-    auto retrieveCachesPendingRequests = WTFMove(m_retrieveCachesPendingRequests);
-    for (auto& callback : retrieveCachesPendingRequests.values())
-        callback(makeUnexpected(DOMCacheEngine::Error::Stopped));
-
-    auto retrieveRecordsPendingRequests = WTFMove(m_retrieveRecordsPendingRequests);
-    for (auto& callback : retrieveRecordsPendingRequests.values())
-        callback(makeUnexpected(DOMCacheEngine::Error::Stopped));
-
-    auto batchDeleteAndPutPendingRequests = WTFMove(m_batchDeleteAndPutPendingRequests);
-    for (auto& callback : batchDeleteAndPutPendingRequests.values())
-        callback(makeUnexpected(DOMCacheEngine::Error::Stopped));
-}
-
-void CacheStorageConnection::open(const ClientOrigin& origin, const String& cacheName, CacheIdentifierCallback&& callback)
-{
-    uint64_t requestIdentifier = ++m_lastRequestIdentifier;
-    m_openAndRemoveCachePendingRequests.add(requestIdentifier, WTFMove(callback));
-
-    doOpen(requestIdentifier, origin, cacheName);
-}
-
-void CacheStorageConnection::remove(uint64_t cacheIdentifier, CacheIdentifierCallback&& callback)
-{
-    uint64_t requestIdentifier = ++m_lastRequestIdentifier;
-    m_openAndRemoveCachePendingRequests.add(requestIdentifier, WTFMove(callback));
-
-    doRemove(requestIdentifier, cacheIdentifier);
-}
-
-void CacheStorageConnection::retrieveCaches(const ClientOrigin& origin, uint64_t updateCounter, CacheInfosCallback&& callback)
-{
-    uint64_t requestIdentifier = ++m_lastRequestIdentifier;
-    m_retrieveCachesPendingRequests.add(requestIdentifier, WTFMove(callback));
-
-    doRetrieveCaches(requestIdentifier, origin, updateCounter);
-}
-
-void CacheStorageConnection::retrieveRecords(uint64_t cacheIdentifier, const URL& url, RecordsCallback&& callback)
-{
-    uint64_t requestIdentifier = ++m_lastRequestIdentifier;
-    m_retrieveRecordsPendingRequests.add(requestIdentifier, WTFMove(callback));
-
-    doRetrieveRecords(requestIdentifier, cacheIdentifier, url);
-}
-
-void CacheStorageConnection::batchDeleteOperation(uint64_t cacheIdentifier, const ResourceRequest& request, CacheQueryOptions&& options, RecordIdentifiersCallback&& callback)
-{
-    uint64_t requestIdentifier = ++m_lastRequestIdentifier;
-    m_batchDeleteAndPutPendingRequests.add(requestIdentifier, WTFMove(callback));
-
-    doBatchDeleteOperation(requestIdentifier, cacheIdentifier, request, WTFMove(options));
-}
-
 static inline uint64_t computeRealBodySize(const DOMCacheEngine::ResponseBody& body)
 {
     uint64_t result = 0;
@@ -123,42 +64,4 @@
     }).iterator->value;
 }
 
-void CacheStorageConnection::batchPutOperation(uint64_t cacheIdentifier, Vector<Record>&& records, RecordIdentifiersCallback&& callback)
-{
-    uint64_t requestIdentifier = ++m_lastRequestIdentifier;
-    m_batchDeleteAndPutPendingRequests.add(requestIdentifier, WTFMove(callback));
-
-    doBatchPutOperation(requestIdentifier, cacheIdentifier, WTFMove(records));
-}
-
-void CacheStorageConnection::openOrRemoveCompleted(uint64_t requestIdentifier, const CacheIdentifierOrError& result)
-{
-    if (auto callback = m_openAndRemoveCachePendingRequests.take(requestIdentifier))
-        callback(result);
-}
-
-void CacheStorageConnection::updateCaches(uint64_t requestIdentifier, CacheInfosOrError&& result)
-{
-    if (auto callback = m_retrieveCachesPendingRequests.take(requestIdentifier))
-        callback(WTFMove(result));
-}
-
-void CacheStorageConnection::updateRecords(uint64_t requestIdentifier, RecordsOrError&& result)
-{
-    if (auto callback = m_retrieveRecordsPendingRequests.take(requestIdentifier))
-        callback(WTFMove(result));
-}
-
-void CacheStorageConnection::deleteRecordsCompleted(uint64_t requestIdentifier, Expected<Vector<uint64_t>, Error>&& result)
-{
-    if (auto callback = m_batchDeleteAndPutPendingRequests.take(requestIdentifier))
-        callback(WTFMove(result));
-}
-
-void CacheStorageConnection::putRecordsCompleted(uint64_t requestIdentifier, Expected<Vector<uint64_t>, Error>&& result)
-{
-    if (auto callback = m_batchDeleteAndPutPendingRequests.take(requestIdentifier))
-        callback(WTFMove(result));
-}
-
 } // namespace WebCore

Modified: trunk/Source/WebCore/Modules/cache/CacheStorageConnection.h (245714 => 245715)


--- trunk/Source/WebCore/Modules/cache/CacheStorageConnection.h	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebCore/Modules/cache/CacheStorageConnection.h	2019-05-23 21:15:33 UTC (rev 245715)
@@ -37,56 +37,27 @@
 
 class CacheStorageConnection : public ThreadSafeRefCounted<CacheStorageConnection> {
 public:
-    static Ref<CacheStorageConnection> create() { return adoptRef(*new CacheStorageConnection()); }
     virtual ~CacheStorageConnection() = default;
 
-    void open(const ClientOrigin&, const String& cacheName, DOMCacheEngine::CacheIdentifierCallback&&);
-    void remove(uint64_t cacheIdentifier, DOMCacheEngine::CacheIdentifierCallback&&);
-    void retrieveCaches(const ClientOrigin&, uint64_t updateCounter, DOMCacheEngine::CacheInfosCallback&&);
+    virtual void open(const ClientOrigin&, const String& cacheName, DOMCacheEngine::CacheIdentifierCallback&&) = 0;
+    virtual void remove(uint64_t cacheIdentifier, DOMCacheEngine::CacheIdentifierCallback&&) = 0;
+    virtual void retrieveCaches(const ClientOrigin&, uint64_t updateCounter, DOMCacheEngine::CacheInfosCallback&&) = 0;
 
-    void retrieveRecords(uint64_t cacheIdentifier, const URL&, DOMCacheEngine::RecordsCallback&&);
-    void batchDeleteOperation(uint64_t cacheIdentifier, const ResourceRequest&, CacheQueryOptions&&, DOMCacheEngine::RecordIdentifiersCallback&&);
-    void batchPutOperation(uint64_t cacheIdentifier, Vector<DOMCacheEngine::Record>&&, DOMCacheEngine::RecordIdentifiersCallback&&);
+    virtual void retrieveRecords(uint64_t cacheIdentifier, const URL&, DOMCacheEngine::RecordsCallback&&) = 0;
+    virtual void batchDeleteOperation(uint64_t cacheIdentifier, const ResourceRequest&, CacheQueryOptions&&, DOMCacheEngine::RecordIdentifiersCallback&&) = 0;
+    virtual void batchPutOperation(uint64_t cacheIdentifier, Vector<DOMCacheEngine::Record>&&, DOMCacheEngine::RecordIdentifiersCallback&&) = 0;
+
+    virtual void reference(uint64_t /* cacheIdentifier */) = 0;
+    virtual void dereference(uint64_t /* cacheIdentifier */) = 0;
+
     uint64_t computeRecordBodySize(const FetchResponse&, const DOMCacheEngine::ResponseBody&);
 
-    virtual void reference(uint64_t /* cacheIdentifier */) { }
-    virtual void dereference(uint64_t /* cacheIdentifier */) { }
-
     // Used only for testing purposes.
     virtual void clearMemoryRepresentation(const ClientOrigin&, DOMCacheEngine::CompletionCallback&& callback) { callback(DOMCacheEngine::Error::NotImplemented); }
-    virtual void engineRepresentation(WTF::Function<void(const String&)>&& callback) { callback(String { }); }
+    virtual void engineRepresentation(CompletionHandler<void(const String&)>&& callback) { callback(String { }); }
     virtual void updateQuotaBasedOnSpaceUsage(const ClientOrigin&) { }
 
-    void clearPendingRequests();
-
 protected:
-    CacheStorageConnection() =  default;
-
-    void openCompleted(uint64_t identifier, const DOMCacheEngine::CacheIdentifierOrError& result) { openOrRemoveCompleted(identifier, result); }
-    void removeCompleted(uint64_t identifier, const DOMCacheEngine::CacheIdentifierOrError& result) { openOrRemoveCompleted(identifier, result); }
-    WEBCORE_EXPORT void updateCaches(uint64_t requestIdentifier, DOMCacheEngine::CacheInfosOrError&&);
-
-    WEBCORE_EXPORT void updateRecords(uint64_t requestIdentifier, DOMCacheEngine::RecordsOrError&&);
-    WEBCORE_EXPORT void deleteRecordsCompleted(uint64_t requestIdentifier, DOMCacheEngine::RecordIdentifiersOrError&&);
-    WEBCORE_EXPORT void putRecordsCompleted(uint64_t requestIdentifier, DOMCacheEngine::RecordIdentifiersOrError&&);
-
-private:
-    virtual void doOpen(uint64_t requestIdentifier, const ClientOrigin&, const String& /* cacheName */) { openCompleted(requestIdentifier, makeUnexpected(DOMCacheEngine::Error::NotImplemented)); }
-    virtual void doRemove(uint64_t requestIdentifier, uint64_t /* cacheIdentifier */) { removeCompleted(requestIdentifier, makeUnexpected(DOMCacheEngine::Error::NotImplemented)); }
-    virtual void doRetrieveCaches(uint64_t requestIdentifier, const ClientOrigin&, uint64_t /* updateCounter */) { updateCaches(requestIdentifier, { }); }
-
-    virtual void doRetrieveRecords(uint64_t requestIdentifier, uint64_t /* cacheIdentifier */, const URL& /* url */) { updateRecords(requestIdentifier, { }); }
-    virtual void doBatchDeleteOperation(uint64_t requestIdentifier, uint64_t /* cacheIdentifier */, const ResourceRequest&, CacheQueryOptions&&) { deleteRecordsCompleted(requestIdentifier, makeUnexpected(DOMCacheEngine::Error::NotImplemented)); }
-    virtual void doBatchPutOperation(uint64_t requestIdentifier, uint64_t /* cacheIdentifier */, Vector<DOMCacheEngine::Record>&&) { putRecordsCompleted(requestIdentifier, makeUnexpected(DOMCacheEngine::Error::NotImplemented)); }
-
-    WEBCORE_EXPORT void openOrRemoveCompleted(uint64_t requestIdentifier, const DOMCacheEngine::CacheIdentifierOrError&);
-
-    HashMap<uint64_t, DOMCacheEngine::CacheIdentifierCallback> m_openAndRemoveCachePendingRequests;
-    HashMap<uint64_t, DOMCacheEngine::CacheInfosCallback> m_retrieveCachesPendingRequests;
-    HashMap<uint64_t, DOMCacheEngine::RecordsCallback> m_retrieveRecordsPendingRequests;
-    HashMap<uint64_t, DOMCacheEngine::RecordIdentifiersCallback> m_batchDeleteAndPutPendingRequests;
     HashMap<uint64_t, uint64_t> m_opaqueResponseToSizeWithPaddingMap;
-
-    uint64_t m_lastRequestIdentifier { 0 };
 };
 } // namespace WebCore

Modified: trunk/Source/WebCore/Modules/cache/DOMCacheEngine.h (245714 => 245715)


--- trunk/Source/WebCore/Modules/cache/DOMCacheEngine.h	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebCore/Modules/cache/DOMCacheEngine.h	2019-05-23 21:15:33 UTC (rev 245715)
@@ -32,6 +32,7 @@
 #include "ResourceResponse.h"
 #include "ScriptExecutionContext.h"
 #include "SharedBuffer.h"
+#include <wtf/CompletionHandler.h>
 
 namespace WebCore {
 
@@ -99,19 +100,19 @@
 };
 
 using CacheIdentifierOrError = Expected<CacheIdentifierOperationResult, Error>;
-using CacheIdentifierCallback = WTF::Function<void(const CacheIdentifierOrError&)>;
+using CacheIdentifierCallback = CompletionHandler<void(const CacheIdentifierOrError&)>;
 
 using RecordIdentifiersOrError = Expected<Vector<uint64_t>, Error>;
-using RecordIdentifiersCallback = WTF::Function<void(RecordIdentifiersOrError&&)>;
+using RecordIdentifiersCallback = CompletionHandler<void(RecordIdentifiersOrError&&)>;
 
 
 using CacheInfosOrError = Expected<CacheInfos, Error>;
-using CacheInfosCallback = WTF::Function<void(CacheInfosOrError&&)>;
+using CacheInfosCallback = CompletionHandler<void(CacheInfosOrError&&)>;
 
 using RecordsOrError = Expected<Vector<Record>, Error>;
-using RecordsCallback = WTF::Function<void(RecordsOrError&&)>;
+using RecordsCallback = CompletionHandler<void(RecordsOrError&&)>;
 
-using CompletionCallback = WTF::Function<void(Optional<Error>&&)>;
+using CompletionCallback = CompletionHandler<void(Optional<Error>&&)>;
 
 template<class Encoder> inline void CacheInfos::encode(Encoder& encoder) const
 {

Modified: trunk/Source/WebCore/Modules/cache/WorkerCacheStorageConnection.cpp (245714 => 245715)


--- trunk/Source/WebCore/Modules/cache/WorkerCacheStorageConnection.cpp	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebCore/Modules/cache/WorkerCacheStorageConnection.cpp	2019-05-23 21:15:33 UTC (rev 245715)
@@ -88,6 +88,31 @@
     };
 }
 
+static inline Vector<CrossThreadRecordData> recordsDataFromRecords(const Vector<Record>& records)
+{
+    return WTF::map(records, toCrossThreadRecordData);
+}
+
+static inline Expected<Vector<CrossThreadRecordData>, Error> recordsDataOrErrorFromRecords(const RecordsOrError& result)
+{
+    if (!result.has_value())
+        return makeUnexpected(result.error());
+
+    return recordsDataFromRecords(result.value());
+}
+
+static inline Vector<Record> recordsFromRecordsData(Vector<CrossThreadRecordData>&& recordsData)
+{
+    return WTF::map(WTFMove(recordsData), fromCrossThreadRecordData);
+}
+
+static inline RecordsOrError recordsOrErrorFromRecordsData(Expected<Vector<CrossThreadRecordData>, Error>&& recordsData)
+{
+    if (!recordsData.has_value())
+        return makeUnexpected(recordsData.error());
+    return recordsFromRecordsData(WTFMove(recordsData.value()));
+}
+
 Ref<WorkerCacheStorageConnection> WorkerCacheStorageConnection::create(WorkerGlobalScope& scope)
 {
     auto connection = adoptRef(*new WorkerCacheStorageConnection(scope));
@@ -109,31 +134,46 @@
         callOnMainThread([mainThreadConnection = WTFMove(m_mainThreadConnection)]() mutable { });
 }
 
-void WorkerCacheStorageConnection::doOpen(uint64_t requestIdentifier, const ClientOrigin& origin, const String& cacheName)
+void WorkerCacheStorageConnection::open(const ClientOrigin& origin, const String& cacheName, CacheIdentifierCallback&& callback)
 {
+    uint64_t requestIdentifier = ++m_lastRequestIdentifier;
+    m_openAndRemoveCachePendingRequests.add(requestIdentifier, WTFMove(callback));
+
     callOnMainThread([workerThread = makeRef(m_scope.thread()), mainThreadConnection = m_mainThreadConnection, requestIdentifier, origin = origin.isolatedCopy(), cacheName = cacheName.isolatedCopy()] () mutable {
         mainThreadConnection->open(origin, cacheName, [workerThread = WTFMove(workerThread), requestIdentifier] (const CacheIdentifierOrError& result) mutable {
             workerThread->runLoop().postTaskForMode([requestIdentifier, result] (auto& scope) mutable {
-                downcast<WorkerGlobalScope>(scope).cacheStorageConnection().openCompleted(requestIdentifier, result);
+                downcast<WorkerGlobalScope>(scope).cacheStorageConnection().openOrRemoveCompleted(requestIdentifier, result);
             }, WorkerRunLoop::defaultMode());
         });
     });
 }
 
-void WorkerCacheStorageConnection::doRemove(uint64_t requestIdentifier, uint64_t cacheIdentifier)
+void WorkerCacheStorageConnection::openOrRemoveCompleted(uint64_t requestIdentifier, const CacheIdentifierOrError& result)
 {
+    if (auto callback = m_openAndRemoveCachePendingRequests.take(requestIdentifier))
+        callback(result);
+}
+
+void WorkerCacheStorageConnection::remove(uint64_t cacheIdentifier, CacheIdentifierCallback&& callback)
+{
+    uint64_t requestIdentifier = ++m_lastRequestIdentifier;
+    m_openAndRemoveCachePendingRequests.add(requestIdentifier, WTFMove(callback));
+
     callOnMainThread([workerThread = makeRef(m_scope.thread()), mainThreadConnection = m_mainThreadConnection, requestIdentifier, cacheIdentifier] () mutable {
         mainThreadConnection->remove(cacheIdentifier, [workerThread = WTFMove(workerThread), requestIdentifier, cacheIdentifier] (const CacheIdentifierOrError& result) mutable {
             ASSERT_UNUSED(cacheIdentifier, !result.has_value() || !result.value().identifier || result.value().identifier == cacheIdentifier);
             workerThread->runLoop().postTaskForMode([requestIdentifier, result] (auto& scope) mutable {
-                downcast<WorkerGlobalScope>(scope).cacheStorageConnection().removeCompleted(requestIdentifier, result);
+                downcast<WorkerGlobalScope>(scope).cacheStorageConnection().openOrRemoveCompleted(requestIdentifier, result);
             }, WorkerRunLoop::defaultMode());
         });
     });
 }
 
-void WorkerCacheStorageConnection::doRetrieveCaches(uint64_t requestIdentifier, const ClientOrigin& origin, uint64_t updateCounter)
+void WorkerCacheStorageConnection::retrieveCaches(const ClientOrigin& origin, uint64_t updateCounter, CacheInfosCallback&& callback)
 {
+    uint64_t requestIdentifier = ++m_lastRequestIdentifier;
+    m_retrieveCachesPendingRequests.add(requestIdentifier, WTFMove(callback));
+
     callOnMainThread([workerThread = makeRef(m_scope.thread()), mainThreadConnection = m_mainThreadConnection, requestIdentifier, origin = origin.isolatedCopy(), updateCounter] () mutable {
         mainThreadConnection->retrieveCaches(origin, updateCounter, [workerThread = WTFMove(workerThread), requestIdentifier] (CacheInfosOrError&& result) mutable {
             CacheInfosOrError isolatedResult;
@@ -143,64 +183,43 @@
                 isolatedResult = result.value().isolatedCopy();
 
             workerThread->runLoop().postTaskForMode([requestIdentifier, result = WTFMove(isolatedResult)] (auto& scope) mutable {
-                downcast<WorkerGlobalScope>(scope).cacheStorageConnection().updateCaches(requestIdentifier, WTFMove(result));
+                downcast<WorkerGlobalScope>(scope).cacheStorageConnection().retrieveCachesCompleted(requestIdentifier, WTFMove(result));
             }, WorkerRunLoop::defaultMode());
         });
     });
 }
 
-void WorkerCacheStorageConnection::reference(uint64_t cacheIdentifier)
+void WorkerCacheStorageConnection::retrieveCachesCompleted(uint64_t requestIdentifier, CacheInfosOrError&& result)
 {
-    callOnMainThread([mainThreadConnection = m_mainThreadConnection, cacheIdentifier]() {
-        mainThreadConnection->reference(cacheIdentifier);
-    });
+    if (auto callback = m_retrieveCachesPendingRequests.take(requestIdentifier))
+        callback(WTFMove(result));
 }
 
-void WorkerCacheStorageConnection::dereference(uint64_t cacheIdentifier)
+void WorkerCacheStorageConnection::retrieveRecords(uint64_t cacheIdentifier, const URL& url, RecordsCallback&& callback)
 {
-    callOnMainThread([mainThreadConnection = m_mainThreadConnection, cacheIdentifier]() {
-        mainThreadConnection->dereference(cacheIdentifier);
-    });
-}
+    uint64_t requestIdentifier = ++m_lastRequestIdentifier;
+    m_retrieveRecordsPendingRequests.add(requestIdentifier, WTFMove(callback));
 
-static inline Vector<CrossThreadRecordData> recordsDataFromRecords(const Vector<Record>& records)
-{
-    return WTF::map(records, toCrossThreadRecordData);
-}
-
-static inline Expected<Vector<CrossThreadRecordData>, Error> recordsDataOrErrorFromRecords(const RecordsOrError& result)
-{
-    if (!result.has_value())
-        return makeUnexpected(result.error());
-
-    return recordsDataFromRecords(result.value());
-}
-
-static inline Vector<Record> recordsFromRecordsData(Vector<CrossThreadRecordData>&& recordsData)
-{
-    return WTF::map(WTFMove(recordsData), fromCrossThreadRecordData);
-}
-
-static inline RecordsOrError recordsOrErrorFromRecordsData(Expected<Vector<CrossThreadRecordData>, Error>&& recordsData)
-{
-    if (!recordsData.has_value())
-        return makeUnexpected(recordsData.error());
-    return recordsFromRecordsData(WTFMove(recordsData.value()));
-}
-
-void WorkerCacheStorageConnection::doRetrieveRecords(uint64_t requestIdentifier, uint64_t cacheIdentifier, const URL& url)
-{
     callOnMainThread([workerThread = makeRef(m_scope.thread()), mainThreadConnection = m_mainThreadConnection, requestIdentifier, cacheIdentifier, url = "" mutable {
         mainThreadConnection->retrieveRecords(cacheIdentifier, url, [workerThread = WTFMove(workerThread), requestIdentifier](RecordsOrError&& result) mutable {
             workerThread->runLoop().postTaskForMode([result = recordsDataOrErrorFromRecords(result), requestIdentifier] (auto& scope) mutable {
-                downcast<WorkerGlobalScope>(scope).cacheStorageConnection().updateRecords(requestIdentifier, recordsOrErrorFromRecordsData(WTFMove(result)));
+                downcast<WorkerGlobalScope>(scope).cacheStorageConnection().retrieveRecordsCompleted(requestIdentifier, recordsOrErrorFromRecordsData(WTFMove(result)));
             }, WorkerRunLoop::defaultMode());
         });
     });
 }
 
-void WorkerCacheStorageConnection::doBatchDeleteOperation(uint64_t requestIdentifier, uint64_t cacheIdentifier, const ResourceRequest& request, CacheQueryOptions&& options)
+void WorkerCacheStorageConnection::retrieveRecordsCompleted(uint64_t requestIdentifier, RecordsOrError&& result)
 {
+    if (auto callback = m_retrieveRecordsPendingRequests.take(requestIdentifier))
+        callback(WTFMove(result));
+}
+
+void WorkerCacheStorageConnection::batchDeleteOperation(uint64_t cacheIdentifier, const ResourceRequest& request, CacheQueryOptions&& options, RecordIdentifiersCallback&& callback)
+{
+    uint64_t requestIdentifier = ++m_lastRequestIdentifier;
+    m_batchDeleteAndPutPendingRequests.add(requestIdentifier, WTFMove(callback));
+
     callOnMainThread([workerThread = makeRef(m_scope.thread()), mainThreadConnection = m_mainThreadConnection, requestIdentifier, cacheIdentifier, request = request.isolatedCopy(), options = options.isolatedCopy()]() mutable {
         mainThreadConnection->batchDeleteOperation(cacheIdentifier, request, WTFMove(options), [workerThread = WTFMove(workerThread), requestIdentifier](RecordIdentifiersOrError&& result) mutable {
             workerThread->runLoop().postTaskForMode([requestIdentifier, result = WTFMove(result)] (auto& scope) mutable {
@@ -210,8 +229,17 @@
     });
 }
 
-void WorkerCacheStorageConnection::doBatchPutOperation(uint64_t requestIdentifier, uint64_t cacheIdentifier, Vector<Record>&& records)
+void WorkerCacheStorageConnection::deleteRecordsCompleted(uint64_t requestIdentifier, Expected<Vector<uint64_t>, Error>&& result)
 {
+    if (auto callback = m_batchDeleteAndPutPendingRequests.take(requestIdentifier))
+        callback(WTFMove(result));
+}
+
+void WorkerCacheStorageConnection::batchPutOperation(uint64_t cacheIdentifier, Vector<DOMCacheEngine::Record>&& records, DOMCacheEngine::RecordIdentifiersCallback&& callback)
+{
+    uint64_t requestIdentifier = ++m_lastRequestIdentifier;
+    m_batchDeleteAndPutPendingRequests.add(requestIdentifier, WTFMove(callback));
+
     callOnMainThread([workerThread = makeRef(m_scope.thread()), mainThreadConnection = m_mainThreadConnection, requestIdentifier, cacheIdentifier, recordsData = recordsDataFromRecords(records)]() mutable {
         mainThreadConnection->batchPutOperation(cacheIdentifier, recordsFromRecordsData(WTFMove(recordsData)), [workerThread = WTFMove(workerThread), requestIdentifier] (RecordIdentifiersOrError&& result) mutable {
             workerThread->runLoop().postTaskForMode([requestIdentifier, result = WTFMove(result)] (auto& scope) mutable {
@@ -221,4 +249,43 @@
     });
 }
 
+void WorkerCacheStorageConnection::putRecordsCompleted(uint64_t requestIdentifier, Expected<Vector<uint64_t>, Error>&& result)
+{
+    if (auto callback = m_batchDeleteAndPutPendingRequests.take(requestIdentifier))
+        callback(WTFMove(result));
+}
+
+void WorkerCacheStorageConnection::reference(uint64_t cacheIdentifier)
+{
+    callOnMainThread([mainThreadConnection = m_mainThreadConnection, cacheIdentifier]() {
+        mainThreadConnection->reference(cacheIdentifier);
+    });
+}
+
+void WorkerCacheStorageConnection::dereference(uint64_t cacheIdentifier)
+{
+    callOnMainThread([mainThreadConnection = m_mainThreadConnection, cacheIdentifier]() {
+        mainThreadConnection->dereference(cacheIdentifier);
+    });
+}
+
+void WorkerCacheStorageConnection::clearPendingRequests()
+{
+    auto openAndRemoveCachePendingRequests = WTFMove(m_openAndRemoveCachePendingRequests);
+    for (auto& callback : openAndRemoveCachePendingRequests.values())
+        callback(makeUnexpected(DOMCacheEngine::Error::Stopped));
+
+    auto retrieveCachesPendingRequests = WTFMove(m_retrieveCachesPendingRequests);
+    for (auto& callback : retrieveCachesPendingRequests.values())
+        callback(makeUnexpected(DOMCacheEngine::Error::Stopped));
+
+    auto retrieveRecordsPendingRequests = WTFMove(m_retrieveRecordsPendingRequests);
+    for (auto& callback : retrieveRecordsPendingRequests.values())
+        callback(makeUnexpected(DOMCacheEngine::Error::Stopped));
+
+    auto batchDeleteAndPutPendingRequests = WTFMove(m_batchDeleteAndPutPendingRequests);
+    for (auto& callback : batchDeleteAndPutPendingRequests.values())
+        callback(makeUnexpected(DOMCacheEngine::Error::Stopped));
+}
+
 } // namespace WebCore

Modified: trunk/Source/WebCore/Modules/cache/WorkerCacheStorageConnection.h (245714 => 245715)


--- trunk/Source/WebCore/Modules/cache/WorkerCacheStorageConnection.h	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebCore/Modules/cache/WorkerCacheStorageConnection.h	2019-05-23 21:15:33 UTC (rev 245715)
@@ -38,25 +38,46 @@
     static Ref<WorkerCacheStorageConnection> create(WorkerGlobalScope&);
     ~WorkerCacheStorageConnection();
 
+    void clearPendingRequests();
+
 private:
     explicit WorkerCacheStorageConnection(WorkerGlobalScope&);
 
     // WebCore::CacheStorageConnection.
-    void doOpen(uint64_t requestIdentifier, const ClientOrigin&, const String& cacheName) final;
-    void doRemove(uint64_t requestIdentifier, uint64_t cacheIdentifier) final;
-    void doRetrieveCaches(uint64_t requestIdentifier, const ClientOrigin&, uint64_t updateCounter) final;
+    void open(const ClientOrigin&, const String& cacheName, DOMCacheEngine::CacheIdentifierCallback&&) final;
+    void remove(uint64_t cacheIdentifier, DOMCacheEngine::CacheIdentifierCallback&&) final;
+    void retrieveCaches(const ClientOrigin&, uint64_t updateCounter, DOMCacheEngine::CacheInfosCallback&&) final;
 
-    void doRetrieveRecords(uint64_t requestIdentifier, uint64_t cacheIdentifier, const URL&) final;
+    void retrieveRecords(uint64_t cacheIdentifier, const URL&, DOMCacheEngine::RecordsCallback&&) final;
+    void batchDeleteOperation(uint64_t cacheIdentifier, const ResourceRequest&, CacheQueryOptions&&, DOMCacheEngine::RecordIdentifiersCallback&&) final;
+    void batchPutOperation(uint64_t cacheIdentifier, Vector<DOMCacheEngine::Record>&&, DOMCacheEngine::RecordIdentifiersCallback&&) final;
 
     void reference(uint64_t cacheIdentifier) final;
     void dereference(uint64_t cacheIdentifier) final;
 
-    void doBatchDeleteOperation(uint64_t requestIdentifier, uint64_t cacheIdentifier, const WebCore::ResourceRequest&, WebCore::CacheQueryOptions&&) final;
-    void doBatchPutOperation(uint64_t requestIdentifier, uint64_t cacheIdentifier, Vector<DOMCacheEngine::Record>&&) final;
+    void doOpen(uint64_t requestIdentifier, const ClientOrigin&, const String& cacheName);
+    void doRemove(uint64_t requestIdentifier, uint64_t cacheIdentifier);
+    void doRetrieveCaches(uint64_t requestIdentifier, const ClientOrigin&, uint64_t updateCounter);
+    void doRetrieveRecords(uint64_t requestIdentifier, uint64_t cacheIdentifier, const URL&);
+    void doBatchDeleteOperation(uint64_t requestIdentifier, uint64_t cacheIdentifier, const WebCore::ResourceRequest&, WebCore::CacheQueryOptions&&);
+    void doBatchPutOperation(uint64_t requestIdentifier, uint64_t cacheIdentifier, Vector<DOMCacheEngine::Record>&&);
 
+    void openOrRemoveCompleted(uint64_t requestIdentifier, const DOMCacheEngine::CacheIdentifierOrError&);
+    void retrieveCachesCompleted(uint64_t requestIdentifier, DOMCacheEngine::CacheInfosOrError&&);
+    void retrieveRecordsCompleted(uint64_t requestIdentifier, DOMCacheEngine::RecordsOrError&&);
+    void deleteRecordsCompleted(uint64_t requestIdentifier, DOMCacheEngine::RecordIdentifiersOrError&&);
+    void putRecordsCompleted(uint64_t requestIdentifier, DOMCacheEngine::RecordIdentifiersOrError&&);
+
     WorkerGlobalScope& m_scope;
 
     RefPtr<CacheStorageConnection> m_mainThreadConnection;
+
+    HashMap<uint64_t, DOMCacheEngine::CacheIdentifierCallback> m_openAndRemoveCachePendingRequests;
+    HashMap<uint64_t, DOMCacheEngine::CacheInfosCallback> m_retrieveCachesPendingRequests;
+    HashMap<uint64_t, DOMCacheEngine::RecordsCallback> m_retrieveRecordsPendingRequests;
+    HashMap<uint64_t, DOMCacheEngine::RecordIdentifiersCallback> m_batchDeleteAndPutPendingRequests;
+
+    uint64_t m_lastRequestIdentifier { 0 };
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/page/CacheStorageProvider.h (245714 => 245715)


--- trunk/Source/WebCore/page/CacheStorageProvider.h	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebCore/page/CacheStorageProvider.h	2019-05-23 21:15:33 UTC (rev 245715)
@@ -33,8 +33,23 @@
 
 class CacheStorageProvider : public RefCounted<CacheStorageProvider> {
 public:
+    class DummyCacheStorageConnection final : public WebCore::CacheStorageConnection {
+    public:
+        static Ref<DummyCacheStorageConnection> create() { return adoptRef(*new DummyCacheStorageConnection); }
+
+    private:
+        void open(const ClientOrigin&, const String&, DOMCacheEngine::CacheIdentifierCallback&&) final { }
+        void remove(uint64_t, DOMCacheEngine::CacheIdentifierCallback&&) final { }
+        void retrieveCaches(const ClientOrigin&, uint64_t, DOMCacheEngine::CacheInfosCallback&&) final { }
+        void retrieveRecords(uint64_t, const URL&, DOMCacheEngine::RecordsCallback&&) final { }
+        void batchDeleteOperation(uint64_t, const ResourceRequest&, CacheQueryOptions&&, DOMCacheEngine::RecordIdentifiersCallback&&) final { }
+        void batchPutOperation(uint64_t, Vector<DOMCacheEngine::Record>&&, DOMCacheEngine::RecordIdentifiersCallback&&) final { }
+        void reference(uint64_t) final { }
+        void dereference(uint64_t) final { }
+    };
+
     static Ref<CacheStorageProvider> create() { return adoptRef(*new CacheStorageProvider); }
-    virtual Ref<CacheStorageConnection> createCacheStorageConnection(PAL::SessionID) { return CacheStorageConnection::create(); }
+    virtual Ref<CacheStorageConnection> createCacheStorageConnection(PAL::SessionID) { return DummyCacheStorageConnection::create(); }
     virtual ~CacheStorageProvider() { };
 
 protected:

Modified: trunk/Source/WebKit/CMakeLists.txt (245714 => 245715)


--- trunk/Source/WebKit/CMakeLists.txt	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/CMakeLists.txt	2019-05-23 21:15:33 UTC (rev 245715)
@@ -163,8 +163,6 @@
 
     WebProcess/Automation/WebAutomationSessionProxy.messages.in
 
-    WebProcess/Cache/WebCacheStorageConnection.messages.in
-
     WebProcess/Databases/IndexedDB/WebIDBConnectionToServer.messages.in
 
     WebProcess/FullScreen/WebFullScreenManager.messages.in

Modified: trunk/Source/WebKit/ChangeLog (245714 => 245715)


--- trunk/Source/WebKit/ChangeLog	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/ChangeLog	2019-05-23 21:15:33 UTC (rev 245715)
@@ -1,3 +1,55 @@
+2019-05-23  Youenn Fablet  <[email protected]>
+
+        CacheStorageConnection callbacks should be completed on network connection close
+        https://bugs.webkit.org/show_bug.cgi?id=195757
+
+        Reviewed by Alex Christensen.
+
+        Update according new WebCore CacheStorageConnection interface.
+        Use Async IPC replies so that the completion handlers are called on network crash.
+
+        Allow to have specific error handling in case of cancelled reply or badly decoded message.
+        This allows to reject the corresponding JS promise.
+
+        * CMakeLists.txt:
+        * DerivedSources-output.xcfilelist:
+        * DerivedSources.make:
+        * NetworkProcess/cache/CacheStorageEngine.cpp:
+        (WebKit::CacheStorage::Engine::clearMemoryRepresentation):
+        * NetworkProcess/cache/CacheStorageEngineCaches.cpp:
+        (WebKit::CacheStorage::Caches::requestSpace):
+        (WebKit::CacheStorage::Caches::writeRecord):
+        * NetworkProcess/cache/CacheStorageEngineConnection.cpp:
+        (WebKit::CacheStorageEngineConnection::open):
+        (WebKit::CacheStorageEngineConnection::remove):
+        (WebKit::CacheStorageEngineConnection::caches):
+        (WebKit::CacheStorageEngineConnection::retrieveRecords):
+        (WebKit::CacheStorageEngineConnection::deleteMatchingRecords):
+        (WebKit::CacheStorageEngineConnection::putRecords):
+        * NetworkProcess/cache/CacheStorageEngineConnection.h:
+        (IPC::AsyncReplyError<WebCore::DOMCacheEngine::CacheIdentifierOrError>::create):
+        (IPC::AsyncReplyError<WebCore::DOMCacheEngine::RecordIdentifiersOrError>::create):
+        (IPC::AsyncReplyError<WebCore::DOMCacheEngine::CacheInfosOrError>::create):
+        (IPC::AsyncReplyError<WebCore::DOMCacheEngine::RecordsOrError>::create):
+        * NetworkProcess/cache/CacheStorageEngineConnection.messages.in:
+        * Platform/IPC/ArgumentCoders.h:
+        * Platform/IPC/Connection.h:
+        (IPC::AsyncReplyError::create):
+        * Scripts/webkit/messages.py:
+        * WebKit.xcodeproj/project.pbxproj:
+        * WebProcess/Cache/WebCacheStorageConnection.cpp:
+        (WebKit::WebCacheStorageConnection::open):
+        (WebKit::WebCacheStorageConnection::remove):
+        (WebKit::WebCacheStorageConnection::retrieveCaches):
+        (WebKit::WebCacheStorageConnection::retrieveRecords):
+        (WebKit::WebCacheStorageConnection::batchDeleteOperation):
+        (WebKit::WebCacheStorageConnection::batchPutOperation):
+        (WebKit::WebCacheStorageConnection::engineRepresentation):
+        * WebProcess/Cache/WebCacheStorageConnection.h:
+        * WebProcess/Cache/WebCacheStorageConnection.messages.in: Removed.
+        * WebProcess/Network/NetworkProcessConnection.cpp:
+        (WebKit::NetworkProcessConnection::didReceiveMessage):
+
 2019-05-23  Sihui Liu  <[email protected]>
 
         Handling for non-persistent data should be consistent in computeNetworkProcessAccessTypeForDataFetch

Modified: trunk/Source/WebKit/DerivedSources-output.xcfilelist (245714 => 245715)


--- trunk/Source/WebKit/DerivedSources-output.xcfilelist	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/DerivedSources-output.xcfilelist	2019-05-23 21:15:33 UTC (rev 245715)
@@ -117,7 +117,6 @@
 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebAutomationSessionProxyMessageReceiver.cpp
 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebAutomationSessionProxyMessages.h
 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebAutomationSessionProxyScriptSource.h
-$(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebCacheStorageConnectionMessageReceiver.cpp
 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebCacheStorageConnectionMessages.h
 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebConnectionMessageReceiver.cpp
 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebConnectionMessages.h

Modified: trunk/Source/WebKit/DerivedSources.make (245714 => 245715)


--- trunk/Source/WebKit/DerivedSources.make	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/DerivedSources.make	2019-05-23 21:15:33 UTC (rev 245715)
@@ -150,7 +150,6 @@
     WebAuthenticatorCoordinatorProxy \
     WebAutomationSession \
     WebAutomationSessionProxy \
-    WebCacheStorageConnection \
     WebConnection \
     WebCookieManager \
     WebCookieManagerProxy \

Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp (245714 => 245715)


--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngine.cpp	2019-05-23 21:15:33 UTC (rev 245715)
@@ -600,7 +600,7 @@
 
 void Engine::clearMemoryRepresentation(const WebCore::ClientOrigin& origin, WebCore::DOMCacheEngine::CompletionCallback&& callback)
 {
-    readCachesFromDisk(origin, [callback = WTFMove(callback)](CachesOrError&& result) {
+    readCachesFromDisk(origin, [callback = WTFMove(callback)](CachesOrError&& result) mutable {
         if (!result.has_value()) {
             callback(result.error());
             return;

Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp (245714 => 245715)


--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineCaches.cpp	2019-05-23 21:15:33 UTC (rev 245715)
@@ -515,7 +515,7 @@
         return;
     }
 
-    m_quotaManager->requestSpace(spaceRequired, [callback = WTFMove(callback)](auto decision) {
+    m_quotaManager->requestSpace(spaceRequired, [callback = WTFMove(callback)](auto decision) mutable {
         switch (decision) {
         case WebCore::StorageQuotaManager::Decision::Deny:
             callback(Error::QuotaExceeded);
@@ -540,7 +540,7 @@
         return;
     }
 
-    m_storage->store(Cache::encode(recordInformation, record), { }, [protectedStorage = makeRef(*m_storage), callback = WTFMove(callback)](int error) {
+    m_storage->store(Cache::encode(recordInformation, record), { }, [protectedStorage = makeRef(*m_storage), callback = WTFMove(callback)](int error) mutable {
         if (error) {
             RELEASE_LOG_ERROR(CacheStorage, "Caches::writeRecord failed with error %d", error);
             callback(Error::WriteDisk);

Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.cpp (245714 => 245715)


--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.cpp	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.cpp	2019-05-23 21:15:33 UTC (rev 245715)
@@ -29,7 +29,6 @@
 
 #include "Logging.h"
 #include "NetworkConnectionToWebProcess.h"
-#include "WebCacheStorageConnectionMessages.h"
 #include "WebCoreArgumentCoders.h"
 #include <WebCore/CacheQueryOptions.h>
 
@@ -41,11 +40,11 @@
 #define RELEASE_LOG_IF_ALLOWED(fmt, ...) RELEASE_LOG_IF(sessionID.isAlwaysOnLoggingAllowed(), CacheStorage, "%p - CacheStorageEngineConnection::" fmt, &m_connection.connection(), ##__VA_ARGS__)
 #define RELEASE_LOG_FUNCTION_IF_ALLOWED_IN_CALLBACK(functionName, fmt, resultGetter) \
     if (!result.has_value())\
-        RELEASE_LOG_ERROR_IF(sessionID.isAlwaysOnLoggingAllowed(), CacheStorage, "%p - CacheStorageEngineConnection::%s (%" PRIu64 ") - failed - error %d", connection.ptr(), functionName, requestIdentifier, (int)result.error()); \
+        RELEASE_LOG_ERROR_IF(sessionID.isAlwaysOnLoggingAllowed(), CacheStorage, "CacheStorageEngineConnection::%s - failed - error %d", functionName, (int)result.error()); \
     else {\
         auto value = resultGetter(result.value()); \
         UNUSED_PARAM(value); \
-        RELEASE_LOG_IF(sessionID.isAlwaysOnLoggingAllowed(), CacheStorage, "%p - CacheStorageEngineConnection::%s (%" PRIu64 ") - succeeded - " fmt, connection.ptr(), functionName, requestIdentifier, value); \
+        RELEASE_LOG_IF(sessionID.isAlwaysOnLoggingAllowed(), CacheStorage, "CacheStorageEngineConnection::%s - succeeded - " fmt, functionName, value); \
     }
 CacheStorageEngineConnection::CacheStorageEngineConnection(NetworkConnectionToWebProcess& connection)
     : m_connection(connection)
@@ -63,57 +62,57 @@
     }
 }
 
-void CacheStorageEngineConnection::open(PAL::SessionID sessionID, uint64_t requestIdentifier, WebCore::ClientOrigin&& origin, String&& cacheName)
+void CacheStorageEngineConnection::open(PAL::SessionID sessionID, WebCore::ClientOrigin&& origin, String&& cacheName, CacheIdentifierCallback&& callback)
 {
-    RELEASE_LOG_IF_ALLOWED("open (%" PRIu64 ")", requestIdentifier);
-    Engine::open(m_connection.networkProcess(), sessionID, WTFMove(origin), WTFMove(cacheName), [connection = makeRef(m_connection.connection()), sessionID, requestIdentifier](const CacheIdentifierOrError& result) {
+    RELEASE_LOG_IF_ALLOWED("open cache");
+    Engine::open(m_connection.networkProcess(), sessionID, WTFMove(origin), WTFMove(cacheName), [callback = WTFMove(callback), sessionID](auto& result) mutable {
         RELEASE_LOG_FUNCTION_IF_ALLOWED_IN_CALLBACK("open", "cache identifier is %" PRIu64, [](const auto& value) { return value.identifier; });
-        connection->send(Messages::WebCacheStorageConnection::OpenCompleted(requestIdentifier, result), sessionID.sessionID());
+        callback(result);
     });
 }
 
-void CacheStorageEngineConnection::remove(PAL::SessionID sessionID, uint64_t requestIdentifier, uint64_t cacheIdentifier)
+void CacheStorageEngineConnection::remove(PAL::SessionID sessionID, uint64_t cacheIdentifier, CacheIdentifierCallback&& callback)
 {
-    RELEASE_LOG_IF_ALLOWED("remove (%" PRIu64 ") cache %" PRIu64, requestIdentifier, cacheIdentifier);
-    Engine::remove(m_connection.networkProcess(), sessionID, cacheIdentifier, [connection = makeRef(m_connection.connection()), sessionID, requestIdentifier](const CacheIdentifierOrError& result) {
+    RELEASE_LOG_IF_ALLOWED("remove cache %" PRIu64, cacheIdentifier);
+    Engine::remove(m_connection.networkProcess(), sessionID, cacheIdentifier, [callback = WTFMove(callback), sessionID](auto& result) mutable {
         RELEASE_LOG_FUNCTION_IF_ALLOWED_IN_CALLBACK("remove", "removed cache %" PRIu64, [](const auto& value) { return value.identifier; });
-        connection->send(Messages::WebCacheStorageConnection::RemoveCompleted(requestIdentifier, result), sessionID.sessionID());
+        callback(result);
     });
 }
 
-void CacheStorageEngineConnection::caches(PAL::SessionID sessionID, uint64_t requestIdentifier, WebCore::ClientOrigin&& origin, uint64_t updateCounter)
+void CacheStorageEngineConnection::caches(PAL::SessionID sessionID, WebCore::ClientOrigin&& origin, uint64_t updateCounter, CacheInfosCallback&& callback)
 {
-    RELEASE_LOG_IF_ALLOWED("caches (%" PRIu64 ")", requestIdentifier);
-    Engine::retrieveCaches(m_connection.networkProcess(), sessionID, WTFMove(origin), updateCounter, [connection = makeRef(m_connection.connection()), sessionID, origin, requestIdentifier](CacheInfosOrError&& result) {
+    RELEASE_LOG_IF_ALLOWED("caches");
+    Engine::retrieveCaches(m_connection.networkProcess(), sessionID, WTFMove(origin), updateCounter, [callback = WTFMove(callback), sessionID, origin](auto&& result) mutable {
         RELEASE_LOG_FUNCTION_IF_ALLOWED_IN_CALLBACK("caches", "caches size is %lu", [](const auto& value) { return value.infos.size(); });
-        connection->send(Messages::WebCacheStorageConnection::UpdateCaches(requestIdentifier, result), sessionID.sessionID());
+        callback(WTFMove(result));
     });
 }
 
-void CacheStorageEngineConnection::retrieveRecords(PAL::SessionID sessionID, uint64_t requestIdentifier, uint64_t cacheIdentifier, URL&& url)
+void CacheStorageEngineConnection::retrieveRecords(PAL::SessionID sessionID, uint64_t cacheIdentifier, URL&& url, RecordsCallback&& callback)
 {
-    RELEASE_LOG_IF_ALLOWED("retrieveRecords (%" PRIu64 ") in cache %" PRIu64, requestIdentifier, cacheIdentifier);
-    Engine::retrieveRecords(m_connection.networkProcess(), sessionID, cacheIdentifier, WTFMove(url), [connection = makeRef(m_connection.connection()), sessionID, requestIdentifier](RecordsOrError&& result) {
+    RELEASE_LOG_IF_ALLOWED("retrieveRecords in cache %" PRIu64, cacheIdentifier);
+    Engine::retrieveRecords(m_connection.networkProcess(), sessionID, cacheIdentifier, WTFMove(url), [callback = WTFMove(callback), sessionID](auto&& result) mutable {
         RELEASE_LOG_FUNCTION_IF_ALLOWED_IN_CALLBACK("retrieveRecords", "records size is %lu", [](const auto& value) { return value.size(); });
-        connection->send(Messages::WebCacheStorageConnection::UpdateRecords(requestIdentifier, result), sessionID.sessionID());
+        callback(WTFMove(result));
     });
 }
 
-void CacheStorageEngineConnection::deleteMatchingRecords(PAL::SessionID sessionID, uint64_t requestIdentifier, uint64_t cacheIdentifier, WebCore::ResourceRequest&& request, WebCore::CacheQueryOptions&& options)
+void CacheStorageEngineConnection::deleteMatchingRecords(PAL::SessionID sessionID, uint64_t cacheIdentifier, WebCore::ResourceRequest&& request, WebCore::CacheQueryOptions&& options, RecordIdentifiersCallback&& callback)
 {
-    RELEASE_LOG_IF_ALLOWED("deleteMatchingRecords (%" PRIu64 ") in cache %" PRIu64, requestIdentifier, cacheIdentifier);
-    Engine::deleteMatchingRecords(m_connection.networkProcess(), sessionID, cacheIdentifier, WTFMove(request), WTFMove(options), [connection = makeRef(m_connection.connection()), sessionID, requestIdentifier](RecordIdentifiersOrError&& result) {
+    RELEASE_LOG_IF_ALLOWED("deleteMatchingRecords in cache %" PRIu64, cacheIdentifier);
+    Engine::deleteMatchingRecords(m_connection.networkProcess(), sessionID, cacheIdentifier, WTFMove(request), WTFMove(options), [callback = WTFMove(callback), sessionID](auto&& result) mutable {
         RELEASE_LOG_FUNCTION_IF_ALLOWED_IN_CALLBACK("deleteMatchingRecords", "deleted %lu records",  [](const auto& value) { return value.size(); });
-        connection->send(Messages::WebCacheStorageConnection::DeleteRecordsCompleted(requestIdentifier, result), sessionID.sessionID());
+        callback(WTFMove(result));
     });
 }
 
-void CacheStorageEngineConnection::putRecords(PAL::SessionID sessionID, uint64_t requestIdentifier, uint64_t cacheIdentifier, Vector<Record>&& records)
+void CacheStorageEngineConnection::putRecords(PAL::SessionID sessionID, uint64_t cacheIdentifier, Vector<Record>&& records, RecordIdentifiersCallback&& callback)
 {
-    RELEASE_LOG_IF_ALLOWED("putRecords (%" PRIu64 ") in cache %" PRIu64 ", %lu records", requestIdentifier, cacheIdentifier, records.size());
-    Engine::putRecords(m_connection.networkProcess(), sessionID, cacheIdentifier, WTFMove(records), [connection = makeRef(m_connection.connection()), sessionID, requestIdentifier](RecordIdentifiersOrError&& result) {
+    RELEASE_LOG_IF_ALLOWED("putRecords in cache %" PRIu64 ", %lu records", cacheIdentifier, records.size());
+    Engine::putRecords(m_connection.networkProcess(), sessionID, cacheIdentifier, WTFMove(records), [callback = WTFMove(callback), sessionID](auto&& result) mutable {
         RELEASE_LOG_FUNCTION_IF_ALLOWED_IN_CALLBACK("putRecords", "put %lu records",  [](const auto& value) { return value.size(); });
-        connection->send(Messages::WebCacheStorageConnection::PutRecordsCompleted(requestIdentifier, result), sessionID.sessionID());
+        callback(WTFMove(result));
     });
 }
 

Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.h (245714 => 245715)


--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.h	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.h	2019-05-23 21:15:33 UTC (rev 245715)
@@ -27,6 +27,7 @@
 
 #include "ArgumentCoders.h"
 #include "CacheStorageEngine.h"
+#include "Connection.h"
 #include <WebCore/CacheStorageConnection.h>
 #include <pal/SessionID.h>
 #include <wtf/Forward.h>
@@ -33,8 +34,20 @@
 #include <wtf/RefCounted.h>
 
 namespace IPC {
-class Connection;
-class Decoder;
+
+template<> struct AsyncReplyError<WebCore::DOMCacheEngine::CacheIdentifierOrError> {
+    static WebCore::DOMCacheEngine::CacheIdentifierOrError create() { return makeUnexpected(WebCore::DOMCacheEngine::Error::Internal); };
+};
+template<> struct AsyncReplyError<WebCore::DOMCacheEngine::RecordIdentifiersOrError> {
+    static WebCore::DOMCacheEngine::RecordIdentifiersOrError create() { return makeUnexpected(WebCore::DOMCacheEngine::Error::Internal); };
+};
+template<> struct AsyncReplyError<WebCore::DOMCacheEngine::CacheInfosOrError> {
+    static WebCore::DOMCacheEngine::CacheInfosOrError create() { return makeUnexpected(WebCore::DOMCacheEngine::Error::Internal); };
+};
+template<> struct AsyncReplyError<WebCore::DOMCacheEngine::RecordsOrError> {
+    static WebCore::DOMCacheEngine::RecordsOrError create() { return makeUnexpected(WebCore::DOMCacheEngine::Error::Internal); };
+};
+
 }
 
 namespace WebKit {
@@ -50,13 +63,13 @@
 private:
     explicit CacheStorageEngineConnection(NetworkConnectionToWebProcess&);
 
-    void open(PAL::SessionID, uint64_t openRequestIdentifier, WebCore::ClientOrigin&&, String&& cacheName);
-    void remove(PAL::SessionID, uint64_t removeRequestIdentifier, uint64_t cacheIdentifier);
-    void caches(PAL::SessionID, uint64_t retrieveCachesIdentifier, WebCore::ClientOrigin&&, uint64_t updateCounter);
+    void open(PAL::SessionID, WebCore::ClientOrigin&&, String&& cacheName, WebCore::DOMCacheEngine::CacheIdentifierCallback&&);
+    void remove(PAL::SessionID, uint64_t cacheIdentifier, WebCore::DOMCacheEngine::CacheIdentifierCallback&&);
+    void caches(PAL::SessionID, WebCore::ClientOrigin&&, uint64_t updateCounter, WebCore::DOMCacheEngine::CacheInfosCallback&&);
 
-    void retrieveRecords(PAL::SessionID, uint64_t requestIdentifier, uint64_t cacheIdentifier, URL&&);
-    void deleteMatchingRecords(PAL::SessionID, uint64_t requestIdentifier, uint64_t cacheIdentifier, WebCore::ResourceRequest&&, WebCore::CacheQueryOptions&&);
-    void putRecords(PAL::SessionID, uint64_t requestIdentifier, uint64_t cacheIdentifier, Vector<WebCore::DOMCacheEngine::Record>&&);
+    void retrieveRecords(PAL::SessionID, uint64_t cacheIdentifier, URL&&, WebCore::DOMCacheEngine::RecordsCallback&&);
+    void deleteMatchingRecords(PAL::SessionID, uint64_t cacheIdentifier, WebCore::ResourceRequest&&, WebCore::CacheQueryOptions&&, WebCore::DOMCacheEngine::RecordIdentifiersCallback&&);
+    void putRecords(PAL::SessionID, uint64_t cacheIdentifier, Vector<WebCore::DOMCacheEngine::Record>&&, WebCore::DOMCacheEngine::RecordIdentifiersCallback&&);
 
     void reference(PAL::SessionID, uint64_t cacheIdentifier);
     void dereference(PAL::SessionID, uint64_t cacheIdentifier);

Modified: trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.messages.in (245714 => 245715)


--- trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.messages.in	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/NetworkProcess/cache/CacheStorageEngineConnection.messages.in	2019-05-23 21:15:33 UTC (rev 245715)
@@ -21,17 +21,17 @@
 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 messages -> CacheStorageEngineConnection {
-    Reference(PAL::SessionID sessionID, uint64_t cacheIdentifier);
-    Dereference(PAL::SessionID sessionID, uint64_t cacheIdentifier);
+    Reference(PAL::SessionID sessionID, uint64_t cacheIdentifier)
+    Dereference(PAL::SessionID sessionID, uint64_t cacheIdentifier)
 
-    Open(PAL::SessionID sessionID, uint64_t requestIdentifier, struct WebCore::ClientOrigin origin, String cacheName);
-    Remove(PAL::SessionID sessionID, uint64_t requestIdentifier, uint64_t cacheIdentifier);
-    Caches(PAL::SessionID sessionID, uint64_t requestIdentifier, struct WebCore::ClientOrigin origin, uint64_t updateCounter);
+    Open(PAL::SessionID sessionID, struct WebCore::ClientOrigin origin, String cacheName) -> (WebCore::DOMCacheEngine::CacheIdentifierOrError result) Async
+    Remove(PAL::SessionID sessionID, uint64_t cacheIdentifier) -> (WebCore::DOMCacheEngine::CacheIdentifierOrError result) Async
+    Caches(PAL::SessionID sessionID, struct WebCore::ClientOrigin origin, uint64_t updateCounter) -> (WebCore::DOMCacheEngine::CacheInfosOrError result) Async
 
+    RetrieveRecords(PAL::SessionID sessionID, uint64_t cacheIdentifier, URL url) -> (WebCore::DOMCacheEngine::RecordsOrError result) Async
+    DeleteMatchingRecords(PAL::SessionID sessionID, uint64_t cacheIdentifier, WebCore::ResourceRequest request, struct WebCore::CacheQueryOptions options) -> (WebCore::DOMCacheEngine::RecordIdentifiersOrError result) Async
+    PutRecords(PAL::SessionID sessionID, uint64_t cacheIdentifier, Vector<WebCore::DOMCacheEngine::Record> record) -> (WebCore::DOMCacheEngine::RecordIdentifiersOrError result) Async
+
     ClearMemoryRepresentation(PAL::SessionID sessionID, struct WebCore::ClientOrigin origin) -> (Optional<WebCore::DOMCacheEngine::Error> error) Async
     EngineRepresentation(PAL::SessionID sessionID) -> (String representation) Async
-
-    RetrieveRecords(PAL::SessionID sessionID, uint64_t requestIdentifier, uint64_t cacheIdentifier, URL url);
-    DeleteMatchingRecords(PAL::SessionID sessionID, uint64_t requestIdentifier, uint64_t cacheIdentifier, WebCore::ResourceRequest request, struct WebCore::CacheQueryOptions options);
-    PutRecords(PAL::SessionID sessionID, uint64_t requestIdentifier, uint64_t cacheIdentifier, Vector<WebCore::DOMCacheEngine::Record> record);
 }

Modified: trunk/Source/WebKit/Platform/IPC/ArgumentCoders.h (245714 => 245715)


--- trunk/Source/WebKit/Platform/IPC/ArgumentCoders.h	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/Platform/IPC/ArgumentCoders.h	2019-05-23 21:15:33 UTC (rev 245715)
@@ -31,6 +31,7 @@
 #include <wtf/Forward.h>
 #include <wtf/MonotonicTime.h>
 #include <wtf/SHA1.h>
+#include <wtf/Unexpected.h>
 #include <wtf/WallTime.h>
 
 namespace IPC {

Modified: trunk/Source/WebKit/Platform/IPC/Connection.h (245714 => 245715)


--- trunk/Source/WebKit/Platform/IPC/Connection.h	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/Platform/IPC/Connection.h	2019-05-23 21:15:33 UTC (rev 245715)
@@ -83,6 +83,10 @@
     } \
 while (0)
 
+template<typename AsyncReplyResult> struct AsyncReplyError {
+    static AsyncReplyResult create() { return { }; };
+};
+
 class MachMessage;
 class UnixMessage;
 

Modified: trunk/Source/WebKit/Scripts/webkit/messages.py (245714 => 245715)


--- trunk/Source/WebKit/Scripts/webkit/messages.py	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/Scripts/webkit/messages.py	2019-05-23 21:15:33 UTC (rev 245715)
@@ -594,13 +594,15 @@
                 for x in message.reply_parameters:
                     result.append('    Optional<%s> %s;\n' % (x.type, x.name))
                     result.append('    decoder >> %s;\n' % x.name)
-                    result.append('    if (!%s) {\n        ASSERT_NOT_REACHED();\n        return;\n    }\n' % x.name)
+                    result.append('    if (!%s) {\n        ASSERT_NOT_REACHED();\n        completionHandler(' % x.name)
+                    result.append(', '.join(['IPC::AsyncReplyError<' + x.type + '>::create()' for x in message.reply_parameters]))
+                    result.append(');\n        return;\n    }\n')
                 result.append('    completionHandler(')
                 if len(message.reply_parameters):
                     result.append('WTFMove(*%s)' % ('), WTFMove(*'.join(x.name for x in message.reply_parameters)))
                 result.append(');\n}\n\n')
                 result.append('void %s::cancelReply(CompletionHandler<void(%s)>&& completionHandler)\n{\n    completionHandler(' % move_parameters)
-                result.append(', '.join(['{ }' for x in message.reply_parameters]))
+                result.append(', '.join(['IPC::AsyncReplyError<' + x.type + '>::create()' for x in message.reply_parameters]))
                 result.append(');\n}\n\n')
 
             result.append('void %s::send(std::unique_ptr<IPC::Encoder>&& encoder, IPC::Connection& connection' % (message.name))

Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (245714 => 245715)


--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj	2019-05-23 21:15:33 UTC (rev 245715)
@@ -969,7 +969,6 @@
 		517A52D91F43A9DA00DCDC0A /* WebSWServerConnectionMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 517A52D61F43A9B600DCDC0A /* WebSWServerConnectionMessages.h */; };
 		517A530F1F47A86200DCDC0A /* WebSWClientConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517A530E1F47A84300DCDC0A /* WebSWClientConnectionMessageReceiver.cpp */; };
 		517A53101F47A86200DCDC0A /* WebSWClientConnectionMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 517A530D1F47A84300DCDC0A /* WebSWClientConnectionMessages.h */; };
-		517CF0E3163A486C00C2950D /* WebCacheStorageConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517CF0E1163A486C00C2950D /* WebCacheStorageConnectionMessageReceiver.cpp */; };
 		517CF0E3163A486C00C2950E /* NetworkProcessConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517CF0E1163A486C00C2950E /* NetworkProcessConnectionMessageReceiver.cpp */; };
 		517CF0E3163A486C00C2950F /* CacheStorageEngineConnectionMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 517CF0E1163A486C00C2950F /* CacheStorageEngineConnectionMessageReceiver.cpp */; };
 		517CF0E4163A486C00C2950E /* NetworkProcessConnectionMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 517CF0E2163A486C00C2950E /* NetworkProcessConnectionMessages.h */; };
@@ -3099,7 +3098,6 @@
 		4151E5C31FBB90A900E47E2D /* FormDataReference.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FormDataReference.h; sourceTree = "<group>"; };
 		4157853021276B6F00DD3800 /* copy-webcontent-resources-to-private-headers.sh */ = {isa = PBXFileReference; lastKnownFileType = text.script.sh; path = "copy-webcontent-resources-to-private-headers.sh"; sourceTree = "<group>"; };
 		4157E4AF20E2EC9800A6C0D7 /* com.google.o1dbrowserplugin.sb */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = com.google.o1dbrowserplugin.sb; sourceTree = "<group>"; };
-		41897ECB1F415D5C0016FA42 /* WebCacheStorageConnection.messages.in */ = {isa = PBXFileReference; lastKnownFileType = text; path = WebCacheStorageConnection.messages.in; sourceTree = "<group>"; };
 		41897ECC1F415D5C0016FA42 /* WebCacheStorageProvider.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebCacheStorageProvider.cpp; sourceTree = "<group>"; };
 		41897ECD1F415D5C0016FA42 /* WebCacheStorageConnection.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebCacheStorageConnection.h; sourceTree = "<group>"; };
 		41897ECE1F415D5C0016FA42 /* WebCacheStorageConnection.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebCacheStorageConnection.cpp; sourceTree = "<group>"; };
@@ -3289,7 +3287,6 @@
 		517A530C1F479E9700DCDC0A /* WebSWClientConnection.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = WebSWClientConnection.messages.in; sourceTree = "<group>"; };
 		517A530D1F47A84300DCDC0A /* WebSWClientConnectionMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebSWClientConnectionMessages.h; path = DerivedSources/WebKit2/WebSWClientConnectionMessages.h; sourceTree = BUILT_PRODUCTS_DIR; };
 		517A530E1F47A84300DCDC0A /* WebSWClientConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebSWClientConnectionMessageReceiver.cpp; path = DerivedSources/WebKit2/WebSWClientConnectionMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
-		517CF0E1163A486C00C2950D /* WebCacheStorageConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebCacheStorageConnectionMessageReceiver.cpp; path = DerivedSources/WebKit2/WebCacheStorageConnectionMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
 		517CF0E1163A486C00C2950E /* NetworkProcessConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkProcessConnectionMessageReceiver.cpp; path = DerivedSources/WebKit2/NetworkProcessConnectionMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
 		517CF0E1163A486C00C2950F /* CacheStorageEngineConnectionMessageReceiver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CacheStorageEngineConnectionMessageReceiver.cpp; path = DerivedSources/WebKit2/CacheStorageEngineConnectionMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
 		517CF0E2163A486C00C2950E /* NetworkProcessConnectionMessages.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkProcessConnectionMessages.h; path = DerivedSources/WebKit2/NetworkProcessConnectionMessages.h; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -6516,7 +6513,6 @@
 			children = (
 				41897ECE1F415D5C0016FA42 /* WebCacheStorageConnection.cpp */,
 				41897ECD1F415D5C0016FA42 /* WebCacheStorageConnection.h */,
-				41897ECB1F415D5C0016FA42 /* WebCacheStorageConnection.messages.in */,
 				41897ECC1F415D5C0016FA42 /* WebCacheStorageProvider.cpp */,
 				41D129D91F3D101400D15E47 /* WebCacheStorageProvider.h */,
 			);
@@ -8676,7 +8672,6 @@
 				1C0A19511C8FFDFB00FE0EBB /* WebAutomationSessionProxyMessageReceiver.cpp */,
 				1C0A19521C8FFDFB00FE0EBB /* WebAutomationSessionProxyMessages.h */,
 				1C0A195B1C916E1B00FE0EBB /* WebAutomationSessionProxyScriptSource.h */,
-				517CF0E1163A486C00C2950D /* WebCacheStorageConnectionMessageReceiver.cpp */,
 				1A1FEC1A1627B45600700F6D /* WebConnectionMessageReceiver.cpp */,
 				1A1FEC1B1627B45700700F6D /* WebConnectionMessages.h */,
 				330934431315B9220097A7BC /* WebCookieManagerMessageReceiver.cpp */,
@@ -11258,7 +11253,6 @@
 				57DCED702142EE680016B847 /* WebAuthenticatorCoordinatorProxyMessageReceiver.cpp in Sources */,
 				1C0A19571C90068F00FE0EBB /* WebAutomationSessionMessageReceiver.cpp in Sources */,
 				1C0A19531C8FFDFB00FE0EBB /* WebAutomationSessionProxyMessageReceiver.cpp in Sources */,
-				517CF0E3163A486C00C2950D /* WebCacheStorageConnectionMessageReceiver.cpp in Sources */,
 				1A1FEC1C1627B45700700F6D /* WebConnectionMessageReceiver.cpp in Sources */,
 				330934471315B9220097A7BC /* WebCookieManagerMessageReceiver.cpp in Sources */,
 				330934491315B9220097A7BC /* WebCookieManagerProxyMessageReceiver.cpp in Sources */,

Modified: trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.cpp (245714 => 245715)


--- trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.cpp	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.cpp	2019-05-23 21:15:33 UTC (rev 245715)
@@ -56,34 +56,34 @@
     return WebProcess::singleton().ensureNetworkProcessConnection().connection();
 }
 
-void WebCacheStorageConnection::doOpen(uint64_t requestIdentifier, const WebCore::ClientOrigin& origin, const String& cacheName)
+void WebCacheStorageConnection::open(const WebCore::ClientOrigin& origin, const String& cacheName, DOMCacheEngine::CacheIdentifierCallback&& callback)
 {
-    connection().send(Messages::CacheStorageEngineConnection::Open(m_sessionID, requestIdentifier, origin, cacheName), 0);
+    connection().sendWithAsyncReply(Messages::CacheStorageEngineConnection::Open(m_sessionID, origin, cacheName), WTFMove(callback));
 }
 
-void WebCacheStorageConnection::doRemove(uint64_t requestIdentifier, uint64_t cacheIdentifier)
+void WebCacheStorageConnection::remove(uint64_t cacheIdentifier, DOMCacheEngine::CacheIdentifierCallback&& callback)
 {
-    connection().send(Messages::CacheStorageEngineConnection::Remove(m_sessionID, requestIdentifier, cacheIdentifier), 0);
+    connection().sendWithAsyncReply(Messages::CacheStorageEngineConnection::Remove(m_sessionID, cacheIdentifier), WTFMove(callback));
 }
 
-void WebCacheStorageConnection::doRetrieveCaches(uint64_t requestIdentifier, const WebCore::ClientOrigin& origin, uint64_t updateCounter)
+void WebCacheStorageConnection::retrieveCaches(const WebCore::ClientOrigin& origin, uint64_t updateCounter, DOMCacheEngine::CacheInfosCallback&& callback)
 {
-    connection().send(Messages::CacheStorageEngineConnection::Caches(m_sessionID, requestIdentifier, origin, updateCounter), 0);
+    connection().sendWithAsyncReply(Messages::CacheStorageEngineConnection::Caches(m_sessionID, origin, updateCounter), WTFMove(callback));
 }
 
-void WebCacheStorageConnection::doRetrieveRecords(uint64_t requestIdentifier, uint64_t cacheIdentifier, const URL& url)
+void WebCacheStorageConnection::retrieveRecords(uint64_t cacheIdentifier, const URL& url, DOMCacheEngine::RecordsCallback&& callback)
 {
-    connection().send(Messages::CacheStorageEngineConnection::RetrieveRecords(m_sessionID, requestIdentifier, cacheIdentifier, url), 0);
+    connection().sendWithAsyncReply(Messages::CacheStorageEngineConnection::RetrieveRecords(m_sessionID, cacheIdentifier, url), WTFMove(callback));
 }
 
-void WebCacheStorageConnection::doBatchDeleteOperation(uint64_t requestIdentifier, uint64_t cacheIdentifier, const WebCore::ResourceRequest& request, WebCore::CacheQueryOptions&& options)
+void WebCacheStorageConnection::batchDeleteOperation(uint64_t cacheIdentifier, const WebCore::ResourceRequest& request, WebCore::CacheQueryOptions&& options, DOMCacheEngine::RecordIdentifiersCallback&& callback)
 {
-    connection().send(Messages::CacheStorageEngineConnection::DeleteMatchingRecords(m_sessionID, requestIdentifier, cacheIdentifier, request, options), 0);
+    connection().sendWithAsyncReply(Messages::CacheStorageEngineConnection::DeleteMatchingRecords(m_sessionID, cacheIdentifier, request, options), WTFMove(callback));
 }
 
-void WebCacheStorageConnection::doBatchPutOperation(uint64_t requestIdentifier, uint64_t cacheIdentifier, Vector<Record>&& records)
+void WebCacheStorageConnection::batchPutOperation(uint64_t cacheIdentifier, Vector<Record>&& records, DOMCacheEngine::RecordIdentifiersCallback&& callback)
 {
-    connection().send(Messages::CacheStorageEngineConnection::PutRecords(m_sessionID, requestIdentifier, cacheIdentifier, records), 0);
+    connection().sendWithAsyncReply(Messages::CacheStorageEngineConnection::PutRecords(m_sessionID, cacheIdentifier, records), WTFMove(callback));
 }
 
 void WebCacheStorageConnection::reference(uint64_t cacheIdentifier)
@@ -96,42 +96,12 @@
     connection().send(Messages::CacheStorageEngineConnection::Dereference(m_sessionID, cacheIdentifier), 0);
 }
 
-void WebCacheStorageConnection::openCompleted(uint64_t requestIdentifier, const CacheIdentifierOrError& result)
-{
-    CacheStorageConnection::openCompleted(requestIdentifier, result);
-}
-
-void WebCacheStorageConnection::removeCompleted(uint64_t requestIdentifier, const CacheIdentifierOrError& result)
-{
-    CacheStorageConnection::removeCompleted(requestIdentifier, result);
-}
-
-void WebCacheStorageConnection::updateCaches(uint64_t requestIdentifier, CacheInfosOrError&& result)
-{
-    CacheStorageConnection::updateCaches(requestIdentifier, WTFMove(result));
-}
-
-void WebCacheStorageConnection::updateRecords(uint64_t requestIdentifier, RecordsOrError&& result)
-{
-    CacheStorageConnection::updateRecords(requestIdentifier, WTFMove(result));
-}
-
-void WebCacheStorageConnection::deleteRecordsCompleted(uint64_t requestIdentifier, RecordIdentifiersOrError&& result)
-{
-    CacheStorageConnection::deleteRecordsCompleted(requestIdentifier, WTFMove(result));
-}
-
-void WebCacheStorageConnection::putRecordsCompleted(uint64_t requestIdentifier, RecordIdentifiersOrError&& result)
-{
-    CacheStorageConnection::putRecordsCompleted(requestIdentifier, WTFMove(result));
-}
-
 void WebCacheStorageConnection::clearMemoryRepresentation(const WebCore::ClientOrigin& origin, CompletionCallback&& callback)
 {
     connection().sendWithAsyncReply(Messages::CacheStorageEngineConnection::ClearMemoryRepresentation { m_sessionID, origin }, WTFMove(callback));
 }
 
-void WebCacheStorageConnection::engineRepresentation(WTF::Function<void(const String&)>&& callback)
+void WebCacheStorageConnection::engineRepresentation(CompletionHandler<void(const String&)>&& callback)
 {
     connection().sendWithAsyncReply(Messages::CacheStorageEngineConnection::EngineRepresentation { m_sessionID }, WTFMove(callback));
 }

Modified: trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.h (245714 => 245715)


--- trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.h	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.h	2019-05-23 21:15:33 UTC (rev 245715)
@@ -52,29 +52,21 @@
     IPC::Connection& connection();
 
     // WebCore::CacheStorageConnection
-    void doOpen(uint64_t requestIdentifier, const WebCore::ClientOrigin&, const String& cacheName) final;
-    void doRemove(uint64_t requestIdentifier, uint64_t cacheIdentifier) final;
-    void doRetrieveCaches(uint64_t requestIdentifier, const WebCore::ClientOrigin&, uint64_t updateCounter) final;
+    void open(const WebCore::ClientOrigin&, const String& cacheName, WebCore::DOMCacheEngine::CacheIdentifierCallback&&) final;
+    void remove(uint64_t cacheIdentifier, WebCore::DOMCacheEngine::CacheIdentifierCallback&&) final;
+    void retrieveCaches(const WebCore::ClientOrigin&, uint64_t updateCounter, WebCore::DOMCacheEngine::CacheInfosCallback&&) final;
 
-    void doRetrieveRecords(uint64_t requestIdentifier, uint64_t cacheIdentifier, const URL&) final;
-    void doBatchDeleteOperation(uint64_t requestIdentifier, uint64_t cacheIdentifier, const WebCore::ResourceRequest&, WebCore::CacheQueryOptions&&) final;
-    void doBatchPutOperation(uint64_t requestIdentifier, uint64_t cacheIdentifier, Vector<WebCore::DOMCacheEngine::Record>&&) final;
+    void retrieveRecords(uint64_t cacheIdentifier, const URL&, WebCore::DOMCacheEngine::RecordsCallback&&) final;
+    void batchDeleteOperation(uint64_t cacheIdentifier, const WebCore::ResourceRequest&, WebCore::CacheQueryOptions&&, WebCore::DOMCacheEngine::RecordIdentifiersCallback&&) final;
+    void batchPutOperation(uint64_t cacheIdentifier, Vector<WebCore::DOMCacheEngine::Record>&&, WebCore::DOMCacheEngine::RecordIdentifiersCallback&&) final;
 
     void reference(uint64_t cacheIdentifier) final;
     void dereference(uint64_t cacheIdentifier) final;
 
     void clearMemoryRepresentation(const WebCore::ClientOrigin&, WebCore::DOMCacheEngine::CompletionCallback&&) final;
-    void engineRepresentation(WTF::Function<void(const String&)>&&) final;
+    void engineRepresentation(CompletionHandler<void(const String&)>&&) final;
     void updateQuotaBasedOnSpaceUsage(const WebCore::ClientOrigin&) final;
 
-    void openCompleted(uint64_t requestIdentifier, const WebCore::DOMCacheEngine::CacheIdentifierOrError&);
-    void removeCompleted(uint64_t requestIdentifier, const WebCore::DOMCacheEngine::CacheIdentifierOrError&);
-    void updateCaches(uint64_t requestIdentifier, WebCore::DOMCacheEngine::CacheInfosOrError&&);
-
-    void updateRecords(uint64_t requestIdentifier, WebCore::DOMCacheEngine::RecordsOrError&&);
-    void deleteRecordsCompleted(uint64_t requestIdentifier, WebCore::DOMCacheEngine::RecordIdentifiersOrError&&);
-    void putRecordsCompleted(uint64_t requestIdentifier, WebCore::DOMCacheEngine::RecordIdentifiersOrError&&);
-
     WebCacheStorageProvider& m_provider;
     PAL::SessionID m_sessionID;
 };

Deleted: trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.messages.in (245714 => 245715)


--- trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.messages.in	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageConnection.messages.in	2019-05-23 21:15:33 UTC (rev 245715)
@@ -1,31 +0,0 @@
-# Copyright (C) 2017 Apple Inc. All rights reserved.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-# 1.  Redistributions of source code must retain the above copyright
-#     notice, this list of conditions and the following disclaimer.
-# 2.  Redistributions in binary form must reproduce the above copyright
-#     notice, this list of conditions and the following disclaimer in the
-#     documentation and/or other materials provided with the distribution.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' AND
-# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
-# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-messages -> WebCacheStorageConnection {
-    OpenCompleted(uint64_t requestIdentifier, WebCore::DOMCacheEngine::CacheIdentifierOrError result);
-    RemoveCompleted(uint64_t requestIdentifier, WebCore::DOMCacheEngine::CacheIdentifierOrError result);
-    UpdateCaches(uint64_t requestIdentifier, WebCore::DOMCacheEngine::CacheInfosOrError result);
-
-    UpdateRecords(uint64_t requestIdentifier, WebCore::DOMCacheEngine::RecordsOrError result);
-    DeleteRecordsCompleted(uint64_t requestIdentifier, WebCore::DOMCacheEngine::RecordIdentifiersOrError result);
-    PutRecordsCompleted(uint64_t requestIdentifier, WebCore::DOMCacheEngine::RecordIdentifiersOrError result);
-}

Modified: trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageProvider.cpp (245714 => 245715)


--- trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageProvider.cpp	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageProvider.cpp	2019-05-23 21:15:33 UTC (rev 245715)
@@ -49,10 +49,4 @@
     return *m_defaultConnection;
 }
 
-void WebCacheStorageProvider::process(IPC::Connection& connection, IPC::Decoder& decoder)
-{
-    if (auto* cacheConnection = m_connections.get(decoder.destinationID()))
-        cacheConnection->didReceiveMessage(connection, decoder);
 }
-
-}

Modified: trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageProvider.h (245714 => 245715)


--- trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageProvider.h	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/WebProcess/Cache/WebCacheStorageProvider.h	2019-05-23 21:15:33 UTC (rev 245715)
@@ -43,8 +43,6 @@
 
     Ref<WebCore::CacheStorageConnection> createCacheStorageConnection(PAL::SessionID) final;
 
-    void process(IPC::Connection&, IPC::Decoder&);
-
 private:
     WebCacheStorageProvider() = default;
 

Modified: trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnection.cpp (245714 => 245715)


--- trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnection.cpp	2019-05-23 21:08:54 UTC (rev 245714)
+++ trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnection.cpp	2019-05-23 21:15:33 UTC (rev 245715)
@@ -32,8 +32,6 @@
 #include "ServiceWorkerClientFetchMessages.h"
 #include "StorageAreaMap.h"
 #include "StorageAreaMapMessages.h"
-#include "WebCacheStorageConnection.h"
-#include "WebCacheStorageConnectionMessages.h"
 #include "WebCacheStorageProvider.h"
 #include "WebCoreArgumentCoders.h"
 #include "WebIDBConnectionToServerMessages.h"
@@ -121,10 +119,6 @@
         return;
     }
 #endif
-    if (decoder.messageReceiverName() == Messages::WebCacheStorageConnection::messageReceiverName()) {
-        WebProcess::singleton().cacheStorageProvider().process(connection, decoder);
-        return;
-    }
 
 #if ENABLE(INDEXED_DATABASE)
     if (decoder.messageReceiverName() == Messages::WebIDBConnectionToServer::messageReceiverName()) {
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to