Index: content/renderer/media/rtc_peer_connection_handler.cc |
diff --git a/content/renderer/media/rtc_peer_connection_handler.cc b/content/renderer/media/rtc_peer_connection_handler.cc |
index 3240a7a2fbe2e9e97bb3f0bade3ce22d159fb618..df62f31660c3288bc5338af396a7d3bc050354c9 100644 |
--- a/content/renderer/media/rtc_peer_connection_handler.cc |
+++ b/content/renderer/media/rtc_peer_connection_handler.cc |
@@ -243,7 +243,9 @@ void GetNativeRtcConfiguration( |
webrtc::PeerConnectionInterface::IceServer server; |
server.username = blink_server.username.utf8(); |
server.password = blink_server.credential.utf8(); |
- server.uri = blink_server.url.string().utf8(); |
+ for (const blink::WebURL& url : blink_server.urls) { |
+ server.urls.push_back(url.string().utf8()); |
+ } |
webrtc_config->servers.push_back(server); |
} |
@@ -257,8 +259,6 @@ void GetNativeRtcConfiguration( |
case blink::WebRTCIceTransportPolicy::kAll: |
webrtc_config->type = webrtc::PeerConnectionInterface::kAll; |
break; |
- default: |
- NOTREACHED(); |
} |
switch (blink_config.bundlePolicy) { |
@@ -274,8 +274,6 @@ void GetNativeRtcConfiguration( |
webrtc_config->bundle_policy = |
webrtc::PeerConnectionInterface::kBundlePolicyMaxCompat; |
break; |
- default: |
- NOTREACHED(); |
} |
switch (blink_config.rtcpMuxPolicy) { |
@@ -287,8 +285,6 @@ void GetNativeRtcConfiguration( |
webrtc_config->rtcp_mux_policy = |
webrtc::PeerConnectionInterface::kRtcpMuxPolicyRequire; |
break; |
- default: |
- NOTREACHED(); |
} |
webrtc_config->certificates.clear(); |
@@ -302,6 +298,70 @@ void GetNativeRtcConfiguration( |
webrtc_config->ice_candidate_pool_size = blink_config.iceCandidatePoolSize; |
} |
+blink::WebRTCConfiguration ToBlinkRtcConfiguration( |
+ const webrtc::PeerConnectionInterface::RTCConfiguration& webrtc_config) { |
+ blink::WebRTCConfiguration blink_config; |
+ blink::WebVector<blink::WebRTCIceServer> iceServers( |
+ webrtc_config.servers.size()); |
+ for (size_t i = 0; i < webrtc_config.servers.size(); ++i) { |
+ const webrtc::PeerConnectionInterface::IceServer& ice_server = |
+ webrtc_config.servers[i]; |
+ blink::WebRTCIceServer blink_server; |
+ blink::WebVector<blink::WebURL> blink_urls(ice_server.urls.size()); |
+ for (size_t j = 0; j < ice_server.urls.size(); ++j) |
+ blink_urls[j] = GURL(ice_server.urls[j]); |
+ blink_server.urls = std::move(blink_urls); |
+ blink_server.username = blink::WebString::fromUTF8(ice_server.username); |
+ blink_server.credential = blink::WebString::fromUTF8(ice_server.password); |
+ iceServers[i] = blink_server; |
+ } |
+ blink_config.iceServers = std::move(iceServers); |
+ |
+ switch (webrtc_config.type) { |
+ case webrtc::PeerConnectionInterface::kNone: |
+ blink_config.iceTransportPolicy = blink::WebRTCIceTransportPolicy::kNone; |
+ break; |
+ case webrtc::PeerConnectionInterface::kRelay: |
+ blink_config.iceTransportPolicy = blink::WebRTCIceTransportPolicy::kRelay; |
+ break; |
+ case webrtc::PeerConnectionInterface::kAll: |
+ blink_config.iceTransportPolicy = blink::WebRTCIceTransportPolicy::kAll; |
+ break; |
+ case webrtc::PeerConnectionInterface::kNoHost: |
+ NOTREACHED(); |
+ } |
+ |
+ switch (webrtc_config.bundle_policy) { |
+ case webrtc::PeerConnectionInterface::kBundlePolicyBalanced: |
+ blink_config.bundlePolicy = blink::WebRTCBundlePolicy::kBalanced; |
+ break; |
+ case webrtc::PeerConnectionInterface::kBundlePolicyMaxBundle: |
+ blink_config.bundlePolicy = blink::WebRTCBundlePolicy::kMaxBundle; |
+ break; |
+ case webrtc::PeerConnectionInterface::kBundlePolicyMaxCompat: |
+ blink_config.bundlePolicy = blink::WebRTCBundlePolicy::kMaxCompat; |
+ break; |
+ } |
+ |
+ switch (webrtc_config.rtcp_mux_policy) { |
+ case webrtc::PeerConnectionInterface::kRtcpMuxPolicyNegotiate: |
+ blink_config.rtcpMuxPolicy = blink::WebRTCRtcpMuxPolicy::kNegotiate; |
+ break; |
+ case webrtc::PeerConnectionInterface::kRtcpMuxPolicyRequire: |
+ blink_config.rtcpMuxPolicy = blink::WebRTCRtcpMuxPolicy::kRequire; |
+ break; |
+ } |
+ |
+ blink::WebVector<std::unique_ptr<blink::WebRTCCertificate>> certificates( |
+ webrtc_config.certificates.size()); |
+ for (size_t i = 0; i < webrtc_config.certificates.size(); ++i) { |
+ certificates[i] = |
+ base::MakeUnique<RTCCertificate>(webrtc_config.certificates[i]); |
+ } |
+ blink_config.certificates = std::move(certificates); |
+ return blink_config; |
+} |
+ |
void CopyConstraintsIntoRtcConfiguration( |
const blink::WebMediaConstraints constraints, |
webrtc::PeerConnectionInterface::RTCConfiguration* configuration) { |
@@ -1457,6 +1517,13 @@ blink::WebRTCErrorType RTCPeerConnectionHandler::setConfiguration( |
return blink_error.type(); |
} |
+blink::WebRTCConfiguration RTCPeerConnectionHandler::getConfiguration() { |
+ DCHECK(thread_checker_.CalledOnValidThread()); |
+ webrtc::PeerConnectionInterface::RTCConfiguration webrtc_config = |
+ native_peer_connection_->GetConfiguration(); |
+ return ToBlinkRtcConfiguration(webrtc_config); |
+} |
+ |
bool RTCPeerConnectionHandler::addICECandidate( |
const blink::WebRTCVoidRequest& request, |
const blink::WebRTCICECandidate& candidate) { |