Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(526)

Unified Diff: third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp

Issue 2706563003: Create the API that returns the RTCConfiguration of the PeerConnection.
Patch Set: Fix the issues in data type conversion. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
diff --git a/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp b/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
index 256c5a61800a0b689dc2e7005590e89e9558989c..a5ae77bdd977c1051e1ddaa11b5a5c9c9bbc92e7 100644
--- a/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
+++ b/third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp
@@ -298,6 +298,7 @@ WebRTCConfiguration parseConfiguration(ExecutionContext* context,
String username = iceServer.username();
String credential = iceServer.credential();
+ Vector<WebURL> urls;
for (const String& urlString : urlStrings) {
KURL url(KURL(), urlString);
if (!url.isValid()) {
@@ -320,8 +321,9 @@ WebRTCConfiguration parseConfiguration(ExecutionContext* context,
"required when the URL scheme is "
"\"turn\" or \"turns\".");
}
- iceServers.push_back(WebRTCIceServer{url, username, credential});
+ urls.push_back(url);
}
+ iceServers.push_back(WebRTCIceServer{urls, username, credential});
dcheng 2017/03/11 07:14:46 Nit: omit WebRTCIceServer, and just use braces, si
zhihuang1 2017/03/13 18:50:53 I tried this but the compiler didn't like it. th
dcheng 2017/03/14 05:37:51 Ah... it's because the types here don't exactly ma
}
webConfiguration.iceServers = iceServers;
}
@@ -795,6 +797,64 @@ RTCSessionDescription* RTCPeerConnection::remoteDescription() {
return RTCSessionDescription::create(webSessionDescription);
}
+void RTCPeerConnection::getConfiguration(RTCConfiguration& rtcConfig) {
+ blink::WebRTCConfiguration blinkConfig = m_peerHandler->getConfiguration();
+
+ switch (blinkConfig.iceTransportPolicy) {
+ case blink::WebRTCIceTransportPolicy::kNone:
+ rtcConfig.setIceTransportPolicy("none");
+ break;
+ case blink::WebRTCIceTransportPolicy::kRelay:
+ rtcConfig.setIceTransportPolicy("relay");
+ break;
+ case blink::WebRTCIceTransportPolicy::kAll:
+ rtcConfig.setIceTransportPolicy("all");
+ break;
+ }
+
+ switch (blinkConfig.bundlePolicy) {
+ case blink::WebRTCBundlePolicy::kBalanced:
+ rtcConfig.setBundlePolicy("balanced");
+ break;
+ case blink::WebRTCBundlePolicy::kMaxBundle:
+ rtcConfig.setBundlePolicy("max-bundle");
+ break;
+ case blink::WebRTCBundlePolicy::kMaxCompat:
+ rtcConfig.setBundlePolicy("max-compat");
+ break;
+ }
+
+ switch (blinkConfig.rtcpMuxPolicy) {
+ case blink::WebRTCRtcpMuxPolicy::kNegotiate:
+ rtcConfig.setRtcpMuxPolicy("negotiate");
+ break;
+ case blink::WebRTCRtcpMuxPolicy::kRequire:
+ rtcConfig.setRtcpMuxPolicy("require");
+ break;
+ }
+
+ HeapVector<RTCIceServer> servers;
+ for (const WebRTCIceServer& blink_server : blinkConfig.iceServers) {
+ RTCIceServer server;
+ Vector<String> urlStrings;
+ StringOrStringSequence urls;
+ for (const WebURL& blink_url : blink_server.urls)
+ urlStrings.push_back(blink_url.string());
+ urls.setStringSequence(urlStrings);
+ server.setURLs(urls);
+ server.setUsername(blink_server.username);
+ server.setCredential(blink_server.credential);
+ servers.push_back(server);
+ }
+ rtcConfig.setIceServers(servers);
+
+ HeapVector<Member<RTCCertificate>> certificates;
+ for (auto& blink_certificate : blinkConfig.certificates) {
+ certificates.push_back(new RTCCertificate(std::move(blink_certificate)));
+ }
+ rtcConfig.setCertificates(certificates);
+}
+
void RTCPeerConnection::setConfiguration(
ScriptState* scriptState,
const RTCConfiguration& rtcConfiguration,

Powered by Google App Engine
This is Rietveld 408576698