test_ext_manifest_omnibox.js (2533B)
1 /* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */ 2 /* vim: set sts=2 sw=2 et tw=80: */ 3 "use strict"; 4 5 async function testKeyword(params) { 6 let normalized = await ExtensionTestUtils.normalizeManifest({ 7 omnibox: { 8 keyword: params.keyword, 9 }, 10 }); 11 12 if (params.expectError) { 13 let expectedError = 14 String.raw`omnibox.keyword: String "${params.keyword}" ` + 15 String.raw`must match /^[^?\s:][^\s:]*$/`; 16 ok( 17 normalized.error.includes(expectedError), 18 `The manifest error ${JSON.stringify(normalized.error)} ` + 19 `must contain ${JSON.stringify(expectedError)}` 20 ); 21 } else { 22 equal(normalized.error, undefined, "Should not have an error"); 23 equal(normalized.errors.length, 0, "Should not have warnings"); 24 } 25 } 26 27 add_task(async function test_manifest_commands() { 28 // accepted single character keywords 29 await testKeyword({ keyword: "a", expectError: false }); 30 await testKeyword({ keyword: "-", expectError: false }); 31 await testKeyword({ keyword: "嗨", expectError: false }); 32 await testKeyword({ keyword: "*", expectError: false }); 33 await testKeyword({ keyword: "/", expectError: false }); 34 35 // rejected single character keywords 36 await testKeyword({ keyword: "?", expectError: true }); 37 await testKeyword({ keyword: " ", expectError: true }); 38 await testKeyword({ keyword: ":", expectError: true }); 39 40 // accepted multi-character keywords 41 await testKeyword({ keyword: "aa", expectError: false }); 42 await testKeyword({ keyword: "http", expectError: false }); 43 await testKeyword({ keyword: "f?a", expectError: false }); 44 await testKeyword({ keyword: "fa?", expectError: false }); 45 await testKeyword({ keyword: "f/x", expectError: false }); 46 await testKeyword({ keyword: "/fx", expectError: false }); 47 await testKeyword({ keyword: "fx/", expectError: false }); 48 49 // rejected multi-character keywords 50 await testKeyword({ keyword: " a", expectError: true }); 51 await testKeyword({ keyword: "a ", expectError: true }); 52 await testKeyword({ keyword: " ", expectError: true }); 53 await testKeyword({ keyword: " a ", expectError: true }); 54 await testKeyword({ keyword: "?fx", expectError: true }); 55 await testKeyword({ keyword: "f:x", expectError: true }); 56 await testKeyword({ keyword: "fx:", expectError: true }); 57 await testKeyword({ keyword: "f x", expectError: true }); 58 59 // miscellaneous tests 60 await testKeyword({ keyword: "こんにちは", expectError: false }); 61 await testKeyword({ keyword: "http://", expectError: true }); 62 });