Browse Source

Revise mzla/comm to include a sync'd series

nsITobin 2 months ago
parent
commit
4b0bfbdb40
25 changed files with 10116 additions and 20 deletions
  1. 98 0
      mzla/comm/9999999-port1860654-suite-bustage.patch
  2. 63 0
      mzla/comm/9999999-port1898060-1898177-suite-bustage.patch
  3. 44 0
      mzla/comm/9999999-port1900200-suite-bustage.patch
  4. 40 0
      mzla/comm/9999999-port1903050-suite-bustage.patch
  5. 524 0
      mzla/comm/9999999-port1908725-suite-bustage.patch
  6. 54 0
      mzla/comm/9999999-suite-bustage.patch
  7. 22 0
      mzla/comm/PPPPPPP-allow-COMM_REPO-and-COMM-CHANGESET-override.patch
  8. 554 0
      mzla/comm/TOP-1611647-1-rename-xul-suite.patch
  9. 6227 0
      mzla/comm/TOP-1611647-2-fix-xul-references-suite.patch
  10. 2028 0
      mzla/comm/TOP-1614671-port1456035-4-and-5-61a1-cc.patch
  11. 28 0
      mzla/comm/TOP-1642188-remove-nsDOMIEvent-cc.patch
  12. 171 0
      mzla/comm/TOP-9999999-port1514936-suite-102a1.patch
  13. 94 0
      mzla/comm/TOP-9999999-port1646560-suite-91a1.patch
  14. 31 0
      mzla/comm/TOP-9999999-port1769442-suite-102a1.patch
  15. 58 0
      mzla/comm/WIP-1650630-2-port-1603712-suite.patch
  16. 30 0
      mzla/comm/WIP-9999999-port1712633-suite-90a1.patch
  17. 2 1
      mzla/comm/binoc/almost-bypass-package-manifest.patch
  18. 2 1
      mzla/comm/contrib/about-redirector-jscomp2esmodule.patch
  19. 2 1
      mzla/comm/contrib/add-brand-ftl.patch
  20. 18 4
      mzla/comm/contrib/devtools-with-chrome-clh.patch
  21. 1 4
      mzla/comm/contrib/diagnostic-buoy-component.patch
  22. 3 1
      mzla/comm/contrib/null-dll-blocklist-bustage.patch
  23. 2 1
      mzla/comm/contrib/remove-global-dtd-useage.patch
  24. 1 3
      mzla/comm/revised/WIP-1783623-port1524687-suite.patch
  25. 19 4
      mzla/comm/series

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

@@ -0,0 +1,98 @@
+# 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"
+ )

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

@@ -0,0 +1,94 @@
+# 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;
+     }

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

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

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

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

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

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

+ 2 - 1
mzla/comm/binoc/almost-bypass-package-manifest.patch

@@ -1,5 +1,6 @@
 # HG changeset patch
 # HG changeset patch
-# Parent  8b878d7b749f1bff5f5e3105f467291931e5ce15
+# User Matt A. Tobin <email@mattatobin.com>
+# Date 1659988365 0
 imported patch X-Y-almost-bypass-package-manifest.patch
 imported patch X-Y-almost-bypass-package-manifest.patch
 
 
 diff --git a/suite/installer/package-manifest.in b/suite/installer/package-manifest.in
 diff --git a/suite/installer/package-manifest.in b/suite/installer/package-manifest.in

+ 2 - 1
mzla/comm/contrib/about-redirector-jscomp2esmodule.patch

@@ -1,5 +1,6 @@
 # HG changeset patch
 # HG changeset patch
-# Parent  d0e3865901bf5bbd89e867d75fdd19e01c9c72d9
+# User Matt A. Tobin <email@mattatobin.com>
+# Date 1659988365 0
 9999999 - Update suite AboutRedirector and change about: to about:version
 9999999 - Update suite AboutRedirector and change about: to about:version
 
 
 diff --git a/suite/base/content/utilityOverlay.js b/suite/base/content/utilityOverlay.js
 diff --git a/suite/base/content/utilityOverlay.js b/suite/base/content/utilityOverlay.js

+ 2 - 1
mzla/comm/contrib/add-brand-ftl.patch

@@ -1,5 +1,6 @@
 # HG changeset patch
 # HG changeset patch
-# Parent  8f495a6b4c58609a5f55eafb91730c15be843f3d
+# User Matt A. Tobin <email@mattatobin.com>
+# Date 1659988365 0
 9999999 - Add brand.ftl to suite branding
 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
 diff --git a/suite/branding/seamonkey/locales/en-US/brand.ftl b/suite/branding/seamonkey/locales/en-US/brand.ftl

+ 18 - 4
mzla/comm/contrib/devtools-with-chrome-clh.patch

@@ -1,12 +1,13 @@
 # HG changeset patch
 # HG changeset patch
-# Parent  b3e728f818ba5e2841516a4e3e22b1876063f4d9
+# User Matt A. Tobin <email@mattatobin.com>
+# Date 1659988365 0
 9999999 - Port a slightly modified version of devtools-loader to suite.
 9999999 - Port a slightly modified version of devtools-loader to suite.
 Also, includes the --chrome flag normally handled by nsBrowserContentHandler.
 Also, includes the --chrome flag normally handled by nsBrowserContentHandler.
 
 
 diff --git a/suite/browser/nsBrowserContentHandler.js b/suite/browser/nsBrowserContentHandler.js
 diff --git a/suite/browser/nsBrowserContentHandler.js b/suite/browser/nsBrowserContentHandler.js
 --- a/suite/browser/nsBrowserContentHandler.js
 --- a/suite/browser/nsBrowserContentHandler.js
 +++ b/suite/browser/nsBrowserContentHandler.js
 +++ b/suite/browser/nsBrowserContentHandler.js
