docshell/test/file_bug475636.sjs

changeset 0
6474c204b198
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/docshell/test/file_bug475636.sjs	Wed Dec 31 06:09:35 2014 +0100
     1.3 @@ -0,0 +1,90 @@
     1.4 +jsURL = "javascript:" + escape('window.parent.postMessage("JS uri ran", "*");\
     1.5 +return \'\
     1.6 +<script>\
     1.7 +window.parent.postMessage("Able to access private: " +\
     1.8 +  window.parent.private, "*");\
     1.9 +</script>\'');
    1.10 +dataURL = "data:text/html," + escape('<!DOCTYPE HTML>\
    1.11 +<script>\
    1.12 +try {\
    1.13 +  window.parent.postMessage("Able to access private: " +\
    1.14 +    window.parent.private, "*");\
    1.15 +}\
    1.16 +catch (e) {\
    1.17 +  window.parent.postMessage("pass", "*");\
    1.18 +}\
    1.19 +</script>');
    1.20 +
    1.21 +tests = [
    1.22 +// Plain document should work as normal
    1.23 +'<!DOCTYPE HTML>\
    1.24 +<script>\
    1.25 +try {\
    1.26 +  window.parent.private;\
    1.27 +  window.parent.postMessage("pass", "*");\
    1.28 +}\
    1.29 +catch (e) {\
    1.30 +  window.parent.postMessage("Unble to access private", "*");\
    1.31 +}\
    1.32 +</script>',
    1.33 +
    1.34 +// refresh to plain doc
    1.35 +{ refresh: "file_bug475636.sjs?1",
    1.36 +  doc: '<!DOCTYPE HTML>' },
    1.37 +
    1.38 +// meta-refresh to plain doc
    1.39 +'<!DOCTYPE HTML>\
    1.40 +<head>\
    1.41 +  <meta http-equiv="refresh" content="0; url=file_bug475636.sjs?1">\
    1.42 +</head>',
    1.43 +
    1.44 +// refresh to data url
    1.45 +{ refresh: dataURL,
    1.46 +  doc: '<!DOCTYPE HTML>' },
    1.47 +
    1.48 +// meta-refresh to data url
    1.49 +'<!DOCTYPE HTML>\
    1.50 +<head>\
    1.51 +  <meta http-equiv="refresh" content="0; url=' + dataURL + '">\
    1.52 +</head>',
    1.53 +
    1.54 +// refresh to js url should not be followed
    1.55 +{ refresh: jsURL,
    1.56 +  doc:
    1.57 +'<!DOCTYPE HTML>\
    1.58 +<script>\
    1.59 +setTimeout(function() {\
    1.60 +  window.parent.postMessage("pass", "*");\
    1.61 +}, 2000);\
    1.62 +</script>' },
    1.63 +
    1.64 +// meta refresh to js url should not be followed
    1.65 +'<!DOCTYPE HTML>\
    1.66 +<head>\
    1.67 +  <meta http-equiv="refresh" content="0; url=' + jsURL + '">\
    1.68 +</head>\
    1.69 +<script>\
    1.70 +setTimeout(function() {\
    1.71 +  window.parent.postMessage("pass", "*");\
    1.72 +}, 2000);\
    1.73 +</script>'
    1.74 +];
    1.75 +
    1.76 +
    1.77 +function handleRequest(request, response)
    1.78 +{
    1.79 +  dump("@@@@@@@@@hi there: " + request.queryString + "\n");
    1.80 +  test = tests[parseInt(request.queryString, 10) - 1];
    1.81 +  response.setHeader("Content-Type", "text/html");
    1.82 +
    1.83 +  if (!test) {
    1.84 +    response.write('<script>parent.postMessage("done", "*");</script>');
    1.85 +  }
    1.86 +  else if (typeof test == "string") {
    1.87 +    response.write(test);
    1.88 +  }
    1.89 +  else if (test.refresh) {
    1.90 +    response.setHeader("Refresh", "0; url=" + test.refresh);
    1.91 +    response.write(test.doc);
    1.92 +  }
    1.93 +}

mercurial