tor-browser

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

browser_contextmenu_add_search_engine.js (6970B)


      1 /* Any copyright is dedicated to the Public Domain.
      2   http://creativecommons.org/publicdomain/zero/1.0/ */
      3 
      4 "use strict";
      5 
      6 let contextMenu;
      7 
      8 const example_base =
      9  "https://example.com/browser/browser/base/content/test/contextMenu/";
     10 const chrome_base =
     11  "chrome://mochitests/content/browser/browser/base/content/test/contextMenu/";
     12 
     13 const HTTP_URL = example_base + "subtst_contextmenu_add_search_engine.html";
     14 const CHROME_URL = chrome_base + "subtst_contextmenu_add_search_engine.html";
     15 
     16 const askChatMenu = [
     17  "context-ask-chat",
     18  true,
     19  // Need a blank entry here because the Ask Chat submenu is dynamically built with no ids.
     20  "",
     21  null,
     22 ];
     23 
     24 add_task(async function test_setup() {
     25  await BrowserTestUtils.openNewForegroundTab(gBrowser, HTTP_URL);
     26  const contextmenu_common = chrome_base + "contextmenu_common.js";
     27  /* import-globals-from contextmenu_common.js */
     28  Services.scriptloader.loadSubScript(contextmenu_common, this);
     29 });
     30 
     31 add_task(async function test_text_input_spellcheck_noform() {
     32  await test_contextmenu(
     33    "#input_text_no_form",
     34    [
     35      "context-undo",
     36      false,
     37      "context-redo",
     38      false,
     39      "---",
     40      null,
     41      "context-cut",
     42      null, // ignore the enabled/disabled states; there are race conditions
     43      // in the edit commands but they're not relevant for what we're testing.
     44      "context-copy",
     45      null,
     46      "context-paste",
     47      null, // ignore clipboard state
     48      "context-delete",
     49      null,
     50      "context-selectall",
     51      null,
     52      "---",
     53      null,
     54      ...askChatMenu,
     55      "---",
     56      null,
     57      "spell-check-enabled",
     58      true,
     59      "spell-dictionaries",
     60      true,
     61      [
     62        "spell-check-dictionary-en-US",
     63        true,
     64        "---",
     65        null,
     66        "spell-add-dictionaries",
     67        true,
     68      ],
     69      null,
     70    ],
     71    {
     72      waitForSpellCheck: true,
     73      async preCheckContextMenuFn() {
     74        await SpecialPowers.spawn(
     75          gBrowser.selectedBrowser,
     76          [],
     77          async function () {
     78            let doc = content.document;
     79            let input = doc.getElementById("input_text_no_form");
     80            input.setAttribute("spellcheck", "true");
     81            input.clientTop; // force layout flush
     82          }
     83        );
     84      },
     85      awaitOnMenuBuilt: {
     86        id: "context-ask-chat",
     87      },
     88    }
     89  );
     90 });
     91 
     92 add_task(async function test_text_input_spellcheck_loginform() {
     93  await test_contextmenu(
     94    "#login_text",
     95    [
     96      "manage-saved-logins",
     97      true,
     98      "---",
     99      null,
    100      "context-undo",
    101      false,
    102      "context-redo",
    103      false,
    104      "---",
    105      null,
    106      "context-cut",
    107      null, // ignore the enabled/disabled states; there are race conditions
    108      // in the edit commands but they're not relevant for what we're testing.
    109      "context-copy",
    110      null,
    111      "context-paste",
    112      null, // ignore clipboard state
    113      "context-delete",
    114      null,
    115      "context-selectall",
    116      null,
    117      "---",
    118      null,
    119      ...askChatMenu,
    120      "---",
    121      null,
    122      "spell-check-enabled",
    123      true,
    124      "spell-dictionaries",
    125      true,
    126      [
    127        "spell-check-dictionary-en-US",
    128        true,
    129        "---",
    130        null,
    131        "spell-add-dictionaries",
    132        true,
    133      ],
    134      null,
    135    ],
    136    {
    137      waitForSpellCheck: true,
    138      async preCheckContextMenuFn() {
    139        await SpecialPowers.spawn(
    140          gBrowser.selectedBrowser,
    141          [],
    142          async function () {
    143            let doc = content.document;
    144            let input = doc.getElementById("login_text");
    145            input.setAttribute("spellcheck", "true");
    146            input.clientTop; // force layout flush
    147          }
    148        );
    149      },
    150      awaitOnMenuBuilt: {
    151        id: "context-ask-chat",
    152      },
    153    }
    154  );
    155 });
    156 
    157 add_task(async function test_text_input_spellcheck_searchform() {
    158  await test_contextmenu(
    159    "#search_text",
    160    [
    161      "context-undo",
    162      false,
    163      "context-redo",
    164      false,
    165      "---",
    166      null,
    167      "context-cut",
    168      null, // ignore the enabled/disabled states; there are race conditions
    169      // in the edit commands but they're not relevant for what we're testing.
    170      "context-copy",
    171      null,
    172      "context-paste",
    173      null, // ignore clipboard state
    174      "context-delete",
    175      null,
    176      "context-selectall",
    177      null,
    178      "---",
    179      null,
    180      "context-add-engine",
    181      null,
    182      ...askChatMenu,
    183      "---",
    184      null,
    185      "spell-check-enabled",
    186      true,
    187      "spell-dictionaries",
    188      true,
    189      [
    190        "spell-check-dictionary-en-US",
    191        true,
    192        "---",
    193        null,
    194        "spell-add-dictionaries",
    195        true,
    196      ],
    197      null,
    198    ],
    199    {
    200      waitForSpellCheck: true,
    201      async preCheckContextMenuFn() {
    202        await SpecialPowers.spawn(
    203          gBrowser.selectedBrowser,
    204          [],
    205          async function () {
    206            let doc = content.document;
    207            let input = doc.getElementById("search_text");
    208            input.setAttribute("spellcheck", "true");
    209            input.clientTop; // force layout flush
    210          }
    211        );
    212      },
    213      awaitOnMenuBuilt: {
    214        id: "context-ask-chat",
    215      },
    216    }
    217  );
    218 });
    219 
    220 // context-add-engine should not be available on non-http[s] pages.
    221 add_task(async function test_searchform_non_http() {
    222  let browserLoadedPromise = BrowserTestUtils.browserLoaded(
    223    gBrowser,
    224    false,
    225    CHROME_URL
    226  );
    227  BrowserTestUtils.startLoadingURIString(gBrowser, CHROME_URL);
    228  await browserLoadedPromise;
    229 
    230  await test_contextmenu(
    231    "#search_text",
    232    [
    233      "context-undo",
    234      false,
    235      "context-redo",
    236      false,
    237      "---",
    238      null,
    239      "context-cut",
    240      null, // ignore the enabled/disabled states; there are race conditions
    241      // in the edit commands but they're not relevant for what we're testing.
    242      "context-copy",
    243      null,
    244      "context-paste",
    245      null, // ignore clipboard state
    246      "context-delete",
    247      null,
    248      "context-selectall",
    249      null,
    250      "---",
    251      null,
    252      ...askChatMenu,
    253      "---",
    254      null,
    255      "spell-check-enabled",
    256      true,
    257      "spell-dictionaries",
    258      true,
    259      [
    260        "spell-check-dictionary-en-US",
    261        true,
    262        "---",
    263        null,
    264        "spell-add-dictionaries",
    265        true,
    266      ],
    267      null,
    268    ],
    269    {
    270      waitForSpellCheck: true,
    271      async preCheckContextMenuFn() {
    272        await SpecialPowers.spawn(
    273          gBrowser.selectedBrowser,
    274          [],
    275          async function () {
    276            let doc = content.document;
    277            let input = doc.getElementById("search_text");
    278            input.setAttribute("spellcheck", "true");
    279            input.clientTop; // force layout flush
    280          }
    281        );
    282      },
    283      awaitOnMenuBuilt: {
    284        id: "context-ask-chat",
    285      },
    286    }
    287  );
    288 });
    289 
    290 add_task(async function test_cleanup() {
    291  BrowserTestUtils.removeTab(gBrowser.selectedTab);
    292 });