Firefox 65.0 release firefox65
authorWolfgang Rosenauer <wr@rosenauer.org>
Thu, 31 Jan 2019 11:21:22 +0100
branchfirefox65
changeset 1085 87f893cf45b9
parent 1084 b0b3c507e253
child 1086 ed1c30c5f456
Firefox 65.0 release
MozillaFirefox/MozillaFirefox.changes
MozillaFirefox/MozillaFirefox.spec
MozillaFirefox/create-tar.sh
MozillaFirefox/source-stamp.txt
firefox-kde.patch
mozilla-aarch64-startup-crash.patch
mozilla-bmo1463035.patch
mozilla-bmo256180.patch
mozilla-kde.patch
mozilla-nongnome-proxies.patch
mozilla-ntlm-full-path.patch
--- a/MozillaFirefox/MozillaFirefox.changes	Sat Jan 26 22:42:57 2019 +0100
+++ b/MozillaFirefox/MozillaFirefox.changes	Thu Jan 31 11:21:22 2019 +0100
@@ -1,4 +1,36 @@
 -------------------------------------------------------------------
+Sat Jan 26 22:37:01 UTC 2019 - Wolfgang Rosenauer <wr@rosenauer.org>
+
+- Mozilla Firefox 65.0
+  * Enhanced tracking protection
+  * allow switching of UI locales within preferences
+  * support for the WebP image format
+  * "top"-like about:performance
+  MFSA 2019-01 (bsc#1122983)
+  * CVE-2018-18500 bmo#1510114
+    Use-after-free parsing HTML5 stream
+  * CVE-2018-18503 bmo#1509442
+    Memory corruption with Audio Buffer
+  * CVE-2018-18504 bmo#1496413
+    Memory corruption and out-of-bounds read of texture client
+  * CVE-2018-18505 bmo#1497749
+    Privilege escalation through IPC channel messages
+  * CVE-2018-18506 bmo#1503393
+    Proxy Auto-Configuration file can define localhost access to be proxied
+  * CVE-2018-18502 bmo#1499426 bmo#1480090 bmo#1472990 bmo#1514762
+    bmo#1501482 bmo#1505887 bmo#1508102 bmo#1508618 bmo#1511580
+    bmo#1493497 bmo#1510145 bmo#1516289 bmo#1506798 bmo#1512758
+    Memory safety bugs fixed in Firefox 65
+  * CVE-2018-18501 bmo#1512450 bmo#1517542 bmo#1513201 bmo#1460619
+    bmo#1502871 bmo#1516738 bmo#1516514
+    Memory safety bugs fixed in Firefox 65 and Firefox ESR 60.5
+- requires
+  NSS 3.41
+  rust/carge 1.30
+  rust-cbindgen 0.6.7
+-rebased patches
+
+-------------------------------------------------------------------
 Tue Jan 15 14:32:03 UTC 2019 - Martin Liška <mliska@suse.cz>
 
 - Increase disk constraint.
--- a/MozillaFirefox/MozillaFirefox.spec	Sat Jan 26 22:42:57 2019 +0100
+++ b/MozillaFirefox/MozillaFirefox.spec	Thu Jan 31 11:21:22 2019 +0100
@@ -2,7 +2,7 @@
 # spec file for package MozillaFirefox
 #
 # Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
-#               2006-2018 Wolfgang Rosenauer
+#               2006-2019 Wolfgang Rosenauer
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,13 +18,13 @@
 
 
 # changed with every update
-%define major          64
-%define mainver        %major.0.2
-%define orig_version   64.0.2
+%define major          65
+%define mainver        %major.0
+%define orig_version   65.0
 %define orig_suffix    %{nil}
 %define update_channel release
 %define branding       1
-%define releasedate    20190108160530
+%define releasedate    20190124174741
 %define source_prefix  firefox-%{orig_version}
 
 # always build with GCC as SUSE Security Team requires that
@@ -69,7 +69,7 @@
 %else
 BuildRequires:  gcc-c++
 %endif
-BuildRequires:  cargo >= 1.29
+BuildRequires:  cargo >= 1.30
 BuildRequires:  libXcomposite-devel
 BuildRequires:  libcurl-devel
 BuildRequires:  libidl-devel
@@ -78,13 +78,13 @@
 BuildRequires:  libproxy-devel
 BuildRequires:  makeinfo
 BuildRequires:  mozilla-nspr-devel >= 4.20
-BuildRequires:  mozilla-nss-devel >= 3.40.1
+BuildRequires:  mozilla-nss-devel >= 3.41
 BuildRequires:  nodejs8 >= 8.11
 BuildRequires:  python-devel
 BuildRequires:  python2-xml
 BuildRequires:  python3 >= 3.5
-BuildRequires:  rust >= 1.29
-BuildRequires:  rust-cbindgen >= 0.6.4
+BuildRequires:  rust >= 1.30
+BuildRequires:  rust-cbindgen >= 0.6.7
 BuildRequires:  startup-notification-devel
 BuildRequires:  unzip
 BuildRequires:  update-desktop-files
--- a/MozillaFirefox/create-tar.sh	Sat Jan 26 22:42:57 2019 +0100
+++ b/MozillaFirefox/create-tar.sh	Thu Jan 31 11:21:22 2019 +0100
@@ -7,8 +7,8 @@
 
 CHANNEL="release"
 BRANCH="releases/mozilla-$CHANNEL"
-RELEASE_TAG="c58ea2229c337e9981ab9d3650b04fd3d249b141"
-VERSION="64.0.2"
+RELEASE_TAG="896611703c2b8f04f596ebcb09e612b7ab06eea3"
+VERSION="65.0"
 VERSION_SUFFIX=""
 LOCALE_FILE="firefox-$VERSION/browser/locales/l10n-changesets.json"
 
--- a/MozillaFirefox/source-stamp.txt	Sat Jan 26 22:42:57 2019 +0100
+++ b/MozillaFirefox/source-stamp.txt	Thu Jan 31 11:21:22 2019 +0100
@@ -1,2 +1,2 @@
-REV=c58ea2229c33
+REV=896611703c2b
 REPO=http://hg.mozilla.org/releases/mozilla-release
--- a/firefox-kde.patch	Sat Jan 26 22:42:57 2019 +0100
+++ b/firefox-kde.patch	Thu Jan 31 11:21:22 2019 +0100
@@ -1,11 +1,11 @@
 # HG changeset patch
-# Parent  f2429084f187d5758508ae547c411943cba60fcf
+# Parent  693f0baece29cc958a7d91b89fd12e3b89a502e3
 
 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,1384 @@
+@@ -0,0 +1,1395 @@
 +#filter substitution
 +<?xml version="1.0"?>
 +# -*- Mode: HTML -*-
@@ -81,6 +81,7 @@
 +        persist="screenX screenY width height sizemode"
 +#ifdef BROWSER_XHTML
 +        hidden="true"
++        mozpersist=""
 +#endif
 +        >
 +
@@ -95,7 +96,22 @@
 +#endif
 +>
 +  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-compacttheme.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/searchbar.js", this);
 +
 +  window.onload = gBrowserInit.onLoad.bind(gBrowserInit);
 +  window.onunload = gBrowserInit.onUnload.bind(gBrowserInit);
@@ -152,6 +168,9 @@
 +      <menuitem id="context_duplicateTab" label="&duplicateTab.label;"
 +                accesskey="&duplicateTab.accesskey;"
 +                oncommand="duplicateTabIn(TabContextMenu.contextTab, 'tab');"/>
++      <menuitem id="context_duplicateTabs" label="&duplicateTabs.label;"
++                accesskey="&duplicateTabs.accesskey;"
++                oncommand="TabContextMenu.duplicateSelectedTabs();"/>
 +      <menuseparator/>
 +      <menuitem id="context_selectAllTabs" label="&selectAllTabs.label;" accesskey="&selectAllTabs.accesskey;"
 +                oncommand="gBrowser.selectAllTabs();"/>
@@ -262,13 +281,16 @@
 +        <html:div class="urlbarView-body-inner">
 +          <!-- TODO: add search suggestions notification -->
 +          <html:div class="urlbarView-results"/>
-+          <!-- TODO: add footer -->
 +        </html:div>
 +      </html:div>
++      <hbox class="search-one-offs"
++            compact="true"
++            includecurrentengine="true"
++            disabletab="true"/>
 +    </panel>
 +
-+   <!-- for date/time picker. consumeoutsideclicks is set to never, so that
-+        clicks on the anchored input box are never consumed. -->
++    <!-- 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"
@@ -322,6 +344,7 @@
 +                  oncommand="StarUI.onShowForNewBookmarksCheckboxCommand();"/>
 +      </vbox>
 +      <hbox id="editBookmarkPanelBottomButtons"
++            class="panel-footer"
 +            style="min-width: &editBookmark.panel.width;;">
 +#ifdef XP_UNIX
 +        <button id="editBookmarkPanelDoneButton"
@@ -436,49 +459,43 @@
 +                label="&customizeMenu.pinToOverflowMenu.label;"
 +                contexttype="toolbaritem"
 +                class="customize-context-moveToPanel"/>
-+      <menuitem oncommand="ToolbarContextMenu.onDownloadsAutoHideChange(event)"
++      <menuitem id="toolbar-context-autohide-downloads-button"
++                oncommand="ToolbarContextMenu.onDownloadsAutoHideChange(event);"
 +                type="checkbox"
 +                accesskey="&customizeMenu.autoHideDownloadsButton.accesskey;"
 +                label="&customizeMenu.autoHideDownloadsButton.label;"
-+                contexttype="toolbaritem"
-+                class="customize-context-autoHide"/>
++                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"
-+                class="toolbaritem-tabsmenu"
 +                contexttype="tabbar"
 +                oncommand="gBrowser.reloadMultiSelectedTabs();"
 +                label="&toolbarContextMenu.reloadSelectedTab.label;"
 +                accesskey="&toolbarContextMenu.reloadSelectedTab.accesskey;"/>
 +      <menuitem id="toolbar-context-reloadSelectedTabs"
-+                class="toolbaritem-tabsmenu"
 +                contexttype="tabbar"
 +                oncommand="gBrowser.reloadMultiSelectedTabs();"
 +                label="&toolbarContextMenu.reloadSelectedTabs.label;"
 +                accesskey="&toolbarContextMenu.reloadSelectedTabs.accesskey;"/>
 +      <menuitem id="toolbar-context-bookmarkSelectedTab"
-+                class="toolbaritem-tabsmenu"
 +                contexttype="tabbar"
 +                oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.uniqueSelectedPages);"
 +                label="&toolbarContextMenu.bookmarkSelectedTab.label;"
 +                accesskey="&toolbarContextMenu.bookmarkSelectedTab.accesskey;"/>
 +      <menuitem id="toolbar-context-bookmarkSelectedTabs"
