Title: [287763] trunk/Source
Revision
287763
Author
you...@apple.com
Date
2022-01-07 10:53:26 -0800 (Fri, 07 Jan 2022)

Log Message

Use completion handlers for takeAllMessagesForPort methods
https://bugs.webkit.org/show_bug.cgi?id=234947

Reviewed by Chris Dumez.

Source/WebCore:

Covered by existing tests.

* dom/MessagePort.cpp:
* dom/messageports/MessagePortChannel.cpp:
* dom/messageports/MessagePortChannel.h:
* dom/messageports/MessagePortChannelProvider.h:
* dom/messageports/MessagePortChannelProviderImpl.cpp:
* dom/messageports/MessagePortChannelProviderImpl.h:
* dom/messageports/MessagePortChannelRegistry.cpp:
* dom/messageports/MessagePortChannelRegistry.h:
* dom/messageports/WorkerMessagePortChannelProvider.cpp:
* dom/messageports/WorkerMessagePortChannelProvider.h:

Source/WebKit:

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
* NetworkProcess/NetworkConnectionToWebProcess.h:
* WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp:
* WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (287762 => 287763)


--- trunk/Source/WebCore/ChangeLog	2022-01-07 18:48:40 UTC (rev 287762)
+++ trunk/Source/WebCore/ChangeLog	2022-01-07 18:53:26 UTC (rev 287763)
@@ -1,3 +1,23 @@
+2022-01-07  Youenn Fablet  <you...@apple.com>
+
+        Use completion handlers for takeAllMessagesForPort methods
+        https://bugs.webkit.org/show_bug.cgi?id=234947
+
+        Reviewed by Chris Dumez.
+
+        Covered by existing tests.
+
+        * dom/MessagePort.cpp:
+        * dom/messageports/MessagePortChannel.cpp:
+        * dom/messageports/MessagePortChannel.h:
+        * dom/messageports/MessagePortChannelProvider.h:
+        * dom/messageports/MessagePortChannelProviderImpl.cpp:
+        * dom/messageports/MessagePortChannelProviderImpl.h:
+        * dom/messageports/MessagePortChannelRegistry.cpp:
+        * dom/messageports/MessagePortChannelRegistry.h:
+        * dom/messageports/WorkerMessagePortChannelProvider.cpp:
+        * dom/messageports/WorkerMessagePortChannelProvider.h:
+
 2022-01-07  Antoine Quint  <grao...@webkit.org>
 
         Expose iterators on AnimationList

Modified: trunk/Source/WebCore/dom/MessagePort.cpp (287762 => 287763)


--- trunk/Source/WebCore/dom/MessagePort.cpp	2022-01-07 18:48:40 UTC (rev 287762)
+++ trunk/Source/WebCore/dom/MessagePort.cpp	2022-01-07 18:53:26 UTC (rev 287763)
@@ -260,7 +260,7 @@
     if (!context || context->activeDOMObjectsAreSuspended() || !isEntangled())
         return;
 
-    auto messagesTakenHandler = [this, weakThis = WeakPtr { *this }](Vector<MessageWithMessagePorts>&& messages, Function<void()>&& completionCallback) mutable {
+    auto messagesTakenHandler = [this, weakThis = WeakPtr { *this }](Vector<MessageWithMessagePorts>&& messages, CompletionHandler<void()>&& completionCallback) mutable {
         auto scopeExit = makeScopeExit(WTFMove(completionCallback));
 
         if (!weakThis)

Modified: trunk/Source/WebCore/dom/messageports/MessagePortChannel.cpp (287762 => 287763)


--- trunk/Source/WebCore/dom/messageports/MessagePortChannel.cpp	2022-01-07 18:48:40 UTC (rev 287762)
+++ trunk/Source/WebCore/dom/messageports/MessagePortChannel.cpp	2022-01-07 18:53:26 UTC (rev 287763)
@@ -147,7 +147,7 @@
     return false;
 }
 
-void MessagePortChannel::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&& callback)
+void MessagePortChannel::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&& callback)
 {
     ASSERT(isMainThread());
 

Modified: trunk/Source/WebCore/dom/messageports/MessagePortChannel.h (287762 => 287763)


--- trunk/Source/WebCore/dom/messageports/MessagePortChannel.h	2022-01-07 18:48:40 UTC (rev 287762)
+++ trunk/Source/WebCore/dom/messageports/MessagePortChannel.h	2022-01-07 18:53:26 UTC (rev 287763)
@@ -53,7 +53,7 @@
     void closePort(const MessagePortIdentifier&);
     bool postMessageToRemote(MessageWithMessagePorts&&, const MessagePortIdentifier& remoteTarget);
 
-    void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&&);
+    void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&&);
     void checkRemotePortForActivity(const MessagePortIdentifier&, CompletionHandler<void(MessagePortChannelProvider::HasActivity)>&& callback);
 
     WEBCORE_EXPORT bool hasAnyMessagesPendingOrInFlight() const;

