Changeset 230290 in webkit
- Timestamp:
- Apr 4, 2018 7:05:01 PM (6 years ago)
- Location:
- trunk
- Files:
-
- 7 added
- 31 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r230289 r230290 1 2018-04-04 Youenn Fablet <youenn@apple.com> 2 3 WebRTC data channel only applications require capture permissions for direct connections 4 https://bugs.webkit.org/show_bug.cgi?id=174500 5 <rdar://problem/34134281> 6 7 Reviewed by Eric Carlson. 8 9 * webrtc/datachannel/mdns-ice-candidates-expected.txt: Added. 10 * webrtc/datachannel/mdns-ice-candidates.html: Added. 11 1 12 2018-04-04 Ryan Haddad <ryanhaddad@apple.com> 2 13 -
trunk/LayoutTests/platform/mac-wk1/TestExpectations
r230224 r230290 151 151 http/wpt/webrtc [ Skip ] 152 152 webrtc/datachannel [ Pass ] 153 webrtc/datachannel/mdns-ice-candidates.html [ Skip ] 153 154 webrtc/datachannel/bufferedAmountLowThreshold.html [ Pass Failure ] 154 155 webrtc/datachannel/bufferedAmountLowThreshold-default.html [ Pass Failure ] -
trunk/Source/WebCore/ChangeLog
r230286 r230290 1 2018-04-04 Youenn Fablet <youenn@apple.com> 2 3 WebRTC data channel only applications require capture permissions for direct connections 4 https://bugs.webkit.org/show_bug.cgi?id=174500 5 <rdar://problem/34134281> 6 7 Reviewed by Eric Carlson. 8 9 Test: webrtc/datachannel/mdns-ice-candidates.html 10 11 Add support at PeerConnectionBackend to obfuscate any gathered host candidate 12 by replacing the IP address with an opaque name that can be resolved by MDNS. 13 An opaque name is generated for each IP address and is scoped by the document owning the peer connection object. 14 15 Add support to resolve any such MDNS ICE candidate. 16 A limit of 250 ms is fixed for the resolution to happen. 17 After 250 ms, the candidate is discarded. 18 19 Add an experimental flag around this feature, off by default. 20 21 * Modules/mediastream/PeerConnectionBackend.cpp: 22 (WebCore::extractIPAddres): 23 (WebCore::PeerConnectionBackend::addIceCandidate): 24 (WebCore::PeerConnectionBackend::addIceCandidateSucceeded): 25 (WebCore::PeerConnectionBackend::addIceCandidateFailed): 26 (WebCore::PeerConnectionBackend::newICECandidate): 27 (WebCore::PeerConnectionBackend::doneGatheringCandidates): 28 (WebCore::PeerConnectionBackend::registerMDNSName): 29 (WebCore::PeerConnectionBackend::finishedRegisteringMDNSName): 30 * Modules/mediastream/PeerConnectionBackend.h: 31 * Modules/mediastream/RTCIceCandidate.h: 32 (WebCore::RTCIceCandidate::setCandidate): 33 * Modules/mediastream/RTCPeerConnection.h: 34 * dom/Document.cpp: 35 (WebCore::Document::prepareForDestruction): 36 (WebCore::Document::suspend): 37 * page/RuntimeEnabledFeatures.h: 38 (WebCore::RuntimeEnabledFeatures::mdnsICECandidatesEnabled const): 39 (WebCore::RuntimeEnabledFeatures::setMDNSICECandidatesEnabled): 40 * platform/mediastream/libwebrtc/LibWebRTCProvider.h: 41 1 42 2018-04-04 Brian Burg <bburg@apple.com> 2 43 -
trunk/Source/WebCore/Modules/mediastream/PeerConnectionBackend.cpp
r225955 r230290 41 41 #include "RTCPeerConnection.h" 42 42 #include "RTCPeerConnectionIceEvent.h" 43 #include "RuntimeEnabledFeatures.h" 43 44 #include <wtf/text/StringBuilder.h> 45 #include <wtf/text/StringConcatenateNumbers.h> 44 46 45 47 namespace WebCore { … … 255 257 } 256 258 259 static String extractIPAddres(const String& sdp) 260 { 261 ASSERT(sdp.contains(" host ")); 262 unsigned counter = 0; 263 for (auto item : StringView { sdp }.split(' ')) { 264 if (++counter == 5) 265 return item.toString(); 266 } 267 return { }; 268 } 269 257 270 void PeerConnectionBackend::addIceCandidate(RTCIceCandidate* iceCandidate, DOMPromiseDeferred<void>&& promise) 258 271 { … … 260 273 261 274 if (!iceCandidate) { 275 if (m_waitingForMDNSResolution) { 276 m_finishedReceivingCandidates = true; 277 m_endOfIceCandidatePromise = WTFMove(promise); 278 return; 279 } 262 280 endOfIceCandidates(WTFMove(promise)); 263 281 return; 282 } 283 284 if (RuntimeEnabledFeatures::sharedFeatures().mdnsICECandidatesEnabled()) { 285 auto name = extractIPAddres(iceCandidate->candidate()); 286 if (name.endsWith(".local")) { 287 ++m_waitingForMDNSResolution; 288 auto& document = downcast<Document>(*m_peerConnection.scriptExecutionContext()); 289 auto& provider = document.page()->libWebRTCProvider(); 290 provider.resolveMDNSName(document.sessionID(), name, [peerConnection = makeRef(m_peerConnection), this, name, iceCandidate = makeRef(*iceCandidate), promise = WTFMove(promise)] (LibWebRTCProvider::IPAddressOrError&& result) mutable { 291 if (peerConnection->isStopped()) 292 return; 293 294 --m_waitingForMDNSResolution; 295 if (!result.has_value()) { 296 if (result.error() != MDNSRegisterError::Timeout) 297 peerConnection->scriptExecutionContext()->addConsoleMessage(MessageSource::JS, MessageLevel::Warning, makeString("MDNS resolution of a host candidate failed with error", (unsigned)result.error())); 298 return; 299 } 300 301 auto candidate = iceCandidate->candidate(); 302 candidate.replace(name, result.value()); 303 iceCandidate->setCandidate(WTFMove(candidate)); 304 m_addIceCandidatePromise = WTFMove(promise); 305 this->doAddIceCandidate(iceCandidate); 306 }); 307 return; 308 } 264 309 } 265 310 … … 286 331 m_addIceCandidatePromise->resolve(); 287 332 m_addIceCandidatePromise = std::nullopt; 333 334 if (!m_waitingForMDNSResolution && m_finishedReceivingCandidates) 335 endOfIceCandidates(WTFMove(*m_endOfIceCandidatePromise)); 288 336 } 289 337 … … 300 348 m_addIceCandidatePromise->reject(WTFMove(exception)); 301 349 m_addIceCandidatePromise = std::nullopt; 350 351 if (!m_waitingForMDNSResolution && m_finishedReceivingCandidates) 352 endOfIceCandidates(WTFMove(*m_endOfIceCandidatePromise)); 302 353 } 303 354 … … 377 428 { 378 429 ALWAYS_LOG(LOGIDENTIFIER, "Gathered ice candidate:", sdp); 430 m_finishedGatheringCandidates = false; 379 431 380 432 if (!m_shouldFilterICECandidates) { … … 383 435 } 384 436 if (sdp.find(" host ", 0) != notFound) { 385 m_pendingICECandidates.append(PendingICECandidate { WTFMove(sdp), WTFMove(mid), sdpMLineIndex}); 437 // FIXME: We might need to clear all pending candidates when setting again local description. 438 m_pendingICECandidates.append(PendingICECandidate { String { sdp }, WTFMove(mid), sdpMLineIndex}); 439 if (RuntimeEnabledFeatures::sharedFeatures().mdnsICECandidatesEnabled()) { 440 auto ipAddress = extractIPAddres(sdp); 441 // We restrict to IPv4 candidates for now. 442 if (ipAddress.contains('.')) 443 registerMDNSName(ipAddress); 444 } 386 445 return; 387 446 } … … 393 452 ASSERT(isMainThread()); 394 453 ALWAYS_LOG(LOGIDENTIFIER, "Finished ice candidate gathering"); 454 m_finishedGatheringCandidates = true; 455 456 if (m_waitingForMDNSRegistration) 457 return; 395 458 396 459 m_peerConnection.fireEvent(RTCPeerConnectionIceEvent::create(false, false, nullptr)); 397 460 m_peerConnection.updateIceGatheringState(RTCIceGatheringState::Complete); 461 m_pendingICECandidates.clear(); 462 } 463 464 void PeerConnectionBackend::registerMDNSName(const String& ipAddress) 465 { 466 ++m_waitingForMDNSRegistration; 467 auto& document = downcast<Document>(*m_peerConnection.scriptExecutionContext()); 468 auto& provider = document.page()->libWebRTCProvider(); 469 provider.registerMDNSName(document.sessionID(), document.identifier().toUInt64(), ipAddress, [peerConnection = makeRef(m_peerConnection), this, ipAddress] (LibWebRTCProvider::MDNSNameOrError&& result) { 470 if (peerConnection->isStopped()) 471 return; 472 473 --m_waitingForMDNSRegistration; 474 if (!result.has_value()) { 475 m_peerConnection.scriptExecutionContext()->addConsoleMessage(MessageSource::JS, MessageLevel::Warning, makeString("MDNS registration of a host candidate failed with error", (unsigned)result.error())); 476 return; 477 } 478 479 this->finishedRegisteringMDNSName(ipAddress, result.value()); 480 }); 481 } 482 483 void PeerConnectionBackend::finishedRegisteringMDNSName(const String& ipAddress, const String& name) 484 { 485 Vector<PendingICECandidate*> candidates; 486 for (auto& candidate : m_pendingICECandidates) { 487 if (candidate.sdp.find(ipAddress) != notFound) { 488 auto sdp = candidate.sdp; 489 sdp.replace(ipAddress, name); 490 fireICECandidateEvent(RTCIceCandidate::create(String(sdp), String(candidate.mid), candidate.sdpMLineIndex)); 491 candidates.append(&candidate); 492 } 493 } 494 m_pendingICECandidates.removeAllMatching([&] (const auto& candidate) { 495 return candidates.contains(&candidate); 496 }); 497 498 if (!m_waitingForMDNSRegistration && m_finishedGatheringCandidates) 499 doneGatheringCandidates(); 398 500 } 399 501 -
trunk/Source/WebCore/Modules/mediastream/PeerConnectionBackend.h
r229645 r230290 35 35 36 36 #include "JSDOMPromiseDeferred.h" 37 #include "LibWebRTCProvider.h" 37 38 #include "RTCRtpParameters.h" 38 39 #include "RTCSessionDescription.h" … … 128 129 virtual bool isLocalDescriptionSet() const = 0; 129 130 131 void finishedRegisteringMDNSName(const String& ipAddress, const String& name); 132 130 133 protected: 131 134 void fireICECandidateEvent(RefPtr<RTCIceCandidate>&&); … … 160 163 virtual void doStop() = 0; 161 164 165 void registerMDNSName(const String& ipAddress); 166 162 167 protected: 163 168 RTCPeerConnection& m_peerConnection; … … 167 172 std::optional<DOMPromiseDeferred<void>> m_setDescriptionPromise; 168 173 std::optional<DOMPromiseDeferred<void>> m_addIceCandidatePromise; 174 std::optional<DOMPromiseDeferred<void>> m_endOfIceCandidatePromise; 169 175 170 176 bool m_shouldFilterICECandidates { true }; … … 182 188 #endif 183 189 bool m_negotiationNeeded { false }; 190 bool m_finishedGatheringCandidates { false }; 191 uint64_t m_waitingForMDNSRegistration { 0 }; 192 193 bool m_finishedReceivingCandidates { false }; 194 uint64_t m_waitingForMDNSResolution { 0 }; 195 196 HashMap<String, String> m_mdnsMapping; 184 197 }; 185 198 -
trunk/Source/WebCore/Modules/mediastream/RTCIceCandidate.h
r209695 r230290 53 53 std::optional<unsigned short> sdpMLineIndex() const { return m_sdpMLineIndex; } 54 54 55 void setCandidate(String&& candidate) { m_candidate = WTFMove(candidate); } 56 55 57 private: 56 58 RTCIceCandidate(const String& candidate, const String& sdpMid, std::optional<unsigned short> sdpMLineIndex); -
trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h
r225696 r230290 108 108 109 109 bool isClosed() const { return m_connectionState == RTCPeerConnectionState::Closed; } 110 bool isStopped() const { return m_isStopped; } 110 111 111 112 // 5.1 RTCPeerConnection extensions -
trunk/Source/WebCore/dom/Document.cpp
r230226 r230290 115 115 #include "KeyframeEffectReadOnly.h" 116 116 #include "LayoutDisallowedScope.h" 117 #include "LibWebRTCProvider.h" 117 118 #include "LoaderStrategy.h" 118 119 #include "Logging.h" … … 2350 2351 m_frame->animation().detachFromDocument(this); 2351 2352 2353 #if USE(LIBWEBRTC) 2354 if (auto* page = this->page()) 2355 page->libWebRTCProvider().unregisterMDNSNames(identifier().toUInt64()); 2356 #endif 2357 2352 2358 #if ENABLE(SERVICE_WORKER) 2353 2359 setActiveServiceWorker(nullptr); … … 4878 4884 } 4879 4885 4886 #if USE(LIBWEBRTC) 4887 if (auto* page = this->page()) 4888 page->libWebRTCProvider().unregisterMDNSNames(identifier().toUInt64()); 4889 #endif 4890 4880 4891 #if ENABLE(SERVICE_WORKER) 4881 4892 if (RuntimeEnabledFeatures::sharedFeatures().serviceWorkerEnabled() && reason == ActiveDOMObject::ReasonForSuspension::PageCache) { -
trunk/Source/WebCore/page/RuntimeEnabledFeatures.h
r230224 r230290 121 121 bool webRTCLegacyAPIEnabled() const { return m_webRTCLegacyAPIEnabled; } 122 122 void setWebRTCLegacyAPIEnabled(bool isEnabled) { m_webRTCLegacyAPIEnabled = isEnabled; } 123 bool mdnsICECandidatesEnabled() const { return m_mdnsICECandidatesEnabled; } 124 void setMDNSICECandidatesEnabled(bool isEnabled) { m_mdnsICECandidatesEnabled = isEnabled; } 123 125 #endif 124 126 … … 291 293 bool m_isPeerConnectionEnabled { true }; 292 294 bool m_webRTCLegacyAPIEnabled { false }; 295 bool m_mdnsICECandidatesEnabled { false }; 293 296 #endif 294 297 -
trunk/Source/WebCore/platform/mediastream/libwebrtc/LibWebRTCProvider.h
r229378 r230290 27 27 28 28 #include "LibWebRTCMacros.h" 29 #include <wtf/Forward.h> 29 #include <pal/SessionID.h> 30 #include <wtf/CompletionHandler.h> 31 #include <wtf/EnumTraits.h> 32 #include <wtf/Expected.h> 30 33 #include <wtf/UniqueRef.h> 34 #include <wtf/text/WTFString.h> 31 35 32 36 #if USE(LIBWEBRTC) … … 54 58 class LibWebRTCAudioModule; 55 59 60 enum class MDNSRegisterError { NotImplemented, BadParameter, DNSSD, Internal, Timeout }; 61 56 62 class WEBCORE_EXPORT LibWebRTCProvider { 57 63 public: … … 65 71 66 72 virtual void setH264HardwareEncoderAllowed(bool) { } 73 74 using IPAddressOrError = Expected<String, MDNSRegisterError>; 75 using MDNSNameOrError = Expected<String, MDNSRegisterError>; 76 77 virtual void unregisterMDNSNames(uint64_t documentIdentifier) 78 { 79 UNUSED_PARAM(documentIdentifier); 80 } 81 82 virtual void registerMDNSName(PAL::SessionID, uint64_t documentIdentifier, const String& ipAddress, CompletionHandler<void(MDNSNameOrError&&)>&& callback) 83 { 84 UNUSED_PARAM(documentIdentifier); 85 UNUSED_PARAM(ipAddress); 86 callback(makeUnexpected(MDNSRegisterError::NotImplemented)); 87 } 88 89 virtual void resolveMDNSName(PAL::SessionID, const String& name, CompletionHandler<void(IPAddressOrError&&)>&& callback) 90 { 91 UNUSED_PARAM(name); 92 callback(makeUnexpected(MDNSRegisterError::NotImplemented)); 93 } 67 94 68 95 #if USE(LIBWEBRTC) … … 99 126 100 127 } // namespace WebCore 128 129 namespace WTF { 130 template<> struct EnumTraits<WebCore::MDNSRegisterError> { 131 using values = EnumValues< 132 WebCore::MDNSRegisterError, 133 WebCore::MDNSRegisterError::NotImplemented, 134 WebCore::MDNSRegisterError::BadParameter, 135 WebCore::MDNSRegisterError::DNSSD, 136 WebCore::MDNSRegisterError::Internal, 137 WebCore::MDNSRegisterError::Timeout 138 >; 139 }; 140 } -
trunk/Source/WebKit/CMakeLists.txt
r230223 r230290 147 147 NetworkProcess/capture/NetworkDataTaskReplay.cpp 148 148 149 NetworkProcess/webrtc/NetworkMDNSRegister.cpp 150 149 151 Platform/Logging.cpp 150 152 Platform/Module.cpp … … 534 536 WebProcess/Network/webrtc/LibWebRTCSocket.cpp 535 537 WebProcess/Network/webrtc/LibWebRTCSocketFactory.cpp 538 WebProcess/Network/webrtc/WebMDNSRegister.cpp 536 539 WebProcess/Network/webrtc/WebRTCMonitor.cpp 537 540 WebProcess/Network/webrtc/WebRTCResolver.cpp … … 628 631 NetworkProcess/cache/CacheStorageEngineConnection.messages.in 629 632 633 NetworkProcess/webrtc/NetworkMDNSRegister.messages.in 630 634 NetworkProcess/webrtc/NetworkRTCMonitor.messages.in 631 635 NetworkProcess/webrtc/NetworkRTCProvider.messages.in … … 690 694 WebProcess/Geolocation/WebGeolocationManager.messages.in 691 695 696 WebProcess/Network/webrtc/WebMDNSRegister.messages.in 692 697 WebProcess/Network/webrtc/WebRTCMonitor.messages.in 693 698 WebProcess/Network/webrtc/WebRTCResolver.messages.in -
trunk/Source/WebKit/ChangeLog
r230283 r230290 1 2018-04-04 Youenn Fablet <youenn@apple.com> 2 3 WebRTC data channel only applications require capture permissions for direct connections 4 https://bugs.webkit.org/show_bug.cgi?id=174500 5 <rdar://problem/34134281> 6 7 Reviewed by Eric Carlson. 8 9 Add support for MDNS registration and resolution by NetworkProcess. 10 WebProcess gives instruction to do the actual registrations/resolutions. 11 12 * CMakeLists.txt: 13 * DerivedSources.make: 14 * NetworkProcess/NetworkConnectionToWebProcess.cpp: 15 (WebKit::NetworkConnectionToWebProcess::NetworkConnectionToWebProcess): 16 (WebKit::NetworkConnectionToWebProcess::didReceiveMessage): 17 * NetworkProcess/NetworkConnectionToWebProcess.h: 18 (WebKit::NetworkConnectionToWebProcess::mdnsRegister): 19 * NetworkProcess/webrtc/NetworkMDNSRegister.cpp: Added. 20 (WebKit::NetworkMDNSRegister::NetworkMDNSRegister): 21 (WebKit::NetworkMDNSRegister::~NetworkMDNSRegister): 22 (WebKit::NetworkMDNSRegister::unregisterMDNSNames): 23 (WebKit::PendingRegistrationRequest::PendingRegistrationRequest): 24 (WebKit::registerMDNSNameCallback): 25 (WebKit::NetworkMDNSRegister::registerMDNSName): 26 (WebKit::PendingResolutionRequest::PendingResolutionRequest): 27 (WebKit::PendingResolutionRequest::~PendingResolutionRequest): 28 (WebKit::PendingResolutionRequest::timeout): 29 (WebKit::resolveMDNSNameCallback): 30 (WebKit::NetworkMDNSRegister::resolveMDNSName): 31 * NetworkProcess/webrtc/NetworkMDNSRegister.h: Added. 32 * NetworkProcess/webrtc/NetworkMDNSRegister.messages.in: Added. 33 * Shared/WebPreferences.yaml: 34 * UIProcess/API/C/WKPreferences.cpp: 35 (WKPreferencesSetWebRTCMDNSICECandidatesEnabled): 36 (WKPreferencesGetWebRTCMDNSICECandidatesEnabled): 37 * UIProcess/API/C/WKPreferencesRef.h: 38 * WebKit.xcodeproj/project.pbxproj: 39 * WebProcess/InjectedBundle/InjectedBundle.cpp: 40 (WebKit::InjectedBundle::overrideBoolPreferenceForTestRunner): 41 * WebProcess/Network/NetworkProcessConnection.cpp: 42 (WebKit::NetworkProcessConnection::didReceiveMessage): 43 * WebProcess/Network/webrtc/LibWebRTCNetwork.h: 44 (WebKit::LibWebRTCNetwork::mdnsRegister): 45 * WebProcess/Network/webrtc/LibWebRTCProvider.cpp: 46 (WebKit::LibWebRTCProvider::unregisterMDNSNames): 47 (WebKit::LibWebRTCProvider::registerMDNSName): 48 (WebKit::LibWebRTCProvider::resolveMDNSName): 49 * WebProcess/Network/webrtc/LibWebRTCProvider.h: 50 * WebProcess/Network/webrtc/WebMDNSRegister.cpp: Added. 51 (WebKit::WebMDNSRegister::finishedRegisteringMDNSName): 52 (WebKit::WebMDNSRegister::finishedResolvingMDNSName): 53 (WebKit::WebMDNSRegister::unregisterMDNSNames): 54 (WebKit::WebMDNSRegister::registerMDNSName): 55 (WebKit::WebMDNSRegister::resolveMDNSName): 56 * WebProcess/Network/webrtc/WebMDNSRegister.h: Added. 57 * WebProcess/Network/webrtc/WebMDNSRegister.messages.in: Added. 58 1 59 2018-04-04 Alex Christensen <achristensen@webkit.org> 2 60 -
trunk/Source/WebKit/DerivedSources.make
r230223 r230290 108 108 NPObjectMessageReceiver \ 109 109 NetworkConnectionToWebProcess \ 110 NetworkMDNSRegister\ 110 111 NetworkProcess \ 111 112 NetworkProcessConnection \ … … 161 162 WebInspectorProxy \ 162 163 WebInspectorUI \ 164 WebMDNSRegister\ 163 165 WebNotificationManager \ 164 166 WebPage \ -
trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.cpp
r230283 r230290 34 34 #include "NetworkConnectionToWebProcessMessages.h" 35 35 #include "NetworkLoad.h" 36 #include "NetworkMDNSRegisterMessages.h" 36 37 #include "NetworkProcess.h" 37 38 #include "NetworkProcessConnectionMessages.h" … … 68 69 NetworkConnectionToWebProcess::NetworkConnectionToWebProcess(IPC::Connection::Identifier connectionIdentifier) 69 70 : m_connection(IPC::Connection::createServerConnection(connectionIdentifier, *this)) 71 #if ENABLE(WEB_RTC) 72 , m_mdnsRegister(*this) 73 #endif 70 74 { 71 75 m_connection->open(); … … 126 130 } 127 131 #endif 132 #if ENABLE(WEB_RTC) 133 if (decoder.messageReceiverName() == Messages::NetworkMDNSRegister::messageReceiverName()) { 134 mdnsRegister().didReceiveMessage(connection, decoder); 135 return; 136 } 137 #endif 128 138 129 139 if (decoder.messageReceiverName() == Messages::CacheStorageEngineConnection::messageReceiverName()) { -
trunk/Source/WebKit/NetworkProcess/NetworkConnectionToWebProcess.h
r230283 r230290 31 31 #include "DownloadID.h" 32 32 #include "NetworkConnectionToWebProcessMessages.h" 33 #include "NetworkMDNSRegister.h" 33 34 #include "NetworkRTCProvider.h" 34 35 35 #include <WebCore/ResourceLoadPriority.h> 36 36 #include <wtf/RefCounted.h> … … 132 132 NetworkRTCProvider& rtcProvider(); 133 133 #endif 134 #if ENABLE(WEB_RTC) 135 NetworkMDNSRegister& mdnsRegister() { return m_mdnsRegister; } 136 #endif 134 137 135 138 CacheStorageEngineConnection& cacheStorageConnection(); … … 147 150 RefPtr<NetworkRTCProvider> m_rtcProvider; 148 151 #endif 152 #if ENABLE(WEB_RTC) 153 NetworkMDNSRegister m_mdnsRegister; 154 #endif 149 155 150 156 bool m_captureExtraNetworkLoadMetricsEnabled { false }; -
trunk/Source/WebKit/NetworkProcess/webrtc/NetworkMDNSRegister.h
r230289 r230290 1 1 /* 2 * Copyright (C) 201 7Apple Inc. All rights reserved.2 * Copyright (C) 2018 Apple Inc. All rights reserved. 3 3 * 4 4 * Redistribution and use in source and binary forms, with or without … … 26 26 #pragma once 27 27 28 #if PLATFORM(COCOA) 29 #include <WebCore/LibWebRTCProviderCocoa.h> 28 #if ENABLE(WEB_RTC) 29 30 #include "RTCNetwork.h" 31 #include <WebCore/DocumentIdentifier.h> 32 #include <wtf/Expected.h> 33 #include <wtf/Forward.h> 34 #include <wtf/HashMap.h> 35 36 #if defined __has_include && __has_include(<dns_sd.h>) 37 #define ENABLE_MDNS 1 30 38 #else 31 # include <WebCore/LibWebRTCProvider.h>39 #define ENABLE_MDNS 0 32 40 #endif 41 42 #if ENABLE_MDNS 43 #include <dns_sd.h> 44 #endif 45 46 namespace IPC { 47 class Connection; 48 class Decoder; 49 } 50 51 namespace PAL { 52 class SessionID; 53 } 33 54 34 55 namespace WebKit { 35 56 36 #if USE(LIBWEBRTC) 57 class NetworkConnectionToWebProcess; 37 58 38 #if PLATFORM(COCOA) 39 using LibWebRTCProviderBase = WebCore::LibWebRTCProviderCocoa; 40 #else 41 using LibWebRTCProviderBase = WebCore::LibWebRTCProvider; 42 #endif 59 class NetworkMDNSRegister { 60 public: 61 NetworkMDNSRegister(NetworkConnectionToWebProcess&); 62 ~NetworkMDNSRegister(); 43 63 44 class LibWebRTCProvider final : public LibWebRTCProviderBase { 45 public: 46 LibWebRTCProvider() { m_useNetworkThreadWithSocketServer = false; } 64 void didReceiveMessage(IPC::Connection&, IPC::Decoder&); 47 65 48 66 private: 49 rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(webrtc::PeerConnectionObserver&, webrtc::PeerConnectionInterface::RTCConfiguration&&) final; 67 void unregisterMDNSNames(WebCore::DocumentIdentifier); 68 void registerMDNSName(uint64_t requestIdentifier, PAL::SessionID, WebCore::DocumentIdentifier, const String& ipAddress); 69 void resolveMDNSName(uint64_t requestIdentifier, PAL::SessionID, const String& name); 70 71 NetworkConnectionToWebProcess& m_connection; 72 #if ENABLE_MDNS 73 HashMap<WebCore::DocumentIdentifier, DNSServiceRef> m_services; 74 75 uint64_t m_registrationCount { 0 }; 76 #endif 50 77 }; 51 #else52 using LibWebRTCProvider = WebCore::LibWebRTCProvider;53 #endif // USE(LIBWEBRTC)54 78 55 79 } // namespace WebKit 80 81 #endif // ENABLE(WEB_RTC) -
trunk/Source/WebKit/Shared/WebPreferences.yaml
r230224 r230290 1115 1115 condition: ENABLE(WEB_RTC) 1116 1116 1117 MDNSICECandidatesEnabled: 1118 type: bool 1119 defaultValue: false 1120 humanReadableName: "Enable MDNS ICE candidates" 1121 humanReadableDescription: "Enable MDNS ICE candidates" 1122 webcoreBinding: RuntimeEnabledFeatures 1123 category: experimental 1124 condition: ENABLE(WEB_RTC) 1125 1117 1126 IsSecureContextAttributeEnabled: 1118 1127 type: bool -
trunk/Source/WebKit/UIProcess/API/C/WKPreferences.cpp
r230224 r230290 1415 1415 } 1416 1416 1417 void WKPreferencesSetWebRTCMDNSICECandidatesEnabled(WKPreferencesRef preferencesRef, bool enabled) 1418 { 1419 toImpl(preferencesRef)->setMDNSICECandidatesEnabled(enabled); 1420 } 1421 1422 bool WKPreferencesGetWebRTCMDNSICECandidatesEnabled(WKPreferencesRef preferencesRef) 1423 { 1424 return toImpl(preferencesRef)->mDNSICECandidatesEnabled(); 1425 } 1426 1417 1427 void WKPreferencesSetSpatialNavigationEnabled(WKPreferencesRef preferencesRef, bool enabled) 1418 1428 { -
trunk/Source/WebKit/UIProcess/API/C/WKPreferencesRef.h
r230224 r230290 269 269 WK_EXPORT bool WKPreferencesGetWebRTCLegacyAPIEnabled(WKPreferencesRef preferencesRef); 270 270 271 // Defaults to false 272 WK_EXPORT void WKPreferencesSetWebRTCMDNSICECandidatesEnabled(WKPreferencesRef preferencesRef, bool enabled); 273 WK_EXPORT bool WKPreferencesGetWebRTCMDNSICECandidatesEnabled(WKPreferencesRef preferencesRef); 274 271 275 // Defaults to false. 272 276 WK_EXPORT void WKPreferencesSetSpatialNavigationEnabled(WKPreferencesRef preferencesRef, bool enabled); -
trunk/Source/WebKit/WebKit.xcodeproj/project.pbxproj
r230261 r230290 951 951 41DC459F1E3DBDA500B11F51 /* WebRTCSocket.h in Headers */ = {isa = PBXBuildFile; fileRef = 41FAF5F31E3BFE7F001AE678 /* WebRTCSocket.h */; }; 952 952 41DC45A11E3DC53F00B11F51 /* WebRTCResolver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41DC45A01E3DC53C00B11F51 /* WebRTCResolver.cpp */; }; 953 41F12A9E2069BB4400FF26E8 /* WebMDNSRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41B7ED6E20681DCF0087D853 /* WebMDNSRegister.cpp */; }; 954 41F12A9F2069BB4C00FF26E8 /* NetworkMDNSRegister.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 41B7ED6F206965900087D853 /* NetworkMDNSRegister.cpp */; }; 953 955 41FABD2A1F4DE001006A6C97 /* CacheStorageEngineCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 41FABD281F4DDFDC006A6C97 /* CacheStorageEngineCache.h */; }; 954 956 41FAF5F51E3C0649001AE678 /* WebRTCResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = 41FAF5F41E3C0641001AE678 /* WebRTCResolver.h */; }; … … 1174 1176 51F060E11654318500F3282C /* WebRTCResolverMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51F060DD1654317500F3282C /* WebRTCResolverMessageReceiver.cpp */; }; 1175 1177 51F060E11654318500F3282E /* NetworkRTCProviderMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51F060DD1654317500F3282E /* NetworkRTCProviderMessageReceiver.cpp */; }; 1178 51F060E11654318500F3282F /* WebMDNSRegisterMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51F060DD1654317500F3282F /* WebMDNSRegisterMessageReceiver.cpp */; }; 1179 51F060E11654318500F3283F /* NetworkMDNSRegisterMessageReceiver.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51F060DD1654317500F3283F /* NetworkMDNSRegisterMessageReceiver.cpp */; }; 1176 1180 51F7DC41180CC93600212CA3 /* XPCServiceMain.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC82839616B47EC400A278FE /* XPCServiceMain.mm */; }; 1177 1181 51F7DC43180CC93600212CA3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC3DE46815A91763008D26FC /* Foundation.framework */; }; … … 3323 3327 41B28B081F83AD3E00FB52AC /* RTCPacketOptions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RTCPacketOptions.h; sourceTree = "<group>"; }; 3324 3328 41B28B091F83AD3E00FB52AC /* RTCPacketOptions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RTCPacketOptions.cpp; sourceTree = "<group>"; }; 3329 41B7ED6C20681DCE0087D853 /* WebMDNSRegister.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebMDNSRegister.h; path = Network/webrtc/WebMDNSRegister.h; sourceTree = "<group>"; }; 3330 41B7ED6D20681DCF0087D853 /* WebMDNSRegister.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = WebMDNSRegister.messages.in; path = Network/webrtc/WebMDNSRegister.messages.in; sourceTree = "<group>"; }; 3331 41B7ED6E20681DCF0087D853 /* WebMDNSRegister.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebMDNSRegister.cpp; path = Network/webrtc/WebMDNSRegister.cpp; sourceTree = "<group>"; }; 3332 41B7ED6F206965900087D853 /* NetworkMDNSRegister.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NetworkMDNSRegister.cpp; path = NetworkProcess/webrtc/NetworkMDNSRegister.cpp; sourceTree = "<group>"; }; 3333 41B7ED70206965900087D853 /* NetworkMDNSRegister.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = NetworkMDNSRegister.h; path = NetworkProcess/webrtc/NetworkMDNSRegister.h; sourceTree = "<group>"; }; 3334 41B7ED71206965900087D853 /* NetworkMDNSRegister.messages.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = NetworkMDNSRegister.messages.in; path = NetworkProcess/webrtc/NetworkMDNSRegister.messages.in; sourceTree = "<group>"; }; 3325 3335 41C858191F510DEE0065E085 /* CacheStorageEngineCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CacheStorageEngineCache.cpp; sourceTree = "<group>"; }; 3326 3336 41D129D91F3D101400D15E47 /* WebCacheStorageProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebCacheStorageProvider.h; sourceTree = "<group>"; }; … … 3600 3610 51F060DD1654317500F3282C /* WebRTCResolverMessageReceiver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebRTCResolverMessageReceiver.cpp; sourceTree = "<group>"; }; 3601 3611 51F060DD1654317500F3282E /* NetworkRTCProviderMessageReceiver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkRTCProviderMessageReceiver.cpp; sourceTree = "<group>"; }; 3612 51F060DD1654317500F3282F /* WebMDNSRegisterMessageReceiver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = WebMDNSRegisterMessageReceiver.cpp; sourceTree = "<group>"; }; 3613 51F060DD1654317500F3283F /* NetworkMDNSRegisterMessageReceiver.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = NetworkMDNSRegisterMessageReceiver.cpp; sourceTree = "<group>"; }; 3602 3614 51F060DE1654317500F3281B /* WebResourceLoaderMessages.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebResourceLoaderMessages.h; sourceTree = "<group>"; }; 3603 3615 51F7DC4A180CC93600212CA3 /* com.apple.WebKit.Storage.xpc */ = {isa = PBXFileReference; explicitFileType = "wrapper.xpc-service"; includeInIndex = 0; path = com.apple.WebKit.Storage.xpc; sourceTree = BUILT_PRODUCTS_DIR; }; … … 6247 6259 41DC45991E3DBB2400B11F51 /* LibWebRTCSocketClient.cpp */, 6248 6260 41DC459A1E3DBB2400B11F51 /* LibWebRTCSocketClient.h */, 6261 41B7ED6F206965900087D853 /* NetworkMDNSRegister.cpp */, 6262 41B7ED70206965900087D853 /* NetworkMDNSRegister.h */, 6263 41B7ED71206965900087D853 /* NetworkMDNSRegister.messages.in */, 6249 6264 4130759A1DE84FB00039EC69 /* NetworkRTCMonitor.cpp */, 6250 6265 4130759B1DE84FB00039EC69 /* NetworkRTCMonitor.h */, … … 6276 6291 413075A51DE85EE70039EC69 /* LibWebRTCSocketFactory.cpp */, 6277 6292 413075A61DE85EE70039EC69 /* LibWebRTCSocketFactory.h */, 6293 41B7ED6E20681DCF0087D853 /* WebMDNSRegister.cpp */, 6294 41B7ED6C20681DCE0087D853 /* WebMDNSRegister.h */, 6295 41B7ED6D20681DCF0087D853 /* WebMDNSRegister.messages.in */, 6278 6296 413075A21DE85EE70039EC69 /* WebRTCMonitor.cpp */, 6279 6297 413075A31DE85EE70039EC69 /* WebRTCMonitor.h */, … … 8249 8267 51DD9F2716367DA2001578E9 /* NetworkConnectionToWebProcessMessages.h */, 8250 8268 52F060DD1654317500F3281B /* NetworkContentRuleListManagerMessageReceiver.cpp */, 8269 51F060DD1654317500F3283F /* NetworkMDNSRegisterMessageReceiver.cpp */, 8251 8270 517CF0E1163A486C00C2950E /* NetworkProcessConnectionMessageReceiver.cpp */, 8252 8271 517CF0E2163A486C00C2950E /* NetworkProcessConnectionMessages.h */, … … 8358 8377 1CBBE49E19B66C53006B7D81 /* WebInspectorUIMessageReceiver.cpp */, 8359 8378 1CBBE49F19B66C53006B7D81 /* WebInspectorUIMessages.h */, 8379 51F060DD1654317500F3282F /* WebMDNSRegisterMessageReceiver.cpp */, 8360 8380 31BA9248148830810062EDB5 /* WebNotificationManagerMessageReceiver.cpp */, 8361 8381 31BA9249148830810062EDB5 /* WebNotificationManagerMessages.h */, … … 10667 10687 839902021BE9A02B000F3653 /* NetworkLoad.cpp in Sources */, 10668 10688 4103FBA52061C8FE00C2EAF8 /* NetworkLoadChecker.cpp in Sources */, 10689 41F12A9F2069BB4C00FF26E8 /* NetworkMDNSRegister.cpp in Sources */, 10690 51F060E11654318500F3283F /* NetworkMDNSRegisterMessageReceiver.cpp in Sources */, 10669 10691 51795568162876CF00FA43B6 /* NetworkProcess.cpp in Sources */, 10670 10692 7EC4F0FB18E4ACBB008056AF /* NetworkProcessCocoa.mm in Sources */, … … 11017 11039 465250E61ECF52DC002025CB /* WebKit2InitializeCocoa.mm in Sources */, 11018 11040 51FB08FF1639DE1A00EC324A /* WebLoaderStrategy.cpp in Sources */, 11041 41F12A9E2069BB4400FF26E8 /* WebMDNSRegister.cpp in Sources */, 11042 51F060E11654318500F3282F /* WebMDNSRegisterMessageReceiver.cpp in Sources */, 11019 11043 CD003A5219D49B5D005ABCE0 /* WebMediaKeyStorageManager.cpp in Sources */, 11020 11044 C98C48A51B6FD4C300145103 /* WebMediaSessionFocusManager.cpp in Sources */, -
trunk/Source/WebKit/WebProcess/InjectedBundle/InjectedBundle.cpp
r230211 r230290 239 239 if (preference == "WebKitWebRTCLegacyAPIEnabled") 240 240 RuntimeEnabledFeatures::sharedFeatures().setWebRTCLegacyAPIEnabled(enabled); 241 if (preference == "WebKitMDNSICECandidatesEnabled") 242 RuntimeEnabledFeatures::sharedFeatures().setMDNSICECandidatesEnabled(enabled); 241 243 #endif 242 244 -
trunk/Source/WebKit/WebProcess/Network/NetworkProcessConnection.cpp
r230007 r230290 35 35 #include "WebCoreArgumentCoders.h" 36 36 #include "WebLoaderStrategy.h" 37 #include "WebMDNSRegisterMessages.h" 37 38 #include "WebProcess.h" 38 39 #include "WebRTCMonitor.h" … … 87 88 if (decoder.messageReceiverName() == Messages::WebRTCResolver::messageReceiverName()) { 88 89 WebProcess::singleton().libWebRTCNetwork().resolver(decoder.destinationID()).didReceiveMessage(connection, decoder); 90 return; 91 } 92 #endif 93 #if ENABLE(WEB_RTC) 94 if (decoder.messageReceiverName() == Messages::WebMDNSRegister::messageReceiverName()) { 95 WebProcess::singleton().libWebRTCNetwork().mdnsRegister().didReceiveMessage(connection, decoder); 89 96 return; 90 97 } -
trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCNetwork.h
r211441 r230290 27 27 28 28 #if USE(LIBWEBRTC) 29 30 29 #include "LibWebRTCSocketFactory.h" 31 30 #include "WebRTCMonitor.h" 32 31 #include "WebRTCResolver.h" 33 32 #include "WebRTCSocket.h" 33 #endif 34 35 #include "WebMDNSRegister.h" 34 36 35 37 namespace WebKit { … … 39 41 LibWebRTCNetwork() = default; 40 42 43 #if USE(LIBWEBRTC) 41 44 WebRTCMonitor& monitor() { return m_webNetworkMonitor; } 42 45 LibWebRTCSocketFactory& socketFactory() { return m_socketFactory; } … … 44 47 WebRTCSocket socket(uint64_t identifier) { return WebRTCSocket(socketFactory(), identifier); } 45 48 WebRTCResolver resolver(uint64_t identifier) { return WebRTCResolver(socketFactory(), identifier); } 49 #endif 50 51 #if ENABLE(WEB_RTC) 52 WebMDNSRegister& mdnsRegister() { return m_mdnsRegister; } 53 #endif 46 54 47 55 private: 56 #if USE(LIBWEBRTC) 48 57 LibWebRTCSocketFactory m_socketFactory; 49 58 WebRTCMonitor m_webNetworkMonitor; 59 #endif 60 #if ENABLE(WEB_RTC) 61 WebMDNSRegister m_mdnsRegister; 62 #endif 50 63 }; 51 64 52 65 } // namespace WebKit 53 54 #endif // USE(LIBWEBRTC) -
trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCProvider.cpp
r218994 r230290 33 33 #include <webrtc/pc/peerconnectionfactory.h> 34 34 35 using namespace WebCore; 36 35 37 namespace WebKit { 36 38 … … 40 42 } 41 43 44 void LibWebRTCProvider::unregisterMDNSNames(uint64_t documentIdentifier) 45 { 46 WebProcess::singleton().libWebRTCNetwork().mdnsRegister().unregisterMDNSNames(documentIdentifier); 47 } 48 49 void LibWebRTCProvider::registerMDNSName(PAL::SessionID sessionID, uint64_t documentIdentifier, const String& ipAddress, CompletionHandler<void(MDNSNameOrError&&)>&& callback) 50 { 51 WebProcess::singleton().libWebRTCNetwork().mdnsRegister().registerMDNSName(sessionID, documentIdentifier, ipAddress, WTFMove(callback)); 52 } 53 54 void LibWebRTCProvider::resolveMDNSName(PAL::SessionID sessionID, const String& name, CompletionHandler<void(IPAddressOrError&&)>&& callback) 55 { 56 WebProcess::singleton().libWebRTCNetwork().mdnsRegister().resolveMDNSName(sessionID, name, WTFMove(callback)); 57 } 58 42 59 } // namespace WebKit 43 60 -
trunk/Source/WebKit/WebProcess/Network/webrtc/LibWebRTCProvider.h
r222902 r230290 48 48 private: 49 49 rtc::scoped_refptr<webrtc::PeerConnectionInterface> createPeerConnection(webrtc::PeerConnectionObserver&, webrtc::PeerConnectionInterface::RTCConfiguration&&) final; 50 51 void unregisterMDNSNames(uint64_t documentIdentifier) final; 52 void registerMDNSName(PAL::SessionID, uint64_t documentIdentifier, const String& ipAddress, CompletionHandler<void(MDNSNameOrError&&)>&&) final; 53 void resolveMDNSName(PAL::SessionID, const String& name, CompletionHandler<void(IPAddressOrError&&)>&&) final; 50 54 }; 51 55 #else -
trunk/Source/WebKit/WebProcess/WebProcess.cpp
r230211 r230290 1673 1673 } 1674 1674 1675 #if USE(LIBWEBRTC)1676 1675 LibWebRTCNetwork& WebProcess::libWebRTCNetwork() 1677 1676 { … … 1680 1679 return *m_libWebRTCNetwork; 1681 1680 } 1682 #endif1683 1681 1684 1682 #if ENABLE(SERVICE_WORKER) -
trunk/Source/WebKit/WebProcess/WebProcess.h
r230269 r230290 175 175 WebLoaderStrategy& webLoaderStrategy(); 176 176 177 #if USE(LIBWEBRTC)178 177 LibWebRTCNetwork& libWebRTCNetwork(); 179 #endif180 178 181 179 void webToStorageProcessConnectionClosed(WebToStorageProcessConnection*); … … 415 413 Ref<WebCacheStorageProvider> m_cacheStorageProvider; 416 414 417 #if USE(LIBWEBRTC)418 415 std::unique_ptr<LibWebRTCNetwork> m_libWebRTCNetwork; 419 #endif420 416 421 417 HashSet<String> m_dnsPrefetchedHosts; -
trunk/Tools/ChangeLog
r230288 r230290 1 2018-04-04 Youenn Fablet <youenn@apple.com> 2 3 WebRTC data channel only applications require capture permissions for direct connections 4 https://bugs.webkit.org/show_bug.cgi?id=174500 5 <rdar://problem/34134281> 6 7 Reviewed by Eric Carlson. 8 9 Adding options to enable MDNS ICE candidates. 10 11 * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl: 12 * WebKitTestRunner/InjectedBundle/TestRunner.cpp: 13 (WTR::TestRunner::setMediaDevicesEnabled): 14 (WTR::TestRunner::setMDNSICECandidatesEnabled): 15 * WebKitTestRunner/InjectedBundle/TestRunner.h: 16 * WebKitTestRunner/TestController.cpp: 17 (WTR::TestController::resetPreferencesToConsistentValues): 18 1 19 2018-04-04 Ryan Haddad <ryanhaddad@apple.com> 2 20 -
trunk/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
r230224 r230290 318 318 319 319 void setWebRTCLegacyAPIEnabled(boolean value); 320 void setMDNSICECandidatesEnabled(boolean value); 320 321 321 322 void terminateNetworkProcess(); -
trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
r229349 r230290 371 371 } 372 372 373 void TestRunner::setMDNSICECandidatesEnabled(bool enabled) 374 { 375 WKRetainPtr<WKStringRef> key(AdoptWK, WKStringCreateWithUTF8CString("WebKitMDNSICECandidatesEnabled")); 376 auto& injectedBundle = InjectedBundle::singleton(); 377 WKBundleOverrideBoolPreferenceForTestRunner(injectedBundle.bundle(), injectedBundle.pageGroup(), key.get(), enabled); 378 } 379 373 380 void TestRunner::setWebRTCLegacyAPIEnabled(bool enabled) 374 381 { -
trunk/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
r230224 r230290 130 130 void setMediaDevicesEnabled(bool); 131 131 void setWebRTCLegacyAPIEnabled(bool); 132 void setMDNSICECandidatesEnabled(bool); 132 133 133 134 // Special DOM functions. -
trunk/Tools/WebKitTestRunner/TestController.cpp
r230224 r230290 669 669 WKPreferencesSetMediaDevicesEnabled(preferences, true); 670 670 WKPreferencesSetWebRTCLegacyAPIEnabled(preferences, true); 671 WKPreferencesSetWebRTCMDNSICECandidatesEnabled(preferences, false); 671 672 WKPreferencesSetDeveloperExtrasEnabled(preferences, true); 672 673 WKPreferencesSetJavaScriptRuntimeFlags(preferences, kWKJavaScriptRuntimeFlagsAllEnabled);
Note: See TracChangeset
for help on using the changeset viewer.