-+                class="toolbaritem-tabsmenu"
 +                contexttype="tabbar"
 +                oncommand="PlacesCommandHook.bookmarkPages(PlacesCommandHook.uniqueSelectedPages);"
 +                label="&toolbarContextMenu.bookmarkSelectedTabs.label;"
 +                accesskey="&toolbarContextMenu.bookmarkSelectedTabs.accesskey;"/>
 +      <menuitem id="toolbar-context-selectAllTabs"
-+                class="toolbaritem-tabsmenu"
 +                contexttype="tabbar"
 +                oncommand="gBrowser.selectAllTabs();"
 +                label="&toolbarContextMenu.selectAllTabs.label;"
 +                accesskey="&toolbarContextMenu.selectAllTabs.accesskey;"/>
 +      <menuitem id="toolbar-context-undoCloseTab"
-+                class="toolbaritem-tabsmenu"
 +                contexttype="tabbar"
 +                label="&toolbarContextMenu.undoCloseTab.label;"
 +                accesskey="&toolbarContextMenu.undoCloseTab.accesskey;"
@@ -722,110 +739,101 @@
 +  </popupset>
 +  <box id="appMenu-viewCache" hidden="true"/>
 +
-+<vbox id="titlebar">
-+  <hbox id="titlebar-content">
-+    <spacer id="titlebar-spacer" flex="1"/>
-+    <hbox id="titlebar-buttonbox-container">
-+      <hbox id="titlebar-buttonbox" class="titlebar-color">
-+        <toolbarbutton class="titlebar-button" id="titlebar-min" oncommand="window.minimize();"/>
-+        <toolbarbutton class="titlebar-button" id="titlebar-max" oncommand="onTitlebarMaxClick();"/>
-+        <toolbarbutton class="titlebar-button" id="titlebar-close" command="cmd_closeWindow"/>
-+      </hbox>
-+    </hbox>
-+#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>
++  <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
-+  </hbox>
-+</vbox>
-+
-+  <toolbox id="navigator-toolbox">
-+    <!-- 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">
++               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>
++        </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">
++        <vbox flex="1" class="toolbar-items">
++          <spacer flex="1000"/>
++
++          <hbox id="TabsToolbar-customization-target" flex="1">
++            <hbox class="titlebar-spacer" type="pre-tabs"
++                  skipintoolbarset="true"/>
++
++            <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 class="titlebar-spacer" type="post-tabs"
++                  ordinal="1000"
++                  skipintoolbarset="true"/>
++          </hbox>
++        </vbox>
 +
 +#ifndef XP_MACOSX
-+      <hbox class="titlebar-placeholder" type="caption-buttons" ordinal="1000"
-+            skipintoolbarset="true"/>
++        <button class="accessibility-indicator" tooltiptext="&accessibilityIndicator.tooltip;"
++                ordinal="1000"
++                aria-live="polite" skipintoolbarset="true"/>
++        <hbox class="private-browsing-indicator" skipintoolbarset="true"
++              ordinal="1000"/>
 +#endif
-+    </toolbar>
-+
-+    <toolbar id="TabsToolbar"
-+             class="browser-toolbar titlebar-color"
-+             fullscreentoolbar="true"
-+             customizable="true"
-+             mode="icons"
-+             aria-label="&tabsToolbar.label;"
-+             context="toolbar-context-menu">
-+      <hbox class="titlebar-placeholder" type="pre-tabs"
-+            skipintoolbarset="true"/>
-+
-+      <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 class="titlebar-placeholder" type="post-tabs"
-+            ordinal="1000"
-+            skipintoolbarset="true"/>
-+
-+      <button class="accessibility-indicator" tooltiptext="&accessibilityIndicator.tooltip;"
-+              ordinal="1000"
-+              aria-live="polite" skipintoolbarset="true"/>
-+      <hbox class="private-browsing-indicator" skipintoolbarset="true"
-+            ordinal="1000"/>
-+      <hbox class="titlebar-placeholder" type="caption-buttons"
-+#ifndef XP_MACOSX
-+            ordinal="1000"
-+#endif
-+            skipintoolbarset="true"/>
++#include titlebar-items.inc.xul
 +
 +#ifdef XP_MACOSX
-+      <hbox class="titlebar-placeholder" type="fullscreen-button"
-+            skipintoolbarset="true"/>
++        <!-- 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>
++      </toolbar>
++
++    </vbox>
 +
 +    <toolbar id="nav-bar"
 +             class="browser-toolbar"
@@ -993,6 +1001,8 @@
 +                         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"/>
@@ -1131,6 +1141,10 @@
 +                       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"
@@ -1312,9 +1326,6 @@
 +        <searchbar id="searchbar" flex="1"/>
 +      </toolbaritem>
 +    </toolbarpalette>