-@@ -389,16 +389,18 @@ var nsBrowserContentHandler = {
+@@ -389,28 +389,31 @@ var nsBrowserContentHandler = {
                                   nsIBrowserDOMWindow.OPEN_NEWTAB,
                                   nsIBrowserDOMWindow.OPEN_NEWTAB,
                                   features,
                                   features,
                                   Services.scriptSecurityManager.getSystemPrincipal());
                                   Services.scriptSecurityManager.getSystemPrincipal());
@@ -15,8 +16,8 @@ diff --git a/suite/browser/nsBrowserContentHandler.js b/suite/browser/nsBrowserC
      } catch (e) {
      } catch (e) {
      }
      }
  
  
-+    /* XXXTobin: This is currently located in the devtools-loader clh until
-+       this component is converted */
++    /* XXXTobin: This code is currently relocated into the devtools-loader clh
++       until this component is converted to an ESModule.
      try {
      try {
        var chromeParam = cmdLine.handleFlagWithParam("chrome", false);
        var chromeParam = cmdLine.handleFlagWithParam("chrome", false);
        if (chromeParam) {
        if (chromeParam) {
@@ -25,6 +26,19 @@ diff --git a/suite/browser/nsBrowserContentHandler.js b/suite/browser/nsBrowserC
          if (!Services.netUtils.URIChainHasFlags(uri, URI_INHERITS_SECURITY_CONTEXT)) {
          if (!Services.netUtils.URIChainHasFlags(uri, URI_INHERITS_SECURITY_CONTEXT)) {
            openWindow(null, uri.spec, features);
            openWindow(null, uri.spec, features);
            cmdLine.preventDefault = true;
            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
 diff --git a/suite/components/devtools/all-devtools.js b/suite/components/devtools/all-devtools.js
 new file mode 100644
 new file mode 100644
 --- /dev/null
 --- /dev/null

+ 1 - 4
mzla/comm/contrib/diagnostic-buoy-component.patch

@@ -1,9 +1,6 @@
 # HG changeset patch
 # HG changeset patch
 # User Matt A. Tobin <email@mattatobin.com>
 # User Matt A. Tobin <email@mattatobin.com>
-# Date 1722362462 18000
-#      Tue Jul 30 13:01:02 2024 -0500
-# Node ID e82da9c74fb387f15d559cf2df9afcc01058c5a5
-# Parent  9cd645ab3ebd72330c3f34df2926153d2ef380c2
+# Date 1659988365 0
 No Bug - Create an isolated dianostic component for the suite.
 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
 diff --git a/suite/buoy/ATTN-CC-SUITE-PATCHERS.txt b/suite/buoy/ATTN-CC-SUITE-PATCHERS.txt

+ 3 - 1
mzla/comm/contrib/null-dll-blocklist-bustage.patch

@@ -1,5 +1,7 @@
 # HG changeset patch
 # HG changeset patch
-# Parent  b81ed902e5bd3d481b261dc97857c653d2731793
+# 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
 diff --git a/suite/moz.configure b/suite/moz.configure
 --- a/suite/moz.configure
 --- a/suite/moz.configure

+ 2 - 1
mzla/comm/contrib/remove-global-dtd-useage.patch

@@ -1,5 +1,6 @@
 # HG changeset patch
 # HG changeset patch
-# Parent  a674849f791666a677b8c6ce64c600f8a34b1cb6
+# User Matt A. Tobin <email@mattatobin.com>
+# Date 1659988365 0
 9999999 - Remove usage of global.dtd from about pages
 9999999 - Remove usage of global.dtd from about pages
 
 
 Suite's about:certerror is no longer used in central so it remains unchanged.
 Suite's about:certerror is no longer used in central so it remains unchanged.

+ 1 - 3
mzla/comm/revised/WIP-1783623-port1524687-suite.patch

@@ -1,12 +1,10 @@
 # HG changeset patch
 # HG changeset patch
 # User Bill Gianopoulos <wgianopoulos@gmail.com>
 # User Bill Gianopoulos <wgianopoulos@gmail.com>
 # Date 1659988365 0
 # Date 1659988365 0
-# Parent  04388517dee01037fe43756e98dff2776ffbb87b
+# Parent  777be37684c4da6a70a6ca92c9d7717def4b2bc5
 Bug 1783623 - Convert suite binary components registration to components.conf.
 Bug 1783623 - Convert suite binary components registration to components.conf.
 Port Bug 1524687 Part 11  to suite.
 Port Bug 1524687 Part 11  to suite.
 
 
-(Altered to exclude nsAbout changes on 2024-17-30)
-
 diff --git a/suite/components/build/components.conf b/suite/components/build/components.conf
 diff --git a/suite/components/build/components.conf b/suite/components/build/components.conf
 new file mode 100644
 new file mode 100644
 --- /dev/null
 --- /dev/null

+ 19 - 4
mzla/comm/series

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