Browse Source

Split central patches to another repo and do other stuff

nsITobin 2 months ago
parent
commit
79e97ee1bb
47 changed files with 0 additions and 14753 deletions
  1. 0 98
      mzla/comm/9999999-port1860654-suite-bustage.patch
  2. 0 63
      mzla/comm/9999999-port1898060-1898177-suite-bustage.patch
  3. 0 44
      mzla/comm/9999999-port1900200-suite-bustage.patch
  4. 0 40
      mzla/comm/9999999-port1903050-suite-bustage.patch
  5. 0 524
      mzla/comm/9999999-port1908725-suite-bustage.patch
  6. 0 54
      mzla/comm/9999999-suite-bustage.patch
  7. 0 22
      mzla/comm/PPPPPPP-allow-COMM_REPO-and-COMM-CHANGESET-override.patch
  8. 0 554
      mzla/comm/TOP-1611647-1-rename-xul-suite.patch
  9. 0 6227
      mzla/comm/TOP-1611647-2-fix-xul-references-suite.patch
  10. 0 2028
      mzla/comm/TOP-1614671-port1456035-4-and-5-61a1-cc.patch
  11. 0 28
      mzla/comm/TOP-1642188-remove-nsDOMIEvent-cc.patch
  12. 0 171
      mzla/comm/TOP-9999999-port1514936-suite-102a1.patch
  13. 0 94
      mzla/comm/TOP-9999999-port1646560-suite-91a1.patch
  14. 0 31
      mzla/comm/TOP-9999999-port1769442-suite-102a1.patch
  15. 0 58
      mzla/comm/WIP-1650630-2-port-1603712-suite.patch
  16. 0 30
      mzla/comm/WIP-9999999-port1712633-suite-90a1.patch
  17. 0 477
      mzla/comm/binoc/almost-bypass-package-manifest.patch
  18. 0 332
      mzla/comm/contrib/about-redirector-jscomp2esmodule.patch
  19. 0 44
      mzla/comm/contrib/add-brand-ftl.patch
  20. 0 670
      mzla/comm/contrib/devtools-with-chrome-clh.patch
  21. 0 2624
      mzla/comm/contrib/diagnostic-buoy-component.patch
  22. 0 28
      mzla/comm/contrib/null-dll-blocklist-bustage.patch
  23. 0 200
      mzla/comm/contrib/remove-global-dtd-useage.patch
  24. 0 172
      mzla/comm/revised/WIP-1783623-port1524687-suite.patch
  25. 0 19
      mzla/comm/revised/WIP-9999999-port1770994-suite.patch
  26. 0 28
      mzla/comm/series
  27. 0 92
      mzla/gre/contrib/TOP-UNFINISHED-unrestricted-comm-build.patch
  28. 0 1
      mzla/gre/series
  29. 0 0
      queue/comm/patches/binoc/aviary-style-tabs.patch
  30. 0 0
      queue/comm/patches/binoc/branding.patch
  31. 0 0
      queue/comm/patches/binoc/kempelton-altnavi-icons.patch
  32. 0 0
      queue/comm/patches/binoc/modern-skin-personal-toolbar-home-icon.patch
  33. 0 0
      queue/comm/patches/binoc/modern-skin-remove-navi-groove.patch
  34. 0 0
      queue/comm/patches/contrib/1912354-domi-inspect-by-keycombo.patch
  35. 0 0
      queue/comm/patches/contrib/1913787-places-go-menu.patch
  36. 0 0
      queue/comm/patches/contrib/9999999-disable-mailnews.patch
  37. 0 0
      queue/comm/patches/contrib/9999999-locales-jar-manifest-ifdef-extensions-hack.patch
  38. 0 0
      queue/comm/patches/contrib/9999999-locales-makefile-calendar-ifdef.patch
  39. 0 0
      queue/comm/patches/contrib/9999999-package-manifest-wildcard-chrome-icons.patch
  40. 0 0
      queue/comm/patches/contrib/9999999-security-ux.patch
  41. 0 0
      queue/comm/patches/series
  42. 0 0
      queue/mozilla/patches/binoc/win10-grey-toolbox.patch
  43. 0 0
      queue/mozilla/patches/binoc/win10-toolbox-border-bottom.patch
  44. 0 0
      queue/mozilla/patches/binoc/win10-treecol-border-bottom.patch
  45. 0 0
      queue/mozilla/patches/binoc/win10-white-menubar.patch
  46. 0 0
      queue/mozilla/patches/binoc/win8x-hc-button-fix.patch
  47. 0 0
      queue/mozilla/patches/series

+ 0 - 98
mzla/comm/9999999-port1860654-suite-bustage.patch

@@ -1,98 +0,0 @@
-# HG changeset patch
-# User Bill Gianopoulos <wgianopoulos@gmail.com>
-# Date 1722127270 0
-Bug 9999999 - Port bug 1860654 to suite.
-Bug 1860654 - Support Rust for Thunderbird development
-
-diff --git a/suite/Makefile.in b/suite/Makefile.in
---- a/suite/Makefile.in
-+++ b/suite/Makefile.in
-@@ -18,8 +18,18 @@ endif
- # it's not right for anything else. So we correct platform.ini here.
- 
- MOZ_REV=$(shell hg -R "$(topsrcdir)" parent --template="{node}" 2>/dev/null)
- 
- libs:: $(DIST)/bin/platform.ini
- 	sed -e "s/^\(SourceStamp=\).*/\1$(MOZ_REV)/" $(DIST)/bin/platform.ini \
- 		> $(DIST)/bin/platform.ini~
- 	mv -f $(DIST)/bin/platform.ini~ $(DIST)/bin/platform.ini
-+
-+
-+vendored-rust-check:
-+ifdef MOZ_THUNDERBIRD_RUST
-+	@echo "Checking vendored Rust libs"
-+	$(PYTHON3) $(commtopsrcdir)/python/rocbuild/rocbuild/rust.py verify_vendored_dependencies
-+endif
-+
-+export:: vendored-rust-check
-+
-diff --git a/suite/moz.build b/suite/moz.build
---- a/suite/moz.build
-+++ b/suite/moz.build
-@@ -16,16 +16,24 @@ DIRS += [
-     "extensions",
-     "locales",
-     "mailnews",
-     "modules",
-     "themes/classic",
-     "themes/modern",
- ]
- 
-+if CONFIG["MOZ_THUNDERBIRD_RUST"]:
-+    DEFINES["MOZ_THUNDERBIRD_RUST"] = 1
-+
-+if CONFIG["MOZ_OVERRIDE_GKRUST"]:
-+    DIRS += [
-+        "../rust",
-+    ]
-+
- if CONFIG['MOZ_IRC']:
-     DIRS += ['chatzilla']
- 
- if CONFIG["MAKENSISU"]:
-     DIRS += ["installer/windows"]
- 
- 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
-@@ -74,16 +74,38 @@ set_defconf("SEAMONKEY_VERSION", seamonk
- set_defconf("SEAMONKEY_VERSION_DISPLAY", seamonkey_version.version_display)
- # Currently not set in suite comm-central
- # set_defconf("MOZ_PKG_VERSION", seamonkey_version.version_package)
- 
- 
- imply_option("MOZ_PLACES", True)
- imply_option("MOZ_SERVICES_SYNC", False)
- 
-+# Thunderbird Rust code is now the default
-+option("--disable-thunderbird-rust", help="Enable Rust support within Thunderbird")
-+
-+set_config("MOZ_THUNDERBIRD_RUST", True, when="--enable-thunderbird-rust")
-+set_define("MOZ_THUNDERBIRD_RUST", True, when="--enable-thunderbird-rust")
-+set_config("MOZ_OVERRIDE_GKRUST", True, when="--enable-thunderbird-rust")
-+
-+
-+@depends("--enable-thunderbird-rust")
-+def moz_override_cargo_config(enable_rust):
-+    rust_override = "comm/rust/.cargo/config.toml.in"
-+    if enable_rust:
-+        log.info(f"Using {rust_override} for Rust code.")
-+        return rust_override
-+
-+
-+set_config(
-+    "MOZ_OVERRIDE_CARGO_CONFIG",
-+    moz_override_cargo_config,
-+    when="--enable-thunderbird-rust",
-+)
-+
- # Building extensions is disabled by default.
- 
- # =========================================================
- # = ChatZilla extension
- # =========================================================
- option(
-     "--enable-irc", default=False, help="Enable building of the ChatZilla IRC extension"
- )

+ 0 - 63
mzla/comm/9999999-port1898060-1898177-suite-bustage.patch

@@ -1,63 +0,0 @@
-# HG changeset patch
-# User Bill Gianopoulos <wgianopoulos@gmail.com>
-# Date 1718443645 0
-Bug 9999999 - Port bugs 1898060 and 1898177 to suite.
-Bug 1898060 - Move MOZ_APP_ID from old-configure to moz.configure.
-Bug 1898177 - Move MOZ_APP_VENDOR from confvars.sh to moz.configure.
-
-diff --git a/suite/confvars.sh b/suite/confvars.sh
---- a/suite/confvars.sh
-+++ b/suite/confvars.sh
-@@ -1,14 +1,13 @@
- #! /bin/sh
- # 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/.
- 
--MOZ_APP_VENDOR=Mozilla
- MOZ_APP_NAME=seamonkey
- MOZ_APP_DISPLAYNAME=SeaMonkey
- 
- MOZ_APP_VERSION=$SEAMONKEY_VERSION
- MOZ_APP_VERSION_DISPLAY=$SEAMONKEY_VERSION_DISPLAY
- # MOZ_PKG_VERSION=$SEAMONKEY_VERSION_PACKAGE
- 
- MOZ_BRANDING_DIRECTORY=comm/suite/branding/seamonkey
-@@ -16,15 +15,14 @@ MOZ_OFFICIAL_BRANDING_DIRECTORY=comm/sui
- MOZ_UPDATER=1
- # This should usually be the same as the value MAR_CHANNEL_ID.
- # If more than one ID is needed, then you should use a comma separated list
- # of values.
- ACCEPTED_MAR_CHANNEL_IDS=seamonkey-comm-central
- # The MAR_CHANNEL_ID must not contain the following 3 characters: ",\t "
- MAR_CHANNEL_ID=seamonkey-comm-central
- 
--MOZ_APP_ID={92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a}
- MOZ_PROFILE_MIGRATOR=1
- 
- # Include the DevTools client, not just the server (which is the default)
- MOZ_DEVTOOLS=all
- 
- NSS_EXTRA_SYMBOLS_FILE=../comm/mailnews/nss-extra.symbols
-diff --git a/suite/moz.configure b/suite/moz.configure
---- a/suite/moz.configure
-+++ b/suite/moz.configure
-@@ -3,16 +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/.
- 
- set_config("MOZ_SUITE", True)
- 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")
- 
- 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
- 

+ 0 - 44
mzla/comm/9999999-port1900200-suite-bustage.patch

@@ -1,44 +0,0 @@
-# HG changeset patch
-# User Bill Gianopoulos <wgianopoulos@gmail.com>
-# Date 1718654652 0
-Bug 9999999 - Port bug 1900200 to suite.
-Bug 1900200 - Move MOZ_DEVTOOLS from confvars.sh to moz.configure
-
-diff --git a/suite/confvars.sh b/suite/confvars.sh
---- a/suite/confvars.sh
-+++ b/suite/confvars.sh
-@@ -17,12 +17,9 @@ MOZ_UPDATER=1
- # If more than one ID is needed, then you should use a comma separated list
- # of values.
- ACCEPTED_MAR_CHANNEL_IDS=seamonkey-comm-central
- # The MAR_CHANNEL_ID must not contain the following 3 characters: ",\t "
- MAR_CHANNEL_ID=seamonkey-comm-central
- 
- MOZ_PROFILE_MIGRATOR=1
- 
--# Include the DevTools client, not just the server (which is the default)
--MOZ_DEVTOOLS=all
--
- NSS_EXTRA_SYMBOLS_FILE=../comm/mailnews/nss-extra.symbols
-diff --git a/suite/moz.configure b/suite/moz.configure
---- a/suite/moz.configure
-+++ b/suite/moz.configure
-@@ -5,16 +5,18 @@
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- set_config("MOZ_SUITE", True)
- 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('--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
- 

+ 0 - 40
mzla/comm/9999999-port1903050-suite-bustage.patch

@@ -1,40 +0,0 @@
-# HG changeset patch
-# User Bill Gianopoulos <wgianopoulos@gmail.com>
-# Date 1718883682 0
-BUg 9999999- Port bug 1903050 to suite.
-Bug 1903050 - Move NSS_EXTRA_SYMBOLS_FILE from old-configure to moz.configure
-
-diff --git a/suite/confvars.sh b/suite/confvars.sh
---- a/suite/confvars.sh
-+++ b/suite/confvars.sh
-@@ -17,9 +17,8 @@ MOZ_UPDATER=1
- # If more than one ID is needed, then you should use a comma separated list
- # of values.
- ACCEPTED_MAR_CHANNEL_IDS=seamonkey-comm-central
- # The MAR_CHANNEL_ID must not contain the following 3 characters: ",\t "
- MAR_CHANNEL_ID=seamonkey-comm-central
- 
- MOZ_PROFILE_MIGRATOR=1
- 
--NSS_EXTRA_SYMBOLS_FILE=../comm/mailnews/nss-extra.symbols
-diff --git a/suite/moz.configure b/suite/moz.configure
---- a/suite/moz.configure
-+++ b/suite/moz.configure
-@@ -7,16 +7,17 @@
- set_config("MOZ_SUITE", True)
- 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")
- 
- 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
- 

+ 0 - 524
mzla/comm/9999999-port1908725-suite-bustage.patch

@@ -1,524 +0,0 @@
-# HG changeset patch
-# User Bill Gianopoulos <wgianopoulos@gmail.com>
-# Date 1723715420 0
-# Parent  b6f46c96fc80c2bcba2a0660f14978520b98b5db
-Bug 9999999 - Port bug 1908725 to suite.
-Bug 1908725 - Provide a never-reused PID alternative for all Gecko processes.
-
-diff --git a/suite/app/moz.build b/suite/app/moz.build
---- a/suite/app/moz.build
-+++ b/suite/app/moz.build
-@@ -13,17 +13,16 @@ if CONFIG['MOZ_NO_PIE_COMPAT']:
-     DIRS += ['no-pie']
- else:
-     GeckoProgram(CONFIG['MOZ_APP_NAME'])
- 
- SOURCES += ["nsSuiteApp.cpp"]
- 
- LOCAL_INCLUDES += [
-     "!/build",
--    "/ipc/contentproc/",
-     "/toolkit/xre",
-     "/xpcom/base",
-     "/xpcom/build",
- ]
- 
- if CONFIG["OS_ARCH"] == "WINNT":
-     RCINCLUDE = "splash.rc"
-     DEFINES["MOZ_SUITE"] = True
-diff --git a/suite/app/nsSuiteApp.cpp b/suite/app/nsSuiteApp.cpp
---- a/suite/app/nsSuiteApp.cpp
-+++ b/suite/app/nsSuiteApp.cpp
-@@ -1,212 +1,193 @@
- /* -*- Mode: C++; 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/. */
- 
- #include "nsXULAppAPI.h"
--#include "nsXPCOM.h"
--#include "nsISupports.h"
-+#include "mozilla/CmdLineAndEnvUtils.h"
- #include "mozilla/Logging.h"
--#include "mozilla/XREAppData.h"
--#include "mozilla/ArrayUtils.h"
--#include "mozilla/Assertions.h"
--#include "mozilla/Vector.h"
- #include "mozilla/TimeStamp.h"
- #include "XREChildData.h"
- #include "XREShellData.h"
-+
- #include "application.ini.h"
- #include "mozilla/Bootstrap.h"
-+#include "mozilla/ProcessType.h"
-+#include "mozilla/RuntimeExceptionModule.h"
-+#include "mozilla/ScopeExit.h"
- #if defined(XP_WIN)
--#include <windows.h>
--#include <stdlib.h>
-+#  include <windows.h>
-+#  include <stdlib.h>
- #elif defined(XP_UNIX)
--#include <sys/resource.h>
--#include <unistd.h>
-+#  include <sys/resource.h>
-+#  include <unistd.h>
- #endif
- 
- #include <stdio.h>
- #include <stdarg.h>
- #include <time.h>
- 
--#include "nsCOMPtr.h"
--#include "nsIFile.h"
-+#ifdef XP_WIN
-+#  include "mozilla/mscom/ProcessRuntime.h"
-+#  include "mozilla/WindowsDllBlocklist.h"
-+#  include "mozilla/WindowsDpiInitialization.h"
- 
--#ifdef XP_WIN
--#include "mozilla/WindowsDllBlocklist.h"
--#define XRE_WANT_ENVIRON
--#define strcasecmp _stricmp
--#ifdef MOZ_SANDBOX
--#include "mozilla/sandboxing/SandboxInitialization.h"
--#endif
-+#  define XRE_WANT_ENVIRON
-+#  include "nsWindowsWMain.cpp"
-+
-+#  define strcasecmp _stricmp
-+#  ifdef MOZ_SANDBOX
-+#    include "mozilla/sandboxing/SandboxInitialization.h"
-+#    include "mozilla/sandboxing/sandboxLogging.h"
-+#  endif
- #endif
- #include "BinaryPath.h"
- 
--#include "nsXPCOMPrivate.h" // for MAXPATHLEN and XPCOM_DLL
-+#include "nsXPCOMPrivate.h"  // for MAXPATHLEN and XPCOM_DLL
- 
- #include "mozilla/Sprintf.h"
- #include "mozilla/StartupTimeline.h"
- 
- #ifdef LIBFUZZER
--#include "FuzzerDefs.h"
-+#  include "FuzzerDefs.h"
- #endif
- 
- #ifdef MOZ_LINUX_32_SSE2_STARTUP_ERROR
--#include <cpuid.h>
--#include "mozilla/Unused.h"
-+#  include <cpuid.h>
-+#  include "mozilla/Unused.h"
- 
--static bool
--IsSSE2Available()
--{
-+static bool IsSSE2Available() {
-   // The rest of the app has been compiled to assume that SSE2 is present
-   // unconditionally, so we can't use the normal copy of SSE.cpp here.
-   // Since SSE.cpp caches the results and we need them only transiently,
-   // instead of #including SSE.cpp here, let's just inline the specific check
-   // that's needed.
-   unsigned int level = 1u;
-   unsigned int eax, ebx, ecx, edx;
--  unsigned int bits = (1u<<26);
-+  unsigned int bits = (1u << 26);
-   unsigned int max = __get_cpuid_max(0, nullptr);
-   if (level > max) {
-     return false;
-   }
-   __cpuid_count(level, 0, eax, ebx, ecx, edx);
-   return (edx & bits) == bits;
- }
- 
- static const char sSSE2Message[] =
--    "This SeaMonkey version requires a processor with the SSE2 instruction "
-+    "This browser version requires a processor with the SSE2 instruction "
-     "set extension.\nYou may be able to obtain a version that does not "
-     "require SSE2 from your Linux distribution.\n";
- 
--__attribute__((constructor))
--static void
--SSE2Check()
--{
-+__attribute__((constructor)) static void SSE2Check() {
-   if (IsSSE2Available()) {
-     return;
-   }
-   // Using write() in order to avoid jemalloc-based buffering. Ignoring return
-   // values, since there isn't much we could do on failure and there is no
-   // point in trying to recover from errors.
--  MOZ_UNUSED(write(STDERR_FILENO,
--                   sSSE2Message,
--                   MOZ_ARRAY_LENGTH(sSSE2Message) - 1));
-+  MOZ_UNUSED(
-+      write(STDERR_FILENO, sSSE2Message, MOZ_ARRAY_LENGTH(sSSE2Message) - 1));
-   // _exit() instead of exit() to avoid running the usual "at exit" code.
-   _exit(255);
- }
- #endif
- 
- #if !defined(MOZ_WIDGET_COCOA) && !defined(MOZ_WIDGET_ANDROID)
--#define MOZ_BROWSER_CAN_BE_CONTENTPROC
--#include "plugin-container.cpp"
-+#  define MOZ_BROWSER_CAN_BE_CONTENTPROC
- #endif
- 
- using namespace mozilla;
- 
- #ifdef XP_MACOSX
--#define kOSXResourcesFolder "Resources"
-+#  define kOSXResourcesFolder "Resources"
- #endif
- #define kDesktopFolder ""
- 
--static MOZ_FORMAT_PRINTF(1, 2) void Output(const char *fmt, ... )
--{
-+static MOZ_FORMAT_PRINTF(1, 2) void Output(const char* fmt, ...) {
-   va_list ap;
-   va_start(ap, fmt);
- 
- #ifndef XP_WIN
-   vfprintf(stderr, fmt, ap);
- #else
-   char msg[2048];
-   vsnprintf_s(msg, _countof(msg), _TRUNCATE, fmt, ap);
- 
-   wchar_t wide_msg[2048];
--  MultiByteToWideChar(CP_UTF8,
--                      0,
--                      msg,
--                      -1,
--                      wide_msg,
--                      _countof(wide_msg));
--#if MOZ_WINCONSOLE
-+  MultiByteToWideChar(CP_UTF8, 0, msg, -1, wide_msg, _countof(wide_msg));
-+#  if MOZ_WINCONSOLE
-   fwprintf_s(stderr, wide_msg);
--#else
-+#  else
-   // Linking user32 at load-time interferes with the DLL blocklist (bug 932100).
-   // This is a rare codepath, so we can load user32 at run-time instead.
-   HMODULE user32 = LoadLibraryW(L"user32.dll");
-   if (user32) {
-     decltype(MessageBoxW)* messageBoxW =
--      (decltype(MessageBoxW)*) GetProcAddress(user32, "MessageBoxW");
-+        (decltype(MessageBoxW)*)GetProcAddress(user32, "MessageBoxW");
-     if (messageBoxW) {
--      messageBoxW(nullptr, wide_msg, L"XULRunner", MB_OK
--                                                 | MB_ICONERROR
--                                                 | MB_SETFOREGROUND);
-+      messageBoxW(nullptr, wide_msg, L"SeaMonkey",
-+                  MB_OK | MB_ICONERROR | MB_SETFOREGROUND);
-     }
-     FreeLibrary(user32);
-   }
--#endif
-+#  endif
- #endif
- 
-   va_end(ap);
- }
- 
- /**
-  * Return true if |arg| matches the given argument name.
-  */
--static bool IsArg(const char* arg, const char* s)
--{
--  if (*arg == '-')
--  {
--    if (*++arg == '-')
--      ++arg;
-+static bool IsArg(const char* arg, const char* s) {
-+  if (*arg == '-') {
-+    if (*++arg == '-') ++arg;
-     return !strcasecmp(arg, s);
-   }
- 
- #if defined(XP_WIN)
--  if (*arg == '/')
--    return !strcasecmp(++arg, s);
-+  if (*arg == '/') return !strcasecmp(++arg, s);
- #endif
- 
-   return false;
- }
- 
- Bootstrap::UniquePtr gBootstrap;
- 
--static int do_main(int argc, char* argv[], char* envp[])
--{
-+static int do_main(int argc, char* argv[], char* envp[]) {
-   // Allow seamonkey.exe to launch XULRunner apps via -app <application.ini>
-   // Note that -app must be the *first* argument.
--  const char *appDataFile = getenv("XUL_APP_FILE");
--  if ((!appDataFile || !*appDataFile) &&
--      (argc > 1 && IsArg(argv[1], "app"))) {
-+  const char* appDataFile = getenv("XUL_APP_FILE");
-+  if ((!appDataFile || !*appDataFile) && (argc > 1 && IsArg(argv[1], "app"))) {
-     if (argc == 2) {
-       Output("Incorrect number of arguments passed to -app");
-       return 255;
-     }
-     appDataFile = argv[2];
- 
-     char appEnv[MAXPATHLEN];
-     SprintfLiteral(appEnv, "XUL_APP_FILE=%s", argv[2]);
--    // Bug 1271574 Purposefully leak the XUL_APP_FILE string passed to putenv.
-     if (putenv(strdup(appEnv))) {
-       Output("Couldn't set %s.\n", appEnv);
-       return 255;
-     }
-     argv[2] = argv[0];
-     argv += 2;
-     argc -= 2;
-   } else if (argc > 1 && IsArg(argv[1], "xpcshell")) {
-     for (int i = 1; i < argc; i++) {
-       argv[i] = argv[i + 1];
-     }
- 
-     XREShellData shellData;
- #if defined(XP_WIN) && defined(MOZ_SANDBOX)
-     shellData.sandboxBrokerServices =
--      sandboxing::GetInitializedBrokerServices();
-+        sandboxing::GetInitializedBrokerServices();
- #endif
- 
-     return gBootstrap->XRE_XPCShellMain(--argc, argv, envp, &shellData);
-   }
- 
-   BootstrapConfig config;
- 
-   if (appDataFile && *appDataFile) {
-@@ -215,37 +196,42 @@ static int do_main(int argc, char* argv[
-   } else {
-     // no -app flag so we use the compiled-in app data
-     config.appData = &sAppData;
-     config.appDataPath = kDesktopFolder;
-   }
- 
- #if defined(XP_WIN) && defined(MOZ_SANDBOX)
-   sandbox::BrokerServices* brokerServices =
--    sandboxing::GetInitializedBrokerServices();
--#if defined(MOZ_CONTENT_SANDBOX)
-+      sandboxing::GetInitializedBrokerServices();
-   if (!brokerServices) {
-     Output("Couldn't initialize the broker services.\n");
-     return 255;
-   }
--#endif
-   config.sandboxBrokerServices = brokerServices;
- #endif
- 
- #ifdef LIBFUZZER
-   if (getenv("FUZZER"))
-     gBootstrap->XRE_LibFuzzerSetDriver(fuzzer::FuzzerDriver);
- #endif
- 
-+  // Note: FF needs to keep in sync with LauncherProcessWin,
-+  //       TB doesn't have that file.
-+  const char* acceptableParams[] = {"compose", "mail", nullptr};
-+  EnsureCommandlineSafe(argc, argv, acceptableParams);
-+
-   return gBootstrap->XRE_main(argc, argv, config);
- }
- 
--static nsresult
--InitXPCOMGlue(LibLoadingStrategy aLibLoadingStrategy)
--{
-+static nsresult InitXPCOMGlue(LibLoadingStrategy aLibLoadingStrategy) {
-+  if (gBootstrap) {
-+    return NS_OK;
-+  }
-+
-   UniqueFreePtr<char> exePath = BinaryPath::Get();
-   if (!exePath) {
-     Output("Couldn't find the application directory.\n");
-     return NS_ERROR_FAILURE;
-   }
- 
-   auto bootstrapResult =
-       mozilla::GetBootstrap(exePath.get(), aLibLoadingStrategy);
-@@ -262,55 +248,147 @@ InitXPCOMGlue(LibLoadingStrategy aLibLoa
-   return NS_OK;
- }
- 
- #ifdef HAS_DLL_BLOCKLIST
- // NB: This must be extern, as this value is checked elsewhere
- uint32_t gBlocklistInitFlags = eDllBlocklistInitFlagDefault;
- #endif
- 
--int main(int argc, char* argv[], char* envp[])
--{
-+int main(int argc, char* argv[], char* envp[]) {
-+#ifdef MOZ_BROWSER_CAN_BE_CONTENTPROC
-+  if (argc > 1 && IsArg(argv[1], "contentproc")) {
-+    // Set the process type and gecko child id.
-+    SetGeckoProcessType(argv[--argc]);
-+    SetGeckoChildID(argv[--argc]);
-+
-+#  if defined(MOZ_ENABLE_FORKSERVER)
-+    if (GetGeckoProcessType() == GeckoProcessType_ForkServer) {
-+      nsresult rv = InitXPCOMGlue(LibLoadingStrategy::NoReadAhead);
-+      if (NS_FAILED(rv)) {
-+        return 255;
-+      }
-+
-+      // Run a fork server in this process, single thread. When it returns, it
-+      // means the fork server have been stopped or a new child process is
-+      // created.
-+      //
-+      // For the latter case, XRE_ForkServer() will return false, running in a
-+      // child process just forked from the fork server process. argc & argv
-+      // will be updated with the values passing from the chrome process, as
-+      // will GeckoProcessType and GeckoChildID. With the new values, this
-+      // function continues the reset of the code acting as a child process.
-+      if (gBootstrap->XRE_ForkServer(&argc, &argv)) {
-+        // Return from the fork server in the fork server process.
-+        // Stop the fork server.
-+        // InitXPCOMGlue calls NS_LogInit, so we need to balance it here.
-+        gBootstrap->NS_LogTerm();
-+        return 0;
-+      }
-+    }
-+#  endif
-+  }
-+#endif
-+
-   mozilla::TimeStamp start = mozilla::TimeStamp::Now();
- 
-+  // Register an external module to report on otherwise uncatchable
-+  // exceptions. Note that in child processes this must be called after Gecko
-+  // process type has been set.
-+  CrashReporter::RegisterRuntimeExceptionModule();
-+
-+  // Make sure we unregister the runtime exception module before returning.
-+  auto unregisterRuntimeExceptionModule =
-+      MakeScopeExit([] { CrashReporter::UnregisterRuntimeExceptionModule(); });
-+
- #ifdef MOZ_BROWSER_CAN_BE_CONTENTPROC
-   // We are launching as a content process, delegate to the appropriate
-   // main
--  if (argc > 1 && IsArg(argv[1], "contentproc")) {
--#ifdef HAS_DLL_BLOCKLIST
--    DllBlocklist_Initialize(eDllBlocklistInitFlagIsChildProcess);
--#endif
--#if defined(XP_WIN) && defined(MOZ_SANDBOX)
-+  if (GetGeckoProcessType() != GeckoProcessType_Default) {
-+#  ifdef HAS_DLL_BLOCKLIST
-+    DllBlocklist_Initialize(gBlocklistInitFlags |
-+                            eDllBlocklistInitFlagIsChildProcess);
-+#  endif
-+#  if defined(XP_WIN) && defined(MOZ_SANDBOX)
-     // We need to initialize the sandbox TargetServices before InitXPCOMGlue
-     // because we might need the sandbox broker to give access to some files.
-     if (IsSandboxedProcess() && !sandboxing::GetInitializedTargetServices()) {
-       Output("Failed to initialize the sandbox target services.");
-       return 255;
-     }
--#endif
-+#  endif
-+#  if defined(XP_WIN)
-+    // Ideally, we would be able to set our DPI awareness in
-+    // SeaMonkey.exe.manifest Unfortunately, that would cause Win32k calls
-+    // when user32.dll gets loaded, which would be incompatible with Win32k
-+    // Lockdown. We need to call this after GetInitializedTargetServices
-+    // because it can affect the detection of the win32k lockdown status.
-+    //
-+    // MSDN says that it's allowed-but-not-recommended to initialize DPI
-+    // programmatically, as long as it's done before any HWNDs are created.
-+    // Thus, we do it almost as soon as we possibly can
-+    {
-+      auto result = mozilla::WindowsDpiInitialization();
-+      (void)result;  // Ignore errors since some tools block DPI calls
-+    }
-+#  endif
- 
-     nsresult rv = InitXPCOMGlue(LibLoadingStrategy::NoReadAhead);
-     if (NS_FAILED(rv)) {
-       return 255;
-     }
- 
--    int result = content_process_main(gBootstrap.get(), argc, argv);
-+    XREChildData childData;
-+
-+#  if defined(XP_WIN) && defined(MOZ_SANDBOX)
-+    if (IsSandboxedProcess()) {
-+      childData.sandboxTargetServices =
-+          mozilla::sandboxing::GetInitializedTargetServices();
-+      if (!childData.sandboxTargetServices) {
-+        return 1;
-+      }
-+
-+      childData.ProvideLogFunction = mozilla::sandboxing::ProvideLogFunction;
-+    }
-+
-+    if (GetGeckoProcessType() == GeckoProcessType_RemoteSandboxBroker) {
-+      childData.sandboxBrokerServices =
-+          mozilla::sandboxing::GetInitializedBrokerServices();
-+    }
-+#  endif
-+
-+    rv = gBootstrap->XRE_InitChildProcess(argc, argv, &childData);
- 
-     // InitXPCOMGlue calls NS_LogInit, so we need to balance it here.
-     gBootstrap->NS_LogTerm();
- 
--    return result;
-+    return NS_FAILED(rv) ? 1 : 0;
-   }
- #endif
- 
- #ifdef HAS_DLL_BLOCKLIST
-   DllBlocklist_Initialize(gBlocklistInitFlags);
- #endif
- 
--  nsresult rv = InitXPCOMGlue(LibLoadingStrategy::ReadAhead);
-+#if defined(XP_WIN)
-+
-+  // Ideally, we would be able to set our DPI awareness in
-+  // SeaMonkey.exe.manifest Unfortunately, that would cause Win32k calls when
-+  // user32.dll gets loaded, which would be incompatible with Win32k Lockdown
-+  //
-+  // MSDN says that it's allowed-but-not-recommended to initialize DPI
-+  // programmatically, as long as it's done before any HWNDs are created.
-+  // Thus, we do it almost as soon as we possibly can
-+  {
-+    auto result = mozilla::WindowsDpiInitialization();
-+    (void)result;  // Ignore errors since some tools block DPI calls
-+  }
-+#endif
-+
-+  nsresult rv = InitXPCOMGlue(LibLoadingStrategy::NoReadAhead);
-   if (NS_FAILED(rv)) {
-     return 255;
-   }
- 
-   gBootstrap->XRE_StartupTimelineRecord(mozilla::StartupTimeline::START, start);
- 
- #ifdef MOZ_BROWSER_CAN_BE_CONTENTPROC
-   gBootstrap->XRE_EnableSameExecutableForContentProc();
-diff --git a/suite/components/shell/moz.build b/suite/components/shell/moz.build
---- a/suite/components/shell/moz.build
-+++ b/suite/components/shell/moz.build
-@@ -21,16 +21,19 @@ XPIDL_MODULE = "shellservice"
- 
- if CONFIG["OS_ARCH"] == "WINNT":
-     SOURCES += [
-         "nsWindowsShellService.cpp",
-     ]
-     LOCAL_INCLUDES += [
-         "/other-licenses/nsis/Contrib/CityHash/cityhash",
-     ]
-+    OS_LIBS += [
-+        "propsys",
-+    ]
- elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "cocoa":
-     SOURCES += ["nsMacShellService.cpp"]
- elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
-     SOURCES += ["nsGNOMEShellService.cpp"]
- 
- if SOURCES:
-     EXTRA_COMPONENTS += [
-         "nsSetDefault.js",

+ 0 - 54
mzla/comm/9999999-suite-bustage.patch

@@ -1,54 +0,0 @@
-# HG changeset patch
-# User Bill Gianopoulos <wgianopoulos@gmail.com>
-# Date 1716024044 0
-# Parent  3c3ba7ee7ca73d4cc580a155282f9dc735db1c8e
-Bug 9999999 - remove bad dependency on mail/extensions/openpgp in mailnewsr/base.
-
-diff --git a/mail/extensions/openpgp/moz.build b/mail/extensions/openpgp/moz.build
---- a/mail/extensions/openpgp/moz.build
-+++ b/mail/extensions/openpgp/moz.build
-@@ -1,20 +1,14 @@
- # 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/.
- 
- with Files("**"):
-     BUG_COMPONENT = ("MailNews Core", "Security: OpenPGP")
- 
--XPIDL_SOURCES += [
--    "nsIMsgOpenPGPSink.idl",
--]
--
--XPIDL_MODULE = "msgbase"
--
- JAR_MANIFESTS += ["jar.mn"]
- 
- EXTRA_JS_MODULES += ["PgpMimeHandler.sys.mjs"]
- 
- XPCSHELL_TESTS_MANIFESTS += ["test/unit/rnp/xpcshell.ini"]
- 
- XPCOM_MANIFESTS += ["components.conf"]
-diff --git a/mailnews/base/public/moz.build b/mailnews/base/public/moz.build
---- a/mailnews/base/public/moz.build
-+++ b/mailnews/base/public/moz.build
-@@ -38,16 +38,17 @@ XPIDL_SOURCES += [
-     "nsIMsgHdr.idl",
-     "nsIMsgIdentity.idl",
-     "nsIMsgIncomingServer.idl",
-     "nsIMsgMailNewsUrl.idl",
-     "nsIMsgMailSession.idl",
-     "nsIMsgMdnGenerator.idl",
-     "nsIMsgMessageService.idl",
-     "nsIMsgOfflineManager.idl",
-+    "nsIMsgOpenPGPSink.idl",
-     "nsIMsgPluggableStore.idl",
-     "nsIMsgProgress.idl",
-     "nsIMsgProtocolHandler.idl",
-     "nsIMsgProtocolInfo.idl",
-     "nsIMsgPurgeService.idl",
-     "nsIMsgShutdown.idl",
-     "nsIMsgStatusFeedback.idl",
-     "nsIMsgTagService.idl",
-diff --git a/mail/extensions/openpgp/nsIMsgOpenPGPSink.idl b/mailnews/base/public/nsIMsgOpenPGPSink.idl
-rename from mail/extensions/openpgp/nsIMsgOpenPGPSink.idl
-rename to mailnews/base/public/nsIMsgOpenPGPSink.idl

+ 0 - 22
mzla/comm/PPPPPPP-allow-COMM_REPO-and-COMM-CHANGESET-override.patch

@@ -1,22 +0,0 @@
-# HG changeset patch
-# User Bill Gianopoulos <wgianopoulos@gmail.com>
-# Date 1718621286 0
-Allow overriding COMM-REV and COMM-REPO via env variables.
-
-diff --git a/build/moz.configure/gecko_source.configure b/build/moz.configure/gecko_source.configure
---- a/build/moz.configure/gecko_source.configure
-+++ b/build/moz.configure/gecko_source.configure
-@@ -246,13 +246,11 @@ def gecko_source_repo(from_environ, from
-         rv = namespace(gecko_repo="unknown", gecko_rev="unknown")
- 
-     log.info("GECKO_SOURCE_REPOSITORY: {}".format(rv.gecko_repo))
-     log.info("GECKO_SOURCE_CHANGESET: {}".format(rv.gecko_rev))
-     return rv
- 
- 
- set_config("MOZ_COMM_SOURCE_REPO", comm_source_repo.comm_repo)
--imply_option("MOZ_SOURCE_REPO", comm_source_repo.comm_repo, reason="MOZ_SOURCE_REPO")
- set_config("MOZ_COMM_SOURCE_CHANGESET", comm_source_repo.comm_rev)
--imply_option("MOZ_SOURCE_CHANGESET", comm_source_repo.comm_rev, reason="MOZ_SOURCE_CHANGESET")
- set_config("MOZ_GECKO_SOURCE_REPO", gecko_source_repo.gecko_repo)
- set_config("MOZ_GECKO_SOURCE_CHANGESET", gecko_source_repo.gecko_rev)

+ 0 - 554
mzla/comm/TOP-1611647-1-rename-xul-suite.patch

@@ -1,554 +0,0 @@
-# HG changeset patch
-# User Bill Gianopoulos <wgianopoulos@gmail.com>
-# Date 1658141568 14400
-#      Mon Jul 18 06:52:48 2022 -0400
-# Node ID e352984c73426802110888060346b9643b9ee735
-# Parent  f97678cf9d67a765eafca6a61438dc8701bd7ecc
-Bug 1611647 - Port bug 1579952 - Mass rename .xul files to .xhtml in suite.
-
-diff --git a/suite/base/content/aboutPrivateBrowsing.xul b/suite/base/content/aboutPrivateBrowsing.xhtml
-rename from suite/base/content/aboutPrivateBrowsing.xul
-rename to suite/base/content/aboutPrivateBrowsing.xhtml
-diff --git a/suite/base/content/askViewZoom.xul b/suite/base/content/askViewZoom.xhtml
-rename from suite/base/content/askViewZoom.xul
-rename to suite/base/content/askViewZoom.xhtml
-diff --git a/suite/base/content/charsetOverlay.xul b/suite/base/content/charsetOverlay.xhtml
-rename from suite/base/content/charsetOverlay.xul
-rename to suite/base/content/charsetOverlay.xhtml
-diff --git a/suite/base/content/contentAreaContextOverlay.xul b/suite/base/content/contentAreaContextOverlay.xhtml
-rename from suite/base/content/contentAreaContextOverlay.xul
-rename to suite/base/content/contentAreaContextOverlay.xhtml
-diff --git a/suite/base/content/defaultClientDialog.xul b/suite/base/content/defaultClientDialog.xhtml
-rename from suite/base/content/defaultClientDialog.xul
-rename to suite/base/content/defaultClientDialog.xhtml
-diff --git a/suite/base/content/helpEditorOverlay.xul b/suite/base/content/helpEditorOverlay.xhtml
-rename from suite/base/content/helpEditorOverlay.xul
-rename to suite/base/content/helpEditorOverlay.xhtml
-diff --git a/suite/base/content/helpMessengerOverlay.xul b/suite/base/content/helpMessengerOverlay.xhtml
-rename from suite/base/content/helpMessengerOverlay.xul
-rename to suite/base/content/helpMessengerOverlay.xhtml
-diff --git a/suite/base/content/helpSecurityOverlay.xul b/suite/base/content/helpSecurityOverlay.xhtml
-rename from suite/base/content/helpSecurityOverlay.xul
-rename to suite/base/content/helpSecurityOverlay.xhtml
-diff --git a/suite/base/content/openLocation.xul b/suite/base/content/openLocation.xhtml
-rename from suite/base/content/openLocation.xul
-rename to suite/base/content/openLocation.xhtml
-diff --git a/suite/base/content/safeMode.xul b/suite/base/content/safeMode.xhtml
-rename from suite/base/content/safeMode.xul
-rename to suite/base/content/safeMode.xhtml
-diff --git a/suite/base/content/tasksOverlay.xul b/suite/base/content/tasksOverlay.xhtml
-rename from suite/base/content/tasksOverlay.xul
-rename to suite/base/content/tasksOverlay.xhtml
-diff --git a/suite/base/content/utilityOverlay.xul b/suite/base/content/utilityOverlay.xhtml
-rename from suite/base/content/utilityOverlay.xul
-rename to suite/base/content/utilityOverlay.xhtml
-diff --git a/suite/base/content/viewApplyThemeOverlay.xul b/suite/base/content/viewApplyThemeOverlay.xhtml
-rename from suite/base/content/viewApplyThemeOverlay.xul
-rename to suite/base/content/viewApplyThemeOverlay.xhtml
-diff --git a/suite/base/content/viewSourceOverlay.xul b/suite/base/content/viewSourceOverlay.xhtml
-rename from suite/base/content/viewSourceOverlay.xul
-rename to suite/base/content/viewSourceOverlay.xhtml
-diff --git a/suite/base/content/viewZoomOverlay.xul b/suite/base/content/viewZoomOverlay.xhtml
-rename from suite/base/content/viewZoomOverlay.xul
-rename to suite/base/content/viewZoomOverlay.xhtml
-diff --git a/suite/browser/hiddenWindow.xul b/suite/browser/hiddenWindow.xhtml
-rename from suite/browser/hiddenWindow.xul
-rename to suite/browser/hiddenWindow.xhtml
-diff --git a/suite/browser/linkToolbarOverlay.xul b/suite/browser/linkToolbarOverlay.xhtml
-rename from suite/browser/linkToolbarOverlay.xul
-rename to suite/browser/linkToolbarOverlay.xhtml
-diff --git a/suite/browser/mailNavigatorOverlay.xul b/suite/browser/mailNavigatorOverlay.xhtml
-rename from suite/browser/mailNavigatorOverlay.xul
-rename to suite/browser/mailNavigatorOverlay.xhtml
-diff --git a/suite/browser/metadata.xul b/suite/browser/metadata.xhtml
-rename from suite/browser/metadata.xul
-rename to suite/browser/metadata.xhtml
-diff --git a/suite/browser/navigator.xul b/suite/browser/navigator.xhtml
-rename from suite/browser/navigator.xul
-rename to suite/browser/navigator.xhtml
-diff --git a/suite/browser/navigatorOverlay.xul b/suite/browser/navigatorOverlay.xhtml
-rename from suite/browser/navigatorOverlay.xul
-rename to suite/browser/navigatorOverlay.xhtml
-diff --git a/suite/browser/pageinfo/pageInfo.xul b/suite/browser/pageinfo/pageInfo.xhtml
-rename from suite/browser/pageinfo/pageInfo.xul
-rename to suite/browser/pageinfo/pageInfo.xhtml
-diff --git a/suite/browser/safeBrowsingOverlay.xul b/suite/browser/safeBrowsingOverlay.xhtml
-rename from suite/browser/safeBrowsingOverlay.xul
-rename to suite/browser/safeBrowsingOverlay.xhtml
-diff --git a/suite/browser/webDeveloperOverlay.xul b/suite/browser/webDeveloperOverlay.xhtml
-rename from suite/browser/webDeveloperOverlay.xul
-rename to suite/browser/webDeveloperOverlay.xhtml
-diff --git a/suite/chatzilla/xul/content/about/about.xul b/suite/chatzilla/xul/content/about/about.xhtml
-rename from suite/chatzilla/xul/content/about/about.xul
-rename to suite/chatzilla/xul/content/about/about.xhtml
-diff --git a/suite/chatzilla/xul/content/browserOverlay.xul b/suite/chatzilla/xul/content/browserOverlay.xhtml
-rename from suite/chatzilla/xul/content/browserOverlay.xul
-rename to suite/chatzilla/xul/content/browserOverlay.xhtml
-diff --git a/suite/chatzilla/xul/content/channels.xul b/suite/chatzilla/xul/content/channels.xhtml
-rename from suite/chatzilla/xul/content/channels.xul
-rename to suite/chatzilla/xul/content/channels.xhtml
-diff --git a/suite/chatzilla/xul/content/chatzilla.xul b/suite/chatzilla/xul/content/chatzilla.xhtml
-rename from suite/chatzilla/xul/content/chatzilla.xul
-rename to suite/chatzilla/xul/content/chatzilla.xhtml
-diff --git a/suite/chatzilla/xul/content/chatzillaOverlay.xul b/suite/chatzilla/xul/content/chatzillaOverlay.xhtml
-rename from suite/chatzilla/xul/content/chatzillaOverlay.xul
-rename to suite/chatzilla/xul/content/chatzillaOverlay.xhtml
-diff --git a/suite/chatzilla/xul/content/config-add.xul b/suite/chatzilla/xul/content/config-add.xhtml
-rename from suite/chatzilla/xul/content/config-add.xul
-rename to suite/chatzilla/xul/content/config-add.xhtml
-diff --git a/suite/chatzilla/xul/content/config.xul b/suite/chatzilla/xul/content/config.xhtml
-rename from suite/chatzilla/xul/content/config.xul
-rename to suite/chatzilla/xul/content/config.xhtml
-diff --git a/suite/chatzilla/xul/content/install-plugin/install-plugin.xul b/suite/chatzilla/xul/content/install-plugin/install-plugin.xhtml
-rename from suite/chatzilla/xul/content/install-plugin/install-plugin.xul
-rename to suite/chatzilla/xul/content/install-plugin/install-plugin.xhtml
-diff --git a/suite/chatzilla/xul/content/menus.xul b/suite/chatzilla/xul/content/menus.xhtml
-rename from suite/chatzilla/xul/content/menus.xul
-rename to suite/chatzilla/xul/content/menus.xhtml
-diff --git a/suite/chatzilla/xul/content/networks-edit.xul b/suite/chatzilla/xul/content/networks-edit.xhtml
-rename from suite/chatzilla/xul/content/networks-edit.xul
-rename to suite/chatzilla/xul/content/networks-edit.xhtml
-diff --git a/suite/chatzilla/xul/content/networks-server.xul b/suite/chatzilla/xul/content/networks-server.xhtml
-rename from suite/chatzilla/xul/content/networks-server.xul
-rename to suite/chatzilla/xul/content/networks-server.xhtml
-diff --git a/suite/chatzilla/xul/content/popups.xul b/suite/chatzilla/xul/content/popups.xhtml
-rename from suite/chatzilla/xul/content/popups.xul
-rename to suite/chatzilla/xul/content/popups.xhtml
-diff --git a/suite/chatzilla/xul/content/pref-irc-toolkit.xul b/suite/chatzilla/xul/content/pref-irc-toolkit.xhtml
-rename from suite/chatzilla/xul/content/pref-irc-toolkit.xul
-rename to suite/chatzilla/xul/content/pref-irc-toolkit.xhtml
-diff --git a/suite/chatzilla/xul/content/prefsOverlay.xul b/suite/chatzilla/xul/content/prefsOverlay.xhtml
-rename from suite/chatzilla/xul/content/prefsOverlay.xul
-rename to suite/chatzilla/xul/content/prefsOverlay.xhtml
-diff --git a/suite/chatzilla/xul/content/scripts.xul b/suite/chatzilla/xul/content/scripts.xhtml
-rename from suite/chatzilla/xul/content/scripts.xul
-rename to suite/chatzilla/xul/content/scripts.xhtml
-diff --git a/suite/components/console/content/console.xul b/suite/components/console/content/console.xhtml
-rename from suite/components/console/content/console.xul
-rename to suite/components/console/content/console.xhtml
-diff --git a/suite/components/dataman/content/dataman.xul b/suite/components/dataman/content/dataman.xhtml
-rename from suite/components/dataman/content/dataman.xul
-rename to suite/components/dataman/content/dataman.xhtml
-diff --git a/suite/components/downloads/content/downloadmanager.xul b/suite/components/downloads/content/downloadmanager.xhtml
-rename from suite/components/downloads/content/downloadmanager.xul
-rename to suite/components/downloads/content/downloadmanager.xhtml
-diff --git a/suite/components/downloads/content/progressDialog.xul b/suite/components/downloads/content/progressDialog.xhtml
-rename from suite/components/downloads/content/progressDialog.xul
-rename to suite/components/downloads/content/progressDialog.xhtml
-diff --git a/suite/components/downloads/content/uploadProgress.xul b/suite/components/downloads/content/uploadProgress.xhtml
-rename from suite/components/downloads/content/uploadProgress.xul
-rename to suite/components/downloads/content/uploadProgress.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_action_keys_respect_focus.xul b/suite/components/downloads/tests/chrome/test_action_keys_respect_focus.xhtml
-rename from suite/components/downloads/tests/chrome/test_action_keys_respect_focus.xul
-rename to suite/components/downloads/tests/chrome/test_action_keys_respect_focus.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_basic_functionality.xul b/suite/components/downloads/tests/chrome/test_basic_functionality.xhtml
-rename from suite/components/downloads/tests/chrome/test_basic_functionality.xul
-rename to suite/components/downloads/tests/chrome/test_basic_functionality.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_cleanup_search.xul b/suite/components/downloads/tests/chrome/test_cleanup_search.xhtml
-rename from suite/components/downloads/tests/chrome/test_cleanup_search.xul
-rename to suite/components/downloads/tests/chrome/test_cleanup_search.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_clear_button_disabled.xul b/suite/components/downloads/tests/chrome/test_clear_button_disabled.xhtml
-rename from suite/components/downloads/tests/chrome/test_clear_button_disabled.xul
-rename to suite/components/downloads/tests/chrome/test_clear_button_disabled.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_close_download_manager.xul b/suite/components/downloads/tests/chrome/test_close_download_manager.xhtml
-rename from suite/components/downloads/tests/chrome/test_close_download_manager.xul
-rename to suite/components/downloads/tests/chrome/test_close_download_manager.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_delete_key_cancels.xul b/suite/components/downloads/tests/chrome/test_delete_key_cancels.xhtml
-rename from suite/components/downloads/tests/chrome/test_delete_key_cancels.xul
-rename to suite/components/downloads/tests/chrome/test_delete_key_cancels.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_delete_key_removes.xul b/suite/components/downloads/tests/chrome/test_delete_key_removes.xhtml
-rename from suite/components/downloads/tests/chrome/test_delete_key_removes.xul
-rename to suite/components/downloads/tests/chrome/test_delete_key_removes.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_drag.xul b/suite/components/downloads/tests/chrome/test_drag.xhtml
-rename from suite/components/downloads/tests/chrome/test_drag.xul
-rename to suite/components/downloads/tests/chrome/test_drag.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_enter_dblclick_opens.xul b/suite/components/downloads/tests/chrome/test_enter_dblclick_opens.xhtml
-rename from suite/components/downloads/tests/chrome/test_enter_dblclick_opens.xul
-rename to suite/components/downloads/tests/chrome/test_enter_dblclick_opens.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_multi_select.xul b/suite/components/downloads/tests/chrome/test_multi_select.xhtml
-rename from suite/components/downloads/tests/chrome/test_multi_select.xul
-rename to suite/components/downloads/tests/chrome/test_multi_select.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_multiword_search.xul b/suite/components/downloads/tests/chrome/test_multiword_search.xhtml
-rename from suite/components/downloads/tests/chrome/test_multiword_search.xul
-rename to suite/components/downloads/tests/chrome/test_multiword_search.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_open_properties.xul b/suite/components/downloads/tests/chrome/test_open_properties.xhtml
-rename from suite/components/downloads/tests/chrome/test_open_properties.xul
-rename to suite/components/downloads/tests/chrome/test_open_properties.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_removeDownload_updates_ui.xul b/suite/components/downloads/tests/chrome/test_removeDownload_updates_ui.xhtml
-rename from suite/components/downloads/tests/chrome/test_removeDownload_updates_ui.xul
-rename to suite/components/downloads/tests/chrome/test_removeDownload_updates_ui.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_search_clearlist.xul b/suite/components/downloads/tests/chrome/test_search_clearlist.xhtml
-rename from suite/components/downloads/tests/chrome/test_search_clearlist.xul
-rename to suite/components/downloads/tests/chrome/test_search_clearlist.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_search_keys.xul b/suite/components/downloads/tests/chrome/test_search_keys.xhtml
-rename from suite/components/downloads/tests/chrome/test_search_keys.xul
-rename to suite/components/downloads/tests/chrome/test_search_keys.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_select_all.xul b/suite/components/downloads/tests/chrome/test_select_all.xhtml
-rename from suite/components/downloads/tests/chrome/test_select_all.xul
-rename to suite/components/downloads/tests/chrome/test_select_all.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_space_key_pauses_resumes.xul b/suite/components/downloads/tests/chrome/test_space_key_pauses_resumes.xhtml
-rename from suite/components/downloads/tests/chrome/test_space_key_pauses_resumes.xul
-rename to suite/components/downloads/tests/chrome/test_space_key_pauses_resumes.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_space_key_retries.xul b/suite/components/downloads/tests/chrome/test_space_key_retries.xhtml
-rename from suite/components/downloads/tests/chrome/test_space_key_retries.xul
-rename to suite/components/downloads/tests/chrome/test_space_key_retries.xhtml
-diff --git a/suite/components/downloads/tests/chrome/test_ui_stays_open_on_alert_clickback.xul b/suite/components/downloads/tests/chrome/test_ui_stays_open_on_alert_clickback.xhtml
-rename from suite/components/downloads/tests/chrome/test_ui_stays_open_on_alert_clickback.xul
-rename to suite/components/downloads/tests/chrome/test_ui_stays_open_on_alert_clickback.xhtml
-diff --git a/suite/components/helpviewer/content/help.xul b/suite/components/helpviewer/content/help.xhtml
-rename from suite/components/helpviewer/content/help.xul
-rename to suite/components/helpviewer/content/help.xhtml
-diff --git a/suite/components/helpviewer/content/helpContextOverlay.xul b/suite/components/helpviewer/content/helpContextOverlay.xhtml
-rename from suite/components/helpviewer/content/helpContextOverlay.xul
-rename to suite/components/helpviewer/content/helpContextOverlay.xhtml
-diff --git a/suite/components/migration/content/migration.xul b/suite/components/migration/content/migration.xhtml
-rename from suite/components/migration/content/migration.xul
-rename to suite/components/migration/content/migration.xhtml
-diff --git a/suite/components/permissions/content/cookieViewer.xul b/suite/components/permissions/content/cookieViewer.xhtml
-rename from suite/components/permissions/content/cookieViewer.xul
-rename to suite/components/permissions/content/cookieViewer.xhtml
-diff --git a/suite/components/permissions/content/permissionsManager.xul b/suite/components/permissions/content/permissionsManager.xhtml
-rename from suite/components/permissions/content/permissionsManager.xul
-rename to suite/components/permissions/content/permissionsManager.xhtml
-diff --git a/suite/components/places/content/bookmarkProperties.xul b/suite/components/places/content/bookmarkProperties.xhtml
-rename from suite/components/places/content/bookmarkProperties.xul
-rename to suite/components/places/content/bookmarkProperties.xhtml
-diff --git a/suite/components/places/content/bookmarksPanel.xul b/suite/components/places/content/bookmarksPanel.xhtml
-rename from suite/components/places/content/bookmarksPanel.xul
-rename to suite/components/places/content/bookmarksPanel.xhtml
-diff --git a/suite/components/places/content/editBookmarkOverlay.xul b/suite/components/places/content/editBookmarkOverlay.xhtml
-rename from suite/components/places/content/editBookmarkOverlay.xul
-rename to suite/components/places/content/editBookmarkOverlay.xhtml
-diff --git a/suite/components/places/content/history-panel.xul b/suite/components/places/content/history-panel.xhtml
-rename from suite/components/places/content/history-panel.xul
-rename to suite/components/places/content/history-panel.xhtml
-diff --git a/suite/components/places/content/places.xul b/suite/components/places/content/places.xhtml
-rename from suite/components/places/content/places.xul
-rename to suite/components/places/content/places.xhtml
-diff --git a/suite/components/places/content/placesOverlay.xul b/suite/components/places/content/placesOverlay.xhtml
-rename from suite/components/places/content/placesOverlay.xul
-rename to suite/components/places/content/placesOverlay.xhtml
-diff --git a/suite/components/places/tests/chrome/test_0_bug510634.xul b/suite/components/places/tests/chrome/test_0_bug510634.xhtml
-rename from suite/components/places/tests/chrome/test_0_bug510634.xul
-rename to suite/components/places/tests/chrome/test_0_bug510634.xhtml
-diff --git a/suite/components/places/tests/chrome/test_0_multiple_left_pane.xul b/suite/components/places/tests/chrome/test_0_multiple_left_pane.xhtml
-rename from suite/components/places/tests/chrome/test_0_multiple_left_pane.xul
-rename to suite/components/places/tests/chrome/test_0_multiple_left_pane.xhtml
-diff --git a/suite/components/places/tests/chrome/test_bug427633_no_newfolder_if_noip.xul b/suite/components/places/tests/chrome/test_bug427633_no_newfolder_if_noip.xhtml
-rename from suite/components/places/tests/chrome/test_bug427633_no_newfolder_if_noip.xul
-rename to suite/components/places/tests/chrome/test_bug427633_no_newfolder_if_noip.xhtml
-diff --git a/suite/components/places/tests/chrome/test_bug485100-change-case-loses-tag.xul b/suite/components/places/tests/chrome/test_bug485100-change-case-loses-tag.xhtml
-rename from suite/components/places/tests/chrome/test_bug485100-change-case-loses-tag.xul
-rename to suite/components/places/tests/chrome/test_bug485100-change-case-loses-tag.xhtml
-diff --git a/suite/components/places/tests/chrome/test_bug549192.xul b/suite/components/places/tests/chrome/test_bug549192.xhtml
-rename from suite/components/places/tests/chrome/test_bug549192.xul
-rename to suite/components/places/tests/chrome/test_bug549192.xhtml
-diff --git a/suite/components/places/tests/chrome/test_bug549491.xul b/suite/components/places/tests/chrome/test_bug549491.xhtml
-rename from suite/components/places/tests/chrome/test_bug549491.xul
-rename to suite/components/places/tests/chrome/test_bug549491.xhtml
-diff --git a/suite/components/places/tests/chrome/test_treeview_date.xul b/suite/components/places/tests/chrome/test_treeview_date.xhtml
-rename from suite/components/places/tests/chrome/test_treeview_date.xul
-rename to suite/components/places/tests/chrome/test_treeview_date.xhtml
-diff --git a/suite/components/pref/content/pref-advanced.xul b/suite/components/pref/content/pref-advanced.xhtml
-rename from suite/components/pref/content/pref-advanced.xul
-rename to suite/components/pref/content/pref-advanced.xhtml
-diff --git a/suite/components/pref/content/pref-appearance.xul b/suite/components/pref/content/pref-appearance.xhtml
-rename from suite/components/pref/content/pref-appearance.xul
-rename to suite/components/pref/content/pref-appearance.xhtml
-diff --git a/suite/components/pref/content/pref-applicationManager.xul b/suite/components/pref/content/pref-applicationManager.xhtml
-rename from suite/components/pref/content/pref-applicationManager.xul
-rename to suite/components/pref/content/pref-applicationManager.xhtml
-diff --git a/suite/components/pref/content/pref-applications.xul b/suite/components/pref/content/pref-applications.xhtml
-rename from suite/components/pref/content/pref-applications.xul
-rename to suite/components/pref/content/pref-applications.xhtml
-diff --git a/suite/components/pref/content/pref-cache.xul b/suite/components/pref/content/pref-cache.xhtml
-rename from suite/components/pref/content/pref-cache.xul
-rename to suite/components/pref/content/pref-cache.xhtml
-diff --git a/suite/components/pref/content/pref-colors.xul b/suite/components/pref/content/pref-colors.xhtml
-rename from suite/components/pref/content/pref-colors.xul
-rename to suite/components/pref/content/pref-colors.xhtml
-diff --git a/suite/components/pref/content/pref-content.xul b/suite/components/pref/content/pref-content.xhtml
-rename from suite/components/pref/content/pref-content.xul
-rename to suite/components/pref/content/pref-content.xhtml
-diff --git a/suite/components/pref/content/pref-cookies.xul b/suite/components/pref/content/pref-cookies.xhtml
-rename from suite/components/pref/content/pref-cookies.xul
-rename to suite/components/pref/content/pref-cookies.xhtml
-diff --git a/suite/components/pref/content/pref-debugging.xul b/suite/components/pref/content/pref-debugging.xhtml
-rename from suite/components/pref/content/pref-debugging.xul
-rename to suite/components/pref/content/pref-debugging.xhtml
-diff --git a/suite/components/pref/content/pref-download.xul b/suite/components/pref/content/pref-download.xhtml
-rename from suite/components/pref/content/pref-download.xul
-rename to suite/components/pref/content/pref-download.xhtml
-diff --git a/suite/components/pref/content/pref-findasyoutype.xul b/suite/components/pref/content/pref-findasyoutype.xhtml
-rename from suite/components/pref/content/pref-findasyoutype.xul
-rename to suite/components/pref/content/pref-findasyoutype.xhtml
-diff --git a/suite/components/pref/content/pref-fonts.xul b/suite/components/pref/content/pref-fonts.xhtml
-rename from suite/components/pref/content/pref-fonts.xul
-rename to suite/components/pref/content/pref-fonts.xhtml
-diff --git a/suite/components/pref/content/pref-history.xul b/suite/components/pref/content/pref-history.xhtml
-rename from suite/components/pref/content/pref-history.xul
-rename to suite/components/pref/content/pref-history.xhtml
-diff --git a/suite/components/pref/content/pref-http.xul b/suite/components/pref/content/pref-http.xhtml
-rename from suite/components/pref/content/pref-http.xul
-rename to suite/components/pref/content/pref-http.xhtml
-diff --git a/suite/components/pref/content/pref-images.xul b/suite/components/pref/content/pref-images.xhtml
-rename from suite/components/pref/content/pref-images.xul
-rename to suite/components/pref/content/pref-images.xhtml
-diff --git a/suite/components/pref/content/pref-keynav.xul b/suite/components/pref/content/pref-keynav.xhtml
-rename from suite/components/pref/content/pref-keynav.xul
-rename to suite/components/pref/content/pref-keynav.xhtml
-diff --git a/suite/components/pref/content/pref-languages-add.xul b/suite/components/pref/content/pref-languages-add.xhtml
-rename from suite/components/pref/content/pref-languages-add.xul
-rename to suite/components/pref/content/pref-languages-add.xhtml
-diff --git a/suite/components/pref/content/pref-languages.xul b/suite/components/pref/content/pref-languages.xhtml
-rename from suite/components/pref/content/pref-languages.xul
-rename to suite/components/pref/content/pref-languages.xhtml
-diff --git a/suite/components/pref/content/pref-links.xul b/suite/components/pref/content/pref-links.xhtml
-rename from suite/components/pref/content/pref-links.xul
-rename to suite/components/pref/content/pref-links.xhtml
-diff --git a/suite/components/pref/content/pref-locationbar.xul b/suite/components/pref/content/pref-locationbar.xhtml
-rename from suite/components/pref/content/pref-locationbar.xul
-rename to suite/components/pref/content/pref-locationbar.xhtml
-diff --git a/suite/components/pref/content/pref-media.xul b/suite/components/pref/content/pref-media.xhtml
-rename from suite/components/pref/content/pref-media.xul
-rename to suite/components/pref/content/pref-media.xhtml
-diff --git a/suite/components/pref/content/pref-mousewheel.xul b/suite/components/pref/content/pref-mousewheel.xhtml
-rename from suite/components/pref/content/pref-mousewheel.xul
-rename to suite/components/pref/content/pref-mousewheel.xhtml
-diff --git a/suite/components/pref/content/pref-navigator.xul b/suite/components/pref/content/pref-navigator.xhtml
-rename from suite/components/pref/content/pref-navigator.xul
-rename to suite/components/pref/content/pref-navigator.xhtml
-diff --git a/suite/components/pref/content/pref-offlineapps.xul b/suite/components/pref/content/pref-offlineapps.xhtml
-rename from suite/components/pref/content/pref-offlineapps.xul
-rename to suite/components/pref/content/pref-offlineapps.xhtml
-diff --git a/suite/components/pref/content/pref-popups.xul b/suite/components/pref/content/pref-popups.xhtml
-rename from suite/components/pref/content/pref-popups.xul
-rename to suite/components/pref/content/pref-popups.xhtml
-diff --git a/suite/components/pref/content/pref-privatedata.xul b/suite/components/pref/content/pref-privatedata.xhtml
-rename from suite/components/pref/content/pref-privatedata.xul
-rename to suite/components/pref/content/pref-privatedata.xhtml
-diff --git a/suite/components/pref/content/pref-proxies-advanced.xul b/suite/components/pref/content/pref-proxies-advanced.xhtml
-rename from suite/components/pref/content/pref-proxies-advanced.xul
-rename to suite/components/pref/content/pref-proxies-advanced.xhtml
-diff --git a/suite/components/pref/content/pref-proxies.xul b/suite/components/pref/content/pref-proxies.xhtml
-rename from suite/components/pref/content/pref-proxies.xul
-rename to suite/components/pref/content/pref-proxies.xhtml
-diff --git a/suite/components/pref/content/pref-scripts.xul b/suite/components/pref/content/pref-scripts.xhtml
-rename from suite/components/pref/content/pref-scripts.xul
-rename to suite/components/pref/content/pref-scripts.xhtml
-diff --git a/suite/components/pref/content/pref-search.xul b/suite/components/pref/content/pref-search.xhtml
-rename from suite/components/pref/content/pref-search.xul
-rename to suite/components/pref/content/pref-search.xhtml
-diff --git a/suite/components/pref/content/pref-security.xul b/suite/components/pref/content/pref-security.xhtml
-rename from suite/components/pref/content/pref-security.xul
-rename to suite/components/pref/content/pref-security.xhtml
-diff --git a/suite/components/pref/content/pref-smartupdate.xul b/suite/components/pref/content/pref-smartupdate.xhtml
-rename from suite/components/pref/content/pref-smartupdate.xul
-rename to suite/components/pref/content/pref-smartupdate.xhtml
-diff --git a/suite/components/pref/content/pref-spelling.xul b/suite/components/pref/content/pref-spelling.xhtml
-rename from suite/components/pref/content/pref-spelling.xul
-rename to suite/components/pref/content/pref-spelling.xhtml
-diff --git a/suite/components/pref/content/pref-sync.xul b/suite/components/pref/content/pref-sync.xhtml
-rename from suite/components/pref/content/pref-sync.xul
-rename to suite/components/pref/content/pref-sync.xhtml
-diff --git a/suite/components/pref/content/pref-tabs.xul b/suite/components/pref/content/pref-tabs.xhtml
-rename from suite/components/pref/content/pref-tabs.xul
-rename to suite/components/pref/content/pref-tabs.xhtml
-diff --git a/suite/components/pref/content/preferences.xul b/suite/components/pref/content/preferences.xhtml
-rename from suite/components/pref/content/preferences.xul
-rename to suite/components/pref/content/preferences.xhtml
-diff --git a/suite/components/profile/content/profileSelection.xul b/suite/components/profile/content/profileSelection.xhtml
-rename from suite/components/profile/content/profileSelection.xul
-rename to suite/components/profile/content/profileSelection.xhtml
-diff --git a/suite/components/sanitize/content/sanitizeDialog.xul b/suite/components/sanitize/content/sanitizeDialog.xhtml
-rename from suite/components/sanitize/content/sanitizeDialog.xul
-rename to suite/components/sanitize/content/sanitizeDialog.xhtml
-diff --git a/suite/components/search/content/engineManager.xul b/suite/components/search/content/engineManager.xhtml
-rename from suite/components/search/content/engineManager.xul
-rename to suite/components/search/content/engineManager.xhtml
-diff --git a/suite/components/search/content/search-panel.xul b/suite/components/search/content/search-panel.xhtml
-rename from suite/components/search/content/search-panel.xul
-rename to suite/components/search/content/search-panel.xhtml
-diff --git a/suite/components/security/content/prefs/pref-certs.xul b/suite/components/security/content/prefs/pref-certs.xhtml
-rename from suite/components/security/content/prefs/pref-certs.xul
-rename to suite/components/security/content/prefs/pref-certs.xhtml
-diff --git a/suite/components/security/content/prefs/pref-passwords.xul b/suite/components/security/content/prefs/pref-passwords.xhtml
-rename from suite/components/security/content/prefs/pref-passwords.xul
-rename to suite/components/security/content/prefs/pref-passwords.xhtml
-diff --git a/suite/components/security/content/prefs/pref-ssl.xul b/suite/components/security/content/prefs/pref-ssl.xhtml
-rename from suite/components/security/content/prefs/pref-ssl.xul
-rename to suite/components/security/content/prefs/pref-ssl.xhtml
-diff --git a/suite/components/shell/content/setDesktopBackground.xul b/suite/components/shell/content/setDesktopBackground.xhtml
-rename from suite/components/shell/content/setDesktopBackground.xul
-rename to suite/components/shell/content/setDesktopBackground.xhtml
-diff --git a/suite/components/sidebar/content/PageNotFound.xul b/suite/components/sidebar/content/PageNotFound.xhtml
-rename from suite/components/sidebar/content/PageNotFound.xul
-rename to suite/components/sidebar/content/PageNotFound.xhtml
-diff --git a/suite/components/sidebar/content/customize-panel.xul b/suite/components/sidebar/content/customize-panel.xhtml
-rename from suite/components/sidebar/content/customize-panel.xul
-rename to suite/components/sidebar/content/customize-panel.xhtml
-diff --git a/suite/components/sidebar/content/customize.xul b/suite/components/sidebar/content/customize.xhtml
-rename from suite/components/sidebar/content/customize.xul
-rename to suite/components/sidebar/content/customize.xhtml
-diff --git a/suite/components/sidebar/content/preview.xul b/suite/components/sidebar/content/preview.xhtml
-rename from suite/components/sidebar/content/preview.xul
-rename to suite/components/sidebar/content/preview.xhtml
-diff --git a/suite/components/sidebar/content/sidebarOverlay.xul b/suite/components/sidebar/content/sidebarOverlay.xhtml
-rename from suite/components/sidebar/content/sidebarOverlay.xul
-rename to suite/components/sidebar/content/sidebarOverlay.xhtml
-diff --git a/suite/components/sync/content/aboutSyncTabs.xul b/suite/components/sync/content/aboutSyncTabs.xhtml
-rename from suite/components/sync/content/aboutSyncTabs.xul
-rename to suite/components/sync/content/aboutSyncTabs.xhtml
-diff --git a/suite/components/sync/content/syncAddDevice.xul b/suite/components/sync/content/syncAddDevice.xhtml
-rename from suite/components/sync/content/syncAddDevice.xul
-rename to suite/components/sync/content/syncAddDevice.xhtml
-diff --git a/suite/components/sync/content/syncGenericChange.xul b/suite/components/sync/content/syncGenericChange.xhtml
-rename from suite/components/sync/content/syncGenericChange.xul
-rename to suite/components/sync/content/syncGenericChange.xhtml
-diff --git a/suite/components/sync/content/syncQuota.xul b/suite/components/sync/content/syncQuota.xhtml
-rename from suite/components/sync/content/syncQuota.xul
-rename to suite/components/sync/content/syncQuota.xhtml
-diff --git a/suite/components/sync/content/syncSetup.xul b/suite/components/sync/content/syncSetup.xhtml
-rename from suite/components/sync/content/syncSetup.xul
-rename to suite/components/sync/content/syncSetup.xhtml
-diff --git a/suite/components/tests/chrome/test_idcheck.xul b/suite/components/tests/chrome/test_idcheck.xhtml
-rename from suite/components/tests/chrome/test_idcheck.xul
-rename to suite/components/tests/chrome/test_idcheck.xhtml
-diff --git a/suite/extensions/debugQA/content/debugQAEditorOverlay.xul b/suite/extensions/debugQA/content/debugQAEditorOverlay.xhtml
-rename from suite/extensions/debugQA/content/debugQAEditorOverlay.xul
-rename to suite/extensions/debugQA/content/debugQAEditorOverlay.xhtml
-diff --git a/suite/extensions/debugQA/content/debugQAMenuOverlay.xul b/suite/extensions/debugQA/content/debugQAMenuOverlay.xhtml
-rename from suite/extensions/debugQA/content/debugQAMenuOverlay.xul
-rename to suite/extensions/debugQA/content/debugQAMenuOverlay.xhtml
-diff --git a/suite/extensions/debugQA/content/debugQANavigatorOverlay.xul b/suite/extensions/debugQA/content/debugQANavigatorOverlay.xhtml
-rename from suite/extensions/debugQA/content/debugQANavigatorOverlay.xul
-rename to suite/extensions/debugQA/content/debugQANavigatorOverlay.xhtml
-diff --git a/suite/extensions/debugQA/content/debugQATextEditorShell.xul b/suite/extensions/debugQA/content/debugQATextEditorShell.xhtml
-rename from suite/extensions/debugQA/content/debugQATextEditorShell.xul
-rename to suite/extensions/debugQA/content/debugQATextEditorShell.xhtml
-diff --git a/suite/mailnews/components/addrbook/content/abCardOverlay.xul b/suite/mailnews/components/addrbook/content/abCardOverlay.xhtml
-rename from suite/mailnews/components/addrbook/content/abCardOverlay.xul
-rename to suite/mailnews/components/addrbook/content/abCardOverlay.xhtml
-diff --git a/suite/mailnews/components/addrbook/content/abEditCardDialog.xul b/suite/mailnews/components/addrbook/content/abEditCardDialog.xhtml
-rename from suite/mailnews/components/addrbook/content/abEditCardDialog.xul
-rename to suite/mailnews/components/addrbook/content/abEditCardDialog.xhtml
-diff --git a/suite/mailnews/components/addrbook/content/abEditListDialog.xul b/suite/mailnews/components/addrbook/content/abEditListDialog.xhtml
-rename from suite/mailnews/components/addrbook/content/abEditListDialog.xul
-rename to suite/mailnews/components/addrbook/content/abEditListDialog.xhtml
-diff --git a/suite/mailnews/components/addrbook/content/abListOverlay.xul b/suite/mailnews/components/addrbook/content/abListOverlay.xhtml
-rename from suite/mailnews/components/addrbook/content/abListOverlay.xul
-rename to suite/mailnews/components/addrbook/content/abListOverlay.xhtml
-diff --git a/suite/mailnews/components/addrbook/content/abMailListDialog.xul b/suite/mailnews/components/addrbook/content/abMailListDialog.xhtml
-rename from suite/mailnews/components/addrbook/content/abMailListDialog.xul
-rename to suite/mailnews/components/addrbook/content/abMailListDialog.xhtml
-diff --git a/suite/mailnews/components/addrbook/content/abNewCardDialog.xul b/suite/mailnews/components/addrbook/content/abNewCardDialog.xhtml
-rename from suite/mailnews/components/addrbook/content/abNewCardDialog.xul
-rename to suite/mailnews/components/addrbook/content/abNewCardDialog.xhtml
-diff --git a/suite/mailnews/components/addrbook/content/abResultsPaneOverlay.xul b/suite/mailnews/components/addrbook/content/abResultsPaneOverlay.xhtml
-rename from suite/mailnews/components/addrbook/content/abResultsPaneOverlay.xul
-rename to suite/mailnews/components/addrbook/content/abResultsPaneOverlay.xhtml
-diff --git a/suite/mailnews/components/addrbook/content/abSelectAddressesDialog.xul b/suite/mailnews/components/addrbook/content/abSelectAddressesDialog.xhtml
-rename from suite/mailnews/components/addrbook/content/abSelectAddressesDialog.xul
-rename to suite/mailnews/components/addrbook/content/abSelectAddressesDialog.xhtml
-diff --git a/suite/mailnews/components/addrbook/content/addressbook-panel.xul b/suite/mailnews/components/addrbook/content/addressbook-panel.xhtml
-rename from suite/mailnews/components/addrbook/content/addressbook-panel.xul
-rename to suite/mailnews/components/addrbook/content/addressbook-panel.xhtml
-diff --git a/suite/mailnews/components/addrbook/content/addressbook.xul b/suite/mailnews/components/addrbook/content/addressbook.xhtml
-rename from suite/mailnews/components/addrbook/content/addressbook.xul
-rename to suite/mailnews/components/addrbook/content/addressbook.xhtml
-diff --git a/suite/mailnews/components/addrbook/content/prefs/pref-addressing.xul b/suite/mailnews/components/addrbook/content/prefs/pref-addressing.xhtml
-rename from suite/mailnews/components/addrbook/content/prefs/pref-addressing.xul
-rename to suite/mailnews/components/addrbook/content/prefs/pref-addressing.xhtml
-diff --git a/suite/mailnews/components/compose/content/mailComposeOverlay.xul b/suite/mailnews/components/compose/content/mailComposeOverlay.xhtml
-rename from suite/mailnews/components/compose/content/mailComposeOverlay.xul
-rename to suite/mailnews/components/compose/content/mailComposeOverlay.xhtml
-diff --git a/suite/mailnews/components/compose/content/messengercompose.xul b/suite/mailnews/components/compose/content/messengercompose.xhtml
-rename from suite/mailnews/components/compose/content/messengercompose.xul
-rename to suite/mailnews/components/compose/content/messengercompose.xhtml
-diff --git a/suite/mailnews/components/compose/content/msgComposeContextOverlay.xul b/suite/mailnews/components/compose/content/msgComposeContextOverlay.xhtml
-rename from suite/mailnews/components/compose/content/msgComposeContextOverlay.xul
-rename to suite/mailnews/components/compose/content/msgComposeContextOverlay.xhtml
-diff --git a/suite/mailnews/components/compose/content/prefs/pref-composing_messages.xul b/suite/mailnews/components/compose/content/prefs/pref-composing_messages.xhtml
-rename from suite/mailnews/components/compose/content/prefs/pref-composing_messages.xul
-rename to suite/mailnews/components/compose/content/prefs/pref-composing_messages.xhtml
-diff --git a/suite/mailnews/components/compose/content/prefs/pref-formatting.xul b/suite/mailnews/components/compose/content/prefs/pref-formatting.xhtml
-rename from suite/mailnews/components/compose/content/prefs/pref-formatting.xul
-rename to suite/mailnews/components/compose/content/prefs/pref-formatting.xhtml
-diff --git a/suite/mailnews/components/prefs/content/mailPrefsOverlay.xul b/suite/mailnews/components/prefs/content/mailPrefsOverlay.xhtml
-rename from suite/mailnews/components/prefs/content/mailPrefsOverlay.xul
-rename to suite/mailnews/components/prefs/content/mailPrefsOverlay.xhtml
-diff --git a/suite/mailnews/components/prefs/content/pref-character_encoding.xul b/suite/mailnews/components/prefs/content/pref-character_encoding.xhtml
-rename from suite/mailnews/components/prefs/content/pref-character_encoding.xul
-rename to suite/mailnews/components/prefs/content/pref-character_encoding.xhtml
-diff --git a/suite/mailnews/components/prefs/content/pref-junk.xul b/suite/mailnews/components/prefs/content/pref-junk.xhtml
-rename from suite/mailnews/components/prefs/content/pref-junk.xul
-rename to suite/mailnews/components/prefs/content/pref-junk.xhtml
-diff --git a/suite/mailnews/components/prefs/content/pref-mailnews.xul b/suite/mailnews/components/prefs/content/pref-mailnews.xhtml
-rename from suite/mailnews/components/prefs/content/pref-mailnews.xul
-rename to suite/mailnews/components/prefs/content/pref-mailnews.xhtml
-diff --git a/suite/mailnews/components/prefs/content/pref-notifications.xul b/suite/mailnews/components/prefs/content/pref-notifications.xhtml
-rename from suite/mailnews/components/prefs/content/pref-notifications.xul
-rename to suite/mailnews/components/prefs/content/pref-notifications.xhtml
-diff --git a/suite/mailnews/components/prefs/content/pref-offline.xul b/suite/mailnews/components/prefs/content/pref-offline.xhtml
-rename from suite/mailnews/components/prefs/content/pref-offline.xul
-rename to suite/mailnews/components/prefs/content/pref-offline.xhtml
-diff --git a/suite/mailnews/components/prefs/content/pref-receipts.xul b/suite/mailnews/components/prefs/content/pref-receipts.xhtml
-rename from suite/mailnews/components/prefs/content/pref-receipts.xul
-rename to suite/mailnews/components/prefs/content/pref-receipts.xhtml
-diff --git a/suite/mailnews/components/prefs/content/pref-tags.xul b/suite/mailnews/components/prefs/content/pref-tags.xhtml
-rename from suite/mailnews/components/prefs/content/pref-tags.xul
-rename to suite/mailnews/components/prefs/content/pref-tags.xhtml
-diff --git a/suite/mailnews/components/prefs/content/pref-viewing_messages.xul b/suite/mailnews/components/prefs/content/pref-viewing_messages.xhtml
-rename from suite/mailnews/components/prefs/content/pref-viewing_messages.xul
-rename to suite/mailnews/components/prefs/content/pref-viewing_messages.xhtml
-diff --git a/suite/mailnews/content/ABSearchDialog.xul b/suite/mailnews/content/ABSearchDialog.xhtml
-rename from suite/mailnews/content/ABSearchDialog.xul
-rename to suite/mailnews/content/ABSearchDialog.xhtml
-diff --git a/suite/mailnews/content/FilterListDialog.xul b/suite/mailnews/content/FilterListDialog.xhtml
-rename from suite/mailnews/content/FilterListDialog.xul
-rename to suite/mailnews/content/FilterListDialog.xhtml
-diff --git a/suite/mailnews/content/SearchDialog.xul b/suite/mailnews/content/SearchDialog.xhtml
-rename from suite/mailnews/content/SearchDialog.xul
-rename to suite/mailnews/content/SearchDialog.xhtml
-diff --git a/suite/mailnews/content/browserRequest.xul b/suite/mailnews/content/browserRequest.xhtml
-rename from suite/mailnews/content/browserRequest.xul
-rename to suite/mailnews/content/browserRequest.xhtml
-diff --git a/suite/mailnews/content/folderPane.xul b/suite/mailnews/content/folderPane.xhtml
-rename from suite/mailnews/content/folderPane.xul
-rename to suite/mailnews/content/folderPane.xhtml
-diff --git a/suite/mailnews/content/mailEditorOverlay.xul b/suite/mailnews/content/mailEditorOverlay.xhtml
-rename from suite/mailnews/content/mailEditorOverlay.xul
-rename to suite/mailnews/content/mailEditorOverlay.xhtml
-diff --git a/suite/mailnews/content/mailKeysOverlay.xul b/suite/mailnews/content/mailKeysOverlay.xhtml
-rename from suite/mailnews/content/mailKeysOverlay.xul
-rename to suite/mailnews/content/mailKeysOverlay.xhtml
-diff --git a/suite/mailnews/content/mailOverlay.xul b/suite/mailnews/content/mailOverlay.xhtml
-rename from suite/mailnews/content/mailOverlay.xul
-rename to suite/mailnews/content/mailOverlay.xhtml
-diff --git a/suite/mailnews/content/mailTasksOverlay.xul b/suite/mailnews/content/mailTasksOverlay.xhtml
-rename from suite/mailnews/content/mailTasksOverlay.xul
-rename to suite/mailnews/content/mailTasksOverlay.xhtml
-diff --git a/suite/mailnews/content/mailViewList.xul b/suite/mailnews/content/mailViewList.xhtml
-rename from suite/mailnews/content/mailViewList.xul
-rename to suite/mailnews/content/mailViewList.xhtml
-diff --git a/suite/mailnews/content/mailViewSetup.xul b/suite/mailnews/content/mailViewSetup.xhtml
-rename from suite/mailnews/content/mailViewSetup.xul
-rename to suite/mailnews/content/mailViewSetup.xhtml
-diff --git a/suite/mailnews/content/mailWindowOverlay.xul b/suite/mailnews/content/mailWindowOverlay.xhtml
-rename from suite/mailnews/content/mailWindowOverlay.xul
-rename to suite/mailnews/content/mailWindowOverlay.xhtml
-diff --git a/suite/mailnews/content/messageWindow.xul b/suite/mailnews/content/messageWindow.xhtml
-rename from suite/mailnews/content/messageWindow.xul
-rename to suite/mailnews/content/messageWindow.xhtml
-diff --git a/suite/mailnews/content/messenger.xul b/suite/mailnews/content/messenger.xhtml
-rename from suite/mailnews/content/messenger.xul
-rename to suite/mailnews/content/messenger.xhtml
-diff --git a/suite/mailnews/content/msgHdrViewOverlay.xul b/suite/mailnews/content/msgHdrViewOverlay.xhtml
-rename from suite/mailnews/content/msgHdrViewOverlay.xul
-rename to suite/mailnews/content/msgHdrViewOverlay.xhtml
-diff --git a/suite/mailnews/content/searchTermOverlay.xul b/suite/mailnews/content/searchTermOverlay.xhtml
-rename from suite/mailnews/content/searchTermOverlay.xul
-rename to suite/mailnews/content/searchTermOverlay.xhtml
-diff --git a/suite/mailnews/content/threadPane.xul b/suite/mailnews/content/threadPane.xhtml
-rename from suite/mailnews/content/threadPane.xul
-rename to suite/mailnews/content/threadPane.xhtml

+ 0 - 6227
mzla/comm/TOP-1611647-2-fix-xul-references-suite.patch

@@ -1,6227 +0,0 @@
-# HG changeset patch
-# User Bill Gianopoulos <wgianopoulos@gmail.com>
-# Date 1697712739 14400
-#      Thu Oct 19 06:52:19 2023 -0400
-# Node ID aa370e119f11ae9c6df0dcd87822ab665f63193e
-# Parent  45168cc70907d2bdc98a39678c68c1213532af75
-Bug 1611647 - Port bug 1579952 - Fix references to xul files in suite.
-
-diff --git a/suite/app/profile/suite-prefs.js b/suite/app/profile/suite-prefs.js
---- a/suite/app/profile/suite-prefs.js
-+++ b/suite/app/profile/suite-prefs.js
-@@ -14,18 +14,18 @@
-  *  - Dashes are delimiters; use underscores instead.
-  *  - The first character after a period must be alphabetic.
-  *  - Computed values (e.g. 50 * 1024) don't work.
-  */
- 
- pref("startup.homepage_override_url","chrome://navigator-region/locale/region.properties");
- pref("general.skins.selectedSkin", "classic/1.0");
- 
--pref("browser.chromeURL","chrome://navigator/content/navigator.xul");
--pref("browser.hiddenWindowChromeURL", "chrome://navigator/content/hiddenWindow.xul");
-+pref("browser.chromeURL","chrome://navigator/content/navigator.xhtml");
-+pref("browser.hiddenWindowChromeURL", "chrome://navigator/content/hiddenWindow.xhtml");
- 
- // prompt for Master Password on startup
- pref("signon.startup.prompt",               true);
- 
- pref("general.startup.browser",             true);
- pref("general.startup.mail",                false);
- pref("general.startup.news",                false);
- pref("general.startup.editor",              false);
-@@ -750,18 +750,18 @@ pref("privacy.clearOnShutdown.siteSettin
- pref("privacy.warn_tracking_content", true);
- 
- // Switching this on will also spoof our user agent and other potentially
- // fingerprintable preferences to generic Firefox ones (see nsRFPService
- // introduced by bug 1330890 and meta-bug 1329996 dependencies).
- pref("privacy.resistFingerprinting", false);
- 
- // Show XUL error pages instead of alerts for errors
--pref("browser.xul.error_pages.enabled", true);
--pref("browser.xul.error_pages.expert_bad_cert", false);
-+pref("browser.xhtml.error_pages.enabled", true);
-+pref("browser.xhtml.error_pages.expert_bad_cert", false);
- 
- // Setting this pref to |true| forces BiDi UI menu items and keyboard shortcuts
- // to be exposed. By default, only expose it for bidi-associated system locales.
- pref("bidi.browser.ui", false);
- 
- // block popup windows
- pref("dom.disable_open_during_load",   true);
- // prevent JS from moving/resizing existing windows
-diff --git a/suite/base/content/certError.xhtml b/suite/base/content/certError.xhtml
---- a/suite/base/content/certError.xhtml
-+++ b/suite/base/content/certError.xhtml
-@@ -122,17 +122,17 @@
-                hidden="true">&certerror.whatShouldIDo.badStsCertExplanation;</p>
-             <span id="getMeOutOfHereButton"
-                   class="button"
-                   label="&certerror.getMeOutOfHere.label;"/>
-           </div>
-         </div>
- 
-         <!-- The following sections can be unhidden by default by setting the
--             "browser.xul.error_pages.expert_bad_cert" pref to true -->
-+             "browser.xhtml.error_pages.expert_bad_cert" pref to true -->
-         <div id="technicalContent" collapsed="true">
-           <h2 id="technicalContentHeading">&certerror.technical.heading;</h2>
-           <p id="technicalContentText"/>
-         </div>
- 
-         <div id="expertContent" collapsed="true">
-           <h2 id="expertContentHeading">&certerror.expert.heading;</h2>
-           <div>
-diff --git a/suite/base/content/findUtils.js b/suite/base/content/findUtils.js
---- a/suite/base/content/findUtils.js
-+++ b/suite/base/content/findUtils.js
-@@ -52,17 +52,17 @@ function findInPage(findInstData)
-   var findbar = document.getElementById("FindToolbar");
-   if (findbar && Services.prefs.getBoolPref("browser.findbar.enabled"))
-     findbar.onFindCommand();
-   else if ("findDialog" in window && window.findDialog) // is the find dialog up already?
-     window.findDialog.focus();
-   else
-   {
-     findInstData.init();
--    window.findDialog = window.openDialog("chrome://global/content/finddialog.xul", "_blank", "chrome,resizable=no,dependent=yes", findInstData);
-+    window.findDialog = window.openDialog("chrome://global/content/finddialog.xhtml", "_blank", "chrome,resizable=no,dependent=yes", findInstData);
-   }
- }
- 
- function findAgainInPage(findInstData, reverse)
- {
-   var findbar = document.getElementById("FindToolbar");
-   if (findbar && Services.prefs.getBoolPref("browser.findbar.enabled"))
-   {
-diff --git a/suite/base/content/nsContextMenu.js b/suite/base/content/nsContextMenu.js
---- a/suite/base/content/nsContextMenu.js
-+++ b/suite/base/content/nsContextMenu.js
-@@ -2,17 +2,17 @@
- /* 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/. */
- 
- /*------------------------------ nsContextMenu ---------------------------------
- |   This JavaScript "class" is used to implement the browser's content-area    |
- |   context menu.                                                              |
- |                                                                              |
--|   For usage, see references to this class in navigator.xul.                  |
-+|   For usage, see references to this class in navigator.xhtml.                |
- |                                                                              |
- |   Currently, this code is relatively useless for any other purpose.  In the  |
- |   longer term, this code will be restructured to make it more reusable.      |
- ------------------------------------------------------------------------------*/
- 
- var {BrowserUtils} =
-   ChromeUtils.import("resource://gre/modules/BrowserUtils.jsm");
- var {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
-@@ -1136,17 +1136,17 @@ nsContextMenu.prototype = {
-                  { referrerURI: doc.documentURIObject,
-                    triggeringPrincipal: this.target.nodePrincipal,
-                  });
-   },
- 
-   setDesktopBackground: function() {
-     let url = (new URL(this.target.ownerDocument.location.href)).pathname;
-     let imageName = url.substr(url.lastIndexOf("/") + 1);
--    openDialog("chrome://communicator/content/setDesktopBackground.xul",
-+    openDialog("chrome://communicator/content/setDesktopBackground.xhtml",
-                "_blank", "chrome,modal,titlebar,centerscreen", this.target,
-                imageName);
-   },
- 
-   // Save URL of clicked-on frame.
-   saveFrame: function() {
-     saveDocument(this.target.ownerDocument, true);
-   },
-@@ -1364,17 +1364,17 @@ nsContextMenu.prototype = {
-     }
-     else
-       PlacesUIUtils.showItemProperties(itemId,
-                                        PlacesUtils.bookmarks.TYPE_BOOKMARK);
-   },
- 
-   // Open Metadata window for node
-   showMetadata: function() {
--    window.openDialog("chrome://navigator/content/metadata.xul",
-+    window.openDialog("chrome://navigator/content/metadata.xhtml",
-                       "_blank",
-                       "scrollbars,resizable,chrome,dialog=no",
-                       this.target);
-   },
- 
-   ///////////////
-   // Utilities //
-   ///////////////
-diff --git a/suite/base/content/tasksOverlay.js b/suite/base/content/tasksOverlay.js
---- a/suite/base/content/tasksOverlay.js
-+++ b/suite/base/content/tasksOverlay.js
-@@ -30,17 +30,17 @@ function toDownloadManager()
-     .showDownloadManager();
- }
- 
- function toDataManager(aView)
- {
-   var useDlg = Services.prefs.getBoolPref("suite.manager.dataman.openAsDialog");
- 
-   if (useDlg) {
--    var url = "chrome://communicator/content/dataman/dataman.xul";
-+    var url = "chrome://communicator/content/dataman/dataman.xhtml";
-     var win = toOpenWindowByType("data:manager", url, "", aView);
-     if (win && aView)
-       win.gDataman.loadView(aView);
-     return;
-   }
- 
-   switchToTabHavingURI("about:data", true, function(browser) {
-     if (aView)
-@@ -49,38 +49,38 @@ function toDataManager(aView)
- }
- 
- function toEM(aView)
- {
-   var useDlg = Services.prefs.getBoolPref("suite.manager.addons.openAsDialog");
- 
-   if (useDlg) {
-     var view = aView ? { view: aView } : null;
--    var url = "chrome://mozapps/content/extensions/extensions.xul";
-+    var url = "chrome://mozapps/content/extensions/extensions.xhtml";
-     var win = toOpenWindowByType("Addons:Manager", url, "", view);
-     if (win && aView)
-       win.loadView(aView);
-     return;
-   }
- 
-   switchToTabHavingURI("about:addons", true, function(browser) {
-     if (aView)
-       browser.contentWindow.wrappedJSObject.loadView(aView);
-   });
- }
- 
- function toBookmarksManager()
- {
-   toOpenWindowByType("Places:Organizer",
--                     "chrome://communicator/content/places/places.xul");
-+                     "chrome://communicator/content/places/places.xhtml");
- }
- 
- function toJavaScriptConsole()
- {
--    toOpenWindowByType("suite:console", "chrome://communicator/content/console/console.xul");
-+    toOpenWindowByType("suite:console", "chrome://communicator/content/console/console.xhtml");
- }
- 
- function toOpenWindow( aWindow )
- {
-   try {
-     // Try to focus the previously focused window e.g. message compose body
-     aWindow.document.commandDispatcher.focusedWindow.focus();
-   } catch (e) {
-@@ -250,17 +250,17 @@ function toProfileManager()
-   if (promgrWin) {
-     promgrWin.focus();
-   } else {
-     var params = Cc["@mozilla.org/embedcomp/dialogparam;1"]
-                  .createInstance(Ci.nsIDialogParamBlock);
- 
-     params.SetNumberStrings(1);
-     params.SetString(0, "menu");
--    window.openDialog("chrome://communicator/content/profile/profileSelection.xul",
-+    window.openDialog("chrome://communicator/content/profile/profileSelection.xhtml",
-                 "",
-                 "centerscreen,chrome,titlebar,resizable",
-                 params);
-   }
-   // Here, we don't care about the result code
-   // that was returned in the param block.
- }
- 
-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
-@@ -21,17 +21,17 @@ XPCOMUtils.defineLazyModuleGetters(this,
- // XPCOMUtils.defineLazyGetter(this, "Weave", function() {
- //   let tmp = {};
- //   ChromeUtils.import("resource://services-sync/main.js", tmp);
- //   return tmp.Weave;
- // });
- 
- /*
-   Note: All Editor/Composer-related methods have been moved to editorApplicationOverlay.js,
--  so app windows that require those must include editorTasksOverlay.xul
-+  so app windows that require those must include editorTasksOverlay.xhtml
- */
- 
- /**
-  * Go into online/offline mode
-  **/
- 
- const kProxyManual = ["network.proxy.ftp",
-                       "network.proxy.http",
-@@ -219,27 +219,27 @@ function setOfflineUI(offline)
- function getBrowserURL() {
- 
-   try {
-     var url = Services.prefs.getCharPref("browser.chromeURL");
-     if (url)
-       return url;
-   } catch(e) {
-   }
--  return "chrome://navigator/content/navigator.xul";
-+  return "chrome://navigator/content/navigator.xhtml";
- }
- 
- function goPreferences(paneID)
- {
-   //check for an existing pref window and focus it; it's not application modal
-   var lastPrefWindow = Services.wm.getMostRecentWindow("mozilla:preferences");
-   if (lastPrefWindow)
-     lastPrefWindow.focus();
-   else
--    openDialog("chrome://communicator/content/pref/preferences.xul",
-+    openDialog("chrome://communicator/content/pref/preferences.xhtml",
-                "PrefWindow", "non-private,chrome,titlebar,dialog=no,resizable",
-                paneID);
- }
- 
- function goToggleToolbar(id, elementID)
- {
-   var toolbar = document.getElementById(id);
-   if (!toolbar)
-@@ -278,17 +278,17 @@ function SuiteCustomizeToolbar(aMenuItem
- function goCustomizeToolbar(toolbox)
- {
-   /* If the toolbox has a method "customizeInit" then call it first.
-      The optional "customizeDone" method will be invoked by the callback
-      from the Customize Window so we don't need to take care of that */
-   if ("customizeInit" in toolbox)
-     toolbox.customizeInit();
- 
--  var customizeURL = "chrome://communicator/content/customizeToolbar.xul";
-+  var customizeURL = "chrome://communicator/content/customizeToolbar.xhtml";
- 
-   gCustomizeSheet =
-     Services.prefs.getBoolPref("toolbar.customization.usesheet", false);
- 
-   if (gCustomizeSheet) {
-     var sheetFrame = document.getElementById("customizeToolbarSheetIFrame");
-     var panel = document.getElementById("customizeToolbarSheetPopup");
-     sheetFrame.hidden = false;
-@@ -1089,17 +1089,17 @@ function BrowserOnCommand(event)
-       switch (Services.prefs.getIntPref("browser.ssl_override_behavior", 2)) {
-         case 2 : // Pre-fetch & pre-populate.
-           params.prefetchCert = true;
-           // Fall through.
-         case 1 : // Pre-populate.
-           params.location = ownerDoc.location.href;
-       }
- 
--      window.openDialog('chrome://pippki/content/exceptionDialog.xul',
-+      window.openDialog('chrome://pippki/content/exceptionDialog.xhtml',
-                         '', 'chrome,centerscreen,modal', params);
- 
-       // If the user added the exception cert, attempt to reload the page
-       if (params.exceptionAdded)
-         ownerDoc.location.reload();
-     }
-     else if (buttonID == "getMeOutOfHereButton") {
-       // Redirect them to a known-functioning page, default start page
-@@ -1813,17 +1813,17 @@ function subscribeToFeedMiddleClick(href
- }
- 
- function OpenSearchEngineManager() {
-   var window = Services.wm.getMostRecentWindow("Browser:SearchManager");
-   if (window)
-     window.focus();
-   else {
-     var arg = { value: false };
--    openDialog("chrome://communicator/content/search/engineManager.xul",
-+    openDialog("chrome://communicator/content/search/engineManager.xhtml",
-                "_blank", "chrome,dialog,modal,centerscreen,resizable", arg);
-     if (arg.value)
-       loadAddSearchEngines();
-   }
- }
- 
- function loadAddSearchEngines() {
-   var newWindowPref = Services.prefs.getIntPref("browser.link.open_newwindow");
-diff --git a/suite/base/content/viewSourceOverlay.js b/suite/base/content/viewSourceOverlay.js
---- a/suite/base/content/viewSourceOverlay.js
-+++ b/suite/base/content/viewSourceOverlay.js
-@@ -1,17 +1,17 @@
- /* 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/. */
- 
- // onload make sure we adapt what's needed for partial source
- window.addEventListener("load", onLoadViewSourceOverlay);
- 
- function onLoadViewSourceOverlay() {
--  if (/viewPartialSource\.xul$/.test(document.location)) {
-+  if (/viewPartialSource\.xhtml$/.test(document.location)) {
-     // disable menu items that don't work since the selection is munged and
-     // the editor doesn't work for MathML
-     document.getElementById('cmd_savePage').setAttribute('disabled', 'true');
-     document.getElementById('cmd_editPage').setAttribute('disabled', 'true');
-   }
- }
- 
- // editPage() comes in from editorApplicationOverlay.js
-diff --git a/suite/base/content/viewSourceOverlay.xhtml b/suite/base/content/viewSourceOverlay.xhtml
---- a/suite/base/content/viewSourceOverlay.xhtml
-+++ b/suite/base/content/viewSourceOverlay.xhtml
-@@ -2,18 +2,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/. -->
- 
- <?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/skin/viewSourceOverlay.css" type="text/css"?>
- 
--<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/tasksOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/tasksOverlay.xhtml"?>
- 
- <!DOCTYPE overlay [
- 
- <!ENTITY % navDTD SYSTEM "chrome://navigator/locale/navigator.dtd">
- %navDTD;
- 
- ]>
- 
-diff --git a/suite/base/content/viewZoomOverlay.js b/suite/base/content/viewZoomOverlay.js
---- a/suite/base/content/viewZoomOverlay.js
-+++ b/suite/base/content/viewZoomOverlay.js
-@@ -321,17 +321,17 @@ var FullZoom = FullZoom || {
- 
-     if (aValue > ZoomManager.MAX)
-       return ZoomManager.MAX;
- 
-     return aValue;
-   }
- };
- 
--/***** init and helper functions for viewZoomOverlay.xul *****/
-+/***** init and helper functions for viewZoomOverlay.xhtml *****/
- window.addEventListener("load", registerZoomManager);
- window.addEventListener("unload", unregisterZoomManager);
- 
- function registerZoomManager() {
-   FullZoom.init();
- 
-   var zoomBundle = document.getElementById("bundle_viewZoom");
-   var zoomMenu = document.getElementById("menu_zoom");
-@@ -433,17 +433,17 @@ function updateZoomMenu() {
- }
- 
- function openZoomDialog() {
-   var zoomOther = document.getElementById("menu_zoomOther");
-   // open dialog and ask for new value
-   var o = {value: zoomOther.getAttribute("value"),
-            zoomMin: ZoomManager.MIN * 100,
-            zoomMax: ZoomManager.MAX * 100};
--  window.openDialog("chrome://communicator/content/askViewZoom.xul",
-+  window.openDialog("chrome://communicator/content/askViewZoom.xhtml",
-                     "", "chrome,modal,centerscreen", o);
-   if (o.zoomOK) {
-     zoomOther.setAttribute("value", o.value);
-     ZoomManager.zoom = o.value / 100;
-   }
-   return o.zoomOK;
- }
- 
-diff --git a/suite/base/jar.mn b/suite/base/jar.mn
---- a/suite/base/jar.mn
-+++ b/suite/base/jar.mn
-@@ -7,93 +7,93 @@
- toolkit.jar:
-    content/global/aboutSeaMonkey.xhtml                              (content/aboutSeaMonkey.xhtml)
- 
- comm.jar:
- % content communicator %content/communicator/ contentaccessible=yes
- % override chrome://browser/content/utilityOverlay.js chrome://communicator/content/utilityOverlay.js
- % override chrome://global/content/license.html chrome://communicator/content/license.html
- % override chrome://global/content/netError.xhtml chrome://communicator/content/certError.xhtml
--% overlay chrome://global/content/viewSource.xul chrome://communicator/content/viewSourceOverlay.xul
--% overlay chrome://global/content/viewPartialSource.xul chrome://communicator/content/viewSourceOverlay.xul
--% overlay chrome://editor/content/EdAdvancedEdit.xul chrome://communicator/content/helpEditorOverlay.xul
--% overlay chrome://editor/content/EdImageProps.xul chrome://communicator/content/helpEditorOverlay.xul
--% overlay chrome://editor/content/EditorPublish.xul chrome://communicator/content/helpEditorOverlay.xul
--% overlay chrome://editor/content/EditorPublishProgress.xul chrome://communicator/content/helpEditorOverlay.xul
--% overlay chrome://editor/content/EditorPublishSettings.xul chrome://communicator/content/helpEditorOverlay.xul
--% overlay chrome://editor/content/EdLinkProps.xul chrome://communicator/content/helpEditorOverlay.xul
--% overlay chrome://editor/content/EdTableProps.xul chrome://communicator/content/helpEditorOverlay.xul
--% overlay chrome://pippki/content/certManager.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://pippki/content/certViewer.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://pippki/content/changepassword.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://pippki/content/device_manager.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://pippki/content/choosetoken.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://pippki/content/clientauthask.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://pippki/content/crlImportDialog.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://pippki/content/deletecert.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://pippki/content/editcacert.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://pippki/content/editemailcert.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://pippki/content/editsslcert.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://pippki/content/escrowWarn.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://pippki/content/getp12password.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://pippki/content/setp12password.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://pippki/content/pref-crlupdate.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://pippki/content/serverCrlNextupdate.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://pippki/content/crlManager.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://pippki/content/resetpassword.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://pippki/content/downloadcert.xul chrome://communicator/content/helpSecurityOverlay.xul
--% overlay chrome://messenger/content/addressbook/pref-editdirectories.xul chrome://communicator/content/helpMessengerOverlay.xul
--% overlay chrome://messenger/content/addressbook/pref-directory-add.xul chrome://communicator/content/helpMessengerOverlay.xul
--% overlay chrome://messenger/content/AccountManager.xul chrome://communicator/content/helpMessengerOverlay.xul
--% overlay chrome://messenger/content/FilterEditor.xul chrome://communicator/content/helpMessengerOverlay.xul
--% overlay chrome://messenger/content/junkMailInfo.xul chrome://communicator/content/helpMessengerOverlay.xul
--% overlay chrome://messenger/content/msgSelectOfflineFolders.xul chrome://communicator/content/helpMessengerOverlay.xul
--% overlay chrome://messenger/content/subscribe.xul chrome://communicator/content/helpMessengerOverlay.xul
--% overlay chrome://messenger/content/mailViewList.xul chrome://communicator/content/helpMessengerOverlay.xul
--% overlay chrome://messenger/content/mailViewSetup.xul chrome://communicator/content/helpMessengerOverlay.xul
--% overlay chrome://messenger-smime/content/msgCompSecurityInfo.xul chrome://communicator/content/helpMessengerOverlay.xul
--% overlay chrome://messenger-smime/content/msgReadSecurityInfo.xul chrome://communicator/content/helpMessengerOverlay.xul
-+% overlay chrome://global/content/viewSource.xhtml chrome://communicator/content/viewSourceOverlay.xhtml
-+% overlay chrome://global/content/viewPartialSource.xhtml chrome://communicator/content/viewSourceOverlay.xhtml
-+% overlay chrome://editor/content/EdAdvancedEdit.xhtml chrome://communicator/content/helpEditorOverlay.xhtml
-+% overlay chrome://editor/content/EdImageProps.xhtml chrome://communicator/content/helpEditorOverlay.xhtml
-+% overlay chrome://editor/content/EditorPublish.xhtml chrome://communicator/content/helpEditorOverlay.xhtml
-+% overlay chrome://editor/content/EditorPublishProgress.xhtml chrome://communicator/content/helpEditorOverlay.xhtml
-+% overlay chrome://editor/content/EditorPublishSettings.xhtml chrome://communicator/content/helpEditorOverlay.xhtml
-+% overlay chrome://editor/content/EdLinkProps.xhtml chrome://communicator/content/helpEditorOverlay.xhtml
-+% overlay chrome://editor/content/EdTableProps.xhtml chrome://communicator/content/helpEditorOverlay.xhtml
-+% overlay chrome://pippki/content/certManager.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://pippki/content/certViewer.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://pippki/content/changepassword.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://pippki/content/device_manager.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://pippki/content/choosetoken.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://pippki/content/clientauthask.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://pippki/content/crlImportDialog.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://pippki/content/deletecert.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://pippki/content/editcacert.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://pippki/content/editemailcert.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://pippki/content/editsslcert.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://pippki/content/escrowWarn.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://pippki/content/getp12password.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://pippki/content/setp12password.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://pippki/content/pref-crlupdate.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://pippki/content/serverCrlNextupdate.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://pippki/content/crlManager.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://pippki/content/resetpassword.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://pippki/content/downloadcert.xhtml chrome://communicator/content/helpSecurityOverlay.xhtml
-+% overlay chrome://messenger/content/addressbook/pref-editdirectories.xhtml chrome://communicator/content/helpMessengerOverlay.xhtml
-+% overlay chrome://messenger/content/addressbook/pref-directory-add.xhtml chrome://communicator/content/helpMessengerOverlay.xhtml
-+% overlay chrome://messenger/content/AccountManager.xhtml chrome://communicator/content/helpMessengerOverlay.xhtml
-+% overlay chrome://messenger/content/FilterEditor.xhtml chrome://communicator/content/helpMessengerOverlay.xhtml
-+% overlay chrome://messenger/content/junkMailInfo.xhtml chrome://communicator/content/helpMessengerOverlay.xhtml
-+% overlay chrome://messenger/content/msgSelectOfflineFolders.xhtml chrome://communicator/content/helpMessengerOverlay.xhtml
-+% overlay chrome://messenger/content/subscribe.xhtml chrome://communicator/content/helpMessengerOverlay.xhtml
-+% overlay chrome://messenger/content/mailViewList.xhtml chrome://communicator/content/helpMessengerOverlay.xhtml
-+% overlay chrome://messenger/content/mailViewSetup.xhtml chrome://communicator/content/helpMessengerOverlay.xhtml
-+% overlay chrome://messenger-smime/content/msgCompSecurityInfo.xhtml chrome://communicator/content/helpMessengerOverlay.xhtml
-+% overlay chrome://messenger-smime/content/msgReadSecurityInfo.xhtml chrome://communicator/content/helpMessengerOverlay.xhtml
- % style about:addons chrome://communicator/content/extensionsOverlay.css
--% style chrome://mozapps/content/extensions/extensions.xul chrome://communicator/content/extensionsOverlay.css
-+% style chrome://mozapps/content/extensions/extensions.xhtml chrome://communicator/content/extensionsOverlay.css
-    content/communicator/about.js                                    (content/about.js)
-    content/communicator/about.xhtml                                 (content/about.xhtml)
-    content/communicator/aboutLife.xhtml                             (content/aboutLife.xhtml)
-    content/communicator/aboutPrivateBrowsing.css                    (content/aboutPrivateBrowsing.css)
-    content/communicator/aboutPrivateBrowsing.js                     (content/aboutPrivateBrowsing.js)
--   content/communicator/aboutPrivateBrowsing.xul                    (content/aboutPrivateBrowsing.xul)
--   content/communicator/askViewZoom.xul                             (content/askViewZoom.xul)
-+   content/communicator/aboutPrivateBrowsing.xhtml                  (content/aboutPrivateBrowsing.xhtml)
-+   content/communicator/askViewZoom.xhtml                           (content/askViewZoom.xhtml)
-    content/communicator/askViewZoom.js                              (content/askViewZoom.js)
-    content/communicator/blockedSite.js                              (content/blockedSite.js)
-    content/communicator/blockedSite.xhtml                           (content/blockedSite.xhtml)
-    content/communicator/certError.css                               (content/certError.css)
-    content/communicator/certError.js                                (content/certError.js)
-    content/communicator/certError.xhtml                             (content/certError.xhtml)
-    content/communicator/certError.xml                               (content/certError.xml)
--   content/communicator/charsetOverlay.xul                          (content/charsetOverlay.xul)
-+   content/communicator/charsetOverlay.xhtml                        (content/charsetOverlay.xhtml)
- *  content/communicator/communicator.css                            (content/communicator.css)
-    content/communicator/contentAreaClick.js                         (content/contentAreaClick.js)
--   content/communicator/contentAreaContextOverlay.xul               (content/contentAreaContextOverlay.xul)
-+   content/communicator/contentAreaContextOverlay.xhtml             (content/contentAreaContextOverlay.xhtml)
-    content/communicator/defaultClientDialog.js                      (content/defaultClientDialog.js)
--   content/communicator/defaultClientDialog.xul                     (content/defaultClientDialog.xul)
-+   content/communicator/defaultClientDialog.xhtml                   (content/defaultClientDialog.xhtml)
-    content/communicator/extensionsOverlay.css                       (content/extensionsOverlay.css)
-    content/communicator/findUtils.js                                (content/findUtils.js)
-    content/communicator/fullscreen-video.xhtml                      (content/fullscreen-video.xhtml)
-    content/communicator/gopherAddon.xhtml                           (content/gopherAddon.xhtml)
--   content/communicator/helpEditorOverlay.xul                       (content/helpEditorOverlay.xul)
--   content/communicator/helpMessengerOverlay.xul                    (content/helpMessengerOverlay.xul)
--   content/communicator/helpSecurityOverlay.xul                     (content/helpSecurityOverlay.xul)
-+   content/communicator/helpEditorOverlay.xhtml                     (content/helpEditorOverlay.xhtml)
-+   content/communicator/helpMessengerOverlay.xhtml                  (content/helpMessengerOverlay.xhtml)
-+   content/communicator/helpSecurityOverlay.xhtml                   (content/helpSecurityOverlay.xhtml)
- # the following file is a suite-specific override of the generic license.html, using suite/common/app-license.html as input:
- *  content/communicator/license.html                                (/toolkit/content/license.html)
-    content/communicator/nsContextMenu.js                            (content/nsContextMenu.js)
-    content/communicator/openLocation.js                             (content/openLocation.js)
--   content/communicator/openLocation.xul                            (content/openLocation.xul)
-+   content/communicator/openLocation.xhtml                          (content/openLocation.xhtml)
-    content/communicator/safeMode.js                                 (content/safeMode.js)
--   content/communicator/safeMode.xul                                (content/safeMode.xul)
-+   content/communicator/safeMode.xhtml                              (content/safeMode.xhtml)
-    content/communicator/tasksOverlay.js                             (content/tasksOverlay.js)
--*  content/communicator/tasksOverlay.xul                            (content/tasksOverlay.xul)
-+*  content/communicator/tasksOverlay.xhtml                          (content/tasksOverlay.xhtml)
-    content/communicator/utilityOverlay.js                           (content/utilityOverlay.js)
--*  content/communicator/utilityOverlay.xul                          (content/utilityOverlay.xul)
--   content/communicator/viewApplyThemeOverlay.xul                   (content/viewApplyThemeOverlay.xul)
-+*  content/communicator/utilityOverlay.xhtml                        (content/utilityOverlay.xhtml)
-+   content/communicator/viewApplyThemeOverlay.xhtml                 (content/viewApplyThemeOverlay.xhtml)
-    content/communicator/viewApplyThemeOverlay.js                    (content/viewApplyThemeOverlay.js)
-    content/communicator/viewSourceOverlay.js                        (content/viewSourceOverlay.js)
--   content/communicator/viewSourceOverlay.xul                       (content/viewSourceOverlay.xul)
--   content/communicator/viewZoomOverlay.xul                         (content/viewZoomOverlay.xul)
-+   content/communicator/viewSourceOverlay.xhtml                     (content/viewSourceOverlay.xhtml)
-+   content/communicator/viewZoomOverlay.xhtml                       (content/viewZoomOverlay.xhtml)
-    content/communicator/viewZoomOverlay.js                          (content/viewZoomOverlay.js)
-diff --git a/suite/browser/browser-places.js b/suite/browser/browser-places.js
---- a/suite/browser/browser-places.js
-+++ b/suite/browser/browser-places.js
-@@ -143,17 +143,17 @@ var StarUI = {
- 
-     if (this._overlayLoaded) {
-       await this._doShowEditBookmarkPanel(aNode, aAnchorElement, aPosition, aUrl);
-       return;
-     }
- 
-     this._overlayLoading = true;
-     document.loadOverlay(
--      "chrome://communicator/content/places/editBookmarkOverlay.xul",
-+      "chrome://communicator/content/places/editBookmarkOverlay.xhtml",
-       (aSubject, aTopic, aData) => {
-         // Move the header (star, title, button) into the grid,
-         // so that it aligns nicely with the other items (bug 484022).
-         let header = this._element("editBookmarkPanelHeader");
-         let rows = this._element("editBookmarkPanelGrid").lastChild;
-         rows.insertBefore(header, rows.firstChild);
-         header.hidden = false;
- 
-@@ -512,17 +512,17 @@ var PlacesCommandHook = {
-    *                      BookmarksMenu, BookmarksToolbar, UnfiledBookmarks,
-    *                      AllBookmarks, History.
-    */
-   showPlacesOrganizer(item) {
-     var organizer = Services.wm.getMostRecentWindow("Places:Organizer");
-     // Due to bug 528706, getMostRecentWindow can return closed windows.
-     if (!organizer || organizer.closed) {
-       // No currently open places window, so open one with the specified mode.
--      openDialog("chrome://communicator/content/places/places.xul",
-+      openDialog("chrome://communicator/content/places/places.xhtml",
-                  "", "chrome,toolbar=yes,dialog=no,resizable", item);
-     } else {
-       organizer.PlacesOrganizer.selectLeftPaneContainerByHierarchy(item);
-       organizer.focus();
-     }
-   },
- };
- 
-diff --git a/suite/browser/hiddenWindow.xhtml b/suite/browser/hiddenWindow.xhtml
---- a/suite/browser/hiddenWindow.xhtml
-+++ b/suite/browser/hiddenWindow.xhtml
-@@ -1,29 +1,29 @@
- <?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
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
--<?xul-overlay href="chrome://navigator/content/navigatorOverlay.xul"?>
-+<?xul-overlay href="chrome://navigator/content/navigatorOverlay.xhtml"?>
- 
- <!-- hiddenwindow is a "minimal" XUL window intended for creating the,
-      er, hidden window.  This window is never shown, but on platforms
-      which leave the app running after the last (visible) window is shut
-      down, this window does hold a browser menubar.
--       Though this window looks a lot like navigator.xul, that xul
-+       Though this window looks a lot like navigator.xhtml, that xul
-      is unsuitable because it's subject to the whims of its associated
-      appcore, which among other things causes it to load content documents
-      undesirable for this window.
-        Arguably a simpler menu structure could be substituted, but
-      the full one was included for now in anticipation of the whole thing
-      becoming an included file someday. -->
- 
--<!-- Localizable string definitions from navigator.xul. -->
-+<!-- Localizable string definitions from navigator.xhtml. -->
- <!DOCTYPE window [
- <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
- %brandDTD;
- <!ENTITY % navigatorDTD SYSTEM "chrome://navigator/locale/navigator.dtd" >
- %navigatorDTD;
- ]>
- 
- <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-@@ -39,17 +39,17 @@
-   <!-- keys are appended from the overlay -->
-   <keyset id="navKeys"/>
- 
-   <!-- commands are appended from the overlay -->
-   <commandset id="commands"/>
- 
-   <broadcasterset id="navBroadcasters"/>
- 
--  <!-- it's the whole navigator.xul menubar! hidden windows need to
-+  <!-- it's the whole navigator.xhtml menubar! hidden windows need to
-        have a menubar for situations where they're the only window remaining
-        on a platform that wants to leave the app running, like the Mac.
-   -->
-   <toolbox id="toolbox">
-     <menubar id="main-menubar" position="1"/>
-   </toolbox>
- 
- </window>
-diff --git a/suite/browser/jar.mn b/suite/browser/jar.mn
---- a/suite/browser/jar.mn
-+++ b/suite/browser/jar.mn
-@@ -3,39 +3,39 @@
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- comm.jar:
- % content navigator %content/navigator/
- % content navigator-region %content/navigator-region/
-    content/navigator/browser-places.js
-    content/navigator/content.js
-    content/navigator/fullScreen.js
--   content/navigator/hiddenWindow.xul
-+   content/navigator/hiddenWindow.xhtml
-    content/navigator/linkToolbarHandler.js
-    content/navigator/linkToolbarItem.js
-    content/navigator/linkToolbarOverlay.js
--   content/navigator/linkToolbarOverlay.xul
-+   content/navigator/linkToolbarOverlay.xhtml
-    content/navigator/mailNavigatorOverlay.js
--*  content/navigator/mailNavigatorOverlay.xul
-+*  content/navigator/mailNavigatorOverlay.xhtml
-    content/navigator/metadata.js
--   content/navigator/metadata.xul
-+   content/navigator/metadata.xhtml
-    content/navigator/navigator.css
-    content/navigator/navigator.js
--   content/navigator/navigator.xul
-+   content/navigator/navigator.xhtml
-    content/navigator/navigatorDD.js
--*  content/navigator/navigatorOverlay.xul
-+*  content/navigator/navigatorOverlay.xhtml
-    content/navigator/nsBrowserContentListener.js
-    content/navigator/nsBrowserStatusHandler.js
-    content/navigator/sessionHistoryUI.js
-    content/navigator/safeBrowsingOverlay.js
--   content/navigator/safeBrowsingOverlay.xul
-+   content/navigator/safeBrowsingOverlay.xhtml
-    content/navigator/tabbrowser.xml
-    content/navigator/urlbarBindings.xml
-    content/navigator/webDeveloperOverlay.js
--   content/navigator/webDeveloperOverlay.xul
-+   content/navigator/webDeveloperOverlay.xhtml
- 
-    content/navigator/pageinfo/feeds.js                              (pageinfo/feeds.js)
-    content/navigator/pageinfo/feeds.xml                             (pageinfo/feeds.xml)
-    content/navigator/pageinfo/pageInfo.css                          (pageinfo/pageInfo.css)
-    content/navigator/pageinfo/pageInfo.js                           (pageinfo/pageInfo.js)
--   content/navigator/pageinfo/pageInfo.xul                          (pageinfo/pageInfo.xul)
-+   content/navigator/pageinfo/pageInfo.xhtml                        (pageinfo/pageInfo.xhtml)
-    content/navigator/pageinfo/permissions.js                        (pageinfo/permissions.js)
-    content/navigator/pageinfo/security.js                           (pageinfo/security.js)
-diff --git a/suite/browser/mailNavigatorOverlay.js b/suite/browser/mailNavigatorOverlay.js
---- a/suite/browser/mailNavigatorOverlay.js
-+++ b/suite/browser/mailNavigatorOverlay.js
-@@ -64,17 +64,17 @@ function openExternalMailer(url, title) 
-                                      + encodeURIComponent(title) : "mailto:";
-   var uri = Services.io.newURI(mailto);
- 
-   extProtocolSvc.loadURI(uri);
- }
- 
- function openNewCardDialog()
- {
--  window.openDialog("chrome://messenger/content/addressbook/abNewCardDialog.xul",
-+  window.openDialog("chrome://messenger/content/addressbook/abNewCardDialog.xhtml",
-                     "", "chrome,modal,resizable=no,centerscreen");
- }
- 
- function goOpenNewMessage()
- {
-   if (gUseExternalMailto)
-   {
-     openExternalMailer();
-diff --git a/suite/browser/navigator.js b/suite/browser/navigator.js
---- a/suite/browser/navigator.js
-+++ b/suite/browser/navigator.js
-@@ -1672,17 +1672,17 @@ function QualifySearchTerm()
-     return gURLBar.value;
-   return "";
- }
- 
- function BrowserOpenWindow()
- {
-   //opens a window where users can select a web location to open
-   var params = { action: gPrivate ? "4" : "0", url: "" };
--  openDialog("chrome://communicator/content/openLocation.xul", "_blank",
-+  openDialog("chrome://communicator/content/openLocation.xhtml", "_blank",
-              "chrome,modal,titlebar", params);
- 
-   getShortcutOrURIAndPostData(params.url).then(data => {
-     switch (params.action) {
-       case "0": // current window
-         loadURI(data.url, null, data.postData, true);
-         break;
-       case "1": // new window
-@@ -2415,17 +2415,17 @@ function BrowserPageInfo(documentURL, in
-     if (win.document.documentElement
-            .getAttribute("relatedUrl") == documentURL) {
-       win.focus();
-       win.resetPageInfo(args);
-       return win;
-     }
-   }
-   // We didn't find a matching window, so open a new one.
--  return window.openDialog("chrome://navigator/content/pageinfo/pageInfo.xul",
-+  return window.openDialog("chrome://navigator/content/pageinfo/pageInfo.xhtml",
-                            "_blank",
-                            "chrome,dialog=no,resizable",
-                            args);
- }
- 
- function hiddenWindowStartup()
- {
-   // focus the hidden window
-@@ -2950,17 +2950,17 @@ function BrowserUploadFile()
-       // this gives the protocol handler the best chance of generating a
-       // properly formatted URI spec.  we pass null for the origin charset
-       // parameter since we want the URI to inherit the origin charset
-       // property from targetBaseURI.
-       var leafName = fp.fileURL.QueryInterface(Ci.nsIFileURL).file.leafName;
-       var targetURI = Services.io.newURI(leafName, null, targetBaseURI);
- 
-        // ok, start uploading...
--      openDialog("chrome://communicator/content/downloads/uploadProgress.xul", "",
-+      openDialog("chrome://communicator/content/downloads/uploadProgress.xhtml", "",
-                "titlebar,centerscreen,minimizable,dialog=no", fp.fileURL, targetURI);
-     } catch (e) {}
-   });
- }
- 
- /* This function is called whenever the file menu is about to be displayed.
-  * Enable the upload menu item if appropriate. */
- function updateFileUploadItem()
-@@ -3248,17 +3248,17 @@ function viewCertificate()
-     Cc["@mozilla.org/nsCertificateDialogs;1"]
-       .getService(Ci.nsICertificateDialogs)
-       .viewCert(window, cert);
-   }
- }
- 
- function openCertManager()
- {
--  toOpenWindowByType("mozilla:certmanager", "chrome://pippki/content/certManager.xul",
-+  toOpenWindowByType("mozilla:certmanager", "chrome://pippki/content/certManager.xhtml",
-                      "resizable,dialog=no,centerscreen");
- }
- 
- function onViewSecurityContextMenu()
- {
-   document.getElementById("viewCertificate").disabled = !getCert();
- }
- 
-diff --git a/suite/browser/navigator.xhtml b/suite/browser/navigator.xhtml
---- a/suite/browser/navigator.xhtml
-+++ b/suite/browser/navigator.xhtml
-@@ -3,22 +3,22 @@
- <!-- 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/. -->
- 
- 
- <?xml-stylesheet href="chrome://navigator/skin/" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/content/places/places.css" type="text/css"?>
- 
--<?xul-overlay href="chrome://navigator/content/navigatorOverlay.xul"?>
--<?xul-overlay href="chrome://navigator/content/linkToolbarOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/contentAreaContextOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/sidebar/sidebarOverlay.xul"?>
--<?xul-overlay href="chrome://navigator/content/safeBrowsingOverlay.xul"?>
--<?xul-overlay href="chrome://navigator/content/webDeveloperOverlay.xul"?>
-+<?xul-overlay href="chrome://navigator/content/navigatorOverlay.xhtml"?>
-+<?xul-overlay href="chrome://navigator/content/linkToolbarOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/contentAreaContextOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/sidebar/sidebarOverlay.xhtml"?>
-+<?xul-overlay href="chrome://navigator/content/safeBrowsingOverlay.xhtml"?>
-+<?xul-overlay href="chrome://navigator/content/webDeveloperOverlay.xhtml"?>
- 
- <!DOCTYPE window [
- <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
- %brandDTD;
- <!ENTITY % navigatorDTD SYSTEM "chrome://navigator/locale/navigator.dtd" >
- %navigatorDTD;
- ]>
- 
-@@ -532,17 +532,17 @@
-                          placespopup="true"
-                          tooltip="bhTooltip" popupsinherittooltip="true"
-                          context="placesContext"/>
-             </toolbarbutton>
-           </hbox>
-         </hbox>
-       </toolbaritem>
- 
--      <!-- see utilityOverlay.xul
-+      <!-- see utilityOverlay.xhtml
-       <toolbarbutton id="sync-button"/> -->
-     </toolbarpalette>
-   </toolbox>
- 
-   <hbox flex="1">
-     <vbox id="sidebar-box" class="chromeclass-extrachrome" domfullscreenhidden="true"/>
-     <splitter id="sidebar-splitter" class="chromeclass-extrachrome" domfullscreenhidden="true"/>
- 
-diff --git a/suite/browser/navigatorOverlay.xhtml b/suite/browser/navigatorOverlay.xhtml
---- a/suite/browser/navigatorOverlay.xhtml
-+++ b/suite/browser/navigatorOverlay.xhtml
-@@ -1,20 +1,20 @@
- <?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
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
--<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/viewZoomOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/viewApplyThemeOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/tasksOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/charsetOverlay.xul"?>
--<?xul-overlay href="chrome://navigator/content/mailNavigatorOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/viewZoomOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/viewApplyThemeOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/tasksOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/charsetOverlay.xhtml"?>
-+<?xul-overlay href="chrome://navigator/content/mailNavigatorOverlay.xhtml"?>
- 
- <!DOCTYPE overlay [
- <!ENTITY % navigatorDTD SYSTEM "chrome://navigator/locale/navigator.dtd" >
- %navigatorDTD;
- <!ENTITY % navigatorOverlayDTD SYSTEM "chrome://navigator/locale/navigatorOverlay.dtd">
- %navigatorOverlayDTD;
- <!ENTITY % contentAreaCommandsDTD SYSTEM "chrome://communicator/locale/contentAreaCommands.dtd" >
- %contentAreaCommandsDTD;
-@@ -277,17 +277,17 @@
-   </broadcasterset>
- 
-   <!-- Menu -->
-   <menubar id="main-menubar" class="chromeclass-menubar">
-     <menu id="menu_File">
-       <menupopup id="menu_FilePopup" onpopupshowing="updateCloseItems();getContentAreaFrameCount();updateSavePageItems();updateFileUploadItem();">
-         <menu id="menu_New">
-           <menupopup id="menu_NewPopup">
--            <!-- From utilityOverlay.xul -->
-+            <!-- From utilityOverlay.xhtml -->
-             <menuitem id="menu_newNavigatorTab" command="cmd_newNavigatorTab" key="key_newNavigatorTab"
-                       label="&tabCmd.label;" accesskey="&tabCmd.accesskey;"/>
-             <menuitem id="menu_newNavigator"/>
-             <menuitem id="menu_newPrivateWindow"/>
-             <menuseparator id="navBeginGlobalNewItems"/>
-             <menuitem id="menu_newEditor"    command="cmd_newEditor"/>
-           </menupopup>
-         </menu>
-@@ -395,17 +395,17 @@
-         <menuitem id="menuitem_reload"
-                   label="&reloadCmd.label;"
-                   accesskey="&reloadCmd.accesskey;"
-                   key="key_reload"
-                   oncommand="BrowserReload(event);"
-                   onclick="checkForMiddleClick(this, event);"/>
-         <menuseparator />
- 
--        <!-- overlayed from viewZoomOverlay.xul -->
-+        <!-- overlayed from viewZoomOverlay.xhtml -->
-         <menu id="menu_zoom"/>
- 
-         <menu id="menu_UseStyleSheet"
-               label="&useStyleSheetMenu.label;"
-               accesskey="&useStyleSheetMenu.accesskey;"
-               disabled="false"
-               observes="isImage">
-           <menupopup id="menupopup_stylesheetFill" onpopupshowing="stylesheetFillPopup(this);"
-@@ -435,17 +435,17 @@
-                   key="key_viewSource"
-                   command="View:PageSource"/>
-         <menuitem id="menuitem_pageInfoCmd"
-                   label="&pageInfoCmd.label;"
-                   accesskey="&pageInfoCmd.accesskey;"
-                   key="key_viewInfo"
-                   command="View:PageInfo"/>
-         <menuseparator />
--        <!-- overlayed from viewApplyThemeOverlay.xul -->
-+        <!-- overlayed from viewApplyThemeOverlay.xhtml -->
-         <menu id="menu_viewApplyTheme"/>
-       </menupopup>
-     </menu>
- 
-     <menu id="history-menu"
-           label="&goMenu.label;"
-           accesskey="&goMenu.accesskey;"
-           oncommand="gotoHistoryIndex(event);"
-diff --git a/suite/browser/nsBrowserContentHandler.js b/suite/browser/nsBrowserContentHandler.js
---- a/suite/browser/nsBrowserContentHandler.js
-+++ b/suite/browser/nsBrowserContentHandler.js
-@@ -156,27 +156,27 @@ function openWindow(parent, url, feature
- }
- 
- function openPreferences()
- {
-   var win = Services.wm.getMostRecentWindow("mozilla:preferences");
-   if (win)
-     win.focus();
-   else
--    openWindow(null, "chrome://communicator/content/pref/preferences.xul",
-+    openWindow(null, "chrome://communicator/content/pref/preferences.xhtml",
-                "chrome,titlebar,dialog=no,resizable", "");
- }
- 
- function getBrowserURL()
- {
-   try {
-     return Services.prefs.getCharPref("browser.chromeURL");
-   } catch (e) {
-   }
--  return "chrome://navigator/content/navigator.xul";
-+  return "chrome://navigator/content/navigator.xhtml";
- }
- 
- function handURIToExistingBrowser(aUri, aLocation, aFeatures, aTriggeringPrincipal)
- {
-   if (!shouldLoadURI(aUri))
-     return;
- 
-   var navWin = Services.wm.getMostRecentWindow("navigator:browser");
-@@ -261,31 +261,31 @@ var nsBrowserContentHandler = {
-           else if (RegExp.$3 == "new-tab")
-             location = nsIBrowserDOMWindow.OPEN_NEWTAB;
- 
-           handURIToExistingBrowser(uri, location, features,
-                                    Services.scriptSecurityManager.getSystemPrincipal());
-           break;
- 
-         case "mailto":
--          openWindow(null, "chrome://messenger/content/messengercompose/messengercompose.xul", features, RegExp.$2);
-+          openWindow(null, "chrome://messenger/content/messengercompose/messengercompose.xhtml", features, RegExp.$2);
-           break;
- 
-         case "xfedocommand":
-           switch (RegExp.$2.toLowerCase()) {
-           case "openbrowser":
-             openWindow(null, getBrowserURL(), features, RegExp.$3 || getURLToLoad());
-             break;
- 
-           case "openinbox":
-             openWindow(null, "chrome://messenger/content", features);
-             break;
- 
-           case "composemessage":
--            openWindow(null, "chrome://messenger/content/messengercompose/messengercompose.xul", features, RegExp.$3);
-+            openWindow(null, "chrome://messenger/content/messengercompose/messengercompose.xhtml", features, RegExp.$3);
-             break;
- 
-           default:
-             throw Cr.NS_ERROR_ABORT;
-           }
-           break;
- 
-         default:
-diff --git a/suite/browser/test/browser/browser_notification_tab_switching.js b/suite/browser/test/browser/browser_notification_tab_switching.js
---- a/suite/browser/test/browser/browser_notification_tab_switching.js
-+++ b/suite/browser/test/browser/browser_notification_tab_switching.js
-@@ -53,17 +53,17 @@ function onLoad() {
-     waitUntilNewWindowHasFocus();
-   });
- }
- 
- function onAlertShowing() {
-   info("Notification alert showing");
-   notification.removeEventListener("show", onAlertShowing);
- 
--  let alertWindow = findChromeWindowByURI("chrome://global/content/alerts/alert.xul");
-+  let alertWindow = findChromeWindowByURI("chrome://global/content/alerts/alert.xhtml");
-   if (!alertWindow) {
-     todo(false, "Notifications don't use XUL windows on all platforms.");
-     notification.close();
-     newWindowOpenedFromTab.close();
-     finish();
-     return;
-   }
-   gBrowser.tabContainer.addEventListener("TabSelect", onTabSelect);
-diff --git a/suite/chatzilla/ChangeLog b/suite/chatzilla/ChangeLog
---- a/suite/chatzilla/ChangeLog
-+++ b/suite/chatzilla/ChangeLog
-@@ -179,17 +179,17 @@ utils.js:
- mybot.js:
- - not built -
- - add dummy escape/unescape if it isn't there
- 
- handlers.js:
- - return false the first time through onClose(), and disconnect from all servers.  This makes sure we keep the window around long enough to send the QUIT messages.
- - close window if client.userClose is set and we disconnected from the last server.
- 
--chatzilla.xul:
-+chatzilla.xhtml:
- - hook up onclose event.
- - apply patch from 75226, fixes initial splitter position.
- 
- static.js:
- - copy client.userAgent code from chatzilla 0.8.1x
- - implement getConnectionCount()
- 
- #################################################################################
-@@ -268,17 +268,17 @@ utils.js:
- - add formatDateOffset() function to the result of a Date subtraction into english.
- - add arraySpeak() function to join an array into an english list.
- - add arrayContains() function to search an array for an element.
- - add arrayIndexOf() function to get the index of an element within the array.
- - modify hyphenateWord() function to search for a goo place to break the word with a -/+ 5 character fuzz factor.
- - add splitLongWord() function, similar to hyphenateWord, except returns an array.
- - fix stoopid paren bug in roundTo() function.
- 
--chatzilla.xul:
-+chatzilla.xhtml:
- - add broadcasters for the file menu items.
- - add keys for the file menu items.
- - add file menu. (bug 43850)
- - move options menu under file menu.
- - remove old view toolbar.
- - add crop="right" attribute to the userlist table to prevent horizontal scrollbars. (bug 56312)
- - whitespace fixes.
- - add input splitter for multiline-input mode.
-diff --git a/suite/chatzilla/jar.mn b/suite/chatzilla/jar.mn
---- a/suite/chatzilla/jar.mn
-+++ b/suite/chatzilla/jar.mn
-@@ -1,22 +1,22 @@
- # 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/.
- 
- chatzilla.jar:
- %       content chatzilla            %content/chatzilla/
- %       skin    chatzilla modern/1.0 %skin/modern/chatzilla/
--%       overlay chrome://navigator/content/navigator.xul chrome://chatzilla/content/browserOverlay.xul
--%       overlay chrome://communicator/content/tasksOverlay.xul chrome://chatzilla/content/chatzillaOverlay.xul
--%       overlay chrome://communicator/content/pref/preferences.xul chrome://chatzilla/content/prefsOverlay.xul
--%       overlay chrome://communicator/content/pref/pref-appearance.xul chrome://chatzilla/content/prefsOverlay.xul
--%       overlay chrome://chatzilla/content/chatzilla.xul chrome://communicator/content/utilityOverlay.xul
--%       overlay chrome://chatzilla/content/menus.xul chrome://communicator/content/tasksOverlay.xul
--%       style   chrome://communicator/content/customizeToolbar.xul chrome://chatzilla/skin/browserOverlay.css
-+%       overlay chrome://navigator/content/navigator.xhtml chrome://chatzilla/content/browserOverlay.xhtml
-+%       overlay chrome://communicator/content/tasksOverlay.xhtml chrome://chatzilla/content/chatzillaOverlay.xhtml
-+%       overlay chrome://communicator/content/pref/preferences.xhtml chrome://chatzilla/content/prefsOverlay.xhtml
-+%       overlay chrome://communicator/content/pref/pref-appearance.xhtml chrome://chatzilla/content/prefsOverlay.xhtml
-+%       overlay chrome://chatzilla/content/chatzilla.xhtml chrome://communicator/content/utilityOverlay.xhtml
-+%       overlay chrome://chatzilla/content/menus.xhtml chrome://communicator/content/tasksOverlay.xhtml
-+%       style   chrome://communicator/content/customizeToolbar.xhtml chrome://chatzilla/skin/browserOverlay.css
- 	content/chatzilla/lib/js/utils.js            (js/lib/utils.js)
- 	content/chatzilla/lib/js/events.js           (js/lib/events.js)
- 	content/chatzilla/lib/js/connection-xpcom.js (js/lib/connection-xpcom.js)
- 	content/chatzilla/lib/js/command-manager.js  (js/lib/command-manager.js)
- 	content/chatzilla/lib/js/pref-manager.js     (js/lib/pref-manager.js)
- 	content/chatzilla/lib/js/message-manager.js  (js/lib/message-manager.js)
- 	content/chatzilla/lib/js/menu-manager.js     (js/lib/menu-manager.js)
- 	content/chatzilla/lib/js/ident.js            (js/lib/ident.js) 
-@@ -27,52 +27,52 @@ chatzilla.jar:
- 	content/chatzilla/lib/js/json-serializer.js  (js/lib/json-serializer.js)
- 	content/chatzilla/lib/js/sts.js              (js/lib/sts.js)
- 	content/chatzilla/lib/js/text-serializer.js  (js/lib/text-serializer.js)
- 	content/chatzilla/lib/js/text-logger.js      (js/lib/text-logger.js)
- 	content/chatzilla/lib/js/chatzilla-protocol-script.js (js/lib/chatzilla-protocol-script.js)
- 	content/chatzilla/lib/js/protocol-handlers.jsm (js/lib/protocol-handlers.jsm)
- 	content/chatzilla/lib/xul/munger.js          (xul/lib/munger.js) 
- 	content/chatzilla/lib/xul/tree-utils.js      (xul/lib/tree-utils.js) 
--	content/chatzilla/chatzilla.xul              (xul/content/chatzilla.xul) 
--	content/chatzilla/scripts.xul                (xul/content/scripts.xul) 
--	content/chatzilla/menus.xul                  (xul/content/menus.xul) 
--	content/chatzilla/popups.xul                 (xul/content/popups.xul) 
--	content/chatzilla/channels.xul               (xul/content/channels.xul) 
-+	content/chatzilla/chatzilla.xhtml            (xul/content/chatzilla.xhtml) 
-+	content/chatzilla/scripts.xhtml              (xul/content/scripts.xhtml) 
-+	content/chatzilla/menus.xhtml                (xul/content/menus.xhtml) 
-+	content/chatzilla/popups.xhtml               (xul/content/popups.xhtml) 
-+	content/chatzilla/channels.xhtml             (xul/content/channels.xhtml) 
- 	content/chatzilla/channels.js                (xul/content/channels.js) 
- 	content/chatzilla/output-window.html         (xul/content/output-window.html) 
- 	content/chatzilla/output-window.js           (xul/content/output-window.js) 
- 	content/chatzilla/commands.js                (xul/content/commands.js)     
- 	content/chatzilla/handlers.js                (xul/content/handlers.js) 
- 	content/chatzilla/prefs.js                   (xul/content/prefs.js) 
- 	content/chatzilla/messages.js                (xul/content/messages.js) 
- 	content/chatzilla/menus.js                   (xul/content/menus.js) 
- 	content/chatzilla/mungers.js                 (xul/content/mungers.js) 
- *	content/chatzilla/static.js                  (xul/content/static.js)
- 	content/chatzilla/networks.js                (xul/content/networks.js)
- 	content/chatzilla/networks-edit.css          (xul/content/networks-edit.css)
- 	content/chatzilla/networks-edit.js           (xul/content/networks-edit.js)
--	content/chatzilla/networks-edit.xul          (xul/content/networks-edit.xul)
-+	content/chatzilla/networks-edit.xhtml        (xul/content/networks-edit.xhtml)
- 	content/chatzilla/networks-server.js         (xul/content/networks-server.js)
--	content/chatzilla/networks-server.xul        (xul/content/networks-server.xul)
-+	content/chatzilla/networks-server.xhtml      (xul/content/networks-server.xhtml)
- 	content/chatzilla/dynamic.css                (xul/content/dynamic.css)
- 	content/chatzilla/output-base.css            (xul/content/output-base.css)
--	content/chatzilla/chatzillaOverlay.xul       (xul/content/chatzillaOverlay.xul) 
-+	content/chatzilla/chatzillaOverlay.xhtml     (xul/content/chatzillaOverlay.xhtml) 
- 	content/chatzilla/chatzillaOverlay.js        (xul/content/chatzillaOverlay.js)
--	content/chatzilla/browserOverlay.xul         (xul/content/browserOverlay.xul) 
--	content/chatzilla/prefsOverlay.xul           (xul/content/prefsOverlay.xul)
--	content/chatzilla/pref-irc-toolkit.xul       (xul/content/pref-irc-toolkit.xul)
--	content/chatzilla/config.xul                 (xul/content/config.xul)
--	content/chatzilla/config-add.xul             (xul/content/config-add.xul)
-+	content/chatzilla/browserOverlay.xhtml       (xul/content/browserOverlay.xhtml) 
-+	content/chatzilla/prefsOverlay.xhtml         (xul/content/prefsOverlay.xhtml)
-+	content/chatzilla/pref-irc-toolkit.xhtml     (xul/content/pref-irc-toolkit.xhtml)
-+	content/chatzilla/config.xhtml               (xul/content/config.xhtml)
-+	content/chatzilla/config-add.xhtml           (xul/content/config-add.xhtml)
- 	content/chatzilla/config.js                  (xul/content/config.js)
- 	content/chatzilla/config-add.js              (xul/content/config-add.js)
- 	content/chatzilla/config.css                 (xul/content/config.css)
- 	content/chatzilla/install-plugin/install-plugin.js          (xul/content/install-plugin/install-plugin.js)
--	content/chatzilla/install-plugin/install-plugin.xul         (xul/content/install-plugin/install-plugin.xul)
--	content/chatzilla/about/about.xul            (xul/content/about/about.xul)
-+	content/chatzilla/install-plugin/install-plugin.xhtml       (xul/content/install-plugin/install-plugin.xhtml)
-+	content/chatzilla/about/about.xhtml          (xul/content/about/about.xhtml)
- 	content/chatzilla/about/about.js             (xul/content/about/about.js)
- 	skin/modern/chatzilla/chatzilla.css          (xul/skin/chatzilla.css)
- 	skin/modern/chatzilla/chatzillaOverlay.css   (xul/skin/chatzillaOverlay.css)
- 	skin/modern/chatzilla/browserOverlay.css     (xul/skin/browserOverlay.css)
- 	skin/modern/chatzilla/channels.css           (xul/skin/channels.css)
- 	skin/modern/chatzilla/install-plugin.css     (xul/skin/install-plugin.css)
- 	skin/modern/chatzilla/networks-edit.css      (xul/skin/networks-edit.css)
- 	skin/modern/chatzilla/about.css              (xul/skin/about.css)
-diff --git a/suite/chatzilla/js/lib/chatzilla-service.js b/suite/chatzilla/js/lib/chatzilla-service.js
---- a/suite/chatzilla/js/lib/chatzilla-service.js
-+++ b/suite/chatzilla/js/lib/chatzilla-service.js
-@@ -87,17 +87,17 @@ function spawnChatZilla(uri, count)
- 
-     dump("cz-service: No windows, starting new one.\n");
-     // Ok, no available window, loading or otherwise, so start ChatZilla.
-     const args = new Object();
-     if (uri)
-         args.url = uri;
- 
-     hiddenWin.ChatZillaStarting = new Date();
--    hiddenWin.openDialog("chrome://chatzilla/content/chatzilla.xul", "_blank",
-+    hiddenWin.openDialog("chrome://chatzilla/content/chatzilla.xhtml", "_blank",
-                  "chrome,menubar,toolbar,status,resizable,dialog=no",
-                  args);
- 
-     return true;
- }
- 
- 
- function CommandLineService()
-diff --git a/suite/chatzilla/xul/content/chatzilla.xhtml b/suite/chatzilla/xul/content/chatzilla.xhtml
---- a/suite/chatzilla/xul/content/chatzilla.xhtml
-+++ b/suite/chatzilla/xul/content/chatzilla.xhtml
-@@ -4,19 +4,19 @@
-    - 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/. -->
- 
- <!DOCTYPE window SYSTEM "chrome://chatzilla/locale/chatzilla.dtd">
- 
- <?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
- <?xml-stylesheet href="chrome://chatzilla/skin/chatzilla.css" type="text/css"?>
- 
--<?xul-overlay href="chrome://chatzilla/content/scripts.xul"?>
--<?xul-overlay href="chrome://chatzilla/content/popups.xul"?>
--<?xul-overlay href="chrome://chatzilla/content/menus.xul"?>
-+<?xul-overlay href="chrome://chatzilla/content/scripts.xhtml"?>
-+<?xul-overlay href="chrome://chatzilla/content/popups.xhtml"?>
-+<?xul-overlay href="chrome://chatzilla/content/menus.xhtml"?>
- 
- <window id="chatzilla-window"
-   xmlns:html="http://www.w3.org/1999/xhtml"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:aaa="http://www.w3.org/2005/07/aaa"
-   xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-   orient="vertical" onload="onLoad();" onunload="onUnload();"
-   onclose="return onClose();" onmouseover="onMouseOver(event);"
-diff --git a/suite/chatzilla/xul/content/chatzillaOverlay.js b/suite/chatzilla/xul/content/chatzillaOverlay.js
---- a/suite/chatzilla/xul/content/chatzillaOverlay.js
-+++ b/suite/chatzilla/xul/content/chatzillaOverlay.js
-@@ -1,11 +1,11 @@
- /* 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/. */
- 
- function toIRC() 
- {
- 
--	toOpenWindowByType("irc:chatzilla", "chrome://chatzilla/content/chatzilla.xul");
-+	toOpenWindowByType("irc:chatzilla", "chrome://chatzilla/content/chatzilla.xhtml");
- 
- }
- 
-diff --git a/suite/chatzilla/xul/content/commands.js b/suite/chatzilla/xul/content/commands.js
---- a/suite/chatzilla/xul/content/commands.js
-+++ b/suite/chatzilla/xul/content/commands.js
-@@ -1464,17 +1464,17 @@ function cmdNetworks(e)
- 
-     wrapper.appendChild(spanb);
-     display(wrapper, MT_INFO);
- }
- 
- function cmdEditNetworks(e)
- {
-     toOpenWindowByType("irc:chatzilla:networks",
--                       "chrome://chatzilla/content/networks-edit.xul",
-+                       "chrome://chatzilla/content/networks-edit.xhtml",
-                        "chrome,resizable,dialog", client);
- }
- 
- function cmdServer(e)
- {
-     let scheme = (e.command.name == "sslserver") ? "ircs" : "irc";
- 
-     var ary = e.hostname.match(/^(.*):(\d+)$/);
-@@ -1491,17 +1491,17 @@ function cmdServer(e)
- }
- 
- function cmdSSLException(e)
- {
-     var opts = "chrome,centerscreen,modal";
-     var location = e.hostname ? e.hostname + ':' + e.port : undefined;
-     var args = {location: location, prefetchCert: true};
- 
--    window.openDialog("chrome://pippki/content/exceptionDialog.xul",
-+    window.openDialog("chrome://pippki/content/exceptionDialog.xhtml",
-                       "", opts, args);
- 
-     if (!args.exceptionAdded)
-         return;
- 
-     if (e.connect)
-     {
-         // When we come via the inline button, we just want to reconnect
-@@ -2393,17 +2393,17 @@ function cmdJoin(e)
-     {
-         if (client.joinDialog)
-         {
-             client.joinDialog.setNetwork(e.network);
-             client.joinDialog.focus();
-             return;
-         }
- 
--        window.openDialog("chrome://chatzilla/content/channels.xul", "",
-+        window.openDialog("chrome://chatzilla/content/channels.xhtml", "",
-                           "resizable=yes",
-                           { client: client, network: e.network || null,
-                             opener: window });
-         return null;
-     }
- 
-     var chan;
-     if (!e.channelToJoin)
-@@ -2781,17 +2781,17 @@ function cmdTopic(e)
- 
- function cmdAbout(e)
- {
-     if (e.source)
-     {
-         if ("aboutDialog" in client)
-             return client.aboutDialog.focus();
- 
--        window.openDialog("chrome://chatzilla/content/about/about.xul", "",
-+        window.openDialog("chrome://chatzilla/content/about/about.xhtml", "",
-                           "chrome,dialog", { client: client });
-     }
-     else
-     {
-         var ver = CIRCServer.prototype.VERSION_RPLY;
-         client.munger.getRule(".inline-buttons").enabled = true;
-         display(getMsg(MSG_ABOUT_VERSION, [ver, "about"]));
-         display(MSG_ABOUT_HOMEPAGE);
-@@ -3867,17 +3867,17 @@ function cmdDoCommand(e)
-         // Open SeaMonkey preferences.
-         goPreferences("navigator_pane");
-     }
-     else if (e.cmdName == "cmd_chatzillaPrefs")
-     {
-         var prefWin = getWindowByType("irc:chatzilla:config");
-         if (!prefWin)
-         {
--            window.openDialog('chrome://chatzilla/content/config.xul', '',
-+            window.openDialog('chrome://chatzilla/content/config.xhtml', '',
-                               'chrome,resizable,dialog=no', window);
-         }
-         else
-         {
-             prefWin.focus();
-         }
-     }
-     else if (e.cmdName == "cmd_selectAll")
-@@ -4579,17 +4579,17 @@ function cmdInputTextDirection(e)
-             client.input.setAttribute("dir", "ltr");
-     }
- 
-     return true;
- }
- 
- function cmdInstallPlugin(e)
- {
--    var ipURL = "chrome://chatzilla/content/install-plugin/install-plugin.xul";
-+    var ipURL = "chrome://chatzilla/content/install-plugin/install-plugin.xhtml";
-     var ctx = {};
-     var pluginDownloader =
-     {
-         onStartRequest: function _onStartRequest(request, context)
-         {
-             var tempName = "plugin-install.temp";
-             if (urlMatches)
-                 tempName += urlMatches[2];
-diff --git a/suite/chatzilla/xul/content/config.js b/suite/chatzilla/xul/content/config.js
---- a/suite/chatzilla/xul/content/config.js
-+++ b/suite/chatzilla/xul/content/config.js
-@@ -1572,17 +1572,17 @@ function pwin_onAddObject()
-         case "PrefUser":
-             rv.type = "user";
-             rv.net = this.currentObject.parent.parent.parent.unicodeName;
-             rv.chan = this.currentObject.parent.unicodeName;
-             break;
-     }
-     
-     // Show add dialog, passing the data object along.
--    window.openDialog("config-add.xul", "cz-config-add", "chrome,dialog,modal", rv);
-+    window.openDialog("config-add.xhtml", "cz-config-add", "chrome,dialog,modal", rv);
-     
-     if (!rv.ok)
-         return;
- 
-     /* Ok, so what type did they want again?
-      * 
-      * NOTE: The param |true| in the object creation calls is for |force|. It
-      *       causes the hidden pref to be set for the objects so they are shown
-diff --git a/suite/chatzilla/xul/content/networks-edit.js b/suite/chatzilla/xul/content/networks-edit.js
---- a/suite/chatzilla/xul/content/networks-edit.js
-+++ b/suite/chatzilla/xul/content/networks-edit.js
-@@ -329,17 +329,17 @@ var gNetworkWindow = {
-     let id;
-     let server;
-     if (aItem) {
-       id = aItem.getAttribute("server_id");
-       server = this.networkList[network].servers[id];
-     }
- 
-     let args = { server: server, result: false };
--    window.openDialog("chrome://chatzilla/content/networks-server.xul",
-+    window.openDialog("chrome://chatzilla/content/networks-server.xhtml",
-                       "serverEdit", "chrome,titlebar,modal,centerscreen", args);
-     // Now update the server which was just added / edited and select it.
-     if (args.result) {
-       if (server) {
-         this.networkList[network].servers[id] = args.server;
-       } else {
-         id = this.networkList[network].servers.length;
-         this.networkList[network].servers.push(args.server);
-diff --git a/suite/chatzilla/xul/content/pref-irc-toolkit.xhtml b/suite/chatzilla/xul/content/pref-irc-toolkit.xhtml
---- a/suite/chatzilla/xul/content/pref-irc-toolkit.xhtml
-+++ b/suite/chatzilla/xul/content/pref-irc-toolkit.xhtml
-@@ -11,14 +11,14 @@
-   <prefpane id="chatzilla_pane"
-             label="&pref-irc.window.title;">
- 
-     <label>&pref-irc.open.desc;</label>
-     <separator/>
-     <hbox pack="center">
-       <button label="&pref-irc.open.label;" accesskey="&pref-irc.open.accesskey;"
-               oncommand="this.disabled = true;
--                         window.openDialog('chrome://chatzilla/content/config.xul',
-+                         window.openDialog('chrome://chatzilla/content/config.xhtml',
-                                            '', 'chrome,modal,resizable');
-                          this.disabled = false;"/>
-     </hbox>
-   </prefpane>
- </overlay>
-diff --git a/suite/chatzilla/xul/content/prefsOverlay.xhtml b/suite/chatzilla/xul/content/prefsOverlay.xhtml
---- a/suite/chatzilla/xul/content/prefsOverlay.xhtml
-+++ b/suite/chatzilla/xul/content/prefsOverlay.xhtml
-@@ -8,17 +8,17 @@
- 
- <overlay id="ovCZPrefs" 
-         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-   <treechildren id="prefsPanelChildren">
-     <treeitem id="chatzillaItem"
-               insertbefore="securityItem"
-               label="&pref-irc.window.title;"
-               prefpane="chatzilla_pane"
--              url="chrome://chatzilla/content/pref-irc-toolkit.xul"/>
-+              url="chrome://chatzilla/content/pref-irc-toolkit.xhtml"/>
-   </treechildren>
- 
-   <preferences id="appearance_preferences">
-     <preference id="general.startup.chat"
-                 name="general.startup.chat"
-                 type="bool"/>
-   </preferences>
-   <!-- Startup checkbox -->
-diff --git a/suite/components/bindings/notification.xml b/suite/components/bindings/notification.xml
---- a/suite/components/bindings/notification.xml
-+++ b/suite/components/bindings/notification.xml
-@@ -500,17 +500,17 @@
-             var browserWin;
-             var whereToOpen = Services.prefs.getIntPref("browser.link.open_external");
- 
-             if (whereToOpen != nsIBrowserDOMWindow.OPEN_NEWWINDOW) {
-               browserWin = Services.wm.getMostRecentWindow("navigator:browser");
-             }
- 
-             if (!browserWin) {
--              var browserURL = "chrome://navigator/content/navigator.xul";
-+              var browserURL = "chrome://navigator/content/navigator.xhtml";
-               try {
-                 browserURL = Services.prefs.getCharPref("browser.chromeURL");
-               } catch (ex) {}
- 
-               window.openDialog(browserURL, "_blank", "chrome,all,dialog=no", url);
-             } else {
-               if (whereToOpen == nsIBrowserDOMWindow.OPEN_CURRENTWINDOW)
-                 browserWin.loadURI(url);
-diff --git a/suite/components/bindings/prefwindow.xml b/suite/components/bindings/prefwindow.xml
---- a/suite/components/bindings/prefwindow.xml
-+++ b/suite/components/bindings/prefwindow.xml
-@@ -434,17 +434,17 @@
-           {
-             // Open topic in new window.
-             const params = Cc["@mozilla.org/embedcomp/dialogparam;1"]
-                              .createInstance(Ci.nsIDialogParamBlock);
-             params.SetNumberStrings(2);
-             params.SetString(0, helpFileURI);
-             params.SetString(1, topic);
-             Services.ww.openWindow(null,
--                                   "chrome://help/content/help.xul",
-+                                   "chrome://help/content/help.xhtml",
-                                    "_blank", 
-                                    "chrome,all,alwaysRaised,dialog=no",
-                                    params);
-           }
-         ]]>
-         </body>
-       </method>
-     </implementation>
-diff --git a/suite/components/console/content/console.xhtml b/suite/components/console/content/console.xhtml
---- a/suite/components/console/content/console.xhtml
-+++ b/suite/components/console/content/console.xhtml
-@@ -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/. -->
- 
- <?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/skin/console/console.css" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/content/console/console.css" type="text/css"?>
- 
--<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/tasksOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/tasksOverlay.xhtml"?>
- 
- <!DOCTYPE window SYSTEM "chrome://communicator/locale/console/console.dtd" >
- 
- <window id="JSConsoleWindow"
-         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-         title="&errorConsole.title;"
-         windowtype="suite:console"
-         width="640"
-diff --git a/suite/components/console/jar.mn b/suite/components/console/jar.mn
---- a/suite/components/console/jar.mn
-+++ b/suite/components/console/jar.mn
-@@ -1,9 +1,9 @@
- # 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/.
- 
- comm.jar:
-    content/communicator/console/consoleBindings.xml                 (content/consoleBindings.xml)
-    content/communicator/console/console.css                         (content/console.css)
-    content/communicator/console/console.js                          (content/console.js)
--   content/communicator/console/console.xul                         (content/console.xul)
-+   content/communicator/console/console.xhtml                       (content/console.xhtml)
-diff --git a/suite/components/console/jsconsole-clhandler.js b/suite/components/console/jsconsole-clhandler.js
---- a/suite/components/console/jsconsole-clhandler.js
-+++ b/suite/components/console/jsconsole-clhandler.js
-@@ -9,17 +9,17 @@ function jsConsoleHandler() {}
- jsConsoleHandler.prototype = {
-   handle: function clh_handle(cmdLine) {
-     if (!cmdLine.handleFlag("suiteconsole", false))
-       return;
- 
-     var console = Services.wm.getMostRecentWindow("suite:console");
-     if (!console) {
-       Services.ww.openWindow(null,
--        "chrome://communicator/content/console/console.xul", 
-+        "chrome://communicator/content/console/console.xhtml", 
-         "_blank", "chrome,dialog=no,all", cmdLine);
-     } else {
-       console.focus(); // the Error console was already open
-     }
- 
-     if (cmdLine.state == Ci.nsICommandLine.STATE_REMOTE_AUTO)
-       cmdLine.preventDefault = true;
-   },
-diff --git a/suite/components/dataman/content/dataman.xhtml b/suite/components/dataman/content/dataman.xhtml
---- a/suite/components/dataman/content/dataman.xhtml
-+++ b/suite/components/dataman/content/dataman.xhtml
-@@ -1,17 +1,17 @@
- <?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
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/content/dataman/dataman.css" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/skin/dataman/dataman.css" type="text/css"?>
--<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xhtml"?>
- 
- <!DOCTYPE page [
- <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
- %brandDTD;
- <!ENTITY % datamanDTD SYSTEM "chrome://communicator/locale/dataman/dataman.dtd">
- %datamanDTD;
- ]>
- 
-diff --git a/suite/components/dataman/jar.mn b/suite/components/dataman/jar.mn
---- a/suite/components/dataman/jar.mn
-+++ b/suite/components/dataman/jar.mn
-@@ -1,9 +1,9 @@
- # 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/.
- 
- comm.jar:
-    content/communicator/dataman/dataman.css                         (content/dataman.css)
-    content/communicator/dataman/dataman.js                          (content/dataman.js)
-    content/communicator/dataman/dataman.xml                         (content/dataman.xml)
--   content/communicator/dataman/dataman.xul                         (content/dataman.xul)
-+   content/communicator/dataman/dataman.xhtml                       (content/dataman.xhtml)
-diff --git a/suite/components/downloads/DownloadsCommon.jsm b/suite/components/downloads/DownloadsCommon.jsm
---- a/suite/components/downloads/DownloadsCommon.jsm
-+++ b/suite/components/downloads/DownloadsCommon.jsm
-@@ -64,17 +64,17 @@ const kDownloadsStringsRequiringPluralFo
-   otherDownloads3: true
- };
- 
- const kPartialDownloadSuffix = ".part";
- 
- const kPrefBranch = Services.prefs.getBranch("browser.download.");
- 
- const PREF_DM_BEHAVIOR = "browser.download.manager.behavior";
--const PROGRESS_DIALOG_URL = "chrome://communicator/content/downloads/progressDialog.xul";
-+const PROGRESS_DIALOG_URL = "chrome://communicator/content/downloads/progressDialog.xhtml";
- 
- var PrefObserver = {
-   QueryInterface: ChromeUtils.generateQI([Ci.nsIObserver,
-                                           Ci.nsISupportsWeakReference]),
-   getPref(name) {
-     try {
-       switch (typeof this.prefs[name]) {
-         case "boolean":
-@@ -534,17 +534,17 @@ var DownloadsCommon = {
-     message += "\n\n" + s.unblockTip2;
- 
-     Services.ww.registerNotification(function onOpen(subj, topic) {
-       if (topic == "domwindowopened" && subj instanceof Ci.nsIDOMWindow) {
-         // Make sure to listen for "DOMContentLoaded" because it is fired
-         // before the "load" event.
-         subj.addEventListener("DOMContentLoaded", function() {
-           if (subj.document.documentURI ==
--              "chrome://global/content/commonDialog.xul") {
-+              "chrome://global/content/commonDialog.xhtml") {
-             Services.ww.unregisterNotification(onOpen);
-             let dialog = subj.document.getElementById("commonDialog");
-             if (dialog) {
-               // Change the dialog to use a warning icon.
-               dialog.classList.add("alert-dialog");
-             }
-           }
-         }, {once: true});
-diff --git a/suite/components/downloads/content/downloadmanager.js b/suite/components/downloads/content/downloadmanager.js
---- a/suite/components/downloads/content/downloadmanager.js
-+++ b/suite/components/downloads/content/downloadmanager.js
-@@ -169,17 +169,17 @@ function showDownload(aDownload)
-   } else {
-     file = new FileUtils.File(aDownload.target.partFilePath);
-   }
-   DownloadsCommon.showDownloadedFile(file);
- }
- 
- function showProperties(aDownload)
- {
--  openDialog("chrome://communicator/content/downloads/progressDialog.xul",
-+  openDialog("chrome://communicator/content/downloads/progressDialog.xhtml",
-              null, "chrome,titlebar,centerscreen,minimizable=yes,dialog=no",
-              { wrappedJSObject: aDownload }, true);
- }
- 
- function onTreeSelect(aEvent)
- {
-   var selectionCount = gDownloadTreeView.selection.count;
-   if (selectionCount == 1) {
-diff --git a/suite/components/downloads/content/downloadmanager.xhtml b/suite/components/downloads/content/downloadmanager.xhtml
---- a/suite/components/downloads/content/downloadmanager.xhtml
-+++ b/suite/components/downloads/content/downloadmanager.xhtml
-@@ -1,18 +1,18 @@
- <?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
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/skin/downloads/downloadmanager.css" type="text/css"?>
- 
--<?xul-overlay href="chrome://communicator/content/tasksOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/tasksOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xhtml"?>
- 
- <!DOCTYPE window [
- <!ENTITY % downloadsDTD SYSTEM "chrome://communicator/locale/downloads/downloadmanager.dtd">
- %downloadsDTD;
- <!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
- %globalDTD;
- ]>
- 
-diff --git a/suite/components/downloads/content/progressDialog.xhtml b/suite/components/downloads/content/progressDialog.xhtml
---- a/suite/components/downloads/content/progressDialog.xhtml
-+++ b/suite/components/downloads/content/progressDialog.xhtml
-@@ -1,17 +1,17 @@
- <?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
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/skin/downloads/downloadmanager.css" type="text/css"?>
- 
--<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xhtml"?>
- 
- <!DOCTYPE window SYSTEM "chrome://communicator/locale/downloads/progressDialog.dtd">
- 
- <window id="dlProgressWindow"
-         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-         xmlns:html="http://www.w3.org/1999/xhtml"
-         onload="progressStartup();" onunload="progressShutdown();"
-         title="&progress.title;"
-diff --git a/suite/components/downloads/jar.mn b/suite/components/downloads/jar.mn
---- a/suite/components/downloads/jar.mn
-+++ b/suite/components/downloads/jar.mn
-@@ -1,14 +1,14 @@
- # 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/.
- 
- comm.jar:
- % content communicator %content/communicator/ contentaccessible=yes
-    content/communicator/downloads/downloadmanager.js                (content/downloadmanager.js)
--   content/communicator/downloads/downloadmanager.xul               (content/downloadmanager.xul)
-+   content/communicator/downloads/downloadmanager.xhtml             (content/downloadmanager.xhtml)
-    content/communicator/downloads/DownloadProgressListener.js       (content/DownloadProgressListener.js)
--   content/communicator/downloads/progressDialog.xul                (content/progressDialog.xul)
-+   content/communicator/downloads/progressDialog.xhtml              (content/progressDialog.xhtml)
-    content/communicator/downloads/progressDialog.js                 (content/progressDialog.js)
--   content/communicator/downloads/uploadProgress.xul                (content/uploadProgress.xul)
-+   content/communicator/downloads/uploadProgress.xhtml              (content/uploadProgress.xhtml)
-    content/communicator/downloads/uploadProgress.js                 (content/uploadProgress.js)
-    content/communicator/downloads/treeView.js                       (content/treeView.js)
-diff --git a/suite/components/downloads/tests/chrome/chrome.ini b/suite/components/downloads/tests/chrome/chrome.ini
---- a/suite/components/downloads/tests/chrome/chrome.ini
-+++ b/suite/components/downloads/tests/chrome/chrome.ini
-@@ -1,21 +1,21 @@
- [DEFAULT]
- 
--[test_action_keys_respect_focus.xul]
--[test_basic_functionality.xul]
--[test_cleanup_search.xul]
--[test_clear_button_disabled.xul]
--[test_close_download_manager.xul]
--[test_delete_key_cancels.xul]
--[test_delete_key_removes.xul]
--[test_drag.xul]
--[test_enter_dblclick_opens.xul]
--[test_multi_select.xul]
--[test_multiword_search.xul]
--[test_open_properties.xul]
--[test_removeDownload_updates_ui.xul]
--[test_search_clearlist.xul]
--[test_search_keys.xul]
--[test_select_all.xul]
--[test_space_key_pauses_resumes.xul]
--[test_space_key_retries.xul]
--[test_ui_stays_open_on_alert_clickback.xul]
-+[test_action_keys_respect_focus.xhtml]
-+[test_basic_functionality.xhtml]
-+[test_cleanup_search.xhtml]
-+[test_clear_button_disabled.xhtml]
-+[test_close_download_manager.xhtml]
-+[test_delete_key_cancels.xhtml]
-+[test_delete_key_removes.xhtml]
-+[test_drag.xhtml]
-+[test_enter_dblclick_opens.xhtml]
-+[test_multi_select.xhtml]
-+[test_multiword_search.xhtml]
-+[test_open_properties.xhtml]
-+[test_removeDownload_updates_ui.xhtml]
-+[test_search_clearlist.xhtml]
-+[test_search_keys.xhtml]
-+[test_select_all.xhtml]
-+[test_space_key_pauses_resumes.xhtml]
-+[test_space_key_retries.xhtml]
-+[test_ui_stays_open_on_alert_clickback.xhtml]
-diff --git a/suite/components/downloads/tests/chrome/test_drag.xhtml b/suite/components/downloads/tests/chrome/test_drag.xhtml
---- a/suite/components/downloads/tests/chrome/test_drag.xhtml
-+++ b/suite/components/downloads/tests/chrome/test_drag.xhtml
-@@ -38,17 +38,17 @@
-  *
-  * ***** END LICENSE BLOCK ***** */
- 
- /**
-  * Assure download manager can load valid list item as
-  * "application/moz-x-file", "text/uri-list" and "text/plain"
-  */
- 
--based on toolkit/mozapps/downloads/tests/chrome/test_bug_462172.xul
-+based on toolkit/mozapps/downloads/tests/chrome/test_bug_462172.xhtml
- https://bugzilla.mozilla.org/show_bug.cgi?id=462172
- 
- create a file with unique name
- create another file with unique name and delete it
- load into downloads database
- open download manager
- synthesize drag on both files
- missing file should not init drag
-diff --git a/suite/components/helpviewer/content/contextHelp.js b/suite/components/helpviewer/content/contextHelp.js
---- a/suite/components/helpviewer/content/contextHelp.js
-+++ b/suite/components/helpviewer/content/contextHelp.js
-@@ -33,17 +33,17 @@ function openHelp(topic, contentPack)
-     params.SetString(0, helpFileURI);
-     params.SetString(1, topic);
- 
-     let openFeatures = "chrome,all,dialog=no";
- 
-     if (AppConstants.platform == "win") {
-       openFeatures += ",alwaysRaised";
-     }
--    Services.ww.openWindow(null, "chrome://help/content/help.xul", "_blank",
-+    Services.ww.openWindow(null, "chrome://help/content/help.xhtml", "_blank",
-                            openFeatures, params);
-   }
- }
- 
- // setHelpFileURI - Sets the default content pack to use in the Help Viewer
- function setHelpFileURI(rdfURI)
- {
-   helpFileURI = rdfURI;
-diff --git a/suite/components/helpviewer/content/help.xhtml b/suite/components/helpviewer/content/help.xhtml
---- a/suite/components/helpviewer/content/help.xhtml
-+++ b/suite/components/helpviewer/content/help.xhtml
-@@ -1,16 +1,16 @@
- <?xml version="1.0" encoding="UTF-8"?>
- # 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/.
- 
- <?xml-stylesheet href="chrome://communicator/skin/helpviewer/help.css" type="text/css"?>
- 
--<?xul-overlay href="chrome://help/content/helpContextOverlay.xul"?>
-+<?xul-overlay href="chrome://help/content/helpContextOverlay.xhtml"?>
- <!DOCTYPE window [
-     <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
-     %brandDTD;
-     <!ENTITY % helpDTD SYSTEM "chrome://help/locale/help.dtd">
-     %helpDTD;
- ]>
- 
- <window id="help"
-diff --git a/suite/components/helpviewer/jar.mn b/suite/components/helpviewer/jar.mn
---- a/suite/components/helpviewer/jar.mn
-+++ b/suite/components/helpviewer/jar.mn
-@@ -1,11 +1,11 @@
- # 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/.
- 
- comm.jar:
- % content help %content/communicator/helpviewer/
--*  content/communicator/helpviewer/help.xul                         (content/help.xul)
-+*  content/communicator/helpviewer/help.xhtml                       (content/help.xhtml)
-    content/communicator/helpviewer/contextHelp.js                   (content/contextHelp.js)
-    content/communicator/helpviewer/help.js                          (content/help.js)
--*  content/communicator/helpviewer/helpContextOverlay.xul           (content/helpContextOverlay.xul)
-+*  content/communicator/helpviewer/helpContextOverlay.xhtml         (content/helpContextOverlay.xhtml)
- *  content/communicator/helpviewer/platformClasses.css              (content/platformClasses.css)
-diff --git a/suite/components/migration/SuiteProfileMigrator.js b/suite/components/migration/SuiteProfileMigrator.js
---- a/suite/components/migration/SuiteProfileMigrator.js
-+++ b/suite/components/migration/SuiteProfileMigrator.js
-@@ -27,17 +27,17 @@ ProfileMigrator.prototype = {
- 
-     let params = Cc["@mozilla.org/array;1"]
-                    .createInstance(Ci.nsIMutableArray);
-     params.appendElement(this._toString(key));
-     params.appendElement(migrator);
-     params.appendElement(aStartup);
- 
-     Services.ww.openWindow(null,
--                           "chrome://communicator/content/migration/migration.xul",
-+                           "chrome://communicator/content/migration/migration.xhtml",
-                            "_blank",
-                            "chrome,dialog,modal,centerscreen,titlebar",
-                            params);
-   },
- 
-   _toString: function PM__toString(aStr) {
-     let str = Cc["@mozilla.org/supports-string;1"]
-                 .createInstance(Ci.nsISupportsString);
-diff --git a/suite/components/migration/jar.mn b/suite/components/migration/jar.mn
---- a/suite/components/migration/jar.mn
-+++ b/suite/components/migration/jar.mn
-@@ -1,7 +1,7 @@
- # 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/.
- 
- comm.jar:
--  content/communicator/migration/migration.xul                     (content/migration.xul)
-+  content/communicator/migration/migration.xhtml                   (content/migration.xhtml)
-   content/communicator/migration/migration.js                      (content/migration.js)
-diff --git a/suite/components/nsAbout.js b/suite/components/nsAbout.js
---- a/suite/components/nsAbout.js
-+++ b/suite/components/nsAbout.js
-@@ -13,31 +13,31 @@ 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.xul",
-+  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.xul",
-+  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.xul",
-+  // 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();
-   },
- 
-diff --git a/suite/components/nsSuiteGlue.js b/suite/components/nsSuiteGlue.js
---- a/suite/components/nsSuiteGlue.js
-+++ b/suite/components/nsSuiteGlue.js
-@@ -86,17 +86,17 @@ const BOOKMARKS_BACKUP_IDLE_TIME_SEC = 1
- // per interval.
- const BOOKMARKS_BACKUP_MIN_INTERVAL_DAYS = 1;
- 
- // Devtools Preferences
- const DEBUGGER_REMOTE_ENABLED = "devtools.debugger.remote-enabled";
- const DEBUGGER_REMOTE_PORT = "devtools.debugger.remote-port";
- const DEBUGGER_FORCE_LOCAL = "devtools.debugger.force-local";
- const DEBUGGER_WIFI_VISIBLE = "devtools.remote.wifi.visible";
--const DOWNLOAD_MANAGER_URL = "chrome://communicator/content/downloads/downloadmanager.xul";
-+const DOWNLOAD_MANAGER_URL = "chrome://communicator/content/downloads/downloadmanager.xhtml";
- const PREF_FOCUS_WHEN_STARTING = "browser.download.manager.focusWhenStarting";
- const PREF_FLASH_COUNT = "browser.download.manager.flashCount";
- 
- var gDownloadManager;
- 
- // Constructor
- function SuiteGlue() {
-   XPCOMUtils.defineLazyServiceGetter(this, "_idleService",
-@@ -197,17 +197,17 @@ SuiteGlue.prototype = {
-          // the UI has gone should be finalized in _onQuitApplicationGranted.
-         this._dispose();
-         break;
-       case "profile-after-change":
-         this._onProfileAfterChange();
-         break;
-       case "chrome-document-global-created":
-         // Set up lwt, but only if the "lightweightthemes" attr is set on the root
--        // (i.e. in messenger.xul).
-+        // (i.e. in messenger.xhtml).
-         subject.addEventListener("DOMContentLoaded", () => {
-           if (subject.document.documentElement.hasAttribute("lightweightthemes")) {
-             new LightweightThemeConsumer(subject.document);
-           }
-         }, {once: true});
-         break;
-       case "final-ui-startup":
-         this._onProfileStartup();
-@@ -384,17 +384,17 @@ SuiteGlue.prototype = {
-     }
-   },
- 
-   // profile is available
-   _onProfileAfterChange: function()
-   {
-     // check if we're in safe mode
-     if (Services.appinfo.inSafeMode) {
--      Services.ww.openWindow(null, "chrome://communicator/content/safeMode.xul",
-+      Services.ww.openWindow(null, "chrome://communicator/content/safeMode.xhtml",
-                              "_blank", "chrome,centerscreen,modal,resizable=no", null);
-     }
-     this._copyDefaultProfileFiles();
-   },
- 
-   // profile startup handler (contains profile initialization routines)
-   _onProfileStartup: function()
-   {
-@@ -830,17 +830,17 @@ SuiteGlue.prototype = {
-                    .createInstance(Ci.nsIMutableArray);
-     let str = Cc["@mozilla.org/supports-string;1"]
-                 .createInstance(Ci.nsISupportsString);
-     args.appendElement(str);
-     str = Cc["@mozilla.org/supports-string;1"]
-             .createInstance(Ci.nsISupportsString);
-     str.data = Services.prefs.getCharPref(PREF_EM_NEW_ADDONS_LIST);
-     args.appendElement(str);
--    const EMURL = "chrome://mozapps/content/extensions/extensions.xul";
-+    const EMURL = "chrome://mozapps/content/extensions/extensions.xhtml";
-     // This window is the "first" to open.
-     // 'alwaysRaised' makes sure it stays in the foreground (though unfocused)
-     //   so it is noticed.
-     const EMFEATURES = "all,dialog=no,alwaysRaised";
-     Services.ww.openWindow(null, EMURL, "_blank", EMFEATURES, args);
- 
-     Services.prefs.clearUserPref(PREF_EM_NEW_ADDONS_LIST);
-   },
-@@ -1034,17 +1034,17 @@ SuiteGlue.prototype = {
-     if (ShellService) try {
-       var appTypes = ShellService.shouldBeDefaultClientFor;
- 
-       // Show the default client dialog only if we should check for the default
-       // client and we aren't already the default for the stored app types in
-       // shell.checkDefaultApps.
-       if (appTypes && ShellService.shouldCheckDefaultClient &&
-           !ShellService.isDefaultClient(true, appTypes)) {
--        aWindow.openDialog("chrome://communicator/content/defaultClientDialog.xul",
-+        aWindow.openDialog("chrome://communicator/content/defaultClientDialog.xhtml",
-                            "DefaultClient",
-                            "modal,centerscreen,chrome,resizable=no");
-       }
-     } catch (e) {}
-   },
- 
-   /**
-    * Initialize Places
-diff --git a/suite/components/permissions/jar.mn b/suite/components/permissions/jar.mn
---- a/suite/components/permissions/jar.mn
-+++ b/suite/components/permissions/jar.mn
-@@ -1,10 +1,10 @@
- # 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/.
- 
- comm.jar:
-    content/communicator/permissions/cookieViewer.js                 (content/cookieViewer.js)
--   content/communicator/permissions/cookieViewer.xul                (content/cookieViewer.xul)
-+   content/communicator/permissions/cookieViewer.xhtml              (content/cookieViewer.xhtml)
-    content/communicator/permissions/permissionsManager.js           (content/permissionsManager.js)
--   content/communicator/permissions/permissionsManager.xul          (content/permissionsManager.xul)
-+   content/communicator/permissions/permissionsManager.xhtml        (content/permissionsManager.xhtml)
-    content/communicator/permissions/permissionsUtils.js             (content/permissionsUtils.js)
-diff --git a/suite/components/places/PlacesUIUtils.jsm b/suite/components/places/PlacesUIUtils.jsm
---- a/suite/components/places/PlacesUIUtils.jsm
-+++ b/suite/components/places/PlacesUIUtils.jsm
-@@ -269,18 +269,18 @@ var PlacesUIUtils = {
-   showBookmarkDialog(aInfo, aParentWindow) {
-     // Preserve size attributes differently based on the fact the dialog has
-     // a folder picker or not, since it needs more horizontal space than the
-     // other controls.
-     let hasFolderPicker = !("hiddenRows" in aInfo) ||
-                           !aInfo.hiddenRows.includes("folderPicker");
-     // Use a different chrome url to persist different sizes.
-     let dialogURL = hasFolderPicker ?
--                    "chrome://communicator/content/places/bookmarkProperties2.xul" :
--                    "chrome://communicator/content/places/bookmarkProperties.xul";
-+                    "chrome://communicator/content/places/bookmarkProperties2.xhtml" :
-+                    "chrome://communicator/content/places/bookmarkProperties.xhtml";
- 
-     let features = "centerscreen,chrome,modal,resizable=yes";
- 
-     let topUndoEntry;
-     let batchBlockingDeferred;
- 
-     // Set the transaction manager into batching mode.
-     topUndoEntry = PlacesTransactions.topUndoEntry;
-@@ -639,17 +639,17 @@ var PlacesUIUtils = {
-                 browserWindow.whereToOpenLink(aEvent, false, true) : "window";
-     if (where == "window") {
-       // There is no browser window open, thus open a new one.
-       var uriList = PlacesUtils.toISupportsString(urls.join("|"));
-       var args = Cc["@mozilla.org/array;1"]
-                    .createInstance(Ci.nsIMutableArray);
-       args.appendElement(uriList);
-       browserWindow = Services.ww.openWindow(aWindow,
--                                             "chrome://navigator/content/navigator.xul",
-+                                             "chrome://navigator/content/navigator.xhtml",
-                                              null, "chrome,dialog=no,all", args);
-       return;
-     }
- 
-     var loadInBackground = where == "tabshifted";
-     // For consistency, we want all the bookmarks to open in new tabs, instead
-     // of having one of them replace the currently focused tab.  Hence we call
-     // loadTabs with aReplace set to false.
-diff --git a/suite/components/places/content/bookmarkProperties.xhtml b/suite/components/places/content/bookmarkProperties.xhtml
---- a/suite/components/places/content/bookmarkProperties.xhtml
-+++ b/suite/components/places/content/bookmarkProperties.xhtml
-@@ -4,18 +4,18 @@
-    - 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/. -->
- 
- <?xml-stylesheet href="chrome://communicator/skin/"?>
- <?xml-stylesheet href="chrome://communicator/content/places/places.css"?>
- <?xml-stylesheet href="chrome://communicator/skin/places/editBookmarkOverlay.css"?>
- <?xml-stylesheet href="chrome://communicator/skin/places/bookmarks.css"?>
- 
--<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/places/editBookmarkOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/places/editBookmarkOverlay.xhtml"?>
- 
- <!DOCTYPE dialog [
-   <!ENTITY % editBookmarkOverlayDTD SYSTEM "chrome://communicator/locale/places/editBookmarkOverlay.dtd">
-   %editBookmarkOverlayDTD;
- ]>
- 
- <dialog id="bookmarkproperties"
-         buttons="accept, cancel"
-diff --git a/suite/components/places/content/bookmarksPanel.xhtml b/suite/components/places/content/bookmarksPanel.xhtml
---- a/suite/components/places/content/bookmarksPanel.xhtml
-+++ b/suite/components/places/content/bookmarksPanel.xhtml
-@@ -3,18 +3,18 @@
-    - 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/. -->
- 
- <?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/skin/sidebar/sidebarListView.css" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/content/places/places.css"?>
- <?xml-stylesheet href="chrome://communicator/skin/places/bookmarks.css"?>
- 
--<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xhtml"?>
- 
- <!DOCTYPE page SYSTEM "chrome://communicator/locale/places/places.dtd">
- 
- <page id="bookmarksPanel"
-       xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-       xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-       onload="init();"
-       onunload="SidebarUtils.setMouseoverURL('');">
-diff --git a/suite/components/places/content/history-panel.js b/suite/components/places/content/history-panel.js
---- a/suite/components/places/content/history-panel.js
-+++ b/suite/components/places/content/history-panel.js
-@@ -72,15 +72,15 @@ function searchHistory(aInput) {
-     }
-   }
- 
-   options.sortingMode = sortingMode;
-   options.resultType = resultType;
-   options.includeHidden = !!aInput;
- 
-   // call load() on the tree manually
--  // instead of setting the place attribute in history-panel.xul
-+  // instead of setting the place attribute in history-panel.xhtml
-   // otherwise, we will end up calling load() twice
-   gHistoryTree.load([query], options);
- }
- 
- window.addEventListener("SidebarFocused",
-                         () => gSearchBox.focus());
-diff --git a/suite/components/places/content/history-panel.xhtml b/suite/components/places/content/history-panel.xhtml
---- a/suite/components/places/content/history-panel.xhtml
-+++ b/suite/components/places/content/history-panel.xhtml
-@@ -3,18 +3,18 @@
-    - 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/. -->
- 
- <?xml-stylesheet href="chrome://communicator/skin/" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/skin/sidebar/sidebarListView.css" type="text/css"?>
- <?xml-stylesheet href="chrome://communicator/content/places/places.css"?>
- <?xml-stylesheet href="chrome://communicator/skin/places/bookmarks.css"?>
- 
--<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xhtml"?>
- 
- <!DOCTYPE page [
- <!ENTITY % placesDTD SYSTEM "chrome://communicator/locale/places/places.dtd">
- %placesDTD;
- <!ENTITY % editMenuOverlayDTD SYSTEM "chrome://global/locale/editMenuOverlay.dtd">
- %editMenuOverlayDTD;
- ]>
- 
-diff --git a/suite/components/places/content/places.xhtml b/suite/components/places/content/places.xhtml
---- a/suite/components/places/content/places.xhtml
-+++ b/suite/components/places/content/places.xhtml
-@@ -6,21 +6,21 @@
- 
- <?xml-stylesheet href="chrome://communicator/content/places/places.css"?>
- <?xml-stylesheet href="chrome://communicator/content/places/organizer.css"?>
- 
- <?xml-stylesheet href="chrome://communicator/skin/"?>
- <?xml-stylesheet href="chrome://communicator/skin/places/bookmarks.css"?>
- <?xml-stylesheet href="chrome://communicator/skin/places/organizer.css"?>
- 
--<?xul-overlay href="chrome://communicator/content/places/editBookmarkOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/places/editBookmarkOverlay.xhtml"?>
- 
--<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/tasksOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/tasksOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xhtml"?>
- 
- <!DOCTYPE window [
- <!ENTITY % placesDTD SYSTEM "chrome://communicator/locale/places/places.dtd">
- %placesDTD;
- <!ENTITY % editMenuOverlayDTD SYSTEM "chrome://global/locale/editMenuOverlay.dtd">
- %editMenuOverlayDTD;
- <!ENTITY % navDTD SYSTEM "chrome://navigator/locale/navigator.dtd">
- %navDTD;
-diff --git a/suite/components/places/jar.mn b/suite/components/places/jar.mn
---- a/suite/components/places/jar.mn
-+++ b/suite/components/places/jar.mn
-@@ -1,30 +1,30 @@
- # 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/.
- 
- comm.jar:
- # Provide another URI for the bookmarkProperties dialog so we can persist the
- # attributes separately
--    content/communicator/places/bookmarkProperties2.xul       (content/bookmarkProperties.xul)
--*   content/communicator/places/places.xul                    (content/places.xul)
-+    content/communicator/places/bookmarkProperties2.xhtml     (content/bookmarkProperties.xhtml)
-+*   content/communicator/places/places.xhtml                  (content/places.xhtml)
-     content/communicator/places/places.js                     (content/places.js)
-     content/communicator/places/places.css                    (content/places.css)
-     content/communicator/places/organizer.css                 (content/organizer.css)
--    content/communicator/places/bookmarkProperties.xul        (content/bookmarkProperties.xul)
-+    content/communicator/places/bookmarkProperties.xhtml      (content/bookmarkProperties.xhtml)
-     content/communicator/places/bookmarkProperties.js         (content/bookmarkProperties.js)
--    content/communicator/places/placesOverlay.xul             (content/placesOverlay.xul)
-+    content/communicator/places/placesOverlay.xhtml           (content/placesOverlay.xhtml)
-     content/communicator/places/menu.xml                      (content/menu.xml)
-     content/communicator/places/tree.xml                      (content/tree.xml)
-     content/communicator/places/controller.js                 (content/controller.js)
-     content/communicator/places/treeView.js                   (content/treeView.js)
-     content/communicator/places/browserPlacesViews.js         (content/browserPlacesViews.js)
--# keep the Places version of the history sidebar at history/history-panel.xul
-+# keep the Places version of the history sidebar at history/history-panel.xhtml
- # to prevent having to worry about between versions of the browser
--*   content/communicator/history/history-panel.xul            (content/history-panel.xul)
-+*   content/communicator/history/history-panel.xhtml          (content/history-panel.xhtml)
-     content/communicator/places/history-panel.js              (content/history-panel.js)
- # ditto for the bookmarks sidebar
--    content/communicator/bookmarks/bookmarksPanel.xul         (content/bookmarksPanel.xul)
-+    content/communicator/bookmarks/bookmarksPanel.xhtml       (content/bookmarksPanel.xhtml)
-     content/communicator/bookmarks/bookmarksPanel.js          (content/bookmarksPanel.js)
-     content/communicator/bookmarks/sidebarUtils.js            (content/sidebarUtils.js)
--    content/communicator/places/editBookmarkOverlay.xul       (content/editBookmarkOverlay.xul)
-+    content/communicator/places/editBookmarkOverlay.xhtml     (content/editBookmarkOverlay.xhtml)
-     content/communicator/places/editBookmarkOverlay.js        (content/editBookmarkOverlay.js)
-diff --git a/suite/components/places/tests/browser/head.js b/suite/components/places/tests/browser/head.js
---- a/suite/components/places/tests/browser/head.js
-+++ b/suite/components/places/tests/browser/head.js
-@@ -10,17 +10,17 @@ registerCleanupFunction(function() {
-   let getter = PlacesUIUtils.__lookupGetter__("leftPaneFolderId");
-   if (cachedLeftPaneFolderIdGetter && typeof(getter) != "function")
-     PlacesUIUtils.__defineGetter__("leftPaneFolderId",
-                                    cachedLeftPaneFolderIdGetter);
- });
- 
- function openLibrary(callback) {
-   var library = window.openDialog(
--    "chrome://communicator/content/places/places.xul",
-+    "chrome://communicator/content/places/places.xhtml",
-     "", "chrome,toolbar=yes,dialog=no,resizable");
-   waitForFocus(function () {
-     callback(library);
-   }, library);
- }
- 
- /**
-  * Waits for completion of a clear history operation, before
-diff --git a/suite/components/places/tests/chrome/chrome.ini b/suite/components/places/tests/chrome/chrome.ini
---- a/suite/components/places/tests/chrome/chrome.ini
-+++ b/suite/components/places/tests/chrome/chrome.ini
-@@ -1,10 +1,10 @@
- [DEFAULT]
- support-files = head.js
- 
--[test_0_bug510634.xul]
--[test_0_multiple_left_pane.xul]
--[test_bug427633_no_newfolder_if_noip.xul]
--[test_bug485100-change-case-loses-tag.xul]
--[test_bug549192.xul]
--[test_bug549491.xul]
--[test_treeview_date.xul]
-+[test_0_bug510634.xhtml]
-+[test_0_multiple_left_pane.xhtml]
-+[test_bug427633_no_newfolder_if_noip.xhtml]
-+[test_bug485100-change-case-loses-tag.xhtml]
-+[test_bug549192.xhtml]
-+[test_bug549491.xhtml]
-+[test_treeview_date.xhtml]
-diff --git a/suite/components/places/tests/chrome/test_0_bug510634.xhtml b/suite/components/places/tests/chrome/test_0_bug510634.xhtml
---- a/suite/components/places/tests/chrome/test_0_bug510634.xhtml
-+++ b/suite/components/places/tests/chrome/test_0_bug510634.xhtml
-@@ -5,17 +5,17 @@
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://global/skin" type="text/css"?>
- <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
-                  type="text/css"?>
- 
- <?xml-stylesheet href="chrome://communicator/content/places/places.css"?>
- <?xml-stylesheet href="chrome://communicator/skin/places/organizer.css"?>
--<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xhtml"?>
- 
- <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-         title="510634: Wrong icons on bookmarks sidebar"
-         onload="runTest();">
- 
-   <script src="chrome://mochikit/content/MochiKit/packed.js" />
-   <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" />
- 
-diff --git a/suite/components/places/tests/chrome/test_0_multiple_left_pane.xhtml b/suite/components/places/tests/chrome/test_0_multiple_left_pane.xhtml
---- a/suite/components/places/tests/chrome/test_0_multiple_left_pane.xhtml
-+++ b/suite/components/places/tests/chrome/test_0_multiple_left_pane.xhtml
-@@ -10,17 +10,17 @@
- 
- <?xml-stylesheet href="chrome://global/skin" type="text/css"?>
- <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
-                  type="text/css"?>
- 
- <?xml-stylesheet href="chrome://communicator/content/places/places.css"?>
- <?xml-stylesheet href="chrome://communicator/skin/places/organizer.css"?>
- 
--<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xhtml"?>
- 
- <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-         title="Test handling of multiple left pane folders"
-         onload="runTest();">
- 
-   <script src="chrome://mochikit/content/MochiKit/packed.js" />
-   <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" />
- 
-diff --git a/suite/components/places/tests/chrome/test_bug427633_no_newfolder_if_noip.xhtml b/suite/components/places/tests/chrome/test_bug427633_no_newfolder_if_noip.xhtml
---- a/suite/components/places/tests/chrome/test_bug427633_no_newfolder_if_noip.xhtml
-+++ b/suite/components/places/tests/chrome/test_bug427633_no_newfolder_if_noip.xhtml
-@@ -7,18 +7,18 @@
- <?xml-stylesheet href="chrome://global/skin" type="text/css"?>
- <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
-                  type="text/css"?>
- 
- <?xml-stylesheet href="chrome://communicator/skin/places/editBookmarkOverlay.css"?>
- <?xml-stylesheet href="chrome://communicator/content/places/places.css"?>
- <?xml-stylesheet href="chrome://communicator/skin/places/organizer.css"?>
- 
--<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/places/editBookmarkOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/places/editBookmarkOverlay.xhtml"?>
- 
- <!DOCTYPE window [
-   <!ENTITY % editBookmarkOverlayDTD SYSTEM "chrome://communicator/locale/places/editBookmarkOverlay.dtd">
-   %editBookmarkOverlayDTD;
- ]>
- 
- <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-         title="Bug 427633 - Disable creating a New Folder in the bookmarks dialogs if insertionPoint is invalid"
-diff --git a/suite/components/places/tests/chrome/test_bug485100-change-case-loses-tag.xhtml b/suite/components/places/tests/chrome/test_bug485100-change-case-loses-tag.xhtml
---- a/suite/components/places/tests/chrome/test_bug485100-change-case-loses-tag.xhtml
-+++ b/suite/components/places/tests/chrome/test_bug485100-change-case-loses-tag.xhtml
-@@ -7,18 +7,18 @@
- <?xml-stylesheet href="chrome://global/skin" type="text/css"?>
- <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
-                  type="text/css"?>
- 
- <?xml-stylesheet href="chrome://communicator/skin/places/editBookmarkOverlay.css"?>
- <?xml-stylesheet href="chrome://communicator/content/places/places.css"?>
- <?xml-stylesheet href="chrome://communicator/skin/places/organizer.css"?>
- 
--<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/places/editBookmarkOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/places/editBookmarkOverlay.xhtml"?>
- 
- <!DOCTYPE window [
-   <!ENTITY % editBookmarkOverlayDTD SYSTEM "chrome://communicator/locale/places/editBookmarkOverlay.dtd">
-   %editBookmarkOverlayDTD;
- ]>
- 
- <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-         title="485100: Exchanging a letter of a tag name with its big/small equivalent removes tag from bookmark"
-diff --git a/suite/components/places/tests/chrome/test_bug549192.xhtml b/suite/components/places/tests/chrome/test_bug549192.xhtml
---- a/suite/components/places/tests/chrome/test_bug549192.xhtml
-+++ b/suite/components/places/tests/chrome/test_bug549192.xhtml
-@@ -6,17 +6,17 @@
-    -->
- 
- <?xml-stylesheet href="chrome://global/skin" type="text/css"?>
- <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
-                  type="text/css"?>
- 
- <?xml-stylesheet href="chrome://communicator/content/places/places.css"?>
- <?xml-stylesheet href="chrome://communicator/skin/places/organizer.css"?>
--<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xhtml"?>
- 
- <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-         title="549192:  History view not updated after deleting entry"
-         onload="runTest();">
- 
-   <script src="chrome://mochikit/content/MochiKit/packed.js" />
-   <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" />
-   <script src="head.js" />
-diff --git a/suite/components/places/tests/chrome/test_bug549491.xhtml b/suite/components/places/tests/chrome/test_bug549491.xhtml
---- a/suite/components/places/tests/chrome/test_bug549491.xhtml
-+++ b/suite/components/places/tests/chrome/test_bug549491.xhtml
-@@ -6,17 +6,17 @@
-    -->
- 
- <?xml-stylesheet href="chrome://global/skin" type="text/css"?>
- <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
-                  type="text/css"?>
- 
- <?xml-stylesheet href="chrome://communicator/content/places/places.css"?>
- <?xml-stylesheet href="chrome://communicator/skin/places/organizer.css"?>
--<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xhtml"?>
- 
- <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-         title="549491: 'The root node is never visible' exception when details of the root node are modified "
-         onload="runTest();">
- 
-   <script src="chrome://mochikit/content/MochiKit/packed.js" />
-   <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" />
-   <script src="head.js" />
-diff --git a/suite/components/places/tests/chrome/test_treeview_date.xhtml b/suite/components/places/tests/chrome/test_treeview_date.xhtml
---- a/suite/components/places/tests/chrome/test_treeview_date.xhtml
-+++ b/suite/components/places/tests/chrome/test_treeview_date.xhtml
-@@ -5,17 +5,17 @@
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://global/skin" type="text/css"?>
- <?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
-                  type="text/css"?>
- 
- <?xml-stylesheet href="chrome://communicator/content/places/places.css"?>
- <?xml-stylesheet href="chrome://communicator/skin/places/organizer.css"?>
--<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/places/placesOverlay.xhtml"?>
- 
- <window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-         title="435322: Places tree view's formatting"
-         onload="runTest();">
- 
-   <script src="chrome://mochikit/content/MochiKit/packed.js" />
-   <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" />
-   <script src="head.js" />
-diff --git a/suite/components/pref/content/pref-applications.js b/suite/components/pref/content/pref-applications.js
---- a/suite/components/pref/content/pref-applications.js
-+++ b/suite/components/pref/content/pref-applications.js
-@@ -1,17 +1,17 @@
- /* -*- Mode: Java; tab-width: 2; 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/. */
- 
- const {AppConstants} = ChromeUtils.import("resource://gre/modules/AppConstants.jsm");
- const {ShellService} = ChromeUtils.import("resource:///modules/ShellService.jsm");
--// Needed as this script is also loaded by pref-applicationManager.xul.
-+// Needed as this script is also loaded by pref-applicationManager.xhtml.
- const {XPCOMUtils} =
-   ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
- 
- function Startup()
- {
-   gApplicationsPane.init();
- }
- 
-@@ -1365,17 +1365,17 @@ var gApplicationsPane = {
-         typeItem.setAttribute("appHandlerIcon", "app");
-     }
-   },
- 
-   manageApp() {
-     var typeItem = this._list.selectedItem;
-     var handlerInfo = this._handledTypes[typeItem.type];
- 
--    document.documentElement.openSubDialog("chrome://communicator/content/pref/pref-applicationManager.xul",
-+    document.documentElement.openSubDialog("chrome://communicator/content/pref/pref-applicationManager.xhtml",
-                                            "", handlerInfo);
- 
-     // Rebuild the actions menu so that we revert to the previous selection,
-     // or "Always ask" if the previous default application has been removed
-     this.rebuildActionsMenu();
- 
-     // update the listitem too. Will be visible when selecting another row
-     typeItem.setAttribute("actionDescription",
-@@ -1440,17 +1440,17 @@ var gApplicationsPane = {
-         params.mimeInfo = handlerInfo.wrappedHandlerInfo;
-       }
- 
-       params.title         = this._prefsBundle.getString("fpTitleChooseApp");
-       params.description   = handlerInfo.description;
-       params.filename      = null;
-       params.handlerApp    = null;
- 
--      window.openDialog("chrome://global/content/appPicker.xul", null,
-+      window.openDialog("chrome://global/content/appPicker.xhtml", null,
-                         "chrome,modal,centerscreen,titlebar,dialog=yes",
-                         params);
- 
-       if (this.isValidHandlerApp(params.handlerApp)) {
-         this.handlerApp = params.handlerApp;
-       }
-       this.finishChooseApp();
-     } else if (Services.prefs.getBoolPref("browser.download.useAppChooser", true) && ("@mozilla.org/applicationchooser;1" in Cc)) {
-diff --git a/suite/components/pref/content/pref-languages.js b/suite/components/pref/content/pref-languages.js
---- a/suite/components/pref/content/pref-languages.js
-+++ b/suite/components/pref/content/pref-languages.js
-@@ -15,17 +15,17 @@ function Startup()
-   // of childNodes it is live and updates automatically.
-   gLanguages = gActiveLanguages.childNodes;
- 
-   ReadAvailableLanguages();
- }
- 
- function AddLanguage()
- {
--  document.documentElement.openSubDialog("chrome://communicator/content/pref/pref-languages-add.xul", "addlangwindow", gLanguageNames);
-+  document.documentElement.openSubDialog("chrome://communicator/content/pref/pref-languages-add.xhtml", "addlangwindow", gLanguageNames);
- }
- 
- function ReadAvailableLanguages()
- {
-   var i = 0;
-   var languagesBundle = document.getElementById("languageNamesBundle");
-   var prefLangBundle = document.getElementById("prefLangBundle");
-   var regionsBundle = document.getElementById("regionNamesBundle");
-diff --git a/suite/components/pref/content/pref-proxies.js b/suite/components/pref/content/pref-proxies.js
---- a/suite/components/pref/content/pref-proxies.js
-+++ b/suite/components/pref/content/pref-proxies.js
-@@ -143,17 +143,17 @@ function FixProxyURL(aURL)
-   catch (e) {}
- 
-   if (!gInstantApply)
-     EnableUnlockedButton(aURL);
- }
- 
- function OpenAdvancedDialog()
- {
--  document.documentElement.openSubDialog("chrome://communicator/content/pref/pref-proxies-advanced.xul",
-+  document.documentElement.openSubDialog("chrome://communicator/content/pref/pref-proxies-advanced.xhtml",
-                                          "AdvancedProxyPreferences", null);
- }
- 
- function DoProxyCopy(aChecked)
- {
-   DoProxyHostCopy(gHTTP.value);
-   DoProxyPortCopy(gHTTPPort.value);
-   var nonshare = ["networkProxySSL", "networkProxySSL_Port",
-diff --git a/suite/components/pref/content/pref-sync.js b/suite/components/pref/content/pref-sync.js
---- a/suite/components/pref/content/pref-sync.js
-+++ b/suite/components/pref/content/pref-sync.js
-@@ -107,37 +107,37 @@ var gSyncPane = {
-       gSyncUtils.resetPassphrase();
-   },
- 
-   openSetup: function (resetSync) {
-     var win = Services.wm.getMostRecentWindow("Weave:AccountSetup");
-     if (win)
-       win.focus();
-     else {
--      window.openDialog("chrome://communicator/content/sync/syncSetup.xul",
-+      window.openDialog("chrome://communicator/content/sync/syncSetup.xhtml",
-                         "weaveSetup", "centerscreen,chrome,resizable=no", resetSync);
-     }
-   },
- 
-   openQuotaDialog: function () {
-     let win = Services.wm.getMostRecentWindow("Sync:ViewQuota");
-     if (win)
-       win.focus();
-     else
--      window.openDialog("chrome://communicator/content/sync/syncQuota.xul", "",
-+      window.openDialog("chrome://communicator/content/sync/syncQuota.xhtml", "",
-                         "centerscreen,chrome,dialog,modal");
-   },
- 
-   openAddDevice: function () {
-     if (!Weave.Utils.ensureMPUnlocked())
-       return;
-     let win = Services.wm.getMostRecentWindow("Sync:AddDevice");
-     if (win)
-       win.focus();
-     else
--      window.openDialog("chrome://communicator/content/sync/syncAddDevice.xul",
-+      window.openDialog("chrome://communicator/content/sync/syncAddDevice.xhtml",
-                         "syncAddDevice", "centerscreen,chrome,resizable=no");
-   },
- 
-   resetSync: function () {
-     this.openSetup(true);
-   }
- };
-diff --git a/suite/components/pref/content/preferences.xhtml b/suite/components/pref/content/preferences.xhtml
---- a/suite/components/pref/content/preferences.xhtml
-+++ b/suite/components/pref/content/preferences.xhtml
-@@ -59,206 +59,206 @@
- 
-     <treechildren id="prefsPanelChildren">
-       <!-- Appearance items -->
-       <treeitem container="true"
-                 id="appearanceItem"
-                 label="&appear.label;"
-                 prefpane="appearance_pane"
-                 helpTopic="appearance_pref"
--                url="chrome://communicator/content/pref/pref-appearance.xul">
-+                url="chrome://communicator/content/pref/pref-appearance.xhtml">
-         <treechildren id="appearanceChildren">
-           <treeitem id="contentItem"
-                     label="&content.label;"
-                     prefpane="content_pane"
-                     helpTopic="appearance_pref_content"
--                    url="chrome://communicator/content/pref/pref-content.xul"/>
-+                    url="chrome://communicator/content/pref/pref-content.xhtml"/>
-           <treeitem id="fontsItem"
-                     label="&fonts.label;"
-                     prefpane="fonts_pane"
-                     helpTopic="appearance_pref_fonts"
--                    url="chrome://communicator/content/pref/pref-fonts.xul"/>
-+                    url="chrome://communicator/content/pref/pref-fonts.xhtml"/>
-           <treeitem id="colorsItem"
-                     label="&colors.label;"
-                     prefpane="colors_pane"
-                     helpTopic="appearance_pref_colors"
--                    url="chrome://communicator/content/pref/pref-colors.xul"/>
-+                    url="chrome://communicator/content/pref/pref-colors.xhtml"/>
-           <treeitem id="mediaItem"
-                     label="&media.label;"
-                     prefpane="media_pane"
-                     helpTopic="appearance_pref_media"
--                    url="chrome://communicator/content/pref/pref-media.xul"/>
-+                    url="chrome://communicator/content/pref/pref-media.xhtml"/>
-           <treeitem id="spellingItem"
-                     label="&spellingPane.label;"
-                     prefpane="spelling_pane"
-                     helpTopic="appearance_pref_spelling"
--                    url="chrome://communicator/content/pref/pref-spelling.xul"/>
-+                    url="chrome://communicator/content/pref/pref-spelling.xhtml"/>
-         </treechildren>
-       </treeitem>
- 
-       <!-- Browser items -->
-       <treeitem container="true"
-                 id="navigatorItem"
-                 label="&navigator.label;"
-                 prefpane="navigator_pane"
-                 helpTopic="navigator_pref_navigator"
--                url="chrome://communicator/content/pref/pref-navigator.xul">
-+                url="chrome://communicator/content/pref/pref-navigator.xhtml">
-         <treechildren id="navigatorChildren">
-           <treeitem id="historyItem"
-                     label="&history.label;"
-                     prefpane="history_pane"
-                     helpTopic="navigator_pref_history"
--                    url="chrome://communicator/content/pref/pref-history.xul"/>
-+                    url="chrome://communicator/content/pref/pref-history.xhtml"/>
-           <treeitem id="languagesItem"
-                     label="&languages.label;"
-                     prefpane="languages_pane"
-                     helpTopic="navigator_pref_languages"
--                    url="chrome://communicator/content/pref/pref-languages.xul"/>
-+                    url="chrome://communicator/content/pref/pref-languages.xhtml"/>
-           <treeitem id="applicationsItem"
-                     label="&applications.label;"
-                     prefpane="applications_pane"
-                     helpTopic="navigator_pref_helper_applications"
--                    url="chrome://communicator/content/pref/pref-applications.xul"/>
-+                    url="chrome://communicator/content/pref/pref-applications.xhtml"/>
-           <treeitem id="locationBarItem"
-                     label="&locationBar.label;"
-                     prefpane="locationBar_pane"
-                     helpTopic="navigator_pref_location_bar"
--                    url="chrome://communicator/content/pref/pref-locationbar.xul"/>
-+                    url="chrome://communicator/content/pref/pref-locationbar.xhtml"/>
-           <treeitem id="searchItem"
-                     label="&search.label;"
-                     prefpane="search_pane"
-                     helpTopic="navigator_pref_internet_searching"
--                    url="chrome://communicator/content/pref/pref-search.xul"/>
-+                    url="chrome://communicator/content/pref/pref-search.xhtml"/>
-           <treeitem id="tabsItem"
-                     label="&tabWindows.label;"
-                     prefpane="tabs_pane"
-                     helpTopic="navigator_pref_tabbed_browsing"
--                    url="chrome://communicator/content/pref/pref-tabs.xul"/>
-+                    url="chrome://communicator/content/pref/pref-tabs.xhtml"/>
-           <treeitem id="linksItem"
-                     label="&links.label;"
-                     prefpane="links_pane"
-                     helpTopic="navigator_pref_link_behavior"
--                    url="chrome://communicator/content/pref/pref-links.xul"/>
-+                    url="chrome://communicator/content/pref/pref-links.xhtml"/>
-           <treeitem id="downloadItem"
-                     label="&download.label;"
-                     prefpane="download_pane"
-                     helpTopic="navigator_pref_downloads"
--                    url="chrome://communicator/content/pref/pref-download.xul"/>
-+                    url="chrome://communicator/content/pref/pref-download.xhtml"/>
-         </treechildren>
-       </treeitem>
- 
-       <!-- Privacy & Security items -->
-       <treeitem container="true"
-                 id="securityItem"
-                 prefpane="security_pane"
-                 label="&security.label;"
-                 helpTopic="sec_gen"
--                url="chrome://communicator/content/pref/pref-security.xul">
-+                url="chrome://communicator/content/pref/pref-security.xhtml">
-         <treechildren id="securityChildren">
-           <treeitem id="privatedataItem"
-                     label="&privatedata.label;"
-                     prefpane="privatedata_pane"
-                     helpTopic="privatedata_prefs"
--                    url="chrome://communicator/content/pref/pref-privatedata.xul"/>
-+                    url="chrome://communicator/content/pref/pref-privatedata.xhtml"/>
-           <treeitem id="cookiesItem"
-                     label="&cookies.label;"
-                     prefpane="cookies_pane"
-                     helpTopic="cookies_prefs"
--                    url="chrome://communicator/content/pref/pref-cookies.xul"/>
-+                    url="chrome://communicator/content/pref/pref-cookies.xhtml"/>
-           <treeitem id="imagesItem"
-                     label="&images.label;"
-                     prefpane="images_pane"
-                     helpTopic="images_prefs"
--                    url="chrome://communicator/content/pref/pref-images.xul"/>
-+                    url="chrome://communicator/content/pref/pref-images.xhtml"/>
-           <treeitem id="popupsItem"
-                     label="&popups.label;"
-                     prefpane="popups_pane"
-                     helpTopic="pop_up_blocking_prefs"
--                    url="chrome://communicator/content/pref/pref-popups.xul"/>
-+                    url="chrome://communicator/content/pref/pref-popups.xhtml"/>
-           <treeitem id="passwordsItem"
-                     label="&passwords.label;"
-                     prefpane="passwords_pane"
--                    url="chrome://pippki/content/pref-passwords.xul"
-+                    url="chrome://pippki/content/pref-passwords.xhtml"
-                     helpTopic="passwords_prefs"/>
-           <treeitem id="sslItem"
-                     label="&ssltls.label;"
-                     prefpane="ssl_pane"
--                    url="chrome://pippki/content/pref-ssl.xul"
-+                    url="chrome://pippki/content/pref-ssl.xhtml"
-                     helpTopic="ssl_prefs"/>
-           <treeitem id="certItem"
-                     label="&certs.label;"
-                     prefpane="certs_pane"
--                    url="chrome://pippki/content/pref-certs.xul"
-+                    url="chrome://pippki/content/pref-certs.xhtml"
-                     helpTopic="certs_prefs"/>
-         </treechildren>
-       </treeitem>
- 
-       <!-- Sync
-       <treeitem id="syncItem"
-                 label="&sync.label;"
-                 prefpane="sync_pane"
--                url="chrome://communicator/content/pref/pref-sync.xul"
-+                url="chrome://communicator/content/pref/pref-sync.xhtml"
-                 helpTopic="sync_prefs"/> -->
- 
-       <!-- Advanced items -->
-       <treeitem container="true"
-                 id="advancedItem"
-                 label="&advance.label;"
-                 prefpane="advanced_pane"
-                 helpTopic="advanced_pref_advanced"
--                url="chrome://communicator/content/pref/pref-advanced.xul">
-+                url="chrome://communicator/content/pref/pref-advanced.xhtml">
-         <treechildren id="advancedChildren">
-           <treeitem id="scriptsItem"
-                     label="&scriptsAndWindows2.label;"
-                     prefpane="scripts_pane"
-                     helpTopic="advanced_pref_scripts"
--                    url="chrome://communicator/content/pref/pref-scripts.xul"/>
-+                    url="chrome://communicator/content/pref/pref-scripts.xhtml"/>
-           <treeitem id="keynavItem"
-                     label="&keynav.label;"
-                     prefpane="keynav_pane"
-                     helpTopic="advanced_pref_keyboard_nav"
--                    url="chrome://communicator/content/pref/pref-keynav.xul"/>
-+                    url="chrome://communicator/content/pref/pref-keynav.xhtml"/>
-           <treeitem id="findasyoutypeItem"
-                     label="&findAsYouType.label;"
-                     prefpane="findasyoutype_pane"
-                     helpTopic="advanced_pref_find_as_you_type"
--                    url="chrome://communicator/content/pref/pref-findasyoutype.xul"/>
-+                    url="chrome://communicator/content/pref/pref-findasyoutype.xhtml"/>
-           <treeitem id="cacheItem"
-                     label="&cache.label;"
-                     prefpane="cache_pane"
-                     helpTopic="advanced_pref_cache"
--                    url="chrome://communicator/content/pref/pref-cache.xul"/>
-+                    url="chrome://communicator/content/pref/pref-cache.xhtml"/>
-           <treeitem id="offlineAppsItem"
-                     label="&offlineApps.label;"
-                     prefpane="offlineapps_pane"
-                     helpTopic="advanced_pref_offlineapps"
--                    url="chrome://communicator/content/pref/pref-offlineapps.xul"/>
-+                    url="chrome://communicator/content/pref/pref-offlineapps.xhtml"/>
-           <treeitem id="proxiesItem"
-                     label="&proxies.label;"
-                     prefpane="proxies_pane"
-                     helpTopic="advanced_pref_proxies"
--                    url="chrome://communicator/content/pref/pref-proxies.xul"/>
-+                    url="chrome://communicator/content/pref/pref-proxies.xhtml"/>
-           <treeitem id="httpItem"
-                     label="&httpnetworking.label;"
-                     prefpane="http_pane"
-                     helpTopic="advanced_http_networking"
--                    url="chrome://communicator/content/pref/pref-http.xul"/>
-+                    url="chrome://communicator/content/pref/pref-http.xhtml"/>
-           <treeitem id="smartupdateItem"
-                     label="&smart.label;"
-                     prefpane="smartupdate_pane"
-                     helpTopic="advanced_pref_installation"
--                    url="chrome://communicator/content/pref/pref-smartupdate.xul"/>
-+                    url="chrome://communicator/content/pref/pref-smartupdate.xhtml"/>
-           <treeitem id="mousewheelItem"
-                     label="&mousewheel.label;"
-                     prefpane="mousewheel_pane"
-                     helpTopic="advanced_pref_mouse_wheel"
--                    url="chrome://communicator/content/pref/pref-mousewheel.xul"/>
-+                    url="chrome://communicator/content/pref/pref-mousewheel.xhtml"/>
-           <treeitem id="debuggingItem"
-                     label="&debugging.label;"
-                     prefpane="debugging_pane"
-                     helpTopic="advanced_pref_debugging"
--                    url="chrome://communicator/content/pref/pref-debugging.xul"/>
-+                    url="chrome://communicator/content/pref/pref-debugging.xhtml"/>
-         </treechildren>
-       </treeitem>
-     </treechildren>
-   </tree>
- 
- </prefwindow>
-diff --git a/suite/components/pref/jar.mn b/suite/components/pref/jar.mn
---- a/suite/components/pref/jar.mn
-+++ b/suite/components/pref/jar.mn
-@@ -1,73 +1,73 @@
- # 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/.
- 
- comm.jar:
--*  content/communicator/pref/preferences.xul                        (content/preferences.xul)
-+*  content/communicator/pref/preferences.xhtml                      (content/preferences.xhtml)
-    content/communicator/pref/preferences.js                         (content/preferences.js)
-    content/communicator/pref/prefpanels.css                         (content/prefpanels.css)
-    content/communicator/pref/prefpanels.xml                         (content/prefpanels.xml)
-    content/communicator/pref/pref-advanced.js                       (content/pref-advanced.js)
--   content/communicator/pref/pref-advanced.xul                      (content/pref-advanced.xul)
-+   content/communicator/pref/pref-advanced.xhtml                    (content/pref-advanced.xhtml)
-    content/communicator/pref/pref-appearance.js                     (content/pref-appearance.js)
--*  content/communicator/pref/pref-appearance.xul                    (content/pref-appearance.xul)
--*  content/communicator/pref/pref-applications.xul                  (content/pref-applications.xul)
-+*  content/communicator/pref/pref-appearance.xhtml                  (content/pref-appearance.xhtml)
-+*  content/communicator/pref/pref-applications.xhtml                (content/pref-applications.xhtml)
-    content/communicator/pref/pref-applications.js                   (content/pref-applications.js)
-    content/communicator/pref/pref-applicationManager.js             (content/pref-applicationManager.js)
--   content/communicator/pref/pref-applicationManager.xul            (content/pref-applicationManager.xul)
-+   content/communicator/pref/pref-applicationManager.xhtml          (content/pref-applicationManager.xhtml)
-    content/communicator/pref/pref-cache.js                          (content/pref-cache.js)
--   content/communicator/pref/pref-cache.xul                         (content/pref-cache.xul)
-+   content/communicator/pref/pref-cache.xhtml                       (content/pref-cache.xhtml)
-    content/communicator/pref/pref-colors.js                         (content/pref-colors.js)
--   content/communicator/pref/pref-colors.xul                        (content/pref-colors.xul)
-+   content/communicator/pref/pref-colors.xhtml                      (content/pref-colors.xhtml)
-    content/communicator/pref/pref-content.js                        (content/pref-content.js)
--   content/communicator/pref/pref-content.xul                       (content/pref-content.xul)
-+   content/communicator/pref/pref-content.xhtml                     (content/pref-content.xhtml)
-    content/communicator/pref/pref-cookies.js                        (content/pref-cookies.js)
--   content/communicator/pref/pref-cookies.xul                       (content/pref-cookies.xul)
-+   content/communicator/pref/pref-cookies.xhtml                     (content/pref-cookies.xhtml)
-    content/communicator/pref/pref-debugging.js                      (content/pref-debugging.js)
--   content/communicator/pref/pref-debugging.xul                     (content/pref-debugging.xul)
-+   content/communicator/pref/pref-debugging.xhtml                   (content/pref-debugging.xhtml)
-    content/communicator/pref/pref-download.js                       (content/pref-download.js)
--   content/communicator/pref/pref-download.xul                      (content/pref-download.xul)
-+   content/communicator/pref/pref-download.xhtml                    (content/pref-download.xhtml)
-    content/communicator/pref/pref-findasyoutype.js                  (content/pref-findasyoutype.js)
--   content/communicator/pref/pref-findasyoutype.xul                 (content/pref-findasyoutype.xul)
-+   content/communicator/pref/pref-findasyoutype.xhtml               (content/pref-findasyoutype.xhtml)
-    content/communicator/pref/pref-fonts.js                          (content/pref-fonts.js)
--   content/communicator/pref/pref-fonts.xul                         (content/pref-fonts.xul)
-+   content/communicator/pref/pref-fonts.xhtml                       (content/pref-fonts.xhtml)
-    content/communicator/pref/pref-history.js                        (content/pref-history.js)
--   content/communicator/pref/pref-history.xul                       (content/pref-history.xul)
-+   content/communicator/pref/pref-history.xhtml                     (content/pref-history.xhtml)
-    content/communicator/pref/pref-http.js                           (content/pref-http.js)
--   content/communicator/pref/pref-http.xul                          (content/pref-http.xul)
--   content/communicator/pref/pref-images.xul                        (content/pref-images.xul)
-+   content/communicator/pref/pref-http.xhtml                        (content/pref-http.xhtml)
-+   content/communicator/pref/pref-images.xhtml                      (content/pref-images.xhtml)
-    content/communicator/pref/pref-keynav.js                         (content/pref-keynav.js)
--   content/communicator/pref/pref-keynav.xul                        (content/pref-keynav.xul)
-+   content/communicator/pref/pref-keynav.xhtml                      (content/pref-keynav.xhtml)
-    content/communicator/pref/pref-languages.js                      (content/pref-languages.js)
--   content/communicator/pref/pref-languages.xul                     (content/pref-languages.xul)
--   content/communicator/pref/pref-languages-add.xul                 (content/pref-languages-add.xul)
-+   content/communicator/pref/pref-languages.xhtml                   (content/pref-languages.xhtml)
-+   content/communicator/pref/pref-languages-add.xhtml               (content/pref-languages-add.xhtml)
-    content/communicator/pref/pref-languages-add.js                  (content/pref-languages-add.js)
-    content/communicator/pref/pref-links.js                          (content/pref-links.js)
--   content/communicator/pref/pref-links.xul                         (content/pref-links.xul)
-+   content/communicator/pref/pref-links.xhtml                       (content/pref-links.xhtml)
-    content/communicator/pref/pref-locationbar.js                    (content/pref-locationbar.js)
--   content/communicator/pref/pref-locationbar.xul                   (content/pref-locationbar.xul)
--*  content/communicator/pref/pref-media.xul                         (content/pref-media.xul)
-+   content/communicator/pref/pref-locationbar.xhtml                 (content/pref-locationbar.xhtml)
-+*  content/communicator/pref/pref-media.xhtml                       (content/pref-media.xhtml)
-    content/communicator/pref/pref-mousewheel.js                     (content/pref-mousewheel.js)
--*  content/communicator/pref/pref-mousewheel.xul                    (content/pref-mousewheel.xul)
-+*  content/communicator/pref/pref-mousewheel.xhtml                  (content/pref-mousewheel.xhtml)
-    content/communicator/pref/pref-navigator.js                      (content/pref-navigator.js)
--   content/communicator/pref/pref-navigator.xul                     (content/pref-navigator.xul)
-+   content/communicator/pref/pref-navigator.xhtml                   (content/pref-navigator.xhtml)
-    content/communicator/pref/pref-offlineapps.js                    (content/pref-offlineapps.js)
--   content/communicator/pref/pref-offlineapps.xul                   (content/pref-offlineapps.xul)
-+   content/communicator/pref/pref-offlineapps.xhtml                 (content/pref-offlineapps.xhtml)
-    content/communicator/pref/pref-popups.js                         (content/pref-popups.js)
--   content/communicator/pref/pref-popups.xul                        (content/pref-popups.xul)
-+   content/communicator/pref/pref-popups.xhtml                      (content/pref-popups.xhtml)
-    content/communicator/pref/pref-privatedata.js                    (content/pref-privatedata.js)
--   content/communicator/pref/pref-privatedata.xul                   (content/pref-privatedata.xul)
-+   content/communicator/pref/pref-privatedata.xhtml                 (content/pref-privatedata.xhtml)
-    content/communicator/pref/pref-proxies.js                        (content/pref-proxies.js)
--   content/communicator/pref/pref-proxies.xul                       (content/pref-proxies.xul)
--   content/communicator/pref/pref-proxies-advanced.xul              (content/pref-proxies-advanced.xul)
-+   content/communicator/pref/pref-proxies.xhtml                     (content/pref-proxies.xhtml)
-+   content/communicator/pref/pref-proxies-advanced.xhtml            (content/pref-proxies-advanced.xhtml)
-    content/communicator/pref/pref-scripts.js                        (content/pref-scripts.js)
--   content/communicator/pref/pref-scripts.xul                       (content/pref-scripts.xul)
-+   content/communicator/pref/pref-scripts.xhtml                     (content/pref-scripts.xhtml)
-    content/communicator/pref/pref-search.js                         (content/pref-search.js)
--   content/communicator/pref/pref-search.xul                        (content/pref-search.xul)
-+   content/communicator/pref/pref-search.xhtml                      (content/pref-search.xhtml)
-    content/communicator/pref/pref-security.js                       (content/pref-security.js)
--   content/communicator/pref/pref-security.xul                      (content/pref-security.xul)
-+   content/communicator/pref/pref-security.xhtml                    (content/pref-security.xhtml)
-    content/communicator/pref/pref-smartupdate.js                    (content/pref-smartupdate.js)
--   content/communicator/pref/pref-smartupdate.xul                   (content/pref-smartupdate.xul)
-+   content/communicator/pref/pref-smartupdate.xhtml                 (content/pref-smartupdate.xhtml)
-    content/communicator/pref/pref-spelling.js                       (content/pref-spelling.js)
--   content/communicator/pref/pref-spelling.xul                      (content/pref-spelling.xul)
--*  content/communicator/pref/pref-tabs.xul                          (content/pref-tabs.xul)
-+   content/communicator/pref/pref-spelling.xhtml                    (content/pref-spelling.xhtml)
-+*  content/communicator/pref/pref-tabs.xhtml                        (content/pref-tabs.xhtml)
-diff --git a/suite/components/pref/tests/browser/browser_bug410900.js b/suite/components/pref/tests/browser/browser_bug410900.js
---- a/suite/components/pref/tests/browser/browser_bug410900.js
-+++ b/suite/components/pref/tests/browser/browser_bug410900.js
-@@ -23,17 +23,17 @@ function test() {
-     if (topic != "app-handler-pane-loaded")
-       return;
- 
-     obs.removeObserver(observer, "app-handler-pane-loaded");
-     runTest(win);
-   }
-   obs.addObserver(observer, "app-handler-pane-loaded");
- 
--  openDialog("chrome://communicator/content/pref/preferences.xul",
-+  openDialog("chrome://communicator/content/pref/preferences.xhtml",
-              "PrefWindow", "chrome,titlebar,dialog=no,resizable",
-              "applications_pane");
- }
- 
- function runTest(win) {
-   var sel = win.document.documentElement.getAttribute("lastSelected");
-   ok(sel == "applications_pane", "Specified pane was opened");
- 
-diff --git a/suite/components/profile/content/profileSelection.js b/suite/components/profile/content/profileSelection.js
---- a/suite/components/profile/content/profileSelection.js
-+++ b/suite/components/profile/content/profileSelection.js
-@@ -143,17 +143,17 @@ function AcceptDialog()
-     env.set("XRE_PROFILE_LOCAL_PATH", "");
-     return false;
-   }
- }
- 
- // invoke the createProfile Wizard
- function CreateProfileWizard()
- {
--  window.openDialog('chrome://mozapps/content/profile/createProfileWizard.xul',
-+  window.openDialog('chrome://mozapps/content/profile/createProfileWizard.xhtml',
-                     '', 'centerscreen,chrome,modal,titlebar');
- }
- 
- // update the display to show the additional profile
- function CreateProfile(aProfile)
- {
-   gProfileService.flush();
-   AddItem(aProfile, aProfile);
-diff --git a/suite/components/profile/jar.mn b/suite/components/profile/jar.mn
---- a/suite/components/profile/jar.mn
-+++ b/suite/components/profile/jar.mn
-@@ -1,8 +1,8 @@
- # 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/.
- 
- comm.jar:
--% override chrome://mozapps/content/profile/profileSelection.xul chrome://communicator/content/profile/profileSelection.xul
-+% override chrome://mozapps/content/profile/profileSelection.xhtml chrome://communicator/content/profile/profileSelection.xhtml
-   content/communicator/profile/profileSelection.js                 (content/profileSelection.js)
--  content/communicator/profile/profileSelection.xul                (content/profileSelection.xul)
-+  content/communicator/profile/profileSelection.xhtml              (content/profileSelection.xhtml)
-diff --git a/suite/components/sanitize/Sanitizer.jsm b/suite/components/sanitize/Sanitizer.jsm
---- a/suite/components/sanitize/Sanitizer.jsm
-+++ b/suite/components/sanitize/Sanitizer.jsm
-@@ -86,17 +86,17 @@ var Sanitizer = {
-    * @param [optional] parentWindow the window to use as
-    *                   parent for the created dialog.
-    */
-   showUI(parentWindow) {
-     let win = AppConstants.platform == "macosx" ?
-       null : // make this an app-modal window on Mac
-       parentWindow;
-     Services.ww.openWindow(win,
--                           "chrome://communicator/content/sanitizeDialog.xul",
-+                           "chrome://communicator/content/sanitizeDialog.xhtml",
-                            "Sanitize",
-                            "chrome,titlebar,centerscreen,dialog,modal",
-                            null);
-   },
- 
-   /**
-    * Performs startup tasks:
-    *  - Checks if sanitizations were not completed during the last session.
-diff --git a/suite/components/sanitize/jar.mn b/suite/components/sanitize/jar.mn
---- a/suite/components/sanitize/jar.mn
-+++ b/suite/components/sanitize/jar.mn
-@@ -1,8 +1,8 @@
- # 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/.comm.jar:
- 
- comm.jar:
- % content communicator %content/communicator/ contentaccessible=yes
-   content/communicator/sanitizeDialog.js       (content/sanitizeDialog.js)
--  content/communicator/sanitizeDialog.xul      (content/sanitizeDialog.xul)
-+  content/communicator/sanitizeDialog.xhtml    (content/sanitizeDialog.xhtml)
-diff --git a/suite/components/search/jar.mn b/suite/components/search/jar.mn
---- a/suite/components/search/jar.mn
-+++ b/suite/components/search/jar.mn
-@@ -1,16 +1,16 @@
- # 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/.
- 
- comm.jar:
- % content communicator %content/communicator/ contentaccessible=yes
-    content/communicator/search/engineManager.js                     (content/engineManager.js)
--   content/communicator/search/engineManager.xul                    (content/engineManager.xul)
-+   content/communicator/search/engineManager.xhtml                  (content/engineManager.xhtml)
-    content/communicator/search/search.xml                           (content/search.xml)
-    content/communicator/search/searchbarBindings.css                (content/searchbarBindings.css)
-    content/communicator/search/search-panel.js                      (content/search-panel.js)
--   content/communicator/search/search-panel.xul                     (content/search-panel.xul)
-+   content/communicator/search/search-panel.xhtml                   (content/search-panel.xhtml)
- 
-    searchplugins/                                                   (searchplugins/**)
- 
- % resource search-plugins %searchplugins/
-diff --git a/suite/components/security/content/prefs/pref-certs.js b/suite/components/security/content/prefs/pref-certs.js
---- a/suite/components/security/content/prefs/pref-certs.js
-+++ b/suite/components/security/content/prefs/pref-certs.js
-@@ -14,19 +14,19 @@ function DoEnabling(aOCSPPrefValue)
- {
-   EnableElementById("requireWorkingOCSP", aOCSPPrefValue != 0, false);
- }
- 
- function OpenCertManager()
- {
-     document.documentElement
-             .openWindow("mozilla:certmanager",
--                        "chrome://pippki/content/certManager.xul",
-+                        "chrome://pippki/content/certManager.xhtml",
-                         "", null);
- }
- 
- function OpenDeviceManager()
- {
-     document.documentElement
-             .openWindow("mozilla:devicemanager",
--                        "chrome://pippki/content/device_manager.xul",
-+                        "chrome://pippki/content/device_manager.xhtml",
-                         "", null);
- }
-diff --git a/suite/components/security/content/prefs/pref-passwords.js b/suite/components/security/content/prefs/pref-passwords.js
---- a/suite/components/security/content/prefs/pref-passwords.js
-+++ b/suite/components/security/content/prefs/pref-passwords.js
-@@ -12,20 +12,20 @@ function Startup() {
-   gInternalToken = tokendb.getInternalKeyToken();
- }
- 
- function ChangePW()
- {
-   var p = Cc["@mozilla.org/embedcomp/dialogparam;1"]
-             .createInstance(Ci.nsIDialogParamBlock);
-   p.SetString(1, "");
--  window.openDialog("chrome://pippki/content/changepassword.xul", "",
-+  window.openDialog("chrome://pippki/content/changepassword.xhtml", "",
-                     "chrome,centerscreen,modal", p);
- }
- 
- function ResetPW()
- {
-   var p = Cc["@mozilla.org/embedcomp/dialogparam;1"]
-             .createInstance(Ci.nsIDialogParamBlock);
-   p.SetString(1, gInternalToken.tokenName);
--  window.openDialog("chrome://pippki/content/resetpassword.xul", "",
-+  window.openDialog("chrome://pippki/content/resetpassword.xhtml", "",
-                     "chrome,centerscreen,modal", p);
- }
-diff --git a/suite/components/security/jar.mn b/suite/components/security/jar.mn
---- a/suite/components/security/jar.mn
-+++ b/suite/components/security/jar.mn
-@@ -1,11 +1,11 @@
- # 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/.
- 
- pippki.jar:
-    content/pippki/pref-certs.js             (content/prefs/pref-certs.js)
--   content/pippki/pref-certs.xul            (content/prefs/pref-certs.xul)
-+   content/pippki/pref-certs.xhtml          (content/prefs/pref-certs.xhtml)
-    content/pippki/pref-passwords.js         (content/prefs/pref-passwords.js)
--   content/pippki/pref-passwords.xul        (content/prefs/pref-passwords.xul)
-+   content/pippki/pref-passwords.xhtml      (content/prefs/pref-passwords.xhtml)
-    content/pippki/pref-ssl.js               (content/prefs/pref-ssl.js)
--   content/pippki/pref-ssl.xul              (content/prefs/pref-ssl.xul)
-+   content/pippki/pref-ssl.xhtml            (content/prefs/pref-ssl.xhtml)
-diff --git a/suite/components/sessionstore/nsISessionStore.idl b/suite/components/sessionstore/nsISessionStore.idl
---- a/suite/components/sessionstore/nsISessionStore.idl
-+++ b/suite/components/sessionstore/nsISessionStore.idl
-@@ -11,17 +11,17 @@ interface nsINode;
-  * nsISessionStore keeps track of the current browsing state - i.e.
-  * tab history, cookies, scroll state, form data, POSTDATA and window features
-  * - and allows to restore everything into one browser window.
-  *
-  * The nsISessionStore API operates mostly on browser windows and the tabbrowser
-  * tabs contained in them:
-  *
-  * * "Browser windows" are those DOM windows having loaded
-- * chrome://navigator/content/navigator.xul . From overlays you can just pass
-+ * chrome://navigator/content/navigator.xhtml . From overlays you can just pass
-  * the global |window| object to the API, though (or |top| from a sidebar).
-  * From elsewhere you can get browser windows through the nsIWindowMediator
-  * by looking for "navigator:browser" windows.
-  *
-  * * "Tabbrowser tabs" are all the child nodes of a browser window's
-  * |getBrowser().tabContainer| such as e.g. |getBrowser().selectedTab|.
-  */
- 
-diff --git a/suite/components/shell/jar.mn b/suite/components/shell/jar.mn
---- a/suite/components/shell/jar.mn
-+++ b/suite/components/shell/jar.mn
-@@ -1,7 +1,7 @@
- # 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/.
- 
- comm.jar:
-     content/communicator/setDesktopBackground.js       (content/setDesktopBackground.js)
--    content/communicator/setDesktopBackground.xul      (content/setDesktopBackground.xul)
-+    content/communicator/setDesktopBackground.xhtml    (content/setDesktopBackground.xhtml)
-diff --git a/suite/components/sidebar/content/customize.js b/suite/components/sidebar/content/customize.js
---- a/suite/components/sidebar/content/customize.js
-+++ b/suite/components/sidebar/content/customize.js
-@@ -285,17 +285,17 @@ function PreviewPanel()
-     for (var index = min.value; index <= max.value; ++index) {
-       var item = tree.contentView.getItemAtIndex(index);
-       var res = RDF.GetResource(item.id);
- 
-       var preview_name = get_attr(database, res, 'title');
-       var preview_URL  = get_attr(database, res, 'content');
-       if (!preview_URL || !preview_name) continue;
- 
--      window.openDialog("chrome://communicator/content/sidebar/preview.xul",
-+      window.openDialog("chrome://communicator/content/sidebar/preview.xhtml",
-                         "_blank", "chrome,resizable,close,dialog=no",
-                         preview_name, preview_URL);
-     }
-   }
- }
- 
- // Add the selected panel(s).
- function AddPanel()
-@@ -405,30 +405,30 @@ function CustomizePanel()
-     var selectedNode = tree.contentView.getItemAtIndex(index);
-     var panel_id = selectedNode.getAttribute('id');
-     var customize_url = selectedNode.getAttribute('customize');
- 
-     debug("url   = " + customize_url);
- 
-     if (!customize_url) return;
- 
--    window.openDialog('chrome://communicator/content/sidebar/customize-panel.xul',
-+    window.openDialog('chrome://communicator/content/sidebar/customize-panel.xhtml',
-                       '_blank',
-                       'chrome,resizable,width=690,height=600,dialog=no,close',
-                       panel_id,
-                       customize_url,
-                       sidebarObj.datasource_uri,
-                       sidebarObj.resource);
-   }
- }
- 
- function BrowseMorePanels()
- {
-   var url = '';
--  var browser_url = "chrome://navigator/content/navigator.xul";
-+  var browser_url = "chrome://navigator/content/navigator.xhtml";
-   var locale;
-   try {
-     url = Services.prefs.getCharPref("sidebar.customize.more_panels.url");
-     var temp = Services.prefs.getCharPref("browser.chromeURL");
-     if (temp)
-       browser_url = temp;
-   } catch(ex) {
-     debug("Unable to get prefs: "+ex);
-diff --git a/suite/components/sidebar/content/sidebarOverlay.js b/suite/components/sidebar/content/sidebarOverlay.js
---- a/suite/components/sidebar/content/sidebarOverlay.js
-+++ b/suite/components/sidebar/content/sidebarOverlay.js
-@@ -32,17 +32,17 @@ var gCurFrame;
- var gTimeoutID = null;
- var gMustInit = true;
- var gAboutToUncollapse = false;
- var gCheckMissingPanels = true;
- 
- function setBlank()
- {
-     gTimeoutID = null;
--    gCurFrame.setAttribute('src', 'chrome://communicator/content/sidebar/PageNotFound.xul');
-+    gCurFrame.setAttribute('src', 'chrome://communicator/content/sidebar/PageNotFound.xhtml');
- }
- 
- 
- // Uncomment for debug output
- const SB_DEBUG = false;
- 
- // pref for limiting number of tabs in view
- // initialized in sidebar_overlay_init()
-@@ -1056,31 +1056,31 @@ function SidebarCustomize() {
- 
-     if (false == gDisableCustomize) {
-       debug("First time creating customize dialog");
-       gDisableCustomize = true;
- 
-       var panels = document.getElementById('sidebar-panels');
- 
-       customizeWindow = window.openDialog(
--                         'chrome://communicator/content/sidebar/customize.xul',
-+                         'chrome://communicator/content/sidebar/customize.xhtml',
-                          '_blank','centerscreen,chrome,resizable,dialog=no,dependent',
-                          sidebarObj.master_datasources,
-                          sidebarObj.master_resource,
-                          sidebarObj.datasource_uri,
-                          sidebarObj.resource);
-       setTimeout(enable_customize, 2000);
-     }
-   }
- }
- 
- function BrowseMorePanels()
- {
-   var url = '';
--  var browser_url = "chrome://navigator/content/navigator.xul";
-+  var browser_url = "chrome://navigator/content/navigator.xhtml";
-   var locale;
-   try {
-     url = Services.prefs.getCharPref("sidebar.customize.directory.url");
-     var temp = Services.prefs.getCharPref("browser.chromeURL");
-     if (temp)
-       browser_url = temp;
-   } catch(ex) {
-     debug("Unable to get prefs: "+ex);
-diff --git a/suite/components/sidebar/content/sidebarOverlay.xhtml b/suite/components/sidebar/content/sidebarOverlay.xhtml
---- a/suite/components/sidebar/content/sidebarOverlay.xhtml
-+++ b/suite/components/sidebar/content/sidebarOverlay.xhtml
-@@ -22,38 +22,38 @@
- 
-   <!-- Overlay of broadcasterset to get our panels in -->
-   <broadcasterset id="mainBroadcasterSet">
-     <broadcaster id="viewBookmarksSidebar"
-                  autoCheck="false"
-                  type="checkbox"
-                  group="sidebar"
-                  sidebartitle="&sidebar.client-bookmarks.label;"
--                 sidebarurl="chrome://communicator/content/bookmarks/bookmarksPanel.xul"
-+                 sidebarurl="chrome://communicator/content/bookmarks/bookmarksPanel.xhtml"
-                  oncommand="toggleSidebar('viewBookmarksSidebar');"/>
-     <broadcaster id="viewHistorySidebar"
-                  autoCheck="false"
-                  type="checkbox"
-                  group="sidebar"
-                  sidebartitle="&sidebar.client-history.label;"
--                 sidebarurl="chrome://communicator/content/history/history-panel.xul"
-+                 sidebarurl="chrome://communicator/content/history/history-panel.xhtml"
-                  oncommand="toggleSidebar('viewHistorySidebar');"/>
-     <broadcaster id="viewSearchSidebar"
-                  autoCheck="false"
-                  type="checkbox"
-                  group="sidebar"
-                  sidebartitle="&sidebar.search.label;"
--                 sidebarurl="chrome://communicator/content/search/search-panel.xul"
-+                 sidebarurl="chrome://communicator/content/search/search-panel.xhtml"
-                  oncommand="toggleSidebar('viewSearchSidebar');"/>
-     <broadcaster id="viewAddressbookSidebar"
-                  autoCheck="false"
-                  type="checkbox"
-                  group="sidebar"
-                  sidebartitle="&sidebar.client-addressbook.label;"
--                 sidebarurl="chrome://messenger/content/addressbook/addressbook-panel.xul"
-+                 sidebarurl="chrome://messenger/content/addressbook/addressbook-panel.xhtml"
-                  oncommand="toggleSidebar('viewAddressbookSidebar');"/>
-   </broadcasterset>
- 
-   <command id="toggleSidebar" oncommand="SidebarShowHide();"/>
- #ifndef XP_MACOSX
-   <key id="showHideSidebar"
-        keycode="VK_F9"
-        command="toggleSidebar"/>
-diff --git a/suite/components/sidebar/jar.mn b/suite/components/sidebar/jar.mn
---- a/suite/components/sidebar/jar.mn
-+++ b/suite/components/sidebar/jar.mn
-@@ -1,16 +1,16 @@
- # 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/.
- 
- comm.jar:
-    content/communicator/sidebar/customize-panel.js                  (content/customize-panel.js)
--   content/communicator/sidebar/customize-panel.xul                 (content/customize-panel.xul)
-+   content/communicator/sidebar/customize-panel.xhtml               (content/customize-panel.xhtml)
-    content/communicator/sidebar/customize.js                        (content/customize.js)
--   content/communicator/sidebar/customize.xul                       (content/customize.xul)
--   content/communicator/sidebar/PageNotFound.xul                    (content/PageNotFound.xul)
-+   content/communicator/sidebar/customize.xhtml                     (content/customize.xhtml)
-+   content/communicator/sidebar/PageNotFound.xhtml                  (content/PageNotFound.xhtml)
-    content/communicator/sidebar/preview.js                          (content/preview.js)
--   content/communicator/sidebar/preview.xul                         (content/preview.xul)
-+   content/communicator/sidebar/preview.xhtml                       (content/preview.xhtml)
-    content/communicator/sidebar/sidebarBindings.xml                 (content/sidebarBindings.xml)
-    content/communicator/sidebar/sidebarOverlay.css                  (content/sidebarOverlay.css)
-    content/communicator/sidebar/sidebarOverlay.js                   (content/sidebarOverlay.js)
--*  content/communicator/sidebar/sidebarOverlay.xul                  (content/sidebarOverlay.xul)
-+*  content/communicator/sidebar/sidebarOverlay.xhtml                (content/sidebarOverlay.xhtml)
-diff --git a/suite/components/sync/content/syncUI.js b/suite/components/sync/content/syncUI.js
---- a/suite/components/sync/content/syncUI.js
-+++ b/suite/components/sync/content/syncUI.js
-@@ -247,28 +247,28 @@ var gSyncUI = {
- 
-   //XXXzpao should be part of syncCommon.js - which we might want to make a module...
-   //        To be fixed in a followup (bug 583366)
-   openSetup: function SUI_openSetup() {
-     let win = Services.wm.getMostRecentWindow("Weave:AccountSetup");
-     if (win)
-       win.focus();
-     else {
--      window.openDialog("chrome://communicator/content/sync/syncSetup.xul",
-+      window.openDialog("chrome://communicator/content/sync/syncSetup.xhtml",
-                         "weaveSetup", "centerscreen,chrome,resizable=no");
-     }
-   },
- 
-   openQuotaDialog: function SUI_openQuotaDialog() {
-     let win = Services.wm.getMostRecentWindow("Sync:ViewQuota");
-     if (win)
-       win.focus();
-     else
-       Services.ww.activeWindow.openDialog(
--        "chrome://communicator/content/sync/syncQuota.xul", "",
-+        "chrome://communicator/content/sync/syncQuota.xhtml", "",
-         "centerscreen,chrome,dialog,modal");
-   },
- 
-   openPrefs: function SUI_openPrefs() {
-     goPreferences("sync_pane");
-   },
- 
- 
-diff --git a/suite/components/sync/content/syncUtils.js b/suite/components/sync/content/syncUtils.js
---- a/suite/components/sync/content/syncUtils.js
-+++ b/suite/components/sync/content/syncUtils.js
-@@ -22,17 +22,17 @@ var gSyncUtils = {
-     // Just re-show the dialog if it's already open
-     let openedDialog = Services.wm.getMostRecentWindow("Sync:" + type);
-     if (openedDialog != null) {
-       openedDialog.focus();
-       return;
-     }
- 
-     // Open up the change dialog
--    let changeXUL = "chrome://communicator/content/sync/syncGenericChange.xul";
-+    let changeXUL = "chrome://communicator/content/sync/syncGenericChange.xhtml";
-     let changeOpt = "centerscreen,chrome,resizable=no";
-     Services.ww.activeWindow.openDialog(changeXUL, "", changeOpt,
-                                         type, duringSetup);
-   },
- 
-   changePassword: function () {
-     if (Weave.Utils.ensureMPUnlocked())
-       this.openChange("ChangePassword");
-diff --git a/suite/components/sync/jar.mn b/suite/components/sync/jar.mn
---- a/suite/components/sync/jar.mn
-+++ b/suite/components/sync/jar.mn
-@@ -1,21 +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/.
- 
- comm.jar:
--   content/communicator/aboutSyncTabs.xul                           (content/aboutSyncTabs.xul)
-+   content/communicator/aboutSyncTabs.xhtml                         (content/aboutSyncTabs.xhtml)
-    content/communicator/aboutSyncTabs.js                            (content/aboutSyncTabs.js)
-    content/communicator/aboutSyncTabs.css                           (content/aboutSyncTabs.css)
-    content/communicator/aboutSyncTabs-bindings.xml                  (content/aboutSyncTabs-bindings.xml)
--   content/communicator/sync/syncAddDevice.xul                      (content/syncAddDevice.xul)
-+   content/communicator/sync/syncAddDevice.xhtml                    (content/syncAddDevice.xhtml)
-    content/communicator/sync/syncAddDevice.js                       (content/syncAddDevice.js)
--   content/communicator/sync/syncSetup.xul                          (content/syncSetup.xul)
-+   content/communicator/sync/syncSetup.xhtml                        (content/syncSetup.xhtml)
-    content/communicator/sync/syncSetup.js                           (content/syncSetup.js)
--   content/communicator/sync/syncGenericChange.xul                  (content/syncGenericChange.xul)
-+   content/communicator/sync/syncGenericChange.xhtml                (content/syncGenericChange.xhtml)
-    content/communicator/sync/syncGenericChange.js                   (content/syncGenericChange.js)
-    content/communicator/sync/syncKey.xhtml                          (content/syncKey.xhtml)
-    content/communicator/sync/syncNotification.xml                   (content/syncNotification.xml)
--   content/communicator/sync/syncQuota.xul                          (content/syncQuota.xul)
-+   content/communicator/sync/syncQuota.xhtml                        (content/syncQuota.xhtml)
-    content/communicator/sync/syncQuota.js                           (content/syncQuota.js)
-    content/communicator/sync/syncUtils.js                           (content/syncUtils.js)
-    content/communicator/sync/syncUI.js                              (content/syncUI.js)
-diff --git a/suite/components/tests/browser/browser_bug431826.js b/suite/components/tests/browser/browser_bug431826.js
---- a/suite/components/tests/browser/browser_bug431826.js
-+++ b/suite/components/tests/browser/browser_bug431826.js
-@@ -15,28 +15,28 @@ function testBrokenCert() {
-   ok(/^about:certerror/.test(gBrowser.contentDocument.documentURI), "Broken page should go to about:certerror, not about:neterror");
- 
-   // Confirm that the expert section is collapsed
-   var expertDiv = gBrowser.contentDocument.getElementById("expertContent");
-   ok(expertDiv, "Expert content div should exist");
-   ok(expertDiv.hasAttribute("collapsed"), "Expert content should be collapsed by default");
- 
-   // Tweak the expert mode pref
--  Services.prefs.setBoolPref("browser.xul.error_pages.expert_bad_cert", true);
-+  Services.prefs.setBoolPref("browser.xhtml.error_pages.expert_bad_cert", true);
- 
-   window.addEventListener("DOMContentLoaded", testExpertPref, true);
-   getBrowser().reload();
- }
- 
- function testExpertPref() {
-   window.removeEventListener("DOMContentLoaded", testExpertPref, true);
- 
-   var expertDiv = gBrowser.contentDocument.getElementById("expertContent");
-   var technicalDiv = gBrowser.contentDocument.getElementById("technicalContent");
-   ok(!expertDiv.hasAttribute("collapsed"), "Expert content should not be collapsed with the expert mode pref set");
-   ok(!technicalDiv.hasAttribute("collapsed"), "Technical content should not be collapsed with the expert mode pref set");
- 
-   // Clean up
-   getBrowser().removeCurrentTab();
--  if (Services.prefs.prefHasUserValue("browser.xul.error_pages.expert_bad_cert"))
--    Services.prefs.clearUserPref("browser.xul.error_pages.expert_bad_cert");
-+  if (Services.prefs.prefHasUserValue("browser.xhtml.error_pages.expert_bad_cert"))
-+    Services.prefs.clearUserPref("browser.xhtml.error_pages.expert_bad_cert");
-   finish();
- }
-diff --git a/suite/components/tests/chrome/chrome.ini b/suite/components/tests/chrome/chrome.ini
---- a/suite/components/tests/chrome/chrome.ini
-+++ b/suite/components/tests/chrome/chrome.ini
-@@ -1,4 +1,4 @@
- [DEFAULT]
- 
--[test_idcheck.xul]
-+[test_idcheck.xhtml]
- support-files = ../../../../mailnews/test/resources/mailTestUtils.js
-diff --git a/suite/components/tests/chrome/test_idcheck.xhtml b/suite/components/tests/chrome/test_idcheck.xhtml
---- a/suite/components/tests/chrome/test_idcheck.xhtml
-+++ b/suite/components/tests/chrome/test_idcheck.xhtml
-@@ -213,69 +213,69 @@
-       //    "chrome://uri/of/xul.window":
-       //    [
-       //      check function,
-       //      array of IDs to be ignored during in the test
-       //    ],
-       var uriList =
-       {
-         // Preferences
--        "chrome://communicator/content/pref/preferences.xul":
-+        "chrome://communicator/content/pref/preferences.xhtml":
-           [
-             window.CheckPreferences,
-             []
-           ],
- 
-         // Browser
--        "chrome://navigator/content/navigator.xul":
-+        "chrome://navigator/content/navigator.xhtml":
-           [
-             window.CheckGenerics,
-             ["contentAreaContextSet"]
-           ],
- 
-         // MailNews (needs at least one mail account)
--        "chrome://messenger/content/messenger.xul":
-+        "chrome://messenger/content/messenger.xhtml":
-           [
-             window.CheckGenerics,
-             []
-           ],
--        "chrome://messenger/content/messageWindow.xul":
-+        "chrome://messenger/content/messageWindow.xhtml":
-           [
-             window.CheckGenerics,
-             []
-           ],
--        "chrome://messenger/content/messengercompose/messengercompose.xul":
-+        "chrome://messenger/content/messengercompose/messengercompose.xhtml":
-           [
-             window.CheckGenerics,
-             []
-           ],
- 
-         // Addressbook (needs at least one mail account)
--        "chrome://messenger/content/addressbook/addressbook.xul":
-+        "chrome://messenger/content/addressbook/addressbook.xhtml":
-           [
-             window.CheckGenerics,
-             []
-           ],
- 
-         // Composer
--        "chrome://editor/content/editor.xul":
-+        "chrome://editor/content/editor.xhtml":
-           [
-             window.CheckGenerics,
-             []
-           ],
- 
-         // Error Console
--        "chrome://communicator/content/console/console.xul":
-+        "chrome://communicator/content/console/console.xhtml":
-           [
-             window.CheckGenerics,
-             []
-           ],
- 
-         // Chatzilla
--        "chrome://chatzilla/content/chatzilla.xul":
-+        "chrome://chatzilla/content/chatzilla.xhtml":
-           [
-             window.CheckGenerics,
-             []
-           ],
-       };
- 
-       // run test
-       for (var uri in uriList)
-diff --git a/suite/extensions/debugQA/content/debugQAEditorOverlay.js b/suite/extensions/debugQA/content/debugQAEditorOverlay.js
---- a/suite/extensions/debugQA/content/debugQAEditorOverlay.js
-+++ b/suite/extensions/debugQA/content/debugQAEditorOverlay.js
-@@ -187,14 +187,14 @@ function ExecuteJSTransactionViaEditor()
-     editor.doTransaction(txn);
-   } catch (e) {
-     dump("ExecuteJSTransactionViaEditor() failed!");
-   }
- }
- 
- function EditorNewPlaintext(aUrl, aCharsetArg)
- {
--  window.openDialog( "chrome://debugqa/content/debugQATextEditorShell.xul",
-+  window.openDialog( "chrome://debugqa/content/debugQATextEditorShell.xhtml",
-                      "_blank",
-                      "chrome,dialog=no,all",
-                      aUrl || "about:blank",
-                      aCharsetArg);
- }
-diff --git a/suite/extensions/debugQA/content/debugQAMenuOverlay.xhtml b/suite/extensions/debugQA/content/debugQAMenuOverlay.xhtml
---- a/suite/extensions/debugQA/content/debugQAMenuOverlay.xhtml
-+++ b/suite/extensions/debugQA/content/debugQAMenuOverlay.xhtml
-@@ -53,17 +53,17 @@
-                       oncommand="openQAUrl('https://www-archive.mozilla.org/newlayout/samples/test16.html');"/>
-           </menupopup>
-         </menu>
- 
-         <!-- XBL Test Suite all broken -->
-         <menu label="XBL Test Suite" hidden="true" disabled="true">
-           <menupopup>
-             <menuitem label="#0 Remote XBL"
--                      oncommand="openQAUrl('https://www-archive.mozilla.org/projects/xbl/test0/test.xul');"/>
-+                      oncommand="openQAUrl('https://www-archive.mozilla.org/projects/xbl/test0/test.xhtml');"/>
-             <menuitem label="#1 Technicolor DIV"
-                       oncommand="openQAUrl('https://www-archive.mozilla.org/projects/xbl/test1/test.html');"/>
-             <menuitem label="#2 Rollover Madness"
-                       oncommand="openQAUrl('https://www-archive.mozilla.org/projects/xbl/test2/test.html');"/>
-             <menuitem label="#3 Popups in HTML"
-                       oncommand="openQAUrl('https://www-archive.mozilla.org/projects/xbl/test3/test.html');"/>
-             <menuitem label="#4 Partition Magic"
-                       oncommand="openQAUrl('https://www-archive.mozilla.org/projects/xbl/test4/test.html');"/>
-diff --git a/suite/extensions/debugQA/content/debugQATextEditorShell.xhtml b/suite/extensions/debugQA/content/debugQATextEditorShell.xhtml
---- a/suite/extensions/debugQA/content/debugQATextEditorShell.xhtml
-+++ b/suite/extensions/debugQA/content/debugQATextEditorShell.xhtml
-@@ -1,24 +1,24 @@
- <?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
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://editor/skin/editor.css" type="text/css"?>
- <?xml-stylesheet href="chrome://editor/skin/editorPrimaryToolbar.css" type="text/css"?>
--<?xul-overlay href="chrome://editor/content/editorOverlay.xul"?>
--<?xul-overlay href="chrome://editor/content/editingOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/charsetOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/tasksOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/contentAreaContextOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/sidebar/sidebarOverlay.xul"?>
--<?xul-overlay href="chrome://debugQA/content/debugQAEditorOverlay.xul"?>
-+<?xul-overlay href="chrome://editor/content/editorOverlay.xhtml"?>
-+<?xul-overlay href="chrome://editor/content/editingOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/charsetOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/tasksOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/contentAreaContextOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/sidebar/sidebarOverlay.xhtml"?>
-+<?xul-overlay href="chrome://debugQA/content/debugQAEditorOverlay.xhtml"?>
- 
- <!DOCTYPE window [
- <!ENTITY % debugQAEditorOverlayDTD SYSTEM "chrome://debugqa/locale/debugQAEditorOverlay.dtd">
- %debugQAEditorOverlayDTD;
- <!ENTITY % editorDTD SYSTEM "chrome://editor/locale/editor.dtd">
- %editorDTD;
- <!ENTITY % editorOverlayDTD SYSTEM "chrome://editor/locale/editorOverlay.dtd">
- %editorOverlayDTD;
-@@ -158,17 +158,17 @@
-     </toolbar>
- 
-     <toolbarset id="customToolbars" context="toolbar-context-menu"/>
- 
-     <toolbarpalette id="EditToolbarPalette"/>
-   </toolbox>
- 
-   <hbox id="sidebar-parent" flex="1">
--    <!-- From sidebarOverlay.xul -->
-+    <!-- From sidebarOverlay.xhtml -->
-     <vbox id="sidebar-box" class="chromeclass-extrachrome" hidden="true"/>
-     <splitter id="sidebar-splitter" class="chromeclass-extrachrome" hidden="true"/>
-     <vbox id="appcontent" flex="1">
-       <findbar id="FindToolbar" browserid="content-frame"/>
-       <editor editortype="text"
-               type="content"
-               primary="true"
-               id="content-frame"
-diff --git a/suite/extensions/debugQA/jar.mn b/suite/extensions/debugQA/jar.mn
---- a/suite/extensions/debugQA/jar.mn
-+++ b/suite/extensions/debugQA/jar.mn
-@@ -1,16 +1,16 @@
- # 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/.
- 
- [extensions/debugQA@mozilla.org] debugqa.jar:
- % content debugqa %content/debugqa/
--% overlay chrome://navigator/content/navigatorOverlay.xul chrome://debugqa/content/debugQAMenuOverlay.xul
--% overlay chrome://editor/content/editor.xul chrome://debugqa/content/debugQAEditorOverlay.xul
--% overlay chrome://navigator/content/navigator.xul chrome://debugqa/content/debugQANavigatorOverlay.xul
-+% overlay chrome://navigator/content/navigatorOverlay.xhtml chrome://debugqa/content/debugQAMenuOverlay.xhtml
-+% overlay chrome://editor/content/editor.xhtml chrome://debugqa/content/debugQAEditorOverlay.xhtml
-+% overlay chrome://navigator/content/navigator.xhtml chrome://debugqa/content/debugQANavigatorOverlay.xhtml
-   content/debugqa/debugQAEditorOverlay.js                 (content/debugQAEditorOverlay.js)
--  content/debugqa/debugQAEditorOverlay.xul                (content/debugQAEditorOverlay.xul)
-+  content/debugqa/debugQAEditorOverlay.xhtml              (content/debugQAEditorOverlay.xhtml)
-   content/debugqa/debugQAMenuOverlay.js                   (content/debugQAMenuOverlay.js)
--  content/debugqa/debugQAMenuOverlay.xul                  (content/debugQAMenuOverlay.xul)
--  content/debugqa/debugQANavigatorOverlay.xul             (content/debugQANavigatorOverlay.xul)
--  content/debugqa/debugQATextEditorShell.xul              (content/debugQATextEditorShell.xul)
-+  content/debugqa/debugQAMenuOverlay.xhtml                (content/debugQAMenuOverlay.xhtml)
-+  content/debugqa/debugQANavigatorOverlay.xhtml           (content/debugQANavigatorOverlay.xhtml)
-+  content/debugqa/debugQATextEditorShell.xhtml            (content/debugQATextEditorShell.xhtml)
-   content/debugqa/EditorInitPage.html                     (content/EditorInitPage.html)
-diff --git a/suite/installer/allowed-dupes.mn b/suite/installer/allowed-dupes.mn
---- a/suite/installer/allowed-dupes.mn
-+++ b/suite/installer/allowed-dupes.mn
-@@ -220,18 +220,18 @@ extensions/modern@themes.mozilla.org/chr
- chrome/toolkit/skin/classic/mozapps/plugins/contentPluginCrashed.png
- extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/extensions/category-dictionaries.png
- extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/mozapps/extensions/dictionaryGeneric.png
- chrome/toolkit/skin/classic/mozapps/extensions/dictionaryGeneric.png
- extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/messenger/icons/new-mail-alert.png
- chrome/classic/skin/classic/messenger/icons/new-mail-alert.png
- extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/navigator/webDeveloper.css
- chrome/classic/skin/classic/navigator/webDeveloper.css
--chrome/comm/content/communicator/places/bookmarkProperties.xul
--chrome/comm/content/communicator/places/bookmarkProperties2.xul
-+chrome/comm/content/communicator/places/bookmarkProperties.xhtml
-+chrome/comm/content/communicator/places/bookmarkProperties2.xhtml
- extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/audioFeedIcon.png
- extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/feedIcon.png
- extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/icons/videoFeedIcon.png
- chrome/classic/skin/classic/communicator/icons/audioFeedIcon.png
- chrome/classic/skin/classic/communicator/icons/feedIcon.png
- chrome/classic/skin/classic/communicator/icons/videoFeedIcon.png
- extensions/modern@themes.mozilla.org/chrome/modern/skin/modern/communicator/brand/throbber-single.png
- chrome/classic/skin/classic/communicator/brand/throbber-single.png
-diff --git a/suite/locales/en-US/chrome/browser/navigator.dtd b/suite/locales/en-US/chrome/browser/navigator.dtd
---- a/suite/locales/en-US/chrome/browser/navigator.dtd
-+++ b/suite/locales/en-US/chrome/browser/navigator.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- extracted from content/navigator.xul -->
-+<!-- extracted from content/navigator.xhtml -->
- 
- <!-- LOCALIZATION NOTE : FILE This file contains the browser main menu items --> 
- <!-- LOCALIZATION NOTE : FILE Do not translate commandkeys --> 
- 
- <!-- LOCALIZATION NOTE (mainWindow.title): DONT_TRANSLATE --> 
- <!ENTITY mainWindow.title "&brandShortName;">
- <!-- LOCALIZATION NOTE (mainWindow.titlemodifier) : DONT_TRANSLATE --> 
- <!ENTITY mainWindow.titlemodifier "&brandShortName;">
-diff --git a/suite/locales/en-US/chrome/common/openLocation.dtd b/suite/locales/en-US/chrome/common/openLocation.dtd
---- a/suite/locales/en-US/chrome/common/openLocation.dtd
-+++ b/suite/locales/en-US/chrome/common/openLocation.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- extracted from content/openLocation.xul -->
-+<!-- extracted from content/openLocation.xhtml -->
- 
- <!ENTITY enter.label "Enter the web location (URL), or specify the local file you would like to open:">
- <!-- LOCALIZATION NOTE (enter.accesskey): should be present in both enter.label
-      as defined above and attachEnterLabel as defined in
-      openLocation.properties -->
- <!ENTITY enter.accesskey "E">
- <!ENTITY chooseFile.label "Choose File…">
- <!ENTITY chooseFile.accesskey "C">
-diff --git a/suite/locales/en-US/chrome/common/pref/pref-cache.dtd b/suite/locales/en-US/chrome/common/pref/pref-cache.dtd
---- a/suite/locales/en-US/chrome/common/pref/pref-cache.dtd
-+++ b/suite/locales/en-US/chrome/common/pref/pref-cache.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- extracted from content/pref-cache.xul -->
-+<!-- extracted from content/pref-cache.xhtml -->
- 
- <!--LOCALIZATION NOTE : FILE Cache prefs dialog -->
- <!ENTITY pref.cache.title                "Cache">
- <!ENTITY pref.cache.caption              "Set Cache Options">
- <!ENTITY cachePara                       "The cache keeps copies of frequently visited web pages on your hard disk. (Clicking Reload always shows you the latest version of a page.)">
- <!ENTITY cacheCheck.label                "Let &brandShortName; manage the size of my cache">
- <!ENTITY cacheCheck.accesskey            "L">
- <!ENTITY diskCacheUpTo.label             "Use up to">
-diff --git a/suite/locales/en-US/chrome/common/pref/pref-colors.dtd b/suite/locales/en-US/chrome/common/pref/pref-colors.dtd
---- a/suite/locales/en-US/chrome/common/pref/pref-colors.dtd
-+++ b/suite/locales/en-US/chrome/common/pref/pref-colors.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- extracted from content/pref-colors.xul -->
-+<!-- extracted from content/pref-colors.xhtml -->
- 
- <!-- LOCALIZATION NOTE : FILE Color management prefs -->
- <!ENTITY pref.colors.title                 "Colors">
- <!ENTITY color                             "Text and Background">
- <!ENTITY textColor.label                   "Text:">
- <!ENTITY textColor.accesskey               "T">
- <!ENTITY backgroundColor.label             "Background:">
- <!ENTITY backgroundColor.accesskey         "B">
-diff --git a/suite/locales/en-US/chrome/common/pref/pref-debugging.dtd b/suite/locales/en-US/chrome/common/pref/pref-debugging.dtd
---- a/suite/locales/en-US/chrome/common/pref/pref-debugging.dtd
-+++ b/suite/locales/en-US/chrome/common/pref/pref-debugging.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- extracted from pref-eventdebugging.xul -->
-+<!-- extracted from pref-eventdebugging.xhtml -->
- 
- <!ENTITY pref.debugging.title "Debugging">
- 
- <!-- Render Debugging -->
- <!ENTITY debugRendering.label             "Rendering">
- <!ENTITY debugXULBox.label                "Debug XUL boxes">
- <!ENTITY debugXULBox.accesskey            "X">
- <!ENTITY debugDisableXULCache.label       "Disable XUL Cache">
-diff --git a/suite/locales/en-US/chrome/common/pref/pref-fonts.dtd b/suite/locales/en-US/chrome/common/pref/pref-fonts.dtd
---- a/suite/locales/en-US/chrome/common/pref/pref-fonts.dtd
-+++ b/suite/locales/en-US/chrome/common/pref/pref-fonts.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- extracted from content/pref-fonts.xul -->
-+<!-- extracted from content/pref-fonts.xhtml -->
- 
- <!-- LOCALIZATION NOTE : FILE 'Fonts' prefs dialog -->
- <!ENTITY  pref.fonts.title                        "Fonts">
- 
- <!ENTITY  language.label                          "Fonts for:">
- <!ENTITY  language.accesskey                      "t">
- 
- <!ENTITY  typefaces.label                         "Typeface">
-diff --git a/suite/locales/en-US/chrome/common/pref/pref-media.dtd b/suite/locales/en-US/chrome/common/pref/pref-media.dtd
---- a/suite/locales/en-US/chrome/common/pref/pref-media.dtd
-+++ b/suite/locales/en-US/chrome/common/pref/pref-media.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- extracted from content/pref-media.xul -->
-+<!-- extracted from content/pref-media.xhtml -->
- 
- <!-- LOCALIZATION NOTE : FILE Media management prefs -->
- <!ENTITY pref.media.title               "Media">
- <!ENTITY mediaHTML5Preferences.label    "Audio/Video">
- <!ENTITY allowMediaAutoplay.label       "Enable Autoplay of HTML5 media content">
- <!ENTITY allowMediaAutoplay.accesskey   "A">
- 
- <!ENTITY enableDrmMedia.label           "Enable Digital Rights Management for">
-diff --git a/suite/locales/en-US/chrome/common/pref/pref-offlineapps.dtd b/suite/locales/en-US/chrome/common/pref/pref-offlineapps.dtd
---- a/suite/locales/en-US/chrome/common/pref/pref-offlineapps.dtd
-+++ b/suite/locales/en-US/chrome/common/pref/pref-offlineapps.dtd
-@@ -1,12 +1,12 @@
- <!-- 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/. -->
--<!-- extracted from content/pref-offlineapps.xul -->
-+<!-- extracted from content/pref-offlineapps.xhtml -->
- 
- <!--LOCALIZATION NOTE : FILE Offline Apps prefs dialog -->
- <!ENTITY pref.offlineapps.title             "Offline Web Applications">
- <!ENTITY pref.offlineCache.caption          "Offline Web Content and User Data">
- 
- <!ENTITY clearOfflineAppCache.label         "Clear">
- <!ENTITY clearOfflineAppCache.accesskey     "C">
- 
-diff --git a/suite/locales/en-US/chrome/common/pref/pref-proxies.dtd b/suite/locales/en-US/chrome/common/pref/pref-proxies.dtd
---- a/suite/locales/en-US/chrome/common/pref/pref-proxies.dtd
-+++ b/suite/locales/en-US/chrome/common/pref/pref-proxies.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- extracted from content/pref-proxies.xul -->
-+<!-- extracted from content/pref-proxies.xhtml -->
- 
- <!--LOCALIZATION NOTE : FILE The Proxies preferences dialog -->
- <!ENTITY  pref.proxies.title            "Proxies">
- <!ENTITY  pref.proxies.desc             "A Proxy is a network service that can filter and speed up your Internet connection.">
- <!ENTITY  proxyTitle.label              "Configure Proxies to Access the Internet">
- <!ENTITY  directTypeRadio.label         "Direct connection to the Internet">
- <!ENTITY  directTypeRadio.accesskey     "D">
- <!ENTITY  systemTypeRadio.label         "Use system proxy settings">
-diff --git a/suite/locales/en-US/chrome/common/pref/pref-scripts.dtd b/suite/locales/en-US/chrome/common/pref/pref-scripts.dtd
---- a/suite/locales/en-US/chrome/common/pref/pref-scripts.dtd
-+++ b/suite/locales/en-US/chrome/common/pref/pref-scripts.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- extracted from content/pref-scripts.xul -->
-+<!-- extracted from content/pref-scripts.xhtml -->
- 
- <!--LOCALIZATION NOTE : FILE The 'Scripts' preferences dialog -->
- <!ENTITY pref.scripts2.title             "Scripts">
- 
- <!ENTITY navigator.label                 "Browser">
- <!ENTITY navigator.accesskey             "B">
- 
- <!--LOCALIZATION NOTE (enableJavaScript.label): 'JavaScript' should never be translated -->
-diff --git a/suite/locales/en-US/chrome/common/pref/pref-search.dtd b/suite/locales/en-US/chrome/common/pref/pref-search.dtd
---- a/suite/locales/en-US/chrome/common/pref/pref-search.dtd
-+++ b/suite/locales/en-US/chrome/common/pref/pref-search.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- extracted from content/pref-search.xul -->
-+<!-- extracted from content/pref-search.xhtml -->
- 
- <!-- LOCALIZATION NOTE : FILE The Search prefs dialog -->
- 
- <!ENTITY pref.search.title                "Internet Search">
- <!ENTITY legendHeader                     "Default Search Engine">
- <!ENTITY defaultSearchEngine.label        "Search using:">
- <!ENTITY defaultSearchEngine.accesskey    "S">
- 
-diff --git a/suite/locales/en-US/chrome/common/sidebar/customize.dtd b/suite/locales/en-US/chrome/common/sidebar/customize.dtd
---- a/suite/locales/en-US/chrome/common/sidebar/customize.dtd
-+++ b/suite/locales/en-US/chrome/common/sidebar/customize.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- extracted from ./customize.xul -->
-+<!-- extracted from ./customize.xhtml -->
- 
- <!ENTITY sidebar.customize.title                "Customize Sidebar">
- <!ENTITY sidebar.customize.current2.label       "Tabs in Sidebar:">
- <!ENTITY sidebar.customize.current2.accesskey   "T">
- <!ENTITY sidebar.customize.customize.label      "Customize Tab…">
- <!ENTITY sidebar.customize.customize.accesskey  "C">
- <!ENTITY sidebar.customize.remove.label         "Remove">
- <!ENTITY sidebar.customize.remove.accesskey     "R">
-diff --git a/suite/locales/en-US/chrome/common/tasksOverlay.dtd b/suite/locales/en-US/chrome/common/tasksOverlay.dtd
---- a/suite/locales/en-US/chrome/common/tasksOverlay.dtd
-+++ b/suite/locales/en-US/chrome/common/tasksOverlay.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- extracted from tasksOverlay.xul -->
-+<!-- extracted from tasksOverlay.xhtml -->
- <!ENTITY minimizeWindowCmd.label "Minimize">
- <!ENTITY minimizeWindowCmd.key "M">
- <!ENTITY zoomWindowCmd.label "Zoom">
- <!ENTITY navigatorCmd.label "Browser">
- <!ENTITY navigatorCmd.accesskey "B">
- <!ENTITY navigatorCmd.commandkey "1">
- 
- <!-- LOCALIZATION NOTE (editorCmd.label): DONT_TRANSLATE -->
-diff --git a/suite/locales/en-US/chrome/common/utilityOverlay.dtd b/suite/locales/en-US/chrome/common/utilityOverlay.dtd
---- a/suite/locales/en-US/chrome/common/utilityOverlay.dtd
-+++ b/suite/locales/en-US/chrome/common/utilityOverlay.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- these things need to move into utilityOverlay.xul -->
-+<!-- these things need to move into utilityOverlay.xhtml -->
- <!ENTITY  offlineGoOfflineCmd.label                 "Work Offline">
- <!ENTITY  offlineGoOfflineCmd.accesskey             "k">
- 
- <!-- LOCALIZATION NOTE : FILE This file contains the global menu items -->
- 
- <!ENTITY fileMenu.label                   "File">
- <!ENTITY fileMenu.accesskey               "F">
- <!ENTITY newMenu.label                    "New">
-diff --git a/suite/locales/en-US/chrome/mailnews/SearchDialog.dtd b/suite/locales/en-US/chrome/mailnews/SearchDialog.dtd
---- a/suite/locales/en-US/chrome/mailnews/SearchDialog.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/SearchDialog.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- for SearchDialog.xul -->
-+<!-- for SearchDialog.xhtml -->
- <!ENTITY searchHeading.label         "Search for messages in:">
- <!ENTITY searchHeading.accesskey     "e">
- <!ENTITY searchSubfolders.label      "Search subfolders">
- <!ENTITY searchSubfolders.accesskey  "u">
- <!ENTITY searchOnHeading.label       "Perform search operations on:">
- <!ENTITY searchOnHeading.accesskey   "P">
- <!ENTITY searchOnRemote.label        "Remote server">
- <!ENTITY searchOnLocal.label         "Local system">
-@@ -23,16 +23,16 @@
- <!ENTITY moveHereMenu.accesskey      "H">
- <!ENTITY moveButton.label            "Move To">
- <!ENTITY moveButton.accesskey        "T">
- <!ENTITY goToFolderButton.label      "Open Message Folder">
- <!ENTITY goToFolderButton.accesskey  "n">
- <!ENTITY saveAsVFButton.label        "Save as Search Folder">
- <!ENTITY saveAsVFButton.accesskey    "v">
- 
--<!-- for ABSearchDialog.xul -->
-+<!-- for ABSearchDialog.xhtml -->
- <!ENTITY abSearchHeading.label       "Search in:">
- <!ENTITY abSearchHeading.accesskey   "e">
- <!ENTITY propertiesButton.label      "Properties">
- <!ENTITY propertiesButton.accesskey  "P">
- <!ENTITY composeButton.label         "Compose">
- <!ENTITY composeButton.accesskey     "o">
- <!ENTITY abSearchDialogTitle.label   "Advanced Address Book Search">
-diff --git a/suite/locales/en-US/chrome/mailnews/messenger.properties b/suite/locales/en-US/chrome/mailnews/messenger.properties
---- a/suite/locales/en-US/chrome/mailnews/messenger.properties
-+++ b/suite/locales/en-US/chrome/mailnews/messenger.properties
-@@ -296,17 +296,17 @@ the server for reading offline. To read 
- you must reconnect to the network, choose Offline from \
- the File menu and then uncheck Work Offline. \
- In the future, you can select which messages or folders to read offline. To do \
- this, choose Offline from the file menu and then select Download/Sync Now. \
- You can adjust the Disk Space preference to prevent the downloading of large \
- messages.
- 
- # accountCentral
--mailnews.account_central_page.url=chrome://messenger/content/msgAccountCentral.xul
-+mailnews.account_central_page.url=chrome://messenger/content/msgAccountCentral.xhtml
- # LOCALIZATION NOTE(acctCentralTitleFormat): %1$S is brand, %2$S is account type, %3$S is account name
- acctCentralTitleFormat=%1$S %2$S - %3$S
- mailAcctType=Mail
- newsAcctType=News
- feedsAcctType=Feeds
- 
- # LOCALIZATION NOTE(nocachedbodytitle): Do not translate "<TITLE>" or "</TITLE>" in the line below
- nocachedbodytitle=<TITLE>Go Online to View This Message</TITLE>\n
-diff --git a/suite/locales/en-US/chrome/mailnews/msgPrintEngine.dtd b/suite/locales/en-US/chrome/mailnews/msgPrintEngine.dtd
---- a/suite/locales/en-US/chrome/mailnews/msgPrintEngine.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/msgPrintEngine.dtd
-@@ -1,11 +1,11 @@
- <!-- 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/. -->
- 
- <!-- LOCALIZATION NOTE (printCmd.key, closeCmd.key):
--     As defined in msgPrintEngine.xul, Ctrl plus the command keys defined here
-+     As defined in msgPrintEngine.xhtml, Ctrl plus the command keys defined here
-      will be the keyboard shortcuts effective in print preview, e.g. Ctrl+P
-      -->
- 
- <!ENTITY printCmd.key "P">
- <!ENTITY closeCmd.key "W">
-diff --git a/suite/locales/en-US/chrome/mailnews/msgSynchronize.dtd b/suite/locales/en-US/chrome/mailnews/msgSynchronize.dtd
---- a/suite/locales/en-US/chrome/mailnews/msgSynchronize.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/msgSynchronize.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- extracted from MsgSynchronize.xul and msgSelectOfflineFolders.xul-->
-+<!-- extracted from MsgSynchronize.xhtml and msgSelectOfflineFolders.xhtml-->
- 
- <!ENTITY MsgSynchronize.label "Download and Sync Messages">
- <!ENTITY MsgSelect.label "Items for Offline Use">
- <!ENTITY MsgSyncDesc.label "If you have already selected mail folders or newsgroups for offline use, you can download and/or sync them now. Otherwise, use the &quot;Select&quot; button to choose mail folders and newsgroups for offline use.">
- <!ENTITY MsgSyncDirections.label "Download and/or sync the following:">
- <!ENTITY syncTypeMail.label "Mail messages">
- <!ENTITY syncTypeMail.accesskey "M">
- <!ENTITY syncTypeNews.label "Newsgroup messages">
-diff --git a/suite/locales/en-US/chrome/mailnews/pref/AccountManager.dtd b/suite/locales/en-US/chrome/mailnews/pref/AccountManager.dtd
---- a/suite/locales/en-US/chrome/mailnews/pref/AccountManager.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/pref/AccountManager.dtd
-@@ -1,24 +1,24 @@
- <!-- 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/. -->
- 
--<!-- extracted from AccountManager.xul -->
-+<!-- extracted from AccountManager.xhtml -->
- 
- <!ENTITY accountManagerTitle.label "Mail &amp; Newsgroups Account Settings">
- 
- <!ENTITY addAccountButton.label "Add Account…">
- <!ENTITY addAccountButton.accesskey "A">
- <!ENTITY setDefaultButton.label "Set as Default">
- <!ENTITY setDefaultButton.accesskey "f">
- <!ENTITY removeButton.label "Remove Account">
- <!ENTITY removeButton.accesskey "R">
- 
--<!-- AccountManager.xul -->
-+<!-- AccountManager.xhtml -->
- <!-- LOCALIZATION NOTE : this is part of an inline-style attribute on the account
-      setting dialog, which specifies the width and height in em units of the dialog.
-      Localizers ONLY can increase these widths if they are having difficulty getting
-      panel content to fit.
-      1ch = The width of the "0" (ZERO, U+0030) glyph for the current font.
-      1em = The height of the font.
-      XUL/FE DEVELOPERS: DO NOT MODIFY THIS VALUE. It represents the correct size of
-      this window for en-US. -->
-diff --git a/suite/locales/en-US/chrome/mailnews/pref/am-addressing.dtd b/suite/locales/en-US/chrome/mailnews/pref/am-addressing.dtd
---- a/suite/locales/en-US/chrome/mailnews/pref/am-addressing.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/pref/am-addressing.dtd
-@@ -1,30 +1,30 @@
- <!-- 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/. -->
- 
--<!-- extracted from am-addressing.xul -->
-+<!-- extracted from am-addressing.xhtml -->
- 
- <!ENTITY addressing.label          "Composition &amp; Addressing">
- <!ENTITY addressingGroupTitle.label "Addressing">
- <!ENTITY autocompleteToMyDomain.label     "Automatically append my domain to addresses">
- <!ENTITY autocompleteToMyDomain.accesskey "o">
- <!ENTITY addressingText.label      "When looking up addresses:">
- <!-- LOCALIZATION NOTE (override.label) : do not translate "LDAP" in below line -->
- <!ENTITY useGlobal.label           "Use my global LDAP server preferences for this account">
- <!ENTITY useGlobal.accesskey       "U">
- <!ENTITY editDirectories.label     "Edit Directories…">
- <!ENTITY editDirectories.accesskey "E">
- <!-- LOCALIZATION NOTE (directories.label) : do not translate "LDAP" in below line -->
- <!ENTITY directories.label         "Use a different LDAP server:">
- <!ENTITY directories.accesskey     "d">
- <!ENTITY directoriesNone.label     "None">
- 
--<!-- am-addressing.xul -->
-+<!-- am-addressing.xhtml -->
- 
- <!ENTITY compositionGroupTitle.label          "Composition">
- <!-- LOCALIZATION NOTE (useHtml.label) : do not translate "html" in below line -->
- <!ENTITY useHtml.label                        "Compose messages in HTML format">
- <!ENTITY useHtml.accesskey                    "C">
- <!ENTITY autoQuote.label                      "Automatically quote the original message when replying">
- <!ENTITY autoQuote.accesskey                  "m">
- <!-- LOCALIZATION NOTE (quoting.label): This will concatenate with the 4 strings that follow. -->
-diff --git a/suite/locales/en-US/chrome/mailnews/pref/am-archiveoptions.dtd b/suite/locales/en-US/chrome/mailnews/pref/am-archiveoptions.dtd
---- a/suite/locales/en-US/chrome/mailnews/pref/am-archiveoptions.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/pref/am-archiveoptions.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- extracted from am-archiveoptions.xul -->
-+<!-- extracted from am-archiveoptions.xhtml -->
- 
- <!ENTITY dialogTitle.label "Archive Options">
- <!ENTITY archiveGranularityPrefix.label "When archiving messages, place them in:">
- <!ENTITY archiveFlat.label "A single folder">
- <!ENTITY archiveFlat.accesskey "s">
- <!ENTITY archiveYearly.label "Yearly archived folders">
- <!ENTITY archiveYearly.accesskey "Y">
- <!ENTITY archiveMonthly.label "Monthly archived folders">
-diff --git a/suite/locales/en-US/chrome/mailnews/pref/am-copies.dtd b/suite/locales/en-US/chrome/mailnews/pref/am-copies.dtd
---- a/suite/locales/en-US/chrome/mailnews/pref/am-copies.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/pref/am-copies.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- extracted from am-copies.xul -->
-+<!-- extracted from am-copies.xhtml -->
- 
- <!ENTITY copyAndFolderTitle.label "Copies &amp; Folders">
- <!ENTITY sendingPrefix.label "When sending messages:">
- <!ENTITY fccMailFolder.label "Automatically place a copy in:">
- <!ENTITY fccMailFolder.accesskey "u">
- <!ENTITY fccReplyFollowsParent.label "Place replies in the folder of the message being replied to">
- <!ENTITY fccReplyFollowsParent.accesskey "P">
- <!-- LOCALIZATION NOTE (ccAddress.label): do not translate "Cc" in below line -->
-diff --git a/suite/locales/en-US/chrome/mailnews/pref/am-main.dtd b/suite/locales/en-US/chrome/mailnews/pref/am-main.dtd
---- a/suite/locales/en-US/chrome/mailnews/pref/am-main.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/pref/am-main.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- extracted from am-main.xul -->
-+<!-- extracted from am-main.xhtml -->
- 
- <!ENTITY accountTitle.label "Account Settings">
- <!ENTITY accountName.label "Account Name:">
- <!ENTITY accountName.accesskey "N">
- <!ENTITY identityTitle.label "Default Identity">
- <!ENTITY identityDesc.label "Each account has an identity, which is the information that other people see when they read your messages.">
- <!ENTITY name.label "Your Name:">
- <!ENTITY name.accesskey "Y">
-diff --git a/suite/locales/en-US/chrome/mailnews/pref/pref-offline.dtd b/suite/locales/en-US/chrome/mailnews/pref/pref-offline.dtd
---- a/suite/locales/en-US/chrome/mailnews/pref/pref-offline.dtd
-+++ b/suite/locales/en-US/chrome/mailnews/pref/pref-offline.dtd
-@@ -1,13 +1,13 @@
- <!-- 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/. -->
- 
--<!-- extracted from content/pref-offline.xul -->
-+<!-- extracted from content/pref-offline.xhtml -->
- 
- <!--LOCALIZATION NOTE : FILE The 'Offline' preferences dialog -->
- <!ENTITY pref.network.title               "Network &amp; Storage">
- <!ENTITY pref.offline.caption             "Offline">
- <!ENTITY textStartUp                      "When starting up:">
- <!ENTITY textStartUp.accesskey            "W">
- <!ENTITY menuitemRememberPrevState        "Remember previous online state">
- <!ENTITY menuitemAskMe                    "Ask me for online state at startup">
-diff --git a/suite/mailnews/components/addrbook/content/abCommon.js b/suite/mailnews/components/addrbook/content/abCommon.js
---- a/suite/mailnews/components/addrbook/content/abCommon.js
-+++ b/suite/mailnews/components/addrbook/content/abCommon.js
-@@ -174,25 +174,25 @@ function SendCommandToResultsPane(comman
- 
-   // if we are sending the command so the results pane
-   // we should focus the results pane
-   gAbResultsTree.focus();
- }
- 
- function AbNewLDAPDirectory()
- {
--  window.openDialog("chrome://messenger/content/addressbook/pref-directory-add.xul",
-+  window.openDialog("chrome://messenger/content/addressbook/pref-directory-add.xhtml",
-                     "",
-                     "chrome,modal,resizable=no,centerscreen",
-                     null);
- }
- 
- function AbNewAddressBook()
- {
--  window.openDialog("chrome://messenger/content/addressbook/abAddressBookNameDialog.xul",
-+  window.openDialog("chrome://messenger/content/addressbook/abAddressBookNameDialog.xhtml",
-                     "",
-                     "chrome,modal,resizable=no,centerscreen",
-                     null);
- }
- 
- function AbEditSelectedDirectory()
- {
-   let selectedDir = getSelectedDirectory();
-@@ -632,51 +632,51 @@ function ChangeDirectoryByURI(uri = kPer
- 
- function AbNewList()
- {
-   goNewListDialog(getSelectedDirectoryURI());
- }
- 
- function goNewListDialog(selectedAB)
- {
--  window.openDialog("chrome://messenger/content/addressbook/abMailListDialog.xul",
-+  window.openDialog("chrome://messenger/content/addressbook/abMailListDialog.xhtml",
-                     "",
-                     "chrome,modal,resizable,centerscreen",
-                     {selectedAB:selectedAB});
- }
- 
- function goEditListDialog(abCard, listURI)
- {
-   let params = {
-     abCard: abCard,
-     listURI: listURI,
-     refresh: false, // This is an out param, true if OK in dialog is clicked.
-   };
- 
--  window.openDialog("chrome://messenger/content/addressbook/abEditListDialog.xul",
-+  window.openDialog("chrome://messenger/content/addressbook/abEditListDialog.xhtml",
-                     "",
-                     "chrome,modal,resizable,centerscreen",
-                     params);
- 
-   if (params.refresh) {
-     ChangeDirectoryByURI(listURI); // force refresh
-   }
- }
- 
- function goNewCardDialog(selectedAB)
- {
--  window.openDialog("chrome://messenger/content/addressbook/abNewCardDialog.xul",
-+  window.openDialog("chrome://messenger/content/addressbook/abNewCardDialog.xhtml",
-                     "",
-                     "chrome,modal,resizable=no,centerscreen",
-                     {selectedAB:selectedAB});
- }
- 
- function goEditCardDialog(abURI, card)
- {
--  window.openDialog("chrome://messenger/content/addressbook/abEditCardDialog.xul",
-+  window.openDialog("chrome://messenger/content/addressbook/abEditCardDialog.xhtml",
-                     "",
-                     "chrome,modal,resizable=no,centerscreen",
-                     {abURI:abURI, card:card});
- }
- 
- function setSortByMenuItemCheckState(id, value)
- {
-     var menuitem = document.getElementById(id);
-diff --git a/suite/mailnews/components/addrbook/content/abEditCardDialog.xhtml b/suite/mailnews/components/addrbook/content/abEditCardDialog.xhtml
---- a/suite/mailnews/components/addrbook/content/abEditCardDialog.xhtml
-+++ b/suite/mailnews/components/addrbook/content/abEditCardDialog.xhtml
-@@ -1,16 +1,16 @@
- <?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
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
- 
--<?xul-overlay href="chrome://messenger/content/addressbook/abCardOverlay.xul"?>
-+<?xul-overlay href="chrome://messenger/content/addressbook/abCardOverlay.xhtml"?>
- 
- <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-   id="abcardWindow"
-   onload="OnLoadEditCard()"
-   ondialogaccept="return EditCardOKButton();"
-   ondialogcancel="return EditCardCancelButton();">
- 
-   <stringbundleset id="stringbundleset"/>
-diff --git a/suite/mailnews/components/addrbook/content/abEditListDialog.xhtml b/suite/mailnews/components/addrbook/content/abEditListDialog.xhtml
---- a/suite/mailnews/components/addrbook/content/abEditListDialog.xhtml
-+++ b/suite/mailnews/components/addrbook/content/abEditListDialog.xhtml
-@@ -1,16 +1,16 @@
- <?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
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://messenger/skin/" type="text/css"?>
- 
--<?xul-overlay href="chrome://messenger/content/addressbook/abListOverlay.xul"?>
-+<?xul-overlay href="chrome://messenger/content/addressbook/abListOverlay.xhtml"?>
- 
- <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/addressbook/abMailListDialog.dtd">
- 
- <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-         xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-         id="ablistWindow"
-         onload="OnLoadEditList()"
-         ondialogaccept="return EditListOKButton();"
-diff --git a/suite/mailnews/components/addrbook/content/abMailListDialog.xhtml b/suite/mailnews/components/addrbook/content/abMailListDialog.xhtml
---- a/suite/mailnews/components/addrbook/content/abMailListDialog.xhtml
-+++ b/suite/mailnews/components/addrbook/content/abMailListDialog.xhtml
-@@ -1,16 +1,16 @@
- <?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
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://messenger/skin/" type="text/css"?>
- 
--<?xul-overlay href="chrome://messenger/content/addressbook/abListOverlay.xul"?>
-+<?xul-overlay href="chrome://messenger/content/addressbook/abListOverlay.xhtml"?>
- 
- <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/addressbook/abMailListDialog.dtd">
- 
- <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-     id="ablistWindow"
-     title="&mailListWindow.title;"
-     ondialogaccept="return MailListOKButton();"
-     onload="OnLoadNewMailList()"
-diff --git a/suite/mailnews/components/addrbook/content/abNewCardDialog.xhtml b/suite/mailnews/components/addrbook/content/abNewCardDialog.xhtml
---- a/suite/mailnews/components/addrbook/content/abNewCardDialog.xhtml
-+++ b/suite/mailnews/components/addrbook/content/abNewCardDialog.xhtml
-@@ -1,16 +1,16 @@
- <?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
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://global/skin/global.css" type="text/css"?>
- 
--<?xul-overlay href="chrome://messenger/content/addressbook/abCardOverlay.xul"?>
-+<?xul-overlay href="chrome://messenger/content/addressbook/abCardOverlay.xhtml"?>
- 
- <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/addressbook/abNewCardDialog.dtd">
- 
- <dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-     id="abcardWindow"
-     windowtype="mailnews:newcarddialog"
-     onload="OnLoadNewCard()"
-     ondialogaccept="return NewCardOKButton();"
-diff --git a/suite/mailnews/components/addrbook/content/abSelectAddressesDialog.js b/suite/mailnews/components/addrbook/content/abSelectAddressesDialog.js
---- a/suite/mailnews/components/addrbook/content/abSelectAddressesDialog.js
-+++ b/suite/mailnews/components/addrbook/content/abSelectAddressesDialog.js
-@@ -298,17 +298,17 @@ function ResultsPaneSelectionChanged()
-     editButton.setAttribute("disabled", "true");
-     toButton.setAttribute("disabled", "true");
-     ccButton.setAttribute("disabled", "true");
-     bccButton.setAttribute("disabled", "true");
-   }
- }
- 
- /* Function: DialogBucketPaneSelectionChanged()
-- * Callers : OnLoadSelectAddress(), abSelectAddressesDialog.xul:id="addressBucket"
-+ * Callers : OnLoadSelectAddress(), abSelectAddressesDialog.xhtml:id="addressBucket"
-  * -------------------------------------------------------------------------------
-  * This function is used to grab the selection state of the bucket tree to maintain
-  * the appropriate enabled/disabled states of the "Remove" button.
-  * If an entry is selected in the bucket Tree, then the "disabled" attribute is removed.
-  * Otherwise, if nothing is selected, "disabled" is set to true.
-  */
- 
- function DialogBucketPaneSelectionChanged()
-diff --git a/suite/mailnews/components/addrbook/content/abSelectAddressesDialog.xhtml b/suite/mailnews/components/addrbook/content/abSelectAddressesDialog.xhtml
---- a/suite/mailnews/components/addrbook/content/abSelectAddressesDialog.xhtml
-+++ b/suite/mailnews/components/addrbook/content/abSelectAddressesDialog.xhtml
-@@ -1,17 +1,17 @@
- <?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
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://messenger/skin/addressbook/selectAddressesDialog.css" type="text/css"?>
- 
--<?xul-overlay href="chrome://messenger/content/addressbook/abResultsPaneOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
-+<?xul-overlay href="chrome://messenger/content/addressbook/abResultsPaneOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xhtml"?>
- 
- <!DOCTYPE dialog [
- <!ENTITY % abSelectAddressesDialogDTD SYSTEM "chrome://messenger/locale/addressbook/abSelectAddressesDialog.dtd" >
- %abSelectAddressesDialogDTD;
- <!ENTITY % abResultsPaneOverlayDTD SYSTEM "chrome://messenger/locale/addressbook/abResultsPaneOverlay.dtd" >
- %abResultsPaneOverlayDTD;
- ]>
- 
-diff --git a/suite/mailnews/components/addrbook/content/addressbook.js b/suite/mailnews/components/addrbook/content/addressbook.js
---- a/suite/mailnews/components/addrbook/content/addressbook.js
-+++ b/suite/mailnews/components/addrbook/content/addressbook.js
-@@ -211,17 +211,17 @@ function AbPrintCardInternal(doPrintPrev
-   for (let i = 0; i < numSelected; i++) {
-     let card = selectedItems[i];
-     let printCardUrl = CreatePrintCardUrl(card);
-     if (printCardUrl) {
-       selectionArray.push(printCardUrl);
-     }
-   }
- 
--  printEngineWindow = window.openDialog("chrome://messenger/content/msgPrintEngine.xul",
-+  printEngineWindow = window.openDialog("chrome://messenger/content/msgPrintEngine.xhtml",
-                                         "",
-                                         "chrome,dialog=no,all",
-                                         selectionArray.length, selectionArray,
-                                         statusFeedback, doPrintPreview, msgType);
- 
-   return;
- }
- 
-@@ -253,17 +253,17 @@ function AbPrintAddressBookInternal(doPr
-   /*
-     turn "moz-abmdbdirectory://abook.mab" into
-     "addbook://moz-abmdbdirectory/abook.mab?action=print"
-    */
- 
-   var abURIArr = uri.split("://");
-   var printUrl = "addbook://" + abURIArr[0] + "/" + abURIArr[1] + "?action=print"
- 
--  printEngineWindow = window.openDialog("chrome://messenger/content/msgPrintEngine.xul",
-+  printEngineWindow = window.openDialog("chrome://messenger/content/msgPrintEngine.xhtml",
-                                         "",
-                                         "chrome,dialog=no,all",
-                                         1, [printUrl],
-                                         statusFeedback, doPrintPreview, msgType);
- 
-   return;
- }
- 
-@@ -382,17 +382,17 @@ function onAdvancedAbSearch()
-   let selectedDirURI = getSelectedDirectoryURI();
-   if (!selectedDirURI)
-     return;
- 
-   var existingSearchWindow = Services.wm.getMostRecentWindow("mailnews:absearch");
-   if (existingSearchWindow)
-     existingSearchWindow.focus();
-   else
--    window.openDialog("chrome://messenger/content/ABSearchDialog.xul", "",
-+    window.openDialog("chrome://messenger/content/ABSearchDialog.xhtml", "",
-                       "chrome,resizable,status,centerscreen,dialog=no",
-                       {directory: selectedDirURI});
- }
- 
- function onEnterInSearchBar()
- {
-   ClearCardViewPane();
-   if (!gQueryURIFormat) {
-diff --git a/suite/mailnews/components/addrbook/content/addressbook.xhtml b/suite/mailnews/components/addrbook/content/addressbook.xhtml
---- a/suite/mailnews/components/addrbook/content/addressbook.xhtml
-+++ b/suite/mailnews/components/addrbook/content/addressbook.xhtml
-@@ -2,20 +2,20 @@
- <!-- 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/. -->
- 
- <?xml-stylesheet href="chrome://messenger/skin/addressbook/addressbook.css" type="text/css"?>
- <?xml-stylesheet href="chrome://messenger/skin/addressbook/addressPanes.css"
-                  type="text/css"?>
- 
--<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/tasksOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/contentAreaContextOverlay.xul"?>
--<?xul-overlay href="chrome://messenger/content/addressbook/abResultsPaneOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/tasksOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/contentAreaContextOverlay.xhtml"?>
-+<?xul-overlay href="chrome://messenger/content/addressbook/abResultsPaneOverlay.xhtml"?>
- 
- <!DOCTYPE window [
- <!ENTITY % abMainWindowDTD SYSTEM "chrome://messenger/locale/addressbook/abMainWindow.dtd" >
- %abMainWindowDTD;
- <!ENTITY % abResultsPaneOverlayDTD SYSTEM "chrome://messenger/locale/addressbook/abResultsPaneOverlay.dtd" >
- %abResultsPaneOverlayDTD;
- <!ENTITY % mailOverlayDTD SYSTEM "chrome://messenger/locale/mailOverlay.dtd">
- %mailOverlayDTD;
-diff --git a/suite/mailnews/components/addrbook/content/prefs/pref-addressing.js b/suite/mailnews/components/addrbook/content/prefs/pref-addressing.js
---- a/suite/mailnews/components/addrbook/content/prefs/pref-addressing.js
-+++ b/suite/mailnews/components/addrbook/content/prefs/pref-addressing.js
-@@ -5,17 +5,17 @@
- 
- function Startup()
- {
-   enableAutocomplete();
- }
- 
- function onEditDirectories()
- {
--  window.openDialog("chrome://messenger/content/addressbook/pref-editdirectories.xul",
-+  window.openDialog("chrome://messenger/content/addressbook/pref-editdirectories.xhtml",
-                     "editDirectories", "chrome,modal=yes,resizable=no", null);
- }
- 
- function enableAutocomplete()
- {
-   var acLDAPValue = document.getElementById("ldap_2.autoComplete.useDirectory")
-                             .value;
- 
-diff --git a/suite/mailnews/components/addrbook/jar.mn b/suite/mailnews/components/addrbook/jar.mn
---- a/suite/mailnews/components/addrbook/jar.mn
-+++ b/suite/mailnews/components/addrbook/jar.mn
-@@ -1,24 +1,24 @@
- # 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/.
- 
- messenger.jar:
-     content/messenger/addressbook/addressbook.js                               (content/addressbook.js)
--*   content/messenger/addressbook/addressbook.xul                              (content/addressbook.xul)
-+*   content/messenger/addressbook/addressbook.xhtml                            (content/addressbook.xhtml)
-     content/messenger/addressbook/abCommon.js                                  (content/abCommon.js)
-     content/messenger/addressbook/abCardOverlay.js                             (content/abCardOverlay.js)
--    content/messenger/addressbook/abCardOverlay.xul                            (content/abCardOverlay.xul)
-+    content/messenger/addressbook/abCardOverlay.xhtml                          (content/abCardOverlay.xhtml)
-     content/messenger/addressbook/abCardViewOverlay.js                         (content/abCardViewOverlay.js)
--    content/messenger/addressbook/abEditCardDialog.xul                         (content/abEditCardDialog.xul)
--    content/messenger/addressbook/abNewCardDialog.xul                          (content/abNewCardDialog.xul)
--    content/messenger/addressbook/abResultsPaneOverlay.xul                     (content/abResultsPaneOverlay.xul)
--    content/messenger/addressbook/abMailListDialog.xul                         (content/abMailListDialog.xul)
--    content/messenger/addressbook/abEditListDialog.xul                         (content/abEditListDialog.xul)
--    content/messenger/addressbook/abListOverlay.xul                            (content/abListOverlay.xul)
-+    content/messenger/addressbook/abEditCardDialog.xhtml                       (content/abEditCardDialog.xhtml)
-+    content/messenger/addressbook/abNewCardDialog.xhtml                        (content/abNewCardDialog.xhtml)
-+    content/messenger/addressbook/abResultsPaneOverlay.xhtml                   (content/abResultsPaneOverlay.xhtml)
-+    content/messenger/addressbook/abMailListDialog.xhtml                       (content/abMailListDialog.xhtml)
-+    content/messenger/addressbook/abEditListDialog.xhtml                       (content/abEditListDialog.xhtml)
-+    content/messenger/addressbook/abListOverlay.xhtml                          (content/abListOverlay.xhtml)
-     content/messenger/addressbook/abSelectAddressesDialog.js                   (content/abSelectAddressesDialog.js)
--    content/messenger/addressbook/abSelectAddressesDialog.xul                  (content/abSelectAddressesDialog.xul)
-+    content/messenger/addressbook/abSelectAddressesDialog.xhtml                (content/abSelectAddressesDialog.xhtml)
-     content/messenger/addressbook/abTrees.js                                   (content/abTrees.js)
--    content/messenger/addressbook/addressbook-panel.xul                        (content/addressbook-panel.xul)
-+    content/messenger/addressbook/addressbook-panel.xhtml                      (content/addressbook-panel.xhtml)
-     content/messenger/addressbook/addressbook-panel.js                         (content/addressbook-panel.js)
-     content/messenger/addressbook/pref-addressing.js                           (content/prefs/pref-addressing.js)
--    content/messenger/addressbook/pref-addressing.xul                          (content/prefs/pref-addressing.xul)
-+    content/messenger/addressbook/pref-addressing.xhtml                        (content/prefs/pref-addressing.xhtml)
-diff --git a/suite/mailnews/components/compose/content/MsgComposeCommands.js b/suite/mailnews/components/compose/content/MsgComposeCommands.js
---- a/suite/mailnews/components/compose/content/MsgComposeCommands.js
-+++ b/suite/mailnews/components/compose/content/MsgComposeCommands.js
-@@ -1763,17 +1763,17 @@ function GenericSendMessage(msgType) {
-       msgType == Ci.nsIMsgCompDeliverMode.Background) {
-     //Do we need to check the spelling?
-     if (DoSpellCheckBeforeSend()) {
-       // We disable spellcheck for the following -subject line, attachment
-       // pane, identity and addressing widget therefore we need to explicitly
-       // focus on the mail body when we have to do a spellcheck.
-       SetMsgBodyFrameFocus();
-       window.cancelSendMessage = false;
--      window.openDialog("chrome://editor/content/EdSpellCheck.xul", "_blank",
-+      window.openDialog("chrome://editor/content/EdSpellCheck.xhtml", "_blank",
-                         "dialog,close,titlebar,modal,resizable",
-                         true, true, false);
-       if (window.cancelSendMessage)
-         return;
-     }
- 
-     // Strip trailing spaces and long consecutive WSP sequences from the
-     // subject line to prevent getting only WSP chars on a folded line.
-@@ -1846,17 +1846,17 @@ function GenericSendMessage(msgType) {
-     if (!CheckValidEmailAddress(msgCompFields.to, msgCompFields.cc, msgCompFields.bcc))
-       return;
- 
-     if (action == Ci.nsIMsgCompSendFormat.AskUser) {
-       var recommAction = (convert == Ci.nsIMsgCompConvertible.No)
-                          ? Ci.nsIMsgCompSendFormat.AskUser
-                          : Ci.nsIMsgCompSendFormat.PlainText;
-       var result2 = {action:recommAction, convertible:convert, abort:false};
--      window.openDialog("chrome://messenger/content/messengercompose/askSendFormat.xul",
-+      window.openDialog("chrome://messenger/content/messengercompose/askSendFormat.xhtml",
-                         "askSendFormatDialog", "chrome,modal,titlebar,centerscreen",
-                         result2);
-       if (result2.abort)
-         return;
-       action = result2.action;
-     }
- 
-     // We will remember the users "send format" decision in the address
-@@ -2195,17 +2195,17 @@ function SelectAddress()
- 
-   Recipients2CompFields(msgCompFields);
- 
-   var toAddress = msgCompFields.to;
-   var ccAddress = msgCompFields.cc;
-   var bccAddress = msgCompFields.bcc;
- 
-   dump("toAddress: " + toAddress + "\n");
--  window.openDialog("chrome://messenger/content/addressbook/abSelectAddressesDialog.xul",
-+  window.openDialog("chrome://messenger/content/addressbook/abSelectAddressesDialog.xhtml",
-             "",
-             "chrome,resizable,titlebar,modal",
-             {composeWindow:top.window,
-              msgCompFields:msgCompFields,
-              toAddress:toAddress,
-              ccAddress:ccAddress,
-              bccAddress:bccAddress});
-   // We have to set focus to the addressingwidget because we seem to loose focus often
-@@ -2762,17 +2762,17 @@ function MessageGetNumSelectedAttachment
- {
-   var bucketList = GetMsgAttachmentElement();
-   return (bucketList) ? bucketList.selectedItems.length : 0;
- }
- 
- function AttachPage()
- {
-   var params = { action: "5", url: null };
--  window.openDialog("chrome://communicator/content/openLocation.xul",
-+  window.openDialog("chrome://communicator/content/openLocation.xhtml",
-                     "_blank", "chrome,close,titlebar,modal", params);
-   if (params.url)
-   {
-     var attachment =
-         Cc["@mozilla.org/messengercompose/attachment;1"]
-           .createInstance(Ci.nsIMsgAttachment);
-     attachment.url = params.url;
-     AddAttachment(attachment);
-diff --git a/suite/mailnews/components/compose/content/messengercompose.xhtml b/suite/mailnews/components/compose/content/messengercompose.xhtml
---- a/suite/mailnews/components/compose/content/messengercompose.xhtml
-+++ b/suite/mailnews/components/compose/content/messengercompose.xhtml
-@@ -5,25 +5,25 @@
- 
- <?xml-stylesheet href="chrome://messenger/skin/messengercompose/messengercompose.css" type="text/css"?>
- <?xml-stylesheet href="chrome://messenger/skin/folderMenus.css" type="text/css"?>
- <?xml-stylesheet href="chrome://editor/skin/editorFormatToolbar.css" type="text/css"?>
- <?xml-stylesheet href="chrome://messenger/skin/addressingWidget.css" type="text/css"?>
- <?xml-stylesheet href="chrome://messenger/skin/smime/msgCompSMIMEOverlay.css" type="text/css"?>
- <?xml-stylesheet href="chrome://messenger/content/bindings.css" type="text/css"?>
- 
--<?xul-overlay href="chrome://communicator/content/charsetOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/tasksOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/sidebar/sidebarOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/contentAreaContextOverlay.xul"?>
--<?xul-overlay href="chrome://messenger/content/messengercompose/msgComposeContextOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
--<?xul-overlay href="chrome://editor/content/editorOverlay.xul"?>
--<?xul-overlay href="chrome://messenger/content/messengercompose/mailComposeOverlay.xul"?>
--<?xul-overlay href="chrome://messenger/content/mailOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/charsetOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/tasksOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/sidebar/sidebarOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/contentAreaContextOverlay.xhtml"?>
-+<?xul-overlay href="chrome://messenger/content/messengercompose/msgComposeContextOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xhtml"?>
-+<?xul-overlay href="chrome://editor/content/editorOverlay.xhtml"?>
-+<?xul-overlay href="chrome://messenger/content/messengercompose/mailComposeOverlay.xhtml"?>
-+<?xul-overlay href="chrome://messenger/content/mailOverlay.xhtml"?>
- 
- <!DOCTYPE window [
- <!ENTITY % messengercomposeDTD SYSTEM "chrome://messenger/locale/messengercompose/messengercompose.dtd" >
- %messengercomposeDTD;
- <!ENTITY % messengerDTD SYSTEM "chrome://messenger/locale/messenger.dtd" >
- %messengerDTD;
- <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
- %brandDTD;
-@@ -661,17 +661,17 @@
-             resizeafter="grow"
-             onmousedown="awSizerListen();"
-             oncommand="awSizerResized(this);">
-     <observes element="MsgHeadersToolbar" attribute="collapsed"/>
-   </splitter>
- 
-   <!-- sidebar/toolbar/content/status -->
-   <hbox id="sidebar-parent" flex="1">
--    <!-- From sidebarOverlay.xul -->
-+    <!-- From sidebarOverlay.xhtml -->
-     <vbox id="sidebar-box" class="chromeclass-extrachrome" hidden="true"/>
-     <splitter id="sidebar-splitter" class="chromeclass-extrachrome" hidden="true"/>
- 
-     <!-- The mail message body frame -->
-     <vbox id="appcontent" flex="1">
-       <findbar id="FindToolbar" browserid="content-frame"/>
-       <editor id="content-frame"
-               type="content"
-diff --git a/suite/mailnews/components/compose/jar.mn b/suite/mailnews/components/compose/jar.mn
---- a/suite/mailnews/components/compose/jar.mn
-+++ b/suite/mailnews/components/compose/jar.mn
-@@ -1,14 +1,14 @@
- # 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/.
- 
- messenger.jar:
--    content/messenger/messengercompose/pref-composing_messages.xul             (content/prefs/pref-composing_messages.xul)
-+    content/messenger/messengercompose/pref-composing_messages.xhtml           (content/prefs/pref-composing_messages.xhtml)
-     content/messenger/messengercompose/pref-composing_messages.js              (content/prefs/pref-composing_messages.js)
--    content/messenger/messengercompose/pref-formatting.xul                     (content/prefs/pref-formatting.xul)
-+    content/messenger/messengercompose/pref-formatting.xhtml                   (content/prefs/pref-formatting.xhtml)
-     content/messenger/messengercompose/pref-formatting.js                      (content/prefs/pref-formatting.js)
--*   content/messenger/messengercompose/messengercompose.xul                    (content/messengercompose.xul)
--    content/messenger/messengercompose/mailComposeOverlay.xul                  (content/mailComposeOverlay.xul)
--    content/messenger/messengercompose/msgComposeContextOverlay.xul            (content/msgComposeContextOverlay.xul)
-+*   content/messenger/messengercompose/messengercompose.xhtml                  (content/messengercompose.xhtml)
-+    content/messenger/messengercompose/mailComposeOverlay.xhtml                (content/mailComposeOverlay.xhtml)
-+    content/messenger/messengercompose/msgComposeContextOverlay.xhtml          (content/msgComposeContextOverlay.xhtml)
-     content/messenger/messengercompose/MsgComposeCommands.js                   (content/MsgComposeCommands.js)
-     content/messenger/messengercompose/addressingWidgetOverlay.js              (content/addressingWidgetOverlay.js)
-diff --git a/suite/mailnews/components/prefs/content/mailPrefsOverlay.xhtml b/suite/mailnews/components/prefs/content/mailPrefsOverlay.xhtml
---- a/suite/mailnews/components/prefs/content/mailPrefsOverlay.xhtml
-+++ b/suite/mailnews/components/prefs/content/mailPrefsOverlay.xhtml
-@@ -37,66 +37,66 @@
- 
-   <!-- category tree entries for mail/news -->
-   <treechildren id="prefsPanelChildren">
-     <treeitem container="true"
-               id="mailnewsItem"
-               insertafter="navigatorItem"
-               label="&mail.label;"
-               prefpane="mailnews_pane"
--              url="chrome://messenger/content/pref-mailnews.xul"
-+              url="chrome://messenger/content/pref-mailnews.xhtml"
-               helpTopic="mail_prefs_general">
-       <treechildren id="messengerChildren">
-         <treeitem id="viewingMessagesItem"
-                   label="&viewingMessages.label;"
-                   prefpane="viewing_messages_pane"
--                  url="chrome://messenger/content/pref-viewing_messages.xul"
-+                  url="chrome://messenger/content/pref-viewing_messages.xhtml"
-                   helpTopic="mail_prefs_display"/>
-         <treeitem id="notificationsItem"
-                   label="&notifications.label;"
-                   prefpane="notifications_pane"
--                  url="chrome://messenger/content/pref-notifications.xul"
-+                  url="chrome://messenger/content/pref-notifications.xhtml"
-                   helpTopic="mail_prefs_notifications"/>
-         <treeitem id="composingItem"
-                   label="&composingMessages.label;"
-                   prefpane="composing_messages_pane"
--                  url="chrome://messenger/content/messengercompose/pref-composing_messages.xul"
-+                  url="chrome://messenger/content/messengercompose/pref-composing_messages.xhtml"
-                   helpTopic="mail_prefs_messages"/>
-         <treeitem id="formattingItem"
-                   label="&format.label;"
-                   prefpane="formatting_pane"
--                  url="chrome://messenger/content/messengercompose/pref-formatting.xul"
-+                  url="chrome://messenger/content/messengercompose/pref-formatting.xhtml"
-                   helpTopic="mail_prefs_formatting"/>
-         <treeitem id="addressItem"
-                   label="&address.label;"
-                   prefpane="addressing_pane"
--                  url="chrome://messenger/content/addressbook/pref-addressing.xul"
-+                  url="chrome://messenger/content/addressbook/pref-addressing.xhtml"
-                   helpTopic="mail_prefs_addressing"/>
-         <treeitem id="junkItem"
-                   label="&junk.label;"
-                   prefpane="junk_pane"
--                  url="chrome://messenger/content/pref-junk.xul"
-+                  url="chrome://messenger/content/pref-junk.xhtml"
-                   helpTopic="mail-prefs-junk"/>
-         <treeitem id="tagsItem"
-                   label="&tags.label;"
-                   prefpane="tags_pane"
--                  url="chrome://messenger/content/pref-tags.xul"
-+                  url="chrome://messenger/content/pref-tags.xhtml"
-                   helpTopic="mail-prefs-tags"/>
-         <treeitem id="receiptsItem"
-                   label="&return.label;"
-                   prefpane="receipts_pane"
--                  url="chrome://messenger/content/pref-receipts.xul"
-+                  url="chrome://messenger/content/pref-receipts.xhtml"
-                   helpTopic="mail-prefs-receipts"/>
-         <treeitem id="characterEncodingItem"
-                   label="&characterEncoding2.label;"
-                   prefpane="character_encoding_pane"
--                  url="chrome://messenger/content/pref-character_encoding.xul"
-+                  url="chrome://messenger/content/pref-character_encoding.xhtml"
-                   helpTopic="mail_prefs_text_encoding"/>
-         <treeitem id="offlineItem"
-                   label="&networkStorage.label;"
-                   prefpane="offline_pane"
--                  url="chrome://messenger/content/pref-offline.xul"
-+                  url="chrome://messenger/content/pref-offline.xhtml"
-                   helpTopic="mail_prefs_offline"/>
-       </treechildren>
-     </treeitem>
-   </treechildren>
- 
- </overlay>
-diff --git a/suite/mailnews/components/prefs/content/pref-junk.js b/suite/mailnews/components/prefs/content/pref-junk.js
---- a/suite/mailnews/components/prefs/content/pref-junk.js
-+++ b/suite/mailnews/components/prefs/content/pref-junk.js
-@@ -16,17 +16,17 @@ function Startup()
- function UpdateDependentElement(aBaseId, aDependentId)
- {
-   var pref = document.getElementById(aBaseId).getAttribute("preference");
-   EnableElementById(aDependentId, document.getElementById(pref).value, false);
- }
- 
- function OpenJunkLog()
- {
--  window.openDialog("chrome://messenger/content/junkLog.xul",
-+  window.openDialog("chrome://messenger/content/junkLog.xhtml",
-                     "junkLog",
-                     "chrome,modal,titlebar,resizable,centerscreen");
- }
- 
- function ResetTrainingData()
- {
-   // make sure the user really wants to do this
-   var bundle = document.getElementById("bundleJunkPreferences");
-diff --git a/suite/mailnews/components/prefs/jar.mn b/suite/mailnews/components/prefs/jar.mn
---- a/suite/mailnews/components/prefs/jar.mn
-+++ b/suite/mailnews/components/prefs/jar.mn
-@@ -1,23 +1,23 @@
- # 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/.
- 
- messenger.jar:
--    content/messenger/mailPrefsOverlay.xul                                     (content/mailPrefsOverlay.xul)
--*   content/messenger/pref-mailnews.xul                                        (content/pref-mailnews.xul)
-+    content/messenger/mailPrefsOverlay.xhtml                                   (content/mailPrefsOverlay.xhtml)
-+*   content/messenger/pref-mailnews.xhtml                                      (content/pref-mailnews.xhtml)
-     content/messenger/pref-mailnews.js                                         (content/pref-mailnews.js)
--    content/messenger/pref-notifications.xul                                   (content/pref-notifications.xul)
-+    content/messenger/pref-notifications.xhtml                                 (content/pref-notifications.xhtml)
-     content/messenger/pref-notifications.js                                    (content/pref-notifications.js)
--    content/messenger/pref-junk.xul                                            (content/pref-junk.xul)
-+    content/messenger/pref-junk.xhtml                                          (content/pref-junk.xhtml)
-     content/messenger/pref-junk.js                                             (content/pref-junk.js)
--    content/messenger/pref-tags.xul                                            (content/pref-tags.xul)
-+    content/messenger/pref-tags.xhtml                                          (content/pref-tags.xhtml)
-     content/messenger/pref-tags.js                                             (content/pref-tags.js)
--    content/messenger/pref-viewing_messages.xul                                (content/pref-viewing_messages.xul)
-+    content/messenger/pref-viewing_messages.xhtml                              (content/pref-viewing_messages.xhtml)
-     content/messenger/pref-viewing_messages.js                                 (content/pref-viewing_messages.js)
--    content/messenger/pref-receipts.xul                                        (content/pref-receipts.xul)
-+    content/messenger/pref-receipts.xhtml                                      (content/pref-receipts.xhtml)
-     content/messenger/pref-receipts.js                                         (content/pref-receipts.js)
--    content/messenger/pref-character_encoding.xul                              (content/pref-character_encoding.xul)
-+    content/messenger/pref-character_encoding.xhtml                            (content/pref-character_encoding.xhtml)
-     content/messenger/pref-character_encoding.js                               (content/pref-character_encoding.js)
--    content/messenger/pref-offline.xul                                         (content/pref-offline.xul)
-+    content/messenger/pref-offline.xhtml                                       (content/pref-offline.xhtml)
-     content/messenger/pref-offline.js                                          (content/pref-offline.js)
- 
-diff --git a/suite/mailnews/components/smime/content/msgCompSMIMEOverlay.js b/suite/mailnews/components/smime/content/msgCompSMIMEOverlay.js
---- a/suite/mailnews/components/smime/content/msgCompSMIMEOverlay.js
-+++ b/suite/mailnews/components/smime/content/msgCompSMIMEOverlay.js
-@@ -207,17 +207,17 @@ function setEncryptionUI()
-   top.document.getElementById("encryption-status").collapsed = false;
- }
- 
- function showMessageComposeSecurityStatus()
- {
-   Recipients2CompFields(gMsgCompose.compFields);
- 
-   window.openDialog(
--    "chrome://messenger-smime/content/msgCompSecurityInfo.xul",
-+    "chrome://messenger-smime/content/msgCompSecurityInfo.xhtml",
-     "",
-     "chrome,modal,resizable,centerscreen",
-     {
-       compFields : gMsgCompose.compFields,
-       subject : GetMsgSubjectElement().value,
-       smFields : gSMFields,
-       isSigningCertAvailable :
-         gCurrentIdentity.getUnicharAttribute("signing_cert_name") != "",
-@@ -289,17 +289,17 @@ function onComposerSendMessage()
-     {
-       // Try the global one
-       if (Services.prefs.getBoolPref("ldap_2.autoComplete.useDirectory"))
-         autocompleteDirectory =
-           Services.prefs.getCharPref("ldap_2.autoComplete.directoryServer");
-     }
- 
-     if (autocompleteDirectory)
--      window.openDialog("chrome://messenger-smime/content/certFetchingStatus.xul",
-+      window.openDialog("chrome://messenger-smime/content/certFetchingStatus.xhtml",
-                         "",
-                         "chrome,modal,resizable,centerscreen",
-                         autocompleteDirectory,
-                         emailAddresses);
-   }
- }
- 
- function onComposerFromChanged()
-diff --git a/suite/mailnews/content/ABSearchDialog.xhtml b/suite/mailnews/content/ABSearchDialog.xhtml
---- a/suite/mailnews/content/ABSearchDialog.xhtml
-+++ b/suite/mailnews/content/ABSearchDialog.xhtml
-@@ -1,17 +1,17 @@
- <?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
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- <?xml-stylesheet href="chrome://messenger/skin/searchDialog.css" type="text/css"?>
- 
--<?xul-overlay href="chrome://messenger/content/addressbook/abResultsPaneOverlay.xul"?>
--<?xul-overlay href="chrome://messenger/content/searchTermOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
-+<?xul-overlay href="chrome://messenger/content/addressbook/abResultsPaneOverlay.xhtml"?>
-+<?xul-overlay href="chrome://messenger/content/searchTermOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xhtml"?>
- 
- <!DOCTYPE dialog [
- <!ENTITY % abResultsPaneOverlayDTD SYSTEM "chrome://messenger/locale/addressbook
- /abResultsPaneOverlay.dtd">
- %abResultsPaneOverlayDTD;
- <!ENTITY % SearchDialogDTD SYSTEM "chrome://messenger/locale/SearchDialog.dtd">
- %SearchDialogDTD;
- ]>
-diff --git a/suite/mailnews/content/FilterListDialog.js b/suite/mailnews/content/FilterListDialog.js
---- a/suite/mailnews/content/FilterListDialog.js
-+++ b/suite/mailnews/content/FilterListDialog.js
-@@ -335,17 +335,17 @@ function onEditFilter()
-     return;
- 
-   var selectedFilter = currentFilter();
-   if (!selectedFilter)
-     return;
- 
-   let args = {filter: selectedFilter, filterList: gCurrentFilterList};
- 
--  window.openDialog("chrome://messenger/content/FilterEditor.xul", "FilterEditor", "chrome,modal,titlebar,resizable,centerscreen", args);
-+  window.openDialog("chrome://messenger/content/FilterEditor.xhtml", "FilterEditor", "chrome,modal,titlebar,resizable,centerscreen", args);
- 
-   if ("refresh" in args && args.refresh) {
-     // Reset search if edit was okay (name change might lead to hidden entry).
-     resetSearchBox(selectedFilter);
-     rebuildFilterList();
-   }
- }
- 
-@@ -395,17 +395,17 @@ function calculatePositionAndShowCreateF
-         break;
-       }
-     }
-   }
-   args.filterPosition = position;
-   args.filterList = gCurrentFilterList;
-   args.refresh = false;
- 
--  window.openDialog("chrome://messenger/content/FilterEditor.xul",
-+  window.openDialog("chrome://messenger/content/FilterEditor.xhtml",
-                     "FilterEditor",
-                     "chrome,modal,titlebar,resizable,centerscreen", args);
- 
-   if (args.refresh)
-   {
-     // On success: reset the search box if necessary!
-     resetSearchBox(args.newFilter);
-     rebuildFilterList();
-@@ -558,17 +558,17 @@ function moveFilter(motion) {
- 
-   rebuildFilterList();
- }
- 
- function viewLog()
- {
-   let args = {filterList: gCurrentFilterList};
- 
--  window.openDialog("chrome://messenger/content/viewLog.xul", "FilterLog", "chrome,modal,titlebar,resizable,centerscreen", args);
-+  window.openDialog("chrome://messenger/content/viewLog.xhtml", "FilterLog", "chrome,modal,titlebar,resizable,centerscreen", args);
- }
- 
- function onFilterUnload()
- {
-   // make sure to save the filter to disk
-   if (gCurrentFilterList)
-     gCurrentFilterList.saveToDefaultFile();
- 
-diff --git a/suite/mailnews/content/FilterListDialog.xhtml b/suite/mailnews/content/FilterListDialog.xhtml
---- a/suite/mailnews/content/FilterListDialog.xhtml
-+++ b/suite/mailnews/content/FilterListDialog.xhtml
-@@ -1,17 +1,17 @@
- <?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
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <?xml-stylesheet href="chrome://messenger/skin/filterDialog.css" type="text/css"?>
- <?xml-stylesheet href="chrome://messenger/skin/folderMenus.css" type="text/css"?>
- 
--<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xhtml"?>
- 
- <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/FilterListDialog.dtd">
- 
- <dialog id="filterListDialog"
-         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-         windowtype="mailnews:filterlist"
-         title="&filterListDialog.title;"
-         style="width: 45em; height: 31em;"
-diff --git a/suite/mailnews/content/SearchDialog.js b/suite/mailnews/content/SearchDialog.js
---- a/suite/mailnews/content/SearchDialog.js
-+++ b/suite/mailnews/content/SearchDialog.js
-@@ -704,17 +704,17 @@ function saveAsVirtualFolder()
-   var searchSubfolders = document.getElementById("checkSearchSubFolders").checked;
-   if (gMsgFolderSelected && (searchSubfolders || gMsgFolderSelected.isServer || gMsgFolderSelected.noSelect))
-   {
-     var subFolderURIs = AddSubFoldersToURI(gMsgFolderSelected);
-     if (subFolderURIs.length > 0)
-       searchFolderURIs += '|' + subFolderURIs;
-   }
- 
--  var dialog = window.openDialog("chrome://messenger/content/virtualFolderProperties.xul", "",
-+  var dialog = window.openDialog("chrome://messenger/content/virtualFolderProperties.xhtml", "",
-                                  "chrome,titlebar,modal,centerscreen",
-                                  {folder:window.arguments[0].folder,
-                                   searchTerms:gSearchSession.searchTerms,
-                                   searchFolderURIs: searchFolderURIs});
- }
- 
- function OnTagsChange()
- {
-diff --git a/suite/mailnews/content/SearchDialog.xhtml b/suite/mailnews/content/SearchDialog.xhtml
---- a/suite/mailnews/content/SearchDialog.xhtml
-+++ b/suite/mailnews/content/SearchDialog.xhtml
-@@ -2,20 +2,20 @@
- 
- <!-- 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/. -->
- <?xml-stylesheet href="chrome://messenger/skin/searchDialog.css" type="text/css"?>
- <?xml-stylesheet href="chrome://messenger/skin/folderPane.css" type="text/css"?>
- <?xml-stylesheet href="chrome://messenger/skin/folderMenus.css" type="text/css"?>
- 
--<?xul-overlay href="chrome://messenger/content/threadPane.xul"?>
--<?xul-overlay href="chrome://messenger/content/searchTermOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
--<?xul-overlay href="chrome://messenger/content/mailKeysOverlay.xul"?>
-+<?xul-overlay href="chrome://messenger/content/threadPane.xhtml"?>
-+<?xul-overlay href="chrome://messenger/content/searchTermOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xhtml"?>
-+<?xul-overlay href="chrome://messenger/content/mailKeysOverlay.xhtml"?>
- 
- <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/SearchDialog.dtd">
- 
- <dialog id="searchMailWindow"
-         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-         windowtype="mailnews:search"
-         title="&searchDialogTitle.label;"
-         style="width: 52em; height: 34em;"
-diff --git a/suite/mailnews/content/folderPane.js b/suite/mailnews/content/folderPane.js
---- a/suite/mailnews/content/folderPane.js
-+++ b/suite/mailnews/content/folderPane.js
-@@ -1734,17 +1734,17 @@ var gFolderTreeController = {
-       // createSubfolder can throw an exception, causing the newFolder dialog
-       // to not close and wait for another input.
-       // TODO: Rewrite this logic and move the opening of alert dialogs from
-       // nsMsgLocalMailFolder::CreateSubfolderInternal to here (bug 831190#c16).
-       if (aName)
-         aFolder.createSubfolder(aName, msgWindow);
-     }
- 
--    window.openDialog("chrome://messenger/content/newFolderDialog.xul",
-+    window.openDialog("chrome://messenger/content/newFolderDialog.xhtml",
-                       "",
-                       "chrome,modal,centerscreen",
-                       {folder: folder,
-                        dualUseFolders: dualUseFolders,
-                        okCallback: newFolderCallback});
-   },
- 
-   /**
-@@ -1809,17 +1809,17 @@ var gFolderTreeController = {
-       // context menu on a non-loaded folder).
-       if (msgFolder == GetLoadedMsgFolder()) {
-         gRerootOnFolderLoad = true;
-         gCurrentFolderToReroot = msgFolder.URI;
-       }
-       msgFolder.updateFolder(msgWindow);
-     }
- 
--    window.openDialog("chrome://messenger/content/folderProps.xul",
-+    window.openDialog("chrome://messenger/content/folderProps.xhtml",
-                       "", "chrome,modal,centerscreen",
-                       {folder: folder, serverType: folder.server.type,
-                        msgWindow: msgWindow, title: title,
-                        okCallback: editFolderCallback, tabID: aTabID,
-                        name: folder.prettyName,
-                        rebuildSummaryCallback: rebuildSummary});
-   },
- 
-@@ -1840,17 +1840,17 @@ var gFolderTreeController = {
- 
-       controller._resetThreadPane();
-       let folderTree = document.getElementById("folderTree");
-       folderTree.view.selection.clearSelection();
- 
-       folder.rename(aName, msgWindow);
-     }
- 
--    window.openDialog("chrome://messenger/content/renameFolderDialog.xul",
-+    window.openDialog("chrome://messenger/content/renameFolderDialog.xhtml",
-                       "", "chrome,modal,centerscreen",
-                       {preselectedURI: folder.URI,
-                        okCallback: renameCallback, name: folder.prettyName});
-   },
- 
-   /**
-    * Deletes a folder from its parent. Also handles unsubscribe from newsgroups
-    * if the selected folder/s happen to be nntp.
-@@ -1997,17 +1997,17 @@ var gFolderTreeController = {
-     let folder = aParent || GetSelectedMsgFolders()[0];
-     if (!folder)
-       folder = GetDefaultAccountRootFolder();
- 
-     let name = folder.prettyName;
-     if (aName)
-       name += "-" + aName;
- 
--    window.openDialog("chrome://messenger/content/virtualFolderProperties.xul",
-+    window.openDialog("chrome://messenger/content/virtualFolderProperties.xhtml",
-                       "", "chrome,modal,centerscreen",
-                       {folder: folder, searchTerms: aSearchTerms,
-                        newFolderName: name});
-   },
- 
-   /**
-    * Opens the dialog to edit the properties for a virtual folder
-    *
-@@ -2019,17 +2019,17 @@ var gFolderTreeController = {
-     function editVirtualCallback(aURI) {
-       // we need to reload the folder if it is the currently loaded folder...
-       if (gMsgFolderSelected && aURI == gMsgFolderSelected.URI) {
-         // force the folder pane to reload the virtual folder
-         gMsgFolderSelected = null;
-         FolderPaneSelectionChange();
-       }
-     }
--    window.openDialog("chrome://messenger/content/virtualFolderProperties.xul",
-+    window.openDialog("chrome://messenger/content/virtualFolderProperties.xhtml",
-                       "", "chrome,modal,centerscreen",
-                       {folder: folder, editExistingFolder: true,
-                        onOKCallback: editVirtualCallback,
-                        msgWindow:msgWindow});
-   },
- 
-   /**
-    * Opens a search window with the given folder, or the selected one if none
-diff --git a/suite/mailnews/content/mail-offline.js b/suite/mailnews/content/mail-offline.js
---- a/suite/mailnews/content/mail-offline.js
-+++ b/suite/mailnews/content/mail-offline.js
-@@ -9,17 +9,17 @@ var gOfflineManager;
- function MailOfflineStateChanged(goingOffline)
- {
-   // tweak any mail UI here that needs to change when we go offline or come back online
-   gFolderJustSwitched = true;
- }
- 
- function MsgSettingsOffline()
- {
--    window.parent.MsgAccountManager('am-offline.xul');
-+    window.parent.MsgAccountManager('am-offline.xhtml');
- }
- 
- // Check for unsent messages
- function CheckForUnsentMessages()
- {
-   return Cc["@mozilla.org/messengercompose/sendlater;1"]
-            .getService(Ci.nsIMsgSendLater)
-            .hasUnsentMessages();
-diff --git a/suite/mailnews/content/mailCommands.js b/suite/mailnews/content/mailCommands.js
---- a/suite/mailnews/content/mailCommands.js
-+++ b/suite/mailnews/content/mailCommands.js
-@@ -243,17 +243,17 @@ function NewMessageToSelectedAddresses(t
-       params.composeFields = composeFields;
-       msgComposeService.OpenComposeWindowWithParams(null, params);
-     }
-   }
- }
- 
- function Subscribe(preselectedMsgFolder)
- {
--  window.openDialog("chrome://messenger/content/subscribe.xul",
-+  window.openDialog("chrome://messenger/content/subscribe.xhtml",
-                     "subscribe", "chrome,modal,titlebar,resizable=yes",
-                     {folder:preselectedMsgFolder,
-                       okCallback:SubscribeOKCallback});
- }
- 
- function SubscribeOKCallback(changeTable)
- {
-   for (var serverURI in changeTable) {
-@@ -391,17 +391,17 @@ function ViewPageSource(messages)
-       // Now, we need to get a URL from a URI.
-       var url = MailServices.mailSession.ConvertMsgURIToMsgURL(messages[i],
-                                                                msgWindow);
- 
-       // Strip out the message-display parameter to ensure that attached
-       // emails display the message source, not the processed HTML.
-       url = url.replace(/(\?|&)type=application\/x-message-display(&|$)/, "$1")
-                .replace(/\?$/, "");
--      window.openDialog("chrome://global/content/viewSource.xul", "_blank",
-+      window.openDialog("chrome://global/content/viewSource.xhtml", "_blank",
-                         "all,dialog=no",
-                         {URL: url, browser: browser,
-                          outerWindowID: browser.outerWindowID});
-     }
-     return true;
-   } catch (e) {
-     // Couldn't get mail session.
-     return false;
-diff --git a/suite/mailnews/content/mailContextMenus.js b/suite/mailnews/content/mailContextMenus.js
---- a/suite/mailnews/content/mailContextMenus.js
-+++ b/suite/mailnews/content/mailContextMenus.js
-@@ -530,26 +530,26 @@ function AddContact(aEmailAddressNode)
- {
-   if (aEmailAddressNode)
-     AddEmailToAddressBook(aEmailAddressNode.getAttribute("emailAddress"),
-                           aEmailAddressNode.getAttribute("displayName"));
- }
- 
- function AddEmailToAddressBook(primaryEmail, displayName)
- {
--    window.openDialog("chrome://messenger/content/addressbook/abNewCardDialog.xul",
-+    window.openDialog("chrome://messenger/content/addressbook/abNewCardDialog.xhtml",
-                       "", "chrome,resizable=no,titlebar,modal,centerscreen",
-                       {primaryEmail:primaryEmail, displayName:displayName});
- }
- 
- function EditContact(aEmailAddressNode)
- {
-   if (aEmailAddressNode.cardDetails.card)
-   {
--    window.openDialog("chrome://messenger/content/addressbook/abEditCardDialog.xul",
-+    window.openDialog("chrome://messenger/content/addressbook/abEditCardDialog.xhtml",
-                       "", "chrome,resizable=no,modal,titlebar,centerscreen",
-                       { abURI: aEmailAddressNode.cardDetails.book.URI,
-                         card: aEmailAddressNode.cardDetails.card });
-   }
- }
- 
- /**
-  * SendMailToNode takes the email address title button, extracts the email address
-@@ -692,17 +692,17 @@ function OpenMessageByHeader(messageHead
- {
-   var folder    = messageHeader.folder;
-   var folderURI = folder.URI;
- 
-   if (openInNewWindow)
-   {
-     var messageURI = folder.getUriForMsg(messageHeader);
- 
--    window.openDialog("chrome://messenger/content/messageWindow.xul",
-+    window.openDialog("chrome://messenger/content/messageWindow.xhtml",
-                       "_blank", "all,chrome,dialog=no,status,toolbar",
-                       messageURI, folderURI, null);
-   }
-   else
-   {
-     if (msgWindow.openFolder != folderURI)
-       gFolderTreeView.selectFolder(folder)
- 
-diff --git a/suite/mailnews/content/mailEditorOverlay.xhtml b/suite/mailnews/content/mailEditorOverlay.xhtml
---- a/suite/mailnews/content/mailEditorOverlay.xhtml
-+++ b/suite/mailnews/content/mailEditorOverlay.xhtml
-@@ -1,16 +1,16 @@
- <?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
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- 
- <!-- retrieve generic commands -->
--<?xul-overlay href="chrome://messenger/content/mailOverlay.xul"?>
-+<?xul-overlay href="chrome://messenger/content/mailOverlay.xhtml"?>
- 
- <!DOCTYPE overlay SYSTEM "chrome://messenger/locale/mailEditorOverlay.dtd" >
- 
- <overlay id="mailEditorOverlay"
-          xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- 
-   <script>
-   <![CDATA[
-@@ -40,22 +40,22 @@
-       }
-     }
- 
-   ]]>
-   </script>
- 
-   <!-- editor specific UI items -->
-   <menupopup id="menu_NewPopup">
--    <!-- Command nodes and implemention are in mailOverlay.xul -->
-+    <!-- Command nodes and implemention are in mailOverlay.xhtml -->
-     <menuitem id="menu_newMessage" insertafter="menu_newPrivateWindow"/>
-     <menuitem id="menu_newCard" insertafter="menu_newPrivateWindow"/>
-   </menupopup>
- 
-   <menupopup id="menu_FilePopup">
--    <!-- The command node cmd_editSendPage is in editor.xul.
-+    <!-- The command node cmd_editSendPage is in editor.xhtml.
-          Implementation is in ComposerCommands.js
-     -->
-     <menuitem id="menu_sendPage" label="&sendPage.label;" accesskey="&sendPage.accesskey;" observes="cmd_editSendPage" insertafter="previewInBrowser"/>
-   </menupopup>
- 
- </overlay>
- 
-diff --git a/suite/mailnews/content/mailOverlay.js b/suite/mailnews/content/mailOverlay.js
---- a/suite/mailnews/content/mailOverlay.js
-+++ b/suite/mailnews/content/mailOverlay.js
-@@ -1,16 +1,16 @@
- /* -*- indent-tabs-mode: nil; js-indent-level: 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/. */
- 
- function openNewCardDialog()
- {
--  window.openDialog("chrome://messenger/content/addressbook/abNewCardDialog.xul",
-+  window.openDialog("chrome://messenger/content/addressbook/abNewCardDialog.xhtml",
-                     "", "chrome,modal,resizable=no,centerscreen");
- }
- 
- function goOpenNewMessage()
- {
-   // if there is a MsgNewMessage function in scope
-   // and we should use it, so that we choose the proper
-   // identity, based on the selected message or folder
-diff --git a/suite/mailnews/content/mailOverlay.xhtml b/suite/mailnews/content/mailOverlay.xhtml
---- a/suite/mailnews/content/mailOverlay.xhtml
-+++ b/suite/mailnews/content/mailOverlay.xhtml
-@@ -1,15 +1,15 @@
- <?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
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!DOCTYPE overlay SYSTEM "chrome://messenger/locale/mailOverlay.dtd">
--<overlay id="mailOverlay.xul"
-+<overlay id="mailOverlay.xhtml"
-          xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- 
-   <script src="chrome://messenger/content/mailOverlay.js"/>
- 
-   <!-- generic commands -->
-   <commandset id="tasksCommands">
-     <command id="cmd_newMessage" oncommand="goOpenNewMessage();"/>
-     <command id="cmd_newCard" oncommand="openNewCardDialog()"/>
-diff --git a/suite/mailnews/content/mailTasksOverlay.js b/suite/mailnews/content/mailTasksOverlay.js
---- a/suite/mailnews/content/mailTasksOverlay.js
-+++ b/suite/mailnews/content/mailTasksOverlay.js
-@@ -21,27 +21,27 @@ const BIFF_STATE_UNKNOWN    = "UnknownMa
- function toMessengerWindow()
- {
-   toOpenWindowByType("mail:3pane", "chrome://messenger/content/");
- }
- 
- function toAddressBook()
- {
-   toOpenWindowByType("mail:addressbook",
--                     "chrome://messenger/content/addressbook/addressbook.xul");
-+                     "chrome://messenger/content/addressbook/addressbook.xhtml");
- }
- 
- function toNewsgroups()
- {
-   dump("Sorry, command not implemented.\n");
- }
- 
- function toImport()
- {
--  window.openDialog("chrome://messenger/content/importDialog.xul",
-+  window.openDialog("chrome://messenger/content/importDialog.xhtml",
-                     "importDialog",
-                     "chrome, modal, titlebar, centerscreen");
- }
- 
- function CoalesceGetMsgsForPop3ServersByDestFolder(aCurrentServer,
-                                                    aPOP3DownloadServersArray,
-                                                    aLocalFoldersToDownloadTo)
- {
-@@ -233,13 +233,13 @@ nsMsgBadCertHandler.prototype = {
- };
- 
- function InformUserOfCertError(status, targetSite)
- {
-   var params = { exceptionAdded : false,
-                  sslStatus : status,
-                  prefetchCert : true,
-                  location : targetSite };
--  window.openDialog('chrome://pippki/content/exceptionDialog.xul',
-+  window.openDialog('chrome://pippki/content/exceptionDialog.xhtml',
-                   '','chrome,centerscreen,modal', params);
- }
- 
- addEventListener("load", MailTasksOnLoad, false);
-diff --git a/suite/mailnews/content/mailViewList.js b/suite/mailnews/content/mailViewList.js
---- a/suite/mailnews/content/mailViewList.js
-+++ b/suite/mailnews/content/mailViewList.js
-@@ -91,17 +91,17 @@ function RefreshListView(aSelectedMailVi
-     gListBox.appendItem(mailView.prettyName, index);
-     if (aSelectedMailView && (mailView.prettyName == aSelectedMailView.prettyName))
-       gListBox.selectedIndex = index;
-   }
- }
- 
- function OnNewMailView()
- {
--  window.openDialog('chrome://messenger/content/mailViewSetup.xul',
-+  window.openDialog('chrome://messenger/content/mailViewSetup.xhtml',
-                     '',
-                     'centerscreen,resizable,modal,titlebar,chrome',
-                     {onOkCallback: RefreshListView});
- }
- 
- function OnDeleteMailView()
- {
-   let bundle = Services.strings.createBundle("chrome://messenger/locale/messenger.properties");
-@@ -137,17 +137,17 @@ function OnEditMailView()
- {
-   // get the selected index
-   var selectedIndex = gListBox.selectedIndex;
-   if (selectedIndex >= 0)
-   {
-     let selMailView = gMailListView.getMailViewAt(selectedIndex);
-     // open up the mail view setup dialog passing in the mail view as an argument
-     let args = {mailView: selMailView, onOkCallback: RefreshListView};
--    window.openDialog('chrome://messenger/content/mailViewSetup.xul',
-+    window.openDialog('chrome://messenger/content/mailViewSetup.xhtml',
-                       '',
-                       'centerscreen,modal,resizable,titlebar,chrome',
-                       args);
-   }
- }
- 
- function OnMailViewSelect(aEvent)
- {
-diff --git a/suite/mailnews/content/mailViewList.xhtml b/suite/mailnews/content/mailViewList.xhtml
---- a/suite/mailnews/content/mailViewList.xhtml
-+++ b/suite/mailnews/content/mailViewList.xhtml
-@@ -2,17 +2,17 @@
- 
- <!-- 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/. -->
- 
- <?xml-stylesheet href="chrome://messenger/skin/" type="text/css"?>
- <!-- Mac needs dialog.css to correctly style the moved Help button -->
- <?xml-stylesheet href="chrome://global/skin/dialog.css" type="text/css"?>
--<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xhtml"?>
- 
- <!DOCTYPE dialog [
- <!ENTITY % mailViewLisDTD SYSTEM "chrome://messenger/locale/mailViewList.dtd">
- %mailViewLisDTD;
- <!ENTITY % FilterListDialogDTD SYSTEM "chrome://messenger/locale/FilterListDialog.dtd">
- %FilterListDialogDTD;
- ]>
- 
-diff --git a/suite/mailnews/content/mailViewSetup.xhtml b/suite/mailnews/content/mailViewSetup.xhtml
---- a/suite/mailnews/content/mailViewSetup.xhtml
-+++ b/suite/mailnews/content/mailViewSetup.xhtml
-@@ -2,17 +2,17 @@
- 
- 
- <!-- 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/. -->
- 
- <?xml-stylesheet href="chrome://messenger/skin/searchDialog.css" type="text/css"?>
- 
--<?xul-overlay href="chrome://messenger/content/searchTermOverlay.xul"?>
-+<?xul-overlay href="chrome://messenger/content/searchTermOverlay.xhtml"?>
- 
- <!DOCTYPE dialog SYSTEM "chrome://messenger/locale/mailViewSetup.dtd" >
- 
- <dialog id="mailViewSetupDialog"
-         xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-         onload="mailViewOnLoad();"
-         onunload="mailViewOnUnLoad();"
-         ondialogaccept="return onOK();"
-diff --git a/suite/mailnews/content/mailWidgets.xml b/suite/mailnews/content/mailWidgets.xml
---- a/suite/mailnews/content/mailWidgets.xml
-+++ b/suite/mailnews/content/mailWidgets.xml
-@@ -952,17 +952,17 @@
-       <method name="onSelect">
-         <parameter name="event"/>
-         <body>
-           <![CDATA[
-             var menulist = document.getAnonymousNodes(this)[0];
-             if (menulist.value == Ci.nsMsgSearchAttrib.OtherHeader) {
-               // Customize menuitem selected.
-               let args = {};
--              window.openDialog("chrome://messenger/content/CustomHeaders.xul",
-+              window.openDialog("chrome://messenger/content/CustomHeaders.xhtml",
-                                 "",
-                                 "modal,centerscreen,resizable,titlebar,chrome",
-                                 args);
-               // User may have removed the custom header currently selected in
-               // the menulist so temporarily set the selection to a safe value.
-               this.value = Ci.nsMsgSearchAttrib.OtherHeader;
-               // rebuild the menulist
-               UpdateAfterCustomHeaderChange();
-diff --git a/suite/mailnews/content/mailWindowOverlay.js b/suite/mailnews/content/mailWindowOverlay.js
---- a/suite/mailnews/content/mailWindowOverlay.js
-+++ b/suite/mailnews/content/mailWindowOverlay.js
-@@ -1349,17 +1349,17 @@ function MsgOpenFromFile() {
- 
-   fp.open(rv => {
-     if (rv != Ci.nsIFilePicker.returnOK || !fp.file) {
-       return;
-     }
-     let uri = fp.fileURL.QueryInterface(Ci.nsIURL);
-     uri.query = "type=application/x-message-display";
- 
--    window.openDialog("chrome://messenger/content/messageWindow.xul", "_blank",
-+    window.openDialog("chrome://messenger/content/messageWindow.xhtml", "_blank",
-                       "all,chrome,dialog=no,status,toolbar", uri);
-   });
- }
- 
- function MsgOpenNewWindowForFolder(folderURI, msgKeyToSelect) {
-   let mailWindowService = Cc["@mozilla.org/messenger/windowservice;1"]
-                             .getService(Ci.nsIMessengerWindowService);
-   if (!mailWindowService)
-@@ -1494,17 +1494,17 @@ function MsgOpenNewWindowForMessage(mess
-       // required because on a right-click, the currentIndex value will be
-       // different from the actual row that is highlighted.
-       // GetSelectedMsgFolders() will return the message that is
-       // highlighted.
-       folderUri = GetSelectedMsgFolders()[0].URI;
- 
-   // be sure to pass in the current view....
-   if (messageUri && folderUri) {
--      window.openDialog( "chrome://messenger/content/messageWindow.xul", "_blank", "all,chrome,dialog=no,status,toolbar", messageUri, folderUri, gDBView );
-+      window.openDialog( "chrome://messenger/content/messageWindow.xhtml", "_blank", "all,chrome,dialog=no,status,toolbar", messageUri, folderUri, gDBView );
-   }
- }
- 
- function CloseMailWindow() {
-   window.close();
- }
- 
- function MsgJunk() {
-@@ -1534,17 +1534,17 @@ function MsgMarkMsgAsRead(read) {
-   MarkSelectedMessagesRead(read);
- }
- 
- function MsgMarkAsFlagged() {
-   MarkSelectedMessagesFlagged(!SelectedMessagesAreFlagged());
- }
- 
- function MsgMarkReadByDate() {
--  window.openDialog("chrome://messenger/content/markByDate.xul", "",
-+  window.openDialog("chrome://messenger/content/markByDate.xhtml", "",
-                     "chrome,modal,titlebar,centerscreen",
-                     GetLoadedMsgFolder());
- }
- 
- function MsgMarkAllRead() {
-   let folders = GetSelectedMsgFolders();
-   for (let folder of folders)
-     folder.markAllMessagesRead(msgWindow);
-@@ -1614,17 +1614,17 @@ function MsgMarkAllFoldersRead() {
- 
- function MsgFilters(emailAddress, folder) {
-   if (!folder)
-     folder = GetFirstSelectedMsgFolder();
-   var args;
-   if (emailAddress) {
-     // Prefill the filterEditor with the emailAddress.
-     args = {filterList: folder.getEditableFilterList(msgWindow), filterName: emailAddress};
--    window.openDialog("chrome://messenger/content/FilterEditor.xul", "",
-+    window.openDialog("chrome://messenger/content/FilterEditor.xhtml", "",
-                       "chrome, modal, resizable,centerscreen,dialog", args);
- 
-     // If the user hits ok in the filterEditor dialog we set args.refresh=true
-     // there and we check this here in args to show filterList dialog.
-     // We also received the filter created via args.newFilter.
-     if ("refresh" in args && args.refresh) {
-        args = { refresh: true, folder, filter: args.newFilter };
-        MsgFilterList(args);
-@@ -1764,17 +1764,17 @@ function MsgSendUnsentMsgs() {
- 
- function PrintEnginePrintInternal(aDoPrintPreview, aMsgType) {
-   var messageList = gFolderDisplay.selectedMessageUris;
-   if (!messageList) {
-     dump("PrintEnginePrint(): No messages selected.\n");
-     return false;
-   }
- 
--  window.openDialog("chrome://messenger/content/msgPrintEngine.xul", "",
-+  window.openDialog("chrome://messenger/content/msgPrintEngine.xhtml", "",
-                     "chrome,dialog=no,all,centerscreen",
-                     messageList.length, messageList, statusFeedback,
-                     aDoPrintPreview, aMsgType);
-   return true;
- 
- }
- 
- function PrintEnginePrint() {
-@@ -1852,17 +1852,17 @@ function getMessageBrowser() {
- // The zoom manager, view source and possibly some other functions still rely
- // on the getBrowser function.
- function getBrowser() {
-   return GetTabMail() ? GetTabMail().getBrowserForSelectedTab() :
-                         getMessageBrowser();
- }
- 
- function MsgSynchronizeOffline() {
--  window.openDialog("chrome://messenger/content/msgSynchronize.xul", "",
-+  window.openDialog("chrome://messenger/content/msgSynchronize.xhtml", "",
-                     "centerscreen,chrome,modal,titlebar,resizable",
-                     {msgWindow});
- }
- 
- function MsgOpenAttachment() {}
- function MsgUpdateMsgCount() {}
- function MsgImport() {}
- function MsgSynchronize() {}
-@@ -2617,17 +2617,17 @@ function IgnoreMDNResponse() {
-  * chosen.
-  *
-  * @param [aFolder] the folder to open the search window for, if different from
-  *                  the displayed one
-  */
- function MsgSearchMessages(aFolder) {
-   let folder = aFolder || gFolderDisplay.displayedFolder;
-   OpenOrFocusWindow({ folder }, "mailnews:search",
--                    "chrome://messenger/content/SearchDialog.xul");
-+                    "chrome://messenger/content/SearchDialog.xhtml");
- }
- 
- function MsgJunkMailInfo(aCheckFirstUse) {
-   if (aCheckFirstUse) {
-     if (!Services.prefs.getBoolPref("mailnews.ui.junk.firstuse"))
-       return;
-     Services.prefs.setBoolPref("mailnews.ui.junk.firstuse", false);
- 
-@@ -2637,26 +2637,26 @@ function MsgJunkMailInfo(aCheckFirstUse)
-       return;
-   }
- 
-   var desiredWindow = Services.wm.getMostRecentWindow("mailnews:junkmailinfo");
- 
-   if (desiredWindow)
-     desiredWindow.focus();
-   else
--    window.openDialog("chrome://messenger/content/junkMailInfo.xul", "mailnews:junkmailinfo", "centerscreen,resizeable=no,titlebar,chrome,modal", null);
-+    window.openDialog("chrome://messenger/content/junkMailInfo.xhtml", "mailnews:junkmailinfo", "centerscreen,resizeable=no,titlebar,chrome,modal", null);
- }
- 
- function MsgSearchAddresses() {
-   var args = { directory: null };
--  OpenOrFocusWindow(args, "mailnews:absearch", "chrome://messenger/content/ABSearchDialog.xul");
-+  OpenOrFocusWindow(args, "mailnews:absearch", "chrome://messenger/content/ABSearchDialog.xhtml");
- }
- 
- function MsgFilterList(args) {
--  OpenOrFocusWindow(args, "mailnews:filterlist", "chrome://messenger/content/FilterListDialog.xul");
-+  OpenOrFocusWindow(args, "mailnews:filterlist", "chrome://messenger/content/FilterListDialog.xhtml");
- }
- 
- function OpenOrFocusWindow(args, windowType, chromeURL) {
-   var desiredWindow = Services.wm.getMostRecentWindow(windowType);
- 
-   if (desiredWindow) {
-     desiredWindow.focus();
-     if ("refresh" in args && args.refresh)
-diff --git a/suite/mailnews/content/mailWindowOverlay.xhtml b/suite/mailnews/content/mailWindowOverlay.xhtml
---- a/suite/mailnews/content/mailWindowOverlay.xhtml
-+++ b/suite/mailnews/content/mailWindowOverlay.xhtml
-@@ -4,25 +4,25 @@
-    - 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/. -->
- 
- <?xml-stylesheet href="chrome://messenger/skin/folderMenus.css" type="text/css"?>
- <?xml-stylesheet href="chrome://messenger/skin/smime/msgReadSMIMEOverlay.css" type="text/css"?>
- <?xml-stylesheet href="chrome://messenger/content/bindings.css" type="text/css"?>
- 
- 
--<?xul-overlay href="chrome://communicator/content/charsetOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/contentAreaContextOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/viewZoomOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/viewApplyThemeOverlay.xul"?>
--<?xul-overlay href="chrome://messenger/content/msgHdrViewOverlay.xul"?>
--<?xul-overlay href="chrome://messenger/content/mailOverlay.xul"?>
--<?xul-overlay href="chrome://messenger/content/mailKeysOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/utilityOverlay.xul"?>
--<?xul-overlay href="chrome://communicator/content/tasksOverlay.xul"?>
-+<?xul-overlay href="chrome://communicator/content/charsetOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/contentAreaContextOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/viewZoomOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/viewApplyThemeOverlay.xhtml"?>
-+<?xul-overlay href="chrome://messenger/content/msgHdrViewOverlay.xhtml"?>
-+<?xul-overlay href="chrome://messenger/content/mailOverlay.xhtml"?>
-+<?xul-overlay href="chrome://messenger/content/mailKeysOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/utilityOverlay.xhtml"?>
-+<?xul-overlay href="chrome://communicator/content/tasksOverlay.xhtml"?>
- 
- <!DOCTYPE overlay [
-   <!ENTITY % messengerDTD SYSTEM "chrome://messenger/locale/messenger.dtd">
-   %messengerDTD;
-   <!ENTITY % mailKeysDTD SYSTEM "chrome://messenger/locale/mailKeysOverlay.dtd">
-   %mailKeysDTD;
-   <!ENTITY % globalDTD SYSTEM "chrome://global/locale/global.dtd">
-   %globalDTD;
-@@ -63,17 +63,17 @@
-   <stringbundle id="bundle_offlinePrompts" src="chrome://messenger/locale/offline.properties"/>
-   <stringbundle id="bundle_read_smime"
-                 src="chrome://messenger-smime/locale/msgReadSMIMEOverlay.properties"/>
-   <stringbundle id="bundle_viewZoom"/>
-   <stringbundle id="bundle_viewApplyTheme"/>
-   <stringbundle id="findBundle" src="chrome://global/locale/finddialog.properties"/>
- </stringbundleset>
- 
--<!-- Performance optimization...we include utilityOverlay.xul which defines some command sets
-+<!-- Performance optimization...we include utilityOverlay.xhtml which defines some command sets
-      which are updated based on events like focus and select. We have our own custom events
-      which we use to optmize when we do command updating. To avoid unnecessary command updating,
-      we are going to override the events the global edit menu items and select edit menu items
-      are updated on with events of our own controlling.
-  -->
- 
- <commandset id="globalEditMenuItems"
-             commandupdater="true"
-@@ -1220,29 +1220,29 @@
-                 disabled="true"
-                 command="cmd_stop"/>
-       <menuitem id="menu_Stop"
-                 label="&reloadCmd.label;"
-                 key="key_reload"
-                 accesskey="&reloadCmd.accesskey;"
-                 command="cmd_reload"/>
-       <menuseparator id="viewAfterStopSeparator"/>
--      <!-- overlayed from viewZoomOverlay.xul -->
-+      <!-- overlayed from viewZoomOverlay.xhtml -->
-       <menu id="menu_zoom"/>
-       <menu id="charsetMenu"
-             onpopupshowing="UpdateCharsetMenu(msgWindow.mailCharacterSet, this);"
-             oncommand="MailSetCharacterSet(event);"/>
-       <menuseparator id="viewAfterCharsetSeparator"/>
-       <menuitem id="pageSourceMenuItem" label="&pageSourceCmd.label;" key="key_viewPageSource" accesskey="&pageSourceCmd.accesskey;" command="cmd_viewPageSource"/>
-       <menuitem id="appmenu_securityStatus"
-                 label="&menu_securityStatus.label;"
-                 accesskey="&menu_securityStatus.accesskey;"
-                 command="cmd_viewSecurityStatus"/>
-       <menuseparator observes="mailHideMenus"/>
--      <!-- overlayed from viewApplyThemeOverlay.xul -->
-+      <!-- overlayed from viewApplyThemeOverlay.xhtml -->
-       <menu id="menu_viewApplyTheme" observes="mailHideMenus"/>
-     </menupopup>
-   </menu>
- 
-   <menu id="goMenu" label="&goMenu.label;" accesskey="&goMenu.accesskey;">
-     <menupopup id="menu_GoPopup" onpopupshowing="InitGoMessagesMenu();">
-       <menu id="goNextMenu" label="&nextMenu.label;" accesskey="&nextMenu.accesskey;">
-         <menupopup id="menu_GoNextPopup">
-@@ -1883,17 +1883,17 @@
-       <button id="button-advanced"
-               label="&advancedButton.label;"
-               accesskey="&advancedButton.accesskey;"
-               tooltiptext="&advancedButton.tooltip;"
-               observes="button_search"
-               oncommand="goDoCommand('button_search')"/>
-     </toolbaritem>
-     <toolbaritem id="throbber-box"/>
--    <!-- see utilityOverlay.xul
-+    <!-- see utilityOverlay.xhtml
-     <toolbarbutton id="sync-button"/> -->
-   </toolbarpalette>
- 
- </toolbox>
- 
- <statusbar id="status-bar"
-            class="chromeclass-status" >
-   <statusbarpanel id="component-bar"/>
-diff --git a/suite/mailnews/content/messageWindow.xhtml b/suite/mailnews/content/messageWindow.xhtml
---- a/suite/mailnews/content/messageWindow.xhtml
-+++ b/suite/mailnews/content/messageWindow.xhtml
-@@ -1,15 +1,15 @@
- <?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
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- <?xml-stylesheet href="chrome://messenger/skin/messageWindow.css" type="text/css"?>
- 
--<?xul-overlay href="chrome://messenger/content/mailWindowOverlay.xul"?>
-+<?xul-overlay href="chrome://messenger/content/mailWindowOverlay.xhtml"?>
- 
- <!DOCTYPE window [
- <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
- %brandDTD;
- <!ENTITY % messengerDTD SYSTEM "chrome://messenger/locale/messenger.dtd" >
- %messengerDTD;
- ]>
- 
-diff --git a/suite/mailnews/content/messenger.xhtml b/suite/mailnews/content/messenger.xhtml
---- a/suite/mailnews/content/messenger.xhtml
-+++ b/suite/mailnews/content/messenger.xhtml
-@@ -1,17 +1,17 @@
- <?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
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- <?xml-stylesheet href="chrome://messenger/skin/mailWindow1.css" type="text/css"?>
- 
--<?xul-overlay href="chrome://messenger/content/threadPane.xul"?>
--<?xul-overlay href="chrome://messenger/content/folderPane.xul"?>
--<?xul-overlay href="chrome://messenger/content/mailWindowOverlay.xul"?>
-+<?xul-overlay href="chrome://messenger/content/threadPane.xhtml"?>
-+<?xul-overlay href="chrome://messenger/content/folderPane.xhtml"?>
-+<?xul-overlay href="chrome://messenger/content/mailWindowOverlay.xhtml"?>
- 
- <!DOCTYPE window [
- <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd" >
- %brandDTD;
- <!ENTITY % messengerDTD SYSTEM "chrome://messenger/locale/messenger.dtd" >
- %messengerDTD;
- ]>
- 
-diff --git a/suite/mailnews/content/msgHdrViewOverlay.js b/suite/mailnews/content/msgHdrViewOverlay.js
---- a/suite/mailnews/content/msgHdrViewOverlay.js
-+++ b/suite/mailnews/content/msgHdrViewOverlay.js
-@@ -1357,30 +1357,30 @@ createNewAttachmentInfo.prototype.saveAt
-                              false);
- }
- 
- createNewAttachmentInfo.prototype.viewAttachment = function viewAttachment()
- {
-   var url = this.url;
-   if (!this.isExternalAttachment)
-     url += "&filename=" + encodeURIComponent(this.displayName);
--  openDialog("chrome://global/content/viewSource.xul",
-+  openDialog("chrome://global/content/viewSource.xhtml",
-              "_blank", "all,dialog=no", {URL: url});
- }
- 
- createNewAttachmentInfo.prototype.openAttachment = function openAttachment()
- {
-   switch (this.contentType)
-   {
-     // As of bug 599119, isTypeSupported returns true for messages, but
-     // attached messages don't open reliably in the browser, so pretend
-     // they're not supported and open a message window for them instead.
-     case "message/rfc822":
-       var url = this.url + "&type=application/x-message-display";
--      window.openDialog("chrome://messenger/content/messageWindow.xul",
-+      window.openDialog("chrome://messenger/content/messageWindow.xhtml",
-                         "_blank", "all,dialog=no",
-                         Services.io.newURI(url));
-       return;
-     case "text/x-moz-deleted":
-       return;
-   }
- 
-   var webNavigationInfo =
-diff --git a/suite/mailnews/content/msgViewPickerOverlay.js b/suite/mailnews/content/msgViewPickerOverlay.js
---- a/suite/mailnews/content/msgViewPickerOverlay.js
-+++ b/suite/mailnews/content/msgViewPickerOverlay.js
-@@ -181,17 +181,17 @@ function SetMailViewForFolder(aFolder, a
-     folderInfo.setUint32Property (kViewCurrent, isNaN(aValue) ? kViewItemAll : aValue);
-     folderInfo.setCharProperty(kViewCurrentTag, aValue);
-   }
- }
- 
- 
- function LaunchCustomizeDialog()
- {
--  OpenOrFocusWindow({}, "mailnews:mailviewlist", "chrome://messenger/content/mailViewList.xul");
-+  OpenOrFocusWindow({}, "mailnews:mailviewlist", "chrome://messenger/content/mailViewList.xhtml");
- }
- 
- 
- function LoadCustomMailView(index)
- {
-   PrepareForViewChange();
-   var searchTermsArrayForQS = CreateGroupedSearchTerms(gMailViewList.getMailViewAt(index).searchTerms);
-   createSearchTermsWithList(searchTermsArrayForQS);
-diff --git a/suite/mailnews/content/tabmail.js b/suite/mailnews/content/tabmail.js
---- a/suite/mailnews/content/tabmail.js
-+++ b/suite/mailnews/content/tabmail.js
-@@ -510,17 +510,17 @@ var gMailNewsTabsType =
-   },
- 
-   //
-   // nsIController implementation
-   //
-   // We ignore the aTabInfo parameter sent by tabmail when calling nsIController
-   // stuff and just delegate the call to the DefaultController by using it as
-   // our proto chain.
--  // XXX remove the MessageWindowController stuff once we kill messageWindow.xul
-+  // XXX remove the MessageWindowController stuff once we kill messageWindow.xhtml
-   __proto__: "DefaultController" in window && window.DefaultController ||
-              "MessageWindowController" in window && window.MessageWindowController
- };
- 
- 
- 
- //
- //  tabmail support methods
-diff --git a/suite/mailnews/jar.mn b/suite/mailnews/jar.mn
---- a/suite/mailnews/jar.mn
-+++ b/suite/mailnews/jar.mn
-@@ -6,65 +6,65 @@ messenger.jar:
- % content messagebody %content/messagebody/ contentaccessible=yes
- % content messenger %content/messenger/
- % override chrome://global/content/nsDragAndDrop.js chrome://messenger/content/nsDragAndDrop.js
- # provide the nsTransferable in nsDragAndDrop.js to extensions that have to
- # work with Geckos from before 1.9, when there was a separate file
- % override chrome://global/content/nsTransferable.js chrome://messenger/content/nsDragAndDrop.js
- % override chrome://messagebody/skin/messageBody.css chrome://messenger/skin/messageBody.css
- % content messenger-region %content/messenger-region/
--% overlay chrome://communicator/content/pref/preferences.xul                   chrome://messenger/content/mailPrefsOverlay.xul
--% overlay chrome://communicator/content/pref/pref-appearance.xul               chrome://messenger/content/mailPrefsOverlay.xul
--% overlay chrome://communicator/content/pref/pref-cookies.xul                  chrome://messenger/content/mailPrefsOverlay.xul
--% overlay chrome://editor/content/editorTasksOverlay.xul                       chrome://messenger/content/mailTasksOverlay.xul
--% overlay chrome://messenger/content/addressbook/abSelectAddressesDialog.xul   chrome://messenger/content/mailOverlay.xul
--% overlay chrome://editor/content/composerOverlay.xul                          chrome://messenger/content/mailEditorOverlay.xul
-+% overlay chrome://communicator/content/pref/preferences.xhtml                 chrome://messenger/content/mailPrefsOverlay.xhtml
-+% overlay chrome://communicator/content/pref/pref-appearance.xhtml             chrome://messenger/content/mailPrefsOverlay.xhtml
-+% overlay chrome://communicator/content/pref/pref-cookies.xhtml                chrome://messenger/content/mailPrefsOverlay.xhtml
-+% overlay chrome://editor/content/editorTasksOverlay.xhtml                     chrome://messenger/content/mailTasksOverlay.xhtml
-+% overlay chrome://messenger/content/addressbook/abSelectAddressesDialog.xhtml chrome://messenger/content/mailOverlay.xhtml
-+% overlay chrome://editor/content/composerOverlay.xhtml                        chrome://messenger/content/mailEditorOverlay.xhtml
-     content/messenger/browserRequest.js                                        (content/browserRequest.js)
--    content/messenger/browserRequest.xul                                       (content/browserRequest.xul)
-+    content/messenger/browserRequest.xhtml                                     (content/browserRequest.xhtml)
-     content/messenger/commandglue.js                                           (content/commandglue.js)
-     content/messenger/folderDisplay.js                                         (content/folderDisplay.js)
-     content/messenger/folderPane.js                                            (content/folderPane.js)
--    content/messenger/folderPane.xul                                           (content/folderPane.xul)
-+    content/messenger/folderPane.xhtml                                         (content/folderPane.xhtml)
-     content/messenger/mail-offline.js                                          (content/mail-offline.js)
-     content/messenger/mail3PaneWindowCommands.js                               (content/mail3PaneWindowCommands.js)
-     content/messenger/mailCommands.js                                          (content/mailCommands.js)
-     content/messenger/mailContextMenus.js                                      (content/mailContextMenus.js)
--    content/messenger/mailEditorOverlay.xul                                    (content/mailEditorOverlay.xul)
--*   content/messenger/mailKeysOverlay.xul                                      (content/mailKeysOverlay.xul)
-+    content/messenger/mailEditorOverlay.xhtml                                  (content/mailEditorOverlay.xhtml)
-+*   content/messenger/mailKeysOverlay.xhtml                                    (content/mailKeysOverlay.xhtml)
-     content/messenger/mailOverlay.js                                           (content/mailOverlay.js)
--*   content/messenger/mailOverlay.xul                                          (content/mailOverlay.xul)
-+*   content/messenger/mailOverlay.xhtml                                        (content/mailOverlay.xhtml)
-     content/messenger/mailTasksOverlay.js                                      (content/mailTasksOverlay.js)
--    content/messenger/mailTasksOverlay.xul                                     (content/mailTasksOverlay.xul)
-+    content/messenger/mailTasksOverlay.xhtml                                   (content/mailTasksOverlay.xhtml)
-     content/messenger/mailViewList.js                                          (content/mailViewList.js)
--    content/messenger/mailViewList.xul                                         (content/mailViewList.xul)
-+    content/messenger/mailViewList.xhtml                                       (content/mailViewList.xhtml)
-     content/messenger/mailViewSetup.js                                         (content/mailViewSetup.js)
--    content/messenger/mailViewSetup.xul                                        (content/mailViewSetup.xul)
-+    content/messenger/mailViewSetup.xhtml                                      (content/mailViewSetup.xhtml)
-     content/messenger/mailWidgets.xml                                          (content/mailWidgets.xml)
-     content/messenger/mailWindow.js                                            (content/mailWindow.js)
-     content/messenger/mailWindowOverlay.js                                     (content/mailWindowOverlay.js)
--*   content/messenger/mailWindowOverlay.xul                                    (content/mailWindowOverlay.xul)
-+*   content/messenger/mailWindowOverlay.xhtml                                  (content/mailWindowOverlay.xhtml)
-     content/messenger/messageWindow.js                                         (content/messageWindow.js)
--    content/messenger/messageWindow.xul                                        (content/messageWindow.xul)
-+    content/messenger/messageWindow.xhtml                                      (content/messageWindow.xhtml)
-     content/messenger/messenger.css                                            (content/messenger.css)
--    content/messenger/messenger.xul                                            (content/messenger.xul)
-+    content/messenger/messenger.xhtml                                          (content/messenger.xhtml)
-     content/messenger/msgFolderPickerOverlay.js                                (content/msgFolderPickerOverlay.js)
-     content/messenger/msgHdrViewOverlay.js                                     (content/msgHdrViewOverlay.js)
--    content/messenger/msgHdrViewOverlay.xul                                    (content/msgHdrViewOverlay.xul)
-+    content/messenger/msgHdrViewOverlay.xhtml                                  (content/msgHdrViewOverlay.xhtml)
-     content/messenger/msgMail3PaneWindow.js                                    (content/msgMail3PaneWindow.js)
-     content/messenger/msgViewNavigation.js                                     (content/msgViewNavigation.js)
-     content/messenger/msgViewPickerOverlay.js                                  (content/msgViewPickerOverlay.js)
-     content/messenger/nsDragAndDrop.js                                         (content/nsDragAndDrop.js)
-     content/messenger/phishingDetector.js                                      (content/phishingDetector.js)
-     content/messenger/searchBar.js                                             (content/searchBar.js)
-     content/messenger/start.xhtml                                              (content/start.xhtml)
-     content/messenger/tabmail.js                                               (content/tabmail.js)
-     content/messenger/tabmail.xml                                              (content/tabmail.xml)
-     content/messenger/threadPane.js                                            (content/threadPane.js)
--    content/messenger/threadPane.xul                                           (content/threadPane.xul)
-+    content/messenger/threadPane.xhtml                                         (content/threadPane.xhtml)
- 
--    content/messenger/SearchDialog.xul                                         (content/SearchDialog.xul)
-+    content/messenger/SearchDialog.xhtml                                       (content/SearchDialog.xhtml)
-     content/messenger/SearchDialog.js                                          (content/SearchDialog.js)
--    content/messenger/ABSearchDialog.xul                                       (content/ABSearchDialog.xul)
-+    content/messenger/ABSearchDialog.xhtml                                     (content/ABSearchDialog.xhtml)
-     content/messenger/ABSearchDialog.js                                        (content/ABSearchDialog.js)
--    content/messenger/FilterListDialog.xul                                     (content/FilterListDialog.xul)
-+    content/messenger/FilterListDialog.xhtml                                   (content/FilterListDialog.xhtml)
-     content/messenger/FilterListDialog.js                                      (content/FilterListDialog.js)
- 
--    content/messenger/searchTermOverlay.xul                                    (content/searchTermOverlay.xul)
-+    content/messenger/searchTermOverlay.xhtml                                  (content/searchTermOverlay.xhtml)
-diff --git a/suite/mailnews/modules/MailUtils.js b/suite/mailnews/modules/MailUtils.js
---- a/suite/mailnews/modules/MailUtils.js
-+++ b/suite/mailnews/modules/MailUtils.js
-@@ -86,14 +86,14 @@ var MailUtils =
-   openMessageInNewWindow: function MailUtils_openMessageInNewWindow(aMsgHdr)
-   {
-     // Pass in the message URI as messageWindow.js doesn't handle message headers
-     let messageURI = Cc["@mozilla.org/supports-string;1"]
-                        .createInstance(Ci.nsISupportsString);
-     messageURI.data = aMsgHdr.folder.getUriForMsg(aMsgHdr);
- 
-     Services.ww.openWindow(null,
--                           "chrome://messenger/content/messageWindow.xul",
-+                           "chrome://messenger/content/messageWindow.xhtml",
-                            "_blank",
-                            "all,chrome,dialog=no,status,toolbar",
-                            messageURI);
-   }
- };
-diff --git a/suite/themes/classic/communicator/sync/syncCommon.css b/suite/themes/classic/communicator/sync/syncCommon.css
---- a/suite/themes/classic/communicator/sync/syncCommon.css
-+++ b/suite/themes/classic/communicator/sync/syncCommon.css
-@@ -1,13 +1,13 @@
- /* 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/. */
- 
--/* The following are used by both syncSetup.xul and syncGenericChange.xul */
-+/* The following are used by both syncSetup.xhtml and syncGenericChange.xhtml */
- .status {
-   color: -moz-dialogtext;
- }
- 
- .statusIcon {
-   margin-inline-start: 4px;
-   max-height: 16px;
-   max-width: 16px;
-@@ -20,17 +20,17 @@
- .statusIcon[status="error"] {
-   list-style-image: url("chrome://global/skin/icons/error-16.png");
- }
- 
- .statusIcon[status="success"] {
-   list-style-image: url("chrome://global/skin/icons/information-16.png");
- }
- 
--/* .data is only used by syncGenericChange.xul, but it seems unnecessary to have
-+/* .data is only used by syncGenericChange.xhtml, but it seems unnecessary to have
-    a separate stylesheet for it. */
- .data {
-   font-size: 90%;
-   font-weight: bold;
- }
- 
- #change-dialog {
-   width: 40em;
-diff --git a/suite/themes/classic/jar.mn b/suite/themes/classic/jar.mn
---- a/suite/themes/classic/jar.mn
-+++ b/suite/themes/classic/jar.mn
-@@ -3,23 +3,23 @@
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
- 
- classic.jar:
- % skin communicator classic/1.0 %skin/classic/communicator/
- % skin editor classic/1.0 %skin/classic/editor/
- % skin messenger classic/1.0 %skin/classic/messenger/
- % skin navigator classic/1.0 %skin/classic/navigator/
- % skin messenger-newsblog classic/1.0 %skin/classic/messenger-newsblog/
--% style chrome://communicator/content/customizeToolbar.xul chrome://navigator/skin/navigator.css
--% style chrome://communicator/content/customizeToolbar.xul chrome://messenger/skin/primaryToolbar.css
--% style chrome://communicator/content/customizeToolbar.xul chrome://messenger/skin/messengercompose/messengercompose.css
--% style chrome://communicator/content/customizeToolbar.xul chrome://messenger/skin/smime/msgCompSMIMEOverlay.css
--% style chrome://communicator/content/customizeToolbar.xul chrome://messenger/skin/addressbook/addressbook.css
--% style chrome://communicator/content/customizeToolbar.xul chrome://editor/skin/editorPrimaryToolbar.css
--% style chrome://communicator/content/customizeToolbar.xul chrome://editor/skin/editorFormatToolbar.css
-+% style chrome://communicator/content/customizeToolbar.xhtml chrome://navigator/skin/navigator.css
-+% style chrome://communicator/content/customizeToolbar.xhtml chrome://messenger/skin/primaryToolbar.css
-+% style chrome://communicator/content/customizeToolbar.xhtml chrome://messenger/skin/messengercompose/messengercompose.css
-+% style chrome://communicator/content/customizeToolbar.xhtml chrome://messenger/skin/smime/msgCompSMIMEOverlay.css
-+% style chrome://communicator/content/customizeToolbar.xhtml chrome://messenger/skin/addressbook/addressbook.css
-+% style chrome://communicator/content/customizeToolbar.xhtml chrome://editor/skin/editorPrimaryToolbar.css
-+% style chrome://communicator/content/customizeToolbar.xhtml chrome://editor/skin/editorFormatToolbar.css
- #ifdef XP_MACOSX
-   skin/classic/communicator/aboutPrivateBrowsing.css                    (mac/communicator/aboutPrivateBrowsing.css)
-   skin/classic/communicator/aboutSessionRestore.css                     (mac/communicator/aboutSessionRestore.css)
-   skin/classic/communicator/button.css                                  (mac/communicator/button.css)
-   skin/classic/communicator/communicator.css                            (mac/communicator/communicator.css)
-   skin/classic/communicator/customizeToolbar.css                        (mac/communicator/customizeToolbar.css)
-   skin/classic/communicator/config.css                                  (mac/communicator/config.css)
-   skin/classic/communicator/datetimepicker.css                          (mac/communicator/datetimepicker.css)
-diff --git a/suite/themes/classic/mac/navigator/navigator.css b/suite/themes/classic/mac/navigator/navigator.css
---- a/suite/themes/classic/mac/navigator/navigator.css
-+++ b/suite/themes/classic/mac/navigator/navigator.css
-@@ -779,19 +779,19 @@ toolbar[mode="text"] toolbarbutton.chevr
- #editBookmarkPanelHeader {
-   margin-bottom: 6px;
- }
- 
- #editBMPanel_editColumn {
-   color: #FFFFFF;
- }
- 
--/* The following elements come from editBookmarkOverlay.xul, but the styling is
-+/* The following elements come from editBookmarkOverlay.xhtml, but the styling is
-    specific to the HUD-styled editBookmarkPanel. Styling shared by all
--   editBookmarkOverlay.xul consumers should be in editBookmarkOverlay.css. */
-+   editBookmarkOverlay.xhtml consumers should be in editBookmarkOverlay.css. */
- 
- #editBMPanel_newFolderBox {
-   background: linear-gradient(#FFFFFF, #F2F2F2);
-   background-origin: padding-box;
-   background-clip: padding-box;
-   border-radius: 0 0 3px 3px;
-   border: 1px solid #A5A5A5;
-   box-shadow: inset 0 1px rgba(255,255, 255, 0.8),
-diff --git a/suite/themes/modern/communicator/sync/syncCommon.css b/suite/themes/modern/communicator/sync/syncCommon.css
---- a/suite/themes/modern/communicator/sync/syncCommon.css
-+++ b/suite/themes/modern/communicator/sync/syncCommon.css
-@@ -1,13 +1,13 @@
- /* 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/. */
- 
--/* The following are used by both syncSetup.xul and syncGenericChange.xul */
-+/* The following are used by both syncSetup.xhtml and syncGenericChange.xhtml */
- .statusIcon {
-   margin-inline-start: 4px;
-   max-height: 16px;
-   max-width: 16px;
- }
- 
- .statusIcon[status="active"] {
-   list-style-image: url("chrome://communicator/skin/icons/loading.png");
-@@ -16,17 +16,17 @@
- .statusIcon[status="error"] {
-   list-style-image: url("chrome://global/skin/icons/error-16.png");
- }
- 
- .statusIcon[status="success"] {
-   list-style-image: url("chrome://global/skin/icons/information-16.png");
- }
- 
--/* .data is only used by syncGenericChange.xul, but it seems unnecessary to have
-+/* .data is only used by syncGenericChange.xhtml, but it seems unnecessary to have
-    a separate stylesheet for it. */
- .data {
-   font-size: 90%;
-   font-weight: bold;
- }
- 
- #change-dialog {
-   width: 40em;
-diff --git a/suite/themes/modern/jar.mn b/suite/themes/modern/jar.mn
---- a/suite/themes/modern/jar.mn
-+++ b/suite/themes/modern/jar.mn
-@@ -9,23 +9,23 @@ modern.jar:
- % skin global modern/1.0 %skin/modern/global/
- % skin global-platform modern/1.0 %skin/modern/global/gtk/
- % skin global-platform modern/1.0 %skin/modern/global/mac/ os=Darwin
- % skin global-platform modern/1.0 %skin/modern/global/win/ os=WINNT
- % skin messenger modern/1.0 %skin/modern/messenger/
- % skin mozapps modern/1.0 %skin/modern/mozapps/
- % skin navigator modern/1.0 %skin/modern/navigator/
- % skin messenger-newsblog modern/1.0 %skin/modern/messenger-newsblog/
--% style chrome://communicator/content/customizeToolbar.xul chrome://navigator/skin/navigator.css
--% style chrome://communicator/content/customizeToolbar.xul chrome://messenger/skin/primaryToolbar.css
--% style chrome://communicator/content/customizeToolbar.xul chrome://messenger/skin/messengercompose/messengercompose.css
--% style chrome://communicator/content/customizeToolbar.xul chrome://messenger/skin/smime/msgCompSMIMEOverlay.css
--% style chrome://communicator/content/customizeToolbar.xul chrome://messenger/skin/addressbook/addressbook.css
--% style chrome://communicator/content/customizeToolbar.xul chrome://editor/skin/editorPrimaryToolbar.css
--% style chrome://communicator/content/customizeToolbar.xul chrome://editor/skin/editorFormatToolbar.css
-+% style chrome://communicator/content/customizeToolbar.xhtml chrome://navigator/skin/navigator.css
-+% style chrome://communicator/content/customizeToolbar.xhtml chrome://messenger/skin/primaryToolbar.css
-+% style chrome://communicator/content/customizeToolbar.xhtml chrome://messenger/skin/messengercompose/messengercompose.css
-+% style chrome://communicator/content/customizeToolbar.xhtml chrome://messenger/skin/smime/msgCompSMIMEOverlay.css
-+% style chrome://communicator/content/customizeToolbar.xhtml chrome://messenger/skin/addressbook/addressbook.css
-+% style chrome://communicator/content/customizeToolbar.xhtml chrome://editor/skin/editorPrimaryToolbar.css
-+% style chrome://communicator/content/customizeToolbar.xhtml chrome://editor/skin/editorFormatToolbar.css
-   skin/modern/communicator/brand.css                               (communicator/brand.css)
-   skin/modern/communicator/blockedSite.css                         (communicator/blockedSite.css)
-   skin/modern/communicator/certError.css                           (communicator/certError.css)
-   skin/modern/communicator/customizeToolbar.css                    (communicator/customizeToolbar.css)
-   skin/modern/communicator/datetimepicker.css                      (communicator/datetimepicker.css)
-   skin/modern/communicator/numberbox.css                           (communicator/numberbox.css)
-   skin/modern/communicator/prefpanels.css                          (communicator/prefpanels.css)
-   skin/modern/communicator/preferences.css                         (communicator/preferences.css)
-diff --git a/suite/themes/modern/messenger/dialogs.css b/suite/themes/modern/messenger/dialogs.css
---- a/suite/themes/modern/messenger/dialogs.css
-+++ b/suite/themes/modern/messenger/dialogs.css
-@@ -5,24 +5,24 @@
- /* ===== dialogs.css ====================================================
-   == Styles used by the general dialogs in Messenger.
-   ======================================================================= */
- 
- @import url("chrome://messenger/skin/messenger.css");
- 
- @namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
- 
--/* ::::: fieldMapImport.xul ::::: */
-+/* ::::: fieldMapImport.xhtml ::::: */
- 
- .importsampledata {
-   border-left: 3px solid #C2D0D0;
-   padding-inline-start: 10px;
- }
- 
--/* ::::: importDialog.xul ::::: */
-+/* ::::: importDialog.xhtml ::::: */
- 
- #progressStatus {
-   margin: 1em 0px 0px;
- }
- 
- #progressMeter {
-   margin-top: 1em;
-   margin-bottom: 2em;

+ 0 - 2028
mzla/comm/TOP-1614671-port1456035-4-and-5-61a1-cc.patch

@@ -1,2028 +0,0 @@
-# HG changeset patch
-# User Ian Neal <iann_cvs@blueyonder.co.uk>
-# Date 1581435120 -3600
-# Parent  10fa8911ada5a6afab1a7c6f0e9eb849d8c786f8
-Bug 1614671 - Port |Bug 1456035 Part 4 - Convert callers of XPCOMUtils.generateQI to ChromeUtils.generateQI|, |Bug 1456035 Part 5 - Convert manual QueryInterface to ChromeUtils.generateQI| and |Bug 1460092 - Add ESLint rule to enforce use of ChromeUtils.generateQI| to SeaMonkey. r=frg
-
-diff --git a/suite/base/content/viewZoomOverlay.js b/suite/base/content/viewZoomOverlay.js
---- a/suite/base/content/viewZoomOverlay.js
-+++ b/suite/base/content/viewZoomOverlay.js
-@@ -29,20 +29,20 @@ var FullZoom = FullZoom || {
-   get siteSpecific() {
-     return this._siteSpecificPref;
-   },
- 
-   //**************************************************************************//
-   // nsISupports
- 
-   QueryInterface:
--  XPCOMUtils.generateQI([Ci.nsIObserver,
--                         Ci.nsIContentPrefObserver,
--                         Ci.nsIContentPrefCallback2,
--                         Ci.nsISupportsWeakReference]),
-+  ChromeUtils.generateQI([Ci.nsIObserver,
-+                          Ci.nsIContentPrefObserver,
-+                          Ci.nsIContentPrefCallback2,
-+                          Ci.nsISupportsWeakReference]),
- 
-   //**************************************************************************//
-   // Initialization & Destruction
- 
-   init: function FullZoom_init() {
-     // Listen for scrollwheel events so we can save scrollwheel-based changes.
-     window.addEventListener("wheel", this, true);
- 
-diff --git a/suite/browser/browser-places.js b/suite/browser/browser-places.js
---- a/suite/browser/browser-places.js
-+++ b/suite/browser/browser-places.js
-@@ -788,17 +788,17 @@ var BookmarkingUI = {
-       PlacesUtils.bookmarks.removeObserver(this);
-     }
- 
-     if (this._pendingUpdate) {
-       delete this._pendingUpdate;
-     }
-   },
- 
--  QueryInterface: XPCOMUtils.generateQI([
-+  QueryInterface: ChromeUtils.generateQI([
-     Ci.nsINavBookmarkObserver
-   ]),
- 
-   get _starredTooltip()
-   {
-     delete this._starredTooltip;
-     return this._starredTooltip =
-       gNavigatorBundle.getString("starButtonOn.tooltip");
-diff --git a/suite/browser/navigator.js b/suite/browser/navigator.js
---- a/suite/browser/navigator.js
-+++ b/suite/browser/navigator.js
-@@ -48,21 +48,20 @@ var gIgnoreClick = false;
- // Listeners for updating zoom value in status bar
- var ZoomListeners =
- {
- 
-   // Identifies the setting in the content prefs database.
-   name: "browser.content.full-zoom",
- 
-   QueryInterface:
--  XPCOMUtils.generateQI([Ci.nsIObserver,
--                         Ci.nsIContentPrefObserver,
--                         Ci.nsIContentPrefCallback2,
--                         Ci.nsISupportsWeakReference,
--                         Ci.nsISupports]),
-+  ChromeUtils.generateQI([Ci.nsIObserver,
-+                          Ci.nsIContentPrefObserver,
-+                          Ci.nsIContentPrefCallback2,
-+                          Ci.nsISupportsWeakReference]),
- 
-   init: function ()
-   {
-     Cc["@mozilla.org/content-pref/service;1"]
-     .getService(Ci.nsIContentPrefService2)
-     .addObserverForName(this.name, this);
- 
-     Services.prefs.addObserver("browser.zoom.", this, true);
-@@ -175,18 +174,18 @@ var gStatusBarPopupIconPrefListener =
-       popupIcon.hidden = true;
- 
-     else if (gBrowser.getNotificationBox().popupCount)
-       popupIcon.hidden = false;
-   }
- };
- 
- var gFormSubmitObserver = {
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsIFormSubmitObserver,
--                                         Ci.nsIObserver]),
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIFormSubmitObserver,
-+                                          Ci.nsIObserver]),
- 
-   panel: null,
- 
-   init: function()
-   {
-     this.panel = document.getElementById("invalid-form-popup");
-   },
- 
-diff --git a/suite/browser/nsBrowserContentHandler.js b/suite/browser/nsBrowserContentHandler.js
---- a/suite/browser/nsBrowserContentHandler.js
-+++ b/suite/browser/nsBrowserContentHandler.js
-@@ -214,27 +214,21 @@ function doSearch(aSearchTerm, aFeatures
- }
- 
- var nsBrowserContentHandler = {
-   get wrappedJSObject() {
-     return this;
-   },
- 
-   /* nsISupports */
--  QueryInterface: function QueryInterface(iid) {
--    if (iid.equals(nsISupports) ||
--        iid.equals(nsICommandLineHandler) ||
--        iid.equals(nsICommandLine) ||
--        iid.equals(nsICommandLineValidator) ||
--        iid.equals(nsIContentHandler) ||
--        iid.equals(nsIFactory))
--      return this;
--
--    throw Cr.NS_ERROR_NO_INTERFACE;
--  },
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsICommandLineHandler,
-+                                          Ci.nsICommandLine,
-+                                          Ci.nsICommandLineValidator,
-+                                          Ci.nsIContentHandler,
-+                                          Ci.nsIFactory]),
- 
-   _handledURI: null,
- 
-   /* nsICommandLineHandler */
-   handle: function handle(cmdLine) {
-     var features = "chrome,all,dialog=no";
-     try {
-       var width = cmdLine.handleFlagWithParam("width", false);
-diff --git a/suite/browser/nsBrowserContentListener.js b/suite/browser/nsBrowserContentListener.js
---- a/suite/browser/nsBrowserContentListener.js
-+++ b/suite/browser/nsBrowserContentListener.js
-@@ -59,25 +59,19 @@ nsBrowserContentListener.prototype =
-     },
-     close: function()
-     {
-         this.contentWindow = null;
-         var uriLoader = Cc["@mozilla.org/uriloader;1"].getService(Ci.nsIURILoader);
- 
-         uriLoader.unRegisterContentListener(this);
-     },
--    QueryInterface: function(iid)
--    {
--        if (iid.equals(Ci.nsIURIContentListener) ||
--            iid.equals(Ci.nsISupportsWeakReference) ||
--            iid.equals(Ci.nsISupports))
--            return this;
- 
--        throw Cr.NS_ERROR_NO_INTERFACE;
--    },
-+    QueryInterface: ChromeUtils.generateQI([Ci.nsIURIContentListener,
-+                                            Ci.nsISupportsWeakReference]),
- 
-     doContent: function(contentType, isContentPreferred, request, contentHandler)
-     {
-         // forward the doContent to our content area webshell
-         var docShell = this.contentWindow.docShell;
-         if (Services.prefs.getIntPref("browser.link.open_external") == nsIBrowserDOMWindow.OPEN_NEWTAB) {
-             var newTab = gBrowser.loadOneTab("about:blank", {
-                                          inBackground: Services.prefs.getBoolPref("browser.tabs.loadDivertedInBackground")});
-diff --git a/suite/browser/nsBrowserStatusHandler.js b/suite/browser/nsBrowserStatusHandler.js
---- a/suite/browser/nsBrowserStatusHandler.js
-+++ b/suite/browser/nsBrowserStatusHandler.js
-@@ -13,25 +13,19 @@ nsBrowserStatusHandler.prototype =
-   // Stored Status, Link and Loading values
-   status : "",
-   defaultStatus : "",
-   jsStatus : "",
-   jsDefaultStatus : "",
-   overLink : "",
-   feeds : [],
- 
--  QueryInterface : function(aIID)
--  {
--    if (aIID.equals(Ci.nsIWebProgressListener) ||
--        aIID.equals(Ci.nsISupportsWeakReference) ||
--        aIID.equals(Ci.nsIXULBrowserWindow) ||
--        aIID.equals(Ci.nsISupports))
--      return this;
--    throw Cr.NS_NOINTERFACE;
--  },
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIWebProgressListener,
-+                                          Ci.nsISupportsWeakReference,
-+                                          Ci.nsIXULBrowserWindow]),
- 
-   init : function()
-   {
-     this.urlBar          = document.getElementById("urlbar");
-     this.throbberElement = document.getElementById("navigator-throbber");
-     this.statusMeter     = document.getElementById("statusbar-icon");
-     this.statusPanel     = document.getElementById("statusbar-progresspanel");
-     this.stopButton      = document.getElementById("stop-button");
-diff --git a/suite/browser/nsTypeAheadFind.js b/suite/browser/nsTypeAheadFind.js
---- a/suite/browser/nsTypeAheadFind.js
-+++ b/suite/browser/nsTypeAheadFind.js
-@@ -60,17 +60,17 @@ typeAheadFind.prototype = {
-   mFound: null,
-   mLinks: false,
-   mSearchString: "",
-   mSelection: null,
-   mTimer: null,
-   mXULBrowserWindow: null,
- 
-   /* nsISupports */
--  QueryInterface: XPCOMUtils.generateQI([
-+  QueryInterface: ChromeUtils.generateQI([
-       Ci.nsISupportsWeakReference,
-       Ci.nsIObserver,
-       Ci.nsITimerCallback,
-       Ci.nsISelectionListener]),
- 
-   /* nsIObserver */
-   observe: function(aSubject, aTopic, aData) {
-     if (aTopic == "app-startup") {
-diff --git a/suite/browser/tabbrowser.xml b/suite/browser/tabbrowser.xml
---- a/suite/browser/tabbrowser.xml
-+++ b/suite/browser/tabbrowser.xml
-@@ -746,24 +746,20 @@
-               return allowRefresh;
-             },
- 
-             addFeed: function(aLink)
-             {
-               this.mFeeds.push(aLink);
-             },
- 
--            QueryInterface: function(aIID) {
--              if (aIID.equals(Ci.nsIWebProgressListener) ||
--                  aIID.equals(Ci.nsIWebProgressListener2) ||
--                  aIID.equals(Ci.nsISupportsWeakReference) ||
--                  aIID.equals(Ci.nsISupports))
--                return this;
--              throw Cr.NS_NOINTERFACE;
--            }
-+            QueryInterface: ChromeUtils.generateQI([
-+                Ci.nsIWebProgressListener,
-+                Ci.nsIWebProgressListener2,
-+                Ci.nsISupportsWeakReference]),
-           });
-         ]]>
-         </body>
-       </method>
- 
-       <method name="mInstallSH">
-         <parameter name="aBrowser"/>
-         <parameter name="aSH"/>
-@@ -801,24 +797,19 @@
-             onStatusChange : function(aWebProgress, aRequest, aStatus, aMessage)
-             {
-             },
- 
-             onSecurityChange : function(aWebProgress, aRequest, aState)
-             {
-             },
- 
--            QueryInterface : function(aIID)
--            {
--              if (aIID.equals(Ci.nsIWebProgressListener) ||
--                  aIID.equals(Ci.nsISupportsWeakReference) ||
--                  aIID.equals(Ci.nsISupports))
--                return this;
--              throw Cr.NS_NOINTERFACE;
--            }
-+            QueryInterface : ChromeUtils.generateQI([
-+                Ci.nsIWebProgressListener,
-+                Ci.nsISupportsWeakReference]),
-           });
-         ]]>
-         </body>
-       </method>
- 
-       <method name="setIcon">
-         <parameter name="aTab"/>
-         <parameter name="aURI"/>
-diff --git a/suite/browser/test/browser/browser_bug561636.js b/suite/browser/test/browser/browser_bug561636.js
---- a/suite/browser/test/browser/browser_bug561636.js
-+++ b/suite/browser/test/browser/browser_bug561636.js
-@@ -17,17 +17,17 @@ function checkPopupHide()
- function checkPopupMessage(doc)
- {
-   is(gInvalidFormPopup.firstChild.textContent,
-      doc.getElementById('i').validationMessage,
-      "The panel should show the message from validationMessage");
- }
- 
- var gObserver = {
--  QueryInterface : XPCOMUtils.generateQI([Ci.nsIFormSubmitObserver]),
-+  QueryInterface : ChromeUtils.generateQI([Ci.nsIFormSubmitObserver]),
- 
-   notifyInvalidSubmit : function (aFormElement, aInvalidElements)
-   {
-   }
- };
- 
- function test()
- {
-diff --git a/suite/browser/test/browser/browser_bug623155.js b/suite/browser/test/browser/browser_bug623155.js
---- a/suite/browser/test/browser/browser_bug623155.js
-+++ b/suite/browser/test/browser/browser_bug623155.js
-@@ -53,23 +53,18 @@ function test() {
-   gBrowser.getBrowserForTab(gNewTab)
-           .webProgress
-           .addProgressListener(gWebProgressListener,
-                                Ci.nsIWebProgress
-                                  .NOTIFY_LOCATION);
- }
- 
- var gWebProgressListener = {
--  QueryInterface: function(aIID) {
--    if (aIID.equals(Ci.nsIWebProgressListener) ||
--        aIID.equals(Ci.nsISupportsWeakReference) ||
--        aIID.equals(Ci.nsISupports))
--      return this;
--    throw Cr.NS_NOINTERFACE;
--  },
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIWebProgressListener,
-+                                          Ci.nsISupportsWeakReference]),
- 
-   // ---------------------------------------------------------------------------
-   // NOTIFY_LOCATION mode should work fine without these methods.
-   //
-   //onStateChange: function() {},
-   //onStatusChange: function() {},
-   //onProgressChange: function() {},
-   //onSecurityChange: function() {},
-diff --git a/suite/components/bindings/findbar.xml b/suite/components/bindings/findbar.xml
---- a/suite/components/bindings/findbar.xml
-+++ b/suite/components/bindings/findbar.xml
-@@ -41,24 +41,18 @@
-           prefsvc.getBoolPref("accessibility.typeaheadfind.autostart");
-         this._useFindbar =
-           prefsvc.getBoolPref("accessibility.typeaheadfind.usefindbar");
-       ]]></constructor>
- 
-       <field name="_suiteObserver"><![CDATA[({
-         _self: this,
- 
--        QueryInterface: function(aIID) {
--          if (aIID.equals(Ci.nsIObserver) ||
--              aIID.equals(Ci.nsISupportsWeakReference) ||
--              aIID.equals(Ci.nsISupports))
--            return this;
--
--          throw Cr.NS_ERROR_NO_INTERFACE;
--        },
-+        QueryInterface: ChromeUtils.generateQI([Ci.nsIObserver,
-+                                                Ci.nsISupportsWeakReference]),
- 
-         observe: function(aSubject, aTopic, aPrefName) {
-           if (aTopic != "nsPref:changed")
-             return;
- 
-           var prefsvc =
-             aSubject.QueryInterface(Ci.nsIPrefBranch);
- 
-diff --git a/suite/components/bindings/notification.xml b/suite/components/bindings/notification.xml
---- a/suite/components/bindings/notification.xml
-+++ b/suite/components/bindings/notification.xml
-@@ -1580,18 +1580,19 @@
-                 optInCB.checked = Services.prefs.getBoolPref("dom.ipc.plugins.reportCrashURL");
-             }
- 
-             // If we're showing the link to manually trigger report submission, we'll
-             // want to be able to update all the instances of the UI for this crash to
-             // show an updated message when a report is submitted.
-             if (doPrompt) {
-               let observer = {
--                QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver,
--                                                       Ci.nsISupportsWeakReference]),
-+                QueryInterface: ChromeUtils.generateQI([
-+                    Ci.nsIObserver,
-+                    Ci.nsISupportsWeakReference]),
-                 observe: function(subject, topic, data) {
-                   let propertyBag = subject;
-                   if (!(propertyBag instanceof Ci.nsIPropertyBag2))
-                     return;
-                   // Ignore notifications for other crashes.
-                   if (propertyBag.get("minidumpID") != pluginDumpID)
-                     return;
-                   statusDiv.setAttribute("status", data);
-diff --git a/suite/components/console/content/consoleBindings.xml b/suite/components/console/content/consoleBindings.xml
---- a/suite/components/console/content/consoleBindings.xml
-+++ b/suite/components/console/content/consoleBindings.xml
-@@ -389,22 +389,17 @@
- 
-       <constructor>this.init();</constructor>
-       <destructor>this.destroy();</destructor>
- 
-       <!-- Command controller for the copy command -->
-       <field name="_controller"><![CDATA[({
-         _outer: this,
- 
--        QueryInterface: function(aIID) {
--          if (aIID.equals(Ci.nsIController) ||
--              aIID.equals(Ci.nsISupports))
--            return this;
--          throw Cr.NS_NOINTERFACE;
--        },
-+        QueryInterface: ChromeUtils.generateQI([Ci.nsIController]),
- 
-         supportsCommand: function(aCommand) {
-           return aCommand == "cmd_copy";
-         },
- 
-         isCommandEnabled: function(aCommand) {
-           return aCommand == "cmd_copy" && this._outer.selectedItem;
-         },
-diff --git a/suite/components/console/jsconsole-clhandler.js b/suite/components/console/jsconsole-clhandler.js
---- a/suite/components/console/jsconsole-clhandler.js
-+++ b/suite/components/console/jsconsole-clhandler.js
-@@ -22,12 +22,12 @@ jsConsoleHandler.prototype = {
- 
-     if (cmdLine.state == Ci.nsICommandLine.STATE_REMOTE_AUTO)
-       cmdLine.preventDefault = true;
-   },
- 
-   helpInfo : "  --suiteconsole        Open the Error console.\n",
- 
-   classID: Components.ID("{afeee354-8c99-4725-adb1-8502218c5c3c}"),
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsICommandLineHandler]),
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsICommandLineHandler]),
- };
- 
- this.NSGetFactory = XPCOMUtils.generateNSGetFactory([jsConsoleHandler]);
-diff --git a/suite/components/dataman/content/dataman.js b/suite/components/dataman/content/dataman.js
---- a/suite/components/dataman/content/dataman.js
-+++ b/suite/components/dataman/content/dataman.js
-@@ -119,18 +119,18 @@ var gDataman = {
-   },
- 
-   debugError: function dataman_debugError(aLogMessage) {
-     if (this.debug)
-       Cu.reportError(aLogMessage);
-   },
- 
-   // :::::::::: data change observers ::::::::::
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver,
--                                         Ci.nsIContentPrefObserver]),
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIObserver,
-+                                          Ci.nsIContentPrefObserver]),
- 
-   observe: function co_observe(aSubject, aTopic, aData) {
-     gDataman.debugMsg("Observed: " + aTopic + " - " + aData);
-     switch (aTopic) {
-       case "cookie-changed":
-         gCookies.reactToChange(aSubject, aData);
-         break;
-       case "perm-changed":
-diff --git a/suite/components/downloads/DownloadsCommon.jsm b/suite/components/downloads/DownloadsCommon.jsm
---- a/suite/components/downloads/DownloadsCommon.jsm
-+++ b/suite/components/downloads/DownloadsCommon.jsm
-@@ -67,18 +67,18 @@ const kDownloadsStringsRequiringPluralFo
- const kPartialDownloadSuffix = ".part";
- 
- const kPrefBranch = Services.prefs.getBranch("browser.download.");
- 
- const PREF_DM_BEHAVIOR = "browser.download.manager.behavior";
- const PROGRESS_DIALOG_URL = "chrome://communicator/content/downloads/progressDialog.xul";
- 
- var PrefObserver = {
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver,
--                                         Ci.nsISupportsWeakReference]),
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIObserver,
-+                                          Ci.nsISupportsWeakReference]),
-   getPref(name) {
-     try {
-       switch (typeof this.prefs[name]) {
-         case "boolean":
-           return kPrefBranch.getBoolPref(name);
-       }
-     } catch (ex) { }
-     return this.prefs[name];
-diff --git a/suite/components/downloads/content/treeView.js b/suite/components/downloads/content/treeView.js
---- a/suite/components/downloads/content/treeView.js
-+++ b/suite/components/downloads/content/treeView.js
-@@ -15,17 +15,17 @@ function DownloadTreeView() {
-   this._searchTerms = [];
-   this.dateTimeFormatter =
-     new Services.intl.DateTimeFormat(undefined,
-                                      {dateStyle: "short",
-                                       timeStyle: "long"});
- }
- 
- DownloadTreeView.prototype = {
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsITreeView]),
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsITreeView]),
- 
-   // ***** nsITreeView attributes and methods *****
-   get rowCount() {
-     return this._dlList.length;
-   },
- 
-   selection: null,
- 
-diff --git a/suite/components/downloads/content/uploadProgress.js b/suite/components/downloads/content/uploadProgress.js
---- a/suite/components/downloads/content/uploadProgress.js
-+++ b/suite/components/downloads/content/uploadProgress.js
-@@ -160,17 +160,17 @@ var gProgressListener = {
-   onLocationChange: function( aWebProgress, aRequest, aLocation, aFlags ) {
-   },
- 
-   onSecurityChange: function( aWebProgress, aRequest, aState ) {
-   },
- 
-   // ---------- nsISupports methods ----------
- 
--  QueryInterface: XPCOMUtils.generateQI([
-+  QueryInterface: ChromeUtils.generateQI([
-                       Ci.nsIWebProgressListener2,
-                       Ci.nsIWebProgressListener,
-                       Ci.nsIInterfaceRequestor]),
- 
-   // ---------- nsIInterfaceRequestor methods ----------
- 
-   getInterface: function(aIID) {
-     if (aIID.equals(Ci.nsIPrompt) ||
-diff --git a/suite/components/feeds/FeedConverter.js b/suite/components/feeds/FeedConverter.js
---- a/suite/components/feeds/FeedConverter.js
-+++ b/suite/components/feeds/FeedConverter.js
-@@ -102,17 +102,17 @@ FeedConverter.prototype = {
-   /**
-    * Records if the feed was sniffed
-    */
-   _sniffed: false,
- 
-   /**
-    * See nsISupports.idl
-    */
--  QueryInterface: XPCOMUtils.generateQI(
-+  QueryInterface: ChromeUtils.generateQI(
-     [Ci.nsIFeedResultListener,
-      Ci.nsIStreamConverter,
-      Ci.nsIStreamListener,
-      Ci.nsIRequestObserver]),
-   classID: Components.ID("{88592f45-3866-4c8e-9d8a-ab58b290fcf7}"),
- 
-   /**
-    * See nsIStreamConverter.idl
-@@ -445,16 +445,16 @@ FeedResultService.prototype = {
-     // send the holes to the end
-     resultList.sort();
-     // and trim the list
-     resultList.splice(resultList.length - deletions, deletions);
-     if (resultList.length == 0)
-       delete this._results[uri.spec];
-   },
- 
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsIFeedResultService]),
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIFeedResultService]),
-   classID: Components.ID("{e5b05e9d-f037-48e4-b9a4-b99476582927}")
- };
- 
- var components = [FeedConverter,
-                   FeedResultService];
- 
- var NSGetFactory = XPCOMUtils.generateNSGetFactory(components);
-diff --git a/suite/components/feeds/FeedWriter.js b/suite/components/feeds/FeedWriter.js
---- a/suite/components/feeds/FeedWriter.js
-+++ b/suite/components/feeds/FeedWriter.js
-@@ -1196,14 +1196,14 @@ FeedWriter.prototype = {
-         case PREF_VIDEO_SELECTED_ACTION:
-         case PREF_AUDIO_SELECTED_ACTION:
-           this._setAlwaysUseCheckedState(feedType);
-       }
-     }
-   },
- 
-   classID: FEEDWRITER_CID,
--  QueryInterface: XPCOMUtils.generateQI([ Ci.nsIDOMGlobalPropertyInitializer,
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIDOMGlobalPropertyInitializer,
-                                           Ci.nsIObserver])
- 
- };
- 
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([FeedWriter]);
-diff --git a/suite/components/feeds/WebContentConverter.js b/suite/components/feeds/WebContentConverter.js
---- a/suite/components/feeds/WebContentConverter.js
-+++ b/suite/components/feeds/WebContentConverter.js
-@@ -51,29 +51,29 @@ WebContentConverter.prototype = {
-   onStopRequest: function onStopRequest() { },
- 
-   onStartRequest: function onStartRequest(request, context) {
-     var wccr = Cc[WCCR_CONTRACTID]
-                  .getService(Ci.nsIWebContentConverterService);
-     wccr.loadPreferredHandler(request);
-   },
- 
--  QueryInterface: XPCOMUtils.generateQI(
-+  QueryInterface: ChromeUtils.generateQI(
-     [Ci.nsIStreamConverter,
-      Ci.nsIStreamListener])
- };
- 
- var WebContentConverterFactory = {
-   createInstance: function createInstance(outer, iid) {
-     if (outer != null)
-       throw Cr.NS_ERROR_NO_AGGREGATION;
-     return new WebContentConverter().QueryInterface(iid);
-   },
- 
--  QueryInterface: XPCOMUtils.generateQI(
-+  QueryInterface: ChromeUtils.generateQI(
-     [Ci.nsIFactory])
- };
- 
- function ServiceInfo(contentType, uri, name) {
-   this._contentType = contentType;
-   this._uri = uri;
-   this._name = name;
- }
-@@ -117,17 +117,17 @@ ServiceInfo.prototype = {
- 
-   /**
-    * See nsIWebContentHandlerInfo
-    */
-   getHandlerURI: function getHandlerURI(uri) {
-     return this._uri.replace(/%s/gi, encodeURIComponent(uri));
-   },
- 
--  QueryInterface: XPCOMUtils.generateQI(
-+  QueryInterface: ChromeUtils.generateQI(
-     [Ci.nsIWebContentHandlerInfo])
- };
- 
- function WebContentConverterRegistrar() {
-   this._contentTypes = { };
-   this._autoHandleContentTypes = { };
- }
- 
-@@ -833,16 +833,16 @@ WebContentConverterRegistrar.prototype =
-                    Ci.nsIWebContentHandlerRegistrar,
-                    Ci.nsIObserver,
-                    Ci.nsIFactory],
-       flags: Ci.nsIClassInfo.DOM_OBJECT}),
- 
-   /**
-    * See nsISupports
-    */
--  QueryInterface: XPCOMUtils.generateQI(
-+  QueryInterface: ChromeUtils.generateQI(
-     [Ci.nsIWebContentConverterService,
-      Ci.nsIWebContentHandlerRegistrar,
-      Ci.nsIObserver,
-      Ci.nsIFactory])
- };
- 
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([WebContentConverterRegistrar]);
-diff --git a/suite/components/helpviewer/content/help.js b/suite/components/helpviewer/content/help.js
---- a/suite/components/helpviewer/content/help.js
-+++ b/suite/components/helpviewer/content/help.js
-@@ -574,25 +574,19 @@ nsHelpStatusHandler.prototype = {
-     onStateChange : function(aWebProgress, aRequest, aStateFlags, aStatus) {},
-     onProgressChange : function(aWebProgress, aRequest, aCurSelfProgress,
-         aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress) {},
-     onStatusChange : function(aWebProgress, aRequest, aStatus, aMessage) {},
-     onSecurityChange : function(aWebProgress, aRequest, state) {},
-     onLocationChange : function(aWebProgress, aRequest, aLocation, aFlags) {
-         UpdateBackForwardButtons();
-     },
--    QueryInterface : function(aIID) {
--        if (aIID.equals(Ci.nsIWebProgressListener) ||
--            aIID.equals(Ci.nsISupportsWeakReference) ||
--            aIID.equals(Ci.nsIXULBrowserWindow) ||
--            aIID.equals(Ci.nsISupports)) {
--          return this;
--        }
--        throw Cr.NS_NOINTERFACE;
--    },
-+    QueryInterface : ChromeUtils.generateQI([Ci.nsIWebProgressListener,
-+                                             Ci.nsISupportsWeakReference,
-+                                             Ci.nsIXULBrowserWindow]),
- 
-     init : function() {},
- 
-     destroy : function() {},
- 
-     setJSStatus : function(status) {},
-     setOverLink : function(link, context) {},
-     onBeforeLinkTraversal: function(originalTarget, linkURI, linkNode, isAppTab) {}
-@@ -839,17 +833,11 @@ var helpContentListener = {
-   isPreferred: function(aContentType, aDesiredContentType) {
-     return false;
-   },
-   canHandleContent: function(aContentType, aIsContentPreferred, aDesiredContentType) {
-     return false;
-   },
-   loadCookie: null,
-   parentContentListener: null,
--  QueryInterface: function (aIID) {
--    if (aIID.equals(Ci.nsIURIContentListener) ||
--        aIID.equals(Ci.nsISupportsWeakReference) ||
--        aIID.equals(Ci.nsISupports))
--      return this;
--
--    throw Cr.NS_ERROR_NO_INTERFACE;
--  }
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIURIContentListener,
-+                                          Ci.nsISupportsWeakReference]),
- };
-diff --git a/suite/components/migration/SuiteProfileMigrator.js b/suite/components/migration/SuiteProfileMigrator.js
---- a/suite/components/migration/SuiteProfileMigrator.js
-+++ b/suite/components/migration/SuiteProfileMigrator.js
-@@ -134,15 +134,15 @@ ProfileMigrator.prototype = {
-       if (migrator) {
-         return [key, migrator];
-       }
-     }
- 
-     return ["", null];
-   },
- 
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsIProfileMigrator]),
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIProfileMigrator]),
-   classDescription: "Profile Migrator",
-   contractID: "@mozilla.org/toolkit/profile-migrator;1",
-   classID: Components.ID("{d5148b7c-ba4e-4f7a-a80b-1ae48b90b910}"),
- };
- 
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([ProfileMigrator]);
-diff --git a/suite/components/nsAbout.js b/suite/components/nsAbout.js
---- a/suite/components/nsAbout.js
-+++ b/suite/components/nsAbout.js
-@@ -30,17 +30,17 @@ About.prototype = {
-   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.xul",
- 
-   classID: Components.ID("{d54f2c89-8fd6-4eeb-a7a4-51d4dcdf460f}"),
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsIAboutModule]),
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIAboutModule]),
- 
-   getModule: function(aURI) {
-     return aURI.pathQueryRef.replace(/-|\W.*$/g, "").toLowerCase();
-   },
- 
-   getURIFlags: function(aURI) {
-     return this[this.getModule(aURI) + "Flags"];
-   },
-diff --git a/suite/components/nsGopherProtocolStubHandler.js b/suite/components/nsGopherProtocolStubHandler.js
---- a/suite/components/nsGopherProtocolStubHandler.js
-+++ b/suite/components/nsGopherProtocolStubHandler.js
-@@ -15,17 +15,17 @@ function GopherProtocol()
- {
- }
- 
- GopherProtocol.prototype = {
-   classDescription: "Gopher protocol handler stub",
-   classID: Components.ID("{22042bdb-56e4-47c6-8b12-fdfa859c05a9}"),
- 
-   // nsISupports
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsIProtocolHandler]),
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIProtocolHandler]),
- 
-   // nsIProtocolHandler
-   scheme: "gopher",
-   defaultPort: 70,
-   protocolFlags: Ci.nsIProtocolHandler.URI_NORELATIVE |
-                  Ci.nsIProtocolHandler.URI_NOAUTH |
-                  Ci.nsIProtocolHandler.URI_LOADABLE_BY_ANYONE,
- 
-diff --git a/suite/components/nsSuiteGlue.js b/suite/components/nsSuiteGlue.js
---- a/suite/components/nsSuiteGlue.js
-+++ b/suite/components/nsSuiteGlue.js
-@@ -1560,20 +1560,20 @@ SuiteGlue.prototype = {
-     } catch (e) {
-       Cu.reportError("Error displaying tab received by Sync: " + e);
-     }
-   },
- 
-   // for XPCOM
-   classID: Components.ID("{bbbbe845-5a1b-40ee-813c-f84b8faaa07c}"),
- 
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver,
--                                         Ci.nsIWebProgressListener,
--                                         Ci.nsISupportsWeakReference,
--                                         Ci.nsISuiteGlue])
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIObserver,
-+                                          Ci.nsIWebProgressListener,
-+                                          Ci.nsISupportsWeakReference,
-+                                          Ci.nsISuiteGlue])
- 
- }
- 
- /**
-  * ContentPermissionIntegration is responsible for showing the user
-  * simple permission prompts when content requests additional
-  * capabilities.
-  *
-@@ -1618,17 +1618,17 @@ var ContentPermissionIntegration = {
-   },
- };
- 
- function ContentPermissionPrompt() {}
- 
- ContentPermissionPrompt.prototype = {
-   classID: Components.ID("{9d4c845d-3f09-402a-b66d-50f291d7d50f}"),
- 
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsIContentPermissionPrompt]),
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIContentPermissionPrompt]),
- 
-   /**
-    * This implementation of nsIContentPermissionPrompt.prompt ensures
-    * that there's only one nsIContentPermissionType in the request,
-    * and that it's of type nsIContentPermissionType. Failing to
-    * satisfy either of these conditions will result in this method
-    * throwing NS_ERRORs. If the combined ContentPermissionIntegration
-    * cannot construct a prompt for this particular request, an
-diff --git a/suite/components/places/content/bookmarkProperties.js b/suite/components/places/content/bookmarkProperties.js
---- a/suite/components/places/content/bookmarkProperties.js
-+++ b/suite/components/places/content/bookmarkProperties.js
-@@ -367,22 +367,17 @@ var BookmarkPropertiesPanel = {
-           this._height += -oldHeight + newHeight;
-           elementsHeight.set(id, newHeight);
-         }
-         break;
-     }
-   },
- 
-   // nsISupports
--  QueryInterface: function BPP_QueryInterface(aIID) {
--    if (aIID.equals(Ci.nsISupports))
--      return this;
--
--    throw Cr.NS_NOINTERFACE;
--  },
-+  QueryInterface: ChromeUtils.generateQI([]),
- 
-   _element: function BPP__element(aID) {
-     return document.getElementById("editBMPanel_" + aID);
-   },
- 
-   onDialogUnload() {
-     // gEditItemOverlay does not exist anymore here, so don't rely on it.
-     this._mutationObserver.disconnect();
-diff --git a/suite/components/places/content/browserPlacesViews.js b/suite/components/places/content/browserPlacesViews.js
---- a/suite/components/places/content/browserPlacesViews.js
-+++ b/suite/components/places/content/browserPlacesViews.js
-@@ -14,16 +14,19 @@ function PlacesViewBase(aPlace, aOptions
-   if ("viewElt" in aOptions)
-     this._viewElt = aOptions.viewElt;
-   this.options = aOptions;
-   this._controller = new PlacesController(this);
-   this.place = aPlace;
-   this._viewElt.controllers.appendController(this._controller);
- }
- 
-+PlacesViewBase.interfaces = [Ci.nsINavHistoryResultObserver,
-+                             Ci.nsISupportsWeakReference];
-+
- PlacesViewBase.prototype = {
-   // The xul element that holds the entire view.
-   _viewElt: null,
-   get viewElt() {
-     return this._viewElt;
-   },
- 
-   get associatedElement() {
-@@ -36,19 +39,18 @@ PlacesViewBase.prototype = {
- 
-   // The xul element that represents the root container.
-   _rootElt: null,
- 
-   // Set to true for views that are represented by native widgets (i.e.
-   // the native mac menu).
-   _nativeView: false,
- 
--  QueryInterface: XPCOMUtils.generateQI(
--    [Ci.nsINavHistoryResultObserver,
--     Ci.nsISupportsWeakReference]),
-+  QueryInterface: ChromeUtils.generateQI(
-+    PlacesViewBase.interfaces),
- 
-   _place: "",
-   get place() {
-     return this._place;
-   },
-   set place(val) {
-     this._place = val;
- 
-@@ -997,22 +999,18 @@ function PlacesToolbar(aPlace) {
- }
- 
- PlacesToolbar.prototype = {
-   __proto__: PlacesViewBase.prototype,
- 
-   _cbEvents: ["dragstart", "dragover", "dragexit", "dragend", "drop",
-               "mousemove", "mouseover", "mouseout"],
- 
--  QueryInterface: function PT_QueryInterface(aIID) {
--    if (aIID.equals(Ci.nsITimerCallback))
--      return this;
--
--    return PlacesViewBase.prototype.QueryInterface.apply(this, arguments);
--  },
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsITimerCallback,
-+                                          ...PlacesViewBase.interfaces]),
- 
-   uninit: function PT_uninit() {
-     this._removeEventListeners(this._viewElt, this._cbEvents, false);
-     this._removeEventListeners(this._rootElt, ["popupshowing", "popuphidden"],
-                                true);
-     this._removeEventListeners(this._rootElt, ["overflow", "underflow"], true);
-     this._removeEventListeners(window, ["resize", "unload"], false);
-     this._removeEventListeners(gBrowser.tabContainer, ["TabOpen", "TabClose"], false);
-@@ -1941,20 +1939,16 @@ function PlacesPanelMenuView(aPlace, aVi
-   this.options = aOptions;
- 
-   PlacesViewBase.call(this, aPlace, aOptions);
- }
- 
- PlacesPanelMenuView.prototype = {
-   __proto__: PlacesViewBase.prototype,
- 
--  QueryInterface: function PAMV_QueryInterface(aIID) {
--    return PlacesViewBase.prototype.QueryInterface.apply(this, arguments);
--  },
--
-   uninit: function PAMV_uninit() {
-     PlacesViewBase.prototype.uninit.apply(this, arguments);
-   },
- 
-   _insertNewItem:
-   function PAMV__insertNewItem(aChild, aInsertionNode, aBefore = null) {
-     this._domNodes.delete(aChild);
- 
-diff --git a/suite/components/places/content/controller.js b/suite/components/places/content/controller.js
---- a/suite/components/places/content/controller.js
-+++ b/suite/components/places/content/controller.js
-@@ -75,17 +75,17 @@ function PlacesController(aView) {
- }
- 
- PlacesController.prototype = {
-   /**
-    * The places view.
-    */
-   _view: null,
- 
--  QueryInterface: XPCOMUtils.generateQI([
-+  QueryInterface: ChromeUtils.generateQI([
-     Ci.nsIClipboardOwner
-   ]),
- 
-   // nsIClipboardOwner
-   LosingOwnership: function PC_LosingOwnership(aXferable) {
-     this.cutNodes = [];
-   },
- 
-diff --git a/suite/components/places/content/editBookmarkOverlay.js b/suite/components/places/content/editBookmarkOverlay.js
---- a/suite/components/places/content/editBookmarkOverlay.js
-+++ b/suite/components/places/content/editBookmarkOverlay.js
-@@ -454,17 +454,17 @@ var gEditItemOverlay = {
-                                       this._folderMenuList.selectedIndex);
- 
-     // Hide the folders-separator if no folder is annotated as recently-used
-     this._element("foldersSeparator").hidden = (menupopup.childNodes.length <= 6);
-     this._folderMenuList.disabled = this.readOnly;
-   },
- 
-   QueryInterface:
--  XPCOMUtils.generateQI([Ci.nsINavBookmarkObserver]),
-+  ChromeUtils.generateQI([Ci.nsINavBookmarkObserver]),
- 
-   _element(aID) {
-     return document.getElementById("editBMPanel_" + aID);
-   },
- 
-   uninitPanel(aHideCollapsibleElements) {
-     if (aHideCollapsibleElements) {
-       // Hide the folder tree if it was previously visible.
-diff --git a/suite/components/places/content/places.js b/suite/components/places/content/places.js
---- a/suite/components/places/content/places.js
-+++ b/suite/components/places/content/places.js
-@@ -156,22 +156,17 @@ var PlacesOrganizer = {
- 
-     // remove the "Properties" context-menu item, we've our own details pane
-     document.getElementById("placesContext")
-             .removeChild(document.getElementById("placesContext_show:info"));
- 
-     ContentArea.focus();
-   },
- 
--  QueryInterface: function PO_QueryInterface(aIID) {
--    if (aIID.equals(Ci.nsISupports))
--      return this;
--
--    throw Cr.NS_NOINTERFACE;
--  },
-+  QueryInterface: ChromeUtils.generateQI([]),
- 
-   handleEvent: function PO_handleEvent(aEvent) {
-     if (aEvent.type != "AppCommand")
-       return;
- 
-     aEvent.stopPropagation();
-     switch (aEvent.command) {
-       case "Back":
-diff --git a/suite/components/places/content/treeView.js b/suite/components/places/content/treeView.js
---- a/suite/components/places/content/treeView.js
-+++ b/suite/components/places/content/treeView.js
-@@ -53,17 +53,17 @@ PlacesTreeView.prototype = {
-   __xulStore: null,
-   get _xulStore() {
-     if (!this.__xulStore) {
-       this.__xulStore = Cc["@mozilla.org/xul/xulstore;1"].getService(Ci.nsIXULStore);
-     }
-     return this.__xulStore;
-   },
- 
--  QueryInterface: XPCOMUtils.generateQI(PTV_interfaces),
-+  QueryInterface: ChromeUtils.generateQI(PTV_interfaces),
- 
-   // Bug 761494:
-   // ----------
-   // Some addons use methods from nsINavHistoryResultObserver and
-   // nsINavHistoryResultTreeViewer, without QIing to these interfaces first.
-   // That's not a problem when the view is retrieved through the
-   // <tree>.view getter (which returns the wrappedJSObject of this object),
-   // it raises an issue when the view retrieved through the treeBoxObject.view
-diff --git a/suite/components/places/nsPlacesAutoComplete.js b/suite/components/places/nsPlacesAutoComplete.js
---- a/suite/components/places/nsPlacesAutoComplete.js
-+++ b/suite/components/places/nsPlacesAutoComplete.js
-@@ -265,17 +265,17 @@ AutoCompleteStatementCallbackWrapper.pro
-   {
-     return this._handle = this._db.executeAsync(aQueries, aQueries.length,
-                                                 this);
-   },
- 
-   //////////////////////////////////////////////////////////////////////////////
-   //// nsISupports
- 
--  QueryInterface: XPCOMUtils.generateQI([
-+  QueryInterface: ChromeUtils.generateQI([
-     Ci.mozIStorageStatementCallback,
-   ])
- };
- 
- ////////////////////////////////////////////////////////////////////////////////
- //// nsPlacesAutoComplete class
- //// @mozilla.org/autocomplete/search;1?name=history
- 
-@@ -1303,17 +1303,17 @@ nsPlacesAutoComplete.prototype = {
- 
-   //////////////////////////////////////////////////////////////////////////////
-   //// nsISupports
- 
-   classID: Components.ID("d0272978-beab-4adc-a3d4-04b76acfa4e7"),
- 
-   _xpcom_factory: XPCOMUtils.generateSingletonFactory(nsPlacesAutoComplete),
- 
--  QueryInterface: XPCOMUtils.generateQI([
-+  QueryInterface: ChromeUtils.generateQI([
-     Ci.nsIAutoCompleteSearch,
-     Ci.nsIAutoCompleteSimpleResultListener,
-     Ci.mozIPlacesAutoComplete,
-     Ci.mozIStorageStatementCallback,
-     Ci.nsIObserver,
-     Ci.nsISupportsWeakReference,
-   ])
- };
-diff --git a/suite/components/places/tests/autocomplete/head_autocomplete.js b/suite/components/places/tests/autocomplete/head_autocomplete.js
---- a/suite/components/places/tests/autocomplete/head_autocomplete.js
-+++ b/suite/components/places/tests/autocomplete/head_autocomplete.js
-@@ -33,17 +33,17 @@ AutoCompleteInput.prototype = {
-   disableAutoComplete: false,
-   completeDefaultIndex: false,
-   get popup() { return this; },
-   onSearchBegin: function() {},
-   onSearchComplete: function() {},
-   setSelectedIndex: function() {},
-   get searchCount() { return this.searches.length; },
-   getSearchAt: function(aIndex) { return this.searches[aIndex]; },
--  QueryInterface: XPCOMUtils.generateQI([
-+  QueryInterface: ChromeUtils.generateQI([
-     Ci.nsIAutoCompleteInput,
-     Ci.nsIAutoCompletePopup,
-   ])
- };
- 
- function toURI(aSpec) {
-   return uri(aSpec);
- }
-diff --git a/suite/components/places/tests/browser/browser_library_views_liveupdate.js b/suite/components/places/tests/browser/browser_library_views_liveupdate.js
---- a/suite/components/places/tests/browser/browser_library_views_liveupdate.js
-+++ b/suite/components/places/tests/browser/browser_library_views_liveupdate.js
-@@ -143,17 +143,17 @@ function finishTest() {
-   finish();
- }
- 
- /**
-  * The observer is where magic happens, for every change we do it will look for
-  * nodes positions in the affected views.
-  */
- var bookmarksObserver = {
--  QueryInterface: XPCOMUtils.generateQI([
-+  QueryInterface: ChromeUtils.generateQI([
-     Ci.nsINavBookmarkObserver
-   , Ci.nsIAnnotationObserver
-   ]),
- 
-   // nsIAnnotationObserver
-   onItemAnnotationSet: function() {},
-   onItemAnnotationRemoved: function() {},
-   onPageAnnotationSet: function() {},
-diff --git a/suite/components/places/tests/head_common.js b/suite/components/places/tests/head_common.js
---- a/suite/components/places/tests/head_common.js
-+++ b/suite/components/places/tests/head_common.js
-@@ -747,17 +747,17 @@ function NavBookmarkObserver() {}
- NavBookmarkObserver.prototype = {
-   onBeginUpdateBatch: function () {},
-   onEndUpdateBatch: function () {},
-   onItemAdded: function () {},
-   onItemRemoved: function () {},
-   onItemChanged: function () {},
-   onItemVisited: function () {},
-   onItemMoved: function () {},
--  QueryInterface: XPCOMUtils.generateQI([
-+  QueryInterface: ChromeUtils.generateQI([
-     Ci.nsINavBookmarkObserver,
-   ])
- };
- 
- /**
-  * Generic nsINavHistoryObserver that doesn't implement anything, but provides
-  * dummy methods to prevent errors about an object not having a certain method.
-  */
-@@ -767,17 +767,17 @@ NavHistoryObserver.prototype = {
-   onBeginUpdateBatch: function () {},
-   onEndUpdateBatch: function () {},
-   onVisit: function () {},
-   onTitleChanged: function () {},
-   onDeleteURI: function () {},
-   onClearHistory: function () {},
-   onPageChanged: function () {},
-   onDeleteVisits: function () {},
--  QueryInterface: XPCOMUtils.generateQI([
-+  QueryInterface: ChromeUtils.generateQI([
-     Ci.nsINavHistoryObserver,
-   ])
- };
- 
- /**
-  * Generic nsINavHistoryResultObserver that doesn't implement anything, but
-  * provides dummy methods to prevent errors about an object not having a certain
-  * method.
-@@ -796,17 +796,17 @@ NavHistoryResultObserver.prototype = {
-   nodeKeywordChanged: function () {},
-   nodeLastModifiedChanged: function () {},
-   nodeMoved: function () {},
-   nodeRemoved: function () {},
-   nodeTagsChanged: function () {},
-   nodeTitleChanged: function () {},
-   nodeURIChanged: function () {},
-   sortingChanged: function () {},
--  QueryInterface: XPCOMUtils.generateQI([
-+  QueryInterface: ChromeUtils.generateQI([
-     Ci.nsINavHistoryResultObserver,
-   ])
- };
- 
- /**
-  * Asynchronously check a url is visited.
-  *
-  * @param aURI The URI.
-diff --git a/suite/components/places/tests/unit/test_PUIU_makeTransaction.js b/suite/components/places/tests/unit/test_PUIU_makeTransaction.js
---- a/suite/components/places/tests/unit/test_PUIU_makeTransaction.js
-+++ b/suite/components/places/tests/unit/test_PUIU_makeTransaction.js
-@@ -9,17 +9,17 @@ function waitForBookmarkNotification(aNo
-       if (aMethodName == aNotification &&
-           (!aProperty || aProperty == aData.property)) {
-         PlacesUtils.bookmarks.removeObserver(this);
-         aCallback(aData);
-       }
-     },
- 
-     // nsINavBookmarkObserver
--    QueryInterface: XPCOMUtils.generateQI([Ci.nsINavBookmarkObserver]),
-+    QueryInterface: ChromeUtils.generateQI([Ci.nsINavBookmarkObserver]),
-     onBeginUpdateBatch: function onBeginUpdateBatch() {
-       return this.validate(arguments.callee.name, arguments);
-     },
-     onEndUpdateBatch: function onEndUpdateBatch() {
-       return this.validate(arguments.callee.name, arguments);
-     },
-     onItemAdded: function onItemAdded(aItemId, aParentId, aIndex, aItemType,
-                                       aURI, aTitle)
-diff --git a/suite/components/places/tests/unit/test_browserGlue_corrupt.js b/suite/components/places/tests/unit/test_browserGlue_corrupt.js
---- a/suite/components/places/tests/unit/test_browserGlue_corrupt.js
-+++ b/suite/components/places/tests/unit/test_browserGlue_corrupt.js
-@@ -26,17 +26,17 @@ var bookmarksObserver = {
-     if (anno.itemHasAnnotation(itemId, "Places/SmartBookmark"))
-       continue_test();
-   },
-   onItemAdded: function() {},
-   onItemRemoved: function(id, folder, index, itemType) {},
-   onItemChanged: function() {},
-   onItemVisited: function(id, visitID, time) {},
-   onItemMoved: function() {},
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsINavBookmarkObserver])
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsINavBookmarkObserver])
- };
- 
- function run_test() {
-   do_test_pending();
- 
-   // Create our bookmarks.html copying bookmarks.glue.html to the profile
-   // folder.  It should be ignored.
-   create_bookmarks_html("bookmarks.glue.html");
-diff --git a/suite/components/places/tests/unit/test_browserGlue_corrupt_nobackup.js b/suite/components/places/tests/unit/test_browserGlue_corrupt_nobackup.js
---- a/suite/components/places/tests/unit/test_browserGlue_corrupt_nobackup.js
-+++ b/suite/components/places/tests/unit/test_browserGlue_corrupt_nobackup.js
-@@ -26,17 +26,17 @@ var bookmarksObserver = {
-     if (anno.itemHasAnnotation(itemId, "Places/SmartBookmark"))
-       continue_test();
-   },
-   onItemAdded: function() {},
-   onItemRemoved: function(id, folder, index, itemType) {},
-   onItemChanged: function() {},
-   onItemVisited: function(id, visitID, time) {},
-   onItemMoved: function() {},
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsINavBookmarkObserver])
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsINavBookmarkObserver])
- };
- 
- function run_test() {
-   do_test_pending();
- 
-   // Create bookmarks.html in the profile.
-   create_bookmarks_html("bookmarks.glue.html");
-   // Remove JSON backup from profile.
-diff --git a/suite/components/places/tests/unit/test_browserGlue_corrupt_nobackup_default.js b/suite/components/places/tests/unit/test_browserGlue_corrupt_nobackup_default.js
---- a/suite/components/places/tests/unit/test_browserGlue_corrupt_nobackup_default.js
-+++ b/suite/components/places/tests/unit/test_browserGlue_corrupt_nobackup_default.js
-@@ -26,17 +26,17 @@ var bookmarksObserver = {
-     if (anno.itemHasAnnotation(itemId, "Places/SmartBookmark"))
-       continue_test();
-   },
-   onItemAdded: function() {},
-   onItemRemoved: function(id, folder, index, itemType) {},
-   onItemChanged: function() {},
-   onItemVisited: function(id, visitID, time) {},
-   onItemMoved: function() {},
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsINavBookmarkObserver])
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsINavBookmarkObserver])
- };
- 
- function run_test() {
-   do_test_pending();
- 
-   // Remove bookmarks.html from profile.
-   remove_bookmarks_html();
-   // Remove JSON backup from profile.
-diff --git a/suite/components/places/tests/unit/test_browserGlue_migrate.js b/suite/components/places/tests/unit/test_browserGlue_migrate.js
---- a/suite/components/places/tests/unit/test_browserGlue_migrate.js
-+++ b/suite/components/places/tests/unit/test_browserGlue_migrate.js
-@@ -27,17 +27,17 @@ var bookmarksObserver = {
-     if (anno.itemHasAnnotation(itemId, "Places/SmartBookmark"))
-       continue_test();
-   },
-   onItemAdded: function() {},
-   onItemRemoved: function(id, folder, index, itemType) {},
-   onItemChanged: function() {},
-   onItemVisited: function(id, visitID, time) {},
-   onItemMoved: function() {},
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsINavBookmarkObserver])
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsINavBookmarkObserver])
- };
- 
- const PREF_SMART_BOOKMARKS_VERSION = "browser.places.smartBookmarksVersion";
- 
- function run_test() {
-   do_test_pending();
- 
-   // Create our bookmarks.html copying bookmarks.glue.html to the profile
-diff --git a/suite/components/places/tests/unit/test_browserGlue_restore.js b/suite/components/places/tests/unit/test_browserGlue_restore.js
---- a/suite/components/places/tests/unit/test_browserGlue_restore.js
-+++ b/suite/components/places/tests/unit/test_browserGlue_restore.js
-@@ -26,17 +26,17 @@ var bookmarksObserver = {
-     if (anno.itemHasAnnotation(itemId, "Places/SmartBookmark"))
-       continue_test();
-   },
-   onItemAdded: function() {},
-   onItemRemoved: function(id, folder, index, itemType) {},
-   onItemChanged: function() {},
-   onItemVisited: function(id, visitID, time) {},
-   onItemMoved: function() {},
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsINavBookmarkObserver])
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsINavBookmarkObserver])
- };
- 
- function run_test() {
-   do_test_pending();
- 
-   // Create our bookmarks.html copying bookmarks.glue.html to the profile
-   // folder.  It will be ignored.
-   create_bookmarks_html("bookmarks.glue.html");
-diff --git a/suite/components/places/tests/unit/test_browserGlue_smartBookmarks.js b/suite/components/places/tests/unit/test_browserGlue_smartBookmarks.js
---- a/suite/components/places/tests/unit/test_browserGlue_smartBookmarks.js
-+++ b/suite/components/places/tests/unit/test_browserGlue_smartBookmarks.js
-@@ -21,17 +21,17 @@ const SMART_BOOKMARKS_ANNO = "Places/Sma
-  * exception generated when calling ensurePlacesDefaultQueriesInitialized().
-  */
- function rebuildSmartBookmarks() {
-   let consoleListener = {
-     observe: function(aMsg) {
-       print("Got console message: " + aMsg.message);
-     },
- 
--    QueryInterface: XPCOMUtils.generateQI([
-+    QueryInterface: ChromeUtils.generateQI([
-       Ci.nsIConsoleListener
-     ]),
-   };
-   Services.console.reset();
-   Services.console.registerListener(consoleListener);
-   Cc["@mozilla.org/suite/suiteglue;1"].getService(Ci.nsISuiteGlue)
-                                       .ensurePlacesDefaultQueriesInitialized();
-   Services.console.unregisterListener(consoleListener);
-diff --git a/suite/components/pref/content/pref-applications.js b/suite/components/pref/content/pref-applications.js
---- a/suite/components/pref/content/pref-applications.js
-+++ b/suite/components/pref/content/pref-applications.js
-@@ -402,17 +402,17 @@ FeedHandlerInfo.prototype = {
- 
-     // A minimal implementation of nsIMutableArray.  It only supports the two
-     // methods its callers invoke, namely appendElement, nsIArray::enumerate
-     // and nsIArray::indexOf.
-     this._possibleApplicationHandlers = {
-       _inner: [],
-       _removed: [],
- 
--      QueryInterface: XPCOMUtils.generateQI([Ci.nsIMutableArray, Ci.nsIArray]),
-+      QueryInterface: ChromeUtils.generateQI([Ci.nsIMutableArray, Ci.nsIArray]),
- 
-       get length() {
-         return this._inner.length;
-       },
- 
-       enumerate: function() {
-         return new ArrayEnumerator(this._inner);
-       },
-@@ -759,17 +759,17 @@ var gApplicationsPane = {
-     Services.prefs.removeObserver(PREF_AUDIO_FEED_SELECTED_WEB, this);
-     Services.prefs.removeObserver(PREF_AUDIO_FEED_SELECTED_ACTION, this);
-   },
- 
- 
-   //**************************************************************************//
-   // nsISupports
- 
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIObserver]),
- 
-   //**************************************************************************//
-   // nsIObserver
- 
-   observe(aSubject, aTopic, aData) {
-     // Rebuild the list when there are changes to preferences that influence
-     // whether or not to show certain entries in the list.
-     if (aTopic == "nsPref:changed" && !this._storingAction) {
-diff --git a/suite/components/pref/content/pref-cache.js b/suite/components/pref/content/pref-cache.js
---- a/suite/components/pref/content/pref-cache.js
-+++ b/suite/components/pref/content/pref-cache.js
-@@ -23,17 +23,17 @@ var CacheObserver = {
-     var sizeStrings = DownloadUtils.convertByteUnits(aConsumption);
-     var prefStrBundle = document.getElementById("bundle_prefutilities");
-     var sizeStr = prefStrBundle.getFormattedString("cacheSizeInfo",
-                                                     sizeStrings);
-     actualSizeLabel.textContent = sizeStr;
-   },
- 
-   /* nsISupports */
--  QueryInterface: XPCOMUtils.generateQI(
-+  QueryInterface: ChromeUtils.generateQI(
-     [Ci.nsICacheStorageConsumptionObserver,
-      Ci.nsISupportsWeakReference])
- };
- 
- // because the cache is in kilobytes, and the UI is in megabytes.
- function ReadCacheDiskCapacity()
- {
-   var pref = document.getElementById("browser.cache.disk.capacity");
-diff --git a/suite/components/search/content/search-panel.js b/suite/components/search/content/search-panel.js
---- a/suite/components/search/content/search-panel.js
-+++ b/suite/components/search/content/search-panel.js
-@@ -68,18 +68,18 @@ function doSearch() {
-   }
- 
-   var where = Services.prefs.getBoolPref("browser.search.openintab") ? "tab" : "current";
-   var submission = Services.search.currentEngine.getSubmission(textValue);
-   openUILinkIn(submission.uri.spec, where, null, submission.postData);
- }
- 
- var engineObserver = {
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver,
--                                         Ci.nsISupportsWeakReference]),
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIObserver,
-+                                          Ci.nsISupportsWeakReference]),
- 
-   observe: function(aEngine, aTopic, aVerb) {
-     if (aTopic == SEARCH_ENGINE_TOPIC) {
-       // Right now, always just rebuild the list after any modification.
-       LoadEngineList();
-     }
-   }
- }
-diff --git a/suite/components/sessionstore/nsSessionStartup.js b/suite/components/sessionstore/nsSessionStartup.js
---- a/suite/components/sessionstore/nsSessionStartup.js
-+++ b/suite/components/sessionstore/nsSessionStartup.js
-@@ -207,16 +207,16 @@ SessionStartup.prototype = {
-       return content.replace(/\r\n?/g, "\n");
-     }
-     catch (ex) { Cu.reportError(ex); }
- 
-     return null;
-   },
- 
-   /* ........ QueryInterface .............. */
--  QueryInterface : XPCOMUtils.generateQI([Ci.nsIObserver,
--                                          Ci.nsISupportsWeakReference,
--                                          Ci.nsISessionStartup]),
-+  QueryInterface : ChromeUtils.generateQI([Ci.nsIObserver,
-+                                           Ci.nsISupportsWeakReference,
-+                                           Ci.nsISessionStartup]),
-   classID: Components.ID("{4e6c1112-57b6-44ba-adf9-99fb573b0a30}")
- 
- };
- 
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([SessionStartup]);
-diff --git a/suite/components/sessionstore/nsSessionStore.js b/suite/components/sessionstore/nsSessionStore.js
---- a/suite/components/sessionstore/nsSessionStore.js
-+++ b/suite/components/sessionstore/nsSessionStore.js
-@@ -117,19 +117,19 @@ function SessionStoreService() {
-     // get crash recovery state from prefs and allow for proper reaction to state changes
-     this._prefBranch.addObserver("sessionstore.resume_from_crash", this, true);
-     return this._prefBranch.getBoolPref("sessionstore.resume_from_crash");
-   });
- }
- 
- SessionStoreService.prototype = {
-   classID: Components.ID("{d37ccdf1-496f-4135-9575-037180af010d}"),
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsISessionStore,
--                                         Ci.nsIObserver,
--                                         Ci.nsISupportsWeakReference]),
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsISessionStore,
-+                                          Ci.nsIObserver,
-+                                          Ci.nsISupportsWeakReference]),
- 
-   // xul:tab attributes to (re)store (extensions might want to hook in here);
-   // the favicon is always saved for the about:sessionrestore page
-   xulAttributes: {"image": true},
- 
-   // set default load state
-   _loadState: STATE_STOPPED,
- 
-@@ -4144,18 +4144,18 @@ var gRestoreTabsProgressListener = {
- // restored. We need to catch reloads that occur before the tab is restored
- // because otherwise, docShell will reload an old URI (usually about:blank).
- function SessionStoreSHistoryListener(ss, aTab) {
-   this.tab = aTab;
-   this.ss = ss;
- }
- 
- SessionStoreSHistoryListener.prototype = {
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsISHistoryListener,
--                                         Ci.nsISupportsWeakReference]),
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsISHistoryListener,
-+                                          Ci.nsISupportsWeakReference]),
-   browser: null,
-   ss: null,
-   tab: null,
-   OnHistoryNewEntry: function(aNewURI) { },
-   OnHistoryGotoIndex: function(aIndex, aGotoURI) { },
-   OnHistoryPurge: function(aNumEntries) { },
-   OnHistoryReload: function(aReloadURI, aReloadFlags) {
-     // On reload, we want to make sure that session history loads the right
-diff --git a/suite/components/shell/nsSetDefault.js b/suite/components/shell/nsSetDefault.js
---- a/suite/components/shell/nsSetDefault.js
-+++ b/suite/components/shell/nsSetDefault.js
-@@ -41,13 +41,13 @@ nsSetDefault.prototype = {
-   },
- 
-   helpInfo: "  -setDefaultBrowser Set this app as the default browser client.\n" +
-             "  -setDefaultMail    Set this app as the default mail client.\n" +
-             "  -setDefaultNews    Set this app as the default newsreader.\n" +
-             "  -setDefaultFeed    Set this app as the default feedreader.\n",
- 
-   classID: Components.ID("{a3d5b950-690a-491f-a881-2c2cdcd241cb}"),
--  QueryInterface: XPCOMUtils.generateQI([nsICommandLineHandler])
-+  QueryInterface: ChromeUtils.generateQI([nsICommandLineHandler])
- }
- 
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([nsSetDefault]);
- 
-diff --git a/suite/components/sidebar/nsSidebar.js b/suite/components/sidebar/nsSidebar.js
---- a/suite/components/sidebar/nsSidebar.js
-+++ b/suite/components/sidebar/nsSidebar.js
-@@ -294,17 +294,17 @@ function (aSearchURL)
- nsSidebar.prototype.classInfo = XPCOMUtils.generateCI({
-     classID: SIDEBAR_CID,
-     contractID: SIDEBAR_CONTRACTID,
-     classDescription: "Sidebar",
-     interfaces: [nsISidebar],
-     flags: nsIClassInfo.DOM_OBJECT});
- 
- nsSidebar.prototype.QueryInterface =
--    XPCOMUtils.generateQI([nsISidebar]);
-+    ChromeUtils.generateQI([Ci.nsISidebar]);
- 
- nsSidebar.prototype.classID = SIDEBAR_CID;
- 
- var NSGetFactory = XPCOMUtils.generateNSGetFactory([nsSidebar]);
- 
- var gDebugLog;
- 
- /* static functions */
-diff --git a/suite/components/sync/content/syncSetup.js b/suite/components/sync/content/syncSetup.js
---- a/suite/components/sync/content/syncSetup.js
-+++ b/suite/components/sync/content/syncSetup.js
-@@ -20,18 +20,18 @@ const SETUP_SUCCESS_PAGE            = 8;
- const RECAPTCHA_DOMAIN = "https://www.google.com";
- 
- const {Weave} = ChromeUtils.import("resource://services-sync/main.js");
- var {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
- const {PlacesUtils} = ChromeUtils.import("resource://gre/modules/PlacesUtils.jsm");
- const {PluralForm} = ChromeUtils.import("resource://gre/modules/PluralForm.jsm");
- 
- var gSyncSetup = {
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsIWebProgressListener,
--                                         Ci.nsISupportsWeakReference]),
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIWebProgressListener,
-+                                          Ci.nsISupportsWeakReference]),
- 
-   captchaBrowser: null,
-   wizard: null,
-   _disabledSites: [],
- 
-   status: {
-     password: false,
-     email: false,
-diff --git a/suite/components/sync/content/syncUI.js b/suite/components/sync/content/syncUI.js
---- a/suite/components/sync/content/syncUI.js
-+++ b/suite/components/sync/content/syncUI.js
-@@ -436,17 +436,17 @@ var gSyncUI = {
-         this.initNotifications();
-         break;
-       case "weave:ui:clear-error":
-         this.clearError();
-         break;
-     }
-   },
- 
--  QueryInterface: XPCOMUtils.generateQI([
-+  QueryInterface: ChromeUtils.generateQI([
-     Ci.nsIObserver,
-     Ci.nsISupportsWeakReference
-   ])
- };
- 
- XPCOMUtils.defineLazyGetter(gSyncUI, "_stringBundle", function() {
-   //XXXzpao these strings should probably be moved from /services to /browser... (bug 583381)
-   //        but for now just make it work
-diff --git a/suite/components/tests/browser/browser_markPageAsFollowedLink.js b/suite/components/tests/browser/browser_markPageAsFollowedLink.js
---- a/suite/components/tests/browser/browser_markPageAsFollowedLink.js
-+++ b/suite/components/tests/browser/browser_markPageAsFollowedLink.js
-@@ -25,17 +25,17 @@ var observer = {
-       maybeClickLink();
-     }
-     else if (url == RIGHT_URL ) {
-       is(getTransitionForUrl(url), PlacesUtils.history.TRANSITION_FRAMED_LINK,
-          "User activated visits should get a FRAMED_LINK transition.");
-       finish();
-     }
-   },
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver])
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIObserver])
- };
- Services.obs.addObserver(observer, "uri-visit-saved");
- 
- function test()
- {
-   waitForExplicitFinish();
-   gBrowser.selectedTab = gBrowser.addTab(PAGE_URL);
-   let frameCount = 0;
-diff --git a/suite/extensions/debugQA/content/debugQAEditorOverlay.js b/suite/extensions/debugQA/content/debugQAEditorOverlay.js
---- a/suite/extensions/debugQA/content/debugQAEditorOverlay.js
-+++ b/suite/extensions/debugQA/content/debugQAEditorOverlay.js
-@@ -153,24 +153,17 @@ sampleJSTransaction.prototype = {
- 
-   merge: function(aTxn)
-   {
-     // We don't do any merging!
- 
-     return false;
-   },
- 
--  QueryInterface: function(aIID, theResult)
--  {
--    if (aIID.equals(Ci.nsITransaction) ||
--        aIID.equals(Ci.nsISupports))
--      return this;
--
--    throw Cr.NS_ERROR_NO_INTERFACE;
--  },
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsITransaction]),
- 
-   insert_node_at_point: function(node, container, offset)
-   {
-     var childList = container.childNodes;
- 
-     if (childList.length == 0 || offset >= childList.length)
-       container.appendChild(node);
-     else
-diff --git a/suite/mailnews/components/compose/content/MsgComposeCommands.js b/suite/mailnews/components/compose/content/MsgComposeCommands.js
---- a/suite/mailnews/components/compose/content/MsgComposeCommands.js
-+++ b/suite/mailnews/components/compose/content/MsgComposeCommands.js
-@@ -448,25 +448,18 @@ var progressListener = {
-       } catch (ex) {}
-     },
- 
-     onSecurityChange: function(aWebProgress, aRequest, state)
-     {
-       // we can ignore this notification
-     },
- 
--    QueryInterface : function(iid)
--    {
--      if (iid.equals(Ci.nsIWebProgressListener) ||
--          iid.equals(Ci.nsISupportsWeakReference) ||
--          iid.equals(Ci.nsISupports))
--        return this;
--
--      throw Cr.NS_NOINTERFACE;
--    }
-+    QueryInterface: ChromeUtils.generateQI([Ci.nsIWebProgressListener,
-+                                            Ci.nsISupportsWeakReference]),
- };
- 
- var defaultController =
- {
-   supportsCommand: function(command)
-   {
-     switch (command)
-     {
-@@ -2920,25 +2913,18 @@ function OpenSelectedAttachment()
- }
- 
- function nsAttachmentOpener()
- {
- }
- 
- nsAttachmentOpener.prototype =
- {
--  QueryInterface: function(iid)
--  {
--    if (iid.equals(Ci.nsIURIContentListener) ||
--        iid.equals(Ci.nsIInterfaceRequestor) ||
--        iid.equals(Ci.nsISupports)) {
--      return this;
--    }
--    throw Cr.NS_NOINTERFACE;
--  },
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIURIContentListener,
-+                                          Ci.nsIInterfaceRequestor]),
- 
-   doContent: function(contentType, isContentPreferred, request, contentHandler)
-   {
-     return false;
-   },
- 
-   isPreferred: function(contentType, desiredContentType)
-   {
-diff --git a/suite/mailnews/components/compose/content/addressingWidgetOverlay.js b/suite/mailnews/components/compose/content/addressingWidgetOverlay.js
---- a/suite/mailnews/components/compose/content/addressingWidgetOverlay.js
-+++ b/suite/mailnews/components/compose/content/addressingWidgetOverlay.js
-@@ -1152,16 +1152,10 @@ AutomatedAutoCompleteHandler.prototype =
- 
-     // that will automatically set the focus on a new available row, and make sure it is visible
-     awAddRecipient(this.recipientType ? this.recipientType : "addr_to", addressToAdd);
- 
-     this.indexIntoNames++;
-     this.autoCompleteNextAddress();
-   },
- 
--  QueryInterface : function(iid)
--  {
--      if (iid.equals(Ci.nsIAutoCompleteListener) ||
--          iid.equals(Ci.nsISupports))
--        return this;
--      throw Cr.NS_NOINTERFACE;
--  }
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIAutoCompleteListener]),
- }
-diff --git a/suite/mailnews/content/SearchDialog.js b/suite/mailnews/content/SearchDialog.js
---- a/suite/mailnews/content/SearchDialog.js
-+++ b/suite/mailnews/content/SearchDialog.js
-@@ -498,24 +498,17 @@ nsMsgSearchCommandUpdater.prototype =
- 
-   updateNextMessageAfterDelete : function()
-   {
-     SetNextMessageAfterDelete();
-   },
- 
-   summarizeSelection: function() {return false},
- 
--  QueryInterface : function(iid)
--  {
--    if (iid.equals(Ci.nsIMsgDBViewCommandUpdater) ||
--        iid.equals(Ci.nsISupports))
--      return this;
--
--    throw Cr.NS_NOINTERFACE;
--  }
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIMsgDBViewCommandUpdater]),
- }
- 
- function setupDatasource() {
-     gDBView = Cc["@mozilla.org/messenger/msgdbview;1?type=search"]
-                 .createInstance(Ci.nsIMsgDBView);
-     var count = new Object;
-     var cmdupdator = new nsMsgSearchCommandUpdater();
- 
-diff --git a/suite/mailnews/content/browserRequest.js b/suite/mailnews/content/browserRequest.js
---- a/suite/mailnews/content/browserRequest.js
-+++ b/suite/mailnews/content/browserRequest.js
-@@ -7,23 +7,18 @@ const wpl = Ci.nsIWebProgressListener;
- 
- var reporterListener = {
-   _isBusy: false,
-   get securityButton() {
-     delete this.securityButton;
-     return this.securityButton = document.getElementById("security-button");
-   },
- 
--  QueryInterface: function(aIID) {
--    if (aIID.equals(Ci.nsIWebProgressListener)   ||
--        aIID.equals(Ci.nsISupportsWeakReference) ||
--        aIID.equals(Ci.nsISupports))
--      return this;
--    throw Cr.NS_NOINTERFACE;
--  },
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIWebProgressListener,
-+                                          Ci.nsISupportsWeakReference]),
- 
-   onStateChange: function(/*in nsIWebProgress*/ aWebProgress,
-                      /*in nsIRequest*/ aRequest,
-                      /*in unsigned long*/ aStateFlags,
-                      /*in nsresult*/ aStatus) {
-   },
- 
-   onProgressChange: function(/*in nsIWebProgress*/ aWebProgress,
-diff --git a/suite/mailnews/content/mailTasksOverlay.js b/suite/mailnews/content/mailTasksOverlay.js
---- a/suite/mailnews/content/mailTasksOverlay.js
-+++ b/suite/mailnews/content/mailTasksOverlay.js
-@@ -223,23 +223,18 @@ nsMsgBadCertHandler.prototype = {
-   },
- 
-   // nsIInterfaceRequestor
-   getInterface: function(iid) {
-     return this.QueryInterface(iid);
-   },
- 
-   // nsISupports
--  QueryInterface: function(iid) {
--    if (!iid.equals(Ci.nsIBadCertListener2) &&
--        !iid.equals(Ci.nsIInterfaceRequestor) &&
--        !iid.equals(Ci.nsISupports))
--      throw Cr.NS_ERROR_NO_INTERFACE;
--    return this;
--  }
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIBadCertListener2,
-+                                          Ci.nsIInterfaceRequestor]),
- };
- 
- function InformUserOfCertError(status, targetSite)
- {
-   var params = { exceptionAdded : false,
-                  sslStatus : status,
-                  prefetchCert : true,
-                  location : targetSite };
-diff --git a/suite/mailnews/content/mailWindow.js b/suite/mailnews/content/mailWindow.js
---- a/suite/mailnews/content/mailWindow.js
-+++ b/suite/mailnews/content/mailWindow.js
-@@ -371,25 +371,19 @@ nsMsgStatusFeedback.prototype =
-     },
- 
-   // Called before links are navigated to to allow us to retarget them if needed.
-   onBeforeLinkTraversal: function(aOriginalTarget, aLinkURI, aLinkNode, aIsAppTab)
-   {
-     return aOriginalTarget;
-   },
- 
--  QueryInterface : function(iid)
--    {
--      if (iid.equals(Ci.nsIMsgStatusFeedback) ||
--          iid.equals(Ci.nsIXULBrowserWindow) ||
--          iid.equals(Ci.nsISupportsWeakReference) ||
--          iid.equals(Ci.nsISupports))
--        return this;
--      throw Cr.NS_NOINTERFACE;
--    },
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIMsgStatusFeedback,
-+                                          Ci.nsIXULBrowserWindow,
-+                                          Ci.nsISupportsWeakReference]),
- 
-   // nsIMsgStatusFeedback implementation.
-   showStatusString : function(statusText)
-     {
-       this.ensureStatusFields();
-       if ( !statusText.length )
-         statusText = this.myDefaultStatus;
-       else
-@@ -495,23 +489,17 @@ nsMsgStatusFeedback.prototype =
- 
- 
- function nsMsgWindowCommands()
- {
- }
- 
- nsMsgWindowCommands.prototype =
- {
--  QueryInterface : function(iid)
--  {
--    if (iid.equals(Ci.nsIMsgWindowCommands) ||
--        iid.equals(Ci.nsISupports))
--      return this;
--    throw Cr.NS_NOINTERFACE;
--  },
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIMsgWindowCommands]),
- 
-   selectFolder: function(folderUri)
-   {
-     gFolderTreeView.selectFolder(MailUtils.getFolderForURI(folderUri));
-   },
- 
-   selectMessage: function(messageUri)
-   {
-diff --git a/suite/mailnews/content/mailWindowOverlay.js b/suite/mailnews/content/mailWindowOverlay.js
---- a/suite/mailnews/content/mailWindowOverlay.js
-+++ b/suite/mailnews/content/mailWindowOverlay.js
-@@ -1197,25 +1197,20 @@ BatchMessageMover.prototype =
-     if (aFolder.parent == this._dstFolderParent &&
-         aFolder.name == this._dstFolderName) {
-       this._dstFolderParent = null;
-       this._dstFolderName = null;
-       this.continueBatch();
-     }
-   },
- 
--  QueryInterface(aIID) {
--    if (aIID.equals(Ci.nsIUrlListener) ||
--        aIID.equals(Ci.nsIMsgCopyServiceListener) ||
--        aIID.equals(Ci.nsIMsgFolderListener) ||
--        aIID.equals(Ci.nsIMsgOperationListener) ||
--        aIID.equals(Ci.nsISupports))
--      return this;
--    throw Cr.NS_ERROR_NO_INTERFACE;
--  }
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIUrlListener,
-+                                          Ci.nsIMsgCopyServiceListener,
-+                                          Ci.nsIMsgFolderListener,
-+                                          Ci.nsIMsgOperationListener]),
- }
- 
- function MsgArchiveSelectedMessages(aEvent) {
-   let batchMover = new BatchMessageMover();
-   batchMover.archiveMessages(gFolderDisplay.selectedMessages);
- }
- 
- 
-diff --git a/suite/mailnews/content/messageWindow.js b/suite/mailnews/content/messageWindow.js
---- a/suite/mailnews/content/messageWindow.js
-+++ b/suite/mailnews/content/messageWindow.js
-@@ -153,24 +153,17 @@ nsMsgDBViewCommandUpdater.prototype =
- 
-   updateNextMessageAfterDelete : function()
-   {
-     SetNextMessageAfterDelete();
-   },
- 
-   summarizeSelection: function() {return false},
- 
--  QueryInterface : function(iid)
--  {
--    if (iid.equals(Ci.nsIMsgDBViewCommandUpdater) ||
--        iid.equals(Ci.nsISupports))
--      return this;
--
--    throw Cr.NS_NOINTERFACE;
--  }
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIMsgDBViewCommandUpdater]),
- }
- 
- function HandleDeleteOrMoveMsgCompleted(folder)
- {
-   if ((folder.URI == gCurrentFolderUri) && gCurrentMessageIsDeleted)
-   {
-     gDBView.onDeleteCompleted(true);
-     gCurrentMessageIsDeleted = false;
-diff --git a/suite/mailnews/content/msgHdrViewOverlay.js b/suite/mailnews/content/msgHdrViewOverlay.js
---- a/suite/mailnews/content/msgHdrViewOverlay.js
-+++ b/suite/mailnews/content/msgHdrViewOverlay.js
-@@ -316,17 +316,17 @@ function OnAddressBookDataChanged(aActio
-     }
-   });
- }
- 
- // The messageHeaderSink is the class that gets notified of a message's headers as we display the message
- // through our mime converter.
- 
- var messageHeaderSink = {
--    QueryInterface: XPCOMUtils.generateQI(
-+    QueryInterface: ChromeUtils.generateQI(
-       [Ci.nsIMsgHeaderSink]),
-     onStartHeaders: function()
-     {
-       this.mSaveHdr = null;
-       // clear out any pending collected address timers...
-       if (gCollectAddressTimer)
-       {
-         clearTimeout(gCollectAddressTimer);
-@@ -1883,17 +1883,17 @@ var attachmentAreaDNDObserver = {
- };
- 
- function nsFlavorDataProvider()
- {
- }
- 
- nsFlavorDataProvider.prototype =
- {
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsIFlavorDataProvider]),
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIFlavorDataProvider]),
- 
-   getFlavorData : function(aTransferable, aFlavor, aData, aDataLen)
-   {
-     // get the url for the attachment
-     if (aFlavor == "application/x-moz-file-promise")
-     {
-       var urlPrimitive = { };
-       var dataSize = { };
-diff --git a/suite/mailnews/content/threadPane.js b/suite/mailnews/content/threadPane.js
---- a/suite/mailnews/content/threadPane.js
-+++ b/suite/mailnews/content/threadPane.js
-@@ -96,24 +96,17 @@ nsMsgDBViewCommandUpdater.prototype =
- 
-   updateNextMessageAfterDelete : function()
-   {
-     SetNextMessageAfterDelete();
-   },
- 
-   summarizeSelection: function() {return false},
- 
--  QueryInterface : function(iid)
--   {
--     if (iid.equals(Ci.nsIMsgDBViewCommandUpdater) ||
--         iid.equals(Ci.nsISupports))
--       return this;
--
--     throw Cr.NS_NOINTERFACE;
--    }
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsIMsgDBViewCommandUpdater]),
- }
- 
- function HandleColumnClick(columnID)
- {
-   const columnMap = {dateCol: 'byDate',
-                      receivedCol: 'byReceived',
-                      senderCol: 'byAuthor',
-                      recipientCol: 'byRecipient',
-diff --git a/suite/modules/WindowsPreviewPerTab.jsm b/suite/modules/WindowsPreviewPerTab.jsm
---- a/suite/modules/WindowsPreviewPerTab.jsm
-+++ b/suite/modules/WindowsPreviewPerTab.jsm
-@@ -154,17 +154,17 @@ function PreviewController(win, tab) {
-   XPCOMUtils.defineLazyGetter(this, "canvasPreview", function () {
-     let canvas = PageThumbs.createCanvas();
-     canvas.mozOpaque = true;
-     return canvas;
-   });
- }
- 
- PreviewController.prototype = {
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsITaskbarPreviewController]),
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsITaskbarPreviewController]),
- 
-   _cachedWidth: 0,
-   _cachedHeight: 0,
- 
-   destroy: function () {
-     this.tab.removeEventListener("TabAttrModified", this);
- 
-     // Break cycles, otherwise we end up leaking the window with everything
-@@ -849,19 +849,19 @@ var AeroPeek = {
-           if (tab.getAttribute("image") == newValue) {
-             win.onLinkIconAvailable(tab.linkedBrowser, newValue);
-           }
-         }
-       }
-     }
-   },
- 
--  QueryInterface: XPCOMUtils.generateQI([Ci.nsISupportsWeakReference,
--                                         Ci.nsINavHistoryObserver,
--                                         Ci.nsIObserver]),
-+  QueryInterface: ChromeUtils.generateQI([Ci.nsISupportsWeakReference,
-+                                          Ci.nsINavHistoryObserver,
-+                                          Ci.nsIObserver]),
- };
- 
- XPCOMUtils.defineLazyGetter(AeroPeek, "cacheTimer", () =>
-   Cc["@mozilla.org/timer;1"].createInstance(Ci.nsITimer)
- );
- 
- XPCOMUtils.defineLazyServiceGetter(AeroPeek, "prefs",
-                                    "@mozilla.org/preferences-service;1",

+ 0 - 28
mzla/comm/TOP-1642188-remove-nsDOMIEvent-cc.patch

@@ -1,28 +0,0 @@
-# HG changeset patch
-# User Ian Neal <iann_cvs@blueyonder.co.uk>
-# Date 1590913490 -3600
-# Parent  c9d15a79a5e041adef13e0472b1f2a122ead72be
-Bug 1642188 - Port |Bug 1455052 part 12 - Remove JS uses of nsIDOMEvent| to SeaMonkey. r=frg
-
-diff --git a/suite/browser/nsTypeAheadFind.js b/suite/browser/nsTypeAheadFind.js
---- a/suite/browser/nsTypeAheadFind.js
-+++ b/suite/browser/nsTypeAheadFind.js
-@@ -127,17 +127,17 @@ typeAheadFind.prototype = {
-       return true;
- 
-     if (aEvent.type != "keypress") {
-       aEvent.stopPropagation();
-       return true;
-     }
- 
-     // Are we already in a find?
--    if (aEvent.eventPhase == Ci.nsIDOMEvent.CAPTURING_PHASE)
-+    if (aEvent.eventPhase == Event.CAPTURING_PHASE)
-       return this.processKey(aEvent);
- 
-     // Check whether we want to start a new find.
-     if (aEvent.defaultPrevented)
-       return true;
- 
-     // We don't want to start a find on a control character.
-     // We also don't want to start on a space, since that scrolls the page.

+ 0 - 171
mzla/comm/TOP-9999999-port1514936-suite-102a1.patch

@@ -1,171 +0,0 @@
-# HG changeset patch
-# User Bill Gianopoulos <wgianopoulos@gmail.com>
-# Date 1652731241 0
-# Parent  14083812bb3ebf664877a11a3de4364488856e5b
-Bug 9999999 - Port bug 1514936 to suite
-Bug 1514936, part 1 - Remove the outer argument to nsIFactory::createInstance.
-
-diff --git a/suite/browser/nsBrowserContentHandler.js b/suite/browser/nsBrowserContentHandler.js
---- a/suite/browser/nsBrowserContentHandler.js
-+++ b/suite/browser/nsBrowserContentHandler.js
-@@ -600,20 +600,17 @@ var nsBrowserContentHandler = {
-     handURIToExistingBrowser(request.URI,
-                              nsIBrowserDOMWindow.OPEN_DEFAULTWINDOW,
-                              "chrome,all,dialog=no",
-                              request.loadInfo.triggeringPrincipal);
-     request.cancel(Cr.NS_BINDING_ABORTED);
-   },
- 
-   /* nsIFactory */
--  createInstance: function createInstance(outer, iid) {
--    if (outer != null)
--      throw Cr.NS_ERROR_NO_AGGREGATION;
--
-+  createInstance: function createInstance(iid) {
-     return this.QueryInterface(iid);
-   },
- };
- 
- const BROWSER_CID = Components.ID("{c2343730-dc2c-11d3-98b3-001083010e9b}");
- 
- function NSGetFactory(cid) {
-   if (cid.number == BROWSER_CID)
-diff --git a/suite/chatzilla/js/lib/chatzilla-service.js b/suite/chatzilla/js/lib/chatzilla-service.js
---- a/suite/chatzilla/js/lib/chatzilla-service.js
-+++ b/suite/chatzilla/js/lib/chatzilla-service.js
-@@ -139,21 +139,18 @@ CommandLineService.prototype =
- 
-     helpInfo: "-chat [<ircurl>]  Start with an IRC chat client.\n",
- };
- 
- 
- /* factory for command line handler service (CommandLineService) */
- const CommandLineFactory =
- {
--    createInstance(outer, iid)
-+    createInstance(iid)
-     {
--        if (outer != null)
--            throw Cr.NS_ERROR_NO_AGGREGATION;
--
-         return new CommandLineService().QueryInterface(iid);
-     },
- };
- 
- 
- function ProcessHandler()
- {
- }
-@@ -201,21 +198,18 @@ ProcessHandler.prototype =
- 
-         spawnChatZilla(msg.data.uri);
-     },
- };
- 
- 
- const StartupFactory =
- {
--    createInstance(outer, iid)
-+    createInstance(iid)
-     {
--        if (outer)
--            throw Cr.NS_ERROR_NO_AGGREGATION;
--
-         if (!iid.equals(Ci.nsISupports))
-             throw Cr.NS_ERROR_NO_INTERFACE;
- 
-         // startup:
-         return new ProcessHandler();
-     },
- };
- 
-diff --git a/suite/chatzilla/js/lib/protocol-handlers.jsm b/suite/chatzilla/js/lib/protocol-handlers.jsm
---- a/suite/chatzilla/js/lib/protocol-handlers.jsm
-+++ b/suite/chatzilla/js/lib/protocol-handlers.jsm
-@@ -94,39 +94,33 @@ IRCProtocolHandler.prototype =
- 
-         return new BogusChannel(URI, this.isSecure);
-     },
- };
- 
- 
- this.IRCProtocolHandlerFactory =
- {
--    createInstance(outer, iid)
-+    createInstance(iid)
-     {
--        if (outer != null)
--            throw Cr.NS_ERROR_NO_AGGREGATION;
--
-         if (!iid.equals(Ci.nsIProtocolHandler) && !iid.equals(Ci.nsISupports))
-             throw Cr.NS_ERROR_INVALID_ARG;
- 
-         const protHandler = new IRCProtocolHandler(false);
-         protHandler.scheme = "irc";
-         protHandler.defaultPort = 6667;
-         return protHandler;
-     },
- };
- 
- 
- this.IRCSProtocolHandlerFactory =
- {
--    createInstance(outer, iid)
-+    createInstance(iid)
-     {
--        if (outer != null)
--            throw Cr.NS_ERROR_NO_AGGREGATION;
--
-         if (!iid.equals(Ci.nsIProtocolHandler) && !iid.equals(Ci.nsISupports))
-             throw Cr.NS_ERROR_INVALID_ARG;
- 
-         const protHandler = new IRCProtocolHandler(true);
-         protHandler.scheme = "ircs";
-         protHandler.defaultPort = 6697;
-         return protHandler;
-     },
-diff --git a/suite/components/feeds/WebContentConverter.js b/suite/components/feeds/WebContentConverter.js
---- a/suite/components/feeds/WebContentConverter.js
-+++ b/suite/components/feeds/WebContentConverter.js
-@@ -57,19 +57,17 @@ WebContentConverter.prototype = {
-   },
- 
-   QueryInterface: ChromeUtils.generateQI(
-     [Ci.nsIStreamConverter,
-      Ci.nsIStreamListener])
- };
- 
- var WebContentConverterFactory = {
--  createInstance: function createInstance(outer, iid) {
--    if (outer != null)
--      throw Cr.NS_ERROR_NO_AGGREGATION;
-+  createInstance: function createInstance(iid) {
-     return new WebContentConverter().QueryInterface(iid);
-   },
- 
-   QueryInterface: ChromeUtils.generateQI(
-     [Ci.nsIFactory])
- };
- 
- function ServiceInfo(contentType, uri, name) {
-@@ -814,19 +812,17 @@ WebContentConverterRegistrar.prototype =
-       this._init();
-       break;
-     }
-   },
- 
-   /**
-    * See nsIFactory
-    */
--  createInstance: function createInstance(outer, iid) {
--    if (outer != null)
--      throw Cr.NS_ERROR_NO_AGGREGATION;
-+  createInstance: function createInstance(iid) {
-     return this.QueryInterface(iid);
-   },
- 
-   classID: WCCR_CLASSID,
-   classInfo: XPCOMUtils.generateCI({
-       classID: WCCR_CLASSID,
-       contractID: WCCR_CONTRACTID,
-       interfaces: [Ci.nsIWebContentConverterService,

+ 0 - 94
mzla/comm/TOP-9999999-port1646560-suite-91a1.patch

@@ -1,94 +0,0 @@
-# HG changeset patch
-# User Bill Gianopoulos <wgianopoulos@gmail.com>
-# Date 1623804470 0
-# Parent  5baac9de16364064c2579f094bd64c65f13a7931
-Bug 9999999 - Port Bug 1646560 - Move allowJavascript and friends from DocShell to BrowsingContext and WindowContext.
-
-diff --git a/suite/base/content/nsContextMenu.js b/suite/base/content/nsContextMenu.js
---- a/suite/base/content/nsContextMenu.js
-+++ b/suite/base/content/nsContextMenu.js
-@@ -56,17 +56,17 @@ nsContextMenu.prototype = {
-     // Get contextual info.
-     this.setTarget(document.popupNode, document.popupRangeParent,
-                    document.popupRangeOffset);
- 
-     if (!this.shouldDisplay)
-       return;
- 
-     this.hasPageMenu = false;
--    if (!aIsShift && this.browser.docShell.allowJavascript &&
-+    if (!aIsShift && this.browser.browsingContext.allowJavascript &&
-         Services.prefs.getBoolPref("javascript.enabled"))
-       this.hasPageMenu = PageMenuParent.buildAndAddToPopup(this.target, aXulMenu);
- 
-     this.isTextSelected = this.isTextSelection();
-     this.isContentSelected = this.isContentSelection();
- 
-     // Initialize gContextMenuContentData.
-     if (aEvent)
-diff --git a/suite/components/helpviewer/content/help.js b/suite/components/helpviewer/content/help.js
---- a/suite/components/helpviewer/content/help.js
-+++ b/suite/components/helpviewer/content/help.js
-@@ -110,17 +110,17 @@ function init() {
-   // Cache panel references.
-   helpSearchPanel = document.getElementById("help-search-panel");
-   helpTocPanel = document.getElementById("help-toc-panel");
-   helpIndexPanel = document.getElementById("help-index-panel");
-   helpGlossaryPanel = document.getElementById("help-glossary-panel");
-   helpBrowser = document.getElementById("help-content");
- 
-   // Turn off unnecessary features for security
--  helpBrowser.docShell.allowJavascript = false;
-+  helpBrowser.browsingContext.allowJavascript = false;
-   helpBrowser.docShell.allowPlugins = false;
-   helpBrowser.docShell.allowSubframes = false;
-   helpBrowser.docShell.allowMetaRedirects = false;
- 
-   strBundle = document.getElementById("bundle_help");
-   emptySearchText = strBundle.getString("emptySearchText");
- 
-   // Get the content pack, base URL, and help topic
-diff --git a/suite/components/sessionstore/nsSessionStore.js b/suite/components/sessionstore/nsSessionStore.js
---- a/suite/components/sessionstore/nsSessionStore.js
-+++ b/suite/components/sessionstore/nsSessionStore.js
-@@ -65,17 +65,17 @@ const WINDOW_HIDEABLE_FEATURES = [
- docShell capabilities to (re)store
- Restored in restoreHistory()
- eg: browser.docShell["allow" + aCapability] = false;
- 
- XXX keep these in sync with all the attributes starting
-     with "allow" in /docshell/base/nsIDocShell.idl
- */
- const CAPABILITIES = [
--  "Subframes", "Plugins", "Javascript", "MetaRedirects", "Images",
-+  "Subframes", "Plugins", "MetaRedirects", "Images",
-   "DNSPrefetch", "Auth", "WindowControl"
- ];
- 
- // These are tab events that we listen to.
- const TAB_EVENTS = ["TabOpen", "TabClose", "TabSelect", "TabShow", "TabHide"];
- 
- var {XPCOMUtils} = ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
- var {NetUtil} = ChromeUtils.import("resource://gre/modules/NetUtil.jsm");
-diff --git a/suite/components/tests/browser/browser_493467.js b/suite/components/tests/browser/browser_493467.js
---- a/suite/components/tests/browser/browser_493467.js
-+++ b/suite/components/tests/browser/browser_493467.js
-@@ -18,17 +18,17 @@ function test() {
-   is(browserWindowsCount(), 1, "Only one browser window should be open initially");
- 
-   let tab = getBrowser().addTab();
-   tab.linkedBrowser.stop();
-   let tabState = JSON.parse(ss.getTabState(tab));
-   is(tabState.disallow || "", "", "Everything is allowed per default");
- 
-   // collect all permissions that can be set on a docShell (i.e. all
--  // attributes starting with "allow" such as "allowJavascript") and
-+  // attributes starting with "allow" such as "allowImages") and
-   // disallow them all, as SessionStore only remembers disallowed ones
-   let permissions = [];
-   let docShell = tab.linkedBrowser.docShell;
-   for (let attribute in docShell) {
-     if (/^allow([A-Z].*)/.test(attribute)) {
-       permissions.push(RegExp.$1);
-       docShell[attribute] = false;
-     }

+ 0 - 31
mzla/comm/TOP-9999999-port1769442-suite-102a1.patch

@@ -1,31 +0,0 @@
-# HG changeset patch
-# User Bill Gianopoulos <wgianopoulos@gmail.com>
-# Date 1652730873 0
-# Parent  1e52597082be9b384cfa1547ec461f1a1984ae7b
-Bug 9999999 - Port bug 1769442 to suite.
-Bug 1769442 - Remove nsIFactory::lockFactory, breaking compatibility with IClassFactory.
-
-diff --git a/suite/browser/nsBrowserContentHandler.js b/suite/browser/nsBrowserContentHandler.js
---- a/suite/browser/nsBrowserContentHandler.js
-+++ b/suite/browser/nsBrowserContentHandler.js
-@@ -606,20 +606,16 @@ var nsBrowserContentHandler = {
- 
-   /* nsIFactory */
-   createInstance: function createInstance(outer, iid) {
-     if (outer != null)
-       throw Cr.NS_ERROR_NO_AGGREGATION;
- 
-     return this.QueryInterface(iid);
-   },
--
--  lockFactory: function lockFactory(lock) {
--    /* no-op */
--  }
- };
- 
- const BROWSER_CID = Components.ID("{c2343730-dc2c-11d3-98b3-001083010e9b}");
- 
- function NSGetFactory(cid) {
-   if (cid.number == BROWSER_CID)
-     return nsBrowserContentHandler;
-   throw Cr.NS_ERROR_FACTORY_NOT_REGISTERED;

+ 0 - 58
mzla/comm/WIP-1650630-2-port-1603712-suite.patch

@@ -1,58 +0,0 @@
-# HG changeset patch
-# User Frank-Rainer Grahl <frgrahl@gmx.net>
-# Date 1593949764 -7200
-# Parent  5796e1ee890dbfe596df945ae2370580fc015596
-Bug 1650630 - Part 2: Remove usage of intl.charset.detector.ng.enabled from SeaMonkey. r=IanN
-
-diff --git a/suite/base/content/charsetOverlay.xhtml b/suite/base/content/charsetOverlay.xhtml
---- a/suite/base/content/charsetOverlay.xhtml
-+++ b/suite/base/content/charsetOverlay.xhtml
-@@ -1,22 +1,21 @@
- <?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
-    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
- 
- <!DOCTYPE overlay SYSTEM "chrome://global/locale/charsetMenu.dtd">
- <overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-   <script>
--    ChromeUtils.import("resource://gre/modules/CharsetMenu.jsm");
-+    var {CharsetMenu} =
-+      ChromeUtils.import("resource://gre/modules/CharsetMenu.jsm");
- 
--    function UpdateCharsetMenu(aCharset, aNode)
--    {
--      var bundle = document.getElementById("charsetBundle");
--      CharsetMenu.update(aNode, bundle.getString(aCharset.toLowerCase()));
-+    function UpdateCharsetMenu(aCharset, aNode) {
-+      CharsetMenu.update(aNode, aCharset);
-     }
-   </script>
- 
-   <menu id="charsetMenu"
-         label="&charsetMenu2.label;"
-         accesskey="&charsetMenu2.accesskey;">
-     <menupopup id="charsetPopup"
-                onpopupshowing="CharsetMenu.build(this, true, this.getAttribute('detectors') != 'false');"/>
-diff --git a/suite/mailnews/components/prefs/content/pref-character_encoding.js b/suite/mailnews/components/prefs/content/pref-character_encoding.js
---- a/suite/mailnews/components/prefs/content/pref-character_encoding.js
-+++ b/suite/mailnews/components/prefs/content/pref-character_encoding.js
-@@ -18,16 +18,18 @@ function PrefChanged(aPref)
-   if (updatingPref)
-     return;
- 
-   var id = aPref.id.substr(9, 4) + "DefaultCharsetList";
-   var menulist = document.getElementById(id);
-   if (!aPref.hasUserValue)
-     menulist.selectedIndex = 0;
-   else {
-+    // FIX ME
-+    // charsetBundle does no longer exists as of bug 1650630
-     var bundle = document.getElementById("charsetBundle");
-     menulist.value = bundle.getString(aPref.value.toLowerCase());
-   }
- }
- 
- function UpdatePref(aMenulist)
- {
-   updatingPref = true;

+ 0 - 30
mzla/comm/WIP-9999999-port1712633-suite-90a1.patch

@@ -1,30 +0,0 @@
-# HG changeset patch
-# User Bill Gianopoulos <wgianopoulos@gmail.com>
-# Date 1622108993 14400
-#      Thu May 27 05:49:53 2021 -0400
-# Parent  ec78271dd5f988d718f796f329ad1f8f5efced67
-Bug 9999999 - Set MOZ_REQUIRE_SIGNING to not defined. r=frg
-Port Bug 1712633 "Set MOZ_REQUIRE_SIGNING appropriately by default".
-
-diff --git a/suite/config/mozconfigs/common b/suite/config/mozconfigs/common
---- a/suite/config/mozconfigs/common
-+++ b/suite/config/mozconfigs/common
-@@ -2,17 +2,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/.
- 
- # This file is included by all suite mozconfigs
- 
- # Disable checking that add-ons are signed by the trusted root
- MOZ_ADDON_SIGNING=0
- # Disable enforcing that add-ons are signed by the trusted root
--MOZ_REQUIRE_SIGNING=0
-+MOZ_REQUIRE_SIGNING=
- 
- mk_add_options "export MOZ_AUTOMATION_UPLOAD_SYMBOLS=${MOZ_AUTOMATION_UPLOAD_SYMBOLS}"
- mk_add_options "export MOZ_SCM_LEVEL=3"
- # Post bug 1422735, we now send symbols to Tecken.
- # Post bug 1422735, we now send symbols to Tecken.
- # See bug 1422737.  Despite it saying SOCORRO, it's actually using
- # the new Tecken symbol token.
- 

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

@@ -1,477 +0,0 @@
-# HG changeset patch
-# User Matt A. Tobin <email@mattatobin.com>
-# Date 1659988365 0
-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

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

@@ -1,332 +0,0 @@
-# HG changeset patch
-# User Matt A. Tobin <email@mattatobin.com>
-# Date 1659988365 0
-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

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

@@ -1,44 +0,0 @@
-# HG changeset patch
-# User Matt A. Tobin <email@mattatobin.com>
-# Date 1659988365 0
-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)

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

@@ -1,670 +0,0 @@
-# HG changeset patch
-# User Matt A. Tobin <email@mattatobin.com>
-# Date 1659988365 0
-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,28 +389,31 @@ var nsBrowserContentHandler = {
-                                  nsIBrowserDOMWindow.OPEN_NEWTAB,
-                                  features,
-                                  Services.scriptSecurityManager.getSystemPrincipal());
-         cmdLine.preventDefault = true;
-       }
-     } catch (e) {
-     }
- 
-+    /* XXXTobin: This code is currently relocated into the devtools-loader clh
-+       until this component is converted to an ESModule.
-     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;
-         }
-       }
-     } catch (e) {
-     }
-+    */
- 
-     try {
-       var fileParam = cmdLine.handleFlagWithParam("file", false);
-       if (fileParam) {
-         fileParam = resolveURIInternal(cmdLine, fileParam);
-         handURIToExistingBrowser(fileParam,
-                                  nsIBrowserDOMWindow.OPEN_DEFAULTWINDOW,
-                                  features,
-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",

+ 0 - 2624
mzla/comm/contrib/diagnostic-buoy-component.patch

@@ -1,2624 +0,0 @@
-# HG changeset patch
-# User Matt A. Tobin <email@mattatobin.com>
-# Date 1659988365 0
-No Bug - Create an isolated dianostic component for the suite.
-
-diff --git a/suite/buoy/ATTN-CC-SUITE-PATCHERS.txt b/suite/buoy/ATTN-CC-SUITE-PATCHERS.txt
-new file mode 100644
---- /dev/null
-+++ b/suite/buoy/ATTN-CC-SUITE-PATCHERS.txt
-@@ -0,0 +1,3 @@
-+Please exclude this component from any scripted or manual upgrades to the rest
-+of the suite (unless you are specifically updating this component).
-+It's handling is a special case and should be done seperately.
-\ No newline at end of file
-diff --git a/suite/buoy/ATTN-L10N-TRANSLATORS.txt b/suite/buoy/ATTN-L10N-TRANSLATORS.txt
-new file mode 100644
---- /dev/null
-+++ b/suite/buoy/ATTN-L10N-TRANSLATORS.txt
-@@ -0,0 +1,3 @@
-+This component can be ignored and does not need to be translated. Its only
-+purpose is to faciliate SeaMonkey Reconstruction as well as specific
-+testing cases.
-\ No newline at end of file
-diff --git a/suite/buoy/ZZ-buoy-prefs.js b/suite/buoy/ZZ-buoy-prefs.js
-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("prompts.contentPromptSubDialog", false);
-diff --git a/suite/buoy/content/buoy.css b/suite/buoy/content/buoy.css
-new file mode 100644
---- /dev/null
-+++ b/suite/buoy/content/buoy.css
-@@ -0,0 +1,9 @@
-+/* -*- 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/. */
-+
-+html, body {
-+  height: 100%;
-+}
-+
-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,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/. */
-+
-+// e10s
-+var { EzE10SUtils } = ChromeUtils.importESModule(
-+  "resource:///modules/EzE10SUtils.sys.mjs"
-+);
-+
-+// Devtools
-+ChromeUtils.defineESModuleGetters(this, {
-+  BrowserToolboxLauncher: "resource://devtools/client/framework/browser-toolbox/Launcher.sys.mjs",
-+});
-+
-+Object.defineProperty(this, "BrowserConsoleManager", {
-+  get() {
-+    let { loader } = ChromeUtils.importESModule("resource://devtools/shared/loader/Loader.sys.mjs");
-+    return loader.require("devtools/client/webconsole/browser-console-manager").BrowserConsoleManager;
-+  },
-+  configurable: true,
-+  enumerable: true,
-+});
-+
-+// Main functions
-+var gBuoy = {
-+  homepage: "about:version",
-+  toContent: function(aURL) {
-+    var browser = document.getElementById("main-browser");
-+    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);
-+  },
-+  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) {
-+  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,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
-+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-+
-+<!--  Mozilla DocType Reference:
-+      xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-+      xmlns:xbl="http://www.mozilla.org/xbl"
-+      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-+      xmlns:html="http://www.w3.org/1999/xhtml"
-+      xmlns:svg="http://www.w3.org/2000/svg"
-+      xmlns:em="http://www.mozilla.org/2004/em-rdf#"
-+-->
-+
-+<!DOCTYPE html>
-+
-+<html id="main-window"
-+      xmlns="http://www.w3.org/1999/xhtml"
-+      xmlns:html="http://www.w3.org/1999/xhtml"
-+      xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-+      windowtype="buoy:main"
-+      screenX="10"
-+      screenY="10"
-+      width="640px"
-+      height="480px"
-+      scrolling="false"
-+      persist="screenX screenY width height sizemode">
-+  <head>
-+    <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", gBuoy.startup);
-+    </script>
-+  </head>
-+  <body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
-+
-+    <commandset id="mainCommandSet">
-+      <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="main-toolbox" style="border-bottom: 1px solid ThreeDShadow;">
-+        <menubar id="main-menubar">
-+          <menu id="file-menu" label="File">
-+            <menupopup id="file-popup">
-+              <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"
-+               type="content"
-+               primary="true"
-+               maychangeremoteness="true"
-+               nodefaultsrc="true" />
-+    </vbox>
-+  </body>
-+</html>
-+
-diff --git a/suite/buoy/jar.mn b/suite/buoy/jar.mn
-new file mode 100644
---- /dev/null
-+++ b/suite/buoy/jar.mn
-@@ -0,0 +1,16 @@
-+# 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/.
-+
-+#filter substitution
-+
-+buoy.jar:
-+% content buoy %content/buoy/ contentaccessible=yes
-+  content/buoy/buoy.css            (content/buoy.css)
-+  content/buoy/buoy.js             (content/buoy.js)
-+  content/buoy/buoy.xhtml          (content/buoy.xhtml)
-+
-+[localization] @AB_CD@.jar:
-+  browser                          (moz-l10n/browser/**/*.ftl)
-+  buoy                             (locale/**/*.ftl)
-+
-diff --git a/suite/buoy/modules/BrowserWindowTracker.sys.mjs b/suite/buoy/modules/BrowserWindowTracker.sys.mjs
-new file mode 100644
---- /dev/null
-+++ b/suite/buoy/modules/BrowserWindowTracker.sys.mjs
-@@ -0,0 +1,6 @@
-+/* 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 deliberately not implemented. It only exists to keep
-+// the automated tests happy. See bug 1782621.
-diff --git a/suite/buoy/modules/CustomizableUI.sys.mjs b/suite/buoy/modules/CustomizableUI.sys.mjs
-new file mode 100644
---- /dev/null
-+++ b/suite/buoy/modules/CustomizableUI.sys.mjs
-@@ -0,0 +1,360 @@
-+/* 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 file is a copy of a file with the same name in Firefox. Only the
-+// pieces we're using, and a few pieces the devtools rely on such as the
-+// constants, remain.
-+
-+const lazy = {};
-+
-+ChromeUtils.defineESModuleGetters(lazy, {
-+  PanelMultiView: "resource:///modules/PanelMultiView.sys.mjs",
-+});
-+
-+/**
-+ * gPanelsForWindow is a list of known panels in a window which we may need to close
-+ * should command events fire which target them.
-+ */
-+var gPanelsForWindow = new WeakMap();
-+
-+var CustomizableUIInternal = {
-+  addPanelCloseListeners(aPanel) {
-+    Services.els.addSystemEventListener(aPanel, "click", this, false);
-+    Services.els.addSystemEventListener(aPanel, "keypress", this, false);
-+    const win = aPanel.ownerGlobal;
-+    if (!gPanelsForWindow.has(win)) {
-+      gPanelsForWindow.set(win, new Set());
-+    }
-+    gPanelsForWindow.get(win).add(this._getPanelForNode(aPanel));
-+  },
-+
-+  removePanelCloseListeners(aPanel) {
-+    Services.els.removeSystemEventListener(aPanel, "click", this, false);
-+    Services.els.removeSystemEventListener(aPanel, "keypress", this, false);
-+    const win = aPanel.ownerGlobal;
-+    const panels = gPanelsForWindow.get(win);
-+    if (panels) {
-+      panels.delete(this._getPanelForNode(aPanel));
-+    }
-+  },
-+
-+  handleEvent(aEvent) {
-+    switch (aEvent.type) {
-+      case "click":
-+      case "keypress":
-+        this.maybeAutoHidePanel(aEvent);
-+        break;
-+    }
-+  },
-+
-+  _getPanelForNode(aNode) {
-+    return aNode.closest("panel");
-+  },
-+
-+  /*
-+   * If people put things in the panel which need more than single-click interaction,
-+   * we don't want to close it. Right now we check for text inputs and menu buttons.
-+   * We also check for being outside of any toolbaritem/toolbarbutton, ie on a blank
-+   * part of the menu.
-+   */
-+  _isOnInteractiveElement(aEvent) {
-+    function getMenuPopupForDescendant(aNode) {
-+      let lastPopup = null;
-+      while (
-+        aNode &&
-+        aNode.parentNode &&
-+        aNode.parentNode.localName.startsWith("menu")
-+      ) {
-+        lastPopup = aNode.localName == "menupopup" ? aNode : lastPopup;
-+        aNode = aNode.parentNode;
-+      }
-+      return lastPopup;
-+    }
-+
-+    let target = aEvent.target;
-+    const panel = this._getPanelForNode(aEvent.currentTarget);
-+    // This can happen in e.g. customize mode. If there's no panel,
-+    // there's clearly nothing for us to close; pretend we're interactive.
-+    if (!panel) {
-+      return true;
-+    }
-+    // We keep track of:
-+    // whether we're in an input container (text field)
-+    let inInput = false;
-+    // whether we're in a popup/context menu
-+    let inMenu = false;
-+    // whether we're in a toolbarbutton/toolbaritem
-+    let inItem = false;
-+    // whether the current menuitem has a valid closemenu attribute
-+    let menuitemCloseMenu = "auto";
-+
-+    // While keeping track of that, we go from the original target back up,
-+    // to the panel if we have to. We bail as soon as we find an input,
-+    // a toolbarbutton/item, or the panel:
-+    while (target) {
-+      // Skip out of iframes etc:
-+      if (target.nodeType == target.DOCUMENT_NODE) {
-+        if (!target.defaultView) {
-+          // Err, we're done.
-+          break;
-+        }
-+        // Find containing browser or iframe element in the parent doc.
-+        target = target.defaultView.docShell.chromeEventHandler;
-+        if (!target) {
-+          break;
-+        }
-+      }
-+      const tagName = target.localName;
-+      inInput = tagName == "input";
-+      inItem = tagName == "toolbaritem" || tagName == "toolbarbutton";
-+      const isMenuItem = tagName == "menuitem";
-+      inMenu = inMenu || isMenuItem;
-+
-+      if (isMenuItem && target.hasAttribute("closemenu")) {
-+        const closemenuVal = target.getAttribute("closemenu");
-+        menuitemCloseMenu =
-+          closemenuVal == "single" || closemenuVal == "none"
-+            ? closemenuVal
-+            : "auto";
-+      }
-+
-+      // Keep the menu open and break out of the loop if the click happened on
-+      // the ShadowRoot or a disabled menu item.
-+      if (
-+        target.nodeType == target.DOCUMENT_FRAGMENT_NODE ||
-+        target.getAttribute("disabled") == "true"
-+      ) {
-+        return true;
-+      }
-+
-+      // This isn't in the loop condition because we want to break before
-+      // changing |target| if any of these conditions are true
-+      if (inInput || inItem || target == panel) {
-+        break;
-+      }
-+      // We need specific code for popups: the item on which they were invoked
-+      // isn't necessarily in their parentNode chain:
-+      if (isMenuItem) {
-+        const topmostMenuPopup = getMenuPopupForDescendant(target);
-+        target =
-+          (topmostMenuPopup && topmostMenuPopup.triggerNode) ||
-+          target.parentNode;
-+      } else {
-+        target = target.parentNode;
-+      }
-+    }
-+
-+    // If the user clicked a menu item...
-+    if (inMenu) {
-+      // We care if we're in an input also,
-+      // or if the user specified closemenu!="auto":
-+      if (inInput || menuitemCloseMenu != "auto") {
-+        return true;
-+      }
-+      // Otherwise, we're probably fine to close the panel
-+      return false;
-+    }
-+    // If we're not in a menu, and we *are* in a type="menu" toolbarbutton,
-+    // we'll now interact with the menu
-+    if (inItem && target.getAttribute("type") == "menu") {
-+      return true;
-+    }
-+    return inInput || !inItem;
-+  },
-+
-+  hidePanelForNode(aNode) {
-+    const panel = this._getPanelForNode(aNode);
-+    if (panel) {
-+      lazy.PanelMultiView.hidePopup(panel);
-+    }
-+  },
-+
-+  maybeAutoHidePanel(aEvent) {
-+    const eventType = aEvent.type;
-+    if (eventType == "keypress" && aEvent.keyCode != aEvent.DOM_VK_RETURN) {
-+      return;
-+    }
-+
-+    if (eventType == "click" && aEvent.button != 0) {
-+      return;
-+    }
-+
-+    // We don't check preventDefault - it makes sense that this was prevented,
-+    // but we probably still want to close the panel. If consumers don't want
-+    // this to happen, they should specify the closemenu attribute.
-+    if (eventType != "command" && this._isOnInteractiveElement(aEvent)) {
-+      return;
-+    }
-+
-+    // We can't use event.target because we might have passed an anonymous
-+    // content boundary as well, and so target points to the outer element in
-+    // that case. Unfortunately, this means we get anonymous child nodes instead
-+    // of the real ones, so looking for the 'stoooop, don't close me' attributes
-+    // is more involved.
-+    let target = aEvent.originalTarget;
-+    while (target.parentNode && target.localName != "panel") {
-+      if (
-+        target.getAttribute("closemenu") == "none" ||
-+        target.getAttribute("widget-type") == "view" ||
-+        target.getAttribute("widget-type") == "button-and-view"
-+      ) {
-+        return;
-+      }
-+      target = target.parentNode;
-+    }
-+
-+    // If we get here, we can actually hide the popup:
-+    this.hidePanelForNode(aEvent.target);
-+  },
-+};
-+Object.freeze(CustomizableUIInternal);
-+
-+export var CustomizableUI = {
-+  /**
-+   * Constant reference to the ID of the navigation toolbar.
-+   */
-+  AREA_NAVBAR: "nav-bar",
-+  /**
-+   * Constant reference to the ID of the menubar's toolbar.
-+   */
-+  AREA_MENUBAR: "toolbar-menubar",
-+  /**
-+   * Constant reference to the ID of the tabstrip toolbar.
-+   */
-+  AREA_TABSTRIP: "TabsToolbar",
-+  /**
-+   * Constant reference to the ID of the bookmarks toolbar.
-+   */
-+  AREA_BOOKMARKS: "PersonalToolbar",
-+  /**
-+   * Constant reference to the ID of the non-dymanic (fixed) list in the overflow panel.
-+   */
-+  AREA_FIXED_OVERFLOW_PANEL: "widget-overflow-fixed-list",
-+
-+  /**
-+   * Constant indicating the area is a menu panel.
-+   */
-+  TYPE_MENU_PANEL: "menu-panel",
-+  /**
-+   * Constant indicating the area is a toolbar.
-+   */
-+  TYPE_TOOLBAR: "toolbar",
-+
-+  /**
-+   * Constant indicating a XUL-type provider.
-+   */
-+  PROVIDER_XUL: "xul",
-+  /**
-+   * Constant indicating an API-type provider.
-+   */
-+  PROVIDER_API: "api",
-+  /**
-+   * Constant indicating dynamic (special) widgets: spring, spacer, and separator.
-+   */
-+  PROVIDER_SPECIAL: "special",
-+
-+  /**
-+   * Constant indicating the widget is built-in
-+   */
-+  SOURCE_BUILTIN: "builtin",
-+  /**
-+   * Constant indicating the widget is externally provided
-+   * (e.g. by add-ons or other items not part of the builtin widget set).
-+   */
-+  SOURCE_EXTERNAL: "external",
-+
-+  /**
-+   * Constant indicating the reason the event was fired was a window closing
-+   */
-+  REASON_WINDOW_CLOSED: "window-closed",
-+  /**
-+   * Constant indicating the reason the event was fired was an area being
-+   * unregistered separately from window closing mechanics.
-+   */
-+  REASON_AREA_UNREGISTERED: "area-unregistered",
-+
-+  /**
-+   * Add a widget to an area.
-+   * If the area to which you try to add is not known to CustomizableUI,
-+   * this will throw.
-+   * If the area to which you try to add is the same as the area in which
-+   * the widget is currently placed, this will do the same as
-+   * moveWidgetWithinArea.
-+   * If the widget cannot be removed from its original location, this will
-+   * no-op.
-+   *
-+   * This will fire an onWidgetAdded notification,
-+   * and an onWidgetBeforeDOMChange and onWidgetAfterDOMChange notification
-+   * for each window CustomizableUI knows about.
-+   *
-+   * @param aWidgetId the ID of the widget to add
-+   * @param aArea     the ID of the area to add the widget to
-+   * @param aPosition the position at which to add the widget. If you do not
-+   *                  pass a position, the widget will be added to the end
-+   *                  of the area.
-+   */
-+  addWidgetToArea(aWidgetId, aArea, aPosition) {},
-+  /**
-+   * Remove a widget from its area. If the widget cannot be removed from its
-+   * area, or is not in any area, this will no-op. Otherwise, this will fire an
-+   * onWidgetRemoved notification, and an onWidgetBeforeDOMChange and
-+   * onWidgetAfterDOMChange notification for each window CustomizableUI knows
-+   * about.
-+   *
-+   * @param aWidgetId the ID of the widget to remove
-+   */
-+  removeWidgetFromArea(aWidgetId) {},
-+  /**
-+   * Get the placement of a widget. This is by far the best way to obtain
-+   * information about what the state of your widget is. The internals of
-+   * this call are cheap (no DOM necessary) and you will know where the user
-+   * has put your widget.
-+   *
-+   * @param aWidgetId the ID of the widget whose placement you want to know
-+   * @returns
-+   *   {
-+   *     area: "somearea", // The ID of the area where the widget is placed
-+   *     position: 42 // the index in the placements array corresponding to
-+   *                  // your widget.
-+   *   }
-+   *
-+   *   OR
-+   *
-+   *   null // if the widget is not placed anywhere (ie in the palette)
-+   */
-+  getPlacementOfWidget(aWidgetId, aOnlyRegistered = true, aDeadAreas = false) {
-+    return null;
-+  },
-+  /**
-+   * Add listeners to a panel that will close it. For use from the menu panel
-+   * and overflowable toolbar implementations, unlikely to be useful for
-+   * consumers.
-+   *
-+   * @param aPanel the panel to which listeners should be attached.
-+   */
-+  addPanelCloseListeners(aPanel) {
-+    CustomizableUIInternal.addPanelCloseListeners(aPanel);
-+  },
-+  /**
-+   * Remove close listeners that have been added to a panel with
-+   * addPanelCloseListeners. For use from the menu panel and overflowable
-+   * toolbar implementations, unlikely to be useful for consumers.
-+   *
-+   * @param aPanel the panel from which listeners should be removed.
-+   */
-+  removePanelCloseListeners(aPanel) {
-+    CustomizableUIInternal.removePanelCloseListeners(aPanel);
-+  },
-+  /**
-+   * Notify toolbox(es) of a particular event. If you don't pass aWindow,
-+   * all toolboxes will be notified. For use from Customize Mode only,
-+   * do not use otherwise.
-+   *
-+   * @param aEvent the name of the event to send.
-+   * @param aDetails optional, the details of the event.
-+   * @param aWindow optional, the window in which to send the event.
-+   */
-+  dispatchToolboxEvent(aEvent, aDetails = {}, aWindow = null) {},
-+};
-+Object.freeze(CustomizableUI);
-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.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/. */
-+
-+import { E10SUtils } from "resource://gre/modules/E10SUtils.sys.mjs";
-+
-+import { ExtensionParent } from "resource://gre/modules/ExtensionParent.sys.mjs";
-+
-+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
-+   * it load in a remote browser even if you don't want it to.
-+   *
-+   * @param {nsIBrowser} browser
-+   */
-+  loadAboutBlank(browser) {
-+    if (!browser.currentURI || browser.currentURI.spec == "about:blank") {
-+      return;
-+    }
-+    browser.loadURI(Services.io.newURI("about:blank"), {
-+      triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal(),
-+      remoteTypeOverride: browser.remoteType,
-+    });
-+  },
-+
-+  /**
-+   * Loads `uri` in `browser`, changing to a remote/local browser if necessary.
-+   *
-+   * @see `nsIWebNavigation.loadURI`
-+   *
-+   * @param {nsIBrowser} browser
-+   * @param {string} uri
-+   * @param {object} params
-+   */
-+  loadURI(browser, uri, params = {}) {
-+    const multiProcess = browser.ownerGlobal.docShell.QueryInterface(
-+      Ci.nsILoadContext
-+    ).useRemoteTabs;
-+    const remoteSubframes = browser.ownerGlobal.docShell.QueryInterface(
-+      Ci.nsILoadContext
-+    ).useRemoteSubframes;
-+
-+    const isRemote = browser.getAttribute("remote") == "true";
-+    const remoteType = E10SUtils.getRemoteTypeForURI(
-+      uri,
-+      multiProcess,
-+      remoteSubframes
-+    );
-+    const shouldBeRemote = remoteType !== E10SUtils.NOT_REMOTE;
-+
-+    if (shouldBeRemote != isRemote) {
-+      this.changeRemoteness(browser, remoteType);
-+    }
-+
-+    params.triggeringPrincipal =
-+      params.triggeringPrincipal ||
-+      Services.scriptSecurityManager.getSystemPrincipal();
-+    browser.fixupAndLoadURIString(uri, params);
-+  },
-+
-+  /**
-+   * Force `browser` to be a remote/local browser.
-+   *
-+   * @see E10SUtils.sys.mjs for remote types.
-+   *
-+   * @param {nsIBrowser} browser - the browser to enforce the remoteness of.
-+   * @param {string} remoteType - the remoteness to enforce.
-+   * @returns {boolean} true if any change happened on the browser (which would
-+   *    not be the case if its remoteness is already in the correct state).
-+   */
-+  changeRemoteness(browser, remoteType) {
-+    if (browser.remoteType == remoteType) {
-+      return false;
-+    }
-+
-+    browser.destroy();
-+
-+    if (remoteType) {
-+      browser.setAttribute("remote", "true");
-+      browser.setAttribute("remoteType", remoteType);
-+    } else {
-+      browser.setAttribute("remote", "false");
-+      browser.removeAttribute("remoteType");
-+    }
-+
-+    browser.changeRemoteness({ remoteType });
-+    browser.construct();
-+    ExtensionParent.apiManager.emit("extension-browser-inserted", browser);
-+
-+    return true;
-+  },
-+};
-diff --git a/suite/buoy/modules/PanelMultiView.sys.mjs b/suite/buoy/modules/PanelMultiView.sys.mjs
-new file mode 100644
---- /dev/null
-+++ b/suite/buoy/modules/PanelMultiView.sys.mjs
-@@ -0,0 +1,1700 @@
-+/* 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/. */
-+
-+/**
-+ * Allows a popup panel to host multiple subviews. The main view shown when the
-+ * panel is opened may slide out to display a subview, which in turn may lead to
-+ * other subviews in a cascade menu pattern.
-+ *
-+ * The <panel> element should contain a <panelmultiview> element. Views are
-+ * declared using <panelview> elements that are usually children of the main
-+ * <panelmultiview> element, although they don't need to be, as views can also
-+ * be imported into the panel from other panels or popup sets.
-+ *
-+ * The panel should be opened asynchronously using the openPopup static method
-+ * on the PanelMultiView object. This will display the view specified using the
-+ * mainViewId attribute on the contained <panelmultiview> element.
-+ *
-+ * Specific subviews can slide in using the showSubView method, and backwards
-+ * navigation can be done using the goBack method or through a button in the
-+ * subview headers.
-+ *
-+ * The process of displaying the main view or a new subview requires multiple
-+ * steps to be completed, hence at any given time the <panelview> element may
-+ * be in different states:
-+ *
-+ * -- Open or closed
-+ *
-+ *    All the <panelview> elements start "closed", meaning that they are not
-+ *    associated to a <panelmultiview> element and can be located anywhere in
-+ *    the document. When the openPopup or showSubView methods are called, the
-+ *    relevant view becomes "open" and the <panelview> element may be moved to
-+ *    ensure it is a descendant of the <panelmultiview> element.
-+ *
-+ *    The "ViewShowing" event is fired at this point, when the view is not
-+ *    visible yet. The event is allowed to cancel the operation, in which case
-+ *    the view is closed immediately.
-+ *
-+ *    Closing the view does not move the node back to its original position.
-+ *
-+ * -- Visible or invisible
-+ *
-+ *    This indicates whether the view is visible in the document from a layout
-+ *    perspective, regardless of whether it is currently scrolled into view. In
-+ *    fact, all subviews are already visible before they start sliding in.
-+ *
-+ *    Before scrolling into view, a view may become visible but be placed in a
-+ *    special off-screen area of the document where layout and measurements can
-+ *    take place asynchronously.
-+ *
-+ *    When navigating forward, an open view may become invisible but stay open
-+ *    after sliding out of view. The last known size of these views is still
-+ *    taken into account for determining the overall panel size.
-+ *
-+ *    When navigating backwards, an open subview will first become invisible and
-+ *    then will be closed.
-+ *
-+ * -- Active or inactive
-+ *
-+ *    This indicates whether the view is fully scrolled into the visible area
-+ *    and ready to receive mouse and keyboard events. An active view is always
-+ *    visible, but a visible view may be inactive. For example, during a scroll
-+ *    transition, both views will be inactive.
-+ *
-+ *    When a view becomes active, the ViewShown event is fired synchronously,
-+ *    and the showSubView and goBack methods can be called for navigation.
-+ *
-+ *    For the main view of the panel, the ViewShown event is dispatched during
-+ *    the "popupshown" event, which means that other "popupshown" handlers may
-+ *    be called before the view is active. Thus, code that needs to perform
-+ *    further navigation automatically should either use the ViewShown event or
-+ *    wait for an event loop tick, like BrowserTestUtils.waitForEvent does.
-+ *
-+ * -- Navigating with the keyboard
-+ *
-+ *    An open view may keep state related to keyboard navigation, even if it is
-+ *    invisible. When a view is closed, keyboard navigation state is cleared.
-+ *
-+ * This diagram shows how <panelview> nodes move during navigation:
-+ *
-+ *   In this <panelmultiview>     In other panels    Action
-+ *             ┌───┬───┬───┐        ┌───┬───┐
-+ *             │(A)│ B │ C │        │ D │ E │          Open panel
-+ *             └───┴───┴───┘        └───┴───┘
-+ *         ┌───┬───┬───┐            ┌───┬───┐
-+ *         │{A}│(C)│ B │            │ D │ E │          Show subview C
-+ *         └───┴───┴───┘            └───┴───┘
-+ *     ┌───┬───┬───┬───┐            ┌───┐
-+ *     │{A}│{C}│(D)│ B │            │ E │              Show subview D
-+ *     └───┴───┴───┴───┘            └───┘
-+ *       │ ┌───┬───┬───┬───┐        ┌───┐
-+ *       │ │{A}│(C)│ D │ B │        │ E │              Go back
-+ *       │ └───┴───┴───┴───┘        └───┘
-+ *       │   │   │
-+ *       │   │   └── Currently visible view
-+ *       │   │   │
-+ *       └───┴───┴── Open views
-+ */
-+
-+const lazy = {};
-+
-+ChromeUtils.defineLazyGetter(lazy, "gBundle", function () {
-+  return Services.strings.createBundle(
-+    "chrome://messenger/locale/messenger.properties"
-+  );
-+});
-+
-+/**
-+ * Safety timeout after which asynchronous events will be canceled if any of the
-+ * registered blockers does not return.
-+ */
-+const BLOCKERS_TIMEOUT_MS = 10000;
-+
-+const TRANSITION_PHASES = Object.freeze({
-+  START: 1,
-+  PREPARE: 2,
-+  TRANSITION: 3,
-+});
-+
-+const gNodeToObjectMap = new WeakMap();
-+const gWindowsWithUnloadHandler = new WeakSet();
-+
-+/**
-+ * Allows associating an object to a node lazily using a weak map.
-+ *
-+ * Classes deriving from this one may be easily converted to Custom Elements,
-+ * although they would lose the ability of being associated lazily.
-+ */
-+var AssociatedToNode = class {
-+  constructor(node) {
-+    /**
-+     * Node associated to this object.
-+     */
-+    this.node = node;
-+
-+    /**
-+     * This promise is resolved when the current set of blockers set by event
-+     * handlers have all been processed.
-+     */
-+    this._blockersPromise = Promise.resolve();
-+  }
-+
-+  /**
-+   * Retrieves the instance associated with the given node, constructing a new
-+   * one if necessary. When the last reference to the node is released, the
-+   * object instance will be garbage collected as well.
-+   */
-+  static forNode(node) {
-+    let associatedToNode = gNodeToObjectMap.get(node);
-+    if (!associatedToNode) {
-+      associatedToNode = new this(node);
-+      gNodeToObjectMap.set(node, associatedToNode);
-+    }
-+    return associatedToNode;
-+  }
-+
-+  get document() {
-+    return this.node.ownerDocument;
-+  }
-+
-+  get window() {
-+    return this.node.ownerGlobal;
-+  }
-+
-+  _getBoundsWithoutFlushing(element) {
-+    return this.window.windowUtils.getBoundsWithoutFlushing(element);
-+  }
-+
-+  /**
-+   * Dispatches a custom event on this element.
-+   *
-+   * @param  {string}    eventName Name of the event to dispatch.
-+   * @param  {object}    [detail]  Event detail object. Optional.
-+   * @param  {boolean}   cancelable If the event can be canceled.
-+   * @returns {boolean} `true` if the event was canceled by an event handler, `false`
-+   *                   otherwise.
-+   */
-+  dispatchCustomEvent(eventName, detail, cancelable = false) {
-+    const event = new this.window.CustomEvent(eventName, {
-+      detail,
-+      bubbles: true,
-+      cancelable,
-+    });
-+    this.node.dispatchEvent(event);
-+    return event.defaultPrevented;
-+  }
-+
-+  /**
-+   * Dispatches a custom event on this element and waits for any blocking
-+   * promises registered using the "addBlocker" function on the details object.
-+   * If this function is called again, the event is only dispatched after all
-+   * the previously registered blockers have returned.
-+   *
-+   * The event can be canceled either by resolving any blocking promise to the
-+   * boolean value "false" or by calling preventDefault on the event. Rejections
-+   * and exceptions will be reported and will cancel the event.
-+   *
-+   * Blocking should be used sporadically because it slows down the interface.
-+   * Also, non-reentrancy is not strictly guaranteed because a safety timeout of
-+   * BLOCKERS_TIMEOUT_MS is implemented, after which the event will be canceled.
-+   * This helps to prevent deadlocks if any of the event handlers does not
-+   * resolve a blocker promise.
-+   *
-+   * @note Since there is no use case for dispatching different asynchronous
-+   *       events in parallel for the same element, this function will also wait
-+   *       for previous blockers when the event name is different.
-+   *
-+   * @param eventName
-+   *        Name of the custom event to dispatch.
-+   *
-+   * @resolves True if the event was canceled by a handler, false otherwise.
-+   */
-+  async dispatchAsyncEvent(eventName) {
-+    // Wait for all the previous blockers before dispatching the event.
-+    const blockersPromise = this._blockersPromise.catch(() => {});
-+    return (this._blockersPromise = blockersPromise.then(async () => {
-+      const blockers = new Set();
-+      let cancel = this.dispatchCustomEvent(
-+        eventName,
-+        {
-+          addBlocker(promise) {
-+            // Any exception in the blocker will cancel the operation.
-+            blockers.add(
-+              promise.catch(ex => {
-+                console.error(ex);
-+                return true;
-+              })
-+            );
-+          },
-+        },
-+        true
-+      );
-+      if (blockers.size) {
-+        const timeoutPromise = new Promise((resolve, reject) => {
-+          this.window.setTimeout(reject, BLOCKERS_TIMEOUT_MS);
-+        });
-+        try {
-+          const results = await Promise.race([
-+            Promise.all(blockers),
-+            timeoutPromise,
-+          ]);
-+          cancel = cancel || results.some(result => result === false);
-+        } catch (ex) {
-+          console.error(
-+            new Error(`One of the blockers for ${eventName} timed out.`)
-+          );
-+          return true;
-+        }
-+      }
-+      return cancel;
-+    }));
-+  }
-+};
-+
-+/**
-+ * This is associated to <panelmultiview> elements.
-+ */
-+export class PanelMultiView extends AssociatedToNode {
-+  /**
-+   * Tries to open the specified <panel> and displays the main view specified
-+   * with the "mainViewId" attribute on the <panelmultiview> node it contains.
-+   *
-+   * If the panel does not contain a <panelmultiview>, it is opened directly.
-+   * This allows consumers like page actions to accept different panel types.
-+   *
-+   * @see The non-static openPopup method for details.
-+   */
-+  static async openPopup(panelNode, ...args) {
-+    const panelMultiViewNode = panelNode.querySelector("panelmultiview");
-+    if (panelMultiViewNode) {
-+      return this.forNode(panelMultiViewNode).openPopup(...args);
-+    }
-+    panelNode.openPopup(...args);
-+    return true;
-+  }
-+
-+  /**
-+   * Closes the specified <panel> which contains a <panelmultiview> node.
-+   *
-+   * If the panel does not contain a <panelmultiview>, it is closed directly.
-+   * This allows consumers like page actions to accept different panel types.
-+   *
-+   * @see The non-static hidePopup method for details.
-+   */
-+  static hidePopup(panelNode) {
-+    const panelMultiViewNode = panelNode.querySelector("panelmultiview");
-+    if (panelMultiViewNode) {
-+      this.forNode(panelMultiViewNode).hidePopup();
-+    } else {
-+      panelNode.hidePopup();
-+    }
-+  }
-+
-+  /**
-+   * Removes the specified <panel> from the document, ensuring that any
-+   * <panelmultiview> node it contains is destroyed properly.
-+   *
-+   * If the viewCacheId attribute is present on the <panelmultiview> element,
-+   * imported subviews will be moved out again to the element it specifies, so
-+   * that the panel element can be removed safely.
-+   *
-+   * If the panel does not contain a <panelmultiview>, it is removed directly.
-+   * This allows consumers like page actions to accept different panel types.
-+   */
-+  static removePopup(panelNode) {
-+    try {
-+      const panelMultiViewNode = panelNode.querySelector("panelmultiview");
-+      if (panelMultiViewNode) {
-+        const panelMultiView = this.forNode(panelMultiViewNode);
-+        panelMultiView._moveOutKids();
-+        panelMultiView.disconnect();
-+      }
-+    } finally {
-+      // Make sure to remove the panel element even if disconnecting fails.
-+      panelNode.remove();
-+    }
-+  }
-+
-+  /**
-+   * Ensures that when the specified window is closed all the <panelmultiview>
-+   * node it contains are destroyed properly.
-+   */
-+  static ensureUnloadHandlerRegistered(window) {
-+    if (gWindowsWithUnloadHandler.has(window)) {
-+      return;
-+    }
-+
-+    window.addEventListener(
-+      "unload",
-+      () => {
-+        for (const panelMultiViewNode of window.document.querySelectorAll(
-+          "panelmultiview"
-+        )) {
-+          this.forNode(panelMultiViewNode).disconnect();
-+        }
-+      },
-+      { once: true }
-+    );
-+
-+    gWindowsWithUnloadHandler.add(window);
-+  }
-+
-+  get _panel() {
-+    return this.node.parentNode;
-+  }
-+
-+  set _transitioning(val) {
-+    if (val) {
-+      this.node.setAttribute("transitioning", "true");
-+    } else {
-+      this.node.removeAttribute("transitioning");
-+    }
-+  }
-+
-+  get _screenManager() {
-+    if (this.__screenManager) {
-+      return this.__screenManager;
-+    }
-+    return (this.__screenManager = Cc[
-+      "@mozilla.org/gfx/screenmanager;1"
-+    ].getService(Ci.nsIScreenManager));
-+  }
-+
-+  constructor(node) {
-+    super(node);
-+    this._openPopupPromise = Promise.resolve(false);
-+    this._openPopupCancelCallback = () => {};
-+  }
-+
-+  connect() {
-+    this.connected = true;
-+
-+    PanelMultiView.ensureUnloadHandlerRegistered(this.window);
-+
-+    const viewContainer = (this._viewContainer =
-+      this.document.createXULElement("box"));
-+    viewContainer.classList.add("panel-viewcontainer");
-+
-+    const viewStack = (this._viewStack = this.document.createXULElement("box"));
-+    viewStack.classList.add("panel-viewstack");
-+    viewContainer.append(viewStack);
-+
-+    const offscreenViewContainer = this.document.createXULElement("box");
-+    offscreenViewContainer.classList.add("panel-viewcontainer", "offscreen");
-+
-+    const offscreenViewStack = (this._offscreenViewStack =
-+      this.document.createXULElement("box"));
-+    offscreenViewStack.classList.add("panel-viewstack");
-+    offscreenViewContainer.append(offscreenViewStack);
-+
-+    this.node.prepend(offscreenViewContainer);
-+    this.node.prepend(viewContainer);
-+
-+    this.openViews = [];
-+
-+    this._panel.addEventListener("popupshowing", this);
-+    this._panel.addEventListener("popuppositioned", this);
-+    this._panel.addEventListener("popuphidden", this);
-+    this._panel.addEventListener("popupshown", this);
-+
-+    // Proxy these public properties and methods, as used elsewhere by various
-+    // parts of the browser, to this instance.
-+    ["goBack", "showSubView"].forEach(method => {
-+      Object.defineProperty(this.node, method, {
-+        enumerable: true,
-+        value: (...args) => this[method](...args),
-+      });
-+    });
-+  }
-+
-+  disconnect() {
-+    // Guard against re-entrancy.
-+    if (!this.node || !this.connected) {
-+      return;
-+    }
-+
-+    this._panel.removeEventListener("mousemove", this);
-+    this._panel.removeEventListener("popupshowing", this);
-+    this._panel.removeEventListener("popuppositioned", this);
-+    this._panel.removeEventListener("popupshown", this);
-+    this._panel.removeEventListener("popuphidden", this);
-+    this.window.removeEventListener("keydown", this, true);
-+    this.node =
-+      this._openPopupPromise =
-+      this._openPopupCancelCallback =
-+      this._viewContainer =
-+      this._viewStack =
-+      this._transitionDetails =
-+        null;
-+  }
-+
-+  /**
-+   * Tries to open the panel associated with this PanelMultiView, and displays
-+   * the main view specified with the "mainViewId" attribute.
-+   *
-+   * The hidePopup method can be called while the operation is in progress to
-+   * prevent the panel from being displayed. View events may also cancel the
-+   * operation, so there is no guarantee that the panel will become visible.
-+   *
-+   * The "popuphidden" event will be fired either when the operation is canceled
-+   * or when the popup is closed later. This event can be used for example to
-+   * reset the "open" state of the anchor or tear down temporary panels.
-+   *
-+   * If this method is called again before the panel is shown, the result
-+   * depends on the operation currently in progress. If the operation was not
-+   * canceled, the panel is opened using the arguments from the previous call,
-+   * and this call is ignored. If the operation was canceled, it will be
-+   * retried again using the arguments from this call.
-+   *
-+   * It's not necessary for the <panelmultiview> binding to be connected when
-+   * this method is called, but the containing panel must have its display
-+   * turned on, for example it shouldn't have the "hidden" attribute.
-+   *
-+   * @param anchor
-+   *        The node to anchor the popup to.
-+   * @param options
-+   *        Either options to use or a string position. This is forwarded to
-+   *        the openPopup method of the panel.
-+   * @param args
-+   *        Additional arguments to be forwarded to the openPopup method of the
-+   *        panel.
-+   *
-+   * @resolves With true as soon as the request to display the panel has been
-+   *           sent, or with false if the operation was canceled. The state of
-+   *           the panel at this point is not guaranteed. It may be still
-+   *           showing, completely shown, or completely hidden.
-+   * @rejects If an exception is thrown at any point in the process before the
-+   *          request to display the panel is sent.
-+   */
-+  async openPopup(anchor, options, ...args) {
-+    // Set up the function that allows hidePopup or a second call to showPopup
-+    // to cancel the specific panel opening operation that we're starting below.
-+    // This function must be synchronous, meaning we can't use Promise.race,
-+    // because hidePopup wants to dispatch the "popuphidden" event synchronously
-+    // even if the panel has not been opened yet.
-+    let canCancel = true;
-+    const cancelCallback = (this._openPopupCancelCallback = () => {
-+      // If the cancel callback is called and the panel hasn't been prepared
-+      // yet, cancel showing it. Setting canCancel to false will prevent the
-+      // popup from opening. If the panel has opened by the time the cancel
-+      // callback is called, canCancel will be false already, and we will not
-+      // fire the "popuphidden" event.
-+      if (canCancel && this.node) {
-+        canCancel = false;
-+        this.dispatchCustomEvent("popuphidden");
-+      }
-+    });
-+
-+    // Create a promise that is resolved with the result of the last call to
-+    // this method, where errors indicate that the panel was not opened.
-+    const openPopupPromise = this._openPopupPromise.catch(() => {
-+      return false;
-+    });
-+
-+    // Make the preparation done before showing the panel non-reentrant. The
-+    // promise created here will be resolved only after the panel preparation is
-+    // completed, even if a cancellation request is received in the meantime.
-+    return (this._openPopupPromise = openPopupPromise.then(async wasShown => {
-+      // The panel may have been destroyed in the meantime.
-+      if (!this.node) {
-+        return false;
-+      }
-+      // If the panel has been already opened there is nothing more to do. We
-+      // check the actual state of the panel rather than setting some state in
-+      // our handler of the "popuphidden" event because this has a lower chance
-+      // of locking indefinitely if events aren't raised in the expected order.
-+      if (wasShown && ["open", "showing"].includes(this._panel.state)) {
-+        return true;
-+      }
-+      try {
-+        if (!this.connected) {
-+          this.connect();
-+        }
-+        // Allow any of the ViewShowing handlers to prevent showing the main view.
-+        if (!(await this._showMainView())) {
-+          cancelCallback();
-+        }
-+      } catch (ex) {
-+        cancelCallback();
-+        throw ex;
-+      }
-+      // If a cancellation request was received there is nothing more to do.
-+      if (!canCancel || !this.node) {
-+        return false;
-+      }
-+      // We have to set canCancel to false before opening the popup because the
-+      // hidePopup method of PanelMultiView can be re-entered by event handlers.
-+      // If the openPopup call fails, however, we still have to dispatch the
-+      // "popuphidden" event even if canCancel was set to false.
-+      try {
-+        canCancel = false;
-+        this._panel.openPopup(anchor, options, ...args);
-+
-+        // On Windows, if another popup is hiding while we call openPopup, the
-+        // call won't fail but the popup won't open. In this case, we have to
-+        // dispatch an artificial "popuphidden" event to reset our state.
-+        if (this._panel.state == "closed" && this.openViews.length) {
-+          this.dispatchCustomEvent("popuphidden");
-+          return false;
-+        }
-+
-+        if (
-+          options &&
-+          typeof options == "object" &&
-+          options.triggerEvent &&
-+          options.triggerEvent.type == "keypress" &&
-+          this.openViews.length
-+        ) {
-+          // This was opened via the keyboard, so focus the first item.
-+          this.openViews[0].focusWhenActive = true;
-+        }
-+
-+        return true;
-+      } catch (ex) {
-+        this.dispatchCustomEvent("popuphidden");
-+        throw ex;
-+      }
-+    }));
-+  }
-+
-+  /**
-+   * Closes the panel associated with this PanelMultiView.
-+   *
-+   * If the openPopup method was called but the panel has not been displayed
-+   * yet, the operation is canceled and the panel will not be displayed, but the
-+   * "popuphidden" event is fired synchronously anyways.
-+   *
-+   * This means that by the time this method returns all the operations handled
-+   * by the "popuphidden" event are completed, for example resetting the "open"
-+   * state of the anchor, and the panel is already invisible.
-+   */
-+  hidePopup() {
-+    if (!this.node || !this.connected) {
-+      return;
-+    }
-+
-+    // If we have already reached the _panel.openPopup call in the openPopup
-+    // method, we can call hidePopup. Otherwise, we have to cancel the latest
-+    // request to open the panel, which will have no effect if the request has
-+    // been canceled already.
-+    if (["open", "showing"].includes(this._panel.state)) {
-+      this._panel.hidePopup();
-+    } else {
-+      this._openPopupCancelCallback();
-+    }
-+
-+    // We close all the views synchronously, so that they are ready to be opened
-+    // in other PanelMultiView instances. The "popuphidden" handler may also
-+    // call this function, but the second time openViews will be empty.
-+    this.closeAllViews();
-+  }
-+
-+  /**
-+   * Move any child subviews into the element defined by "viewCacheId" to make
-+   * sure they will not be removed together with the <panelmultiview> element.
-+   */
-+  _moveOutKids() {
-+    const viewCacheId = this.node.getAttribute("viewCacheId");
-+    if (!viewCacheId) {
-+      return;
-+    }
-+
-+    // Node.children and Node.children is live to DOM changes like the
-+    // ones we're about to do, so iterate over a static copy:
-+    const subviews = Array.from(this._viewStack.children);
-+    const viewCache = this.document.getElementById(viewCacheId);
-+    for (const subview of subviews) {
-+      viewCache.appendChild(subview);
-+    }
-+  }
-+
-+  /**
-+   * Slides in the specified view as a subview.
-+   *
-+   * @param viewIdOrNode
-+   *        DOM element or string ID of the <panelview> to display.
-+   * @param anchor
-+   *        DOM element that triggered the subview, which will be highlighted
-+   *        and whose "label" attribute will be used for the title of the
-+   *        subview when a "title" attribute is not specified.
-+   */
-+  showSubView(viewIdOrNode, anchor) {
-+    this._showSubView(viewIdOrNode, anchor).catch(console.error);
-+  }
-+  async _showSubView(viewIdOrNode, anchor) {
-+    const viewNode =
-+      typeof viewIdOrNode == "string"
-+        ? this.document.getElementById(viewIdOrNode)
-+        : viewIdOrNode;
-+    if (!viewNode) {
-+      console.error(new Error(`Subview ${viewIdOrNode} doesn't exist.`));
-+      return;
-+    }
-+
-+    if (!this.openViews.length) {
-+      console.error(new Error(`Cannot show a subview in a closed panel.`));
-+      return;
-+    }
-+
-+    const prevPanelView = this.openViews[this.openViews.length - 1];
-+    const nextPanelView = PanelView.forNode(viewNode);
-+    if (this.openViews.includes(nextPanelView)) {
-+      console.error(new Error(`Subview ${viewNode.id} is already open.`));
-+      return;
-+    }
-+
-+    // Do not re-enter the process if navigation is already in progress. Since
-+    // there is only one active view at any given time, we can do this check
-+    // safely, even considering that during the navigation process the actual
-+    // view to which prevPanelView refers will change.
-+    if (!prevPanelView.active) {
-+      return;
-+    }
-+    // If prevPanelView._doingKeyboardActivation is true, it will be reset to
-+    // false synchronously. Therefore, we must capture it before we use any
-+    // "await" statements.
-+    const doingKeyboardActivation = prevPanelView._doingKeyboardActivation;
-+    // Marking the view that is about to scrolled out of the visible area as
-+    // inactive will prevent re-entrancy and also disable keyboard navigation.
-+    // From this point onwards, "await" statements can be used safely.
-+    prevPanelView.active = false;
-+
-+    // Provide visual feedback while navigation is in progress, starting before
-+    // the transition starts and ending when the previous view is invisible.
-+    if (anchor) {
-+      anchor.setAttribute("open", "true");
-+    }
-+    try {
-+      // If the ViewShowing event cancels the operation we have to re-enable
-+      // keyboard navigation, but this must be avoided if the panel was closed.
-+      if (!(await this._openView(nextPanelView))) {
-+        if (prevPanelView.isOpenIn(this)) {
-+          // We don't raise a ViewShown event because nothing actually changed.
-+          // Technically we should use a different state flag just because there
-+          // is code that could check the "active" property to determine whether
-+          // to wait for a ViewShown event later, but this only happens in
-+          // regression tests and is less likely to be a technique used in
-+          // production code, where use of ViewShown is less common.
-+          prevPanelView.active = true;
-+        }
-+        return;
-+      }
-+
-+      prevPanelView.captureKnownSize();
-+
-+      // The main view of a panel can be a subview in another one. Make sure to
-+      // reset all the properties that may be set on a subview.
-+      nextPanelView.mainview = false;
-+      // The header may change based on how the subview was opened.
-+      nextPanelView.headerText =
-+        viewNode.getAttribute("title") ||
-+        (anchor && anchor.getAttribute("label"));
-+      // The constrained width of subviews may also vary between panels.
-+      nextPanelView.minMaxWidth = prevPanelView.knownWidth;
-+
-+      if (anchor) {
-+        viewNode.classList.add("PanelUI-subView");
-+      }
-+
-+      await this._transitionViews(prevPanelView.node, viewNode, false, anchor);
-+    } finally {
-+      if (anchor) {
-+        anchor.removeAttribute("open");
-+      }
-+    }
-+
-+    nextPanelView.focusWhenActive = doingKeyboardActivation;
-+    this._activateView(nextPanelView);
-+  }
-+
-+  /**
-+   * Navigates backwards by sliding out the most recent subview.
-+   */
-+  goBack() {
-+    this._goBack().catch(console.error);
-+  }
-+  async _goBack() {
-+    if (this.openViews.length < 2) {
-+      // This may be called by keyboard navigation or external code when only
-+      // the main view is open.
-+      return;
-+    }
-+
-+    const prevPanelView = this.openViews[this.openViews.length - 1];
-+    const nextPanelView = this.openViews[this.openViews.length - 2];
-+
-+    // Like in the showSubView method, do not re-enter navigation while it is
-+    // in progress, and make the view inactive immediately. From this point
-+    // onwards, "await" statements can be used safely.
-+    if (!prevPanelView.active) {
-+      return;
-+    }
-+
-+    prevPanelView.active = false;
-+
-+    prevPanelView.captureKnownSize();
-+
-+    await this._transitionViews(prevPanelView.node, nextPanelView.node, true);
-+
-+    this._closeLatestView();
-+
-+    this._activateView(nextPanelView);
-+  }
-+
-+  /**
-+   * Prepares the main view before showing the panel.
-+   */
-+  async _showMainView() {
-+    const nextPanelView = PanelView.forNode(
-+      this.document.getElementById(this.node.getAttribute("mainViewId"))
-+    );
-+
-+    // If the view is already open in another panel, close the panel first.
-+    const oldPanelMultiViewNode = nextPanelView.node.panelMultiView;
-+    if (oldPanelMultiViewNode) {
-+      PanelMultiView.forNode(oldPanelMultiViewNode).hidePopup();
-+      // Wait for a layout flush after hiding the popup, otherwise the view may
-+      // not be displayed correctly for some time after the new panel is opened.
-+      // This is filed as bug 1441015.
-+      await this.window.promiseDocumentFlushed(() => {});
-+    }
-+
-+    if (!(await this._openView(nextPanelView))) {
-+      return false;
-+    }
-+
-+    // The main view of a panel can be a subview in another one. Make sure to
-+    // reset all the properties that may be set on a subview.
-+    nextPanelView.mainview = true;
-+    nextPanelView.headerText = "";
-+    nextPanelView.minMaxWidth = 0;
-+
-+    // Ensure the view will be visible once the panel is opened.
-+    nextPanelView.visible = true;
-+
-+    return true;
-+  }
-+
-+  /**
-+   * Opens the specified PanelView and dispatches the ViewShowing event, which
-+   * can be used to populate the subview or cancel the operation.
-+   *
-+   * This also clears all the attributes and styles that may be left by a
-+   * transition that was interrupted.
-+   *
-+   * @resolves With true if the view was opened, false otherwise.
-+   */
-+  async _openView(panelView) {
-+    if (panelView.node.parentNode != this._viewStack) {
-+      this._viewStack.appendChild(panelView.node);
-+    }
-+
-+    panelView.node.panelMultiView = this.node;
-+    this.openViews.push(panelView);
-+
-+    const canceled = await panelView.dispatchAsyncEvent("ViewShowing");
-+
-+    // The panel can be hidden while we are processing the ViewShowing event.
-+    // This results in all the views being closed synchronously, and at this
-+    // point the ViewHiding event has already been dispatched for all of them.
-+    if (!this.openViews.length) {
-+      return false;
-+    }
-+
-+    // Check if the event requested cancellation but the panel is still open.
-+    if (canceled) {
-+      // Handlers for ViewShowing can't know if a different handler requested
-+      // cancellation, so this will dispatch a ViewHiding event to give a chance
-+      // to clean up.
-+      this._closeLatestView();
-+      return false;
-+    }
-+
-+    // Clean up all the attributes and styles related to transitions. We do this
-+    // here rather than when the view is closed because we are likely to make
-+    // other DOM modifications soon, which isn't the case when closing.
-+    const { style } = panelView.node;
-+    style.removeProperty("outline");
-+    style.removeProperty("width");
-+
-+    return true;
-+  }
-+
-+  /**
-+   * Activates the specified view and raises the ViewShown event, unless the
-+   * view was closed in the meantime.
-+   */
-+  _activateView(panelView) {
-+    if (panelView.isOpenIn(this)) {
-+      panelView.active = true;
-+      if (panelView.focusWhenActive) {
-+        panelView.focusFirstNavigableElement(false, true);
-+        panelView.focusWhenActive = false;
-+      }
-+      panelView.dispatchCustomEvent("ViewShown");
-+    }
-+  }
-+
-+  /**
-+   * Closes the most recent PanelView and raises the ViewHiding event.
-+   *
-+   * @note The ViewHiding event is not cancelable and should probably be renamed
-+   *       to ViewHidden or ViewClosed instead, see bug 1438507.
-+   */
-+  _closeLatestView() {
-+    const panelView = this.openViews.pop();
-+    panelView.clearNavigation();
-+    panelView.dispatchCustomEvent("ViewHiding");
-+    panelView.node.panelMultiView = null;
-+    // Views become invisible synchronously when they are closed, and they won't
-+    // become visible again until they are opened. When this is called at the
-+    // end of backwards navigation, the view is already invisible.
-+    panelView.visible = false;
-+  }
-+
-+  /**
-+   * Closes all the views that are currently open.
-+   */
-+  closeAllViews() {
-+    // Raise ViewHiding events for open views in reverse order.
-+    while (this.openViews.length) {
-+      this._closeLatestView();
-+    }
-+  }
-+
-+  /**
-+   * Apply a transition to 'slide' from the currently active view to the next
-+   * one.
-+   * Sliding the next subview in means that the previous panelview stays where it
-+   * is and the active panelview slides in from the left in LTR mode, right in
-+   * RTL mode.
-+   *
-+   * @param {panelview} previousViewNode Node that is currently displayed, but
-+   *                                     is about to be transitioned away. This
-+   *                                     must be already inactive at this point.
-+   * @param {panelview} viewNode - Node that will becode the active view,
-+   *                                     after the transition has finished.
-+   * @param {boolean}   reverse          Whether we're navigation back to a
-+   *                                     previous view or forward to a next view.
-+   */
-+  async _transitionViews(previousViewNode, viewNode, reverse) {
-+    const { window } = this;
-+
-+    const nextPanelView = PanelView.forNode(viewNode);
-+    const prevPanelView = PanelView.forNode(previousViewNode);
-+
-+    const details = (this._transitionDetails = {
-+      phase: TRANSITION_PHASES.START,
-+    });
-+
-+    // Set the viewContainer dimensions to make sure only the current view is
-+    // visible.
-+    const olderView = reverse ? nextPanelView : prevPanelView;
-+    this._viewContainer.style.minHeight = olderView.knownHeight + "px";
-+    this._viewContainer.style.height = prevPanelView.knownHeight + "px";
-+    this._viewContainer.style.width = prevPanelView.knownWidth + "px";
-+    // Lock the dimensions of the window that hosts the popup panel.
-+    const rect = this._getBoundsWithoutFlushing(this._panel);
-+    this._panel.style.width = rect.width + "px";
-+    this._panel.style.height = rect.height + "px";
-+
-+    let viewRect;
-+    if (reverse) {
-+      // Use the cached size when going back to a previous view, but not when
-+      // reopening a subview, because its contents may have changed.
-+      viewRect = {
-+        width: nextPanelView.knownWidth,
-+        height: nextPanelView.knownHeight,
-+      };
-+      nextPanelView.visible = true;
-+    } else if (viewNode.customRectGetter) {
-+      // We use a customRectGetter for WebExtensions panels, because they need
-+      // to query the size from an embedded browser. The presence of this
-+      // getter also provides an indication that the view node shouldn't be
-+      // moved around, otherwise the state of the browser would get disrupted.
-+      const width = prevPanelView.knownWidth;
-+      const height = prevPanelView.knownHeight;
-+      viewRect = Object.assign({ height, width }, viewNode.customRectGetter());
-+      nextPanelView.visible = true;
-+      // Until the header is visible, it has 0 height.
-+      // Wait for layout before measuring it
-+      const header = viewNode.firstElementChild;
-+      if (header && header.classList.contains("panel-header")) {
-+        viewRect.height += await window.promiseDocumentFlushed(() => {
-+          return this._getBoundsWithoutFlushing(header).height;
-+        });
-+      }
-+    } else {
-+      this._offscreenViewStack.style.minHeight = olderView.knownHeight + "px";
-+      this._offscreenViewStack.appendChild(viewNode);
-+      nextPanelView.visible = true;
-+
-+      viewRect = await window.promiseDocumentFlushed(() => {
-+        return this._getBoundsWithoutFlushing(viewNode);
-+      });
-+      // Bail out if the panel was closed in the meantime.
-+      if (!nextPanelView.isOpenIn(this)) {
-+        return;
-+      }
-+
-+      // Place back the view after all the other views that are already open in
-+      // order for the transition to work as expected.
-+      this._viewStack.appendChild(viewNode);
-+
-+      this._offscreenViewStack.style.removeProperty("min-height");
-+    }
-+
-+    this._transitioning = true;
-+    details.phase = TRANSITION_PHASES.PREPARE;
-+
-+    // The 'magic' part: build up the amount of pixels to move right or left.
-+    const moveToLeft =
-+      (this.window.RTL_UI && !reverse) || (!this.window.RTL_UI && reverse);
-+    const deltaX = prevPanelView.knownWidth;
-+    const deepestNode = reverse ? previousViewNode : viewNode;
-+
-+    // With a transition when navigating backwards - user hits the 'back'
-+    // button - we need to make sure that the views are positioned in a way
-+    // that a translateX() unveils the previous view from the right direction.
-+    if (reverse) {
-+      this._viewStack.style.marginInlineStart = "-" + deltaX + "px";
-+    }
-+
-+    // Set the transition style and listen for its end to clean up and make sure
-+    // the box sizing becomes dynamic again.
-+    // Somehow, putting these properties in PanelUI.css doesn't work for newly
-+    // shown nodes in a XUL parent node.
-+    this._viewStack.style.transition =
-+      "transform var(--animation-easing-function)" +
-+      " var(--panelui-subview-transition-duration)";
-+    this._viewStack.style.willChange = "transform";
-+    // Use an outline instead of a border so that the size is not affected.
-+    deepestNode.style.outline = "1px solid var(--panel-separator-color)";
-+
-+    // Now that all the elements are in place for the start of the transition,
-+    // give the layout code a chance to set the initial values.
-+    await window.promiseDocumentFlushed(() => {});
-+    // Bail out if the panel was closed in the meantime.
-+    if (!nextPanelView.isOpenIn(this)) {
-+      return;
-+    }
-+
-+    // Now set the viewContainer dimensions to that of the new view, which
-+    // kicks of the height animation.
-+    this._viewContainer.style.height = viewRect.height + "px";
-+    this._viewContainer.style.width = viewRect.width + "px";
-+    this._panel.style.removeProperty("width");
-+    this._panel.style.removeProperty("height");
-+
-+    // We're setting the width property to prevent flickering during the
-+    // sliding animation with smaller views.
-+    viewNode.style.width = viewRect.width + "px";
-+
-+    // Kick off the transition!
-+    details.phase = TRANSITION_PHASES.TRANSITION;
-+
-+    // If we're going to show the main view, we can remove the
-+    // min-height property on the view container.
-+    if (viewNode.getAttribute("mainview")) {
-+      this._viewContainer.style.removeProperty("min-height");
-+    }
-+
-+    this._viewStack.style.transform =
-+      "translateX(" + (moveToLeft ? "" : "-") + deltaX + "px)";
-+
-+    await new Promise(resolve => {
-+      details.resolve = resolve;
-+      this._viewContainer.addEventListener(
-+        "transitionend",
-+        (details.listener = ev => {
-+          // It's quite common that `height` on the view container doesn't need
-+          // to transition, so we make sure to do all the work on the transform
-+          // transition-end, because that is guaranteed to happen.
-+          if (ev.target != this._viewStack || ev.propertyName != "transform") {
-+            return;
-+          }
-+          this._viewContainer.removeEventListener(
-+            "transitionend",
-+            details.listener
-+          );
-+          delete details.listener;
-+          resolve();
-+        })
-+      );
-+      this._viewContainer.addEventListener(
-+        "transitioncancel",
-+        (details.cancelListener = ev => {
-+          if (ev.target != this._viewStack) {
-+            return;
-+          }
-+          this._viewContainer.removeEventListener(
-+            "transitioncancel",
-+            details.cancelListener
-+          );
-+          delete details.cancelListener;
-+          resolve();
-+        })
-+      );
-+    });
-+
-+    // Bail out if the panel was closed during the transition.
-+    if (!nextPanelView.isOpenIn(this)) {
-+      return;
-+    }
-+    prevPanelView.visible = false;
-+
-+    // This will complete the operation by removing any transition properties.
-+    nextPanelView.node.style.removeProperty("width");
-+    deepestNode.style.removeProperty("outline");
-+    this._cleanupTransitionPhase();
-+
-+    nextPanelView.focusSelectedElement();
-+  }
-+
-+  /**
-+   * Attempt to clean up the attributes and properties set by `_transitionViews`
-+   * above. Which attributes and properties depends on the phase the transition
-+   * was left from.
-+   */
-+  _cleanupTransitionPhase() {
-+    if (!this._transitionDetails) {
-+      return;
-+    }
-+
-+    const { phase, resolve, listener, cancelListener } =
-+      this._transitionDetails;
-+    this._transitionDetails = null;
-+
-+    if (phase >= TRANSITION_PHASES.START) {
-+      this._panel.style.removeProperty("width");
-+      this._panel.style.removeProperty("height");
-+      this._viewContainer.style.removeProperty("height");
-+      this._viewContainer.style.removeProperty("width");
-+    }
-+    if (phase >= TRANSITION_PHASES.PREPARE) {
-+      this._transitioning = false;
-+      this._viewStack.style.removeProperty("margin-inline-start");
-+      this._viewStack.style.removeProperty("transition");
-+    }
-+    if (phase >= TRANSITION_PHASES.TRANSITION) {
-+      this._viewStack.style.removeProperty("transform");
-+      if (listener) {
-+        this._viewContainer.removeEventListener("transitionend", listener);
-+      }
-+      if (cancelListener) {
-+        this._viewContainer.removeEventListener(
-+          "transitioncancel",
-+          cancelListener
-+        );
-+      }
-+      if (resolve) {
-+        resolve();
-+      }
-+    }
-+  }
-+
-+  _calculateMaxHeight(aEvent) {
-+    // While opening the panel, we have to limit the maximum height of any
-+    // view based on the space that will be available. We cannot just use
-+    // window.screen.availTop and availHeight because these may return an
-+    // incorrect value when the window spans multiple screens.
-+    const anchor = this._panel.anchorNode;
-+    const anchorRect = anchor.getBoundingClientRect();
-+
-+    const screen = this._screenManager.screenForRect(
-+      anchor.screenX,
-+      anchor.screenY,
-+      anchorRect.width,
-+      anchorRect.height
-+    );
-+    const availTop = {},
-+      availHeight = {};
-+    screen.GetAvailRect({}, availTop, {}, availHeight);
-+    const cssAvailTop = availTop.value / screen.defaultCSSScaleFactor;
-+
-+    // The distance from the anchor to the available margin of the screen is
-+    // based on whether the panel will open towards the top or the bottom.
-+    let maxHeight;
-+    if (aEvent.alignmentPosition.startsWith("before_")) {
-+      maxHeight = anchor.screenY - cssAvailTop;
-+    } else {
-+      const anchorScreenBottom = anchor.screenY + anchorRect.height;
-+      const cssAvailHeight = availHeight.value / screen.defaultCSSScaleFactor;
-+      maxHeight = cssAvailTop + cssAvailHeight - anchorScreenBottom;
-+    }
-+
-+    // To go from the maximum height of the panel to the maximum height of
-+    // the view stack, we need to subtract the height of the arrow and the
-+    // height of the opposite margin, but we cannot get their actual values
-+    // because the panel is not visible yet. However, we know that this is
-+    // currently 11px on Mac, 13px on Windows, and 13px on Linux. We also
-+    // want an extra margin, both for visual reasons and to prevent glitches
-+    // due to small rounding errors. So, we just use a value that makes
-+    // sense for all platforms. If the arrow visuals change significantly,
-+    // this value will be easy to adjust.
-+    const EXTRA_MARGIN_PX = 20;
-+    maxHeight -= EXTRA_MARGIN_PX;
-+    return maxHeight;
-+  }
-+
-+  handleEvent(aEvent) {
-+    // Only process actual popup events from the panel or events we generate
-+    // ourselves, but not from menus being shown from within the panel.
-+    if (
-+      aEvent.type.startsWith("popup") &&
-+      aEvent.target != this._panel &&
-+      aEvent.target != this.node
-+    ) {
-+      return;
-+    }
-+    switch (aEvent.type) {
-+      case "keydown":
-+        // Since we start listening for the "keydown" event when the popup is
-+        // already showing and stop listening when the panel is hidden, we
-+        // always have at least one view open.
-+        const currentView = this.openViews[this.openViews.length - 1];
-+        currentView.keyNavigation(aEvent);
-+        break;
-+      case "mousemove":
-+        this.openViews.forEach(panelView => panelView.clearNavigation());
-+        break;
-+      case "popupshowing": {
-+        this._viewContainer.setAttribute("panelopen", "true");
-+        if (!this.node.hasAttribute("disablekeynav")) {
-+          // We add the keydown handler on the window so that it handles key
-+          // presses when a panel appears but doesn't get focus, as happens
-+          // when a button to open a panel is clicked with the mouse.
-+          // However, this means the listener is on an ancestor of the panel,
-+          // which means that handlers such as ToolbarKeyboardNavigator are
-+          // deeper in the tree. Therefore, this must be a capturing listener
-+          // so we get the event first.
-+          this.window.addEventListener("keydown", this, true);
-+          this._panel.addEventListener("mousemove", this);
-+        }
-+        break;
-+      }
-+      case "popuppositioned": {
-+        if (this._panel.state == "showing") {
-+          const maxHeight = this._calculateMaxHeight(aEvent);
-+          this._viewStack.style.maxHeight = maxHeight + "px";
-+          this._offscreenViewStack.style.maxHeight = maxHeight + "px";
-+        }
-+        break;
-+      }
-+      case "popupshown":
-+        // The main view is always open and visible when the panel is first
-+        // shown, so we can check the height of the description elements it
-+        // contains and notify consumers using the ViewShown event. In order to
-+        // minimize flicker we need to allow synchronous reflows, and we still
-+        // make sure the ViewShown event is dispatched synchronously.
-+        const mainPanelView = this.openViews[0];
-+        this._activateView(mainPanelView);
-+        break;
-+      case "popuphidden": {
-+        // WebExtensions consumers can hide the popup from viewshowing, or
-+        // mid-transition, which disrupts our state:
-+        this._transitioning = false;
-+        this._viewContainer.removeAttribute("panelopen");
-+        this._cleanupTransitionPhase();
-+        this.window.removeEventListener("keydown", this, true);
-+        this._panel.removeEventListener("mousemove", this);
-+        this.closeAllViews();
-+
-+        // Clear the main view size caches. The dimensions could be different
-+        // when the popup is opened again, e.g. through touch mode sizing.
-+        this._viewContainer.style.removeProperty("min-height");
-+        this._viewStack.style.removeProperty("max-height");
-+        this._viewContainer.style.removeProperty("width");
-+        this._viewContainer.style.removeProperty("height");
-+
-+        this.dispatchCustomEvent("PanelMultiViewHidden");
-+        break;
-+      }
-+    }
-+  }
-+}
-+
-+/**
-+ * This is associated to <panelview> elements.
-+ */
-+export class PanelView extends AssociatedToNode {
-+  constructor(node) {
-+    super(node);
-+
-+    /**
-+     * Indicates whether the view is active. When this is false, consumers can
-+     * wait for the ViewShown event to know when the view becomes active.
-+     */
-+    this.active = false;
-+
-+    /**
-+     * Specifies whether the view should be focused when active. When this
-+     * is true, the first navigable element in the view will be focused
-+     * when the view becomes active. This should be set to true when the view
-+     * is activated from the keyboard. It will be set to false once the view
-+     * is active.
-+     */
-+    this.focusWhenActive = false;
-+  }
-+
-+  /**
-+   * Indicates whether the view is open in the specified PanelMultiView object.
-+   */
-+  isOpenIn(panelMultiView) {
-+    return this.node.panelMultiView == panelMultiView.node;
-+  }
-+
-+  /**
-+   * The "mainview" attribute is set before the panel is opened when this view
-+   * is displayed as the main view, and is removed before the <panelview> is
-+   * displayed as a subview. The same view element can be displayed as a main
-+   * view and as a subview at different times.
-+   */
-+  set mainview(value) {
-+    if (value) {
-+      this.node.setAttribute("mainview", true);
-+    } else {
-+      this.node.removeAttribute("mainview");
-+    }
-+  }
-+
-+  /**
-+   * Determines whether the view is visible. Setting this to false also resets
-+   * the "active" property.
-+   */
-+  set visible(value) {
-+    if (value) {
-+      this.node.setAttribute("visible", true);
-+    } else {
-+      this.node.removeAttribute("visible");
-+      this.active = false;
-+      this.focusWhenActive = false;
-+    }
-+  }
-+
-+  /**
-+   * Constrains the width of this view using the "min-width" and "max-width"
-+   * styles. Setting this to zero removes the constraints.
-+   */
-+  set minMaxWidth(value) {
-+    const style = this.node.style;
-+    if (value) {
-+      style.minWidth = style.maxWidth = value + "px";
-+    } else {
-+      style.removeProperty("min-width");
-+      style.removeProperty("max-width");
-+    }
-+  }
-+
-+  /**
-+   * Adds a header with the given title, or removes it if the title is empty.
-+   */
-+  set headerText(value) {
-+    // If the header already exists, update or remove it as requested.
-+    let header = this.node.firstElementChild;
-+    if (header && header.classList.contains("panel-header")) {
-+      if (value) {
-+        header.querySelector(".panel-header > h1 > span").textContent = value;
-+      } else {
-+        header.remove();
-+      }
-+      return;
-+    }
-+
-+    // The header doesn't exist, only create it if needed.
-+    if (!value) {
-+      return;
-+    }
-+
-+    header = this.document.createXULElement("box");
-+    header.classList.add("panel-header");
-+
-+    const backButton = this.document.createXULElement("toolbarbutton");
-+    backButton.className =
-+      "subviewbutton subviewbutton-iconic subviewbutton-back";
-+    backButton.setAttribute("closemenu", "none");
-+    backButton.setAttribute("tabindex", "0");
-+
-+    backButton.setAttribute(
-+      "aria-label",
-+      lazy.gBundle.GetStringFromName("panel.back")
-+    );
-+
-+    backButton.addEventListener("command", () => {
-+      // The panelmultiview element may change if the view is reused.
-+      this.node.panelMultiView.goBack();
-+      backButton.blur();
-+    });
-+
-+    const h1 = this.document.createElement("h1");
-+    const span = this.document.createElement("span");
-+    span.textContent = value;
-+    h1.appendChild(span);
-+
-+    header.append(backButton, h1);
-+    this.node.prepend(header);
-+  }
-+
-+  /**
-+   * Populates the "knownWidth" and "knownHeight" properties with the current
-+   * dimensions of the view. These may be zero if the view is invisible.
-+   *
-+   * These values are relevant during transitions and are retained for backwards
-+   * navigation if the view is still open but is invisible.
-+   */
-+  captureKnownSize() {
-+    const rect = this._getBoundsWithoutFlushing(this.node);
-+    this.knownWidth = rect.width;
-+    this.knownHeight = rect.height;
-+  }
-+
-+  /**
-+   * Determine whether an element can only be navigated to with tab/shift+tab,
-+   * not the arrow keys.
-+   */
-+  _isNavigableWithTabOnly(element) {
-+    const tag = element.localName;
-+    return (
-+      tag == "menulist" ||
-+      tag == "input" ||
-+      tag == "textarea" ||
-+      // Allow tab to reach embedded documents in extension panels.
-+      tag == "browser"
-+    );
-+  }
-+
-+  /**
-+   * Make a TreeWalker for keyboard navigation.
-+   *
-+   * @param {boolean} arrowKey If `true`, elements only navigable with tab are
-+   *        excluded.
-+   */
-+  _makeNavigableTreeWalker(arrowKey) {
-+    const filter = node => {
-+      if (node.disabled) {
-+        return NodeFilter.FILTER_REJECT;
-+      }
-+      const bounds = this._getBoundsWithoutFlushing(node);
-+      if (bounds.width == 0 || bounds.height == 0) {
-+        return NodeFilter.FILTER_REJECT;
-+      }
-+      if (
-+        node.tagName == "button" ||
-+        node.tagName == "toolbarbutton" ||
-+        node.classList.contains("text-link") ||
-+        (!arrowKey && this._isNavigableWithTabOnly(node))
-+      ) {
-+        // Set the tabindex attribute to make sure the node is focusable.
-+        if (!node.hasAttribute("tabindex")) {
-+          node.setAttribute("tabindex", "-1");
-+        }
-+        return NodeFilter.FILTER_ACCEPT;
-+      }
-+      return NodeFilter.FILTER_SKIP;
-+    };
-+    return this.document.createTreeWalker(
-+      this.node,
-+      NodeFilter.SHOW_ELEMENT,
-+      filter
-+    );
-+  }
-+
-+  /**
-+   * Get a TreeWalker which finds elements navigable with tab/shift+tab.
-+   */
-+  get _tabNavigableWalker() {
-+    if (!this.__tabNavigableWalker) {
-+      this.__tabNavigableWalker = this._makeNavigableTreeWalker(false);
-+    }
-+    return this.__tabNavigableWalker;
-+  }
-+
-+  /**
-+   * Get a TreeWalker which finds elements navigable with up/down arrow keys.
-+   */
-+  get _arrowNavigableWalker() {
-+    if (!this.__arrowNavigableWalker) {
-+      this.__arrowNavigableWalker = this._makeNavigableTreeWalker(true);
-+    }
-+    return this.__arrowNavigableWalker;
-+  }
-+
-+  /**
-+   * Element that is currently selected with the keyboard, or null if no element
-+   * is selected. Since the reference is held weakly, it can become null or
-+   * undefined at any time.
-+   */
-+  get selectedElement() {
-+    return this._selectedElement && this._selectedElement.get();
-+  }
-+  set selectedElement(value) {
-+    if (!value) {
-+      delete this._selectedElement;
-+    } else {
-+      this._selectedElement = Cu.getWeakReference(value);
-+    }
-+  }
-+
-+  /**
-+   * Focuses and moves keyboard selection to the first navigable element.
-+   * This is a no-op if there are no navigable elements.
-+   *
-+   * @param {boolean} homeKey - `true` if this is for the home key.
-+   * @param {boolean} skipBack - `true` if the Back button should be skipped.
-+   */
-+  focusFirstNavigableElement(homeKey = false, skipBack = false) {
-+    // The home key is conceptually similar to the up/down arrow keys.
-+    const walker = homeKey
-+      ? this._arrowNavigableWalker
-+      : this._tabNavigableWalker;
-+    walker.currentNode = walker.root;
-+    this.selectedElement = walker.firstChild();
-+    if (
-+      skipBack &&
-+      walker.currentNode &&
-+      walker.currentNode.classList.contains("subviewbutton-back") &&
-+      walker.nextNode()
-+    ) {
-+      this.selectedElement = walker.currentNode;
-+    }
-+    this.focusSelectedElement(/* byKey */ true);
-+  }
-+
-+  /**
-+   * Focuses and moves keyboard selection to the last navigable element.
-+   * This is a no-op if there are no navigable elements.
-+   *
-+   * @param {boolean} endKey - `true` if this is for the end key.
-+   */
-+  focusLastNavigableElement(endKey = false) {
-+    // The end key is conceptually similar to the up/down arrow keys.
-+    const walker = endKey
-+      ? this._arrowNavigableWalker
-+      : this._tabNavigableWalker;
-+    walker.currentNode = walker.root;
-+    this.selectedElement = walker.lastChild();
-+    this.focusSelectedElement(/* byKey */ true);
-+  }
-+
-+  /**
-+   * Based on going up or down, select the previous or next focusable element.
-+   *
-+   * @param {boolean} isDown - whether we're going down (true) or up (false).
-+   * @param {boolean} arrowKey - `true` if this is for the up/down arrow keys.
-+   *
-+   * @returns {DOMNode} the element we selected.
-+   */
-+  moveSelection(isDown, arrowKey = false) {
-+    const walker = arrowKey
-+      ? this._arrowNavigableWalker
-+      : this._tabNavigableWalker;
-+    const oldSel = this.selectedElement;
-+    let newSel;
-+    if (oldSel) {
-+      walker.currentNode = oldSel;
-+      newSel = isDown ? walker.nextNode() : walker.previousNode();
-+    }
-+    // If we couldn't find something, select the first or last item:
-+    if (!newSel) {
-+      walker.currentNode = walker.root;
-+      newSel = isDown ? walker.firstChild() : walker.lastChild();
-+    }
-+    this.selectedElement = newSel;
-+    return newSel;
-+  }
-+
-+  /**
-+   * Allow for navigating subview buttons using the arrow keys and the Enter key.
-+   * The Up and Down keys can be used to navigate the list up and down and the
-+   * Enter, Right or Left - depending on the text direction - key can be used to
-+   * simulate a click on the currently selected button.
-+   * The Right or Left key - depending on the text direction - can be used to
-+   * navigate to the previous view, functioning as a shortcut for the view's
-+   * back button.
-+   * Thus, in LTR mode:
-+   *  - The Right key functions the same as the Enter key, simulating a click
-+   *  - The Left key triggers a navigation back to the previous view.
-+   *
-+   * Key navigation is only enabled while the view is active, meaning that this
-+   * method will return early if it is invoked during a sliding transition.
-+   *
-+   * @param {KeyEvent} event
-+   */
-+  /* eslint-disable-next-line complexity */
-+  keyNavigation(event) {
-+    if (!this.active) {
-+      return;
-+    }
-+
-+    let focus = this.document.activeElement;
-+    // Make sure the focus is actually inside the panel. (It might not be if
-+    // the panel was opened with the mouse.) If it isn't, we don't care
-+    // about it for our purposes.
-+    // We use Node.compareDocumentPosition because Node.contains doesn't
-+    // behave as expected for anonymous content; e.g. the input inside a
-+    // textbox.
-+    if (
-+      focus &&
-+      !(
-+        this.node.compareDocumentPosition(focus) &
-+        Node.DOCUMENT_POSITION_CONTAINED_BY
-+      )
-+    ) {
-+      focus = null;
-+    }
-+
-+    // Extension panels contain embedded documents. We can't manage
-+    // keyboard navigation within those.
-+    if (focus && focus.tagName == "browser") {
-+      return;
-+    }
-+
-+    const stop = () => {
-+      event.stopPropagation();
-+      event.preventDefault();
-+    };
-+
-+    // If the focused element is only navigable with tab, it wants the arrow
-+    // keys, etc. We shouldn't handle any keys except tab and shift+tab.
-+    // We make a function for this for performance reasons: we only want to
-+    // check this for keys we potentially care about, not *all* keys.
-+    const tabOnly = () => {
-+      // We use the real focus rather than this.selectedElement because focus
-+      // might have been moved without keyboard navigation (e.g. mouse click)
-+      // and this.selectedElement is only updated for keyboard navigation.
-+      return focus && this._isNavigableWithTabOnly(focus);
-+    };
-+
-+    // If a context menu is open, we must let it handle all keys.
-+    // Normally, this just happens, but because we have a capturing window
-+    // keydown listener, our listener takes precedence.
-+    // Again, we only want to do this check on demand for performance.
-+    const isContextMenuOpen = () => {
-+      if (!focus) {
-+        return false;
-+      }
-+      const contextNode = focus.closest("[context]");
-+      if (!contextNode) {
-+        return false;
-+      }
-+      const context = contextNode.getAttribute("context");
-+      const popup = this.document.getElementById(context);
-+      return popup && popup.state == "open";
-+    };
-+
-+    const keyCode = event.code;
-+    switch (keyCode) {
-+      case "ArrowDown":
-+      case "ArrowUp":
-+        if (tabOnly()) {
-+          break;
-+        }
-+      // Fall-through...
-+      case "Tab": {
-+        if (isContextMenuOpen()) {
-+          break;
-+        }
-+        stop();
-+        const isDown =
-+          keyCode == "ArrowDown" || (keyCode == "Tab" && !event.shiftKey);
-+        const button = this.moveSelection(isDown, keyCode != "Tab");
-+        Services.focus.setFocus(button, Services.focus.FLAG_BYKEY);
-+        break;
-+      }
-+      case "Home":
-+        if (tabOnly() || isContextMenuOpen()) {
-+          break;
-+        }
-+        stop();
-+        this.focusFirstNavigableElement(true);
-+        break;
-+      case "End":
-+        if (tabOnly() || isContextMenuOpen()) {
-+          break;
-+        }
-+        stop();
-+        this.focusLastNavigableElement(true);
-+        break;
-+      case "ArrowLeft":
-+      case "ArrowRight": {
-+        if (tabOnly() || isContextMenuOpen()) {
-+          break;
-+        }
-+        stop();
-+        if (
-+          (!this.window.RTL_UI && keyCode == "ArrowLeft") ||
-+          (this.window.RTL_UI && keyCode == "ArrowRight")
-+        ) {
-+          this.node.panelMultiView.goBack();
-+          break;
-+        }
-+        // If the current button is _not_ one that points to a subview, pressing
-+        // the arrow key shouldn't do anything.
-+        const button = this.selectedElement;
-+        if (!button || !button.classList.contains("subviewbutton-nav")) {
-+          break;
-+        }
-+      }
-+      // Fall-through...
-+      case "Space":
-+      case "NumpadEnter":
-+      case "Enter": {
-+        if (tabOnly() || isContextMenuOpen()) {
-+          break;
-+        }
-+        const button = this.selectedElement;
-+        if (!button) {
-+          break;
-+        }
-+        stop();
-+
-+        this._doingKeyboardActivation = true;
-+        // Unfortunately, 'tabindex' doesn't execute the default action, so
-+        // we explicitly do this here.
-+        // We are sending a command event, a mousedown event and then a click
-+        // event. This is done in order to mimic a "real" mouse click event.
-+        // Normally, the command event executes the action, then the click event
-+        // closes the menu. However, in some cases (e.g. the Library button),
-+        // there is no command event handler and the mousedown event executes the
-+        // action instead.
-+        button.doCommand();
-+        let dispEvent = new event.target.ownerGlobal.MouseEvent("mousedown", {
-+          bubbles: true,
-+        });
-+        button.dispatchEvent(dispEvent);
-+        dispEvent = new event.target.ownerGlobal.MouseEvent("click", {
-+          bubbles: true,
-+        });
-+        button.dispatchEvent(dispEvent);
-+        this._doingKeyboardActivation = false;
-+        break;
-+      }
-+    }
-+  }
-+
-+  /**
-+   * Focus the last selected element in the view, if any.
-+   *
-+   * @param byKey {Boolean} whether focus was moved by the user pressing a key.
-+   *                        Needed to ensure we show focus styles in the right cases.
-+   */
-+  focusSelectedElement(byKey = false) {
-+    const selected = this.selectedElement;
-+    if (selected) {
-+      const flag = byKey ? "FLAG_BYKEY" : "FLAG_BYELEMENTFOCUS";
-+      Services.focus.setFocus(selected, Services.focus[flag]);
-+    }
-+  }
-+
-+  /**
-+   * Clear all traces of keyboard navigation happening right now.
-+   */
-+  clearNavigation() {
-+    const selected = this.selectedElement;
-+    if (selected) {
-+      selected.blur();
-+      this.selectedElement = null;
-+    }
-+  }
-+}
-diff --git a/suite/buoy/modules/SessionStore.sys.mjs b/suite/buoy/modules/SessionStore.sys.mjs
-new file mode 100644
---- /dev/null
-+++ b/suite/buoy/modules/SessionStore.sys.mjs
-@@ -0,0 +1,12 @@
-+/* 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 is a shim for SessionStore in moz-central to prevent bug 1713801. Only
-+ * the methods that appear to be hit by comm-central are implemented.
-+ */
-+export var SessionStore = {
-+  updateSessionStoreFromTablistener(aBrowser, aBrowsingContext, aData) {},
-+  maybeExitCrashedState() {},
-+};
-diff --git a/suite/buoy/moz-l10n/browser/appExtensionFields.ftl b/suite/buoy/moz-l10n/browser/appExtensionFields.ftl
-new file mode 100644
---- /dev/null
-+++ b/suite/buoy/moz-l10n/browser/appExtensionFields.ftl
-@@ -0,0 +1,10 @@
-+# 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/.
-+
-+## Theme names and descriptions used in the Themes panel in about:addons
-+
-+# "Auto" is short for automatic. It can be localized without limitations.
-+extension-default-theme-name-auto=System theme — auto
-+extension-default-theme-description=Follow the operating system setting for buttons, menus, and windows.
-+
-diff --git a/suite/buoy/moz-l10n/browser/branding/brandings.ftl b/suite/buoy/moz-l10n/browser/branding/brandings.ftl
-new file mode 100644
---- /dev/null
-+++ b/suite/buoy/moz-l10n/browser/branding/brandings.ftl
-@@ -0,0 +1,17 @@
-+# 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/.
-+
-+## The following feature names must be treated as a brand.
-+##
-+## They cannot be:
-+## - Transliterated.
-+## - Translated.
-+##
-+## Declension should be avoided where possible, leaving the original
-+## brand unaltered in prominent UI positions.
-+##
-+## For further details, consult:
-+## https://mozilla-l10n.github.io/styleguides/mozilla_general/#brands-copyright-and-trademark
-+
-+-profiler-brand-name = Firefox Profiler
-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,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/moz.build b/suite/moz.build
---- a/suite/moz.build
-+++ b/suite/moz.build
-@@ -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']
- 
- if CONFIG["MAKENSISU"]:
-     DIRS += ["installer/windows"]
- 
- 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
-@@ -99,16 +99,29 @@ def moz_override_cargo_config(enable_rus
- 
- 
- 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"
- )

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

@@ -1,28 +0,0 @@
-# HG changeset patch
-# User Matt A. Tobin <email@mattatobin.com>
-# Date 1659988365 0
-Opt into MOZ_SANDBOX_NULL_BLOCKLIST_OOP
-
-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
- 
- 

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

@@ -1,200 +0,0 @@
-# HG changeset patch
-# User Matt A. Tobin <email@mattatobin.com>
-# Date 1659988365 0
-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 - 172
mzla/comm/revised/WIP-1783623-port1524687-suite.patch

@@ -1,172 +0,0 @@
-# HG changeset patch
-# User Bill Gianopoulos <wgianopoulos@gmail.com>
-# Date 1659988365 0
-# Parent  777be37684c4da6a70a6ca92c9d7717def4b2bc5
-Bug 1783623 - Convert suite binary components registration to components.conf.
-Port Bug 1524687 Part 11  to suite.
-
-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
--};

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

@@ -1,19 +0,0 @@
-# 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

+ 0 - 28
mzla/comm/series

@@ -1,28 +0,0 @@
-9999999-suite-bustage.patch
-9999999-port1898060-1898177-suite-bustage.patch
-9999999-port1900200-suite-bustage.patch
-9999999-port1903050-suite-bustage.patch
-9999999-port1860654-suite-bustage.patch
-9999999-port1908725-suite-bustage.patch
-TOP-1642188-remove-nsDOMIEvent-cc.patch
-TOP-1614671-port1456035-4-and-5-61a1-cc.patch
-TOP-1611647-1-rename-xul-suite.patch
-TOP-1611647-2-fix-xul-references-suite.patch
-TOP-9999999-port1646560-suite-91a1.patch
-TOP-9999999-port1769442-suite-102a1.patch
-TOP-9999999-port1514936-suite-102a1.patch
-PPPPPPP-allow-COMM_REPO-and-COMM-CHANGESET-override.patch
-WIP-9999999-port1712633-suite-90a1.patch
-WIP-1650630-2-port-1603712-suite.patch
-./revised/WIP-1783623-port1524687-suite.patch
-./revised/WIP-9999999-port1770994-suite.patch
-./contrib/null-dll-blocklist-bustage.patch
-./contrib/devtools-with-chrome-clh.patch
-./contrib/add-brand-ftl.patch
-./contrib/remove-global-dtd-useage.patch
-./contrib/about-redirector-jscomp2esmodule.patch
-XXXXXXX-MQSTOP-IN-PROGRESS.patch
-./contrib/diagnostic-buoy-component.patch
-YYYYYYY-MQSTOP-BINOC-MODIFICATIONS.patch
-./binoc/almost-bypass-package-manifest.patch
-ZZZZZZZ-MQSTOP-BINOC-COMMUNIGATOR.patch

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

@@ -1,92 +0,0 @@
-# HG changeset patch
-# User Matt A. Tobin <email@mattatobin.com>
-# Date 1722343983 18000
-#      Tue Jul 30 07:53:03 2024 -0500
-# Node ID 94471478bfc4cc4d5478b3512fe7fbf1f5ee0185
-# Parent  86586b64561f8af869e01db10306b37ea4c4e023
-No Bug - Unrestrict comm apps and account for them
-
-diff --git a/python/mozbuild/mozbuild/base.py b/python/mozbuild/mozbuild/base.py
---- a/python/mozbuild/mozbuild/base.py
-+++ b/python/mozbuild/mozbuild/base.py
-@@ -968,16 +968,25 @@ class MachCommandConditions(object):
-     @staticmethod
-     def is_jsshell(cls):
-         """Must have a jsshell build."""
-         if hasattr(cls, "substs"):
-             return cls.substs.get("MOZ_BUILD_APP") == "js"
-         return False
- 
-     @staticmethod
-+    def is_other_comm_app(cls):
-+        """Must have a non-Thunderbird comm build"""
-+        if hasattr(cls, "substs"):
-+            build_app = cls.substs.get("MOZ_BUILD_APP")
-+            if build_app.startswith("comm/") and not MachCommandConditions.is_thunderbird(cls):
-+               return True
-+        return False
-+
-+    @staticmethod
-     def is_thunderbird(cls):
-         """Must have a Thunderbird build."""
-         if hasattr(cls, "substs"):
-             return cls.substs.get("MOZ_BUILD_APP") == "comm/mail"
-         return False
- 
-     @staticmethod
-     def is_firefox_or_thunderbird(cls):
-@@ -1007,17 +1016,19 @@ class MachCommandConditions(object):
-             cls
-         ) or MachCommandConditions.is_android(cls)
- 
-     @staticmethod
-     def has_build(cls):
-         """Must have a build."""
-         return MachCommandConditions.is_firefox_or_android(
-             cls
--        ) or MachCommandConditions.is_thunderbird(cls)
-+        ) or MachCommandConditions.is_thunderbird(
-+            cls
-+        ) or MachCommandConditions.is_other_comm_app(cls)
- 
-     @staticmethod
-     def has_build_or_shell(cls):
-         """Must have a build or a shell build."""
-         return MachCommandConditions.has_build(cls) or MachCommandConditions.is_jsshell(
-             cls
-         )
- 
-diff --git a/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp b/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp
---- a/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp
-+++ b/security/sandbox/win/src/sandboxbroker/sandboxBroker.cpp
-@@ -360,25 +360,25 @@ Result<Ok, mozilla::ipc::LaunchError> Sa
-     return Err(mozilla::ipc::LaunchError::FromWin32Error("SB::LA::SpawnTarget",
-                                                          last_error));
-   } else if (sandbox::SBOX_ALL_OK != last_warning) {
-     // If there was a warning (but the result was still ok), log it and proceed.
-     LOG_W("Warning on SpawnTarget with last_error=%lu, last_warning=%d",
-           last_error, last_warning);
-   }
- 
--#ifdef MOZ_THUNDERBIRD
--  // In Thunderbird, mInitDllBlocklistOOP is null, so InitDllBlocklistOOP would
-+#if defined(MOZ_THUNDERBIRD) || defined(MOZ_SANDBOX_NULL_BLOCKLIST_OOP)
-+  // In Thunderbird and other comm apps, mInitDllBlocklistOOP is null, so InitDllBlocklistOOP would
-   // hit MOZ_RELEASE_ASSERT.
--  constexpr bool isThunderbird = true;
-+  constexpr bool hasNullDllBlocklistOOP = true;
- #else
--  constexpr bool isThunderbird = false;
-+  constexpr bool hasNullDllBlocklistOOP = false;
- #endif
- 
--  if (!isThunderbird &&
-+  if (!hasNullDllBlocklistOOP &&
-       XRE_GetChildProcBinPathType(aProcessType) == BinPathType::Self) {
-     RefPtr<DllServices> dllSvc(DllServices::Get());
-     LauncherVoidResultWithLineInfo blocklistInitOk =
-         dllSvc->InitDllBlocklistOOP(aPath, targetInfo.hProcess,
-                                     aCachedNtdllThunk, aProcessType);
-     if (blocklistInitOk.isErr()) {
-       dllSvc->HandleLauncherError(blocklistInitOk.unwrapErr(),
-                                   XRE_GeckoProcessTypeToString(aProcessType));

+ 0 - 1
mzla/gre/series

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

+ 0 - 0
sea/comm/binoc/aviary-style-tabs.patch → queue/comm/patches/binoc/aviary-style-tabs.patch


+ 0 - 0
sea/comm/binoc/branding.patch → queue/comm/patches/binoc/branding.patch


+ 0 - 0
sea/comm/binoc/kempelton-altnavi-icons.patch → queue/comm/patches/binoc/kempelton-altnavi-icons.patch


+ 0 - 0
sea/comm/binoc/modern-skin-personal-toolbar-home-icon.patch → queue/comm/patches/binoc/modern-skin-personal-toolbar-home-icon.patch


+ 0 - 0
sea/comm/binoc/modern-skin-remove-navi-groove.patch → queue/comm/patches/binoc/modern-skin-remove-navi-groove.patch


+ 0 - 0
sea/comm/contrib/1912354-domi-inspect-by-keycombo.patch → queue/comm/patches/contrib/1912354-domi-inspect-by-keycombo.patch


+ 0 - 0
sea/comm/contrib/1913787-places-go-menu.patch → queue/comm/patches/contrib/1913787-places-go-menu.patch


+ 0 - 0
sea/comm/contrib/9999999-disable-mailnews.patch → queue/comm/patches/contrib/9999999-disable-mailnews.patch


+ 0 - 0
sea/comm/contrib/9999999-locales-jar-manifest-ifdef-extensions-hack.patch → queue/comm/patches/contrib/9999999-locales-jar-manifest-ifdef-extensions-hack.patch


+ 0 - 0
sea/comm/contrib/9999999-locales-makefile-calendar-ifdef.patch → queue/comm/patches/contrib/9999999-locales-makefile-calendar-ifdef.patch


+ 0 - 0
sea/comm/contrib/9999999-package-manifest-wildcard-chrome-icons.patch → queue/comm/patches/contrib/9999999-package-manifest-wildcard-chrome-icons.patch


+ 0 - 0
sea/comm/contrib/9999999-security-ux.patch → queue/comm/patches/contrib/9999999-security-ux.patch


+ 0 - 0
sea/comm/series → queue/comm/patches/series


+ 0 - 0
sea/gre/binoc/win10-grey-toolbox.patch → queue/mozilla/patches/binoc/win10-grey-toolbox.patch


+ 0 - 0
sea/gre/binoc/win10-toolbox-border-bottom.patch → queue/mozilla/patches/binoc/win10-toolbox-border-bottom.patch


+ 0 - 0
sea/gre/binoc/win10-treecol-border-bottom.patch → queue/mozilla/patches/binoc/win10-treecol-border-bottom.patch


+ 0 - 0
sea/gre/binoc/win10-white-menubar.patch → queue/mozilla/patches/binoc/win10-white-menubar.patch


+ 0 - 0
sea/gre/binoc/win8x-hc-button-fix.patch → queue/mozilla/patches/binoc/win8x-hc-button-fix.patch


+ 0 - 0
sea/gre/series → queue/mozilla/patches/series