Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Unified Diff: third_party/WebKit/LayoutTests/http/tests/media/audio_output_devices/setsinkid.html

Issue 1416123005: Implement setSinkId() for media elements without src. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/http/tests/media/audio_output_devices/setsinkid.html
diff --git a/third_party/WebKit/LayoutTests/http/tests/media/audio_output_devices/setsinkid.html b/third_party/WebKit/LayoutTests/http/tests/media/audio_output_devices/setsinkid.html
new file mode 100644
index 0000000000000000000000000000000000000000..7796ebe02e46ff2e1f82435b7df48638f38b1633
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/http/tests/media/audio_output_devices/setsinkid.html
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html>
+ <head>
+ <title>Audio Output Devices</title>
+ <script src="../../resources/testharness.js"></script>
+ <script src="../../resources/testharnessreport.js"></script>
+ </head>
+ <body>
+ <audio id="testAudio" src="../resources/media-source/webm/test-a-128k-44100Hz-1ch.webm"></audio>
+ <script>
+ var audio = document.getElementById('testAudio');
+
+ // Tests that the API is available.
+ test(function() {
+ assert_not_equals(audio, null);
+ assert_idl_attribute(audio, 'setSinkId');
+ assert_equals(typeof audio.setSinkId, 'function');
+ assert_idl_attribute(audio, 'sinkId');
+ assert_equals(audio.sinkId, '');
+ }, 'Basic API test');
+
+ // Tests that setting the sink to the default device succeeds
+ promise_test(function() {
+ return audio.setSinkId('')
+ .then(function() {
+ // do nothing
+ }).catch(function() {
+ assert_unreached('setSinkId() should have succeeded');
+ });
+ }, 'setSinkId("")');
+
+ // Tests that setting the sink to a valid device without permission fails
+ // Note: 'default' is the hashed name Chrome always provides for the default
+ // device. It is treated like any other hashed device ID, so it is not
+ // automatically authorized like ''.
+ promise_test(function() {
+ return audio.setSinkId('default')
+ .then(function() {
+ assert_unreached('setSinkId() should have failed');
+ }).catch(function(error) {
+ assert_equals(error.name, 'SecurityError');
+ return Promise.resolve();
+ });
+ }, 'setSinkId("default") without permission' );
+
+ // Test that setting the sink to an invalid device fails
+ promise_test(function() {
+ return audio.setSinkId('invalid')
+ .then(function() {
+ assert_unreached('setSinkId() should have failed');
+ }).catch(function(error) {
+ assert_equals(error.name, 'NotFoundError');
+ return Promise.resolve();
+ });
+ }, 'setSinkId("invalid")');
+
+ // Test that setting the sink on an element without src succeeds
+ promise_test(function() {
+ audio.src=""
+ return audio.setSinkId('')
+ .then(function() {
+ // do nothing
+ }).catch(function() {
+ assert_unreached('setSinkId() should have succeeded');
+ });
+ }, 'empty src setSinkId("")');
+
+ // Test that setting the src of an element, and then changing the sink
+ // both succeed.
+ promise_test(function() {
+ audio.src="../resources/media-source/webm/test-a-192k-44100Hz-1ch.webm"
+ return audio.setSinkId('')
+ .then(function() {
+ // do nothing
+ }).catch(function() {
+ assert_unreached('setSinkId() should have succeeded');
+ });
+ }, 'new src setSinkId("")');
+
+ // Tests that setting the sink to the default device a second time succeeds
+ promise_test(function() {
+ return audio.setSinkId('')
+ .then(function() {
+ // do nothing
+ }).catch(function() {
+ assert_unreached('setSinkId() should have succeeded');
+ });
+ }, 'setSinkId("") 2');
+ </script>
+</body>
+</html>
+

Powered by Google App Engine
This is Rietveld 408576698