Title: [249637] trunk/Source
Revision
249637
Author
[email protected]
Date
2019-09-09 01:50:50 -0700 (Mon, 09 Sep 2019)

Log Message

Move checkProcessLocalPortForActivity from provider to registry
https://bugs.webkit.org/show_bug.cgi?id=201400

Reviewed by Alex Christensen.

Source/WebCore:

Update the registry to take a callback that is used to implement checkProcessLocalPortForActivity.
This allows WK1 and WK2 to have their own implementation.

Make the call to checkProcessLocalPortForActivity directly on the registry.
Remove unneeded worker checkProcessLocalPortForActivity method.
No change of behavior.

* dom/messageports/MessagePortChannel.cpp:
(WebCore::MessagePortChannel::checkRemotePortForActivity):
* dom/messageports/MessagePortChannelProvider.h:
* dom/messageports/MessagePortChannelProviderImpl.cpp:
(WebCore::createMessagePortChannelRegistry):
(WebCore::MessagePortChannelProviderImpl::MessagePortChannelProviderImpl):
(WebCore::MessagePortChannelProviderImpl::checkProcessLocalPortForActivity): Deleted.
* dom/messageports/MessagePortChannelProviderImpl.h:
* dom/messageports/MessagePortChannelRegistry.cpp:
(WebCore::MessagePortChannelRegistry::MessagePortChannelRegistry):
(WebCore::MessagePortChannelRegistry::checkProcessLocalPortForActivity):
* dom/messageports/MessagePortChannelRegistry.h:
(WebCore::MessagePortChannelRegistry::provider): Deleted.
* dom/messageports/WorkerMessagePortChannelProvider.cpp:
(WebCore::WorkerMessagePortChannelProvider::checkProcessLocalPortForActivity): Deleted.
* dom/messageports/WorkerMessagePortChannelProvider.h:

Source/WebKit:

Implement registry callback at NetworkProcess level.
Remove NetworkMessagePortChannelProvider since only a registry is now needed.

* NetworkProcess/NetworkConnectionToWebProcess.cpp:
* NetworkProcess/NetworkMessagePortChannelProvider.cpp: Removed.
* NetworkProcess/NetworkMessagePortChannelProvider.h: Removed.
* NetworkProcess/NetworkProcess.cpp:
(WebKit::createMessagePortChannelRegistry):
(WebKit::m_messagePortChannelRegistry):
(WebKit::m_messagePortChannelProvider): Deleted.
* NetworkProcess/NetworkProcess.h:
(WebKit::NetworkProcess::messagePortChannelRegistry):
* Sources.txt:
* WebKit.xcodeproj/project.pbxproj:
* WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp:
(WebKit::WebMessagePortChannelProvider::checkProcessLocalPortForActivity): Deleted.
* WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h:

Modified Paths

Removed Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (249636 => 249637)


--- trunk/Source/WebCore/ChangeLog	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebCore/ChangeLog	2019-09-09 08:50:50 UTC (rev 249637)
@@ -1,3 +1,34 @@
+2019-09-09  Youenn Fablet  <[email protected]>
+
+        Move checkProcessLocalPortForActivity from provider to registry
+        https://bugs.webkit.org/show_bug.cgi?id=201400
+
+        Reviewed by Alex Christensen.
+
+        Update the registry to take a callback that is used to implement checkProcessLocalPortForActivity.
+        This allows WK1 and WK2 to have their own implementation.
+
+        Make the call to checkProcessLocalPortForActivity directly on the registry.
+        Remove unneeded worker checkProcessLocalPortForActivity method.
+        No change of behavior.
+
+        * dom/messageports/MessagePortChannel.cpp:
+        (WebCore::MessagePortChannel::checkRemotePortForActivity):
+        * dom/messageports/MessagePortChannelProvider.h:
+        * dom/messageports/MessagePortChannelProviderImpl.cpp:
+        (WebCore::createMessagePortChannelRegistry):
+        (WebCore::MessagePortChannelProviderImpl::MessagePortChannelProviderImpl):
+        (WebCore::MessagePortChannelProviderImpl::checkProcessLocalPortForActivity): Deleted.
+        * dom/messageports/MessagePortChannelProviderImpl.h:
+        * dom/messageports/MessagePortChannelRegistry.cpp:
+        (WebCore::MessagePortChannelRegistry::MessagePortChannelRegistry):
+        (WebCore::MessagePortChannelRegistry::checkProcessLocalPortForActivity):
+        * dom/messageports/MessagePortChannelRegistry.h:
+        (WebCore::MessagePortChannelRegistry::provider): Deleted.
+        * dom/messageports/WorkerMessagePortChannelProvider.cpp:
+        (WebCore::WorkerMessagePortChannelProvider::checkProcessLocalPortForActivity): Deleted.
+        * dom/messageports/WorkerMessagePortChannelProvider.h:
+
 2019-09-08  Saam Barati  <[email protected]>
 
         [WHLSL] Add back a version of the property resolver

