Firefox 50.0 firefox50
authorWolfgang Rosenauer <wr@rosenauer.org>
Tue, 15 Nov 2016 21:26:23 +0100
branchfirefox50
changeset 932 a58cc7936ce7
parent 931 c5f980be6e8b
child 933 7f60766aae16
Firefox 50.0
MozillaFirefox/MozillaFirefox.changes
MozillaFirefox/MozillaFirefox.spec
MozillaFirefox/create-tar.sh
MozillaFirefox/l10n_changesets.txt
firefox-kde.patch
mozilla-kde.patch
mozilla-language.patch
--- a/MozillaFirefox/MozillaFirefox.changes	Sun Nov 13 16:53:26 2016 +0100
+++ b/MozillaFirefox/MozillaFirefox.changes	Tue Nov 15 21:26:23 2016 +0100
@@ -1,4 +1,85 @@
 -------------------------------------------------------------------
+Mon Nov 14 21:07:03 UTC 2016 - wr@rosenauer.org
+
+- update to Firefox 50.0 (boo#1009026)
+  * requires NSS 3.26.2
+  new features
+  * Updates to keyboard shortcuts
+    Set a preference to have Ctrl+Tab cycle through tabs in recently
+    used order
+    View a page in Reader Mode by using Ctrl+Alt+R
+  * Added option to Find in page that allows users to limit search to
+    whole words only
+  * Added download protection for a large number of executable file
+    types on Windows, Mac and Linux
+  * Fixed rendering of dashed and dotted borders with rounded corners
+    (border-radius)
+  * Added a built-in Emoji set for operating systems without native
+    Emoji fonts (Windows 8.0 and lower and Linux)
+  * Blocked versions of libavcodec older than 54.35.1
+  * additional locale
+  security fixes:
+  * MFSA 2016-89
+    CVE-2016-5296: Heap-buffer-overflow WRITE in rasterize_edges_1
+                   (bmo#1292443)
+    CVE-2016-5292: URL parsing causes crash (bmo#1288482)
+    CVE-2016-5293: Write to arbitrary file with updater and moz
+                   maintenance service using updater.log hardlink
+		   (Windows only) (bmo#1246945)
+    CVE-2016-5294: Arbitrary target directory for result files of
+                   update process (Windows only) (bmo#1246972)
+    CVE-2016-5297: Incorrect argument length checking in Javascript
+                   (bmo#1303678)
+    CVE-2016-9064: Addons update must verify IDs match between
+                   current and new versions (bmo#1303418)
+    CVE-2016-9065: Firefox for Android location bar spoofing usingfullscreen
+                   (Android only) (bmo#1306696)
+    CVE-2016-9066: Integer overflow leading to a buffer overflow in
+                   nsScriptLoadHandler (bmo#1299686)
+    CVE-2016-9067: heap-use-after-free in nsINode::ReplaceOrInsertBefore
+                   (bmo#1301777, bmo#1308922 (CVE-2016-9069))
+    CVE-2016-9068: heap-use-after-free in nsRefreshDriver (bmo#1302973)
+    CVE-2016-9072: 64-bit NPAPI sandbox isn't enabled on fresh profile
+                   (bmo#1300083) (Windows only)
+    CVE-2016-9075: WebExtensions can access the mozAddonManager API
+                   and use it to gain elevated privileges (bmo#1295324)
+    CVE-2016-9077: Canvas filters allow feDisplacementMaps to be applied
+                   to cross-origin images, allowing timing attacks on them
+		   (bmo#1298552)
+    CVE-2016-5291: Same-origin policy violation using local HTML file
+                    and saved shortcut file (bmo#1292159)
+    CVE-2016-5295: Mozilla Maintenance Service: Ability to read
+                   arbitrary files as SYSTEM (Windows only) (bmo#1247239)
+    CVE-2016-5298: SSL indicator can mislead the user about the real
+                   URL visited (bmo#1227538) (Android only)
+    CVE-2016-5299: Firefox AuthToken in broadcast protected with
+                   signature-level permission can be accessed by an
+		   application installed beforehand that defines the
+		   same permissions (bmo#1245791) (Android only)
+    CVE-2016-9061: API Key (glocation) in broadcast protected with
+                   signature-level permission can be accessed by an
+		   application installed beforehand that defines the
+		   same permissions (Android only) (bmo#1245795)
+    CVE-2016-9062: Private browsing browser traces (android) in
+                   browser.db and wal file (Android only) (bmo#1294438)
+    CVE-2016-9070: Sidebar bookmark can have reference to chrome window
+                   (bmo#1281071)
+    CVE-2016-9073: windows.create schema doesn't specify "format": "relativeUrl"
+                   (bmo#1289273)
+    CVE-2016-9074: Insufficient timing side-channel resistance in
+                   divSpoiler (bmo#1293334) (fixed via NSS 3.26.1)
+    CVE-2016-9076: select dropdown menu can be used for URL bar
+                   spoofing on e10s (bmo#1276976)
+    CVE-2016-9063: Possible integer overflow to fix inside XML_Parse
+                   in expat (bmo#1274777)
+    CVE-2016-9071: Probe browser history via HSTS/301 redirect + CSP
+                   (bmo#1285003)
+    CVE-2016-5289: Memory safety bugs fixed in Firefox 50
+    CVE-2016-5290: Memory safety bugs fixed in Firefox 50 and Firefox ESR 45.5
+- make aarch64 build more similar to x86_64 build (remove conditionals
+  that don't seem to be necessary anymore)
+
+-------------------------------------------------------------------
 Mon Oct 24 09:41:17 UTC 2016 - astieger@suse.com
 
 - Mozilla Firefox 49.0.2:
--- a/MozillaFirefox/MozillaFirefox.spec	Sun Nov 13 16:53:26 2016 +0100
+++ b/MozillaFirefox/MozillaFirefox.spec	Tue Nov 15 21:26:23 2016 +0100
@@ -18,10 +18,10 @@
 
 
 # changed with every update
-%define major 49
-%define mainver %major.0.2
+%define major 50
+%define mainver %major.0
 %define update_channel release
-%define releasedate 20161020000000
+%define releasedate 20161113000000
 
 # PIE, full relro (x86_64 for now)
 %define build_hardened 1
@@ -54,10 +54,10 @@
 %define branding 1
 %endif
 %define localize 1
-%ifarch aarch64 ppc ppc64 ppc64le s390 s390x ia64 %arm
+%ifarch %ix86 x86_64
+%define crashreporter 1
+%else
 %define crashreporter 0
-%else
-%define crashreporter 1
 %endif
 
 Name:           %{pkgname}
@@ -75,7 +75,7 @@
 BuildRequires:  libproxy-devel
 BuildRequires:  makeinfo
 BuildRequires:  mozilla-nspr-devel >= 4.12
-BuildRequires:  mozilla-nss-devel >= 3.25
+BuildRequires:  mozilla-nss-devel >= 3.26.2
 BuildRequires:  nss-shared-helper-devel
 BuildRequires:  python-devel
 BuildRequires:  startup-notification-devel
@@ -203,6 +203,7 @@
 Summary:        Extra translations for %{appname}
 Group:          System/Localization
 Provides:       locale(%{name}:ach;af;ak;as;ast;be;bg;bn_BD;bn_IN;br;bs;csb;cy;en_ZA;eo;es_MX;et;eu;fa;ff;fy_NL;ga_IE;gd;gl;gu_IN;he;hi_IN;hr;hy_AM;id;is;kk;km;kn;ku;lg;lij;lt;lv;mai;mk;ml;mr;nn_NO;nso;or;pa_IN;rm;ro;si;sk;sl;son;sq;sr;ta;ta_LK;te;th;tr;uk;uz;vi;zu)
+Provides:       locale(%{name}:ach;af;an;as;ast;az;be;bg;bn_BD;bn_IN;br;bs;cak;cy;dsb;en_ZA;eo;es_MX;et;eu;fa;ff;fy_NL;ga_IE;gd;gl;gn;gu_IN;he;hi_IN;hr;hsb;hy_AM;id;is;kk;km;kn;lij;lt;lv;mai;mk;ml;mr;ms;nn_NO;or;pa_IN;rm;ro;si;sk;sl;son;sq;sr;ta;te;th;tr;uk;uz;vi;xh)
 Requires:       %{name} = %{version}
 Obsoletes:      %{name}-translations < %{version}-%{release}
 
@@ -334,7 +335,7 @@
 ac_add_options --disable-optimize
 %endif
 %endif
-%ifarch ppc ppc64 ppc64le aarch64 %arm
+%ifarch ppc ppc64 ppc64le %arm
 ac_add_options --disable-elf-hack
 %endif
 ac_add_options --with-system-nspr
@@ -363,7 +364,7 @@
 ac_add_options --with-float-abi=hard
 ac_add_options --with-arch=armv7-a
 %endif
-%ifarch %arm aarch64 s390x
+%ifarch %arm s390x
 ac_add_options --disable-webrtc
 %endif
 EOF
@@ -583,6 +584,7 @@
 %{progdir}/*.so
 %{progdir}/icudt56l.dat
 %{progdir}/omni.ja
+%{progdir}/fonts/
 %{progdir}/platform.ini
 %{progdir}/plugin-container
 %if %crashreporter
--- a/MozillaFirefox/create-tar.sh	Sun Nov 13 16:53:26 2016 +0100
+++ b/MozillaFirefox/create-tar.sh	Tue Nov 15 21:26:23 2016 +0100
@@ -7,8 +7,8 @@
 
 CHANNEL="release"
 BRANCH="releases/mozilla-$CHANNEL"
-RELEASE_TAG="FIREFOX_49_0_2_RELEASE"
-VERSION="49.0.2"
+RELEASE_TAG="dc617d65c9f0cdbbe4351cc1e5c288b05f25f8f7"
+VERSION="50.0"
 
 # mozilla
 if [ -d mozilla ]; then
--- a/MozillaFirefox/l10n_changesets.txt	Sun Nov 13 16:53:26 2016 +0100
+++ b/MozillaFirefox/l10n_changesets.txt	Tue Nov 15 21:26:23 2016 +0100
@@ -1,92 +1,92 @@
-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 8d3446f9a5c5
-fr 9dfc3b26ba48
-fy-NL 954308cbc1e6
-ga-IE 6cf48c09d9e5
-gd 2b9e144b889d
-gl c869caff337a
-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
+ach 72c548f97e82
+af 676daf929ded
+an 9c672ba38dae
+ar 6bd1cb920a48
+as 9710b1ce7a29
+ast 5a06502c9fc1
+az f12bc2c29510
+be 3c6fd4559f7f
+bg 7843a5e79d32
+bn-BD 3cbe5cfb0859
+bn-IN 578eacdbac9d
+br a16ed131653a
+bs 3425b8fcf1ab
+ca c6b4f835d64e
+cak 710c1faa7291
+cs e1f114f9588d
+cy 07118becc133
+da fbec55bbfd36
+de 20748e20ccf2
+dsb 4b8493859a20
+el 16fdb46a6a47
+en-GB e7242fb885cf
+en-ZA 118b4d922a17
+eo ae85ceef76b2
+es-AR a18a4b85f35f
+es-CL c5ff11d180da
+es-ES e841d9340b7c
+es-MX 2eaf1f216766
+et 8920752eaf5b
+eu eb3cb2d122eb
+fa e481522b74f8
+ff 88f5cd66688d
+fi b20587491f77
+fr 628920fcb9f1
+fy-NL 56f04c122d2a
+ga-IE ffbfd52e15d6
+gd 9f50ee991ed8
+gl e15306f877bf
+gn 68f844f4138a
+gu-IN 54ac9d906390
+he 7c087889358a
+hi-IN aea1bb23685c
+hr b0cc9aa34502
+hsb d7ea2d9d91ea
+hu 5106349d21dd
+hy-AM 3f5103ed23e2
+id 69b0d5120660
+is 8b6a14ea919f
+it ec06674eebb4
+ja 488fbb4070d9
+ja-JP-mac e120b04c4a90
+kk 60c09b46e90d
+km 00277d0045d3
+kn 0aff09069416
+ko 33cf1dd48c33
+lij 6a94ea30eef6
+lt 15947ce6f7ff
+lv 3a43a0e2c12c
+mai b43ac46bf163
+mk 0f98fd626df2
+ml b6b5a2b26a09
+mr 0c2a798af2d9
+ms a0a74230784a
+nb-NO 378c5b201531
+nl 750fcda42314
+nn-NO 444e256b7ed8
+or 5ac88ef59ea5
+pa-IN ab02b30c28ea
+pl cd84bd057189
+pt-BR dc5c8b030a57
+pt-PT 900fd62886bb
+rm b6416ed6a3a1
+ro 2e2e9b5a07f5
+ru 1d962dfc279e
 si 03a3b09a2203
-sk 44b670dcadbc
-sl d6ccefbe182a
-son 300b8e976b40
-sq bc47aefcea37
-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
+sk 4e8311d1d017
+sl b43e8e65c00e
+son 544d3eea9a59
+sq 25e86afe807e
+sr 233c45e5d423
+sv-SE 6b9266a60638
+ta 0256c1b190ce
+te 8565fd8f778a
+th e2b0b5a2dc9c
+tr 255e7e613fca
+uk e36fe69f4a3f
+uz 6d46754186ab
+vi 5c32df50f35d
+xh c96bc753a170
+zh-CN 411faa039900
+zh-TW e1416ff1b4d6
 
--- a/firefox-kde.patch	Sun Nov 13 16:53:26 2016 +0100
+++ b/firefox-kde.patch	Tue Nov 15 21:26:23 2016 +0100
@@ -1,11 +1,11 @@
 # HG changeset patch
-# Parent  2704257a50b4ff60fa43eca8d4a547c6d70bb30e
+# Parent  2cb2f829aabd7e3efaa973a0a8cf99aca9605bdc
 
 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,1179 @@
+@@ -0,0 +1,1200 @@
 +#filter substitution
 +<?xml version="1.0"?>
 +# -*- Mode: HTML -*-
@@ -19,7 +19,7 @@
 +<?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"?>
++<?xml-stylesheet href="chrome://browser/skin/customizableui/panelUI.css" type="text/css"?>
 +<?xml-stylesheet href="chrome://browser/skin/" type="text/css"?>
 +<?xml-stylesheet href="chrome://browser/skin/browser-lightweightTheme.css" type="text/css"?>
 +
@@ -112,6 +112,12 @@
 +                hidden="true"
 +                oncommand="gBrowser.openNonRemoteWindow(TabContextMenu.contextTab);"/>
 +#endif
++      <menuseparator id="context_sendTabToDevice_separator" hidden="true"/>
++      <menu id="context_sendTabToDevice" label="&sendTabToDevice.label;"
++            accesskey="&sendTabToDevice.accesskey;" hidden="true">
++        <menupopup id="context_sendTabToDevicePopupMenu"
++                   onpopupshowing="gFxAccounts.populateSendTabToDevicesMenu(event.target, TabContextMenu.contextTab.linkedBrowser.currentURI.spec, TabContextMenu.contextTab.linkedBrowser.contentTitle);"/>
++      </menu>
 +      <menuseparator/>
 +      <menuitem id="context_reloadAllTabs" label="&reloadAllTabs.label;" accesskey="&reloadAllTabs.accesskey;"
 +                tbattr="tabbrowser-multiple-visible"
@@ -380,7 +386,6 @@
 +    <menupopup id="placesContext">
 +      <menuseparator id="placesContext_recentlyBookmarkedSeparator"
 +                     ignoreitem="true"
-+                     ordinal="2"
 +                     hidden="true"/>
 +      <menuitem id="placesContext_hideRecentlyBookmarked"
 +                label="&hideRecentlyBookmarked.label;"
@@ -388,7 +393,6 @@
 +                oncommand="BookmarkingUI.hideRecentlyBookmarked();"
 +                closemenu="single"
 +                ignoreitem="true"
-+                ordinal="2"
 +                hidden="true"/>
 +      <menuitem id="placesContext_showRecentlyBookmarked"
 +                label="&showRecentlyBookmarked.label;"
@@ -396,11 +400,10 @@
 +                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">
++    <panel id="ctrlTab-panel" hidden="true" norestorefocus="true" level="top">
 +      <hbox>
 +        <button class="ctrlTab-preview" flex="1"/>
 +        <button class="ctrlTab-preview" flex="1"/>
@@ -553,12 +556,11 @@
 +  <toolbox id="navigator-toolbox" mode="icons">
 +    <!-- Menu -->
 +    <toolbar type="menubar" id="toolbar-menubar" class="chromeclass-menubar" customizable="true"
-+             defaultset="menubar-items"
 +             mode="icons" iconsize="small"
 +#ifdef MENUBAR_CAN_AUTOHIDE
 +             toolbarname="&menubarCmd.label;"
 +             accesskey="&menubarCmd.accesskey;"
-+#if defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_QT)
++#if defined(MOZ_WIDGET_GTK)
 +             autohide="true"
 +#endif
 +#endif
@@ -585,10 +587,9 @@
 +             iconsize="small"
 +             aria-label="&tabsToolbar.label;"
 +             context="toolbar-context-menu"
-+             defaultset="tabbrowser-tabs,new-tab-button,alltabs-button"
 +             collapsed="true">
 +
-+#if defined(MOZ_WIDGET_GTK) || defined(MOZ_WIDGET_QT)
++#if defined(MOZ_WIDGET_GTK)
 +      <hbox id="private-browsing-indicator"
 +            skipintoolbarset="true"/>
 +#endif
@@ -638,7 +639,7 @@
 +        </menupopup>
 +      </toolbarbutton>
 +
-+#if !defined(MOZ_WIDGET_GTK) && !defined(MOZ_WIDGET_QT)
++#if !defined(MOZ_WIDGET_GTK)
 +      <hbox class="private-browsing-indicator" skipintoolbarset="true"/>
 +#endif
 +#ifdef CAN_DRAW_IN_TITLEBAR
@@ -657,21 +658,10 @@
 +#endif
 +    </toolbar>
 +
-+    <!--
-+           CAVEAT EMPTOR
-+           Should you need to add items to the toolbar here, make sure to also add them
-+           to the default placements of buttons in CustomizableUI.jsm, so the
-+           customization code doesn't get confused.
-+      -->
 +    <toolbar id="nav-bar"
 +             aria-label="&navbarCmd.label;"
 +             fullscreentoolbar="true" mode="icons" customizable="true"
 +             iconsize="small"
-+#ifdef MOZ_DEV_EDITION
-+             defaultset="urlbar-container,search-container,developer-button,bookmarks-menu-button,downloads-button,home-button,loop-button"
-+#else
-+             defaultset="urlbar-container,search-container,bookmarks-menu-button,downloads-button,home-button,loop-button"
-+#endif
 +             customizationtarget="nav-bar-customization-target"
 +             overflowable="true"
 +             overflowbutton="nav-bar-overflow-button"
@@ -715,46 +705,6 @@
 +                     pageproxystate="invalid"
 +                     onfocus="document.getElementById('identity-box').style.MozUserFocus= 'normal'"
 +                     onblur="setTimeout(() => { document.getElementById('identity-box').style.MozUserFocus = ''; }, 0);">
-+              <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 geo-icon" role="button"
-+                       aria-label="&urlbar.geolocationNotificationAnchor.label;"/>
-+                <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 indexedDB-icon" role="button"
-+                       aria-label="&urlbar.indexedDBNotificationAnchor.label;"/>
-+                <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 login-icon" role="button"
-+                       aria-label="&urlbar.passwordNotificationAnchor.label;"/>
-+                <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 web-notifications-icon" role="button"
-+                       aria-label="&urlbar.webNotsNotificationAnchor3.label;"/>
-+                <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 camera-icon in-use" role="button"
-+                       aria-label="&urlbar.webRTCSharingDevicesNotificationAnchor.label;"/>
-+                <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 microphone-icon in-use" role="button"
-+                       aria-label="&urlbar.webRTCSharingMicrophoneNotificationAnchor.label;"/>
-+                <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 screen-icon in-use" role="button"
-+                       aria-label="&urlbar.webRTCSharingScreenNotificationAnchor.label;"/>
-+                <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 service-icon" role="button"
-+                       aria-label="&urlbar.servicesNotificationAnchor.label;"/>
-+                <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 translation-icon in-use" role="button"
-+                       aria-label="&urlbar.translatedNotificationAnchor.label;"/>
-+                <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
 +                   code fires onmousedown, and hence eats our favicon drag events.
 +                   We only add the identity-box button to the tab order when the location bar
@@ -768,6 +718,67 @@
 +                <image id="identity-icon"
 +                       consumeanchor="identity-box"
 +                       onclick="PageProxyClickHandler(event);"/>
++                <box id="blocked-permissions-container" align="center" tooltiptext="">
++                  <image data-permission-id="geo" class="notification-anchor-icon geo-icon blocked" role="button"
++                         aria-label="&urlbar.geolocationNotificationAnchor.label;"/>
++                  <image data-permission-id="desktop-notification" class="notification-anchor-icon desktop-notification-icon blocked" role="button"
++                         aria-label="&urlbar.webNotsNotificationAnchor3.label;"/>
++                  <image data-permission-id="camera" class="notification-anchor-icon camera-icon blocked" role="button"
++                         aria-label="&urlbar.webRTCShareDevicesNotificationAnchor.label;"/>
++                  <image data-permission-id="indexedDB" class="notification-anchor-icon indexedDB-icon blocked" role="button"
++                         aria-label="&urlbar.indexedDBNotificationAnchor.label;"/>
++                  <image data-permission-id="microphone" class="notification-anchor-icon microphone-icon blocked" role="button"
++                         aria-label="&urlbar.webRTCShareMicrophoneNotificationAnchor.label;"/>
++                  <image data-permission-id="screen" class="notification-anchor-icon screen-icon blocked" role="button"
++                         aria-label="&urlbar.webRTCShareScreenNotificationAnchor.label;"/>
++                  <image data-permission-id="pointerLock" class="notification-anchor-icon pointerLock-icon blocked" role="button"
++                         aria-label="&urlbar.pointerLockNotificationAnchor.label;"/>
++                </box>
++                <box id="notification-popup-box"
++                     hidden="true"
++                     tooltiptext=""
++                     onmouseover="document.getElementById('identity-icon').classList.add('no-hover');"
++                     onmouseout="document.getElementById('identity-icon').classList.remove('no-hover');"
++                     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 geo-icon" role="button"
++                         aria-label="&urlbar.geolocationNotificationAnchor.label;"/>
++                  <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 indexedDB-icon" role="button"
++                         aria-label="&urlbar.indexedDBNotificationAnchor.label;"/>
++                  <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 login-icon" role="button"
++                         aria-label="&urlbar.passwordNotificationAnchor.label;"/>
++                  <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 desktop-notification-icon" role="button"
++                         aria-label="&urlbar.webNotsNotificationAnchor3.label;"/>
++                  <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 camera-icon in-use" role="button"
++                         aria-label="&urlbar.webRTCSharingDevicesNotificationAnchor.label;"/>
++                  <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 microphone-icon in-use" role="button"
++                         aria-label="&urlbar.webRTCSharingMicrophoneNotificationAnchor.label;"/>
++                  <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 screen-icon in-use" role="button"
++                         aria-label="&urlbar.webRTCSharingScreenNotificationAnchor.label;"/>
++                  <image id="pointerLock-notification-icon" class="notification-anchor-icon pointerLock-icon" role="button"
++                         aria-label="&urlbar.pointerLockNotificationAnchor.label;"/>
++                  <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 translation-icon" role="button"
++                         aria-label="&urlbar.translateNotificationAnchor.label;"/>
++                  <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 drm-icon" role="button"
++                         aria-label="&urlbar.emeNotificationAnchor.label;"/>
++                </box>
 +                <image id="tracking-protection-icon"/>
 +                <image id="connection-icon"/>
 +                <hbox id="identity-icon-labels">
@@ -972,7 +983,6 @@
 +             mode="icons" iconsize="small"
 +             class="chromeclass-directories"
 +             context="toolbar-context-menu"
-+             defaultset="personal-bookmarks"
 +             toolbarname="&personalbarCmd.label;" accesskey="&personalbarCmd.accesskey;"
 +             collapsed="true"
 +             customizable="true">
@@ -1139,13 +1149,13 @@
 +#include ../../components/customizableui/content/customizeMode.inc.xul
 +  </deck>
 +
-+  <html:div id="fullscreen-warning" hidden="true">
-+    <html:div id="fullscreen-domain-text">
++  <html:div id="fullscreen-warning" class="pointerlockfswarning" hidden="true">
++    <html:div class="pointerlockfswarning-domain-text">
 +      &fullscreenWarning.beforeDomain.label;
-+      <html:span id="fullscreen-domain"/>
++      <html:span class="pointerlockfswarning-domain"/>
 +      &fullscreenWarning.afterDomain.label;
 +    </html:div>
-+    <html:div id="fullscreen-generic-text">
++    <html:div class="pointerlockfswarning-generic-text">
 +      &fullscreenWarning.generic.label;
 +    </html:div>
 +    <html:button id="fullscreen-exit-button"
@@ -1158,6 +1168,17 @@
 +    </html:button>
 +  </html:div>
 +
++  <html:div id="pointerlock-warning" class="pointerlockfswarning" hidden="true">
++    <html:div class="pointerlockfswarning-domain-text">
++      &pointerlockWarning.beforeDomain.label;
++      <html:span class="pointerlockfswarning-domain"/>
++      &pointerlockWarning.afterDomain.label;
++    </html:div>
++    <html:div class="pointerlockfswarning-generic-text">
++      &pointerlockWarning.generic.label;
++    </html:div>
++  </html:div>
++
 +  <vbox id="browser-bottombox" layer="true">
 +    <notificationbox id="global-notificationbox" notificationside="bottom"/>
 +  </vbox>
@@ -1188,7 +1209,7 @@
 diff --git a/browser/base/jar.mn b/browser/base/jar.mn
 --- a/browser/base/jar.mn
 +++ b/browser/base/jar.mn
-@@ -69,16 +69,18 @@ browser.jar:
+@@ -68,16 +68,18 @@ browser.jar:
          content/browser/aboutTabCrashed.css           (content/aboutTabCrashed.css)
          content/browser/aboutTabCrashed.js            (content/aboutTabCrashed.js)
          content/browser/aboutTabCrashed.xhtml         (content/aboutTabCrashed.xhtml)
@@ -1205,7 +1226,7 @@
          content/browser/browser-data-submission-info-bar.js (content/browser-data-submission-info-bar.js)
          content/browser/browser-devedition.js         (content/browser-devedition.js)
          content/browser/browser-feeds.js              (content/browser-feeds.js)
-         content/browser/browser-fullScreen.js         (content/browser-fullScreen.js)
+         content/browser/browser-fullScreenAndPointerLock.js  (content/browser-fullScreenAndPointerLock.js)
          content/browser/browser-fullZoom.js           (content/browser-fullZoom.js)
 diff --git a/browser/components/build/nsModule.cpp b/browser/components/build/nsModule.cpp
 --- a/browser/components/build/nsModule.cpp
@@ -1293,7 +1314,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.
-@@ -730,16 +736,27 @@ var gMainPane = {
+@@ -703,16 +709,27 @@ var gMainPane = {
      let alwaysCheckPref = document.getElementById("browser.shell.checkDefaultBrowser");
      alwaysCheckPref.value = true;
  
@@ -1636,7 +1657,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
-@@ -676,16 +676,17 @@
+@@ -674,16 +674,17 @@
  @RESPATH@/greprefs.js
  @RESPATH@/defaults/autoconfig/prefcalls.js
  @RESPATH@/browser/defaults/permissions
--- a/mozilla-kde.patch	Sun Nov 13 16:53:26 2016 +0100
+++ b/mozilla-kde.patch	Tue Nov 15 21:26:23 2016 +0100
@@ -1,5 +1,5 @@
 # HG changeset patch
-# Parent  1d3f5cacba056949ea9a56d4d805c3073efe403b
+# Parent  6ff55468281e12a84adefb46b17acb60d9cea608
 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"
  
-@@ -1162,16 +1163,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char 
+@@ -1180,16 +1181,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char 
  
  static nsresult pref_LoadPrefsInDirList(const char *listId)
  {
@@ -62,7 +62,7 @@
      return NS_OK;
  
    bool hasMore;
-@@ -1187,17 +1206,17 @@ static nsresult pref_LoadPrefsInDirList(
+@@ -1205,17 +1224,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);
-@@ -1291,24 +1310,36 @@ static nsresult pref_InitInitialObjects(
+@@ -1309,24 +1328,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)
@@ -228,7 +228,7 @@
  #endif
  
  #ifdef MOZ_WIDGET_ANDROID
- #include "AndroidBridge.h"
+ #include "GeneratedJNIWrappers.h"
  #endif
  
 @@ -2719,16 +2723,25 @@ nsDownload::SetState(DownloadState aStat
@@ -278,7 +278,7 @@
 diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
 --- a/toolkit/content/jar.mn
 +++ b/toolkit/content/jar.mn
-@@ -72,29 +72,33 @@ toolkit.jar:
+@@ -67,29 +67,33 @@ toolkit.jar:
     content/global/viewZoomOverlay.js
     content/global/bindings/autocomplete.xml    (widgets/autocomplete.xml)
     content/global/bindings/browser.xml         (widgets/browser.xml)
@@ -784,7 +784,7 @@
 new file mode 100644
 --- /dev/null
 +++ b/toolkit/content/widgets/preferences-kde.xml
-@@ -0,0 +1,1408 @@
+@@ -0,0 +1,1410 @@
 +<?xml version="1.0"?>
 +
 +<!DOCTYPE bindings [
@@ -954,6 +954,8 @@
 +      <field name="_constructed">false</field>
 +      <property name="instantApply">
 +        <getter>
++          if (this.getAttribute("instantApply") == "false")
++            return false;
 +          return this.getAttribute("instantApply") == "true" || this.preferences.instantApply;
 +        </getter>
 +      </property>
@@ -2290,13 +2292,13 @@
 diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
 --- a/toolkit/xre/moz.build
 +++ b/toolkit/xre/moz.build
-@@ -47,17 +47,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'ui
- elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'qt':
-     EXPORTS += ['nsQAppInstance.h']
-     SOURCES += [
-         '!moc_nsNativeAppSupportQt.cpp',
-         'nsNativeAppSupportQt.cpp',
-         'nsQAppInstance.cpp',
+@@ -39,17 +39,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
+         'updaterfileutils_osx.mm',
+     ]
+ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit':
+     UNIFIED_SOURCES += [
+         'nsNativeAppSupportDefault.cpp',
+         'UIKitDirProvider.mm',
      ]
  elif 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']:
 +    EXPORTS += ['nsKDEUtils.h']
@@ -2730,7 +2732,7 @@
          'android/nsExternalSharingAppService.cpp',
          'android/nsExternalURLHandlerService.cpp',
          'android/nsMIMEInfoAndroid.cpp',
-@@ -131,16 +133,17 @@ include('/ipc/chromium/chromium-config.m
+@@ -123,16 +125,17 @@ include('/ipc/chromium/chromium-config.m
  
  FINAL_LIBRARY = 'xul'
  
@@ -2746,7 +2748,7 @@
      CXXFLAGS += CONFIG['TK_CFLAGS']
      CXXFLAGS += CONFIG['MOZ_DBUS_CFLAGS']
  
- if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('qt', 'gtk2', 'gtk3'):
+ if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'):
      CXXFLAGS += CONFIG['TK_CFLAGS']
 diff --git a/uriloader/exthandler/unix/nsCommonRegistry.cpp b/uriloader/exthandler/unix/nsCommonRegistry.cpp
 new file mode 100644
@@ -2974,13 +2976,12 @@
 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
-@@ -7,32 +7,35 @@
- #ifdef MOZ_WIDGET_QT
- #if (MOZ_ENABLE_CONTENTACTION)
- #include <contentaction/contentaction.h>
- #include "nsContentHandlerApp.h"
- #endif
- #endif
+@@ -1,50 +1,53 @@
+ /* -*- 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
+  * 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/. */
  
  #include "nsMIMEInfoUnix.h"
 -#include "nsGNOMERegistry.h"
@@ -2992,9 +2993,6 @@
  #ifdef MOZ_ENABLE_DBUS
  #include "nsDBusHandlerApp.h"
  #endif
- #ifdef MOZ_WIDGET_QT
- #include "nsMIMEInfoQt.h"
- #endif
 +#if defined(XP_UNIX) && !defined(XP_MACOSX)
 +#include "nsKDEUtils.h"
 +#endif
@@ -3002,17 +3000,14 @@
  nsresult
  nsMIMEInfoUnix::LoadUriInternal(nsIURI * aURI)
  {
--  nsresult rv = nsGNOMERegistry::LoadURL(aURI);
-+  nsresult rv = nsCommonRegistry::LoadURL(aURI);
+-  return nsGNOMERegistry::LoadURL(aURI);
++  return nsCommonRegistry::LoadURL(aURI);
+ }
  
- #ifdef MOZ_WIDGET_QT
-   if (NS_FAILED(rv)) {
-     rv = nsMIMEInfoQt::LoadUriInternal(aURI);
-   }
- #endif
- 
-   return rv;
-@@ -45,24 +48,24 @@ nsMIMEInfoUnix::GetHasDefaultHandler(boo
+ NS_IMETHODIMP
+ 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)
@@ -3040,7 +3035,7 @@
  
    if (*_retval)
      return NS_OK;
-@@ -97,16 +100,33 @@ nsMIMEInfoUnix::LaunchDefaultWithFile(ns
+@@ -79,16 +82,33 @@ nsMIMEInfoUnix::LaunchDefaultWithFile(ns
      ContentAction::Action::defaultActionForFile(uri, QString(mSchemeOrType.get()));
    if (action.isValid()) {
      action.trigger();
@@ -3166,7 +3161,7 @@
 diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
 --- a/widget/gtk/moz.build
 +++ b/widget/gtk/moz.build
-@@ -87,16 +87,17 @@ else:
+@@ -90,16 +90,17 @@ else:
  include('/ipc/chromium/chromium-config.mozbuild')
  
  FINAL_LIBRARY = 'xul'
@@ -3275,8 +3270,8 @@
      GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET));
  
    GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
-   const gchar *accept_button = (action == GTK_FILE_CHOOSER_ACTION_SAVE)
-@@ -595,8 +615,235 @@ nsFilePicker::Done(GtkWidget* file_choos
+ 
+@@ -603,8 +623,235 @@ nsFilePicker::Done(GtkWidget* file_choos
    if (mCallback) {
      mCallback->Done(result);
      mCallback = nullptr;
@@ -3590,7 +3585,7 @@
  #pragma warning(disable:4996) // VC12+ deprecates GetVersionEx
    OSVERSIONINFO info = { sizeof(OSVERSIONINFO) };
    if (GetVersionEx(&info)) {
-     nsTextFormatter::ssprintf(osVersion, MOZ_UTF16("%ld.%ld"),
+     nsTextFormatter::ssprintf(osVersion, u"%ld.%ld",
                                info.dwMajorVersion,
                                info.dwMinorVersion);
    }
@@ -3599,12 +3594,12 @@
  #elif defined(MOZ_WIDGET_COCOA)
    SInt32 majorVersion = nsCocoaFeatures::OSXVersionMajor();
    SInt32 minorVersion = nsCocoaFeatures::OSXVersionMinor();
-   nsTextFormatter::ssprintf(osVersion, MOZ_UTF16("%ld.%ld"),
+   nsTextFormatter::ssprintf(osVersion, u"%ld.%ld",
                              majorVersion,
                              minorVersion);
 +  desktop = NS_LITERAL_STRING("macosx");
  #elif defined(MOZ_WIDGET_GTK)
-   nsTextFormatter::ssprintf(osVersion, MOZ_UTF16("%ld.%ld"),
+   nsTextFormatter::ssprintf(osVersion, u"%ld.%ld",
                              gtk_major_version,
                              gtk_minor_version);
 +  desktop = nsKDEUtils::kdeSession() ? NS_LITERAL_STRING("kde") : NS_LITERAL_STRING("gnome");
@@ -3614,7 +3609,7 @@
      mozilla::AndroidBridge::Bridge()->GetStaticStringField("android/os/Build$VERSION",
                                                             "RELEASE",
                                                             osVersion);
-     isTablet = mozilla::widget::GeckoAppShell::IsTablet();
+     isTablet = java::GeckoAppShell::IsTablet();
    }
 +  desktop = NS_LITERAL_STRING("android");
  #endif
--- a/mozilla-language.patch	Sun Nov 13 16:53:26 2016 +0100
+++ b/mozilla-language.patch	Tue Nov 15 21:26:23 2016 +0100
@@ -1,23 +1,22 @@
 # HG changeset patch
 # User Wolfgang Rosenauer <wr@rosenauer.org>
 # Parent 5a29924228527f8882c83cf62d470963ea1ce62e
-# Parent  55b6ae7fd3ebf28f960031801f1948dfc1bd80d2
+# Parent  bf7b3a5853467b34f13465102a19b9c7c2524bd4
 Bug 583793 - Firefox interface language set to LANG, ignores LANGUAGE
 
 diff --git a/intl/locale/nsLocaleService.cpp b/intl/locale/nsLocaleService.cpp
 --- a/intl/locale/nsLocaleService.cpp
 +++ b/intl/locale/nsLocaleService.cpp
-@@ -122,16 +122,17 @@ nsLocaleService::nsLocaleService(void)
+@@ -114,16 +114,17 @@ nsLocaleService::nsLocaleService(void)
+     NS_ENSURE_SUCCESS_VOID(rv);
+ #endif
+ #if defined(XP_UNIX) && !defined(XP_MACOSX)
      RefPtr<nsLocale> resultLocale(new nsLocale());
      NS_ENSURE_TRUE_VOID(resultLocale);
  
- #ifdef MOZ_WIDGET_QT
-     const char* lang = QLocale::system().name().toUtf8();
- #else
      // Get system configuration
      const char* lang = getenv("LANG");
 +    const char* language = getenv("LANGUAGE");
- #endif
  
      nsAutoString xpLocale, platformLocale;
      nsAutoString category, category_platform;
@@ -25,7 +24,8 @@
  
      for( i = 0; i < LocaleListLength; i++ ) {
          nsresult result;
-@@ -158,16 +159,21 @@ nsLocaleService::nsLocaleService(void)
+         // setlocale( , "") evaluates LC_* and LANG
+@@ -149,16 +150,21 @@ nsLocaleService::nsLocaleService(void)
              } else {
                  CopyASCIItoUTF16(lang, platformLocale);
                  result = nsPosixLocale::GetXPLocale(lang, xpLocale);