Firefox 49.0 firefox48
authorWolfgang Rosenauer <wr@rosenauer.org>
Fri, 23 Sep 2016 13:20:08 +0200
branchfirefox48
changeset 929 9fc2ebe6d7f1
parent 928 4663386a04de
child 930 fdfd88b0c2d7
Firefox 49.0
MozillaFirefox/MozillaFirefox.changes
MozillaFirefox/MozillaFirefox.spec
MozillaFirefox/create-tar.sh
MozillaFirefox/l10n_changesets.txt
MozillaFirefox/mozilla-aarch64-48bit-va.patch
MozillaFirefox/mozilla-exclude-nametablecpp.patch
MozillaFirefox/mozilla-old_configure-bmo1282843.patch
MozillaFirefox/mozilla-skia-overflow.patch
firefox-kde.patch
mozilla-aarch64-48bit-va.patch
mozilla-exclude-nametablecpp.patch
mozilla-kde.patch
mozilla-old_configure-bmo1282843.patch
mozilla-skia-overflow.patch
series
--- a/MozillaFirefox/MozillaFirefox.changes	Mon Sep 19 21:47:49 2016 +0200
+++ b/MozillaFirefox/MozillaFirefox.changes	Fri Sep 23 13:20:08 2016 +0200
@@ -1,4 +1,57 @@
 -------------------------------------------------------------------
