Revision 593dea5f1b8e9d90bbcc20adcafe370e8f0b0564 authored by James Graham on 12 April 2018, 12:48:29 UTC, committed by James Graham on 12 April 2018, 12:48:29 UTC
Firefox requires a prefs file to be loaded to ensure that it doesn't make external network connections, and to make sure that other settings are appropriate for testing. Previously we always used the version of the prefs file from master, which is usually fine for nightly builds, but doesn't work with release builds if it happens that a pref changed. This change uses the correct release version of the prefs file for firefox releases and beta versions. It continues to use the master version for any nightly build; this could be fixed in some cases if we are able to access the actual commit hash used to build Firefox, but probably isn't too bad an approximation. The caching algorithm was changed so that release versions of the prefs are cached forever, and the nightly version is updated once per day (although this doesn't quite match the nightly release cadence, it's only going to fail in edge cases where the prefs were changed in the file, but the nightly version was not yet updated, of vice-versa.)
1 parent e504871
RTCRtpReceiver-getStats.https.html
<!doctype html>
<meta charset=utf-8>
<title>RTCRtpReceiver.prototype.getStats</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="RTCPeerConnection-helper.js"></script>
<script src="dictionary-helper.js"></script>
<script src="RTCStats-helper.js"></script>
<script>
'use strict';
// Test is based on the following editor draft:
// https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
// https://w3c.github.io/webrtc-stats/archives/20170614/webrtc-stats.html
// The following helper functions are called from RTCPeerConnection-helper.js:
// doSignalingHandshake
// The following helper function is called from RTCStats-helper.js
// validateStatsReport
// assert_stats_report_has_stats
/*
5.3. RTCRtpReceiver Interface
interface RTCRtpReceiver {
Promise<RTCStatsReport> getStats();
...
};
getStats
1. Let selector be the RTCRtpReceiver object on which the method was invoked.
2. Let p be a new promise, and run the following steps in parallel:
1. Gather the stats indicated by selector according to the stats selection
algorithm.
2. Resolve p with the resulting RTCStatsReport object, containing the
gathered stats.
3. Return p.
8.5. The stats selection algorithm
4. If selector is an RTCRtpReceiver, gather stats for and add the following objects
to result:
- All RTCInboundRTPStreamStats objects corresponding to selector.
- All stats objects referenced directly or indirectly by the RTCInboundRTPStreamStats
added.
*/
promise_test(async () => {
const caller = new RTCPeerConnection();
const callee = new RTCPeerConnection();
const { receiver } = caller.addTransceiver('audio');
await doSignalingHandshake(caller, callee);
const statsReport = await receiver.getStats();
validateStatsReport(statsReport);
assert_stats_report_has_stats(statsReport, ['inbound-rtp']);
}, 'receiver.getStats() via addTransceiver should return stats report containing inbound-rtp stats');
promise_test(async () => {
const caller = new RTCPeerConnection();
const callee = new RTCPeerConnection();
const stream = await navigator.mediaDevices.getUserMedia({audio:true});
const [track] = stream.getTracks();
caller.addTrack(track, stream);
await doSignalingHandshake(caller, callee);
const receiver = callee.getReceivers()[0];
const statsReport = await receiver.getStats();
validateStatsReport(statsReport);
assert_stats_report_has_stats(statsReport, ['inbound-rtp']);
}, 'receiver.getStats() via addTrack should return stats report containing inbound-rtp stats');
</script>
Computing file changes ...