forked from mirrors/gecko-dev
Backed out changeset 9b8435c1c982 (bug 1860492) Backed out changeset 08603e5ea8a0 (bug 1860492) Backed out changeset 93086bc64d37 (bug 1860492) Backed out changeset f8cbb9933469 (bug 1860492) Backed out changeset f5e2a92235f1 (bug 1860492) Backed out changeset 0038d6d54690 (bug 1860492) Backed out changeset 24a1fb93d4a8 (bug 1860492) Backed out changeset c2c11ee3f79f (bug 1860492) Backed out changeset 9983c1ddee85 (bug 1860492) Backed out changeset b9286e049dea (bug 1860492) Backed out changeset d1d98783c88d (bug 1860492) Backed out changeset 22dd17861e80 (bug 1860492) Backed out changeset 7d823668fba7 (bug 1860492) Backed out changeset 024863677345 (bug 1860492)
90 lines
3.8 KiB
HTML
90 lines
3.8 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
Mozilla Bug:
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=1369309
|
|
Tor Ticket:
|
|
https://trac.torproject.org/projects/tor/ticket/15757
|
|
-->
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Test for Bug 1369309</title>
|
|
<script src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script type="application/javascript" src="manifest.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
</head>
|
|
<body>
|
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=682299">Mozilla Bug 1369309</a>
|
|
<a target="_blank" href="https://trac.torproject.org/projects/tor/ticket/15757">Tor Ticket 15757</a>
|
|
|
|
<!-- The main testing script -->
|
|
<script class="testbody" type="text/javascript">
|
|
var manager = new MediaTestManager;
|
|
const SPOOFED_FRAMES_PER_SECOND = 30;
|
|
const SPOOFED_DROPPED_RATIO = 0.05;
|
|
const MS_PER_TIME_ATOM = 100; // Not the default anymore, but what we test here.
|
|
// Push the setting of 'privacy.resistFingerprinting' into gTestPrefs, which
|
|
// will be set during MediaTestManager.runTests().
|
|
gTestPrefs.push(
|
|
["privacy.resistFingerprinting", true],
|
|
["privacy.resistFingerprinting.reduceTimerPrecision.microseconds", MS_PER_TIME_ATOM * 1000],
|
|
["privacy.resistFingerprinting.reduceTimerPrecision.jitter", false],
|
|
// We use 240p as the target resolution since 480p is greater than every video
|
|
// source in our test suite, so we need to use 240p here for allowing us to
|
|
// test dropped rate here.
|
|
["privacy.resistFingerprinting.target_video_res", 240]
|
|
);
|
|
var testCases = [
|
|
{ name:"320x240.ogv", type:"video/ogg", width:320, height:240, duration:0.266, drop: false },
|
|
{ name:"seek.webm", type:"video/webm", width:320, height:240, duration:3.966, drop: false },
|
|
{ name:"gizmo.mp4", type:"video/mp4", width:560, height:320, duration:5.56, drop: true }
|
|
];
|
|
|
|
function checkStats(v, shouldDrop) {
|
|
// Rounding the current time to 100ms.
|
|
const secondsPerAtom = MS_PER_TIME_ATOM / 1000;
|
|
const currentTimeAtoms = Math.floor(v.currentTime / secondsPerAtom);
|
|
const currentTime = currentTimeAtoms * secondsPerAtom;
|
|
let dropRate = 0;
|
|
|
|
if (shouldDrop) {
|
|
dropRate = SPOOFED_DROPPED_RATIO;
|
|
}
|
|
|
|
is(v.mozParsedFrames, parseInt(currentTime * SPOOFED_FRAMES_PER_SECOND, 10),
|
|
"mozParsedFrames should be spoofed if fingerprinting resistance is enabled");
|
|
is(v.mozDecodedFrames, parseInt(currentTime * SPOOFED_FRAMES_PER_SECOND, 10),
|
|
"mozDecodedFrames should be spoofed if fingerprinting resistance is enabled");
|
|
is(v.mozPresentedFrames,
|
|
parseInt(currentTime * SPOOFED_FRAMES_PER_SECOND * (1 - dropRate), 10),
|
|
"mozPresentedFrames should be spoofed if fingerprinting resistance is enabled");
|
|
is(v.mozPaintedFrames,
|
|
parseInt(currentTime * SPOOFED_FRAMES_PER_SECOND * (1 - dropRate), 10),
|
|
"mozPaintedFrames should be spoofed if fingerprinting resistance is enabled");
|
|
is(v.mozFrameDelay, 0.0,
|
|
"mozFrameDelay should be 0.0 if fingerprinting resistance is enabled");
|
|
let playbackQuality = v.getVideoPlaybackQuality();
|
|
is(playbackQuality.totalVideoFrames, parseInt(currentTime * SPOOFED_FRAMES_PER_SECOND, 10),
|
|
"VideoPlaybackQuality.totalVideoFrames should be spoofed if fingerprinting resistance is enabled");
|
|
is(playbackQuality.droppedVideoFrames, parseInt(currentTime * SPOOFED_FRAMES_PER_SECOND * dropRate, 10),
|
|
"VideoPlaybackQuality.droppedVideoFrames should be spoofed if fingerprinting resistance is enabled");
|
|
}
|
|
|
|
function startTest(test, token) {
|
|
let v = document.createElement("video");
|
|
v.token = token;
|
|
v.src = test.name;
|
|
manager.started(token);
|
|
once(v, "ended", () => {
|
|
checkStats(v, test.drop);
|
|
removeNodeAndSource(v);
|
|
manager.finished(v.token);
|
|
});
|
|
v.play();
|
|
}
|
|
|
|
manager.runTests(testCases, startTest);
|
|
|
|
</script>
|
|
</body>
|
|
</html>
|