1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/content/media/test/allowed.sjs Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,53 @@ 1.4 +function parseQuery(request, key) { 1.5 + var params = request.queryString.split('&'); 1.6 + for (var j = 0; j < params.length; ++j) { 1.7 + var p = params[j]; 1.8 + if (p == key) 1.9 + return true; 1.10 + if (p.indexOf(key + "=") == 0) 1.11 + return p.substring(key.length + 1); 1.12 + if (p.indexOf("=") < 0 && key == "") 1.13 + return p; 1.14 + } 1.15 + return false; 1.16 +} 1.17 + 1.18 +var types = { 1.19 + ogg: "video/ogg", 1.20 + ogv: "video/ogg", 1.21 + oga: "audio/ogg", 1.22 + webm: "video/webm", 1.23 + wav: "audio/x-wav" 1.24 +}; 1.25 + 1.26 +// Return file with name as per the query string with access control 1.27 +// allow headers. 1.28 +function handleRequest(request, response) 1.29 +{ 1.30 + var resource = parseQuery(request, ""); 1.31 + 1.32 + var file = Components.classes["@mozilla.org/file/directory_service;1"]. 1.33 + getService(Components.interfaces.nsIProperties). 1.34 + get("CurWorkD", Components.interfaces.nsILocalFile); 1.35 + var fis = Components.classes['@mozilla.org/network/file-input-stream;1']. 1.36 + createInstance(Components.interfaces.nsIFileInputStream); 1.37 + var bis = Components.classes["@mozilla.org/binaryinputstream;1"]. 1.38 + createInstance(Components.interfaces.nsIBinaryInputStream); 1.39 + var paths = "tests/content/media/test/" + resource; 1.40 + var split = paths.split("/"); 1.41 + for(var i = 0; i < split.length; ++i) { 1.42 + file.append(split[i]); 1.43 + } 1.44 + fis.init(file, -1, -1, false); 1.45 + dump("file=" + file + "\n"); 1.46 + bis.setInputStream(fis); 1.47 + var bytes = bis.readBytes(bis.available()); 1.48 + response.setStatusLine(request.httpVersion, 206, "Partial Content"); 1.49 + response.setHeader("Content-Range", "bytes 0-" + (bytes.length - 1) + "/" + bytes.length); 1.50 + response.setHeader("Content-Length", ""+bytes.length, false); 1.51 + var ext = resource.substring(resource.lastIndexOf(".")+1); 1.52 + response.setHeader("Content-Type", types[ext], false); 1.53 + response.setHeader("Access-Control-Allow-Origin", "*"); 1.54 + response.write(bytes, bytes.length); 1.55 + bis.close(); 1.56 +}