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 257 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
268 } | 268 } |
269 | 269 |
270 document->frame()->loader().client()->dispatchWillStartUsingPeerConnectionHa ndler(m_peerHandler.get()); | 270 document->frame()->loader().client()->dispatchWillStartUsingPeerConnectionHa ndler(m_peerHandler.get()); |
271 | 271 |
272 if (!m_peerHandler->initialize(configuration, constraints)) { | 272 if (!m_peerHandler->initialize(configuration, constraints)) { |
273 m_closed = true; | 273 m_closed = true; |
274 m_stopped = true; | 274 m_stopped = true; |
275 exceptionState.throwDOMException(NotSupportedError, "Failed to initializ e native PeerConnection."); | 275 exceptionState.throwDOMException(NotSupportedError, "Failed to initializ e native PeerConnection."); |
276 return; | 276 return; |
277 } | 277 } |
278 m_localDescription = RTCSessionDescription::create(context, m_peerHandler->l ocalDescription()); | |
279 m_remoteDescription = RTCSessionDescription::create(context, m_peerHandler-> remoteDescription()); | |
278 } | 280 } |
279 | 281 |
280 RTCPeerConnection::~RTCPeerConnection() | 282 RTCPeerConnection::~RTCPeerConnection() |
281 { | 283 { |
282 // This checks that close() or stop() is called before the destructor. | 284 // This checks that close() or stop() is called before the destructor. |
283 // We are assuming that a wrapper is always created when RTCPeerConnection i s created. | 285 // We are assuming that a wrapper is always created when RTCPeerConnection i s created. |
284 ASSERT(m_closed || m_stopped); | 286 ASSERT(m_closed || m_stopped); |
285 } | 287 } |
286 | 288 |
287 void RTCPeerConnection::createOffer(RTCSessionDescriptionCallback* successCallba ck, RTCErrorCallback* errorCallback, const Dictionary& rtcOfferOptions, Exceptio nState& exceptionState) | 289 void RTCPeerConnection::createOffer(RTCSessionDescriptionCallback* successCallba ck, RTCErrorCallback* errorCallback, const Dictionary& rtcOfferOptions, Exceptio nState& exceptionState) |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
335 | 337 |
336 RTCVoidRequest* request = RTCVoidRequestImpl::create(executionContext(), thi s, successCallback, errorCallback); | 338 RTCVoidRequest* request = RTCVoidRequestImpl::create(executionContext(), thi s, successCallback, errorCallback); |
337 m_peerHandler->setLocalDescription(request, sessionDescription->webSessionDe scription()); | 339 m_peerHandler->setLocalDescription(request, sessionDescription->webSessionDe scription()); |
338 } | 340 } |
339 | 341 |
340 RTCSessionDescription* RTCPeerConnection::localDescription(ExceptionState& excep tionState) | 342 RTCSessionDescription* RTCPeerConnection::localDescription(ExceptionState& excep tionState) |
341 { | 343 { |
342 WebRTCSessionDescription webSessionDescription = m_peerHandler->localDescrip tion(); | 344 WebRTCSessionDescription webSessionDescription = m_peerHandler->localDescrip tion(); |
343 if (webSessionDescription.isNull()) | 345 if (webSessionDescription.isNull()) |
344 return nullptr; | 346 return nullptr; |
345 | 347 m_localDescription->setWebSessionDescription(webSessionDescription); |
Jens Widell
2015/04/28 10:59:22
I think the semantics might be somewhat incorrect
| |
346 return RTCSessionDescription::create(webSessionDescription); | 348 return m_localDescription; |
347 } | 349 } |
348 | 350 |
349 void RTCPeerConnection::setRemoteDescription(RTCSessionDescription* sessionDescr iption, VoidCallback* successCallback, RTCErrorCallback* errorCallback, Exceptio nState& exceptionState) | 351 void RTCPeerConnection::setRemoteDescription(RTCSessionDescription* sessionDescr iption, VoidCallback* successCallback, RTCErrorCallback* errorCallback, Exceptio nState& exceptionState) |
350 { | 352 { |
351 if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) | 353 if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) |
352 return; | 354 return; |
353 | 355 |
354 if (!sessionDescription) { | 356 if (!sessionDescription) { |
355 exceptionState.throwDOMException(TypeMismatchError, ExceptionMessages::a rgumentNullOrIncorrectType(1, "RTCSessionDescription")); | 357 exceptionState.throwDOMException(TypeMismatchError, ExceptionMessages::a rgumentNullOrIncorrectType(1, "RTCSessionDescription")); |
356 return; | 358 return; |
357 } | 359 } |
358 | 360 |
359 RTCVoidRequest* request = RTCVoidRequestImpl::create(executionContext(), thi s, successCallback, errorCallback); | 361 RTCVoidRequest* request = RTCVoidRequestImpl::create(executionContext(), thi s, successCallback, errorCallback); |
360 m_peerHandler->setRemoteDescription(request, sessionDescription->webSessionD escription()); | 362 m_peerHandler->setRemoteDescription(request, sessionDescription->webSessionD escription()); |
361 } | 363 } |
362 | 364 |
363 RTCSessionDescription* RTCPeerConnection::remoteDescription(ExceptionState& exce ptionState) | 365 RTCSessionDescription* RTCPeerConnection::remoteDescription(ExceptionState& exce ptionState) |
364 { | 366 { |
365 WebRTCSessionDescription webSessionDescription = m_peerHandler->remoteDescri ption(); | 367 WebRTCSessionDescription webSessionDescription = m_peerHandler->remoteDescri ption(); |
366 if (webSessionDescription.isNull()) | 368 if (webSessionDescription.isNull()) |
367 return nullptr; | 369 return nullptr; |
370 m_remoteDescription->setWebSessionDescription(webSessionDescription); | |
368 | 371 |
369 return RTCSessionDescription::create(webSessionDescription); | 372 return m_remoteDescription; |
370 } | 373 } |
371 | 374 |
372 void RTCPeerConnection::updateIce(const Dictionary& rtcConfiguration, const Dict ionary& mediaConstraints, ExceptionState& exceptionState) | 375 void RTCPeerConnection::updateIce(const Dictionary& rtcConfiguration, const Dict ionary& mediaConstraints, ExceptionState& exceptionState) |
373 { | 376 { |
374 if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) | 377 if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) |
375 return; | 378 return; |
376 | 379 |
377 RTCConfiguration* configuration = parseConfiguration(rtcConfiguration, excep tionState); | 380 RTCConfiguration* configuration = parseConfiguration(rtcConfiguration, excep tionState); |
378 if (exceptionState.hadException()) | 381 if (exceptionState.hadException()) |
379 return; | 382 return; |
(...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
755 m_iceConnectionState = ICEConnectionStateClosed; | 758 m_iceConnectionState = ICEConnectionStateClosed; |
756 m_signalingState = SignalingStateClosed; | 759 m_signalingState = SignalingStateClosed; |
757 | 760 |
758 HeapVector<Member<RTCDataChannel>>::iterator i = m_dataChannels.begin(); | 761 HeapVector<Member<RTCDataChannel>>::iterator i = m_dataChannels.begin(); |
759 for (; i != m_dataChannels.end(); ++i) | 762 for (; i != m_dataChannels.end(); ++i) |
760 (*i)->stop(); | 763 (*i)->stop(); |
761 m_dataChannels.clear(); | 764 m_dataChannels.clear(); |
762 | 765 |
763 m_dispatchScheduledEventRunner.stop(); | 766 m_dispatchScheduledEventRunner.stop(); |
764 | 767 |
768 m_localDescription->stop(); | |
769 m_remoteDescription->stop(); | |
770 | |
765 m_peerHandler.clear(); | 771 m_peerHandler.clear(); |
766 } | 772 } |
767 | 773 |
768 void RTCPeerConnection::changeSignalingState(SignalingState signalingState) | 774 void RTCPeerConnection::changeSignalingState(SignalingState signalingState) |
769 { | 775 { |
770 if (m_signalingState != SignalingStateClosed && m_signalingState != signalin gState) { | 776 if (m_signalingState != SignalingStateClosed && m_signalingState != signalin gState) { |
771 m_signalingState = signalingState; | 777 m_signalingState = signalingState; |
772 scheduleDispatchEvent(Event::create(EventTypeNames::signalingstatechange )); | 778 scheduleDispatchEvent(Event::create(EventTypeNames::signalingstatechange )); |
773 } | 779 } |
774 } | 780 } |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
817 dispatchEvent((*it).release()); | 823 dispatchEvent((*it).release()); |
818 | 824 |
819 events.clear(); | 825 events.clear(); |
820 } | 826 } |
821 | 827 |
822 DEFINE_TRACE(RTCPeerConnection) | 828 DEFINE_TRACE(RTCPeerConnection) |
823 { | 829 { |
824 visitor->trace(m_localStreams); | 830 visitor->trace(m_localStreams); |
825 visitor->trace(m_remoteStreams); | 831 visitor->trace(m_remoteStreams); |
826 visitor->trace(m_dataChannels); | 832 visitor->trace(m_dataChannels); |
833 visitor->trace(m_localDescription); | |
834 visitor->trace(m_remoteDescription); | |
827 #if ENABLE(OILPAN) | 835 #if ENABLE(OILPAN) |
828 visitor->trace(m_scheduledEvents); | 836 visitor->trace(m_scheduledEvents); |
829 #endif | 837 #endif |
830 RefCountedGarbageCollectedEventTargetWithInlineData<RTCPeerConnection>::trac e(visitor); | 838 RefCountedGarbageCollectedEventTargetWithInlineData<RTCPeerConnection>::trac e(visitor); |
831 ActiveDOMObject::trace(visitor); | 839 ActiveDOMObject::trace(visitor); |
832 } | 840 } |
833 | 841 |
834 } // namespace blink | 842 } // namespace blink |
OLD | NEW |