diff options
Diffstat (limited to 'testing/web-platform/tests/html/semantics/forms/form-submission-0/resources')
7 files changed, 94 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/file-submission.py b/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/file-submission.py new file mode 100644 index 0000000000..89cd182add --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/file-submission.py @@ -0,0 +1,10 @@ +import json + +from wptserve.utils import isomorphic_decode + +def main(request, response): + headers = [(b"Content-Type", b"text/html")] + testinput = request.POST.first(b"testinput") + value = isomorphic_decode(testinput.value) + body = u"<script>parent.postMessage(" + json.dumps(value) + u", '*');</script>" + return headers, body diff --git a/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/form-submission.py b/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/form-submission.py new file mode 100644 index 0000000000..f0c2d4cf61 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/form-submission.py @@ -0,0 +1,12 @@ +def main(request, response): + if request.headers.get(b'Content-Type') == b'application/x-www-form-urlencoded': + result = request.body == b'foo=bara' + elif request.headers.get(b'Content-Type') == b'text/plain': + result = request.body == b'qux=baz\r\n' + else: + result = request.POST.first(b'foo') == b'bar' + + result = result and request.url_parts.query == u'query=1' + + return ([(b"Content-Type", b"text/plain")], + b"OK" if result else b"FAIL") diff --git a/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/form.html b/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/form.html new file mode 100644 index 0000000000..8b16672d6b --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/form.html @@ -0,0 +1,4 @@ +<!DOCTYPE html> +<body> + form.html +</body> diff --git a/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/getactionurl-iframe.html b/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/getactionurl-iframe.html new file mode 100644 index 0000000000..116371a995 --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/getactionurl-iframe.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<body> +<script> + const form = document.createElement('form'); + document.body.appendChild(form); + form.action = `data:text/html, + <!DOCTYPE html> + <body> + <script> + window.top.postMessage('PASS', '*'); + <\/script> + `; + form.submit(); +</script> diff --git a/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/jsurl-form-submit-iframe.html b/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/jsurl-form-submit-iframe.html new file mode 100644 index 0000000000..00a1eefd0f --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/jsurl-form-submit-iframe.html @@ -0,0 +1,12 @@ +<!DOCTYPE html> +<meta charset="utf-8"> + +<form id=formid action="form.html"></form> +<a id=anchorid href="javascript:jsurl()">anchor</a> + +<script> +function jsurl() { + formid.submit(); + return 'jsurl return value'; +} +</script> diff --git a/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/location.html b/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/location.html new file mode 100644 index 0000000000..6724189eff --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/location.html @@ -0,0 +1,4 @@ +<!DOCTYPE html> +<body> + location.html +</body> diff --git a/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/targetted-form.js b/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/targetted-form.js new file mode 100644 index 0000000000..52482c859f --- /dev/null +++ b/testing/web-platform/tests/html/semantics/forms/form-submission-0/resources/targetted-form.js @@ -0,0 +1,38 @@ +let frameCounter = 0; + +function populateForm(optionalContentHtml) { + if (!optionalContentHtml) + optionalContentHtml = ''; + const frameName = "form-test-target-" + frameCounter++; + document.body.insertAdjacentHTML( + 'afterbegin', + `<iframe name="${frameName}"></iframe>` + + `<form action="/common/blank.html" target="` + + `${frameName}">${optionalContentHtml}</form>`); + return document.getElementsByName(frameName)[0].nextSibling; +} + +function submitPromise(form, iframe) { + return new Promise((resolve, reject) => { + iframe.onload = () => resolve(iframe.contentWindow.location.search); + iframe.onerror = () => reject(new Error('iframe onerror fired')); + form.submit(); + }); +} + +function loadPromise(iframe) { + return new Promise((resolve, reject) => { + iframe.onload = function() { + // The initial about:blank load event can be fired before the form navigation occurs. + // See https://github.com/whatwg/html/issues/490 for more information. + if (iframe.contentWindow.location == "about:blank") { return; } + resolve(); + }; + iframe.onerror = () => reject(new Error('iframe onerror fired')); + }); +} + +function getParamValue(iframe, paramName) { + let params = (new URL(iframe.contentWindow.location)).searchParams; + return params.get(paramName); +} |