Modified: trunk/Source/WebCore/dom/messageports/MessagePortChannel.cpp (249636 => 249637)


--- trunk/Source/WebCore/dom/messageports/MessagePortChannel.cpp	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebCore/dom/messageports/MessagePortChannel.cpp	2019-09-09 08:50:50 UTC (rev 249637)
@@ -221,7 +221,7 @@
         callback(hasActivity);
     };
 
-    m_registry.provider().checkProcessLocalPortForActivity(remotePort, *m_processes[i], WTFMove(outerCallback));
+    m_registry.checkProcessLocalPortForActivity(remotePort, *m_processes[i], WTFMove(outerCallback));
 }
 
 bool MessagePortChannel::hasAnyMessagesPendingOrInFlight() const

Modified: trunk/Source/WebCore/dom/messageports/MessagePortChannelProvider.h (249636 => 249637)


--- trunk/Source/WebCore/dom/messageports/MessagePortChannelProvider.h	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebCore/dom/messageports/MessagePortChannelProvider.h	2019-09-09 08:50:50 UTC (rev 249637)
@@ -59,9 +59,6 @@
     };
     virtual void checkRemotePortForActivity(const MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) = 0;
 
-    // Operations that the coordinating process performs (e.g. the UIProcess)
-    virtual void checkProcessLocalPortForActivity(const MessagePortIdentifier&, ProcessIdentifier, CompletionHandler<void(HasActivity)>&&) = 0;
-
 private:
 
 };

Modified: trunk/Source/WebCore/dom/messageports/MessagePortChannelProviderImpl.cpp (249636 => 249637)


--- trunk/Source/WebCore/dom/messageports/MessagePortChannelProviderImpl.cpp	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebCore/dom/messageports/MessagePortChannelProviderImpl.cpp	2019-09-09 08:50:50 UTC (rev 249637)
@@ -32,8 +32,16 @@
 
 namespace WebCore {
 
+static inline MessagePortChannelRegistry::CheckProcessLocalPortForActivityCallback checkActivityCallback()
+{
+    return [](auto& messagePortIdentifier, auto, auto&& callback) {
+        ASSERT(isMainThread());
+        callback(MessagePort::isExistingMessagePortLocallyReachable(messagePortIdentifier) ? MessagePortChannelProvider::HasActivity::Yes : MessagePortChannelProvider::HasActivity::No);
+    };
+}
+
 MessagePortChannelProviderImpl::MessagePortChannelProviderImpl()
-    : m_registry(*this)
+    : m_registry(checkActivityCallback())
 {
 }
 
@@ -111,11 +119,4 @@
     });
 }
 
-void MessagePortChannelProviderImpl::checkProcessLocalPortForActivity(const MessagePortIdentifier& identifier, ProcessIdentifier, CompletionHandler<void(HasActivity)>&& callback)
-{
-    ASSERT(isMainThread());
-
-    callback(MessagePort::isExistingMessagePortLocallyReachable(identifier) ? HasActivity::Yes : HasActivity::No);
-}
-
 } // namespace WebCore

Modified: trunk/Source/WebCore/dom/messageports/MessagePortChannelProviderImpl.h (249636 => 249637)


--- trunk/Source/WebCore/dom/messageports/MessagePortChannelProviderImpl.h	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebCore/dom/messageports/MessagePortChannelProviderImpl.h	2019-09-09 08:50:50 UTC (rev 249637)
@@ -44,8 +44,6 @@
     void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&&) final;
     void checkRemotePortForActivity(const MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) final;
 
