WebKit Bugzilla
Attachment 340650 Details for
Bug 182269
: Use CompletionHandlers for DelayedReplies
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-182269-20180517144728.patch (text/plain), 82.51 KB, created by
Alex Christensen
on 2018-05-17 14:47:28 PDT
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Alex Christensen
Created:
2018-05-17 14:47:28 PDT
Size:
82.51 KB
patch
obsolete
>Index: Source/WebKit/ChangeLog >=================================================================== >--- Source/WebKit/ChangeLog (revision 231919) >+++ Source/WebKit/ChangeLog (working copy) >@@ -1,3 +1,113 @@ >+2018-05-17 Alex Christensen <achristensen@webkit.org> >+ >+ Use CompletionHandlers for DelayedReplies >+ https://bugs.webkit.org/show_bug.cgi?id=182269 >+ >+ Reviewed by Youenn Fablet. >+ >+ DelayedReplies should be a noncopyable, non-refcountable type. They should be >+ called once and only once. This is what CompletionHandlers are for. >+ >+ No change in behavior. Just cleaner code. >+ >+ * NetworkProcess/NetworkConnectionToWebProcess.cpp: >+ (WebKit::NetworkConnectionToWebProcess::performSynchronousLoad): >+ * NetworkProcess/NetworkConnectionToWebProcess.h: >+ * NetworkProcess/NetworkResourceLoader.cpp: >+ (WebKit::NetworkResourceLoader::SynchronousLoadData::SynchronousLoadData): >+ (WebKit::sendReplyToSynchronousRequest): >+ (WebKit::NetworkResourceLoader::NetworkResourceLoader): >+ * NetworkProcess/NetworkResourceLoader.h: >+ * Platform/IPC/HandleMessage.h: >+ (IPC::callMemberFunctionImpl): >+ (IPC::callMemberFunction): >+ (IPC::handleMessageDelayed): >+ * PluginProcess/PluginControllerProxy.cpp: >+ (WebKit::PluginControllerProxy::setInitializationReply): >+ (WebKit::PluginControllerProxy::takeInitializationReply): >+ * PluginProcess/PluginControllerProxy.h: >+ * PluginProcess/WebProcessConnection.cpp: >+ (WebKit::WebProcessConnection::destroyPlugin): >+ (WebKit::WebProcessConnection::createPlugin): >+ (WebKit::WebProcessConnection::createPluginAsynchronously): >+ * PluginProcess/WebProcessConnection.h: >+ * Scripts/webkit/LegacyMessageReceiver-expected.cpp: >+ (Messages::WebPage::GetPluginProcessConnection::send): >+ (Messages::WebPage::TestMultipleAttributes::send): >+ (Messages::WebPage::GetPluginProcessConnection::DelayedReply::DelayedReply): Deleted. >+ (Messages::WebPage::GetPluginProcessConnection::DelayedReply::~DelayedReply): Deleted. >+ (Messages::WebPage::GetPluginProcessConnection::DelayedReply::send): Deleted. >+ (Messages::WebPage::TestMultipleAttributes::DelayedReply::DelayedReply): Deleted. >+ (Messages::WebPage::TestMultipleAttributes::DelayedReply::~DelayedReply): Deleted. >+ (Messages::WebPage::TestMultipleAttributes::DelayedReply::send): Deleted. >+ * Scripts/webkit/LegacyMessages-expected.h: >+ * Scripts/webkit/MessageReceiver-expected.cpp: >+ (Messages::WebPage::GetPluginProcessConnection::send): >+ (Messages::WebPage::TestMultipleAttributes::send): >+ (Messages::WebPage::GetPluginProcessConnection::DelayedReply::DelayedReply): Deleted. >+ (Messages::WebPage::GetPluginProcessConnection::DelayedReply::~DelayedReply): Deleted. >+ (Messages::WebPage::GetPluginProcessConnection::DelayedReply::send): Deleted. >+ (Messages::WebPage::TestMultipleAttributes::DelayedReply::DelayedReply): Deleted. >+ (Messages::WebPage::TestMultipleAttributes::DelayedReply::~DelayedReply): Deleted. >+ (Messages::WebPage::TestMultipleAttributes::DelayedReply::send): Deleted. >+ * Scripts/webkit/Messages-expected.h: >+ * Scripts/webkit/messages.py: >+ * UIProcess/Network/NetworkProcessProxy.cpp: >+ (WebKit::NetworkProcessProxy::getNetworkProcessConnection): >+ (WebKit::NetworkProcessProxy::networkProcessCrashed): >+ (WebKit::NetworkProcessProxy::networkProcessFailedToLaunch): >+ (WebKit::NetworkProcessProxy::didCreateNetworkConnectionToWebProcess): >+ * UIProcess/Network/NetworkProcessProxy.h: >+ * UIProcess/Plugins/PluginProcessManager.cpp: >+ (WebKit::PluginProcessManager::getPluginProcessConnection): >+ * UIProcess/Plugins/PluginProcessManager.h: >+ * UIProcess/Plugins/PluginProcessProxy.cpp: >+ (WebKit::PluginProcessProxy::getPluginProcessConnection): >+ (WebKit::PluginProcessProxy::pluginProcessCrashedOrFailedToLaunch): >+ (WebKit::PluginProcessProxy::didCreateWebProcessConnection): >+ * UIProcess/Plugins/PluginProcessProxy.h: >+ * UIProcess/Storage/StorageProcessProxy.cpp: >+ (WebKit::StorageProcessProxy::getStorageProcessConnection): >+ (WebKit::StorageProcessProxy::didClose): >+ (WebKit::StorageProcessProxy::didCreateStorageToWebProcessConnection): >+ * UIProcess/Storage/StorageProcessProxy.h: >+ * UIProcess/WebPageProxy.cpp: >+ (WebKit::ExceededDatabaseQuotaRecords::createRecord): >+ (WebKit::WebPageProxy::receivedPolicyDecision): >+ (WebKit::WebPageProxy::decidePolicyForNavigationActionSync): >+ (WebKit::WebPageProxy::createNewPage): >+ (WebKit::WebPageProxy::runJavaScriptAlert): >+ (WebKit::WebPageProxy::runJavaScriptConfirm): >+ (WebKit::WebPageProxy::runJavaScriptPrompt): >+ (WebKit::WebPageProxy::webGLPolicyForURL): >+ (WebKit::WebPageProxy::resolveWebGLPolicyForURL): >+ (WebKit::WebPageProxy::getToolbarsAreVisible): >+ (WebKit::WebPageProxy::getMenuBarIsVisible): >+ (WebKit::WebPageProxy::getStatusBarIsVisible): >+ (WebKit::WebPageProxy::getWindowFrame): >+ (WebKit::WebPageProxy::screenToRootView): >+ (WebKit::WebPageProxy::rootViewToScreen): >+ (WebKit::WebPageProxy::runBeforeUnloadConfirmPanel): >+ (WebKit::WebPageProxy::exceededDatabaseQuota): >+ (WebKit::WebPageProxy::reachedApplicationCacheOriginQuota): >+ * UIProcess/WebPageProxy.h: >+ * UIProcess/WebProcessPool.cpp: >+ (WebKit::WebProcessPool::networkProcessCrashed): >+ (WebKit::WebProcessPool::getNetworkProcessConnection): >+ (WebKit::WebProcessPool::getStorageProcessConnection): >+ * UIProcess/WebProcessPool.h: >+ * UIProcess/WebProcessProxy.cpp: >+ (WebKit::WebProcessProxy::getPluginProcessConnection): >+ (WebKit::WebProcessProxy::getNetworkProcessConnection): >+ (WebKit::WebProcessProxy::getStorageProcessConnection): >+ * UIProcess/WebProcessProxy.h: >+ * WebProcess/Storage/WebSWContextManagerConnection.cpp: >+ (WebKit::WebSWContextManagerConnection::syncTerminateWorker): >+ * WebProcess/Storage/WebSWContextManagerConnection.h: >+ * WebProcess/WebPage/WebPage.h: >+ * WebProcess/WebPage/ios/WebPageIOS.mm: >+ (WebKit::WebPage::computePagesForPrintingAndDrawToPDF): >+ > 2018-05-17 Carlos Alberto Lopez Perez <clopez@igalia.com> > > [WPE] Implement and enable FULLSCREEN_API >Index: Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (revision 231909) >+++ Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (working copy) >@@ -249,7 +249,7 @@ void NetworkConnectionToWebProcess::sche > loader->start(); > } > >-void NetworkConnectionToWebProcess::performSynchronousLoad(NetworkResourceLoadParameters&& loadParameters, Ref<Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply>&& reply) >+void NetworkConnectionToWebProcess::performSynchronousLoad(NetworkResourceLoadParameters&& loadParameters, Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply&& reply) > { > auto identifier = loadParameters.identifier; > ASSERT(!m_networkResourceLoaders.contains(identifier)); >Index: Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h >=================================================================== >--- Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h (revision 231909) >+++ Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h (working copy) >@@ -131,7 +131,7 @@ private: > void didReceiveSyncNetworkConnectionToWebProcessMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&); > > void scheduleResourceLoad(NetworkResourceLoadParameters&&); >- void performSynchronousLoad(NetworkResourceLoadParameters&&, Ref<Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply>&&); >+ void performSynchronousLoad(NetworkResourceLoadParameters&&, Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply&&); > void loadPing(NetworkResourceLoadParameters&&); > void prefetchDNS(const String&); > void preconnectTo(uint64_t preconnectionIdentifier, NetworkResourceLoadParameters&&); >Index: Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp >=================================================================== >--- Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp (revision 231909) >+++ Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp (working copy) >@@ -74,13 +74,13 @@ using namespace WebCore; > namespace WebKit { > > struct NetworkResourceLoader::SynchronousLoadData { >- SynchronousLoadData(RefPtr<Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply>&& reply) >+ SynchronousLoadData(Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply&& reply) > : delayedReply(WTFMove(reply)) > { > ASSERT(delayedReply); > } > ResourceRequest currentRequest; >- RefPtr<Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply> delayedReply; >+ Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply delayedReply; > ResourceResponse response; > ResourceError error; > }; >@@ -94,11 +94,11 @@ static void sendReplyToSynchronousReques > if (buffer && buffer->size()) > responseBuffer.append(buffer->data(), buffer->size()); > >- data.delayedReply->send(data.error, data.response, responseBuffer); >+ data.delayedReply(data.error, data.response, responseBuffer); > data.delayedReply = nullptr; > } > >-NetworkResourceLoader::NetworkResourceLoader(NetworkResourceLoadParameters&& parameters, NetworkConnectionToWebProcess& connection, RefPtr<Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply>&& synchronousReply) >+NetworkResourceLoader::NetworkResourceLoader(NetworkResourceLoadParameters&& parameters, NetworkConnectionToWebProcess& connection, Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply&& synchronousReply) > : m_parameters { WTFMove(parameters) } > , m_connection { connection } > , m_defersLoading { parameters.defersLoading } >Index: Source/WebKit/NetworkProcess/NetworkResourceLoader.h >=================================================================== >--- Source/WebKit/NetworkProcess/NetworkResourceLoader.h (revision 231909) >+++ Source/WebKit/NetworkProcess/NetworkResourceLoader.h (working copy) >@@ -62,7 +62,7 @@ class NetworkResourceLoader final > , public IPC::MessageSender > , public WebCore::ContentSecurityPolicyClient { > public: >- static Ref<NetworkResourceLoader> create(NetworkResourceLoadParameters&& parameters, NetworkConnectionToWebProcess& connection, RefPtr<Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply>&& reply = nullptr) >+ static Ref<NetworkResourceLoader> create(NetworkResourceLoadParameters&& parameters, NetworkConnectionToWebProcess& connection, Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply&& reply = nullptr) > { > return adoptRef(*new NetworkResourceLoader(WTFMove(parameters), connection, WTFMove(reply))); > } >@@ -123,7 +123,7 @@ public: > #endif > > private: >- NetworkResourceLoader(NetworkResourceLoadParameters&&, NetworkConnectionToWebProcess&, RefPtr<Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply>&&); >+ NetworkResourceLoader(NetworkResourceLoadParameters&&, NetworkConnectionToWebProcess&, Messages::NetworkConnectionToWebProcess::PerformSynchronousLoad::DelayedReply&&); > > // IPC::MessageSender > IPC::Connection* messageSenderConnection() override; >Index: Source/WebKit/Platform/IPC/HandleMessage.h >=================================================================== >--- Source/WebKit/Platform/IPC/HandleMessage.h (revision 231909) >+++ Source/WebKit/Platform/IPC/HandleMessage.h (working copy) >@@ -26,6 +26,7 @@ > #pragma once > > #include "ArgumentCoders.h" >+#include <wtf/CompletionHandler.h> > #include <wtf/StdLibExtras.h> > > namespace IPC { >@@ -62,16 +63,16 @@ void callMemberFunction(ArgsTuple&& args > > // Dispatch functions with delayed reply arguments. > >-template <typename C, typename MF, typename R, typename ArgsTuple, size_t... ArgsIndex> >-void callMemberFunctionImpl(C* object, MF function, Ref<R>&& delayedReply, ArgsTuple&& args, std::index_sequence<ArgsIndex...>) >+template <typename C, typename MF, typename CH, typename ArgsTuple, size_t... ArgsIndex> >+void callMemberFunctionImpl(C* object, MF function, CompletionHandler<CH>&& completionHandler, ArgsTuple&& args, std::index_sequence<ArgsIndex...>) > { >- (object->*function)(std::get<ArgsIndex>(std::forward<ArgsTuple>(args))..., WTFMove(delayedReply)); >+ (object->*function)(std::get<ArgsIndex>(std::forward<ArgsTuple>(args))..., WTFMove(completionHandler)); > } > >-template<typename C, typename MF, typename R, typename ArgsTuple, typename ArgsIndicies = std::make_index_sequence<std::tuple_size<ArgsTuple>::value>> >-void callMemberFunction(ArgsTuple&& args, Ref<R>&& delayedReply, C* object, MF function) >+template<typename C, typename MF, typename CH, typename ArgsTuple, typename ArgsIndicies = std::make_index_sequence<std::tuple_size<ArgsTuple>::value>> >+void callMemberFunction(ArgsTuple&& args, CompletionHandler<CH>&& completionHandler, C* object, MF function) > { >- callMemberFunctionImpl(object, function, WTFMove(delayedReply), std::forward<ArgsTuple>(args), ArgsIndicies()); >+ callMemberFunctionImpl(object, function, WTFMove(completionHandler), std::forward<ArgsTuple>(args), ArgsIndicies()); > } > > // Dispatch functions with connection parameter with no reply arguments. >@@ -174,8 +175,10 @@ void handleMessageDelayed(Connection& co > return; > } > >- Ref<typename T::DelayedReply> delayedReply = adoptRef(*new typename T::DelayedReply(connection, WTFMove(replyEncoder))); >- callMemberFunction(WTFMove(arguments), WTFMove(delayedReply), object, function); >+ typename T::DelayedReply completionHandler = [replyEncoder = WTFMove(replyEncoder), connection = makeRef(connection)] (auto&&... args) mutable { >+ T::send(WTFMove(replyEncoder), WTFMove(connection), args...); >+ }; >+ callMemberFunction(WTFMove(arguments), WTFMove(completionHandler), object, function); > } > > } // namespace IPC >Index: Source/WebKit/PluginProcess/PluginControllerProxy.cpp >=================================================================== >--- Source/WebKit/PluginProcess/PluginControllerProxy.cpp (revision 231909) >+++ Source/WebKit/PluginProcess/PluginControllerProxy.cpp (working copy) >@@ -91,15 +91,15 @@ PluginControllerProxy::~PluginController > releaseNPObject(m_pluginElementNPObject); > } > >-void PluginControllerProxy::setInitializationReply(Ref<Messages::WebProcessConnection::CreatePlugin::DelayedReply>&& reply) >+void PluginControllerProxy::setInitializationReply(Messages::WebProcessConnection::CreatePlugin::DelayedReply&& reply) > { > ASSERT(!m_initializationReply); > m_initializationReply = WTFMove(reply); > } > >-RefPtr<Messages::WebProcessConnection::CreatePlugin::DelayedReply> PluginControllerProxy::takeInitializationReply() >+Messages::WebProcessConnection::CreatePlugin::DelayedReply PluginControllerProxy::takeInitializationReply() > { >- return m_initializationReply; >+ return std::exchange(m_initializationReply, nullptr); > } > > bool PluginControllerProxy::initialize(const PluginCreationParameters& creationParameters) >Index: Source/WebKit/PluginProcess/PluginControllerProxy.h >=================================================================== >--- Source/WebKit/PluginProcess/PluginControllerProxy.h (revision 231909) >+++ Source/WebKit/PluginProcess/PluginControllerProxy.h (working copy) >@@ -74,8 +74,8 @@ public: > > bool isInitializing() const { return m_isInitializing; } > >- void setInitializationReply(Ref<Messages::WebProcessConnection::CreatePlugin::DelayedReply>&&); >- RefPtr<Messages::WebProcessConnection::CreatePlugin::DelayedReply> takeInitializationReply(); >+ void setInitializationReply(Messages::WebProcessConnection::CreatePlugin::DelayedReply&&); >+ Messages::WebProcessConnection::CreatePlugin::DelayedReply takeInitializationReply(); > > private: > void startPaintTimer(); >@@ -183,7 +183,7 @@ private: > bool m_isVisible; > bool m_isWindowVisible; > >- RefPtr<Messages::WebProcessConnection::CreatePlugin::DelayedReply> m_initializationReply; >+ Messages::WebProcessConnection::CreatePlugin::DelayedReply m_initializationReply; > > RefPtr<Plugin> m_plugin; > >Index: Source/WebKit/PluginProcess/WebProcessConnection.cpp >=================================================================== >--- Source/WebKit/PluginProcess/WebProcessConnection.cpp (revision 231909) >+++ Source/WebKit/PluginProcess/WebProcessConnection.cpp (working copy) >@@ -179,11 +179,11 @@ void WebProcessConnection::didClose(IPC: > destroyPluginControllerProxy(pluginControllers[i]); > } > >-void WebProcessConnection::destroyPlugin(uint64_t pluginInstanceID, bool asynchronousCreationIncomplete, Ref<Messages::WebProcessConnection::DestroyPlugin::DelayedReply>&& reply) >+void WebProcessConnection::destroyPlugin(uint64_t pluginInstanceID, bool asynchronousCreationIncomplete, Messages::WebProcessConnection::DestroyPlugin::DelayedReply&& reply) > { > // We return immediately from this synchronous IPC. We want to make sure the plugin destruction is just about to start so audio playback > // will finish soon after returning. However we don't want to wait for destruction to complete fully as that may take a while. >- reply->send(); >+ reply(); > > // Ensure we don't clamp any timers during destruction > ActivityAssertion activityAssertion(PluginProcess::singleton().connectionActivity()); >@@ -232,7 +232,7 @@ void WebProcessConnection::createPluginI > #endif > } > >-void WebProcessConnection::createPlugin(const PluginCreationParameters& creationParameters, Ref<Messages::WebProcessConnection::CreatePlugin::DelayedReply>&& reply) >+void WebProcessConnection::createPlugin(const PluginCreationParameters& creationParameters, Messages::WebProcessConnection::CreatePlugin::DelayedReply&& reply) > { > // Ensure we don't clamp any timers during initialization > ActivityAssertion activityAssertion(PluginProcess::singleton().connectionActivity()); >@@ -249,9 +249,9 @@ void WebProcessConnection::createPlugin( > > // If its initialization is complete then we need to respond to this message with the correct information about its creation. > #if PLATFORM(COCOA) >- reply->send(true, pluginControllerProxy->wantsWheelEvents(), pluginControllerProxy->remoteLayerClientID()); >+ reply(true, pluginControllerProxy->wantsWheelEvents(), pluginControllerProxy->remoteLayerClientID()); > #else >- reply->send(true, pluginControllerProxy->wantsWheelEvents(), 0); >+ reply(true, pluginControllerProxy->wantsWheelEvents(), 0); > #endif > return; > } >@@ -266,7 +266,7 @@ void WebProcessConnection::createPlugin( > uint32_t remoteLayerClientID = 0; > createPluginInternal(creationParameters, result, wantsWheelEvents, remoteLayerClientID); > >- reply->send(result, wantsWheelEvents, remoteLayerClientID); >+ reply(result, wantsWheelEvents, remoteLayerClientID); > } > > void WebProcessConnection::createPluginAsynchronously(const PluginCreationParameters& creationParameters) >@@ -311,8 +311,8 @@ void WebProcessConnection::createPluginA > // synchronous reply instead of sending the asynchronous reply. > PluginControllerProxy* pluginControllerProxy = m_pluginControllers.get(creationParameters.pluginInstanceID); > ASSERT(pluginControllerProxy); >- if (RefPtr<Messages::WebProcessConnection::CreatePlugin::DelayedReply> delayedSyncReply = pluginControllerProxy->takeInitializationReply()) { >- delayedSyncReply->send(result, wantsWheelEvents, remoteLayerClientID); >+ if (auto delayedSyncReply = pluginControllerProxy->takeInitializationReply()) { >+ delayedSyncReply(result, wantsWheelEvents, remoteLayerClientID); > return; > } > >Index: Source/WebKit/PluginProcess/WebProcessConnection.h >=================================================================== >--- Source/WebKit/PluginProcess/WebProcessConnection.h (revision 231909) >+++ Source/WebKit/PluginProcess/WebProcessConnection.h (working copy) >@@ -69,9 +69,9 @@ private: > // Message handlers. > void didReceiveWebProcessConnectionMessage(IPC::Connection&, IPC::Decoder&); > void didReceiveSyncWebProcessConnectionMessage(IPC::Connection&, IPC::Decoder&, std::unique_ptr<IPC::Encoder>&); >- void createPlugin(const PluginCreationParameters&, Ref<Messages::WebProcessConnection::CreatePlugin::DelayedReply>&&); >+ void createPlugin(const PluginCreationParameters&, Messages::WebProcessConnection::CreatePlugin::DelayedReply&&); > void createPluginAsynchronously(const PluginCreationParameters&); >- void destroyPlugin(uint64_t pluginInstanceID, bool asynchronousCreationIncomplete, Ref<Messages::WebProcessConnection::DestroyPlugin::DelayedReply>&&); >+ void destroyPlugin(uint64_t pluginInstanceID, bool asynchronousCreationIncomplete, Messages::WebProcessConnection::DestroyPlugin::DelayedReply&&); > > void createPluginInternal(const PluginCreationParameters&, bool& result, bool& wantsWheelEvents, uint32_t& remoteLayerClientID); > >Index: Source/WebKit/Scripts/webkit/LegacyMessageReceiver-expected.cpp >=================================================================== >--- Source/WebKit/Scripts/webkit/LegacyMessageReceiver-expected.cpp (revision 231909) >+++ Source/WebKit/Scripts/webkit/LegacyMessageReceiver-expected.cpp (working copy) >@@ -59,43 +59,15 @@ namespace Messages { > > namespace WebPage { > >-GetPluginProcessConnection::DelayedReply::DelayedReply(Ref<IPC::Connection>&& connection, std::unique_ptr<IPC::Encoder> encoder) >- : m_connection(WTFMove(connection)) >- , m_encoder(WTFMove(encoder)) >+void GetPluginProcessConnection::send(std::unique_ptr<IPC::Encoder>&& encoder, IPC::Connection& connection, const IPC::Connection::Handle& connectionHandle) > { >+ *encoder << connectionHandle; >+ connection.sendSyncReply(WTFMove(encoder)); > } > >-GetPluginProcessConnection::DelayedReply::~DelayedReply() >+void TestMultipleAttributes::send(std::unique_ptr<IPC::Encoder>&& encoder, IPC::Connection& connection) > { >- ASSERT(!m_connection); >-} >- >-bool GetPluginProcessConnection::DelayedReply::send(const IPC::Connection::Handle& connectionHandle) >-{ >- ASSERT(m_encoder); >- *m_encoder << connectionHandle; >- bool _result = m_connection->sendSyncReply(WTFMove(m_encoder)); >- m_connection = nullptr; >- return _result; >-} >- >-TestMultipleAttributes::DelayedReply::DelayedReply(Ref<IPC::Connection>&& connection, std::unique_ptr<IPC::Encoder> encoder) >- : m_connection(WTFMove(connection)) >- , m_encoder(WTFMove(encoder)) >-{ >-} >- >-TestMultipleAttributes::DelayedReply::~DelayedReply() >-{ >- ASSERT(!m_connection); >-} >- >-bool TestMultipleAttributes::DelayedReply::send() >-{ >- ASSERT(m_encoder); >- bool _result = m_connection->sendSyncReply(WTFMove(m_encoder)); >- m_connection = nullptr; >- return _result; >+ connection.sendSyncReply(WTFMove(encoder)); > } > > } // namespace WebPage >Index: Source/WebKit/Scripts/webkit/LegacyMessages-expected.h >=================================================================== >--- Source/WebKit/Scripts/webkit/LegacyMessages-expected.h (revision 231909) >+++ Source/WebKit/Scripts/webkit/LegacyMessages-expected.h (working copy) >@@ -358,17 +358,8 @@ public: > static IPC::StringReference name() { return IPC::StringReference("GetPluginProcessConnection"); } > static const bool isSync = true; > >- struct DelayedReply : public ThreadSafeRefCounted<DelayedReply> { >- DelayedReply(Ref<IPC::Connection>&&, std::unique_ptr<IPC::Encoder>); >- ~DelayedReply(); >- >- bool send(const IPC::Connection::Handle& connectionHandle); >- >- private: >- RefPtr<IPC::Connection> m_connection; >- std::unique_ptr<IPC::Encoder> m_encoder; >- }; >- >+ using DelayedReply = CompletionHandler<void(const IPC::Connection::Handle& connectionHandle)>; >+ static void send(std::unique_ptr<IPC::Encoder>&&, IPC::Connection&, const IPC::Connection::Handle& connectionHandle); > typedef std::tuple<IPC::Connection::Handle&> Reply; > explicit GetPluginProcessConnection(const String& pluginPath) > : m_arguments(pluginPath) >@@ -392,17 +383,8 @@ public: > static IPC::StringReference name() { return IPC::StringReference("TestMultipleAttributes"); } > static const bool isSync = true; > >- struct DelayedReply : public ThreadSafeRefCounted<DelayedReply> { >- DelayedReply(Ref<IPC::Connection>&&, std::unique_ptr<IPC::Encoder>); >- ~DelayedReply(); >- >- bool send(); >- >- private: >- RefPtr<IPC::Connection> m_connection; >- std::unique_ptr<IPC::Encoder> m_encoder; >- }; >- >+ using DelayedReply = CompletionHandler<void()>; >+ static void send(std::unique_ptr<IPC::Encoder>&&, IPC::Connection&); > typedef std::tuple<> Reply; > const Arguments& arguments() const > { >Index: Source/WebKit/Scripts/webkit/MessageReceiver-expected.cpp >=================================================================== >--- Source/WebKit/Scripts/webkit/MessageReceiver-expected.cpp (revision 231909) >+++ Source/WebKit/Scripts/webkit/MessageReceiver-expected.cpp (working copy) >@@ -59,43 +59,15 @@ namespace Messages { > > namespace WebPage { > >-GetPluginProcessConnection::DelayedReply::DelayedReply(Ref<IPC::Connection>&& connection, std::unique_ptr<IPC::Encoder> encoder) >- : m_connection(WTFMove(connection)) >- , m_encoder(WTFMove(encoder)) >+void GetPluginProcessConnection::send(std::unique_ptr<IPC::Encoder>&& encoder, IPC::Connection& connection, const IPC::Connection::Handle& connectionHandle) > { >+ *encoder << connectionHandle; >+ connection.sendSyncReply(WTFMove(encoder)); > } > >-GetPluginProcessConnection::DelayedReply::~DelayedReply() >+void TestMultipleAttributes::send(std::unique_ptr<IPC::Encoder>&& encoder, IPC::Connection& connection) > { >- ASSERT(!m_connection); >-} >- >-bool GetPluginProcessConnection::DelayedReply::send(const IPC::Connection::Handle& connectionHandle) >-{ >- ASSERT(m_encoder); >- *m_encoder << connectionHandle; >- bool _result = m_connection->sendSyncReply(WTFMove(m_encoder)); >- m_connection = nullptr; >- return _result; >-} >- >-TestMultipleAttributes::DelayedReply::DelayedReply(Ref<IPC::Connection>&& connection, std::unique_ptr<IPC::Encoder> encoder) >- : m_connection(WTFMove(connection)) >- , m_encoder(WTFMove(encoder)) >-{ >-} >- >-TestMultipleAttributes::DelayedReply::~DelayedReply() >-{ >- ASSERT(!m_connection); >-} >- >-bool TestMultipleAttributes::DelayedReply::send() >-{ >- ASSERT(m_encoder); >- bool _result = m_connection->sendSyncReply(WTFMove(m_encoder)); >- m_connection = nullptr; >- return _result; >+ connection.sendSyncReply(WTFMove(encoder)); > } > > } // namespace WebPage >Index: Source/WebKit/Scripts/webkit/Messages-expected.h >=================================================================== >--- Source/WebKit/Scripts/webkit/Messages-expected.h (revision 231909) >+++ Source/WebKit/Scripts/webkit/Messages-expected.h (working copy) >@@ -358,17 +358,8 @@ public: > static IPC::StringReference name() { return IPC::StringReference("GetPluginProcessConnection"); } > static const bool isSync = true; > >- struct DelayedReply : public ThreadSafeRefCounted<DelayedReply> { >- DelayedReply(Ref<IPC::Connection>&&, std::unique_ptr<IPC::Encoder>); >- ~DelayedReply(); >- >- bool send(const IPC::Connection::Handle& connectionHandle); >- >- private: >- RefPtr<IPC::Connection> m_connection; >- std::unique_ptr<IPC::Encoder> m_encoder; >- }; >- >+ using DelayedReply = CompletionHandler<void(const IPC::Connection::Handle& connectionHandle)>; >+ static void send(std::unique_ptr<IPC::Encoder>&&, IPC::Connection&, const IPC::Connection::Handle& connectionHandle); > typedef std::tuple<IPC::Connection::Handle&> Reply; > explicit GetPluginProcessConnection(const String& pluginPath) > : m_arguments(pluginPath) >@@ -392,17 +383,8 @@ public: > static IPC::StringReference name() { return IPC::StringReference("TestMultipleAttributes"); } > static const bool isSync = true; > >- struct DelayedReply : public ThreadSafeRefCounted<DelayedReply> { >- DelayedReply(Ref<IPC::Connection>&&, std::unique_ptr<IPC::Encoder>); >- ~DelayedReply(); >- >- bool send(); >- >- private: >- RefPtr<IPC::Connection> m_connection; >- std::unique_ptr<IPC::Encoder> m_encoder; >- }; >- >+ using DelayedReply = CompletionHandler<void()>; >+ static void send(std::unique_ptr<IPC::Encoder>&&, IPC::Connection&); > typedef std::tuple<> Reply; > const Arguments& arguments() const > { >Index: Source/WebKit/Scripts/webkit/messages.py >=================================================================== >--- Source/WebKit/Scripts/webkit/messages.py (revision 231909) >+++ Source/WebKit/Scripts/webkit/messages.py (working copy) >@@ -118,16 +118,14 @@ def message_to_struct_declaration(messag > if message.reply_parameters != None: > if message.has_attribute(DELAYED_ATTRIBUTE): > send_parameters = [(function_parameter_type(x.type, x.kind), x.name) for x in message.reply_parameters] >- result.append(' struct DelayedReply : public ThreadSafeRefCounted<DelayedReply> {\n') >- result.append(' DelayedReply(Ref<IPC::Connection>&&, std::unique_ptr<IPC::Encoder>);\n') >- result.append(' ~DelayedReply();\n') >- result.append('\n') >- result.append(' bool send(%s);\n' % ', '.join([' '.join(x) for x in send_parameters])) >- result.append('\n') >- result.append(' private:\n') >- result.append(' RefPtr<IPC::Connection> m_connection;\n') >- result.append(' std::unique_ptr<IPC::Encoder> m_encoder;\n') >- result.append(' };\n\n') >+ result.append(' using DelayedReply = CompletionHandler<void(') >+ if len(send_parameters): >+ result.append('%s' % ', '.join([' '.join(x) for x in send_parameters])) >+ result.append(')>;\n') >+ result.append(' static void send(std::unique_ptr<IPC::Encoder>&&, IPC::Connection&') >+ if len(send_parameters): >+ result.append(', %s' % ', '.join([' '.join(x) for x in send_parameters])) >+ result.append(');\n') > > result.append(' typedef %s Reply;\n' % reply_type(message)) > >@@ -536,24 +534,12 @@ def generate_message_handler(file): > if message.condition: > result.append('#if %s\n\n' % message.condition) > >- result.append('%s::DelayedReply::DelayedReply(Ref<IPC::Connection>&& connection, std::unique_ptr<IPC::Encoder> encoder)\n' % message.name) >- result.append(' : m_connection(WTFMove(connection))\n') >- result.append(' , m_encoder(WTFMove(encoder))\n') >- result.append('{\n') >- result.append('}\n') >- result.append('\n') >- result.append('%s::DelayedReply::~DelayedReply()\n' % message.name) >- result.append('{\n') >- result.append(' ASSERT(!m_connection);\n') >- result.append('}\n') >- result.append('\n') >- result.append('bool %s::DelayedReply::send(%s)\n' % (message.name, ', '.join([' '.join(x) for x in send_parameters]))) >- result.append('{\n') >- result.append(' ASSERT(m_encoder);\n') >- result += [' *m_encoder << %s;\n' % x.name for x in message.reply_parameters] >- result.append(' bool _result = m_connection->sendSyncReply(WTFMove(m_encoder));\n') >- result.append(' m_connection = nullptr;\n') >- result.append(' return _result;\n') >+ result.append('void %s::send(std::unique_ptr<IPC::Encoder>&& encoder, IPC::Connection& connection' % (message.name)) >+ if len(send_parameters): >+ result.append(', %s' % ', '.join([' '.join(x) for x in send_parameters])) >+ result.append(')\n{\n') >+ result += [' *encoder << %s;\n' % x.name for x in message.reply_parameters] >+ result.append(' connection.sendSyncReply(WTFMove(encoder));\n') > result.append('}\n') > result.append('\n') > >Index: Source/WebKit/UIProcess/WebPageProxy.cpp >=================================================================== >--- Source/WebKit/UIProcess/WebPageProxy.cpp (revision 231909) >+++ Source/WebKit/UIProcess/WebPageProxy.cpp (working copy) >@@ -238,7 +238,7 @@ public: > uint64_t currentOriginUsage; > uint64_t currentDatabaseUsage; > uint64_t expectedUsage; >- RefPtr<Messages::WebPageProxy::ExceededDatabaseQuota::DelayedReply> reply; >+ Messages::WebPageProxy::ExceededDatabaseQuota::DelayedReply reply; > }; > > static ExceededDatabaseQuotaRecords& singleton(); >@@ -246,7 +246,7 @@ public: > std::unique_ptr<Record> createRecord(uint64_t frameID, String originIdentifier, > String databaseName, String displayName, uint64_t currentQuota, > uint64_t currentOriginUsage, uint64_t currentDatabaseUsage, uint64_t expectedUsage, >- Ref<Messages::WebPageProxy::ExceededDatabaseQuota::DelayedReply>&&); >+ Messages::WebPageProxy::ExceededDatabaseQuota::DelayedReply&&); > > void add(std::unique_ptr<Record>); > bool areBeingProcessed() const { return !!m_currentRecord; } >@@ -269,7 +269,7 @@ ExceededDatabaseQuotaRecords& ExceededDa > std::unique_ptr<ExceededDatabaseQuotaRecords::Record> ExceededDatabaseQuotaRecords::createRecord( > uint64_t frameID, String originIdentifier, String databaseName, String displayName, > uint64_t currentQuota, uint64_t currentOriginUsage, uint64_t currentDatabaseUsage, >- uint64_t expectedUsage, Ref<Messages::WebPageProxy::ExceededDatabaseQuota::DelayedReply>&& reply) >+ uint64_t expectedUsage, Messages::WebPageProxy::ExceededDatabaseQuota::DelayedReply&& reply) > { > auto record = std::make_unique<Record>(); > record->frameID = frameID; >@@ -2444,7 +2444,7 @@ void WebPageProxy::receivedPolicyDecisio > } > > if (auto syncNavigationActionPolicyReply = WTFMove(m_syncNavigationActionPolicyReply)) { >- syncNavigationActionPolicyReply->send(navigation ? navigation->navigationID() : 0, action, downloadID, WTFMove(websitePolicies)); >+ syncNavigationActionPolicyReply(navigation ? navigation->navigationID() : 0, action, downloadID, WTFMove(websitePolicies)); > return; > } > >@@ -4033,7 +4033,7 @@ void WebPageProxy::decidePolicyForNaviga > m_shouldSuppressAppLinksInNextNavigationPolicyDecision = false; > } > >-void WebPageProxy::decidePolicyForNavigationActionSync(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, const FrameInfoData& originatingFrameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, uint64_t listenerID, const UserData& userData, Ref<Messages::WebPageProxy::DecidePolicyForNavigationActionSync::DelayedReply>&& reply) >+void WebPageProxy::decidePolicyForNavigationActionSync(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, const FrameInfoData& originatingFrameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, uint64_t listenerID, const UserData& userData, Messages::WebPageProxy::DecidePolicyForNavigationActionSync::DelayedReply&& reply) > { > ASSERT(!m_syncNavigationActionPolicyReply); > m_syncNavigationActionPolicyReply = WTFMove(reply); >@@ -4042,7 +4042,7 @@ void WebPageProxy::decidePolicyForNaviga > > // If the client did not respond synchronously, proceed with the load. > if (auto syncNavigationActionPolicyReply = WTFMove(m_syncNavigationActionPolicyReply)) >- syncNavigationActionPolicyReply->send(navigationID, PolicyAction::Use, { }, { }); >+ syncNavigationActionPolicyReply(navigationID, PolicyAction::Use, { }, { }); > } > > void WebPageProxy::decidePolicyForNewWindowAction(uint64_t frameID, const SecurityOriginData& frameSecurityOrigin, NavigationActionData&& navigationActionData, ResourceRequest&& request, const String& frameName, uint64_t listenerID, const UserData& userData) >@@ -4205,20 +4205,20 @@ void WebPageProxy::didUpdateHistoryTitle > > // UIClient > >-void WebPageProxy::createNewPage(const FrameInfoData& originatingFrameInfoData, uint64_t originatingPageID, ResourceRequest&& request, WindowFeatures&& windowFeatures, NavigationActionData&& navigationActionData, Ref<Messages::WebPageProxy::CreateNewPage::DelayedReply>&& reply) >+void WebPageProxy::createNewPage(const FrameInfoData& originatingFrameInfoData, uint64_t originatingPageID, ResourceRequest&& request, WindowFeatures&& windowFeatures, NavigationActionData&& navigationActionData, Messages::WebPageProxy::CreateNewPage::DelayedReply&& reply) > { > MESSAGE_CHECK(m_process->webFrame(originatingFrameInfoData.frameID)); > auto originatingFrameInfo = API::FrameInfo::create(originatingFrameInfoData, m_process->webPage(originatingPageID)); > > auto mainFrameURL = m_mainFrame->url(); > >- m_uiClient->createNewPage(*this, WTFMove(originatingFrameInfo), WTFMove(request), WTFMove(windowFeatures), WTFMove(navigationActionData), [this, protectedThis = RefPtr<WebPageProxy>(this), mainFrameURL, request, reply = WTFMove(reply)](RefPtr<WebPageProxy> newPage) { >+ m_uiClient->createNewPage(*this, WTFMove(originatingFrameInfo), WTFMove(request), WTFMove(windowFeatures), WTFMove(navigationActionData), [this, protectedThis = makeRef(*this), mainFrameURL, request, reply = WTFMove(reply)](RefPtr<WebPageProxy> newPage) { > if (!newPage) { >- reply->send(0, { }); >+ reply(0, { }); > return; > } > >- reply->send(newPage->pageID(), newPage->creationParameters()); >+ reply(newPage->pageID(), newPage->creationParameters()); > > WebsiteDataStore::cloneSessionData(*this, *newPage); > newPage->m_shouldSuppressAppLinksInNextNavigationPolicyDecision = hostsAreEqual(URL(ParsedURLString, mainFrameURL), request.url()); >@@ -4254,7 +4254,7 @@ void WebPageProxy::closePage(bool stopRe > m_uiClient->close(this); > } > >-void WebPageProxy::runJavaScriptAlert(uint64_t frameID, const SecurityOriginData& securityOrigin, const String& message, Ref<Messages::WebPageProxy::RunJavaScriptAlert::DelayedReply>&& reply) >+void WebPageProxy::runJavaScriptAlert(uint64_t frameID, const SecurityOriginData& securityOrigin, const String& message, Messages::WebPageProxy::RunJavaScriptAlert::DelayedReply&& reply) > { > WebFrameProxy* frame = m_process->webFrame(frameID); > MESSAGE_CHECK(frame); >@@ -4266,12 +4266,10 @@ void WebPageProxy::runJavaScriptAlert(ui > if (auto* automationSession = process().processPool().automationSession()) > automationSession->willShowJavaScriptDialog(*this); > } >- m_uiClient->runJavaScriptAlert(this, message, frame, securityOrigin, [reply = WTFMove(reply)] { >- reply->send(); >- }); >+ m_uiClient->runJavaScriptAlert(this, message, frame, securityOrigin, WTFMove(reply)); > } > >-void WebPageProxy::runJavaScriptConfirm(uint64_t frameID, const SecurityOriginData& securityOrigin, const String& message, Ref<Messages::WebPageProxy::RunJavaScriptConfirm::DelayedReply>&& reply) >+void WebPageProxy::runJavaScriptConfirm(uint64_t frameID, const SecurityOriginData& securityOrigin, const String& message, Messages::WebPageProxy::RunJavaScriptConfirm::DelayedReply&& reply) > { > WebFrameProxy* frame = m_process->webFrame(frameID); > MESSAGE_CHECK(frame); >@@ -4284,12 +4282,10 @@ void WebPageProxy::runJavaScriptConfirm( > automationSession->willShowJavaScriptDialog(*this); > } > >- m_uiClient->runJavaScriptConfirm(this, message, frame, securityOrigin, [reply = WTFMove(reply)](bool result) { >- reply->send(result); >- }); >+ m_uiClient->runJavaScriptConfirm(this, message, frame, securityOrigin, WTFMove(reply)); > } > >-void WebPageProxy::runJavaScriptPrompt(uint64_t frameID, const SecurityOriginData& securityOrigin, const String& message, const String& defaultValue, Ref<Messages::WebPageProxy::RunJavaScriptPrompt::DelayedReply>&& reply) >+void WebPageProxy::runJavaScriptPrompt(uint64_t frameID, const SecurityOriginData& securityOrigin, const String& message, const String& defaultValue, Messages::WebPageProxy::RunJavaScriptPrompt::DelayedReply&& reply) > { > WebFrameProxy* frame = m_process->webFrame(frameID); > MESSAGE_CHECK(frame); >@@ -4302,9 +4298,7 @@ void WebPageProxy::runJavaScriptPrompt(u > automationSession->willShowJavaScriptDialog(*this); > } > >- m_uiClient->runJavaScriptPrompt(this, message, defaultValue, frame, securityOrigin, [reply = WTFMove(reply)](const String& result) { >- reply->send(result); >- }); >+ m_uiClient->runJavaScriptPrompt(this, message, defaultValue, frame, securityOrigin, WTFMove(reply)); > } > > void WebPageProxy::setStatusText(const String& text) >@@ -4372,24 +4366,24 @@ void WebPageProxy::unavailablePluginButt > #endif // ENABLE(NETSCAPE_PLUGIN_API) > > #if ENABLE(WEBGL) >-void WebPageProxy::webGLPolicyForURL(URL&& url, Ref<Messages::WebPageProxy::WebGLPolicyForURL::DelayedReply>&& reply) >+void WebPageProxy::webGLPolicyForURL(URL&& url, Messages::WebPageProxy::WebGLPolicyForURL::DelayedReply&& reply) > { > if (m_navigationClient) { > m_navigationClient->webGLLoadPolicy(*this, url, [reply = WTFMove(reply)](WebGLLoadPolicy policy) { >- reply->send(static_cast<uint32_t>(policy)); >+ reply(static_cast<uint32_t>(policy)); > }); > } else >- reply->send(static_cast<uint32_t>(m_loaderClient->webGLLoadPolicy(*this, url))); >+ reply(static_cast<uint32_t>(m_loaderClient->webGLLoadPolicy(*this, url))); > } > >-void WebPageProxy::resolveWebGLPolicyForURL(URL&& url, Ref<Messages::WebPageProxy::ResolveWebGLPolicyForURL::DelayedReply>&& reply) >+void WebPageProxy::resolveWebGLPolicyForURL(URL&& url, Messages::WebPageProxy::ResolveWebGLPolicyForURL::DelayedReply&& reply) > { > if (m_navigationClient) { > m_navigationClient->resolveWebGLLoadPolicy(*this, url, [reply = WTFMove(reply)](WebGLLoadPolicy policy) { >- reply->send(static_cast<uint32_t>(policy)); >+ reply(static_cast<uint32_t>(policy)); > }); > } else >- reply->send(static_cast<uint32_t>(m_loaderClient->resolveWebGLLoadPolicy(*this, url))); >+ reply(static_cast<uint32_t>(m_loaderClient->resolveWebGLLoadPolicy(*this, url))); > } > #endif // ENABLE(WEBGL) > >@@ -4398,11 +4392,9 @@ void WebPageProxy::setToolbarsAreVisible > m_uiClient->setToolbarsAreVisible(*this, toolbarsAreVisible); > } > >-void WebPageProxy::getToolbarsAreVisible(Ref<Messages::WebPageProxy::GetToolbarsAreVisible::DelayedReply>&& reply) >+void WebPageProxy::getToolbarsAreVisible(Messages::WebPageProxy::GetToolbarsAreVisible::DelayedReply&& reply) > { >- m_uiClient->toolbarsAreVisible(*this, [reply = WTFMove(reply)](bool visible) { >- reply->send(visible); >- }); >+ m_uiClient->toolbarsAreVisible(*this, WTFMove(reply)); > } > > void WebPageProxy::setMenuBarIsVisible(bool menuBarIsVisible) >@@ -4410,11 +4402,9 @@ void WebPageProxy::setMenuBarIsVisible(b > m_uiClient->setMenuBarIsVisible(*this, menuBarIsVisible); > } > >-void WebPageProxy::getMenuBarIsVisible(Ref<Messages::WebPageProxy::GetMenuBarIsVisible::DelayedReply>&& reply) >+void WebPageProxy::getMenuBarIsVisible(Messages::WebPageProxy::GetMenuBarIsVisible::DelayedReply&& reply) > { >- m_uiClient->menuBarIsVisible(*this, [reply = WTFMove(reply)] (bool visible) { >- reply->send(visible); >- }); >+ m_uiClient->menuBarIsVisible(*this, WTFMove(reply)); > } > > void WebPageProxy::setStatusBarIsVisible(bool statusBarIsVisible) >@@ -4422,11 +4412,9 @@ void WebPageProxy::setStatusBarIsVisible > m_uiClient->setStatusBarIsVisible(*this, statusBarIsVisible); > } > >-void WebPageProxy::getStatusBarIsVisible(Ref<Messages::WebPageProxy::GetStatusBarIsVisible::DelayedReply>&& reply) >+void WebPageProxy::getStatusBarIsVisible(Messages::WebPageProxy::GetStatusBarIsVisible::DelayedReply&& reply) > { >- m_uiClient->statusBarIsVisible(*this, [reply = WTFMove(reply)] (bool visible) { >- reply->send(visible); >- }); >+ m_uiClient->statusBarIsVisible(*this, WTFMove(reply)); > } > > void WebPageProxy::setIsResizable(bool isResizable) >@@ -4439,10 +4427,10 @@ void WebPageProxy::setWindowFrame(const > m_uiClient->setWindowFrame(*this, m_pageClient.convertToDeviceSpace(newWindowFrame)); > } > >-void WebPageProxy::getWindowFrame(Ref<Messages::WebPageProxy::GetWindowFrame::DelayedReply>&& reply) >+void WebPageProxy::getWindowFrame(Messages::WebPageProxy::GetWindowFrame::DelayedReply&& reply) > { > m_uiClient->windowFrame(*this, [this, protectedThis = makeRef(*this), reply = WTFMove(reply)] (FloatRect frame) { >- reply->send(m_pageClient.convertToUserSpace(frame)); >+ reply(m_pageClient.convertToUserSpace(frame)); > }); > } > >@@ -4453,14 +4441,14 @@ void WebPageProxy::getWindowFrameWithCal > }); > } > >-void WebPageProxy::screenToRootView(const IntPoint& screenPoint, Ref<Messages::WebPageProxy::ScreenToRootView::DelayedReply>&& reply) >+void WebPageProxy::screenToRootView(const IntPoint& screenPoint, Messages::WebPageProxy::ScreenToRootView::DelayedReply&& reply) > { >- reply->send(m_pageClient.screenToRootView(screenPoint)); >+ reply(m_pageClient.screenToRootView(screenPoint)); > } > >-void WebPageProxy::rootViewToScreen(const IntRect& viewRect, Ref<Messages::WebPageProxy::RootViewToScreen::DelayedReply>&& reply) >+void WebPageProxy::rootViewToScreen(const IntRect& viewRect, Messages::WebPageProxy::RootViewToScreen::DelayedReply&& reply) > { >- reply->send(m_pageClient.rootViewToScreen(viewRect)); >+ reply(m_pageClient.rootViewToScreen(viewRect)); > } > > #if PLATFORM(IOS) >@@ -4475,7 +4463,7 @@ void WebPageProxy::rootViewToAccessibili > } > #endif > >-void WebPageProxy::runBeforeUnloadConfirmPanel(uint64_t frameID, const SecurityOriginData& securityOrigin, const String& message, RefPtr<Messages::WebPageProxy::RunBeforeUnloadConfirmPanel::DelayedReply> reply) >+void WebPageProxy::runBeforeUnloadConfirmPanel(uint64_t frameID, const SecurityOriginData& securityOrigin, const String& message, Messages::WebPageProxy::RunBeforeUnloadConfirmPanel::DelayedReply&& reply) > { > WebFrameProxy* frame = m_process->webFrame(frameID); > MESSAGE_CHECK(frame); >@@ -4488,7 +4476,7 @@ void WebPageProxy::runBeforeUnloadConfir > automationSession->willShowJavaScriptDialog(*this); > } > >- m_uiClient->runBeforeUnloadConfirmPanel(this, message, frame, securityOrigin, [reply](bool result) { reply->send(result); }); >+ m_uiClient->runBeforeUnloadConfirmPanel(this, message, frame, securityOrigin, WTFMove(reply)); > } > > void WebPageProxy::didChangeViewportProperties(const ViewportAttributes& attr) >@@ -6206,7 +6194,7 @@ void WebPageProxy::didReceiveAuthenticat > m_loaderClient->didReceiveAuthenticationChallengeInFrame(*this, *frame, authenticationChallenge.get()); > } > >-void WebPageProxy::exceededDatabaseQuota(uint64_t frameID, const String& originIdentifier, const String& databaseName, const String& displayName, uint64_t currentQuota, uint64_t currentOriginUsage, uint64_t currentDatabaseUsage, uint64_t expectedUsage, Ref<Messages::WebPageProxy::ExceededDatabaseQuota::DelayedReply>&& reply) >+void WebPageProxy::exceededDatabaseQuota(uint64_t frameID, const String& originIdentifier, const String& databaseName, const String& displayName, uint64_t currentQuota, uint64_t currentOriginUsage, uint64_t currentDatabaseUsage, uint64_t expectedUsage, Messages::WebPageProxy::ExceededDatabaseQuota::DelayedReply&& reply) > { > ExceededDatabaseQuotaRecords& records = ExceededDatabaseQuotaRecords::singleton(); > std::unique_ptr<ExceededDatabaseQuotaRecords::Record> newRecord = records.createRecord(frameID, >@@ -6222,21 +6210,16 @@ void WebPageProxy::exceededDatabaseQuota > WebFrameProxy* frame = m_process->webFrame(record->frameID); > MESSAGE_CHECK(frame); > >- RefPtr<API::SecurityOrigin> origin = API::SecurityOrigin::create(SecurityOriginData::fromDatabaseIdentifier(record->originIdentifier)->securityOrigin()); >- auto currentReply = record->reply; >- m_uiClient->exceededDatabaseQuota(this, frame, origin.get(), >- record->databaseName, record->displayName, record->currentQuota, >- record->currentOriginUsage, record->currentDatabaseUsage, record->expectedUsage, >- [currentReply](unsigned long long newQuota) { currentReply->send(newQuota); }); >- >+ auto origin = API::SecurityOrigin::create(SecurityOriginData::fromDatabaseIdentifier(record->originIdentifier)->securityOrigin()); >+ m_uiClient->exceededDatabaseQuota(this, frame, origin.ptr(), record->databaseName, record->displayName, record->currentQuota, record->currentOriginUsage, record->currentDatabaseUsage, record->expectedUsage, WTFMove(record->reply)); > record = records.next(); > } > } > >-void WebPageProxy::reachedApplicationCacheOriginQuota(const String& originIdentifier, uint64_t currentQuota, uint64_t totalBytesNeeded, Ref<Messages::WebPageProxy::ReachedApplicationCacheOriginQuota::DelayedReply>&& reply) >+void WebPageProxy::reachedApplicationCacheOriginQuota(const String& originIdentifier, uint64_t currentQuota, uint64_t totalBytesNeeded, Messages::WebPageProxy::ReachedApplicationCacheOriginQuota::DelayedReply&& reply) > { > Ref<SecurityOrigin> securityOrigin = SecurityOriginData::fromDatabaseIdentifier(originIdentifier)->securityOrigin(); >- m_uiClient->reachedApplicationCacheOriginQuota(this, securityOrigin.get(), currentQuota, totalBytesNeeded, [reply = WTFMove(reply)](unsigned long long newQuota) { reply->send(newQuota); }); >+ m_uiClient->reachedApplicationCacheOriginQuota(this, securityOrigin.get(), currentQuota, totalBytesNeeded, WTFMove(reply)); > } > > void WebPageProxy::requestGeolocationPermissionForFrame(uint64_t geolocationID, uint64_t frameID, String originIdentifier) >Index: Source/WebKit/UIProcess/WebPageProxy.h >=================================================================== >--- Source/WebKit/UIProcess/WebPageProxy.h (revision 231909) >+++ Source/WebKit/UIProcess/WebPageProxy.h (working copy) >@@ -1240,7 +1240,7 @@ public: > > void setFocus(bool focused); > void setWindowFrame(const WebCore::FloatRect&); >- void getWindowFrame(Ref<Messages::WebPageProxy::GetWindowFrame::DelayedReply>&&); >+ void getWindowFrame(Messages::WebPageProxy::GetWindowFrame::DelayedReply&&); > void getWindowFrameWithCallback(Function<void(WebCore::FloatRect)>&&); > > bool isResourceCachingDisabled() const { return m_isResourceCachingDisabled; } >@@ -1391,7 +1391,7 @@ private: > void didDestroyNavigation(uint64_t navigationID); > > void decidePolicyForNavigationAction(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, const FrameInfoData&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, uint64_t listenerID, const UserData&); >- void decidePolicyForNavigationActionSync(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, const FrameInfoData&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, uint64_t listenerID, const UserData&, Ref<Messages::WebPageProxy::DecidePolicyForNavigationActionSync::DelayedReply>&&); >+ void decidePolicyForNavigationActionSync(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, const FrameInfoData&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, uint64_t listenerID, const UserData&, Messages::WebPageProxy::DecidePolicyForNavigationActionSync::DelayedReply&&); > void decidePolicyForNewWindowAction(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, NavigationActionData&&, WebCore::ResourceRequest&&, const String& frameName, uint64_t listenerID, const UserData&); > void decidePolicyForResponse(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, bool canShowMIMEType, uint64_t listenerID, const UserData&); > void unableToImplementPolicy(uint64_t frameID, const WebCore::ResourceError&, const UserData&); >@@ -1407,11 +1407,11 @@ private: > void didUpdateHistoryTitle(const String& title, const String& url, uint64_t frameID); > > // UI client >- void createNewPage(const FrameInfoData&, uint64_t originatingPageID, WebCore::ResourceRequest&&, WebCore::WindowFeatures&&, NavigationActionData&&, Ref<Messages::WebPageProxy::CreateNewPage::DelayedReply>&&); >+ void createNewPage(const FrameInfoData&, uint64_t originatingPageID, WebCore::ResourceRequest&&, WebCore::WindowFeatures&&, NavigationActionData&&, Messages::WebPageProxy::CreateNewPage::DelayedReply&&); > void showPage(); >- void runJavaScriptAlert(uint64_t frameID, const WebCore::SecurityOriginData&, const String&, Ref<Messages::WebPageProxy::RunJavaScriptAlert::DelayedReply>&&); >- void runJavaScriptConfirm(uint64_t frameID, const WebCore::SecurityOriginData&, const String&, Ref<Messages::WebPageProxy::RunJavaScriptConfirm::DelayedReply>&&); >- void runJavaScriptPrompt(uint64_t frameID, const WebCore::SecurityOriginData&, const String&, const String&, Ref<Messages::WebPageProxy::RunJavaScriptPrompt::DelayedReply>&&); >+ void runJavaScriptAlert(uint64_t frameID, const WebCore::SecurityOriginData&, const String&, Messages::WebPageProxy::RunJavaScriptAlert::DelayedReply&&); >+ void runJavaScriptConfirm(uint64_t frameID, const WebCore::SecurityOriginData&, const String&, Messages::WebPageProxy::RunJavaScriptConfirm::DelayedReply&&); >+ void runJavaScriptPrompt(uint64_t frameID, const WebCore::SecurityOriginData&, const String&, const String&, Messages::WebPageProxy::RunJavaScriptPrompt::DelayedReply&&); > void setStatusText(const String&); > void mouseDidMoveOverElement(WebHitTestResultData&&, uint32_t modifiers, UserData&&); > >@@ -1419,29 +1419,29 @@ private: > void unavailablePluginButtonClicked(uint32_t opaquePluginUnavailabilityReason, const String& mimeType, const String& pluginURLString, const String& pluginsPageURLString, const String& frameURLString, const String& pageURLString); > #endif // ENABLE(NETSCAPE_PLUGIN_API) > #if ENABLE(WEBGL) >- void webGLPolicyForURL(WebCore::URL&&, Ref<Messages::WebPageProxy::WebGLPolicyForURL::DelayedReply>&&); >- void resolveWebGLPolicyForURL(WebCore::URL&&, Ref<Messages::WebPageProxy::ResolveWebGLPolicyForURL::DelayedReply>&&); >+ void webGLPolicyForURL(WebCore::URL&&, Messages::WebPageProxy::WebGLPolicyForURL::DelayedReply&&); >+ void resolveWebGLPolicyForURL(WebCore::URL&&, Messages::WebPageProxy::ResolveWebGLPolicyForURL::DelayedReply&&); > #endif // ENABLE(WEBGL) > void setToolbarsAreVisible(bool toolbarsAreVisible); >- void getToolbarsAreVisible(Ref<Messages::WebPageProxy::GetToolbarsAreVisible::DelayedReply>&&); >+ void getToolbarsAreVisible(Messages::WebPageProxy::GetToolbarsAreVisible::DelayedReply&&); > void setMenuBarIsVisible(bool menuBarIsVisible); >- void getMenuBarIsVisible(Ref<Messages::WebPageProxy::GetMenuBarIsVisible::DelayedReply>&&); >+ void getMenuBarIsVisible(Messages::WebPageProxy::GetMenuBarIsVisible::DelayedReply&&); > void setStatusBarIsVisible(bool statusBarIsVisible); >- void getStatusBarIsVisible(Ref<Messages::WebPageProxy::GetStatusBarIsVisible::DelayedReply>&&); >+ void getStatusBarIsVisible(Messages::WebPageProxy::GetStatusBarIsVisible::DelayedReply&&); > void setIsResizable(bool isResizable); >- void screenToRootView(const WebCore::IntPoint& screenPoint, Ref<Messages::WebPageProxy::ScreenToRootView::DelayedReply>&&); >- void rootViewToScreen(const WebCore::IntRect& viewRect, Ref<Messages::WebPageProxy::RootViewToScreen::DelayedReply>&&); >+ void screenToRootView(const WebCore::IntPoint& screenPoint, Messages::WebPageProxy::ScreenToRootView::DelayedReply&&); >+ void rootViewToScreen(const WebCore::IntRect& viewRect, Messages::WebPageProxy::RootViewToScreen::DelayedReply&&); > #if PLATFORM(IOS) > void accessibilityScreenToRootView(const WebCore::IntPoint& screenPoint, WebCore::IntPoint& windowPoint); > void rootViewToAccessibilityScreen(const WebCore::IntRect& viewRect, WebCore::IntRect& result); > #endif >- void runBeforeUnloadConfirmPanel(uint64_t frameID, const WebCore::SecurityOriginData&, const String& message, RefPtr<Messages::WebPageProxy::RunBeforeUnloadConfirmPanel::DelayedReply>); >+ void runBeforeUnloadConfirmPanel(uint64_t frameID, const WebCore::SecurityOriginData&, const String& message, Messages::WebPageProxy::RunBeforeUnloadConfirmPanel::DelayedReply&&); > void didChangeViewportProperties(const WebCore::ViewportAttributes&); > void pageDidScroll(); > void runOpenPanel(uint64_t frameID, const WebCore::SecurityOriginData&, const WebCore::FileChooserSettings&); > void printFrame(uint64_t frameID); >- void exceededDatabaseQuota(uint64_t frameID, const String& originIdentifier, const String& databaseName, const String& displayName, uint64_t currentQuota, uint64_t currentOriginUsage, uint64_t currentDatabaseUsage, uint64_t expectedUsage, Ref<Messages::WebPageProxy::ExceededDatabaseQuota::DelayedReply>&&); >- void reachedApplicationCacheOriginQuota(const String& originIdentifier, uint64_t currentQuota, uint64_t totalBytesNeeded, Ref<Messages::WebPageProxy::ReachedApplicationCacheOriginQuota::DelayedReply>&&); >+ void exceededDatabaseQuota(uint64_t frameID, const String& originIdentifier, const String& databaseName, const String& displayName, uint64_t currentQuota, uint64_t currentOriginUsage, uint64_t currentDatabaseUsage, uint64_t expectedUsage, Messages::WebPageProxy::ExceededDatabaseQuota::DelayedReply&&); >+ void reachedApplicationCacheOriginQuota(const String& originIdentifier, uint64_t currentQuota, uint64_t totalBytesNeeded, Messages::WebPageProxy::ReachedApplicationCacheOriginQuota::DelayedReply&&); > void requestGeolocationPermissionForFrame(uint64_t geolocationID, uint64_t frameID, String originIdentifier); > > #if ENABLE(MEDIA_STREAM) >@@ -1961,7 +1961,7 @@ private: > bool m_isPerformingDOMPrintOperation { false }; > > // Synchronous navigation policy decision. >- RefPtr<Messages::WebPageProxy::DecidePolicyForNavigationActionSync::DelayedReply> m_syncNavigationActionPolicyReply; >+ Messages::WebPageProxy::DecidePolicyForNavigationActionSync::DelayedReply m_syncNavigationActionPolicyReply; > > WebCore::ResourceRequest m_decidePolicyForResponseRequest; > bool m_shouldSuppressAppLinksInNextNavigationPolicyDecision { false }; >Index: Source/WebKit/UIProcess/WebProcessPool.cpp >=================================================================== >--- Source/WebKit/UIProcess/WebProcessPool.cpp (revision 231909) >+++ Source/WebKit/UIProcess/WebProcessPool.cpp (working copy) >@@ -538,7 +538,7 @@ NetworkProcessProxy& WebProcessPool::ens > return *m_networkProcess; > } > >-void WebProcessPool::networkProcessCrashed(NetworkProcessProxy& networkProcessProxy, Vector<Ref<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply>>&& pendingReplies) >+void WebProcessPool::networkProcessCrashed(NetworkProcessProxy& networkProcessProxy, Vector<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply>&& pendingReplies) > { > networkProcessFailedToLaunch(networkProcessProxy); > ASSERT(!m_networkProcess); >@@ -564,7 +564,7 @@ void WebProcessPool::networkProcessFaile > m_networkProcess = nullptr; > } > >-void WebProcessPool::getNetworkProcessConnection(Ref<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply>&& reply) >+void WebProcessPool::getNetworkProcessConnection(Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply&& reply) > { > ensureNetworkProcess(); > ASSERT(m_networkProcess); >@@ -611,7 +611,7 @@ void WebProcessPool::ensureStorageProces > m_storageProcess->send(Messages::StorageProcess::InitializeWebsiteDataStore(relevantDataStore->storageProcessParameters()), 0); > } > >-void WebProcessPool::getStorageProcessConnection(WebProcessProxy& webProcessProxy, PAL::SessionID initialSessionID, Ref<Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply>&& reply) >+void WebProcessPool::getStorageProcessConnection(WebProcessProxy& webProcessProxy, PAL::SessionID initialSessionID, Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply&& reply) > { > ensureStorageProcessAndWebsiteDataStore(WebsiteDataStore::existingNonDefaultDataStoreForSessionID(initialSessionID)); > >Index: Source/WebKit/UIProcess/WebProcessPool.h >=================================================================== >--- Source/WebKit/UIProcess/WebProcessPool.h (revision 231909) >+++ Source/WebKit/UIProcess/WebProcessPool.h (working copy) >@@ -326,14 +326,14 @@ public: > // Network Process Management > NetworkProcessProxy& ensureNetworkProcess(WebsiteDataStore* withWebsiteDataStore = nullptr); > NetworkProcessProxy* networkProcess() { return m_networkProcess.get(); } >- void networkProcessCrashed(NetworkProcessProxy&, Vector<Ref<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply>>&&); >+ void networkProcessCrashed(NetworkProcessProxy&, Vector<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply>&&); > void networkProcessFailedToLaunch(NetworkProcessProxy&); > >- void getNetworkProcessConnection(Ref<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply>&&); >+ void getNetworkProcessConnection(Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply&&); > > void ensureStorageProcessAndWebsiteDataStore(WebsiteDataStore* relevantDataStore); > StorageProcessProxy* storageProcess() { return m_storageProcess.get(); } >- void getStorageProcessConnection(WebProcessProxy&, PAL::SessionID initialSessionID, Ref<Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply>&&); >+ void getStorageProcessConnection(WebProcessProxy&, PAL::SessionID initialSessionID, Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply&&); > void storageProcessCrashed(StorageProcessProxy*); > #if ENABLE(SERVICE_WORKER) > void establishWorkerContextConnectionToStorageProcess(StorageProcessProxy&, WebCore::SecurityOriginData&&, std::optional<PAL::SessionID>); >Index: Source/WebKit/UIProcess/WebProcessProxy.cpp >=================================================================== >--- Source/WebKit/UIProcess/WebProcessProxy.cpp (revision 231909) >+++ Source/WebKit/UIProcess/WebProcessProxy.cpp (working copy) >@@ -584,18 +584,18 @@ void WebProcessProxy::getPlugins(bool re > #endif // ENABLE(NETSCAPE_PLUGIN_API) > > #if ENABLE(NETSCAPE_PLUGIN_API) >-void WebProcessProxy::getPluginProcessConnection(uint64_t pluginProcessToken, Ref<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply>&& reply) >+void WebProcessProxy::getPluginProcessConnection(uint64_t pluginProcessToken, Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply&& reply) > { > PluginProcessManager::singleton().getPluginProcessConnection(pluginProcessToken, WTFMove(reply)); > } > #endif > >-void WebProcessProxy::getNetworkProcessConnection(Ref<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply>&& reply) >+void WebProcessProxy::getNetworkProcessConnection(Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply&& reply) > { > m_processPool->getNetworkProcessConnection(WTFMove(reply)); > } > >-void WebProcessProxy::getStorageProcessConnection(PAL::SessionID initialSessionID, Ref<Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply>&& reply) >+void WebProcessProxy::getStorageProcessConnection(PAL::SessionID initialSessionID, Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply&& reply) > { > m_processPool->getStorageProcessConnection(*this, initialSessionID, WTFMove(reply)); > } >Index: Source/WebKit/UIProcess/WebProcessProxy.h >=================================================================== >--- Source/WebKit/UIProcess/WebProcessProxy.h (revision 231909) >+++ Source/WebKit/UIProcess/WebProcessProxy.h (working copy) >@@ -261,10 +261,10 @@ private: > void getPlugins(bool refresh, Vector<WebCore::PluginInfo>& plugins, Vector<WebCore::PluginInfo>& applicationPlugins, std::optional<Vector<WebCore::SupportedPluginName>>&); > #endif // ENABLE(NETSCAPE_PLUGIN_API) > #if ENABLE(NETSCAPE_PLUGIN_API) >- void getPluginProcessConnection(uint64_t pluginProcessToken, Ref<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply>&&); >+ void getPluginProcessConnection(uint64_t pluginProcessToken, Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply&&); > #endif >- void getNetworkProcessConnection(Ref<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply>&&); >- void getStorageProcessConnection(PAL::SessionID initialSessionID, Ref<Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply>&&); >+ void getNetworkProcessConnection(Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply&&); >+ void getStorageProcessConnection(PAL::SessionID initialSessionID, Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply&&); > > bool platformIsBeingDebugged() const; > bool shouldAllowNonValidInjectedCode() const; >Index: Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp >=================================================================== >--- Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (revision 231909) >+++ Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp (working copy) >@@ -115,7 +115,7 @@ void NetworkProcessProxy::processWillShu > ASSERT_UNUSED(connection, this->connection() == &connection); > } > >-void NetworkProcessProxy::getNetworkProcessConnection(Ref<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply>&& reply) >+void NetworkProcessProxy::getNetworkProcessConnection(Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply&& reply) > { > m_pendingConnectionReplies.append(WTFMove(reply)); > >@@ -193,7 +193,7 @@ void NetworkProcessProxy::networkProcess > { > clearCallbackStates(); > >- Vector<Ref<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply>> pendingReplies; >+ Vector<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply> pendingReplies; > pendingReplies.reserveInitialCapacity(m_pendingConnectionReplies.size()); > for (auto& reply : m_pendingConnectionReplies) > pendingReplies.append(WTFMove(reply)); >@@ -206,12 +206,12 @@ void NetworkProcessProxy::networkProcess > { > // The network process must have crashed or exited, send any pending sync replies we might have. > while (!m_pendingConnectionReplies.isEmpty()) { >- Ref<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply> reply = m_pendingConnectionReplies.takeFirst(); >+ auto reply = m_pendingConnectionReplies.takeFirst(); > > #if USE(UNIX_DOMAIN_SOCKETS) || OS(WINDOWS) >- reply->send(IPC::Attachment()); >+ reply(IPC::Attachment()); > #elif OS(DARWIN) >- reply->send(IPC::Attachment(0, MACH_MSG_TYPE_MOVE_SEND)); >+ reply(IPC::Attachment(0, MACH_MSG_TYPE_MOVE_SEND)); > #else > notImplemented(); > #endif >@@ -285,12 +285,12 @@ void NetworkProcessProxy::didCreateNetwo > ASSERT(!m_pendingConnectionReplies.isEmpty()); > > // Grab the first pending connection reply. >- RefPtr<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply> reply = m_pendingConnectionReplies.takeFirst(); >+ auto reply = m_pendingConnectionReplies.takeFirst(); > > #if USE(UNIX_DOMAIN_SOCKETS) || OS(WINDOWS) >- reply->send(connectionIdentifier); >+ reply(connectionIdentifier); > #elif OS(DARWIN) >- reply->send(IPC::Attachment(connectionIdentifier.port(), MACH_MSG_TYPE_MOVE_SEND)); >+ reply(IPC::Attachment(connectionIdentifier.port(), MACH_MSG_TYPE_MOVE_SEND)); > #else > notImplemented(); > #endif >Index: Source/WebKit/UIProcess/Network/NetworkProcessProxy.h >=================================================================== >--- Source/WebKit/UIProcess/Network/NetworkProcessProxy.h (revision 231909) >+++ Source/WebKit/UIProcess/Network/NetworkProcessProxy.h (working copy) >@@ -68,7 +68,7 @@ public: > static Ref<NetworkProcessProxy> create(WebProcessPool&); > ~NetworkProcessProxy(); > >- void getNetworkProcessConnection(Ref<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply>&&); >+ void getNetworkProcessConnection(Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply&&); > > DownloadProxy* createDownloadProxy(const WebCore::ResourceRequest&); > >@@ -154,11 +154,11 @@ private: > WebProcessPool& m_processPool; > > unsigned m_numPendingConnectionRequests; >- Deque<Ref<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply>> m_pendingConnectionReplies; >+ Deque<Messages::WebProcessProxy::GetNetworkProcessConnection::DelayedReply> m_pendingConnectionReplies; > >- HashMap<uint64_t, WTF::Function<void (WebsiteData)>> m_pendingFetchWebsiteDataCallbacks; >- HashMap<uint64_t, WTF::Function<void ()>> m_pendingDeleteWebsiteDataCallbacks; >- HashMap<uint64_t, WTF::Function<void ()>> m_pendingDeleteWebsiteDataForOriginsCallbacks; >+ HashMap<uint64_t, Function<void(WebsiteData)>> m_pendingFetchWebsiteDataCallbacks; >+ HashMap<uint64_t, Function<void()>> m_pendingDeleteWebsiteDataCallbacks; >+ HashMap<uint64_t, Function<void()>> m_pendingDeleteWebsiteDataForOriginsCallbacks; > > std::unique_ptr<DownloadProxyMap> m_downloadProxyMap; > #if ENABLE(LEGACY_CUSTOM_PROTOCOL_MANAGER) >Index: Source/WebKit/UIProcess/Plugins/PluginProcessManager.cpp >=================================================================== >--- Source/WebKit/UIProcess/Plugins/PluginProcessManager.cpp (revision 231909) >+++ Source/WebKit/UIProcess/Plugins/PluginProcessManager.cpp (working copy) >@@ -81,7 +81,7 @@ uint64_t PluginProcessManager::pluginPro > return token; > } > >-void PluginProcessManager::getPluginProcessConnection(uint64_t pluginProcessToken, Ref<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply>&& reply) >+void PluginProcessManager::getPluginProcessConnection(uint64_t pluginProcessToken, Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply&& reply) > { > ASSERT(pluginProcessToken); > >Index: Source/WebKit/UIProcess/Plugins/PluginProcessManager.h >=================================================================== >--- Source/WebKit/UIProcess/Plugins/PluginProcessManager.h (revision 231909) >+++ Source/WebKit/UIProcess/Plugins/PluginProcessManager.h (working copy) >@@ -57,7 +57,7 @@ public: > > uint64_t pluginProcessToken(const PluginModuleInfo&, PluginProcessType, PluginProcessSandboxPolicy); > >- void getPluginProcessConnection(uint64_t pluginProcessToken, Ref<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply>&&); >+ void getPluginProcessConnection(uint64_t pluginProcessToken, Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply&&); > void removePluginProcessProxy(PluginProcessProxy*); > > void fetchWebsiteData(const PluginModuleInfo&, OptionSet<WebsiteDataFetchOption>, WTF::Function<void (Vector<String>)>&& completionHandler); >Index: Source/WebKit/UIProcess/Plugins/PluginProcessProxy.cpp >=================================================================== >--- Source/WebKit/UIProcess/Plugins/PluginProcessProxy.cpp (revision 231909) >+++ Source/WebKit/UIProcess/Plugins/PluginProcessProxy.cpp (working copy) >@@ -102,7 +102,7 @@ void PluginProcessProxy::processWillShut > > // Asks the plug-in process to create a new connection to a web process. The connection identifier will be > // encoded in the given argument encoder and sent back to the connection of the given web process. >-void PluginProcessProxy::getPluginProcessConnection(Ref<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply>&& reply) >+void PluginProcessProxy::getPluginProcessConnection(Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply&& reply) > { > m_pendingConnectionReplies.append(WTFMove(reply)); > >@@ -159,12 +159,12 @@ void PluginProcessProxy::pluginProcessCr > { > // The plug-in process must have crashed or exited, send any pending sync replies we might have. > while (!m_pendingConnectionReplies.isEmpty()) { >- RefPtr<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply> reply = m_pendingConnectionReplies.takeFirst(); >+ auto reply = m_pendingConnectionReplies.takeFirst(); > > #if USE(UNIX_DOMAIN_SOCKETS) >- reply->send(IPC::Attachment(), false); >+ reply(IPC::Attachment(), false); > #elif OS(DARWIN) >- reply->send(IPC::Attachment(0, MACH_MSG_TYPE_MOVE_SEND), false); >+ reply(IPC::Attachment(0, MACH_MSG_TYPE_MOVE_SEND), false); > #else > notImplemented(); > #endif >@@ -276,12 +276,12 @@ void PluginProcessProxy::didCreateWebPro > ASSERT(!m_pendingConnectionReplies.isEmpty()); > > // Grab the first pending connection reply. >- RefPtr<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply> reply = m_pendingConnectionReplies.takeFirst(); >+ auto reply = m_pendingConnectionReplies.takeFirst(); > > #if USE(UNIX_DOMAIN_SOCKETS) >- reply->send(connectionIdentifier, supportsAsynchronousPluginInitialization); >+ reply(connectionIdentifier, supportsAsynchronousPluginInitialization); > #elif OS(DARWIN) >- reply->send(IPC::Attachment(connectionIdentifier.port(), MACH_MSG_TYPE_MOVE_SEND), supportsAsynchronousPluginInitialization); >+ reply(IPC::Attachment(connectionIdentifier.port(), MACH_MSG_TYPE_MOVE_SEND), supportsAsynchronousPluginInitialization); > #else > notImplemented(); > #endif >Index: Source/WebKit/UIProcess/Plugins/PluginProcessProxy.h >=================================================================== >--- Source/WebKit/UIProcess/Plugins/PluginProcessProxy.h (revision 231909) >+++ Source/WebKit/UIProcess/Plugins/PluginProcessProxy.h (working copy) >@@ -76,7 +76,7 @@ public: > > // Asks the plug-in process to create a new connection to a web process. The connection identifier will be > // encoded in the given argument encoder and sent back to the connection of the given web process. >- void getPluginProcessConnection(Ref<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply>&&); >+ void getPluginProcessConnection(Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply&&); > > void fetchWebsiteData(WTF::Function<void (Vector<String>)>&& completionHandler); > void deleteWebsiteData(WallTime modifiedSince, WTF::Function<void ()>&& completionHandler); >@@ -144,7 +144,7 @@ private: > // The connection to the plug-in host process. > RefPtr<IPC::Connection> m_connection; > >- Deque<RefPtr<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply>> m_pendingConnectionReplies; >+ Deque<Messages::WebProcessProxy::GetPluginProcessConnection::DelayedReply> m_pendingConnectionReplies; > > Vector<uint64_t> m_pendingFetchWebsiteDataRequests; > HashMap<uint64_t, WTF::Function<void (Vector<String>)>> m_pendingFetchWebsiteDataCallbacks; >Index: Source/WebKit/UIProcess/Storage/StorageProcessProxy.cpp >=================================================================== >--- Source/WebKit/UIProcess/Storage/StorageProcessProxy.cpp (revision 231909) >+++ Source/WebKit/UIProcess/Storage/StorageProcessProxy.cpp (working copy) >@@ -112,7 +112,7 @@ void StorageProcessProxy::deleteWebsiteD > send(Messages::StorageProcess::DeleteWebsiteDataForOrigins(sessionID, dataTypes, origins, callbackID), 0); > } > >-void StorageProcessProxy::getStorageProcessConnection(WebProcessProxy& webProcessProxy, Ref<Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply>&& reply) >+void StorageProcessProxy::getStorageProcessConnection(WebProcessProxy& webProcessProxy, Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply&& reply) > { > m_pendingConnectionReplies.append(WTFMove(reply)); > >@@ -140,9 +140,9 @@ void StorageProcessProxy::didClose(IPC:: > auto reply = m_pendingConnectionReplies.takeFirst(); > > #if USE(UNIX_DOMAIN_SOCKETS) >- reply->send(IPC::Attachment()); >+ reply(IPC::Attachment()); > #elif OS(DARWIN) >- reply->send(IPC::Attachment(0, MACH_MSG_TYPE_MOVE_SEND)); >+ reply(IPC::Attachment(0, MACH_MSG_TYPE_MOVE_SEND)); > #else > notImplemented(); > #endif >@@ -172,12 +172,12 @@ void StorageProcessProxy::didCreateStora > { > ASSERT(!m_pendingConnectionReplies.isEmpty()); > >- RefPtr<Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply> reply = m_pendingConnectionReplies.takeFirst(); >+ auto reply = m_pendingConnectionReplies.takeFirst(); > > #if USE(UNIX_DOMAIN_SOCKETS) >- reply->send(connectionIdentifier); >+ reply(connectionIdentifier); > #elif OS(DARWIN) >- reply->send(IPC::Attachment(connectionIdentifier.port(), MACH_MSG_TYPE_MOVE_SEND)); >+ reply(IPC::Attachment(connectionIdentifier.port(), MACH_MSG_TYPE_MOVE_SEND)); > #else > notImplemented(); > #endif >Index: Source/WebKit/UIProcess/Storage/StorageProcessProxy.h >=================================================================== >--- Source/WebKit/UIProcess/Storage/StorageProcessProxy.h (revision 231909) >+++ Source/WebKit/UIProcess/Storage/StorageProcessProxy.h (working copy) >@@ -56,7 +56,7 @@ public: > void deleteWebsiteData(PAL::SessionID, OptionSet<WebsiteDataType>, WallTime modifiedSince, WTF::Function<void()>&& completionHandler); > void deleteWebsiteDataForOrigins(PAL::SessionID, OptionSet<WebsiteDataType>, const Vector<WebCore::SecurityOriginData>&, WTF::Function<void()>&& completionHandler); > >- void getStorageProcessConnection(WebProcessProxy&, Ref<Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply>&&); >+ void getStorageProcessConnection(WebProcessProxy&, Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply&&); > > private: > StorageProcessProxy(WebProcessPool&); >@@ -91,7 +91,7 @@ private: > WebProcessPool& m_processPool; > > unsigned m_numPendingConnectionRequests; >- Deque<Ref<Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply>> m_pendingConnectionReplies; >+ Deque<Messages::WebProcessProxy::GetStorageProcessConnection::DelayedReply> m_pendingConnectionReplies; > > HashMap<uint64_t, WTF::Function<void (WebsiteData)>> m_pendingFetchWebsiteDataCallbacks; > HashMap<uint64_t, WTF::Function<void ()>> m_pendingDeleteWebsiteDataCallbacks; >Index: Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp >=================================================================== >--- Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp (revision 231909) >+++ Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.cpp (working copy) >@@ -244,11 +244,9 @@ void WebSWContextManagerConnection::term > SWContextManager::singleton().terminateWorker(identifier, asyncWorkerTerminationTimeout, nullptr); > } > >-void WebSWContextManagerConnection::syncTerminateWorker(ServiceWorkerIdentifier identifier, Ref<Messages::WebSWContextManagerConnection::SyncTerminateWorker::DelayedReply>&& reply) >+void WebSWContextManagerConnection::syncTerminateWorker(ServiceWorkerIdentifier identifier, Messages::WebSWContextManagerConnection::SyncTerminateWorker::DelayedReply&& reply) > { >- SWContextManager::singleton().terminateWorker(identifier, syncWorkerTerminationTimeout, [reply = WTFMove(reply)] { >- reply->send(); >- }); >+ SWContextManager::singleton().terminateWorker(identifier, syncWorkerTerminationTimeout, WTFMove(reply)); > } > > void WebSWContextManagerConnection::postMessageToServiceWorkerClient(const ServiceWorkerClientIdentifier& destinationIdentifier, MessageWithMessagePorts&& message, ServiceWorkerIdentifier sourceIdentifier, const String& sourceOrigin) >Index: Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h >=================================================================== >--- Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h (revision 231909) >+++ Source/WebKit/WebProcess/Storage/WebSWContextManagerConnection.h (working copy) >@@ -82,7 +82,7 @@ private: > void fireInstallEvent(WebCore::ServiceWorkerIdentifier); > void fireActivateEvent(WebCore::ServiceWorkerIdentifier); > void terminateWorker(WebCore::ServiceWorkerIdentifier); >- void syncTerminateWorker(WebCore::ServiceWorkerIdentifier, Ref<Messages::WebSWContextManagerConnection::SyncTerminateWorker::DelayedReply>&&); >+ void syncTerminateWorker(WebCore::ServiceWorkerIdentifier, Messages::WebSWContextManagerConnection::SyncTerminateWorker::DelayedReply&&); > void findClientByIdentifierCompleted(uint64_t requestIdentifier, std::optional<WebCore::ServiceWorkerClientData>&&, bool hasSecurityError); > void matchAllCompleted(uint64_t matchAllRequestIdentifier, Vector<WebCore::ServiceWorkerClientData>&&); > void claimCompleted(uint64_t claimRequestIdentifier); >Index: Source/WebKit/WebProcess/WebPage/WebPage.h >=================================================================== >--- Source/WebKit/WebProcess/WebPage/WebPage.h (revision 231909) >+++ Source/WebKit/WebProcess/WebPage/WebPage.h (working copy) >@@ -814,7 +814,7 @@ public: > #endif > > #if PLATFORM(IOS) >- void computePagesForPrintingAndDrawToPDF(uint64_t frameID, const PrintInfo&, CallbackID, Ref<Messages::WebPage::ComputePagesForPrintingAndDrawToPDF::DelayedReply>&&); >+ void computePagesForPrintingAndDrawToPDF(uint64_t frameID, const PrintInfo&, CallbackID, Messages::WebPage::ComputePagesForPrintingAndDrawToPDF::DelayedReply&&); > #endif > > #if PLATFORM(GTK) >Index: Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm >=================================================================== >--- Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm (revision 231909) >+++ Source/WebKit/WebProcess/WebPage/ios/WebPageIOS.mm (working copy) >@@ -2990,10 +2990,10 @@ void WebPage::dispatchAsynchronousTouchE > } > #endif > >-void WebPage::computePagesForPrintingAndDrawToPDF(uint64_t frameID, const PrintInfo& printInfo, CallbackID callbackID, Ref<Messages::WebPage::ComputePagesForPrintingAndDrawToPDF::DelayedReply>&& reply) >+void WebPage::computePagesForPrintingAndDrawToPDF(uint64_t frameID, const PrintInfo& printInfo, CallbackID callbackID, Messages::WebPage::ComputePagesForPrintingAndDrawToPDF::DelayedReply&& reply) > { > if (printInfo.snapshotFirstPage) { >- reply->send(1); >+ reply(1); > IntSize snapshotSize { FloatSize { printInfo.availablePaperWidth, printInfo.availablePaperHeight } }; > IntRect snapshotRect { {0, 0}, snapshotSize }; > auto pdfData = pdfSnapshotAtSize(snapshotRect, snapshotSize, 0); >@@ -3008,7 +3008,7 @@ void WebPage::computePagesForPrintingAnd > ASSERT(pageRects.size() >= 1); > std::size_t pageCount = pageRects.size(); > ASSERT(pageCount <= std::numeric_limits<uint32_t>::max()); >- reply->send(pageCount); >+ reply(pageCount); > > RetainPtr<CFMutableDataRef> pdfPageData; > drawPagesToPDFImpl(frameID, printInfo, 0, pageCount, pdfPageData);
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 182269
:
332600
|
332604
|
332606
|
337233
|
337235
|
337236
|
337237
|
340635
|
340640
| 340650