OLD | NEW |
1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> | 1 <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <script src="../../resources/testharness.js"></script> | 4 <script src="../../resources/testharness.js"></script> |
5 <script src="../../resources/testharnessreport.js"></script> | 5 <script src="../../resources/testharnessreport.js"></script> |
6 </head> | 6 </head> |
7 <body> | 7 <body> |
8 <script> | 8 <script> |
9 function onIceChange2() | |
10 { | |
11 if (window.pc.iceConnectionState === "closed") { | |
12 calledCallbacks.push("iceConnectionState closed"); | |
13 assert_array_equals(calledCallbacks, [ | |
14 'iceConnectionState complete', | |
15 'expectedTypeError', | |
16 'expectedTypeError', | |
17 'expectedTypeError', | |
18 'expectedTypeError', | |
19 'success1', | |
20 'success2', | |
21 'success3', | |
22 'success4', | |
23 'iceConnectionState closed' | |
24 ]); | |
25 window.testRTC.done(); | |
26 } | |
27 } | |
28 | 9 |
29 function addIceCandidateSuccess1() | 10 async_test(function(t) { |
30 { | 11 const localPeerConnection = new webkitRTCPeerConnection(null, null); |
31 calledCallbacks.push('success1'); | 12 localPeerConnection.close(); |
32 window.pc.addIceCandidate({candidate: "candidate", sdpMid: 0}, addIceCandida
teSuccess2, unexpectedCallback); | |
33 } | |
34 | 13 |
35 function addIceCandidateSuccess2() | 14 let counter = 0; |
36 { | 15 window.events = []; |
37 calledCallbacks.push('success2'); | |
38 window.pc.addIceCandidate({candidate: "candidate", sdpMLineIndex: 0}, addIce
CandidateSuccess3, unexpectedCallback); | |
39 } | |
40 | 16 |
41 function addIceCandidateSuccess3() | 17 Promise.resolve().then(_ => events[counter++] = 1); |
42 { | |
43 calledCallbacks.push('success3'); | |
44 window.pc.addIceCandidate({candidate: "candidate", sdpMid: 0, sdpMLineIndex:
0}, addIceCandidateSuccess4, unexpectedCallback); | |
45 } | |
46 | 18 |
47 function addIceCandidateSuccess4() | 19 const iceCandidate = new RTCIceCandidate({candidate: 'nano nano'}); |
48 { | |
49 calledCallbacks.push('success4'); | |
50 window.pc.oniceconnectionstatechange = onIceChange2; | |
51 window.pc.close(); | |
52 } | |
53 | 20 |
54 function unexpectedCallback() | 21 const unexpectedCallback = t.step_func(function() { |
55 { | 22 assert_unreached('Unexpected callback'); |
56 assert_unreached('Unexpected callback'); | 23 }); |
57 } | |
58 | 24 |
59 function expectedTypeError(error) | 25 localPeerConnection.addIceCandidate(iceCandidate, unexpectedCallback, t.step
_func(error => { |
60 { | |
61 assert_equals(error.name, 'TypeError'); | |
62 calledCallbacks.push('expectedTypeError'); | |
63 } | |
64 | |
65 function onIceChange1() | |
66 { | |
67 if (window.pc.iceConnectionState === "completed") { | |
68 calledCallbacks.push('iceConnectionState complete'); | |
69 var iceCandidate = new RTCIceCandidate({candidate: "nano nano"}); | |
70 window.pc.addIceCandidate(null, unexpectedCallback, unexpectedCallback).
catch(expectedTypeError); | |
71 window.pc.addIceCandidate({candidate: "candidate"}, unexpectedCallback,
unexpectedCallback).catch(expectedTypeError); | |
72 window.pc.addIceCandidate(iceCandidate, null, unexpectedCallback).catch(
expectedTypeError); | |
73 window.pc.addIceCandidate(iceCandidate, unexpectedCallback, null).catch(
expectedTypeError); | |
74 window.pc.addIceCandidate(iceCandidate, addIceCandidateSuccess1, unexpec
tedCallback); | |
75 } | |
76 } | |
77 | |
78 function testExecutionOrderClosedConnection() | |
79 { | |
80 var localPeerConnection = new webkitRTCPeerConnection(null, null); | |
81 localPeerConnection.close(); | |
82 var counter = 0; | |
83 window.events = []; | |
84 Promise.resolve().then(_ => events[counter++] = 1); | |
85 var iceCandidate = new RTCIceCandidate({candidate:"nano nano"}); | |
86 localPeerConnection.addIceCandidate(iceCandidate, unexpectedCallback, error
=> { | |
87 assert_equals(error.name, 'InvalidStateError'); | 26 assert_equals(error.name, 'InvalidStateError'); |
88 assert_equals(error.toString(), 'InvalidStateError: The RTCPeerConnectio
n\'s signalingState is \'closed\'.'); | 27 assert_equals(error.toString(), 'InvalidStateError: The RTCPeerConnectio
n\'s signalingState is \'closed\'.'); |
89 events[counter++] = 2; | 28 events[counter++] = 2; |
90 }); | 29 })); |
91 Promise.resolve().then(_ => { | 30 |
| 31 Promise.resolve().then(t.step_func_done(_ => { |
92 events[counter++] = 3; | 32 events[counter++] = 3; |
93 assert_array_equals(events, [1, 2, 3]); | 33 assert_array_equals(events, [1, 2, 3]); |
| 34 })); |
| 35 }, 'Tests closed connection execution order.'); |
| 36 |
| 37 async_test(function(t) { |
| 38 const unexpectedCallback = t.step_func(function() { |
| 39 assert_unreached('Unexpected callback'); |
94 }); | 40 }); |
95 } | |
96 | 41 |
97 window.calledCallbacks = []; | 42 const expectedTypeError = t.step_func(function(error) { |
98 window.testRTC = async_test("Tests the RTCPeerConnection Ice functionality."); | 43 assert_equals(error.name, 'TypeError'); |
| 44 calledCallbacks.push('expectedTypeError'); |
| 45 }); |
99 | 46 |
100 testExecutionOrderClosedConnection(); | 47 const addIceCandidateSuccess1 = t.step_func(function() { |
101 window.pc = new webkitRTCPeerConnection(null, null); | 48 calledCallbacks.push('success1'); |
102 window.pc.oniceconnectionstatechange = onIceChange1; | 49 pc.addIceCandidate({candidate: 'candidate', sdpMid: 0}, addIceCandidateS
uccess2, unexpectedCallback); |
| 50 }); |
| 51 |
| 52 const addIceCandidateSuccess2 = t.step_func(function() { |
| 53 calledCallbacks.push('success2'); |
| 54 pc.addIceCandidate({candidate: 'candidate', sdpMLineIndex: 0}, addIceCan
didateSuccess3, unexpectedCallback); |
| 55 }); |
| 56 |
| 57 const addIceCandidateSuccess3 = t.step_func(function() { |
| 58 calledCallbacks.push('success3'); |
| 59 pc.addIceCandidate({candidate: 'candidate', sdpMid: 0, sdpMLineIndex: 0}
, addIceCandidateSuccess4, unexpectedCallback); |
| 60 }); |
| 61 |
| 62 const addIceCandidateSuccess4 = t.step_func(function() { |
| 63 calledCallbacks.push('success4'); |
| 64 pc.oniceconnectionstatechange = t.step_func_done(onIceChange2); |
| 65 pc.close(); |
| 66 }); |
| 67 |
| 68 const onIceChange1 = t.step_func(function() { |
| 69 if (pc.iceConnectionState === 'completed') { |
| 70 calledCallbacks.push('iceConnectionState complete'); |
| 71 const iceCandidate = new RTCIceCandidate({candidate: 'nano nano'}); |
| 72 pc.addIceCandidate(null, unexpectedCallback, unexpectedCallback).cat
ch(expectedTypeError); |
| 73 pc.addIceCandidate({candidate: 'candidate'}, unexpectedCallback, une
xpectedCallback).catch(expectedTypeError); |
| 74 pc.addIceCandidate(iceCandidate, null, unexpectedCallback).catch(exp
ectedTypeError); |
| 75 pc.addIceCandidate(iceCandidate, unexpectedCallback, null).catch(exp
ectedTypeError); |
| 76 pc.addIceCandidate(iceCandidate, addIceCandidateSuccess1, unexpected
Callback); |
| 77 } |
| 78 }); |
| 79 |
| 80 const onIceChange2 = t.step_func_done(function() { |
| 81 if (pc.iceConnectionState === 'closed') { |
| 82 calledCallbacks.push('iceConnectionState closed'); |
| 83 assert_array_equals(calledCallbacks, [ |
| 84 'iceConnectionState complete', |
| 85 'expectedTypeError', |
| 86 'expectedTypeError', |
| 87 'expectedTypeError', |
| 88 'expectedTypeError', |
| 89 'success1', |
| 90 'success2', |
| 91 'success3', |
| 92 'success4', |
| 93 'iceConnectionState closed' |
| 94 ]); |
| 95 } |
| 96 }); |
| 97 |
| 98 const calledCallbacks = []; |
| 99 const pc = new webkitRTCPeerConnection(null, null); |
| 100 pc.oniceconnectionstatechange = t.step_func(onIceChange1); |
| 101 }, 'Tests the RTCPeerConnection Ice functionality.'); |
103 </script> | 102 </script> |
104 </body> | 103 </body> |
105 </html> | 104 </html> |
OLD | NEW |