Title: [274172] trunk/Source/WebKit
Revision
274172
Author
[email protected]
Date
2021-03-09 13:27:27 -0800 (Tue, 09 Mar 2021)

Log Message

[IPC Hardening] Protect against bad input in WebProcessProxy::createSpeechRecognitionServer() and MessageReceiverMap
https://bugs.webkit.org/show_bug.cgi?id=222948
<rdar://problem/75191472>

Reviewed by Alex Christensen.

Update MessageReceiverMap so that:
1. Trying to remove a MessageReceiver that is not in the map does not
   do dangerous things.
2. It stores weak pointers to the receivers instead of raw pointers. This
   would avoid doing bad things when trying to remove a message receiver
   that's already been destroyed.

Add a MESSAGE_CHECK() in WebProcessProxy::createSpeechRecognitionServer() to
make sure the identifier is not already in the map. There used to be a debug
assertion but we should MESSAGE_CHECK() too since the value is coming from
IPC.

* GPUProcess/GPUConnectionToWebProcess.h:
* GPUProcess/GPUProcess.h:
* GPUProcess/media/RemoteAudioSessionProxy.h:
* GPUProcess/media/RemoteCDMFactoryProxy.h:
* GPUProcess/media/RemoteCDMProxy.h:
* GPUProcess/media/RemoteLegacyCDMFactoryProxy.h:
* GPUProcess/media/RemoteLegacyCDMProxy.h:
* GPUProcess/media/RemoteLegacyCDMSessionProxy.h:
* GPUProcess/media/RemoteMediaEngineConfigurationFactoryProxy.h:
* GPUProcess/media/RemoteMediaPlayerManagerProxy.h:
* GPUProcess/media/RemoteMediaPlayerProxy.h:
* GPUProcess/media/RemoteMediaResourceManager.h:
* GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.h:
* NetworkProcess/NetworkProcess.h:
* NetworkProcess/ServiceWorker/WebSWServerConnection.h:
* NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
* Platform/IPC/MessageReceiver.h:
* Platform/IPC/MessageReceiverMap.cpp:
(IPC::MessageReceiverMap::addMessageReceiver):
(IPC::MessageReceiverMap::removeMessageReceiver):
(IPC::MessageReceiverMap::dispatchMessage):
(IPC::MessageReceiverMap::dispatchSyncMessage):
* Platform/IPC/MessageReceiverMap.h:
* Shared/API/Cocoa/RemoteObjectRegistry.h:
* Shared/ApplePay/WebPaymentCoordinatorProxy.h:
* Shared/Authentication/AuthenticationManager.h:
* Shared/AuxiliaryProcess.h:
* UIProcess/GPU/GPUProcessProxy.h:
* UIProcess/Inspector/WebInspectorProxy.h:
* UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h:
* UIProcess/Media/AudioSessionRoutingArbitratorProxy.h:
* UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.h:
* UIProcess/Network/NetworkProcessProxy.h:
* UIProcess/ProvisionalPageProxy.h:
* UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.h:
* UIProcess/SpeechRecognitionServer.h:
* UIProcess/SuspendedPageProxy.h:
* UIProcess/WebAuthentication/WebAuthnProcessProxy.h:
* UIProcess/WebPageProxy.h:
* UIProcess/WebProcessPool.h:
* UIProcess/WebProcessProxy.cpp:
(WebKit::WebProcessProxy::createSpeechRecognitionServer):
* UIProcess/WebProcessProxy.h:
* WebAuthnProcess/WebAuthnProcess.h:
* WebProcess/GPU/GPUProcessConnection.h:
* WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
* WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
* WebProcess/GPU/media/MediaSourcePrivateRemote.h:
* WebProcess/GPU/media/SourceBufferPrivateRemote.h:
* WebProcess/GPU/webrtc/SampleBufferDisplayLayer.h:
* WebProcess/Inspector/WebInspectorUIExtensionController.h:
* WebProcess/Network/WebSocketChannel.h:
* WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.h:
* WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
* WebProcess/WebPage/WebPage.h:
* WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
* WebProcess/WebStorage/StorageAreaMap.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (274171 => 274172)


--- trunk/Source/WebKit/ChangeLog	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/ChangeLog	2021-03-09 21:27:27 UTC (rev 274172)
@@ -1,3 +1,81 @@
+2021-03-09  Chris Dumez  <[email protected]>
+
+        [IPC Hardening] Protect against bad input in WebProcessProxy::createSpeechRecognitionServer() and MessageReceiverMap
+        https://bugs.webkit.org/show_bug.cgi?id=222948
+        <rdar://problem/75191472>
+
+        Reviewed by Alex Christensen.
+
+        Update MessageReceiverMap so that:
+        1. Trying to remove a MessageReceiver that is not in the map does not
+           do dangerous things.
+        2. It stores weak pointers to the receivers instead of raw pointers. This
+           would avoid doing bad things when trying to remove a message receiver
+           that's already been destroyed.
+
+        Add a MESSAGE_CHECK() in WebProcessProxy::createSpeechRecognitionServer() to
+        make sure the identifier is not already in the map. There used to be a debug
+        assertion but we should MESSAGE_CHECK() too since the value is coming from
+        IPC.
+
+        * GPUProcess/GPUConnectionToWebProcess.h:
+        * GPUProcess/GPUProcess.h:
+        * GPUProcess/media/RemoteAudioSessionProxy.h:
+        * GPUProcess/media/RemoteCDMFactoryProxy.h:
+        * GPUProcess/media/RemoteCDMProxy.h:
+        * GPUProcess/media/RemoteLegacyCDMFactoryProxy.h:
+        * GPUProcess/media/RemoteLegacyCDMProxy.h:
+        * GPUProcess/media/RemoteLegacyCDMSessionProxy.h:
+        * GPUProcess/media/RemoteMediaEngineConfigurationFactoryProxy.h:
+        * GPUProcess/media/RemoteMediaPlayerManagerProxy.h:
+        * GPUProcess/media/RemoteMediaPlayerProxy.h:
+        * GPUProcess/media/RemoteMediaResourceManager.h:
+        * GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.h:
+        * NetworkProcess/NetworkProcess.h:
+        * NetworkProcess/ServiceWorker/WebSWServerConnection.h:
+        * NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h:
+        * Platform/IPC/MessageReceiver.h:
+        * Platform/IPC/MessageReceiverMap.cpp:
+        (IPC::MessageReceiverMap::addMessageReceiver):
+        (IPC::MessageReceiverMap::removeMessageReceiver):
+        (IPC::MessageReceiverMap::dispatchMessage):
+        (IPC::MessageReceiverMap::dispatchSyncMessage):
+        * Platform/IPC/MessageReceiverMap.h:
+        * Shared/API/Cocoa/RemoteObjectRegistry.h:
+        * Shared/ApplePay/WebPaymentCoordinatorProxy.h:
+        * Shared/Authentication/AuthenticationManager.h:
+        * Shared/AuxiliaryProcess.h:
+        * UIProcess/GPU/GPUProcessProxy.h:
+        * UIProcess/Inspector/WebInspectorProxy.h:
+        * UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h:
+        * UIProcess/Media/AudioSessionRoutingArbitratorProxy.h:
+        * UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.h:
+        * UIProcess/Network/NetworkProcessProxy.h:
+        * UIProcess/ProvisionalPageProxy.h:
+        * UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.h:
+        * UIProcess/SpeechRecognitionServer.h:
+        * UIProcess/SuspendedPageProxy.h:
+        * UIProcess/WebAuthentication/WebAuthnProcessProxy.h:
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/WebProcessPool.h:
+        * UIProcess/WebProcessProxy.cpp:
+        (WebKit::WebProcessProxy::createSpeechRecognitionServer):
+        * UIProcess/WebProcessProxy.h:
+        * WebAuthnProcess/WebAuthnProcess.h:
+        * WebProcess/GPU/GPUProcessConnection.h:
+        * WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h:
+        * WebProcess/GPU/media/MediaPlayerPrivateRemote.h:
+        * WebProcess/GPU/media/MediaSourcePrivateRemote.h:
+        * WebProcess/GPU/media/SourceBufferPrivateRemote.h:
+        * WebProcess/GPU/webrtc/SampleBufferDisplayLayer.h:
+        * WebProcess/Inspector/WebInspectorUIExtensionController.h:
+        * WebProcess/Network/WebSocketChannel.h:
+        * WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.h:
+        * WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h:
+        * WebProcess/WebPage/WebPage.h:
+        * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
+        * WebProcess/WebStorage/StorageAreaMap.h:
+
 2021-03-09  Fujii Hironori  <[email protected]>
 
         [WinCairo] Deadlocks in WTF::Thread::ThreadHolder::~ThreadHolder while WebKitWebProcess.exe is shutting down

