| <!DOCTYPE html> |
| <meta name="timeout" content="long"> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <body> |
| <script> |
| // TODO(jbroman): Ideally these would also check that the portal element gets a |
| // completion event. |
| |
| async_test(t => { |
| assert_implements("HTMLPortalElement" in self); |
| var portal = document.createElement('portal'); |
| portal.src = "/portals/xfo/resources/xfo-deny.asis"; |
| portal.onmessage = t.unreached_func("should not have received a message"); |
| document.body.appendChild(portal); |
| t.add_cleanup(() => portal.remove()); |
| t.step_timeout(() => t.done(), 2000); |
| }, "`XFO: DENY` blocks same-origin portals."); |
| |
| async_test(t => { |
| assert_implements("HTMLPortalElement" in self); |
| var portal = document.createElement('portal'); |
| portal.src = "http://{{domains[www]}}:{{ports[http][0]}}/portals/xfo/resources/xfo-deny.asis"; |
| portal.onmessage = t.unreached_func("should not have received a message"); |
| document.body.appendChild(portal); |
| t.add_cleanup(() => portal.remove()); |
| t.step_timeout(() => t.done(), 2000); |
| }, "`XFO: DENY` blocks cross-origin portals."); |
| |
| async_test(t => { |
| assert_implements("HTMLPortalElement" in self); |
| var portal = document.createElement('portal'); |
| portal.src = "/portals/xfo/resources/xfo-deny.asis"; |
| portal.onmessage = t.unreached_func("should not have received a message"); |
| document.body.appendChild(portal); |
| t.add_cleanup(() => portal.remove()); |
| t.step_timeout(async () => { |
| await promise_rejects_dom(t, 'InvalidStateError', portal.activate()); |
| t.done(); |
| }, 2000); |
| }, "Portals blocked by `XFO: DENY` cannot be activated."); |
| </script> |
| </body> |