--- a/MozillaFirefox/MozillaFirefox.changes Thu Sep 05 08:27:52 2019 +0200
+++ b/MozillaFirefox/MozillaFirefox.changes Fri Sep 06 18:28:48 2019 +0200
@@ -1,4 +1,24 @@
-------------------------------------------------------------------
+Thu Sep 5 13:02:39 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org>
+
+- Mozilla Firefox 69.0
+ * Enhanced Tracking Protection (ETP) for stronger privacy protections
+ * Block Autoplay feature is enhanced to give users the option to block
+ any video
+ * Users in the US or using the en-US browser, can get a new “New Tab”
+ page experience connecting to the best of Pocket's content.
+ * Support for the Web Authentication HmacSecret extension via
+ Windows Hello introduced.
+ * Support for receiving multiple video codecs with this release makes
+ it easier for WebRTC conferencing services to mix video from
+ different clients.
+- requires
+ * rust/cargo >= 1.35
+ * rust-cbindgen >= 0.9.0
+ * mozilla-nss >= 3.45
+- rebased patches
+
+-------------------------------------------------------------------
Wed Sep 4 15:38:40 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org>
- added a bunch of patches mainly for big endian platforms
--- a/MozillaFirefox/MozillaFirefox.spec Thu Sep 05 08:27:52 2019 +0200
+++ b/MozillaFirefox/MozillaFirefox.spec Fri Sep 06 18:28:48 2019 +0200
@@ -72,7 +72,7 @@
%else
BuildRequires: gcc-c++
%endif
-BuildRequires: cargo >= 1.34
+BuildRequires: cargo >= 1.35
BuildRequires: libXcomposite-devel
BuildRequires: libcurl-devel
BuildRequires: libidl-devel
@@ -81,14 +81,14 @@
BuildRequires: libproxy-devel
BuildRequires: makeinfo
BuildRequires: mozilla-nspr-devel >= 4.21
-BuildRequires: mozilla-nss-devel >= 3.44.1
+BuildRequires: mozilla-nss-devel >= 3.45
BuildRequires: nasm >= 2.13
BuildRequires: nodejs >= 8.11
BuildRequires: python-devel
BuildRequires: python2-xml
BuildRequires: python3 >= 3.5
-BuildRequires: rust >= 1.34
-BuildRequires: rust-cbindgen >= 0.8.7
+BuildRequires: rust >= 1.35
+BuildRequires: rust-cbindgen >= 0.9.0
BuildRequires: startup-notification-devel
BuildRequires: unzip
BuildRequires: update-desktop-files
@@ -285,7 +285,7 @@
# If generated incorrectly, the tarball will be ~270B in
# size, so 1MB seems like good enough limit to check.
MINSIZE=1048576
-if (( $(stat -c%s "%{SOURCE7}") < MINSIZE)); then
+if (( $(stat -Lc%s "%{SOURCE7}") < MINSIZE)); then
echo "Translations tarball %{SOURCE7} not generated properly."
exit 1
fi
--- a/MozillaFirefox/source-stamp.txt Thu Sep 05 08:27:52 2019 +0200
+++ b/MozillaFirefox/source-stamp.txt Fri Sep 06 18:28:48 2019 +0200
@@ -1,2 +1,2 @@
-REV=380fedbb18002297f1b233bd9c09764e59ddaa86
-REPO=http://hg.mozilla.org/releases/mozilla-esr68
+REV=cce4622026ab8e0130a0afc03f829f9b19ca38c2
+REPO=http://hg.mozilla.org/releases/mozilla-release
--- a/firefox-kde.patch Thu Sep 05 08:27:52 2019 +0200
+++ b/firefox-kde.patch Fri Sep 06 18:28:48 2019 +0200
@@ -11,1408 +11,6 @@
4. Replace #ifndef with #ifdef in the line above (this hanges the button order from Gnome-style to KDE-style)
5. hg qrefresh
-diff --git a/browser/base/content/browser-kde.xul b/browser/base/content/browser-kde.xul
-new file mode 100644
---- /dev/null
-+++ b/browser/base/content/browser-kde.xul
-@@ -0,0 +1,1375 @@
-+#filter substitution
-+<?xml version="1.0"?>
-+# -*- 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/.
-+
-+<!-- The "global.css" stylesheet is imported first to allow other stylesheets to
-+ override rules using selectors with the same specificity. This applies to
-+ both "content" and "skin" packages, which bug 1385444 will unify later. -->
-+<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
-+
-+<!-- While these stylesheets are defined in Toolkit, they are only used in the
-+ main browser window, so we can load them here. Bug 1474241 is on file to
-+ consider moving these widgets to the "browser" folder. -->
-+<?xml-stylesheet href="chrome://global/content/tabprompts.css" type="text/css"?>
-+<?xml-stylesheet href="chrome://global/skin/tabprompts.css" type="text/css"?>
-+
-+<?xml-stylesheet href="chrome://browser/content/browser.css" type="text/css"?>
-+<?xml-stylesheet href="chrome://browser/content/tabbrowser.css" type="text/css"?>
-+<?xml-stylesheet href="chrome://browser/content/downloads/downloads.css" type="text/css"?>
-+<?xml-stylesheet href="chrome://browser/content/places/places.css" type="text/css"?>
-+<?xml-stylesheet href="chrome://browser/content/usercontext/usercontext.css" type="text/css"?>
-+<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
-+<?xml-stylesheet href="chrome://browser/skin/controlcenter/panel.css" type="text/css"?>
-+<?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/tree-icons.css" type="text/css"?>
-+<?xml-stylesheet href="chrome://browser/skin/places/editBookmark.css" type="text/css"?>
-+
-+# All DTD information is stored in a separate file so that it can be shared by
-+# hiddenWindow.xul.
-+<!DOCTYPE window [
-+#include browser-doctype.inc
-+]>
-+
-+<window id="main-window"
-+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-+ xmlns:svg="http://www.w3.org/2000/svg"
-+ xmlns:html="http://www.w3.org/1999/xhtml"
-+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-+ title="&mainWindow.title;"
-+ title_normal="&mainWindow.title;"
-+#ifdef XP_MACOSX
-+ title_privatebrowsing="&mainWindow.title;&mainWindow.titlemodifiermenuseparator;&mainWindow.titlePrivateBrowsingSuffix;"
-+ titledefault="&mainWindow.title;"
-+ titlemodifier=""
-+ titlemodifier_normal=""
-+ titlemodifier_privatebrowsing="&mainWindow.titlePrivateBrowsingSuffix;"
-+#else
-+ title_privatebrowsing="&mainWindow.titlemodifier; &mainWindow.titlePrivateBrowsingSuffix;"
-+ titlemodifier="&mainWindow.titlemodifier;"
-+ titlemodifier_normal="&mainWindow.titlemodifier;"
-+ titlemodifier_privatebrowsing="&mainWindow.titlemodifier; &mainWindow.titlePrivateBrowsingSuffix;"
-+#endif
-+#ifdef XP_WIN
-+ chromemargin="0,2,2,2"
-+#else
-+ chromemargin="0,-1,-1,-1"
-+#endif
-+ tabsintitlebar="true"
-+ titlemenuseparator="&mainWindow.titlemodifiermenuseparator;"
-+ windowtype="navigator:browser"
-+ macanimationtype="document"
-+ screenX="4" screenY="4"
-+ fullscreenbutton="true"
-+ sizemode="normal"
-+ retargetdocumentfocus="urlbar"
-+ persist="screenX screenY width height sizemode"
-+#ifdef BROWSER_XHTML
-+ mozpersist=""
-+#endif
-+ >
-+
-+# All JS files which are needed by browser.xul and other top level windows to
-+# support MacOS specific features *must* go into the global-scripts.inc file so
-+# that they can be shared with macWindow.inc.xul.
-+#include global-scripts.inc
-+
-+<script>
-+ Services.scriptloader.loadSubScript("chrome://global/content/contentAreaUtils.js", this);
-+ Services.scriptloader.loadSubScript("chrome://browser/content/browser-captivePortal.js", this);
-+ Services.scriptloader.loadSubScript("chrome://browser/content/browser-contentblocking.js", this);
-+#ifdef MOZ_DATA_REPORTING
-+ Services.scriptloader.loadSubScript("chrome://browser/content/browser-data-submission-info-bar.js", this);
-+#endif
-+#ifndef MOZILLA_OFFICIAL
-+ Services.scriptloader.loadSubScript("chrome://browser/content/browser-development-helpers.js", this);
-+#endif
-+ Services.scriptloader.loadSubScript("chrome://browser/content/browser-media.js", this);
-+ Services.scriptloader.loadSubScript("chrome://browser/content/browser-pageActions.js", this);
-+ Services.scriptloader.loadSubScript("chrome://browser/content/browser-plugins.js", this);
-+ Services.scriptloader.loadSubScript("chrome://browser/content/browser-sidebar.js", this);
-+ Services.scriptloader.loadSubScript("chrome://browser/content/browser-tabsintitlebar.js", this);
-+ Services.scriptloader.loadSubScript("chrome://browser/content/tabbrowser.js", this);
-+ Services.scriptloader.loadSubScript("chrome://browser/content/search/autocomplete-popup.js", this);
-+ Services.scriptloader.loadSubScript("chrome://browser/content/search/searchbar.js", this);
-+
-+ window.onload = gBrowserInit.onLoad.bind(gBrowserInit);
-+ window.onunload = gBrowserInit.onUnload.bind(gBrowserInit);
-+ window.onclose = WindowIsClosing;
-+
-+ window.addEventListener("MozBeforeInitialXULLayout",
-+ gBrowserInit.onBeforeInitialXULLayout.bind(gBrowserInit), { once: true });
-+
-+ // The listener of DOMContentLoaded must be set on window, rather than
-+ // document, because the window can go away before the event is fired.
-+ // In that case, we don't want to initialize anything, otherwise we
-+ // may be leaking things because they will never be destroyed after.
-+ window.addEventListener("DOMContentLoaded",
-+ gBrowserInit.onDOMContentLoaded.bind(gBrowserInit), { once: true });
-+</script>
-+
-+# All sets except for popupsets (commands, keys, and stringbundles)
-+# *must* go into the browser-sets.inc file so that they can be shared with other
-+# top level windows in macWindow.inc.xul.
-+#include browser-sets.inc
-+
-+ <popupset id="mainPopupSet">
-+ <menupopup id="tabContextMenu"
-+ onpopupshowing="if (event.target == this) TabContextMenu.updateContextMenu(this);"
-+ onpopuphidden="if (event.target == this) TabContextMenu.contextTab = null;">
-+ <menuitem id="context_reloadTab" data-lazy-l10n-id="reload-tab"
-+ oncommand="gBrowser.reloadTab(TabContextMenu.contextTab);"/>
-+ <menuitem id="context_reloadSelectedTabs" data-lazy-l10n-id="reload-tabs" hidden="true"
-+ oncommand="gBrowser.reloadMultiSelectedTabs();"/>
-+ <menuitem id="context_toggleMuteTab" oncommand="TabContextMenu.contextTab.toggleMuteAudio();"/>
-+ <menuitem id="context_toggleMuteSelectedTabs" hidden="true"
-+ oncommand="gBrowser.toggleMuteAudioOnMultiSelectedTabs(TabContextMenu.contextTab);"/>
-+ <menuitem id="context_pinTab" data-lazy-l10n-id="pin-tab"
-+ oncommand="gBrowser.pinTab(TabContextMenu.contextTab);"/>
-+ <menuitem id="context_unpinTab" data-lazy-l10n-id="unpin-tab" hidden="true"
-+ oncommand="gBrowser.unpinTab(TabContextMenu.contextTab);"/>
-+ <menuitem id="context_pinSelectedTabs" data-lazy-l10n-id="pin-selected-tabs" hidden="true"
-+ oncommand="gBrowser.pinMultiSelectedTabs();"/>
-+ <menuitem id="context_unpinSelectedTabs" data-lazy-l10n-id="unpin-selected-tabs" hidden="true"
-+ oncommand="gBrowser.unpinMultiSelectedTabs();"/>
-+ <menuitem id="context_duplicateTab" data-lazy-l10n-id="duplicate-tab"
-+ oncommand="duplicateTabIn(TabContextMenu.contextTab, 'tab');"/>
-+ <menuitem id="context_duplicateTabs" data-lazy-l10n-id="duplicate-tabs"
-+ oncommand="TabContextMenu.duplicateSelectedTabs();"/>
-+ <menuseparator/>
-+ <menuitem id="context_selectAllTabs" data-lazy-l10n-id="select-all-tabs"
-+ oncommand="gBrowser.selectAllTabs();"/>
-+ <menuitem id="context_bookmarkSelectedTabs"
-+ hidden="true"
-+ data-lazy-l10n-id="bookmark-selected-tabs"
-+ oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.uniqueSelectedPages);"/>
-+ <menuitem id="context_bookmarkTab"
-+ data-lazy-l10n-id="bookmark-tab"
-+ oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.getUniquePages([TabContextMenu.contextTab]));"/>
-+ <menu id="context_reopenInContainer"
-+ data-lazy-l10n-id="reopen-in-container"
-+ hidden="true">
-+ <menupopup oncommand="TabContextMenu.reopenInContainer(event);"
-+ onpopupshowing="TabContextMenu.createReopenInContainerMenu(event);"/>
-+ </menu>
-+ <menu id="context_moveTabOptions">
-+ <menupopup id="moveTabOptionsMenu">
-+ <menuitem id="context_moveToStart"
-+ data-lazy-l10n-id="move-to-start"
-+ tbattr="tabbrowser-multiple"
-+ oncommand="gBrowser.moveTabsToStart(TabContextMenu.contextTab);"/>
-+ <menuitem id="context_moveToEnd"
-+ data-lazy-l10n-id="move-to-end"
-+ tbattr="tabbrowser-multiple"
-+ oncommand="gBrowser.moveTabsToEnd(TabContextMenu.contextTab);"/>
-+ <menuitem id="context_openTabInWindow" data-lazy-l10n-id="move-to-new-window"
-+ tbattr="tabbrowser-multiple"
-+ oncommand="gBrowser.replaceTabsWithWindow(TabContextMenu.contextTab);"/>
-+ </menupopup>
-+ </menu>
-+ <menu id="context_sendTabToDevice"
-+ class="sync-ui-item">
-+ <menupopup id="context_sendTabToDevicePopupMenu"
-+ onpopupshowing="gSync.populateSendTabToDevicesMenu(event.target, TabContextMenu.contextTab.linkedBrowser.currentURI.spec, TabContextMenu.contextTab.linkedBrowser.contentTitle, TabContextMenu.contextTab.multiselected);"/>
-+ </menu>
-+ <menuseparator/>
-+ <menuitem id="context_closeTabsToTheEnd" data-lazy-l10n-id="close-tabs-to-the-end"
-+ oncommand="gBrowser.removeTabsToTheEndFrom(TabContextMenu.contextTab, {animate: true});"/>
-+ <menuitem id="context_closeOtherTabs" data-lazy-l10n-id="close-other-tabs"
-+ oncommand="gBrowser.removeAllTabsBut(TabContextMenu.contextTab);"/>
-+ <menuitem id="context_undoCloseTab"
-+ data-lazy-l10n-id="undo-close-tab"
-+ observes="History:UndoCloseTab"/>
-+ <menuitem id="context_closeTab" data-lazy-l10n-id="close-tab"
-+ oncommand="gBrowser.removeTab(TabContextMenu.contextTab, { animate: true });"/>
-+ <menuitem id="context_closeSelectedTabs" data-lazy-l10n-id="close-tabs"
-+ hidden="true"
-+ oncommand="gBrowser.removeMultiSelectedTabs();"/>
-+ </menupopup>
-+
-+ <!-- bug 415444/582485: event.stopPropagation is here for the cloned version
-+ of this menupopup -->
-+ <menupopup id="backForwardMenu"
-+ onpopupshowing="return FillHistoryMenu(event.target);"
-+ oncommand="gotoHistoryIndex(event); event.stopPropagation();"
-+ onclick="checkForMiddleClick(this, event);"/>
-+ <tooltip id="aHTMLTooltip" page="true"/>
-+ <tooltip id="remoteBrowserTooltip"/>
-+
-+ <!-- for search and content formfill/pw manager -->
-+
-+ <panel is="autocomplete-richlistbox-popup"
-+ type="autocomplete-richlistbox"
-+ id="PopupAutoComplete"
-+ role="group"
-+ noautofocus="true"
-+ hidden="true"
-+ overflowpadding="4"
-+ norolluponanchor="true"
-+ nomaxresults="true" />
-+
-+ <!-- for search with one-off buttons -->
-+ <panel is="search-autocomplete-richlistbox-popup"
-+ type="autocomplete-richlistbox"
-+ id="PopupSearchAutoComplete"
-+ role="group"
-+ noautofocus="true"
-+ hidden="true" />
-+
-+ <!-- for url bar autocomplete -->
-+ <panel type="autocomplete-richlistbox"
-+ id="PopupAutoCompleteRichResult"
-+ role="group"
-+ noautofocus="true"
-+ hidden="true"
-+ flip="none"
-+ level="parent"
-+ overflowpadding="15" />
-+
-+ <!-- for date/time picker. consumeoutsideclicks is set to never, so that
-+ clicks on the anchored input box are never consumed. -->
-+ <panel id="DateTimePickerPanel"
-+ type="arrow"
-+ hidden="true"
-+ orient="vertical"
-+ noautofocus="true"
-+ norolluponanchor="true"
-+ consumeoutsideclicks="never"
-+ level="parent"
-+ tabspecific="true">
-+ </panel>
-+
-+ <!-- for select dropdowns. The menupopup is what shows the list of options,
-+ and the popuponly menulist makes things like the menuactive attributes
-+ work correctly on the menupopup. ContentSelectDropdown expects the
-+ popuponly menulist to be its immediate parent. -->
-+ <menulist popuponly="true" id="ContentSelectDropdown" hidden="true">
-+ <menupopup rolluponmousewheel="true"
-+ activateontab="true" position="after_start"
-+ level="parent"
-+#ifdef XP_WIN
-+ consumeoutsideclicks="false" ignorekeys="shortcuts"
-+#endif
-+ />
-+ </menulist>
-+
-+ <!-- for invalid form error message -->
-+ <panel id="invalid-form-popup" type="arrow" orient="vertical" noautofocus="true" hidden="true" level="parent">
-+ <description/>
-+ </panel>
-+
-+ <panel id="editBookmarkPanel"
-+ type="arrow"
-+ orient="vertical"
-+ ignorekeys="true"
-+ hidden="true"
-+ tabspecific="true"
-+ aria-labelledby="editBookmarkPanelTitle">
-+ <box class="panel-header">
-+ <label id="editBookmarkPanelTitle"/>
-+ <toolbarbutton id="editBookmarkPanelInfoButton" oncommand="StarUI.toggleRecommendation();" >
-+ <image/>
-+ </toolbarbutton>
-+ </box>
-+ <html:div id="editBookmarkPanelInfoArea">
-+ <html:div id="editBookmarkPanelRecommendation"></html:div>
-+ <html:div id="editBookmarkPanelFaviconContainer">
-+ <html:img id="editBookmarkPanelFavicon"/>
-+ </html:div>
-+ <html:div id="editBookmarkPanelImage"></html:div>
-+ </html:div>
-+#include ../../components/places/content/editBookmarkPanel.inc.xul
-+ <vbox id="editBookmarkPanelBottomContent"
-+ flex="1">
-+ <checkbox id="editBookmarkPanel_showForNewBookmarks"
-+ label="&editBookmark.showForNewBookmarks.label;"
-+ accesskey="&editBookmark.showForNewBookmarks.accesskey;"
-+ oncommand="StarUI.onShowForNewBookmarksCheckboxCommand();"/>
-+ </vbox>
-+ <hbox id="editBookmarkPanelBottomButtons"
-+ class="panel-footer"
-+ style="min-width: &editBookmark.panel.width;;">
-+#ifdef XP_UNIX
-+ <button id="editBookmarkPanelDoneButton"
-+ class="editBookmarkPanelBottomButton"
-+ label="&editBookmark.done.label;"
-+ default="true"
-+ oncommand="StarUI.panel.hidePopup();"/>
-+ <button id="editBookmarkPanelRemoveButton"
-+ class="editBookmarkPanelBottomButton"
-+ oncommand="StarUI.removeBookmarkButtonCommand();"/>
-+#else
-+ <button id="editBookmarkPanelRemoveButton"
-+ class="editBookmarkPanelBottomButton"
-+ oncommand="StarUI.removeBookmarkButtonCommand();"/>
-+ <button id="editBookmarkPanelDoneButton"
-+ class="editBookmarkPanelBottomButton"
-+ label="&editBookmark.done.label;"
-+ default="true"
-+ oncommand="StarUI.panel.hidePopup();"/>
-+#endif
-+ </hbox>
-+ </panel>
-+
-+ <!-- UI tour experience -->
-+ <panel id="UITourTooltip"
-+ type="arrow"
-+ hidden="true"
-+ noautofocus="true"
-+ noautohide="true"
-+ align="start"
-+ orient="vertical"
-+ role="alert">
-+ <vbox>
-+ <hbox id="UITourTooltipBody">
-+ <image id="UITourTooltipIcon"/>
-+ <vbox flex="1">
-+ <hbox id="UITourTooltipTitleContainer">
-+ <label id="UITourTooltipTitle" flex="1"/>
-+ <toolbarbutton id="UITourTooltipClose" class="close-icon"
-+ tooltiptext="&uiTour.infoPanel.close;"/>
-+ </hbox>
-+ <description id="UITourTooltipDescription" flex="1"/>
-+ </vbox>
-+ </hbox>
-+ <hbox id="UITourTooltipButtons" flex="1" align="center"/>
-+ </vbox>
-+ </panel>
-+ <!-- type="default" forces frames to be created so that the panel's size can be determined -->
-+ <panel id="UITourHighlightContainer"
-+ type="default"
-+ hidden="true"
-+ noautofocus="true"
-+ noautohide="true"
-+ flip="none"
-+ consumeoutsideclicks="false"
-+ mousethrough="always">
-+ <box id="UITourHighlight"></box>
-+ </panel>
-+
-+ <panel id="sidebarMenu-popup"
-+ class="cui-widget-panel"
-+ role="group"
-+ type="arrow"
-+ hidden="true"
-+ flip="slide"
-+ orient="vertical"
-+ position="bottomcenter topleft">
-+ <toolbarbutton id="sidebar-switcher-bookmarks"
-+ type="checkbox"
-+ label="&bookmarksButton.label;"
-+ class="subviewbutton subviewbutton-iconic"
-+ key="viewBookmarksSidebarKb"
-+ oncommand="SidebarUI.show('viewBookmarksSidebar');"/>
-+ <toolbarbutton id="sidebar-switcher-history"
-+ type="checkbox"
-+ label="&historyButton.label;"
-+ class="subviewbutton subviewbutton-iconic"
-+ key="key_gotoHistory"
-+ oncommand="SidebarUI.show('viewHistorySidebar');"/>
-+ <toolbarbutton id="sidebar-switcher-tabs"
-+ type="checkbox"
-+ label="&syncedTabs.sidebar.label;"
-+ class="subviewbutton subviewbutton-iconic sync-ui-item"
-+ oncommand="SidebarUI.show('viewTabsSidebar');"/>
-+ <toolbarseparator/>
-+ <!-- Extension toolbarbuttons go here. -->
-+ <toolbarseparator id="sidebar-extensions-separator"/>
-+ <toolbarbutton id="sidebar-reverse-position"
-+ class="subviewbutton"
-+ oncommand="SidebarUI.reversePosition()"/>
-+ <toolbarseparator/>
-+ <toolbarbutton label="&sidebarMenuClose.label;"
-+ class="subviewbutton"
-+ oncommand="SidebarUI.hide()"/>
-+ </panel>
-+
-+ <menupopup id="toolbar-context-menu"
-+ onpopupshowing="onViewToolbarsPopupShowing(event, document.getElementById('viewToolbarsMenuSeparator')); ToolbarContextMenu.updateDownloadsAutoHide(this); ToolbarContextMenu.updateExtension(this)">
-+ <menuitem oncommand="ToolbarContextMenu.openAboutAddonsForContextAction(this.parentElement)"
-+ accesskey="&customizeMenu.manageExtension.accesskey;"
-+ label="&customizeMenu.manageExtension.label;"
-+ contexttype="toolbaritem"
-+ class="customize-context-manageExtension"/>
-+ <menuitem oncommand="ToolbarContextMenu.removeExtensionForContextAction(this.parentElement)"
-+ accesskey="&customizeMenu.removeExtension.accesskey;"
-+ label="&customizeMenu.removeExtension.label;"
-+ contexttype="toolbaritem"
-+ class="customize-context-removeExtension"/>
-+ <menuitem oncommand="ToolbarContextMenu.reportExtensionForContextAction(this.parentElement, 'toolbar_context_menu')"
-+ accesskey="&customizeMenu.reportExtension.accesskey;"
-+ label="&customizeMenu.reportExtension.label;"
-+ contexttype="toolbaritem"
-+ class="customize-context-reportExtension"/>
-+ <menuseparator/>
-+ <menuitem oncommand="gCustomizeMode.addToPanel(document.popupNode)"
-+ accesskey="&customizeMenu.pinToOverflowMenu.accesskey;"
-+ label="&customizeMenu.pinToOverflowMenu.label;"
-+ contexttype="toolbaritem"
-+ class="customize-context-moveToPanel"/>
-+ <menuitem id="toolbar-context-autohide-downloads-button"
-+ oncommand="ToolbarContextMenu.onDownloadsAutoHideChange(event);"
-+ type="checkbox"
-+ accesskey="&customizeMenu.autoHideDownloadsButton.accesskey;"
-+ label="&customizeMenu.autoHideDownloadsButton.label;"
-+ contexttype="toolbaritem"/>
-+ <menuitem oncommand="gCustomizeMode.removeFromArea(document.popupNode)"
-+ accesskey="&customizeMenu.removeFromToolbar.accesskey;"
-+ label="&customizeMenu.removeFromToolbar.label;"
-+ contexttype="toolbaritem"
-+ class="customize-context-removeFromToolbar"/>
-+ <menuitem id="toolbar-context-reloadSelectedTab"
-+ contexttype="tabbar"
-+ oncommand="gBrowser.reloadMultiSelectedTabs();"
-+ data-lazy-l10n-id="toolbar-context-menu-reload-selected-tab"/>
-+ <menuitem id="toolbar-context-reloadSelectedTabs"
-+ contexttype="tabbar"
-+ oncommand="gBrowser.reloadMultiSelectedTabs();"
-+ data-lazy-l10n-id="toolbar-context-menu-reload-selected-tabs"/>
-+ <menuitem id="toolbar-context-bookmarkSelectedTab"
-+ contexttype="tabbar"
-+ oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.uniqueSelectedPages);"
-+ data-lazy-l10n-id="toolbar-context-menu-bookmark-selected-tab"/>
-+ <menuitem id="toolbar-context-bookmarkSelectedTabs"
-+ contexttype="tabbar"
-+ oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.uniqueSelectedPages);"
-+ data-lazy-l10n-id="toolbar-context-menu-bookmark-selected-tabs"/>
-+ <menuitem id="toolbar-context-selectAllTabs"
-+ contexttype="tabbar"
-+ oncommand="gBrowser.selectAllTabs();"
-+ data-lazy-l10n-id="toolbar-context-menu-select-all-tabs"/>
-+ <menuitem id="toolbar-context-undoCloseTab"
-+ contexttype="tabbar"
-+ data-lazy-l10n-id="toolbar-context-menu-undo-close-tab"
-+ observes="History:UndoCloseTab"/>
-+ <menuseparator/>
-+ <menuseparator id="viewToolbarsMenuSeparator"/>
-+ <!-- XXXgijs: we're using oncommand handler here to avoid the event being
-+ redirected to the command element, thus preventing
-+ listeners on the menupopup or further up the tree from
-+ seeing the command event pass by. The observes attribute is
-+ here so that the menuitem is still disabled and re-enabled
-+ correctly. -->
-+ <menuitem oncommand="gCustomizeMode.enter()"
-+ observes="cmd_CustomizeToolbars"
-+ class="viewCustomizeToolbar"
-+ label="&viewCustomizeToolbar.label;"
-+ accesskey="&viewCustomizeToolbar.accesskey;"/>
-+ </menupopup>
-+
-+ <menupopup id="blockedPopupOptions"
-+ onpopupshowing="gPopupBlockerObserver.fillPopupList(event);"
-+ onpopuphiding="gPopupBlockerObserver.onPopupHiding(event);">
-+ <menuitem id="blockedPopupAllowSite"
-+ accesskey="&allowPopups.accesskey;"
-+ oncommand="gPopupBlockerObserver.toggleAllowPopupsForSite(event);"/>
-+ <menuitem
-+#ifdef XP_WIN
-+ label="&editPopupSettings.label;"
-+#else
-+ label="&editPopupSettingsUnix.label;"
-+#endif
-+ accesskey="&editPopupSettings.accesskey;"
-+ oncommand="gPopupBlockerObserver.editPopupSettings();"/>
-+ <menuitem id="blockedPopupDontShowMessage"
-+ accesskey="&dontShowMessage.accesskey;"
-+ type="checkbox"
-+ oncommand="gPopupBlockerObserver.dontShowMessage();"/>
-+ <menuseparator id="blockedPopupsSeparator"/>
-+ </menupopup>
-+
-+ <menupopup id="autohide-context"
-+ onpopupshowing="FullScreen.getAutohide(this.firstChild);">
-+ <menuitem type="checkbox" label="&fullScreenAutohide.label;"
-+ accesskey="&fullScreenAutohide.accesskey;"
-+ oncommand="FullScreen.setAutohide();"/>
-+ <menuseparator/>
-+ <menuitem label="&fullScreenExit.label;"
-+ accesskey="&fullScreenExit.accesskey;"
-+ oncommand="BrowserFullScreen();"/>
-+ </menupopup>
-+
-+ <menupopup id="contentAreaContextMenu" pagemenu="#page-menu-separator"
-+ onpopupshowing="if (event.target != this)
-+ return true;
-+ gContextMenu = new nsContextMenu(this, event.shiftKey);
-+ if (gContextMenu.shouldDisplay)
-+ updateEditUIVisibility();
-+ return gContextMenu.shouldDisplay;"
-+ onpopuphiding="if (event.target != this)
-+ return;
-+ gContextMenu.hiding();
-+ gContextMenu = null;
-+ updateEditUIVisibility();">
-+#include browser-context.inc
-+ </menupopup>
-+
-+#include ../../components/places/content/placesContextMenu.inc.xul
-+
-+ <panel id="ctrlTab-panel" hidden="true" norestorefocus="true" level="top">
-+ <hbox id="ctrlTab-previews"/>
-+ <hbox id="ctrlTab-showAll-container" pack="center"/>
-+ </panel>
-+
-+ <panel id="pageActionPanel"
-+ class="cui-widget-panel"
-+ role="group"
-+ type="arrow"
-+ hidden="true"
-+ flip="slide"
-+ photon="true"
-+ position="bottomcenter topright"
-+ tabspecific="true"
-+ noautofocus="true"
-+ pinTab-title="&pinTab.label;"
-+ unpinTab-title="&unpinTab.label;"
-+ pocket-title="&saveToPocketCmd.label;"
-+ copyURL-title="&pageAction.copyLink.label;"
-+ emailLink-title="&emailPageCmd.label;"
-+ sendToDevice-notReadyTitle="&sendToDevice.syncNotReady.label;"
-+ shareURL-title="&pageAction.shareUrl.label;"
-+ shareMore-label="&pageAction.shareMore.label;">
-+ <panelmultiview id="pageActionPanelMultiView"
-+ mainViewId="pageActionPanelMainView"
-+ viewCacheId="appMenu-viewCache">
-+ <panelview id="pageActionPanelMainView"
-+ context="pageActionContextMenu"
-+ class="PanelUI-subView">
-+ <vbox class="panel-subview-body"/>
-+ </panelview>
-+ </panelmultiview>
-+ </panel>
-+
-+ <panel id="confirmation-hint"
-+ role="alert"
-+ type="arrow"
-+ hidden="true"
-+ flip="slide"
-+ position="bottomcenter topright"
-+ tabspecific="true"
-+ noautofocus="true">
-+ <hbox id="confirmation-hint-checkmark-animation-container">
-+ <image id="confirmation-hint-checkmark-image"/>
-+ </hbox>
-+ <vbox id="confirmation-hint-message-container">
-+ <label id="confirmation-hint-message"/>
-+ <label id="confirmation-hint-description"/>
-+ </vbox>
-+ </panel>
-+
-+ <menupopup id="pageActionContextMenu"
-+ onpopupshowing="BrowserPageActions.onContextMenuShowing(event, this);">
-+ <menuitem class="pageActionContextMenuItem builtInUnpinned"
-+ label="&pageAction.addToUrlbar.label;"
-+ oncommand="BrowserPageActions.togglePinningForContextAction();"/>
-+ <menuitem class="pageActionContextMenuItem builtInPinned"
-+ label="&pageAction.removeFromUrlbar.label;"
-+ oncommand="BrowserPageActions.togglePinningForContextAction();"/>
-+ <menuitem class="pageActionContextMenuItem extensionUnpinned"
-+ label="&pageAction.addToUrlbar.label;"
-+ oncommand="BrowserPageActions.togglePinningForContextAction();"/>
-+ <menuitem class="pageActionContextMenuItem extensionPinned"
-+ label="&pageAction.removeFromUrlbar.label;"
-+ oncommand="BrowserPageActions.togglePinningForContextAction();"/>
-+ <menuseparator class="pageActionContextMenuItem extensionPinned extensionUnpinned"/>
-+ <menuitem class="pageActionContextMenuItem extensionPinned extensionUnpinned"
-+ label="&pageAction.manageExtension.label;"
-+ oncommand="BrowserPageActions.openAboutAddonsForContextAction();"/>
-+ </menupopup>
-+
-+#include ../../components/places/content/bookmarksHistoryTooltip.inc.xul
-+
-+ <tooltip id="tabbrowser-tab-tooltip" onpopupshowing="gBrowser.createTooltip(event);"/>
-+
-+ <tooltip id="back-button-tooltip">
-+ <description class="tooltip-label" value="&backButton.tooltip;"/>
-+#ifdef XP_MACOSX
-+ <description class="tooltip-label" value="&backForwardButtonMenuMac.tooltip;"/>
-+#else
-+ <description class="tooltip-label" value="&backForwardButtonMenu.tooltip;"/>
-+#endif
-+ </tooltip>
-+
-+ <tooltip id="forward-button-tooltip">
-+ <description class="tooltip-label" value="&forwardButton.tooltip;"/>
-+#ifdef XP_MACOSX
-+ <description class="tooltip-label" value="&backForwardButtonMenuMac.tooltip;"/>
-+#else
-+ <description class="tooltip-label" value="&backForwardButtonMenu.tooltip;"/>
-+#endif
-+ </tooltip>
-+
-+#include popup-notifications.inc
-+
-+#include ../../components/customizableui/content/panelUI.inc.xul
-+#include ../../components/controlcenter/content/identityPanel.inc.xul
-+#include ../../components/controlcenter/content/protectionsPanel.inc.xul
-+#include ../../components/downloads/content/downloadsPanel.inc.xul
-+#include browser-allTabsMenu.inc.xul
-+
-+ <hbox id="downloads-animation-container" mousethrough="always">
-+ <vbox id="downloads-notification-anchor" hidden="true">
-+ <vbox id="downloads-indicator-notification"/>
-+ </vbox>
-+ </hbox>
-+
-+ <tooltip id="dynamic-shortcut-tooltip"
-+ onpopupshowing="UpdateDynamicShortcutTooltipText(this);"/>
-+
-+ <menupopup id="SyncedTabsSidebarContext">
-+ <menuitem data-lazy-l10n-id="synced-tabs-context-open"
-+ id="syncedTabsOpenSelected" where="current"/>
-+ <menuitem data-lazy-l10n-id="synced-tabs-context-open-in-new-tab"
-+ id="syncedTabsOpenSelectedInTab" where="tab"/>
-+ <menuitem data-lazy-l10n-id="synced-tabs-context-open-in-new-window"
-+ id="syncedTabsOpenSelectedInWindow" where="window"/>
-+ <menuitem data-lazy-l10n-id="synced-tabs-context-open-in-new-private-window"
-+ id="syncedTabsOpenSelectedInPrivateWindow" where="window" private="true"/>
-+ <menuseparator/>
-+ <menuitem data-lazy-l10n-id="synced-tabs-context-bookmark-single-tab"
-+ id="syncedTabsBookmarkSelected"/>
-+ <menuitem data-lazy-l10n-id="synced-tabs-context-copy"
-+ id="syncedTabsCopySelected"/>
-+ <menuseparator/>
-+ <menuitem data-lazy-l10n-id="synced-tabs-context-open-all-in-tabs"
-+ id="syncedTabsOpenAllInTabs"/>
-+ <menuitem data-lazy-l10n-id="synced-tabs-context-manage-devices"
-+ id="syncedTabsManageDevices"
-+ oncommand="gSync.openDevicesManagementPage('syncedtabs-sidebar');"/>
-+ <menuitem label="&syncSyncNowItem.label;"
-+ accesskey="&syncSyncNowItem.accesskey;"
-+ id="syncedTabsRefresh"/>
-+ </menupopup>
-+ <menupopup id="SyncedTabsSidebarTabsFilterContext"
-+ class="textbox-contextmenu">
-+ <menuitem label="&undoCmd.label;"
-+ accesskey="&undoCmd.accesskey;"
-+ cmd="cmd_undo"/>
-+ <menuseparator/>
-+ <menuitem label="&cutCmd.label;"
-+ accesskey="&cutCmd.accesskey;"
-+ cmd="cmd_cut"/>
-+ <menuitem label="©Cmd.label;"
-+ accesskey="©Cmd.accesskey;"
-+ cmd="cmd_copy"/>
-+ <menuitem label="&pasteCmd.label;"
-+ accesskey="&pasteCmd.accesskey;"
-+ cmd="cmd_paste"/>
-+ <menuitem label="&deleteCmd.label;"
-+ accesskey="&deleteCmd.accesskey;"
-+ cmd="cmd_delete"/>
-+ <menuseparator/>
-+ <menuitem label="&selectAllCmd.label;"
-+ accesskey="&selectAllCmd.accesskey;"
-+ cmd="cmd_selectAll"/>
-+ <menuseparator/>
-+ <menuitem label="&syncSyncNowItem.label;"
-+ accesskey="&syncSyncNowItem.accesskey;"
-+ id="syncedTabsRefreshFilter"/>
-+ </menupopup>
-+
-+ <hbox id="statuspanel" inactive="true" renderroot="content">
-+ <hbox id="statuspanel-inner">
-+ <label id="statuspanel-label"
-+ role="status"
-+ aria-live="off"
-+ flex="1"
-+ crop="end"/>
-+ </hbox>
-+ </hbox>
-+ </popupset>
-+ <box id="appMenu-viewCache" hidden="true"/>
-+
-+ <toolbox id="navigator-toolbox">
-+
-+ <vbox id="titlebar">
-+ <!-- Menu -->
-+ <toolbar type="menubar" id="toolbar-menubar"
-+ class="browser-toolbar chromeclass-menubar titlebar-color"
-+ customizable="true"
-+ mode="icons"
-+#ifdef MENUBAR_CAN_AUTOHIDE
-+ toolbarname="&menubarCmd.label;"
-+ accesskey="&menubarCmd.accesskey;"
-+ autohide="true"
-+#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.xul.
-+#include browser-menubar.inc
-+ </toolbaritem>
-+ <spacer flex="1" skipintoolbarset="true" ordinal="1000"/>
-+#include titlebar-items.inc.xul
-+ </toolbar>
-+
-+ <toolbar id="TabsToolbar"
-+ class="browser-toolbar titlebar-color"
-+ fullscreentoolbar="true"
-+ customizable="true"
-+ customizationtarget="TabsToolbar-customization-target"
-+ mode="icons"
-+ aria-label="&tabsToolbar.label;"
-+ context="toolbar-context-menu"
-+ flex="1">
-+
-+ <hbox class="titlebar-spacer" type="pre-tabs"/>
-+
-+ <hbox flex="1" align="end" class="toolbar-items">
-+ <hbox id="TabsToolbar-customization-target" flex="1">
-+ <tabs id="tabbrowser-tabs"
-+ flex="1"
-+ setfocus="false"
-+ tooltip="tabbrowser-tab-tooltip"
-+ stopwatchid="FX_TAB_CLICK_MS">
-+ <tab class="tabbrowser-tab" selected="true" visuallyselected="true" fadein="true"/>
-+ </tabs>
-+
-+ <toolbarbutton id="new-tab-button"
-+ class="toolbarbutton-1 chromeclass-toolbar-additional"
-+ label="&tabCmd.label;"
-+ command="cmd_newNavigatorTab"
-+ onclick="checkForMiddleClick(this, event);"
-+ tooltip="dynamic-shortcut-tooltip"
-+ ondrop="newTabButtonObserver.onDrop(event)"
-+ ondragover="newTabButtonObserver.onDragOver(event)"
-+ ondragenter="newTabButtonObserver.onDragOver(event)"
-+ ondragexit="newTabButtonObserver.onDragExit(event)"
-+ cui-areatype="toolbar"
-+ removable="true"/>
-+
-+ <toolbarbutton id="alltabs-button"
-+ class="toolbarbutton-1 chromeclass-toolbar-additional tabs-alltabs-button badged-button"
-+ oncommand="gTabsPanel.showAllTabsPanel();"
-+ label="&listAllTabs.label;"
-+ tooltiptext="&listAllTabs.label;"
-+ removable="false"/>
-+ </hbox>
-+ </hbox>
-+
-+ <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
-+
-+#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"/>
-+ </hbox>
-+#endif
-+ </toolbar>
-+
-+ </vbox>
-+
-+ <toolbar id="nav-bar"
-+ class="browser-toolbar"
-+ aria-label="&navbarCmd.label;"
-+ fullscreentoolbar="true" mode="icons" customizable="true"
-+ customizationtarget="nav-bar-customization-target"
-+ overflowable="true"
-+ overflowbutton="nav-bar-overflow-button"
-+ overflowtarget="widget-overflow-list"
-+ overflowpanel="widget-overflow"
-+ context="toolbar-context-menu">
-+
-+ <toolbartabstop/>
-+ <hbox id="nav-bar-customization-target" flex="1">
-+ <toolbarbutton id="back-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+ label="&backCmd.label;"
-+ removable="false" overflows="false"
-+ keepbroadcastattributeswhencustomizing="true"
-+ command="Browser:BackOrBackDuplicate"
-+ onclick="checkForMiddleClick(this, event);"
-+ tooltip="back-button-tooltip"
-+ context="backForwardMenu"/>
-+ <toolbarbutton id="forward-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+ label="&forwardCmd.label;"
-+ removable="false" overflows="false"
-+ keepbroadcastattributeswhencustomizing="true"
-+ command="Browser:ForwardOrForwardDuplicate"
-+ onclick="checkForMiddleClick(this, event);"
-+ tooltip="forward-button-tooltip"
-+ context="backForwardMenu"/>
-+ <toolbaritem id="stop-reload-button" class="chromeclass-toolbar-additional"
-+ title="&reloadCmd.label;"
-+ removable="true" overflows="false">
-+ <toolbarbutton id="reload-button" class="toolbarbutton-1"
-+ label="&reloadCmd.label;"
-+ command="Browser:ReloadOrDuplicate"
-+ onclick="checkForMiddleClick(this, event);"
-+ tooltip="dynamic-shortcut-tooltip">
-+ <box class="toolbarbutton-animatable-box">
-+ <image class="toolbarbutton-animatable-image"/>
-+ </box>
-+ </toolbarbutton>
-+ <toolbarbutton id="stop-button" class="toolbarbutton-1"
-+ label="&stopCmd.label;"
-+ command="Browser:Stop"
-+ tooltip="dynamic-shortcut-tooltip">
-+ <box class="toolbarbutton-animatable-box">
-+ <image class="toolbarbutton-animatable-image"/>
-+ </box>
-+ </toolbarbutton>
-+ </toolbaritem>
-+ <toolbarbutton id="home-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+ removable="true"
-+ label="&homeButton.label;"
-+ ondragover="homeButtonObserver.onDragOver(event)"
-+ ondragenter="homeButtonObserver.onDragOver(event)"
-+ ondrop="homeButtonObserver.onDrop(event)"
-+ ondragexit="homeButtonObserver.onDragExit(event)"
-+ key="goHome"
-+ onclick="BrowserHome(event);"
-+ cui-areatype="toolbar"
-+ tooltiptext="&homeButton.defaultPage.tooltip;"/>
-+ <toolbarspring cui-areatype="toolbar" class="chromeclass-toolbar-additional"/>
-+ <toolbaritem id="urlbar-container" flex="400" persist="width"
-+ removable="false"
-+ class="chromeclass-location" overflows="false">
-+ <toolbartabstop/>
-+ <textbox id="urlbar" flex="1"
-+ placeholder="&urlbar.placeholder2;"
-+ defaultPlaceholder="&urlbar.placeholder2;"
-+ focused="true"
-+ pageproxystate="invalid">
-+ <!-- Use onclick instead of normal popup= syntax since the popup
-+ code fires onmousedown, and hence eats our favicon drag events. -->
-+ <box id="identity-box" role="button"
-+ align="center"
-+ aria-label="&urlbar.viewSiteInfo.label;"
-+ onclick="gIdentityHandler.handleIdentityButtonEvent(event);"
-+ onkeypress="gIdentityHandler.handleIdentityButtonEvent(event);"
-+ ondragstart="gIdentityHandler.onDragStart(event);">
-+ <image id="identity-icon"
-+ consumeanchor="identity-box"
-+ onclick="PageProxyClickHandler(event);"/>
-+ <image id="sharing-icon" mousethrough="always"/>
-+ <box id="tracking-protection-icon-box" animationsenabled="true">
-+ <image id="tracking-protection-icon"/>
-+ <box id="tracking-protection-icon-animatable-box" flex="1">
-+ <image id="tracking-protection-icon-animatable-image" flex="1"/>
-+ </box>
-+ </box>
-+ <box id="blocked-permissions-container" align="center">
-+ <image data-permission-id="geo" class="blocked-permission-icon geo-icon" role="button"
-+ tooltiptext="&urlbar.geolocationBlocked.tooltip;"/>
-+ <image data-permission-id="desktop-notification" class="blocked-permission-icon desktop-notification-icon" role="button"
-+ tooltiptext="&urlbar.webNotificationsBlocked.tooltip;"/>
-+ <image data-permission-id="camera" class="blocked-permission-icon camera-icon" role="button"
-+ tooltiptext="&urlbar.cameraBlocked.tooltip;"/>
-+ <image data-permission-id="microphone" class="blocked-permission-icon microphone-icon" role="button"
-+ tooltiptext="&urlbar.microphoneBlocked.tooltip;"/>
-+ <image data-permission-id="screen" class="blocked-permission-icon screen-icon" role="button"
-+ tooltiptext="&urlbar.screenBlocked.tooltip;"/>
-+ <image data-permission-id="persistent-storage" class="blocked-permission-icon persistent-storage-icon" role="button"
-+ tooltiptext="&urlbar.persistentStorageBlocked.tooltip;"/>
-+ <image data-permission-id="popup" class="blocked-permission-icon popup-icon" role="button"
-+ tooltiptext="&urlbar.popupBlocked.tooltip;"/>
-+ <image data-permission-id="autoplay-media" class="blocked-permission-icon autoplay-media-icon" role="button"
-+ tooltiptext="&urlbar.autoplayMediaBlocked.tooltip;"/>
-+ <image data-permission-id="canvas" class="blocked-permission-icon canvas-icon" role="button"
-+ tooltiptext="&urlbar.canvasBlocked.tooltip;"/>
-+ <image data-permission-id="plugin:flash" class="blocked-permission-icon plugin-icon" role="button"
-+ tooltiptext="&urlbar.flashPluginBlocked.tooltip;"/>
-+ <image data-permission-id="midi" class="blocked-permission-icon midi-icon" role="button"
-+ tooltiptext="&urlbar.midiBlocked.tooltip;"/>
-+ <image data-permission-id="install" class="blocked-permission-icon install-icon" role="button"
-+ tooltiptext="&urlbar.installBlocked.tooltip;"/>
-+ </box>
-+ <box id="notification-popup-box"
-+ hidden="true"
-+ onmouseover="document.getElementById('identity-box').classList.add('no-hover');"
-+ onmouseout="document.getElementById('identity-box').classList.remove('no-hover');"
-+ align="center">
-+ <image id="default-notification-icon" class="notification-anchor-icon" role="button"
-+ tooltiptext="&urlbar.defaultNotificationAnchor.tooltip;"/>
-+ <image id="geo-notification-icon" class="notification-anchor-icon geo-icon" role="button"
-+ tooltiptext="&urlbar.geolocationNotificationAnchor.tooltip;"/>
-+ <image id="autoplay-media-notification-icon" class="notification-anchor-icon autoplay-media-icon" role="button"
-+ tooltiptext="&urlbar.autoplayNotificationAnchor.tooltip;"/>
-+ <image id="addons-notification-icon" class="notification-anchor-icon install-icon" role="button"
-+ tooltiptext="&urlbar.addonsNotificationAnchor.tooltip;"/>
-+ <image id="canvas-notification-icon" class="notification-anchor-icon" role="button"
-+ tooltiptext="&urlbar.canvasNotificationAnchor.tooltip;"/>
-+ <image id="indexedDB-notification-icon" class="notification-anchor-icon indexedDB-icon" role="button"
-+ tooltiptext="&urlbar.indexedDBNotificationAnchor.tooltip;"/>
-+ <image id="password-notification-icon" class="notification-anchor-icon login-icon" role="button"
-+ tooltiptext="&urlbar.passwordNotificationAnchor.tooltip;"/>
-+ <stack id="plugins-notification-icon" class="notification-anchor-icon" role="button" align="center"
-+ tooltiptext="&urlbar.pluginsNotificationAnchor.tooltip;">
-+ <image class="plugin-icon" />
-+ <image id="plugin-icon-badge" />
-+ </stack>
-+ <image id="web-notifications-notification-icon" class="notification-anchor-icon desktop-notification-icon" role="button"
-+ tooltiptext="&urlbar.webNotificationAnchor.tooltip;"/>
-+ <image id="webRTC-shareDevices-notification-icon" class="notification-anchor-icon camera-icon" role="button"
-+ tooltiptext="&urlbar.webRTCShareDevicesNotificationAnchor.tooltip;"/>
-+ <image id="webRTC-shareMicrophone-notification-icon" class="notification-anchor-icon microphone-icon" role="button"
-+ tooltiptext="&urlbar.webRTCShareMicrophoneNotificationAnchor.tooltip;"/>
-+ <image id="webRTC-shareScreen-notification-icon" class="notification-anchor-icon screen-icon" role="button"
-+ tooltiptext="&urlbar.webRTCShareScreenNotificationAnchor.tooltip;"/>
-+ <image id="servicesInstall-notification-icon" class="notification-anchor-icon service-icon" role="button"
-+ tooltiptext="&urlbar.servicesNotificationAnchor.tooltip;"/>
-+ <image id="translate-notification-icon" class="notification-anchor-icon translation-icon" role="button"
-+ tooltiptext="&urlbar.translateNotificationAnchor.tooltip;"/>
-+ <image id="translated-notification-icon" class="notification-anchor-icon translation-icon in-use" role="button"
-+ tooltiptext="&urlbar.translatedNotificationAnchor.tooltip;"/>
-+ <image id="eme-notification-icon" class="notification-anchor-icon drm-icon" role="button"
-+ tooltiptext="&urlbar.emeNotificationAnchor.tooltip;"/>
-+ <image id="persistent-storage-notification-icon" class="notification-anchor-icon persistent-storage-icon" role="button"
-+ tooltiptext="&urlbar.persistentStorageNotificationAnchor.tooltip;"/>
-+ <image id="midi-notification-icon" class="notification-anchor-icon midi-icon" role="button"
-+ tooltiptext="&urlbar.midiNotificationAnchor.tooltip;"/>
-+ <image id="webauthn-notification-icon" class="notification-anchor-icon" role="button"
-+ tooltiptext="&urlbar.webAuthnAnchor.tooltip;"/>
-+ <image id="storage-access-notification-icon" class="notification-anchor-icon storage-access-icon" role="button"
-+ tooltiptext="&urlbar.storageAccessAnchor.tooltip;"/>
-+ </box>
-+ <image id="connection-icon"/>
-+ <image id="extension-icon"/>
-+ <image id="remote-control-icon"
-+ tooltiptext="&urlbar.remoteControlNotificationAnchor.tooltip;"/>
-+ <hbox id="identity-icon-labels">
-+ <label id="identity-icon-label" class="plain" flex="1"/>
-+ <label id="identity-icon-country-label" class="plain"/>
-+ </hbox>
-+ </box>
-+ <box id="urlbar-display-box" align="center">
-+ <label id="switchtab" class="urlbar-display urlbar-display-switchtab" value="&urlbar.switchToTab.label;"/>
-+ <label id="extension" class="urlbar-display urlbar-display-extension" value="&urlbar.extension.label;"/>
-+ </box>
-+ <hbox id="page-action-buttons" context="pageActionContextMenu">
-+ <toolbartabstop/>
-+ <hbox id="contextual-feature-recommendation" role="button" hidden="true">
-+ <hbox id="cfr-label-container">
-+ <label id="cfr-label"/>
-+ </hbox>
-+ <image id="cfr-button"
-+ class="urlbar-icon urlbar-page-action"
-+ role="presentation"/>
-+ </hbox>
-+ <hbox id="userContext-icons" hidden="true">
-+ <label id="userContext-label"/>
-+ <image id="userContext-indicator"/>
-+ </hbox>
-+ <image id="reader-mode-button"
-+ class="urlbar-icon urlbar-page-action"
-+ tooltip="dynamic-shortcut-tooltip"
-+ role="button"
-+ hidden="true"
-+ onclick="ReaderParent.buttonClick(event);"/>
-+ <toolbarbutton id="urlbar-zoom-button"
-+ onclick="FullZoom.reset();"
-+ tooltip="dynamic-shortcut-tooltip"
-+ hidden="true"/>
-+ <box id="pageActionSeparator" class="urlbar-page-action"/>
-+ <image id="pageActionButton"
-+ class="urlbar-icon urlbar-page-action"
-+ role="button"
-+ tooltiptext="&pageActionButton.tooltip;"
-+ onmousedown="BrowserPageActions.mainButtonClicked(event);"
-+ onkeypress="BrowserPageActions.mainButtonClicked(event);"/>
-+ <hbox id="pocket-button-box"
-+ hidden="true"
-+ class="urlbar-icon-wrapper urlbar-page-action"
-+ onclick="BrowserPageActions.doCommandForAction(PageActions.actionForID('pocket'), event, this);">
-+ <image id="pocket-button"
-+ class="urlbar-icon"
-+ tooltiptext="&pocketButton.tooltiptext;"
-+ role="button"/>
-+ <hbox id="pocket-button-animatable-box">
-+ <image id="pocket-button-animatable-image"
-+ tooltiptext="&pocketButton.tooltiptext;"
-+ role="presentation"/>
-+ </hbox>
-+ </hbox>
-+ <hbox id="star-button-box"
-+ hidden="true"
-+ class="urlbar-icon-wrapper urlbar-page-action"
-+ onclick="BrowserPageActions.doCommandForAction(PageActions.actionForID('bookmark'), event, this);">
-+ <image id="star-button"
-+ class="urlbar-icon"
-+ role="button"/>
-+ <hbox id="star-button-animatable-box">
-+ <image id="star-button-animatable-image"
-+ role="presentation"/>
-+ </hbox>
-+ </hbox>
-+ </hbox>
-+ </textbox>
-+ <toolbartabstop/>
-+ </toolbaritem>
-+
-+ <toolbarspring cui-areatype="toolbar" class="chromeclass-toolbar-additional"/>
-+
-+ <!-- This is a placeholder for the Downloads Indicator. It is visible
-+ during the customization of the toolbar, in the palette, and before
-+ the Downloads Indicator overlay is loaded. -->
-+ <toolbarbutton id="downloads-button"
-+ class="toolbarbutton-1 chromeclass-toolbar-additional badged-button"
-+ key="key_openDownloads"
-+ onmousedown="DownloadsIndicatorView.onCommand(event);"
-+ onkeypress="DownloadsIndicatorView.onCommand(event);"
-+ ondrop="DownloadsIndicatorView.onDrop(event);"
-+ ondragover="DownloadsIndicatorView.onDragOver(event);"
-+ ondragenter="DownloadsIndicatorView.onDragOver(event);"
-+ label="&downloads.label;"
-+ removable="true"
-+ overflows="false"
-+ cui-areatype="toolbar"
-+ hidden="true"
-+ tooltip="dynamic-shortcut-tooltip"
-+ indicator="true">
-+ <!-- The panel's anchor area is smaller than the outer button, but must
-+ always be visible and must not move or resize when the indicator
-+ state changes, otherwise the panel could change its position or lose
-+ its arrow unexpectedly. -->
-+ <stack id="downloads-indicator-anchor"
-+ consumeanchor="downloads-button">
-+ <box id="downloads-indicator-icon"/>
-+ <stack id="downloads-indicator-progress-outer">
-+ <box id="downloads-indicator-progress-inner"/>
-+ </stack>
-+ </stack>
-+ </toolbarbutton>
-+
-+ <toolbarbutton id="library-button" class="toolbarbutton-1 chromeclass-toolbar-additional subviewbutton-nav"
-+ removable="true"
-+ onmousedown="PanelUI.showSubView('appMenu-libraryView', this, event);"
-+ onkeypress="PanelUI.showSubView('appMenu-libraryView', this, event);"
-+ closemenu="none"
-+ cui-areatype="toolbar"
-+ tooltiptext="&libraryButton.tooltip;"
-+ label="&places.library.title;"/>
-+
-+ <toolbarbutton id="fxa-toolbar-menu-button" class="toolbarbutton-1 badged-button chromeclass-toolbar-additional subviewbutton-nav"
-+ onmousedown="gSync.toggleAccountPanel('PanelUI-fxa', event)"
-+ onkeypress="gSync.toggleAccountPanel('PanelUI-fxa', event)"
-+ consumeanchor="fxa-toolbar-menu-button"
-+ closemenu="none"
-+ label="&fxa.menu.firefoxAccount;"
-+ tooltiptext="&fxa.menu.firefoxAccount;"
-+ cui-areatype="toolbar"
-+ removable="true">
-+ <vbox>
-+ <image id="fxa-avatar-image"/>
-+ </vbox>
-+ </toolbarbutton>
-+ </hbox>
-+
-+ <toolbarbutton id="nav-bar-overflow-button"
-+ class="toolbarbutton-1 chromeclass-toolbar-additional overflow-button"
-+ skipintoolbarset="true"
-+ tooltiptext="&navbarOverflow.label;">
-+ <box class="toolbarbutton-animatable-box">
-+ <image class="toolbarbutton-animatable-image"/>
-+ </box>
-+ </toolbarbutton>
-+
-+ <toolbaritem id="PanelUI-button"
-+ removable="false">
-+ <toolbarbutton id="PanelUI-menu-button"
-+ class="toolbarbutton-1 badged-button"
-+ consumeanchor="PanelUI-button"
-+ label="&brandShortName;"
-+ tooltiptext="&appmenu.tooltip;"/>
-+ </toolbaritem>
-+
-+ <hbox id="window-controls" hidden="true" pack="end" skipintoolbarset="true"
-+ ordinal="1000">
-+ <toolbarbutton id="minimize-button"
-+ tooltiptext="&fullScreenMinimize.tooltip;"
-+ oncommand="window.minimize();"/>
-+
-+ <toolbarbutton id="restore-button"
-+#ifdef XP_MACOSX
-+# Prior to 10.7 there wasn't a native fullscreen button so we use #restore-button
-+# to exit fullscreen and want it to behave like other toolbar buttons.
-+ class="toolbarbutton-1"
-+#endif
-+ tooltiptext="&fullScreenRestore.tooltip;"
-+ oncommand="BrowserFullScreen();"/>
-+
-+ <toolbarbutton id="close-button"
-+ tooltiptext="&fullScreenClose.tooltip;"
-+ oncommand="BrowserTryToCloseWindow();"/>
-+ </hbox>
-+
-+ <box id="library-animatable-box" class="toolbarbutton-animatable-box">
-+ <image class="toolbarbutton-animatable-image"/>
-+ </box>
-+ </toolbar>
-+
-+ <toolbar id="PersonalToolbar"
-+ mode="icons"
-+ class="browser-toolbar chromeclass-directories"
-+ context="toolbar-context-menu"
-+ toolbarname="&personalbarCmd.label;" accesskey="&personalbarCmd.accesskey;"
-+ collapsed="true"
-+ customizable="true">
-+ <toolbartabstop skipintoolbarset="true"/>
-+ <toolbaritem id="personal-bookmarks"
-+ title="&bookmarksToolbarItem.label;"
-+ cui-areatype="toolbar"
-+ removable="true">
-+ <toolbarbutton id="bookmarks-toolbar-placeholder"
-+ class="bookmark-item"
-+ label="&bookmarksToolbarItem.label;"/>
-+ <toolbarbutton id="bookmarks-toolbar-button"
-+ class="toolbarbutton-1"
-+ flex="1"
-+ label="&bookmarksToolbarItem.label;"
-+ oncommand="PlacesToolbarHelper.onPlaceholderCommand();"/>
-+ <hbox flex="1"
-+ id="PlacesToolbar"
-+ context="placesContext"
-+ onmouseup="BookmarksEventHandler.onMouseUp(event);"
-+ onclick="BookmarksEventHandler.onClick(event, this._placesView);"
-+ oncommand="BookmarksEventHandler.onCommand(event);"
-+ tooltip="bhTooltip"
-+ popupsinherittooltip="true">
-+ <hbox flex="1">
-+ <hbox id="PlacesToolbarDropIndicatorHolder" align="center" collapsed="true">
-+ <image id="PlacesToolbarDropIndicator"
-+ mousethrough="always"
-+ collapsed="true"/>
-+ </hbox>
-+ <scrollbox orient="horizontal"
-+ id="PlacesToolbarItems"
-+ flex="1"/>
-+ <toolbarbutton type="menu"
-+ id="PlacesChevron"
-+ class="toolbarbutton-1"
-+ mousethrough="never"
-+ collapsed="true"
-+ tooltiptext="&bookmarksToolbarChevron.tooltip;"
-+ onpopupshowing="document.getElementById('PlacesToolbar')
-+ ._placesView._onChevronPopupShowing(event);">
-+ <menupopup id="PlacesChevronPopup"
-+ placespopup="true"
-+ tooltip="bhTooltip" popupsinherittooltip="true"
-+ context="placesContext"/>
-+ </toolbarbutton>
-+ </hbox>
-+ </hbox>
-+ </toolbaritem>
-+ </toolbar>
-+
-+ <toolbarpalette id="BrowserToolbarPalette">
-+
-+ <toolbarbutton id="print-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+#ifdef XP_MACOSX
-+ command="cmd_print"
-+ tooltip="dynamic-shortcut-tooltip"
-+#else
-+ command="cmd_printPreview"
-+ tooltiptext="&printButton.tooltip;"
-+#endif
-+ label="&printButton.label;"/>
-+
-+
-+ <toolbarbutton id="new-window-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+ label="&newNavigatorCmd.label;"
-+ command="cmd_newNavigator"
-+ tooltip="dynamic-shortcut-tooltip"
-+ ondrop="newWindowButtonObserver.onDrop(event)"
-+ ondragover="newWindowButtonObserver.onDragOver(event)"
-+ ondragenter="newWindowButtonObserver.onDragOver(event)"
-+ ondragexit="newWindowButtonObserver.onDragExit(event)"/>
-+
-+ <toolbarbutton id="fullscreen-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
-+ observes="View:FullScreen"
-+ type="checkbox"
-+ label="&fullScreenCmd.label;"
-+ tooltip="dynamic-shortcut-tooltip"/>
-+
-+ <toolbarbutton id="bookmarks-menu-button"
-+ class="toolbarbutton-1 chromeclass-toolbar-additional subviewbutton-nav"
-+ type="menu"
-+ label="&bookmarksMenuButton2.label;"
-+ tooltip="dynamic-shortcut-tooltip"
-+ anchor="dropmarker"
-+ ondragenter="PlacesMenuDNDHandler.onDragEnter(event);"
-+ ondragover="PlacesMenuDNDHandler.onDragOver(event);"
-+ ondragleave="PlacesMenuDNDHandler.onDragLeave(event);"
-+ ondrop="PlacesMenuDNDHandler.onDrop(event);"
-+ oncommand="BookmarkingUI.onCommand(event);">
-+ <menupopup id="BMB_bookmarksPopup"
-+ class="cui-widget-panel cui-widget-panelview cui-widget-panelWithFooter PanelUI-subView"
-+ placespopup="true"
-+ context="placesContext"
-+ openInTabs="children"
-+ side="top"
-+ onmouseup="BookmarksEventHandler.onMouseUp(event);"
-+ oncommand="BookmarksEventHandler.onCommand(event);"
-+ onclick="BookmarksEventHandler.onClick(event, this.parentNode._placesView);"
-+ onpopupshowing="BookmarkingUI.onPopupShowing(event);
-+ BookmarkingUI.attachPlacesView(event, this);"
-+ tooltip="bhTooltip" popupsinherittooltip="true">
-+ <menuitem id="BMB_viewBookmarksSidebar"
-+ class="menuitem-iconic subviewbutton"
-+ label-show="&viewBookmarksSidebar2.label;"
-+ label-hide="&hideBookmarksSidebar.label;"
-+ oncommand="SidebarUI.toggle('viewBookmarksSidebar');"/>
-+ <!-- NB: temporary solution for bug 985024, this should go away soon. -->
-+ <menuitem id="BMB_bookmarksShowAllTop"
-+ class="menuitem-iconic subviewbutton"
-+ label="&showAllBookmarks2.label;"
-+ command="Browser:ShowAllBookmarks"
-+ key="manBookmarkKb"/>
-+ <menuseparator/>
-+ <menu id="BMB_bookmarksToolbar"
-+ class="menu-iconic bookmark-item subviewbutton"
-+ label="&personalbarCmd.label;"
-+ container="true">
-+ <menupopup id="BMB_bookmarksToolbarPopup"
-+ placespopup="true"
-+ context="placesContext"
-+ onpopupshowing="if (!this.parentNode._placesView)
-+ new PlacesMenu(event, `place:parent=${PlacesUtils.bookmarks.toolbarGuid}`,
-+ PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);">
-+ <menuitem id="BMB_viewBookmarksToolbar"
-+ class="menuitem-iconic subviewbutton"
-+ label-show="&viewBookmarksToolbar.label;"
-+ label-hide="&hideBookmarksToolbar.label;"
-+ oncommand="BookmarkingUI.toggleBookmarksToolbar();"/>
-+ <menuseparator/>
-+ <!-- Bookmarks toolbar items -->
-+ </menupopup>
-+ </menu>
-+ <menu id="BMB_unsortedBookmarks"
-+ class="menu-iconic bookmark-item subviewbutton"
-+ label="&bookmarksMenuButton.other.label;"
-+ container="true">
-+ <menupopup id="BMB_unsortedBookmarksPopup"
-+ placespopup="true"
-+ context="placesContext"
-+ onpopupshowing="if (!this.parentNode._placesView)
-+ new PlacesMenu(event, `place:parent=${PlacesUtils.bookmarks.unfiledGuid}`,
-+ PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);"/>
-+ </menu>
-+ <menu id="BMB_mobileBookmarks"
-+ class="menu-iconic bookmark-item subviewbutton"
-+ label="&bookmarksMenuButton.mobile.label;"
-+ hidden="true"
-+ container="true">
-+ <menupopup id="BMB_mobileBookmarksPopup"
-+ placespopup="true"
-+ context="placesContext"
-+ onpopupshowing="if (!this.parentNode._placesView)
-+ new PlacesMenu(event, `place:parent=${PlacesUtils.bookmarks.mobileGuid}`,
-+ PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);"/>
-+ </menu>
-+
-+ <menuseparator/>
-+ <!-- Bookmarks menu items will go here -->
-+ <menuitem id="BMB_bookmarksShowAll"
-+ class="subviewbutton panel-subview-footer"
-+ label="&showAllBookmarks2.label;"
-+ command="Browser:ShowAllBookmarks"
-+ key="manBookmarkKb"/>
-+ </menupopup>
-+ </toolbarbutton>
-+
-+ <toolbaritem id="search-container"
-+ class="chromeclass-toolbar-additional"
-+ title="&searchItem.title;"
-+ align="center"
-+ flex="100"
-+ persist="width">
-+ <toolbartabstop/>
-+ <searchbar id="searchbar" flex="1"/>
-+ <toolbartabstop/>
-+ </toolbaritem>
-+ </toolbarpalette>
-+ </toolbox>
-+
-+ <hbox id="fullscr-toggler" hidden="true"/>
-+
-+ <deck id="content-deck" flex="1" renderroot="content">
-+ <hbox flex="1" id="browser">
-+ <vbox id="browser-border-start" hidden="true" layer="true"/>
-+ <vbox id="sidebar-box" hidden="true" class="chromeclass-extrachrome">
-+ <sidebarheader id="sidebar-header" align="center">
-+ <toolbarbutton id="sidebar-switcher-target" flex="1" class="tabbable">
-+ <image id="sidebar-icon" consumeanchor="sidebar-switcher-target"/>
-+ <label id="sidebar-title" crop="end" flex="1" control="sidebar"/>
-+ <image id="sidebar-switcher-arrow"/>
-+ </toolbarbutton>
-+ <image id="sidebar-throbber"/>
-+# To ensure the button label's intrinsic width doesn't expand the sidebar
-+# if the label is long, the button needs flex=1.
-+# To ensure the button doesn't expand unnecessarily for short labels, the
-+# spacer should significantly out-flex the button.
-+ <spacer flex="1000"/>
-+ <toolbarbutton id="sidebar-close" class="close-icon tabbable" tooltiptext="&sidebarCloseButton.tooltip;" oncommand="SidebarUI.hide();"/>
-+ </sidebarheader>
-+ <browser id="sidebar" flex="1" autoscroll="false" disablehistory="true" disablefullscreen="true"
-+ style="min-width: 14em; width: 18em; max-width: 36em;" tooltip="aHTMLTooltip"/>
-+ </vbox>
-+
-+ <splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" hidden="true"/>
-+ <vbox id="appcontent" flex="1">
-+ <!-- gHighPriorityNotificationBox will be added here lazily. -->
-+ <tabbox id="tabbrowser-tabbox"
-+ flex="1" tabcontainer="tabbrowser-tabs">
-+ <tabpanels id="tabbrowser-tabpanels"
-+ flex="1" class="plain" selectedIndex="0"/>
-+ </tabbox>
-+ </vbox>
-+ <vbox id="browser-border-end" hidden="true" layer="true"/>
-+ </hbox>
-+ <box id="customization-container" flex="1" hidden="true"><![CDATA[
-+#include ../../components/customizableui/content/customizeMode.inc.xul
-+ ]]></box>
-+ </deck>
-+
-+ <html:div id="fullscreen-warning" class="pointerlockfswarning" hidden="true" renderroot="content">
-+ <html:div class="pointerlockfswarning-domain-text">
-+ &fullscreenWarning.beforeDomain.label;
-+ <html:span class="pointerlockfswarning-domain"/>
-+ &fullscreenWarning.afterDomain.label;
-+ </html:div>
-+ <html:div class="pointerlockfswarning-generic-text">
-+ &fullscreenWarning.generic.label;
-+ </html:div>
-+ <html:button id="fullscreen-exit-button"
-+ onclick="FullScreen.exitDomFullScreen();">
-+#ifdef XP_MACOSX
-+ &exitDOMFullscreenMac.button;
-+#else
-+ &exitDOMFullscreen.button;
-+#endif
-+ </html:button>
-+ </html:div>
-+
-+ <html:div id="pointerlock-warning" class="pointerlockfswarning" hidden="true" renderroot="content">
-+ <html:div class="pointerlockfswarning-domain-text">
-+ &pointerlockWarning.beforeDomain.label;
-+ <html:span class="pointerlockfswarning-domain"/>
-+ &pointerlockWarning.afterDomain.label;
-+ </html:div>
-+ <html:div class="pointerlockfswarning-generic-text">
-+ &pointerlockWarning.generic.label;
-+ </html:div>
-+ </html:div>
-+
-+ <vbox id="browser-bottombox" layer="true" renderroot="content">
-+ <!-- gNotificationBox will be added here lazily. -->
-+ </vbox>
-+</window>
-diff --git a/browser/base/jar.mn b/browser/base/jar.mn
---- a/browser/base/jar.mn
-+++ b/browser/base/jar.mn
-@@ -28,16 +28,18 @@ browser.jar:
- content/browser/aboutTabCrashed.xhtml (content/aboutTabCrashed.xhtml)
- * content/browser/browser.css (content/browser.css)
- content/browser/browser.js (content/browser.js)
- #ifdef MOZ_BROWSER_XHTML
- * content/browser/browser.xhtml (content/browser.xhtml)
- #else
- * content/browser/browser.xul (content/browser.xul)
- #endif
-+* content/browser/browser-kde.xul (content/browser-kde.xul)
-+% override chrome://browser/content/browser.xul chrome://browser/content/browser-kde.xul desktop=kde
- content/browser/browser-addons.js (content/browser-addons.js)
- content/browser/browser-allTabsMenu.js (content/browser-allTabsMenu.js)
- content/browser/browser-captivePortal.js (content/browser-captivePortal.js)
- content/browser/browser-ctrlTab.js (content/browser-ctrlTab.js)
- content/browser/browser-customization.js (content/browser-customization.js)
- content/browser/browser-data-submission-info-bar.js (content/browser-data-submission-info-bar.js)
- content/browser/browser-contentblocking.js (content/browser-contentblocking.js)
- #ifndef MOZILLA_OFFICIAL
diff --git a/browser/components/preferences/in-content/main.js b/browser/components/preferences/in-content/main.js
--- a/browser/components/preferences/in-content/main.js
+++ b/browser/components/preferences/in-content/main.js
--- a/mozilla-kde.patch Thu Sep 05 08:27:52 2019 +0200
+++ b/mozilla-kde.patch Fri Sep 06 18:28:48 2019 +0200
@@ -3,7 +3,7 @@
# Date 1559294891 -7200
# Fri May 31 11:28:11 2019 +0200
# Node ID c2aa7198fb925e7fde96abf65b6f68b9b755f112
-# Parent 93495ad6fa0fe292eadcbfef14e0e27273528497
+# Parent 85e4798b74da9c377f84cf8f5dd59a7f952d92eb
Description: Add KDE integration to Firefox (toolkit parts)
Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
Author: Lubos Lunak <lunak@suse.com>
@@ -13,8 +13,7 @@
diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
--- a/modules/libpref/Preferences.cpp
+++ b/modules/libpref/Preferences.cpp
-@@ -81,16 +81,17 @@
- #include "nsXPCOMCID.h"
+@@ -83,16 +83,17 @@
#include "nsXPCOM.h"
#include "nsXULAppAPI.h"
#include "nsZipArchive.h"
@@ -22,16 +21,17 @@
#include "PLDHashTable.h"
#include "plstr.h"
#include "prlink.h"
+ #include "xpcpublic.h"
+#include "nsKDEUtils.h"
+ #ifdef DEBUG
+ # include <map>
+ #endif
+
#ifdef MOZ_MEMORY
# include "mozmemory.h"
#endif
-
- #ifdef XP_WIN
- # include "windows.h"
- #endif
-@@ -4507,25 +4508,37 @@ static nsresult pref_ReadDefaultPrefs(co
+@@ -4623,25 +4624,37 @@ Result<Ok, const char*> Preferences::Ini
// application pref files for backwards compatibility.
static const char* specialFiles[] = {
#if defined(XP_MACOSX)
@@ -69,7 +69,7 @@
// Load jar:$app/omni.jar!/defaults/preferences/*.js
// or jar:$gre/omni.jar!/defaults/preferences/*.js.
-@@ -4573,17 +4586,17 @@ static nsresult pref_ReadDefaultPrefs(co
+@@ -4688,17 +4701,17 @@ Result<Ok, const char*> Preferences::Ini
}
nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
@@ -115,7 +115,7 @@
diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/chrome/flags.py
--- a/python/mozbuild/mozpack/chrome/flags.py
+++ b/python/mozbuild/mozpack/chrome/flags.py
-@@ -223,16 +223,17 @@ class Flags(OrderedDict):
+@@ -227,16 +227,17 @@ class Flags(OrderedDict):
'contentaccessible': Flag,
'os': StringFlag,
'osversion': VersionFlag,
@@ -136,7 +136,7 @@
diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpack/chrome/manifest.py
--- a/python/mozbuild/mozpack/chrome/manifest.py
+++ b/python/mozbuild/mozpack/chrome/manifest.py
-@@ -39,16 +39,17 @@ class ManifestEntry(object):
+@@ -36,16 +36,17 @@ class ManifestEntry(object):
'platformversion',
'os',
'osversion',
@@ -172,532 +172,6 @@
+
with Files('**'):
BUG_COMPONENT = ('Toolkit', 'Downloads API')
-diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
---- a/toolkit/content/jar.mn
-+++ b/toolkit/content/jar.mn
-@@ -63,16 +63,18 @@ toolkit.jar:
- content/global/widgets.css
- content/global/bindings/autocomplete.xml (widgets/autocomplete.xml)
- content/global/bindings/button.xml (widgets/button.xml)
- content/global/bindings/calendar.js (widgets/calendar.js)
- content/global/bindings/datekeeper.js (widgets/datekeeper.js)
- content/global/bindings/datepicker.js (widgets/datepicker.js)
- content/global/bindings/datetimebox.css (widgets/datetimebox.css)
- * content/global/bindings/dialog.xml (widgets/dialog.xml)
-+* content/global/bindings/dialog-kde.xml (widgets/dialog-kde.xml)
-+% override chrome://global/content/bindings/dialog.xml chrome://global/content/bindings/dialog-kde.xml desktop=kde
- content/global/bindings/general.xml (widgets/general.xml)
- content/global/bindings/popup.xml (widgets/popup.xml)
- content/global/bindings/richlistbox.xml (widgets/richlistbox.xml)
- content/global/bindings/scrollbox.xml (widgets/scrollbox.xml)
- content/global/bindings/spinner.js (widgets/spinner.js)
- content/global/bindings/tabbox.xml (widgets/tabbox.xml)
- * content/global/bindings/textbox.xml (widgets/textbox.xml)
- content/global/bindings/timekeeper.js (widgets/timekeeper.js)
-diff --git a/toolkit/content/widgets/dialog-kde.xml b/toolkit/content/widgets/dialog-kde.xml
-new file mode 100644
---- /dev/null
-+++ b/toolkit/content/widgets/dialog-kde.xml
-@@ -0,0 +1,499 @@
-+<?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 bindings [
-+ <!ENTITY % globalKeysDTD SYSTEM "chrome://global/locale/globalKeys.dtd">
-+ %globalKeysDTD;
-+]>
-+
-+<bindings id="dialogBindings"
-+ xmlns="http://www.mozilla.org/xbl"
-+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
-+ xmlns:xbl="http://www.mozilla.org/xbl">
-+
-+ <binding id="dialog">
-+ <content>
-+ <xul:vbox class="box-inherit dialog-content-box" flex="1">
-+ <children/>
-+ </xul:vbox>
-+
-+ <xul:hbox class="dialog-button-box" anonid="buttons"
-+ xbl:inherits="pack=buttonpack,align=buttonalign,dir=buttondir,orient=buttonorient"
-+#ifdef XP_UNIX_GNOME
-+ >
-+ <xul:button dlgtype="disclosure" class="dialog-button" hidden="true"/>
-+ <xul:button dlgtype="help" class="dialog-button" hidden="true"/>
-+ <xul:button dlgtype="extra2" class="dialog-button" hidden="true"/>
-+ <xul:button dlgtype="extra1" class="dialog-button" hidden="true"/>
-+ <xul:spacer anonid="spacer" flex="1"/>
-+ <xul:button dlgtype="cancel" class="dialog-button"/>
-+ <xul:button dlgtype="accept" class="dialog-button" xbl:inherits="disabled=buttondisabledaccept"/>
-+#elif XP_UNIX
-+ >
-+ <xul:button dlgtype="help" class="dialog-button" hidden="true"/>
-+ <xul:button dlgtype="extra2" class="dialog-button" hidden="true"/>
-+ <xul:spacer anonid="spacer" flex="1"/>
-+ <xul:button dlgtype="accept" class="dialog-button" xbl:inherits="disabled=buttondisabledaccept"/>
-+ <xul:button dlgtype="extra1" class="dialog-button" hidden="true"/>
-+ <xul:button dlgtype="cancel" class="dialog-button"/>
-+ <xul:button dlgtype="disclosure" class="dialog-button" hidden="true"/>
-+#else
-+ pack="end">
-+ <xul:button dlgtype="extra2" class="dialog-button" hidden="true"/>
-+ <xul:spacer anonid="spacer" flex="1" hidden="true"/>
-+ <xul:button dlgtype="accept" class="dialog-button" xbl:inherits="disabled=buttondisabledaccept"/>
-+ <xul:button dlgtype="extra1" class="dialog-button" hidden="true"/>
-+ <xul:button dlgtype="cancel" class="dialog-button"/>
-+ <xul:button dlgtype="help" class="dialog-button" hidden="true"/>
-+ <xul:button dlgtype="disclosure" class="dialog-button" hidden="true"/>
-+#endif
-+ </xul:hbox>
-+
-+ <xul:keyset>
-+ <xul:key phase="capturing" oncommand="document.documentElement.openHelp(event)"
-+#ifdef XP_MACOSX
-+ key="&openHelpMac.commandkey;" modifiers="accel"/>
-+#else
-+ keycode="&openHelp.commandkey;"/>
-+#endif
-+ </xul:keyset>
-+
-+ </content>
-+
-+ <implementation>
-+ <field name="_mStrBundle">null</field>
-+ <field name="_closeHandler">(function(event) {
-+ if (!document.documentElement.cancelDialog())
-+ event.preventDefault();
-+ })</field>
-+
-+ <!-- Gets populated by elements that are passed to document.l10n.setAttributes
-+ to localize the dialog buttons. Needed to properly size the dialog after
-+ the asynchronous translation. -->
-+ <field name="_l10nButtons">[]</field>
-+
-+ <property name="buttons"
-+ onget="return this.getAttribute('buttons');"
-+ onset="this._configureButtons(val); return val;"/>
-+
-+ <property name="defaultButton">
-+ <getter>
-+ <![CDATA[
-+ if (this.hasAttribute("defaultButton"))
-+ return this.getAttribute("defaultButton");
-+ return "accept"; // default to the accept button
-+ ]]>
-+ </getter>
-+ <setter>
-+ <![CDATA[
-+ this._setDefaultButton(val);
-+ return val;
-+ ]]>
-+ </setter>
-+ </property>
-+
-+ <method name="acceptDialog">
-+ <body>
-+ <![CDATA[
-+ return this._doButtonCommand("accept");
-+ ]]>
-+ </body>
-+ </method>
-+
-+ <method name="cancelDialog">
-+ <body>
-+ <![CDATA[
-+ return this._doButtonCommand("cancel");
-+ ]]>
-+ </body>
-+ </method>
-+
-+ <method name="getButton">
-+ <parameter name="aDlgType"/>
-+ <body>
-+ <![CDATA[
-+ return this._buttons[aDlgType];
-+ ]]>
-+ </body>
-+ </method>
-+
-+ <method name="moveToAlertPosition">
-+ <body>
-+ <![CDATA[
-+ // hack. we need this so the window has something like its final size
-+ if (window.outerWidth == 1) {
-+ dump("Trying to position a sizeless window; caller should have called sizeToContent() or sizeTo(). See bug 75649.\n");
-+ sizeToContent();
-+ }
-+
-+ if (opener) {
-+ var xOffset = (opener.outerWidth - window.outerWidth) / 2;
-+ var yOffset = opener.outerHeight / 5;
-+
-+ var newX = opener.screenX + xOffset;
-+ var newY = opener.screenY + yOffset;
-+ } else {
-+ newX = (screen.availWidth - window.outerWidth) / 2;
-+ newY = (screen.availHeight - window.outerHeight) / 2;
-+ }
-+
-+ // ensure the window is fully onscreen (if smaller than the screen)
-+ if (newX < screen.availLeft)
-+ newX = screen.availLeft + 20;
-+ if ((newX + window.outerWidth) > (screen.availLeft + screen.availWidth))
-+ newX = (screen.availLeft + screen.availWidth) - window.outerWidth - 20;
-+
-+ if (newY < screen.availTop)
-+ newY = screen.availTop + 20;
-+ if ((newY + window.outerHeight) > (screen.availTop + screen.availHeight))
-+ newY = (screen.availTop + screen.availHeight) - window.outerHeight - 60;
-+
-+ window.moveTo( newX, newY );
-+ ]]>
-+ </body>
-+ </method>
-+
-+ <method name="centerWindowOnScreen">
-+ <body>
-+ <![CDATA[
-+ var xOffset = screen.availWidth / 2 - window.outerWidth / 2;
-+ var yOffset = screen.availHeight / 2 - window.outerHeight / 2;
-+
-+ xOffset = xOffset > 0 ? xOffset : 0;
-+ yOffset = yOffset > 0 ? yOffset : 0;
-+ window.moveTo(xOffset, yOffset);
-+ ]]>
-+ </body>
-+ </method>
-+
-+ <constructor>
-+ <![CDATA[
-+ this._configureButtons(this.buttons);
-+
-+ // listen for when window is closed via native close buttons
-+ window.addEventListener("close", this);
-+
-+ // for things that we need to initialize after onload fires
-+ window.addEventListener("load", this);
-+
-+ window.moveToAlertPosition = this.moveToAlertPosition;
-+ window.centerWindowOnScreen = this.centerWindowOnScreen;
-+ ]]>
-+ </constructor>
-+
-+ <method name="handleEvent">
-+ <parameter name="aEvent"/>
-+ <body><![CDATA[
-+ switch (aEvent.type) {
-+ case "close": {
-+ this._closeHandler(aEvent);
-+ break;
-+ }
-+ case "load": {
-+ this.postLoadInit(aEvent);
-+ break;
-+ }
-+ }
-+ ]]></body>
-+ </method>
-+
-+ <method name="postLoadInit">
-+ <parameter name="aEvent"/>
-+ <body>
-+ <![CDATA[
-+ function focusInit() {
-+ const dialog = document.documentElement;
-+ const defaultButton = dialog.getButton(dialog.defaultButton);
-+ // give focus to the first focusable element in the dialog
-+ if (!document.commandDispatcher.focusedElement) {
-+ document.commandDispatcher.advanceFocusIntoSubtree(dialog);
-+
-+ var focusedElt = document.commandDispatcher.focusedElement;
-+ if (focusedElt) {
-+ var initialFocusedElt = focusedElt;
-+ while (focusedElt.localName == "tab" ||
-+ focusedElt.getAttribute("noinitialfocus") == "true") {
-+ document.commandDispatcher.advanceFocusIntoSubtree(focusedElt);
-+ focusedElt = document.commandDispatcher.focusedElement;
-+ if (focusedElt == initialFocusedElt) {
-+ if (focusedElt.getAttribute("noinitialfocus") == "true") {
-+ focusedElt.blur();
-+ }
-+ break;
-+ }
-+ }
-+
-+ if (initialFocusedElt.localName == "tab") {
-+ if (focusedElt.hasAttribute("dlgtype")) {
-+ // We don't want to focus on anonymous OK, Cancel, etc. buttons,
-+ // so return focus to the tab itself
-+ initialFocusedElt.focus();
-+ }
-+ } else if (!/Mac/.test(navigator.platform) &&
-+ focusedElt.hasAttribute("dlgtype") && focusedElt != defaultButton) {
-+ defaultButton.focus();
-+ }
-+ }
-+ }
-+
-+ try {
-+ if (defaultButton)
-+ window.notifyDefaultButtonLoaded(defaultButton);
-+ } catch (e) { }
-+ }
-+
-+ // Give focus after onload completes, see bug 103197.
-+ setTimeout(focusInit, 0);
-+
-+ if (this._l10nButtons.length) {
-+ document.l10n.translateElements(this._l10nButtons).then(() => {
-+ window.sizeToContent();
-+ });
-+ }
-+ ]]>
-+ </body>
-+ </method>
-+
-+ <method name="openHelp">
-+ <parameter name="event"/>
-+ <body>
-+ <![CDATA[
-+ var helpButton = document.documentElement.getButton("help");
-+ if (helpButton.disabled || helpButton.hidden)
-+ return;
-+ this._fireButtonEvent("help");
-+ event.stopPropagation();
-+ event.preventDefault();
-+ ]]>
-+ </body>
-+ </method>
-+
-+ <property name="mStrBundle">
-+ <getter>
-+ <![CDATA[
-+ if (!this._mStrBundle) {
-+ // need to create string bundle manually instead of using <xul:stringbundle/>
-+ // see bug 63370 for details
-+ this._mStrBundle = Cc["@mozilla.org/intl/stringbundle;1"]
-+ .getService(Ci.nsIStringBundleService)
-+ .createBundle("chrome://global/locale/dialog.properties");
-+ }
-+ return this._mStrBundle;
-+ ]]></getter>
-+ </property>
-+
-+ <method name="_configureButtons">
-+ <parameter name="aButtons"/>
-+ <body>
-+ <![CDATA[
-+ // by default, get all the anonymous button elements
-+ var buttons = {};
-+ this._buttons = buttons;
-+ buttons.accept = document.getAnonymousElementByAttribute(this, "dlgtype", "accept");
-+ buttons.cancel = document.getAnonymousElementByAttribute(this, "dlgtype", "cancel");
-+ buttons.extra1 = document.getAnonymousElementByAttribute(this, "dlgtype", "extra1");
-+ buttons.extra2 = document.getAnonymousElementByAttribute(this, "dlgtype", "extra2");
-+ buttons.help = document.getAnonymousElementByAttribute(this, "dlgtype", "help");
-+ buttons.disclosure = document.getAnonymousElementByAttribute(this, "dlgtype", "disclosure");
-+
-+ for (let button in buttons) {
-+ customElements.upgrade(buttons[button]);
-+ }
-+
-+ // look for any overriding explicit button elements
-+ var exBtns = this.getElementsByAttribute("dlgtype", "*");
-+ var dlgtype;
-+ var i;
-+ for (i = 0; i < exBtns.length; ++i) {
-+ dlgtype = exBtns[i].getAttribute("dlgtype");
-+ buttons[dlgtype].hidden = true; // hide the anonymous button
-+ buttons[dlgtype] = exBtns[i];
-+ }
-+
-+ // add the label and oncommand handler to each button
-+ for (dlgtype in buttons) {
-+ var button = buttons[dlgtype];
-+ button.addEventListener("command", this._handleButtonCommand, true);
-+
-+ // don't override custom labels with pre-defined labels on explicit buttons
-+ if (!button.hasAttribute("label")) {
-+ // dialog attributes override the default labels in dialog.properties
-+ if (this.hasAttribute("buttonlabel" + dlgtype)) {
-+ button.setAttribute("label", this.getAttribute("buttonlabel" + dlgtype));
-+ if (this.hasAttribute("buttonaccesskey" + dlgtype))
-+ button.setAttribute("accesskey", this.getAttribute("buttonaccesskey" + dlgtype));
-+ } else if (this.hasAttribute("buttonid" + dlgtype)) {
-+ document.l10n.setAttributes(button, this.getAttribute("buttonid" + dlgtype));
-+ this._l10nButtons.push(button);
-+ } else if (dlgtype != "extra1" && dlgtype != "extra2") {
-+ button.setAttribute("label", this.mStrBundle.GetStringFromName("button-" + dlgtype));
-+ var accessKey = this.mStrBundle.GetStringFromName("accesskey-" + dlgtype);
-+ if (accessKey)
-+ button.setAttribute("accesskey", accessKey);
-+ }
-+ }
-+ // allow specifying alternate icons in the dialog header
-+ if (!button.hasAttribute("icon")) {
-+ // if there's an icon specified, use that
-+ if (this.hasAttribute("buttonicon" + dlgtype))
-+ button.setAttribute("icon", this.getAttribute("buttonicon" + dlgtype));
-+ // otherwise set defaults
-+ else
-+ switch (dlgtype) {
-+ case "accept":
-+ button.setAttribute("icon", "accept");
-+ break;
-+ case "cancel":
-+ button.setAttribute("icon", "cancel");
-+ break;
-+ case "disclosure":
-+ button.setAttribute("icon", "properties");
-+ break;
-+ case "help":
-+ button.setAttribute("icon", "help");
-+ break;
-+ default:
-+ break;
-+ }
-+ }
-+ }
-+
-+ // ensure that hitting enter triggers the default button command
-+ this.defaultButton = this.defaultButton;
-+
-+ // if there is a special button configuration, use it
-+ if (aButtons) {
-+ // expect a comma delimited list of dlgtype values
-+ var list = aButtons.split(",");
-+
-+ // mark shown dlgtypes as true
-+ var shown = { accept: false, cancel: false, help: false,
-+ disclosure: false, extra1: false, extra2: false };
-+ for (i = 0; i < list.length; ++i)
-+ shown[list[i].replace(/ /g, "")] = true;
-+
-+ // hide/show the buttons we want
-+ for (dlgtype in buttons)
-+ buttons[dlgtype].hidden = !shown[dlgtype];
-+
-+ // show the spacer on Windows only when the extra2 button is present
-+ if (/Win/.test(navigator.platform)) {
-+ var spacer = document.getAnonymousElementByAttribute(this, "anonid", "spacer");
-+ spacer.removeAttribute("hidden");
-+ spacer.setAttribute("flex", shown.extra2 ? "1" : "0");
-+ }
-+ }
-+ ]]>
-+ </body>
-+ </method>
-+
-+ <method name="_setDefaultButton">
-+ <parameter name="aNewDefault"/>
-+ <body>
-+ <![CDATA[
-+ // remove the default attribute from the previous default button, if any
-+ var oldDefaultButton = this.getButton(this.defaultButton);
-+ if (oldDefaultButton)
-+ oldDefaultButton.removeAttribute("default");
-+
-+ var newDefaultButton = this.getButton(aNewDefault);
-+ if (newDefaultButton) {
-+ this.setAttribute("defaultButton", aNewDefault);
-+ newDefaultButton.setAttribute("default", "true");
-+ } else {
-+ this.setAttribute("defaultButton", "none");
-+ if (aNewDefault != "none")
-+ dump("invalid new default button: " + aNewDefault + ", assuming: none\n");
-+ }
-+ ]]>
-+ </body>
-+ </method>
-+
-+ <method name="_handleButtonCommand">
-+ <parameter name="aEvent"/>
-+ <body>
-+ <![CDATA[
-+ return document.documentElement._doButtonCommand(
-+ aEvent.target.getAttribute("dlgtype"));
-+ ]]>
-+ </body>
-+ </method>
-+
-+ <method name="_doButtonCommand">
-+ <parameter name="aDlgType"/>
-+ <body>
-+ <![CDATA[
-+ var button = this.getButton(aDlgType);
-+ if (!button.disabled) {
-+ var noCancel = this._fireButtonEvent(aDlgType);
-+ if (noCancel) {
-+ if (aDlgType == "accept" || aDlgType == "cancel") {
-+ var closingEvent = new CustomEvent("dialogclosing", {
-+ bubbles: true,
-+ detail: { button: aDlgType },
-+ });
-+ this.dispatchEvent(closingEvent);
-+ window.close();
-+ }
-+ }
-+ return noCancel;
-+ }
-+ return true;
-+ ]]>
-+ </body>
-+ </method>
-+
-+ <method name="_fireButtonEvent">
-+ <parameter name="aDlgType"/>
-+ <body>
-+ <![CDATA[
-+ var event = document.createEvent("Events");
-+ event.initEvent("dialog" + aDlgType, true, true);
-+
-+ // handle dom event handlers
-+ return this.dispatchEvent(event);
-+ ]]>
-+ </body>
-+ </method>
-+
-+ <method name="_hitEnter">
-+ <parameter name="evt"/>
-+ <body>
-+ <![CDATA[
-+ if (evt.defaultPrevented)
-+ return;
-+
-+ var btn = this.getButton(this.defaultButton);
-+ if (btn)
-+ this._doButtonCommand(this.defaultButton);
-+ ]]>
-+ </body>
-+ </method>
-+
-+ </implementation>
-+
-+ <handlers>
-+ <handler event="keypress" keycode="VK_RETURN"
-+ group="system" action="this._hitEnter(event);"/>
-+ <handler event="keypress" keycode="VK_ESCAPE" group="system">
-+ if (!event.defaultPrevented)
-+ this.cancelDialog();
-+ </handler>
-+#ifdef XP_MACOSX
-+ <handler event="keypress" key="." modifiers="meta" phase="capturing" action="this.cancelDialog();"/>
-+#else
-+ <handler event="focus" phase="capturing">
-+ var btn = this.getButton(this.defaultButton);
-+ if (btn)
-+ btn.setAttribute("default", event.originalTarget == btn ||
-+ !(event.originalTarget.localName == "button" ||
-+ event.originalTarget.localName == "toolbarbutton"));
-+ </handler>
-+#endif
-+ </handlers>
-+
-+ </binding>
-+
-+</bindings>
diff --git a/toolkit/mozapps/downloads/HelperAppDlg.jsm b/toolkit/mozapps/downloads/HelperAppDlg.jsm
--- a/toolkit/mozapps/downloads/HelperAppDlg.jsm
+++ b/toolkit/mozapps/downloads/HelperAppDlg.jsm
@@ -1821,7 +1295,7 @@
diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
--- a/widget/gtk/moz.build
+++ b/widget/gtk/moz.build
-@@ -124,16 +124,17 @@ include('/ipc/chromium/chromium-config.m
+@@ -126,16 +126,17 @@ include('/ipc/chromium/chromium-config.m
FINAL_LIBRARY = 'xul'
@@ -1842,7 +1316,7 @@
diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
--- a/widget/gtk/nsFilePicker.cpp
+++ b/widget/gtk/nsFilePicker.cpp
-@@ -4,32 +4,34 @@
+@@ -4,16 +4,17 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "mozilla/Types.h"
@@ -1855,11 +1329,12 @@
#include "nsGtkUtils.h"
#include "nsIFileURL.h"
+ #include "nsIGIOService.h"
#include "nsIURI.h"
#include "nsIWidget.h"
#include "nsIFile.h"
#include "nsIStringBundle.h"
-
+@@ -21,16 +22,17 @@
#include "nsArrayEnumerator.h"
#include "nsMemory.h"
#include "nsEnumeratorUtils.h"
@@ -1877,7 +1352,7 @@
#define MAX_PREVIEW_SOURCE_SIZE 4096
nsIFile* nsFilePicker::mPrevDisplayDirectory = nullptr;
-@@ -227,17 +229,19 @@ nsFilePicker::AppendFilters(int32_t aFil
+@@ -228,17 +230,19 @@ nsFilePicker::AppendFilters(int32_t aFil
mAllowURLs = !!(aFilterMask & filterAllowURLs);
return nsBaseFilePicker::AppendFilters(aFilterMask);
}
@@ -1898,7 +1373,7 @@
mFilters.AppendElement(filter);
mFilterNames.AppendElement(name);
-@@ -337,16 +341,39 @@ nsresult nsFilePicker::Show(int16_t* aRe
+@@ -338,16 +342,39 @@ nsresult nsFilePicker::Show(int16_t* aRe
return NS_OK;
}
@@ -1938,7 +1413,7 @@
GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
-@@ -572,16 +599,240 @@ void nsFilePicker::Done(void* file_choos
+@@ -573,16 +600,240 @@ void nsFilePicker::Done(void* file_choos
mCallback->Done(result);
mCallback = nullptr;
} else {
--- a/mozilla-ppc-altivec_static_inline.patch Thu Sep 05 08:27:52 2019 +0200
+++ b/mozilla-ppc-altivec_static_inline.patch Fri Sep 06 18:28:48 2019 +0200
@@ -3,13 +3,18 @@
# Date 1558452418 -7200
# Tue May 21 17:26:58 2019 +0200
# Node ID 6cd963b6c82ea6629aaf4050851789b78f310338
-# Parent 602e92722e765a3c238d3b96b26c0c8063b5eeb4
+# Parent 010a35335b4e45e222b9efdbda24fd1963202ecf
imported patch mozilla-ppc-altivec_static_inline.patch
-diff -r 602e92722e76 -r 6cd963b6c82e gfx/qcms/transform-altivec.c
---- a/gfx/qcms/transform-altivec.c Tue May 21 17:26:48 2019 +0200
-+++ b/gfx/qcms/transform-altivec.c Tue May 21 17:26:58 2019 +0200
-@@ -30,7 +30,7 @@
+diff --git a/gfx/qcms/transform-altivec.cpp b/gfx/qcms/transform-altivec.cpp
+--- a/gfx/qcms/transform-altivec.cpp
++++ b/gfx/qcms/transform-altivec.cpp
+@@ -25,17 +25,17 @@
+
+ #include "qcmsint.h"
+
+ #define FLOATSCALE (float)(PRECACHE_OUTPUT_SIZE)
+ #define CLAMPMAXVAL (((float) (PRECACHE_OUTPUT_SIZE - 1)) / PRECACHE_OUTPUT_SIZE)
static const ALIGN float floatScaleX4 = FLOATSCALE;
static const ALIGN float clampMaxValueX4 = CLAMPMAXVAL;
@@ -18,3 +23,8 @@
{
vector float data = vec_lde(0, dataPtr);
vector unsigned char moveToStart = vec_lvsl(0, dataPtr);
+ return vec_perm(data, data, moveToStart);
+ }
+
+ template <size_t kRIndex, size_t kGIndex, size_t kBIndex, size_t kAIndex = NO_A_INDEX>
+ static void qcms_transform_data_template_lut_altivec(const qcms_transform *transform,
--- a/series Thu Sep 05 08:27:52 2019 +0200
+++ b/series Fri Sep 06 18:28:48 2019 +0200
@@ -15,9 +15,9 @@
mozilla-bmo1005535.patch
mozilla-bmo1568145.patch
mozilla-bmo1573381.patch
-mozilla-bmo1504834-part3.patch
+mozilla-bmo1504834-part1.patch
mozilla-bmo1504834-part2.patch
-mozilla-bmo1504834-part1.patch
+mozilla-bmo1504834-part3.patch
mozilla-bmo1511604.patch
mozilla-bmo1554971.patch
mozilla-nestegg-big-endian.patch