Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: os == 'android'
- Manifest: browser/components/extensions/test/xpcshell/xpcshell.toml
/* -*- 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);
}
});