-+    <box id="library-animatable-box" class="toolbarbutton-animatable-box">
-+      <image class="toolbarbutton-animatable-image"/>
-+    </box>
 +  </toolbox>
 +
 +  <hbox id="fullscr-toggler" hidden="true"/>
@@ -1343,7 +1354,7 @@
 +
 +      <splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" hidden="true"/>
 +      <vbox id="appcontent" flex="1">
-+        <notificationbox id="high-priority-global-notificationbox" notificationside="top"/>
++        <!-- gHighPriorityNotificationBox will be added here lazily. -->
 +        <tabbox id="tabbrowser-tabbox"
 +                flex="1" tabcontainer="tabbrowser-tabs">
 +          <tabpanels id="tabbrowser-tabpanels"
@@ -1386,7 +1397,7 @@
 +  </html:div>
 +
 +  <vbox id="browser-bottombox" layer="true">
-+    <notificationbox id="global-notificationbox" notificationside="bottom"/>
++    <!-- gNotificationBox will be added here lazily. -->
 +  </vbox>
 +
 +</window>
@@ -1475,7 +1486,7 @@
 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
-@@ -283,16 +283,23 @@ var gMainPane = {
+@@ -289,16 +289,23 @@ var gMainPane = {
            this._backoffIndex++ : backoffTimes.length - 1]);
        };
  
@@ -1499,7 +1510,7 @@
      performanceSettingsLink.setAttribute("href", performanceSettingsUrl);
  
      this.updateDefaultPerformanceSettingsPref();
-@@ -938,16 +945,27 @@ var gMainPane = {
+@@ -1012,16 +1019,27 @@ var gMainPane = {
        // Reset exponential backoff delay time in order to do visual update in pollForDefaultBrowser.
        this._backoffIndex = 0;
  
@@ -1792,7 +1803,7 @@
 diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
 --- a/browser/installer/package-manifest.in
 +++ b/browser/installer/package-manifest.in
-@@ -458,16 +458,18 @@
+@@ -451,16 +451,18 @@
  @RESPATH@/browser/defaults/settings/pinning
  @RESPATH@/browser/defaults/settings/main
  
--- a/mozilla-aarch64-startup-crash.patch	Sat Jan 26 22:42:57 2019 +0100
+++ b/mozilla-aarch64-startup-crash.patch	Thu Jan 31 11:21:22 2019 +0100
@@ -1,32 +1,32 @@
 # HG changeset patch
 # Parent a5cfa3aa11a9d3391df49de6fc5a0e5232c12c10
-# Parent  07236b512cd930e3fc7a94fed549431ccaa51c90
+# Parent  7b5f6b68a8963228f738b803177f937481e19745
 Bug 991344 - Rpi3: Firefox crashes after a few seconds of usage
 
 diff --git a/netwerk/base/nsIOService.cpp b/netwerk/base/nsIOService.cpp
 --- a/netwerk/base/nsIOService.cpp
 +++ b/netwerk/base/nsIOService.cpp
-@@ -923,17 +923,23 @@ nsIOService::NewChannelFromURIWithProxyF
-                     "doesn't support nsIUploadChannel2. An extension has "
-                     "supplied a non-functional http protocol handler. This will "
-                     "break behavior and in future releases not work at all.");
-             }
-             gHasWarnedUploadChannel2 = true;
-         }
+@@ -842,17 +842,23 @@ nsresult nsIOService::NewChannelFromURIW
+             "doesn't support nsIUploadChannel2. An extension has "
+             "supplied a non-functional http protocol handler. This will "
+             "break behavior and in future releases not work at all.");
+       }
+       gHasWarnedUploadChannel2 = true;
      }
+   }
  
 +#if defined(__aarch64__)
-+    if (result) {
-+        channel.forget(result);
-+    }
++  if (result) {
++      channel.forget(result);
++  }
 +#else
-     channel.forget(result);
+   channel.forget(result);
 +#endif
-     return NS_OK;
+   return NS_OK;
  }
  
  NS_IMETHODIMP
