diff options
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.html | 30 |
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> |