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 // Serve a media file without using content-range header
2 function handleRequest(request, response)
3 {
4 var file = Components.classes["@mozilla.org/file/directory_service;1"].
5 getService(Components.interfaces.nsIProperties).
6 get("CurWorkD", Components.interfaces.nsILocalFile);
7 var fis = Components.classes['@mozilla.org/network/file-input-stream;1'].
8 createInstance(Components.interfaces.nsIFileInputStream);
9 var bis = Components.classes["@mozilla.org/binaryinputstream;1"].
10 createInstance(Components.interfaces.nsIBinaryInputStream);
11 var paths = "tests/content/media/test/320x240.ogv";
12 var split = paths.split("/");
13 for(var i = 0; i < split.length; ++i) {
14 file.append(split[i]);
15 }
16 fis.init(file, -1, -1, false);
17 bis.setInputStream(fis);
18 var bytes = bis.readBytes(bis.available());
19 response.setStatusLine(request.httpVersion, 200, "Content Follows");
20 response.setHeader("Content-Type", "video/ogg", false);
21 response.write(bytes, bytes.length);
22 // Make this request async to prevent a default Content-Length from being provided.
23 response.processAsync();
24 response.finish();
25 bis.close();
26 }