Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 var gBasePath = "tests/dom/datastore/tests/";
3 function handleRequest(request, response) {
4 var query = getQuery(request);
6 var testToken = '';
7 if ('testToken' in query) {
8 testToken = query.testToken;
9 }
11 var template = 'file_app.template.webapp';
12 if ('template' in query) {
13 template = query.template;
14 }
15 var template = gBasePath + template;
16 response.setHeader("Content-Type", "application/x-web-app-manifest+json", false);
17 response.write(readTemplate(template).replace(/TESTTOKEN/g, testToken));
18 }
20 // Copy-pasted incantations. There ought to be a better way to synchronously read
21 // a file into a string, but I guess we're trying to discourage that.
22 function readTemplate(path) {
23 var file = Components.classes["@mozilla.org/file/directory_service;1"].
24 getService(Components.interfaces.nsIProperties).
25 get("CurWorkD", Components.interfaces.nsILocalFile);
26 var fis = Components.classes['@mozilla.org/network/file-input-stream;1'].
27 createInstance(Components.interfaces.nsIFileInputStream);
28 var cis = Components.classes["@mozilla.org/intl/converter-input-stream;1"].
29 createInstance(Components.interfaces.nsIConverterInputStream);
30 var split = path.split("/");
31 for(var i = 0; i < split.length; ++i) {
32 file.append(split[i]);
33 }
34 fis.init(file, -1, -1, false);
35 cis.init(fis, "UTF-8", 0, 0);
37 var data = "";
38 let (str = {}) {
39 let read = 0;
40 do {
41 read = cis.readString(0xffffffff, str); // read as much as we can and put it in str.value
42 data += str.value;
43 } while (read != 0);
44 }
45 cis.close();
46 return data;
47 }
49 function getQuery(request) {
50 var query = {};
51 request.queryString.split('&').forEach(function (val) {
52 var [name, value] = val.split('=');
53 query[name] = unescape(value);
54 });
55 return query;
56 }