summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/requestidlecallback/callback-removed-frame.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/tests/requestidlecallback/callback-removed-frame.html')
-rw-r--r--testing/web-platform/tests/requestidlecallback/callback-removed-frame.html30
1 files changed, 30 insertions, 0 deletions
diff --git a/testing/web-platform/tests/requestidlecallback/callback-removed-frame.html b/testing/web-platform/tests/requestidlecallback/callback-removed-frame.html
new file mode 100644
index 0000000000..ca63f68f8a
--- /dev/null
+++ b/testing/web-platform/tests/requestidlecallback/callback-removed-frame.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>requestIdleCallback on removed frame shouldn't call back</title>
+<script src=/resources/testharness.js></script>
+<script src=/resources/testharnessreport.js></script>
+<script>
+ async_test(function (t) {
+ assert_false(document.hidden, "document.hidden must exist and be false to run this test properly");
+
+ function start() {
+ var frame = document.createElement('iframe');
+ frame.addEventListener('load', _ => connect(frame), {once:true});
+ frame.src = "about:blank";
+ document.body.appendChild(frame);
+ }
+
+ function connect(frame) {
+ var contentWindow = frame.contentWindow;
+ contentWindow.requestIdleCallback(_ => callback0(frame, contentWindow));
+ t.step_timeout(function() { t.done(); }, 1000);
+ }
+
+ function callback0(f, w) {
+ document.body.removeChild(f);
+ w.requestIdleCallback(t.unreached_func("requestIdleCallback callback should not trigger the callback"));
+ }
+
+ addEventListener('load', start, {once:true});
+ }, "calling requestIdleCallback on a contentWindow from a removed iframe should not trigger the callback");
+</script>