summaryrefslogtreecommitdiffstats
path: root/devtools/client/inspector/fonts/test/head.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/inspector/fonts/test/head.js')
-rw-r--r--devtools/client/inspector/fonts/test/head.js86
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;
+}