-    void checkProcessLocalPortForActivity(const MessagePortIdentifier&, ProcessIdentifier, CompletionHandler<void(HasActivity)>&&) final;
-
     void performActionOnMainThread(Function<void()>&&);
 
     MessagePortChannelRegistry m_registry;

Modified: trunk/Source/WebCore/dom/messageports/MessagePortChannelRegistry.cpp (249636 => 249637)


--- trunk/Source/WebCore/dom/messageports/MessagePortChannelRegistry.cpp	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebCore/dom/messageports/MessagePortChannelRegistry.cpp	2019-09-09 08:50:50 UTC (rev 249637)
@@ -32,8 +32,8 @@
 
 namespace WebCore {
 
-MessagePortChannelRegistry::MessagePortChannelRegistry(MessagePortChannelProvider& provider)
-    : m_provider(provider)
+MessagePortChannelRegistry::MessagePortChannelRegistry(CheckProcessLocalPortForActivityCallback&& checkProcessLocalPortForActivityCallback)
+    : m_checkProcessLocalPortForActivityCallback(WTFMove(checkProcessLocalPortForActivityCallback))
 {
 }
 
@@ -178,4 +178,9 @@
     return m_openChannels.get(port);
 }
 
+void MessagePortChannelRegistry::checkProcessLocalPortForActivity(const MessagePortIdentifier& messagePortIdentifier, ProcessIdentifier processIdentifier, CompletionHandler<void(MessagePortChannelProvider::HasActivity)>&& callback)
+{
+    m_checkProcessLocalPortForActivityCallback(messagePortIdentifier, processIdentifier, WTFMove(callback));
+}
+
 } // namespace WebCore

Modified: trunk/Source/WebCore/dom/messageports/MessagePortChannelRegistry.h (249636 => 249637)


--- trunk/Source/WebCore/dom/messageports/MessagePortChannelRegistry.h	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebCore/dom/messageports/MessagePortChannelRegistry.h	2019-09-09 08:50:50 UTC (rev 249637)
@@ -35,7 +35,9 @@
 
 class MessagePortChannelRegistry {
 public:
-    WEBCORE_EXPORT MessagePortChannelRegistry(MessagePortChannelProvider&);
+    using CheckProcessLocalPortForActivityCallback = Function<void(const MessagePortIdentifier&, ProcessIdentifier, CompletionHandler<void(MessagePortChannelProvider::HasActivity)>&&)>;
+    WEBCORE_EXPORT explicit MessagePortChannelRegistry(CheckProcessLocalPortForActivityCallback&&);
+
     WEBCORE_EXPORT ~MessagePortChannelRegistry();
     
     WEBCORE_EXPORT void didCreateMessagePortChannel(const MessagePortIdentifier& port1, const MessagePortIdentifier& port2);
@@ -51,12 +53,11 @@
     WEBCORE_EXPORT void messagePortChannelCreated(MessagePortChannel&);
     WEBCORE_EXPORT void messagePortChannelDestroyed(MessagePortChannel&);
 
-    MessagePortChannelProvider& provider() { return m_provider; }
+    void checkProcessLocalPortForActivity(const MessagePortIdentifier&, ProcessIdentifier, CompletionHandler<void(MessagePortChannelProvider::HasActivity)>&&);
 
 private:
     HashMap<MessagePortIdentifier, MessagePortChannel*> m_openChannels;
-    MessagePortChannelProvider& m_provider;
-
+    CheckProcessLocalPortForActivityCallback m_checkProcessLocalPortForActivityCallback;
 };
 
 } // namespace WebCore

Modified: trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.cpp (249636 => 249637)


--- trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.cpp	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.cpp	2019-09-09 08:50:50 UTC (rev 249637)
@@ -120,19 +120,4 @@
     });
 }
 
