<!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>