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>Bug 957452 Test GetEncodedData problem on asan build</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 </head>
8 <body>
9 <pre id="test">
10 <script class="testbody" type="text/javascript">
11 SimpleTest.waitForExplicitFinish();
12 SpecialPowers.pushPrefEnv({"set": [["media.ogg.enabled", false]]},
13 function () {
14 var ac = new window.AudioContext();
15 var dest = ac.createMediaStreamDestination();
16 var stream = dest.stream;
17 var onErrorFired = false;
18 var expectedMimeType = '';
19 var ondataavailableFired = false;
20 setTimeout(function() {
21 var mediaRecorder = new MediaRecorder(stream);
22 mediaRecorder.onstop = function(e) {
23 is(e.target.state, 'inactive',
24 'Media recorder is inactive after being stopped');
25 ok(onErrorFired, 'onStop after onError');
26 ok(ondataavailableFired, 'ondataavailableFired');
28 SimpleTest.finish();
29 }
30 mediaRecorder.ondataavailable = function(evt) {
31 ondataavailableFired = true;
32 ok(evt instanceof BlobEvent,
33 'Events fired from ondataavailable should be BlobEvent');
34 is(evt.type, 'dataavailable',
35 'Event type should dataavailable');
36 is(evt.data.size, 0,
37 'Blob data size received is equal to zero');
38 is(evt.data.type, expectedMimeType,
39 'Blob data received should have type = ' + expectedMimeType);
40 is(evt.target.mimeType, expectedMimeType,
41 'Mime type in ondataavailable = ' + expectedMimeType);
42 }
43 mediaRecorder.onerror = function(evt) {
44 ok(evt instanceof RecordErrorEvent,
45 'Events fired from onerror should be RecordErrorEvent');
46 is(evt.type, 'error',
47 'Event type should onerror');
48 is(evt.name, 'GenericError',
49 'Event name is GenericError');
50 onErrorFired = true;
51 }
52 mediaRecorder.start(0);
53 is(mediaRecorder.state, 'recording', 'Media recorder should be recording');
54 is(mediaRecorder.stream, stream,
55 'Media recorder stream = element stream at the start of recording');
56 mediaRecorder.requestData();
57 mediaRecorder.stop();
58 }, 100);
59 }
60 );
61 </script>
62 </pre>
63 </body>
64 </html>