- nsIOService::NewChannelFromURIWithProxyFlags2(nsIURI* aURI,
-                                               nsIURI* aProxyURI,
-                                               uint32_t aProxyFlags,
-                                               nsINode* aLoadingNode,
+ nsIOService::NewChannelFromURIWithProxyFlags2(
+     nsIURI *aURI, nsIURI *aProxyURI, uint32_t aProxyFlags,
+     nsINode *aLoadingNode, nsIPrincipal *aLoadingPrincipal,
+     nsIPrincipal *aTriggeringPrincipal, uint32_t aSecurityFlags,
--- a/mozilla-bmo1463035.patch	Sat Jan 26 22:42:57 2019 +0100
+++ b/mozilla-bmo1463035.patch	Thu Jan 31 11:21:22 2019 +0100
@@ -3,7 +3,7 @@
 # User Mike Hommey <mh+mozilla@glandium.org>
 # Date 1526871862 -32400
 # Node ID 94f21505ff13cd089f7129cd24927cf8b31a0f43
-# Parent  1800b8895c08bc0c60302775dc0a4b5ea4deb310
+# Parent  25ab6bab437517a8a182f1ab77898ae13b26a696
 Bug 1463035 - Remove MOZ_SIGNAL_TRAMPOLINE. r?darchons
 
 For some reason, GNU as is not happy with the assembly generated after
@@ -12,12 +12,11 @@
 OTOH, as mentioned in bug 1238661 comment 4, we actually don't need this
 workaround anymore, so let's just kill it.
 
-
 diff --git a/mfbt/LinuxSignal.h b/mfbt/LinuxSignal.h
 deleted file mode 100644
 --- a/mfbt/LinuxSignal.h
 +++ /dev/null
-@@ -1,45 +0,0 @@
+@@ -1,38 +0,0 @@
 -/* This Source Code Form is subject to the terms of the Mozilla Public
 - * License, v. 2.0. If a copy of the MPL was not distributed with this
 - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
@@ -38,35 +37,28 @@
 -// will be skipped over.
 -
 -template <void (*H)(int, siginfo_t*, void*)>
--__attribute__((naked)) void
--SignalTrampoline(int aSignal, siginfo_t* aInfo, void* aContext)
--{
--  asm volatile (
--    "nop; nop; nop; nop"
--    : : : "memory");
+-__attribute__((naked)) void SignalTrampoline(int aSignal, siginfo_t* aInfo,
+-                                             void* aContext) {
+-  asm volatile("nop; nop; nop; nop" : : : "memory");
 -
--  asm volatile (
--    "b %0"
--    :
--    : "X"(H)
--    : "memory");
+-  asm volatile("b %0" : : "X"(H) : "memory");
 -}
 -
--# define MOZ_SIGNAL_TRAMPOLINE(h) (mozilla::SignalTrampoline<h>)
+-#define MOZ_SIGNAL_TRAMPOLINE(h) (mozilla::SignalTrampoline<h>)
 -
--#else // __arm__
+-#else  // __arm__
 -
--# define MOZ_SIGNAL_TRAMPOLINE(h) (h)
+-#define MOZ_SIGNAL_TRAMPOLINE(h) (h)
 -
--#endif // __arm__
+-#endif  // __arm__
 -
--} // namespace mozilla
+-}  // namespace mozilla
 -
--#endif // mozilla_LinuxSignal_h
+-#endif  // mozilla_LinuxSignal_h
 diff --git a/mfbt/moz.build b/mfbt/moz.build
 --- a/mfbt/moz.build
 +++ b/mfbt/moz.build
-@@ -117,20 +117,16 @@ EXPORTS["double-conversion"] = [
+@@ -124,20 +124,16 @@ EXPORTS["double-conversion"] = [
  LOCAL_INCLUDES += [
      '/mfbt/double-conversion',
  ]
@@ -92,9 +84,9 @@
 +++ b/tools/profiler/core/platform-linux-android.cpp
 @@ -55,17 +55,16 @@
  #ifdef __GLIBC__
- #include <execinfo.h>   // backtrace, backtrace_symbols
- #endif  // def __GLIBC__
- #include <strings.h>    // index
+ #include <execinfo.h>  // backtrace, backtrace_symbols
+ #endif                 // def __GLIBC__
+ #include <strings.h>   // index
  #include <errno.h>
  #include <stdarg.h>
  
@@ -108,7 +100,7 @@
  
  using namespace mozilla;
  
-@@ -272,17 +271,17 @@ Sampler::Sampler(PSLockRef aLock)
+@@ -248,17 +247,17 @@ Sampler::Sampler(PSLockRef aLock)
  
    // NOTE: We don't initialize LUL here, instead initializing it in
    // SamplerThread's constructor. This is because with the
@@ -126,5 +118,4 @@
    }
  }
  
- void
-
+ void Sampler::Disable(PSLockRef aLock) {
--- a/mozilla-bmo256180.patch	Sat Jan 26 22:42:57 2019 +0100
+++ b/mozilla-bmo256180.patch	Thu Jan 31 11:21:22 2019 +0100
@@ -1,11 +1,25 @@
---- a/layout/generic/nsIFrame.h.old	2016-07-11 13:41:39.688276559 +0200
-+++ b/layout/generic/nsIFrame.h	2016-07-11 13:42:12.791406976 +0200
-@@ -13,7 +13,7 @@
+# HG changeset patch
+# Parent  8d4f57b44373d51f0e151eeaadf9fe293bcdfb7c
+
+diff --git a/layout/generic/nsIFrame.h b/layout/generic/nsIFrame.h
+--- a/layout/generic/nsIFrame.h
++++ b/layout/generic/nsIFrame.h
+@@ -8,17 +8,17 @@
+ 
+ #ifndef nsIFrame_h___
+ #define nsIFrame_h___
+ 
+ #ifndef MOZILLA_INTERNAL_API
  #error This header/class should only be used within Mozilla code. It should not be used by extensions.
  #endif
  
 -#define MAX_REFLOW_DEPTH 200
 +#define MAX_REFLOW_DEPTH 1000
  
- /* nsIFrame is in the process of being deCOMtaminated, i.e., this file is eventually
-    going to be eliminated, and all callers will use nsFrame instead.  At the moment
+ /* nsIFrame is in the process of being deCOMtaminated, i.e., this file is
+    eventually going to be eliminated, and all callers will use nsFrame instead.
+    At the moment we're midway through this process, so you will see inlined
+    functions and member variables in this file.  -dwh */
+ 
+ #include <algorithm>
+ #include <stdio.h>
--- a/mozilla-kde.patch	Sat Jan 26 22:42:57 2019 +0100
+++ b/mozilla-kde.patch	Thu Jan 31 11:21:22 2019 +0100
@@ -1,5 +1,5 @@
 # HG changeset patch
-# Parent  d685597ba96ea004052e40ec0c80f422ea0e365c
+# Parent  ff3da33eabc1d8760ec41a87afbaf44ded300ede
 Description: Add KDE integration to Firefox (toolkit parts)
 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
 Author: Lubos Lunak <lunak@suse.com>
@@ -27,7 +27,7 @@
  #ifdef XP_WIN
  #include "windows.h"
  #endif
-@@ -4908,25 +4909,37 @@ Preferences::InitInitialObjects(bool aIs
+@@ -4466,25 +4467,37 @@ float MOZ_MAYBE_UNUSED GetPref<float>(co
    // application pref files for backwards compatibility.
    static const char* specialFiles[] = {
  #if defined(XP_MACOSX)
@@ -57,15 +57,15 @@
 +    }
 +  }
 +
-   rv = pref_LoadPrefsInDir(
-     defaultPrefDir, specialFiles, ArrayLength(specialFiles));
+   rv = pref_LoadPrefsInDir(defaultPrefDir, specialFiles,
+                            ArrayLength(specialFiles));
    if (NS_FAILED(rv)) {
      NS_WARNING("Error parsing application default preferences.");
    }
  
    // Load jar:$app/omni.jar!/defaults/preferences/*.js
    // or jar:$gre/omni.jar!/defaults/preferences/*.js.
-@@ -4975,17 +4988,17 @@ Preferences::InitInitialObjects(bool aIs
+@@ -4532,17 +4545,17 @@ float MOZ_MAYBE_UNUSED GetPref<float>(co
        }
  
        nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
@@ -83,7 +83,7 @@
      SetupTelemetryPref();
    }
  
-   NS_CreateServicesFromCategory(NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID,
+   NS_CreateServicesFromCategory(NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID, nullptr,
 diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
 --- a/modules/libpref/moz.build
 +++ b/modules/libpref/moz.build
@@ -171,7 +171,7 @@
 diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
 --- a/toolkit/content/jar.mn
 +++ b/toolkit/content/jar.mn
-@@ -68,16 +68,18 @@ toolkit.jar:
+@@ -67,16 +67,18 @@ toolkit.jar:
     content/global/bindings/calendar.js         (widgets/calendar.js)
     content/global/bindings/checkbox.xml        (widgets/checkbox.xml)
     content/global/bindings/datekeeper.js       (widgets/datekeeper.js)
@@ -183,18 +183,18 @@
 +*  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/groupbox.xml        (widgets/groupbox.xml)
     content/global/bindings/menu.xml            (widgets/menu.xml)
     content/global/bindings/menulist.xml        (widgets/menulist.xml)
     content/global/bindings/notification.xml    (widgets/notification.xml)
     content/global/bindings/numberbox.xml       (widgets/numberbox.xml)
     content/global/bindings/popup.xml           (widgets/popup.xml)
     content/global/bindings/radio.xml           (widgets/radio.xml)
+    content/global/bindings/richlistbox.xml     (widgets/richlistbox.xml)
 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,475 @@
+@@ -0,0 +1,477 @@
 +<?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
@@ -495,6 +495,8 @@
 +                var accessKey = this.mStrBundle.GetStringFromName("accesskey-" + dlgtype);
 +                if (accessKey)
 +                  button.setAttribute("accesskey", accessKey);
++              } else if (this.hasAttribute("buttonid" + dlgtype)) {
++                document.l10n.setAttributes(button, this.getAttribute("buttonid" + dlgtype));
 +              }
 +            }
 +            // allow specifying alternate icons in the dialog header
@@ -673,7 +675,7 @@
 diff --git a/toolkit/mozapps/downloads/nsHelperAppDlg.js b/toolkit/mozapps/downloads/nsHelperAppDlg.js
 --- a/toolkit/mozapps/downloads/nsHelperAppDlg.js
 +++ b/toolkit/mozapps/downloads/nsHelperAppDlg.js
-@@ -1031,30 +1031,60 @@ nsUnknownContentTypeDialog.prototype = {
+@@ -1030,30 +1030,60 @@ nsUnknownContentTypeDialog.prototype = {
  
        if (params.handlerApp &&
            params.handlerApp.executable &&
@@ -763,57 +765,58 @@
 +#include "nsKDEUtils.h"
  
  class nsUnixSystemProxySettings final : public nsISystemProxySettings {
- public:
+  public:
    NS_DECL_ISUPPORTS
    NS_DECL_NSISYSTEMPROXYSETTINGS
  
-   nsUnixSystemProxySettings()
-     : mSchemeProxySettings(4)
-@@ -39,16 +40,17 @@ private:
-   nsCOMPtr<nsIGSettingsService> mGSettings;
-   nsCOMPtr<nsIGSettingsCollection> mProxySettings;
-   nsInterfaceHashtable<nsCStringHashKey, nsIGSettingsCollection> mSchemeProxySettings;
-   bool IsProxyMode(const char* aMode);
-   nsresult SetProxyResultFromGConf(const char* aKeyBase, const char* aType, nsACString& aResult);
-   nsresult GetProxyFromGConf(const nsACString& aScheme, const nsACString& aHost, int32_t aPort, nsACString& aResult);
-   nsresult GetProxyFromGSettings(const nsACString& aScheme, const nsACString& aHost, int32_t aPort, nsACString& aResult);
-   nsresult SetProxyResultFromGSettings(const char* aKeyBase, const char* aType, nsACString& aResult);
-+  nsresult GetProxyFromKDE(const nsACString& aScheme, const nsACString& aHost, PRInt32 aPort, nsACString& aResult);
+   nsUnixSystemProxySettings() : mSchemeProxySettings(4) {}
+   nsresult Init();
+@@ -42,16 +43,18 @@ class nsUnixSystemProxySettings final : 
+                                    nsACString& aResult);
+   nsresult GetProxyFromGConf(const nsACString& aScheme, const nsACString& aHost,
+                              int32_t aPort, nsACString& aResult);
+   nsresult GetProxyFromGSettings(const nsACString& aScheme,
+                                  const nsACString& aHost, int32_t aPort,
+                                  nsACString& aResult);
+   nsresult SetProxyResultFromGSettings(const char* aKeyBase, const char* aType,
+                                        nsACString& aResult);
++  nsresult GetProxyFromKDE(const nsACString& aScheme, const nsACString& aHost,
++                           PRInt32 aPort, nsACString& aResult);
  };
  
  NS_IMPL_ISUPPORTS(nsUnixSystemProxySettings, nsISystemProxySettings)
  
  NS_IMETHODIMP
- nsUnixSystemProxySettings::GetMainThreadOnly(bool *aMainThreadOnly)
- {
-   // dbus prevents us from being threadsafe, but this routine should not block anyhow
-@@ -505,16 +507,19 @@ nsUnixSystemProxySettings::GetProxyFromG
+ nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) {
+   // dbus prevents us from being threadsafe, but this routine should not block
+   // anyhow
+@@ -488,16 +491,19 @@ nsresult nsUnixSystemProxySettings::GetP
+   return NS_OK;
+ }
  
- nsresult
- nsUnixSystemProxySettings::GetProxyForURI(const nsACString & aSpec,
-                                           const nsACString & aScheme,
-                                           const nsACString & aHost,
-                                           const int32_t      aPort,
-                                           nsACString & aResult)
- {
+ nsresult nsUnixSystemProxySettings::GetProxyForURI(const nsACString& aSpec,
+                                                    const nsACString& aScheme,
+                                                    const nsACString& aHost,
+                                                    const int32_t aPort,
+                                                    nsACString& aResult) {
 +  if (nsKDEUtils::kdeSupport())
 +    return GetProxyFromKDE(aScheme, aHost, aPort, aResult);
 +
    if (mProxySettings) {
      nsresult rv = GetProxyFromGSettings(aScheme, aHost, aPort, aResult);
-     if (NS_SUCCEEDED(rv))
-       return rv;
+     if (NS_SUCCEEDED(rv)) return rv;
    }
-   if (mGConf)
-     return GetProxyFromGConf(aScheme, aHost, aPort, aResult);
+   if (mGConf) return GetProxyFromGConf(aScheme, aHost, aPort, aResult);
  
-@@ -540,8 +545,34 @@ static const mozilla::Module::ContractID
+   return GetProxyFromEnvironment(aScheme, aHost, aPort, aResult);
+ }
+@@ -521,8 +527,34 @@ static const mozilla::Module::CIDEntry k
+ static const mozilla::Module::ContractIDEntry kUnixProxyContracts[] = {
+     {NS_SYSTEMPROXYSETTINGS_CONTRACTID, &kNS_UNIXSYSTEMPROXYSERVICE_CID},
+     {nullptr}};
  
  static const mozilla::Module kUnixProxyModule = {
-   mozilla::Module::kVersion,
-   kUnixProxyCIDs,
-   kUnixProxyContracts
- };
+     mozilla::Module::kVersion, kUnixProxyCIDs, kUnixProxyContracts};
  
  NSMODULE_DEFN(nsUnixProxyModule) = &kUnixProxyModule;
 +
@@ -845,7 +848,7 @@
 diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
 --- a/toolkit/xre/moz.build
 +++ b/toolkit/xre/moz.build
-@@ -68,17 +68,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
+@@ -73,17 +73,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
          '../components/printingui',
      ]
  elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit':
@@ -1282,19 +1285,19 @@
 +#include "unix/nsCommonRegistry.h"
  #endif
  
- using mozilla::dom::HandlerInfo;
+ using mozilla::dom::ContentHandlerService;
  using mozilla::dom::HandlerApp;
- using mozilla::dom::ContentHandlerService;
+ using mozilla::dom::HandlerInfo;
  using mozilla::dom::RemoteHandlerApp;
  
  namespace {
-@@ -265,17 +265,17 @@ HandlerServiceParent::RecvExists(const H
+@@ -246,17 +246,17 @@ mozilla::ipc::IPCResult HandlerServicePa
+   handlerSvc->Exists(info, exists);
+   return IPC_OK();
  }
  
- mozilla::ipc::IPCResult
- HandlerServiceParent::RecvExistsForProtocol(const nsCString& aProtocolScheme,
-                                             bool* aHandlerExists)
- {
+ mozilla::ipc::IPCResult HandlerServiceParent::RecvExistsForProtocol(
+     const nsCString& aProtocolScheme, bool* aHandlerExists) {
  #ifdef MOZ_WIDGET_GTK
    // Check the GNOME registry for a protocol handler
 -  *aHandlerExists = nsGNOMERegistry::HandlerExists(aProtocolScheme.get());
@@ -1305,8 +1308,8 @@
    return IPC_OK();
  }
  
- mozilla::ipc::IPCResult
- HandlerServiceParent::RecvGetTypeFromExtension(const nsCString& aFileExtension,
+ mozilla::ipc::IPCResult HandlerServiceParent::RecvGetTypeFromExtension(
+     const nsCString& aFileExtension, nsCString* type) {
 diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
 --- a/uriloader/exthandler/moz.build
 +++ b/uriloader/exthandler/moz.build
@@ -1573,7 +1576,7 @@
 diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
 --- a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
 +++ b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
-@@ -1,50 +1,53 @@
+@@ -1,47 +1,50 @@
  /* -*- Mode: C++; tab-width: 3; indent-tabs-mode: nil; c-basic-offset: 2 -*-
   *
   * This Source Code Form is subject to the terms of the Mozilla Public
@@ -1594,21 +1597,17 @@
 +#include "nsKDEUtils.h"
 +#endif
  
- nsresult
- nsMIMEInfoUnix::LoadUriInternal(nsIURI * aURI)
- {
+ nsresult nsMIMEInfoUnix::LoadUriInternal(nsIURI *aURI) {
 -  return nsGNOMERegistry::LoadURL(aURI);
 +  return nsCommonRegistry::LoadURL(aURI);
  }
  
  NS_IMETHODIMP
- nsMIMEInfoUnix::GetHasDefaultHandler(bool *_retval)
- {
+ nsMIMEInfoUnix::GetHasDefaultHandler(bool *_retval) {
    // if mDefaultApplication is set, it means the application has been set from
    // either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to
    // give the GNOME answer.
-   if (mDefaultApplication)
-     return nsMIMEInfoImpl::GetHasDefaultHandler(_retval);
+   if (mDefaultApplication) return nsMIMEInfoImpl::GetHasDefaultHandler(_retval);
  
    *_retval = false;
  
@@ -1616,8 +1615,9 @@
 -    *_retval = nsGNOMERegistry::HandlerExists(mSchemeOrType.get());
 +    *_retval = nsCommonRegistry::HandlerExists(mSchemeOrType.get());
    } else {
--    RefPtr<nsMIMEInfoBase> mimeInfo = nsGNOMERegistry::GetFromType(mSchemeOrType);
-+    RefPtr<nsMIMEInfoBase> mimeInfo = nsCommonRegistry::GetFromType(mSchemeOrType);
+     RefPtr<nsMIMEInfoBase> mimeInfo =
+-        nsGNOMERegistry::GetFromType(mSchemeOrType);
++        nsCommonRegistry::GetFromType(mSchemeOrType);
      if (!mimeInfo) {
        nsAutoCString ext;
        nsresult rv = GetPrimaryExtension(ext);
@@ -1626,17 +1626,17 @@
 +        mimeInfo = nsCommonRegistry::GetFromExtension(ext);
        }
      }
-     if (mimeInfo)
-       *_retval = true;
+     if (mimeInfo) *_retval = true;
    }
  
-   if (*_retval)
-     return NS_OK;
-@@ -59,16 +62,33 @@ nsMIMEInfoUnix::LaunchDefaultWithFile(ns
+   if (*_retval) return NS_OK;
+ 
+   return NS_OK;
+@@ -51,16 +54,33 @@ nsresult nsMIMEInfoUnix::LaunchDefaultWi
+   // if mDefaultApplication is set, it means the application has been set from
    // either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to
    // give the GNOME answer.
-   if (mDefaultApplication)
-     return nsMIMEInfoImpl::LaunchDefaultWithFile(aFile);
+   if (mDefaultApplication) return nsMIMEInfoImpl::LaunchDefaultWithFile(aFile);
  
    nsAutoCString nativePath;
    aFile->GetNativePath(nativePath);
@@ -1665,7 +1665,7 @@
  
    // nsGIOMimeApp->Launch wants a URI string instead of local file
    nsresult rv;
-   nsCOMPtr<nsIIOService> ioservice = do_GetService(NS_IOSERVICE_CONTRACTID, &rv);
+   nsCOMPtr<nsIIOService> ioservice =
 diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exthandler/unix/nsOSHelperAppService.cpp
 --- a/uriloader/exthandler/unix/nsOSHelperAppService.cpp
 +++ b/uriloader/exthandler/unix/nsOSHelperAppService.cpp
@@ -1688,10 +1688,10 @@
  #include "nsIURL.h"
  #include "nsIFileStreams.h"
  #include "nsILineInputStream.h"
-@@ -1122,17 +1122,17 @@ nsOSHelperAppService::GetHandlerAndDescr
+@@ -1031,17 +1031,17 @@ nsresult nsOSHelperAppService::GetHandle
  
- nsresult nsOSHelperAppService::OSProtocolHandlerExists(const char * aProtocolScheme, bool * aHandlerExists)
- {
+ nsresult nsOSHelperAppService::OSProtocolHandlerExists(
+     const char* aProtocolScheme, bool* aHandlerExists) {
    nsresult rv = NS_OK;
  
    if (!XRE_IsContentProcess()) {
@@ -1704,17 +1704,17 @@
  #endif
    } else {
      *aHandlerExists = false;
-     nsCOMPtr<nsIHandlerService> handlerSvc = do_GetService(NS_HANDLERSERVICE_CONTRACTID, &rv);
+     nsCOMPtr<nsIHandlerService> handlerSvc =
+         do_GetService(NS_HANDLERSERVICE_CONTRACTID, &rv);
      if (NS_SUCCEEDED(rv) && handlerSvc) {
-       rv = handlerSvc->ExistsForProtocol(nsCString(aProtocolScheme), aHandlerExists);
-@@ -1140,17 +1140,17 @@ nsresult nsOSHelperAppService::OSProtoco
+@@ -1051,17 +1051,17 @@ nsresult nsOSHelperAppService::OSProtoco
    }
  
    return rv;
  }
  
- NS_IMETHODIMP nsOSHelperAppService::GetApplicationDescription(const nsACString& aScheme, nsAString& _retval)
- {
+ NS_IMETHODIMP nsOSHelperAppService::GetApplicationDescription(
+     const nsACString& aScheme, nsAString& _retval) {
  #ifdef MOZ_WIDGET_GTK
 -  nsGNOMERegistry::GetAppDescForScheme(aScheme, _retval);
 +  nsCommonRegistry::GetAppDescForScheme(aScheme, _retval);
@@ -1724,32 +1724,32 @@
  #endif
  }
  
- nsresult nsOSHelperAppService::GetFileTokenForPath(const char16_t * platformAppPath, nsIFile ** aFile)
- {
-@@ -1237,17 +1237,17 @@ nsOSHelperAppService::GetFromExtension(c
-                                          mime_types_description,
-                                          true);
+ nsresult nsOSHelperAppService::GetFileTokenForPath(
+     const char16_t* platformAppPath, nsIFile** aFile) {
+@@ -1142,17 +1142,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
+   nsresult rv =
+       LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
+                                minorType, mime_types_description, true);
  
    if (NS_FAILED(rv) || majorType.IsEmpty()) {
- 
  #ifdef MOZ_WIDGET_GTK
      LOG(("Looking in GNOME registry\n"));
      RefPtr<nsMIMEInfoBase> gnomeInfo =
--      nsGNOMERegistry::GetFromExtension(aFileExt);
-+      nsCommonRegistry::GetFromExtension(aFileExt);
+-        nsGNOMERegistry::GetFromExtension(aFileExt);
++        nsCommonRegistry::GetFromExtension(aFileExt);
      if (gnomeInfo) {
        LOG(("Got MIMEInfo from GNOME registry\n"));
        return gnomeInfo.forget();
      }
  #endif
  
-     rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt),
-                                   majorType,
-@@ -1358,17 +1358,17 @@ nsOSHelperAppService::GetFromType(const 
+     rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
+                                   minorType, mime_types_description, false);
+@@ -1254,17 +1254,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
+ 
+   // Now look up our extensions
    nsAutoString extensions, mime_types_description;
-   LookUpExtensionsAndDescription(majorType,
-                                  minorType,
-                                  extensions,
+   LookUpExtensionsAndDescription(majorType, minorType, extensions,
                                   mime_types_description);
  
  #ifdef MOZ_WIDGET_GTK
@@ -1757,17 +1757,17 @@
 -    RefPtr<nsMIMEInfoBase> gnomeInfo = nsGNOMERegistry::GetFromType(aMIMEType);
 +    RefPtr<nsMIMEInfoBase> gnomeInfo = nsCommonRegistry::GetFromType(aMIMEType);
      if (gnomeInfo) {
-       LOG(("Got MIMEInfo from GNOME registry without extensions; setting them "
-            "to %s\n", NS_LossyConvertUTF16toASCII(extensions).get()));
+       LOG(
+           ("Got MIMEInfo from GNOME registry without extensions; setting them "
+            "to %s\n",
+            NS_LossyConvertUTF16toASCII(extensions).get()));
  
        NS_ASSERTION(!gnomeInfo->HasExtensions(), "How'd that happen?");
        gnomeInfo->SetFileExtensions(NS_ConvertUTF16toUTF8(extensions));
-       return gnomeInfo.forget();
-     }
 diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
 --- a/widget/gtk/moz.build
 +++ b/widget/gtk/moz.build
-@@ -123,16 +123,17 @@ include('/ipc/chromium/chromium-config.m
+@@ -116,16 +116,17 @@ include('/ipc/chromium/chromium-config.m
  
  FINAL_LIBRARY = 'xul'
  
@@ -1823,13 +1823,13 @@
  #define MAX_PREVIEW_SOURCE_SIZE 4096
  
  nsIFile *nsFilePicker::mPrevDisplayDirectory = nullptr;
-@@ -246,17 +248,19 @@ nsFilePicker::AppendFilters(int32_t aFil
+@@ -227,17 +229,19 @@ nsFilePicker::AppendFilters(int32_t aFil
+   mAllowURLs = !!(aFilterMask & filterAllowURLs);
    return nsBaseFilePicker::AppendFilters(aFilterMask);
  }
  
  NS_IMETHODIMP
- nsFilePicker::AppendFilter(const nsAString& aTitle, const nsAString& aFilter)
- {
+ nsFilePicker::AppendFilter(const nsAString &aTitle, const nsAString &aFilter) {
    if (aFilter.EqualsLiteral("..apps")) {
      // No platform specific thing we can do here, really....
 -    return NS_OK;
@@ -1844,14 +1844,14 @@
  
    mFilters.AppendElement(filter);
    mFilterNames.AppendElement(name);
-@@ -371,16 +375,39 @@ nsFilePicker::Show(int16_t *aReturn)
+@@ -337,16 +341,39 @@ nsresult nsFilePicker::Show(int16_t *aRe
+   return NS_OK;
+ }
  
  NS_IMETHODIMP
- nsFilePicker::Open(nsIFilePickerShownCallback *aCallback)
- {
+ nsFilePicker::Open(nsIFilePickerShownCallback *aCallback) {
    // Can't show two dialogs concurrently with the same filepicker
-   if (mRunning)
-     return NS_ERROR_NOT_AVAILABLE;
+   if (mRunning) return NS_ERROR_NOT_AVAILABLE;
  
 +  // KDE file picker is not handled via callback
 +  if( nsKDEUtils::kdeSupport()) {
@@ -1880,11 +1880,11 @@
    title.Adopt(ToNewUTF8String(mTitle));
  
    GtkWindow *parent_widget =
-     GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET));
+       GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET));
  
    GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
  
-@@ -600,16 +627,241 @@ nsFilePicker::Done(void* file_chooser, g
+@@ -571,16 +598,240 @@ void nsFilePicker::Done(void *file_choos
      mCallback->Done(result);
      mCallback = nullptr;
    } else {
@@ -2117,25 +2117,24 @@
 +    return NS_OK;
 +    }
 +
-+
  // All below functions available as of GTK 3.20+
- 
- void *
- nsFilePicker::GtkFileChooserNew(
-         const gchar *title, GtkWindow *parent,
-         GtkFileChooserAction action,
-         const gchar *accept_label)
- {
+ void *nsFilePicker::GtkFileChooserNew(const gchar *title, GtkWindow *parent,
+                                       GtkFileChooserAction action,
+                                       const gchar *accept_label) {
+   static auto sGtkFileChooserNativeNewPtr =
+       (void *(*)(const gchar *, GtkWindow *, GtkFileChooserAction,
+                  const gchar *,
+                  const gchar *))dlsym(RTLD_DEFAULT,
 diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h
 --- a/widget/gtk/nsFilePicker.h
 +++ b/widget/gtk/nsFilePicker.h
-@@ -69,16 +69,22 @@ protected:
-   nsString  mDefaultExtension;
+@@ -67,16 +67,22 @@ class nsFilePicker : public nsBaseFilePi
+   nsString mDefaultExtension;
  
    nsTArray<nsCString> mFilters;
    nsTArray<nsCString> mFilterNames;
  
- private:
+  private:
    static nsIFile *mPrevDisplayDirectory;
  
 +  bool kdeRunning();
@@ -2144,14 +2143,14 @@
 +  NS_IMETHODIMP kdeAppsDialog(PRInt16 *aReturn);
 +  nsCString kdeMakeFilter( int index );
 +
-   void *GtkFileChooserNew(
-           const gchar *title, GtkWindow *parent,
-           GtkFileChooserAction action,
-           const gchar *accept_label);
+   void *GtkFileChooserNew(const gchar *title, GtkWindow *parent,
+                           GtkFileChooserAction action,
+                           const gchar *accept_label);
    void GtkFileChooserShow(void *file_chooser);
    void GtkFileChooserDestroy(void *file_chooser);
-   void GtkFileChooserSetModal(void *file_chooser, GtkWindow* parent_widget,
-           gboolean modal);
+   void GtkFileChooserSetModal(void *file_chooser, GtkWindow *parent_widget,
+                               gboolean modal);
+ 
 diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp
 --- a/xpcom/components/ManifestParser.cpp
 +++ b/xpcom/components/ManifestParser.cpp
@@ -2168,12 +2167,12 @@
  
  using namespace mozilla;
  
- struct ManifestDirective
- {
+ struct ManifestDirective {
    const char* directive;
    int argc;
  
-@@ -421,16 +422,17 @@ ParseManifest(NSLocationType aType, File
+   bool ischrome;
+@@ -392,16 +393,17 @@ void ParseManifest(NSLocationType aType,
    NS_NAMED_LITERAL_STRING(kRemoteEnabled, "remoteenabled");
    NS_NAMED_LITERAL_STRING(kRemoteRequired, "remoterequired");
    NS_NAMED_LITERAL_STRING(kApplication, "application");
@@ -2191,7 +2190,7 @@
    NS_NAMED_LITERAL_STRING(kMain, "main");
    NS_NAMED_LITERAL_STRING(kContent, "content");
  
-@@ -476,44 +478,49 @@ ParseManifest(NSLocationType aType, File
+@@ -447,39 +449,44 @@ void ParseManifest(NSLocationType aType,
          CopyUTF8toUTF16(s, abi);
          abi.Insert(char16_t('_'), 0);
          abi.Insert(osTarget, 0);
@@ -2203,11 +2202,10 @@
 +  nsAutoString desktop;
  #if defined(XP_WIN)
  #pragma warning(push)
- #pragma warning(disable:4996) // VC12+ deprecates GetVersionEx
-   OSVERSIONINFO info = { sizeof(OSVERSIONINFO) };
+ #pragma warning(disable : 4996)  // VC12+ deprecates GetVersionEx
+   OSVERSIONINFO info = {sizeof(OSVERSIONINFO)};
    if (GetVersionEx(&info)) {
-     nsTextFormatter::ssprintf(osVersion, u"%ld.%ld",
-                               info.dwMajorVersion,
+     nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", info.dwMajorVersion,
                                info.dwMinorVersion);
    }
 +  desktop = NS_LITERAL_STRING("win");
@@ -2215,21 +2213,17 @@
  #elif defined(MOZ_WIDGET_COCOA)
    SInt32 majorVersion = nsCocoaFeatures::OSXVersionMajor();
    SInt32 minorVersion = nsCocoaFeatures::OSXVersionMinor();
-   nsTextFormatter::ssprintf(osVersion, u"%ld.%ld",
-                             majorVersion,
-                             minorVersion);
+   nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", majorVersion, minorVersion);
 +  desktop = NS_LITERAL_STRING("macosx");
  #elif defined(MOZ_WIDGET_GTK)
-   nsTextFormatter::ssprintf(osVersion, u"%ld.%ld",
-                             gtk_major_version,
+   nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", gtk_major_version,
                              gtk_minor_version);
 +  desktop = nsKDEUtils::kdeSession() ? NS_LITERAL_STRING("kde") : NS_LITERAL_STRING("gnome");
  #elif defined(MOZ_WIDGET_ANDROID)
    bool isTablet = false;
    if (mozilla::AndroidBridge::Bridge()) {
-     mozilla::AndroidBridge::Bridge()->GetStaticStringField("android/os/Build$VERSION",
-                                                            "RELEASE",
-                                                            osVersion);
+     mozilla::AndroidBridge::Bridge()->GetStaticStringField(
+         "android/os/Build$VERSION", "RELEASE", osVersion);
      isTablet = java::GeckoAppShell::IsTablet();
    }
 +  desktop = NS_LITERAL_STRING("android");
@@ -2241,7 +2235,7 @@
      process = kMain;
    }
  
-@@ -600,25 +607,27 @@ ParseManifest(NSLocationType aType, File
+@@ -566,25 +573,27 @@ void ParseManifest(NSLocationType aType,
      TriState stOsVersion = eUnspecified;
      TriState stOs = eUnspecified;
      TriState stABI = eUnspecified;
@@ -2264,40 +2258,41 @@
            CheckStringFlag(kProcess, wtoken, process, stProcess) ||
            CheckVersionFlag(kOsVersion, wtoken, osVersion, stOsVersion) ||
            CheckVersionFlag(kAppVersion, wtoken, appVersion, stAppVersion) ||
-           CheckVersionFlag(kGeckoVersion, wtoken, geckoVersion, stGeckoVersion)) {
+           CheckVersionFlag(kGeckoVersion, wtoken, geckoVersion,
+                            stGeckoVersion)) {
          continue;
        }
  
- #if defined(MOZ_WIDGET_ANDROID)
-@@ -663,16 +672,17 @@ ParseManifest(NSLocationType aType, File
+@@ -621,17 +630,17 @@ void ParseManifest(NSLocationType aType,
+       }
+ 
+       LogMessageWithContext(
+           aFile, line, "Unrecognized chrome manifest modifier '%s'.", token);
+       ok = false;
      }
  
-     if (!ok ||
-         stApp == eBad ||
-         stAppVersion == eBad ||
-         stGeckoVersion == eBad ||
-         stOs == eBad ||
-         stOsVersion == eBad ||
-+        stDesktop == eBad ||
+     if (!ok || stApp == eBad || stAppVersion == eBad ||
+-        stGeckoVersion == eBad || stOs == eBad || stOsVersion == eBad ||
++        stGeckoVersion == eBad || stOs == eBad || stOsVersion == eBad || stDesktop == eBad ||
  #ifdef MOZ_WIDGET_ANDROID
          stTablet == eBad ||
  #endif
-         stABI == eBad ||
-         stProcess == eBad) {
+         stABI == eBad || stProcess == eBad) {
        continue;
      }
  
+     if (directive->regfunc) {
 diff --git a/xpcom/components/moz.build b/xpcom/components/moz.build
 --- a/xpcom/components/moz.build
 +++ b/xpcom/components/moz.build
-@@ -43,12 +43,13 @@ FINAL_LIBRARY = 'xul'
- 
- LOCAL_INCLUDES += [
+@@ -44,12 +44,13 @@ LOCAL_INCLUDES += [
      '!..',
      '../base',
      '../build',
      '../ds',
      '/chrome',
+     '/js/xpconnect/loader',
+     '/layout/build',
      '/modules/libjar',
 +    '/toolkit/xre',
  ]
@@ -2325,10 +2320,10 @@
  #include "prmem.h"
  #include "plbase64.h"
  
-@@ -2007,63 +2008,78 @@ nsLocalFile::SetPersistentDescriptor(con
+@@ -1902,62 +1903,77 @@ nsLocalFile::SetPersistentDescriptor(con
+ 
  NS_IMETHODIMP
- nsLocalFile::Reveal()
- {
+ nsLocalFile::Reveal() {
    if (!FilePreferences::IsAllowedPath(mPath)) {
      return NS_ERROR_FILE_ACCESS_DENIED;
    }
@@ -2389,8 +2384,7 @@
  }
  
  NS_IMETHODIMP
- nsLocalFile::Launch()
- {
+ nsLocalFile::Launch() {
    if (!FilePreferences::IsAllowedPath(mPath)) {
      return NS_ERROR_FILE_ACCESS_DENIED;
    }
--- a/mozilla-nongnome-proxies.patch	Sat Jan 26 22:42:57 2019 +0100
+++ b/mozilla-nongnome-proxies.patch	Thu Jan 31 11:21:22 2019 +0100
@@ -9,19 +9,20 @@
 diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
 --- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
 +++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
-@@ -54,23 +54,27 @@ nsUnixSystemProxySettings::GetMainThread
-   // dbus prevents us from being threadsafe, but this routine should not block anyhow
+@@ -55,24 +55,27 @@ NS_IMETHODIMP
+ nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) {
+   // dbus prevents us from being threadsafe, but this routine should not block
+   // anyhow
    *aMainThreadOnly = true;
    return NS_OK;
  }
  
- nsresult
- nsUnixSystemProxySettings::Init()
- {
+ nsresult nsUnixSystemProxySettings::Init() {
 -  mGSettings = do_GetService(NS_GSETTINGSSERVICE_CONTRACTID);
 -  if (mGSettings) {
--    mGSettings->GetCollectionForSchema(NS_LITERAL_CSTRING("org.gnome.system.proxy"),
--                                       getter_AddRefs(mProxySettings));
+-    mGSettings->GetCollectionForSchema(
+-        NS_LITERAL_CSTRING("org.gnome.system.proxy"),
+-        getter_AddRefs(mProxySettings));
 -  }
 -  if (!mProxySettings) {
 -    mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
@@ -41,6 +42,6 @@
    return NS_OK;
  }
  
- bool
- nsUnixSystemProxySettings::IsProxyMode(const char* aMode)
- {
+ bool nsUnixSystemProxySettings::IsProxyMode(const char* aMode) {
+   nsAutoCString mode;
+   return NS_SUCCEEDED(mGConf->GetString(
--- a/mozilla-ntlm-full-path.patch	Sat Jan 26 22:42:57 2019 +0100
+++ b/mozilla-ntlm-full-path.patch	Thu Jan 31 11:21:22 2019 +0100
@@ -1,28 +1,28 @@
 # HG changeset patch
 # User Petr Cerny <pcerny@novell.com>
 # Parent 7308e4a7c1f769f4bbbc90870b849cadd99495a6
-# Parent  46dd9332e67440fb779e99a694a2bf0edf5c203e
+# Parent  6ab277cf616dc2748e9855101100a97a6cec10a6
 Bug 634334 - call to the ntlm_auth helper fails
 
 diff --git a/extensions/auth/nsAuthSambaNTLM.cpp b/extensions/auth/nsAuthSambaNTLM.cpp
 --- a/extensions/auth/nsAuthSambaNTLM.cpp
 +++ b/extensions/auth/nsAuthSambaNTLM.cpp
-@@ -170,17 +170,17 @@ static uint8_t* ExtractMessage(const nsA
- nsresult
- nsAuthSambaNTLM::SpawnNTLMAuthHelper()
- {
-     const char* username = PR_GetEnv("USER");
-     if (!username)
-         return NS_ERROR_FAILURE;
+@@ -156,17 +156,17 @@ static uint8_t* ExtractMessage(const nsA
+   *aLen = (length / 4) * 3 - numEquals;
+   return reinterpret_cast<uint8_t*>(PL_Base64Decode(s, length, nullptr));
+ }
+ 
+ nsresult nsAuthSambaNTLM::SpawnNTLMAuthHelper() {
+   const char* username = PR_GetEnv("USER");
+   if (!username) return NS_ERROR_FAILURE;
  
-     const char* const args[] = {
--        "ntlm_auth",
-+        "/usr/bin/ntlm_auth",
-         "--helper-protocol", "ntlmssp-client-1",
-         "--use-cached-creds",
-         "--username", username,
-         nullptr
-     };
+-  const char* const args[] = {"ntlm_auth",
++  const char* const args[] = {"/usr/bin/ntlm_auth",
+                               "--helper-protocol",
+                               "ntlmssp-client-1",
+                               "--use-cached-creds",
+                               "--username",
+                               username,
+                               nullptr};
  
-     bool isOK = SpawnIOChild(const_cast<char* const*>(args), &mChildPID, &mFromChildFD, &mToChildFD);
-     if (!isOK)
+   bool isOK = SpawnIOChild(const_cast<char* const*>(args), &mChildPID,