summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/fenced-frame/navigator-vibrate.https.html
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /testing/web-platform/tests/fenced-frame/navigator-vibrate.https.html
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'testing/web-platform/tests/fenced-frame/navigator-vibrate.https.html')
-rw-r--r--testing/web-platform/tests/fenced-frame/navigator-vibrate.https.html60
1 files changed, 60 insertions, 0 deletions
diff --git a/testing/web-platform/tests/fenced-frame/navigator-vibrate.https.html b/testing/web-platform/tests/fenced-frame/navigator-vibrate.https.html
new file mode 100644
index 0000000000..6bcabf4d47
--- /dev/null
+++ b/testing/web-platform/tests/fenced-frame/navigator-vibrate.https.html
@@ -0,0 +1,60 @@
+<!DOCTYPE html>
+<title>Test that navigator.vibrate is disabled in fenced frames.</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="/common/utils.js"></script>
+<script src="/common/dispatcher/dispatcher.js"></script>
+<script src="resources/utils.js"></script>
+
+<body>
+<script>
+// Simulate a click in frame context `frame`.
+async function click(frame) {
+ var actions = new test_driver.Actions();
+ await actions.pointerMove(0, 0, {origin: frame})
+ .pointerDown()
+ .pointerUp()
+ .send();
+}
+
+promise_test(async () => {
+ // This test ensures that vibration is disabled in fenced frames.
+ // It uses a top-level frame A and a fenced frame B.
+ // The structure of the test is as follows:
+ // - Check that B can't vibrate before user activation.
+ // - Check that B can't vibrate after user activation.
+ // - Check that A can't vibrate before user activation.
+ // - Check that A CAN vibrate after user activation.
+
+ const B = attachFencedFrameContext();
+ await B.execute(() => {
+ assert_false(navigator.userActivation.hasBeenActive);
+ var success = navigator.vibrate(100);
+ assert_false(success,
+ "Vibration failed in fenced frame before user activation");
+ });
+
+ await click(B.element);
+ await B.execute(() => {
+ assert_true(navigator.userActivation.hasBeenActive);
+ var success = navigator.vibrate(100);
+ assert_false(success,
+ "Vibration failed in fenced frame, even after user activation");
+ });
+
+ var success = navigator.vibrate(100);
+ assert_false(navigator.userActivation.hasBeenActive);
+ assert_false(success,
+ "Vibration failed in top-level frame before user activation");
+
+ await click(document.documentElement);
+ assert_true(navigator.userActivation.hasBeenActive);
+ var success = navigator.vibrate(100);
+ assert_true(success,
+ "Vibration succeeded in top-level frame after user activation");
+}, 'navigator.vibrate');
+</script>
+</body>