|
1 var gBasePath = "tests/dom/datastore/tests/"; |
|
2 |
|
3 function handleRequest(request, response) { |
|
4 var query = getQuery(request); |
|
5 |
|
6 var testToken = ''; |
|
7 if ('testToken' in query) { |
|
8 testToken = query.testToken; |
|
9 } |
|
10 |
|
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 } |
|
19 |
|
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); |
|
36 |
|
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 } |
|
48 |
|
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 } |