Changeset 249637 in webkit


Ignore:
Timestamp:
Sep 9, 2019 1:50:50 AM (5 years ago)
Author:
youenn@apple.com
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:
Location:
trunk/Source
Files:
2 deleted
17 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r249630 r249637  
     12019-09-09  Youenn Fablet  <youenn@apple.com>
     2
     3        Move checkProcessLocalPortForActivity from provider to registry
     4        https://bugs.webkit.org/show_bug.cgi?id=201400
     5
     6        Reviewed by Alex Christensen.
     7
     8        Update the registry to take a callback that is used to implement checkProcessLocalPortForActivity.
     9        This allows WK1 and WK2 to have their own implementation.
     10
     11        Make the call to checkProcessLocalPortForActivity directly on the registry.
     12        Remove unneeded worker checkProcessLocalPortForActivity method.
     13        No change of behavior.
     14
     15        * dom/messageports/MessagePortChannel.cpp:
     16        (WebCore::MessagePortChannel::checkRemotePortForActivity):
     17        * dom/messageports/MessagePortChannelProvider.h:
     18        * dom/messageports/MessagePortChannelProviderImpl.cpp:
     19        (WebCore::createMessagePortChannelRegistry):
     20        (WebCore::MessagePortChannelProviderImpl::MessagePortChannelProviderImpl):
     21        (WebCore::MessagePortChannelProviderImpl::checkProcessLocalPortForActivity): Deleted.
     22        * dom/messageports/MessagePortChannelProviderImpl.h:
     23        * dom/messageports/MessagePortChannelRegistry.cpp:
     24        (WebCore::MessagePortChannelRegistry::MessagePortChannelRegistry):
     25        (WebCore::MessagePortChannelRegistry::checkProcessLocalPortForActivity):
     26        * dom/messageports/MessagePortChannelRegistry.h:
     27        (WebCore::MessagePortChannelRegistry::provider): Deleted.
     28        * dom/messageports/WorkerMessagePortChannelProvider.cpp:
     29        (WebCore::WorkerMessagePortChannelProvider::checkProcessLocalPortForActivity): Deleted.
     30        * dom/messageports/WorkerMessagePortChannelProvider.h:
     31
    1322019-09-08  Saam Barati  <sbarati@apple.com>
    233
  • trunk/Source/WebCore/dom/messageports/MessagePortChannel.cpp

    r249378 r249637  
    222222    };
    223223
    224     m_registry.provider().checkProcessLocalPortForActivity(remotePort, *m_processes[i], WTFMove(outerCallback));
     224    m_registry.checkProcessLocalPortForActivity(remotePort, *m_processes[i], WTFMove(outerCallback));
    225225}
    226226
  • trunk/Source/WebCore/dom/messageports/MessagePortChannelProvider.h

    r249479 r249637  
    6060    virtual void checkRemotePortForActivity(const MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) = 0;
    6161
    62     // Operations that the coordinating process performs (e.g. the UIProcess)
    63     virtual void checkProcessLocalPortForActivity(const MessagePortIdentifier&, ProcessIdentifier, CompletionHandler<void(HasActivity)>&&) = 0;
    64 
    6562private:
    6663
  • trunk/Source/WebCore/dom/messageports/MessagePortChannelProviderImpl.cpp

    r249378 r249637  
    3333namespace WebCore {
    3434
     35static inline MessagePortChannelRegistry::CheckProcessLocalPortForActivityCallback checkActivityCallback()
     36{
     37    return [](auto& messagePortIdentifier, auto, auto&& callback) {
     38        ASSERT(isMainThread());
     39        callback(MessagePort::isExistingMessagePortLocallyReachable(messagePortIdentifier) ? MessagePortChannelProvider::HasActivity::Yes : MessagePortChannelProvider::HasActivity::No);
     40    };
     41}
     42
    3543MessagePortChannelProviderImpl::MessagePortChannelProviderImpl()
    36     : m_registry(*this)
     44    : m_registry(checkActivityCallback())
    3745{
    3846}
     
    112120}
    113121
    114 void MessagePortChannelProviderImpl::checkProcessLocalPortForActivity(const MessagePortIdentifier& identifier, ProcessIdentifier, CompletionHandler<void(HasActivity)>&& callback)
    115 {
    116     ASSERT(isMainThread());
    117 
    118     callback(MessagePort::isExistingMessagePortLocallyReachable(identifier) ? HasActivity::Yes : HasActivity::No);
    119 }
    120 
    121122} // namespace WebCore
  • trunk/Source/WebCore/dom/messageports/MessagePortChannelProviderImpl.h

    r249378 r249637  
    4545    void checkRemotePortForActivity(const MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) final;
    4646
    47     void checkProcessLocalPortForActivity(const MessagePortIdentifier&, ProcessIdentifier, CompletionHandler<void(HasActivity)>&&) final;
    48 
    4947    void performActionOnMainThread(Function<void()>&&);
    5048
  • trunk/Source/WebCore/dom/messageports/MessagePortChannelRegistry.cpp

    r249378 r249637  
    3333namespace WebCore {
    3434
    35 MessagePortChannelRegistry::MessagePortChannelRegistry(MessagePortChannelProvider& provider)
    36     : m_provider(provider)
     35MessagePortChannelRegistry::MessagePortChannelRegistry(CheckProcessLocalPortForActivityCallback&& checkProcessLocalPortForActivityCallback)
     36    : m_checkProcessLocalPortForActivityCallback(WTFMove(checkProcessLocalPortForActivityCallback))
    3737{
    3838}
     
    179179}
    180180
     181void MessagePortChannelRegistry::checkProcessLocalPortForActivity(const MessagePortIdentifier& messagePortIdentifier, ProcessIdentifier processIdentifier, CompletionHandler<void(MessagePortChannelProvider::HasActivity)>&& callback)
     182{
     183    m_checkProcessLocalPortForActivityCallback(messagePortIdentifier, processIdentifier, WTFMove(callback));
     184}
     185
    181186} // namespace WebCore
  • trunk/Source/WebCore/dom/messageports/MessagePortChannelRegistry.h

    r249378 r249637  
    3636class MessagePortChannelRegistry {
    3737public:
    38     WEBCORE_EXPORT MessagePortChannelRegistry(MessagePortChannelProvider&);
     38    using CheckProcessLocalPortForActivityCallback = Function<void(const MessagePortIdentifier&, ProcessIdentifier, CompletionHandler<void(MessagePortChannelProvider::HasActivity)>&&)>;
     39    WEBCORE_EXPORT explicit MessagePortChannelRegistry(CheckProcessLocalPortForActivityCallback&&);
     40
    3941    WEBCORE_EXPORT ~MessagePortChannelRegistry();
    4042   
     
    5254    WEBCORE_EXPORT void messagePortChannelDestroyed(MessagePortChannel&);
    5355
    54     MessagePortChannelProvider& provider() { return m_provider; }
     56    void checkProcessLocalPortForActivity(const MessagePortIdentifier&, ProcessIdentifier, CompletionHandler<void(MessagePortChannelProvider::HasActivity)>&&);
    5557
    5658private:
    5759    HashMap<MessagePortIdentifier, MessagePortChannel*> m_openChannels;
    58     MessagePortChannelProvider& m_provider;
    59 
     60    CheckProcessLocalPortForActivityCallback m_checkProcessLocalPortForActivityCallback;
    6061};
    6162
  • trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.cpp

    r249378 r249637  
    121121}
    122122
    123 void WorkerMessagePortChannelProvider::checkProcessLocalPortForActivity(const MessagePortIdentifier& identifier, ProcessIdentifier processIdentifier, CompletionHandler<void(HasActivity)>&& callback)
    124 {
    125     uint64_t callbackIdentifier = ++m_lastCallbackIdentifier;
    126     m_activityCallbacks.add(callbackIdentifier, WTFMove(callback));
    127 
    128     callOnMainThread([this, workerThread = makeRef(m_scope.thread()), callbackIdentifier, identifier, processIdentifier]() mutable {
    129         MessagePortChannelProvider::singleton().checkProcessLocalPortForActivity(identifier, processIdentifier, [this, workerThread = WTFMove(workerThread), callbackIdentifier](auto hasActivity) {
    130             workerThread->runLoop().postTaskForMode([this, callbackIdentifier, hasActivity](auto& scope) mutable {
    131                 ASSERT_UNUSED(scope, this == &downcast<WorkerGlobalScope>(scope).messagePortChannelProvider());
    132                 m_activityCallbacks.take(callbackIdentifier)(hasActivity);
    133             }, WorkerRunLoop::defaultMode());
    134         });
    135     });
    136 }
    137 
    138123} // namespace WebCore
  • trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.h

    r249378 r249637  
    5050    void checkRemotePortForActivity(const MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) final;
    5151
    52     void checkProcessLocalPortForActivity(const MessagePortIdentifier&, ProcessIdentifier, CompletionHandler<void(HasActivity)>&&) final;
    53 
    5452    WorkerGlobalScope& m_scope;
    5553
  • trunk/Source/WebKit/ChangeLog

    r249632 r249637  
     12019-09-09  Youenn Fablet  <youenn@apple.com>
     2
     3        Move checkProcessLocalPortForActivity from provider to registry
     4        https://bugs.webkit.org/show_bug.cgi?id=201400
     5
     6        Reviewed by Alex Christensen.
     7
     8        Implement registry callback at NetworkProcess level.
     9        Remove NetworkMessagePortChannelProvider since only a registry is now needed.
     10
     11        * NetworkProcess/NetworkConnectionToWebProcess.cpp:
     12        * NetworkProcess/NetworkMessagePortChannelProvider.cpp: Removed.
     13        * NetworkProcess/NetworkMessagePortChannelProvider.h: Removed.
     14        * NetworkProcess/NetworkProcess.cpp:
     15        (WebKit::createMessagePortChannelRegistry):
     16        (WebKit::m_messagePortChannelRegistry):
     17        (WebKit::m_messagePortChannelProvider): Deleted.
     18        * NetworkProcess/NetworkProcess.h:
     19        (WebKit::NetworkProcess::messagePortChannelRegistry):
     20        * Sources.txt:
     21        * WebKit.xcodeproj/project.pbxproj:
     22        * WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp:
     23        (WebKit::WebMessagePortChannelProvider::checkProcessLocalPortForActivity): Deleted.
     24        * WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h:
     25
    1262019-09-08  David Quesada  <david_quesada@apple.com>
    227
  • trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp

    r249603 r249637  
    3232#include "NetworkCache.h"
    3333#include "NetworkMDNSRegisterMessages.h"
    34 #include "NetworkMessagePortChannelProvider.h"
    3534#include "NetworkProcess.h"
    3635#include "NetworkProcessConnectionMessages.h"
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp

    r249619 r249637  
    131131}
    132132
     133static inline MessagePortChannelRegistry createMessagePortChannelRegistry(NetworkProcess& networkProcess)
     134{
     135    return MessagePortChannelRegistry { [&networkProcess](auto& messagePortIdentifier, auto processIdentifier, auto&& completionHandler) {
     136        auto* connection = networkProcess.webProcessConnection(processIdentifier);
     137        if (!connection) {
     138            completionHandler(MessagePortChannelProvider::HasActivity::No);
     139            return;
     140        }
     141
     142        connection->checkProcessLocalPortForActivity(messagePortIdentifier, WTFMove(completionHandler));
     143    } };
     144}
     145
    133146NetworkProcess::NetworkProcess(AuxiliaryProcessInitializationParameters&& parameters)
    134147    : m_downloadManager(*this)
     
    140153    , m_webSQLiteDatabaseTracker([this](bool isHoldingLockedFiles) { parentProcessConnection()->send(Messages::NetworkProcessProxy::SetIsHoldingLockedFiles(isHoldingLockedFiles), 0); })
    141154#endif
    142     , m_messagePortChannelProvider(*this)
     155    , m_messagePortChannelRegistry(createMessagePortChannelRegistry(*this))
    143156{
    144157    NetworkProcessPlatformStrategies::initialize();
  • trunk/Source/WebKit/NetworkProcess/NetworkProcess.h

    r249614 r249637  
    3232#include "NetworkContentRuleListManager.h"
    3333#include "NetworkHTTPSUpgradeChecker.h"
    34 #include "NetworkMessagePortChannelProvider.h"
    3534#include "SandboxExtension.h"
    3635#include "WebPageProxyIdentifier.h"
     
    4443#include <WebCore/IDBKeyData.h>
    4544#include <WebCore/IDBServer.h>
     45#include <WebCore/MessagePortChannelRegistry.h>
    4646#include <WebCore/PageIdentifier.h>
    4747#include <WebCore/RegistrableDomain.h>
     
    351351
    352352    NetworkConnectionToWebProcess* webProcessConnection(WebCore::ProcessIdentifier) const;
    353     WebCore::MessagePortChannelRegistry& messagePortChannelRegistry() { return m_messagePortChannelProvider.registry(); }
     353    WebCore::MessagePortChannelRegistry& messagePortChannelRegistry() { return m_messagePortChannelRegistry; }
    354354
    355355private:
     
    576576
    577577    OptionSet<NetworkCache::CacheOption> m_cacheOptions;
    578     NetworkMessagePortChannelProvider m_messagePortChannelProvider;
     578    WebCore::MessagePortChannelRegistry m_messagePortChannelRegistry;
    579579};
    580580
  • trunk/Source/WebKit/Sources.txt

    r249614 r249637  
    3232NetworkProcess/NetworkLoad.cpp
    3333NetworkProcess/NetworkLoadChecker.cpp
    34 NetworkProcess/NetworkMessagePortChannelProvider.cpp
    3534NetworkProcess/NetworkProcess.cpp
    3635NetworkProcess/NetworkProcessCreationParameters.cpp
  • trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj

    r249614 r249637  
    30943094                410482CC1DDD2FB500F006D0 /* RTCNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCNetwork.h; sourceTree = "<group>"; };
    30953095                4111436320F677B10026F912 /* InjectUserScriptImmediately.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectUserScriptImmediately.h; sourceTree = "<group>"; };
    3096                 41114A782316EC3F00B56007 /* NetworkMessagePortChannelProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NetworkMessagePortChannelProvider.h; sourceTree = "<group>"; };
    3097                 41114A792316EC3F00B56007 /* NetworkMessagePortChannelProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkMessagePortChannelProvider.cpp; sourceTree = "<group>"; };
    30983096                411286EF21C8A90C003A8550 /* MediaCaptureUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaCaptureUtilities.h; sourceTree = "<group>"; };
    30993097                411286F021C8A90D003A8550 /* MediaCaptureUtilities.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MediaCaptureUtilities.mm; sourceTree = "<group>"; };
     
    67686766                                83D454D61BE9D3C4006C93BD /* NetworkLoadClient.h */,
    67696767                                839149631BEA838500D2D953 /* NetworkLoadParameters.h */,
    6770                                 41114A792316EC3F00B56007 /* NetworkMessagePortChannelProvider.cpp */,
    6771                                 41114A782316EC3F00B56007 /* NetworkMessagePortChannelProvider.h */,
    67726768                                510CC7DF16138E2900D03ED3 /* NetworkProcess.cpp */,
    67736769                                510CC7E016138E2900D03ED3 /* NetworkProcess.h */,
  • trunk/Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp

    r249479 r249637  
    9191}
    9292
    93 void WebMessagePortChannelProvider::checkProcessLocalPortForActivity(const MessagePortIdentifier&, ProcessIdentifier, CompletionHandler<void(HasActivity)>&&)
    94 {
    95     // To be called only in the UI process provider, not the Web process provider.
    96     ASSERT_NOT_REACHED();
    97 }
    98 
    9993void WebMessagePortChannelProvider::checkRemotePortForActivity(const MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& completionHandler)
    10094{
  • trunk/Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h

    r249479 r249637  
    4545    void takeAllMessagesForPort(const WebCore::MessagePortIdentifier&, CompletionHandler<void(Vector<WebCore::MessageWithMessagePorts>&&, Function<void()>&&)>&&) final;
    4646    void postMessageToRemote(const WebCore::MessageWithMessagePorts&, const WebCore::MessagePortIdentifier& remoteTarget) final;
    47     void checkProcessLocalPortForActivity(const WebCore::MessagePortIdentifier&, WebCore::ProcessIdentifier, CompletionHandler<void(HasActivity)>&&) final;
    48 
    4947    void checkRemotePortForActivity(const WebCore::MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) final;
    5048};
Note: See TracChangeset for help on using the changeset viewer.