summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/mozilla/tests/audio-output/selectAudioOutput-user-activation-consumed.https.html
diff options
context:
space:
mode:
Diffstat (limited to 'testing/web-platform/mozilla/tests/audio-output/selectAudioOutput-user-activation-consumed.https.html')
-rw-r--r--testing/web-platform/mozilla/tests/audio-output/selectAudioOutput-user-activation-consumed.https.html30
1 files changed, 30 insertions, 0 deletions
diff --git a/testing/web-platform/mozilla/tests/audio-output/selectAudioOutput-user-activation-consumed.https.html b/testing/web-platform/mozilla/tests/audio-output/selectAudioOutput-user-activation-consumed.https.html
new file mode 100644
index 0000000000..01758fa179
--- /dev/null
+++ b/testing/web-platform/mozilla/tests/audio-output/selectAudioOutput-user-activation-consumed.https.html
@@ -0,0 +1,30 @@
+<!doctype html>
+<head>
+<title>Test selectAudioOutput() after user activation is consumed</title>
+<link rel="help" href="https://github.com/w3c/mediacapture-output/issues/107">
+</head>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script>
+'use strict';
+
+promise_test(async t => {
+ await test_driver.bless('transient activation');
+ // SpecialPowers is used to consume user activation because the only
+ // spec-compliant Gecko API that consumes user activation is
+ // navigator.share(), which is disabled on CI versions of WINNT.
+ // https://searchfox.org/mozilla-central/rev/66547980e8e8ca583473c74f207cae5bac1ed541/testing/web-platform/meta/web-share/share-consume-activation.https.html.ini#4
+ const had_transient_activation =
+ SpecialPowers.wrap(document).consumeTransientUserGestureActivation();
+ assert_true(had_transient_activation,
+ 'should have had transient activation');
+ const p = navigator.mediaDevices.selectAudioOutput();
+ // Race a settled promise to check that the returned promise is already
+ // rejected.
+ await promise_rejects_dom(
+ t, 'InvalidStateError', Promise.race([p, Promise.resolve()]),
+ 'selectAudioOutput should have returned an already-rejected promise.');
+});
+</script>