Changeset 261163 in webkit
- Timestamp:
- May 5, 2020 6:40:04 AM (4 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 1 added
- 2 deleted
- 14 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/CMakeLists.txt
r260277 r261163 235 235 WebProcess/Inspector/WebInspectorUI.messages.in 236 236 237 WebProcess/Network/webrtc/LibWebRTCNetwork.messages.in 237 238 WebProcess/Network/webrtc/WebMDNSRegister.messages.in 238 239 WebProcess/Network/webrtc/WebRTCMonitor.messages.in 239 240 WebProcess/Network/webrtc/WebRTCResolver.messages.in 240 WebProcess/Network/webrtc/WebRTCSocket.messages.in241 241 242 242 WebProcess/Network/NetworkProcessConnection.messages.in -
trunk/Source/WebKit/ChangeLog
r261157 r261163 1 2020-05-05 Youenn Fablet <youenn@apple.com> 2 3 Receiving WebRTC network packets should not go through the main thread 4 https://bugs.webkit.org/show_bug.cgi?id=211290 5 6 Reviewed by Alex Christensen. 7 8 Instead of going to main thread before going to rtc network thread, we register a message receiver and dispatch directly to rtc network thread. 9 This ensures rtc packets are not blocked if main thread is busy. 10 11 * DerivedSources-input.xcfilelist: 12 * DerivedSources-output.xcfilelist: 13 * DerivedSources.make: 14 * NetworkProcess/webrtc/LibWebRTCSocketClient.cpp: 15 (WebKit::LibWebRTCSocketClient::signalReadPacket): 16 (WebKit::LibWebRTCSocketClient::signalSentPacket): 17 (WebKit::LibWebRTCSocketClient::signalAddressReady): 18 (WebKit::LibWebRTCSocketClient::signalConnect): 19 (WebKit::LibWebRTCSocketClient::signalClose): 20 * NetworkProcess/webrtc/NetworkRTCProvider.cpp: 21 (WebKit::NetworkRTCProvider::createSocket): 22 (WebKit::NetworkRTCProvider::createServerTCPSocket): 23 (WebKit::NetworkRTCProvider::createClientTCPSocket): 24 (WebKit::NetworkRTCProvider::newConnection): 25 (WebKit::NetworkRTCProvider::closeListeningSockets): 26 * Sources.txt: 27 * WebKit.xcodeproj/project.pbxproj: 28 * WebProcess/Network/NetworkProcessConnection.cpp: 29 (WebKit::NetworkProcessConnection::NetworkProcessConnection): 30 (WebKit::NetworkProcessConnection::didReceiveMessage): 31 * WebProcess/Network/webrtc/LibWebRTCNetwork.cpp: Added 32 * WebProcess/Network/webrtc/LibWebRTCNetwork.h: 33 (WebKit::LibWebRTCNetwork::connection): 34 (WebKit::LibWebRTCNetwork::~LibWebRTCNetwork): 35 (WebKit::LibWebRTCNetwork::networkProcessCrashed): 36 (WebKit::LibWebRTCNetwork::setConnection): 37 (WebKit::LibWebRTCNetwork::dispatchToThread): 38 (WebKit::LibWebRTCNetwork::signalAddressReady): 39 (WebKit::LibWebRTCNetwork::signalReadPacket): 40 (WebKit::LibWebRTCNetwork::signalSentPacket): 41 (WebKit::LibWebRTCNetwork::signalConnect): 42 (WebKit::LibWebRTCNetwork::signalClose): 43 (WebKit::LibWebRTCNetwork::signalNewConnection): 44 * WebProcess/Network/webrtc/LibWebRTCNetwork.messages.in: Added. 45 * WebProcess/Network/webrtc/LibWebRTCSocket.h: 46 * WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp: 47 * WebProcess/Network/webrtc/WebRTCSocket.cpp: Removed. 48 * WebProcess/Network/webrtc/WebRTCSocket.h: Removed. 49 1 50 2020-05-05 Tim Horton <timothy_horton@apple.com> 2 51 -
trunk/Source/WebKit/DerivedSources-input.xcfilelist
r260102 r261163 141 141 $(PROJECT_DIR)/WebProcess/Network/WebSocketChannel.messages.in 142 142 $(PROJECT_DIR)/WebProcess/Network/WebSocketStream.messages.in 143 $(PROJECT_DIR)/WebProcess/Network/webrtc/LibWebRTCNetwork.messages.in 143 144 $(PROJECT_DIR)/WebProcess/Network/webrtc/WebMDNSRegister.messages.in 144 145 $(PROJECT_DIR)/WebProcess/Network/webrtc/WebRTCMonitor.messages.in 145 146 $(PROJECT_DIR)/WebProcess/Network/webrtc/WebRTCResolver.messages.in 146 $(PROJECT_DIR)/WebProcess/Network/webrtc/WebRTCSocket.messages.in147 147 $(PROJECT_DIR)/WebProcess/Notifications/WebNotificationManager.messages.in 148 148 $(PROJECT_DIR)/WebProcess/Plugins/PluginProcessConnection.messages.in -
trunk/Source/WebKit/DerivedSources-output.xcfilelist
r260102 r261163 58 58 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/LibWebRTCCodecsProxyMessages.h 59 59 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/LibWebRTCCodecsProxyMessagesReplies.h 60 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/LibWebRTCNetworkMessageReceiver.cpp 61 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/LibWebRTCNetworkMessages.h 62 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/LibWebRTCNetworkMessagesReplies.h 60 63 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/LibWebRTCRemoteCodecsMessageReceiver.cpp 61 64 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/LibWebRTCRemoteCodecsMessages.h … … 385 388 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebRTCResolverMessages.h 386 389 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebRTCResolverMessagesReplies.h 387 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebRTCSocketMessageReceiver.cpp388 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebRTCSocketMessages.h389 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebRTCSocketMessagesReplies.h390 390 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebResourceLoaderMessageReceiver.cpp 391 391 $(BUILT_PRODUCTS_DIR)/DerivedSources/WebKit2/WebResourceLoaderMessages.h -
trunk/Source/WebKit/DerivedSources.make
r260717 r261163 130 130 LibWebRTCCodecs \ 131 131 LibWebRTCCodecsProxy \ 132 LibWebRTCNetwork \ 132 133 MediaPlayerPrivateRemote \ 133 134 NPObjectMessageReceiver \ … … 229 230 WebRTCMonitor \ 230 231 WebRTCResolver \ 231 WebRTCSocket \232 232 WebResourceLoader \ 233 233 WebSWClientConnection \ -
trunk/Source/WebKit/NetworkProcess/webrtc/LibWebRTCSocketClient.cpp
r260227 r261163 31 31 #include "Connection.h" 32 32 #include "DataReference.h" 33 #include "LibWebRTCNetworkMessages.h" 33 34 #include "Logging.h" 34 35 #include "NetworkRTCProvider.h" 35 #include "WebRTCSocketMessages.h"36 36 #include <WebCore/SharedBuffer.h> 37 37 #include <wtf/Function.h> … … 101 101 m_rtcProvider.sendFromMainThread([identifier = m_identifier, buffer = WTFMove(buffer), address = RTCNetwork::isolatedCopy(address), packetTime](IPC::Connection& connection) { 102 102 IPC::DataReference data(reinterpret_cast<const uint8_t*>(buffer->data()), buffer->size()); 103 connection.send(Messages:: WebRTCSocket::SignalReadPacket(data, RTCNetwork::IPAddress(address.ipaddr()), address.port(), packetTime), identifier);103 connection.send(Messages::LibWebRTCNetwork::SignalReadPacket(identifier, data, RTCNetwork::IPAddress(address.ipaddr()), address.port(), packetTime), 0); 104 104 }); 105 105 } … … 109 109 ASSERT_UNUSED(socket, m_socket.get() == socket); 110 110 m_rtcProvider.sendFromMainThread([identifier = m_identifier, sentPacket](IPC::Connection& connection) { 111 connection.send(Messages:: WebRTCSocket::SignalSentPacket(sentPacket.packet_id, sentPacket.send_time_ms), identifier);111 connection.send(Messages::LibWebRTCNetwork::SignalSentPacket(identifier, sentPacket.packet_id, sentPacket.send_time_ms), 0); 112 112 }); 113 113 } … … 123 123 ASSERT_UNUSED(socket, m_socket.get() == socket); 124 124 m_rtcProvider.sendFromMainThread([identifier = m_identifier, address = RTCNetwork::isolatedCopy(address)](IPC::Connection& connection) { 125 connection.send(Messages:: WebRTCSocket::SignalAddressReady(RTCNetwork::SocketAddress(address)), identifier);125 connection.send(Messages::LibWebRTCNetwork::SignalAddressReady(identifier, RTCNetwork::SocketAddress(address)), 0); 126 126 }); 127 127 } … … 136 136 ASSERT_UNUSED(socket, m_socket.get() == socket); 137 137 m_rtcProvider.sendFromMainThread([identifier = m_identifier](IPC::Connection& connection) { 138 connection.send(Messages:: WebRTCSocket::SignalConnect(), identifier);138 connection.send(Messages::LibWebRTCNetwork::SignalConnect(identifier), 0); 139 139 }); 140 140 } … … 144 144 ASSERT_UNUSED(socket, m_socket.get() == socket); 145 145 m_rtcProvider.sendFromMainThread([identifier = m_identifier, error](IPC::Connection& connection) { 146 connection.send(Messages:: WebRTCSocket::SignalClose(error), identifier);146 connection.send(Messages::LibWebRTCNetwork::SignalClose(identifier, error), 0); 147 147 }); 148 148 // We want to remove 'this' from the socket map now but we will destroy it asynchronously -
trunk/Source/WebKit/NetworkProcess/webrtc/NetworkRTCProvider.cpp
r260260 r261163 29 29 #if USE(LIBWEBRTC) 30 30 31 #include "LibWebRTCNetworkMessages.h" 31 32 #include "LibWebRTCSocketClient.h" 32 33 #include "Logging.h" … … 36 37 #include "NetworkRTCSocket.h" 37 38 #include "WebRTCResolverMessages.h" 38 #include "WebRTCSocketMessages.h"39 39 #include <WebCore/LibWebRTCMacros.h> 40 40 #include <webrtc/rtc_base/async_packet_socket.h> … … 119 119 sendFromMainThread([this, identifier, size = m_sockets.size()](IPC::Connection& connection) { 120 120 RELEASE_LOG_ERROR_IF_ALLOWED("createSocket with %u sockets is unable to create a new socket", size); 121 connection.send(Messages:: WebRTCSocket::SignalClose(1), identifier);121 connection.send(Messages::LibWebRTCNetwork::SignalClose(identifier, 1), 0); 122 122 }); 123 123 return; … … 138 138 if (!m_isListeningSocketAuthorized) { 139 139 if (m_connection) 140 m_connection->connection().send(Messages:: WebRTCSocket::SignalClose(1), identifier);140 m_connection->connection().send(Messages::LibWebRTCNetwork::SignalClose(identifier, 1), 0); 141 141 return; 142 142 } … … 159 159 auto* session = m_connection->networkSession(); 160 160 if (!session) { 161 m_connection->connection().send(Messages:: WebRTCSocket::SignalClose(1), identifier);161 m_connection->connection().send(Messages::LibWebRTCNetwork::SignalClose(identifier, 1), 0); 162 162 return; 163 163 } … … 194 194 auto incomingSocketIdentifier = LibWebRTCSocketIdentifier::generate(); 195 195 sendFromMainThread([identifier = serverSocket.identifier(), incomingSocketIdentifier, remoteAddress = RTCNetwork::isolatedCopy(newSocket->GetRemoteAddress())](IPC::Connection& connection) { 196 connection.send(Messages:: WebRTCSocket::SignalNewConnection(incomingSocketIdentifier, RTCNetwork::SocketAddress(remoteAddress)), identifier);196 connection.send(Messages::LibWebRTCNetwork::SignalNewConnection(identifier, incomingSocketIdentifier, RTCNetwork::SocketAddress(remoteAddress)), 0); 197 197 }); 198 198 m_pendingIncomingSockets.add(incomingSocketIdentifier, WTFMove(newSocket)); … … 265 265 if (provider->m_connection) { 266 266 for (auto identifier : listeningSocketIdentifiers) 267 provider->m_connection->connection().send(Messages:: WebRTCSocket::SignalClose(ECONNABORTED), identifier);267 provider->m_connection->connection().send(Messages::LibWebRTCNetwork::SignalClose(identifier, ECONNABORTED), 0); 268 268 } 269 269 completionHandler(); -
trunk/Source/WebKit/Sources.txt
r260653 r261163 590 590 WebProcess/Network/WebSocketStream.cpp 591 591 592 WebProcess/Network/webrtc/LibWebRTCNetwork.cpp 592 593 WebProcess/Network/webrtc/LibWebRTCProvider.cpp 593 594 WebProcess/Network/webrtc/LibWebRTCResolver.cpp … … 597 598 WebProcess/Network/webrtc/WebRTCMonitor.cpp 598 599 WebProcess/Network/webrtc/WebRTCResolver.cpp 599 WebProcess/Network/webrtc/WebRTCSocket.cpp600 600 601 601 WebProcess/Notifications/NotificationPermissionRequestManager.cpp -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r260888 r261163 1075 1075 51F060E01654317F00F3281B /* WebResourceLoaderMessages.h in Headers */ = {isa = PBXBuildFile; fileRef = 51F060DE1654317500F3281B /* WebResourceLoaderMessages.h */; }; 1076 1076 51F060E11654318500F3281B /* WebResourceLoaderMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51F060DD1654317500F3281B /* WebResourceLoaderMessageReceiver.cpp */; }; 1077 51F060E11654318500F3281C /* WebRTCSocketMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51F060DD1654317500F3281C /* WebRTCSocketMessageReceiver.cpp */; };1077 51F060E11654318500F3281C /* LibWebRTCNetworkMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51F060DD1654317500F3281C /* LibWebRTCNetworkMessageReceiver.cpp */; }; 1078 1078 51F060E11654318500F3281D /* NetworkRTCSocketMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51F060DD1654317500F3281D /* NetworkRTCSocketMessageReceiver.cpp */; }; 1079 1079 51F060E11654318500F3281E /* NetworkRTCMonitorMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51F060DD1654317500F3281E /* NetworkRTCMonitorMessageReceiver.cpp */; }; … … 3430 3430 4158649A23BE092400A0A61E /* RTCEncoderIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCEncoderIdentifier.h; sourceTree = "<group>"; }; 3431 3431 416CD74523FB178B00661D99 /* MDNSRegisterIdentifier.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MDNSRegisterIdentifier.h; path = Network/webrtc/MDNSRegisterIdentifier.h; sourceTree = "<group>"; }; 3432 416F8086245B397400B68F02 /* LibWebRTCNetwork.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = LibWebRTCNetwork.messages.in; path = Network/webrtc/LibWebRTCNetwork.messages.in; sourceTree = "<group>"; }; 3433 416F8089245C7FF500B68F02 /* LibWebRTCNetwork.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LibWebRTCNetwork.cpp; path = Network/webrtc/LibWebRTCNetwork.cpp; sourceTree = "<group>"; }; 3432 3434 4172198923B6128200AE5686 /* LibWebRTCCodecs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LibWebRTCCodecs.h; sourceTree = "<group>"; }; 3433 3435 4172198A23B6128200AE5686 /* LibWebRTCCodecs.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LibWebRTCCodecs.cpp; sourceTree = "<group>"; }; … … 3812 3814 51E949961D761CC700EC9EB9 /* UIGamepadProviderIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = UIGamepadProviderIOS.mm; sourceTree = "<group>"; }; 3813 3815 51F060DD1654317500F3281B /* WebResourceLoaderMessageReceiver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WebResourceLoaderMessageReceiver.cpp; path = DerivedSources/WebKit2/WebResourceLoaderMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; 3814 51F060DD1654317500F3281C /* WebRTCSocketMessageReceiver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = WebRTCSocketMessageReceiver.cpp; path = DerivedSources/WebKit2/WebRTCSocketMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; };3816 51F060DD1654317500F3281C /* LibWebRTCNetworkMessageReceiver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LibWebRTCNetworkMessageReceiver.cpp; path = DerivedSources/WebKit2/LibWebRTCNetworkMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; 3815 3817 51F060DD1654317500F3281D /* NetworkRTCSocketMessageReceiver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkRTCSocketMessageReceiver.cpp; path = DerivedSources/WebKit2/NetworkRTCSocketMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; 3816 3818 51F060DD1654317500F3281E /* NetworkRTCMonitorMessageReceiver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkRTCMonitorMessageReceiver.cpp; path = DerivedSources/WebKit2/NetworkRTCMonitorMessageReceiver.cpp; sourceTree = BUILT_PRODUCTS_DIR; }; … … 7586 7588 isa = PBXGroup; 7587 7589 children = ( 7590 416F8089245C7FF500B68F02 /* LibWebRTCNetwork.cpp */, 7588 7591 411B22621E371244004F7363 /* LibWebRTCNetwork.h */, 7592 416F8086245B397400B68F02 /* LibWebRTCNetwork.messages.in */, 7589 7593 413075A71DE85EE70039EC69 /* LibWebRTCProvider.cpp */, 7590 7594 413075A81DE85EE70039EC69 /* LibWebRTCProvider.h */, … … 9984 9988 2984F57A164B915F004BC0C6 /* LegacyCustomProtocolManagerProxyMessageReceiver.cpp */, 9985 9989 2984F57B164B915F004BC0C6 /* LegacyCustomProtocolManagerProxyMessages.h */, 9990 51F060DD1654317500F3281C /* LibWebRTCNetworkMessageReceiver.cpp */, 9986 9991 07E19EF823D401F00094FFB4 /* MediaPlayerPrivateRemoteMessageReceiver.cpp */, 9987 9992 07E19EF923D401F00094FFB4 /* MediaPlayerPrivateRemoteMessages.h */, … … 10185 10190 51F060DD1654317500F3281F /* WebRTCMonitorMessageReceiver.cpp */, 10186 10191 51F060DD1654317500F3282C /* WebRTCResolverMessageReceiver.cpp */, 10187 51F060DD1654317500F3281C /* WebRTCSocketMessageReceiver.cpp */,10188 10192 41F060DD1654317500F3281C /* WebSocketChannelMessageReceiver.cpp */, 10189 10193 5C0B17761E7C879C00E9123C /* WebSocketStreamMessageReceiver.cpp */, … … 12690 12694 2984F588164BA095004BC0C6 /* LegacyCustomProtocolManagerMessageReceiver.cpp in Sources */, 12691 12695 2984F57C164B915F004BC0C6 /* LegacyCustomProtocolManagerProxyMessageReceiver.cpp in Sources */, 12696 51F060E11654318500F3281C /* LibWebRTCNetworkMessageReceiver.cpp in Sources */, 12692 12697 449D90DA21FDC30B00F677C0 /* LocalAuthenticationSoftLink.mm in Sources */, 12693 12698 2D92A779212B6A6100F493FD /* Logging.cpp in Sources */, … … 13022 13027 51F060E11654318500F3281F /* WebRTCMonitorMessageReceiver.cpp in Sources */, 13023 13028 51F060E11654318500F3282C /* WebRTCResolverMessageReceiver.cpp in Sources */, 13024 51F060E11654318500F3281C /* WebRTCSocketMessageReceiver.cpp in Sources */,13025 13029 41E0A7CB23B645CD00561060 /* WebSocketChannel.cpp in Sources */, 13026 13030 41F060E11654318500F3281C /* WebSocketChannelMessageReceiver.cpp in Sources */, -
trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnection.cpp
r260068 r261163 47 47 #include "WebRTCMonitorMessages.h" 48 48 #include "WebRTCResolverMessages.h" 49 #include "WebRTCSocketMessages.h"50 49 #include "WebResourceLoaderMessages.h" 51 50 #include "WebSWClientConnection.h" … … 78 77 { 79 78 m_connection->open(); 79 WebProcess::singleton().libWebRTCNetwork().setConnection(m_connection.copyRef()); 80 80 } 81 81 … … 113 113 114 114 #if USE(LIBWEBRTC) 115 if (decoder.messageReceiverName() == Messages::WebRTCSocket::messageReceiverName()) {116 auto& network = WebProcess::singleton().libWebRTCNetwork();117 if (network.isActive())118 network.socket(makeObjectIdentifier<LibWebRTCSocketIdentifierType>(decoder.destinationID())).didReceiveMessage(connection, decoder);119 else120 RELEASE_LOG_ERROR(WebRTC, "Received WebRTCSocket message while libWebRTCNetwork is not active");121 return;122 }123 115 if (decoder.messageReceiverName() == Messages::WebRTCMonitor::messageReceiverName()) { 124 116 auto& network = WebProcess::singleton().libWebRTCNetwork(); -
trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetwork.h
r258200 r261163 26 26 #pragma once 27 27 28 #i f USE(LIBWEBRTC)28 #include "Connection.h" 29 29 #include "LibWebRTCProvider.h" 30 30 #include "LibWebRTCSocketFactory.h" 31 #include "WebMDNSRegister.h" 31 32 #include "WebRTCMonitor.h" 32 33 #include "WebRTCResolver.h" 33 #include "WebRTCSocket.h"34 #endif35 36 #include "WebMDNSRegister.h"37 34 #include <WebCore/LibWebRTCSocketIdentifier.h> 38 35 39 36 namespace WebKit { 40 37 41 class LibWebRTCNetwork {38 class LibWebRTCNetwork : public IPC::Connection::ThreadMessageReceiver { 42 39 WTF_MAKE_FAST_ALLOCATED; 43 40 public: 44 41 LibWebRTCNetwork() = default; 42 ~LibWebRTCNetwork(); 45 43 44 void setConnection(RefPtr<IPC::Connection>&&); 46 45 void networkProcessCrashed(); 47 46 … … 49 48 50 49 #if USE(LIBWEBRTC) 50 void didReceiveMessage(IPC::Connection&, IPC::Decoder&); 51 51 52 WebRTCMonitor& monitor() { return m_webNetworkMonitor; } 52 53 LibWebRTCSocketFactory& socketFactory() { return m_socketFactory; } … … 54 55 void disableNonLocalhostConnections() { socketFactory().disableNonLocalhostConnections(); } 55 56 56 WebRTCSocket socket(WebCore::LibWebRTCSocketIdentifier identifier) { return WebRTCSocket(socketFactory(), identifier); }57 57 WebRTCResolver resolver(LibWebRTCResolverIdentifier identifier) { return WebRTCResolver(socketFactory(), identifier); } 58 58 #endif … … 64 64 private: 65 65 #if USE(LIBWEBRTC) 66 void signalReadPacket(WebCore::LibWebRTCSocketIdentifier, const IPC::DataReference&, const RTCNetwork::IPAddress&, uint16_t port, int64_t); 67 void signalSentPacket(WebCore::LibWebRTCSocketIdentifier, int, int64_t); 68 void signalAddressReady(WebCore::LibWebRTCSocketIdentifier, const RTCNetwork::SocketAddress&); 69 void signalConnect(WebCore::LibWebRTCSocketIdentifier); 70 void signalClose(WebCore::LibWebRTCSocketIdentifier, int); 71 void signalNewConnection(WebCore::LibWebRTCSocketIdentifier socketIdentifier, WebCore::LibWebRTCSocketIdentifier newSocketIdentifier, const WebKit::RTCNetwork::SocketAddress&); 72 #endif 73 74 // IPC::Connection::ThreadMessageReceiver 75 void dispatchToThread(Function<void()>&&) final; 76 77 #if USE(LIBWEBRTC) 66 78 LibWebRTCSocketFactory m_socketFactory; 67 79 WebRTCMonitor m_webNetworkMonitor; … … 70 82 WebMDNSRegister m_mdnsRegister; 71 83 #endif 84 RefPtr<IPC::Connection> m_connection; 72 85 }; 73 86 74 inline void LibWebRTCNetwork::networkProcessCrashed()75 {76 #if USE(LIBWEBRTC)77 m_webNetworkMonitor.networkProcessCrashed();78 #endif79 }80 81 inline bool LibWebRTCNetwork::isActive() const82 {83 #if USE(LIBWEBRTC)84 return WebCore::LibWebRTCProvider::hasWebRTCThreads();85 #else86 return false;87 #endif88 }89 90 87 } // namespace WebKit -
trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetwork.messages.in
r261162 r261163 23 23 #if USE(LIBWEBRTC) 24 24 25 messages -> WebRTCSocketNotRefCounted {26 SignalReadPacket( IPC::DataReference data, WebKit::RTCNetwork::IPAddress address, uint16_t port, int64_t timestamp)27 SignalSentPacket( int packetSize, int64_t timestamp)28 SignalAddressReady(Web Kit::RTCNetwork::SocketAddress address)29 SignalConnect( )30 SignalClose( int error)31 SignalNewConnection(WebCore::LibWebRTCSocketIdentifier newSocketIdentifier, WebKit::RTCNetwork::SocketAddress remoteAddress)25 messages -> LibWebRTCNetwork NotRefCounted { 26 SignalReadPacket(WebCore::LibWebRTCSocketIdentifier socketIdentifier, IPC::DataReference data, WebKit::RTCNetwork::IPAddress address, uint16_t port, int64_t timestamp) 27 SignalSentPacket(WebCore::LibWebRTCSocketIdentifier socketIdentifier, int packetSize, int64_t timestamp) 28 SignalAddressReady(WebCore::LibWebRTCSocketIdentifier socketIdentifier, WebKit::RTCNetwork::SocketAddress address) 29 SignalConnect(WebCore::LibWebRTCSocketIdentifier socketIdentifier) 30 SignalClose(WebCore::LibWebRTCSocketIdentifier socketIdentifier, int error) 31 SignalNewConnection(WebCore::LibWebRTCSocketIdentifier socketIdentifier, WebCore::LibWebRTCSocketIdentifier newSocketIdentifier, WebKit::RTCNetwork::SocketAddress remoteAddress) 32 32 } 33 33 -
trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCSocket.cpp
r250726 r261163 82 82 } 83 83 84 void LibWebRTCSocket::signalReadPacket(const WebCore::SharedBuffer& buffer, rtc::SocketAddress&& address, int64_t timestamp)84 void LibWebRTCSocket::signalReadPacket(const uint8_t* data, size_t size, rtc::SocketAddress&& address, int64_t timestamp) 85 85 { 86 86 if (m_isSuspended) … … 88 88 89 89 m_remoteAddress = WTFMove(address); 90 SignalReadPacket(this, buffer.data(), buffer.size(), m_remoteAddress, timestamp);90 SignalReadPacket(this, reinterpret_cast<const char*>(data), size, m_remoteAddress, timestamp); 91 91 } 92 92 -
trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCSocket.h
r252472 r261163 40 40 } 41 41 42 namespace WebCore {43 class SharedBuffer;44 }45 46 42 namespace WebKit { 47 43 … … 70 66 bool willSend(size_t); 71 67 72 friend class WebRTCSocket;73 void signalReadPacket(const WebCore::SharedBuffer&, rtc::SocketAddress&&, int64_t);68 friend class LibWebRTCNetwork; 69 void signalReadPacket(const uint8_t*, size_t, rtc::SocketAddress&&, int64_t); 74 70 void signalSentPacket(int, int64_t); 75 71 void signalAddressReady(const rtc::SocketAddress&); -
trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp
r256185 r261163 33 33 #include "NetworkRTCProviderMessages.h" 34 34 #include "WebProcess.h" 35 #include "WebRTCSocket.h"36 35 #include <wtf/MainThread.h> 37 36
Note: See TracChangeset
for help on using the changeset viewer.