Firefox 155  Ãnderungen für Appmenu.uc.js 
============================================

Zweck
-----
Die Ausführung der Einträge aus toolbar.configs wurde von
eval(config.command) auf eine feste executeCommand()-Zuordnung umgestellt.

Dadurch bleiben die XUL-command-Ereignisse erhalten, während die Befehle
nicht mehr dynamisch über eval() ausgeführt werden.


1. Appmenu.uc.js neuer Menü-Handler
-------------------------------------

Den alten Block:
================

configItem.addEventListener('command', () => {
    eval(config.command);
});

durch diesen Block ersetzen:
=============================

configItem.addEventListener(
    'command',
    function(event) {
        Appmenu.executeCommand(
            config.name,
            event
        );
    }
);


2. Appmenu.uc.js  executeCommand()
-----------------------------------

Die folgende Funktion in das Objekt Appmenu einfügen,
zum Beispiel direkt vor handleRelativePath():

executeCommand: function(name, event) {
    if (name.startsWith('about:')) {
        openTrustedLinkIn(
            name,
            gBrowser.selectedTab.isEmpty
                ? 'current'
                : 'tab'
        );
        return;
    }

    switch (name) {
        case 'Browser-Werkzeuge': {
            var { require } =
                ChromeUtils.importESModule(
                    'resource://devtools/shared/loader/Loader.sys.mjs',
                    {}
                );

            var { BrowserToolboxLauncher } =
                require(
                    'resource://devtools/client/framework/browser-toolbox/Launcher.sys.mjs'
                );

            BrowserToolboxLauncher.init();
            break;
        }

        case 'Browser-Konsole': {
            var { require } =
                ChromeUtils.importESModule(
                    'resource://devtools/shared/loader/Loader.sys.mjs',
                    {}
                );

            var { BrowserConsoleManager } =
                require(
                    'resource://devtools/client/webconsole/browser-console-manager'
                );

            BrowserConsoleManager.openBrowserConsoleOrFocus();
            break;
        }

        case 'Entwickler-Werkzeuge': {
            var { require } =
                ChromeUtils.importESModule(
                    'resource://devtools/shared/loader/Loader.sys.mjs',
                    {}
                );

            var { gDevToolsBrowser } =
                require(
                    'devtools/client/framework/devtools-browser'
                );

            gDevToolsBrowser.toggleToolboxCommand(
                window.gBrowser,
                ChromeUtils.now()
            );

            break;
        }

        case 'Einstellungen':
            openPreferences();
            break;

        case 'Addons-Manager':
            BrowserAddonUI.openAddonsMgr();
            break;

        case 'Anpassen':
            gCustomizeMode.enter();
            break;

        case 'Zugangsdaten und PasswÃ¶rter':
            LoginHelper.openPasswordManager(
                window,
                {
                    entryPoint: 'mainmenu'
                }
            );
            break;

        case 'Neues privates Fenster':
            OpenBrowserWindow({
                private: true
            });
            break;

        case 'Neustart im abgesicherten Modus':
            safeModeRestart();
            break;

        case 'Cache leeren':
            Services.cache2.clear();
            break;

        case 'Chronik-Sidebar':
            SidebarController.toggle(
                'viewHistorySidebar'
            );
            break;

        case 'Bookmarks-Sidebar':
            SidebarController.toggle(
                'viewBookmarksSidebar'
            );
            break;

        case 'Sync-Tab-Sidebar':
            SidebarController.toggle(
                'viewTabsSidebar'
            );
            break;

        case 'Downloads':
            DownloadsPanel.showDownloadsHistory();
            break;

        case 'Neuer Tab':
            openTrustedLinkIn(
                'about:newtab',
                'tab'
            );
            break;

        case 'Tab neu laden':
            BrowserCommands.reloadSkipCache();
            break;

        case 'Seiteninformationen':
            BrowserCommands.pageInfo(
                null,
                'mediaTab'
            )();
            break;

        case 'Cookies und Website-Daten verwalten':
            window.open(
                'chrome://browser/content/preferences/dialogs/siteDataSettings.xhtml',
                'cookie',
                'chrome,dialog,centerscreen,dependent,resizable=yes,width=500,height=560'
            );
            break;

        case 'Zertifikate':
            window.open(
                'chrome://pippki/content/certManager.xhtml',
                'mozilla:certmanager',
                'chrome,dialog,centerscreen,dependent,resizable=yes'
            );
            break;

        case 'Firefox synchronisieren':
            gSync.openPrefs('menubar');
            break;

        case 'Offline arbeiten':
            BrowserOffline.toggleOfflineStatus();
            break;

        case 'Lesezeichen':
            PlacesCommandHook.showPlacesOrganizer(
                'AllBookmarks'
            );
            break;

        case 'Chronik':
            PlacesCommandHook.showPlacesOrganizer(
                'History'
            );
            break;

        case 'Seite speichern unter...':
            saveBrowser(
                gBrowser.selectedBrowser
            );
            break;

        case 'Chronik löschen':
            Sanitizer.showUI(window);
            break;

        case 'Neustart':
            Services.appinfo
                .invalidateCachesOnRestart();

            Services.startup.quit(
                Ci.nsIAppStartup.eRestart |
                Ci.nsIAppStartup.eAttemptQuit
            );
            break;

        case 'Beenden':
            goQuitApplication(event);
            break;

        default:
            console.warn(
                'Appmenu.uc.js: Unbekannter Menüeintrag:',
                name
            );
    }
},



5. Merksatz
-----------

Appmenu.uc.js:

Appmenu.executeCommand(config.name, event);


Nicht mehr verwenden:

eval(config.command);