+Tue Sep 20 07:09:52 UTC 2016 - wr@rosenauer.org
+
+- update to Firefox 49.0 (boo#999701)
+  new features
+  * Updated Firefox Login Manager to allow HTTPS pages to use saved
+    HTTP logins.
+  * Added features to Reader Mode that make it easier on the eyes and
+    the ears
+  * Improved video performance for users on systems that support
+    SSE3 without hardware acceleration
+  * Added context menu controls to HTML5 audio and video that let users
+    loops files or play files at 1.25x speed
+  * Improvements in about:memory reports for tracking font memory usage
+  security related
+  * MFSA 2016-85
+    CVE-2016-2827 (bmo#1289085) - Out-of-bounds read in
+    mozilla::net::IsValidReferrerPolicy
+    CVE-2016-5270 (bmo#1291016) - Heap-buffer-overflow in
+    nsCaseTransformTextRunFactory::TransformString
+    CVE-2016-5271 (bmo#1288946) - Out-of-bounds read in
+    PropertyProvider::GetSpacingInternal
+    CVE-2016-5272 (bmo#1297934) - Bad cast in nsImageGeometryMixin
+    CVE-2016-5273 (bmo#1280387) - crash in
+    mozilla::a11y::HyperTextAccessible::GetChildOffset
+    CVE-2016-5276 (bmo#1287721) - Heap-use-after-free in
+    mozilla::a11y::DocAccessible::ProcessInvalidationList
+    CVE-2016-5274 (bmo#1282076) - use-after-free in
+    nsFrameManager::CaptureFrameState
+    CVE-2016-5277 (bmo#1291665) - Heap-use-after-free in nsRefreshDriver::Tick
+    CVE-2016-5275 (bmo#1287316) - global-buffer-overflow in
+    mozilla::gfx::FilterSupport::ComputeSourceNeededRegions
+    CVE-2016-5278 (bmo#1294677) - Heap-buffer-overflow in
+    nsBMPEncoder::AddImageFrame
+    CVE-2016-5279 (bmo#1249522) - Full local path of files is available
+    to web pages after drag and drop
+    CVE-2016-5280 (bmo#1289970) - Use-after-free in
+    mozilla::nsTextNodeDirectionalityMap::RemoveElementFromMap
+    CVE-2016-5281 (bmo#1284690) - use-after-free in DOMSVGLength
+    CVE-2016-5282 (bmo#932335) - Don't allow content to request favicons
+    from non-whitelisted schemes
+    CVE-2016-5283 (bmo#928187) - <iframe src> fragment timing attack can
+    reveal cross-origin data
+    CVE-2016-5284 (bmo#1303127) - Add-on update site certificate pin expiration
+    CVE-2016-5256 - Memory safety bugs fixed in Firefox 49
+    CVE-2016-5257 - Memory safety bugs fixed in Firefox 49 and Firefox ESR 45.4
+- removed obsolete patches:
+  * mozilla-aarch64-48bit-va.patch
+  * mozilla-exclude-nametablecpp.patch
+  * mozilla-old_configure-bmo1282843.patch
+- added patch mozilla-skia-overflow.patch (bmo#1304114)
+- requires NSS 3.25
+
+-------------------------------------------------------------------
 Tue Aug 30 20:25:38 UTC 2016 - astieger@suse.com
 
 - Mozilla Firefox 48.0.2:
--- a/MozillaFirefox/MozillaFirefox.spec	Mon Sep 19 21:47:49 2016 +0200
+++ b/MozillaFirefox/MozillaFirefox.spec	Fri Sep 23 13:20:08 2016 +0200
@@ -18,10 +18,10 @@
 
 
 # changed with every update
-%define major 48
-%define mainver %major.0.2
+%define major 49
+%define mainver %major.0
 %define update_channel release
-%define releasedate 20160824000000
+%define releasedate 20160919000000
 
 # PIE, full relro (x86_64 for now)
 %define build_hardened 1
@@ -75,7 +75,7 @@
 BuildRequires:  libproxy-devel
 BuildRequires:  makeinfo
 BuildRequires:  mozilla-nspr-devel >= 4.12
-BuildRequires:  mozilla-nss-devel >= 3.24
+BuildRequires:  mozilla-nss-devel >= 3.25
 BuildRequires:  nss-shared-helper-devel
 BuildRequires:  python-devel
 BuildRequires:  startup-notification-devel
@@ -146,10 +146,8 @@
 Patch11:        mozilla-reduce-files-per-UnifiedBindings.patch
 Patch12:        mozilla-gtk3_20.patch
 Patch13:        mozilla-check_return.patch
-Patch15:        mozilla-exclude-nametablecpp.patch
-Patch16:        mozilla-aarch64-48bit-va.patch
+Patch14:        mozilla-skia-overflow.patch
 Patch17:        mozilla-binutils-visibility.patch
-Patch18:        mozilla-old_configure-bmo1282843.patch
 # Firefox/browser
 Patch101:       firefox-kde.patch
 Patch102:       firefox-no-default-ualocale.patch
@@ -265,10 +263,8 @@
 %patch12 -p1
 %endif
 %patch13 -p1
-%patch15 -p1
-%patch16 -p1
+%patch14444 -p1
 %patch17 -p1
-%patch18 -p1
 # Firefox
 %patch101 -p1
 %patch102 -p1
--- a/MozillaFirefox/create-tar.sh	Mon Sep 19 21:47:49 2016 +0200
+++ b/MozillaFirefox/create-tar.sh	Fri Sep 23 13:20:08 2016 +0200
@@ -7,8 +7,8 @@
 
 CHANNEL="release"
 BRANCH="releases/mozilla-$CHANNEL"
-RELEASE_TAG="FIREFOX_48_0_2_RELEASE"
-VERSION="48.0.2"
+RELEASE_TAG="416dc3163a1f27b8783ed14660d1b373e830df2f"
+VERSION="49.0"
 
 # mozilla
 if [ -d mozilla ]; then
--- a/MozillaFirefox/l10n_changesets.txt	Mon Sep 19 21:47:49 2016 +0200
+++ b/MozillaFirefox/l10n_changesets.txt	Fri Sep 23 13:20:08 2016 +0200
@@ -1,92 +1,92 @@
-ach 9a0c8e338b70
-af 9347b8c9ba47
-an 1ecc480527e8
-ar ac8018039f0f
-as 39c28ddc51af
-ast 719f95e0804a
-az 58d1d9f5ebc6
-be b72077740aac
-bg 9f7507dd2b92
-bn-BD 1dac94619464
-bn-IN a2ea6b87d80d
-br d36eef485e1f
-bs cfee6f5b1e50
-ca 55814ed0a2ee
-cak 318aec440030
-cs 76c75ca48864
-cy 927c83f85620
-da f1eafef10b33
-de 3d5d819eedd7
-dsb 91c722147298
-el 22b959c9a739
-en-GB 595e192dd7a4
-en-ZA 52a936eeeea1
-eo 1928e5a7ee7d
-es-AR 4c9cfef714f5
-es-CL c34f36c5864f
-es-ES d069f54e79f2
-es-MX 198b582408f2
-et 0568132def4f
-eu 4a534a844d9b
-fa c64ea222eb3a
+ach 6ed1a299cf50
+af a2a61bde6775
+an 93c1791e869c
+ar 1e8208276670
+as 732bcb1da9c2
+ast 4b201bbc4cad
+az 2035817f3662
+be 04a4235e5dfc
+bg a81e7006d413
+bn-BD 0bc49db20e7b
+bn-IN ab45a4357169
+br 829bb95e6595
+bs c2cbf84e2de1
+ca 551c2d450a74
+cak a24e3cc7ada5
+cs 842a16138e8f
+cy d3bd0fc1d07c
+da 9f2406f95b0d
+de 57d4aeb53449
+dsb 9a588345e6a3
+el 0ea494a1082a
+en-GB a98a08450231
+en-ZA dc11d29717d4
+eo 1b7342be2401
+es-AR 8e72962a04d2
+es-CL 684eb9268729
+es-ES bc3ecb554205
+es-MX aff6da71c301
+et ebd70ceecb55
+eu 54494475aef7
+fa 255b2d7d7cb3
 ff 8373353b43c4
-fi 4133735f9efd
-fr 94568a74633b
-fy-NL c001da131ecd
-ga-IE 1665e942f19f
-gd b4f76dd70e9a
+fi 8d3446f9a5c5
+fr 9dfc3b26ba48
+fy-NL 954308cbc1e6
+ga-IE 6cf48c09d9e5
+gd 2b9e144b889d
 gl c869caff337a
-gn 65b2894520b6
-gu-IN 6245b4309461
-he 1a14924e99aa
-hi-IN bba2a926e4f8
-hr 5e68406d5630
-hsb a9ba140dbbf2
-hu d78bc92a737a
-hy-AM 723627d1c0a4
-id d84757c01f40
-is e45ec009a0fc
-it f04290f688b9
-ja 7546335099a5
-ja-JP-mac 9ecf2e1d8ea0
-kk 188c4eac0a48
-km 339790840ac1
-kn a7e2c93d27ad
-ko cbaf8af7159e
-lij e9113fac3a93
-lt 70491a0f5ef0
-lv 918ea0cd0aca
-mai ce010a305377
-mk ffdf2a789185
-ml 1b85d75836cd
-mr a6fa1813c5c9
-ms 41bbf86ac0d9
-nb-NO 5155fd334299
-nl c6d2a72aec88
-nn-NO 3569b6691b3b
-or febd1b04dbfc
-pa-IN 6c5ed1be55fb
-pl 19563918fa48
-pt-BR ba6e3510ab03
-pt-PT 258b18a5c29b
-rm 5c20929daf23
-ro b1baa279bda4
-ru 622cafa42a39
+gn 88e0eecd56db
+gu-IN ff99825985ad
+he 5492c43ed1c7
+hi-IN 2460eda2085b
+hr 4e4fa843efd1
+hsb 711ebd948b60
+hu 18ed4a160747
+hy-AM 26ebbf2a7c29
+id fe6b0ba5c8b9
+is 750b18eea2bd
+it 32c5df7e0cc8
+ja 6fe0a63744ab
+ja-JP-mac 9f666fe9f2a8
+kk c8d56540ca41
+km 2a4aa779e53d
+kn 79f2d148c975
+ko 87dbe38d3ab7
+lij fdb3ad1d0fa6
+lt 1de1474f4b1c
+lv 71ebc1207474
+mai bb506a238a92
+mk 9793d2941b6c
+ml 9bbdb16f771c
+mr 770fe6a85f1a
+ms fc706fcabf4b
+nb-NO d595777287ba
+nl a12c44096861
+nn-NO ff1ebdbd993c
+or 6ecfc06db966
+pa-IN 3404cc7e0894
+pl c89555291e77
+pt-BR 359f724250a8
+pt-PT b835fc33291c
+rm d9b1fabf9a07
+ro 20abd381ce37
+ru 1245d886a73d
 si 03a3b09a2203
-sk 342049b6b66a
-sl 6079300745a1
-son d135d14fa4ea
+sk 44b670dcadbc
+sl d6ccefbe182a
+son 300b8e976b40
 sq bc47aefcea37
-sr 2b6454805bc1
-sv-SE 44ab4d9a6718
-ta 17f88001ad3b
-te 286ff9885ea2
-th b7e1170de8c9
-tr 13c52b19c0a1
-uk c84dad1572cf
-uz 1209fe62df1c
-vi 68ce305343a3
-xh 8466fb6c8797
-zh-CN 693cfbea8412
-zh-TW 380aaa88dbf5
+sr 1d4bbfe9b938
+sv-SE 9ec91e4ceffa
+ta 011d54df6ae1
+te d1c0f603ffc8
+th f3ab798d7859
+tr 5b90abf30758
+uk b0acea50dee6
+uz 17d7e0e78397
+vi 5f990ea87b44
+xh 82473adddcaa
+zh-CN a17256bb05fa
+zh-TW 769f13e36251
 
--- a/MozillaFirefox/mozilla-aarch64-48bit-va.patch	Mon Sep 19 21:47:49 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-../mozilla-aarch64-48bit-va.patch
\ No newline at end of file
--- a/MozillaFirefox/mozilla-exclude-nametablecpp.patch	Mon Sep 19 21:47:49 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-../mozilla-exclude-nametablecpp.patch
\ No newline at end of file
--- a/MozillaFirefox/mozilla-old_configure-bmo1282843.patch	Mon Sep 19 21:47:49 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-../mozilla-old_configure-bmo1282843.patch
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MozillaFirefox/mozilla-skia-overflow.patch	Fri Sep 23 13:20:08 2016 +0200
@@ -0,0 +1,1 @@
+../mozilla-skia-overflow.patch
\ No newline at end of file
--- a/firefox-kde.patch	Mon Sep 19 21:47:49 2016 +0200
+++ b/firefox-kde.patch	Fri Sep 23 13:20:08 2016 +0200
@@ -1,11 +1,11 @@
 # HG changeset patch
-# Parent  07e419c2bbc63c486d25fd8ce117abd10e9ebdba
+# Parent  2704257a50b4ff60fa43eca8d4a547c6d70bb30e
 
 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,1174 @@
+@@ -0,0 +1,1179 @@
 +#filter substitution
 +<?xml version="1.0"?>
 +# -*- Mode: HTML -*-
@@ -16,6 +16,7 @@
 +
 +<?xml-stylesheet href="chrome://browser/content/browser.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://devtools/skin/devtools-browser.css" type="text/css"?>
 +<?xml-stylesheet href="chrome://browser/skin/controlcenter/panel.css" type="text/css"?>
 +<?xml-stylesheet href="chrome://browser/skin/customizableui/panelUIOverlay.css" type="text/css"?>
@@ -296,18 +297,6 @@
 +           noautofocus="true"
 +           position="topcenter topright"/>
 +
-+    <panel id="loop-notification-panel"
-+           class="loop-panel social-panel"
-+           type="arrow"
-+           hidden="true"
-+           noautofocus="true"/>
-+
-+    <panel id="loop-panel"
-+           class="loop-panel social-panel"
-+           type="arrow"
-+           orient="horizontal"
-+           hidden="true"/>
-+
 +    <menupopup id="toolbar-context-menu"
 +               onpopupshowing="onViewToolbarsPopupShowing(event, document.getElementById('viewToolbarsMenuSeparator'));">
 +      <menuitem oncommand="gCustomizeMode.addToPanel(document.popupNode)"
@@ -388,7 +377,28 @@
 +#include browser-context.inc
 +    </menupopup>
 +
-+    <menupopup id="placesContext"/>
++    <menupopup id="placesContext">
++      <menuseparator id="placesContext_recentlyBookmarkedSeparator"
++                     ignoreitem="true"
++                     ordinal="2"
++                     hidden="true"/>
++      <menuitem id="placesContext_hideRecentlyBookmarked"
++                label="&hideRecentlyBookmarked.label;"
++                accesskey="&hideRecentlyBookmarked.accesskey;"
++                oncommand="BookmarkingUI.hideRecentlyBookmarked();"
++                closemenu="single"
++                ignoreitem="true"
++                ordinal="2"
++                hidden="true"/>
++      <menuitem id="placesContext_showRecentlyBookmarked"
++                label="&showRecentlyBookmarked.label;"
++                accesskey="&showRecentlyBookmarked.accesskey;"
++                oncommand="BookmarkingUI.showRecentlyBookmarked();"
++                closemenu="single"
++                ignoreitem="true"
++                ordinal="2"
++                hidden="true"/>
++    </menupopup>
 +
 +    <panel id="ctrlTab-panel" class="KUI-panel" hidden="true" norestorefocus="true" level="top">
 +      <hbox>
@@ -404,21 +414,6 @@
 +      </hbox>
 +    </panel>
 +
-+    <!-- Sync Panel -->
-+    <panel id="sync-start-panel" class="sync-panel" type="arrow" hidden="true"
-+           noautofocus="true" onclick="this.hidePopup();"
-+           flip="slide">
-+      <hbox class="sync-panel-outer">
-+        <image class="sync-panel-icon"/>
-+        <vbox class="sync-panel-inner">
-+          <description id="sync-start-panel-title"
-+                       value="&syncStartPanel2.heading;"/>
-+          <description id="sync-start-panel-subtitle"
-+                       value="&syncStartPanel2.subTitle;"/>
-+        </vbox>
-+      </hbox>
-+    </panel>
-+
 +    <!-- Bookmarks and history tooltip -->
 +    <tooltip id="bhTooltip"/>
 +
@@ -634,7 +629,12 @@
 +                    key="key_undoCloseTab"
 +                    label="&undoCloseTab.label;"
 +                    observes="History:UndoCloseTab"/>
-+          <menuseparator id="alltabs-popup-separator"/>
++          <menuseparator id="alltabs-popup-separator-1"/>
++          <menu id="alltabs_containersTab"
++                label="&newUserContext.label;">
++            <menupopup id="alltabs_containersMenuTab" />
++          </menu>
++          <menuseparator id="alltabs-popup-separator-2"/>
 +        </menupopup>
 +      </toolbarbutton>
 +
@@ -718,41 +718,41 @@
 +              <box id="notification-popup-box" hidden="true" align="center">
 +                <image id="default-notification-icon" class="notification-anchor-icon" role="button"
 +                       aria-label="&urlbar.defaultNotificationAnchor.label;"/>
-+                <image id="geo-notification-icon" class="notification-anchor-icon" role="button"
++                <image id="geo-notification-icon" class="notification-anchor-icon geo-icon" role="button"
 +                       aria-label="&urlbar.geolocationNotificationAnchor.label;"/>
-+                <image id="addons-notification-icon" class="notification-anchor-icon" role="button"
++                <image id="addons-notification-icon" class="notification-anchor-icon install-icon" role="button"
 +                       aria-label="&urlbar.addonsNotificationAnchor.label;"/>
-+                <image id="indexedDB-notification-icon" class="notification-anchor-icon" role="button"
++                <image id="indexedDB-notification-icon" class="notification-anchor-icon indexedDB-icon" role="button"
 +                       aria-label="&urlbar.indexedDBNotificationAnchor.label;"/>
-+                <image id="login-fill-notification-icon" class="notification-anchor-icon" role="button"
++                <image id="login-fill-notification-icon" class="notification-anchor-icon login-icon" role="button"
 +                       aria-label="&urlbar.loginFillNotificationAnchor.label;"/>
-+                <image id="password-notification-icon" class="notification-anchor-icon" role="button"
++                <image id="password-notification-icon" class="notification-anchor-icon login-icon" role="button"
 +                       aria-label="&urlbar.passwordNotificationAnchor.label;"/>
-+                <image id="plugins-notification-icon" class="notification-anchor-icon" role="button"
++                <image id="plugins-notification-icon" class="notification-anchor-icon plugin-icon" role="button"
 +                       aria-label="&urlbar.pluginsNotificationAnchor.label;"/>
-+                <image id="web-notifications-notification-icon" class="notification-anchor-icon" role="button"
++                <image id="web-notifications-notification-icon" class="notification-anchor-icon web-notifications-icon" role="button"
 +                       aria-label="&urlbar.webNotsNotificationAnchor3.label;"/>
-+                <image id="webRTC-shareDevices-notification-icon" class="notification-anchor-icon" role="button"
++                <image id="webRTC-shareDevices-notification-icon" class="notification-anchor-icon camera-icon" role="button"
 +                       aria-label="&urlbar.webRTCShareDevicesNotificationAnchor.label;"/>
-+                <image id="webRTC-sharingDevices-notification-icon" class="notification-anchor-icon" role="button"
++                <image id="webRTC-sharingDevices-notification-icon" class="notification-anchor-icon camera-icon in-use" role="button"
 +                       aria-label="&urlbar.webRTCSharingDevicesNotificationAnchor.label;"/>
-+                <image id="webRTC-shareMicrophone-notification-icon" class="notification-anchor-icon" role="button"
++                <image id="webRTC-shareMicrophone-notification-icon" class="notification-anchor-icon microphone-icon" role="button"
 +                       aria-label="&urlbar.webRTCShareMicrophoneNotificationAnchor.label;"/>
-+                <image id="webRTC-sharingMicrophone-notification-icon" class="notification-anchor-icon" role="button"
++                <image id="webRTC-sharingMicrophone-notification-icon" class="notification-anchor-icon microphone-icon in-use" role="button"
 +                       aria-label="&urlbar.webRTCSharingMicrophoneNotificationAnchor.label;"/>
-+                <image id="webRTC-shareScreen-notification-icon" class="notification-anchor-icon" role="button"
++                <image id="webRTC-shareScreen-notification-icon" class="notification-anchor-icon screen-icon" role="button"
 +                       aria-label="&urlbar.webRTCShareScreenNotificationAnchor.label;"/>
-+                <image id="webRTC-sharingScreen-notification-icon" class="notification-anchor-icon" role="button"
++                <image id="webRTC-sharingScreen-notification-icon" class="notification-anchor-icon screen-icon in-use" role="button"
 +                       aria-label="&urlbar.webRTCSharingScreenNotificationAnchor.label;"/>
-+                <image id="pointerLock-notification-icon" class="notification-anchor-icon" role="button"
++                <image id="pointerLock-notification-icon" class="notification-anchor-icon pointer-icon" role="button"
 +                       aria-label="&urlbar.pointerLockNotificationAnchor.label;"/>
-+                <image id="servicesInstall-notification-icon" class="notification-anchor-icon" role="button"
++                <image id="servicesInstall-notification-icon" class="notification-anchor-icon service-icon" role="button"
 +                       aria-label="&urlbar.servicesNotificationAnchor.label;"/>
-+                <image id="translate-notification-icon" class="notification-anchor-icon" role="button"
++                <image id="translate-notification-icon" class="notification-anchor-icon translation-icon" role="button"
 +                       aria-label="&urlbar.translateNotificationAnchor.label;"/>
-+                <image id="translated-notification-icon" class="notification-anchor-icon" role="button"
++                <image id="translated-notification-icon" class="notification-anchor-icon translation-icon in-use" role="button"
 +                       aria-label="&urlbar.translatedNotificationAnchor.label;"/>
-+                <image id="eme-notification-icon" class="notification-anchor-icon" role="button"
++                <image id="eme-notification-icon" class="notification-anchor-icon drm-icon" role="button"
 +                       aria-label="&urlbar.emeNotificationAnchor.label;"/>
 +              </box>
 +              <!-- Use onclick instead of normal popup= syntax since the popup
@@ -789,7 +789,7 @@
 +                       hidden="true"
 +                       onclick="ReaderParent.buttonClick(event);"/>
 +              </hbox>
-+              <hbox id="userContext-icons">
++              <hbox id="userContext-icons" hidden="true">
 +                <label id="userContext-label"/>
 +                <image id="userContext-indicator"/>
 +              </hbox>
@@ -856,6 +856,11 @@
 +                      command="Browser:ShowAllBookmarks"
 +                      key="manBookmarkKb"/>
 +            <menuseparator/>
++            <menuitem label="&recentBookmarks.label;"
++                      id="BMB_recentBookmarks"
++                      disabled="true"
++                      class="menuitem-iconic subviewbutton"/>
++            <menuseparator/>
 +            <menu id="BMB_bookmarksToolbar"
 +                  class="menu-iconic bookmark-item subviewbutton"
 +                  label="&personalbarCmd.label;"
@@ -1288,7 +1293,7 @@
      // when the user will select the default.  We refresh here periodically
      // in case the default changes. On other Windows OS's defaults can also
      // be set while the prefs are open.
-@@ -736,16 +742,27 @@ var gMainPane = {
+@@ -730,16 +736,27 @@ var gMainPane = {
      let alwaysCheckPref = document.getElementById("browser.shell.checkDefaultBrowser");
      alwaysCheckPref.value = true;
  
@@ -1631,7 +1636,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
-@@ -689,16 +689,17 @@
+@@ -676,16 +676,17 @@
  @RESPATH@/greprefs.js
  @RESPATH@/defaults/autoconfig/prefcalls.js
  @RESPATH@/browser/defaults/permissions
@@ -1643,9 +1648,9 @@
 +@BINPATH@/defaults/pref/kde.js
  
  ; Services (gre) prefs
- #ifdef MOZ_SERVICES_NOTIFICATIONS
- @RESPATH@/defaults/pref/services-notifications.js
- #endif
  @RESPATH@/defaults/pref/services-sync.js
  
  ; [Layout Engine Resources]
+ ; Style Sheets, Graphics and other Resources used by the layout engine.
+ @RESPATH@/res/EditorOverride.css
+ @RESPATH@/res/contenteditable.css
--- a/mozilla-aarch64-48bit-va.patch	Mon Sep 19 21:47:49 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,170 +0,0 @@
-
-# HG changeset patch
-# User Zheng Xu <zheng.xu@linaro.org>
-# Date 1464657720 -7200
-# Node ID dfaafbaaa2919a033c4c0abdd5830f4ea413bed6
-# Parent  499f16ca85ec48d1896a1633730715f32bd62140
-Bug 1143022 - Manually mmap on arm64 to ensure high 17 bits are clear. r=ehoogeveen
-
-There might be 48-bit VA on arm64 depending on kernel configuration.
-Manually mmap heap memory to align with the assumption made by JS engine.
-
-diff --git a/js/src/gc/Memory.cpp b/js/src/gc/Memory.cpp
---- a/js/src/gc/Memory.cpp
-+++ b/js/src/gc/Memory.cpp
-@@ -430,17 +430,17 @@ InitMemorySubsystem()
-     if (pageSize == 0)
-         pageSize = allocGranularity = size_t(sysconf(_SC_PAGESIZE));
- }
- 
- static inline void*
- MapMemoryAt(void* desired, size_t length, int prot = PROT_READ | PROT_WRITE,
-             int flags = MAP_PRIVATE | MAP_ANON, int fd = -1, off_t offset = 0)
- {
--#if defined(__ia64__) || (defined(__sparc64__) && defined(__NetBSD__))
-+#if defined(__ia64__) || (defined(__sparc64__) && defined(__NetBSD__)) || defined(__aarch64__)
-     MOZ_ASSERT(0xffff800000000000ULL & (uintptr_t(desired) + length - 1) == 0);
- #endif
-     void* region = mmap(desired, length, prot, flags, fd, offset);
-     if (region == MAP_FAILED)
-         return nullptr;
-     /*
-      * mmap treats the given address as a hint unless the MAP_FIXED flag is
-      * used (which isn't usually what you want, as this overrides existing
-@@ -480,16 +480,51 @@ MapMemory(size_t length, int prot = PROT
-      * as out of memory.
-      */
-     if ((uintptr_t(region) + (length - 1)) & 0xffff800000000000) {
-         if (munmap(region, length))
-             MOZ_ASSERT(errno == ENOMEM);
-         return nullptr;
-     }
-     return region;
-+#elif defined(__aarch64__)
-+   /*
-+    * There might be similar virtual address issue on arm64 which depends on
-+    * hardware and kernel configurations. But the work around is slightly
-+    * different due to the different mmap behavior.
-+    *
-+    * TODO: Merge with the above code block if this implementation works for
-+    * ia64 and sparc64.
-+    */
-+    const uintptr_t start = UINT64_C(0x0000070000000000);
-+    const uintptr_t end   = UINT64_C(0x0000800000000000);
-+    const uintptr_t step  = ChunkSize;
-+   /*
-+    * Optimization options if there are too many retries in practice:
-+    * 1. Examine /proc/self/maps to find an available address. This file is
-+    *    not always available, however. In addition, even if we examine
-+    *    /proc/self/maps, we may still need to retry several times due to
-+    *    racing with other threads.
-+    * 2. Use a global/static variable with lock to track the addresses we have
-+    *    allocated or tried.
-+    */
-+    uintptr_t hint;
-+    void* region = MAP_FAILED;
-+    for (hint = start; region == MAP_FAILED && hint + length <= end; hint += step) {
-+        region = mmap((void*)hint, length, prot, flags, fd, offset);
-+        if (region != MAP_FAILED) {
-+            if ((uintptr_t(region) + (length - 1)) & 0xffff800000000000) {
-+                if (munmap(region, length)) {
-+                    MOZ_ASSERT(errno == ENOMEM);
-+                }
-+                region = MAP_FAILED;
-+            }
-+        }
-+    }
-+    return region == MAP_FAILED ? nullptr : region;
- #else
-     void* region = MozTaggedAnonymousMmap(nullptr, length, prot, flags, fd, offset, "js-gc-heap");
-     if (region == MAP_FAILED)
-         return nullptr;
-     return region;
- #endif
- }
- 
-diff --git a/js/src/jsapi-tests/testGCAllocator.cpp b/js/src/jsapi-tests/testGCAllocator.cpp
---- a/js/src/jsapi-tests/testGCAllocator.cpp
-+++ b/js/src/jsapi-tests/testGCAllocator.cpp
-@@ -307,48 +307,72 @@ void* mapMemoryAt(void* desired, size_t 
- void* mapMemory(size_t length) { return nullptr; }
- void unmapPages(void* p, size_t size) { }
- 
- #elif defined(XP_UNIX)
- 
- void*
- mapMemoryAt(void* desired, size_t length)
- {
--#if defined(__ia64__) || (defined(__sparc64__) && defined(__NetBSD__))
-+#if defined(__ia64__) || (defined(__sparc64__) && defined(__NetBSD__)) || defined(__aarch64__)
-     MOZ_RELEASE_ASSERT(0xffff800000000000ULL & (uintptr_t(desired) + length - 1) == 0);
- #endif
-     void* region = mmap(desired, length, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
-     if (region == MAP_FAILED)
-         return nullptr;
-     if (region != desired) {
-         if (munmap(region, length))
-             MOZ_RELEASE_ASSERT(errno == ENOMEM);
-         return nullptr;
-     }
-     return region;
- }
- 
- void*
- mapMemory(size_t length)
- {
--    void* hint = nullptr;
-+    int prot = PROT_READ | PROT_WRITE;
-+    int flags = MAP_PRIVATE | MAP_ANON;
-+    int fd = -1;
-+    off_t offset = 0;
-+    // The test code must be aligned with the implementation in gc/Memory.cpp.
- #if defined(__ia64__) || (defined(__sparc64__) && defined(__NetBSD__))
--    hint = (void*)0x0000070000000000ULL;
--#endif
--    void* region = mmap(hint, length, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
-+    void* region = mmap((void*)0x0000070000000000, length, prot, flags, fd, offset);
-     if (region == MAP_FAILED)
-         return nullptr;
--#if defined(__ia64__) || (defined(__sparc64__) && defined(__NetBSD__))
--    if ((uintptr_t(region) + (length - 1)) & 0xffff800000000000ULL) {
-+    if ((uintptr_t(region) + (length - 1)) & 0xffff800000000000) {
-         if (munmap(region, length))
-             MOZ_RELEASE_ASSERT(errno == ENOMEM);
-         return nullptr;
-     }
-+    return region;
-+#elif defined(__aarch64__)
-+    const uintptr_t start = UINT64_C(0x0000070000000000);
-+    const uintptr_t end   = UINT64_C(0x0000800000000000);
-+    const uintptr_t step  = ChunkSize;
-+    uintptr_t hint;
-+    void* region = MAP_FAILED;
-+    for (hint = start; region == MAP_FAILED && hint + length <= end; hint += step) {
-+        region = mmap((void*)hint, length, prot, flags, fd, offset);
-+        if (region != MAP_FAILED) {
-+            if ((uintptr_t(region) + (length - 1)) & 0xffff800000000000) {
-+                if (munmap(region, length)) {
-+                    MOZ_RELEASE_ASSERT(errno == ENOMEM);
-+                }
-+                region = MAP_FAILED;
-+            }
-+        }
-+    }
-+    return region == MAP_FAILED ? nullptr : region;
-+#else
-+    void* region = mmap(nullptr, length, prot, flags, fd, offset);
-+    if (region == MAP_FAILED)
-+        return nullptr;
-+    return region;
- #endif
--    return region;
- }
- 
- void
- unmapPages(void* p, size_t size)
- {
-     if (munmap(p, size))
-         MOZ_RELEASE_ASSERT(errno == ENOMEM);
- }
-
--- a/mozilla-exclude-nametablecpp.patch	Mon Sep 19 21:47:49 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,50 +0,0 @@
-
-# HG changeset patch
-# User Jonathan Kew <jkew@mozilla.com>
-# Date 1463581374 -3600
-# Node ID 9c57b7cacffc57ec3919a2cf3b5ce861e0cf3842
-# Parent  ea7843420fe518b772c7b259d8ff47193fc5b79e
-Bug 1272647 - Exclude NameTable.cpp from unified compilation because #include <cmath> in other source files causes gcc6 compilation failure. r=bas
-
-diff --git a/gfx/graphite2/src/moz.build b/gfx/graphite2/src/moz.build
---- a/gfx/graphite2/src/moz.build
-+++ b/gfx/graphite2/src/moz.build
-@@ -40,30 +40,35 @@ UNIFIED_SOURCES += [
-     'gr_features.cpp',
-     'gr_font.cpp',
-     'gr_logging.cpp',
-     'gr_segment.cpp',
-     'gr_slot.cpp',
-     'Intervals.cpp',
-     'json.cpp',
-     'Justifier.cpp',
--    'NameTable.cpp',
-     'Pass.cpp',
-     'Position.cpp',
-     'SegCache.cpp',
-     'SegCacheEntry.cpp',
-     'SegCacheStore.cpp',
-     'Segment.cpp',
-     'Silf.cpp',
-     'Slot.cpp',
-     'Sparse.cpp',
-     'TtfUtil.cpp',
-     'UtfCodec.cpp',
- ]
- 
-+# Excluded from UNIFIED_SOURCES because <cmath> from other files breaks it,
-+# see bug 1272647.
-+SOURCES += [
-+    'NameTable.cpp',
-+]
-+
- # tell graphite2 not to export symbols, we'll be linking it directly with
- # thebes
- DEFINES['GRAPHITE2_STATIC'] = True
- 
- # We allow warnings for third-party code that can be updated from upstream.
- ALLOW_COMPILER_WARNINGS = True
- 
- FINAL_LIBRARY = 'gkmedias'
-
-
--- a/mozilla-kde.patch	Mon Sep 19 21:47:49 2016 +0200
+++ b/mozilla-kde.patch	Fri Sep 23 13:20:08 2016 +0200
@@ -1,5 +1,5 @@
 # HG changeset patch
-# Parent  972c67cdd5dd4463abbee60036b686d4cb78e616
+# Parent  1d3f5cacba056949ea9a56d4d805c3073efe403b
 Description: Add KDE integration to Firefox (toolkit parts)
 Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
 Author: Lubos Lunak <lunak@suse.com>
@@ -27,7 +27,7 @@
  #include "prefread.h"
  #include "prefapi_private_data.h"
  
-@@ -1145,16 +1146,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char 
+@@ -1162,16 +1163,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char 
  
  static nsresult pref_LoadPrefsInDirList(const char *listId)
  {
@@ -62,7 +62,7 @@
      return NS_OK;
  
    bool hasMore;
-@@ -1170,17 +1189,17 @@ static nsresult pref_LoadPrefsInDirList(
+@@ -1187,17 +1206,17 @@ static nsresult pref_LoadPrefsInDirList(
  
      nsAutoCString leaf;
      path->GetNativeLeafName(leaf);
@@ -81,7 +81,7 @@
  {
    nsZipItemPtr<char> manifest(jarReader, name, true);
    NS_ENSURE_TRUE(manifest.Buffer(), NS_ERROR_NOT_AVAILABLE);
-@@ -1274,24 +1293,36 @@ static nsresult pref_InitInitialObjects(
+@@ -1291,24 +1310,36 @@ static nsresult pref_InitInitialObjects(
    /* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */
    static const char* specialFiles[] = {
  #if defined(XP_MACOSX)
@@ -141,7 +141,7 @@
  DEFINES['OS_ARCH'] = CONFIG['OS_ARCH']
  DEFINES['MOZ_WIDGET_TOOLKIT'] = CONFIG['MOZ_WIDGET_TOOLKIT']
  
- if CONFIG['GNU_CXX']:
+ FINAL_TARGET_PP_FILES += [
 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
@@ -187,7 +187,7 @@
 diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloads/moz.build
 --- a/toolkit/components/downloads/moz.build
 +++ b/toolkit/components/downloads/moz.build
-@@ -60,15 +60,16 @@ if not CONFIG['MOZ_SUITE']:
+@@ -60,17 +60,18 @@ if not CONFIG['MOZ_SUITE']:
          'nsDownloadManagerUI.js',
          'nsDownloadManagerUI.manifest',
      ]
@@ -205,6 +205,8 @@
  DEFINES['GOOGLE_PROTOBUF_NO_STATIC_INITIALIZER'] = True
  
  CXXFLAGS += CONFIG['TK_CFLAGS']
+ 
+ if CONFIG['GNU_CXX']:
 diff --git a/toolkit/components/downloads/nsDownloadManager.cpp b/toolkit/components/downloads/nsDownloadManager.cpp
 --- a/toolkit/components/downloads/nsDownloadManager.cpp
 +++ b/toolkit/components/downloads/nsDownloadManager.cpp
@@ -2288,7 +2290,7 @@
 diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
 --- a/toolkit/xre/moz.build
 +++ b/toolkit/xre/moz.build
-@@ -48,17 +48,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'ui
+@@ -47,17 +47,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'ui
  elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt':
      EXPORTS += ['nsQAppInstance.h']
      SOURCES += [
@@ -2708,18 +2710,18 @@
 diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
 --- a/uriloader/exthandler/moz.build
 +++ b/uriloader/exthandler/moz.build
-@@ -75,17 +75,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'ui
- else:
-     # These files can't be built in unified mode because they redefine LOG.
+@@ -77,17 +77,19 @@ else:
      SOURCES += [
          osdir + '/nsOSHelperAppService.cpp',
      ]
+     if CONFIG['GNU_CXX']:
+         CXXFLAGS += ['-Wno-error=shadow']
  
  if 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:
      UNIFIED_SOURCES += [
 +        'unix/nsCommonRegistry.cpp',
          'unix/nsGNOMERegistry.cpp',
-+        'unix/nsKDERegistry.cpp',
++	'unix/nsKDERegistry.cpp',
          'unix/nsMIMEInfoUnix.cpp',
      ]
  elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
@@ -2728,7 +2730,7 @@
          'android/nsExternalSharingAppService.cpp',
          'android/nsExternalURLHandlerService.cpp',
          'android/nsMIMEInfoAndroid.cpp',
-@@ -129,16 +131,17 @@ include('/ipc/chromium/chromium-config.m
+@@ -131,16 +133,17 @@ include('/ipc/chromium/chromium-config.m
  
  FINAL_LIBRARY = 'xul'
  
@@ -3164,7 +3166,7 @@
 diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
 --- a/widget/gtk/moz.build
 +++ b/widget/gtk/moz.build
-@@ -90,16 +90,17 @@ else:
+@@ -87,16 +87,17 @@ else:
  include('/ipc/chromium/chromium-config.mozbuild')
  
  FINAL_LIBRARY = 'xul'
@@ -3672,7 +3674,7 @@
 diff --git a/xpcom/components/moz.build b/xpcom/components/moz.build
 --- a/xpcom/components/moz.build
 +++ b/xpcom/components/moz.build
-@@ -47,12 +47,13 @@ FINAL_LIBRARY = 'xul'
+@@ -44,12 +44,13 @@ FINAL_LIBRARY = 'xul'
  LOCAL_INCLUDES += [
      '!..',
      '../base',
--- a/mozilla-old_configure-bmo1282843.patch	Mon Sep 19 21:47:49 2016 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,29 +0,0 @@
-# HG changeset patch
-# User Wolfgang Rosenauer <wr@rosenauer.org>
-# Parent  2a0e5188c796cb2addedd185aba6176405786854
-Bug 1282843 - configure.py doesn't parse global autoconf options like --libdir
-without assuming libdir during build we do not find plugins/extensions in the correct system directory
-
-diff --git a/build/moz.configure/old.configure b/build/moz.configure/old.configure
---- a/build/moz.configure/old.configure
-+++ b/build/moz.configure/old.configure
-@@ -149,16 +149,19 @@ def old_configure_options(*options):
-     def all_options(help):
-         return list(options)
- 
-     return depends(prepare_configure, extra_old_configure_args, all_options,
-                    *options)
- 
- 
- @old_configure_options(
-+    '--libdir',
-+    '--includedir',
-+    '--datadir',
-     '--cache-file',
-     '--enable-accessibility',
-     '--enable-address-sanitizer',
-     '--enable-alsa',
-     '--enable-android-omx',
-     '--enable-android-resource-constrained',
-     '--enable-approximate-location',
-     '--enable-b2g-bt',
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mozilla-skia-overflow.patch	Fri Sep 23 13:20:08 2016 +0200
@@ -0,0 +1,32 @@
+# HG changeset patch
+# User Lee Salzman <lsalzman@mozilla.com>
+# Date 1474489725 14400
+#      Wed Sep 21 16:28:45 2016 -0400
+# Node ID 38a427a913b57080374b9966466b8f436ec39eb8
+# Parent  4dfd3f00543d1d7adc3f0f852e6f32fbca6f3420
+fix invalid Sk4f store to SkColor in SkPixmap::erase
+
+MozReview-Commit-ID: 840x1nXgYns
+
+diff --git a/gfx/skia/skia/src/core/SkPixmap.cpp b/gfx/skia/skia/src/core/SkPixmap.cpp
+--- a/gfx/skia/skia/src/core/SkPixmap.cpp
++++ b/gfx/skia/skia/src/core/SkPixmap.cpp
+@@ -221,17 +221,17 @@ bool SkPixmap::erase(const SkColor4f& or
+         pm = *this;
+     }
+ 
+     const SkColor4f color = origColor.pin();
+ 
+     if (kRGBA_F16_SkColorType != pm.colorType()) {
+         Sk4f c4 = Sk4f::Load(color.vec());
+         SkColor c;
+-        (c4 * Sk4f(255) + Sk4f(0.5f)).store(&c);
++        SkNx_cast<uint8_t>(c4 * Sk4f(255) + Sk4f(0.5f)).store(&c);
+         return pm.erase(c);
+     }
+ 
+     const uint64_t half4 = color.premul().toF16();
+     for (int y = 0; y < pm.height(); ++y) {
+         sk_memset64(pm.writable_addr64(0, y), half4, pm.width());
+     }
+     return true;
--- a/series	Mon Sep 19 21:47:49 2016 +0200
+++ b/series	Fri Sep 23 13:20:08 2016 +0200
@@ -11,10 +11,8 @@
 mozilla-reduce-files-per-UnifiedBindings.patch
 #mozilla-gtk3_20.patch
 mozilla-check_return.patch
-mozilla-exclude-nametablecpp.patch
-mozilla-aarch64-48bit-va.patch
+mozilla-skia-overflow.patch
 mozilla-binutils-visibility.patch
-mozilla-old_configure-bmo1282843.patch
 
 # Firefox patches
 firefox-kde.patch