-void WorkerMessagePortChannelProvider::checkProcessLocalPortForActivity(const MessagePortIdentifier& identifier, ProcessIdentifier processIdentifier, CompletionHandler<void(HasActivity)>&& callback)
-{
-    uint64_t callbackIdentifier = ++m_lastCallbackIdentifier;
-    m_activityCallbacks.add(callbackIdentifier, WTFMove(callback));
-
-    callOnMainThread([this, workerThread = makeRef(m_scope.thread()), callbackIdentifier, identifier, processIdentifier]() mutable {
-        MessagePortChannelProvider::singleton().checkProcessLocalPortForActivity(identifier, processIdentifier, [this, workerThread = WTFMove(workerThread), callbackIdentifier](auto hasActivity) {
-            workerThread->runLoop().postTaskForMode([this, callbackIdentifier, hasActivity](auto& scope) mutable {
-                ASSERT_UNUSED(scope, this == &downcast<WorkerGlobalScope>(scope).messagePortChannelProvider());
-                m_activityCallbacks.take(callbackIdentifier)(hasActivity);
-            }, WorkerRunLoop::defaultMode());
-        });
-    });
-}
-
 } // namespace WebCore

Modified: trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.h (249636 => 249637)


--- trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.h	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.h	2019-09-09 08:50:50 UTC (rev 249637)
@@ -49,8 +49,6 @@
     void takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&&) final;
     void checkRemotePortForActivity(const MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) final;
 
-    void checkProcessLocalPortForActivity(const MessagePortIdentifier&, ProcessIdentifier, CompletionHandler<void(HasActivity)>&&) final;
-
     WorkerGlobalScope& m_scope;
 
     uint64_t m_lastCallbackIdentifier { 0 };

Modified: trunk/Source/WebKit/ChangeLog (249636 => 249637)


--- trunk/Source/WebKit/ChangeLog	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebKit/ChangeLog	2019-09-09 08:50:50 UTC (rev 249637)
@@ -1,3 +1,28 @@
+2019-09-09  Youenn Fablet  <[email protected]>
+
+        Move checkProcessLocalPortForActivity from provider to registry
+        https://bugs.webkit.org/show_bug.cgi?id=201400
+
+        Reviewed by Alex Christensen.
+
+        Implement registry callback at NetworkProcess level.
+        Remove NetworkMessagePortChannelProvider since only a registry is now needed.
+
+        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
+        * NetworkProcess/NetworkMessagePortChannelProvider.cpp: Removed.
+        * NetworkProcess/NetworkMessagePortChannelProvider.h: Removed.
+        * NetworkProcess/NetworkProcess.cpp:
+        (WebKit::createMessagePortChannelRegistry):
+        (WebKit::m_messagePortChannelRegistry):
+        (WebKit::m_messagePortChannelProvider): Deleted.
+        * NetworkProcess/NetworkProcess.h:
+        (WebKit::NetworkProcess::messagePortChannelRegistry):
+        * Sources.txt:
+        * WebKit.xcodeproj/project.pbxproj:
+        * WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp:
+        (WebKit::WebMessagePortChannelProvider::checkProcessLocalPortForActivity): Deleted.
+        * WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h:
+
 2019-09-08  David Quesada  <[email protected]>
 
         Remove some unused constants in VersionChecks.h

Modified: trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp (249636 => 249637)


--- trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp	2019-09-09 08:50:50 UTC (rev 249637)
@@ -31,7 +31,6 @@
 #include "DataReference.h"
 #include "NetworkCache.h"
 #include "NetworkMDNSRegisterMessages.h"
-#include "NetworkMessagePortChannelProvider.h"
 #include "NetworkProcess.h"
 #include "NetworkProcessConnectionMessages.h"
 #include "NetworkProcessMessages.h"

Deleted: trunk/Source/WebKit/NetworkProcess/NetworkMessagePortChannelProvider.cpp (249636 => 249637)


