tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

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