test_wheel_zoom_on_form_controls.html (2057B)
1 <!DOCTYPE HTML> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title>Zoom using wheel should work on form controls</title> 6 <script src="/tests/SimpleTest/SimpleTest.js"></script> 7 <script src="/tests/SimpleTest/EventUtils.js"></script> 8 <link rel="stylesheet" href="/tests/SimpleTest/test.css"/> 9 </head> 10 <body> 11 <p id="display"></p> 12 <div id="content" style="display: none"></div> 13 <pre id="test"></pre> 14 <button id="button" style="width:10px;height:10px;"></button><br> 15 <input id="input" style="border: 10px solid green;"><br> 16 <textarea id="textarea" style="border: 10px solid green;"></textarea><br> 17 <select id="select"><option></option></select> 18 <select id="list" size=4> 19 <option>XXXXXXXXXX</option> 20 <option>XXXXXXXXXX</option> 21 <option>XXXXXXXXXX</option> 22 <option>XXXXXXXXXX</option> 23 <option>XXXXXXXXXX</option> 24 <option>XXXXXXXXXX</option> 25 </select> 26 <script> 27 28 async function testControl(id) { 29 var initialZoom = SpecialPowers.getFullZoom(window); 30 var element = document.getElementById(id); 31 32 const zoomHasHappened = SimpleTest.promiseWaitForCondition(() => { 33 const zoom = SpecialPowers.getFullZoom(window); 34 return (zoom != initialZoom); 35 }, id + ": wheel event changed the zoom."); 36 37 let event = { 38 deltaMode: WheelEvent.DOM_DELTA_LINE, 39 deltaY: 3, 40 ctrlKey: true 41 }; 42 synthesizeWheel(element, 5, 5, event); 43 44 await zoomHasHappened; 45 isnot(SpecialPowers.getFullZoom(window), initialZoom, id + ": should have zoomed"); 46 SpecialPowers.setFullZoom(window, initialZoom); 47 } 48 49 async function test() { 50 await testControl("button"); 51 await testControl("input"); 52 await testControl("textarea"); 53 await testControl("select"); 54 await testControl("list"); 55 SimpleTest.finish(); 56 } 57 58 SimpleTest.waitForExplicitFinish(); 59 SimpleTest.waitForFocus(() => { 60 SpecialPowers.pushPrefEnv({ 61 "set":[ 62 ["mousewheel.with_control.action", 3], // Scroll on Ctrl + mousewheel 63 ["test.events.async.enabled", true], 64 ] 65 }, test) 66 }); 67 </script> 68 </body> 69 </html>