summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/lifecycle/worker-dispay-none.tentative.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/lifecycle/worker-dispay-none.tentative.html')
-rw-r--r--testing/web-platform/tests/lifecycle/worker-dispay-none.tentative.html66
1 files changed, 66 insertions, 0 deletions
diff --git a/testing/web-platform/tests/lifecycle/worker-dispay-none.tentative.html b/testing/web-platform/tests/lifecycle/worker-dispay-none.tentative.html
new file mode 100644
index 0000000000..0bcfde6d17
--- /dev/null
+++ b/testing/web-platform/tests/lifecycle/worker-dispay-none.tentative.html
@@ -0,0 +1,66 @@
+<!DOCTYPE html>
+<meta charset="utf-8">
+<title>Child frame with worker marked as frozen</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+<script>
+async_test((t) => {
+
+ var child = document.createElement('iframe');
+
+ var loaded = false;
+ var frozen = false;
+ var resumed = false;
+
+ var subworker_freeze_count = 0;
+ var subworker2_freeze_count = 0;
+ var subworker_count = 0;
+ var subworker2_count = 0;
+ var bc = new BroadcastChannel('subworker_channel');
+ bc.onmessage = t.step_func((e) => {
+ if (e.data == 'subworker') {
+ subworker_count++;
+ } else if (e.data == 'subworker2') {
+ subworker2_count++;
+ } else {
+ assert_unreached('bad message');
+ }
+
+ // Ensure that if we have resumed that we get at least
+ // one message from each worker.
+ if (loaded && frozen && resumed &&
+ subworker2_count > subworker2_freeze_count &&
+ subworker_count > subworker_freeze_count) {
+ t.done();
+ } else if (loaded && frozen && !resumed) {
+ // Ensure that at most one message is sent after the frozen state.
+ assert_true(subworker_count - subworker_freeze_count <= 1);
+ assert_true(subworker2_count - subworker2_freeze_count <= 1);
+ }
+ });
+
+ window.addEventListener('message', t.step_func((e) => {
+ if (e.data == "load") {
+ loaded = true;
+ } else if (e.data == "freeze") {
+ assert_true(loaded);
+ frozen = true;
+ subworker_freeze_count = subworker_count;
+ subworker2_freeze_count = subworker2_count;
+ child.style = "display: block";
+ } else if (e.data == "resume") {
+ assert_true(loaded);
+ assert_true(frozen);
+ resumed = true;
+ }
+ }));
+
+ child.allow = "execution-while-not-rendered 'none'";
+ child.src = "resources/subframe_worker.html";
+ document.body.appendChild(child);
+ child.style = "display: none";
+}, "Child frame frozen");
+
+</script>
+</body>