|
1 jsURL = "javascript:" + escape('window.parent.postMessage("JS uri ran", "*");\ |
|
2 return \'\ |
|
3 <script>\ |
|
4 window.parent.postMessage("Able to access private: " +\ |
|
5 window.parent.private, "*");\ |
|
6 </script>\''); |
|
7 dataURL = "data:text/html," + escape('<!DOCTYPE HTML>\ |
|
8 <script>\ |
|
9 try {\ |
|
10 window.parent.postMessage("Able to access private: " +\ |
|
11 window.parent.private, "*");\ |
|
12 }\ |
|
13 catch (e) {\ |
|
14 window.parent.postMessage("pass", "*");\ |
|
15 }\ |
|
16 </script>'); |
|
17 |
|
18 tests = [ |
|
19 // Plain document should work as normal |
|
20 '<!DOCTYPE HTML>\ |
|
21 <script>\ |
|
22 try {\ |
|
23 window.parent.private;\ |
|
24 window.parent.postMessage("pass", "*");\ |
|
25 }\ |
|
26 catch (e) {\ |
|
27 window.parent.postMessage("Unble to access private", "*");\ |
|
28 }\ |
|
29 </script>', |
|
30 |
|
31 // refresh to plain doc |
|
32 { refresh: "file_bug475636.sjs?1", |
|
33 doc: '<!DOCTYPE HTML>' }, |
|
34 |
|
35 // meta-refresh to plain doc |
|
36 '<!DOCTYPE HTML>\ |
|
37 <head>\ |
|
38 <meta http-equiv="refresh" content="0; url=file_bug475636.sjs?1">\ |
|
39 </head>', |
|
40 |
|
41 // refresh to data url |
|
42 { refresh: dataURL, |
|
43 doc: '<!DOCTYPE HTML>' }, |
|
44 |
|
45 // meta-refresh to data url |
|
46 '<!DOCTYPE HTML>\ |
|
47 <head>\ |
|
48 <meta http-equiv="refresh" content="0; url=' + dataURL + '">\ |
|
49 </head>', |
|
50 |
|
51 // refresh to js url should not be followed |
|
52 { refresh: jsURL, |
|
53 doc: |
|
54 '<!DOCTYPE HTML>\ |
|
55 <script>\ |
|
56 setTimeout(function() {\ |
|
57 window.parent.postMessage("pass", "*");\ |
|
58 }, 2000);\ |
|
59 </script>' }, |
|
60 |
|
61 // meta refresh to js url should not be followed |
|
62 '<!DOCTYPE HTML>\ |
|
63 <head>\ |
|
64 <meta http-equiv="refresh" content="0; url=' + jsURL + '">\ |
|
65 </head>\ |
|
66 <script>\ |
|
67 setTimeout(function() {\ |
|
68 window.parent.postMessage("pass", "*");\ |
|
69 }, 2000);\ |
|
70 </script>' |
|
71 ]; |
|
72 |
|
73 |
|
74 function handleRequest(request, response) |
|
75 { |
|
76 dump("@@@@@@@@@hi there: " + request.queryString + "\n"); |
|
77 test = tests[parseInt(request.queryString, 10) - 1]; |
|
78 response.setHeader("Content-Type", "text/html"); |
|
79 |
|
80 if (!test) { |
|
81 response.write('<script>parent.postMessage("done", "*");</script>'); |
|
82 } |
|
83 else if (typeof test == "string") { |
|
84 response.write(test); |
|
85 } |
|
86 else if (test.refresh) { |
|
87 response.setHeader("Refresh", "0; url=" + test.refresh); |
|
88 response.write(test.doc); |
|
89 } |
|
90 } |