diff options
Diffstat (limited to 'devtools/client/inspector/fonts/test/head.js')
-rw-r--r-- | devtools/client/inspector/fonts/test/head.js | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/devtools/client/inspector/fonts/test/head.js b/devtools/client/inspector/fonts/test/head.js new file mode 100644 index 000000000..f510ed798 --- /dev/null +++ b/devtools/client/inspector/fonts/test/head.js @@ -0,0 +1,86 @@ + /* vim: set ts=2 et sw=2 tw=80: */ +/* 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/. */ +/* eslint no-unused-vars: [2, {"vars": "local"}] */ +/* import-globals-from ../../test/head.js */ +"use strict"; + +// Import the inspector's head.js first (which itself imports shared-head.js). +Services.scriptloader.loadSubScript( + "chrome://mochitests/content/browser/devtools/client/inspector/test/head.js", + this); + +Services.prefs.setBoolPref("devtools.fontinspector.enabled", true); +Services.prefs.setCharPref("devtools.inspector.activeSidebar", "fontinspector"); +registerCleanupFunction(() => { + Services.prefs.clearUserPref("devtools.fontinspector.enabled"); +}); + +/** + * The font-inspector doesn't participate in the inspector's update mechanism + * (i.e. it doesn't call inspector.updating() when updating), so simply calling + * the default selectNode isn't enough to guaranty that the panel has finished + * updating. We also need to wait for the fontinspector-updated event. + */ +var _selectNode = selectNode; +selectNode = function* (node, inspector, reason) { + let onUpdated = inspector.once("fontinspector-updated"); + yield _selectNode(node, inspector, reason); + yield onUpdated; +}; + +/** + * Adds a new tab with the given URL, opens the inspector and selects the + * font-inspector tab. + * @return {Promise} resolves to a {toolbox, inspector, view} object + */ +var openFontInspectorForURL = Task.async(function* (url) { + yield addTab(url); + let {toolbox, inspector} = yield openInspector(); + + // Call selectNode again here to force a fontinspector update since we don't + // know if the fontinspector-updated event has been sent while the inspector + // was being opened or not. + yield selectNode("body", inspector); + + return { + toolbox, + inspector, + view: inspector.fontInspector + }; +}); + +/** + * Clears the preview input field, types new text into it and waits for the + * preview images to be updated. + * + * @param {FontInspector} view - The FontInspector instance. + * @param {String} text - The text to preview. + */ +function* updatePreviewText(view, text) { + info(`Changing the preview text to '${text}'`); + + let doc = view.chromeDoc; + let input = doc.getElementById("font-preview-text-input"); + let update = view.inspector.once("fontinspector-updated"); + + info("Focusing the input field."); + input.focus(); + + is(doc.activeElement, input, "The input was focused."); + + info("Blanking the input field."); + for (let i = input.value.length; i >= 0; i--) { + EventUtils.sendKey("BACK_SPACE", doc.defaultView); + } + + is(input.value, "", "The input is now blank."); + + info("Typing the specified text to the input field."); + EventUtils.sendString(text, doc.defaultView); + is(input.value, text, "The input now contains the correct text."); + + info("Waiting for the font-inspector to update."); + yield update; +} |