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
michael@0 | 1 | // Server side js file for bug 910139, see file test_CSP_bug910139.html for details. |
michael@0 | 2 | |
michael@0 | 3 | Components.utils.import("resource://gre/modules/NetUtil.jsm"); |
michael@0 | 4 | |
michael@0 | 5 | function loadResponseFromFile(path) { |
michael@0 | 6 | var testHTMLFile = |
michael@0 | 7 | Components.classes["@mozilla.org/file/directory_service;1"]. |
michael@0 | 8 | getService(Components.interfaces.nsIProperties). |
michael@0 | 9 | get("CurWorkD", Components.interfaces.nsILocalFile); |
michael@0 | 10 | var dirs = path.split("/"); |
michael@0 | 11 | for (var i = 0; i < dirs.length; i++) { |
michael@0 | 12 | testHTMLFile.append(dirs[i]); |
michael@0 | 13 | } |
michael@0 | 14 | var testHTMLFileStream = |
michael@0 | 15 | Components.classes["@mozilla.org/network/file-input-stream;1"]. |
michael@0 | 16 | createInstance(Components.interfaces.nsIFileInputStream); |
michael@0 | 17 | testHTMLFileStream.init(testHTMLFile, -1, 0, 0); |
michael@0 | 18 | var testHTML = NetUtil.readInputStreamToString(testHTMLFileStream, testHTMLFileStream.available()); |
michael@0 | 19 | return testHTML; |
michael@0 | 20 | } |
michael@0 | 21 | |
michael@0 | 22 | var policies = [ |
michael@0 | 23 | "default-src 'self'; script-src 'self'", // CSP for checkAllowed |
michael@0 | 24 | "default-src 'self'; script-src *.example.com" // CSP for checkBlocked |
michael@0 | 25 | ] |
michael@0 | 26 | |
michael@0 | 27 | function getPolicy() { |
michael@0 | 28 | var index; |
michael@0 | 29 | // setState only accepts strings as arguments |
michael@0 | 30 | if (!getState("counter")) { |
michael@0 | 31 | index = 0; |
michael@0 | 32 | setState("counter", index.toString()); |
michael@0 | 33 | } |
michael@0 | 34 | else { |
michael@0 | 35 | index = parseInt(getState("counter")); |
michael@0 | 36 | ++index; |
michael@0 | 37 | setState("counter", index.toString()); |
michael@0 | 38 | } |
michael@0 | 39 | return policies[index]; |
michael@0 | 40 | } |
michael@0 | 41 | |
michael@0 | 42 | function handleRequest(request, response) |
michael@0 | 43 | { |
michael@0 | 44 | // avoid confusing cache behaviors |
michael@0 | 45 | response.setHeader("Cache-Control", "no-cache", false); |
michael@0 | 46 | |
michael@0 | 47 | // set the required CSP |
michael@0 | 48 | response.setHeader("Content-Security-Policy", getPolicy(), false); |
michael@0 | 49 | |
michael@0 | 50 | // return the requested XML file. |
michael@0 | 51 | response.write(loadResponseFromFile("tests/content/base/test/csp/file_CSP_bug910139.xml")); |
michael@0 | 52 | } |