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 +}