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

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

Issue 2415673003: Merge RTCConfiguration into WebRTCConfiguration (Closed)
Patch Set: headers, kConstants Created 4 years, 1 month 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 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
68 #include "modules/peerconnection/RTCSessionDescriptionInit.h" 68 #include "modules/peerconnection/RTCSessionDescriptionInit.h"
69 #include "modules/peerconnection/RTCSessionDescriptionRequestImpl.h" 69 #include "modules/peerconnection/RTCSessionDescriptionRequestImpl.h"
70 #include "modules/peerconnection/RTCSessionDescriptionRequestPromiseImpl.h" 70 #include "modules/peerconnection/RTCSessionDescriptionRequestPromiseImpl.h"
71 #include "modules/peerconnection/RTCStatsCallback.h" 71 #include "modules/peerconnection/RTCStatsCallback.h"
72 #include "modules/peerconnection/RTCStatsReport.h" 72 #include "modules/peerconnection/RTCStatsReport.h"
73 #include "modules/peerconnection/RTCStatsRequestImpl.h" 73 #include "modules/peerconnection/RTCStatsRequestImpl.h"
74 #include "modules/peerconnection/RTCVoidRequestImpl.h" 74 #include "modules/peerconnection/RTCVoidRequestImpl.h"
75 #include "modules/peerconnection/RTCVoidRequestPromiseImpl.h" 75 #include "modules/peerconnection/RTCVoidRequestPromiseImpl.h"
76 #include "platform/RuntimeEnabledFeatures.h" 76 #include "platform/RuntimeEnabledFeatures.h"
77 #include "platform/peerconnection/RTCAnswerOptionsPlatform.h" 77 #include "platform/peerconnection/RTCAnswerOptionsPlatform.h"
78 #include "platform/peerconnection/RTCConfiguration.h"
79 #include "platform/peerconnection/RTCOfferOptionsPlatform.h" 78 #include "platform/peerconnection/RTCOfferOptionsPlatform.h"
80 #include "public/platform/Platform.h" 79 #include "public/platform/Platform.h"
81 #include "public/platform/WebCryptoAlgorithmParams.h" 80 #include "public/platform/WebCryptoAlgorithmParams.h"
82 #include "public/platform/WebMediaStream.h" 81 #include "public/platform/WebMediaStream.h"
83 #include "public/platform/WebRTCAnswerOptions.h" 82 #include "public/platform/WebRTCAnswerOptions.h"
84 #include "public/platform/WebRTCCertificate.h" 83 #include "public/platform/WebRTCCertificate.h"
85 #include "public/platform/WebRTCCertificateGenerator.h" 84 #include "public/platform/WebRTCCertificateGenerator.h"
86 #include "public/platform/WebRTCConfiguration.h" 85 #include "public/platform/WebRTCConfiguration.h"
87 #include "public/platform/WebRTCDataChannelHandler.h" 86 #include "public/platform/WebRTCDataChannelHandler.h"
88 #include "public/platform/WebRTCDataChannelInit.h" 87 #include "public/platform/WebRTCDataChannelInit.h"
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 210
212 void onSuccess(std::unique_ptr<WebRTCCertificate> certificate) override { 211 void onSuccess(std::unique_ptr<WebRTCCertificate> certificate) override {
213 m_resolver->resolve(new RTCCertificate(std::move(certificate))); 212 m_resolver->resolve(new RTCCertificate(std::move(certificate)));
214 } 213 }
215 214
216 void onError() override { m_resolver->reject(); } 215 void onError() override { m_resolver->reject(); }
217 216
218 Persistent<ScriptPromiseResolver> m_resolver; 217 Persistent<ScriptPromiseResolver> m_resolver;
219 }; 218 };
220 219
221 RTCConfiguration* parseConfiguration(const Dictionary& configuration, 220 WebRTCConfiguration parseConfiguration(const Dictionary& configuration,
222 ExceptionState& exceptionState, 221 ExceptionState& exceptionState,
223 RtcpMuxPolicy* selectedRtcpMuxPolicy) { 222 RtcpMuxPolicy* selectedRtcpMuxPolicy) {
223 WebRTCConfiguration rtcConfiguration;
224 if (configuration.isUndefinedOrNull()) 224 if (configuration.isUndefinedOrNull())
225 return 0; 225 return WebRTCConfiguration();
226 226
227 RTCIceTransports iceTransports = RTCIceTransportsAll; 227 WebRTCIceTransports iceTransports = WebRTCIceTransports::kAll;
228 String iceTransportsString; 228 String iceTransportsString;
229 if (DictionaryHelper::get(configuration, "iceTransports", 229 if (DictionaryHelper::get(configuration, "iceTransports",
230 iceTransportsString)) { 230 iceTransportsString)) {
231 if (iceTransportsString == "none") { 231 if (iceTransportsString == "none") {
232 iceTransports = RTCIceTransportsNone; 232 iceTransports = WebRTCIceTransports::kNone;
233 } else if (iceTransportsString == "relay") { 233 } else if (iceTransportsString == "relay") {
234 iceTransports = RTCIceTransportsRelay; 234 iceTransports = WebRTCIceTransports::kRelay;
235 } else if (iceTransportsString != "all") { 235 } else if (iceTransportsString != "all") {
236 exceptionState.throwTypeError("Malformed RTCIceTransports"); 236 exceptionState.throwTypeError("Malformed RTCIceTransports");
237 return 0; 237 return WebRTCConfiguration();
238 } 238 }
239 } 239 }
240 240
241 ArrayValue iceServers; 241 ArrayValue iceServers;
242 bool ok = DictionaryHelper::get(configuration, "iceServers", iceServers); 242 bool ok = DictionaryHelper::get(configuration, "iceServers", iceServers);
243 if (!ok || iceServers.isUndefinedOrNull()) { 243 if (!ok || iceServers.isUndefinedOrNull()) {
244 exceptionState.throwTypeError("Malformed RTCConfiguration"); 244 exceptionState.throwTypeError("Malformed RTCConfiguration");
245 return 0; 245 return WebRTCConfiguration();
246 } 246 }
247 247
248 size_t numberOfServers; 248 size_t numberOfServers;
249 ok = iceServers.length(numberOfServers); 249 ok = iceServers.length(numberOfServers);
250 if (!ok) { 250 if (!ok) {
251 exceptionState.throwTypeError("Malformed RTCConfiguration"); 251 exceptionState.throwTypeError("Malformed RTCConfiguration");
252 return 0; 252 return WebRTCConfiguration();
253 } 253 }
254 254
255 RTCBundlePolicy bundlePolicy = RTCBundlePolicyBalanced; 255 WebRTCBundlePolicy bundlePolicy = WebRTCBundlePolicy::kBalanced;
256 String bundlePolicyString; 256 String bundlePolicyString;
257 if (DictionaryHelper::get(configuration, "bundlePolicy", 257 if (DictionaryHelper::get(configuration, "bundlePolicy",
258 bundlePolicyString)) { 258 bundlePolicyString)) {
259 if (bundlePolicyString == "max-compat") { 259 if (bundlePolicyString == "max-compat") {
260 bundlePolicy = RTCBundlePolicyMaxCompat; 260 bundlePolicy = WebRTCBundlePolicy::kMaxCompat;
261 } else if (bundlePolicyString == "max-bundle") { 261 } else if (bundlePolicyString == "max-bundle") {
262 bundlePolicy = RTCBundlePolicyMaxBundle; 262 bundlePolicy = WebRTCBundlePolicy::kMaxBundle;
263 } else if (bundlePolicyString != "balanced") { 263 } else if (bundlePolicyString != "balanced") {
264 exceptionState.throwTypeError("Malformed RTCBundlePolicy"); 264 exceptionState.throwTypeError("Malformed RTCBundlePolicy");
265 return 0; 265 return WebRTCConfiguration();
266 } 266 }
267 } 267 }
268 268
269 // For the histogram value of "WebRTC.PeerConnection.SelectedRtcpMuxPolicy". 269 // For the histogram value of "WebRTC.PeerConnection.SelectedRtcpMuxPolicy".
270 *selectedRtcpMuxPolicy = RtcpMuxPolicyDefault; 270 *selectedRtcpMuxPolicy = RtcpMuxPolicyDefault;
271 RTCRtcpMuxPolicy rtcpMuxPolicy = RTCRtcpMuxPolicyNegotiate; 271 WebRTCRtcpMuxPolicy rtcpMuxPolicy = WebRTCRtcpMuxPolicy::kNegotiate;
272 String rtcpMuxPolicyString; 272 String rtcpMuxPolicyString;
273 if (DictionaryHelper::get(configuration, "rtcpMuxPolicy", 273 if (DictionaryHelper::get(configuration, "rtcpMuxPolicy",
274 rtcpMuxPolicyString)) { 274 rtcpMuxPolicyString)) {
275 if (rtcpMuxPolicyString == "require") { 275 if (rtcpMuxPolicyString == "require") {
276 *selectedRtcpMuxPolicy = RtcpMuxPolicyRequire; 276 *selectedRtcpMuxPolicy = RtcpMuxPolicyRequire;
277 rtcpMuxPolicy = RTCRtcpMuxPolicyRequire; 277 rtcpMuxPolicy = WebRTCRtcpMuxPolicy::kRequire;
278 } else if (rtcpMuxPolicyString == "negotiate") { 278 } else if (rtcpMuxPolicyString == "negotiate") {
279 *selectedRtcpMuxPolicy = RtcpMuxPolicyNegotiate; 279 *selectedRtcpMuxPolicy = RtcpMuxPolicyNegotiate;
280 rtcpMuxPolicy = RTCRtcpMuxPolicyNegotiate; 280 rtcpMuxPolicy = WebRTCRtcpMuxPolicy::kNegotiate;
281 } else { 281 } else {
282 exceptionState.throwTypeError("Malformed RTCRtcpMuxPolicy"); 282 exceptionState.throwTypeError("Malformed RTCRtcpMuxPolicy");
283 return 0; 283 return WebRTCConfiguration();
284 } 284 }
285 } 285 }
286 286
287 RTCConfiguration* rtcConfiguration = RTCConfiguration::create(); 287 rtcConfiguration.iceTransports = iceTransports;
288 rtcConfiguration->setIceTransports(iceTransports); 288 rtcConfiguration.bundlePolicy = bundlePolicy;
289 rtcConfiguration->setBundlePolicy(bundlePolicy); 289 rtcConfiguration.rtcpMuxPolicy = rtcpMuxPolicy;
290 rtcConfiguration->setRtcpMuxPolicy(rtcpMuxPolicy);
291 290
292 for (size_t i = 0; i < numberOfServers; ++i) { 291 for (size_t i = 0; i < numberOfServers; ++i) {
293 Dictionary iceServer; 292 Dictionary iceServer;
294 ok = iceServers.get(i, iceServer); 293 ok = iceServers.get(i, iceServer);
295 if (!ok) { 294 if (!ok) {
296 exceptionState.throwTypeError("Malformed RTCIceServer"); 295 exceptionState.throwTypeError("Malformed RTCIceServer");
297 return 0; 296 return WebRTCConfiguration();
298 } 297 }
299 298
300 Vector<String> names; 299 Vector<String> names;
301 iceServer.getPropertyNames(names); 300 iceServer.getPropertyNames(names);
302 301
303 Vector<String> urlStrings; 302 Vector<String> urlStrings;
304 if (names.contains("urls")) { 303 if (names.contains("urls")) {
305 if (!DictionaryHelper::get(iceServer, "urls", urlStrings) || 304 if (!DictionaryHelper::get(iceServer, "urls", urlStrings) ||
306 !urlStrings.size()) { 305 !urlStrings.size()) {
307 String urlString; 306 String urlString;
308 if (DictionaryHelper::get(iceServer, "urls", urlString)) { 307 if (DictionaryHelper::get(iceServer, "urls", urlString)) {
309 urlStrings.append(urlString); 308 urlStrings.append(urlString);
310 } else { 309 } else {
311 exceptionState.throwTypeError("Malformed RTCIceServer"); 310 exceptionState.throwTypeError("Malformed RTCIceServer");
312 return 0; 311 return WebRTCConfiguration();
313 } 312 }
314 } 313 }
315 } else if (names.contains("url")) { 314 } else if (names.contains("url")) {
316 String urlString; 315 String urlString;
317 if (DictionaryHelper::get(iceServer, "url", urlString)) { 316 if (DictionaryHelper::get(iceServer, "url", urlString)) {
318 urlStrings.append(urlString); 317 urlStrings.append(urlString);
319 } else { 318 } else {
320 exceptionState.throwTypeError("Malformed RTCIceServer"); 319 exceptionState.throwTypeError("Malformed RTCIceServer");
321 return 0; 320 return WebRTCConfiguration();
322 } 321 }
323 } else { 322 } else {
324 exceptionState.throwTypeError("Malformed RTCIceServer"); 323 exceptionState.throwTypeError("Malformed RTCIceServer");
325 return 0; 324 return WebRTCConfiguration();
326 } 325 }
327 326
328 String username, credential; 327 String username, credential;
329 DictionaryHelper::get(iceServer, "username", username); 328 DictionaryHelper::get(iceServer, "username", username);
330 DictionaryHelper::get(iceServer, "credential", credential); 329 DictionaryHelper::get(iceServer, "credential", credential);
331 330
331 Vector<WebRTCIceServer> iceServers;
332 for (Vector<String>::iterator iter = urlStrings.begin(); 332 for (Vector<String>::iterator iter = urlStrings.begin();
333 iter != urlStrings.end(); ++iter) { 333 iter != urlStrings.end(); ++iter) {
334 KURL url(KURL(), *iter); 334 KURL url(KURL(), *iter);
335 if (!url.isValid() || 335 if (!url.isValid() ||
336 !(url.protocolIs("turn") || url.protocolIs("turns") || 336 !(url.protocolIs("turn") || url.protocolIs("turns") ||
337 url.protocolIs("stun"))) { 337 url.protocolIs("stun"))) {
338 exceptionState.throwTypeError("Malformed URL"); 338 exceptionState.throwTypeError("Malformed URL");
339 return 0; 339 return WebRTCConfiguration();
340 } 340 }
341 341 iceServers.append(WebRTCIceServer{url, username, credential});
342 rtcConfiguration->appendServer(
343 RTCIceServer::create(url, username, credential));
344 } 342 }
343 rtcConfiguration.iceServers = iceServers;
345 } 344 }
346 345
347 ArrayValue certificates; 346 ArrayValue certificates;
348 if (DictionaryHelper::get(configuration, "certificates", certificates) && 347 if (DictionaryHelper::get(configuration, "certificates", certificates) &&
349 !certificates.isUndefinedOrNull()) { 348 !certificates.isUndefinedOrNull()) {
350 size_t numberOfCertificates; 349 size_t numberOfCertificates;
351 certificates.length(numberOfCertificates); 350 certificates.length(numberOfCertificates);
351 WebVector<std::unique_ptr<WebRTCCertificate>> certificatesCopy(
352 numberOfCertificates);
352 for (size_t i = 0; i < numberOfCertificates; ++i) { 353 for (size_t i = 0; i < numberOfCertificates; ++i) {
353 RTCCertificate* certificate = nullptr; 354 RTCCertificate* certificate = nullptr;
354 355
355 Dictionary dictCert; 356 Dictionary dictCert;
356 certificates.get(i, dictCert); 357 certificates.get(i, dictCert);
357 v8::Local<v8::Value> valCert = dictCert.v8Value(); 358 v8::Local<v8::Value> valCert = dictCert.v8Value();
358 if (!valCert.IsEmpty()) { 359 if (!valCert.IsEmpty()) {
359 certificate = V8RTCCertificate::toImplWithTypeCheck( 360 certificate = V8RTCCertificate::toImplWithTypeCheck(
360 configuration.isolate(), valCert); 361 configuration.isolate(), valCert);
361 } 362 }
362 if (!certificate) { 363 if (!certificate) {
363 exceptionState.throwTypeError("Malformed sequence<RTCCertificate>"); 364 exceptionState.throwTypeError("Malformed sequence<RTCCertificate>");
364 return 0; 365 return WebRTCConfiguration();
365 } 366 }
366 367
367 rtcConfiguration->appendCertificate( 368 certificatesCopy[i] = certificate->certificateShallowCopy();
368 certificate->certificateShallowCopy());
369 } 369 }
370 rtcConfiguration.certificates = std::move(certificatesCopy);
370 } 371 }
371 return rtcConfiguration; 372 return rtcConfiguration;
372 } 373 }
373 374
374 RTCOfferOptionsPlatform* parseOfferOptions(const Dictionary& options) { 375 RTCOfferOptionsPlatform* parseOfferOptions(const Dictionary& options) {
375 if (options.isUndefinedOrNull()) 376 if (options.isUndefinedOrNull())
376 return 0; 377 return 0;
377 378
378 Vector<String> propertyNames; 379 Vector<String> propertyNames;
379 options.getPropertyNames(propertyNames); 380 options.getPropertyNames(propertyNames);
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 if (mediaConstraints.isObject()) 459 if (mediaConstraints.isObject())
459 UseCounter::count(context, 460 UseCounter::count(context,
460 UseCounter::RTCPeerConnectionConstructorConstraints); 461 UseCounter::RTCPeerConnectionConstructorConstraints);
461 else 462 else
462 UseCounter::count(context, 463 UseCounter::count(context,
463 UseCounter::RTCPeerConnectionConstructorCompliant); 464 UseCounter::RTCPeerConnectionConstructorCompliant);
464 465
465 // Record the RtcpMuxPolicy for histogram 466 // Record the RtcpMuxPolicy for histogram
466 // "WebRTC.PeerConnection.SelectedRtcpMuxPolicy". 467 // "WebRTC.PeerConnection.SelectedRtcpMuxPolicy".
467 RtcpMuxPolicy selectedRtcpMuxPolicy = RtcpMuxPolicyDefault; 468 RtcpMuxPolicy selectedRtcpMuxPolicy = RtcpMuxPolicyDefault;
468 RTCConfiguration* configuration = parseConfiguration( 469 WebRTCConfiguration configuration = parseConfiguration(
469 rtcConfiguration, exceptionState, &selectedRtcpMuxPolicy); 470 rtcConfiguration, exceptionState, &selectedRtcpMuxPolicy);
470 if (exceptionState.hadException()) 471 if (exceptionState.hadException())
471 return 0; 472 return 0;
472 473
473 // Make sure no certificates have expired. 474 // Make sure no certificates have expired.
474 if (configuration && configuration->numberOfCertificates() > 0) { 475 if (configuration.certificates.size() > 0) {
475 DOMTimeStamp now = convertSecondsToDOMTimeStamp(currentTime()); 476 DOMTimeStamp now = convertSecondsToDOMTimeStamp(currentTime());
476 for (size_t i = 0; i < configuration->numberOfCertificates(); ++i) { 477 for (const std::unique_ptr<WebRTCCertificate>& certificate :
477 DOMTimeStamp expires = configuration->certificate(i)->expires(); 478 configuration.certificates) {
479 DOMTimeStamp expires = certificate->expires();
478 if (expires <= now) { 480 if (expires <= now) {
481 // TODO(hbos): Per https://w3c.github.io/webrtc-pc/#operation this
482 // should throw InvalidAccessError, not InvalidStateError.
479 exceptionState.throwDOMException(InvalidStateError, 483 exceptionState.throwDOMException(InvalidStateError,
480 "Expired certificate(s)."); 484 "Expired certificate(s).");
481 return 0; 485 return 0;
482 } 486 }
483 } 487 }
484 } 488 }
485 489
486 MediaErrorState mediaErrorState; 490 MediaErrorState mediaErrorState;
487 WebMediaConstraints constraints = 491 WebMediaConstraints constraints =
488 MediaConstraintsImpl::create(context, mediaConstraints, mediaErrorState); 492 MediaConstraintsImpl::create(context, mediaConstraints, mediaErrorState);
489 if (mediaErrorState.hadException()) { 493 if (mediaErrorState.hadException()) {
490 mediaErrorState.raiseException(exceptionState); 494 mediaErrorState.raiseException(exceptionState);
491 return 0; 495 return 0;
492 } 496 }
493 497
494 RTCPeerConnection* peerConnection = new RTCPeerConnection( 498 RTCPeerConnection* peerConnection = new RTCPeerConnection(
495 context, configuration, constraints, exceptionState); 499 context, configuration, constraints, exceptionState);
496 peerConnection->suspendIfNeeded(); 500 peerConnection->suspendIfNeeded();
497 if (exceptionState.hadException()) 501 if (exceptionState.hadException())
498 return 0; 502 return 0;
499 503
500 peerConnection->m_peerHandler->logSelectedRtcpMuxPolicy( 504 peerConnection->m_peerHandler->logSelectedRtcpMuxPolicy(
501 selectedRtcpMuxPolicy); 505 selectedRtcpMuxPolicy);
502 506
503 return peerConnection; 507 return peerConnection;
504 } 508 }
505 509
506 RTCPeerConnection::RTCPeerConnection(ExecutionContext* context, 510 RTCPeerConnection::RTCPeerConnection(ExecutionContext* context,
507 RTCConfiguration* configuration, 511 const WebRTCConfiguration& configuration,
508 WebMediaConstraints constraints, 512 WebMediaConstraints constraints,
509 ExceptionState& exceptionState) 513 ExceptionState& exceptionState)
510 : ActiveScriptWrappable(this), 514 : ActiveScriptWrappable(this),
511 ActiveDOMObject(context), 515 ActiveDOMObject(context),
512 m_signalingState(SignalingStateStable), 516 m_signalingState(SignalingStateStable),
513 m_iceGatheringState(ICEGatheringStateNew), 517 m_iceGatheringState(ICEGatheringStateNew),
514 m_iceConnectionState(ICEConnectionStateNew), 518 m_iceConnectionState(ICEConnectionStateNew),
515 m_dispatchScheduledEventRunner( 519 m_dispatchScheduledEventRunner(
516 AsyncMethodRunner<RTCPeerConnection>::create( 520 AsyncMethodRunner<RTCPeerConnection>::create(
517 this, 521 this,
(...skipping 303 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 return RTCSessionDescription::create(webSessionDescription); 825 return RTCSessionDescription::create(webSessionDescription);
822 } 826 }
823 827
824 void RTCPeerConnection::updateIce(const Dictionary& rtcConfiguration, 828 void RTCPeerConnection::updateIce(const Dictionary& rtcConfiguration,
825 const Dictionary& mediaConstraints, 829 const Dictionary& mediaConstraints,
826 ExceptionState& exceptionState) { 830 ExceptionState& exceptionState) {
827 if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) 831 if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState))
828 return; 832 return;
829 833
830 RtcpMuxPolicy selectedRtcpMuxPolicy = RtcpMuxPolicyDefault; 834 RtcpMuxPolicy selectedRtcpMuxPolicy = RtcpMuxPolicyDefault;
831 RTCConfiguration* configuration = parseConfiguration( 835 WebRTCConfiguration configuration = parseConfiguration(
832 rtcConfiguration, exceptionState, &selectedRtcpMuxPolicy); 836 rtcConfiguration, exceptionState, &selectedRtcpMuxPolicy);
833 837
834 if (exceptionState.hadException()) 838 if (exceptionState.hadException())
835 return; 839 return;
836 840
837 MediaErrorState mediaErrorState; 841 MediaErrorState mediaErrorState;
838 if (mediaErrorState.hadException()) { 842 if (mediaErrorState.hadException()) {
839 mediaErrorState.raiseException(exceptionState); 843 mediaErrorState.raiseException(exceptionState);
840 return; 844 return;
841 } 845 }
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after
1501 DEFINE_TRACE(RTCPeerConnection) { 1505 DEFINE_TRACE(RTCPeerConnection) {
1502 visitor->trace(m_localStreams); 1506 visitor->trace(m_localStreams);
1503 visitor->trace(m_remoteStreams); 1507 visitor->trace(m_remoteStreams);
1504 visitor->trace(m_dispatchScheduledEventRunner); 1508 visitor->trace(m_dispatchScheduledEventRunner);
1505 visitor->trace(m_scheduledEvents); 1509 visitor->trace(m_scheduledEvents);
1506 EventTargetWithInlineData::trace(visitor); 1510 EventTargetWithInlineData::trace(visitor);
1507 ActiveDOMObject::trace(visitor); 1511 ActiveDOMObject::trace(visitor);
1508 } 1512 }
1509 1513
1510 } // namespace blink 1514 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/modules/peerconnection/RTCPeerConnection.h ('k') | third_party/WebKit/Source/platform/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698