Browse Source

Add patches for mzla/*

nsITobin 2 months ago
parent
commit
69178eb841

+ 476 - 0
mzla/comm/binoc/almost-bypass-package-manifest.patch

@@ -0,0 +1,476 @@
+# HG changeset patch
+# Parent  8b878d7b749f1bff5f5e3105f467291931e5ce15
+imported patch X-Y-almost-bypass-package-manifest.patch
+
+diff --git a/suite/installer/package-manifest.in b/suite/installer/package-manifest.in
+--- a/suite/installer/package-manifest.in
++++ b/suite/installer/package-manifest.in
+@@ -37,466 +37,9 @@
+ #ifdef XP_MACOSX
+ ; Mac bundle stuff
+ @APPNAME@/Contents/Info.plist
+ @APPNAME@/Contents/PkgInfo
+ @RESPATH@/seamonkey.icns
+ @RESPATH@/@LPROJ_ROOT@.lproj/*
+ #endif
+ 
+-[@AB_CD@]
+-@RESPATH@/defaults/messenger/mailViews.dat
+-@RESPATH@/defaults/profile/bookmarks.html
+-@RESPATH@/defaults/profile/chrome/*
+-@RESPATH@/defaults/profile/mimeTypes.rdf
+-@RESPATH@/defaults/profile/panels.rdf
+-@RESPATH@/dictionaries/*
+-@RESPATH@/hyphenation/*
+-#ifdef MOZ_BUNDLED_FONTS
+-@RESPATH@/fonts/*
+-#endif
+-@RESPATH@/@PREF_DIR@/suite-l10n.js
+-#ifdef HAVE_MAKENSISU
+-@BINPATH@/uninstall/helper.exe
+-#endif
+-#ifdef MOZ_UPDATER
+-@RESPATH@/update.locale
+-@RESPATH@/updater.ini
+-#endif
+-
+-#ifdef PKG_LOCALE_MANIFEST
+-#include @PKG_LOCALE_MANIFEST@
+-#endif
+-
+-[xpcom]
+-@RESPATH@/dependentlibs.list
+-#ifdef MOZ_SHARED_MOZGLUE
+-@BINPATH@/@DLL_PREFIX@mozglue@DLL_SUFFIX@
+-#endif
+-#ifndef MOZ_STATIC_JS
+-@BINPATH@/@DLL_PREFIX@mozjs@DLL_SUFFIX@
+-#endif
+-#ifndef MOZ_SYSTEM_NSPR
+-#ifndef MOZ_FOLD_LIBS
+-@BINPATH@/@DLL_PREFIX@nspr4@DLL_SUFFIX@
+-@BINPATH@/@DLL_PREFIX@plc4@DLL_SUFFIX@
+-@BINPATH@/@DLL_PREFIX@plds4@DLL_SUFFIX@
+-#endif
+-#endif
+-#ifdef XP_MACOSX
+-@BINPATH@/XUL
+-#else
+-@BINPATH@/@DLL_PREFIX@xul@DLL_SUFFIX@
+-#endif
+-#ifdef XP_MACOSX
+-@BINPATH@/@MOZ_CHILD_PROCESS_NAME@.app/
+-#else
+-@BINPATH@/@MOZ_CHILD_PROCESS_NAME@
+-#endif
+-; ANGLE GLES-on-D3D rendering library
+-#ifdef MOZ_ANGLE_RENDERER
+-@BINPATH@/libEGL.dll
+-@BINPATH@/libGLESv2.dll
+-#ifdef MOZ_D3DCOMPILER_VISTA_DLL
+-@BINPATH@/@MOZ_D3DCOMPILER_VISTA_DLL@
+-#endif
+-#endif # MOZ_ANGLE_RENDERER
+-
+-#ifdef XP_WIN
+-#if MOZ_PACKAGE_MSVC_DLLS
+-@BINPATH@/@MSVC_C_RUNTIME_DLL@
+-@BINPATH@/@MSVC_CXX_RUNTIME_DLL@
+-@BINPATH@/api-ms-win-*.dll
+-@BINPATH@/ucrtbase.dll
+-#endif
+-#endif
+-
+-[browser]
+-; [Base Browser Files]
+-#ifdef XP_WIN
+-@BINPATH@/@MOZ_APP_NAME@.exe
+-#else
+-@BINPATH@/@MOZ_APP_NAME@-bin
+-@BINPATH@/@MOZ_APP_NAME@
+-#endif
+-@RESPATH@/application.ini
+-@RESPATH@/platform.ini
+-#ifdef MOZ_UPDATER
+-# update-settings.ini has been removed on macOS.
+-#ifndef XP_MACOSX
+-@RESPATH@/update-settings.ini
+-#endif
+-#endif
+-#ifndef MOZ_FOLD_LIBS
+-@BINPATH@/@DLL_PREFIX@mozsqlite3@DLL_SUFFIX@
+-#endif
+-@BINPATH@/@DLL_PREFIX@lgpllibs@DLL_SUFFIX@
+-@BINPATH@/@DLL_PREFIX@gkcodecs@DLL_SUFFIX@
+-#ifdef MOZ_FFVPX
+-@BINPATH@/@DLL_PREFIX@mozavutil@DLL_SUFFIX@
+-@BINPATH@/@DLL_PREFIX@mozavcodec@DLL_SUFFIX@
+-#endif
+-#ifdef MOZ_GTK
+-@BINPATH@/glxtest
+-@BINPATH@/@DLL_PREFIX@mozgtk@DLL_SUFFIX@
+-#ifdef MOZ_WAYLAND
+-@BINPATH@/vaapitest
+-@BINPATH@/@DLL_PREFIX@mozwayland@DLL_SUFFIX@
+-#endif
+-#endif
+-@RESPATH@/license.txt
+-@RESPATH@/blocklist.xml
+-
+-; [Components]
+-#ifdef ACCESSIBILITY
+-#ifdef XP_WIN
+-@BINPATH@/AccessibleMarshal.dll
+-#endif
+-#endif
+-@RESPATH@/components/extensions.manifest
+-@RESPATH@/components/SuiteBrowser.manifest
+-@RESPATH@/components/SuiteComponents.manifest
+-@RESPATH@/components/SuiteFeeds.manifest
+-@RESPATH@/components/SuiteSidebar.manifest
+-; JavaScript components
+-@RESPATH@/components/cryptoComponents.manifest
+-@RESPATH@/components/FeedConverter.js
+-@RESPATH@/components/FeedWriter.js
+-@RESPATH@/components/jsconsole-clhandler.js
+-@RESPATH@/components/jsconsole-clhandler.manifest
+-@RESPATH@/components/nsBrowserContentHandler.js
+-@RESPATH@/components/nsComposerCmdLineHandler.js
+-@RESPATH@/components/nsComposerCmdLineHandler.manifest
+-@RESPATH@/components/nsGopherProtocolStubHandler.js
+-@RESPATH@/components/nsPlacesAutoComplete.js
+-@RESPATH@/components/nsPlacesAutoComplete.manifest
+-@RESPATH@/components/nsSessionStartup.js
+-@RESPATH@/components/nsSessionStartup.manifest
+-@RESPATH@/components/nsSessionStore.js
+-@RESPATH@/components/nsSidebar.js
+-@RESPATH@/components/nsSuiteGlue.js
+-@RESPATH@/components/nsSetDefault.js
+-@RESPATH@/components/nsSetDefault.manifest
+-@RESPATH@/components/nsTypeAheadFind.js
+-#ifdef MOZ_UPDATER
+-@RESPATH@/components/nsUpdateService.manifest
+-#endif
+-@RESPATH@/components/ProcessSingleton.manifest
+-@RESPATH@/components/Push.manifest
+-@RESPATH@/components/servicesComponents.manifest
+-@RESPATH@/components/servicesSettings.manifest
+-@RESPATH@/components/SuiteProfileMigrator.js
+-@RESPATH@/components/SuiteProfileMigrator.manifest
+-#if defined(ENABLE_TESTS) && defined(MOZ_DEBUG)
+-@RESPATH@/components/TestInterfaceJS.js
+-@RESPATH@/components/TestInterfaceJS.manifest
+-@RESPATH@/components/TestInterfaceJSMaplike.js
+-#endif
+-@RESPATH@/components/WebContentConverter.js
+-
+-; Modules
+-@RESPATH@/modules/*
+-
+-; [Extensions]
+-@RESPATH@/components/extensions-toolkit.manifest
+-
+-; [Browser Chrome Files]
+-; Browser: Hack to get built_in_addons.json packaged
+-@RESPATH@/chrome/browser@JAREXT@
+-@RESPATH@/chrome/browser.manifest
+-@RESPATH@/chrome/comm@JAREXT@
+-@RESPATH@/chrome/comm.manifest
+-@RESPATH@/chrome/toolkit@JAREXT@
+-@RESPATH@/chrome/toolkit.manifest
+-
+-; [DevTools Startup Files]
+-@RESPATH@/chrome/devtools-startup@JAREXT@
+-@RESPATH@/chrome/devtools-startup.manifest
+-
+-; DevTools
+-@RESPATH@/chrome/devtools@JAREXT@
+-@RESPATH@/chrome/devtools.manifest
+-@RESPATH@/@PREF_DIR@/debugger.js
+-
+-; classic theme
+-@RESPATH@/chrome/classic@JAREXT@
+-@RESPATH@/chrome/classic.manifest
+-@RESPATH@/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}.xpi
+-
+-; modern theme
+-@RESPATH@/extensions/modern@themes.mozilla.org.xpi
+-
+-; shell icons
+-#ifdef MOZ_GTK
+-@RESPATH@/chrome/icons/default/bookmarkproperties.png
+-@RESPATH@/chrome/icons/default/bookmarkproperties16.png
+-@RESPATH@/chrome/icons/default/bookmarkproperties48.png
+-@RESPATH@/chrome/icons/default/chatzilla-window.png
+-@RESPATH@/chrome/icons/default/chatzilla-window16.png
+-@RESPATH@/chrome/icons/default/chatzilla-window48.png
+-@RESPATH@/chrome/icons/default/default16.png
+-@RESPATH@/chrome/icons/default/default22.png
+-@RESPATH@/chrome/icons/default/default24.png
+-@RESPATH@/chrome/icons/default/default32.png
+-@RESPATH@/chrome/icons/default/default48.png
+-@RESPATH@/chrome/icons/default/default64.png
+-@RESPATH@/chrome/icons/default/default128.png
+-@RESPATH@/chrome/icons/default/default256.png
+-@RESPATH@/chrome/icons/default/downloadManager.png
+-@RESPATH@/chrome/icons/default/downloadManager16.png
+-@RESPATH@/chrome/icons/default/downloadManager48.png
+-@RESPATH@/chrome/icons/default/editorWindow.png
+-@RESPATH@/chrome/icons/default/editorWindow16.png
+-@RESPATH@/chrome/icons/default/editorWindow48.png
+-@RESPATH@/chrome/icons/default/findBookmarkWindow.png
+-@RESPATH@/chrome/icons/default/findBookmarkWindow16.png
+-@RESPATH@/chrome/icons/default/findBookmarkWindow48.png
+-@RESPATH@/chrome/icons/default/findHistoryWindow.png
+-@RESPATH@/chrome/icons/default/findHistoryWindow16.png
+-@RESPATH@/chrome/icons/default/findHistoryWindow48.png
+-@RESPATH@/chrome/icons/default/history-window.png
+-@RESPATH@/chrome/icons/default/history-window16.png
+-@RESPATH@/chrome/icons/default/history-window48.png
+-@RESPATH@/chrome/icons/default/JSConsoleWindow.png
+-@RESPATH@/chrome/icons/default/JSConsoleWindow16.png
+-@RESPATH@/chrome/icons/default/JSConsoleWindow48.png
+-@RESPATH@/chrome/icons/default/places.png
+-@RESPATH@/chrome/icons/default/places16.png
+-@RESPATH@/chrome/icons/default/places48.png
+-#ifdef MOZ_UPDATER
+-@RESPATH@/icons/updater.png
+-#endif
+-#elifdef XP_WIN
+-@RESPATH@/chrome/icons/default/bookmarkproperties.ico
+-@RESPATH@/chrome/icons/default/chatzilla-window.ico
+-@RESPATH@/chrome/icons/default/downloadManager.ico
+-@RESPATH@/chrome/icons/default/editorWindow.ico
+-@RESPATH@/chrome/icons/default/findBookmarkWindow.ico
+-@RESPATH@/chrome/icons/default/findHistoryWindow.ico
+-@RESPATH@/chrome/icons/default/gif-file.ico
+-@RESPATH@/chrome/icons/default/history-window.ico
+-@RESPATH@/chrome/icons/default/html-file.ico
+-@RESPATH@/chrome/icons/default/image-file.ico
+-@RESPATH@/chrome/icons/default/jpeg-file.ico
+-@RESPATH@/chrome/icons/default/JSConsoleWindow.ico
+-@RESPATH@/chrome/icons/default/main-window.ico
+-@RESPATH@/chrome/icons/default/places.ico
+-@RESPATH@/chrome/icons/default/script-file.ico
+-@RESPATH@/chrome/icons/default/xml-file.ico
+-@RESPATH@/chrome/icons/default/xul-file.ico
+-#endif
+-
+-; [Default Preferences]
+-; All the browser/general pref files must be part of base to prevent migration bugs
+-@RESPATH@/@PREF_DIR@/suite-prefs.js
+-@RESPATH@/@PREF_DIR@/composer.js
+-@RESPATH@/greprefs.js
+-@RESPATH@/defaults/autoconfig/prefcalls.js
+-@RESPATH@/defaults/permissions
+-@RESPATH@/defaults/settings/blocklists
+-@RESPATH@/defaults/settings/main
+-; Warning: changing the path to channel-prefs.js can cause bugs. (Bug 756325)
+-@RESPATH@/defaults/pref/channel-prefs.js
+-
+-; [Layout Engine Resources]
+-; Layout debug extension.
+-#ifdef ENABLE_TESTS
+-#ifdef MOZ_DEBUG
+-@RESPATH@/chrome/layoutdebug@JAREXT@
+-@RESPATH@/chrome/layoutdebug.manifest
+-#endif
+-#endif
+-; Style Sheets, Graphics and other Resources used by the layout engine.
+-@RESPATH@/res/contenteditable.css
+-@RESPATH@/res/designmode.css
+-@RESPATH@/res/EditorOverride.css
+-@RESPATH@/res/grabber.gif
+-@RESPATH@/res/language.properties
+-@RESPATH@/res/svg.css
+-@RESPATH@/res/table-add-column-after-active.gif
+-@RESPATH@/res/table-add-column-after-hover.gif
+-@RESPATH@/res/table-add-column-after.gif
+-@RESPATH@/res/table-add-column-before-active.gif
+-@RESPATH@/res/table-add-column-before-hover.gif
+-@RESPATH@/res/table-add-column-before.gif
+-@RESPATH@/res/table-add-row-after-active.gif
+-@RESPATH@/res/table-add-row-after-hover.gif
+-@RESPATH@/res/table-add-row-after.gif
+-@RESPATH@/res/table-add-row-before-active.gif
+-@RESPATH@/res/table-add-row-before-hover.gif
+-@RESPATH@/res/table-add-row-before.gif
+-@RESPATH@/res/table-remove-column-active.gif
+-@RESPATH@/res/table-remove-column-hover.gif
+-@RESPATH@/res/table-remove-column.gif
+-@RESPATH@/res/table-remove-row-active.gif
+-@RESPATH@/res/table-remove-row-hover.gif
+-@RESPATH@/res/table-remove-row.gif
+-#ifdef XP_MACOSX
+-@RESPATH@/res/cursors/*
+-#endif
+-@RESPATH@/res/fonts/*
+-@RESPATH@/res/dtd/*
+-#ifdef XP_MACOSX
+-@RESPATH@/res/MainMenu.nib/
+-#endif
+-
+-; Content-accessible resources.
+-@RESPATH@/contentaccessible/*
+-
+-; [Personal Security Manager]
+-;
+-; NSS libraries are signed in the staging directory,
+-; meaning their .chk files are created there directly.
+-;
+-#ifndef MOZ_SYSTEM_NSS
+-#if defined(XP_LINUX) && !defined(ANDROID)
+-@BINPATH@/@DLL_PREFIX@freeblpriv3@DLL_SUFFIX@
+-#else
+-@BINPATH@/@DLL_PREFIX@freebl3@DLL_SUFFIX@
+-#endif
+-@BINPATH@/@DLL_PREFIX@nss3@DLL_SUFFIX@
+-@BINPATH@/@DLL_PREFIX@nssckbi@DLL_SUFFIX@
+-#ifndef MOZ_FOLD_LIBS
+-@BINPATH@/@DLL_PREFIX@nssutil3@DLL_SUFFIX@
+-@BINPATH@/@DLL_PREFIX@smime3@DLL_SUFFIX@
+-@BINPATH@/@DLL_PREFIX@ssl3@DLL_SUFFIX@
+-#endif
+-@BINPATH@/@DLL_PREFIX@softokn3@DLL_SUFFIX@
+-#endif
+-@RESPATH@/chrome/pippki@JAREXT@
+-@RESPATH@/chrome/pippki.manifest
+-
+-; For process sandboxing
+-#if defined(MOZ_SANDBOX)
+-#if defined(XP_LINUX)
+-@BINPATH@/@DLL_PREFIX@mozsandbox@DLL_SUFFIX@
+-#endif
+-#endif
+-
+-; for Solaris SPARC
+-#ifdef SOLARIS
+-bin/libfreebl_32fpu_3.so
+-bin/libfreebl_32int_3.so
+-bin/libfreebl_32int64_3.so
+-#endif
+-
+-; [MAN pages]
+-#ifdef UNIX_BUT_NOT_MAC
+-man/*
+-#endif
+-
+-; [Updater]
+-;
+-#ifdef MOZ_UPDATER
+-#ifdef XP_MACOSX
+-@BINPATH@/updater.app/
+-#else
+-@BINPATH@/updater@BIN_SUFFIX@
+-#endif
+-#endif
+-
+-; [Crash Reporter]
+-;
+-#ifdef MOZ_CRASHREPORTER
+-#ifdef XP_MACOSX
+-@BINPATH@/crashreporter.app/
+-#else
+-@BINPATH@/crashreporter@BIN_SUFFIX@
+-#endif
+-#ifdef MOZ_CRASHREPORTER_INJECTOR
+-@BINPATH@/breakpadinjector.dll
+-#endif
+-#endif
+-
+-; [ minidump-analyzer ]
+-;
+-#ifdef MOZ_CRASHREPORTER
+-@BINPATH@/minidump-analyzer@BIN_SUFFIX@
+-#endif
+-
+-; [ Ping Sender ]
+-;
+-@BINPATH@/pingsender@BIN_SUFFIX@
+-
+-[mail]
+-; MailNews components
+-
+-; MailNews JS components
+-
+-; MailNews chrome
+-@RESPATH@/chrome/messenger@JAREXT@
+-@RESPATH@/chrome/messenger.manifest
+-@RESPATH@/chrome/newsblog@JAREXT@
+-@RESPATH@/chrome/newsblog.manifest
+-#ifdef MOZ_GTK
+-@RESPATH@/chrome/icons/default/abcardWindow.png
+-@RESPATH@/chrome/icons/default/abcardWindow16.png
+-@RESPATH@/chrome/icons/default/abcardWindow48.png
+-@RESPATH@/chrome/icons/default/ablistWindow.png
+-@RESPATH@/chrome/icons/default/ablistWindow16.png
+-@RESPATH@/chrome/icons/default/ablistWindow48.png
+-@RESPATH@/chrome/icons/default/addressbookWindow.png
+-@RESPATH@/chrome/icons/default/addressbookWindow16.png
+-@RESPATH@/chrome/icons/default/addressbookWindow48.png
+-@RESPATH@/chrome/icons/default/messengerWindow.png
+-@RESPATH@/chrome/icons/default/messengerWindow16.png
+-@RESPATH@/chrome/icons/default/messengerWindow48.png
+-@RESPATH@/chrome/icons/default/msgcomposeWindow.png
+-@RESPATH@/chrome/icons/default/msgcomposeWindow16.png
+-@RESPATH@/chrome/icons/default/msgcomposeWindow48.png
+-#elifdef XP_WIN
+-@RESPATH@/chrome/icons/default/abcardWindow.ico
+-@RESPATH@/chrome/icons/default/ablistWindow.ico
+-@RESPATH@/chrome/icons/default/addressbookWindow.ico
+-@RESPATH@/chrome/icons/default/messengerWindow.ico
+-@RESPATH@/chrome/icons/default/msgcomposeWindow.ico
+-@RESPATH@/chrome/icons/default/calendar-alarm-dialog.ico
+-@RESPATH@/chrome/icons/default/calendar-event-dialog.ico
+-@RESPATH@/chrome/icons/default/calendar-event-summary-dialog.ico
+-@RESPATH@/chrome/icons/default/calendar-task-dialog.ico
+-@RESPATH@/chrome/icons/default/calendar-task-summary-dialog.ico
+-#endif
+-
+-; [MailNews Default Preferences]
+-@RESPATH@/@PREF_DIR@/mailnews.js
+-@RESPATH@/@PREF_DIR@/mdn.js
+-; @RESPATH@/@PREF_DIR@/e2e-prefs.js
+-
+-#ifdef MOZ_MAPI_SUPPORT
+-@BINPATH@/MapiProxy.dll
+-@BINPATH@/mozMapi32.dll
+-#endif
+-
+-@RESPATH@/isp/*
+-
+-; Gloda
+-@RESPATH@/chrome/gloda@JAREXT@
+-@RESPATH@/chrome/gloda.manifest
+-
+-; Address Sanitizer
+-#ifdef LLVM_SYMBOLIZER
+-@BINPATH@/@LLVM_SYMBOLIZER@
+-#endif
+-
+-#ifdef MOZ_CLANG_RT_ASAN_LIB
+-@BINPATH@/@MOZ_CLANG_RT_ASAN_LIB@
+-#endif
+-
+-[chatzilla]
+-#ifdef MOZ_IRC
+-@RESPATH@/chrome/chatzilla@JAREXT@
+-@RESPATH@/chrome/chatzilla.manifest
+-@RESPATH@/components/chatzilla-service.js
+-@RESPATH@/components/chatzilla-service.manifest
+-#endif
+-
+-[debugqa]
+-#ifdef MOZ_PACKAGE_DEBUGQA
+-@RESPATH@/extensions/debugQA@mozilla.org.xpi
+-#endif
+-
+-[calendar]
+-@RESPATH@/chrome/calendar@JAREXT@
+-@RESPATH@/chrome/calendar.manifest
+-
+-@RESPATH@/@PREF_DIR@/calendar.js
+-
+-# Files added to components directory via `FINAL_TARGET_FILES.components`.
++@RESPATH@/*
+\ No newline at end of file

+ 331 - 0
mzla/comm/contrib/about-redirector-jscomp2esmodule.patch

@@ -0,0 +1,331 @@
+# HG changeset patch
+# Parent  d0e3865901bf5bbd89e867d75fdd19e01c9c72d9
+9999999 - Update suite AboutRedirector and change about: to about:version
+
+diff --git a/suite/base/content/utilityOverlay.js b/suite/base/content/utilityOverlay.js
+--- a/suite/base/content/utilityOverlay.js
++++ b/suite/base/content/utilityOverlay.js
+@@ -593,17 +593,17 @@ function isRestricted( url )
+   } catch (e) {
+     return false;
+   }
+ }
+ 
+ function goAbout(aProtocol)
+ {
+   var target;
+-  var url = "about:" + (aProtocol || "");
++  var url = "about:version" + (aProtocol || "");
+   var defaultAboutState = Services.prefs.getIntPref("browser.link.open_external");
+ 
+   switch (defaultAboutState) {
+   case Ci.nsIBrowserDOMWindow.OPEN_NEWWINDOW:
+     target = "window";
+     break;
+   case Ci.nsIBrowserDOMWindow.OPEN_CURRENTWINDOW:
+     target = "current";
+diff --git a/suite/components/AboutRedirector.sys.mjs b/suite/components/AboutRedirector.sys.mjs
+new file mode 100644
+--- /dev/null
++++ b/suite/components/AboutRedirector.sys.mjs
+@@ -0,0 +1,121 @@
++/* This Source Code Form is subject to the terms of the Mozilla Public
++ * License, v. 2.0. If a copy of the MPL was not distributed with this
++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
++
++export function AboutRedirector() {}
++
++AboutRedirector.prototype = {
++  QueryInterface: ChromeUtils.generateQI(["nsIAboutModule"]),
++
++  // Each entry in the map has the key as the part after the "about:" and the
++  // value as a record with url and flags entries. Note that each addition here
++  // should be coupled with a corresponding addition in components.conf.
++  _redirMap: {
++    version: {
++      url: "chrome://communicator/content/about.xhtml",
++      flags:
++        Ci.nsIAboutModule.ALLOW_SCRIPT,
++    },
++    blocked: {
++      url: "chrome://communicator/content/blockedSite.xhtml",
++      flags:
++        Ci.nsIAboutModule.ALLOW_SCRIPT |
++        Ci.nsIAboutModule.URI_SAFE_FOR_UNTRUSTED_CONTENT,
++    },
++    data: {
++      url: "chrome://communicator/content/dataman/dataman.xhtml",
++      flags:
++        Ci.nsIAboutModule.ALLOW_SCRIPT,
++    },
++    feeds: {
++      url: "chrome://communicator/content/feeds/subscribe.xhtml",
++      flags:
++        Ci.nsIAboutModule.ALLOW_SCRIPT |
++        Ci.nsIAboutModule.URI_SAFE_FOR_UNTRUSTED_CONTENT,
++    },
++    life: {
++      url: "chrome://communicator/content/aboutLife.xhtml",
++      flags:
++        Ci.nsIAboutModule.ALLOW_SCRIPT |
++        Ci.nsIAboutModule.URI_SAFE_FOR_UNTRUSTED_CONTENT,
++    },
++    newserror: {
++      url: "chrome://messenger/content/newsError.xhtml",
++      flags:
++        Ci.nsIAboutModule.ALLOW_SCRIPT,
++    },
++    privatebrowsing: {
++      url: "chrome://communicator/content/aboutPrivateBrowsing.xhtml",
++      flags:
++        Ci.nsIAboutModule.ALLOW_SCRIPT,
++    },
++    rights: {
++      url: "chrome://branding/content/aboutRights.xhtml",
++      flags:
++        Ci.nsIAboutModule.ALLOW_SCRIPT |
++        Ci.nsIAboutModule.URI_SAFE_FOR_UNTRUSTED_CONTENT,
++    },
++    sessionrestore: {
++      url: "chrome://communicator/content/aboutSessionRestore.xhtml",
++      flags:
++        Ci.nsIAboutModule.ALLOW_SCRIPT,
++    },
++    profiling: {
++      url: "chrome://devtools/content/performance-new/aboutprofiling/index.xhtml",
++      flags:
++        Ci.nsIAboutModule.ALLOW_SCRIPT | Ci.nsIAboutModule.IS_SECURE_CHROME_UI,
++    },
++  },
++
++ /**
++   * Gets the module name from the given URI.
++   */
++  _getModuleName(aURI) {
++    // Strip out the first ? or #, and anything following it
++    const name = /[^?#]+/.exec(aURI.pathQueryRef)[0];
++    return name.toLowerCase();
++  },
++
++  getURIFlags(aURI) {
++    const name = this._getModuleName(aURI);
++    if (!(name in this._redirMap)) {
++      throw Components.Exception(`no about:${name}`, Cr.NS_ERROR_ILLEGAL_VALUE);
++    }
++    return this._redirMap[name].flags;
++  },
++
++  newChannel(aURI, aLoadInfo) {
++    const name = this._getModuleName(aURI);
++    if (!(name in this._redirMap)) {
++      throw Components.Exception(`no about:${name}`, Cr.NS_ERROR_ILLEGAL_VALUE);
++    }
++
++    const newURI = Services.io.newURI(this._redirMap[name].url);
++    const channel = Services.io.newChannelFromURIWithLoadInfo(
++      newURI,
++      aLoadInfo
++    );
++    channel.originalURI = aURI;
++
++    if (
++      this._redirMap[name].flags &
++      Ci.nsIAboutModule.URI_SAFE_FOR_UNTRUSTED_CONTENT
++    ) {
++      const principal = Services.scriptSecurityManager.createContentPrincipal(
++        aURI,
++        {}
++      );
++      channel.owner = principal;
++    }
++
++    return channel;
++  },
++
++  getChromeURI(aURI) {
++    const name = this._getModuleName(aURI);
++    if (!(name in this._redirMap)) {
++      throw Components.Exception(`no about:${name}`, Cr.NS_ERROR_ILLEGAL_VALUE);
++    }
++    return Services.io.newURI(this._redirMap[name].url);
++  },
++};
+diff --git a/suite/components/SuiteComponents.manifest b/suite/components/SuiteComponents.manifest
+--- a/suite/components/SuiteComponents.manifest
++++ b/suite/components/SuiteComponents.manifest
+@@ -1,18 +1,7 @@
+-component {d54f2c89-8fd6-4eeb-a7a4-51d4dcdf460f} nsAbout.js
+-contract @mozilla.org/network/protocol/about;1?what= {d54f2c89-8fd6-4eeb-a7a4-51d4dcdf460f}
+-contract @mozilla.org/network/protocol/about;1?what=blocked {d54f2c89-8fd6-4eeb-a7a4-51d4dcdf460f}
+-contract @mozilla.org/network/protocol/about;1?what=certerror {d54f2c89-8fd6-4eeb-a7a4-51d4dcdf460f}
+-contract @mozilla.org/network/protocol/about;1?what=data {d54f2c89-8fd6-4eeb-a7a4-51d4dcdf460f}
+-contract @mozilla.org/network/protocol/about;1?what=feeds {d54f2c89-8fd6-4eeb-a7a4-51d4dcdf460f}
+-contract @mozilla.org/network/protocol/about;1?what=life {d54f2c89-8fd6-4eeb-a7a4-51d4dcdf460f}
+-contract @mozilla.org/network/protocol/about;1?what=newserror {d54f2c89-8fd6-4eeb-a7a4-51d4dcdf460f}
+-contract @mozilla.org/network/protocol/about;1?what=privatebrowsing {d54f2c89-8fd6-4eeb-a7a4-51d4dcdf460f}
+-contract @mozilla.org/network/protocol/about;1?what=rights {d54f2c89-8fd6-4eeb-a7a4-51d4dcdf460f}
+-contract @mozilla.org/network/protocol/about;1?what=sessionrestore {d54f2c89-8fd6-4eeb-a7a4-51d4dcdf460f}
+ component {22042bdb-56e4-47c6-8b12-fdfa859c05a9} nsGopherProtocolStubHandler.js
+ contract @mozilla.org/network/protocol;1?name=gopher {22042bdb-56e4-47c6-8b12-fdfa859c05a9}
+ component {bbbbe845-5a1b-40ee-813c-f84b8faaa07c} nsSuiteGlue.js
+ contract @mozilla.org/suite/suiteglue;1 {bbbbe845-5a1b-40ee-813c-f84b8faaa07c}
+ category app-startup nsSuiteGlue service,@mozilla.org/suite/suiteglue;1
+ component {9d4c845d-3f09-402a-b66d-50f291d7d50f} nsSuiteGlue.js
+ contract @mozilla.org/content-permission/prompt;1 {9d4c845d-3f09-402a-b66d-50f291d7d50f}
+diff --git a/suite/components/components.conf b/suite/components/components.conf
+new file mode 100644
+--- /dev/null
++++ b/suite/components/components.conf
+@@ -0,0 +1,25 @@
++# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
++# vim: set filetype=python:
++# This Source Code Form is subject to the terms of the Mozilla Public
++# License, v. 2.0. If a copy of the MPL was not distributed with this
++# file, You can obtain one at http://mozilla.org/MPL/2.0/.
++
++Classes = [
++  {
++    'cid': '{d54f2c89-8fd6-4eeb-a7a4-51d4dcdf460f}',
++    'contract_ids': [
++      '@mozilla.org/network/protocol/about;1?what=version',
++      '@mozilla.org/network/protocol/about;1?what=blocked',
++      '@mozilla.org/network/protocol/about;1?what=certerror',
++      '@mozilla.org/network/protocol/about;1?what=data',
++      '@mozilla.org/network/protocol/about;1?what=feeds',
++      '@mozilla.org/network/protocol/about;1?what=life',
++      '@mozilla.org/network/protocol/about;1?what=newserror',
++      '@mozilla.org/network/protocol/about;1?what=privatebrowsing',
++      '@mozilla.org/network/protocol/about;1?what=rights',
++      '@mozilla.org/network/protocol/about;1?what=sessionrestore',
++    ],
++    'esModule': 'resource://gre/modules/AboutRedirector.sys.mjs',
++    'constructor': 'AboutRedirector',
++  },
++]
+diff --git a/suite/components/moz.build b/suite/components/moz.build
+--- a/suite/components/moz.build
++++ b/suite/components/moz.build
+@@ -41,13 +41,20 @@ MOCHITEST_CHROME_MANIFESTS += [
+ 
+ XPIDL_SOURCES += [
+     "nsISuiteGlue.idl",
+ ]
+ 
+ XPIDL_MODULE = "suite-components"
+ 
+ EXTRA_COMPONENTS += [
+-    "nsAbout.js",
+     "nsGopherProtocolStubHandler.js",
+     "nsSuiteGlue.js",
+     "SuiteComponents.manifest",
+ ]
++
++EXTRA_JS_MODULES += [
++    "AboutRedirector.sys.mjs",
++]
++
++XPCOM_MANIFESTS += [
++    'components.conf',
++]
+\ No newline at end of file
+diff --git a/suite/components/nsAbout.js b/suite/components/nsAbout.js
+deleted file mode 100644
+--- a/suite/components/nsAbout.js
++++ /dev/null
+@@ -1,75 +0,0 @@
+-/* This Source Code Form is subject to the terms of the Mozilla Public
+- * License, v. 2.0. If a copy of the MPL was not distributed with this
+- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+-
+-var {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
+-
+-const SCRIPT = Ci.nsIAboutModule.ALLOW_SCRIPT;
+-const UNTRUSTED = Ci.nsIAboutModule.URI_SAFE_FOR_UNTRUSTED_CONTENT;
+-const HIDE = Ci.nsIAboutModule.HIDE_FROM_ABOUTABOUT;
+-const INDEXEDDB = Ci.nsIAboutModule.ENABLE_INDEXED_DB;
+-
+-function About() { }
+-About.prototype = {
+-  Flags: SCRIPT,
+-  URI: "chrome://communicator/content/about.xhtml",
+-  blockedFlags: SCRIPT | UNTRUSTED | HIDE,
+-  blockedURI: "chrome://communicator/content/blockedSite.xhtml",
+-  certerrorFlags: SCRIPT | UNTRUSTED | HIDE,
+-  certerrorURI: "chrome://communicator/content/certError.xhtml",
+-  dataFlags: SCRIPT,
+-  dataURI: "chrome://communicator/content/dataman/dataman.xhtml",
+-  feedsFlags: SCRIPT | UNTRUSTED | HIDE,
+-  feedsURI: "chrome://communicator/content/feeds/subscribe.xhtml",
+-  lifeFlags: SCRIPT | UNTRUSTED | HIDE,
+-  lifeURI: "chrome://communicator/content/aboutLife.xhtml",
+-  newserrorFlags: SCRIPT | HIDE,
+-  newserrorURI: "chrome://messenger/content/newsError.xhtml",
+-  privatebrowsingFlags: SCRIPT,
+-  privatebrowsingURI: "chrome://communicator/content/aboutPrivateBrowsing.xhtml",
+-  rightsFlags: SCRIPT | UNTRUSTED,
+-  rightsURI: "chrome://branding/content/aboutRights.xhtml",
+-  sessionrestoreFlags: SCRIPT | HIDE,
+-  sessionrestoreURI: "chrome://communicator/content/aboutSessionRestore.xhtml",
+-  // synctabsFlags: SCRIPT,
+-  // synctabsURI: "chrome://communicator/content/aboutSyncTabs.xhtml",
+-
+-  classID: Components.ID("{d54f2c89-8fd6-4eeb-a7a4-51d4dcdf460f}"),
+-  QueryInterface: ChromeUtils.generateQI([Ci.nsIAboutModule]),
+-
+-  getModule: function(aURI) {
+-    return aURI.pathQueryRef.replace(/-|\W.*$/g, "").toLowerCase();
+-  },
+-
+-  getURIFlags: function(aURI) {
+-    return this[this.getModule(aURI) + "Flags"];
+-  },
+-
+-  newChannel: function(aURI, aLoadInfo) {
+-    let module = this.getModule(aURI);
+-    let newURI = Services.io.newURI(this[module + "URI"]);
+-
+-    // We want a happy family which is always providing a loadInfo object.
+-    if (!aLoadInfo) {
+-      // Write out an error so that we have a stack and can fix the caller.
+-      Cu.reportError('aLoadInfo was not provided in nsAbout.newChannel!');
+-    }
+-
+-    let channel = aLoadInfo ?
+-                  Services.io.newChannelFromURIWithLoadInfo(newURI, aLoadInfo) :
+-                  Services.io.newChannelFromURI(newURI, null,
+-                                                Services.scriptSecurityManager.getSystemPrincipal(),
+-                                                null,
+-                                                Ci.nsILoadInfo.SEC_ALLOW_CROSS_ORIGIN_SEC_CONTEXT_IS_NULL,
+-                                                Ci.nsIContentPolicy.TYPE_OTHER);
+-
+-    channel.originalURI = aURI;
+-    if (this[module + "Flags"] & UNTRUSTED) {
+-      let principal = Services.scriptSecurityManager.createCodebasePrincipal(aURI, {});
+-      channel.owner = principal;
+-    }
+-    return channel;
+-  },
+-};
+-
+-var NSGetFactory = XPCOMUtils.generateNSGetFactory([About]);
+diff --git a/suite/installer/package-manifest.in b/suite/installer/package-manifest.in
+--- a/suite/installer/package-manifest.in
++++ b/suite/installer/package-manifest.in
+@@ -157,17 +157,16 @@
+ @RESPATH@/components/SuiteFeeds.manifest
+ @RESPATH@/components/SuiteSidebar.manifest
+ ; JavaScript components
+ @RESPATH@/components/cryptoComponents.manifest
+ @RESPATH@/components/FeedConverter.js
+ @RESPATH@/components/FeedWriter.js
+ @RESPATH@/components/jsconsole-clhandler.js
+ @RESPATH@/components/jsconsole-clhandler.manifest
+-@RESPATH@/components/nsAbout.js
+ @RESPATH@/components/nsBrowserContentHandler.js
+ @RESPATH@/components/nsComposerCmdLineHandler.js
+ @RESPATH@/components/nsComposerCmdLineHandler.manifest
+ @RESPATH@/components/nsGopherProtocolStubHandler.js
+ @RESPATH@/components/nsPlacesAutoComplete.js
+ @RESPATH@/components/nsPlacesAutoComplete.manifest
+ @RESPATH@/components/nsSessionStartup.js
+ @RESPATH@/components/nsSessionStartup.manifest

+ 43 - 0
mzla/comm/contrib/add-brand-ftl.patch

@@ -0,0 +1,43 @@
+# HG changeset patch
+# Parent  8f495a6b4c58609a5f55eafb91730c15be843f3d
+9999999 - Add brand.ftl to suite branding
+
+diff --git a/suite/branding/seamonkey/locales/en-US/brand.ftl b/suite/branding/seamonkey/locales/en-US/brand.ftl
+new file mode 100644
+--- /dev/null
++++ b/suite/branding/seamonkey/locales/en-US/brand.ftl
+@@ -0,0 +1,21 @@
++# This Source Code Form is subject to the terms of the Mozilla Public
++# License, v. 2.0. If a copy of the MPL was not distributed with this
++# file, You can obtain one at http://mozilla.org/MPL/2.0/.
++
++## SeaMonkey Brand
++##
++## SeaMonkey must be treated as a brand, and kept in English.
++## It cannot be:
++## - Transliterated.
++## - Translated.
++##
++## Reference: https://www.mozilla.org/styleguide/communications/translation/
++
++-brand-shorter-name = SeaMonkey
++-brand-short-name = SeaMonkey
++-brand-full-name = SeaMonkey
++# This brand name can be used in messages where the product name needs to
++# remain unchanged across different versions (Daily, Beta, etc.).
++-brand-product-name = SeaMonkey
++-vendor-short-name = SeaMonkey e.V.
++trademarkInfo = { " " }
+diff --git a/suite/branding/seamonkey/locales/jar.mn b/suite/branding/seamonkey/locales/jar.mn
+--- a/suite/branding/seamonkey/locales/jar.mn
++++ b/suite/branding/seamonkey/locales/jar.mn
+@@ -1,6 +1,9 @@
+ #filter substitution
+ 
++[localization] @AB_CD@.jar:
++  branding                                 (en-US/**/*.ftl)
++
+ @AB_CD@.jar:
+ % locale branding @AB_CD@ %locale/@AB_CD@/branding/
+   locale/@AB_CD@/branding/brand.dtd        (%brand.dtd)
+   locale/@AB_CD@/branding/brand.properties (%brand.properties)

