[tbb-commits] [tor-browser/tor-browser-45.2.0esr-6.5-1] Regression tests for Bug 1517: Reduce precision of time for Javascript.

gk at torproject.org gk at torproject.org
Fri Jun 3 22:15:04 UTC 2016


commit b60b8871fa08feaaca24bcf6dff43df0cd1c5f29
Author: Arthur Edelstein <arthuredelstein at gmail.com>
Date:   Fri May 27 11:31:48 2016 -0700

    Regression tests for Bug 1517: Reduce precision of time for Javascript.
---
 tbb-tests/audio.ogg             | Bin 0 -> 16521 bytes
 tbb-tests/mochitest.ini         |   3 ++
 tbb-tests/noaudio.webm          | Bin 0 -> 105755 bytes
 tbb-tests/test_tor_bug1517.html |  79 ++++++++++++++++++++++++++++++++++++++++
 4 files changed, 82 insertions(+)

diff --git a/tbb-tests/audio.ogg b/tbb-tests/audio.ogg
new file mode 100644
index 0000000..d7f6a0c
Binary files /dev/null and b/tbb-tests/audio.ogg differ
diff --git a/tbb-tests/mochitest.ini b/tbb-tests/mochitest.ini
index 2dc049a..3d2e7c9 100644
--- a/tbb-tests/mochitest.ini
+++ b/tbb-tests/mochitest.ini
@@ -1,8 +1,11 @@
 [DEFAULT]
 support-files =
+  audio.ogg
   match.png
   mismatch.png
+  noaudio.webm
 
+[test_tor_bug1517.html]
 [test_tor_bug2874.html]
 [test_tor_bug2875.html]
 [test_tor_bug4755.html]
diff --git a/tbb-tests/noaudio.webm b/tbb-tests/noaudio.webm
new file mode 100644
index 0000000..9207017
Binary files /dev/null and b/tbb-tests/noaudio.webm differ
diff --git a/tbb-tests/test_tor_bug1517.html b/tbb-tests/test_tor_bug1517.html
new file mode 100644
index 0000000..67d6693
--- /dev/null
+++ b/tbb-tests/test_tor_bug1517.html
@@ -0,0 +1,79 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+Tor bug
+https://trac.torproject.org/projects/tor/ticket/1517
+-->
+<head>
+  <meta charset="utf-8">
+  <title>Test for Tor Bug 1517</title>
+  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <script type="application/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+<a target="_blank" href="https://trac.torproject.org/projects/tor/ticket/1517">Tor Bug 1517</a>
+
+<!-- Canvas, Video, Audio elements for testing 'currentTime' -->
+<canvas id="test-canvas" width="100" height="100"></canvas>
+<video id="test-video"
+       src="http://example.com/tests/tbb-tests/noaudio.webm"></video>
+<audio id="test-audio"
+       src="http://example.com/tests/tbb-tests/audio.ogg"></audio>
+
+<!-- The main testing script -->
+<script type="application/javascript;version=1.7">
+  SimpleTest.requestFlakyTimeout("testing JS time-based fingerprinting");
+
+  // __later(delay)__.
+  // Return a promise that resolves after the requested delay in ms.
+  let later = function (delay) {
+    return new Promise((resolve, reject) => {
+      window.setTimeout(resolve, delay);
+    });
+  };
+
+  // The main testing task
+  add_task(function* () {
+    // Prepare for test of AudioContext.currentTime
+    let audioContext = new AudioContext();
+    // Prepare for test of CanvasStream.currentTime
+    let canvas = document.getElementById("test-canvas");
+    let context = canvas.getContext('2d');
+    context.fillText("test", 20, 20);
+    let canvasStream = canvas.captureStream(25);
+    // Prepare for test of HTMLVideoElement.currentTime
+    let video = document.getElementById("test-video");
+    video.currentTime = 1.25;
+    // Prepare for test of HTMLAudioElement.currenTime
+    let audio = document.getElementById("test-audio");
+    audio.currentTime = 1.35;
+    // Allow ~150 ms to elapse, so we can get non-zero
+    // time values for all elements.
+    yield later(150);
+    // Known ways to generate time stamps, in milliseconds
+    let timeStampCodes = [
+      'performance.now()',
+      'new Date().getTime()',
+      'new Event("").timeStamp',
+      'audioContext.currentTime * 1000',
+      'canvasStream.currentTime * 1000',
+      'video.currentTime * 1000',
+      'audio.currentTime * 1000',
+    ];
+    // Loop through each timeStampCode, evaluate it,
+    // and check if it is rounded to the nearest 100 ms.
+    for (let timeStampCode of timeStampCodes) {
+      let timeStamp = eval(timeStampCode);
+      let roundedTimeStamp = 100*Math.round(timeStamp/100);
+      ok(timeStamp === roundedTimeStamp,
+         "'" + timeStampCode +
+         "' should be rounded to nearest 100 ms; saw " +
+         timeStamp);
+    }
+  });
+</script>
+
+
+</body>
+</html>



More information about the tbb-commits mailing list