--- trunk/Source/WebKit/NetworkProcess/NetworkMessagePortChannelProvider.cpp	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebKit/NetworkProcess/NetworkMessagePortChannelProvider.cpp	2019-09-09 08:50:50 UTC (rev 249637)
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2018-2019 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "NetworkMessagePortChannelProvider.h"
-
-#include "NetworkConnectionToWebProcess.h"
-#include "NetworkProcess.h"
-
-namespace WebKit {
-using namespace WebCore;
-
-NetworkMessagePortChannelProvider::NetworkMessagePortChannelProvider(NetworkProcess& networkProcess)
-    : m_networkProcess(networkProcess)
-    , m_registry(*this)
-{
-}
-
-void NetworkMessagePortChannelProvider::createNewMessagePortChannel(const MessagePortIdentifier&, const MessagePortIdentifier&)
-{
-    // Should never be called in the UI process provider.
-    ASSERT_NOT_REACHED();
-}
-
-void NetworkMessagePortChannelProvider::entangleLocalPortInThisProcessToRemote(const MessagePortIdentifier&, const MessagePortIdentifier&)
-{
-    // Should never be called in the UI process provider.
-    ASSERT_NOT_REACHED();
-}
-
-void NetworkMessagePortChannelProvider::messagePortDisentangled(const MessagePortIdentifier&)
-{
-    // Should never be called in the UI process provider.
-    ASSERT_NOT_REACHED();
-}
-
-void NetworkMessagePortChannelProvider::messagePortClosed(const MessagePortIdentifier&)
-{
-    // Should never be called in the UI process provider.
-    ASSERT_NOT_REACHED();
-}
-
-void NetworkMessagePortChannelProvider::takeAllMessagesForPort(const MessagePortIdentifier&, CompletionHandler<void(Vector<MessageWithMessagePorts>&&, Function<void()>&&)>&&)
-{
-    // Should never be called in the UI process provider.
-    ASSERT_NOT_REACHED();
-}
-
-void NetworkMessagePortChannelProvider::postMessageToRemote(const MessageWithMessagePorts&, const MessagePortIdentifier&)
-{
-    // Should never be called in the UI process provider.
-    ASSERT_NOT_REACHED();
-}
-
-void NetworkMessagePortChannelProvider::checkRemotePortForActivity(const MessagePortIdentifier&, CompletionHandler<void(HasActivity)>&&)
-{
-    // Should never be called in the UI process provider.
-    ASSERT_NOT_REACHED();
-}
-
-void NetworkMessagePortChannelProvider::checkProcessLocalPortForActivity(const MessagePortIdentifier& port, ProcessIdentifier processIdentifier, CompletionHandler<void(HasActivity)>&& completionHandler)
-{
-    auto* connection = m_networkProcess.webProcessConnection(processIdentifier);
-    if (!connection) {
-        completionHandler(HasActivity::No);
-        return;
-    }
-
-    connection->checkProcessLocalPortForActivity(port, WTFMove(completionHandler));
-}
-
-} // namespace WebKit

Deleted: trunk/Source/WebKit/NetworkProcess/NetworkMessagePortChannelProvider.h (249636 => 249637)


--- trunk/Source/WebKit/NetworkProcess/NetworkMessagePortChannelProvider.h	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebKit/NetworkProcess/NetworkMessagePortChannelProvider.h	2019-09-09 08:50:50 UTC (rev 249637)
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2018-2019 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
- * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
- * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
- * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
- * THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#pragma once
-
-#include <WebCore/MessagePortChannelProvider.h>
-#include <WebCore/MessagePortChannelRegistry.h>
-
-namespace WebKit {
-
-class NetworkProcess;
-
-class NetworkMessagePortChannelProvider : public WebCore::MessagePortChannelProvider {
-public:
-    explicit NetworkMessagePortChannelProvider(NetworkProcess&);
-    WebCore::MessagePortChannelRegistry& registry() { return m_registry; }
-
-private:
-    void createNewMessagePortChannel(const WebCore::MessagePortIdentifier& local, const WebCore::MessagePortIdentifier& remote) final;
-    void entangleLocalPortInThisProcessToRemote(const WebCore::MessagePortIdentifier& local, const WebCore::MessagePortIdentifier& remote) final;
-    void messagePortDisentangled(const WebCore::MessagePortIdentifier& local) final;
-    void messagePortClosed(const WebCore::MessagePortIdentifier& local) final;
-    void takeAllMessagesForPort(const WebCore::MessagePortIdentifier&, CompletionHandler<void(Vector<WebCore::MessageWithMessagePorts>&&, Function<void()>&&)>&&) final;
-    void postMessageToRemote(const WebCore::MessageWithMessagePorts&, const WebCore::MessagePortIdentifier& remoteTarget) final;
-
-    void checkRemotePortForActivity(const WebCore::MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) final;
-    void checkProcessLocalPortForActivity(const WebCore::MessagePortIdentifier&, WebCore::ProcessIdentifier, CompletionHandler<void(HasActivity)>&&) final;
-
-    NetworkProcess& m_networkProcess;
-    WebCore::MessagePortChannelRegistry m_registry;
-};
-
-} // namespace WebKit

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp (249636 => 249637)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp	2019-09-09 08:50:50 UTC (rev 249637)
@@ -130,6 +130,19 @@
     });
 }
 
