| 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 230 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 241     m_peerHandler->createAnswer(request.release(), constraints); | 241     m_peerHandler->createAnswer(request.release(), constraints); | 
| 242 } | 242 } | 
| 243 | 243 | 
| 244 void RTCPeerConnection::setLocalDescription(PassRefPtr<RTCSessionDescription> pr
     pSessionDescription, PassOwnPtr<VoidCallback> successCallback, PassOwnPtr<RTCErr
     orCallback> errorCallback, ExceptionState& exceptionState) | 244 void RTCPeerConnection::setLocalDescription(PassRefPtr<RTCSessionDescription> pr
     pSessionDescription, PassOwnPtr<VoidCallback> successCallback, PassOwnPtr<RTCErr
     orCallback> errorCallback, ExceptionState& exceptionState) | 
| 245 { | 245 { | 
| 246     if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) | 246     if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) | 
| 247         return; | 247         return; | 
| 248 | 248 | 
| 249     RefPtr<RTCSessionDescription> sessionDescription = prpSessionDescription; | 249     RefPtr<RTCSessionDescription> sessionDescription = prpSessionDescription; | 
| 250     if (!sessionDescription) { | 250     if (!sessionDescription) { | 
| 251         exceptionState.throwDOMException(TypeMismatchError, ExceptionMessages::a
     rgumentNullOrIncorrectType(1, "RTCSessionDescription")); | 251         exceptionState.throwDOMException(TypeError, ExceptionMessages::argumentN
     ullOrIncorrectType(1, "RTCSessionDescription")); | 
| 252         return; | 252         return; | 
| 253     } | 253     } | 
| 254 | 254 | 
| 255     RefPtr<RTCVoidRequest> request = RTCVoidRequestImpl::create(executionContext
     (), successCallback, errorCallback); | 255     RefPtr<RTCVoidRequest> request = RTCVoidRequestImpl::create(executionContext
     (), successCallback, errorCallback); | 
| 256     m_peerHandler->setLocalDescription(request.release(), sessionDescription->we
     bSessionDescription()); | 256     m_peerHandler->setLocalDescription(request.release(), sessionDescription->we
     bSessionDescription()); | 
| 257 } | 257 } | 
| 258 | 258 | 
| 259 PassRefPtr<RTCSessionDescription> RTCPeerConnection::localDescription(ExceptionS
     tate& exceptionState) | 259 PassRefPtr<RTCSessionDescription> RTCPeerConnection::localDescription(ExceptionS
     tate& exceptionState) | 
| 260 { | 260 { | 
| 261     blink::WebRTCSessionDescription webSessionDescription = m_peerHandler->local
     Description(); | 261     blink::WebRTCSessionDescription webSessionDescription = m_peerHandler->local
     Description(); | 
| 262     if (webSessionDescription.isNull()) | 262     if (webSessionDescription.isNull()) | 
| 263         return nullptr; | 263         return nullptr; | 
| 264 | 264 | 
| 265     RefPtr<RTCSessionDescription> sessionDescription = RTCSessionDescription::cr
     eate(webSessionDescription); | 265     RefPtr<RTCSessionDescription> sessionDescription = RTCSessionDescription::cr
     eate(webSessionDescription); | 
| 266     return sessionDescription.release(); | 266     return sessionDescription.release(); | 
| 267 } | 267 } | 
| 268 | 268 | 
| 269 void RTCPeerConnection::setRemoteDescription(PassRefPtr<RTCSessionDescription> p
     rpSessionDescription, PassOwnPtr<VoidCallback> successCallback, PassOwnPtr<RTCEr
     rorCallback> errorCallback, ExceptionState& exceptionState) | 269 void RTCPeerConnection::setRemoteDescription(PassRefPtr<RTCSessionDescription> p
     rpSessionDescription, PassOwnPtr<VoidCallback> successCallback, PassOwnPtr<RTCEr
     rorCallback> errorCallback, ExceptionState& exceptionState) | 
| 270 { | 270 { | 
| 271     if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) | 271     if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) | 
| 272         return; | 272         return; | 
| 273 | 273 | 
| 274     RefPtr<RTCSessionDescription> sessionDescription = prpSessionDescription; | 274     RefPtr<RTCSessionDescription> sessionDescription = prpSessionDescription; | 
| 275     if (!sessionDescription) { | 275     if (!sessionDescription) { | 
| 276         exceptionState.throwDOMException(TypeMismatchError, ExceptionMessages::a
     rgumentNullOrIncorrectType(1, "RTCSessionDescription")); | 276         exceptionState.throwDOMException(TypeError, ExceptionMessages::argumentN
     ullOrIncorrectType(1, "RTCSessionDescription")); | 
| 277         return; | 277         return; | 
| 278     } | 278     } | 
| 279 | 279 | 
| 280     RefPtr<RTCVoidRequest> request = RTCVoidRequestImpl::create(executionContext
     (), successCallback, errorCallback); | 280     RefPtr<RTCVoidRequest> request = RTCVoidRequestImpl::create(executionContext
     (), successCallback, errorCallback); | 
