diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-events.js | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-events.js')
-rw-r--r-- | devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-events.js | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-events.js b/devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-events.js new file mode 100644 index 000000000..49543b5ce --- /dev/null +++ b/devtools/client/inspector/test/browser_inspector_highlighter-eyedropper-events.js @@ -0,0 +1,141 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +"use strict"; + +// Test the eyedropper mouse and keyboard handling. + +const HIGHLIGHTER_TYPE = "EyeDropper"; +const ID = "eye-dropper-"; +const TEST_URI = ` +<style> + html{width:100%;height:100%;} +</style> +<body>eye-dropper test</body>`; + +const MOVE_EVENTS_DATA = [ + {type: "mouse", x: 200, y: 100, expected: {x: 200, y: 100}}, + {type: "mouse", x: 100, y: 200, expected: {x: 100, y: 200}}, + {type: "keyboard", key: "VK_LEFT", expected: {x: 99, y: 200}}, + {type: "keyboard", key: "VK_LEFT", shift: true, expected: {x: 89, y: 200}}, + {type: "keyboard", key: "VK_RIGHT", expected: {x: 90, y: 200}}, + {type: "keyboard", key: "VK_RIGHT", shift: true, expected: {x: 100, y: 200}}, + {type: "keyboard", key: "VK_DOWN", expected: {x: 100, y: 201}}, + {type: "keyboard", key: "VK_DOWN", shift: true, expected: {x: 100, y: 211}}, + {type: "keyboard", key: "VK_UP", expected: {x: 100, y: 210}}, + {type: "keyboard", key: "VK_UP", shift: true, expected: {x: 100, y: 200}}, + // Mouse initialization for left and top snapping + {type: "mouse", x: 7, y: 7, expected: {x: 7, y: 7}}, + // Left Snapping + {type: "keyboard", key: "VK_LEFT", shift: true, expected: {x: 0, y: 7}, + desc: "Left Snapping to x=0"}, + // Top Snapping + {type: "keyboard", key: "VK_UP", shift: true, expected: {x: 0, y: 0}, + desc: "Top Snapping to y=0"}, + // Mouse initialization for right snapping + { + type: "mouse", + x: (width, height) => width - 5, + y: 0, + expected: { + x: (width, height) => width - 5, + y: 0 + } + }, + // Right snapping + { + type: "keyboard", + key: "VK_RIGHT", + shift: true, + expected: { + x: (width, height) => width, + y: 0 + }, + desc: "Right snapping to x=max window width available" + }, + // Mouse initialization for bottom snapping + { + type: "mouse", + x: 0, + y: (width, height) => height - 5, + expected: { + x: 0, + y: (width, height) => height - 5 + } + }, + // Bottom snapping + { + type: "keyboard", + key: "VK_DOWN", + shift: true, + expected: { + x: 0, + y: (width, height) => height + }, + desc: "Bottom snapping to y=max window height available" + }, +]; + +add_task(function* () { + let {inspector, testActor} = yield openInspectorForURL( + "data:text/html;charset=utf-8," + encodeURIComponent(TEST_URI)); + let helper = yield getHighlighterHelperFor(HIGHLIGHTER_TYPE)({inspector, testActor}); + + helper.prefix = ID; + + yield helper.show("html"); + yield respondsToMoveEvents(helper, testActor); + yield respondsToReturnAndEscape(helper); + + helper.finalize(); +}); + +function* respondsToMoveEvents(helper, testActor) { + info("Checking that the eyedropper responds to events from the mouse and keyboard"); + let {mouse} = helper; + let {width, height} = yield testActor.getBoundingClientRect("html"); + + for (let {type, x, y, key, shift, expected, desc} of MOVE_EVENTS_DATA) { + x = typeof x === "function" ? x(width, height) : x; + y = typeof y === "function" ? y(width, height) : y; + expected.x = typeof expected.x === "function" ? + expected.x(width, height) : expected.x; + expected.y = typeof expected.y === "function" ? + expected.y(width, height) : expected.y; + + if (typeof desc === "undefined") { + info(`Simulating a ${type} event to move to ${expected.x} ${expected.y}`); + } else { + info(`Simulating ${type} event: ${desc}`); + } + + if (type === "mouse") { + yield mouse.move(x, y); + } else if (type === "keyboard") { + let options = shift ? {shiftKey: true} : {}; + yield EventUtils.synthesizeKey(key, options); + } + yield checkPosition(expected, helper); + } +} + +function* checkPosition({x, y}, {getElementAttribute}) { + let style = yield getElementAttribute("root", "style"); + is(style, `top:${y}px;left:${x}px;`, + `The eyedropper is at the expected ${x} ${y} position`); +} + +function* respondsToReturnAndEscape({isElementHidden, show}) { + info("Simulating return to select the color and hide the eyedropper"); + + yield EventUtils.synthesizeKey("VK_RETURN", {}); + let hidden = yield isElementHidden("root"); + ok(hidden, "The eyedropper has been hidden"); + + info("Showing the eyedropper again and simulating escape to hide it"); + + yield show("html"); + yield EventUtils.synthesizeKey("VK_ESCAPE", {}); + hidden = yield isElementHidden("root"); + ok(hidden, "The eyedropper has been hidden again"); +} |