Changeset 249637 in webkit
- Timestamp:
- Sep 9, 2019 1:50:50 AM (5 years ago)
- Location:
- trunk/Source
- Files:
-
- 2 deleted
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r249630 r249637 1 2019-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 1 32 2019-09-08 Saam Barati <sbarati@apple.com> 2 33 -
trunk/Source/WebCore/dom/messageports/MessagePortChannel.cpp
r249378 r249637 222 222 }; 223 223 224 m_registry. provider().checkProcessLocalPortForActivity(remotePort, *m_processes[i], WTFMove(outerCallback));224 m_registry.checkProcessLocalPortForActivity(remotePort, *m_processes[i], WTFMove(outerCallback)); 225 225 } 226 226 -
trunk/Source/WebCore/dom/messageports/MessagePortChannelProvider.h
r249479 r249637 60 60 virtual void checkRemotePortForActivity(const MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) = 0; 61 61 62 // Operations that the coordinating process performs (e.g. the UIProcess)63 virtual void checkProcessLocalPortForActivity(const MessagePortIdentifier&, ProcessIdentifier, CompletionHandler<void(HasActivity)>&&) = 0;64 65 62 private: 66 63 -
trunk/Source/WebCore/dom/messageports/MessagePortChannelProviderImpl.cpp
r249378 r249637 33 33 namespace WebCore { 34 34 35 static 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 35 43 MessagePortChannelProviderImpl::MessagePortChannelProviderImpl() 36 : m_registry( *this)44 : m_registry(checkActivityCallback()) 37 45 { 38 46 } … … 112 120 } 113 121 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 121 122 } // namespace WebCore -
trunk/Source/WebCore/dom/messageports/MessagePortChannelProviderImpl.h
r249378 r249637 45 45 void checkRemotePortForActivity(const MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) final; 46 46 47 void checkProcessLocalPortForActivity(const MessagePortIdentifier&, ProcessIdentifier, CompletionHandler<void(HasActivity)>&&) final;48 49 47 void performActionOnMainThread(Function<void()>&&); 50 48 -
trunk/Source/WebCore/dom/messageports/MessagePortChannelRegistry.cpp
r249378 r249637 33 33 namespace WebCore { 34 34 35 MessagePortChannelRegistry::MessagePortChannelRegistry( MessagePortChannelProvider& provider)36 : m_ provider(provider)35 MessagePortChannelRegistry::MessagePortChannelRegistry(CheckProcessLocalPortForActivityCallback&& checkProcessLocalPortForActivityCallback) 36 : m_checkProcessLocalPortForActivityCallback(WTFMove(checkProcessLocalPortForActivityCallback)) 37 37 { 38 38 } … … 179 179 } 180 180 181 void MessagePortChannelRegistry::checkProcessLocalPortForActivity(const MessagePortIdentifier& messagePortIdentifier, ProcessIdentifier processIdentifier, CompletionHandler<void(MessagePortChannelProvider::HasActivity)>&& callback) 182 { 183 m_checkProcessLocalPortForActivityCallback(messagePortIdentifier, processIdentifier, WTFMove(callback)); 184 } 185 181 186 } // namespace WebCore -
trunk/Source/WebCore/dom/messageports/MessagePortChannelRegistry.h
r249378 r249637 36 36 class MessagePortChannelRegistry { 37 37 public: 38 WEBCORE_EXPORT MessagePortChannelRegistry(MessagePortChannelProvider&); 38 using CheckProcessLocalPortForActivityCallback = Function<void(const MessagePortIdentifier&, ProcessIdentifier, CompletionHandler<void(MessagePortChannelProvider::HasActivity)>&&)>; 39 WEBCORE_EXPORT explicit MessagePortChannelRegistry(CheckProcessLocalPortForActivityCallback&&); 40 39 41 WEBCORE_EXPORT ~MessagePortChannelRegistry(); 40 42 … … 52 54 WEBCORE_EXPORT void messagePortChannelDestroyed(MessagePortChannel&); 53 55 54 MessagePortChannelProvider& provider() { return m_provider; }56 void checkProcessLocalPortForActivity(const MessagePortIdentifier&, ProcessIdentifier, CompletionHandler<void(MessagePortChannelProvider::HasActivity)>&&); 55 57 56 58 private: 57 59 HashMap<MessagePortIdentifier, MessagePortChannel*> m_openChannels; 58 MessagePortChannelProvider& m_provider; 59 60 CheckProcessLocalPortForActivityCallback m_checkProcessLocalPortForActivityCallback; 60 61 }; 61 62 -
trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.cpp
r249378 r249637 121 121 } 122 122 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 138 123 } // namespace WebCore -
trunk/Source/WebCore/dom/messageports/WorkerMessagePortChannelProvider.h
r249378 r249637 50 50 void checkRemotePortForActivity(const MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) final; 51 51 52 void checkProcessLocalPortForActivity(const MessagePortIdentifier&, ProcessIdentifier, CompletionHandler<void(HasActivity)>&&) final;53 54 52 WorkerGlobalScope& m_scope; 55 53 -
trunk/Source/WebKit/ChangeLog
r249632 r249637 1 2019-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 1 26 2019-09-08 David Quesada <david_quesada@apple.com> 2 27 -
trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
r249603 r249637 32 32 #include "NetworkCache.h" 33 33 #include "NetworkMDNSRegisterMessages.h" 34 #include "NetworkMessagePortChannelProvider.h"35 34 #include "NetworkProcess.h" 36 35 #include "NetworkProcessConnectionMessages.h" -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.cpp
r249619 r249637 131 131 } 132 132 133 static 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 133 146 NetworkProcess::NetworkProcess(AuxiliaryProcessInitializationParameters&& parameters) 134 147 : m_downloadManager(*this) … … 140 153 , m_webSQLiteDatabaseTracker([this](bool isHoldingLockedFiles) { parentProcessConnection()->send(Messages::NetworkProcessProxy::SetIsHoldingLockedFiles(isHoldingLockedFiles), 0); }) 141 154 #endif 142 , m_messagePortChannel Provider(*this)155 , m_messagePortChannelRegistry(createMessagePortChannelRegistry(*this)) 143 156 { 144 157 NetworkProcessPlatformStrategies::initialize(); -
trunk/Source/WebKit/NetworkProcess/NetworkProcess.h
r249614 r249637 32 32 #include "NetworkContentRuleListManager.h" 33 33 #include "NetworkHTTPSUpgradeChecker.h" 34 #include "NetworkMessagePortChannelProvider.h"35 34 #include "SandboxExtension.h" 36 35 #include "WebPageProxyIdentifier.h" … … 44 43 #include <WebCore/IDBKeyData.h> 45 44 #include <WebCore/IDBServer.h> 45 #include <WebCore/MessagePortChannelRegistry.h> 46 46 #include <WebCore/PageIdentifier.h> 47 47 #include <WebCore/RegistrableDomain.h> … … 351 351 352 352 NetworkConnectionToWebProcess* webProcessConnection(WebCore::ProcessIdentifier) const; 353 WebCore::MessagePortChannelRegistry& messagePortChannelRegistry() { return m_messagePortChannel Provider.registry(); }353 WebCore::MessagePortChannelRegistry& messagePortChannelRegistry() { return m_messagePortChannelRegistry; } 354 354 355 355 private: … … 576 576 577 577 OptionSet<NetworkCache::CacheOption> m_cacheOptions; 578 NetworkMessagePortChannelProvider m_messagePortChannelProvider;578 WebCore::MessagePortChannelRegistry m_messagePortChannelRegistry; 579 579 }; 580 580 -
trunk/Source/WebKit/Sources.txt
r249614 r249637 32 32 NetworkProcess/NetworkLoad.cpp 33 33 NetworkProcess/NetworkLoadChecker.cpp 34 NetworkProcess/NetworkMessagePortChannelProvider.cpp35 34 NetworkProcess/NetworkProcess.cpp 36 35 NetworkProcess/NetworkProcessCreationParameters.cpp -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r249614 r249637 3094 3094 410482CC1DDD2FB500F006D0 /* RTCNetwork.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCNetwork.h; sourceTree = "<group>"; }; 3095 3095 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>"; };3098 3096 411286EF21C8A90C003A8550 /* MediaCaptureUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaCaptureUtilities.h; sourceTree = "<group>"; }; 3099 3097 411286F021C8A90D003A8550 /* MediaCaptureUtilities.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MediaCaptureUtilities.mm; sourceTree = "<group>"; }; … … 6768 6766 83D454D61BE9D3C4006C93BD /* NetworkLoadClient.h */, 6769 6767 839149631BEA838500D2D953 /* NetworkLoadParameters.h */, 6770 41114A792316EC3F00B56007 /* NetworkMessagePortChannelProvider.cpp */,6771 41114A782316EC3F00B56007 /* NetworkMessagePortChannelProvider.h */,6772 6768 510CC7DF16138E2900D03ED3 /* NetworkProcess.cpp */, 6773 6769 510CC7E016138E2900D03ED3 /* NetworkProcess.h */, -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.cpp
r249479 r249637 91 91 } 92 92 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 99 93 void WebMessagePortChannelProvider::checkRemotePortForActivity(const MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& completionHandler) 100 94 { -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebMessagePortChannelProvider.h
r249479 r249637 45 45 void takeAllMessagesForPort(const WebCore::MessagePortIdentifier&, CompletionHandler<void(Vector<WebCore::MessageWithMessagePorts>&&, Function<void()>&&)>&&) final; 46 46 void postMessageToRemote(const WebCore::MessageWithMessagePorts&, const WebCore::MessagePortIdentifier& remoteTarget) final; 47 void checkProcessLocalPortForActivity(const WebCore::MessagePortIdentifier&, WebCore::ProcessIdentifier, CompletionHandler<void(HasActivity)>&&) final;48 49 47 void checkRemotePortForActivity(const WebCore::MessagePortIdentifier& remoteTarget, CompletionHandler<void(HasActivity)>&& callback) final; 50 48 };
Note: See TracChangeset
for help on using the changeset viewer.