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

Side by Side Diff: third_party/WebKit/LayoutTests/fast/peerconnection/RTCPeerConnection-getStats-promise.html

Issue 2363673002: Promise-based RTCPeerConnection::getStats implementation. (Closed)
Patch Set: RTCStatsReport.idl behind getStats-flag instead of updating virtual/stable/webexposed/global-interf… Created 4 years, 2 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
OLDNEW
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>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698