OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <html> | 2 <html> |
3 <head> | 3 <head> |
4 <title>RTCPeerConnection.getStats</title> | 4 <title>RTCPeerConnection.getStats</title> |
5 <script src="../../resources/testharness.js"></script> | 5 <script src="../../resources/testharness.js"></script> |
6 <script src="../../resources/testharnessreport.js"></script> | 6 <script src="../../resources/testharnessreport.js"></script> |
7 </head> | 7 </head> |
8 <body> | 8 <body> |
9 <script> | 9 <script> |
10 var pc = new webkitRTCPeerConnection(null); | 10 var pc = new webkitRTCPeerConnection(null); |
11 | 11 |
| 12 function stringify_equals(d1, d2) { |
| 13 return JSON.stringify(d1) == JSON.stringify(d2); |
| 14 } |
| 15 |
| 16 function assert_expected_report(report) { |
| 17 assert_true(report != null); |
| 18 var statsCount = 0; |
| 19 report.forEach(function(s) { |
| 20 assert_true(s != null); |
| 21 statsCount++; |
| 22 assert_true(stringify_equals(s, report.get(s.id))); |
| 23 }); |
| 24 |
| 25 // Verify that the report contains the same stats that |
| 26 // |MockWebRTCPeerConnectionHandler::getStats| should produce. |
| 27 assert_equals(statsCount, 1); |
| 28 var stats = report.get('mock-stats-01'); |
| 29 assert_true(stats != null); |
| 30 assert_equals(stats.type, 'mock-stats'); |
| 31 assert_equals(stats.timestamp, 1234.0); |
| 32 assert_equals(stats.int32, 42); |
| 33 assert_equals(stats.uint32, 42); |
| 34 assert_equals(stats.int64, 42); |
| 35 assert_equals(stats.uint64, 42); |
| 36 assert_equals(stats.double, 42); |
| 37 assert_equals(stats.string, '42'); |
| 38 assert_true(stringify_equals(stats.sequenceInt32, [42])); |
| 39 assert_true(stringify_equals(stats.sequenceUint32, [42])); |
| 40 assert_true(stringify_equals(stats.sequenceInt64, [42])); |
| 41 assert_true(stringify_equals(stats.sequenceUint64, [42])); |
| 42 assert_true(stringify_equals(stats.sequenceDouble, [42])); |
| 43 assert_true(stringify_equals(stats.sequenceString, ['42'])); |
| 44 } |
| 45 |
12 promise_test(function() { | 46 promise_test(function() { |
13 return navigator.mediaDevices.getUserMedia({audio:true, video:true}) | 47 return navigator.mediaDevices.getUserMedia({audio:true, video:true}) |
14 .then(function(mediaStream) { | 48 .then(function(mediaStream) { |
15 pc.addStream(mediaStream); | 49 pc.addStream(mediaStream); |
16 var selector = pc.getLocalStreams()[0].getVideoTracks()[0]; | 50 var selector = pc.getLocalStreams()[0].getVideoTracks()[0]; |
17 assert_not_equals(selector, null); | 51 assert_not_equals(selector, null); |
18 return pc.getStats(selector) | 52 return pc.getStats(selector) |
19 .then(function(statsReport) { | 53 .then(function(report) { |
20 assert_unreached('The promise should be rejected.'); | 54 assert_expected_report(report); |
21 }, function(reason) { | |
22 // Expecting promise to be rejected until getStats is implemented. | |
23 // crbug.com/627816 | |
24 }); | 55 }); |
25 }); | 56 }); |
26 }, 'getStats(MediaStreamTrack selector)'); | 57 }, 'getStats(MediaStreamTrack selector)'); |
27 | 58 |
28 promise_test(function() { | 59 promise_test(function() { |
29 return navigator.mediaDevices.getUserMedia({audio:true, video:true}) | 60 return navigator.mediaDevices.getUserMedia({audio:true, video:true}) |
30 .then(function(mediaStream) { | 61 .then(function(mediaStream) { |
31 pc.addStream(mediaStream); | 62 pc.addStream(mediaStream); |
32 return pc.getStats(null) | 63 return pc.getStats(null) |
33 .then(function(statsReport) { | 64 .then(function(report) { |
34 assert_unreached('The promise should be rejected.'); | 65 assert_expected_report(report); |
35 }, function(reason) { | |
36 // Expecting promise to be rejected until getStats is implemented. | |
37 // crbug.com/627816 | |
38 }); | 66 }); |
39 }); | 67 }); |
40 }, 'getStats(null)'); | 68 }, 'getStats(null)'); |
41 | 69 |
42 promise_test(function() { | 70 promise_test(function() { |
43 return navigator.mediaDevices.getUserMedia({audio:true, video:true}) | 71 return navigator.mediaDevices.getUserMedia({audio:true, video:true}) |
44 .then(function(mediaStream) { | 72 .then(function(mediaStream) { |
45 pc.addStream(mediaStream); | 73 pc.addStream(mediaStream); |
46 return pc.getStats() | 74 return pc.getStats() |
47 .then(function(statsReport) { | 75 .then(function(report) { |
48 assert_unreached('The promise should be rejected.'); | 76 assert_expected_report(report); |
49 }, function(reason) { | |
50 // Expecting promise to be rejected until getStats is implemented. | |
51 // crbug.com/627816 | |
52 }); | 77 }); |
53 }); | 78 }); |
54 }, 'getStats()'); | 79 }, 'getStats()'); |
55 </script> | 80 </script> |
56 </body> | 81 </body> |
57 </html> | 82 </html> |
OLD | NEW |