| 281     m_peerHandler->setRemoteDescription(request.release(), sessionDescription->w
     ebSessionDescription()); | 281     m_peerHandler->setRemoteDescription(request.release(), sessionDescription->w
     ebSessionDescription()); | 
| 282 } | 282 } | 
| 283 | 283 | 
| 284 PassRefPtr<RTCSessionDescription> RTCPeerConnection::remoteDescription(Exception
     State& exceptionState) | 284 PassRefPtr<RTCSessionDescription> RTCPeerConnection::remoteDescription(Exception
     State& exceptionState) | 
| 285 { | 285 { | 
| 286     blink::WebRTCSessionDescription webSessionDescription = m_peerHandler->remot
     eDescription(); | 286     blink::WebRTCSessionDescription webSessionDescription = m_peerHandler->remot
     eDescription(); | 
| (...skipping 21 matching lines...) Expand all  Loading... | 
| 308     if (!valid) | 308     if (!valid) | 
| 309         exceptionState.throwDOMException(SyntaxError, "Could not update the ICE 
     Agent with the given configuration."); | 309         exceptionState.throwDOMException(SyntaxError, "Could not update the ICE 
     Agent with the given configuration."); | 
| 310 } | 310 } | 
| 311 | 311 | 
| 312 void RTCPeerConnection::addIceCandidate(RTCIceCandidate* iceCandidate, Exception
     State& exceptionState) | 312 void RTCPeerConnection::addIceCandidate(RTCIceCandidate* iceCandidate, Exception
     State& exceptionState) | 
| 313 { | 313 { | 
| 314     if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) | 314     if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) | 
| 315         return; | 315         return; | 
| 316 | 316 | 
| 317     if (!iceCandidate) { | 317     if (!iceCandidate) { | 
| 318         exceptionState.throwDOMException(TypeMismatchError, ExceptionMessages::a
     rgumentNullOrIncorrectType(1, "RTCIceCandidate")); | 318         exceptionState.throwDOMException(TypeError, ExceptionMessages::argumentN
     ullOrIncorrectType(1, "RTCIceCandidate")); | 
| 319         return; | 319         return; | 
| 320     } | 320     } | 
| 321 | 321 | 
| 322     bool valid = m_peerHandler->addICECandidate(iceCandidate->webCandidate()); | 322     bool valid = m_peerHandler->addICECandidate(iceCandidate->webCandidate()); | 
| 323     if (!valid) | 323     if (!valid) | 
| 324         exceptionState.throwDOMException(SyntaxError, "The ICE candidate could n
     ot be added."); | 324         exceptionState.throwDOMException(SyntaxError, "The ICE candidate could n
     ot be added."); | 
| 325 } | 325 } | 
| 326 | 326 | 
| 327 void RTCPeerConnection::addIceCandidate(RTCIceCandidate* iceCandidate, PassOwnPt
     r<VoidCallback> successCallback, PassOwnPtr<RTCErrorCallback> errorCallback, Exc
     eptionState& exceptionState) | 327 void RTCPeerConnection::addIceCandidate(RTCIceCandidate* iceCandidate, PassOwnPt
     r<VoidCallback> successCallback, PassOwnPtr<RTCErrorCallback> errorCallback, Exc
     eptionState& exceptionState) | 
| 328 { | 328 { | 
| 329     if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) | 329     if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) | 
| 330         return; | 330         return; | 
| 331 | 331 | 
| 332     if (!iceCandidate) { | 332     if (!iceCandidate) { | 
| 333         exceptionState.throwDOMException(TypeMismatchError, ExceptionMessages::a
     rgumentNullOrIncorrectType(1, "RTCIceCandidate")); | 333         exceptionState.throwDOMException(TypeError, ExceptionMessages::argumentN
     ullOrIncorrectType(1, "RTCIceCandidate")); | 
| 334         return; | 334         return; | 
| 335     } | 335     } | 
| 336     ASSERT(successCallback); | 336     ASSERT(successCallback); | 
| 337     ASSERT(errorCallback); | 337     ASSERT(errorCallback); | 
| 338 | 338 | 
| 339     RefPtr<RTCVoidRequest> request = RTCVoidRequestImpl::create(executionContext
     (), successCallback, errorCallback); | 339     RefPtr<RTCVoidRequest> request = RTCVoidRequestImpl::create(executionContext
     (), successCallback, errorCallback); | 
| 340 | 340 | 
| 341     bool implemented = m_peerHandler->addICECandidate(request.release(), iceCand
     idate->webCandidate()); | 341     bool implemented = m_peerHandler->addICECandidate(request.release(), iceCand
     idate->webCandidate()); | 
