diff options
Diffstat (limited to 'dom/base/test/test_domwindowutils.html')
-rw-r--r-- | dom/base/test/test_domwindowutils.html | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/dom/base/test/test_domwindowutils.html b/dom/base/test/test_domwindowutils.html new file mode 100644 index 0000000000..21ad43ae81 --- /dev/null +++ b/dom/base/test/test_domwindowutils.html @@ -0,0 +1,127 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="UTF-8"> + <title>Test for DOMWindowUtils</title> + <script src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> +</head> +<body> +<div id="content" style="display: none"></div> +<pre id="test"> +<script type="application/javascript"> +SimpleTest.waitForExplicitFinish(); + +var utils = SpecialPowers.getDOMWindowUtils(window); +function test_sendMouseEventDefaults() { + var x = 1, y = 2, button = 1, clickCount = 2, + modifiers = SpecialPowers.Ci.nsIDOMWindowUtils.MODIFIER_SHIFT; + + window.addEventListener("mousedown", function(evt) { + // Mandatory args + // coordinates may change slightly due to rounding + ok((evt.clientX <= x+2) && (evt.clientX >= x-2), "check x"); + ok((evt.clientY <= y+2) && (evt.clientY >= y-2), "check y"); + is(evt.button, button, "check button"); + is(evt.detail, clickCount, "check click count"); + is(evt.getModifierState("Shift"), true, "check modifiers"); + + // Default value for optionals + is(evt.mozPressure, 0, "check pressure"); + is(evt.mozInputSource, MouseEvent.MOZ_SOURCE_MOUSE, "check input source"); + is(evt.isSynthesized, undefined, "check isSynthesized is undefined in content"); + is(SpecialPowers.wrap(evt).isSynthesized, true, "check isSynthesized is true from chrome"); + SimpleTest.executeSoon(next); + }, {once: true}); + + // Only pass mandatory arguments and check default values + utils.sendMouseEvent("mousedown", x, y, button, clickCount, modifiers); +} + +function test_sendMouseEventOptionals() { + var x = 1, y = 2, button = 1, clickCount = 3, + modifiers = SpecialPowers.Ci.nsIDOMWindowUtils.MODIFIER_SHIFT, + pressure = 0.5, + source = MouseEvent.MOZ_SOURCE_KEYBOARD; + + window.addEventListener("mouseup", function(evt) { + is(evt.mozInputSource, source, "explicit input source is valid"); + is(SpecialPowers.wrap(evt).isSynthesized, false, "we can dispatch event that don't look synthesized"); + SimpleTest.executeSoon(next); + }, {once: true}); + + // Check explicit value for optional args + utils.sendMouseEvent("mouseup", x, y, button, clickCount, modifiers, + false, pressure, source, false); +} + +function test_sendMouseEvent4thButton() { + const x = 1, y = 2, button = 3, clickCount = 1, modifiers = 0; + + window.addEventListener("mousedown", evt => { + is(evt.buttons, 2 ** button, "check button"); + SimpleTest.executeSoon(next); + }, { once: true }); + + utils.sendMouseEvent("mousedown", x, y, button, clickCount, modifiers); +} + +function test_sendMouseEvent5thButton() { + const x = 1, y = 2, button = 4, clickCount = 1, modifiers = 0; + + window.addEventListener("mousedown", evt => { + is(evt.buttons, 2 ** button, "check button"); + SimpleTest.executeSoon(next); + }, { once: true }); + + utils.sendMouseEvent("mousedown", x, y, button, clickCount, modifiers); +} + +function test_getUnanimatedComputedStyle() { + SpecialPowers.pushPrefEnv( + { + set: [ + ["dom.animations-api.timelines.enabled", true], + ["layout.css.properties-and-values.enabled", true], + ], + }, + () => { + window.open("file_domwindowutils_animation.html"); + } + ); +} + +function test_setDynamicToolbarMaxHeight() { + window.open("file_domwindowutils_dynamic_toolbar.html"); +} + +var tests = [ + test_sendMouseEventDefaults, + test_sendMouseEventOptionals, + test_sendMouseEvent4thButton, + test_sendMouseEvent5thButton, + test_getUnanimatedComputedStyle, + test_setDynamicToolbarMaxHeight +]; + +function next() { + if (!tests.length) { + SimpleTest.finish(); + return; + } + + var test = tests.shift(); + test(); +} + +function start() { + SimpleTest.waitForExplicitFinish(); + SimpleTest.executeSoon(next); +} + +window.addEventListener("load", start); + +</script> +</pre> +</body> +</html> |