diff options
Diffstat (limited to 'testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads.tentative.html')
-rw-r--r-- | testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads.tentative.html | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads.tentative.html b/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads.tentative.html new file mode 100644 index 0000000000..26b8b393ab --- /dev/null +++ b/testing/web-platform/tests/html/semantics/embedded-content/the-iframe-element/iframe_sandbox_anchor_download_allow_downloads.tentative.html @@ -0,0 +1,48 @@ +<!DOCTYPE html> +<meta charset="utf-8"> +<title><a download> triggered download in sandbox is allowed by allow-downloads.</title> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#attr-iframe-sandbox"> +<link rel="help" href="https://html.spec.whatwg.org/multipage/#the-iframe-element"> +<script src="/common/utils.js"></script> +<script src="/resources/testharness.js"></script> +<script src='/resources/testharnessreport.js'></script> +<script src="support/iframe_sandbox_download_helper.js"></script> +<body> +<script> +"use strict"; + +const attributes_list = [ + '', + 'target="_blank"', + 'target="_blank" rel="noopener"', +]; + +const download_flags = [false, true]; + +attributes_list.forEach(attributes => + download_flags.forEach(download_flag => + async_test(t => { + const download_token = token(); + let iframe = document.createElement("iframe"); + iframe.srcdoc = `<a ${attributes}>Download</a>`; + iframe.sandbox = "allow-same-origin allow-popups allow-downloads"; + iframe.addEventListener('load', t.step_func(function () { + if (attributes !== '' || download_flag) { + // Specifiying `download` or a `target` should not trigger a + // navigation in this iframe. + iframe.contentWindow.addEventListener( + "unload", t.unreached_func("Unexpected navigation.")); + } + let anchor = iframe.contentDocument.getElementsByTagName('a')[0]; + anchor.href = "support/download_stash.py?token=" + download_token; + if (download_flag) anchor.download = null; + anchor.click(); + AssertDownloadSuccess(t, download_token, DownloadVerifyDelay()); + }), { once: true }); + + document.body.appendChild(iframe); + }, `<a ${attributes} ${download_flag ? "download" : ""}> triggered ` + + `download in sandbox is allowed by allow-downloads.`))); + +</script> +</body> |