Modified: trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h (274171 => 274172)


--- trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/GPUProcess/GPUConnectionToWebProcess.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -86,6 +86,9 @@
     static Ref<GPUConnectionToWebProcess> create(GPUProcess&, WebCore::ProcessIdentifier, IPC::Connection::Identifier, PAL::SessionID, GPUProcessConnectionParameters&&);
     virtual ~GPUConnectionToWebProcess();
 
+    using WebCore::NowPlayingManager::Client::weakPtrFactory;
+    using WeakValueType = WebCore::NowPlayingManager::Client::WeakValueType;
+
     IPC::Connection& connection() { return m_connection.get(); }
     IPC::MessageReceiverMap& messageReceiverMap() { return m_messageReceiverMap; }
     GPUProcess& gpuProcess() { return m_gpuProcess.get(); }

Modified: trunk/Source/WebKit/GPUProcess/GPUProcess.h (274171 => 274172)


--- trunk/Source/WebKit/GPUProcess/GPUProcess.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/GPUProcess/GPUProcess.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -53,7 +53,7 @@
 class LayerHostingContext;
 class RemoteAudioSessionProxyManager;
 
-class GPUProcess : public AuxiliaryProcess, public ThreadSafeRefCounted<GPUProcess>, public CanMakeWeakPtr<GPUProcess> {
+class GPUProcess : public AuxiliaryProcess, public ThreadSafeRefCounted<GPUProcess> {
     WTF_MAKE_NONCOPYABLE(GPUProcess);
 public:
     explicit GPUProcess(AuxiliaryProcessInitializationParameters&&);

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.h (274171 => 274172)


--- trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteAudioSessionProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -43,8 +43,7 @@
 class RemoteAudioSessionProxyManager;
 
 class RemoteAudioSessionProxy
-    : public IPC::MessageReceiver
-    , public CanMakeWeakPtr<RemoteAudioSessionProxy> {
+    : public IPC::MessageReceiver {
     WTF_MAKE_FAST_ALLOCATED;
 public:
     static UniqueRef<RemoteAudioSessionProxy> create(GPUConnectionToWebProcess&);

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteCDMFactoryProxy.h (274171 => 274172)


--- trunk/Source/WebKit/GPUProcess/media/RemoteCDMFactoryProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteCDMFactoryProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -43,7 +43,7 @@
 class RemoteCDMProxy;
 struct RemoteCDMConfiguration;
 
-class RemoteCDMFactoryProxy final : private IPC::MessageReceiver, public CanMakeWeakPtr<RemoteCDMFactoryProxy> {
+class RemoteCDMFactoryProxy final : public IPC::MessageReceiver {
     WTF_MAKE_FAST_ALLOCATED;
 public:
     RemoteCDMFactoryProxy(GPUConnectionToWebProcess&);

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteCDMProxy.h (274171 => 274172)


--- trunk/Source/WebKit/GPUProcess/media/RemoteCDMProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteCDMProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -49,7 +49,7 @@
 struct RemoteCDMInstanceConfiguration;
 struct RemoteCDMConfiguration;
 
-class RemoteCDMProxy : private IPC::MessageReceiver, public CanMakeWeakPtr<RemoteCDMProxy> {
+class RemoteCDMProxy : public IPC::MessageReceiver {
 public:
     static std::unique_ptr<RemoteCDMProxy> create(WeakPtr<RemoteCDMFactoryProxy>&&, std::unique_ptr<WebCore::CDMPrivate>&&);
     ~RemoteCDMProxy();

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteLegacyCDMFactoryProxy.h (274171 => 274172)


--- trunk/Source/WebKit/GPUProcess/media/RemoteLegacyCDMFactoryProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteLegacyCDMFactoryProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -42,7 +42,7 @@
 class RemoteLegacyCDMProxy;
 struct RemoteLegacyCDMConfiguration;
 
-class RemoteLegacyCDMFactoryProxy final : private IPC::MessageReceiver, public CanMakeWeakPtr<RemoteLegacyCDMFactoryProxy> {
+class RemoteLegacyCDMFactoryProxy final : public IPC::MessageReceiver {
     WTF_MAKE_FAST_ALLOCATED;
 public:
     RemoteLegacyCDMFactoryProxy(GPUConnectionToWebProcess&);

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteLegacyCDMProxy.h (274171 => 274172)


--- trunk/Source/WebKit/GPUProcess/media/RemoteLegacyCDMProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteLegacyCDMProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -42,9 +42,8 @@
 namespace WebKit {
 
 class RemoteLegacyCDMProxy
-    : private IPC::MessageReceiver
-    , public WebCore::LegacyCDMClient
-    , public CanMakeWeakPtr<RemoteLegacyCDMProxy> {
+    : public IPC::MessageReceiver
+    , public WebCore::LegacyCDMClient {
 public:
     static std::unique_ptr<RemoteLegacyCDMProxy> create(WeakPtr<RemoteLegacyCDMFactoryProxy>, WebCore::MediaPlayerIdentifier&&, std::unique_ptr<WebCore::LegacyCDM>&&);
     ~RemoteLegacyCDMProxy();

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteLegacyCDMSessionProxy.h (274171 => 274172)


--- trunk/Source/WebKit/GPUProcess/media/RemoteLegacyCDMSessionProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteLegacyCDMSessionProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -50,9 +50,8 @@
 class RemoteMediaPlayerProxy;
 
 class RemoteLegacyCDMSessionProxy
-    : private IPC::MessageReceiver
-    , public WebCore::LegacyCDMSessionClient
-    , public CanMakeWeakPtr<RemoteLegacyCDMSessionProxy> {
+    : public IPC::MessageReceiver
+    , public WebCore::LegacyCDMSessionClient {
 public:
     static std::unique_ptr<RemoteLegacyCDMSessionProxy> create(WeakPtr<RemoteLegacyCDMFactoryProxy>&&, RemoteLegacyCDMSessionIdentifier, WebCore::LegacyCDM&);
     ~RemoteLegacyCDMSessionProxy();

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaEngineConfigurationFactoryProxy.h (274171 => 274172)


--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaEngineConfigurationFactoryProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaEngineConfigurationFactoryProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -35,7 +35,7 @@
 
 namespace WebKit {
 
-class RemoteMediaEngineConfigurationFactoryProxy final : private IPC::MessageReceiver, public CanMakeWeakPtr<RemoteMediaEngineConfigurationFactoryProxy> {
+class RemoteMediaEngineConfigurationFactoryProxy final : private IPC::MessageReceiver {
     WTF_MAKE_FAST_ALLOCATED;
 public:
     RemoteMediaEngineConfigurationFactoryProxy();

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h (274171 => 274172)


--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerManagerProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -45,8 +45,7 @@
 struct RemoteMediaPlayerProxyConfiguration;
 
 class RemoteMediaPlayerManagerProxy
-    : public CanMakeWeakPtr<RemoteMediaPlayerManagerProxy>
-    , private IPC::MessageReceiver
+    : public IPC::MessageReceiver
 {
     WTF_MAKE_FAST_ALLOCATED;
 public:

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h (274171 => 274172)


--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaPlayerProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -81,9 +81,8 @@
 class RemoteVideoTrackProxy;
 
 class RemoteMediaPlayerProxy final
-    : public CanMakeWeakPtr<RemoteMediaPlayerProxy>
-    , public WebCore::MediaPlayerClient
-    , private IPC::MessageReceiver {
+    : public WebCore::MediaPlayerClient
+    , public IPC::MessageReceiver {
     WTF_MAKE_FAST_ALLOCATED;
 public:
     RemoteMediaPlayerProxy(RemoteMediaPlayerManagerProxy&, WebCore::MediaPlayerIdentifier, Ref<IPC::Connection>&&, WebCore::MediaPlayerEnums::MediaEngineIdentifier, RemoteMediaPlayerProxyConfiguration&&);

Modified: trunk/Source/WebKit/GPUProcess/media/RemoteMediaResourceManager.h (274171 => 274172)


--- trunk/Source/WebKit/GPUProcess/media/RemoteMediaResourceManager.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/GPUProcess/media/RemoteMediaResourceManager.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -49,8 +49,7 @@
 class RemoteMediaResource;
 
 class RemoteMediaResourceManager
-    : public IPC::MessageReceiver
-    , public CanMakeWeakPtr<RemoteMediaResourceManager> {
+    : public IPC::MessageReceiver {
     WTF_MAKE_FAST_ALLOCATED;
 public:
     RemoteMediaResourceManager();

Modified: trunk/Source/WebKit/GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.h (274171 => 274172)


--- trunk/Source/WebKit/GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/GPUProcess/webrtc/RemoteSampleBufferDisplayLayer.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -48,6 +48,9 @@
     static std::unique_ptr<RemoteSampleBufferDisplayLayer> create(SampleBufferDisplayLayerIdentifier, Ref<IPC::Connection>&&);
     ~RemoteSampleBufferDisplayLayer();
 
+    using WebCore::SampleBufferDisplayLayer::Client::weakPtrFactory;
+    using WeakValueType = WebCore::SampleBufferDisplayLayer::Client::WeakValueType;
+
     using LayerInitializationCallback = CompletionHandler<void(Optional<LayerHostingContextID>)>;
     void initialize(bool hideRootLayer, WebCore::IntSize, LayerInitializationCallback&&);
 

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (274171 => 274172)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -125,7 +125,7 @@
 class Engine;
 }
 
-class NetworkProcess : public AuxiliaryProcess, private DownloadManager::Client, public ThreadSafeRefCounted<NetworkProcess>, public CanMakeWeakPtr<NetworkProcess>
+class NetworkProcess : public AuxiliaryProcess, private DownloadManager::Client, public ThreadSafeRefCounted<NetworkProcess>
 {
     WTF_MAKE_NONCOPYABLE(NetworkProcess);
 public:

Modified: trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.h (274171 => 274172)


--- trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerConnection.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -67,6 +67,9 @@
     WebSWServerConnection(const WebSWServerConnection&) = delete;
     ~WebSWServerConnection() final;
 
+    using WebCore::SWServer::Connection::weakPtrFactory;
+    using WeakValueType = WebCore::SWServer::Connection::WeakValueType;
+
     IPC::Connection& ipcConnection() const { return m_contentConnection.get(); }
 
     void didReceiveMessage(IPC::Connection&, IPC::Decoder&) final;

Modified: trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h (274171 => 274172)


--- trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/NetworkProcess/ServiceWorker/WebSWServerToContextConnection.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -52,7 +52,7 @@
 class NetworkConnectionToWebProcess;
 class WebSWServerConnection;
 
-class WebSWServerToContextConnection: public CanMakeWeakPtr<WebSWServerToContextConnection>, public WebCore::SWServerToContextConnection, public IPC::MessageSender, public IPC::MessageReceiver {
+class WebSWServerToContextConnection: public WebCore::SWServerToContextConnection, public IPC::MessageSender, public IPC::MessageReceiver {
 public:
     WebSWServerToContextConnection(NetworkConnectionToWebProcess&, WebCore::RegistrableDomain&&, WebCore::SWServer&);
     ~WebSWServerToContextConnection();

Modified: trunk/Source/WebKit/Platform/IPC/MessageReceiver.h (274171 => 274172)


--- trunk/Source/WebKit/Platform/IPC/MessageReceiver.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/Platform/IPC/MessageReceiver.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -26,6 +26,7 @@
 #pragma once
 
 #include <wtf/Assertions.h>
+#include <wtf/WeakPtr.h>
 
 namespace IPC {
 
@@ -33,7 +34,7 @@
 class Decoder;
 class Encoder;
 
-class MessageReceiver {
+class MessageReceiver : public CanMakeWeakPtr<MessageReceiver> {
 public:
     virtual ~MessageReceiver()
     {

Modified: trunk/Source/WebKit/Platform/IPC/MessageReceiverMap.cpp (274171 => 274172)


--- trunk/Source/WebKit/Platform/IPC/MessageReceiverMap.cpp	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/Platform/IPC/MessageReceiverMap.cpp	2021-03-09 21:27:27 UTC (rev 274172)
@@ -44,7 +44,7 @@
     ASSERT(!m_globalMessageReceivers.contains(messageReceiverName));
 
     messageReceiver.willBeAddedToMessageReceiverMap();
-    m_globalMessageReceivers.set(messageReceiverName, &messageReceiver);
+    m_globalMessageReceivers.set(messageReceiverName, makeWeakPtr(messageReceiver));
 }
 
 void MessageReceiverMap::addMessageReceiver(ReceiverName messageReceiverName, uint64_t destinationID, MessageReceiver& messageReceiver)
@@ -54,26 +54,32 @@
     ASSERT(!m_globalMessageReceivers.contains(messageReceiverName));
 
     messageReceiver.willBeAddedToMessageReceiverMap();
-    m_messageReceivers.set(std::make_pair(messageReceiverName, destinationID), &messageReceiver);
+    m_messageReceivers.set(std::make_pair(messageReceiverName, destinationID), makeWeakPtr(messageReceiver));
 }
 
 void MessageReceiverMap::removeMessageReceiver(ReceiverName messageReceiverName)
 {
-    ASSERT(m_globalMessageReceivers.contains(messageReceiverName));
-
     auto it = m_globalMessageReceivers.find(messageReceiverName);
-    it->value->willBeRemovedFromMessageReceiverMap();
+    if (it == m_globalMessageReceivers.end()) {
+        ASSERT_NOT_REACHED();
+        return;
+    }
 
+    if (it->value)
+        it->value->willBeRemovedFromMessageReceiverMap();
     m_globalMessageReceivers.remove(it);
 }
 
 void MessageReceiverMap::removeMessageReceiver(ReceiverName messageReceiverName, uint64_t destinationID)
 {
-    ASSERT(m_messageReceivers.contains(std::make_pair(messageReceiverName, destinationID)));
-
     auto it = m_messageReceivers.find(std::make_pair(messageReceiverName, destinationID));
-    it->value->willBeRemovedFromMessageReceiverMap();
+    if (it == m_messageReceivers.end()) {
+        ASSERT_NOT_REACHED();
+        return;
+    }
 
+    if (it->value)
+        it->value->willBeRemovedFromMessageReceiverMap();
     m_messageReceivers.remove(it);
 }
 
@@ -112,7 +118,7 @@
 
 bool MessageReceiverMap::dispatchMessage(Connection& connection, Decoder& decoder)
 {
-    if (MessageReceiver* messageReceiver = m_globalMessageReceivers.get(decoder.messageReceiverName())) {
+    if (auto messageReceiver = m_globalMessageReceivers.get(decoder.messageReceiverName())) {
         ASSERT(!decoder.destinationID());
 
         messageReceiver->didReceiveMessage(connection, decoder);
@@ -119,7 +125,7 @@
         return true;
     }
 
-    if (MessageReceiver* messageReceiver = m_messageReceivers.get(std::make_pair(decoder.messageReceiverName(), decoder.destinationID()))) {
+    if (auto messageReceiver = m_messageReceivers.get(std::make_pair(decoder.messageReceiverName(), decoder.destinationID()))) {
         messageReceiver->didReceiveMessage(connection, decoder);
         return true;
     }
@@ -129,7 +135,7 @@
 
 bool MessageReceiverMap::dispatchSyncMessage(Connection& connection, Decoder& decoder, std::unique_ptr<Encoder>& replyEncoder)
 {
-    if (MessageReceiver* messageReceiver = m_globalMessageReceivers.get(decoder.messageReceiverName())) {
+    if (auto messageReceiver = m_globalMessageReceivers.get(decoder.messageReceiverName())) {
         ASSERT(!decoder.destinationID());
 
         messageReceiver->didReceiveSyncMessage(connection, decoder, replyEncoder);
@@ -136,7 +142,7 @@
         return true;
     }
 
-    if (MessageReceiver* messageReceiver = m_messageReceivers.get(std::make_pair(decoder.messageReceiverName(), decoder.destinationID()))) {
+    if (auto messageReceiver = m_messageReceivers.get(std::make_pair(decoder.messageReceiverName(), decoder.destinationID()))) {
         messageReceiver->didReceiveSyncMessage(connection, decoder, replyEncoder);
         return true;
     }

Modified: trunk/Source/WebKit/Platform/IPC/MessageReceiverMap.h (274171 => 274172)


--- trunk/Source/WebKit/Platform/IPC/MessageReceiverMap.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/Platform/IPC/MessageReceiverMap.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -27,6 +27,7 @@
 
 #include "StringReference.h"
 #include <wtf/HashMap.h>
+#include <wtf/WeakPtr.h>
 #include <wtf/text/CString.h>
 
 namespace IPC {
@@ -56,9 +57,9 @@
 
 private:
     // Message receivers that don't require a destination ID.
-    HashMap<ReceiverName, MessageReceiver*, WTF::IntHash<ReceiverName>, WTF::StrongEnumHashTraits<ReceiverName>> m_globalMessageReceivers;
+    HashMap<ReceiverName, WeakPtr<MessageReceiver>, WTF::IntHash<ReceiverName>, WTF::StrongEnumHashTraits<ReceiverName>> m_globalMessageReceivers;
 
-    HashMap<std::pair<ReceiverName, uint64_t>, MessageReceiver*, DefaultHash<std::pair<ReceiverName, uint64_t>>, PairHashTraits<WTF::StrongEnumHashTraits<ReceiverName>, HashTraits<uint64_t>>> m_messageReceivers;
+    HashMap<std::pair<ReceiverName, uint64_t>, WeakPtr<MessageReceiver>, DefaultHash<std::pair<ReceiverName, uint64_t>>, PairHashTraits<WTF::StrongEnumHashTraits<ReceiverName>, HashTraits<uint64_t>>> m_messageReceivers;
 };
 
 };

Modified: trunk/Source/WebKit/Shared/API/Cocoa/RemoteObjectRegistry.h (274171 => 274172)


--- trunk/Source/WebKit/Shared/API/Cocoa/RemoteObjectRegistry.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/Shared/API/Cocoa/RemoteObjectRegistry.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -43,7 +43,7 @@
 class RemoteObjectInvocation;
 class UserData;
 
-class RemoteObjectRegistry : public CanMakeWeakPtr<RemoteObjectRegistry>, public IPC::MessageReceiver {
+class RemoteObjectRegistry : public IPC::MessageReceiver {
     WTF_MAKE_FAST_ALLOCATED;
 public:
     virtual ~RemoteObjectRegistry();

Modified: trunk/Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h (274171 => 274172)


--- trunk/Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/Shared/ApplePay/WebPaymentCoordinatorProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -77,9 +77,8 @@
 class WebPageProxy;
 
 class WebPaymentCoordinatorProxy
-    : private IPC::MessageReceiver
+    : public IPC::MessageReceiver
     , private IPC::MessageSender
-    , public CanMakeWeakPtr<WebPaymentCoordinatorProxy>
     , public PaymentAuthorizationPresenter::Client {
     WTF_MAKE_FAST_ALLOCATED;
 public:

Modified: trunk/Source/WebKit/Shared/Authentication/AuthenticationManager.h (274171 => 274172)


--- trunk/Source/WebKit/Shared/Authentication/AuthenticationManager.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/Shared/Authentication/AuthenticationManager.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -62,7 +62,7 @@
 enum class AuthenticationChallengeDisposition : uint8_t;
 using ChallengeCompletionHandler = CompletionHandler<void(AuthenticationChallengeDisposition, const WebCore::Credential&)>;
 
-class AuthenticationManager : public NetworkProcessSupplement, public IPC::MessageReceiver, public CanMakeWeakPtr<AuthenticationManager> {
+class AuthenticationManager : public NetworkProcessSupplement, public IPC::MessageReceiver {
     WTF_MAKE_FAST_ALLOCATED;
     WTF_MAKE_NONCOPYABLE(AuthenticationManager);
 public:

Modified: trunk/Source/WebKit/Shared/AuxiliaryProcess.h (274171 => 274172)


--- trunk/Source/WebKit/Shared/AuxiliaryProcess.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/Shared/AuxiliaryProcess.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -41,7 +41,7 @@
 class SandboxInitializationParameters;
 struct AuxiliaryProcessInitializationParameters;
 
-class AuxiliaryProcess : protected IPC::Connection::Client, public IPC::MessageSender {
+class AuxiliaryProcess : public IPC::Connection::Client, public IPC::MessageSender {
     WTF_MAKE_NONCOPYABLE(AuxiliaryProcess);
 
 public:

Modified: trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.h (274171 => 274172)


--- trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/UIProcess/GPU/GPUProcessProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -56,7 +56,7 @@
 struct GPUProcessConnectionParameters;
 struct GPUProcessCreationParameters;
 
-class GPUProcessProxy final : public AuxiliaryProcessProxy, private ProcessThrottlerClient, public CanMakeWeakPtr<GPUProcessProxy>, public RefCounted<GPUProcessProxy> {
+class GPUProcessProxy final : public AuxiliaryProcessProxy, private ProcessThrottlerClient, public RefCounted<GPUProcessProxy> {
     WTF_MAKE_FAST_ALLOCATED;
     WTF_MAKE_NONCOPYABLE(GPUProcessProxy);
     friend LazyNeverDestroyed<GPUProcessProxy>;

Modified: trunk/Source/WebKit/UIProcess/Inspector/WebInspectorProxy.h (274171 => 274172)


--- trunk/Source/WebKit/UIProcess/Inspector/WebInspectorProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/UIProcess/Inspector/WebInspectorProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -84,7 +84,6 @@
     : public API::ObjectImpl<API::Object::Type::Inspector>
     , public IPC::MessageReceiver
     , public Inspector::FrontendChannel
-    , public CanMakeWeakPtr<WebInspectorProxy>
 #if PLATFORM(WIN)
     , public WebCore::WindowMessageListener
 #endif

Modified: trunk/Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h (274171 => 274172)


--- trunk/Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/UIProcess/Inspector/WebInspectorUIExtensionControllerProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -44,8 +44,7 @@
 
 class WebInspectorUIExtensionControllerProxy final
     : public RefCounted<WebInspectorUIExtensionControllerProxy>
-    , public IPC::MessageReceiver
-    , public CanMakeWeakPtr<WebInspectorUIExtensionControllerProxy> {
+    , public IPC::MessageReceiver {
     WTF_MAKE_FAST_ALLOCATED;
     WTF_MAKE_NONCOPYABLE(WebInspectorUIExtensionControllerProxy);
 public:

Modified: trunk/Source/WebKit/UIProcess/Media/AudioSessionRoutingArbitratorProxy.h (274171 => 274172)


--- trunk/Source/WebKit/UIProcess/Media/AudioSessionRoutingArbitratorProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/UIProcess/Media/AudioSessionRoutingArbitratorProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -37,8 +37,7 @@
 class WebProcessProxy;
 
 class AudioSessionRoutingArbitratorProxy
-    : public IPC::MessageReceiver
-    , public CanMakeWeakPtr<AudioSessionRoutingArbitratorProxy> {
+    : public IPC::MessageReceiver {
     WTF_MAKE_FAST_ALLOCATED;
 public:
     AudioSessionRoutingArbitratorProxy(WebProcessProxy&);

Modified: trunk/Source/WebKit/UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.h (274171 => 274172)


--- trunk/Source/WebKit/UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/UIProcess/Network/CustomProtocols/LegacyCustomProtocolManagerProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -46,7 +46,7 @@
 
 class NetworkProcessProxy;
 
-class LegacyCustomProtocolManagerProxy : public CanMakeWeakPtr<LegacyCustomProtocolManagerProxy>, public IPC::MessageReceiver {
+class LegacyCustomProtocolManagerProxy : public IPC::MessageReceiver {
 public:
     LegacyCustomProtocolManagerProxy(NetworkProcessProxy&);
     ~LegacyCustomProtocolManagerProxy();

Modified: trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h (274171 => 274172)


--- trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/UIProcess/Network/NetworkProcessProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -93,7 +93,7 @@
 struct WebsiteData;
 struct WebsiteDataStoreParameters;
 
-class NetworkProcessProxy final : public AuxiliaryProcessProxy, private ProcessThrottlerClient, public CanMakeWeakPtr<NetworkProcessProxy>, public RefCounted<NetworkProcessProxy> {
+class NetworkProcessProxy final : public AuxiliaryProcessProxy, private ProcessThrottlerClient, public RefCounted<NetworkProcessProxy> {
     WTF_MAKE_FAST_ALLOCATED;
 public:
     using RegistrableDomain = WebCore::RegistrableDomain;

Modified: trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.h (274171 => 274172)


--- trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/UIProcess/ProvisionalPageProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -68,7 +68,7 @@
 using LayerHostingContextID = uint32_t;
 #endif
 
-class ProvisionalPageProxy : public IPC::MessageReceiver, public IPC::MessageSender, public CanMakeWeakPtr<ProvisionalPageProxy> {
+class ProvisionalPageProxy : public IPC::MessageReceiver, public IPC::MessageSender {
     WTF_MAKE_FAST_ALLOCATED;
 public:
     ProvisionalPageProxy(WebPageProxy&, Ref<WebProcessProxy>&&, std::unique_ptr<SuspendedPageProxy>, uint64_t navigationID, bool isServerRedirect, const WebCore::ResourceRequest&, ProcessSwapRequestedByClient, API::WebsitePolicies*);

Modified: trunk/Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.h (274171 => 274172)


--- trunk/Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/UIProcess/SpeechRecognitionRemoteRealtimeMediaSourceManager.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -48,7 +48,7 @@
 
 class SpeechRecognitionRemoteRealtimeMediaSource;
 
-class SpeechRecognitionRemoteRealtimeMediaSourceManager final : public CanMakeWeakPtr<SpeechRecognitionRemoteRealtimeMediaSourceManager>, public IPC::MessageReceiver, public IPC::MessageSender {
+class SpeechRecognitionRemoteRealtimeMediaSourceManager final : public IPC::MessageReceiver, public IPC::MessageSender {
     WTF_MAKE_FAST_ALLOCATED;
 public:
     explicit SpeechRecognitionRemoteRealtimeMediaSourceManager(Ref<IPC::Connection>&&);

Modified: trunk/Source/WebKit/UIProcess/SpeechRecognitionServer.h (274171 => 274172)


--- trunk/Source/WebKit/UIProcess/SpeechRecognitionServer.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/UIProcess/SpeechRecognitionServer.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -49,7 +49,7 @@
 using SpeechRecognitionPermissionChecker = Function<void(WebCore::SpeechRecognitionRequest&, SpeechRecognitionPermissionRequestCallback&&)>;
 using SpeechRecognitionCheckIfMockSpeechRecognitionEnabled = Function<bool()>;
 
-class SpeechRecognitionServer : public CanMakeWeakPtr<SpeechRecognitionServer>, public IPC::MessageReceiver, private IPC::MessageSender {
+class SpeechRecognitionServer : public IPC::MessageReceiver, private IPC::MessageSender {
     WTF_MAKE_FAST_ALLOCATED;
 public:
 #if ENABLE(MEDIA_STREAM)

Modified: trunk/Source/WebKit/UIProcess/SuspendedPageProxy.h (274171 => 274172)


--- trunk/Source/WebKit/UIProcess/SuspendedPageProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/UIProcess/SuspendedPageProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -52,7 +52,7 @@
 
 enum class ShouldDelayClosingUntilFirstLayerFlush : bool { No, Yes };
 
-class SuspendedPageProxy final: public IPC::MessageReceiver, public IPC::MessageSender, public CanMakeWeakPtr<SuspendedPageProxy> {
+class SuspendedPageProxy final: public IPC::MessageReceiver, public IPC::MessageSender {
     WTF_MAKE_FAST_ALLOCATED;
 public:
     SuspendedPageProxy(WebPageProxy&, Ref<WebProcessProxy>&&, WebCore::FrameIdentifier mainFrameID, ShouldDelayClosingUntilFirstLayerFlush);

Modified: trunk/Source/WebKit/UIProcess/WebAuthentication/WebAuthnProcessProxy.h (274171 => 274172)


--- trunk/Source/WebKit/UIProcess/WebAuthentication/WebAuthnProcessProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/UIProcess/WebAuthentication/WebAuthnProcessProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -41,7 +41,7 @@
 class WebsiteDataStore;
 struct WebAuthnProcessCreationParameters;
 
-class WebAuthnProcessProxy final : public AuxiliaryProcessProxy, private ProcessThrottlerClient, public CanMakeWeakPtr<WebAuthnProcessProxy> {
+class WebAuthnProcessProxy final : public AuxiliaryProcessProxy, private ProcessThrottlerClient {
     WTF_MAKE_FAST_ALLOCATED;
     WTF_MAKE_NONCOPYABLE(WebAuthnProcessProxy);
     friend LazyNeverDestroyed<WebAuthnProcessProxy>;

Modified: trunk/Source/WebKit/UIProcess/WebPageProxy.h (274171 => 274172)


--- trunk/Source/WebKit/UIProcess/WebPageProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/UIProcess/WebPageProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -432,8 +432,6 @@
 #endif
 #if PLATFORM(MACCATALYST)
     , public EndowmentStateTracker::Client
-#else
-    , public CanMakeWeakPtr<WebPageProxy>
 #endif
     {
 public:
@@ -440,6 +438,9 @@
     static Ref<WebPageProxy> create(PageClient&, WebProcessProxy&, Ref<API::PageConfiguration>&&);
     virtual ~WebPageProxy();
 
+    using IPC::MessageReceiver::weakPtrFactory;
+    using WeakValueType = IPC::MessageReceiver::WeakValueType;
+
     static void forMostVisibleWebPageIfAny(PAL::SessionID, const WebCore::SecurityOriginData&, CompletionHandler<void(WebPageProxy*)>&&);
 
     const API::PageConfiguration& configuration() const;

Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.h (274171 => 274172)


--- trunk/Source/WebKit/UIProcess/WebProcessPool.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -125,8 +125,7 @@
 
 class WebProcessPool final
     : public API::ObjectImpl<API::Object::Type::ProcessPool>
-    , public CanMakeWeakPtr<WebProcessPool>
-    , private IPC::MessageReceiver
+    , public IPC::MessageReceiver
 #if PLATFORM(MAC)
     , private PAL::SystemSleepListener::Client
 #endif

Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp (274171 => 274172)


--- trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.cpp	2021-03-09 21:27:27 UTC (rev 274172)
@@ -1720,6 +1720,8 @@
         return;
 
     ASSERT(!m_speechRecognitionServerMap.contains(identifier));
+    MESSAGE_CHECK(!m_speechRecognitionServerMap.contains(identifier));
+
     auto& speechRecognitionServer = m_speechRecognitionServerMap.add(identifier, nullptr).iterator->value;
     auto permissionChecker = [weakPage = makeWeakPtr(targetPage)](auto& request, auto&& completionHandler) mutable {
         if (!weakPage) {

Modified: trunk/Source/WebKit/UIProcess/WebProcessProxy.h (274171 => 274172)


--- trunk/Source/WebKit/UIProcess/WebProcessProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/UIProcess/WebProcessProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -120,7 +120,7 @@
 using WebProcessWithAudibleMediaToken = WebProcessWithAudibleMediaCounter::Token;
 enum class CheckBackForwardList : bool { No, Yes };
 
-class WebProcessProxy : public AuxiliaryProcessProxy, public ResponsivenessTimer::Client, public ThreadSafeRefCounted<WebProcessProxy>, public CanMakeWeakPtr<WebProcessProxy>, private ProcessThrottlerClient {
+class WebProcessProxy : public AuxiliaryProcessProxy, public ResponsivenessTimer::Client, public ThreadSafeRefCounted<WebProcessProxy>, private ProcessThrottlerClient {
 public:
     typedef HashMap<WebCore::FrameIdentifier, RefPtr<WebFrameProxy>> WebFrameProxyMap;
     typedef HashMap<WebPageProxyIdentifier, WebPageProxy*> WebPageProxyMap;

Modified: trunk/Source/WebKit/WebAuthnProcess/WebAuthnProcess.h (274171 => 274172)


--- trunk/Source/WebKit/WebAuthnProcess/WebAuthnProcess.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/WebAuthnProcess/WebAuthnProcess.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -44,7 +44,7 @@
 class WebAuthnConnectionToWebProcess;
 struct WebAuthnProcessCreationParameters;
 
-class WebAuthnProcess : public AuxiliaryProcess, public ThreadSafeRefCounted<WebAuthnProcess>, public CanMakeWeakPtr<WebAuthnProcess> {
+class WebAuthnProcess : public AuxiliaryProcess, public ThreadSafeRefCounted<WebAuthnProcess> {
     WTF_MAKE_NONCOPYABLE(WebAuthnProcess);
 public:
     explicit WebAuthnProcess(AuxiliaryProcessInitializationParameters&&);

Modified: trunk/Source/WebKit/WebProcess/GPU/GPUProcessConnection.h (274171 => 274172)


--- trunk/Source/WebKit/WebProcess/GPU/GPUProcessConnection.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/WebProcess/GPU/GPUProcessConnection.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -47,7 +47,7 @@
 struct OverrideScreenDataForTesting;
 struct WebPageCreationParameters;
 
-class GPUProcessConnection : public RefCounted<GPUProcessConnection>, public CanMakeWeakPtr<GPUProcessConnection>, IPC::Connection::Client {
+class GPUProcessConnection : public RefCounted<GPUProcessConnection>, public IPC::Connection::Client {
 public:
     static Ref<GPUProcessConnection> create(IPC::Connection::Identifier connectionIdentifier)
     {

Modified: trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h (274171 => 274172)


--- trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/WebProcess/GPU/graphics/RemoteRenderingBackendProxy.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -65,6 +65,9 @@
 
     ~RemoteRenderingBackendProxy();
 
+    using GPUProcessConnection::Client::weakPtrFactory;
+    using WeakValueType = GPUProcessConnection::Client::WeakValueType;
+
     RemoteResourceCacheProxy& remoteResourceCacheProxy() { return m_remoteResourceCacheProxy; }
     WebCore::DisplayList::ItemBufferHandle createItemBuffer(size_t capacity, WebCore::RenderingResourceIdentifier destinationBufferIdentifier);
 

Modified: trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h (274171 => 274172)


--- trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/WebProcess/GPU/media/MediaPlayerPrivateRemote.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -66,9 +66,8 @@
 struct TrackPrivateRemoteConfiguration;
 
 class MediaPlayerPrivateRemote final
-    : public CanMakeWeakPtr<MediaPlayerPrivateRemote>
-    , public WebCore::MediaPlayerPrivateInterface
-    , private IPC::MessageReceiver
+    : public WebCore::MediaPlayerPrivateInterface
+    , public IPC::MessageReceiver
 #if !RELEASE_LOG_DISABLED
     , private LoggerHelper
 #endif

Modified: trunk/Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.h (274171 => 274172)


--- trunk/Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/WebProcess/GPU/media/MediaSourcePrivateRemote.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -51,8 +51,7 @@
 
 class MediaSourcePrivateRemote final
     : public WebCore::MediaSourcePrivate
-    , public CanMakeWeakPtr<MediaSourcePrivateRemote>
-    , private IPC::MessageReceiver
+    , public IPC::MessageReceiver
 #if !RELEASE_LOG_DISABLED
     , private LoggerHelper
 #endif

Modified: trunk/Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.h (274171 => 274172)


--- trunk/Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/WebProcess/GPU/media/SourceBufferPrivateRemote.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -58,9 +58,8 @@
 class MediaSourcePrivateRemote;
 
 class SourceBufferPrivateRemote final
-    : public CanMakeWeakPtr<SourceBufferPrivateRemote>
-    , public WebCore::SourceBufferPrivate
-    , private IPC::MessageReceiver
+    : public WebCore::SourceBufferPrivate
+    , public IPC::MessageReceiver
 {
 public:
     static Ref<SourceBufferPrivateRemote> create(GPUProcessConnection&, RemoteSourceBufferIdentifier, const MediaSourcePrivateRemote&, const MediaPlayerPrivateRemote&);

Modified: trunk/Source/WebKit/WebProcess/GPU/webrtc/SampleBufferDisplayLayer.h (274171 => 274172)


--- trunk/Source/WebKit/WebProcess/GPU/webrtc/SampleBufferDisplayLayer.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/WebProcess/GPU/webrtc/SampleBufferDisplayLayer.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -36,7 +36,7 @@
 
 class SampleBufferDisplayLayerManager;
 
-class SampleBufferDisplayLayer final : public WebCore::SampleBufferDisplayLayer, public IPC::MessageReceiver, public CanMakeWeakPtr<SampleBufferDisplayLayer> {
+class SampleBufferDisplayLayer final : public WebCore::SampleBufferDisplayLayer, public IPC::MessageReceiver {
 public:
     static std::unique_ptr<SampleBufferDisplayLayer> create(SampleBufferDisplayLayerManager&, Client&);
     ~SampleBufferDisplayLayer();

Modified: trunk/Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.h (274171 => 274172)


--- trunk/Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/WebProcess/Inspector/WebInspectorUIExtensionController.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -52,8 +52,7 @@
 class WebInspectorUI;
 
 class WebInspectorUIExtensionController
-    : public IPC::MessageReceiver
-    , public CanMakeWeakPtr<WebInspectorUIExtensionController> {
+    : public IPC::MessageReceiver {
     WTF_MAKE_FAST_ALLOCATED;
     WTF_MAKE_NONCOPYABLE(WebInspectorUIExtensionController);
 public:

Modified: trunk/Source/WebKit/WebProcess/Network/WebSocketChannel.h (274171 => 274172)


--- trunk/Source/WebKit/WebProcess/Network/WebSocketChannel.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/WebProcess/Network/WebSocketChannel.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -43,7 +43,7 @@
 
 namespace WebKit {
 
-class WebSocketChannel : public IPC::MessageSender, public IPC::MessageReceiver, public WebCore::ThreadableWebSocketChannel, public RefCounted<WebSocketChannel>, public CanMakeWeakPtr<WebSocketChannel> {
+class WebSocketChannel : public IPC::MessageSender, public IPC::MessageReceiver, public WebCore::ThreadableWebSocketChannel, public RefCounted<WebSocketChannel> {
 public:
     static Ref<WebSocketChannel> create(WebCore::Document&, WebCore::WebSocketChannelClient&);
     ~WebSocketChannel();

Modified: trunk/Source/WebKit/WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.h (274171 => 274172)


--- trunk/Source/WebKit/WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/WebProcess/Speech/SpeechRecognitionRealtimeMediaSourceManager.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -38,7 +38,7 @@
 
 namespace WebKit {
 
-class SpeechRecognitionRealtimeMediaSourceManager final : public CanMakeWeakPtr<SpeechRecognitionRealtimeMediaSourceManager>, public IPC::MessageReceiver, private IPC::MessageSender {
+class SpeechRecognitionRealtimeMediaSourceManager final : public IPC::MessageReceiver, private IPC::MessageSender {
     WTF_MAKE_FAST_ALLOCATED;
 public:
     explicit SpeechRecognitionRealtimeMediaSourceManager(Ref<IPC::Connection>&&);

Modified: trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h (274171 => 274172)


--- trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/WebProcess/WebPage/RemoteLayerTree/RemoteLayerTreeDrawingArea.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -47,7 +47,7 @@
 class RemoteLayerTreeContext;
 class RemoteLayerTreeDisplayRefreshMonitor;
 
-class RemoteLayerTreeDrawingArea : public DrawingArea, public CanMakeWeakPtr<RemoteLayerTreeDrawingArea>, public WebCore::GraphicsLayerClient {
+class RemoteLayerTreeDrawingArea : public DrawingArea, public WebCore::GraphicsLayerClient {
     friend class RemoteLayerTreeDisplayRefreshMonitor;
 public:
     RemoteLayerTreeDrawingArea(WebPage&, const WebPageCreationParameters&);

Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.h (274171 => 274172)


--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -324,7 +324,7 @@
 using SnapshotOptions = uint32_t;
 using WKEventModifiers = uint32_t;
 
-class WebPage : public API::ObjectImpl<API::Object::Type::BundlePage>, public IPC::MessageReceiver, public IPC::MessageSender, public CanMakeWeakPtr<WebPage> {
+class WebPage : public API::ObjectImpl<API::Object::Type::BundlePage>, public IPC::MessageReceiver, public IPC::MessageSender {
 public:
     static Ref<WebPage> create(WebCore::PageIdentifier, WebPageCreationParameters&&);
 

Modified: trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h (274171 => 274172)


--- trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -49,7 +49,7 @@
 
 class LayerHostingContext;
 
-class TiledCoreAnimationDrawingArea : public DrawingArea, public CanMakeWeakPtr<TiledCoreAnimationDrawingArea> {
+class TiledCoreAnimationDrawingArea : public DrawingArea {
 public:
     TiledCoreAnimationDrawingArea(WebPage&, const WebPageCreationParameters&);
     virtual ~TiledCoreAnimationDrawingArea();

Modified: trunk/Source/WebKit/WebProcess/WebStorage/StorageAreaMap.h (274171 => 274172)


--- trunk/Source/WebKit/WebProcess/WebStorage/StorageAreaMap.h	2021-03-09 21:19:30 UTC (rev 274171)
+++ trunk/Source/WebKit/WebProcess/WebStorage/StorageAreaMap.h	2021-03-09 21:27:27 UTC (rev 274172)
@@ -46,7 +46,7 @@
 class StorageAreaImpl;
 class StorageNamespaceImpl;
 
-class StorageAreaMap final : private IPC::MessageReceiver, public CanMakeWeakPtr<StorageAreaMap> {
+class StorageAreaMap final : public IPC::MessageReceiver {
     WTF_MAKE_FAST_ALLOCATED;
 public:
     StorageAreaMap(StorageNamespaceImpl&, Ref<WebCore::SecurityOrigin>&&);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to