Bug 1601094, rename the remaining .xul files in browser/ to .xhtml r=marionette-reviewers,whimboo,mossop
authorEmma Malysz <emalysz@mozilla.com>
Wed, 11 Dec 2019 00:27:19 +0000
changeset 571928 23c591259da010fe4857703af04a6b90458f91de
parent 571927 fe86796921dd80e954f26050046f70346f7447f8
child 571929 6946ebd87ec1600afb48f15efd7d46b96f563a71
push id2247
push userffxbld-merge
push dateMon, 03 Feb 2020 09:19:36 +0000
treeherdermozilla-release@2cf08fbb92b2 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmarionette-reviewers, whimboo, mossop
bugs1601094
milestone73.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1601094, rename the remaining .xul files in browser/ to .xhtml r=marionette-reviewers,whimboo,mossop Differential Revision: https://phabricator.services.mozilla.com/D55751
browser/base/content/aboutDialog-appUpdater-legacy.js
browser/base/content/aboutDialog-appUpdater.js
browser/base/content/aboutDialog.xhtml
browser/base/content/aboutDialog.xul
browser/base/content/browser-places.js
browser/base/content/browser-sidebar.js
browser/base/content/browser-sync.js
browser/base/content/browser.js
browser/base/content/browser.xhtml
browser/base/content/newInstall.xhtml
browser/base/content/newInstall.xul
browser/base/content/nsContextMenu.js
browser/base/content/pageinfo/pageInfo.xhtml
browser/base/content/pageinfo/pageInfo.xul
browser/base/content/safeMode.xhtml
browser/base/content/safeMode.xul
browser/base/content/sanitize.xhtml
browser/base/content/sanitize.xul
browser/base/content/test/sanitize/browser_sanitizeDialog.js
browser/base/content/test/webrtc/head.js
browser/base/content/titlebar-items.inc.xhtml
browser/base/content/titlebar-items.inc.xul
browser/base/content/utilityOverlay.js
browser/base/content/webext-panels.js
browser/base/content/webext-panels.xhtml
browser/base/content/webext-panels.xul
browser/base/content/webrtcIndicator.xhtml
browser/base/content/webrtcIndicator.xul
browser/base/jar.mn
browser/components/BrowserGlue.jsm
browser/components/about/AboutRedirector.cpp
browser/components/downloads/content/contentAreaDownloadsView.xhtml
browser/components/downloads/content/contentAreaDownloadsView.xul
browser/components/downloads/jar.mn
browser/components/downloads/test/browser/head.js
browser/components/enterprisepolicies/tests/browser/browser_policy_disable_profile_import.js
browser/components/enterprisepolicies/tests/browser/disable_app_update/browser_policy_disable_app_update.js
browser/components/extensions/parent/ext-devtools-panels.js
browser/components/extensions/parent/ext-sidebarAction.js
browser/components/migration/MigrationUtils.jsm
browser/components/migration/content/migration.xhtml
browser/components/migration/content/migration.xul
browser/components/migration/jar.mn
browser/components/newtab/test/xpcshell/test_AboutNewTabService.js
browser/components/places/PlacesUIUtils.jsm
browser/components/places/content/bookmarkProperties.xhtml
browser/components/places/content/bookmarkProperties.xul
browser/components/places/content/bookmarksSidebar.xhtml
browser/components/places/content/bookmarksSidebar.xul
browser/components/places/content/historySidebar.js
browser/components/places/content/historySidebar.xhtml
browser/components/places/content/historySidebar.xul
browser/components/places/content/places.xhtml
browser/components/places/content/places.xul
browser/components/places/jar.mn
browser/components/places/tests/browser/browser_bookmarksProperties.js
browser/components/places/tests/browser/head.js
browser/components/preferences/in-content/privacy.js
browser/components/privatebrowsing/test/browser/browser_privatebrowsing_nonbrowser.js
browser/components/shell/content/setDesktopBackground.xhtml
browser/components/shell/content/setDesktopBackground.xul
browser/components/shell/jar.mn
browser/components/urlbar/tests/browser/browser_dragdropURL.js
browser/components/urlbar/tests/ext/browser/browser_ext_urlbar_openClearHistoryDialog.js
browser/installer/allowed-dupes.mn
browser/modules/Sanitizer.jsm
browser/modules/webrtcUI.jsm
dom/base/nsFrameLoader.cpp
testing/firefox-ui/tests/puppeteer/test_windows.py
toolkit/mozapps/update/tests/browser/head.js
--- a/browser/base/content/aboutDialog-appUpdater-legacy.js
+++ b/browser/base/content/aboutDialog-appUpdater-legacy.js
@@ -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/. */
 
-// Note: this file is included in aboutDialog.xul and preferences/advanced.xhtml
+// Note: this file is included in aboutDialog.xhtml and preferences/advanced.xhtml
 // if MOZ_UPDATER is defined.
 
 /* import-globals-from aboutDialog.js */
 
 const PREF_APP_UPDATE_CANCELATIONS_OSX = "app.update.cancelations.osx";
 const PREF_APP_UPDATE_ELEVATE_NEVER = "app.update.elevate.never";
 
 function onUnload(aEvent) {
--- a/browser/base/content/aboutDialog-appUpdater.js
+++ b/browser/base/content/aboutDialog-appUpdater.js
@@ -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/. */
 
-// Note: this file is included in aboutDialog.xul and preferences/advanced.xhtml
+// Note: this file is included in aboutDialog.xhtml and preferences/advanced.xhtml
 // if MOZ_UPDATER is defined.
 
 /* import-globals-from aboutDialog.js */
 
 // These two eslint directives should be removed when we remove handling for the
 // legacy app updater.
 /* eslint-disable prettier/prettier */
 /* global AppUpdater, appUpdater, onUnload */
rename from browser/base/content/aboutDialog.xul
rename to browser/base/content/aboutDialog.xhtml
--- a/browser/base/content/browser-places.js
+++ b/browser/base/content/browser-places.js
@@ -603,17 +603,17 @@ var PlacesCommandHook = {
    *                      AllBookmarks, History, Downloads.
    */
   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://browser/content/places/places.xul",
+        "chrome://browser/content/places/places.xhtml",
         "",
         "chrome,toolbar=yes,dialog=no,resizable",
         item
       );
     } else {
       organizer.PlacesOrganizer.selectLeftPaneContainerByHierarchy(item);
       organizer.focus();
     }
