content/base/test/csp/file_CSP_bug910139.sjs

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

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

mercurial