Changeset 287763 in webkit
- Timestamp:
- Jan 7, 2022, 10:53:26 AM (5 years ago)
- Location:
- trunk/Source
- Files:
-
- 16 edited
-
WebCore/ChangeLog (modified) (1 diff)
-
WebCore/dom/MessagePort.cpp (modified) (1 diff)
-
WebCore/dom/messageports/MessagePortChannel.cpp (modified) (1 diff)
-
WebCore/dom/messageports/MessagePortChannel.h (modified) (1 diff)
-
WebCore/dom/messageports/MessagePortChannelProvider.h (modified) (1 diff)
-
WebCore/dom/messageports/MessagePortChannelProviderImpl.cpp (modified) (1 diff)
-
WebCore/dom/messageports/MessagePortChannelProviderImpl.h (modified) (1 diff)
-
WebCore/dom/messageports/MessagePortChannelRegistry.cpp (modified) (1 diff)
-
WebCore/dom/messageports/MessagePortChannelRegistry.h (modified) (1 diff)
-
WebCore/dom/messageports/WorkerMessagePortChannelProvider.cpp (modified) (1 diff)
-
WebCore/dom/messageports/WorkerMessagePortChannelProvider.h (modified) (1 diff)
-
WebKit/ChangeLog (modified) (1 diff)
-
WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (modified) (3 diffs)
-
WebKit/NetworkProcess/NetworkConnectionToWebProcess.h (modified) (2 diffs)
-
WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp (modified) (1 diff)
-
WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r287762 r287763 1 2022-01-07 Youenn Fablet <youenn@apple.com> 2 3 Use completion handlers for takeAllMessagesForPort methods 4 https://bugs.webkit.org/show_bug.cgi?id=234947 5 6 Reviewed by Chris Dumez. 7 8 Covered by existing tests. 9 10 * dom/MessagePort.cpp: 11 * dom/messageports/MessagePortChannel.cpp: 12 * dom/messageports/MessagePortChannel.h: 13 * dom/messageports/MessagePortChannelProvider.h: 14 * dom/messageports/MessagePortChannelProviderImpl.cpp: 15 * dom/messageports/MessagePortChannelProviderImpl.h: 16 * dom/messageports/MessagePortChannelRegistry.cpp: 17 * dom/messageports/MessagePortChannelRegistry.h: 18 * dom/messageports/WorkerMessagePortChannelProvider.cpp: 19 * dom/messageports/WorkerMessagePortChannelProvider.h: 20 1 21 2022-01-07 Antoine Quint <graouts@webkit.org> 2 22 -
trunk/Source/WebCore/dom/MessagePort.cpp
r287066 r287763 261 261 return; 262 262 263 auto messagesTakenHandler = [this, weakThis = WeakPtr { *this }](Vector<MessageWithMessagePorts>&& messages, Function<void()>&& completionCallback) mutable {263 auto messagesTakenHandler = [this, weakThis = WeakPtr { *this }](Vector<MessageWithMessagePorts>&& messages, CompletionHandler<void()>&& completionCallback) mutable { 264 264 auto scopeExit = makeScopeExit(WTFMove(completionCallback)); 265 265 -
trunk/Source/WebCore/dom/messageports/MessagePortChannel.cpp
r282755 r287763 148 148 } 149 149 150 void MessagePortChannel::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&& callback)150 void MessagePortChannel::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&& callback) 151 151 { 152 152 ASSERT(isMainThread()); -
trunk/Source/WebCore/dom/messageports/MessagePortChannel.h
r278253 r287763 54 54 bool postMessageToRemote(MessageWithMessagePorts&&, const MessagePortIdentifier& remoteTarget); 55 55 56 void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&&);56 void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&&); 57 57 void checkRemotePortForActivity(const MessagePortIdentifier&, CompletionHandler<void(MessagePortChannelProvider::HasActivity)>&& callback); 58 58 -
trunk/Source/WebCore/dom/messageports/MessagePortChannelProvider.h
r253751 r287763 50 50 virtual void messagePortClosed(const MessagePortIdentifier& local) = 0; 51 51 52 virtual void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&&) = 0;52 virtual void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&&) = 0; 53 53 54 54 virtual void postMessageToRemote(MessageWithMessagePorts&&, const MessagePortIdentifier& remoteTarget) = 0; -
trunk/Source/WebCore/dom/messageports/MessagePortChannelProviderImpl.cpp
r274324 r287763 87 87 } 88 88 89 void MessagePortChannelProviderImpl::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&& outerCallback)89 void MessagePortChannelProviderImpl::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&& outerCallback) 90 90 { 91 91 // It is the responsibility of outerCallback to get itself to the appropriate thread (e.g. WebWorker thread) 92 auto callback = [outerCallback = WTFMove(outerCallback)](Vector<MessageWithMessagePorts>&& messages, Function<void()>&& messageDeliveryCallback) mutable {92 auto callback = [outerCallback = WTFMove(outerCallback)](Vector<MessageWithMessagePorts>&& messages, CompletionHandler<void()>&& messageDeliveryCallback) mutable { 93 93 ASSERT(isMainThread()); 94 94 outerCallback(WTFMove(messages), WTFMove(messageDeliveryCallback)); -
trunk/Source/WebCore/dom/messageports/MessagePortChannelProviderImpl.h
r274324 r287763 42 42 void messagePortClosed(const MessagePortIdentifier& local) final; 43 43 void postMessageToRemote(MessageWithMessagePorts&&, const MessagePortIdentifier& remoteTarget) final; 44 void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&&) final;44 void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&&) final; 45 45 void checkRemotePortForActivity(const MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) final; 46 46 -
trunk/Source/WebCore/dom/messageports/MessagePortChannelRegistry.cpp
r249637 r287763 142 142 } 143 143 144 void MessagePortChannelRegistry::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&& callback)144 void MessagePortChannelRegistry::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&& callback) 145 145 { 146 146 ASSERT(isMainThread()); -
trunk/Source/WebCore/dom/messageports/MessagePortChannelRegistry.h
r249637 r287763 46 46 WEBCORE_EXPORT void didCloseMessagePort(const MessagePortIdentifier& local); 47 47 WEBCORE_EXPORT bool didPostMessageToRemote(MessageWithMessagePorts&&, const MessagePortIdentifier& remoteTarget); 48 WEBCORE_EXPORT void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&&);48 WEBCORE_EXPORT void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&&); 49 49 WEBCORE_EXPORT void checkRemotePortForActivity(const MessagePortIdentifier& remoteTarget, CompletionHandler<void(MessagePortChannelProvider::HasActivity)>&& callback); 50 50 -
trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.cpp
r287679 r287763 111 111 }; 112 112 113 void WorkerMessagePortChannelProvider::takeAllMessagesForPort(const MessagePortIdentifier& identifier, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&& callback)113 void WorkerMessagePortChannelProvider::takeAllMessagesForPort(const MessagePortIdentifier& identifier, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&& callback) 114 114 { 115 115 uint64_t callbackIdentifier = ++m_lastCallbackIdentifier; -
trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.h
r268161 r287763 47 47 void messagePortClosed(const MessagePortIdentifier& local) final; 48 48 void postMessageToRemote(MessageWithMessagePorts&&, const MessagePortIdentifier& remoteTarget) final; 49 void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&&) final;49 void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&&) final; 50 50 void checkRemotePortForActivity(const MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) final; 51 51 -
trunk/Source/WebKit/ChangeLog
r287755 r287763 1 2022-01-07 Youenn Fablet <youenn@apple.com> 2 3 Use completion handlers for takeAllMessagesForPort methods 4 https://bugs.webkit.org/show_bug.cgi?id=234947 5 6 Reviewed by Chris Dumez. 7 8 * NetworkProcess/NetworkConnectionToWebProcess.cpp: 9 * NetworkProcess/NetworkConnectionToWebProcess.h: 10 * WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp: 11 * WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h: 12 1 13 2022-01-07 Peng Liu <peng.liu6@apple.com> 2 14 -
trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
r287731 r287763 143 143 networkProcess().messagePortChannelRegistry().didCloseMessagePort(port); 144 144 145 auto completionHandlers = std::exchange(m_messageBatchDeliveryCompletionHandlers, { }); 146 for (auto& completionHandler : completionHandlers.values()) 147 completionHandler(); 148 145 149 #if HAVE(COOKIE_CHANGE_LISTENER_API) 146 150 if (auto* networkStorageSession = storageSession()) … … 1228 1232 } 1229 1233 1230 uint64_t NetworkConnectionToWebProcess::nextMessageBatchIdentifier( Function<void()>&& deliveryCallback)1234 uint64_t NetworkConnectionToWebProcess::nextMessageBatchIdentifier(CompletionHandler<void()>&& deliveryCallback) 1231 1235 { 1232 1236 static uint64_t currentMessageBatchIdentifier; … … 1238 1242 void NetworkConnectionToWebProcess::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, uint64_t)>&& callback) 1239 1243 { 1240 networkProcess().messagePortChannelRegistry().takeAllMessagesForPort(port, [this, protectedThis = Ref { *this }, callback = WTFMove(callback)](auto&& messages, Function<void()>&& deliveryCallback) mutable {1244 networkProcess().messagePortChannelRegistry().takeAllMessagesForPort(port, [this, protectedThis = Ref { *this }, callback = WTFMove(callback)](auto&& messages, auto&& deliveryCallback) mutable { 1241 1245 callback(WTFMove(messages), nextMessageBatchIdentifier(WTFMove(deliveryCallback))); 1242 1246 }); -
trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h
r287611 r287763 304 304 void resetOriginAccessAllowLists(); 305 305 306 uint64_t nextMessageBatchIdentifier( Function<void()>&&);306 uint64_t nextMessageBatchIdentifier(CompletionHandler<void()>&&); 307 307 308 308 void domCookiesForHost(const String& host, bool subscribeToCookieChangeNotifications, CompletionHandler<void(const Vector<WebCore::Cookie>&)>&&); … … 411 411 412 412 HashSet<WebCore::MessagePortIdentifier> m_processEntangledPorts; 413 HashMap<uint64_t, Function<void()>> m_messageBatchDeliveryCompletionHandlers;413 HashMap<uint64_t, CompletionHandler<void()>> m_messageBatchDeliveryCompletionHandlers; 414 414 Ref<NetworkSchemeRegistry> m_schemeRegistry; 415 415 -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp
r253751 r287763 77 77 } 78 78 79 void WebMessagePortChannelProvider::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&& completionHandler)79 void WebMessagePortChannelProvider::takeAllMessagesForPort(const MessagePortIdentifier& port, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&& completionHandler) 80 80 { 81 81 networkProcessConnection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::TakeAllMessagesForPort { port }, [completionHandler = WTFMove(completionHandler)](auto&& messages, uint64_t messageBatchIdentifier) mutable { -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h
r264598 r287763 43 43 void messagePortDisentangled(const WebCore::MessagePortIdentifier& local) final; 44 44 void messagePortClosed(const WebCore::MessagePortIdentifier& local) final; 45 void takeAllMessagesForPort(const WebCore::MessagePortIdentifier&, CompletionHandler<void(Vector<WebCore::MessageWithMessagePorts>&&, Function<void()>&&)>&&) final;45 void takeAllMessagesForPort(const WebCore::MessagePortIdentifier&, CompletionHandler<void(Vector<WebCore::MessageWithMessagePorts>&&, CompletionHandler<void()>&&)>&&) final; 46 46 void postMessageToRemote(WebCore::MessageWithMessagePorts&&, const WebCore::MessagePortIdentifier& remoteTarget) final; 47 47 void checkRemotePortForActivity(const WebCore::MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) final;
Note:
See TracChangeset
for help on using the changeset viewer.