Changeset 165226 in webkit
- Timestamp:
- Mar 6, 2014 3:41:24 PM (10 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r165208 r165226 1 2014-03-06 Thiago de Barros Lacerda <thiago.lacerda@openbossa.org> 2 3 [WebRTC] Updating createOffer and createAnswer methods to match WebRTC editor's draft of 01/27/2014 4 https://bugs.webkit.org/show_bug.cgi?id=129484 5 6 Reviewed by Eric Carlson. 7 8 According to the spec, createOffer and createAnswer will no longer have MediaConstraints as an argument, 9 instead they will have RTCOfferOptions and RTCOfferAnswerOptions, respectively. 10 11 * fast/mediastream/RTCPeerConnection-createAnswer-expected.txt: 12 * fast/mediastream/RTCPeerConnection-createAnswer.html: 13 * fast/mediastream/RTCPeerConnection-createOffer-expected.txt: 14 * fast/mediastream/RTCPeerConnection-createOffer.html: 15 1 16 2014-03-05 Oliver Hunt <oliver@apple.com> 2 17 -
trunk/LayoutTests/fast/mediastream/RTCPeerConnection-createAnswer-expected.txt
r160553 r165226 8 8 PASS pc.setRemoteDescription(sessionDescription, setDescriptionSucceeded, setDescriptionFailed); did not throw exception. 9 9 PASS setRemoteDescription succeeded. 10 PASS pc.createAnswer(requestSucceeded2, requestFailed2, { mandatory:{"succeed":false}}); did not throw exception.10 PASS pc.createAnswer(requestSucceeded2, requestFailed2, {}); threw exception Error: TypeMismatchError: DOM Exception 17. 11 11 PASS createAnswer request failed. 12 PASS errorReason.name is "IncompatibleConstraintsError" 13 PASS pc.createAnswer(requestSucceeded3, requestFailed3); did not throw exception. 14 PASS createAnswer request succeeded. 15 PASS sessionDescription.type is "answer" 16 PASS pc.createAnswer(requestSucceeded4, requestFailed3, {mandatory:{"succeed":true}}); did not throw exception. 17 PASS createAnswer request succeeded. 18 PASS sessionDescription.type is "answer" 12 PASS errorReason.name is "Invalid createAnswer argument." 13 PASS pc.createAnswer(requestSucceeded3, requestFailed1, {requestIdentity:"ifconfigured"}); did not throw exception. 19 14 PASS successfullyParsed is true 20 15 -
trunk/LayoutTests/fast/mediastream/RTCPeerConnection-createAnswer.html
r164602 r165226 10 10 var pc = null; 11 11 12 function requestSucceeded 4(sd)12 function requestSucceeded5(sd) 13 13 { 14 14 testPassed('createAnswer request succeeded.'); … … 20 20 } 21 21 22 function requestFailed3(reason) 23 { 24 testFailed('createAnswer request failed.'); 25 26 finishJSTest(); 27 } 28 29 function requestSucceeded3(sd) 22 function requestSucceeded4(sd) 30 23 { 31 24 testPassed('createAnswer request succeeded.'); … … 34 27 shouldBe('sessionDescription.type', '"answer"'); 35 28 36 shouldNotThrow('pc.createAnswer(requestSucceeded4, requestFailed3, {mandatory:{"succeed":true}});'); 29 shouldNotThrow('pc.createAnswer(requestSucceeded5, requestFailed1, {requestIdentity:"no"});'); 30 } 31 32 function requestSucceeded3(sd) 33 { 34 finishJSTest(); 35 testPassed('createAnswer request succeeded.'); 36 37 sessionDescription = sd; 38 shouldBe('sessionDescription.type', '"answer"'); 39 40 shouldNotThrow('pc.createAnswer(requestSucceeded4, requestFailed1, {requestIdentity:"yes"});'); 37 41 } 38 42 … … 42 46 43 47 errorReason = reason; 44 shouldBe('errorReason.name', '"IncompatibleConstraintsError"'); 45 46 shouldNotThrow('pc.createAnswer(requestSucceeded3, requestFailed3);'); 48 shouldBe('errorReason.name', '"Invalid createAnswer argument."'); 49 shouldNotThrow('pc.createAnswer(requestSucceeded3, requestFailed1, {requestIdentity:"ifconfigured"});'); 47 50 } 48 51 … … 79 82 { 80 83 testPassed('setRemoteDescription succeeded.'); 81 should NotThrow('pc.createAnswer(requestSucceeded2, requestFailed2, {mandatory:{"succeed":false}});');84 shouldThrow('pc.createAnswer(requestSucceeded2, requestFailed2, {});'); 82 85 } 83 86 -
trunk/LayoutTests/fast/mediastream/RTCPeerConnection-createOffer-expected.txt
r160553 r165226 4 4 5 5 6 PASS pc.createOffer(requestSucceeded1, requestFailed1 , {mandatory:{"succeed":true}}); did not throw exception.6 PASS pc.createOffer(requestSucceeded1, requestFailed1); did not throw exception. 7 7 PASS createOffer request succeeded. 8 8 PASS sessionDescription.type is "offer" 9 PASS pc.createOffer(requestSucceeded2, requestFailed2, { mandatory:{"succeed":false}}); did not throw exception.9 PASS pc.createOffer(requestSucceeded2, requestFailed2, {}); threw exception Error: TypeMismatchError: DOM Exception 17. 10 10 PASS createOffer request failed. 11 PASS errorReason.name is "IncompatibleConstraintsError" 12 PASS pc.createOffer(requestSucceeded3, requestFailed1); did not throw exception. 11 PASS errorReason.name is "Invalid createOffer argument." 12 PASS pc.createOffer(requestSucceeded2, requestFailed3, {requestIdentity:"yes", offerToReceiveAudio:0}); threw exception Error: TypeMismatchError: DOM Exception 17. 13 PASS createOffer request failed. 14 PASS errorReason.name is "Invalid createOffer argument." 15 PASS pc.createOffer(requestSucceeded2, requestFailed4, {requestIdentity:"yes", offerToReceiveVideo:0}); threw exception Error: TypeMismatchError: DOM Exception 17. 16 PASS createOffer request failed. 17 PASS errorReason.name is "Invalid createOffer argument." 18 PASS pc.createOffer(requestSucceeded2, requestFailed5, {offerToReceiveVideo:0, offerToReceiveAudio:0}); threw exception Error: TypeMismatchError: DOM Exception 17. 19 PASS createOffer request failed. 20 PASS errorReason.name is "Invalid createOffer argument." 21 PASS pc.createOffer(requestSucceeded2, requestFailed6, {requestIdentity:"yes", offerToReceiveVideo:"", offerToReceiveAudio:0}); threw exception Error: TypeMismatchError: DOM Exception 17. 22 PASS createOffer request failed. 23 PASS errorReason.name is "Invalid createOffer argument." 24 PASS pc.createOffer(requestSucceeded2, requestFailed7, {requestIdentity:"yes", offerToReceiveVideo:0, offerToReceiveAudio:""}); threw exception Error: TypeMismatchError: DOM Exception 17. 25 PASS createOffer request failed. 26 PASS errorReason.name is "Invalid createOffer argument." 27 PASS pc.createOffer(requestSucceeded3, requestFailed1, {requestIdentity:"yes", offerToReceiveVideo:0, offerToReceiveAudio:0}); did not throw exception. 13 28 PASS createOffer request succeeded. 14 29 PASS sessionDescription.type is "offer" -
trunk/LayoutTests/fast/mediastream/RTCPeerConnection-createOffer.html
r164602 r165226 19 19 } 20 20 21 function requestFailed7(reason) 22 { 23 testPassed('createOffer request failed.'); 24 25 errorReason = reason; 26 shouldBe('errorReason.name', '"Invalid createOffer argument."'); 27 28 shouldNotThrow('pc.createOffer(requestSucceeded3, requestFailed1, {requestIdentity:"yes", offerToReceiveVideo:0, offerToReceiveAudio:0});'); 29 } 30 31 function requestFailed6(reason) 32 { 33 testPassed('createOffer request failed.'); 34 35 errorReason = reason; 36 shouldBe('errorReason.name', '"Invalid createOffer argument."'); 37 38 shouldThrow('pc.createOffer(requestSucceeded2, requestFailed7, {requestIdentity:"yes", offerToReceiveVideo:0, offerToReceiveAudio:""});'); 39 } 40 41 function requestFailed5(reason) 42 { 43 testPassed('createOffer request failed.'); 44 45 errorReason = reason; 46 shouldBe('errorReason.name', '"Invalid createOffer argument."'); 47 48 shouldThrow('pc.createOffer(requestSucceeded2, requestFailed6, {requestIdentity:"yes", offerToReceiveVideo:"", offerToReceiveAudio:0});'); 49 } 50 51 function requestFailed4(reason) 52 { 53 testPassed('createOffer request failed.'); 54 55 errorReason = reason; 56 shouldBe('errorReason.name', '"Invalid createOffer argument."'); 57 58 shouldThrow('pc.createOffer(requestSucceeded2, requestFailed5, {offerToReceiveVideo:0, offerToReceiveAudio:0});'); 59 } 60 61 function requestFailed3(reason) 62 { 63 testPassed('createOffer request failed.'); 64 65 errorReason = reason; 66 shouldBe('errorReason.name', '"Invalid createOffer argument."'); 67 68 shouldThrow('pc.createOffer(requestSucceeded2, requestFailed4, {requestIdentity:"yes", offerToReceiveVideo:0});'); 69 } 70 21 71 function requestFailed2(reason) 22 72 { … … 24 74 25 75 errorReason = reason; 26 shouldBe('errorReason.name', '"In compatibleConstraintsError"');76 shouldBe('errorReason.name', '"Invalid createOffer argument."'); 27 77 28 should NotThrow('pc.createOffer(requestSucceeded3, requestFailed1);');78 shouldThrow('pc.createOffer(requestSucceeded2, requestFailed3, {requestIdentity:"yes", offerToReceiveAudio:0});'); 29 79 } 30 80 … … 48 98 shouldBe('sessionDescription.type', '"offer"'); 49 99 50 should NotThrow('pc.createOffer(requestSucceeded2, requestFailed2, {mandatory:{"succeed":false}});');100 shouldThrow('pc.createOffer(requestSucceeded2, requestFailed2, {});'); 51 101 } 52 102 53 103 pc = new webkitRTCPeerConnection({iceServers:[{urls:'stun:foo.com'}]}); 54 shouldNotThrow('pc.createOffer(requestSucceeded1, requestFailed1 , {mandatory:{"succeed":true}});');104 shouldNotThrow('pc.createOffer(requestSucceeded1, requestFailed1);'); 55 105 56 106 window.jsTestIsAsync = true; -
trunk/Source/WebCore/CMakeLists.txt
r165199 r165226 861 861 Modules/mediastream/RTCIceCandidate.cpp 862 862 Modules/mediastream/RTCIceCandidateEvent.cpp 863 Modules/mediastream/RTCOfferAnswerOptions.cpp 863 864 Modules/mediastream/RTCPeerConnection.cpp 864 865 Modules/mediastream/RTCSessionDescription.cpp -
trunk/Source/WebCore/ChangeLog
r165222 r165226 1 2014-03-06 Thiago de Barros Lacerda <thiago.lacerda@openbossa.org> 2 3 [WebRTC] Updating createOffer and createAnswer methods to match WebRTC editor's draft of 01/27/2014 4 https://bugs.webkit.org/show_bug.cgi?id=129484 5 6 Reviewed by Eric Carlson. 7 8 According to the spec, createOffer and createAnswer will no longer have MediaConstraints as an argument, 9 instead they will have RTCOfferOptions and RTCOfferAnswerOptions, respectively. 10 11 Existing tests were updated. 12 13 * CMakeLists.txt: 14 * GNUmakefile.list.am: 15 * Modules/mediastream/RTCOfferAnswerOptions.cpp: Added. 16 * Modules/mediastream/RTCOfferAnswerOptions.h: Added. 17 * Modules/mediastream/RTCPeerConnection.cpp: 18 (WebCore::RTCPeerConnection::createOffer): 19 (WebCore::RTCPeerConnection::createAnswer): 20 * Modules/mediastream/RTCPeerConnection.h: 21 * Modules/mediastream/RTCPeerConnection.idl: 22 * platform/mediastream/RTCPeerConnectionHandler.h: 23 * platform/mock/RTCPeerConnectionHandlerMock.cpp: 24 (WebCore::RTCPeerConnectionHandlerMock::createOffer): 25 (WebCore::RTCPeerConnectionHandlerMock::createAnswer): 26 * platform/mock/RTCPeerConnectionHandlerMock.h: 27 1 28 2014-03-06 Brian Burg <bburg@apple.com> 2 29 -
trunk/Source/WebCore/GNUmakefile.list.am
r165199 r165226 1946 1946 Source/WebCore/Modules/mediastream/RTCIceCandidateEvent.cpp \ 1947 1947 Source/WebCore/Modules/mediastream/RTCIceCandidateEvent.h \ 1948 Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.cpp \ 1949 Source/WebCore/Modules/mediastream/RTCOfferAnswerOptions.h \ 1948 1950 Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp \ 1949 1951 Source/WebCore/Modules/mediastream/RTCPeerConnection.h \ -
trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp
r164839 r165226 43 43 #include "FrameLoader.h" 44 44 #include "FrameLoaderClient.h" 45 #include "MediaConstraintsImpl.h"46 45 #include "MediaStreamEvent.h" 47 46 #include "RTCConfiguration.h" … … 53 52 #include "RTCIceCandidateDescriptor.h" 54 53 #include "RTCIceCandidateEvent.h" 54 #include "RTCOfferAnswerOptions.h" 55 55 #include "RTCPeerConnectionErrorCallback.h" 56 56 #include "RTCSessionDescription.h" … … 204 204 } 205 205 206 void RTCPeerConnection::createOffer(PassRefPtr<RTCSessionDescriptionCallback> successCallback, PassRefPtr<RTCPeerConnectionErrorCallback> errorCallback, const Dictionary& mediaConstraints, ExceptionCode& ec)206 void RTCPeerConnection::createOffer(PassRefPtr<RTCSessionDescriptionCallback> successCallback, PassRefPtr<RTCPeerConnectionErrorCallback> errorCallback, const Dictionary& offerOptions, ExceptionCode& ec) 207 207 { 208 208 if (m_signalingState == SignalingStateClosed) { … … 216 216 } 217 217 218 RefPtr<MediaConstraints> constraints = MediaConstraintsImpl::create(mediaConstraints, ec); 219 if (ec) 220 return; 218 RefPtr<RTCOfferOptions> options = RTCOfferOptions::create(offerOptions, ec); 219 if (ec) { 220 callOnMainThread([=] { 221 RefPtr<DOMError> error = DOMError::create("Invalid createOffer argument."); 222 errorCallback->handleEvent(error.get()); 223 }); 224 return; 225 } 221 226 222 227 RefPtr<RTCSessionDescriptionRequestImpl> request = RTCSessionDescriptionRequestImpl::create(scriptExecutionContext(), successCallback, errorCallback); 223 m_peerHandler->createOffer(request.release(), constraints);224 } 225 226 void RTCPeerConnection::createAnswer(PassRefPtr<RTCSessionDescriptionCallback> successCallback, PassRefPtr<RTCPeerConnectionErrorCallback> errorCallback, const Dictionary& mediaConstraints, ExceptionCode& ec)228 m_peerHandler->createOffer(request.release(), options.release()); 229 } 230 231 void RTCPeerConnection::createAnswer(PassRefPtr<RTCSessionDescriptionCallback> successCallback, PassRefPtr<RTCPeerConnectionErrorCallback> errorCallback, const Dictionary& answerOptions, ExceptionCode& ec) 227 232 { 228 233 if (m_signalingState == SignalingStateClosed) { … … 236 241 } 237 242 238 RefPtr<MediaConstraints> constraints = MediaConstraintsImpl::create(mediaConstraints, ec); 239 if (ec) 240 return; 243 RefPtr<RTCOfferAnswerOptions> options = RTCOfferAnswerOptions::create(answerOptions, ec); 244 if (ec) { 245 callOnMainThread([=] { 246 RefPtr<DOMError> error = DOMError::create("Invalid createAnswer argument."); 247 errorCallback->handleEvent(error.get()); 248 }); 249 return; 250 } 241 251 242 252 RefPtr<RTCSessionDescriptionRequestImpl> request = RTCSessionDescriptionRequestImpl::create(scriptExecutionContext(), successCallback, errorCallback); 243 m_peerHandler->createAnswer(request.release(), constraints.release());253 m_peerHandler->createAnswer(request.release(), options.release()); 244 254 } 245 255 -
trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h
r164839 r165226 49 49 namespace WebCore { 50 50 51 class MediaConstraints;52 51 class MediaStreamTrack; 53 52 class RTCConfiguration; … … 65 64 ~RTCPeerConnection(); 66 65 67 void createOffer(PassRefPtr<RTCSessionDescriptionCallback>, PassRefPtr<RTCPeerConnectionErrorCallback>, const Dictionary& mediaConstraints, ExceptionCode&);66 void createOffer(PassRefPtr<RTCSessionDescriptionCallback>, PassRefPtr<RTCPeerConnectionErrorCallback>, const Dictionary& offerOptions, ExceptionCode&); 68 67 69 void createAnswer(PassRefPtr<RTCSessionDescriptionCallback>, PassRefPtr<RTCPeerConnectionErrorCallback>, const Dictionary& mediaConstraints, ExceptionCode&);68 void createAnswer(PassRefPtr<RTCSessionDescriptionCallback>, PassRefPtr<RTCPeerConnectionErrorCallback>, const Dictionary& answerOptions, ExceptionCode&); 70 69 71 70 void setLocalDescription(PassRefPtr<RTCSessionDescription>, PassRefPtr<VoidCallback>, PassRefPtr<RTCPeerConnectionErrorCallback>, ExceptionCode&); -
trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.idl
r164839 r165226 40 40 InterfaceName=webkitRTCPeerConnection, 41 41 ] interface RTCPeerConnection { 42 [RaisesException] void createOffer(RTCSessionDescriptionCallback successCallback, [Default=Undefined] optional RTCPeerConnectionErrorCallback failureCallback, optional Dictionary mediaConstraints);42 [RaisesException] void createOffer(RTCSessionDescriptionCallback successCallback, [Default=Undefined] optional RTCPeerConnectionErrorCallback failureCallback, optional Dictionary offerOptions); 43 43 44 [RaisesException] void createAnswer(RTCSessionDescriptionCallback successCallback, [Default=Undefined] optional RTCPeerConnectionErrorCallback failureCallback, optional Dictionary mediaConstraints);44 [RaisesException] void createAnswer(RTCSessionDescriptionCallback successCallback, [Default=Undefined] optional RTCPeerConnectionErrorCallback failureCallback, optional Dictionary answerOptions); 45 45 46 46 [RaisesException] void setLocalDescription(RTCSessionDescription description, [Default=Undefined] optional VoidCallback successCallback, [Default=Undefined] optional RTCPeerConnectionErrorCallback failureCallback); -
trunk/Source/WebCore/platform/mediastream/RTCPeerConnectionHandler.h
r164839 r165226 40 40 namespace WebCore { 41 41 42 class MediaConstraints;43 42 class MediaStreamSource; 44 43 class RTCConfiguration; … … 46 45 class RTCDataChannelHandler; 47 46 class RTCIceCandidateDescriptor; 47 class RTCOfferOptions; 48 class RTCOfferAnswerOptions; 48 49 class RTCPeerConnectionHandler; 49 50 class RTCPeerConnectionHandlerClient; … … 83 84 virtual bool initialize(PassRefPtr<RTCConfiguration>) = 0; 84 85 85 virtual void createOffer(PassRefPtr<RTCSessionDescriptionRequest>, PassRefPtr< MediaConstraints>) = 0;86 virtual void createAnswer(PassRefPtr<RTCSessionDescriptionRequest>, PassRefPtr< MediaConstraints>) = 0;86 virtual void createOffer(PassRefPtr<RTCSessionDescriptionRequest>, PassRefPtr<RTCOfferOptions>) = 0; 87 virtual void createAnswer(PassRefPtr<RTCSessionDescriptionRequest>, PassRefPtr<RTCOfferAnswerOptions>) = 0; 87 88 virtual void setLocalDescription(PassRefPtr<RTCVoidRequest>, PassRefPtr<RTCSessionDescriptionDescriptor>) = 0; 88 89 virtual void setRemoteDescription(PassRefPtr<RTCVoidRequest>, PassRefPtr<RTCSessionDescriptionDescriptor>) = 0; -
trunk/Source/WebCore/platform/mock/RTCPeerConnectionHandlerMock.cpp
r164839 r165226 59 59 } 60 60 61 void RTCPeerConnectionHandlerMock::createOffer(PassRefPtr<RTCSessionDescriptionRequest> request, PassRefPtr< MediaConstraints> constraints)61 void RTCPeerConnectionHandlerMock::createOffer(PassRefPtr<RTCSessionDescriptionRequest> request, PassRefPtr<RTCOfferOptions>) 62 62 { 63 String succeedValue; 64 RefPtr<SessionRequestNotifier> notifier; 65 if (constraints->getMandatoryConstraintValue("succeed", succeedValue) && succeedValue == "false") 66 notifier = adoptRef(new SessionRequestNotifier(request, 0, RTCPeerConnectionHandler::incompatibleConstraintsErrorName())); 67 else 68 notifier = adoptRef(new SessionRequestNotifier(request, RTCSessionDescriptionDescriptor::create("offer", "local"))); 69 63 RefPtr<SessionRequestNotifier> notifier = adoptRef(new SessionRequestNotifier(request, RTCSessionDescriptionDescriptor::create("offer", "local"))); 70 64 m_timerEvents.append(adoptRef(new TimerEvent(this, notifier))); 71 65 } 72 66 73 void RTCPeerConnectionHandlerMock::createAnswer(PassRefPtr<RTCSessionDescriptionRequest> request, PassRefPtr< MediaConstraints> constraints)67 void RTCPeerConnectionHandlerMock::createAnswer(PassRefPtr<RTCSessionDescriptionRequest> request, PassRefPtr<RTCOfferAnswerOptions>) 74 68 { 75 RefPtr<SessionRequestNotifier> notifier; 76 // We can only create an answer if we have already had an offer and the remote session description is stored. 77 String succeedValue; 78 if (constraints->getMandatoryConstraintValue("succeed", succeedValue) && succeedValue == "false") 79 notifier = adoptRef(new SessionRequestNotifier(request, 0, RTCPeerConnectionHandler::incompatibleConstraintsErrorName())); 80 else 81 notifier = adoptRef(new SessionRequestNotifier(request, RTCSessionDescriptionDescriptor::create("answer", "local"))); 82 69 RefPtr<SessionRequestNotifier> notifier = adoptRef(new SessionRequestNotifier(request, RTCSessionDescriptionDescriptor::create("answer", "local"))); 83 70 m_timerEvents.append(adoptRef(new TimerEvent(this, notifier))); 84 71 } -
trunk/Source/WebCore/platform/mock/RTCPeerConnectionHandlerMock.h
r164839 r165226 44 44 virtual bool initialize(PassRefPtr<RTCConfiguration>) override; 45 45 46 virtual void createOffer(PassRefPtr<RTCSessionDescriptionRequest>, PassRefPtr< MediaConstraints>) override;47 virtual void createAnswer(PassRefPtr<RTCSessionDescriptionRequest>, PassRefPtr< MediaConstraints>) override;46 virtual void createOffer(PassRefPtr<RTCSessionDescriptionRequest>, PassRefPtr<RTCOfferOptions>) override; 47 virtual void createAnswer(PassRefPtr<RTCSessionDescriptionRequest>, PassRefPtr<RTCOfferAnswerOptions>) override; 48 48 virtual void setLocalDescription(PassRefPtr<RTCVoidRequest>, PassRefPtr<RTCSessionDescriptionDescriptor>) override; 49 49 virtual void setRemoteDescription(PassRefPtr<RTCVoidRequest>, PassRefPtr<RTCSessionDescriptionDescriptor>) override;
Note: See TracChangeset
for help on using the changeset viewer.