--- a/browser/base/content/browser-sidebar.js
+++ b/browser/base/content/browser-sidebar.js
@@ -12,28 +12,28 @@ var SidebarUI = {
     }
     return (this._sidebars = new Map([
       [
         "viewBookmarksSidebar",
         {
           title: document
             .getElementById("sidebar-switcher-bookmarks")
             .getAttribute("label"),
-          url: "chrome://browser/content/places/bookmarksSidebar.xul",
+          url: "chrome://browser/content/places/bookmarksSidebar.xhtml",
           menuId: "menu_bookmarksSidebar",
           buttonId: "sidebar-switcher-bookmarks",
         },
       ],
       [
         "viewHistorySidebar",
         {
           title: document
             .getElementById("sidebar-switcher-history")
             .getAttribute("label"),
-          url: "chrome://browser/content/places/historySidebar.xul",
+          url: "chrome://browser/content/places/historySidebar.xhtml",
           menuId: "menu_historySidebar",
           buttonId: "sidebar-switcher-history",
           triggerButtonId: "appMenuViewHistorySidebar",
         },
       ],
       [
         "viewTabsSidebar",
         {
--- a/browser/base/content/browser-sync.js
+++ b/browser/base/content/browser-sync.js
@@ -163,17 +163,17 @@ var gSync = {
 
     // Label for the sync buttons.
     if (!this.appMenuLabel) {
       // We are in a window without our elements - just abort now, without
       // setting this._initialized, so we don't attempt to remove observers.
       return;
     }
     // We start with every menuitem hidden (except for the "setup sync" state),
-    // so that we don't need to init the sync UI on windows like pageInfo.xul
+    // so that we don't need to init the sync UI on windows like pageInfo.xhtml
     // (see bug 1384856).
     // maybeUpdateUIState() also optimizes for this - if we should be in the
     // "setup sync" state, that function assumes we are already in it and
     // doesn't re-initialize the UI elements.
     document.getElementById("sync-setup").hidden = false;
     document.getElementById("PanelUI-remotetabs-setupsync").hidden = false;
 
     for (let topic of this._obs) {
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -3235,17 +3235,17 @@ function BrowserPageInfo(
       currentWindow.focus();
       currentWindow.resetPageInfo(args);
       return currentWindow;
     }
   }
 
   // We didn't find a matching window, so open a new one.
   return openDialog(
-    "chrome://browser/content/pageinfo/pageInfo.xul",
+    "chrome://browser/content/pageinfo/pageInfo.xhtml",
     "",
     "chrome,toolbar,dialog=no,resizable",
     args
   );
 }
 
 /**
  * Sets the URI to display in the location bar.
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
@@ -689,17 +689,17 @@
 #endif
                context="toolbar-context-menu">
         <toolbaritem id="menubar-items" align="center">
 # The entire main menubar is placed into browser-menubar.inc, so that it can be
 # shared with other top level windows in macWindow.inc.xhtml.
 #include browser-menubar.inc
         </toolbaritem>
         <spacer flex="1" skipintoolbarset="true" ordinal="1000"/>
-#include titlebar-items.inc.xul
+#include titlebar-items.inc.xhtml
       </toolbar>
 
       <toolbar id="TabsToolbar"
                class="browser-toolbar titlebar-color"
                fullscreentoolbar="true"
                customizable="true"
                customizationtarget="TabsToolbar-customization-target"
                mode="icons"
@@ -758,17 +758,17 @@
         <hbox class="titlebar-spacer" type="post-tabs"/>
 
 #ifndef XP_MACOSX
         <button class="accessibility-indicator" tooltiptext="&accessibilityIndicator.tooltip;"
                 aria-live="polite"/>
         <hbox class="private-browsing-indicator"/>
 #endif
 
-#include titlebar-items.inc.xul
+#include titlebar-items.inc.xhtml
 
 #ifdef XP_MACOSX
         <!-- OS X does not natively support RTL for its titlebar items, so we prevent this secondary
              buttonbox from reversing order in RTL by forcing an LTR direction. -->
         <hbox id="titlebar-secondary-buttonbox" dir="ltr">
           <button class="accessibility-indicator" tooltiptext="&accessibilityIndicator.tooltip;" aria-live="polite"/>
           <hbox class="private-browsing-indicator"/>
           <hbox id="titlebar-fullscreen-button"/>
rename from browser/base/content/newInstall.xul
rename to browser/base/content/newInstall.xhtml
--- a/browser/base/content/nsContextMenu.js
+++ b/browser/base/content/nsContextMenu.js
@@ -1327,17 +1327,17 @@ class nsContextMenu {
         let image = document.createElementNS(
           "http://www.w3.org/1999/xhtml",
           "img"
         );
         image.src = dataURL;
 
         // Confirm since it's annoying if you hit this accidentally.
         const kDesktopBackgroundURL =
-          "chrome://browser/content/setDesktopBackground.xul";
+          "chrome://browser/content/setDesktopBackground.xhtml";
 
         if (AppConstants.platform == "macosx") {
           // On Mac, the Set Desktop Background window is not modal.
           // Don't open more than one Set Desktop Background window.
           let dbWin = Services.wm.getMostRecentWindow(
             "Shell:SetDesktopBackground"
           );
           if (dbWin) {
rename from browser/base/content/pageinfo/pageInfo.xul
rename to browser/base/content/pageinfo/pageInfo.xhtml
rename from browser/base/content/safeMode.xul
rename to browser/base/content/safeMode.xhtml
rename from browser/base/content/sanitize.xul
rename to browser/base/content/sanitize.xhtml
--- a/browser/base/content/test/sanitize/browser_sanitizeDialog.js
+++ b/browser/base/content/test/sanitize/browser_sanitizeDialog.js
@@ -773,17 +773,17 @@ WindowHelper.prototype = {
       // Retrieve the browser window so we can specify it as the parent
       // of the dialog to simulate the way the user opens the dialog
       // on Windows and Linux.
       browserWin = Services.wm.getMostRecentWindow("navigator:browser");
     }
 
     Services.ww.openWindow(
       browserWin,
-      "chrome://browser/content/sanitize.xul",
+      "chrome://browser/content/sanitize.xhtml",
       "SanitizeDialog",
       "chrome,titlebar,dialog,centerscreen,modal",
       null
     );
   },
 
   /**
    * Selects a duration in the duration dropdown.
--- a/browser/base/content/test/webrtc/head.js
+++ b/browser/base/content/test/webrtc/head.js
@@ -44,17 +44,18 @@ function promiseIndicatorWindow() {
   }
 
   return new Promise(resolve => {
     Services.obs.addObserver(function obs(win) {
       win.addEventListener(
         "load",
         function() {
           if (
-            win.location.href !== "chrome://browser/content/webrtcIndicator.xul"
+            win.location.href !==
+            "chrome://browser/content/webrtcIndicator.xhtml"
           ) {
             info("ignoring a window with this url: " + win.location.href);
             return;
           }
 
           Services.obs.removeObserver(obs, "domwindowopened");
           executeSoon(() => resolve(win));
         },
rename from browser/base/content/titlebar-items.inc.xul
rename to browser/base/content/titlebar-items.inc.xhtml
--- a/browser/base/content/utilityOverlay.js
+++ b/browser/base/content/utilityOverlay.js
@@ -986,17 +986,17 @@ function openAboutDialog() {
   if (AppConstants.platform == "win") {
     features += "centerscreen,dependent";
   } else if (AppConstants.platform == "macosx") {
     features += "resizable=no,minimizable=no";
   } else {
     features += "centerscreen,dependent,dialog=no";
   }
 
-  window.openDialog("chrome://browser/content/aboutDialog.xul", "", features);
+  window.openDialog("chrome://browser/content/aboutDialog.xhtml", "", features);
 }
 
 function openPreferences(paneID, extraArgs) {
   // This function is duplicated from preferences.js.
   function internalPrefCategoryNameToFriendlyName(aName) {
     return (aName || "").replace(/^pane./, function(toReplace) {
       return toReplace[4].toLowerCase();
     });
--- a/browser/base/content/webext-panels.js
+++ b/browser/base/content/webext-panels.js
@@ -1,14 +1,14 @@
 /* -*- indent-tabs-mode: nil; js-indent-level: 4 -*- */
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
-// Via webext-panels.xul
+// Via webext-panels.xhtml
 /* import-globals-from browser.js */
 /* import-globals-from nsContextMenu.js */
 
 ChromeUtils.defineModuleGetter(
   this,
   "ExtensionParent",
   "resource://gre/modules/ExtensionParent.jsm"
 );
rename from browser/base/content/webext-panels.xul
rename to browser/base/content/webext-panels.xhtml
rename from browser/base/content/webrtcIndicator.xul
rename to browser/base/content/webrtcIndicator.xhtml
--- a/browser/base/jar.mn
+++ b/browser/base/jar.mn
@@ -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/.
 browser.jar:
 %  content browser %content/browser/ contentaccessible=yes
 
         content/browser/aboutDialog-appUpdater.js     (content/aboutDialog-appUpdater.js)
         content/browser/aboutDialog-appUpdater-legacy.js     (content/aboutDialog-appUpdater-legacy.js)
-*       content/browser/aboutDialog.xul               (content/aboutDialog.xul)
+*       content/browser/aboutDialog.xhtml                    (content/aboutDialog.xhtml)
         content/browser/aboutDialog.js                (content/aboutDialog.js)
         content/browser/aboutDialog.css               (content/aboutDialog.css)
         content/browser/aboutRestartRequired.js       (content/aboutRestartRequired.js)
         content/browser/aboutRestartRequired.xhtml    (content/aboutRestartRequired.xhtml)
         content/browser/aboutRobots.xhtml             (content/aboutRobots.xhtml)
         content/browser/aboutRobots.js                (content/aboutRobots.js)
         content/browser/aboutRobots.css               (content/aboutRobots.css)
 
@@ -74,56 +74,56 @@ browser.jar:
         content/browser/defaultthemes/3.preview.png   (content/defaultthemes/3.preview.png)
         content/browser/defaultthemes/4.header.png    (content/defaultthemes/4.header.png)
         content/browser/defaultthemes/4.icon.png      (content/defaultthemes/4.icon.png)
         content/browser/defaultthemes/4.preview.png   (content/defaultthemes/4.preview.png)
         content/browser/defaultthemes/5.header.png    (content/defaultthemes/5.header.png)
         content/browser/defaultthemes/5.icon.jpg      (content/defaultthemes/5.icon.jpg)
         content/browser/defaultthemes/5.preview.jpg   (content/defaultthemes/5.preview.jpg)
         content/browser/history-swipe-arrow.svg       (content/history-swipe-arrow.svg)
-*       content/browser/pageinfo/pageInfo.xul         (content/pageinfo/pageInfo.xul)
+*       content/browser/pageinfo/pageInfo.xhtml       (content/pageinfo/pageInfo.xhtml)
         content/browser/pageinfo/pageInfo.js          (content/pageinfo/pageInfo.js)
         content/browser/pageinfo/pageInfo.css         (content/pageinfo/pageInfo.css)
         content/browser/pageinfo/permissions.js       (content/pageinfo/permissions.js)
         content/browser/pageinfo/security.js          (content/pageinfo/security.js)
         content/browser/content-refreshblocker.js     (content/content-refreshblocker.js)
         content/browser/robot.ico                     (content/robot.ico)
         content/browser/static-robot.png              (content/static-robot.png)
         content/browser/safeMode.css                  (content/safeMode.css)
         content/browser/safeMode.js                   (content/safeMode.js)
-        content/browser/safeMode.xul                  (content/safeMode.xul)
-        content/browser/sanitize.xul                  (content/sanitize.xul)
+        content/browser/safeMode.xhtml                (content/safeMode.xhtml)
+        content/browser/sanitize.xhtml                (content/sanitize.xhtml)
         content/browser/sanitizeDialog.js             (content/sanitizeDialog.js)
         content/browser/sanitizeDialog.css            (content/sanitizeDialog.css)
         content/browser/contentSearchUI.js            (content/contentSearchUI.js)
         content/browser/contentSearchUI.css           (content/contentSearchUI.css)
         content/browser/tabbrowser.css                (content/tabbrowser.css)
         content/browser/tabbrowser.js                 (content/tabbrowser.js)
         content/browser/tabbrowser-tab.js             (content/tabbrowser-tab.js)
         content/browser/tabbrowser-tabs.js            (content/tabbrowser-tabs.js)
         content/browser/utilityOverlay.js             (content/utilityOverlay.js)
         content/browser/webext-panels.js              (content/webext-panels.js)
-*       content/browser/webext-panels.xul             (content/webext-panels.xul)
+*       content/browser/webext-panels.xhtml           (content/webext-panels.xhtml)
         content/browser/nsContextMenu.js              (content/nsContextMenu.js)
         content/browser/contentTheme.js               (content/contentTheme.js)
 #ifdef XP_MACOSX
 # XXX: We should exclude this one as well (bug 71895)
 *       content/browser/hiddenWindowMac.xhtml         (content/hiddenWindowMac.xhtml)
         content/browser/nonbrowser-mac.js             (content/nonbrowser-mac.js)
 #endif
 #ifndef XP_MACOSX
-*       content/browser/webrtcIndicator.xul           (content/webrtcIndicator.xul)
+*       content/browser/webrtcIndicator.xhtml           (content/webrtcIndicator.xhtml)
         content/browser/webrtcIndicator.js            (content/webrtcIndicator.js)
 #endif
 # the following files are browser-specific overrides
 *       content/browser/license.html                  (/toolkit/content/license.html)
 % override chrome://global/content/license.html chrome://browser/content/license.html
         content/browser/blockedSite.xhtml               (content/blockedSite.xhtml)
         content/browser/blockedSite.js                  (content/blockedSite.js)
-        content/browser/newInstall.xul                (content/newInstall.xul)
+        content/browser/newInstall.xhtml                (content/newInstall.xhtml)
         content/browser/newInstall.js                 (content/newInstall.js)
         content/browser/newInstallPage.html           (content/newInstallPage.html)
         content/browser/newInstallPage.js             (content/newInstallPage.js)
 
 % override chrome://global/content/netError.xhtml chrome://browser/content/aboutNetError.xhtml
 
 # L10n resources and overrides.
 % override chrome://global/locale/appstrings.properties chrome://browser/locale/appstrings.properties
--- a/browser/components/BrowserGlue.jsm
+++ b/browser/components/BrowserGlue.jsm
@@ -160,18 +160,18 @@ let ACTORS = {
     },
     includeChrome: true,
     allFrames: true,
     matches: [
       "about:home",
       "about:newtab",
       "about:welcome",
       "chrome://browser/content/syncedtabs/sidebar.xhtml",
-      "chrome://browser/content/places/historySidebar.xul",
-      "chrome://browser/content/places/bookmarksSidebar.xul",
+      "chrome://browser/content/places/historySidebar.xhtml",
+      "chrome://browser/content/places/bookmarksSidebar.xhtml",
     ],
   },
 
   LinkHandler: {
     parent: {
       moduleURI: "resource:///actors/LinkHandlerParent.jsm",
     },
     child: {
@@ -1142,17 +1142,17 @@ BrowserGlue.prototype = {
     } else {
       PdfJs.earlyInit();
     }
 
     // check if we're in safe mode
     if (Services.appinfo.inSafeMode) {
       Services.ww.openWindow(
         null,
-        "chrome://browser/content/safeMode.xul",
+        "chrome://browser/content/safeMode.xhtml",
         "_blank",
         "chrome,centerscreen,modal,resizable=no",
         null
       );
     }
 
     // apply distribution customizations
     this._distributionCustomizer.applyCustomizations();
@@ -1913,17 +1913,17 @@ BrowserGlue.prototype = {
 
       let stack = win.gBrowser.getPanel().querySelector(".browserStack");
       let mask = win.document.createElementNS(XULNS, "box");
       mask.setAttribute("id", "content-mask");
       stack.appendChild(mask);
 
       Services.ww.openWindow(
         win,
-        "chrome://browser/content/newInstall.xul",
+        "chrome://browser/content/newInstall.xhtml",
         "_blank",
         "chrome,modal,resizable=no,centerscreen",
         null
       );
       mask.remove();
     });
   },
 
--- a/browser/components/about/AboutRedirector.cpp
+++ b/browser/components/about/AboutRedirector.cpp
@@ -104,17 +104,17 @@ static const RedirEntry kRedirMap[] = {
     {"pocket-signup", "chrome://pocket/content/panels/signup.html",
      nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
          nsIAboutModule::URI_CAN_LOAD_IN_CHILD | nsIAboutModule::ALLOW_SCRIPT |
          nsIAboutModule::HIDE_FROM_ABOUTABOUT},
     {"preferences",
      "chrome://browser/content/preferences/in-content/preferences.xhtml",
      nsIAboutModule::ALLOW_SCRIPT},
     {"downloads",
-     "chrome://browser/content/downloads/contentAreaDownloadsView.xul",
+     "chrome://browser/content/downloads/contentAreaDownloadsView.xhtml",
      nsIAboutModule::ALLOW_SCRIPT},
     {"reader", "chrome://global/content/reader/aboutReader.html",
      nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
          nsIAboutModule::ALLOW_SCRIPT | nsIAboutModule::URI_MUST_LOAD_IN_CHILD |
          nsIAboutModule::HIDE_FROM_ABOUTABOUT},
     {"restartrequired", "chrome://browser/content/aboutRestartRequired.xhtml",
      nsIAboutModule::ALLOW_SCRIPT | nsIAboutModule::HIDE_FROM_ABOUTABOUT},
     {"newinstall", "chrome://browser/content/newInstallPage.html",
rename from browser/components/downloads/content/contentAreaDownloadsView.xul
rename to browser/components/downloads/content/contentAreaDownloadsView.xhtml
--- a/browser/components/downloads/jar.mn
+++ b/browser/components/downloads/jar.mn
@@ -2,12 +2,12 @@
 # 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/.
 
 browser.jar:
         content/browser/downloads/downloads.css          (content/downloads.css)
         content/browser/downloads/downloads.js           (content/downloads.js)
         content/browser/downloads/indicator.js           (content/indicator.js)
         content/browser/downloads/allDownloadsView.js    (content/allDownloadsView.js)
-*       content/browser/downloads/contentAreaDownloadsView.xul (content/contentAreaDownloadsView.xul)
+*       content/browser/downloads/contentAreaDownloadsView.xhtml (content/contentAreaDownloadsView.xhtml)
         content/browser/downloads/contentAreaDownloadsView.js  (content/contentAreaDownloadsView.js)
         content/browser/downloads/contentAreaDownloadsView.css (content/contentAreaDownloadsView.css)
         content/browser/downloads/downloadsCommands.js         (content/downloadsCommands.js)
--- a/browser/components/downloads/test/browser/head.js
+++ b/browser/components/downloads/test/browser/head.js
@@ -179,17 +179,17 @@ function startServer() {
 function httpUrl(aFileName) {
   return (
     "http://localhost:" + gHttpServer.identity.primaryPort + "/" + aFileName
   );
 }
 
 function openLibrary(aLeftPaneRoot) {
   let library = window.openDialog(
-    "chrome://browser/content/places/places.xul",
+    "chrome://browser/content/places/places.xhtml",
     "",
     "chrome,toolbar=yes,dialog=no,resizable",
     aLeftPaneRoot
   );
 
   return new Promise(resolve => {
     waitForFocus(resolve, library);
   });
--- a/browser/components/enterprisepolicies/tests/browser/browser_policy_disable_profile_import.js
+++ b/browser/components/enterprisepolicies/tests/browser/browser_policy_disable_profile_import.js
@@ -1,16 +1,16 @@
 /* Any copyright is dedicated to the Public Domain.
  * http://creativecommons.org/publicdomain/zero/1.0/ */
 "use strict";
 
 async function openLibrary() {
   return new Promise(resolve => {
     let library = window.openDialog(
-      "chrome://browser/content/places/places.xul",
+      "chrome://browser/content/places/places.xhtml",
       "",
       "chrome,toolbar=yes,dialog=no,resizable"
     );
     waitForFocus(() => resolve(library), library);
   });
 }
 
 add_task(async function test_disable_profile_import() {
--- a/browser/components/enterprisepolicies/tests/browser/disable_app_update/browser_policy_disable_app_update.js
+++ b/browser/components/enterprisepolicies/tests/browser/disable_app_update/browser_policy_disable_app_update.js
@@ -67,17 +67,17 @@ add_task(async function test_update_abou
 function waitForAboutDialog() {
   return new Promise(resolve => {
     var listener = {
       onOpenWindow: aXULWindow => {
         Services.wm.removeListener(listener);
 
         async function aboutDialogOnLoad() {
           domwindow.removeEventListener("load", aboutDialogOnLoad, true);
-          let chromeURI = "chrome://browser/content/aboutDialog.xul";
+          let chromeURI = "chrome://browser/content/aboutDialog.xhtml";
           is(
             domwindow.document.location.href,
             chromeURI,
             "About dialog appeared"
           );
           resolve(domwindow);
         }
 
--- a/browser/components/extensions/parent/ext-devtools-panels.js
+++ b/browser/components/extensions/parent/ext-devtools-panels.js
@@ -15,17 +15,17 @@ ChromeUtils.defineModuleGetter(
   "BroadcastConduit",
   "resource://gre/modules/ConduitsParent.jsm"
 );
 
 var { IconDetails, watchExtensionProxyContextLoad } = ExtensionParent;
 
 var { promiseDocumentLoaded } = ExtensionUtils;
 
-const WEBEXT_PANELS_URL = "chrome://browser/content/webext-panels.xul";
+const WEBEXT_PANELS_URL = "chrome://browser/content/webext-panels.xhtml";
 
 class BaseDevToolsPanel {
   constructor(context, panelOptions) {
     const toolbox = context.devToolsToolbox;
     if (!toolbox) {
       // This should never happen when this constructor is called with a valid
       // devtools extension context.
       throw Error("Missing mandatory toolbox");
@@ -442,17 +442,17 @@ class ParentDevToolsInspectorSidebar ext
     if (this.containerEl && this.panelOptions.url) {
       this.createBrowserElement(this.containerEl.contentWindow);
     }
   }
 
   onExtensionPageMount(containerEl) {
     this.containerEl = containerEl;
 
-    // Wait the webext-panel.xul page to have been loaded in the
+    // Wait the webext-panel.xhtml page to have been loaded in the
     // inspector sidebar panel.
     promiseDocumentLoaded(containerEl.contentDocument).then(() => {
       this.createBrowserElement(containerEl.contentWindow);
     });
   }
 
   onExtensionPageUnmount() {
     this.containerEl = null;
--- a/browser/components/extensions/parent/ext-sidebarAction.js
+++ b/browser/components/extensions/parent/ext-sidebarAction.js
@@ -12,17 +12,17 @@ var { ExtensionParent } = ChromeUtils.im
 
 var { ExtensionError } = ExtensionUtils;
 
 var { IconDetails } = ExtensionParent;
 
 // WeakMap[Extension -> SidebarAction]
 let sidebarActionMap = new WeakMap();
 
-const sidebarURL = "chrome://browser/content/webext-panels.xul";
+const sidebarURL = "chrome://browser/content/webext-panels.xhtml";
 
 /**
  * Responsible for the sidebar_action section of the manifest as well
  * as the associated sidebar browser.
  */
 this.sidebarAction = class extends ExtensionAPI {
   static for(extension) {
     return sidebarActionMap.get(extension);
--- a/browser/components/migration/MigrationUtils.jsm
+++ b/browser/components/migration/MigrationUtils.jsm
@@ -991,17 +991,17 @@ var MigrationUtils = Object.freeze({
         params.appendElement(comtaminatedVal);
       }
     } else {
       params = aParams;
     }
 
     Services.ww.openWindow(
       aOpener,
-      "chrome://browser/content/migration/migration.xul",
+      "chrome://browser/content/migration/migration.xhtml",
       "_blank",
       features,
       params
     );
   },
 
   /**
    * Show the migration wizard for startup-migration.  This should only be
@@ -1013,17 +1013,17 @@ var MigrationUtils = Object.freeze({
    *        the nsIProfileStartup instance provided to ProfileMigrator.migrate.
    * @param [optional] aMigratorKey
    *        If set, the migration wizard will import from the corresponding
    *        migrator, bypassing the source-selection page.  Otherwise, the
    *        source-selection page will be displayed, either with the default
    *        browser selected, if it could be detected and if there is a
    *        migrator for it, or with the first option selected as a fallback
    *        (The first option is hardcoded to be the most common browser for
-   *         the OS we run on.  See migration.xul).
+   *         the OS we run on.  See migration.xhtml).
    * @param [optional] aProfileToMigrate
    *        If set, the migration wizard will import from the profile indicated.
    * @throws if aMigratorKey is invalid or if it points to a non-existent
    *         source.
    */
   startupMigration: function MU_startupMigrator(
     aProfileStartup,
     aMigratorKey,
rename from browser/components/migration/content/migration.xul
rename to browser/components/migration/content/migration.xhtml
--- a/browser/components/migration/jar.mn
+++ b/browser/components/migration/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/.
 
 browser.jar:
-*  content/browser/migration/migration.xul                    (content/migration.xul)
+*  content/browser/migration/migration.xhtml                  (content/migration.xhtml)
    content/browser/migration/migration.js                     (content/migration.js)
    content/browser/aboutWelcomeBack.xhtml                     (content/aboutWelcomeBack.xhtml)
--- a/browser/components/newtab/test/xpcshell/test_AboutNewTabService.js
+++ b/browser/components/newtab/test/xpcshell/test_AboutNewTabService.js
@@ -16,17 +16,17 @@ XPCOMUtils.defineLazyServiceGetter(
   "aboutNewTabService",
   "@mozilla.org/browser/aboutnewtab-service;1",
   "nsIAboutNewTabService"
 );
 
 const IS_RELEASE_OR_BETA = AppConstants.RELEASE_OR_BETA;
 
 const DOWNLOADS_URL =
-  "chrome://browser/content/downloads/contentAreaDownloadsView.xul";
+  "chrome://browser/content/downloads/contentAreaDownloadsView.xhtml";
 const SEPARATE_PRIVILEGED_CONTENT_PROCESS_PREF =
   "browser.tabs.remote.separatePrivilegedContentProcess";
 const ACTIVITY_STREAM_DEBUG_PREF = "browser.newtabpage.activity-stream.debug";
 
 function cleanup() {
   Services.prefs.clearUserPref(SEPARATE_PRIVILEGED_CONTENT_PROCESS_PREF);
   Services.prefs.clearUserPref(ACTIVITY_STREAM_DEBUG_PREF);
   aboutNewTabService.resetNewTabURL();
--- a/browser/components/places/PlacesUIUtils.jsm
+++ b/browser/components/places/PlacesUIUtils.jsm
@@ -305,18 +305,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://browser/content/places/bookmarkProperties2.xul"
-      : "chrome://browser/content/places/bookmarkProperties.xul";
+      ? "chrome://browser/content/places/bookmarkProperties2.xhtml"
+      : "chrome://browser/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;
rename from browser/components/places/content/bookmarkProperties.xul
rename to browser/components/places/content/bookmarkProperties.xhtml
rename from browser/components/places/content/bookmarksSidebar.xul
rename to browser/components/places/content/bookmarksSidebar.xhtml
--- a/browser/components/places/content/historySidebar.js
+++ b/browser/components/places/content/historySidebar.js
@@ -119,17 +119,17 @@ function searchHistory(aInput) {
   options.resultType = resultType;
   options.includeHidden = !!aInput;
 
   if (gHistoryGrouping == "lastvisited") {
     TelemetryStopwatch.start("HISTORY_LASTVISITED_TREE_QUERY_TIME_MS");
   }
 
   // call load() on the tree manually
-  // instead of setting the place attribute in historySidebar.xul
+  // instead of setting the place attribute in historySidebar.xhtml
   // otherwise, we will end up calling load() twice
   gHistoryTree.load(query, options);
 
   if (gHistoryGrouping == "lastvisited") {
     TelemetryStopwatch.finish("HISTORY_LASTVISITED_TREE_QUERY_TIME_MS");
   }
 }
 
rename from browser/components/places/content/historySidebar.xul
rename to browser/components/places/content/historySidebar.xhtml
rename from browser/components/places/content/places.xul
rename to browser/components/places/content/places.xhtml
--- a/browser/components/places/jar.mn
+++ b/browser/components/places/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/.
 
 browser.jar:
 # Provide another URI for the bookmarkProperties dialog so we can persist the
 # attributes separately
-*   content/browser/places/bookmarkProperties2.xul       (content/bookmarkProperties.xul)
-*   content/browser/places/places.xul                    (content/places.xul)
+*   content/browser/places/bookmarkProperties2.xhtml     (content/bookmarkProperties.xhtml)
+*   content/browser/places/places.xhtml                  (content/places.xhtml)
     content/browser/places/places.js                     (content/places.js)
     content/browser/places/places.css                    (content/places.css)
-*   content/browser/places/bookmarkProperties.xul        (content/bookmarkProperties.xul)
+*   content/browser/places/bookmarkProperties.xhtml      (content/bookmarkProperties.xhtml)
     content/browser/places/bookmarkProperties.js         (content/bookmarkProperties.js)
     content/browser/places/places-menupopup.js           (content/places-menupopup.js)
     content/browser/places/places-tree.js                (content/places-tree.js)
     content/browser/places/controller.js                 (content/controller.js)
     content/browser/places/treeView.js                   (content/treeView.js)
     content/browser/places/browserPlacesViews.js         (content/browserPlacesViews.js)
-*   content/browser/places/historySidebar.xul            (content/historySidebar.xul)
+*   content/browser/places/historySidebar.xhtml          (content/historySidebar.xhtml)
     content/browser/places/historySidebar.js             (content/historySidebar.js)
-*   content/browser/places/bookmarksSidebar.xul          (content/bookmarksSidebar.xul)
+*   content/browser/places/bookmarksSidebar.xhtml        (content/bookmarksSidebar.xhtml)
     content/browser/places/bookmarksSidebar.js           (content/bookmarksSidebar.js)
     content/browser/places/editBookmark.js               (content/editBookmark.js)
--- a/browser/components/places/tests/browser/browser_bookmarksProperties.js
+++ b/browser/components/places/tests/browser/browser_bookmarksProperties.js
@@ -26,19 +26,19 @@ const ACTION_ADD = 1;
 
 // If action is ACTION_ADD, set type to one of those, to define what do you
 // want to create.
 const TYPE_FOLDER = 0;
 const TYPE_BOOKMARK = 1;
 
 const TEST_URL = "http://www.example.com/";
 
-const DIALOG_URL = "chrome://browser/content/places/bookmarkProperties.xul";
+const DIALOG_URL = "chrome://browser/content/places/bookmarkProperties.xhtml";
 const DIALOG_URL_MINIMAL_UI =
-  "chrome://browser/content/places/bookmarkProperties2.xul";
+  "chrome://browser/content/places/bookmarkProperties2.xhtml";
 
 const { BrowserWindowTracker } = ChromeUtils.import(
   "resource:///modules/BrowserWindowTracker.jsm"
 );
 var win = BrowserWindowTracker.getTopWindow();
 
 function add_bookmark(url) {
   return PlacesUtils.bookmarks.insert({
--- a/browser/components/places/tests/browser/head.js
+++ b/browser/components/places/tests/browser/head.js
@@ -6,17 +6,17 @@ ChromeUtils.defineModuleGetter(
 ChromeUtils.defineModuleGetter(
   this,
   "TestUtils",
   "resource://testing-common/TestUtils.jsm"
 );
 
 function openLibrary(callback, aLeftPaneRoot) {
   let library = window.openDialog(
-    "chrome://browser/content/places/places.xul",
+    "chrome://browser/content/places/places.xhtml",
     "",
     "chrome,toolbar=yes,dialog=no,resizable",
     aLeftPaneRoot
   );
   waitForFocus(function() {
     callback(library);
   }, library);
 
--- a/browser/components/preferences/in-content/privacy.js
+++ b/browser/components/preferences/in-content/privacy.js
@@ -1337,17 +1337,17 @@ var gPrivacyPane = {
     var ts = Preferences.get("privacy.sanitize.timeSpan");
     var timeSpanOrig = ts.value;
 
     if (aClearEverything) {
       ts.value = 0;
     }
 
     gSubDialog.open(
-      "chrome://browser/content/sanitize.xul",
+      "chrome://browser/content/sanitize.xhtml",
       "resizable=no",
       null,
       () => {
         // reset the timeSpan pref
         if (aClearEverything) {
           ts.value = timeSpanOrig;
         }
 
--- a/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_nonbrowser.js
+++ b/browser/components/privatebrowsing/test/browser/browser_privatebrowsing_nonbrowser.js
@@ -3,17 +3,17 @@
 /**
  * Tests that we fire the last-pb-context-exited observer notification
  * when the last private browsing window closes, even if a chrome window
  * was opened from that private browsing window.
  */
 add_task(async function() {
   let win = await BrowserTestUtils.openNewBrowserWindow({ private: true });
   let chromeWin = win.open(
-    "chrome://browser/content/places/places.xul",
+    "chrome://browser/content/places/places.xhtml",
     "_blank",
     "chrome,extrachrome,menubar,resizable,scrollbars,status,toolbar"
   );
   await BrowserTestUtils.waitForEvent(chromeWin, "load");
   let obsPromise = TestUtils.topicObserved("last-pb-context-exited");
   await BrowserTestUtils.closeWindow(win);
   await obsPromise;
   Assert.ok(true, "Got the last-pb-context-exited notification");
rename from browser/components/shell/content/setDesktopBackground.xul
rename to browser/components/shell/content/setDesktopBackground.xhtml
--- a/browser/components/shell/jar.mn
+++ b/browser/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/.
 
 browser.jar:
-*       content/browser/setDesktopBackground.xul              (content/setDesktopBackground.xul)
+*       content/browser/setDesktopBackground.xhtml            (content/setDesktopBackground.xhtml)
         content/browser/setDesktopBackground.js               (content/setDesktopBackground.js)
--- a/browser/components/urlbar/tests/browser/browser_dragdropURL.js
+++ b/browser/components/urlbar/tests/browser/browser_dragdropURL.js
@@ -63,17 +63,17 @@ add_task(async function checkDragURL() {
 });
 
 add_task(async function checkDragForbiddenURL() {
   await BrowserTestUtils.withNewTab(TEST_URL, function(browser) {
     // See also browser_removeUnsafeProtocolsFromURLBarPaste.js for other
     // examples. In general we trust that function, we pick some testcases to
     // ensure we disallow dropping trimmed text.
     for (let url of [
-      "chrome://browser/content/aboutDialog.xul",
+      "chrome://browser/content/aboutDialog.xhtml",
       "file:///",
       "javascript:",
       "javascript:void(0)",
       "java\r\ns\ncript:void(0)",
       " javascript:void(0)",
       "\u00A0java\nscript:void(0)",
       "javascript:document.domain",
       "javascript:javascript:alert('hi!')",
--- a/browser/components/urlbar/tests/ext/browser/browser_ext_urlbar_openClearHistoryDialog.js
+++ b/browser/components/urlbar/tests/ext/browser/browser_ext_urlbar_openClearHistoryDialog.js
@@ -39,17 +39,17 @@ async function checkExtension(isPrivate 
   let dialogPromise = new Promise((resolve, reject) => {
     function onOpen(subj, topic, data) {
       if (topic == "domwindowopened" && subj instanceof Ci.nsIDOMWindow) {
         subj.addEventListener(
           "load",
           function() {
             if (
               subj.document.documentURI ==
-              "chrome://browser/content/sanitize.xul"
+              "chrome://browser/content/sanitize.xhtml"
             ) {
               Services.ww.unregisterNotification(onOpen);
               Assert.ok(true, "Observed Clear Recent History window open");
               // On macOS the Clear Recent History dialog gets opened as an
               // app-modal window, so its opener is null.
               is(
                 subj.opener,
                 AppConstants.platform == "macosx" ? null : window,
--- a/browser/installer/allowed-dupes.mn
+++ b/browser/installer/allowed-dupes.mn
@@ -12,18 +12,18 @@ updater.app/Contents/PkgInfo
 browser/chrome.manifest
 # browser branding / themes is bug 1313106
 browser/chrome/browser/content/branding/icon16.png
 browser/chrome/browser/content/branding/icon32.png
 browser/chrome/browser/content/branding/icon48.png
 browser/chrome/browser/content/branding/icon64.png
 browser/chrome/browser/content/browser/defaultthemes/5.header.png
 browser/chrome/browser/content/browser/extension.svg
-browser/chrome/browser/content/browser/places/bookmarkProperties.xul
-browser/chrome/browser/content/browser/places/bookmarkProperties2.xul
+browser/chrome/browser/content/browser/places/bookmarkProperties.xhtml
+browser/chrome/browser/content/browser/places/bookmarkProperties2.xhtml
 browser/chrome/browser/skin/classic/browser/addons/addon-install-confirm.svg
 browser/chrome/browser/skin/classic/browser/connection-secure.svg
 browser/chrome/browser/skin/classic/browser/controlcenter/warning-gray.svg
 # devtools reduction is bug 1311178
 browser/chrome/devtools/content/dom/content/dom-view.css
 browser/chrome/devtools/content/dom/index.html
 browser/chrome/devtools/content/dom/main.js
 browser/chrome/devtools/content/framework/toolbox-options.js
--- a/browser/modules/Sanitizer.jsm
+++ b/browser/modules/Sanitizer.jsm
@@ -118,17 +118,17 @@ var Sanitizer = {
    */
   showUI(parentWindow) {
     let win =
       AppConstants.platform == "macosx"
         ? null // make this an app-modal window on Mac
         : parentWindow;
     Services.ww.openWindow(
       win,
-      "chrome://browser/content/sanitize.xul",
+      "chrome://browser/content/sanitize.xhtml",
       "Sanitize",
       "chrome,titlebar,dialog,centerscreen,modal",
       null
     );
   },
 
   /**
    * Performs startup tasks:
--- a/browser/modules/webrtcUI.jsm
+++ b/browser/modules/webrtcUI.jsm
@@ -1327,17 +1327,18 @@ function removePrompt(aBrowser, aCallId)
   );
   if (notification && notification.callID == aCallId) {
     notification.remove();
   }
 }
 
 function getGlobalIndicator() {
   if (AppConstants.platform != "macosx") {
-    const INDICATOR_CHROME_URI = "chrome://browser/content/webrtcIndicator.xul";
+    const INDICATOR_CHROME_URI =
+      "chrome://browser/content/webrtcIndicator.xhtml";
     const features = "chrome,dialog=yes,titlebar=no,popup=yes";
 
     return Services.ww.openWindow(
       null,
       INDICATOR_CHROME_URI,
       "_blank",
       features,
       []
--- a/dom/base/nsFrameLoader.cpp
+++ b/dom/base/nsFrameLoader.cpp
@@ -2547,17 +2547,17 @@ bool nsFrameLoader::TryRemoteBrowserInte
       if (NS_FAILED(parentURI->GetSpecIgnoringRef(specIgnoringRef))) {
         return false;
       }
 
       if (!(specIgnoringRef.EqualsLiteral("about:addons") ||
             specIgnoringRef.EqualsLiteral(
                 "chrome://mozapps/content/extensions/aboutaddons.html") ||
             specIgnoringRef.EqualsLiteral(
-                "chrome://browser/content/webext-panels.xul"))) {
+                "chrome://browser/content/webext-panels.xhtml"))) {
         return false;
       }
     }
 
     if (!mOwnerContent->IsXULElement()) {
       return false;
     }
 
--- a/testing/firefox-ui/tests/puppeteer/test_windows.py
+++ b/testing/firefox-ui/tests/puppeteer/test_windows.py
@@ -63,17 +63,17 @@ class TestWindows(PuppeteerMixin, Marion
         self.browser.switch_to()
 
         self.assertEqual(len(self.puppeteer.windows.all), 1)
 
     def test_switch_to_unknown_window_type(self):
         def open_by_js(_):
             with self.marionette.using_context('chrome'):
                 self.marionette.execute_script("""
-                  window.open('chrome://browser/content/safeMode.xul', '_blank',
+                  window.open('chrome://browser/content/safeMode.xhtml', '_blank',
                               'chrome,centerscreen,resizable=no');
                 """)
 
         win = self.browser.open_window(callback=open_by_js, expected_window_class=BaseWindow)
         win.close()
         self.browser.switch_to()
 
 
--- a/toolkit/mozapps/update/tests/browser/head.js
+++ b/toolkit/mozapps/update/tests/browser/head.js
@@ -505,17 +505,17 @@ function waitForAboutDialog() {
   return new Promise(resolve => {
     var listener = {
       onOpenWindow: aXULWindow => {
         debugDump("About dialog shown...");
         Services.wm.removeListener(listener);
 
         async function aboutDialogOnLoad() {
           domwindow.removeEventListener("load", aboutDialogOnLoad, true);
-          let chromeURI = "chrome://browser/content/aboutDialog.xul";
+          let chromeURI = "chrome://browser/content/aboutDialog.xhtml";
           is(
             domwindow.document.location.href,
             chromeURI,
             "About dialog appeared"
           );
           resolve(domwindow);
         }