Bug 1473165 - Migrate OSX hidden window from xul to xhtml
MozReview-Commit-ID: IGvLoBLNCcR
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -16,17 +16,17 @@
#
#ifdef XP_UNIX
#ifndef XP_MACOSX
#define UNIX_BUT_NOT_MAC
#endif
#endif
-pref("browser.hiddenWindowChromeURL", "chrome://browser/content/hiddenWindow.xul");
+pref("browser.hiddenWindowChromeURL", "chrome://browser/content/hiddenWindowMac.xhtml");
// Enables some extra Extension System Logging (can reduce performance)
pref("extensions.logging.enabled", false);
// Disables strict compatibility, making addons compatible-by-default.
pref("extensions.strictCompatibility", false);
// Temporary preference to forcibly make themes more safe with Australis even if
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
@@ -21,17 +21,17 @@
<?xml-stylesheet href="chrome://browser/skin/customizableui/panelUI.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/skin/downloads/downloads.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/skin/searchbar.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/skin/places/places.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/skin/places/editBookmark.css" type="text/css"?>
<?xml-stylesheet href="chrome://browser/skin/compacttheme.css" type="text/css" alternate="yes" title="Light/Dark"?>
# All DTD information is stored in a separate file so that it can be shared by
-# hiddenWindow.xul.
+# hiddenWindowMac.xhtml.
<!DOCTYPE html [
#include browser-doctype.inc
]>
<html id="main-window"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
rename from browser/base/content/hiddenWindow.xul
rename to browser/base/content/hiddenWindowMac.xhtml
--- a/browser/base/content/hiddenWindow.xul
+++ b/browser/base/content/hiddenWindowMac.xhtml
@@ -2,31 +2,31 @@
# -*- Mode: HTML -*-
#
# 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://browser/skin/webRTC-indicator.css" type="text/css"?>
-<!DOCTYPE window [
+<!DOCTYPE html [
#include browser-doctype.inc
]>
-<window id="main-window"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+<html id="main-window"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
#include macWindow.inc.xul
<!-- Dock menu -->
<popupset>
<menupopup id="menu_mac_dockmenu">
<!-- The command cannot be cmd_newNavigator because we need to activate
the application. -->
<menuitem label="&newNavigatorCmd.label;" oncommand="OpenBrowserWindowFromDockMenu();"
id="macDockMenuNewWindow" />
<menuitem label="&newPrivateWindow.label;" oncommand="OpenBrowserWindowFromDockMenu({private: true});"
id="macDockMenuNewPrivateWindow" />
</menupopup>
</popupset>
-</window>
+</html>
--- a/browser/base/content/moz.build
+++ b/browser/base/content/moz.build
@@ -144,17 +144,17 @@ with Files("browser-safebrowsing.js"):
BUG_COMPONENT = ("Toolkit", "Safe Browsing")
with Files("browser-sync.js"):
BUG_COMPONENT = ("Firefox", "Sync")
with Files("contentSearch*"):
BUG_COMPONENT = ("Firefox", "Search")
-with Files("hiddenWindow.xul"):
+with Files("hiddenWindowMac.xhtml"):
BUG_COMPONENT = ("Firefox", "Device Permissions")
with Files("macWindow.inc.xul"):
BUG_COMPONENT = ("Firefox", "Shell Integration")
with Files("tabbrowser*"):
BUG_COMPONENT = ("Firefox", "Tabbed Browser")
--- a/browser/base/jar.mn
+++ b/browser/base/jar.mn
@@ -98,17 +98,17 @@ browser.jar:
* content/browser/urlbarBindings.xml (content/urlbarBindings.xml)
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/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/hiddenWindow.xul (content/hiddenWindow.xul)
+* 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.js (content/webrtcIndicator.js)
#endif
# the following files are browser-specific overrides
* content/browser/license.html (/toolkit/content/license.html)
--- a/browser/modules/webrtcUI.jsm
+++ b/browser/modules/webrtcUI.jsm
@@ -564,17 +564,17 @@ function prompt(aBrowser, aRequest) {
label.setAttribute("accesskey",
stringBundle.getString(gumStringId + ".accesskey"));
// "Select <type>" is the default because we can't pick a
// 'default' window to share.
addDeviceToList(menupopup,
stringBundle.getString("getUserMedia.pick" + typeName + ".label"),
"-1");
- menupopup.appendChild(doc.createElement("menuseparator"));
+ menupopup.appendChild(doc.createXULElement("menuseparator"));
// Build the list of 'devices'.
let monitorIndex = 1;
for (let i = 0; i < devices.length; ++i) {
let device = devices[i];
let name;
// Building screen list from available screens.
@@ -633,17 +633,17 @@ function prompt(aBrowser, aRequest) {
let string;
let bundle = chromeWin.gNavigatorBundle;
let learnMoreText =
bundle.getString("getUserMedia.shareScreen.learnMoreLabel");
let baseURL =
Services.urlFormatter.formatURLPref("app.support.baseURL");
- let learnMore = chromeWin.document.createElement("label");
+ let learnMore = chromeWin.document.createXULElement("label");
learnMore.className = "text-link";
learnMore.setAttribute("href", baseURL + "screenshare-safety");
learnMore.textContent = learnMoreText;
if (type == "screen") {
string = bundle.getFormattedString("getUserMedia.shareScreenWarning.message",
["<>"]);
} else {
@@ -680,17 +680,17 @@ function prompt(aBrowser, aRequest) {
video.play();
};
});
};
menupopup.addEventListener("command", menupopup._commandEventListener);
}
function addDeviceToList(menupopup, deviceName, deviceIndex, type) {
- let menuitem = doc.createElement("menuitem");
+ let menuitem = doc.createXULElement("menuitem");
menuitem.setAttribute("value", deviceIndex);
menuitem.setAttribute("label", deviceName);
menuitem.setAttribute("tooltiptext", deviceName);
if (type)
menuitem.setAttribute("devicetype", type);
if (deviceIndex == "-1")
menuitem.setAttribute("disabled", true);
@@ -905,44 +905,44 @@ function getGlobalIndicator() {
}
let bundle =
Services.strings.createBundle("chrome://browser/locale/webrtcIndicator.properties");
if (activeStreams.length == 1) {
let stream = activeStreams[0];
- let menuitem = this.ownerDocument.createElement("menuitem");
+ let menuitem = this.ownerDocument.createXULElement("menuitem");
let labelId = "webrtcIndicator.sharing" + type + "With.menuitem";
let label = stream.browser.contentTitle || stream.uri;
menuitem.setAttribute("label", bundle.formatStringFromName(labelId, [label], 1));
menuitem.setAttribute("disabled", "true");
this.appendChild(menuitem);
- menuitem = this.ownerDocument.createElement("menuitem");
+ menuitem = this.ownerDocument.createXULElement("menuitem");
menuitem.setAttribute("label",
bundle.GetStringFromName("webrtcIndicator.controlSharing.menuitem"));
menuitem.stream = stream;
menuitem.addEventListener("command", indicator._command);
this.appendChild(menuitem);
return true;
}
// We show a different menu when there are several active streams.
- let menuitem = this.ownerDocument.createElement("menuitem");
+ let menuitem = this.ownerDocument.createXULElement("menuitem");
let labelId = "webrtcIndicator.sharing" + type + "WithNTabs.menuitem";
let count = activeStreams.length;
let label = PluralForm.get(count, bundle.GetStringFromName(labelId)).replace("#1", count);
menuitem.setAttribute("label", label);
menuitem.setAttribute("disabled", "true");
this.appendChild(menuitem);
for (let stream of activeStreams) {
- let item = this.ownerDocument.createElement("menuitem");
+ let item = this.ownerDocument.createXULElement("menuitem");
labelId = "webrtcIndicator.controlSharingOn.menuitem";
label = stream.browser.contentTitle || stream.uri;
item.setAttribute("label", bundle.formatStringFromName(labelId, [label], 1));
item.stream = stream;
item.addEventListener("command", indicator._command);
this.appendChild(item);
}
@@ -952,25 +952,25 @@ function getGlobalIndicator() {
_popupHiding(aEvent) {
while (this.firstChild)
this.firstChild.remove();
},
_setIndicatorState(aName, aState) {
let field = "_" + aName.toLowerCase();
if (aState && !this[field]) {
- let menu = this._hiddenDoc.createElement("menu");
+ let menu = this._hiddenDoc.createXULElement("menu");
menu.setAttribute("id", "webRTC-sharing" + aName + "-menu");
// The CSS will only be applied if the menu is actually inserted in the DOM.
this._hiddenDoc.documentElement.appendChild(menu);
this._statusBar.addItem(menu);
- let menupopup = this._hiddenDoc.createElement("menupopup");
+ let menupopup = this._hiddenDoc.createXULElement("menupopup");
menupopup.setAttribute("type", aName);
menupopup.addEventListener("popupshowing", this._popupShowing);
menupopup.addEventListener("popuphiding", this._popupHiding);
menupopup.addEventListener("command", this._command);
menu.appendChild(menupopup);
this[field] = menu;
} else if (this[field] && !aState) {
@@ -1006,17 +1006,17 @@ function onTabSharingMenuPopupShowing(e)
stringName += "Microphone";
if (types.screen)
stringName += types.screen;
let doc = e.target.ownerDocument;
let bundle = doc.defaultView.gNavigatorBundle;
let origin = getHostOrExtensionName(null, streamInfo.uri);
- let menuitem = doc.createElement("menuitem");
+ let menuitem = doc.createXULElement("menuitem");
menuitem.setAttribute("label", bundle.getFormattedString(stringName, [origin]));
menuitem.stream = streamInfo;
menuitem.addEventListener("command", onTabSharingMenuPopupCommand);
e.target.appendChild(menuitem);
}
}
function onTabSharingMenuPopupHiding(e) {
@@ -1028,35 +1028,35 @@ function onTabSharingMenuPopupCommand(e)
webrtcUI.showSharingDoorhanger(e.target.stream);
}
function showOrCreateMenuForWindow(aWindow) {
let document = aWindow.document;
let menu = document.getElementById("tabSharingMenu");
if (!menu) {
let stringBundle = aWindow.gNavigatorBundle;
- menu = document.createElement("menu");
+ menu = document.createXULElement("menu");
menu.id = "tabSharingMenu";
let labelStringId = "getUserMedia.sharingMenu.label";
menu.setAttribute("label", stringBundle.getString(labelStringId));
let container, insertionPoint;
if (AppConstants.platform == "macosx") {
container = document.getElementById("windowPopup");
insertionPoint = document.getElementById("sep-window-list");
- let separator = document.createElement("menuseparator");
+ let separator = document.createXULElement("menuseparator");
separator.id = "tabSharingSeparator";
container.insertBefore(separator, insertionPoint);
} else {
let accesskeyStringId = "getUserMedia.sharingMenu.accesskey";
menu.setAttribute("accesskey", stringBundle.getString(accesskeyStringId));
container = document.getElementById("main-menubar");
insertionPoint = document.getElementById("helpMenu");
}
- let popup = document.createElement("menupopup");
+ let popup = document.createXULElement("menupopup");
popup.id = "tabSharingMenuPopup";
popup.addEventListener("popupshowing", onTabSharingMenuPopupShowing);
popup.addEventListener("popuphiding", onTabSharingMenuPopupHiding);
menu.appendChild(popup);
container.insertBefore(menu, insertionPoint);
} else {
menu.hidden = false;
if (AppConstants.platform == "macosx") {