| <!doctype html> |
| <title>volumechange event</title> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <div id="log"></div> |
| <script> |
| function volumechange_test(tagName) { |
| async_test(function(t) { |
| var e = document.createElement(tagName); |
| assert_equals(e.volume, 1); |
| e.volume = 0.5; |
| assert_equals(e.volume, 0.5); |
| e.onvolumechange = t.step_func(function() { |
| assert_equals(e.volume, 0.5); |
| e.volume = 1; |
| assert_equals(e.volume, 1); |
| e.onvolumechange = t.step_func(function() { |
| assert_equals(e.volume, 1); |
| t.done(); |
| }); |
| }); |
| }, "setting " + tagName + ".volume fires volumechange"); |
| |
| async_test(function(t) { |
| var e = document.createElement(tagName); |
| assert_false(e.muted); |
| e.muted = true; |
| assert_true(e.muted); |
| e.onvolumechange = t.step_func(function() { |
| assert_true(e.muted); |
| e.muted = false; |
| assert_false(e.muted); |
| e.onvolumechange = t.step_func(function() { |
| assert_false(e.muted); |
| t.done(); |
| }); |
| }); |
| }, "setting " + tagName + ".muted fires volumechange"); |
| |
| async_test(function(t) { |
| var e = document.createElement(tagName); |
| e.volume = e.volume; |
| e.muted = e.muted; |
| e.onvolumechange = t.step_func(function() { |
| assert_unreached(); |
| }); |
| var e2 = document.createElement(tagName); |
| e2.muted = !e2.muted; |
| e2.onvolumechange = t.step_func(function() { |
| t.done(); |
| }); |
| }, "setting " + tagName + ".volume/muted to the same value does not fire volumechange"); |
| |
| async_test(function(t) { |
| var e = document.createElement(tagName); |
| e.muted = !e.muted; |
| e.volume = 1 - e.volume; |
| e.muted = !e.muted; |
| e.volume = 1 - e.volume; |
| var volumechange_count = 0; |
| e.onvolumechange = t.step_func(function() { |
| volumechange_count++; |
| if (volumechange_count == 4) { |
| t.done(); |
| } |
| }); |
| }, "setting " + tagName + ".volume/muted repeatedly fires volumechange repeatedly"); |
| } |
| |
| volumechange_test("audio"); |
| volumechange_test("video"); |
| </script> |