Changeset 237261 in webkit
- Timestamp:
- Oct 18, 2018 11:15:19 AM (6 years ago)
- Location:
- trunk
- Files:
-
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r237259 r237261 1 2018-10-18 Youenn Fablet <youenn@apple.com> 2 3 Handle MDNS resolution of candidates through libwebrtc directly 4 https://bugs.webkit.org/show_bug.cgi?id=190681 5 6 Reviewed by Eric Carlson. 7 8 * TestExpectations: 9 Test should no longer be flaky as we no longer enforce a timer for resolving MDNS candidates. 10 1 11 2018-10-18 Ross Kirsling <ross.kirsling@sony.com> 2 12 -
trunk/LayoutTests/TestExpectations
r237245 r237261 1217 1217 webrtc/simulcast-h264.html [ Slow ] 1218 1218 webrtc/datachannel/multiple-connections.html [ Slow ] 1219 webkit.org/b/187180 webrtc/datachannel/mdns-ice-candidates.html [ Pass Failure ]1220 1219 webkit.org/b/171094 imported/w3c/web-platform-tests/webrtc/rtcpeerconnection/rtcpeerconnection-idl.html [ Failure ] 1221 1220 webkit.org/b/172f21 imported/w3c/web-platform-tests/webrtc/getstats.html [ Failure ] -
trunk/Source/ThirdParty/libwebrtc/ChangeLog
r237227 r237261 1 2018-10-18 Youenn Fablet <youenn@apple.com> 2 3 Handle MDNS resolution of candidates through libwebrtc directly 4 https://bugs.webkit.org/show_bug.cgi?id=190681 5 6 Reviewed by Eric Carlson. 7 8 * Configurations/libwebrtc.iOS.exp: 9 * Configurations/libwebrtc.iOSsim.exp: 10 * Configurations/libwebrtc.mac.exp: 11 1 12 2018-10-17 Youenn Fablet <youenn@apple.com> 2 13 -
trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOS.exp
r237202 r237261 230 230 __ZNK3rtc14SSLCertificate8GetStatsEv 231 231 __ZN3rtc14RTCCertificate7FromPEMERKNS_17RTCCertificatePEME 232 __ZN6webrtc26PeerConnectionDependenciesC1EPNS_22PeerConnectionObserverE 233 __ZN6webrtc30PeerConnectionFactoryInterface20CreatePeerConnectionERKNS_23PeerConnectionInterface16RTCConfigurationENSt3__110unique_ptrIN7cricket13PortAllocatorENS5_14default_deleteIS8_EEEENS6_IN3rtc32RTCCertificateGeneratorInterfaceENS9_ISD_EEEEPNS_22PeerConnectionObserverE -
trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.iOSsim.exp
r237202 r237261 231 231 __ZNK3rtc14SSLCertificate8GetStatsEv 232 232 __ZN3rtc14RTCCertificate7FromPEMERKNS_17RTCCertificatePEME 233 __ZN6webrtc26PeerConnectionDependenciesC1EPNS_22PeerConnectionObserverE 234 __ZN6webrtc30PeerConnectionFactoryInterface20CreatePeerConnectionERKNS_23PeerConnectionInterface16RTCConfigurationENSt3__110unique_ptrIN7cricket13PortAllocatorENS5_14default_deleteIS8_EEEENS6_IN3rtc32RTCCertificateGeneratorInterfaceENS9_ISD_EEEEPNS_22PeerConnectionObserverE -
trunk/Source/ThirdParty/libwebrtc/Configurations/libwebrtc.mac.exp
r237202 r237261 231 231 __ZNK3rtc14SSLCertificate8GetStatsEv 232 232 __ZN3rtc14RTCCertificate7FromPEMERKNS_17RTCCertificatePEME 233 __ZN6webrtc26PeerConnectionDependenciesC1EPNS_22PeerConnectionObserverE 234 __ZN6webrtc30PeerConnectionFactoryInterface20CreatePeerConnectionERKNS_23PeerConnectionInterface16RTCConfigurationENSt3__110unique_ptrIN7cricket13PortAllocatorENS5_14default_deleteIS8_EEEENS6_IN3rtc32RTCCertificateGeneratorInterfaceENS9_ISD_EEEEPNS_22PeerConnectionObserverE -
trunk/Source/WebCore/ChangeLog
r237255 r237261 1 2018-10-18 Youenn Fablet <youenn@apple.com> 2 3 Handle MDNS resolution of candidates through libwebrtc directly 4 https://bugs.webkit.org/show_bug.cgi?id=190681 5 6 Reviewed by Eric Carlson. 7 8 Remove the previous MDNS resolution mechanism. 9 Instead, add support for the AsyncResolver mechanism added to libwebrtc. 10 Covered by current mdns webrtc test that is unflaked. 11 12 * Modules/mediastream/PeerConnectionBackend.cpp: 13 (WebCore::PeerConnectionBackend::addIceCandidate): 14 * platform/mediastream/libwebrtc/LibWebRTCProvider.cpp: 15 (WebCore::LibWebRTCProvider::createPeerConnection): 16 * platform/mediastream/libwebrtc/LibWebRTCProvider.h: 17 * testing/MockLibWebRTCPeerConnection.cpp: 18 (WebCore::MockLibWebRTCPeerConnectionFactory::CreatePeerConnection): 19 * testing/MockLibWebRTCPeerConnection.h: 20 1 21 2018-10-18 Ali Juma <ajuma@chromium.org> 2 22 -
trunk/Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp
r237140 r237261 275 275 276 276 if (!iceCandidate) { 277 if (m_waitingForMDNSResolution) {278 m_finishedReceivingCandidates = true;279 m_endOfIceCandidatePromise = WTFMove(promise);280 return;281 }282 277 endOfIceCandidates(WTFMove(promise)); 283 278 return; 284 }285 286 if (RuntimeEnabledFeatures::sharedFeatures().mdnsICECandidatesEnabled()) {287 auto name = extractIPAddres(iceCandidate->candidate());288 if (name.endsWith(".local")) {289 ++m_waitingForMDNSResolution;290 auto& document = downcast<Document>(*m_peerConnection.scriptExecutionContext());291 auto& provider = document.page()->libWebRTCProvider();292 provider.resolveMDNSName(document.sessionID(), name, [peerConnection = makeRef(m_peerConnection), this, name, iceCandidate = makeRef(*iceCandidate), promise = WTFMove(promise)] (LibWebRTCProvider::IPAddressOrError&& result) mutable {293 if (peerConnection->isStopped())294 return;295 296 --m_waitingForMDNSResolution;297 if (!result.has_value()) {298 if (result.error() != MDNSRegisterError::Timeout)299 peerConnection->scriptExecutionContext()->addConsoleMessage(MessageSource::JS, MessageLevel::Warning, makeString("MDNS resolution of a host candidate failed with error", (unsigned)result.error()));300 return;301 }302 303 auto candidate = iceCandidate->candidate();304 candidate.replace(name, result.value());305 iceCandidate->setCandidate(WTFMove(candidate));306 m_addIceCandidatePromise = WTFMove(promise);307 this->doAddIceCandidate(iceCandidate);308 });309 return;310 }311 279 } 312 280 -
trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.cpp
r237140 r237261 34 34 ALLOW_UNUSED_PARAMETERS_BEGIN 35 35 36 #include <webrtc/api/asyncresolverfactory.h> 36 37 #include <webrtc/api/audio_codecs/builtin_audio_decoder_factory.h> 37 38 #include <webrtc/api/audio_codecs/builtin_audio_encoder_factory.h> … … 245 246 factoryAndThreads.packetSocketFactory->setDisableNonLocalhostConnections(m_disableNonLocalhostConnections); 246 247 247 return createPeerConnection(observer, *factoryAndThreads.networkManager, *factoryAndThreads.packetSocketFactory, WTFMove(configuration) );248 } 249 250 rtc::scoped_refptr<webrtc::PeerConnectionInterface> LibWebRTCProvider::createPeerConnection(webrtc::PeerConnectionObserver& observer, rtc::NetworkManager& networkManager, rtc::PacketSocketFactory& packetSocketFactory, webrtc::PeerConnectionInterface::RTCConfiguration&& configuration )248 return createPeerConnection(observer, *factoryAndThreads.networkManager, *factoryAndThreads.packetSocketFactory, WTFMove(configuration), nullptr); 249 } 250 251 rtc::scoped_refptr<webrtc::PeerConnectionInterface> LibWebRTCProvider::createPeerConnection(webrtc::PeerConnectionObserver& observer, rtc::NetworkManager& networkManager, rtc::PacketSocketFactory& packetSocketFactory, webrtc::PeerConnectionInterface::RTCConfiguration&& configuration, std::unique_ptr<webrtc::AsyncResolverFactory>&& asyncResolveFactory) 251 252 { 252 253 auto& factoryAndThreads = getStaticFactoryAndThreads(m_useNetworkThreadWithSocketServer); … … 264 265 return nullptr; 265 266 266 return m_factory->CreatePeerConnection(configuration, WTFMove(portAllocator), nullptr, &observer); 267 webrtc::PeerConnectionDependencies dependencies { &observer }; 268 dependencies.allocator = WTFMove(portAllocator); 269 dependencies.async_resolver_factory = WTFMove(asyncResolveFactory); 270 271 return m_factory->CreatePeerConnection(configuration, WTFMove(dependencies)); 267 272 } 268 273 -
trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.h
r237140 r237261 52 52 53 53 namespace webrtc { 54 class AsyncResolverFactory; 54 55 class PeerConnectionFactoryInterface; 55 56 } … … 89 90 } 90 91 91 virtual void resolveMDNSName(PAL::SessionID, const String& name, CompletionHandler<void(IPAddressOrError&&)>&& callback)92 {93 UNUSED_PARAM(name);94 callback(makeUnexpected(MDNSRegisterError::NotImplemented));95 }96 97 92 #if USE(LIBWEBRTC) 98 93 virtual rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(webrtc::PeerConnectionObserver&, webrtc::PeerConnectionInterface::RTCConfiguration&&); … … 118 113 LibWebRTCProvider() = default; 119 114 120 rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(webrtc::PeerConnectionObserver&, rtc::NetworkManager&, rtc::PacketSocketFactory&, webrtc::PeerConnectionInterface::RTCConfiguration&& );115 rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(webrtc::PeerConnectionObserver&, rtc::NetworkManager&, rtc::PacketSocketFactory&, webrtc::PeerConnectionInterface::RTCConfiguration&&, std::unique_ptr<webrtc::AsyncResolverFactory>&&); 121 116 122 117 rtc::scoped_refptr<webrtc::PeerConnectionFactoryInterface> createPeerConnectionFactory(rtc::Thread* networkThread, rtc::Thread* signalingThread, LibWebRTCAudioModule*); -
trunk/Source/WebCore/testing/MockLibWebRTCPeerConnection.cpp
r237075 r237261 173 173 } 174 174 175 rtc::scoped_refptr<webrtc::PeerConnectionInterface> MockLibWebRTCPeerConnectionFactory::CreatePeerConnection(const webrtc::PeerConnectionInterface::RTCConfiguration&, std::unique_ptr<cricket::PortAllocator>, std::unique_ptr<rtc::RTCCertificateGeneratorInterface>, webrtc::PeerConnectionObserver* observer)175 rtc::scoped_refptr<webrtc::PeerConnectionInterface> MockLibWebRTCPeerConnectionFactory::CreatePeerConnection(const webrtc::PeerConnectionInterface::RTCConfiguration&, webrtc::PeerConnectionDependencies dependencies) 176 176 { 177 177 if (m_testCase == "ICECandidates") 178 return new rtc::RefCountedObject<MockLibWebRTCPeerConnectionForIceCandidates>(* observer);178 return new rtc::RefCountedObject<MockLibWebRTCPeerConnectionForIceCandidates>(*dependencies.observer); 179 179 180 180 if (m_testCase == "ICEConnectionState") 181 return new rtc::RefCountedObject<MockLibWebRTCPeerConnectionForIceConnectionState>(* observer);181 return new rtc::RefCountedObject<MockLibWebRTCPeerConnectionForIceConnectionState>(*dependencies.observer); 182 182 183 183 if (m_testCase == "LibWebRTCReleasingWhileCreatingOffer") 184 return new rtc::RefCountedObject<MockLibWebRTCPeerConnectionReleasedInNetworkThreadWhileCreatingOffer>(* observer);184 return new rtc::RefCountedObject<MockLibWebRTCPeerConnectionReleasedInNetworkThreadWhileCreatingOffer>(*dependencies.observer); 185 185 186 186 if (m_testCase == "LibWebRTCReleasingWhileGettingStats") 187 return new rtc::RefCountedObject<MockLibWebRTCPeerConnectionReleasedInNetworkThreadWhileGettingStats>(* observer);187 return new rtc::RefCountedObject<MockLibWebRTCPeerConnectionReleasedInNetworkThreadWhileGettingStats>(*dependencies.observer); 188 188 189 189 if (m_testCase == "LibWebRTCReleasingWhileSettingDescription") 190 return new rtc::RefCountedObject<MockLibWebRTCPeerConnectionReleasedInNetworkThreadWhileSettingDescription>(* observer);191 192 return new rtc::RefCountedObject<MockLibWebRTCPeerConnection>(* observer);190 return new rtc::RefCountedObject<MockLibWebRTCPeerConnectionReleasedInNetworkThreadWhileSettingDescription>(*dependencies.observer); 191 192 return new rtc::RefCountedObject<MockLibWebRTCPeerConnection>(*dependencies.observer); 193 193 } 194 194 -
trunk/Source/WebCore/testing/MockLibWebRTCPeerConnection.h
r237075 r237261 242 242 243 243 private: 244 rtc::scoped_refptr<webrtc::PeerConnectionInterface> CreatePeerConnection(const webrtc::PeerConnectionInterface::RTCConfiguration&, std::unique_ptr<cricket::PortAllocator>, std::unique_ptr<rtc::RTCCertificateGeneratorInterface>, webrtc::PeerConnectionObserver*) final;244 rtc::scoped_refptr<webrtc::PeerConnectionInterface> CreatePeerConnection(const webrtc::PeerConnectionInterface::RTCConfiguration&, webrtc::PeerConnectionDependencies) final; 245 245 246 246 rtc::scoped_refptr<webrtc::MediaStreamInterface> CreateLocalMediaStream(const std::string&) final; -
trunk/Source/WebKit/ChangeLog
r237257 r237261 1 2018-10-18 Youenn Fablet <youenn@apple.com> 2 3 Handle MDNS resolution of candidates through libwebrtc directly 4 https://bugs.webkit.org/show_bug.cgi?id=190681 5 6 Reviewed by Eric Carlson. 7 8 Add support for AsyncResolver to resolve MDNS. 9 This basically reuse the code path used to resolve STUN server addresses. 10 Removed MDNS specific resolution. 11 Use existing CFHost resolution mechanism to do the actual resolution. 12 13 * NetworkProcess/webrtc/NetworkMDNSRegister.cpp: 14 (WebKit::NetworkMDNSRegister::registerMDNSName): 15 * NetworkProcess/webrtc/NetworkMDNSRegister.messages.in: 16 * WebProcess/Network/webrtc/LibWebRTCProvider.cpp: 17 (WebKit::LibWebRTCProvider::createPeerConnection): 18 * WebProcess/Network/webrtc/LibWebRTCProvider.h: 19 * WebProcess/Network/webrtc/LibWebRTCSocketFactory.h: 20 * WebProcess/Network/webrtc/WebMDNSRegister.cpp: 21 * WebProcess/Network/webrtc/WebMDNSRegister.h: 22 * WebProcess/Network/webrtc/WebMDNSRegister.messages.in: 23 1 24 2018-10-18 Chris Dumez <cdumez@apple.com> 2 25 -
trunk/Source/WebKit/NetworkProcess/webrtc/NetworkMDNSRegister.cpp
r235101 r237261 157 157 pendingRegistrationRequests().add(pendingRegistrationRequestCount++, WTFMove(pendingRequest)); 158 158 } 159 160 struct PendingResolutionRequest {161 PendingResolutionRequest(Ref<IPC::Connection> connection, uint64_t requestIdentifier, PAL::SessionID sessionID)162 : connection(WTFMove(connection))163 , requestIdentifier(requestIdentifier)164 , timeoutTimer(*this, &PendingResolutionRequest::timeout)165 , sessionID(sessionID)166 {167 timeoutTimer.startOneShot(500_ms);168 }169 170 ~PendingResolutionRequest()171 {172 if (service)173 DNSServiceRefDeallocate(service);174 if (operationService)175 DNSServiceRefDeallocate(operationService);176 }177 178 void timeout()179 {180 connection->send(Messages::WebMDNSRegister::FinishedResolvingMDNSName { requestIdentifier, makeUnexpected(MDNSRegisterError::Timeout) }, 0);181 requestIdentifier = 0;182 }183 184 Ref<IPC::Connection> connection;185 uint64_t requestIdentifier { 0 };186 DNSServiceRef service { nullptr };187 DNSServiceRef operationService { nullptr };188 Timer timeoutTimer;189 PAL::SessionID sessionID;190 };191 192 static void resolveMDNSNameCallback(DNSServiceRef, DNSServiceFlags, uint32_t, DNSServiceErrorType errorCode, const char *hostname, const struct sockaddr *socketAddress, uint32_t ttl, void *context)193 {194 std::unique_ptr<PendingResolutionRequest> request { static_cast<PendingResolutionRequest*>(context) };195 196 if (!request->requestIdentifier)197 return;198 199 if (errorCode) {200 RELEASE_LOG_IF_ALLOWED_IN_CALLBACK(request->sessionID, "resolveMDNSNameCallback MDNS error %d", errorCode);201 request->connection->send(Messages::WebMDNSRegister::FinishedResolvingMDNSName { request->requestIdentifier, makeUnexpected(MDNSRegisterError::DNSSD) }, 0);202 return;203 }204 205 const void* address = socketAddress->sa_family == AF_INET6 ? (const void*) &((const struct sockaddr_in6*)socketAddress)->sin6_addr : (const void*)&((const struct sockaddr_in*)socketAddress)->sin_addr;206 207 char buffer[INET6_ADDRSTRLEN] = { 0 };208 if (!inet_ntop(socketAddress->sa_family, address, buffer, sizeof(buffer))) {209 RELEASE_LOG_IF_ALLOWED_IN_CALLBACK(request->sessionID, "resolveMDNSNameCallback inet_ntop error");210 request->connection->send(Messages::WebMDNSRegister::FinishedResolvingMDNSName { request->requestIdentifier, makeUnexpected(MDNSRegisterError::DNSSD) }, 0);211 return;212 }213 214 request->connection->send(Messages::WebMDNSRegister::FinishedResolvingMDNSName { request->requestIdentifier, String { buffer } }, 0);215 }216 217 void NetworkMDNSRegister::resolveMDNSName(uint64_t requestIdentifier, PAL::SessionID sessionID, const String& name)218 {219 UNUSED_PARAM(sessionID);220 auto pendingRequest = std::make_unique<PendingResolutionRequest>(makeRef(m_connection.connection()), requestIdentifier, sessionID);221 222 if (auto error = DNSServiceCreateConnection(&pendingRequest->service)) {223 RELEASE_LOG_IF_ALLOWED(sessionID, "resolveMDNSName DNSServiceCreateConnection error %d", error);224 m_connection.connection().send(Messages::WebMDNSRegister::FinishedResolvingMDNSName { requestIdentifier, makeUnexpected(MDNSRegisterError::DNSSD) }, 0);225 return;226 }227 228 DNSServiceRef service;229 auto error = DNSServiceGetAddrInfo(&service,230 kDNSServiceFlagsUnique,231 0,232 kDNSServiceProtocol_IPv4,233 name.utf8().data(),234 resolveMDNSNameCallback,235 pendingRequest.get());236 pendingRequest->operationService = service;237 if (error) {238 RELEASE_LOG_IF_ALLOWED(sessionID, "resolveMDNSName DNSServiceGetAddrInfo error %d", error);239 m_connection.connection().send(Messages::WebMDNSRegister::FinishedResolvingMDNSName { requestIdentifier, makeUnexpected(MDNSRegisterError::DNSSD) }, 0);240 return;241 }242 pendingRequest.release();243 244 error = DNSServiceSetDispatchQueue(service, dispatch_get_main_queue());245 if (error) {246 RELEASE_LOG_IF_ALLOWED(sessionID, "resolveMDNSName DNSServiceSetDispatchQueue error %d", error);247 m_connection.connection().send(Messages::WebMDNSRegister::FinishedResolvingMDNSName { requestIdentifier, makeUnexpected(MDNSRegisterError::DNSSD) }, 0);248 }249 }250 159 #else 251 160 void NetworkMDNSRegister::unregisterMDNSNames(WebCore::DocumentIdentifier) … … 259 168 } 260 169 261 void NetworkMDNSRegister::resolveMDNSName(uint64_t requestIdentifier, PAL::SessionID sessionID, const String& name)262 {263 RELEASE_LOG_IF_ALLOWED(sessionID, "resolveMDNSName not implemented");264 m_connection.connection().send(Messages::WebMDNSRegister::FinishedResolvingMDNSName { requestIdentifier, makeUnexpected(MDNSRegisterError::NotImplemented) }, 0);265 }266 267 170 #endif 268 171 -
trunk/Source/WebKit/NetworkProcess/webrtc/NetworkMDNSRegister.messages.in
r230290 r237261 26 26 UnregisterMDNSNames(WebCore::DocumentIdentifier documentIdentifier) 27 27 RegisterMDNSName(uint64_t requestIdentifier, PAL::SessionID sessionID, WebCore::DocumentIdentifier documentIdentifier, String ipAddress) 28 ResolveMDNSName(uint64_t requestIdentifier, PAL::SessionID sessionID, String name)29 28 } 30 29 -
trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCProvider.cpp
r235205 r237261 31 31 #include "LibWebRTCNetwork.h" 32 32 #include "WebProcess.h" 33 #include <webrtc/api/asyncresolverfactory.h> 33 34 #include <webrtc/pc/peerconnectionfactory.h> 34 35 … … 36 37 using namespace WebCore; 37 38 39 class AsyncResolverFactory : public webrtc::AsyncResolverFactory { 40 private: 41 rtc::AsyncResolverInterface* Create() final 42 { 43 return WebProcess::singleton().libWebRTCNetwork().socketFactory().createAsyncResolver(); 44 } 45 }; 46 38 47 rtc::scoped_refptr<webrtc::PeerConnectionInterface> LibWebRTCProvider::createPeerConnection(webrtc::PeerConnectionObserver& observer, webrtc::PeerConnectionInterface::RTCConfiguration&& configuration) 39 48 { 40 return WebCore::LibWebRTCProvider::createPeerConnection(observer, WebProcess::singleton().libWebRTCNetwork().monitor(), WebProcess::singleton().libWebRTCNetwork().socketFactory(), WTFMove(configuration) );49 return WebCore::LibWebRTCProvider::createPeerConnection(observer, WebProcess::singleton().libWebRTCNetwork().monitor(), WebProcess::singleton().libWebRTCNetwork().socketFactory(), WTFMove(configuration), std::make_unique<AsyncResolverFactory>()); 41 50 } 42 51 … … 56 65 } 57 66 58 void LibWebRTCProvider::resolveMDNSName(PAL::SessionID sessionID, const String& name, CompletionHandler<void(IPAddressOrError&&)>&& callback)59 {60 WebProcess::singleton().libWebRTCNetwork().mdnsRegister().resolveMDNSName(sessionID, name, WTFMove(callback));61 }62 63 67 } // namespace WebKit 64 68 -
trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCProvider.h
r234138 r237261 55 55 void unregisterMDNSNames(uint64_t documentIdentifier) final; 56 56 void registerMDNSName(PAL::SessionID, uint64_t documentIdentifier, const String& ipAddress, CompletionHandler<void(MDNSNameOrError&&)>&&) final; 57 void resolveMDNSName(PAL::SessionID, const String& name, CompletionHandler<void(IPAddressOrError&&)>&&) final;58 57 void disableNonLocalhostConnections() final; 59 58 }; -
trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCSocketFactory.h
r232420 r237261 52 52 void disableNonLocalhostConnections() { m_disableNonLocalhostConnections = true; } 53 53 54 rtc::AsyncResolverInterface* createAsyncResolver() { return CreateAsyncResolver(); } 55 54 56 private: 55 57 rtc::AsyncPacketSocket* CreateUdpSocket(const rtc::SocketAddress&, uint16_t minPort, uint16_t maxPort) final; -
trunk/Source/WebKit/WebProcess/Network/webrtc/WebMDNSRegister.cpp
r235205 r237261 53 53 } 54 54 55 void WebMDNSRegister::finishedResolvingMDNSName(uint64_t identifier, LibWebRTCProvider::IPAddressOrError&& result)56 {57 auto callback = m_pendingResolutions.take(identifier);58 if (callback)59 callback(WTFMove(result));60 }61 62 55 void WebMDNSRegister::unregisterMDNSNames(uint64_t documentIdentifier) 63 56 { … … 90 83 } 91 84 92 void WebMDNSRegister::resolveMDNSName(PAL::SessionID sessionID, const String& name, CompletionHandler<void(LibWebRTCProvider::IPAddressOrError&&)>&& callback)93 {94 m_pendingResolutions.add(++m_pendingRequestsIdentifier, WTFMove(callback));95 96 auto& connection = WebProcess::singleton().ensureNetworkProcessConnection().connection();97 if (!connection.send(Messages::NetworkMDNSRegister::ResolveMDNSName { m_pendingRequestsIdentifier, sessionID, name }, 0))98 finishedResolvingMDNSName(m_pendingRequestsIdentifier, makeUnexpected(MDNSRegisterError::Internal));99 }100 101 85 } // namespace WebKit 102 86 -
trunk/Source/WebKit/WebProcess/Network/webrtc/WebMDNSRegister.h
r230290 r237261 47 47 void unregisterMDNSNames(uint64_t documentIdentifier); 48 48 void registerMDNSName(PAL::SessionID, uint64_t documentIdentifier, const String& ipAddress, CompletionHandler<void(WebCore::LibWebRTCProvider::MDNSNameOrError&&)>&&); 49 void resolveMDNSName(PAL::SessionID, const String& name, CompletionHandler<void(WebCore::LibWebRTCProvider::IPAddressOrError&&)>&&);50 49 51 50 void didReceiveMessage(IPC::Connection&, IPC::Decoder&); … … 53 52 private: 54 53 void finishedRegisteringMDNSName(uint64_t, WebCore::LibWebRTCProvider::MDNSNameOrError&&); 55 void finishedResolvingMDNSName(uint64_t, WebCore::LibWebRTCProvider::IPAddressOrError&&);56 54 57 55 struct PendingRegistration { -
trunk/Source/WebKit/WebProcess/Network/webrtc/WebMDNSRegister.messages.in
r230290 r237261 25 25 messages -> WebMDNSRegister { 26 26 void FinishedRegisteringMDNSName(uint64_t identifier, WebCore::LibWebRTCProvider::MDNSNameOrError result) 27 void FinishedResolvingMDNSName(uint64_t identifier, WebCore::LibWebRTCProvider::IPAddressOrError result)28 27 } 29 28
Note: See TracChangeset
for help on using the changeset viewer.