Modified: trunk/Source/WebCore/dom/messageports/MessagePortChannelProvider.h (287762 => 287763)


--- trunk/Source/WebCore/dom/messageports/MessagePortChannelProvider.h	2022-01-07 18:48:40 UTC (rev 287762)
+++ trunk/Source/WebCore/dom/messageports/MessagePortChannelProvider.h	2022-01-07 18:53:26 UTC (rev 287763)
@@ -49,7 +49,7 @@
     virtual void messagePortDisentangled(const MessagePortIdentifier& local) = 0;
     virtual void messagePortClosed(const MessagePortIdentifier& local) = 0;
     
-    virtual void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&&) = 0;
+    virtual void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&&) = 0;
 
     virtual void postMessageToRemote(MessageWithMessagePorts&&, const MessagePortIdentifier& remoteTarget) = 0;
 

Modified: trunk/Source/WebCore/dom/messageports/MessagePortChannelProviderImpl.cpp (287762 => 287763)


--- trunk/Source/WebCore/dom/messageports/MessagePortChannelProviderImpl.cpp	2022-01-07 18:48:40 UTC (rev 287762)
+++ trunk/Source/WebCore/dom/messageports/MessagePortChannelProviderImpl.cpp	2022-01-07 18:53:26 UTC (rev 287763)
@@ -86,10 +86,10 @@
     });
 }
 
-void MessagePortChannelProviderImpl::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&& outerCallback)
+void MessagePortChannelProviderImpl::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&& outerCallback)
 {
     // It is the responsibility of outerCallback to get itself to the appropriate thread (e.g. WebWorker thread)
-    auto callback = [outerCallback = WTFMove(outerCallback)](Vector<MessageWithMessagePorts>&& messages, Function<void()>&& messageDeliveryCallback) mutable {
+    auto callback = [outerCallback = WTFMove(outerCallback)](Vector<MessageWithMessagePorts>&& messages, CompletionHandler<void()>&& messageDeliveryCallback) mutable {
         ASSERT(isMainThread());
         outerCallback(WTFMove(messages), WTFMove(messageDeliveryCallback));
     };

Modified: trunk/Source/WebCore/dom/messageports/MessagePortChannelProviderImpl.h (287762 => 287763)


--- trunk/Source/WebCore/dom/messageports/MessagePortChannelProviderImpl.h	2022-01-07 18:48:40 UTC (rev 287762)
+++ trunk/Source/WebCore/dom/messageports/MessagePortChannelProviderImpl.h	2022-01-07 18:53:26 UTC (rev 287763)
@@ -41,7 +41,7 @@
     void messagePortDisentangled(const MessagePortIdentifier& local) final;
     void messagePortClosed(const MessagePortIdentifier& local) final;
     void postMessageToRemote(MessageWithMessagePorts&&, const MessagePortIdentifier& remoteTarget) final;
-    void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&&) final;
+    void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&&) final;
     void checkRemotePortForActivity(const MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) final;
 
     MessagePortChannelRegistry m_registry;

Modified: trunk/Source/WebCore/dom/messageports/MessagePortChannelRegistry.cpp (287762 => 287763)


--- trunk/Source/WebCore/dom/messageports/MessagePortChannelRegistry.cpp	2022-01-07 18:48:40 UTC (rev 287762)
+++ trunk/Source/WebCore/dom/messageports/MessagePortChannelRegistry.cpp	2022-01-07 18:53:26 UTC (rev 287763)
@@ -141,7 +141,7 @@
     return channel->postMessageToRemote(WTFMove(message), remoteTarget);
 }
 