+ 656 - 0
mzla/comm/contrib/devtools-with-chrome-clh.patch

@@ -0,0 +1,656 @@
+# HG changeset patch
+# Parent  b3e728f818ba5e2841516a4e3e22b1876063f4d9
+9999999 - Port a slightly modified version of devtools-loader to suite.
+Also, includes the --chrome flag normally handled by nsBrowserContentHandler.
+
+diff --git a/suite/browser/nsBrowserContentHandler.js b/suite/browser/nsBrowserContentHandler.js
+--- a/suite/browser/nsBrowserContentHandler.js
++++ b/suite/browser/nsBrowserContentHandler.js
+@@ -389,16 +389,18 @@ var nsBrowserContentHandler = {
+                                  nsIBrowserDOMWindow.OPEN_NEWTAB,
+                                  features,
+                                  Services.scriptSecurityManager.getSystemPrincipal());
+         cmdLine.preventDefault = true;
+       }
+     } catch (e) {
+     }
+ 
++    /* XXXTobin: This is currently located in the devtools-loader clh until
++       this component is converted */
+     try {
+       var chromeParam = cmdLine.handleFlagWithParam("chrome", false);
+       if (chromeParam) {
+         // only load URIs which do not inherit chrome privs
+         var uri = resolveURIInternal(cmdLine, chromeParam);
+         if (!Services.netUtils.URIChainHasFlags(uri, URI_INHERITS_SECURITY_CONTEXT)) {
+           openWindow(null, uri.spec, features);
+           cmdLine.preventDefault = true;
+diff --git a/suite/components/devtools/all-devtools.js b/suite/components/devtools/all-devtools.js
+new file mode 100644
+--- /dev/null
++++ b/suite/components/devtools/all-devtools.js
+@@ -0,0 +1,368 @@
++// Developer Tools related preferences
++pref("devtools.chrome.enabled", true);
++pref("devtools.debugger.remote-enabled", true);
++pref("devtools.selfxss.count", 5);
++// Enable extensionStorage storage actor by default
++pref("devtools.storage.extensionStorage.enabled", true);
++
++// Toolbox preferences
++pref("devtools.toolbox.footer.height", 250);
++pref("devtools.toolbox.sidebar.width", 500);
++pref("devtools.toolbox.host", "bottom");
++pref("devtools.toolbox.previousHost", "right");
++pref("devtools.toolbox.selectedTool", "inspector");
++pref("devtools.toolbox.sideEnabled", true);
++pref("devtools.toolbox.zoomValue", "1");
++pref("devtools.toolbox.splitconsoleEnabled", false);
++pref("devtools.toolbox.splitconsoleHeight", 100);
++pref("devtools.toolbox.tabsOrder", "");
++pref("devtools.netmonitor.features.newEditAndResend", false);
++
++// The fission pref for enabling the "Multiprocess Browser Toolbox", which will
++// make it possible to debug anything in Firefox (See Bug 1570639 for more
++// information).
++pref("devtools.browsertoolbox.fission", true);
++
++// When the Multiprocess Browser Toolbox is enabled, you can configure the scope of it:
++// - "everything" will enable debugging absolutely everything in the browser
++//   All processes, all documents, all workers, all add-ons.
++// - "parent-process" will restrict debugging to the parent process
++//   All privileged javascript, documents and workers running in the parent process.
++pref("devtools.browsertoolbox.scope", "everything");
++
++// Toolbox Button preferences
++pref("devtools.command-button-pick.enabled", true);
++pref("devtools.command-button-frames.enabled", true);
++pref("devtools.command-button-splitconsole.enabled", true);
++pref("devtools.command-button-responsive.enabled", true);
++pref("devtools.command-button-screenshot.enabled", false);
++pref("devtools.command-button-rulers.enabled", false);
++pref("devtools.command-button-measure.enabled", false);
++pref("devtools.command-button-noautohide.enabled", false);
++pref("devtools.command-button-errorcount.enabled", true);
++  pref("devtools.command-button-experimental-prefs.enabled", true);
++
++// Inspector preferences
++// Enable the Inspector
++pref("devtools.inspector.enabled", true);
++// What was the last active sidebar in the inspector
++pref("devtools.inspector.selectedSidebar", "layoutview");
++pref("devtools.inspector.activeSidebar", "layoutview");
++pref("devtools.inspector.remote", false);
++
++// Enable the 3 pane mode in the inspector
++pref("devtools.inspector.three-pane-enabled", true);
++// Enable the 3 pane mode in the chrome inspector
++pref("devtools.inspector.chrome.three-pane-enabled", false);
++// Collapse pseudo-elements by default in the rule-view
++pref("devtools.inspector.show_pseudo_elements", false);
++// The default size for image preview tooltips in the rule-view/computed-view/markup-view
++pref("devtools.inspector.imagePreviewTooltipSize", 300);
++// Enable user agent style inspection in rule-view
++pref("devtools.inspector.showUserAgentStyles", false);
++// Show native anonymous content and user agent shadow roots
++pref("devtools.inspector.showAllAnonymousContent", false);
++// Enable the inline CSS compatibility warning in inspector rule view
++pref("devtools.inspector.ruleview.inline-compatibility-warning.enabled", false);
++// Enable the compatibility tool in the inspector.
++pref("devtools.inspector.compatibility.enabled", true);
++// Enable color scheme simulation in the inspector.
++pref("devtools.inspector.color-scheme-simulation.enabled", true);
++
++// Grid highlighter preferences
++pref("devtools.gridinspector.gridOutlineMaxColumns", 50);
++pref("devtools.gridinspector.gridOutlineMaxRows", 50);
++pref("devtools.gridinspector.showGridAreas", false);
++pref("devtools.gridinspector.showGridLineNumbers", false);
++pref("devtools.gridinspector.showInfiniteLines", false);
++// Max number of grid highlighters that can be displayed
++pref("devtools.gridinspector.maxHighlighters", 3);
++
++// Whether or not simplified highlighters should be used when
++// prefers-reduced-motion is enabled.
++pref("devtools.inspector.simple-highlighters-reduced-motion", false);
++
++// Whether or not the box model panel is opened in the layout view
++pref("devtools.layout.boxmodel.opened", true);
++// Whether or not the flexbox panel is opened in the layout view
++pref("devtools.layout.flexbox.opened", true);
++// Whether or not the flexbox container panel is opened in the layout view
++pref("devtools.layout.flex-container.opened", true);
++// Whether or not the flexbox item panel is opened in the layout view
++pref("devtools.layout.flex-item.opened", true);
++// Whether or not the grid inspector panel is opened in the layout view
++pref("devtools.layout.grid.opened", true);
++
++// Enable hovering Box Model values and jumping to their source CSS rule in the
++// rule-view.
++#if defined(NIGHTLY_BUILD)
++  pref("devtools.layout.boxmodel.highlightProperty", true);
++#else
++  pref("devtools.layout.boxmodel.highlightProperty", false);
++#endif
++
++// By how many times eyedropper will magnify pixels
++pref("devtools.eyedropper.zoom", 6);
++
++// Enable to collapse attributes that are too long.
++pref("devtools.markup.collapseAttributes", true);
++// Length to collapse attributes
++pref("devtools.markup.collapseAttributeLength", 120);
++// Whether to auto-beautify the HTML on copy.
++pref("devtools.markup.beautifyOnCopy", false);
++// Whether or not the DOM mutation breakpoints context menu are enabled in the
++// markup view.
++pref("devtools.markup.mutationBreakpoints.enabled", true);
++
++// DevTools default color unit
++pref("devtools.defaultColorUnit", "authored");
++
++// Enable the Memory tools
++pref("devtools.memory.enabled", true);
++
++pref("devtools.memory.custom-census-displays", "{}");
++pref("devtools.memory.custom-label-displays", "{}");
++pref("devtools.memory.custom-tree-map-displays", "{}");
++
++pref("devtools.memory.max-individuals", 1000);
++pref("devtools.memory.max-retaining-paths", 10);
++
++// Enable the Performance tools
++pref("devtools.performance.enabled", true);
++// But not the pop-up.
++pref("devtools.performance.popup.feature-flag", false);
++// Override the default preset, which is "web-developer" on beta and release.
++pref("devtools.performance.recording.preset", "firefox-platform");
++pref("devtools.performance.recording.preset.remote", "firefox-platform");
++
++// The default cache UI setting
++pref("devtools.cache.disabled", false);
++
++// The default service workers UI setting
++pref("devtools.serviceWorkers.testing.enabled", false);
++
++// Enable the Network Monitor
++pref("devtools.netmonitor.enabled", true);
++
++pref("devtools.netmonitor.features.search", true);
++pref("devtools.netmonitor.features.requestBlocking", true);
++
++// Enable the Application panel
++pref("devtools.application.enabled", false);
++
++// Enable the custom formatters feature
++// This preference represents the user's choice to enable the custom formatters feature.
++// While the preference above will be removed once the feature is stable, this one is menat to stay.
++pref("devtools.custom-formatters.enabled", false);
++
++// The default Network Monitor UI settings
++pref("devtools.netmonitor.panes-network-details-width", 550);
++pref("devtools.netmonitor.panes-network-details-height", 450);
++pref("devtools.netmonitor.panes-search-width", 550);
++pref("devtools.netmonitor.panes-search-height", 450);
++pref("devtools.netmonitor.filters", "[\"all\"]");
++pref("devtools.netmonitor.visibleColumns",
++  "[\"status\",\"method\",\"domain\",\"file\",\"initiator\",\"type\",\"transferred\",\"contentSize\",\"waterfall\"]"
++);
++pref("devtools.netmonitor.columnsData",
++  '[{"name":"status","minWidth":30,"width":5}, {"name":"method","minWidth":30,"width":5}, {"name":"domain","minWidth":30,"width":10}, {"name":"file","minWidth":30,"width":25}, {"name":"url","minWidth":30,"width":25},{"name":"initiator","minWidth":30,"width":10},{"name":"type","minWidth":30,"width":5},{"name":"transferred","minWidth":30,"width":10},{"name":"contentSize","minWidth":30,"width":5},{"name":"waterfall","minWidth":150,"width":15}]');
++pref("devtools.netmonitor.msg.payload-preview-height", 128);
++pref("devtools.netmonitor.msg.visibleColumns",
++  '["data", "time"]'
++);
++pref("devtools.netmonitor.msg.displayed-messages.limit", 500);
++
++pref("devtools.netmonitor.response.ui.limit", 10240);
++
++// Save request/response bodies yes/no.
++pref("devtools.netmonitor.saveRequestAndResponseBodies", true);
++
++// The default Network monitor HAR export setting
++pref("devtools.netmonitor.har.defaultLogDir", "");
++pref("devtools.netmonitor.har.defaultFileName", "%hostname_Archive [%date]");
++pref("devtools.netmonitor.har.jsonp", false);
++pref("devtools.netmonitor.har.jsonpCallback", "");
++pref("devtools.netmonitor.har.includeResponseBodies", true);
++pref("devtools.netmonitor.har.compress", false);
++pref("devtools.netmonitor.har.forceExport", false);
++pref("devtools.netmonitor.har.pageLoadedTimeout", 1500);
++pref("devtools.netmonitor.har.enableAutoExportToFile", false);
++
++pref("devtools.netmonitor.features.webSockets", true);
++
++// netmonitor audit
++pref("devtools.netmonitor.audits.slow", 500);
++
++// Disable the EventSource Inspector.
++pref("devtools.netmonitor.features.serverSentEvents", false);
++
++// Enable the Storage Inspector
++pref("devtools.storage.enabled", true);
++
++// Enable the Style Editor.
++pref("devtools.styleeditor.enabled", true);
++pref("devtools.styleeditor.autocompletion-enabled", true);
++pref("devtools.styleeditor.showMediaSidebar", true);
++pref("devtools.styleeditor.mediaSidebarWidth", 238);
++pref("devtools.styleeditor.navSidebarWidth", 245);
++pref("devtools.styleeditor.transitions", true);
++
++// Screenshot Option Settings.
++pref("devtools.screenshot.clipboard.enabled", false);
++pref("devtools.screenshot.audio.enabled", true);
++
++// Make sure the DOM panel is hidden by default
++pref("devtools.dom.enabled", false);
++
++// Enable the Accessibility panel.
++pref("devtools.accessibility.enabled", true);
++
++// Web console filters
++pref("devtools.webconsole.filter.error", true);
++pref("devtools.webconsole.filter.warn", true);
++pref("devtools.webconsole.filter.info", true);
++pref("devtools.webconsole.filter.log", true);
++pref("devtools.webconsole.filter.debug", true);
++pref("devtools.webconsole.filter.css", false);
++pref("devtools.webconsole.filter.net", false);
++pref("devtools.webconsole.filter.netxhr", false);
++
++// Webconsole autocomplete preference
++pref("devtools.webconsole.input.autocomplete",true);
++  pref("devtools.webconsole.input.context", false);
++
++// Set to true to eagerly show the results of webconsole terminal evaluations
++// when they don't have side effects.
++pref("devtools.webconsole.input.eagerEvaluation", true);
++
++// Browser console filters
++pref("devtools.browserconsole.filter.error", true);
++pref("devtools.browserconsole.filter.warn", true);
++pref("devtools.browserconsole.filter.info", true);
++pref("devtools.browserconsole.filter.log", true);
++pref("devtools.browserconsole.filter.debug", true);
++pref("devtools.browserconsole.filter.css", false);
++pref("devtools.browserconsole.filter.net", false);
++pref("devtools.browserconsole.filter.netxhr", false);
++
++// Max number of inputs to store in web console history.
++pref("devtools.webconsole.inputHistoryCount", 300);
++
++// Persistent logging: |true| if you want the relevant tool to keep all of the
++// logged messages after reloading the page, |false| if you want the output to
++// be cleared each time page navigation happens.
++pref("devtools.webconsole.persistlog", false);
++pref("devtools.netmonitor.persistlog", false);
++
++// Web Console timestamp: |true| if you want the logs and instructions
++// in the Web Console to display a timestamp, or |false| to not display
++// any timestamps.
++pref("devtools.webconsole.timestampMessages", false);
++
++// Enable the webconsole sidebar toggle in Nightly builds.
++  pref("devtools.webconsole.sidebarToggle", false);
++
++// Saved editor mode state in the console.
++pref("devtools.webconsole.input.editor", false);
++pref("devtools.browserconsole.input.editor", false);
++
++// Editor width for webconsole and browserconsole.
++pref("devtools.webconsole.input.editorWidth", 0);
++pref("devtools.browserconsole.input.editorWidth", 0);
++
++// Display an onboarding UI for the Editor mode.
++pref("devtools.webconsole.input.editorOnboarding", true);
++
++// Enable message grouping in the console, true by default
++pref("devtools.webconsole.groupWarningMessages", true);
++
++// Saved state of the Display content messages checkbox in the browser console.
++pref("devtools.browserconsole.contentMessages", true);
++
++// Enable network monitoring the browser toolbox console/browser console.
++pref("devtools.browserconsole.enableNetworkMonitoring", false);
++
++// Enable client-side mapping service for source maps
++pref("devtools.source-map.client-service.enabled", true);
++
++// The number of lines that are displayed in the web console.
++pref("devtools.hud.loglimit", 10000);
++
++// The developer tools editor configuration:
++// - tabsize: how many spaces to use when a Tab character is displayed.
++// - expandtab: expand Tab characters to spaces.
++// - keymap: which keymap to use (can be 'default', 'emacs' or 'vim')
++// - autoclosebrackets: whether to permit automatic bracket/quote closing.
++// - detectindentation: whether to detect the indentation from the file
++// - enableCodeFolding: Whether to enable code folding or not.
++pref("devtools.editor.tabsize", 2);
++pref("devtools.editor.expandtab", true);
++pref("devtools.editor.keymap", "default");
++pref("devtools.editor.autoclosebrackets", true);
++pref("devtools.editor.detectindentation", true);
++pref("devtools.editor.enableCodeFolding", true);
++pref("devtools.editor.autocomplete", true);
++
++// The angle of the viewport.
++pref("devtools.responsive.viewport.angle", 0);
++// The width of the viewport.
++pref("devtools.responsive.viewport.width", 320);
++// The height of the viewport.
++pref("devtools.responsive.viewport.height", 480);
++// The pixel ratio of the viewport.
++pref("devtools.responsive.viewport.pixelRatio", 0);
++// Whether or not the viewports are left aligned.
++pref("devtools.responsive.leftAlignViewport.enabled", false);
++// Whether to reload when touch simulation is toggled
++pref("devtools.responsive.reloadConditions.touchSimulation", false);
++// Whether to reload when user agent is changed
++pref("devtools.responsive.reloadConditions.userAgent", false);
++// Whether to show the notification about reloading to apply emulation
++pref("devtools.responsive.reloadNotification.enabled", true);
++// Whether or not touch simulation is enabled.
++pref("devtools.responsive.touchSimulation.enabled", false);
++// The user agent of the viewport.
++pref("devtools.responsive.userAgent", "");
++
++// Show the custom user agent input in Nightly builds.
++#if defined(NIGHTLY_BUILD)
++  pref("devtools.responsive.showUserAgentInput", true);
++#else
++  pref("devtools.responsive.showUserAgentInput", false);
++#endif
++
++// Show tab debug targets for This Firefox (on by default for local builds).
++  pref("devtools.aboutdebugging.local-tab-debugging", true);
++
++// Show process debug targets.
++pref("devtools.aboutdebugging.process-debugging", true);
++// Stringified array of network locations that users can connect to.
++pref("devtools.aboutdebugging.network-locations", "[]");
++// Debug target pane collapse/expand settings.
++pref("devtools.aboutdebugging.collapsibilities.installedExtension", false);
++pref("devtools.aboutdebugging.collapsibilities.otherWorker", false);
++pref("devtools.aboutdebugging.collapsibilities.serviceWorker", false);
++pref("devtools.aboutdebugging.collapsibilities.sharedWorker", false);
++pref("devtools.aboutdebugging.collapsibilities.tab", false);
++pref("devtools.aboutdebugging.collapsibilities.temporaryExtension", false);
++
++// about:debugging: only show system and hidden extensions in local builds by
++// default.
++  pref("devtools.aboutdebugging.showHiddenAddons", true);
++
++// Map top-level await expressions in the console
++pref("devtools.debugger.features.map-await-expression", true);
++
++// This relies on javascript.options.asyncstack as well or it has no effect.
++pref("devtools.debugger.features.async-captured-stacks", true);
++pref("devtools.debugger.features.async-live-stacks", false);
++
++// Disable autohide for DevTools popups and tooltips.
++// This is currently not exposed by any UI to avoid making
++// about:devtools-toolbox tabs unusable by mistake.
++pref("devtools.popup.disable_autohide", false);
++
++// Enable overflow debugging in the inspector.
++pref("devtools.overflow.debugging.enabled", true);
++// Enable drag to edit properties in the inspector rule view.
++pref("devtools.inspector.draggable_properties", true);
+diff --git a/suite/components/devtools/components.conf b/suite/components/devtools/components.conf
+new file mode 100644
+--- /dev/null
++++ b/suite/components/devtools/components.conf
+@@ -0,0 +1,15 @@
++# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
++# vim: set filetype=python:
++# This Source Code Form is subject to the terms of the Mozilla Public
++# License, v. 2.0. If a copy of the MPL was not distributed with this
++# file, You can obtain one at http://mozilla.org/MPL/2.0/.
++
++Classes = [
++  {
++    'cid': '{089694e9-106a-4704-abf7-62a88545e194}',
++    'contract_ids': ['@xulvolution.org/generic/devtools-startup-clh;1'],
++    'esModule': 'resource:///modules/devtools-loader.sys.mjs',
++    'constructor': 'DevToolsStartup',
++    'categories': {'command-line-handler': 'm-aaa-xre-devtools'},
++  },
++]
+diff --git a/suite/components/devtools/devtools-loader.sys.mjs b/suite/components/devtools/devtools-loader.sys.mjs
+new file mode 100644
+--- /dev/null
++++ b/suite/components/devtools/devtools-loader.sys.mjs
+@@ -0,0 +1,118 @@
++/* This Source Code Form is subject to the terms of the Mozilla Public
++ * License, v. 2.0. If a copy of the MPL was not distributed with this
++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
++
++const lazy = {};
++ChromeUtils.defineESModuleGetters(lazy, {
++  NetUtil: "resource://gre/modules/NetUtil.sys.mjs",
++});
++
++function resolveURIInternal(aCmdLine, aArgument) {
++  var uri = aCmdLine.resolveURI(aArgument);
++
++  if (!(uri instanceof Ci.nsIFileURL)) {
++    return uri;
++  }
++
++  try {
++    if (uri.file.exists()) {
++      return uri;
++    }
++  } catch (e) {
++    console.error(e);
++  }
++
++  // We have interpreted the argument as a relative file URI, but the file
++  // doesn't exist. Try URI fixup heuristics: see bug 290782.
++
++  try {
++    uri = Services.uriFixup.getFixupURIInfo(aArgument, 0).preferredURI;
++  } catch (e) {
++    console.error(e);
++  }
++
++  return uri;
++}
++
++export function DevToolsStartup() {}
++
++DevToolsStartup.prototype = {
++  QueryInterface: ChromeUtils.generateQI(["nsICommandLineHandler"]),
++
++  helpInfo: "",
++  handle(cmdLine) {
++    this.initialize();
++
++    // We want to overwrite the -devtools flag and open the toolbox instead
++    const devtoolsFlag = cmdLine.handleFlag("devtools", false);
++    if (devtoolsFlag) {
++      this.handleDevToolsFlag(cmdLine);
++    }
++
++    var chromeFlag = cmdLine.handleFlagWithParam("chrome", false);
++    if (chromeFlag) {
++      // The parameter specifies the window to open.
++      this.handleChromeFlag(cmdLine, chromeFlag);
++    }
++  },
++
++  handleDevToolsFlag(cmdLine) {
++    const { BrowserToolboxLauncher } = ChromeUtils.importESModule(
++      "resource://devtools/client/framework/browser-toolbox/Launcher.sys.mjs"
++    );
++    BrowserToolboxLauncher.init();
++
++    if (cmdLine.state == Ci.nsICommandLine.STATE_REMOTE_AUTO) {
++      cmdLine.preventDefault = true;
++    }
++  },
++
++  handleChromeFlag(cmdLine, chromeParam) {
++    try {
++      const argstring = Cc["@mozilla.org/supports-string;1"].createInstance(
++        Ci.nsISupportsString
++      );
++
++      const _uri = resolveURIInternal(cmdLine, chromeParam);
++
++      // only load URIs which do not inherit chrome privs
++      if (!Services.io.URIChainHasFlags(_uri, Ci.nsIProtocolHandler.URI_INHERITS_SECURITY_CONTEXT)) {
++        Services.ww.openWindow(null, _uri.spec, "_blank", "chrome,dialog=no,all", argstring);
++        cmdLine.preventDefault = true;
++      }
++    } catch (e) { dump(e); }
++  },
++
++  initialize() {
++    const { loader, require, DevToolsLoader } = ChromeUtils.importESModule(
++      "resource://devtools/shared/loader/Loader.sys.mjs"
++    );
++    const { DevToolsServer } = require("devtools/server/devtools-server");
++    const { gDevTools } = require("devtools/client/framework/devtools");
++
++    // Make sure our root actor is always registered, no matter how devtools are called.
++    const devtoolsRegisterActors =
++      DevToolsServer.registerActors.bind(DevToolsServer);
++    DevToolsServer.registerActors = function (options) {
++      devtoolsRegisterActors(options);
++      if (options.root) {
++        const {
++          createRootActor,
++        } = require("resource:///modules/devtools-root-actor.js");
++        DevToolsServer.setRootActor(createRootActor);
++      }
++    };
++
++    // Make the loader visible to the debugger by default and for the already
++    // loaded instance. Thunderbird now also provides the Browser Toolbox for
++    // chrome debugging, which uses its own separate loader instance.
++    DevToolsLoader.prototype.invisibleToDebugger = false;
++    loader.invisibleToDebugger = false;
++    DevToolsServer.allowChromeProcess = true;
++
++    // Initialize and load the toolkit/browser actors. This will also call above function to set the
++    // Thunderbird root actor
++    DevToolsServer.init();
++    DevToolsServer.registerAllActors();
++  },
++};
+diff --git a/suite/components/devtools/devtools-root-actor.js b/suite/components/devtools/devtools-root-actor.js
+new file mode 100644
+--- /dev/null
++++ b/suite/components/devtools/devtools-root-actor.js
+@@ -0,0 +1,67 @@
++/* This Source Code Form is subject to the terms of the Mozilla Public
++ * License, v. 2.0. If a copy of the MPL was not distributed with this
++ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
++
++/* globals loader, require, exports */
++
++/**
++ * Actors for Developer Tools.
++ */
++
++var { ActorRegistry } = require("devtools/server/actors/utils/actor-registry");
++
++loader.lazyRequireGetter(
++  this,
++  "RootActor",
++  "devtools/server/actors/root",
++  true
++);
++loader.lazyRequireGetter(
++  this,
++  "sendShutdownEvent",
++  "devtools/server/actors/webbrowser",
++  true
++);
++loader.lazyRequireGetter(
++  this,
++  "WorkerDescriptorActorList",
++  "devtools/server/actors/worker/worker-descriptor-actor-list",
++  true
++);
++loader.lazyRequireGetter(
++  this,
++  "ServiceWorkerRegistrationActorList",
++  "devtools/server/actors/worker/service-worker-registration-list",
++  true
++);
++loader.lazyRequireGetter(
++  this,
++  "ProcessActorList",
++  "devtools/server/actors/process",
++  true
++);
++
++/**
++ * Create the basic root actor for any XRE Application.
++ *
++ * @param aConnection       The debugger connection to create the actor for.
++ * @returns The actor for the connection.
++ */
++exports.createRootActor = function (aConnection) {
++  const parameters = {
++    workerList: new WorkerDescriptorActorList(aConnection, {}),
++    serviceWorkerRegistrationList: new ServiceWorkerRegistrationActorList(
++      aConnection
++    ),
++    processList: new ProcessActorList(),
++    globalActorFactories: ActorRegistry.globalActorFactories,
++    onShutdown: sendShutdownEvent,
++  };
++
++  // Create the root actor and set the application type
++  const rootActor = new RootActor(aConnection, parameters);
++  rootActor.applicationType = "generic";
++
++  return rootActor;
++};
++
+diff --git a/suite/components/devtools/moz.build b/suite/components/devtools/moz.build
+new file mode 100644
+--- /dev/null
++++ b/suite/components/devtools/moz.build
+@@ -0,0 +1,15 @@
++# vim: set filetype=python:
++# This Source Code Form is subject to the terms of the Mozilla Public
++# License, v. 2.0. If a copy of the MPL was not distributed with this
++# file, You can obtain one at http://mozilla.org/MPL/2.0/.
++
++EXTRA_JS_MODULES += [
++    "devtools-loader.sys.mjs",
++    "devtools-root-actor.js",
++]
++
++XPCOM_MANIFESTS += [
++    "components.conf",
++]
++
++JS_PREFERENCE_FILES += ['all-devtools.js']
+diff --git a/suite/components/moz.build b/suite/components/moz.build
+--- a/suite/components/moz.build
++++ b/suite/components/moz.build
+@@ -4,16 +4,17 @@
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ 
+ DIRS += [
+     "autocomplete",
+     "bindings",
+     "console",
+     "dataman",
++    "devtools",
+     "downloads",
+     "feeds",
+     "helpviewer",
+     "migration",
+     "permissions",
+     "places",
+     "pref",
+     "profile",

+ 223 - 764
mzla/comm/TOP-UNFINISHED-buoy.patch → mzla/comm/contrib/diagnostic-buoy-component.patch

@@ -1,50 +1,11 @@
 # HG changeset patch
 # User Matt A. Tobin <email@mattatobin.com>
-# Date 1722343300 18000
-#      Tue Jul 30 07:41:40 2024 -0500
-# Node ID 04b7b3fda5f991ce0913f3391a57d9839f946fe8
-# Parent  56357ac123e4f2989867d6fa59e18f93215efa08
-No Bug - Adapt a new component so that SeaMonkey can run.
+# Date 1722362462 18000
+#      Tue Jul 30 13:01:02 2024 -0500
+# Node ID e82da9c74fb387f15d559cf2df9afcc01058c5a5
+# Parent  9cd645ab3ebd72330c3f34df2926153d2ef380c2
+No Bug - Create an isolated dianostic component for the suite.
 
-diff --git a/suite/branding/seamonkey/locales/en-US/brand.ftl b/suite/branding/seamonkey/locales/en-US/brand.ftl
-new file mode 100644
---- /dev/null
-+++ b/suite/branding/seamonkey/locales/en-US/brand.ftl
-@@ -0,0 +1,21 @@
-+# This Source Code Form is subject to the terms of the Mozilla Public
-+# License, v. 2.0. If a copy of the MPL was not distributed with this
-+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-+
-+## SeaMonkey Brand
-+##
-+## SeaMonkey must be treated as a brand, and kept in English.
-+## It cannot be:
-+## - Transliterated.
-+## - Translated.
-+##
-+## Reference: https://www.mozilla.org/styleguide/communications/translation/
-+
-+-brand-shorter-name = SeaMonkey
-+-brand-short-name = SeaMonkey
-+-brand-full-name = SeaMonkey
-+# This brand name can be used in messages where the product name needs to
-+# remain unchanged across different versions (Daily, Beta, etc.).
-+-brand-product-name = SeaMonkey
-+-vendor-short-name = SeaMonkey e.V.
-+trademarkInfo = { " " }
-diff --git a/suite/branding/seamonkey/locales/jar.mn b/suite/branding/seamonkey/locales/jar.mn
---- a/suite/branding/seamonkey/locales/jar.mn
-+++ b/suite/branding/seamonkey/locales/jar.mn
-@@ -1,6 +1,9 @@
- #filter substitution
- 
-+[localization] @AB_CD@.jar:
-+  branding                                 (en-US/**/*.ftl)
-+
- @AB_CD@.jar:
- % locale branding @AB_CD@ %locale/@AB_CD@/branding/
-   locale/@AB_CD@/branding/brand.dtd        (%brand.dtd)
-   locale/@AB_CD@/branding/brand.properties (%brand.properties)
 diff --git a/suite/buoy/ATTN-CC-SUITE-PATCHERS.txt b/suite/buoy/ATTN-CC-SUITE-PATCHERS.txt
 new file mode 100644
 --- /dev/null
@@ -68,7 +29,7 @@ new file mode 100644
 --- /dev/null
 +++ b/suite/buoy/ZZ-buoy-prefs.js
 @@ -0,0 +1,2 @@
-+//pref("toolkit.defaultChromeURI", "chrome://buoy/content/buoy.xhtml");
++pref("toolkit.defaultChromeURI", "chrome://buoy/content/buoy.xhtml");
 +pref("prompts.contentPromptSubDialog", false);
 diff --git a/suite/buoy/content/buoy.css b/suite/buoy/content/buoy.css
 new file mode 100644
@@ -88,14 +49,18 @@ diff --git a/suite/buoy/content/buoy.js b/suite/buoy/content/buoy.js
 new file mode 100644
 --- /dev/null
 +++ b/suite/buoy/content/buoy.js
-@@ -0,0 +1,37 @@
+@@ -0,0 +1,85 @@
 +/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
 +/* This Source Code Form is subject to the terms of the Mozilla Public
 + * License, v. 2.0. If a copy of the MPL was not distributed with this
 + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 +
-+var { EzE10SUtils } = ChromeUtils.import("resource:///modules/EzE10SUtils.jsm");
++// e10s
++var { EzE10SUtils } = ChromeUtils.importESModule(
++  "resource:///modules/EzE10SUtils.sys.mjs"
++);
 +
++// Devtools
 +ChromeUtils.defineESModuleGetters(this, {
 +  BrowserToolboxLauncher: "resource://devtools/client/framework/browser-toolbox/Launcher.sys.mjs",
 +});
@@ -109,28 +74,72 @@ new file mode 100644
 +  enumerable: true,
 +});
 +
-+var MainBuoyFunctions = {
-+  startup: function() {
++// Main functions
++var gBuoy = {
++  homepage: "about:version",
++  toContent: function(aURL) {
 +    var browser = document.getElementById("main-browser");
-+    var homepage = "about:config";
-+    EzE10SUtils.loadAboutBlank(browser);
-+    EzE10SUtils.loadURI(browser, homepage);
++    EzE10SUtils.loadURI(browser, aURL);
++  },
++  toChrome: function(inType, uri, features, args) {
++    var topWindow = Services.wm.getMostRecentWindow(inType);
++
++    if (topWindow) {
++      topWindow.focus();
++    } else if (features) {
++      Services.ww.openWindow(null, uri, "_blank", features, args);
++    } else {
++      Services.ww.openWindow(
++        null,
++        uri,
++        "_blank",
++        "chrome,all,dialog=no,extrachrome,menubar,resizable,scrollbars," +
++        "status,location,toolbar,personalbar",
++        args
++      );
++    }
++  },
++  navHome: function() {
++    var browser = document.getElementById("main-browser");
++    EzE10SUtils.loadURI(browser, this.homepage);
 +  },
-+  openURL: function(aURL) {
-+    EzE10SUtils.loadURI(document.getElementById("main-browser"), aURL);
++  navigation: function(aNaviCmd) {
++    var browser = document.getElementById("main-browser");
++    switch (aNaviCmd) {
++      case 'back':
++        browser.goBack();
++        break;
++      case 'forward':
++        browser.goForward();
++        break;
++      case 'reload':
++        browser.reload();
++        break;
++      case 'stop':
++        browser.stop();
++        break;
++      default:
++        gBuoy.navHome();
++    }
 +  },
 +  devtools: function() { BrowserToolboxLauncher.init(); },
 +  quitApp: function() { Services.startup.quit(Services.startup.eAttemptQuit); },
++  startup: function() {
++    var browser = document.getElementById("main-browser");
++    EzE10SUtils.loadAboutBlank(browser);
++    gBuoy.navHome();
++  },
 +}
 +
++// Devtools Compat
 +function openWebLinkIn(url, where, params) {
-+  MainBuoyFunctions.openURL(url);
++  gBuoy.toContent(url);
 +}
 diff --git a/suite/buoy/content/buoy.xhtml b/suite/buoy/content/buoy.xhtml
 new file mode 100644
 --- /dev/null
 +++ b/suite/buoy/content/buoy.xhtml
-@@ -0,0 +1,65 @@
+@@ -0,0 +1,155 @@
 +<?xml version="1.0"?>
 +<!-- This Source Code Form is subject to the terms of the Mozilla Public
 +   - License, v. 2.0. If a copy of the MPL was not distributed with this
@@ -159,32 +168,122 @@ new file mode 100644
 +      scrolling="false"
 +      persist="screenX screenY width height sizemode">
 +  <head>
-+    <title>SeaMonkey Buoy</title>
++    <title>SeaMonkey Diagnostic &amp; Testing Buoy</title>
 +    <link rel="stylesheet" href="chrome://global/skin/global.css" />
 +    <link rel="stylesheet" href="chrome://buoy/content/buoy.css" />
 +    <script defer="defer" src="chrome://global/content/customElements.js" />
 +    <script defer="defer" src="chrome://buoy/content/buoy.js" />
 +    <script>
-+      window.addEventListener("load", MainBuoyFunctions.startup);
++      window.addEventListener("load", gBuoy.startup);
 +    </script>
 +  </head>
 +  <body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
 +
 +    <commandset id="mainCommandSet">
-+      <command id="cmd_Exit" oncommand="MainBuoyFunctions.quitApp();"/>
-+      <command id="cmd_DevTools" oncommand="MainBuoyFunctions.devtools();"/>
++      <command id="cmd_Exit"
++               oncommand="gBuoy.quitApp();"/>
++      <command id="cmd_DevTools"
++               oncommand="gBuoy.devtools();"/>
++
++      <command id="cmd_Navigator"
++               oncommand="gBuoy.toChrome('navigator:browser',
++                                         'chrome://navigator/content/navigator.xhtml');"/>
++      <command id="cmd_MailNews"
++               oncommand="gBuoy.toChrome('mail:3pane',
++                                         'chrome://messenger/content/messenger.xhtml');"/>
++      <command id="cmd_Composer"
++               oncommand="gBuoy.toChrome('composer:html',
++                                         'chrome://editor/content/editor.xhtml');"/>
++      <command id="cmd_Preferences"
++               oncommand="gBuoy.toChrome('mozilla:preferences',
++                                         'chrome://communicator/content/pref/preferences.xhtml');"/>
++
++      <command id="cmd_AboutAbout"
++               oncommand="gBuoy.toContent('about:about');"/>
++      <command id="cmd_AboutConfig"
++               oncommand="gBuoy.toContent('about:config');"/>
++      <command id="cmd_AboutSupport"
++               oncommand="gBuoy.toContent('about:support');"/>
++      <command id="cmd_AboutVersion"
++               oncommand="gBuoy.toContent('about:version');"/>
++
++      <command id="cmd_NavHome"
++               oncommand="gBuoy.navHome();"/>
++
++      <command id="cmd_NavBack"
++               oncommand="gBuoy.navigation('back');"/>
++      <command id="cmd_NavForward"
++               oncommand="gBuoy.navigation('forward');"/>
++      <command id="cmd_NavReload"
++               oncommand="gBuoy.navigation('reload');"/>
++      <command id="cmd_NavStop"
++               oncommand="gBuoy.navigation('stop');"/>
++
++      <command id="cmd_SeaMonkeyHomePage"
++               oncommand="gBuoy.toContent('https://www.seamonkey-project.org/');"/>
++      <command id="cmd_GetInvolved"
++               oncommand="gBuoy.toContent('https://www.seamonkey-project.org/dev/get-involved');"/>
++
 +    </commandset>
 +
 +    <vbox flex="1">    
-+      <toolbox id="buoy-toolbox">
++      <toolbox id="main-toolbox" style="border-bottom: 1px solid ThreeDShadow;">
 +        <menubar id="main-menubar">
 +          <menu id="file-menu" label="File">
 +            <menupopup id="file-popup">
-+              <menuitem label="DevTools" command="cmd_DevTools"/>
 +              <menuitem label="Exit" command="cmd_Exit"/>
 +            </menupopup>
 +          </menu>
++          <menu id="edit-menu" label="Edit">
++            <menupopup id="edit-popup">
++              <menuitem label="Configuration Editor" command="cmd_AboutConfig"/>
++              <menuitem label="Preferences" command="cmd_Preferences"/>
++            </menupopup>
++          </menu>
++          <menu id="go-menu" label="Go">
++            <menupopup id="components-popup">
++              <menuitem label="Back" command="cmd_NavBack"/>
++              <menuitem label="Forward" command="cmd_NavForward"/>
++              <menuitem label="Reload" command="cmd_NavReload"/>
++              <menuitem label="Stop" command="cmd_NavStop"/>
++              <menuitem label="Home" command="cmd_NavHome"/>
++            </menupopup>
++          </menu>
++          <menu id="components-menu" label="Components">
++            <menupopup id="components-popup">
++              <menuitem label="Browser" command="cmd_Navigator"/>
++              <menuitem label="Messenger" command="cmd_MailNews"/>
++              <menuitem label="Composer" command="cmd_Composer"/>
++            </menupopup>
++          </menu>
++          <menu id="tools-menu" label="Tools">
++            <menupopup id="tools-popup">
++              <menuitem label="About: Pages" command="cmd_AboutAbout"/>
++              <menuitem label="Developer Tools" command="cmd_DevTools"/>
++            </menupopup>
++          </menu>
++          <menu id="help-menu" label="Help">
++            <menupopup id="help-popup">
++              <menuitem label="Get Involved" command="cmd_GetInvolved"/>
++              <menuitem label="Troubleshooting Information" command="cmd_AboutSupport"/>
++              <menuitem label="About SeaMonkey" command="cmd_AboutVersion"/>
++            </menupopup>
++          </menu>
 +        </menubar>
++        <toolbar id="navigation-toolbar">
++          <toolbarbutton id="back-button" label="&lt; Back" command="cmd_NavBack"/>
++          <toolbarbutton id="forward-button" label="&gt; Forward" command="cmd_NavForward"/>
++          <toolbarbutton id="reload-button" label="O Reload" command="cmd_NavReload"/>
++          <toolbarbutton id="stop-button" label="X Stop" command="cmd_NavStop"/>
++          <html:input id="urlbar" style="flex: 1; margin: 2px; padding: 4px;" placeholder="Enter a URL..." />
++          <toolbarbutton id="go-button" label="Go -&gt;" oncommand="var urlbar = document.getElementById('urlbar');
++                                                                    gBuoy.toContent(urlbar.value);
++                                                                    urlbar.value = '';"/>
++        </toolbar>
++        <toolbar id="quick-links-toolbar">
++          <button label="SeaMonkey Homepage" command="cmd_SeaMonkeyHomePage"/>
++          <button label="Get Involved" command="cmd_GetInvolved"/>
++        </toolbar>
 +      </toolbox>
 +      <browser id="main-browser"
 +               flex="1"
@@ -196,614 +295,6 @@ new file mode 100644
 +  </body>
 +</html>
 +
-diff --git a/suite/buoy/devtools/all-devtools.js b/suite/buoy/devtools/all-devtools.js
-new file mode 100644
---- /dev/null
-+++ b/suite/buoy/devtools/all-devtools.js
-@@ -0,0 +1,368 @@
-+// Developer Tools related preferences
-+pref("devtools.chrome.enabled", true);
-+pref("devtools.debugger.remote-enabled", true);
-+pref("devtools.selfxss.count", 5);
-+// Enable extensionStorage storage actor by default
-+pref("devtools.storage.extensionStorage.enabled", true);
-+
-+// Toolbox preferences
-+pref("devtools.toolbox.footer.height", 250);
-+pref("devtools.toolbox.sidebar.width", 500);
-+pref("devtools.toolbox.host", "bottom");
-+pref("devtools.toolbox.previousHost", "right");
-+pref("devtools.toolbox.selectedTool", "inspector");
-+pref("devtools.toolbox.sideEnabled", true);
-+pref("devtools.toolbox.zoomValue", "1");
-+pref("devtools.toolbox.splitconsoleEnabled", false);
-+pref("devtools.toolbox.splitconsoleHeight", 100);
-+pref("devtools.toolbox.tabsOrder", "");
-+pref("devtools.netmonitor.features.newEditAndResend", false);
-+
-+// The fission pref for enabling the "Multiprocess Browser Toolbox", which will
-+// make it possible to debug anything in Firefox (See Bug 1570639 for more
-+// information).
-+pref("devtools.browsertoolbox.fission", true);
-+
-+// When the Multiprocess Browser Toolbox is enabled, you can configure the scope of it:
-+// - "everything" will enable debugging absolutely everything in the browser
-+//   All processes, all documents, all workers, all add-ons.
-+// - "parent-process" will restrict debugging to the parent process
-+//   All privileged javascript, documents and workers running in the parent process.
-+pref("devtools.browsertoolbox.scope", "everything");
-+
-+// Toolbox Button preferences
-+pref("devtools.command-button-pick.enabled", true);
-+pref("devtools.command-button-frames.enabled", true);
-+pref("devtools.command-button-splitconsole.enabled", true);
-+pref("devtools.command-button-responsive.enabled", true);
-+pref("devtools.command-button-screenshot.enabled", false);
-+pref("devtools.command-button-rulers.enabled", false);
-+pref("devtools.command-button-measure.enabled", false);
-+pref("devtools.command-button-noautohide.enabled", false);
-+pref("devtools.command-button-errorcount.enabled", true);
-+  pref("devtools.command-button-experimental-prefs.enabled", true);
-+
-+// Inspector preferences
-+// Enable the Inspector
-+pref("devtools.inspector.enabled", true);
-+// What was the last active sidebar in the inspector
-+pref("devtools.inspector.selectedSidebar", "layoutview");
-+pref("devtools.inspector.activeSidebar", "layoutview");
-+pref("devtools.inspector.remote", false);
-+
-+// Enable the 3 pane mode in the inspector
-+pref("devtools.inspector.three-pane-enabled", true);
-+// Enable the 3 pane mode in the chrome inspector
-+pref("devtools.inspector.chrome.three-pane-enabled", false);
-+// Collapse pseudo-elements by default in the rule-view
-+pref("devtools.inspector.show_pseudo_elements", false);
-+// The default size for image preview tooltips in the rule-view/computed-view/markup-view
-+pref("devtools.inspector.imagePreviewTooltipSize", 300);
-+// Enable user agent style inspection in rule-view
-+pref("devtools.inspector.showUserAgentStyles", false);
-+// Show native anonymous content and user agent shadow roots
-+pref("devtools.inspector.showAllAnonymousContent", false);
-+// Enable the inline CSS compatibility warning in inspector rule view
-+pref("devtools.inspector.ruleview.inline-compatibility-warning.enabled", false);
-+// Enable the compatibility tool in the inspector.
-+pref("devtools.inspector.compatibility.enabled", true);
-+// Enable color scheme simulation in the inspector.
-+pref("devtools.inspector.color-scheme-simulation.enabled", true);
-+
-+// Grid highlighter preferences
-+pref("devtools.gridinspector.gridOutlineMaxColumns", 50);
-+pref("devtools.gridinspector.gridOutlineMaxRows", 50);
-+pref("devtools.gridinspector.showGridAreas", false);
-+pref("devtools.gridinspector.showGridLineNumbers", false);
-+pref("devtools.gridinspector.showInfiniteLines", false);
-+// Max number of grid highlighters that can be displayed
-+pref("devtools.gridinspector.maxHighlighters", 3);
-+
-+// Whether or not simplified highlighters should be used when
-+// prefers-reduced-motion is enabled.
-+pref("devtools.inspector.simple-highlighters-reduced-motion", false);
-+
-+// Whether or not the box model panel is opened in the layout view
-+pref("devtools.layout.boxmodel.opened", true);
-+// Whether or not the flexbox panel is opened in the layout view
-+pref("devtools.layout.flexbox.opened", true);
-+// Whether or not the flexbox container panel is opened in the layout view
-+pref("devtools.layout.flex-container.opened", true);
-+// Whether or not the flexbox item panel is opened in the layout view
-+pref("devtools.layout.flex-item.opened", true);
-+// Whether or not the grid inspector panel is opened in the layout view
-+pref("devtools.layout.grid.opened", true);
-+
-+// Enable hovering Box Model values and jumping to their source CSS rule in the
-+// rule-view.
-+#if defined(NIGHTLY_BUILD)
-+  pref("devtools.layout.boxmodel.highlightProperty", true);
-+#else
-+  pref("devtools.layout.boxmodel.highlightProperty", false);
-+#endif
-+
-+// By how many times eyedropper will magnify pixels
-+pref("devtools.eyedropper.zoom", 6);
-+
-+// Enable to collapse attributes that are too long.
-+pref("devtools.markup.collapseAttributes", true);
-+// Length to collapse attributes
-+pref("devtools.markup.collapseAttributeLength", 120);
-+// Whether to auto-beautify the HTML on copy.
-+pref("devtools.markup.beautifyOnCopy", false);
-+// Whether or not the DOM mutation breakpoints context menu are enabled in the
-+// markup view.
-+pref("devtools.markup.mutationBreakpoints.enabled", true);
-+
-+// DevTools default color unit
-+pref("devtools.defaultColorUnit", "authored");
-+
-+// Enable the Memory tools
-+pref("devtools.memory.enabled", true);
-+
-+pref("devtools.memory.custom-census-displays", "{}");
-+pref("devtools.memory.custom-label-displays", "{}");
-+pref("devtools.memory.custom-tree-map-displays", "{}");
-+
-+pref("devtools.memory.max-individuals", 1000);
-+pref("devtools.memory.max-retaining-paths", 10);
-+
-+// Enable the Performance tools
-+pref("devtools.performance.enabled", true);
-+// But not the pop-up.
-+pref("devtools.performance.popup.feature-flag", false);
-+// Override the default preset, which is "web-developer" on beta and release.
-+pref("devtools.performance.recording.preset", "firefox-platform");
-+pref("devtools.performance.recording.preset.remote", "firefox-platform");
-+
-+// The default cache UI setting
-+pref("devtools.cache.disabled", false);
-+
-+// The default service workers UI setting
-+pref("devtools.serviceWorkers.testing.enabled", false);
-+
-+// Enable the Network Monitor
-+pref("devtools.netmonitor.enabled", true);
-+
-+pref("devtools.netmonitor.features.search", true);
-+pref("devtools.netmonitor.features.requestBlocking", true);
-+
-+// Enable the Application panel
-+pref("devtools.application.enabled", false);
-+
-+// Enable the custom formatters feature
-+// This preference represents the user's choice to enable the custom formatters feature.
-+// While the preference above will be removed once the feature is stable, this one is menat to stay.
-+pref("devtools.custom-formatters.enabled", false);
-+
-+// The default Network Monitor UI settings
-+pref("devtools.netmonitor.panes-network-details-width", 550);
-+pref("devtools.netmonitor.panes-network-details-height", 450);
-+pref("devtools.netmonitor.panes-search-width", 550);
-+pref("devtools.netmonitor.panes-search-height", 450);
-+pref("devtools.netmonitor.filters", "[\"all\"]");
-+pref("devtools.netmonitor.visibleColumns",
-+  "[\"status\",\"method\",\"domain\",\"file\",\"initiator\",\"type\",\"transferred\",\"contentSize\",\"waterfall\"]"
-+);
-+pref("devtools.netmonitor.columnsData",
-+  '[{"name":"status","minWidth":30,"width":5}, {"name":"method","minWidth":30,"width":5}, {"name":"domain","minWidth":30,"width":10}, {"name":"file","minWidth":30,"width":25}, {"name":"url","minWidth":30,"width":25},{"name":"initiator","minWidth":30,"width":10},{"name":"type","minWidth":30,"width":5},{"name":"transferred","minWidth":30,"width":10},{"name":"contentSize","minWidth":30,"width":5},{"name":"waterfall","minWidth":150,"width":15}]');
-+pref("devtools.netmonitor.msg.payload-preview-height", 128);
-+pref("devtools.netmonitor.msg.visibleColumns",
-+  '["data", "time"]'
-+);
-+pref("devtools.netmonitor.msg.displayed-messages.limit", 500);
-+
-+pref("devtools.netmonitor.response.ui.limit", 10240);
-+
-+// Save request/response bodies yes/no.
-+pref("devtools.netmonitor.saveRequestAndResponseBodies", true);
-+
-+// The default Network monitor HAR export setting
-+pref("devtools.netmonitor.har.defaultLogDir", "");
-+pref("devtools.netmonitor.har.defaultFileName", "%hostname_Archive [%date]");
-+pref("devtools.netmonitor.har.jsonp", false);
-+pref("devtools.netmonitor.har.jsonpCallback", "");
-+pref("devtools.netmonitor.har.includeResponseBodies", true);
-+pref("devtools.netmonitor.har.compress", false);
-+pref("devtools.netmonitor.har.forceExport", false);
-+pref("devtools.netmonitor.har.pageLoadedTimeout", 1500);
-+pref("devtools.netmonitor.har.enableAutoExportToFile", false);
-+
-+pref("devtools.netmonitor.features.webSockets", true);
-+
-+// netmonitor audit
-+pref("devtools.netmonitor.audits.slow", 500);
-+
-+// Disable the EventSource Inspector.
-+pref("devtools.netmonitor.features.serverSentEvents", false);
-+
-+// Enable the Storage Inspector
-+pref("devtools.storage.enabled", true);
-+
-+// Enable the Style Editor.
-+pref("devtools.styleeditor.enabled", true);
-+pref("devtools.styleeditor.autocompletion-enabled", true);
-+pref("devtools.styleeditor.showMediaSidebar", true);
-+pref("devtools.styleeditor.mediaSidebarWidth", 238);
-+pref("devtools.styleeditor.navSidebarWidth", 245);
-+pref("devtools.styleeditor.transitions", true);
-+
-+// Screenshot Option Settings.
-+pref("devtools.screenshot.clipboard.enabled", false);
-+pref("devtools.screenshot.audio.enabled", true);
-+
-+// Make sure the DOM panel is hidden by default
-+pref("devtools.dom.enabled", false);
-+
-+// Enable the Accessibility panel.
-+pref("devtools.accessibility.enabled", true);
-+
-+// Web console filters
-+pref("devtools.webconsole.filter.error", true);
-+pref("devtools.webconsole.filter.warn", true);
-+pref("devtools.webconsole.filter.info", true);
-+pref("devtools.webconsole.filter.log", true);
-+pref("devtools.webconsole.filter.debug", true);
-+pref("devtools.webconsole.filter.css", false);
-+pref("devtools.webconsole.filter.net", false);
-+pref("devtools.webconsole.filter.netxhr", false);
-+
-+// Webconsole autocomplete preference
-+pref("devtools.webconsole.input.autocomplete",true);
-+  pref("devtools.webconsole.input.context", false);
-+
-+// Set to true to eagerly show the results of webconsole terminal evaluations
-+// when they don't have side effects.
-+pref("devtools.webconsole.input.eagerEvaluation", true);
-+
-+// Browser console filters
-+pref("devtools.browserconsole.filter.error", true);
-+pref("devtools.browserconsole.filter.warn", true);
-+pref("devtools.browserconsole.filter.info", true);
-+pref("devtools.browserconsole.filter.log", true);
-+pref("devtools.browserconsole.filter.debug", true);
-+pref("devtools.browserconsole.filter.css", false);
-+pref("devtools.browserconsole.filter.net", false);
-+pref("devtools.browserconsole.filter.netxhr", false);
-+
-+// Max number of inputs to store in web console history.
-+pref("devtools.webconsole.inputHistoryCount", 300);
-+
-+// Persistent logging: |true| if you want the relevant tool to keep all of the
-+// logged messages after reloading the page, |false| if you want the output to
-+// be cleared each time page navigation happens.
-+pref("devtools.webconsole.persistlog", false);
-+pref("devtools.netmonitor.persistlog", false);
-+
-+// Web Console timestamp: |true| if you want the logs and instructions
-+// in the Web Console to display a timestamp, or |false| to not display
-+// any timestamps.
-+pref("devtools.webconsole.timestampMessages", false);
-+
-+// Enable the webconsole sidebar toggle in Nightly builds.
-+  pref("devtools.webconsole.sidebarToggle", false);
-+
-+// Saved editor mode state in the console.
-+pref("devtools.webconsole.input.editor", false);
-+pref("devtools.browserconsole.input.editor", false);
-+
-+// Editor width for webconsole and browserconsole.
-+pref("devtools.webconsole.input.editorWidth", 0);
-+pref("devtools.browserconsole.input.editorWidth", 0);
-+
-+// Display an onboarding UI for the Editor mode.
-+pref("devtools.webconsole.input.editorOnboarding", true);
-+
-+// Enable message grouping in the console, true by default
-+pref("devtools.webconsole.groupWarningMessages", true);
-+
-+// Saved state of the Display content messages checkbox in the browser console.
-+pref("devtools.browserconsole.contentMessages", true);
-+
-+// Enable network monitoring the browser toolbox console/browser console.
-+pref("devtools.browserconsole.enableNetworkMonitoring", false);
-+
-+// Enable client-side mapping service for source maps
-+pref("devtools.source-map.client-service.enabled", true);
-+
-+// The number of lines that are displayed in the web console.
-+pref("devtools.hud.loglimit", 10000);
-+
-+// The developer tools editor configuration:
-+// - tabsize: how many spaces to use when a Tab character is displayed.
-+// - expandtab: expand Tab characters to spaces.
-+// - keymap: which keymap to use (can be 'default', 'emacs' or 'vim')
-+// - autoclosebrackets: whether to permit automatic bracket/quote closing.
-+// - detectindentation: whether to detect the indentation from the file
-+// - enableCodeFolding: Whether to enable code folding or not.
-+pref("devtools.editor.tabsize", 2);
-+pref("devtools.editor.expandtab", true);
-+pref("devtools.editor.keymap", "default");
-+pref("devtools.editor.autoclosebrackets", true);
-+pref("devtools.editor.detectindentation", true);
-+pref("devtools.editor.enableCodeFolding", true);
-+pref("devtools.editor.autocomplete", true);
-+
-+// The angle of the viewport.
-+pref("devtools.responsive.viewport.angle", 0);
-+// The width of the viewport.
-+pref("devtools.responsive.viewport.width", 320);
-+// The height of the viewport.
-+pref("devtools.responsive.viewport.height", 480);
-+// The pixel ratio of the viewport.
-+pref("devtools.responsive.viewport.pixelRatio", 0);
-+// Whether or not the viewports are left aligned.
-+pref("devtools.responsive.leftAlignViewport.enabled", false);
-+// Whether to reload when touch simulation is toggled
-+pref("devtools.responsive.reloadConditions.touchSimulation", false);
-+// Whether to reload when user agent is changed
-+pref("devtools.responsive.reloadConditions.userAgent", false);
-+// Whether to show the notification about reloading to apply emulation
-+pref("devtools.responsive.reloadNotification.enabled", true);
-+// Whether or not touch simulation is enabled.
-+pref("devtools.responsive.touchSimulation.enabled", false);
-+// The user agent of the viewport.
-+pref("devtools.responsive.userAgent", "");
-+
-+// Show the custom user agent input in Nightly builds.
-+#if defined(NIGHTLY_BUILD)
-+  pref("devtools.responsive.showUserAgentInput", true);
-+#else
-+  pref("devtools.responsive.showUserAgentInput", false);
-+#endif
-+
-+// Show tab debug targets for This Firefox (on by default for local builds).
-+  pref("devtools.aboutdebugging.local-tab-debugging", true);
-+
-+// Show process debug targets.
-+pref("devtools.aboutdebugging.process-debugging", true);
-+// Stringified array of network locations that users can connect to.
-+pref("devtools.aboutdebugging.network-locations", "[]");
-+// Debug target pane collapse/expand settings.
-+pref("devtools.aboutdebugging.collapsibilities.installedExtension", false);
-+pref("devtools.aboutdebugging.collapsibilities.otherWorker", false);
-+pref("devtools.aboutdebugging.collapsibilities.serviceWorker", false);
-+pref("devtools.aboutdebugging.collapsibilities.sharedWorker", false);
-+pref("devtools.aboutdebugging.collapsibilities.tab", false);
-+pref("devtools.aboutdebugging.collapsibilities.temporaryExtension", false);
-+
-+// about:debugging: only show system and hidden extensions in local builds by
-+// default.
-+  pref("devtools.aboutdebugging.showHiddenAddons", true);
-+
-+// Map top-level await expressions in the console
-+pref("devtools.debugger.features.map-await-expression", true);
-+
-+// This relies on javascript.options.asyncstack as well or it has no effect.
-+pref("devtools.debugger.features.async-captured-stacks", true);
-+pref("devtools.debugger.features.async-live-stacks", false);
-+
-+// Disable autohide for DevTools popups and tooltips.
-+// This is currently not exposed by any UI to avoid making
-+// about:devtools-toolbox tabs unusable by mistake.
-+pref("devtools.popup.disable_autohide", false);
-+
-+// Enable overflow debugging in the inspector.
-+pref("devtools.overflow.debugging.enabled", true);
-+// Enable drag to edit properties in the inspector rule view.
-+pref("devtools.inspector.draggable_properties", true);
-diff --git a/suite/buoy/devtools/components.conf b/suite/buoy/devtools/components.conf
-new file mode 100644
---- /dev/null
-+++ b/suite/buoy/devtools/components.conf
-@@ -0,0 +1,15 @@
-+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-+# vim: set filetype=python:
-+# This Source Code Form is subject to the terms of the Mozilla Public
-+# License, v. 2.0. If a copy of the MPL was not distributed with this
-+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-+
-+Classes = [
-+  {
-+    'cid': '{089694e9-106a-4704-abf7-62a88545e194}',
-+    'contract_ids': ['@xulvolution.org/generic/devtools-startup-clh;1'],
-+    'esModule': 'resource:///modules/devtools-loader.sys.mjs',
-+    'constructor': 'DevToolsStartup',
-+    'categories': {'command-line-handler': 'm-aaa-xre-devtools'},
-+  },
-+]
-diff --git a/suite/buoy/devtools/devtools-loader.sys.mjs b/suite/buoy/devtools/devtools-loader.sys.mjs
-new file mode 100644
---- /dev/null
-+++ b/suite/buoy/devtools/devtools-loader.sys.mjs
-@@ -0,0 +1,118 @@
-+/* This Source Code Form is subject to the terms of the Mozilla Public
-+ * License, v. 2.0. If a copy of the MPL was not distributed with this
-+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-+
-+const lazy = {};
-+ChromeUtils.defineESModuleGetters(lazy, {
-+  NetUtil: "resource://gre/modules/NetUtil.sys.mjs",
-+});
-+
-+function resolveURIInternal(aCmdLine, aArgument) {
-+  var uri = aCmdLine.resolveURI(aArgument);
-+
-+  if (!(uri instanceof Ci.nsIFileURL)) {
-+    return uri;
-+  }
-+
-+  try {
-+    if (uri.file.exists()) {
-+      return uri;
-+    }
-+  } catch (e) {
-+    console.error(e);
-+  }
-+
-+  // We have interpreted the argument as a relative file URI, but the file
-+  // doesn't exist. Try URI fixup heuristics: see bug 290782.
-+
-+  try {
-+    uri = Services.uriFixup.getFixupURIInfo(aArgument, 0).preferredURI;
-+  } catch (e) {
-+    console.error(e);
-+  }
-+
-+  return uri;
-+}
-+
-+export function DevToolsStartup() {}
-+
-+DevToolsStartup.prototype = {
-+  QueryInterface: ChromeUtils.generateQI(["nsICommandLineHandler"]),
-+
-+  helpInfo: "",
-+  handle(cmdLine) {
-+    this.initialize();
-+
-+    // We want to overwrite the -devtools flag and open the toolbox instead
-+    const devtoolsFlag = cmdLine.handleFlag("devtools", false);
-+    if (devtoolsFlag) {
-+      this.handleDevToolsFlag(cmdLine);
-+    }
-+
-+    var chromeFlag = cmdLine.handleFlagWithParam("chrome", false);
-+    if (chromeFlag) {
-+      // The parameter specifies the window to open.
-+      this.handleChromeFlag(cmdLine, chromeFlag);
-+    }
-+  },
-+
-+  handleDevToolsFlag(cmdLine) {
-+    const { BrowserToolboxLauncher } = ChromeUtils.importESModule(
-+      "resource://devtools/client/framework/browser-toolbox/Launcher.sys.mjs"
-+    );
-+    BrowserToolboxLauncher.init();
-+
-+    if (cmdLine.state == Ci.nsICommandLine.STATE_REMOTE_AUTO) {
-+      cmdLine.preventDefault = true;
-+    }
-+  },
-+
-+  handleChromeFlag(cmdLine, chromeParam) {
-+    try {
-+      const argstring = Cc["@mozilla.org/supports-string;1"].createInstance(
-+        Ci.nsISupportsString
-+      );
-+
-+      const _uri = resolveURIInternal(cmdLine, chromeParam);
-+
-+      // only load URIs which do not inherit chrome privs
-+      if (!Services.io.URIChainHasFlags(_uri, Ci.nsIProtocolHandler.URI_INHERITS_SECURITY_CONTEXT)) {
-+        Services.ww.openWindow(null, _uri.spec, "_blank", "chrome,dialog=no,all", argstring);
-+        cmdLine.preventDefault = true;
-+      }
-+    } catch (e) { dump(e); }
-+  },
-+
-+  initialize() {
-+    const { loader, require, DevToolsLoader } = ChromeUtils.importESModule(
-+      "resource://devtools/shared/loader/Loader.sys.mjs"
-+    );
-+    const { DevToolsServer } = require("devtools/server/devtools-server");
-+    const { gDevTools } = require("devtools/client/framework/devtools");
-+
-+    // Make sure our root actor is always registered, no matter how devtools are called.
-+    const devtoolsRegisterActors =
-+      DevToolsServer.registerActors.bind(DevToolsServer);
-+    DevToolsServer.registerActors = function (options) {
-+      devtoolsRegisterActors(options);
-+      if (options.root) {
-+        const {
-+          createRootActor,
-+        } = require("resource:///modules/devtools-root-actor.js");
-+        DevToolsServer.setRootActor(createRootActor);
-+      }
-+    };
-+
-+    // Make the loader visible to the debugger by default and for the already
-+    // loaded instance. Thunderbird now also provides the Browser Toolbox for
-+    // chrome debugging, which uses its own separate loader instance.
-+    DevToolsLoader.prototype.invisibleToDebugger = false;
-+    loader.invisibleToDebugger = false;
-+    DevToolsServer.allowChromeProcess = true;
-+
-+    // Initialize and load the toolkit/browser actors. This will also call above function to set the
-+    // Thunderbird root actor
-+    DevToolsServer.init();
-+    DevToolsServer.registerAllActors();
-+  },
-+};
-diff --git a/suite/buoy/devtools/devtools-root-actor.js b/suite/buoy/devtools/devtools-root-actor.js
-new file mode 100644
---- /dev/null
-+++ b/suite/buoy/devtools/devtools-root-actor.js
-@@ -0,0 +1,67 @@
-+/* This Source Code Form is subject to the terms of the Mozilla Public
-+ * License, v. 2.0. If a copy of the MPL was not distributed with this
-+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-+
-+/* globals loader, require, exports */
-+
-+/**
-+ * Actors for Developer Tools.
-+ */
-+
-+var { ActorRegistry } = require("devtools/server/actors/utils/actor-registry");
-+
-+loader.lazyRequireGetter(
-+  this,
-+  "RootActor",
-+  "devtools/server/actors/root",
-+  true
-+);
-+loader.lazyRequireGetter(
-+  this,
-+  "sendShutdownEvent",
-+  "devtools/server/actors/webbrowser",
-+  true
-+);
-+loader.lazyRequireGetter(
-+  this,
-+  "WorkerDescriptorActorList",
-+  "devtools/server/actors/worker/worker-descriptor-actor-list",
-+  true
-+);
-+loader.lazyRequireGetter(
-+  this,
-+  "ServiceWorkerRegistrationActorList",
-+  "devtools/server/actors/worker/service-worker-registration-list",
-+  true
-+);
-+loader.lazyRequireGetter(
-+  this,
-+  "ProcessActorList",
-+  "devtools/server/actors/process",
-+  true
-+);
-+
-+/**
-+ * Create the basic root actor for any XRE Application.
-+ *
-+ * @param aConnection       The debugger connection to create the actor for.
-+ * @returns The actor for the connection.
-+ */
-+exports.createRootActor = function (aConnection) {
-+  const parameters = {
-+    workerList: new WorkerDescriptorActorList(aConnection, {}),
-+    serviceWorkerRegistrationList: new ServiceWorkerRegistrationActorList(
-+      aConnection
-+    ),
-+    processList: new ProcessActorList(),
-+    globalActorFactories: ActorRegistry.globalActorFactories,
-+    onShutdown: sendShutdownEvent,
-+  };
-+
-+  // Create the root actor and set the application type
-+  const rootActor = new RootActor(aConnection, parameters);
-+  rootActor.applicationType = "generic";
-+
-+  return rootActor;
-+};
-+
-diff --git a/suite/buoy/devtools/moz.build b/suite/buoy/devtools/moz.build
-new file mode 100644
---- /dev/null
-+++ b/suite/buoy/devtools/moz.build
-@@ -0,0 +1,15 @@
-+# vim: set filetype=python:
-+# This Source Code Form is subject to the terms of the Mozilla Public
-+# License, v. 2.0. If a copy of the MPL was not distributed with this
-+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-+
-+EXTRA_JS_MODULES += [
-+    "devtools-loader.sys.mjs",
-+    "devtools-root-actor.js",
-+]
-+
-+XPCOM_MANIFESTS += [
-+    "components.conf",
-+]
-+
-+JS_PREFERENCE_FILES += ['all-devtools.js']
 diff --git a/suite/buoy/jar.mn b/suite/buoy/jar.mn
 new file mode 100644
 --- /dev/null
@@ -1201,34 +692,20 @@ new file mode 100644
 +  dispatchToolboxEvent(aEvent, aDetails = {}, aWindow = null) {},
 +};
 +Object.freeze(CustomizableUI);
-diff --git a/suite/buoy/modules/EzE10SUtils.jsm b/suite/buoy/modules/EzE10SUtils.jsm
+diff --git a/suite/buoy/modules/EzE10SUtils.sys.mjs b/suite/buoy/modules/EzE10SUtils.sys.mjs
 new file mode 100644
 --- /dev/null
-+++ b/suite/buoy/modules/EzE10SUtils.jsm
-@@ -0,0 +1,107 @@
++++ b/suite/buoy/modules/EzE10SUtils.sys.mjs
+@@ -0,0 +1,93 @@
 +/* This Source Code Form is subject to the terms of the Mozilla Public
 + * License, v. 2.0. If a copy of the MPL was not distributed with this
 + * file, you can obtain one at http://mozilla.org/MPL/2.0/. */
 +
-+/**
-+ * This module is assists with dealing with arbitrary browser elements
-+ * in an e10s only world.
-+ *
-+ * This is forked from comm/mail/modules/MailE10SUtils.jsm
-+ *
-+ * XXXTobin: Convert to sys.mjs
-+ */
-+
-+const EXPORTED_SYMBOLS = ["EzE10SUtils"];
++import { E10SUtils } from "resource://gre/modules/E10SUtils.sys.mjs";
 +
-+const { E10SUtils } = ChromeUtils.importESModule(
-+  "resource://gre/modules/E10SUtils.sys.mjs"
-+);
-+const { ExtensionParent } = ChromeUtils.importESModule(
-+  "resource://gre/modules/ExtensionParent.sys.mjs"
-+);
++import { ExtensionParent } from "resource://gre/modules/ExtensionParent.sys.mjs";
 +
-+var EzE10SUtils = {
++export var EzE10SUtils = {
 +  /**
 +   * Loads about:blank in `browser` without switching remoteness. about:blank
 +   * can load in a local browser or a remote browser, and `loadURI` will make
@@ -1284,7 +761,7 @@ new file mode 100644
 +  /**
 +   * Force `browser` to be a remote/local browser.
 +   *
-+   * @see E10SUtils.jsm for remote types.
++   * @see E10SUtils.sys.mjs for remote types.
 +   *
 +   * @param {nsIBrowser} browser - the browser to enforce the remoteness of.
 +   * @param {string} remoteType - the remoteness to enforce.
@@ -3035,27 +2512,6 @@ new file mode 100644
 +  updateSessionStoreFromTablistener(aBrowser, aBrowsingContext, aData) {},
 +  maybeExitCrashedState() {},
 +};
-diff --git a/suite/buoy/modules/moz.build b/suite/buoy/modules/moz.build
-new file mode 100644
---- /dev/null
-+++ b/suite/buoy/modules/moz.build
-@@ -0,0 +1,16 @@
-+# vim: set filetype=python:
-+# This Source Code Form is subject to the terms of the Mozilla Public
-+# License, v. 2.0. If a copy of the MPL was not distributed with this
-+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-+
-+EXTRA_JS_MODULES += [
-+    "BrowserWindowTracker.sys.mjs",
-+    "CustomizableUI.sys.mjs",
-+    "EzE10SUtils.jsm",
-+    "PanelMultiView.sys.mjs",
-+]
-+
-+EXTRA_JS_MODULES.sessionstore += [
-+    "SessionStore.sys.mjs",
-+]
-+
 diff --git a/suite/buoy/moz-l10n/browser/appExtensionFields.ftl b/suite/buoy/moz-l10n/browser/appExtensionFields.ftl
 new file mode 100644
 --- /dev/null
@@ -3097,72 +2553,75 @@ diff --git a/suite/buoy/moz.build b/suite/buoy/moz.build
 new file mode 100644
 --- /dev/null
 +++ b/suite/buoy/moz.build
-@@ -0,0 +1,8 @@
-+DIRS += [
-+    "devtools",
-+    "modules"
+@@ -0,0 +1,15 @@
++EXTRA_JS_MODULES += [
++    "modules/BrowserWindowTracker.sys.mjs",
++    "modules/CustomizableUI.sys.mjs",
++    "modules/EzE10SUtils.sys.mjs",
++    "modules/PanelMultiView.sys.mjs",
++]
++
++EXTRA_JS_MODULES.sessionstore += [
++    "modules/SessionStore.sys.mjs",
 +]
 +
++
 +JS_PREFERENCE_FILES += ["ZZ-buoy-prefs.js"]
 +
 +JAR_MANIFESTS += ["jar.mn"]
-diff --git a/suite/mailnews/components/moz.build b/suite/mailnews/components/moz.build
---- a/suite/mailnews/components/moz.build
-+++ b/suite/mailnews/components/moz.build
-@@ -1,11 +1,12 @@
- # vim: set filetype=python:
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- DIRS += [
-+    "../../../mail/extensions/openpgp",
-     "compose",
-     "prefs",
-     "addrbook",
-     "smime",
- ]
 diff --git a/suite/moz.build b/suite/moz.build
 --- a/suite/moz.build
 +++ b/suite/moz.build
-@@ -6,16 +6,17 @@
- with Files("**"):
-     BUG_COMPONENT = ("SeaMonkey", "General")
+@@ -24,16 +24,19 @@ DIRS += [
+ if CONFIG["MOZ_THUNDERBIRD_RUST"]:
+     DEFINES["MOZ_THUNDERBIRD_RUST"] = 1
+ 
+ if CONFIG["MOZ_OVERRIDE_GKRUST"]:
+     DIRS += [
+         "../rust",
+     ]
+ 
++if CONFIG['MOZ_SUITE_BUOY']:
++    DIRS += ['buoy']
++
+ if CONFIG['MOZ_IRC']:
+     DIRS += ['chatzilla']
  
- CONFIGURE_SUBST_FILES += ["installer/Makefile"]
+ if CONFIG["MAKENSISU"]:
+     DIRS += ["installer/windows"]
  
- DIRS += [
-     "base",
-     "browser",
-+    "buoy",
-     "components",
-     "editor",
-     "extensions",
-     "locales",
-     "mailnews",
-     "modules",
-     "themes/classic",
-     "themes/modern",
+ if CONFIG["MOZ_BUNDLED_FONTS"]:
+     DIRS += ["/browser/fonts"]
 diff --git a/suite/moz.configure b/suite/moz.configure
 --- a/suite/moz.configure
 +++ b/suite/moz.configure
-@@ -9,16 +9,19 @@ set_define("MOZ_SUITE", True)
+@@ -99,16 +99,29 @@ def moz_override_cargo_config(enable_rus
  
- imply_option("MOZ_APP_BASENAME", "SeaMonkey")
- imply_option("MOZ_APP_ID", "{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}")
- imply_option("MOZ_APP_VENDOR", "Mozilla")
- # Include the DevTools client, not just the server (which is the default)
- imply_option("MOZ_DEVTOOLS", "all")
- imply_option("NSS_EXTRA_SYMBOLS_FILE", "../comm/mailnews/nss-extra.symbols")
  
-+set_config("MOZ_SANDBOX_NULL_BLOCKLIST_OOP", True)
-+set_define("MOZ_SANDBOX_NULL_BLOCKLIST_OOP", True)
-+
- imply_option('--enable-default-browser-agent', False)
- 
- @depends(target_is_windows, target_has_linux_kernel)
- def bundled_fonts(is_windows, is_linux):
-     if is_windows or is_linux:
-         return True
+ set_config(
+     "MOZ_OVERRIDE_CARGO_CONFIG",
+     moz_override_cargo_config,
+     when="--enable-thunderbird-rust",
+ )
  
++# =========================================================
++# = Diagnostic "Buoy" Component
++# =========================================================
++option(
++    "--enable-buoy", default=False, help="Enable building of the SeaMonkey Diagnostic Component"
++)
++
++@depends_if("--enable-buoy")
++def buoy(arg):
++    return True
++
++set_config("MOZ_SUITE_BUOY", buoy)
++
+ # Building extensions is disabled by default.
  
+ # =========================================================
+ # = ChatZilla extension
+ # =========================================================
+ option(
+     "--enable-irc", default=False, help="Enable building of the ChatZilla IRC extension"
+ )

+ 26 - 0
mzla/comm/contrib/null-dll-blocklist-bustage.patch

@@ -0,0 +1,26 @@
+# HG changeset patch
+# Parent  b81ed902e5bd3d481b261dc97857c653d2731793
+
+diff --git a/suite/moz.configure b/suite/moz.configure
+--- a/suite/moz.configure
++++ b/suite/moz.configure
+@@ -9,16 +9,19 @@ set_define("MOZ_SUITE", True)
+ 
+ imply_option("MOZ_APP_BASENAME", "SeaMonkey")
+ imply_option("MOZ_APP_ID", "{92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}")
+ imply_option("MOZ_APP_VENDOR", "Mozilla")
+ # Include the DevTools client, not just the server (which is the default)
+ imply_option("MOZ_DEVTOOLS", "all")
+ imply_option("NSS_EXTRA_SYMBOLS_FILE", "../comm/mailnews/nss-extra.symbols")
+ 
++set_config("MOZ_SANDBOX_NULL_BLOCKLIST_OOP", True)
++set_define("MOZ_SANDBOX_NULL_BLOCKLIST_OOP", True)
++
+ imply_option('--enable-default-browser-agent', False)
+ 
+ @depends(target_is_windows, target_has_linux_kernel)
+ def bundled_fonts(is_windows, is_linux):
+     if is_windows or is_linux:
+         return True
+ 
+ 

+ 199 - 0
mzla/comm/contrib/remove-global-dtd-useage.patch

@@ -0,0 +1,199 @@
+# HG changeset patch
+# Parent  a674849f791666a677b8c6ce64c600f8a34b1cb6
+9999999 - Remove usage of global.dtd from about pages
+
+Suite's about:certerror is no longer used in central so it remains unchanged.
+
+diff --git a/suite/base/content/about.xhtml b/suite/base/content/about.xhtml
+--- a/suite/base/content/about.xhtml
++++ b/suite/base/content/about.xhtml
+@@ -1,32 +1,30 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+ 
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
+   "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd" [
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
+ %brandDTD;
+-<!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
+-%globalDTD;
+ <!ENTITY % suiteAboutDTD SYSTEM "chrome://communicator/locale/about.dtd" >
+ %suiteAboutDTD;
+ ]>
+ 
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+   <title>About:</title>
+-  <link rel="stylesheet" href="chrome://global/skin/about.css" type="text/css"/>
++  <link rel="stylesheet" href="chrome://communicator/skin/about.css" type="text/css"/>
+   <script src="chrome://communicator/content/about.js"/>
+ </head>
+ 
+-<body dir="&locale.dir;">
++<body dir="ltr">
+   <div id="aboutLogoContainer">
+     <a id="vendorURL" href="http://www.seamonkey-project.org/">
+       <img src="about:logo" alt="&brandShortName;"/>
+       <p id="version">&about.version; </p>
+     </a>
+   </div>
+ 
+   <ul id="aboutPageList">
+diff --git a/suite/base/content/aboutSeaMonkey.xhtml b/suite/base/content/aboutSeaMonkey.xhtml
+--- a/suite/base/content/aboutSeaMonkey.xhtml
++++ b/suite/base/content/aboutSeaMonkey.xhtml
+@@ -1,14 +1,12 @@
+ <!DOCTYPE html
+ [
+   <!ENTITY % seamonkeyDTD SYSTEM "chrome://communicator/locale/aboutSeaMonkey.dtd" >
+   %seamonkeyDTD;
+-  <!ENTITY % directionDTD SYSTEM "chrome://global/locale/global.dtd" >
+-  %directionDTD;
+ ]>
+ 
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ <html xmlns="http://www.w3.org/1999/xhtml">
+   <head>
+@@ -45,17 +43,17 @@ em {
+ 
+ a {
+   text-decoration: none;
+   color: white;
+ }
+ </style>
+ </head>
+ 
+-<body dir="&locale.dir;">
++<body dir="ltr">
+ 
+ <section>
+   <p id="moztext">
+   &seamonkey.quote.1.30;
+   </p>
+ 
+   <p id="from">
+   &seamonkey.from.1.30;
+diff --git a/suite/base/content/blockedSite.xhtml b/suite/base/content/blockedSite.xhtml
+--- a/suite/base/content/blockedSite.xhtml
++++ b/suite/base/content/blockedSite.xhtml
+@@ -1,15 +1,13 @@
+ <?xml version="1.0" encoding="UTF-8"?>
+ 
+ <!DOCTYPE html [
+   <!ENTITY % htmlDTD PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
+   %htmlDTD;
+-  <!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
+-  %globalDTD;
+   <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
+   %brandDTD;
+   <!ENTITY % blockedSiteDTD SYSTEM "chrome://communicator/locale/safeBrowsing.dtd">
+   %blockedSiteDTD;
+ ]>
+ 
+ <!-- This Source Code Form is subject to the terms of the Mozilla Public
+    - License, v. 2.0. If a copy of the MPL was not distributed with this
+@@ -18,17 +16,17 @@
+ <html xmlns="http://www.w3.org/1999/xhtml" class="blacklist">
+   <head>
+     <link rel="stylesheet" href="chrome://communicator/content/certError.css" type="text/css" media="all" />
+     <link rel="stylesheet" href="chrome://global/skin/netError.css" type="text/css" media="all" />
+     <link rel="stylesheet" href="chrome://communicator/skin/blockedSite.css" type="text/css" media="all" />
+     <link rel="icon" type="image/png" id="favicon" href="chrome://global/skin/icons/blacklist_favicon.png"/>
+   </head>
+ 
+-  <body dir="&locale.dir;">
++  <body dir="ltr">
+     <div id="errorPageContainer">
+ 
+       <!-- Error Title -->
+       <div id="errorTitle">
+         <h1 id="errorTitleText_phishing">&safeb.blocked.phishingPage.title2;</h1>
+         <h1 id="errorTitleText_malware">&safeb.blocked.malwarePage.title;</h1>
+         <h1 id="errorTitleText_unwanted">&safeb.blocked.unwantedPage.title;</h1>
+         <h1 id="errorTitleText_harmful">&safeb.blocked.harmfulPage.title;</h1>
+diff --git a/suite/components/feeds/content/subscribe.xhtml b/suite/components/feeds/content/subscribe.xhtml
+--- a/suite/components/feeds/content/subscribe.xhtml
++++ b/suite/components/feeds/content/subscribe.xhtml
+@@ -4,19 +4,16 @@
+    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+ 
+ 
+ <!DOCTYPE html [
+   <!ENTITY % htmlDTD
+     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+     "DTD/xhtml1-strict.dtd">
+   %htmlDTD;
+-  <!ENTITY % globalDTD
+-    SYSTEM "chrome://global/locale/global.dtd">
+-  %globalDTD;
+   <!ENTITY % feedDTD
+     SYSTEM "chrome://communicator/locale/feeds/subscribe.dtd">
+   %feedDTD;
+ ]>
+ 
+ <?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
+ 
+ <html id="feedHandler"
+@@ -29,17 +26,17 @@
+           media="all"/>
+     <link rel="stylesheet"
+           href="chrome://communicator/skin/feed-subscribe.css"
+           type="text/css"
+           media="all"/>
+   </head>
+   <body>
+     <div id="feedHeaderContainer">
+-      <div id="feedHeader" dir="&locale.dir;">
++      <div id="feedHeader" dir="ltr">
+         <div id="feedIntroText">
+           <p id="feedSubscriptionInfo1" />
+           <p id="feedSubscriptionInfo2" />
+         </div>
+         <div id="feedSubscribeLine" />
+       </div>
+     </div>
+ 
+diff --git a/suite/components/sessionstore/content/aboutSessionRestore.xhtml b/suite/components/sessionstore/content/aboutSessionRestore.xhtml
+--- a/suite/components/sessionstore/content/aboutSessionRestore.xhtml
++++ b/suite/components/sessionstore/content/aboutSessionRestore.xhtml
+@@ -6,33 +6,31 @@
+ -->
+ <!DOCTYPE html [
+ <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
+   %brandDTD;
+   <!ENTITY % htmlDTD PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
+   %htmlDTD;
+   <!ENTITY % netErrorDTD SYSTEM "chrome://global/locale/netError.dtd">
+   %netErrorDTD;
+-  <!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
+-  %globalDTD;
+   <!ENTITY % restorepageDTD SYSTEM "chrome://communicator/locale/aboutSessionRestore.dtd">
+   %restorepageDTD;
+ ]>
+ 
+ <html xmlns="http://www.w3.org/1999/xhtml">
+   <head>
+     <title>&restorepage.tabtitle;</title>
+     <link rel="stylesheet" href="chrome://global/skin/netError.css" type="text/css" media="all"/>
+     <link rel="stylesheet" href="chrome://communicator/skin/aboutSessionRestore.css" type="text/css" media="all"/>
+     <link rel="icon" type="image/png" href="chrome://global/skin/icons/question-16.png"/>
+ 
+     <script src="chrome://communicator/content/aboutSessionRestore.js"/>
+   </head>
+ 
+-  <body dir="&locale.dir;">
++  <body dir="ltr">
+ 
+     <!-- PAGE CONTAINER (for styling purposes only) -->
+     <div id="errorPageContainer">
+ 
+       <!-- Error Title -->
+       <div id="errorTitle">
+         <h1 id="errorTitleText">&restorepage.pagetitle;</h1>
+       </div>

+ 0 - 0
mzla/comm/exists


+ 174 - 0
mzla/comm/revised/WIP-1783623-port1524687-suite.patch

@@ -0,0 +1,174 @@
+# HG changeset patch
+# User Bill Gianopoulos <wgianopoulos@gmail.com>
+# Date 1659988365 0
+# Parent  04388517dee01037fe43756e98dff2776ffbb87b
+Bug 1783623 - Convert suite binary components registration to components.conf.
+Port Bug 1524687 Part 11  to suite.
+
+(Altered to exclude nsAbout changes on 2024-17-30)
+
+diff --git a/suite/components/build/components.conf b/suite/components/build/components.conf
+new file mode 100644
+--- /dev/null
++++ b/suite/components/build/components.conf
+@@ -0,0 +1,44 @@
++# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
++# vim: set filetype=python:
++# This Source Code Form is subject to the terms of the Mozilla Public
++# License, v. 2.0. If a copy of the MPL was not distributed with this
++# file, You can obtain one at http://mozilla.org/MPL/2.0/.
++
++Classes = []
++
++TOOLKIT = buildconfig.substs['MOZ_WIDGET_TOOLKIT']
++
++shell_service_contracts = [
++    '@mozilla.org/suite/shell-service;1',
++    '@mozilla.org/toolkit/shell-service;1',
++]
++
++if TOOLKIT == 'gtk':
++    Classes += [
++        {
++            'cid': '{39b688ec-e308-49e5-be6b-28dc7fcd6154}',
++            'contract_ids': shell_service_contracts,
++            'type': 'nsGNOMEShellService',
++            'headers': ['/comm/suite/components/shell/nsGNOMEShellService.h'],
++            'init_method': 'Init',
++        },
++    ]
++
++if buildconfig.substs['OS_ARCH'] == 'Darwin':
++    Classes += [
++        {
++            'cid': '{39b688ec-e308-49e5-be6b-28dc7fcd6154}',
++            'contract_ids': shell_service_contracts,
++            'type': 'nsMacShellService',
++            'headers': ['/comm/suite/components/shell/nsMacShellService.h'],
++        },
++    ]
++elif buildconfig.substs['OS_ARCH'] == 'WINNT':
++    Classes += [
++        {
++            'cid': '{39b688ec-e308-49e5-be6b-28dc7fcd6154}',
++            'contract_ids': shell_service_contracts,
++            'type': 'nsWindowsShellService',
++            'headers': ['/comm/suite/components/shell/nsWindowsShellService.h'],
++        },
++    ]
+diff --git a/suite/components/build/moz.build b/suite/components/build/moz.build
+--- a/suite/components/build/moz.build
++++ b/suite/components/build/moz.build
+@@ -3,18 +3,18 @@
+ # This Source Code Form is subject to the terms of the Mozilla Public
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ 
+ EXPORTS += [
+     "nsSuiteCID.h",
+ ]
+ 
+-SOURCES += [
+-    "nsSuiteModule.cpp",
++XPCOM_MANIFESTS += [
++    "components.conf",
+ ]
+ 
+ Library("suite")
+ FINAL_LIBRARY = "xul"
+ 
+ LOCAL_INCLUDES += [
+     "../feeds",
+     "../migration/src",
+diff --git a/suite/components/build/nsSuiteModule.cpp b/suite/components/build/nsSuiteModule.cpp
+deleted file mode 100644
+--- a/suite/components/build/nsSuiteModule.cpp
++++ /dev/null
+@@ -1,87 +0,0 @@
+-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+-/* This Source Code Form is subject to the terms of the Mozilla Public
+- * License, v. 2.0. If a copy of the MPL was not distributed with this
+- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+-
+-#include "mozilla/ModuleUtils.h"
+-#include "nsSuiteDirectoryProvider.h"
+-#include "nsThunderbirdProfileMigrator.h"
+-#include "nsSuiteMigrationCID.h"
+-#include "nsNetCID.h"
+-#include "nsFeedSniffer.h"
+-
+-#if defined(XP_WIN)
+-#include "nsWindowsShellService.h"
+-#elif defined(XP_MACOSX)
+-#include "nsMacShellService.h"
+-#elif defined(MOZ_WIDGET_GTK)
+-#include "nsGNOMEShellService.h"
+-#endif
+-
+-using namespace mozilla;
+-/////////////////////////////////////////////////////////////////////////////
+-
+-#if defined(XP_WIN)
+-NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsWindowsShellService, Init)
+-#elif defined(XP_MACOSX)
+-NS_GENERIC_FACTORY_CONSTRUCTOR(nsMacShellService)
+-#elif defined(MOZ_WIDGET_GTK)
+-NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGNOMEShellService, Init)
+-#endif
+-NS_GENERIC_FACTORY_CONSTRUCTOR(nsSuiteDirectoryProvider)
+-NS_GENERIC_FACTORY_CONSTRUCTOR(nsThunderbirdProfileMigrator)
+-NS_GENERIC_FACTORY_CONSTRUCTOR(nsFeedSniffer)
+-
+-#if defined(XP_WIN)
+-NS_DEFINE_NAMED_CID(NS_SHELLSERVICE_CID);
+-#elif defined(XP_MACOSX)
+-NS_DEFINE_NAMED_CID(NS_SHELLSERVICE_CID);
+-#elif defined(MOZ_WIDGET_GTK)
+-NS_DEFINE_NAMED_CID(NS_SHELLSERVICE_CID);
+-#endif
+-NS_DEFINE_NAMED_CID(NS_SUITEDIRECTORYPROVIDER_CID);
+-NS_DEFINE_NAMED_CID(NS_THUNDERBIRDPROFILEMIGRATOR_CID);
+-NS_DEFINE_NAMED_CID(NS_FEEDSNIFFER_CID);
+-
+-/////////////////////////////////////////////////////////////////////////////
+-
+-static const mozilla::Module::CIDEntry kSuiteCIDs[] = {
+-#if defined(XP_WIN)
+-  { &kNS_SHELLSERVICE_CID, false, NULL, nsWindowsShellServiceConstructor },
+-#elif defined(XP_MACOSX)
+-  { &kNS_SHELLSERVICE_CID, false, NULL, nsMacShellServiceConstructor },
+-#elif defined(MOZ_WIDGET_GTK)
+-  { &kNS_SHELLSERVICE_CID, false, NULL, nsGNOMEShellServiceConstructor },
+-#endif
+-  { &kNS_SUITEDIRECTORYPROVIDER_CID, false, NULL, nsSuiteDirectoryProviderConstructor },
+-  { &kNS_THUNDERBIRDPROFILEMIGRATOR_CID, false, NULL, nsThunderbirdProfileMigratorConstructor },
+-  { &kNS_FEEDSNIFFER_CID, false, NULL, nsFeedSnifferConstructor },
+-  { NULL }
+-};
+-
+-static const mozilla::Module::ContractIDEntry kSuiteContracts[] = {
+-#if defined(XP_WIN)
+-  { NS_SHELLSERVICE_CONTRACTID, &kNS_SHELLSERVICE_CID },
+-#elif defined(XP_MACOSX)
+-  { NS_SHELLSERVICE_CONTRACTID, &kNS_SHELLSERVICE_CID },
+-#elif defined(MOZ_WIDGET_GTK)
+-  { NS_SHELLSERVICE_CONTRACTID, &kNS_SHELLSERVICE_CID },
+-#endif
+-  { NS_SUITEDIRECTORYPROVIDER_CONTRACTID, &kNS_SUITEDIRECTORYPROVIDER_CID },
+-  { NS_SUITEPROFILEMIGRATOR_CONTRACTID_PREFIX "thunderbird", &kNS_THUNDERBIRDPROFILEMIGRATOR_CID },
+-  { NS_FEEDSNIFFER_CONTRACTID, &kNS_FEEDSNIFFER_CID },
+-  { NULL }
+-};
+-
+-static const mozilla::Module::CategoryEntry kSuiteCategories[] = {
+-  { XPCOM_DIRECTORY_PROVIDER_CATEGORY, "suite-directory-provider", NS_SUITEDIRECTORYPROVIDER_CONTRACTID },
+-  { NS_CONTENT_SNIFFER_CATEGORY, "Feed Sniffer", NS_FEEDSNIFFER_CONTRACTID },
+-  { NULL }
+-};
+-
+-extern const mozilla::Module kSuiteModule = {
+-  mozilla::Module::kVersion,
+-  kSuiteCIDs,
+-  kSuiteContracts,
+-  kSuiteCategories
+-};

+ 19 - 0
mzla/comm/revised/WIP-9999999-port1770994-suite.patch

@@ -0,0 +1,19 @@
+# HG changeset patch
+# User Bill Gianopoulos <wgianopoulos@gmail.com>
+# Date 1708776876 0
+9999999 - Port bug 1770944 to fix suite bustage.
+Bug 1770944 - Remove dom/browser-element/BrowserElementParent.jsm.
+
+diff --git a/suite/installer/package-manifest.in b/suite/installer/package-manifest.in
+--- a/suite/installer/package-manifest.in
++++ b/suite/installer/package-manifest.in
+@@ -495,9 +495,8 @@ man/*
+ 
+ [calendar]
+ @RESPATH@/chrome/calendar@JAREXT@
+ @RESPATH@/chrome/calendar.manifest
+ 
+ @RESPATH@/@PREF_DIR@/calendar.js
+ 
+ # Files added to components directory via `FINAL_TARGET_FILES.components`.
+-@RESPATH@/components/calItemBase.js

+ 13 - 0
mzla/comm/series

@@ -0,0 +1,13 @@
+./contrib/null-dll-blocklist-bustage.patch
+./contrib/devtools-with-chrome-clh.patch
+./contrib/add-brand-ftl.patch
+./contrib/remove-global-dtd-useage.patch
+UUUUUUU-MQSTOP-REVISED-SWAPOUTS.patch
+./revised/WIP-1783623-port1524687-suite.patch
+./revised/WIP-9999999-port1770994-suite.patch
+XXXXXXX-MQSTOP-IN-PROGRESS.patch
+./contrib/about-redirector-jscomp2esmodule.patch
+./contrib/diagnostic-buoy-component.patch
+YYYYYYY-MQSTOP-BINOC-MODIFICATIONS.patch
+./binoc/almost-bypass-package-manifest.patch
+ZZZZZZZ-MQSTOP-BINOC-COMMUNIGATOR.patch

+ 0 - 0
mzla/gre/TOP-UNFINISHED-unrestricted-comm-build.patch → mzla/gre/contrib/TOP-UNFINISHED-unrestricted-comm-build.patch


+ 0 - 0
mzla/gre/exists


+ 1 - 0
mzla/gre/series

@@ -0,0 +1 @@
+./contrib/TOP-UNFINISHED-unrestricted-comm-build.patch