+static inline MessagePortChannelRegistry createMessagePortChannelRegistry(NetworkProcess& networkProcess)
+{
+    return MessagePortChannelRegistry { [&networkProcess](auto& messagePortIdentifier, auto processIdentifier, auto&& completionHandler) {
+        auto* connection = networkProcess.webProcessConnection(processIdentifier);
+        if (!connection) {
+            completionHandler(MessagePortChannelProvider::HasActivity::No);
+            return;
+        }
+
+        connection->checkProcessLocalPortForActivity(messagePortIdentifier, WTFMove(completionHandler));
+    } };
+}
+
 NetworkProcess::NetworkProcess(AuxiliaryProcessInitializationParameters&& parameters)
     : m_downloadManager(*this)
     , m_storageManagerSet(StorageManagerSet::create())
@@ -139,7 +152,7 @@
 #if PLATFORM(IOS_FAMILY)
     , m_webSQLiteDatabaseTracker([this](bool isHoldingLockedFiles) { parentProcessConnection()->send(Messages::NetworkProcessProxy::SetIsHoldingLockedFiles(isHoldingLockedFiles), 0); })
 #endif
-    , m_messagePortChannelProvider(*this)
+    , m_messagePortChannelRegistry(createMessagePortChannelRegistry(*this))
 {
     NetworkProcessPlatformStrategies::initialize();
 

Modified: trunk/Source/WebKit/NetworkProcess/NetworkProcess.h (249636 => 249637)


--- trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebKit/NetworkProcess/NetworkProcess.h	2019-09-09 08:50:50 UTC (rev 249637)
@@ -31,7 +31,6 @@
 #include "LocalStorageDatabaseTracker.h"
 #include "NetworkContentRuleListManager.h"
 #include "NetworkHTTPSUpgradeChecker.h"
-#include "NetworkMessagePortChannelProvider.h"
 #include "SandboxExtension.h"
 #include "WebPageProxyIdentifier.h"
 #include "WebResourceLoadStatisticsStore.h"
@@ -43,6 +42,7 @@
 #include <WebCore/FetchIdentifier.h>
 #include <WebCore/IDBKeyData.h>
 #include <WebCore/IDBServer.h>
+#include <WebCore/MessagePortChannelRegistry.h>
 #include <WebCore/PageIdentifier.h>
 #include <WebCore/RegistrableDomain.h>
 #include <WebCore/ServiceWorkerIdentifier.h>
@@ -350,7 +350,7 @@
     const OptionSet<NetworkCache::CacheOption>& cacheOptions() const { return m_cacheOptions; }
 
     NetworkConnectionToWebProcess* webProcessConnection(WebCore::ProcessIdentifier) const;
-    WebCore::MessagePortChannelRegistry& messagePortChannelRegistry() { return m_messagePortChannelProvider.registry(); }
+    WebCore::MessagePortChannelRegistry& messagePortChannelRegistry() { return m_messagePortChannelRegistry; }
 
 private:
     void platformInitializeNetworkProcess(const NetworkProcessCreationParameters&);
@@ -575,7 +575,7 @@
     HashMap<IPC::Connection::UniqueID, PAL::SessionID> m_sessionByConnection;
 
     OptionSet<NetworkCache::CacheOption> m_cacheOptions;
-    NetworkMessagePortChannelProvider m_messagePortChannelProvider;
+    WebCore::MessagePortChannelRegistry m_messagePortChannelRegistry;
 };
 
 } // namespace WebKit

Modified: trunk/Source/WebKit/Sources.txt (249636 => 249637)


--- trunk/Source/WebKit/Sources.txt	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebKit/Sources.txt	2019-09-09 08:50:50 UTC (rev 249637)
@@ -31,7 +31,6 @@
 NetworkProcess/NetworkHTTPSUpgradeChecker.cpp
 NetworkProcess/NetworkLoad.cpp
 NetworkProcess/NetworkLoadChecker.cpp
