event_volumechange.html (2428B)
1 <!doctype html> 2 <title>volumechange event</title> 3 <script src="/resources/testharness.js"></script> 4 <script src="/resources/testharnessreport.js"></script> 5 <div id="log"></div> 6 <script> 7 function volumechange_test(tagName) { 8 async_test(function(t) { 9 var e = document.createElement(tagName); 10 assert_equals(e.volume, 1); 11 e.volume = 0.5; 12 assert_equals(e.volume, 0.5); 13 e.onvolumechange = t.step_func(function() { 14 assert_equals(e.volume, 0.5); 15 e.volume = 1; 16 assert_equals(e.volume, 1); 17 e.onvolumechange = t.step_func(function() { 18 assert_equals(e.volume, 1); 19 t.done(); 20 }); 21 }); 22 }, "setting " + tagName + ".volume fires volumechange"); 23 24 async_test(function(t) { 25 var e = document.createElement(tagName); 26 assert_false(e.muted); 27 e.muted = true; 28 assert_true(e.muted); 29 e.onvolumechange = t.step_func(function() { 30 assert_true(e.muted); 31 e.muted = false; 32 assert_false(e.muted); 33 e.onvolumechange = t.step_func(function() { 34 assert_false(e.muted); 35 t.done(); 36 }); 37 }); 38 }, "setting " + tagName + ".muted fires volumechange"); 39 40 async_test(function(t) { 41 var e = document.createElement(tagName); 42 e.volume = e.volume; 43 e.muted = e.muted; 44 e.onvolumechange = t.step_func(function() { 45 assert_unreached(); 46 }); 47 var e2 = document.createElement(tagName); 48 e2.muted = !e2.muted; 49 e2.onvolumechange = t.step_func(function() { 50 t.done(); 51 }); 52 }, "setting " + tagName + ".volume/muted to the same value does not fire volumechange"); 53 54 async_test(function(t) { 55 var e = document.createElement(tagName); 56 e.muted = !e.muted; 57 e.volume = 1 - e.volume; 58 e.muted = !e.muted; 59 e.volume = 1 - e.volume; 60 var volumechange_count = 0; 61 e.onvolumechange = t.step_func(function() { 62 volumechange_count++; 63 if (volumechange_count == 4) { 64 t.done(); 65 } 66 }); 67 }, "setting " + tagName + ".volume/muted repeatedly fires volumechange repeatedly"); 68 69 async_test(function(t) { 70 var e = document.createElement(tagName); 71 e.muted = !e.muted; 72 e.volume = 1 - e.volume; 73 e.load(); 74 e.onvolumechange = t.unreached_func(); 75 t.step_timeout(() => { 76 t.done(); 77 }, 1000); 78 }, "setting " + tagName + ".volume/muted before load will not fire volumechange"); 79 } 80 81 volumechange_test("audio"); 82 volumechange_test("video"); 83 </script>