OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |