/* -*- 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); } });