-NetworkProcess/NetworkMessagePortChannelProvider.cpp
 NetworkProcess/NetworkProcess.cpp
 NetworkProcess/NetworkProcessCreationParameters.cpp
 NetworkProcess/NetworkProcessPlatformStrategies.cpp

Modified: trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj (249636 => 249637)


--- trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj	2019-09-09 08:50:50 UTC (rev 249637)
@@ -3093,8 +3093,6 @@
 		410482CB1DDD2FB500F006D0 /* RTCNetwork.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RTCNetwork.cpp; sourceTree = "<group>"; };
 		410482CC1DDD2FB500F006D0 /* RTCNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCNetwork.h; sourceTree = "<group>"; };
 		4111436320F677B10026F912 /* InjectUserScriptImmediately.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectUserScriptImmediately.h; sourceTree = "<group>"; };
-		41114A782316EC3F00B56007 /* NetworkMessagePortChannelProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkMessagePortChannelProvider.h; sourceTree = "<group>"; };
-		41114A792316EC3F00B56007 /* NetworkMessagePortChannelProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkMessagePortChannelProvider.cpp; sourceTree = "<group>"; };
 		411286EF21C8A90C003A8550 /* MediaCaptureUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaCaptureUtilities.h; sourceTree = "<group>"; };
 		411286F021C8A90D003A8550 /* MediaCaptureUtilities.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MediaCaptureUtilities.mm; sourceTree = "<group>"; };
 		4112B5471F9FD3AB00E67875 /* NetworkRTCResolver.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkRTCResolver.cpp; sourceTree = "<group>"; };
@@ -6767,8 +6765,6 @@
 				4103FBA12061BDB700C2EAF8 /* NetworkLoadChecker.h */,
 				83D454D61BE9D3C4006C93BD /* NetworkLoadClient.h */,
 				839149631BEA838500D2D953 /* NetworkLoadParameters.h */,
-				41114A792316EC3F00B56007 /* NetworkMessagePortChannelProvider.cpp */,
-				41114A782316EC3F00B56007 /* NetworkMessagePortChannelProvider.h */,
 				510CC7DF16138E2900D03ED3 /* NetworkProcess.cpp */,
 				510CC7E016138E2900D03ED3 /* NetworkProcess.h */,
 				51A8A6171627F5BB000D90E9 /* NetworkProcess.messages.in */,

Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp (249636 => 249637)


--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp	2019-09-09 08:50:50 UTC (rev 249637)
@@ -90,12 +90,6 @@
     networkProcessConnection().send(Messages::NetworkConnectionToWebProcess::PostMessageToRemote { message, remoteTarget }, 0);
 }
 
-void WebMessagePortChannelProvider::checkProcessLocalPortForActivity(const MessagePortIdentifier&, ProcessIdentifier, CompletionHandler<void(HasActivity)>&&)
-{
-    // To be called only in the UI process provider, not the Web process provider.
-    ASSERT_NOT_REACHED();
-}
-
 void WebMessagePortChannelProvider::checkRemotePortForActivity(const MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& completionHandler)
 {
     networkProcessConnection().sendWithAsyncReply(Messages::NetworkConnectionToWebProcess::CheckRemotePortForActivity { remoteTarget }, [completionHandler = WTFMove(completionHandler)](bool hasActivity) mutable {

Modified: trunk/Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h (249636 => 249637)


--- trunk/Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h	2019-09-09 08:43:21 UTC (rev 249636)
+++ trunk/Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h	2019-09-09 08:50:50 UTC (rev 249637)
@@ -44,8 +44,6 @@
     void messagePortClosed(const WebCore::MessagePortIdentifier& local) final;
     void takeAllMessagesForPort(const WebCore::MessagePortIdentifier&, CompletionHandler<void(Vector<WebCore::MessageWithMessagePorts>&&, Function<void()>&&)>&&) final;
     void postMessageToRemote(const WebCore::MessageWithMessagePorts&, const WebCore::MessagePortIdentifier& remoteTarget) final;
-    void checkProcessLocalPortForActivity(const WebCore::MessagePortIdentifier&, WebCore::ProcessIdentifier, CompletionHandler<void(HasActivity)>&&) final;
-
     void checkRemotePortForActivity(const WebCore::MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) final;
 };
 
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to