Tue, 06 Jan 2015 21:39:09 +0100
Conditionally force memory storage according to privacy.thirdparty.isolate;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.
1 <!DOCTYPE HTML>
2 <html>
3 <head>
4 <title>Media test: seeking off the end of a file</title>
5 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
6 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
7 <script type="text/javascript" src="manifest.js"></script>
8 </head>
9 <body>
10 <pre id="test">
11 <script class="testbody" type="text/javascript">
13 if (navigator.platform.startsWith("Win")) {
14 SimpleTest.expectAssertions(0, 10);
15 }
17 var manager = new MediaTestManager;
19 // Test if the ended event works correctly.
21 function startTest(e) {
22 var v = e.target;
23 checkMetadata(v._name, v, v._test);
24 is(v._loadedMetadata, false, "Should only receive one loadedmetadata event for " + v._name);
25 v._loadedMetadata = true;
26 v.currentTime = 3.0 * v.duration;
27 }
29 function playbackEnded(e) {
30 var v = e.target;
31 // We should have dispatched an ended event when we seeked to the end of
32 // media, but we want the ended event which dispatches once playback has
33 // completed after the seek to the beginning.
34 if (!v._played)
35 return;
36 ok(v.ended, "Checking ended set after seeking to EOF and playing for " + v._name);
37 ok(!v._finished, "Should only hit the end once for " + v._name);
38 v._finished = true;
39 removeNodeAndSource(v);
40 manager.finished(v.token);
41 }
43 function endSeek(e) {
44 var v = e.target;
45 if (v._seeked)
46 return;
47 v._seeked = true;
48 ok(Math.abs(v.duration - v.currentTime) < 0.1,
49 "Should be at end of media for " + v._name + " t=" + v.currentTime + " d=" + v.duration);
50 v.play();
51 }
53 function playing(e) {
54 e.target._played = true;
55 }
57 function initTest(test, token) {
58 var type = getMajorMimeType(test.type);
59 var v = document.createElement(type);
60 v.preload = "auto";
61 v.token = token;
62 manager.started(token);
63 v.src = test.name;
64 v._name = test.name;
65 v._finished = false;
66 v._test = test;
67 v._loadedMetadata = false;
68 v._seeked = false;
69 v._played = false;
70 v.addEventListener("loadedmetadata", startTest, false);
71 v.addEventListener("playing", playing, false);
72 v.addEventListener("seeked", endSeek, false);
73 v.addEventListener("ended", playbackEnded, false);
74 document.body.appendChild(v);
75 }
77 manager.runTests(gSmallTests, initTest);
79 </script>
80 </pre>
81 </body>
82 </html>