summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/resources/moving-between-documents-iframe.py
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/resources/moving-between-documents-iframe.py')
-rw-r--r--testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/resources/moving-between-documents-iframe.py102
1 files changed, 102 insertions, 0 deletions
diff --git a/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/resources/moving-between-documents-iframe.py b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/resources/moving-between-documents-iframe.py
new file mode 100644
index 0000000000..dbcfe9b8d0
--- /dev/null
+++ b/testing/web-platform/tests/html/semantics/scripting-1/the-script-element/moving-between-documents/resources/moving-between-documents-iframe.py
@@ -0,0 +1,102 @@
+import random
+import time
+
+from wptserve.utils import isomorphic_decode
+
+
+"""
+This script serves
+"""
+
+def main(request, response):
+ inlineOrExternal = request.GET.first(b"inlineOrExternal", b"null")
+ hasBlockingStylesheet = request.GET.first(b"hasBlockingStylesheet", b"true") == b"true"
+ result = request.GET.first(b"result", b"success")
+ type = u"text/javascript" if request.GET.first(b"type", b"classic") == b"classic" else u"module"
+
+ response.headers.set(b"Content-Type", b"text/html; charset=utf-8")
+ response.headers.set(b"Transfer-Encoding", b"chunked")
+ response.write_status_headers()
+
+ # Step 1: Start parsing.
+ body = u"""<!DOCTYPE html>
+ <head>
+ <script>
+ parent.postMessage("fox", "*");
+ </script>
+ """
+
+ if hasBlockingStylesheet:
+ body += u"""
+ <link rel="stylesheet" href="slow-flag-setter.py?result=css&cache=%f">
+ """ % random.random()
+
+ body += u"""
+ </head>
+ <body>
+ """
+
+ if inlineOrExternal == b"inline" or inlineOrExternal == b"external" or inlineOrExternal == b"empty-src":
+ body += u"""
+ <streaming-element>
+ """
+
+ # Trigger DOM processing
+ body += u"A" * 100000
+
+ response.writer.write(u"%x\r\n" % len(body))
+ response.writer.write(body)
+ response.writer.write(u"\r\n")
+
+ body = u""
+
+ if inlineOrExternal == b"inline":
+ time.sleep(1)
+ body += u"""
+ <script id="s1" type="%s"
+ onload="scriptOnLoad()"
+ onerror="scriptOnError(event)">
+ if (!window.readyToEvaluate) {
+ window.didExecute = "executed too early";
+ } else {
+ window.didExecute = "executed";
+ }
+ """ % type
+ if result == b"parse-error":
+ body += u"1=2 parse error\n"
+
+ body += u"""
+ </script>
+ </streaming-element>
+ """
+ elif inlineOrExternal == b"external":
+ time.sleep(1)
+ body += u"""
+ <script id="s1" type="%s"
+ src="slow-flag-setter.py?result=%s&cache=%s"
+ onload="scriptOnLoad()"
+ onerror="scriptOnError(event)"></script>
+ </streaming-element>
+ """ % (type, isomorphic_decode(result), random.random())
+ elif inlineOrExternal == b"empty-src":
+ time.sleep(1)
+ body += u"""
+ <script id="s1" type="%s"
+ src=""
+ onload="scriptOnLoad()"
+ onerror="scriptOnError(event)"></script>
+ </streaming-element>
+ """ % (type,)
+
+ # // if readyToEvaluate is false, the script is probably
+ # // wasn't blocked by stylesheets as expected.
+
+ # Trigger DOM processing
+ body += u"B" * 100000
+
+ response.writer.write(u"%x\r\n" % len(body))
+ response.writer.write(body)
+ response.writer.write(u"\r\n")
+
+ response.writer.write(u"0\r\n")
+ response.writer.write(u"\r\n")