-void MessagePortChannelRegistry::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&& callback)
+void MessagePortChannelRegistry::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&& callback)
 {
     ASSERT(isMainThread());
 

Modified: trunk/Source/WebCore/dom/messageports/MessagePortChannelRegistry.h (287762 => 287763)


--- trunk/Source/WebCore/dom/messageports/MessagePortChannelRegistry.h	2022-01-07 18:48:40 UTC (rev 287762)
+++ trunk/Source/WebCore/dom/messageports/MessagePortChannelRegistry.h	2022-01-07 18:53:26 UTC (rev 287763)
@@ -45,7 +45,7 @@
     WEBCORE_EXPORT void didDisentangleMessagePort(const MessagePortIdentifier& local);
     WEBCORE_EXPORT void didCloseMessagePort(const MessagePortIdentifier& local);
     WEBCORE_EXPORT bool didPostMessageToRemote(MessageWithMessagePorts&&, const MessagePortIdentifier& remoteTarget);
-    WEBCORE_EXPORT void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&&);
+    WEBCORE_EXPORT void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&&);
     WEBCORE_EXPORT void checkRemotePortForActivity(const MessagePortIdentifier& remoteTarget, CompletionHandler<void(MessagePortChannelProvider::HasActivity)>&& callback);
 
     WEBCORE_EXPORT MessagePortChannel* existingChannelContainingPort(const MessagePortIdentifier&);

Modified: trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.cpp (287762 => 287763)


--- trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.cpp	2022-01-07 18:48:40 UTC (rev 287762)
+++ trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.cpp	2022-01-07 18:53:26 UTC (rev 287763)
@@ -110,7 +110,7 @@
     CompletionHandler<void()> m_completionHandler;
 };
 
-void WorkerMessagePortChannelProvider::takeAllMessagesForPort(const MessagePortIdentifier& identifier, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&& callback)
+void WorkerMessagePortChannelProvider::takeAllMessagesForPort(const MessagePortIdentifier& identifier, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&& callback)
 {
     uint64_t callbackIdentifier = ++m_lastCallbackIdentifier;
     m_takeAllMessagesCallbacks.add(callbackIdentifier, WTFMove(callback));

Modified: trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.h (287762 => 287763)


--- trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.h	2022-01-07 18:48:40 UTC (rev 287762)
+++ trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.h	2022-01-07 18:53:26 UTC (rev 287763)
@@ -46,7 +46,7 @@
     void messagePortDisentangled(const MessagePortIdentifier& local) final;
     void messagePortClosed(const MessagePortIdentifier& local) final;
     void postMessageToRemote(MessageWithMessagePorts&&, const MessagePortIdentifier& remoteTarget) final;
-    void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&&) final;
+    void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&&) final;
     void checkRemotePortForActivity(const MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) final;
 
     WorkerOrWorkletGlobalScope& m_scope;

Modified: trunk/Source/WebKit/ChangeLog (287762 => 287763)


--- trunk/Source/WebKit/ChangeLog	2022-01-07 18:48:40 UTC (rev 287762)
+++ trunk/Source/WebKit/ChangeLog	2022-01-07 18:53:26 UTC (rev 287763)
@@ -1,3 +1,15 @@
+2022-01-07  Youenn Fablet  <you...@apple.com>
+
+        Use completion handlers for takeAllMessagesForPort methods
+        https://bugs.webkit.org/show_bug.cgi?id=234947
+
+        Reviewed by Chris Dumez.
+
+        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
+        * NetworkProcess/NetworkConnectionToWebProcess.h:
+        * WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp:
+        * WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h:
+
 2022-01-07  Peng Liu  <peng.l...@apple.com>
 
         Clean up FullscreenClient

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (287762 => 287763)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2022-01-07 18:48:40 UTC (rev 287762)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2022-01-07 18:53:26 UTC (rev 287763)
@@ -142,6 +142,10 @@
     for (auto& port : m_processEntangledPorts)
         networkProcess().messagePortChannelRegistry().didCloseMessagePort(port);
 
+    auto completionHandlers = std::exchange(m_messageBatchDeliveryCompletionHandlers, { });
+    for (auto& completionHandler : completionHandlers.values())
+        completionHandler();
+
 #if HAVE(COOKIE_CHANGE_LISTENER_API)
     if (auto* networkStorageSession = storageSession())
         networkStorageSession->stopListeningForCookieChangeNotifications(*this, m_hostsWithCookieListeners);
@@ -1227,7 +1231,7 @@
     networkProcess().messagePortChannelRegistry().didCloseMessagePort(port);
 }
 
