| 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 |