Index: LayoutTests/media/muted.html |
diff --git a/LayoutTests/media/muted.html b/LayoutTests/media/muted.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..41d6b538437f257f0485d329c8ad04fee0a003c7 |
--- /dev/null |
+++ b/LayoutTests/media/muted.html |
@@ -0,0 +1,169 @@ |
+<!doctype html> |
+<!-- original: https://github.com/w3c/web-platform-tests/blob/17e61b54afe98b7385c8b7777e18f5f5b903a23c/html/semantics/embedded-content/media-elements/user-interface/muted.html --> |
+<title>muted</title> |
+<script src="../resources/testharness.js"></script> |
+<script src="../resources/testharnessreport.js"></script> |
+<style>video { display: none; }</style> |
+<div id=log></div> |
+ |
+<script> |
+function test_setting(e, muted, hasAttribute) |
+{ |
+ assert_equals(e.muted, muted); |
+ assert_equals(e.hasAttribute('muted'), hasAttribute); |
+ |
+ e.muted = !e.muted; |
+ assert_equals(e.muted, !muted); |
+ assert_equals(e.hasAttribute('muted'), hasAttribute); |
+ |
+ e.muted = !e.muted; |
+ assert_equals(e.muted, muted); |
+ assert_equals(e.hasAttribute('muted'), hasAttribute); |
+} |
+</script> |
+ |
+<!-- These tests are inside <audio>/<video> so that the steps for updating the |
+ muted IDL attribute cannot be delayed until the end tag is parsed. --> |
+ |
+<audio id=a1> |
+<script> |
+var a1 = document.getElementById('a1'); |
+ |
+test(function() |
+{ |
+ assert_false(a1.muted); |
+}, 'getting audio.muted (parser-created)'); |
+ |
+test(function() |
+{ |
+ test_setting(a1, false, false); |
+}, 'setting audio.muted (parser-created)'); |
+</script> |
+</audio> |
+ |
+<audio id=a2 muted> |
+<script> |
+var a2 = document.getElementById('a2'); |
+ |
+test(function() |
+{ |
+ assert_true(a2.muted); |
+}, 'getting audio.muted with muted="" (parser-created)'); |
+ |
+test(function() |
+{ |
+ test_setting(a2, true, true); |
+}, 'setting audio.muted with muted="" (parser-created)'); |
+</script> |
+</audio> |
+ |
+<video id=v1> |
+<script> |
+var v1 = document.getElementById('v1'); |
+ |
+test(function() |
+{ |
+ assert_false(v1.muted); |
+}, 'getting video.muted (parser-created)'); |
+ |
+test(function() |
+{ |
+ test_setting(v1, false, false); |
+}, 'setting video.muted (parser-created)'); |
+</script> |
+</video> |
+ |
+<video id=v2 muted> |
+<script> |
+var v2 = document.getElementById('v2'); |
+ |
+test(function() |
+{ |
+ assert_true(v2.muted); |
+}, 'getting video.muted with muted="" (parser-created)'); |
+ |
+test(function() |
+{ |
+ test_setting(v2, true, true); |
+}, 'setting video.muted with muted="" (parser-created)'); |
+</script> |
+</video> |
+ |
+<!-- Negative test to ensure that the load algorithm does not update the |
+ muted IDL attribute to match the content attribute. --> |
+ |
+<video id=v3 muted></video> |
+<script> |
+async_test(function(t) |
+{ |
+ var v = document.getElementById('v3'); |
+ assert_true(v.muted); |
+ v.muted = false; |
+ v.src = 'data:,'; // invokes load() |
+ v.addEventListener('error', t.step_func(function() |
+ { |
+ assert_false(v.muted); |
+ t.done(); |
+ })); |
+}, 'getting video.muted with muted="" after load (parser-created)'); |
+</script> |
+ |
+<script> |
+['audio', 'video'].forEach(function(tagName) |
+{ |
+ test(function() |
+ { |
+ var m = document.createElement(tagName); |
+ assert_false(m.muted); |
+ }, 'getting ' + tagName + '.muted (script-created)'); |
+ |
+ test(function() |
+ { |
+ var m = document.createElement(tagName); |
+ test_setting(m, false, false); |
+ }, 'setting ' + tagName + '.muted (script-created)'); |
+ |
+ test(function() |
+ { |
+ var m = document.createElement(tagName); |
+ m.setAttribute('muted', ''); |
+ assert_false(m.muted); |
+ }, 'getting ' + tagName + '.muted with muted="" (script-created)'); |
+ |
+ test(function() |
+ { |
+ var m = document.createElement(tagName); |
+ m.setAttribute('muted', ''); |
+ test_setting(m, false, true); |
+ }, 'setting ' + tagName + '.muted with muted="" (script-created)'); |
+ |
+ // Spec bug: https://www.w3.org/Bugs/Public/show_bug.cgi?id=25153 |
+ test(function() |
+ { |
+ var m = document.createElement(tagName); |
+ m.setAttribute('muted', ''); |
+ m = m.cloneNode(false); |
+ assert_true(m.hasAttribute('muted')); |
+ assert_false(m.muted); |
+ }, 'getting ' + tagName + '.muted with muted="" (cloneNode-created)'); |
+ |
+ test(function() |
+ { |
+ var div = document.createElement('div'); |
+ div.innerHTML = '<' + tagName + ' muted>'; |
+ m = div.firstChild; |
+ assert_true(m.hasAttribute('muted')); |
+ assert_true(m.muted); |
+ }, 'getting ' + tagName + '.muted with muted="" (innerHTML-created)'); |
+ |
+ test(function() |
+ { |
+ var id = tagName; |
+ assert_equals(document.getElementById(id), null); |
+ document.write('<' + tagName + ' id=' + id + ' muted>'); |
+ m = document.getElementById(id); |
+ assert_true(m.hasAttribute('muted')); |
+ assert_true(m.muted); |
+ }, 'getting ' + tagName + '.muted with muted="" (document.write-created)'); |
+}); |
+</script> |