forked from mirrors/gecko-dev
# ignore-this-changeset Differential Revision: https://phabricator.services.mozilla.com/D36042 --HG-- extra : source : d3afcafdce650a6f36cebbc126ee93b17f13cf52
52 lines
1.7 KiB
JavaScript
52 lines
1.7 KiB
JavaScript
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
|
|
/* vim: set sts=2 sw=2 et tw=80: */
|
|
"use strict";
|
|
|
|
add_task(async function test_manifest_commands() {
|
|
const validShortcuts = [
|
|
"Ctrl+Y",
|
|
"MacCtrl+Y",
|
|
"Command+Y",
|
|
"Alt+Shift+Y",
|
|
"Ctrl+Alt+Y",
|
|
"F1",
|
|
"MediaNextTrack",
|
|
];
|
|
const invalidShortcuts = ["Shift+Y", "Y", "Ctrl+Ctrl+Y", "Ctrl+Command+Y"];
|
|
|
|
async function validateShortcut(shortcut, isValid) {
|
|
let normalized = await ExtensionTestUtils.normalizeManifest({
|
|
commands: {
|
|
"toggle-feature": {
|
|
suggested_key: { default: shortcut },
|
|
description: "Send a 'toggle-feature' event to the extension",
|
|
},
|
|
},
|
|
});
|
|
if (isValid) {
|
|
ok(!normalized.error, "There should be no manifest errors.");
|
|
} else {
|
|
let expectedError =
|
|
String.raw`Error processing commands.toggle-feature.suggested_key.default: Error: ` +
|
|
String.raw`Value "${shortcut}" must consist of ` +
|
|
String.raw`either a combination of one or two modifiers, including ` +
|
|
String.raw`a mandatory primary modifier and a key, separated by '+', ` +
|
|
String.raw`or a media key. For details see: ` +
|
|
String.raw`https://developer.mozilla.org/en-US/Add-ons/WebExtensions/manifest.json/commands#Key_combinations`;
|
|
|
|
ok(
|
|
normalized.error.includes(expectedError),
|
|
`The manifest error ${JSON.stringify(
|
|
normalized.error
|
|
)} must contain ${JSON.stringify(expectedError)}`
|
|
);
|
|
}
|
|
}
|
|
|
|
for (let shortcut of validShortcuts) {
|
|
validateShortcut(shortcut, true);
|
|
}
|
|
for (let shortcut of invalidShortcuts) {
|
|
validateShortcut(shortcut, false);
|
|
}
|
|
});
|