| 342     if (!implemented) | 342     if (!implemented) | 
| 343         exceptionState.throwDOMException(NotSupportedError, "This method is not 
     yet implemented."); | 343         exceptionState.throwDOMException(NotSupportedError, "This method is not 
     yet implemented."); | 
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 402     return String(); | 402     return String(); | 
| 403 } | 403 } | 
| 404 | 404 | 
| 405 void RTCPeerConnection::addStream(PassRefPtr<MediaStream> prpStream, const Dicti
     onary& mediaConstraints, ExceptionState& exceptionState) | 405 void RTCPeerConnection::addStream(PassRefPtr<MediaStream> prpStream, const Dicti
     onary& mediaConstraints, ExceptionState& exceptionState) | 
| 406 { | 406 { | 
| 407     if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) | 407     if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) | 
| 408         return; | 408         return; | 
| 409 | 409 | 
| 410     RefPtr<MediaStream> stream = prpStream; | 410     RefPtr<MediaStream> stream = prpStream; | 
| 411     if (!stream) { | 411     if (!stream) { | 
| 412         exceptionState.throwDOMException(TypeMismatchError, ExceptionMessages::a
     rgumentNullOrIncorrectType(1, "MediaStream")); | 412         exceptionState.throwDOMException(TypeError, ExceptionMessages::argumentN
     ullOrIncorrectType(1, "MediaStream")); | 
| 413         return; | 413         return; | 
| 414     } | 414     } | 
| 415 | 415 | 
| 416     if (m_localStreams.contains(stream)) | 416     if (m_localStreams.contains(stream)) | 
| 417         return; | 417         return; | 
| 418 | 418 | 
| 419     blink::WebMediaConstraints constraints = MediaConstraintsImpl::create(mediaC
     onstraints, exceptionState); | 419     blink::WebMediaConstraints constraints = MediaConstraintsImpl::create(mediaC
     onstraints, exceptionState); | 
| 420     if (exceptionState.hadException()) | 420     if (exceptionState.hadException()) | 
| 421         return; | 421         return; | 
| 422 | 422 | 
| 423     m_localStreams.append(stream); | 423     m_localStreams.append(stream); | 
| 424 | 424 | 
| 425     bool valid = m_peerHandler->addStream(stream->descriptor(), constraints); | 425     bool valid = m_peerHandler->addStream(stream->descriptor(), constraints); | 
| 426     if (!valid) | 426     if (!valid) | 
| 427         exceptionState.throwDOMException(SyntaxError, "Unable to add the provide
     d stream."); | 427         exceptionState.throwDOMException(SyntaxError, "Unable to add the provide
     d stream."); | 
| 428 } | 428 } | 
| 429 | 429 | 
| 430 void RTCPeerConnection::removeStream(PassRefPtr<MediaStream> prpStream, Exceptio
     nState& exceptionState) | 430 void RTCPeerConnection::removeStream(PassRefPtr<MediaStream> prpStream, Exceptio
     nState& exceptionState) | 
| 431 { | 431 { | 
| 432     if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) | 432     if (throwExceptionIfSignalingStateClosed(m_signalingState, exceptionState)) | 
| 433         return; | 433         return; | 
| 434 | 434 | 
| 435     if (!prpStream) { | 435     if (!prpStream) { | 
| 436         exceptionState.throwDOMException(TypeMismatchError, ExceptionMessages::a
     rgumentNullOrIncorrectType(1, "MediaStream")); | 436         exceptionState.throwDOMException(TypeError, ExceptionMessages::argumentN
     ullOrIncorrectType(1, "MediaStream")); | 
| 437         return; | 437         return; | 
| 438     } | 438     } | 
| 439 | 439 | 
| 440     RefPtr<MediaStream> stream = prpStream; | 440     RefPtr<MediaStream> stream = prpStream; | 
| 441 | 441 | 
| 442     size_t pos = m_localStreams.find(stream); | 442     size_t pos = m_localStreams.find(stream); | 
| 443     if (pos == kNotFound) | 443     if (pos == kNotFound) | 
| 444         return; | 444         return; | 
| 445 | 445 | 
| 446     m_localStreams.remove(pos); | 446     m_localStreams.remove(pos); | 
| (...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 705     events.swap(m_scheduledEvents); | 705     events.swap(m_scheduledEvents); | 
| 706 | 706 | 
| 707     WillBeHeapVector<RefPtrWillBeMember<Event> >::iterator it = events.begin(); | 707     WillBeHeapVector<RefPtrWillBeMember<Event> >::iterator it = events.begin(); | 
| 708     for (; it != events.end(); ++it) | 708     for (; it != events.end(); ++it) | 
| 709         dispatchEvent((*it).release()); | 709         dispatchEvent((*it).release()); | 
| 710 | 710 | 
| 711     events.clear(); | 711     events.clear(); | 
| 712 } | 712 } | 
| 713 | 713 | 
| 714 } // namespace WebCore | 714 } // namespace WebCore | 
| OLD | NEW | 
|---|