tor-browser

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

browser-sets.js (11982B)


      1 /* -*- indent-tabs-mode: nil; js-indent-level: 2 -*-
      2 * This Source Code Form is subject to the terms of the Mozilla Public
      3 * License, v. 2.0. If a copy of the MPL was not distributed with this
      4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
      5 
      6 document.addEventListener(
      7  "MozBeforeInitialXULLayout",
      8  () => {
      9    // <commandset id="mainCommandSet"> defined in browser-sets.inc
     10    document
     11      .getElementById("mainCommandSet")
     12      // eslint-disable-next-line complexity
     13      .addEventListener("command", event => {
     14        switch (event.target.id) {
     15          case "cmd_newNavigator":
     16            OpenBrowserWindow();
     17            break;
     18          case "cmd_handleBackspace":
     19            BrowserCommands.handleBackspace();
     20            break;
     21          case "cmd_handleShiftBackspace":
     22            BrowserCommands.handleShiftBackspace();
     23            break;
     24          case "cmd_newNavigatorTab":
     25            BrowserCommands.openTab({ event });
     26            break;
     27          case "cmd_newNavigatorTabNoEvent":
     28            BrowserCommands.openTab();
     29            break;
     30          case "Browser:OpenFile":
     31            BrowserCommands.openFileWindow();
     32            break;
     33          case "Browser:SavePage":
     34            saveBrowser(gBrowser.selectedBrowser);
     35            break;
     36          case "Browser:SendLink":
     37            MailIntegration.sendLinkForBrowser(gBrowser.selectedBrowser);
     38            break;
     39          case "cmd_pageSetup":
     40            PrintUtils.showPageSetup();
     41            break;
     42          case "cmd_print":
     43            PrintUtils.startPrintWindow(
     44              gBrowser.selectedBrowser.browsingContext
     45            );
     46            break;
     47          case "cmd_printPreviewToggle":
     48            PrintUtils.togglePrintPreview(
     49              gBrowser.selectedBrowser.browsingContext
     50            );
     51            break;
     52          case "cmd_file_importFromAnotherBrowser":
     53            MigrationUtils.showMigrationWizard(window, {
     54              entrypoint: MigrationUtils.MIGRATION_ENTRYPOINTS.FILE_MENU,
     55            });
     56            break;
     57          case "cmd_help_importFromAnotherBrowser":
     58            MigrationUtils.showMigrationWizard(window, {
     59              entrypoint: MigrationUtils.MIGRATION_ENTRYPOINTS.HELP_MENU,
     60            });
     61            break;
     62          case "cmd_close":
     63            BrowserCommands.closeTabOrWindow(event);
     64            break;
     65          case "cmd_closeWindow":
     66            BrowserCommands.tryToCloseWindow(event);
     67            break;
     68          case "cmd_minimizeWindow":
     69            window.minimize();
     70            break;
     71          case "cmd_maximizeWindow":
     72            window.maximize();
     73            break;
     74          case "cmd_restoreWindow":
     75            window.fullScreen ? BrowserCommands.fullScreen() : window.restore();
     76            break;
     77          case "cmd_toggleMute":
     78            gBrowser.toggleMuteAudioOnMultiSelectedTabs(gBrowser.selectedTab);
     79            break;
     80          case "cmd_CustomizeToolbars":
     81            gCustomizeMode.enter();
     82            break;
     83          case "cmd_toggleOfflineStatus":
     84            BrowserOffline.toggleOfflineStatus();
     85            break;
     86          case "cmd_quitApplication":
     87            goQuitApplication(event);
     88            break;
     89          case "View:AboutProcesses":
     90            switchToTabHavingURI("about:processes", true);
     91            break;
     92          case "View:PageSource":
     93            BrowserCommands.viewSource(window.gBrowser.selectedBrowser);
     94            break;
     95          case "View:PageInfo":
     96            BrowserCommands.pageInfo();
     97            break;
     98          case "View:FullScreen":
     99            BrowserCommands.fullScreen();
    100            break;
    101          case "View:ReaderView":
    102            AboutReaderParent.toggleReaderMode(event);
    103            break;
    104          case "View:PictureInPicture":
    105            PictureInPicture.onCommand(event);
    106            break;
    107          case "cmd_find":
    108            gLazyFindCommand("onFindCommand");
    109            break;
    110          case "cmd_findAgain":
    111            gLazyFindCommand("onFindAgainCommand", false);
    112            break;
    113          case "cmd_findPrevious":
    114            gLazyFindCommand("onFindAgainCommand", true);
    115            break;
    116          case "cmd_findSelection":
    117            gLazyFindCommand("onFindSelectionCommand");
    118            break;
    119          case "cmd_translate":
    120            FullPageTranslationsPanel.open(event);
    121            break;
    122          case "Browser:AddBookmarkAs":
    123            PlacesCommandHook.bookmarkPage();
    124            break;
    125          case "Browser:SearchBookmarks":
    126            PlacesCommandHook.searchBookmarks();
    127            break;
    128          case "Browser:BookmarkAllTabs":
    129            PlacesCommandHook.bookmarkTabs();
    130            break;
    131          case "Browser:Back":
    132            BrowserCommands.back();
    133            break;
    134          case "Browser:BackOrBackDuplicate":
    135            BrowserCommands.back(event);
    136            break;
    137          case "Browser:Forward":
    138            BrowserCommands.forward();
    139            break;
    140          case "Browser:ForwardOrForwardDuplicate":
    141            BrowserCommands.forward(event);
    142            break;
    143          case "Browser:Stop":
    144            BrowserCommands.stop();
    145            break;
    146          case "Browser:Reload":
    147            if (event.shiftKey) {
    148              BrowserCommands.reloadSkipCache();
    149            } else {
    150              BrowserCommands.reload();
    151            }
    152            break;
    153          case "Browser:ReloadOrDuplicate":
    154            BrowserCommands.reloadOrDuplicate(event);
    155            break;
    156          case "Browser:ReloadSkipCache":
    157            BrowserCommands.reloadSkipCache();
    158            break;
    159          case "Browser:NextTab":
    160            gBrowser.tabContainer.advanceSelectedTab(1, true);
    161            break;
    162          case "Browser:PrevTab":
    163            gBrowser.tabContainer.advanceSelectedTab(-1, true);
    164            break;
    165          case "Browser:ShowAllTabs":
    166            gTabsPanel.showAllTabsPanel();
    167            break;
    168          case "cmd_fullZoomReduce":
    169            FullZoom.reduce();
    170            break;
    171          case "cmd_fullZoomEnlarge":
    172            FullZoom.enlarge();
    173            break;
    174          case "cmd_fullZoomReset":
    175            FullZoom.reset();
    176            FullZoom.resetScalingZoom();
    177            break;
    178          case "cmd_fullZoomToggle":
    179            ZoomManager.toggleZoom();
    180            break;
    181          case "cmd_gestureRotateLeft":
    182            gGestureSupport.rotate(event.sourceEvent);
    183            break;
    184          case "cmd_gestureRotateRight":
    185            gGestureSupport.rotate(event.sourceEvent);
    186            break;
    187          case "cmd_gestureRotateEnd":
    188            gGestureSupport.rotateEnd();
    189            break;
    190          case "Browser:OpenLocation":
    191            openLocation(event);
    192            break;
    193          case "Browser:RestoreLastSession":
    194            SessionStore.restoreLastSession();
    195            break;
    196          case "Browser:NewUserContextTab":
    197            openNewUserContextTab(event.sourceEvent);
    198            break;
    199          case "Browser:OpenAboutContainers":
    200            openPreferences("paneContainers");
    201            break;
    202          // deliberate fallthrough
    203          case "Profiles:CreateProfile":
    204          case "Profiles:ManageProfiles":
    205          case "Profiles:LaunchProfile":
    206          case "Profiles:MoveTabsToProfile":
    207            gProfiles.handleCommand(event);
    208            break;
    209          case "Tools:Search":
    210            SearchUIUtils.webSearch(window);
    211            break;
    212          case "Tools:Downloads":
    213            BrowserCommands.downloadsUI();
    214            break;
    215          case "Tools:Addons":
    216            BrowserAddonUI.openAddonsMgr();
    217            if (event.sourceEvent?.target.id == "key_openAddons") {
    218              Services.prefs.setStringPref(
    219                "browser.keys.openAddons.lastUsed",
    220                new Date().toISOString()
    221              );
    222            }
    223            break;
    224          case "cmd_openUnifiedExtensionsPanel":
    225            gUnifiedExtensions.openPanel(event);
    226            break;
    227          case "Tools:ClassicWindow":
    228            OpenBrowserWindow({ aiWindow: false });
    229            break;
    230          case "Tools:AIWindow":
    231            OpenBrowserWindow({ aiWindow: true });
    232            break;
    233          case "Tools:ChatsHistory":
    234            // @todo Bug 2006543
    235            // Implement opening the chat history view
    236            break;
    237          case "Tools:Sanitize":
    238            Sanitizer.showUI(window);
    239            break;
    240          case "Tools:PrivateBrowsing":
    241            OpenBrowserWindow({ private: true });
    242            break;
    243          case "Browser:Screenshot":
    244            ScreenshotsUtils.notify(window, "Shortcut");
    245            break;
    246          case "History:UndoCloseTab":
    247            SessionWindowUI.undoCloseTab(window);
    248            break;
    249          case "History:UndoCloseWindow":
    250            SessionWindowUI.undoCloseWindow();
    251            break;
    252          case "History:RestoreLastClosedTabOrWindowOrSession":
    253            SessionWindowUI.restoreLastClosedTabOrWindowOrSession(window);
    254            break;
    255          case "History:SearchHistory":
    256            PlacesCommandHook.searchHistory();
    257            break;
    258          case "wrCaptureCmd":
    259            gGfxUtils.webrenderCapture();
    260            break;
    261          case "wrToggleCaptureSequenceCmd":
    262            gGfxUtils.toggleWebrenderCaptureSequence();
    263            break;
    264          case "windowRecordingCmd":
    265            gGfxUtils.toggleWindowRecording();
    266            break;
    267          case "zoomWindow":
    268            zoomWindow();
    269            break;
    270          case "cmd_newIdentity":
    271            NewIdentityButton.onCommand(event);
    272            break;
    273          case "cmd_newCircuit":
    274            TorDomainIsolator.newCircuitForBrowser(gBrowser.selectedBrowser);
    275            break;
    276        }
    277      });
    278 
    279    document.getElementById("mainKeyset").addEventListener("command", event => {
    280      const SIDEBAR_REVAMP_PREF = "sidebar.revamp";
    281      const SIDEBAR_REVAMP_ENABLED = Services.prefs.getBoolPref(
    282        SIDEBAR_REVAMP_PREF,
    283        false
    284      );
    285      switch (event.target.id) {
    286        case "goHome":
    287          BrowserCommands.home();
    288          break;
    289        case "bookmarkAllTabsKb":
    290          PlacesCommandHook.bookmarkTabs();
    291          break;
    292        case "viewBookmarksSidebarKb":
    293          SidebarController.toggle("viewBookmarksSidebar");
    294          break;
    295        case "viewBookmarksToolbarKb":
    296          BookmarkingUI.toggleBookmarksToolbar("shortcut");
    297          break;
    298        case "viewGenaiChatSidebarKb": {
    299          const pref = "browser.ml.chat.enabled";
    300          const enabled = Services.prefs.getBoolPref(pref);
    301          Glean.genaiChatbot.keyboardShortcut.record({
    302            enabled,
    303            sidebar: SidebarController.currentID,
    304          });
    305          if (enabled) {
    306            SidebarController.toggle("viewGenaiChatSidebar");
    307          }
    308          break;
    309        }
    310        case "toggleSidebarKb":
    311          if (SIDEBAR_REVAMP_ENABLED) {
    312            SidebarController.handleToolbarButtonClick();
    313            Glean.sidebar.keyboardShortcut.record({
    314              panel: SidebarController.currentID,
    315              opened: SidebarController._state.launcherExpanded,
    316            });
    317          }
    318          break;
    319        case "key_gotoHistory":
    320          SidebarController.toggle("viewHistorySidebar");
    321          break;
    322 
    323        case "key_selectTab1":
    324        case "key_selectTab2":
    325        case "key_selectTab3":
    326        case "key_selectTab4":
    327        case "key_selectTab5":
    328        case "key_selectTab6":
    329        case "key_selectTab7":
    330        case "key_selectTab8": {
    331          let index = event.target.id.at(-1) - 1;
    332          gBrowser.selectTabAtIndex(index, event);
    333          break;
    334        }
    335        case "key_selectLastTab":
    336          gBrowser.selectTabAtIndex(-1, event);
    337          break;
    338 
    339        case "key_openHelpMac":
    340          openHelpLink("firefox-osxkey");
    341          break;
    342      }
    343    });
    344  },
    345  { once: true }
    346 );