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

Side by Side Diff: third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.cpp

Issue 2055553003: Change the default rtcp mux policy from negotiate to require. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix test Created 4 years 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 211 matching lines...) Expand 10 before | Expand all | Expand 10 after
222 if (policy == "none") 222 if (policy == "none")
223 return WebRTCIceTransportPolicy::kNone; 223 return WebRTCIceTransportPolicy::kNone;
224 if (policy == "relay") 224 if (policy == "relay")
225 return WebRTCIceTransportPolicy::kRelay; 225 return WebRTCIceTransportPolicy::kRelay;
226 DCHECK_EQ(policy, "all"); 226 DCHECK_EQ(policy, "all");
227 return WebRTCIceTransportPolicy::kAll; 227 return WebRTCIceTransportPolicy::kAll;
228 } 228 }
229 229
230 WebRTCConfiguration parseConfiguration(ExecutionContext* context, 230 WebRTCConfiguration parseConfiguration(ExecutionContext* context,
231 const RTCConfiguration& configuration, 231 const RTCConfiguration& configuration,
232 ExceptionState& exceptionState, 232 ExceptionState& exceptionState) {
233 RtcpMuxPolicy* selectedRtcpMuxPolicy) {
234 DCHECK(context); 233 DCHECK(context);
235 DCHECK(selectedRtcpMuxPolicy);
236 234
237 WebRTCIceTransportPolicy iceTransportPolicy = WebRTCIceTransportPolicy::kAll; 235 WebRTCIceTransportPolicy iceTransportPolicy = WebRTCIceTransportPolicy::kAll;
238 if (configuration.hasIceTransportPolicy()) { 236 if (configuration.hasIceTransportPolicy()) {
239 UseCounter::count(context, UseCounter::RTCConfigurationIceTransportPolicy); 237 UseCounter::count(context, UseCounter::RTCConfigurationIceTransportPolicy);
240 iceTransportPolicy = 238 iceTransportPolicy =
241 iceTransportPolicyFromString(configuration.iceTransportPolicy()); 239 iceTransportPolicyFromString(configuration.iceTransportPolicy());
242 if (iceTransportPolicy == WebRTCIceTransportPolicy::kNone) { 240 if (iceTransportPolicy == WebRTCIceTransportPolicy::kNone) {
243 UseCounter::count(context, 241 UseCounter::count(context,
244 UseCounter::RTCConfigurationIceTransportPolicyNone); 242 UseCounter::RTCConfigurationIceTransportPolicyNone);
245 } 243 }
246 } else if (configuration.hasIceTransports()) { 244 } else if (configuration.hasIceTransports()) {
247 UseCounter::count(context, UseCounter::RTCConfigurationIceTransports); 245 UseCounter::count(context, UseCounter::RTCConfigurationIceTransports);
248 iceTransportPolicy = 246 iceTransportPolicy =
249 iceTransportPolicyFromString(configuration.iceTransports()); 247 iceTransportPolicyFromString(configuration.iceTransports());
250 if (iceTransportPolicy == WebRTCIceTransportPolicy::kNone) 248 if (iceTransportPolicy == WebRTCIceTransportPolicy::kNone)
251 UseCounter::count(context, UseCounter::RTCConfigurationIceTransportsNone); 249 UseCounter::count(context, UseCounter::RTCConfigurationIceTransportsNone);
252 } 250 }
253 251
254 WebRTCBundlePolicy bundlePolicy = WebRTCBundlePolicy::kBalanced; 252 WebRTCBundlePolicy bundlePolicy = WebRTCBundlePolicy::kBalanced;
255 String bundlePolicyString = configuration.bundlePolicy(); 253 String bundlePolicyString = configuration.bundlePolicy();
256 if (bundlePolicyString == "max-compat") { 254 if (bundlePolicyString == "max-compat") {
257 bundlePolicy = WebRTCBundlePolicy::kMaxCompat; 255 bundlePolicy = WebRTCBundlePolicy::kMaxCompat;
258 } else if (bundlePolicyString == "max-bundle") { 256 } else if (bundlePolicyString == "max-bundle") {
259 bundlePolicy = WebRTCBundlePolicy::kMaxBundle; 257 bundlePolicy = WebRTCBundlePolicy::kMaxBundle;
260 } else { 258 } else {
261 DCHECK_EQ(bundlePolicyString, "balanced"); 259 DCHECK_EQ(bundlePolicyString, "balanced");
262 } 260 }
263 261
264 // For the histogram value of "WebRTC.PeerConnection.SelectedRtcpMuxPolicy". 262 WebRTCRtcpMuxPolicy rtcpMuxPolicy = WebRTCRtcpMuxPolicy::kRequire;
265 *selectedRtcpMuxPolicy = RtcpMuxPolicyDefault; 263 String rtcpMuxPolicyString = configuration.rtcpMuxPolicy();
266 WebRTCRtcpMuxPolicy rtcpMuxPolicy = WebRTCRtcpMuxPolicy::kNegotiate; 264 if (rtcpMuxPolicyString == "negotiate") {
267 if (configuration.hasRtcpMuxPolicy()) { 265 rtcpMuxPolicy = WebRTCRtcpMuxPolicy::kNegotiate;
268 String rtcpMuxPolicyString = configuration.rtcpMuxPolicy(); 266 } else {
269 if (rtcpMuxPolicyString == "require") { 267 DCHECK_EQ(rtcpMuxPolicyString, "require");
270 *selectedRtcpMuxPolicy = RtcpMuxPolicyRequire;
271 rtcpMuxPolicy = WebRTCRtcpMuxPolicy::kRequire;
272 } else {
273 DCHECK_EQ(rtcpMuxPolicyString, "negotiate");
274 *selectedRtcpMuxPolicy = RtcpMuxPolicyNegotiate;
275 }
276 } 268 }
277
278 WebRTCConfiguration webConfiguration; 269 WebRTCConfiguration webConfiguration;
279 webConfiguration.iceTransportPolicy = iceTransportPolicy; 270 webConfiguration.iceTransportPolicy = iceTransportPolicy;
280 webConfiguration.bundlePolicy = bundlePolicy; 271 webConfiguration.bundlePolicy = bundlePolicy;
281 webConfiguration.rtcpMuxPolicy = rtcpMuxPolicy; 272 webConfiguration.rtcpMuxPolicy = rtcpMuxPolicy;
282 273
283 if (configuration.hasIceServers()) { 274 if (configuration.hasIceServers()) {
284 Vector<WebRTCIceServer> iceServers; 275 Vector<WebRTCIceServer> iceServers;
285 for (const RTCIceServer& iceServer : configuration.iceServers()) { 276 for (const RTCIceServer& iceServer : configuration.iceServers()) {
286 Vector<String> urlStrings; 277 Vector<String> urlStrings;
287 if (iceServer.hasURLs()) { 278 if (iceServer.hasURLs()) {
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
434 const RTCConfiguration& rtcConfiguration, 425 const RTCConfiguration& rtcConfiguration,
435 const Dictionary& mediaConstraints, 426 const Dictionary& mediaConstraints,
436 ExceptionState& exceptionState) { 427 ExceptionState& exceptionState) {
437 if (mediaConstraints.isObject()) 428 if (mediaConstraints.isObject())
438 UseCounter::count(context, 429 UseCounter::count(context,
439 UseCounter::RTCPeerConnectionConstructorConstraints); 430 UseCounter::RTCPeerConnectionConstructorConstraints);
440 else 431 else
441 UseCounter::count(context, 432 UseCounter::count(context,
442 UseCounter::RTCPeerConnectionConstructorCompliant); 433 UseCounter::RTCPeerConnectionConstructorCompliant);
443 434
444 // Record the RtcpMuxPolicy for histogram 435 WebRTCConfiguration configuration =
445 // "WebRTC.PeerConnection.SelectedRtcpMuxPolicy". 436 parseConfiguration(context, rtcConfiguration, exceptionState);
446 RtcpMuxPolicy selectedRtcpMuxPolicy = RtcpMuxPolicyDefault;
447 WebRTCConfiguration configuration = parseConfiguration(
448 context, rtcConfiguration, exceptionState, &selectedRtcpMuxPolicy);
449 if (exceptionState.hadException()) 437 if (exceptionState.hadException())
450 return 0; 438 return 0;
451 439
452 // Make sure no certificates have expired. 440 // Make sure no certificates have expired.
453 if (configuration.certificates.size() > 0) { 441 if (configuration.certificates.size() > 0) {
454 DOMTimeStamp now = convertSecondsToDOMTimeStamp(currentTime()); 442 DOMTimeStamp now = convertSecondsToDOMTimeStamp(currentTime());
455 for (const std::unique_ptr<WebRTCCertificate>& certificate : 443 for (const std::unique_ptr<WebRTCCertificate>& certificate :
456 configuration.certificates) { 444 configuration.certificates) {
457 DOMTimeStamp expires = certificate->expires(); 445 DOMTimeStamp expires = certificate->expires();
458 if (expires <= now) { 446 if (expires <= now) {
(...skipping 11 matching lines...) Expand all
470 mediaErrorState.raiseException(exceptionState); 458 mediaErrorState.raiseException(exceptionState);
471 return 0; 459 return 0;
472 } 460 }
473 461
474 RTCPeerConnection* peerConnection = new RTCPeerConnection( 462 RTCPeerConnection* peerConnection = new RTCPeerConnection(
475 context, configuration, constraints, exceptionState); 463 context, configuration, constraints, exceptionState);
476 peerConnection->suspendIfNeeded(); 464 peerConnection->suspendIfNeeded();
477 if (exceptionState.hadException()) 465 if (exceptionState.hadException())
478 return 0; 466 return 0;
479 467
480 peerConnection->m_peerHandler->logSelectedRtcpMuxPolicy(
481 selectedRtcpMuxPolicy);
482
483 return peerConnection; 468 return peerConnection;
484 } 469 }
485 470
486 RTCPeerConnection::RTCPeerConnection(ExecutionContext* context, 471 RTCPeerConnection::RTCPeerConnection(ExecutionContext* context,
487 const WebRTCConfiguration& configuration, 472 const WebRTCConfiguration& configuration,
488 WebMediaConstraints constraints, 473 WebMediaConstraints constraints,
489 ExceptionState& exceptionState) 474 ExceptionState& exceptionState)
490 : SuspendableObject(context), 475 : SuspendableObject(context),
491 m_signalingState(SignalingStateStable), 476 m_signalingState(SignalingStateStable),
492 m_iceGatheringState(ICEGatheringStateNew), 477 m_iceGatheringState(ICEGatheringStateNew),
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
804 return RTCSessionDescription::create(webSessionDescription); 789 return RTCSessionDescription::create(webSessionDescription);
805 } 790 }
806 791
807 void RTCPeerConnection::updateIce(ExecutionContext* context, 792 void RTCPeerConnection::updateIce(ExecutionContext* context,
808 const RTCConfiguration& rtcConfiguration, 793 const RTCConfiguration& rtcConfiguration,
809 const Dictionary&, 794 const Dictionary&,
810 ExceptionState& exceptionState) { 795 ExceptionState& exceptionState) {
811 if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) 796 if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState))
812 return; 797 return;
813 798
814 RtcpMuxPolicy selectedRtcpMuxPolicy = RtcpMuxPolicyDefault; 799 WebRTCConfiguration configuration =
815 WebRTCConfiguration configuration = parseConfiguration( 800 parseConfiguration(context, rtcConfiguration, exceptionState);
816 context, rtcConfiguration, exceptionState, &selectedRtcpMuxPolicy);
817 801
818 if (exceptionState.hadException()) 802 if (exceptionState.hadException())
819 return; 803 return;
820 804
821 MediaErrorState mediaErrorState; 805 MediaErrorState mediaErrorState;
822 if (mediaErrorState.hadException()) { 806 if (mediaErrorState.hadException()) {
823 mediaErrorState.raiseException(exceptionState); 807 mediaErrorState.raiseException(exceptionState);
824 return; 808 return;
825 } 809 }
826 810
(...skipping 661 matching lines...) Expand 10 before | Expand all | Expand 10 after
1488 DEFINE_TRACE(RTCPeerConnection) { 1472 DEFINE_TRACE(RTCPeerConnection) {
1489 visitor->trace(m_localStreams); 1473 visitor->trace(m_localStreams);
1490 visitor->trace(m_remoteStreams); 1474 visitor->trace(m_remoteStreams);
1491 visitor->trace(m_dispatchScheduledEventRunner); 1475 visitor->trace(m_dispatchScheduledEventRunner);
1492 visitor->trace(m_scheduledEvents); 1476 visitor->trace(m_scheduledEvents);
1493 EventTargetWithInlineData::trace(visitor); 1477 EventTargetWithInlineData::trace(visitor);
1494 SuspendableObject::trace(visitor); 1478 SuspendableObject::trace(visitor);
1495 } 1479 }
1496 1480
1497 } // namespace blink 1481 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698