window-open.https.sub.html (5958B)
1 <!DOCTYPE html> 2 <script src=/resources/testharness.js></script> 3 <script src=/resources/testharnessreport.js></script> 4 <script src=/resources/testdriver.js></script> 5 <script src=/resources/testdriver-vendor.js></script> 6 <script src=/fetch/metadata/resources/helper.js></script> 7 <body> 8 <script> 9 // Forced navigations: 10 async_test(t => { 11 let w = window.open("https://{{host}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py"); 12 t.add_cleanup(_ => w.close()); 13 window.addEventListener('message', t.step_func(e => { 14 if (e.source != w) 15 return; 16 17 assert_header_equals(e.data, { 18 "site": "same-origin", 19 "user": "", 20 "mode": "navigate", 21 "dest": "document" 22 }, "Same-origin window, forced"); 23 t.done(); 24 })); 25 }, "Same-origin window, forced"); 26 27 async_test(t => { 28 let w = window.open("https://{{hosts[][www]}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py"); 29 t.add_cleanup(_ => w.close()); 30 window.addEventListener('message', t.step_func(e => { 31 if (e.source != w) 32 return; 33 34 assert_header_equals(e.data, { 35 "site": "same-site", 36 "user": "", 37 "mode": "navigate", 38 "dest": "document" 39 }, "Same-site window, forced"); 40 t.done(); 41 })); 42 }, "Same-site window, forced"); 43 44 async_test(t => { 45 let w = window.open("https://{{hosts[alt][www]}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py"); 46 t.add_cleanup(_ => w.close()); 47 window.addEventListener('message', t.step_func(e => { 48 if (e.source != w) 49 return; 50 51 assert_header_equals(e.data, { 52 "site": "cross-site", 53 "user": "", 54 "mode": "navigate", 55 "dest": "document" 56 }, "Cross-site window, forced"); 57 t.done(); 58 })); 59 }, "Cross-site window, forced"); 60 61 async_test(t => { 62 let w = window.open("https://{{host}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py"); 63 t.add_cleanup(_ => w.close()); 64 let messages = 0; 65 window.addEventListener('message', t.step_func(e => { 66 messages++; 67 if (e.source != w) 68 return; 69 70 assert_header_equals(e.data, { 71 "site": "same-origin", 72 "user": "", 73 "mode": "navigate", 74 "dest": "document" 75 }, "Same-origin window, forced, reloaded"); 76 77 if (messages == 1) { 78 w.location.reload(); 79 } else { 80 t.done(); 81 } 82 })); 83 }, "Same-origin window, forced, reloaded"); 84 85 async_test(t => { 86 let w = window.open("https://{{hosts[][www]}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py"); 87 t.add_cleanup(_ => w.close()); 88 let messages = 0; 89 window.addEventListener('message', t.step_func(e => { 90 messages++; 91 if (e.source != w) 92 return; 93 94 assert_header_equals(e.data, { 95 "site": "same-site", 96 "user": "", 97 "mode": "navigate", 98 "dest": "document" 99 }, "Same-site window, forced, reloaded"); 100 101 if (messages == 1) { 102 w.location.reload(); 103 } else { 104 t.done(); 105 } 106 })); 107 }, "Same-site window, forced, reloaded"); 108 109 async_test(t => { 110 let w = window.open("https://{{hosts[alt][www]}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py"); 111 t.add_cleanup(_ => w.close()); 112 let messages = 0; 113 window.addEventListener('message', t.step_func(e => { 114 messages++; 115 if (e.source != w) 116 return; 117 118 assert_header_equals(e.data, { 119 "site": "cross-site", 120 "user": "", 121 "mode": "navigate", 122 "dest": "document" 123 }, "Cross-site window, forced, reloaded"); 124 125 if (messages == 1) { 126 w.location.reload(); 127 } else { 128 t.done(); 129 } 130 })); 131 }, "Cross-site window, forced, reloaded"); 132 133 // User-activated navigations: 134 async_test(t => { 135 let b = document.createElement('button'); 136 b.onclick = t.step_func(_ => { 137 let w = window.open("https://{{host}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py"); 138 t.add_cleanup(_ => w.close()); 139 window.addEventListener('message', t.step_func(e => { 140 if (e.source != w) 141 return; 142 143 assert_header_equals(e.data, { 144 "site": "same-origin", 145 "user": "?1", 146 "mode": "navigate", 147 "dest": "document" 148 }, "Same-origin window, user-activated"); 149 t.done(); 150 })); 151 }); 152 document.body.appendChild(b); 153 test_driver.click(b); 154 }, "Same-origin window, user-activated"); 155 156 async_test(t => { 157 let b = document.createElement('button'); 158 b.onclick = t.step_func(_ => { 159 let w = window.open("https://{{hosts[][www]}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py"); 160 t.add_cleanup(_ => w.close()); 161 window.addEventListener('message', t.step_func(e => { 162 if (e.source != w) 163 return; 164 165 assert_header_equals(e.data, { 166 "site": "same-site", 167 "user": "?1", 168 "mode": "navigate", 169 "dest": "document" 170 }, "Same-site window, user-activated"); 171 t.done(); 172 })); 173 }); 174 document.body.appendChild(b); 175 test_driver.click(b); 176 }, "Same-site window, user-activated"); 177 178 async_test(t => { 179 let b = document.createElement('button'); 180 b.onclick = t.step_func(_ => { 181 let w = window.open("https://{{hosts[alt][www]}}:{{ports[https][0]}}/fetch/metadata/resources/post-to-owner.py"); 182 t.add_cleanup(_ => w.close()); 183 window.addEventListener('message', t.step_func(e => { 184 if (e.source != w) 185 return; 186 187 assert_header_equals(e.data, { 188 "site": "cross-site", 189 "user": "?1", 190 "mode": "navigate", 191 "dest": "document" 192 }, "Cross-site window, user-activated"); 193 t.done(); 194 })); 195 }); 196 document.body.appendChild(b); 197 test_driver.click(b); 198 }, "Cross-site window, user-activated"); 199 </script>