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

Side by Side Diff: LayoutTests/imported/web-platform-tests/webrtc/promises-call.html

Issue 1160513003: W3C Test: Import web-platform-tests/html/browsers (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebase, bug links Created 5 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « LayoutTests/imported/web-platform-tests/subresource-integrity/refresh-header.js.headers ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 <!doctype html> 1 <!doctype html>
2 <!-- 2 <!--
3 This test uses no media, and thus does not require fake media devices. 3 This test uses data only, and thus does not require fake media devices.
4 --> 4 -->
5 5
6 <html> 6 <html>
7 <head> 7 <head>
8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 8 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
9 <title>RTCPeerConnection No-Media Connection Test</title> 9 <title>RTCPeerConnection Data-Only Connection Test with Promises</title>
10 </head> 10 </head>
11 <body> 11 <body>
12 <div id="log"></div> 12 <div id="log"></div>
13 <h2>iceConnectionState info</h2> 13 <h2>iceConnectionState info</h2>
14 <div id="stateinfo"> 14 <div id="stateinfo">
15 </div> 15 </div>
16 16
17 <!-- These files are in place when executing on W3C. --> 17 <!-- These files are in place when executing on W3C. -->
18 <script src="../../../resources/testharness.js"></script> 18 <script src="../../../resources/testharness.js"></script>
19 <script src="../../../resources/testharnessreport.js"></script> 19 <script src="../../../resources/testharnessreport.js"></script>
20 <script src="../../../resources/vendor-prefix.js" 20 <script src="../../../resources/vendor-prefix.js"
21 data-prefixed-objects= 21 data-prefixed-objects=
22 '[{"ancestors":["window"], "name":"RTCPeerConnection"}, 22 '[{"ancestors":["window"], "name":"RTCPeerConnection"},
23 {"ancestors":["window"], "name":"RTCSessionDescription"}, 23 {"ancestors":["window"], "name":"RTCSessionDescription"},
24 {"ancestors":["window"], "name":"RTCIceCandidate"}]' 24 {"ancestors":["window"], "name":"RTCIceCandidate"}]'
25 > 25 >
26 </script> 26 </script>
27 <script type="text/javascript"> 27 <script type="text/javascript">
28 var test = async_test('Can set up a basic WebRTC call with no data.'); 28 var test = async_test('Can set up a basic WebRTC call with only data using pro mises.');
29 29
30 var gFirstConnection = null; 30 var gFirstConnection = null;
31 var gSecondConnection = null; 31 var gSecondConnection = null;
32 32
33 var onOfferCreated = test.step_func(function(offer) {
34 // TODO: Switch to promise-based interface.
35 gFirstConnection.setLocalDescription(offer, ignoreSuccess,
36 failed('setLocalDescription first'));
37
38 // This would normally go across the application's signaling solution.
39 // In our case, the "signaling" is to call this function.
40 receiveCall(offer.sdp);
41 });
42
43 function receiveCall(offerSdp) {
44
45 var parsedOffer = new RTCSessionDescription({ type: 'offer',
46 sdp: offerSdp });
47 // These functions use the legacy interface extensions to RTCPeerConnection.
48 // TODO: Switch to promise-based interfaces.
49 gSecondConnection.setRemoteDescription(parsedOffer,
50 function() {
51 gSecondConnection.createAnswer(onAnswerCreated,
52 failed('createAnswer'));
53 },
54 failed('setRemoteDescription second'));
55 };
56
57 var onAnswerCreated = test.step_func(function(answer) {
58 gSecondConnection.setLocalDescription(answer, ignoreSuccess,
59 failed('setLocalDescription second'));
60
61 // Similarly, this would go over the application's signaling solution.
62 handleAnswer(answer.sdp);
63 });
64
65 function handleAnswer(answerSdp) {
66 var parsedAnswer = new RTCSessionDescription({ type: 'answer',
67 sdp: answerSdp });
68 gFirstConnection.setRemoteDescription(parsedAnswer, ignoreSuccess,
69 failed('setRemoteDescription first'));
70 };
71
72 var onIceCandidateToFirst = test.step_func(function(event) { 33 var onIceCandidateToFirst = test.step_func(function(event) {
73 // If event.candidate is null = no more candidates. 34 // If event.candidate is null = no more candidates.
74 if (event.candidate) { 35 if (event.candidate) {
75 var candidate = new RTCIceCandidate(event.candidate); 36 var candidate = new RTCIceCandidate(event.candidate);
76 gSecondConnection.addIceCandidate(candidate); 37 gSecondConnection.addIceCandidate(candidate);
77 } 38 }
78 }); 39 });
79 40
80 var onIceCandidateToSecond = test.step_func(function(event) { 41 var onIceCandidateToSecond = test.step_func(function(event) {
81 if (event.candidate) { 42 if (event.candidate) {
(...skipping 26 matching lines...) Expand all
108 if (gFirstConnection.iceConnectionState == 'completed' && 69 if (gFirstConnection.iceConnectionState == 'completed' &&
109 gSecondConnection.iceConnectionState == 'connected') { 70 gSecondConnection.iceConnectionState == 'connected') {
110 test.done() 71 test.done()
111 } 72 }
112 if (gFirstConnection.iceConnectionState == 'completed' && 73 if (gFirstConnection.iceConnectionState == 'completed' &&
113 gSecondConnection.iceConnectionState == 'completed') { 74 gSecondConnection.iceConnectionState == 'completed') {
114 test.done() 75 test.done()
115 } 76 }
116 }); 77 });
117 78
118 // Returns a suitable error callback.
119 function failed(function_name) {
120 return test.step_func(function() {
121 assert_unreached('WebRTC called error callback for ' + function_name);
122 });
123 }
124
125 // Returns a suitable do-nothing.
126 function ignoreSuccess(function_name) {
127 }
128
129 // This function starts the test. 79 // This function starts the test.
130 test.step(function() { 80 test.step(function() {
131 gFirstConnection = new RTCPeerConnection(null); 81 gFirstConnection = new RTCPeerConnection(null);
132 gFirstConnection.onicecandidate = onIceCandidateToFirst; 82 gFirstConnection.onicecandidate = onIceCandidateToFirst;
133 gFirstConnection.oniceconnectionstatechange = onIceConnectionStateChange; 83 gFirstConnection.oniceconnectionstatechange = onIceConnectionStateChange;
134 84
135 gSecondConnection = new RTCPeerConnection(null); 85 gSecondConnection = new RTCPeerConnection(null);
136 gSecondConnection.onicecandidate = onIceCandidateToSecond; 86 gSecondConnection.onicecandidate = onIceCandidateToSecond;
137 gSecondConnection.onaddstream = onRemoteStream; 87 gSecondConnection.onaddstream = onRemoteStream;
138 gSecondConnection.oniceconnectionstatechange = onIceConnectionStateChange; 88 gSecondConnection.oniceconnectionstatechange = onIceConnectionStateChange;
139 89
140 // The offerToReceiveVideo is necessary and sufficient to make 90 // The createDataChannel is necessary and sufficient to make
141 // an actual connection. 91 // sure the ICE connection be attempted.
142 // TODO: Use a promise-based API. This is legacy. 92 gFirstConnection.createDataChannel('channel');
143 gFirstConnection.createOffer(onOfferCreated, failed('createOffer'), 93
144 {offerToReceiveVideo: true}); 94 var atStep = 'Create offer';
95
96 gFirstConnection.createOffer()
97 .then(function(offer) {
98 atStep = 'Set local description at first';
99 return gFirstConnection.setLocalDescription(offer);
100 })
101 .then(function() {
102 atStep = 'Set remote description at second';
103 return gSecondConnection.setRemoteDescription(
104 gFirstConnection.localDescription);
105 })
106 .then(function() {
107 atStep = 'Create answer';
108 return gSecondConnection.createAnswer()
109 })
110 .then(function(answer) {
111 atStep = 'Set local description at second';
112 return gSecondConnection.setLocalDescription(answer);
113 })
114 .then(function() {
115 atStep = 'Set remote description at first';
116 return gFirstConnection.setRemoteDescription(
117 gSecondConnection.localDescription);
118 })
119 .then(function() {
120 atStep = 'Negotiation completed';
121 })
122 .catch(test.step_func(function(e) {
123 assert_unreached('Error ' + e.name + ': ' + e.message +
124 ' happened at step ' + atStep);
125 }));
145 }); 126 });
146 </script> 127 </script>
147 128
148 </body> 129 </body>
149 </html> 130 </html>
OLDNEW
« no previous file with comments | « LayoutTests/imported/web-platform-tests/subresource-integrity/refresh-header.js.headers ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698