-uint64_t NetworkConnectionToWebProcess::nextMessageBatchIdentifier(Function<void()>&& deliveryCallback)
+uint64_t NetworkConnectionToWebProcess::nextMessageBatchIdentifier(CompletionHandler<void()>&& deliveryCallback)
 {
     static uint64_t currentMessageBatchIdentifier;
     ASSERT(!m_messageBatchDeliveryCompletionHandlers.contains(currentMessageBatchIdentifier + 1));
@@ -1237,7 +1241,7 @@
 
 void NetworkConnectionToWebProcess::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, uint64_t)>&& callback)
 {
-    networkProcess().messagePortChannelRegistry().takeAllMessagesForPort(port, [this, protectedThis = Ref { *this }, callback = WTFMove(callback)](auto&& messages, Function<void()>&& deliveryCallback) mutable {
+    networkProcess().messagePortChannelRegistry().takeAllMessagesForPort(port, [this, protectedThis = Ref { *this }, callback = WTFMove(callback)](auto&& messages, auto&& deliveryCallback) mutable {
         callback(WTFMove(messages), nextMessageBatchIdentifier(WTFMove(deliveryCallback)));
     });
 }

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h (287762 => 287763)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h	2022-01-07 18:48:40 UTC (rev 287762)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h	2022-01-07 18:53:26 UTC (rev 287763)
@@ -303,7 +303,7 @@
     void removeOriginAccessAllowListEntry(const String& sourceOrigin, const String& destinationProtocol, const String& destinationHost, bool allowDestinationSubdomains);
     void resetOriginAccessAllowLists();
 
-    uint64_t nextMessageBatchIdentifier(Function<void()>&&);
+    uint64_t nextMessageBatchIdentifier(CompletionHandler<void()>&&);
 
     void domCookiesForHost(const String& host, bool subscribeToCookieChangeNotifications, CompletionHandler<void(const Vector<WebCore::Cookie>&)>&&);
 
@@ -410,7 +410,7 @@
     const WebCore::ProcessIdentifier m_webProcessIdentifier;
 
     HashSet<WebCore::MessagePortIdentifier> m_processEntangledPorts;
-    HashMap<uint64_t, Function<void()>> m_messageBatchDeliveryCompletionHandlers;
+    HashMap<uint64_t, CompletionHandler<void()>> m_messageBatchDeliveryCompletionHandlers;
     Ref<NetworkSchemeRegistry> m_schemeRegistry;
         
     HashSet<URL> m_blobURLs;

Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp (287762 => 287763)


--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp	2022-01-07 18:48:40 UTC (rev 287762)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp	2022-01-07 18:53:26 UTC (rev 287763)
@@ -76,7 +76,7 @@
     networkProcessConnection().send(Messages::NetworkConnectionToWebProcess::MessagePortClosed { port }, 0);
 }
 
-void WebMessagePortChannelProvider::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&& completionHandler)
+void WebMessagePortChannelProvider::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&& completionHandler)
 {
     networkProcessConnection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::TakeAllMessagesForPort { port }, [completionHandler = WTFMove(completionHandler)](auto&& messages, uint64_t messageBatchIdentifier) mutable {
         completionHandler(WTFMove(messages), [messageBatchIdentifier] {

Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h (287762 => 287763)


--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h	2022-01-07 18:48:40 UTC (rev 287762)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h	2022-01-07 18:53:26 UTC (rev 287763)
@@ -42,7 +42,7 @@
     void entangleLocalPortInThisProcessToRemote(const WebCore::MessagePortIdentifier& local, const WebCore::MessagePortIdentifier& remote) final;
     void messagePortDisentangled(const WebCore::MessagePortIdentifier& local) final;
     void messagePortClosed(const WebCore::MessagePortIdentifier& local) final;
-    void takeAllMessagesForPort(const WebCore::MessagePortIdentifier&, CompletionHandler<void(Vector<WebCore::MessageWithMessagePorts>&&, Function<void()>&&)>&&) final;
+    void takeAllMessagesForPort(const WebCore::MessagePortIdentifier&, CompletionHandler<void(Vector<WebCore::MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&&) final;
     void postMessageToRemote(WebCore::MessageWithMessagePorts&&, const WebCore::MessagePortIdentifier& remoteTarget) final;
     void checkRemotePortForActivity(const WebCore::MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) final;
 };
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to