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

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

Issue 1729563002: Replace RTCErrorCallback with RTCPeerConnectionErrorCallback. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 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 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 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
48 #include "core/frame/LocalFrame.h" 48 #include "core/frame/LocalFrame.h"
49 #include "core/html/VoidCallback.h" 49 #include "core/html/VoidCallback.h"
50 #include "core/loader/FrameLoader.h" 50 #include "core/loader/FrameLoader.h"
51 #include "core/loader/FrameLoaderClient.h" 51 #include "core/loader/FrameLoaderClient.h"
52 #include "modules/crypto/CryptoResultImpl.h" 52 #include "modules/crypto/CryptoResultImpl.h"
53 #include "modules/mediastream/MediaConstraintsImpl.h" 53 #include "modules/mediastream/MediaConstraintsImpl.h"
54 #include "modules/mediastream/MediaStreamEvent.h" 54 #include "modules/mediastream/MediaStreamEvent.h"
55 #include "modules/mediastream/RTCDTMFSender.h" 55 #include "modules/mediastream/RTCDTMFSender.h"
56 #include "modules/mediastream/RTCDataChannel.h" 56 #include "modules/mediastream/RTCDataChannel.h"
57 #include "modules/mediastream/RTCDataChannelEvent.h" 57 #include "modules/mediastream/RTCDataChannelEvent.h"
58 #include "modules/mediastream/RTCErrorCallback.h"
59 #include "modules/mediastream/RTCIceCandidateEvent.h" 58 #include "modules/mediastream/RTCIceCandidateEvent.h"
59 #include "modules/mediastream/RTCPeerConnectionErrorCallback.h"
60 #include "modules/mediastream/RTCSessionDescription.h" 60 #include "modules/mediastream/RTCSessionDescription.h"
61 #include "modules/mediastream/RTCSessionDescriptionCallback.h" 61 #include "modules/mediastream/RTCSessionDescriptionCallback.h"
62 #include "modules/mediastream/RTCSessionDescriptionInit.h" 62 #include "modules/mediastream/RTCSessionDescriptionInit.h"
63 #include "modules/mediastream/RTCSessionDescriptionRequestImpl.h" 63 #include "modules/mediastream/RTCSessionDescriptionRequestImpl.h"
64 #include "modules/mediastream/RTCStatsCallback.h" 64 #include "modules/mediastream/RTCStatsCallback.h"
65 #include "modules/mediastream/RTCStatsRequestImpl.h" 65 #include "modules/mediastream/RTCStatsRequestImpl.h"
66 #include "modules/mediastream/RTCVoidRequestImpl.h" 66 #include "modules/mediastream/RTCVoidRequestImpl.h"
67 #include "modules/mediastream/RTCVoidRequestPromiseImpl.h" 67 #include "modules/mediastream/RTCVoidRequestPromiseImpl.h"
68 #include "platform/mediastream/RTCConfiguration.h" 68 #include "platform/mediastream/RTCConfiguration.h"
69 #include "platform/mediastream/RTCOfferOptions.h" 69 #include "platform/mediastream/RTCOfferOptions.h"
(...skipping 26 matching lines...) Expand all
96 exceptionState.throwDOMException(InvalidStateError, kSignalingStateClose dMessage); 96 exceptionState.throwDOMException(InvalidStateError, kSignalingStateClose dMessage);
97 return true; 97 return true;
98 } 98 }
99 99
100 return false; 100 return false;
101 } 101 }
102 102
103 // Helper class for running error callbacks asynchronously 103 // Helper class for running error callbacks asynchronously
104 class ErrorCallbackTask : public WebTaskRunner::Task { 104 class ErrorCallbackTask : public WebTaskRunner::Task {
105 public: 105 public:
106 static PassOwnPtr<ErrorCallbackTask> create(RTCErrorCallback* errorCallback, const String& errorMessage) 106 static PassOwnPtr<ErrorCallbackTask> create(RTCPeerConnectionErrorCallback* errorCallback, DOMException* exception)
107 { 107 {
108 return adoptPtr(new ErrorCallbackTask(errorCallback, errorMessage)); 108 return adoptPtr(new ErrorCallbackTask(errorCallback, exception));
109 } 109 }
110 110
111 ~ErrorCallbackTask() override = default; 111 ~ErrorCallbackTask() override = default;
112 112
113 void run() override 113 void run() override
114 { 114 {
115 m_errorCallback->handleEvent(m_errorMessage); 115 m_errorCallback->handleEvent(m_exception);
116 } 116 }
117 117
118 private: 118 private:
119 ErrorCallbackTask(RTCErrorCallback* errorCallback, const String& errorMessag e) 119 ErrorCallbackTask(RTCPeerConnectionErrorCallback* errorCallback, DOMExceptio n* exception)
120 : m_errorCallback(errorCallback) 120 : m_errorCallback(errorCallback)
121 , m_errorMessage(errorMessage) 121 , m_exception(exception)
122 { 122 {
123 ASSERT(errorCallback); 123 ASSERT(errorCallback);
124 } 124 }
125 125
126 Persistent<RTCErrorCallback> m_errorCallback; 126 Persistent<RTCPeerConnectionErrorCallback> m_errorCallback;
127 String m_errorMessage; 127 Persistent<DOMException> m_exception;
128 }; 128 };
129 129
130 void asyncCallErrorCallback(RTCErrorCallback* errorCallback, const String& error Message) 130 void asyncCallErrorCallback(RTCPeerConnectionErrorCallback* errorCallback, DOMEx ception* exception)
131 { 131 {
132 Microtask::enqueueMicrotask(ErrorCallbackTask::create(errorCallback, errorMe ssage)); 132 Microtask::enqueueMicrotask(ErrorCallbackTask::create(errorCallback, excepti on));
133 } 133 }
134 134
135 bool callErrorCallbackIfSignalingStateClosed(RTCPeerConnection::SignalingState s tate, RTCErrorCallback* errorCallback) 135 bool callErrorCallbackIfSignalingStateClosed(RTCPeerConnection::SignalingState s tate, RTCPeerConnectionErrorCallback* errorCallback)
136 { 136 {
137 if (state == RTCPeerConnection::SignalingStateClosed) { 137 if (state == RTCPeerConnection::SignalingStateClosed) {
138 if (errorCallback) 138 if (errorCallback)
139 asyncCallErrorCallback(errorCallback, kSignalingStateClosedMessage); 139 asyncCallErrorCallback(errorCallback, DOMException::create(InvalidSt ateError, kSignalingStateClosedMessage));
140 140
141 return true; 141 return true;
142 } 142 }
143 143
144 return false; 144 return false;
145 } 145 }
146 146
147 bool isIceCandidateMissingSdp(const RTCIceCandidateInitOrRTCIceCandidate& candid ate) 147 bool isIceCandidateMissingSdp(const RTCIceCandidateInitOrRTCIceCandidate& candid ate)
148 { 148 {
149 if (candidate.isRTCIceCandidateInit()) { 149 if (candidate.isRTCIceCandidateInit()) {
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 } 458 }
459 } 459 }
460 460
461 RTCPeerConnection::~RTCPeerConnection() 461 RTCPeerConnection::~RTCPeerConnection()
462 { 462 {
463 // This checks that close() or stop() is called before the destructor. 463 // This checks that close() or stop() is called before the destructor.
464 // We are assuming that a wrapper is always created when RTCPeerConnection i s created. 464 // We are assuming that a wrapper is always created when RTCPeerConnection i s created.
465 ASSERT(m_closed || m_stopped); 465 ASSERT(m_closed || m_stopped);
466 } 466 }
467 467
468 void RTCPeerConnection::createOffer(ExecutionContext* context, RTCSessionDescrip tionCallback* successCallback, RTCErrorCallback* errorCallback, const Dictionary & rtcOfferOptions, ExceptionState& exceptionState) 468 void RTCPeerConnection::createOffer(ExecutionContext* context, RTCSessionDescrip tionCallback* successCallback, RTCPeerConnectionErrorCallback* errorCallback, co nst Dictionary& rtcOfferOptions, ExceptionState& exceptionState)
469 { 469 {
470 if (errorCallback) 470 if (errorCallback)
471 UseCounter::count(context, UseCounter::RTCPeerConnectionCreateOfferLegac yFailureCallback); 471 UseCounter::count(context, UseCounter::RTCPeerConnectionCreateOfferLegac yFailureCallback);
472 else 472 else
473 Deprecation::countDeprecation(context, UseCounter::RTCPeerConnectionCrea teOfferLegacyNoFailureCallback); 473 Deprecation::countDeprecation(context, UseCounter::RTCPeerConnectionCrea teOfferLegacyNoFailureCallback);
474 474
475 if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) 475 if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState))
476 return; 476 return;
477 477
478 ASSERT(successCallback); 478 ASSERT(successCallback);
(...skipping 21 matching lines...) Expand all
500 500
501 if (!constraints.isEmpty()) 501 if (!constraints.isEmpty())
502 UseCounter::count(context, UseCounter::RTCPeerConnectionCreateOfferL egacyConstraints); 502 UseCounter::count(context, UseCounter::RTCPeerConnectionCreateOfferL egacyConstraints);
503 else if (errorCallback) 503 else if (errorCallback)
504 UseCounter::count(context, UseCounter::RTCPeerConnectionCreateOfferL egacyCompliant); 504 UseCounter::count(context, UseCounter::RTCPeerConnectionCreateOfferL egacyCompliant);
505 505
506 m_peerHandler->createOffer(request, constraints); 506 m_peerHandler->createOffer(request, constraints);
507 } 507 }
508 } 508 }
509 509
510 void RTCPeerConnection::createAnswer(ExecutionContext* context, RTCSessionDescri ptionCallback* successCallback, RTCErrorCallback* errorCallback, const Dictionar y& mediaConstraints, ExceptionState& exceptionState) 510 void RTCPeerConnection::createAnswer(ExecutionContext* context, RTCSessionDescri ptionCallback* successCallback, RTCPeerConnectionErrorCallback* errorCallback, c onst Dictionary& mediaConstraints, ExceptionState& exceptionState)
511 { 511 {
512 if (errorCallback) 512 if (errorCallback)
513 UseCounter::count(context, UseCounter::RTCPeerConnectionCreateAnswerLega cyFailureCallback); 513 UseCounter::count(context, UseCounter::RTCPeerConnectionCreateAnswerLega cyFailureCallback);
514 else 514 else
515 Deprecation::countDeprecation(context, UseCounter::RTCPeerConnectionCrea teAnswerLegacyNoFailureCallback); 515 Deprecation::countDeprecation(context, UseCounter::RTCPeerConnectionCrea teAnswerLegacyNoFailureCallback);
516 516
517 if (mediaConstraints.isObject()) 517 if (mediaConstraints.isObject())
518 UseCounter::count(context, UseCounter::RTCPeerConnectionCreateAnswerLega cyConstraints); 518 UseCounter::count(context, UseCounter::RTCPeerConnectionCreateAnswerLega cyConstraints);
519 else if (errorCallback) 519 else if (errorCallback)
520 UseCounter::count(context, UseCounter::RTCPeerConnectionCreateAnswerLega cyCompliant); 520 UseCounter::count(context, UseCounter::RTCPeerConnectionCreateAnswerLega cyCompliant);
(...skipping 14 matching lines...) Expand all
535 m_peerHandler->createAnswer(request, constraints); 535 m_peerHandler->createAnswer(request, constraints);
536 } 536 }
537 537
538 ScriptPromise RTCPeerConnection::setLocalDescription(ScriptState* scriptState, c onst RTCSessionDescriptionInit& sessionDescriptionInit) 538 ScriptPromise RTCPeerConnection::setLocalDescription(ScriptState* scriptState, c onst RTCSessionDescriptionInit& sessionDescriptionInit)
539 { 539 {
540 if (m_signalingState == SignalingStateClosed) 540 if (m_signalingState == SignalingStateClosed)
541 return ScriptPromise::rejectWithDOMException(scriptState, DOMException:: create(InvalidStateError, kSignalingStateClosedMessage)); 541 return ScriptPromise::rejectWithDOMException(scriptState, DOMException:: create(InvalidStateError, kSignalingStateClosedMessage));
542 542
543 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ; 543 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
544 ScriptPromise promise = resolver->promise(); 544 ScriptPromise promise = resolver->promise();
545 RTCVoidRequest* request = RTCVoidRequestPromiseImpl::create(this, resolver, InvalidAccessError); 545 RTCVoidRequest* request = RTCVoidRequestPromiseImpl::create(this, resolver);
546 m_peerHandler->setLocalDescription(request, WebRTCSessionDescription(session DescriptionInit.type(), sessionDescriptionInit.sdp())); 546 m_peerHandler->setLocalDescription(request, WebRTCSessionDescription(session DescriptionInit.type(), sessionDescriptionInit.sdp()));
547 return promise; 547 return promise;
548 } 548 }
549 549
550 ScriptPromise RTCPeerConnection::setLocalDescription(ScriptState* scriptState, R TCSessionDescription* sessionDescription, VoidCallback* successCallback, RTCErro rCallback* errorCallback) 550 ScriptPromise RTCPeerConnection::setLocalDescription(ScriptState* scriptState, R TCSessionDescription* sessionDescription, VoidCallback* successCallback, RTCPeer ConnectionErrorCallback* errorCallback)
551 { 551 {
552 ExecutionContext* context = scriptState->executionContext(); 552 ExecutionContext* context = scriptState->executionContext();
553 if (successCallback && errorCallback) { 553 if (successCallback && errorCallback) {
554 UseCounter::count(context, UseCounter::RTCPeerConnectionSetLocalDescript ionLegacyCompliant); 554 UseCounter::count(context, UseCounter::RTCPeerConnectionSetLocalDescript ionLegacyCompliant);
555 } else { 555 } else {
556 if (!successCallback) 556 if (!successCallback)
557 UseCounter::count(context, UseCounter::RTCPeerConnectionSetLocalDesc riptionLegacyNoSuccessCallback); 557 UseCounter::count(context, UseCounter::RTCPeerConnectionSetLocalDesc riptionLegacyNoSuccessCallback);
558 if (!errorCallback) 558 if (!errorCallback)
559 UseCounter::count(context, UseCounter::RTCPeerConnectionSetLocalDesc riptionLegacyNoFailureCallback); 559 UseCounter::count(context, UseCounter::RTCPeerConnectionSetLocalDesc riptionLegacyNoFailureCallback);
560 } 560 }
(...skipping 17 matching lines...) Expand all
578 return RTCSessionDescription::create(webSessionDescription); 578 return RTCSessionDescription::create(webSessionDescription);
579 } 579 }
580 580
581 ScriptPromise RTCPeerConnection::setRemoteDescription(ScriptState* scriptState, const RTCSessionDescriptionInit& sessionDescriptionInit) 581 ScriptPromise RTCPeerConnection::setRemoteDescription(ScriptState* scriptState, const RTCSessionDescriptionInit& sessionDescriptionInit)
582 { 582 {
583 if (m_signalingState == SignalingStateClosed) 583 if (m_signalingState == SignalingStateClosed)
584 return ScriptPromise::rejectWithDOMException(scriptState, DOMException:: create(InvalidStateError, kSignalingStateClosedMessage)); 584 return ScriptPromise::rejectWithDOMException(scriptState, DOMException:: create(InvalidStateError, kSignalingStateClosedMessage));
585 585
586 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ; 586 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
587 ScriptPromise promise = resolver->promise(); 587 ScriptPromise promise = resolver->promise();
588 RTCVoidRequest* request = RTCVoidRequestPromiseImpl::create(this, resolver, InvalidAccessError); 588 RTCVoidRequest* request = RTCVoidRequestPromiseImpl::create(this, resolver);
589 m_peerHandler->setRemoteDescription(request, WebRTCSessionDescription(sessio nDescriptionInit.type(), sessionDescriptionInit.sdp())); 589 m_peerHandler->setRemoteDescription(request, WebRTCSessionDescription(sessio nDescriptionInit.type(), sessionDescriptionInit.sdp()));
590 return promise; 590 return promise;
591 } 591 }
592 592
593 ScriptPromise RTCPeerConnection::setRemoteDescription(ScriptState* scriptState, RTCSessionDescription* sessionDescription, VoidCallback* successCallback, RTCErr orCallback* errorCallback) 593 ScriptPromise RTCPeerConnection::setRemoteDescription(ScriptState* scriptState, RTCSessionDescription* sessionDescription, VoidCallback* successCallback, RTCPee rConnectionErrorCallback* errorCallback)
594 { 594 {
595 ExecutionContext* context = scriptState->executionContext(); 595 ExecutionContext* context = scriptState->executionContext();
596 if (successCallback && errorCallback) { 596 if (successCallback && errorCallback) {
597 UseCounter::count(context, UseCounter::RTCPeerConnectionSetRemoteDescrip tionLegacyCompliant); 597 UseCounter::count(context, UseCounter::RTCPeerConnectionSetRemoteDescrip tionLegacyCompliant);
598 } else { 598 } else {
599 if (!successCallback) 599 if (!successCallback)
600 UseCounter::count(context, UseCounter::RTCPeerConnectionSetRemoteDes criptionLegacyNoSuccessCallback); 600 UseCounter::count(context, UseCounter::RTCPeerConnectionSetRemoteDes criptionLegacyNoSuccessCallback);
601 if (!errorCallback) 601 if (!errorCallback)
602 UseCounter::count(context, UseCounter::RTCPeerConnectionSetRemoteDes criptionLegacyNoFailureCallback); 602 UseCounter::count(context, UseCounter::RTCPeerConnectionSetRemoteDes criptionLegacyNoFailureCallback);
603 } 603 }
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
714 ScriptPromise RTCPeerConnection::addIceCandidate(ScriptState* scriptState, const RTCIceCandidateInitOrRTCIceCandidate& candidate) 714 ScriptPromise RTCPeerConnection::addIceCandidate(ScriptState* scriptState, const RTCIceCandidateInitOrRTCIceCandidate& candidate)
715 { 715 {
716 if (m_signalingState == SignalingStateClosed) 716 if (m_signalingState == SignalingStateClosed)
717 return ScriptPromise::rejectWithDOMException(scriptState, DOMException:: create(InvalidStateError, kSignalingStateClosedMessage)); 717 return ScriptPromise::rejectWithDOMException(scriptState, DOMException:: create(InvalidStateError, kSignalingStateClosedMessage));
718 718
719 if (isIceCandidateMissingSdp(candidate)) 719 if (isIceCandidateMissingSdp(candidate))
720 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Candidate missing values for both sdpMid and sdpMLi neIndex")); 720 return ScriptPromise::reject(scriptState, V8ThrowException::createTypeEr ror(scriptState->isolate(), "Candidate missing values for both sdpMid and sdpMLi neIndex"));
721 721
722 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ; 722 ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState) ;
723 ScriptPromise promise = resolver->promise(); 723 ScriptPromise promise = resolver->promise();
724 RTCVoidRequest* request = RTCVoidRequestPromiseImpl::create(this, resolver, OperationError); 724 RTCVoidRequest* request = RTCVoidRequestPromiseImpl::create(this, resolver);
725 WebRTCICECandidate webCandidate = convertToWebRTCIceCandidate(candidate); 725 WebRTCICECandidate webCandidate = convertToWebRTCIceCandidate(candidate);
726 bool implemented = m_peerHandler->addICECandidate(request, webCandidate); 726 bool implemented = m_peerHandler->addICECandidate(request, webCandidate);
727 // TODO(guidou): replace NotSupportedError when error handling in the spec i s finalized. crbug.com/585621
728 if (!implemented) 727 if (!implemented)
729 resolver->reject(DOMException::create(NotSupportedError, "This method is not yet implemented.")); 728 resolver->reject(DOMException::create(OperationError, "This operation co uld not be completed."));
730 729
731 return promise; 730 return promise;
732 } 731 }
733 732
734 ScriptPromise RTCPeerConnection::addIceCandidate(ScriptState* scriptState, RTCIc eCandidate* iceCandidate, VoidCallback* successCallback, RTCErrorCallback* error Callback) 733 ScriptPromise RTCPeerConnection::addIceCandidate(ScriptState* scriptState, RTCIc eCandidate* iceCandidate, VoidCallback* successCallback, RTCPeerConnectionErrorC allback* errorCallback)
735 { 734 {
736 ASSERT(iceCandidate); 735 ASSERT(iceCandidate);
737 ASSERT(successCallback); 736 ASSERT(successCallback);
738 ASSERT(errorCallback); 737 ASSERT(errorCallback);
739 738
740 if (callErrorCallbackIfSignalingStateClosed(m_signalingState, errorCallback) ) 739 if (callErrorCallbackIfSignalingStateClosed(m_signalingState, errorCallback) )
741 return ScriptPromise::cast(scriptState, v8::Undefined(scriptState->isola te())); 740 return ScriptPromise::cast(scriptState, v8::Undefined(scriptState->isola te()));
742 741
743 RTCVoidRequest* request = RTCVoidRequestImpl::create(executionContext(), thi s, successCallback, errorCallback); 742 RTCVoidRequest* request = RTCVoidRequestImpl::create(executionContext(), thi s, successCallback, errorCallback);
744 bool implemented = m_peerHandler->addICECandidate(request, iceCandidate->web Candidate()); 743 bool implemented = m_peerHandler->addICECandidate(request, iceCandidate->web Candidate());
745 if (!implemented) 744 if (!implemented)
746 asyncCallErrorCallback(errorCallback, "This method is not yet implemente d."); 745 asyncCallErrorCallback(errorCallback, DOMException::create(OperationErro r, "This operation could not be completed."));
747 746
748 return ScriptPromise::cast(scriptState, v8::Undefined(scriptState->isolate() )); 747 return ScriptPromise::cast(scriptState, v8::Undefined(scriptState->isolate() ));
749 } 748 }
750 749
751 String RTCPeerConnection::signalingState() const 750 String RTCPeerConnection::signalingState() const
752 { 751 {
753 switch (m_signalingState) { 752 switch (m_signalingState) {
754 case SignalingStateStable: 753 case SignalingStateStable:
755 return "stable"; 754 return "stable";
756 case SignalingStateHaveLocalOffer: 755 case SignalingStateHaveLocalOffer:
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after
1160 { 1159 {
1161 visitor->trace(m_localStreams); 1160 visitor->trace(m_localStreams);
1162 visitor->trace(m_remoteStreams); 1161 visitor->trace(m_remoteStreams);
1163 visitor->trace(m_dispatchScheduledEventRunner); 1162 visitor->trace(m_dispatchScheduledEventRunner);
1164 visitor->trace(m_scheduledEvents); 1163 visitor->trace(m_scheduledEvents);
1165 RefCountedGarbageCollectedEventTargetWithInlineData<RTCPeerConnection>::trac e(visitor); 1164 RefCountedGarbageCollectedEventTargetWithInlineData<RTCPeerConnection>::trac e(visitor);
1166 ActiveDOMObject::trace(visitor); 1165 ActiveDOMObject::trace(visitor);
1167 } 1166 }
1168 1167
1169 } // namespace blink 1168 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698