1
0

Accepting request 530307 from mozilla:Factory

- Correct plugin directory for aarch64 (boo#1061207). The wrapper
  script was not detecting aarch64 as a 64 bit architecture, thus
  used /usr/lib/browser-plugins/.
- Drop libgnomeui-devel, and replace it with pkgconfig(gconf-2.0),
  pkgconfig(gtk+-2.0), pkgconfig(gtk+-unix-print-2.0),
  pkgconfig(glib-2.0), pkgconfig(gobject-2.0) and
  pkgconfig(gdk-x11-2.0) BuildRequires, align with what configure
  looks for.

- update to Firefox 56.0 (boo#1060445)
  * Firefox Screenshots
  * Find Options/Preferences more quickly with new search function
  * Media is no longer auto-played when opened in a background tab
  * Enable CSS Grid Layout View
  MFSA 2017-21
  * CVE-2017-7793 (bmo#1371889)
    Use-after-free with Fetch API
  * CVE-2017-7817 (bmo#1356596) (Android-only)
    Firefox for Android address bar spoofing through fullscreen mode
  * CVE-2017-7818 (bmo#1363723)
    Use-after-free during ARIA array manipulation
  * CVE-2017-7819 (bmo#1380292)
    Use-after-free while resizing images in design mode
  * CVE-2017-7824 (bmo#1398381)
    Buffer overflow when drawing and validating elements with ANGLE
  * CVE-2017-7805 (bmo#1377618) (fixed via NSS requirement)
    Use-after-free in TLS 1.2 generating handshake hashes
  * CVE-2017-7812 (bmo#1379842)
    Drag and drop of malicious page content to the tab bar can open locally stored files
  * CVE-2017-7814 (bmo#1376036)

OBS-URL: https://build.opensuse.org/request/show/530307
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/MozillaFirefox?expand=0&rev=258
This commit is contained in:
Dominique Leuenberger 2017-10-09 17:36:32 +00:00 committed by Git OBS Bridge
commit 0a8180e11a
21 changed files with 961 additions and 760 deletions

View File

@ -1,19 +1,140 @@
------------------------------------------------------------------- -------------------------------------------------------------------
Wed Aug 9 09:47:39 UTC 2017 - schwab@suse.de Sun Oct 1 18:25:16 UTC 2017 - stefan.bruens@rwth-aachen.de
- mozilla-ucontext.patch: use ucontext_t instead of struct ucontext - Correct plugin directory for aarch64 (boo#1061207). The wrapper
script was not detecting aarch64 as a 64 bit architecture, thus
used /usr/lib/browser-plugins/.
------------------------------------------------------------------- -------------------------------------------------------------------
Tue Aug 8 18:13:34 UTC 2017 - wr@rosenauer.org Sat Sep 30 20:10:50 UTC 2017 - zaitor@opensuse.org
- update to Firefox 52.3esr (boo#1052829) - Drop libgnomeui-devel, and replace it with pkgconfig(gconf-2.0),
MFSA 2017-19 pkgconfig(gtk+-2.0), pkgconfig(gtk+-unix-print-2.0),
pkgconfig(glib-2.0), pkgconfig(gobject-2.0) and
pkgconfig(gdk-x11-2.0) BuildRequires, align with what configure
looks for.
-------------------------------------------------------------------
Thu Sep 28 08:28:29 UTC 2017 - wr@rosenauer.org
- update to Firefox 56.0 (boo#1060445)
* Firefox Screenshots
* Find Options/Preferences more quickly with new search function
* Media is no longer auto-played when opened in a background tab
* Enable CSS Grid Layout View
MFSA 2017-21
* CVE-2017-7793 (bmo#1371889)
Use-after-free with Fetch API
* CVE-2017-7817 (bmo#1356596) (Android-only)
Firefox for Android address bar spoofing through fullscreen mode
* CVE-2017-7818 (bmo#1363723)
Use-after-free during ARIA array manipulation
* CVE-2017-7819 (bmo#1380292)
Use-after-free while resizing images in design mode
* CVE-2017-7824 (bmo#1398381)
Buffer overflow when drawing and validating elements with ANGLE
* CVE-2017-7805 (bmo#1377618) (fixed via NSS requirement)
Use-after-free in TLS 1.2 generating handshake hashes
* CVE-2017-7812 (bmo#1379842)
Drag and drop of malicious page content to the tab bar can open locally stored files
* CVE-2017-7814 (bmo#1376036)
Blob and data URLs bypass phishing and malware protection warnings
* CVE-2017-7813 (bmo#1383951)
Integer truncation in the JavaScript parser
* CVE-2017-7825 (bmo#1393624, bmo#1390980) (OSX-only)
OS X fonts render some Tibetan and Arabic unicode characters as spaces
* CVE-2017-7815 (bmo#1368981)
Spoofing attack with modal dialogs on non-e10s installations
* CVE-2017-7816 (bmo#1380597)
WebExtensions can load about: URLs in extension UI
* CVE-2017-7821 (bmo#1346515)
WebExtensions can download and open non-executable files without user interaction
* CVE-2017-7823 (bmo#1396320)
CSP sandbox directive did not create a unique origin
* CVE-2017-7822 (bmo#1368859)
WebCrypto allows AES-GCM with 0-length IV
* CVE-2017-7820 (bmo#1378207)
Xray wrapper bypass with new tab and web console
* CVE-2017-7811
Memory safety bugs fixed in Firefox 56
* CVE-2017-7810
Memory safety bugs fixed in Firefox 56 and Firefox ESR 52.4
- requires NSPR 4.16 and NSS 3.32.1
- rebased patches
-------------------------------------------------------------------
Thu Sep 28 07:53:13 UTC 2017 - dimstar@opensuse.org
- Add alsa-devel BuildRequires: we care for ALSA support to be
built and thus need to ensure we get the dependencies in place.
In the past, alsa-devel was pulled in by accident: we
buildrequire libgnome-devel. This required esound-devel and that
in turn pulled in alsa-devel for us. libgnome is being fixed to
no longer require esound-devel.
-------------------------------------------------------------------
Mon Sep 4 18:27:44 UTC 2017 - wr@rosenauer.org
- update to Firefox 55.0.3
* Fix an issue with addons when using a path containing non-ascii
characters (bmo#1389160)
* Fix file uploads to some websites, including YouTube (bmo#1383518)
- fix Google API key build integration
- add mozilla-ucontext.patch to fix Tumbleweed build
- do not enable XINPUT2 for now (boo#1053959)
-------------------------------------------------------------------
Fri Aug 11 08:32:30 UTC 2017 - wr@rosenauer.org
- update to Firefox 55.0.1
* Fix a regression the tab restoration process (bmo#1388160)
* Fix a problem causing What's new pages not to be displayed (bmo#1386224)
* Fix a rendering issue with some PKCS#11 libraries (bmo#1388370)
* Disable the predictor prefetch (bmo#1388160)
-------------------------------------------------------------------
Sat Aug 5 13:22:16 UTC 2017 - wr@rosenauer.org
- update to Firefox 55.0 (boo#1052829)
* Browsing sessions with a high number of tabs are now restored
in an instant
* Sidebar (bookmarks, history, synced tabs) can now be moved to
the right edge of the window
* Fine-tune your browser performance from the Preferences/Options page.
* Make screenshots of webpages, and save them locally or upload
them to the cloud. This feature will undergo A/B testing and
will not be visible for some users.
* Added Belarusian (be) locale
* Simplify print jobs from within print preview
* Use virtual reality devices with the web with the introduction
of WebVR
* Search suggestions are now enabled by default for users who
haven't explicitly opted-out
* Search with any installed search engine directly from the
location bar
* IMPORTANT: Breaking profile changes - do not downgrade Firefox
and use a profile that has been opened with Firefox 55+.
* The Adobe Flash plugin is now click-to-activate by default and
only allowed on http:// and https:// URL schemes. This change
will be rolled out progressively and so will not be visible to
all users immediately. For more information see the Firefox
plugin roadmap
* Modernized application update UI to be less intrusive and more
aligned with the rest of the browser. Only users who have not
restarted their browser 8 days after downloading an update or
users who opted out of automatic updates will see this change.
* Insecure sites can no longer access the Geolocation APIs to get
access to your physical location
* requires NSPR 4.15 and NSS 3.31
MFSA 2017-18
* CVE-2017-7798 (bmo#1371586, bmo#1372112) * CVE-2017-7798 (bmo#1371586, bmo#1372112)
XUL injection in the style editor in devtools XUL injection in the style editor in devtools
* CVE-2017-7800 (bmo#1374047) * CVE-2017-7800 (bmo#1374047)
Use-after-free in WebSockets during disconnection Use-after-free in WebSockets during disconnection
* CVE-2017-7801 (bmo#1371259) * CVE-2017-7801 (bmo#1371259)
Use-after-free with marquee during window resizing Use-after-free with marquee during window resizing
* CVE-2017-7809 (bmo#1380284)
Use-after-free while deleting attached editor DOM node
* CVE-2017-7784 (bmo#1376087) * CVE-2017-7784 (bmo#1376087)
Use-after-free with image observers Use-after-free with image observers
* CVE-2017-7802 (bmo#1378147) * CVE-2017-7802 (bmo#1378147)
@ -22,6 +143,8 @@ Tue Aug 8 18:13:34 UTC 2017 - wr@rosenauer.org
Buffer overflow manipulating ARIA attributes in DOM Buffer overflow manipulating ARIA attributes in DOM
* CVE-2017-7786 (bmo#1365189) * CVE-2017-7786 (bmo#1365189)
Buffer overflow while painting non-displayable SVG Buffer overflow while painting non-displayable SVG
* CVE-2017-7806 (bmo#1378113)
Use-after-free in layer manager with SVG
* CVE-2017-7753 (bmo#1353312) * CVE-2017-7753 (bmo#1353312)
Out-of-bounds read with cached style data and pseudo-elements# Out-of-bounds read with cached style data and pseudo-elements#
* CVE-2017-7787 (bmo#1322896) * CVE-2017-7787 (bmo#1322896)
@ -34,88 +157,75 @@ Tue Aug 8 18:13:34 UTC 2017 - wr@rosenauer.org
Memory protection bypass through WindowsDllDetourPatcher Memory protection bypass through WindowsDllDetourPatcher
* CVE-2017-7791 (bmo#1365875) * CVE-2017-7791 (bmo#1365875)
Spoofing following page navigation with data: protocol and modal alerts Spoofing following page navigation with data: protocol and modal alerts
* CVE-2017-7808 (bmo#1367531)
CSP information leak with frame-ancestors containing paths
* CVE-2017-7782 (bmo#1344034) * CVE-2017-7782 (bmo#1344034)
WindowsDllDetourPatcher allocates memory without DEP protections WindowsDllDetourPatcher allocates memory without DEP protections
* CVE-2017-7781 (bmo#1352039)
Elliptic curve point addition error when using mixed Jacobian-affine coordinates
* CVE-2017-7794 (bmo#1374281)
Linux file truncation via sandbox broker
* CVE-2017-7803 (bmo#1377426) * CVE-2017-7803 (bmo#1377426)
CSP containing 'sandbox' improperly applied CSP containing 'sandbox' improperly applied
* CVE-2017-7799 (bmo#1372509)
Self-XSS XUL injection in about:webrtc
* CVE-2017-7783 (bmo#1360842)
DOS attack through long username in URL
* CVE-2017-7788 (bmo#1073952)
Sandboxed about:srcdoc iframes do not inherit CSP directives
* CVE-2017-7789 (bmo#1074642)
Failure to enable HSTS when two STS headers are sent for a connection
* CVE-2017-7790 (bmo#1350460) (Windows-only)
Windows crash reporter reads extra memory for some non-null-terminated registry values
* CVE-2017-7796 (bmo#1234401) (Windows-only)
Windows updater can delete any file named update.log
* CVE-2017-7797 (bmo#1334776)
Response header name interning leaks across origins
* CVE-2017-7780
Memory safety bugs fixed in Firefox 55
* CVE-2017-7779 * CVE-2017-7779
Memory safety bugs fixed in Firefox 55 and Firefox ESR 52.3 Memory safety bugs fixed in Firefox 55 and Firefox ESR 52.3
- updated mozilla-kde.patch:
* removed "downloadfinished" alert as Firefox reimplemented the
whole thing (TODO: check if there is another function we should
hook in)
------------------------------------------------------------------- -------------------------------------------------------------------
Wed Jul 5 07:26:32 UTC 2017 - astieger@suse.com Tue Jul 4 20:08:47 UTC 2017 - wr@rosenauer.org
- Mozilla Firefox 52.2.1esr: - update to Firefox 54.0.1
* Printing text does not work on Windows when Direct2D is * Fix a display issue of tab title (bmo#1357656)
disabled (bmo#1318845) * Fix a display issue of opening new tab (bmo#1371995)
* Fix a display issue when opening multiple tabs (bmo#1371962)
* Fix a tab display issue when downloading files (bmo#1373109)
* Fix a PDF printing issue (bmo#1366744)
* Fix a Netflix issue on Linux (bmo#1375708)
------------------------------------------------------------------- -------------------------------------------------------------------
Wed Jun 14 07:08:29 UTC 2017 - wr@rosenauer.org Thu Jun 15 13:56:05 UTC 2017 - wr@rosenauer.org
- update to Firefox 52.2esr (boo#1043960) - update to Firefox 54.0
MFSA 2017-16 * Clearer and more detailed information for download items in the
* CVE-2017-5472 (bmo#1365602) download panel
Use-after-free using destroyed node when regenerating trees * Added Burmese (my) locale
* CVE-2017-7749 (bmo#1355039) * Bookmarks created on mobile devices are now shown in
Use-after-free during docshell reloading "Mobile Bookmarks” folder in the drop down list from the toolbar
* CVE-2017-7750 (bmo#1356558) and Bookmarks option in the menu bar in Desktop Firefox
Use-after-free with track elements * added support for multiple content processes (e10s-multi)
* CVE-2017-7751 (bmo#1363396) - requires NSPR 4.14 and NSS 3.30.2
Use-after-free with content viewer listeners - requires rust 1.15.1
* CVE-2017-7752 (bmo#1359547) - removed mozilla-shared-nss-db.patch as it seems to be a rather
Use-after-free with IME input unused feature
* CVE-2017-7754 (bmo#1357090)
Out-of-bounds read in WebGL with ImageInfo object
* CVE-2017-7755 (bmo#1361326)
Privilege escalation through Firefox Installer with same
directory DLL files (Windows only)
* CVE-2017-7756 (bmo#1366595)
Use-after-free and use-after-scope logging XHR header errors
* CVE-2017-7757 (bmo#1356824)
Use-after-free in IndexedDB
* CVE-2017-7778, CVE-2017-7778, CVE-2017-7771, CVE-2017-7772,
CVE-2017-7773, CVE-2017-7774, CVE-2017-7775, CVE-2017-7776,
CVE-2017-7777
Vulnerabilities in the Graphite 2 library
* CVE-2017-7758 (bmo#1368490)
Out-of-bounds read in Opus encoder
* CVE-2017-7760 (bmo#1348645)
File manipulation and privilege escalation via callback parameter
in Mozilla Windows Updater and Maintenance Service (Windows only)
* CVE-2017-7761 (bmo#1215648)
File deletion and privilege escalation through Mozilla Maintenance
Service helper.exe application (Windows only)
* CVE-2017-7764 (bmo#1364283)
Domain spoofing with combination of Canadian Syllabics and other
unicode blocks
* CVE-2017-7765 (bmo#1273265)
Mark of the Web bypass when saving executable files (Windows only)
* CVE-2017-7766 (bmo#1342742)
File execution and privilege escalation through updater.ini,
Mozilla Windows Updater, and Mozilla Maintenance Service
(Windows only)
* CVE-2017-7767 (bmo#1336964)
Privilege escalation and arbitrary file overwrites through Mozilla
Windows Updater and Mozilla Maintenance Service (Windows only)
* CVE-2017-7768 (bmo#1336979)
32 byte arbitrary file read through Mozilla Maintenance Service
(Windows only)
* CVE-2017-5470
Memory safety bugs fixed in Firefox 54 and Firefox ESR 52.2
- requires NSS 3.28.5
------------------------------------------------------------------- -------------------------------------------------------------------
Tue May 23 14:00:40 UTC 2017 - wr@rosenauer.org Thu Jun 1 04:25:05 UTC 2017 - kah0922@gmail.com
- remove -fno-inline-small-functions and explicitely optimize with - remove -fno-inline-small-functions and explicitely optimize with
-O2 for openSUSE > 13.2/Leap 42 to work with gcc7 (boo#1040105) -O2 for openSUSE > 13.2/Leap 42 to work with gcc7 (boo#1040105)
------------------------------------------------------------------- -------------------------------------------------------------------
Mon May 8 08:28:17 UTC 2017 - wr@rosenauer.org Wed Apr 26 12:37:38 UTC 2017 - wr@rosenauer.org
- update to Firefox 52.1.1
MFSA 2017-14
* CVE-2017-5031: Use after free in ANGLE (bmo#1328762)
(Windows only, Linux not affected)
- switch to Mozilla's geolocation service (boo#1026989) - switch to Mozilla's geolocation service (boo#1026989)
- removed mozilla-preferences.patch obsoleted by overriding via - removed mozilla-preferences.patch obsoleted by overriding via
firefox.js firefox.js
@ -123,10 +233,27 @@ Mon May 8 08:28:17 UTC 2017 - wr@rosenauer.org
(boo#1015998) (boo#1015998)
------------------------------------------------------------------- -------------------------------------------------------------------
Wed Apr 12 21:43:16 UTC 2017 - wr@rosenauer.org Mon Apr 17 12:52:10 UTC 2017 - wr@rosenauer.org
- update to Firefox 52.1.0esr (boo#1035082) - update to Firefox 53.0
MFSA 2017-12 * requires NSS 3.29.5
* Lightweight themes are now applied in private browsing windows
* Reader Mode now displays estimated reading time for the page
* Two new 'compact' themes available in Firefox, dark and light,
based on the Firefox Developer Edition theme
* Ended Firefox Linux support for processors older than Pentium 4
and AMD Opteron
* Refresh of the media controls user interface
* Shortened titles on tabs are faded out instead of using ellipsis
for improved readability
* Media playback on new tabs is blocked until the tab is visible
* Permission notifications have a cleaner design and cannot be
easily missed
MFSA 2017-10
* CVE-2017-5456 (bmo#1344415)
Sandbox escape allowing local file system access
* CVE-2017-5442 (bmo#1347979)
Use-after-free during style changes
* CVE-2017-5443 (bmo#1342661) * CVE-2017-5443 (bmo#1342661)
Out-of-bounds write during BinHex decoding Out-of-bounds write during BinHex decoding
* CVE-2017-5429 (bmo#1341096, bmo#1342823, bmo#1343261, bmo#1348894, * CVE-2017-5429 (bmo#1341096, bmo#1342823, bmo#1343261, bmo#1348894,
@ -158,8 +285,8 @@ Wed Apr 12 21:43:16 UTC 2017 - wr@rosenauer.org
* CVE-2017-5445 (bmo#1344467) * CVE-2017-5445 (bmo#1344467)
Uninitialized values used while parsing application/http-index-format Uninitialized values used while parsing application/http-index-format
content content
* CVE-2017-5442 (bmo#1347979) * CVE-2017-5468 (bmo#1329521)
Use-after-free during style changes Incorrect ownership model for Private Browsing information
* CVE-2017-5469 (bmo#1292534) * CVE-2017-5469 (bmo#1292534)
Potential Buffer overflow in flex-generated code Potential Buffer overflow in flex-generated code
* CVE-2017-5440 (bmo#1336832) * CVE-2017-5440 (bmo#1336832)
@ -183,36 +310,33 @@ Wed Apr 12 21:43:16 UTC 2017 - wr@rosenauer.org
* CVE-2017-5432 (bmo#1346654) * CVE-2017-5432 (bmo#1346654)
Use-after-free in text input selection Use-after-free in text input selection
* CVE-2017-5430 (bmo#1329796, bmo#1337418, bmo#1339722, bmo#1340482, * CVE-2017-5430 (bmo#1329796, bmo#1337418, bmo#1339722, bmo#1340482,
bmo#1342101, bmo#1344081, bmo#1344305, bmo#1344686, bmo#1346140, bmo#1342101, bmo#1344081, bmo#1344305, bmo#1344686,
bmo#1346419, bmo#1348143, bmo#1349621, bmo#1349719, bmo#1353476) bmo#1346140, bmo#1346419, bmo#1348143, bmo#1349621,
bmo#1349719, bmo#1353476)
Memory safety bugs fixed in Firefox 53 and Firefox ESR 52.1 Memory safety bugs fixed in Firefox 53 and Firefox ESR 52.1
* CVE-2017-5459 (bmo#1333858) * CVE-2017-5459 (bmo#1333858)
Buffer overflow in WebGL Buffer overflow in WebGL
* CVE-2017-5462 (bmo#1345089) * CVE-2017-5458 (bmo#1229426)
DRBG flaw in NSS Drag and drop of javascript: URLs can allow for self-XSS
* CVE-2017-5455 (bmo#1341191) * CVE-2017-5455 (bmo#1341191)
Sandbox escape through internal feed reader APIs Sandbox escape through internal feed reader APIs
* CVE-2017-5454 (bmo#1349276) * CVE-2017-5454 (bmo#1349276)
Sandbox escape allowing file system read access through file Sandbox escape allowing file system read access through file picker
picker
* CVE-2017-5456 (bmo#1344415)
Sandbox escape allowing local file system access
* CVE-2017-5451 (bmo#1273537) * CVE-2017-5451 (bmo#1273537)
Addressbar spoofing with onblur event Addressbar spoofing with onblur event
- requires NSS 3.28.4 * CVE-2017-5453 (bmo#1321247)
- rebased patches HTML injection into RSS Reader feed preview page through
TITLE element
* CVE-2017-5462 (bmo#1345089)
DRBG flaw in NSS
- removed browser(npapi) provides as these plugins are deprecated
- switch used compiler to gcc5 (FF requires gcc >= 4.9 now) for
Leap 42
- Gtk2 is not longer an option; switched to Gtk3
- apply MOZ_USE_XINPUT2=1 for better touchpad and touchscreen support
(boo#1032003)
------------------------------------------------------------------- -------------------------------------------------------------------
Mon Apr 3 06:28:34 UTC 2017 - wr@rosenauer.org
- switch package to use ESR52 branch
* enables plugin support by default
* service workers are disabled by default
* push notifications are disabled by default
* WebAssembly (wasm) is disabled
* Less use of multiprocess architecture Electrolysis (e10s)
+-------------------------------------------------------------------
Mon Apr 3 06:16:26 UTC 2017 - wr@rosenauer.org Mon Apr 3 06:16:26 UTC 2017 - wr@rosenauer.org
- update to Firefox 52.0.2 - update to Firefox 52.0.2

View File

@ -18,31 +18,26 @@
# changed with every update # changed with every update
%define major 52 %define major 56
%define mainver %major.3.0 %define mainver %major.0
%define update_channel esr52 %define update_channel release
%define releasedate 20170807000000 %define branding 1
%define releasedate 20170926190823
# PIE, full relro (x86_64 for now) # PIE, full relro (x86_64 for now)
%define build_hardened 1 %define build_hardened 1
%if 0%{?suse_version} > 1320 # Firefox only supports i686
%define firefox_use_gtk3 1 %ifarch %ix86
%ifarch %ix86 x86_64 ExclusiveArch: i586 i686
%define firefox_use_rust 0 BuildArch: i686
%endif %{expand:%%global optflags %(echo "%optflags"|sed -e s/i586/i686/) -march=i686 -mtune=generic}
%endif %endif
# general build definitions # general build definitions
%if "%{update_channel}" != "aurora"
%define progname firefox %define progname firefox
%define pkgname MozillaFirefox %define pkgname MozillaFirefox
%define appname Firefox %define appname Firefox
%else
%define progname firefox-dev
%define pkgname firefox-dev-edition
%define appname Firefox Developer Edition
%endif
%define progdir %{_prefix}/%_lib/%{progname} %define progdir %{_prefix}/%_lib/%{progname}
%define gnome_dir %{_prefix} %define gnome_dir %{_prefix}
%define desktop_file_name %{progname} %define desktop_file_name %{progname}
@ -51,15 +46,6 @@
%define __find_requires sh %{SOURCE4} %define __find_requires sh %{SOURCE4}
%global provfind sh -c "grep -v '.so' | %__find_provides" %global provfind sh -c "grep -v '.so' | %__find_provides"
%global __find_provides %provfind %global __find_provides %provfind
# Set up Google API keys, see http://www.chromium.org/developers/how-tos/api-keys
# Note: these are for the openSUSE Firefox builds ONLY. For your own distribution,
# please get your own set of keys.
%define _google_api_key AIzaSyD1hTe85_a14kr1Ks8T3Ce75rvbR1_Dx7Q
%if %update_channel == "aurora"
%define branding 0
%else
%define branding 1
%endif
%define localize 1 %define localize 1
%ifarch %ix86 x86_64 %ifarch %ix86 x86_64
%define crashreporter 1 %define crashreporter 1
@ -69,41 +55,45 @@
Name: %{pkgname} Name: %{pkgname}
BuildRequires: Mesa-devel BuildRequires: Mesa-devel
BuildRequires: alsa-devel
BuildRequires: autoconf213 BuildRequires: autoconf213
BuildRequires: dbus-1-glib-devel BuildRequires: dbus-1-glib-devel
BuildRequires: fdupes BuildRequires: fdupes
%if 0%{?suse_version} <= 1320
BuildRequires: gcc5-c++
%else
BuildRequires: gcc-c++ BuildRequires: gcc-c++
%endif
BuildRequires: cargo
BuildRequires: libXcomposite-devel BuildRequires: libXcomposite-devel
BuildRequires: libcurl-devel BuildRequires: libcurl-devel
BuildRequires: libgnomeui-devel
BuildRequires: libidl-devel BuildRequires: libidl-devel
BuildRequires: libiw-devel BuildRequires: libiw-devel
BuildRequires: libnotify-devel BuildRequires: libnotify-devel
BuildRequires: libproxy-devel BuildRequires: libproxy-devel
BuildRequires: makeinfo BuildRequires: makeinfo
BuildRequires: mozilla-nspr-devel >= 4.13.1 BuildRequires: mozilla-nspr-devel >= 4.16
BuildRequires: mozilla-nss-devel >= 3.28.5 BuildRequires: mozilla-nss-devel >= 3.32.1
BuildRequires: nss-shared-helper-devel
BuildRequires: python-devel BuildRequires: python-devel
BuildRequires: rust >= 1.15.1
BuildRequires: rust-std
BuildRequires: startup-notification-devel BuildRequires: startup-notification-devel
BuildRequires: unzip BuildRequires: unzip
BuildRequires: update-desktop-files BuildRequires: update-desktop-files
BuildRequires: xorg-x11-libXt-devel BuildRequires: xorg-x11-libXt-devel
BuildRequires: yasm BuildRequires: yasm
BuildRequires: zip BuildRequires: zip
BuildRequires: pkgconfig(gconf-2.0)
BuildRequires: pkgconfig(gdk-x11-2.0)
BuildRequires: pkgconfig(glib-2.0) >= 2.22
BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(gtk+-2.0) >= 2.18.0
BuildRequires: pkgconfig(gtk+-3.0) >= 3.4.0
BuildRequires: pkgconfig(gtk+-unix-print-2.0)
BuildRequires: pkgconfig(gtk+-unix-print-3.0)
BuildRequires: pkgconfig(libffi) BuildRequires: pkgconfig(libffi)
BuildRequires: pkgconfig(libpulse) BuildRequires: pkgconfig(libpulse)
%if 0%{?firefox_use_gtk3} #BuildRequires: llvm-clang-devel >= 3.9.0
BuildRequires: pkgconfig(glib-2.0)
BuildRequires: pkgconfig(gobject-2.0)
BuildRequires: pkgconfig(gtk+-3.0) >= 3.4.0
BuildRequires: pkgconfig(gtk+-unix-print-3.0)
%endif
%if 0%{?firefox_use_rust}
BuildRequires: cargo
BuildRequires: rust >= 1.10
BuildRequires: rust-std
%endif
# libavcodec is required for H.264 support but the # libavcodec is required for H.264 support but the
# openSUSE version is currently not able to play H.264 # openSUSE version is currently not able to play H.264
# therefore the Packman version is required # therefore the Packman version is required
@ -116,11 +106,8 @@ Provides: firefox = %{mainver}
Provides: firefox = %{version}-%{release} Provides: firefox = %{version}-%{release}
%endif %endif
Provides: web_browser Provides: web_browser
Provides: browser(npapi)
%if "%{update_channel}" != "aurora"
Provides: appdata() Provides: appdata()
Provides: appdata(firefox.appdata.xml) Provides: appdata(firefox.appdata.xml)
%endif
# this is needed to match this package with the kde4 helper package without the main package # this is needed to match this package with the kde4 helper package without the main package
# having a hard requirement on the kde4 package # having a hard requirement on the kde4 package
%define kde_helper_version 6 %define kde_helper_version 6
@ -147,10 +134,13 @@ Source14: create-tar.sh
Source15: firefox-appdata.xml Source15: firefox-appdata.xml
Source16: MozillaFirefox.changes Source16: MozillaFirefox.changes
Source17: l10n_changesets.txt Source17: l10n_changesets.txt
# Set up API keys, see http://www.chromium.org/developers/how-tos/api-keys
# Note: these are for the openSUSE Firefox builds ONLY. For your own distribution,
# please get your own set of keys.
Source18: mozilla-api-key Source18: mozilla-api-key
Source19: google-api-key
# Gecko/Toolkit # Gecko/Toolkit
Patch1: mozilla-nongnome-proxies.patch Patch1: mozilla-nongnome-proxies.patch
Patch2: mozilla-shared-nss-db.patch
Patch3: mozilla-kde.patch Patch3: mozilla-kde.patch
Patch5: mozilla-language.patch Patch5: mozilla-language.patch
Patch6: mozilla-ntlm-full-path.patch Patch6: mozilla-ntlm-full-path.patch
@ -180,6 +170,7 @@ Obsoletes: tracker-miner-firefox < 0.15
%if 0%{?suse_version} < 1220 %if 0%{?suse_version} < 1220
Obsoletes: libproxy1-pacrunner-mozjs <= 0.4.7 Obsoletes: libproxy1-pacrunner-mozjs <= 0.4.7
%endif %endif
##BuildArch: i686 x86_64 aarch64 ppc64le
%description %description
Mozilla Firefox is a standalone web browser, designed for standards Mozilla Firefox is a standalone web browser, designed for standards
@ -260,13 +251,14 @@ symbols meant for upload to Mozilla's crash collector database.
%endif %endif
cd $RPM_BUILD_DIR/mozilla cd $RPM_BUILD_DIR/mozilla
%patch1 -p1 %patch1 -p1
%patch2 -p1
%patch3 -p1 %patch3 -p1
%patch5 -p1 %patch5 -p1
%patch6 -p1 %patch6 -p1
%patch7 -p1 %patch7 -p1
%patch8 -p1 %patch8 -p1
%ifarch %ix86
%patch9 -p1 %patch9 -p1
%endif
%patch10 -p1 %patch10 -p1
%patch11 -p1 %patch11 -p1
# Firefox # Firefox
@ -295,7 +287,9 @@ export MOZ_BUILD_DATE=%{releasedate}
export MOZILLA_OFFICIAL=1 export MOZILLA_OFFICIAL=1
export BUILD_OFFICIAL=1 export BUILD_OFFICIAL=1
export MOZ_TELEMETRY_REPORTING=1 export MOZ_TELEMETRY_REPORTING=1
export MOZ_GOOGLE_API_KEY=%{_google_api_key} %if 0%{?suse_version} <= 1320
export CC=gcc-5
%endif
export CFLAGS="%{optflags} -fno-strict-aliasing" export CFLAGS="%{optflags} -fno-strict-aliasing"
# boo#986541: add -fno-delete-null-pointer-checks for gcc6 # boo#986541: add -fno-delete-null-pointer-checks for gcc6
%if 0%{?suse_version} > 1320 %if 0%{?suse_version} > 1320
@ -328,14 +322,7 @@ ac_add_options --prefix=%{_prefix}
ac_add_options --libdir=%{_libdir} ac_add_options --libdir=%{_libdir}
ac_add_options --includedir=%{_includedir} ac_add_options --includedir=%{_includedir}
ac_add_options --enable-release ac_add_options --enable-release
%if 0%{?firefox_use_rust}
ac_add_options --enable-rust
%endif
%if 0%{?firefox_use_gtk3}
ac_add_options --enable-default-toolkit=cairo-gtk3 ac_add_options --enable-default-toolkit=cairo-gtk3
%else
ac_add_options --enable-default-toolkit=cairo-gtk2
%endif
%if 0%{?build_hardened} %if 0%{?build_hardened}
ac_add_options --enable-pie ac_add_options --enable-pie
%endif %endif
@ -367,6 +354,8 @@ ac_add_options --enable-startup-notification
#ac_add_options --enable-chrome-format=jar #ac_add_options --enable-chrome-format=jar
ac_add_options --enable-update-channel=%{update_channel} ac_add_options --enable-update-channel=%{update_channel}
ac_add_options --with-mozilla-api-keyfile=%{SOURCE18} ac_add_options --with-mozilla-api-keyfile=%{SOURCE18}
ac_add_options --with-google-api-keyfile=%{SOURCE19}
ac_add_options --disable-stylo
%if %branding %if %branding
ac_add_options --enable-official-branding ac_add_options --enable-official-branding
%endif %endif
@ -471,10 +460,8 @@ s:%%ICON:%{progname}:g" \
mkdir -p %{buildroot}%{_datadir}/mime/packages mkdir -p %{buildroot}%{_datadir}/mime/packages
cp %{SOURCE8} %{buildroot}%{_datadir}/mime/packages/%{progname}.xml cp %{SOURCE8} %{buildroot}%{_datadir}/mime/packages/%{progname}.xml
# appdata # appdata
%if "%{update_channel}" != "aurora"
mkdir -p %{buildroot}%{_datadir}/appdata mkdir -p %{buildroot}%{_datadir}/appdata
cp %{SOURCE15} %{buildroot}%{_datadir}/appdata/%{desktop_file_name}.appdata.xml cp %{SOURCE15} %{buildroot}%{_datadir}/appdata/%{desktop_file_name}.appdata.xml
%endif
# install man-page # install man-page
mkdir -p %{buildroot}%{_mandir}/man1/ mkdir -p %{buildroot}%{_mandir}/man1/
cp %{SOURCE11} %{buildroot}%{_mandir}/man1/%{progname}.1 cp %{SOURCE11} %{buildroot}%{_mandir}/man1/%{progname}.1
@ -585,10 +572,8 @@ exit 0
%{progdir}/distribution/extensions/ %{progdir}/distribution/extensions/
%{progdir}/defaults/ %{progdir}/defaults/
%{progdir}/dictionaries/ %{progdir}/dictionaries/
%if 0%{?firefox_use_gtk3}
%dir %{progdir}/gtk2 %dir %{progdir}/gtk2
%{progdir}/gtk2/libmozgtk.so %{progdir}/gtk2/libmozgtk.so
%endif
%{progdir}/gmp-clearkey/ %{progdir}/gmp-clearkey/
%attr(755,root,root) %{progdir}/%{progname}.sh %attr(755,root,root) %{progdir}/%{progname}.sh
%{progdir}/firefox %{progdir}/firefox
@ -596,10 +581,11 @@ exit 0
%{progdir}/application.ini %{progdir}/application.ini
%{progdir}/chrome.manifest %{progdir}/chrome.manifest
%{progdir}/dependentlibs.list %{progdir}/dependentlibs.list
%{progdir}/icudt58l.dat %{progdir}/icudt59l.dat
%{progdir}/*.so %{progdir}/*.so
%{progdir}/omni.ja %{progdir}/omni.ja
%{progdir}/fonts/ %{progdir}/fonts/
%{progdir}/pingsender
%{progdir}/platform.ini %{progdir}/platform.ini
%{progdir}/plugin-container %{progdir}/plugin-container
%if %crashreporter %if %crashreporter
@ -621,9 +607,7 @@ exit 0
%{gnome_dir}/share/icons/hicolor/ %{gnome_dir}/share/icons/hicolor/
%{_bindir}/%{progname} %{_bindir}/%{progname}
%doc %{_mandir}/man1/%{progname}.1.gz %doc %{_mandir}/man1/%{progname}.1.gz
%if "%{update_channel}" != "aurora"
%{_datadir}/appdata/ %{_datadir}/appdata/
%endif
%files devel %files devel
%defattr(-,root,root) %defattr(-,root,root)

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:0c012241138a66dea1995518f245898791d94cb31d11b2472c889dbe464418bb oid sha256:4d06bd7c006d22e249f2a537935a7df6a27375790f35c5f5e54d52987cfaef05
size 28392 size 28376

View File

@ -5,10 +5,10 @@
# "moz_source_stamp": "c1de04f39fa956cfce83f6065b0e709369215ed5" # "moz_source_stamp": "c1de04f39fa956cfce83f6065b0e709369215ed5"
# http://ftp.mozilla.org/pub/firefox/candidates/48.0-candidates/build2/l10n_changesets.txt # http://ftp.mozilla.org/pub/firefox/candidates/48.0-candidates/build2/l10n_changesets.txt
CHANNEL="esr52" CHANNEL="release"
BRANCH="releases/mozilla-$CHANNEL" BRANCH="releases/mozilla-$CHANNEL"
RELEASE_TAG="FIREFOX_52_3_0esr_RELEASE" RELEASE_TAG="8fbf05f4b92125e081984f5e39b559b83e5cc729" # 56 build6
VERSION="52.3.0" VERSION="56.0"
# mozilla # mozilla
if [ -d mozilla ]; then if [ -d mozilla ]; then
@ -62,7 +62,7 @@ for locale in $(awk '{ print $1; }' mozilla/browser/locales/shipped-locales); do
echo "reading changeset information for $locale" echo "reading changeset information for $locale"
_changeset=$(grep ^$locale l10n_changesets.txt | awk '{ print $2; }') _changeset=$(grep ^$locale l10n_changesets.txt | awk '{ print $2; }')
echo "fetching $locale changeset $_changeset ..." echo "fetching $locale changeset $_changeset ..."
hg clone http://hg.mozilla.org/releases/l10n/mozilla-release/$locale l10n/$locale hg clone http://hg.mozilla.org/releases/l10n/mozilla-$CHANNEL/$locale l10n/$locale
[ "$RELEASE_TAG" == "default" ] || hg -R l10n/$locale up -C -r $_changeset [ "$RELEASE_TAG" == "default" ] || hg -R l10n/$locale up -C -r $_changeset
;; ;;
esac esac

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:81cda681a593c1737ff6a448e73288beab6e1499f638002f5cfaa6726896420b
size 223189032

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:59eae64165c9d5917e4c934862a956fcc7aad424d4afd056e3941a210d0735e3
size 271865016

View File

@ -1,11 +1,11 @@
# HG changeset patch # HG changeset patch
# Parent e0751ad74e835e80041a61ea00c2a63bf6fbe2de # Parent e0751ad74e835e80041a61ea00c2a63bf6fbe2de
# Parent 2bffb52e07b587a6c755d67c6fc971fed6509783 # Parent 6309c3625e39216f9cf5a7a35cbf6932adfabc1d
diff --git a/browser/branding/branding-common.mozbuild b/browser/branding/branding-common.mozbuild diff --git a/browser/branding/branding-common.mozbuild b/browser/branding/branding-common.mozbuild
--- a/browser/branding/branding-common.mozbuild --- a/browser/branding/branding-common.mozbuild
+++ b/browser/branding/branding-common.mozbuild +++ b/browser/branding/branding-common.mozbuild
@@ -34,18 +34,24 @@ def FirefoxBranding(): @@ -41,18 +41,24 @@ def FirefoxBranding():
'disk.icns', 'disk.icns',
'document.icns', 'document.icns',
'dsstore', 'dsstore',
@ -33,8 +33,8 @@ diff --git a/browser/branding/branding-common.mozbuild b/browser/branding/brandi
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
--- a/browser/installer/package-manifest.in --- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in
@@ -650,18 +650,21 @@ @@ -599,18 +599,21 @@
@RESPATH@/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/icon.png @RESPATH@/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/chrome.manifest
@RESPATH@/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf @RESPATH@/browser/extensions/{972ce4c6-7e08-4474-a285-3208198ce6fd}/install.rdf
@RESPATH@/chrome/toolkit@JAREXT@ @RESPATH@/chrome/toolkit@JAREXT@
@RESPATH@/chrome/toolkit.manifest @RESPATH@/chrome/toolkit.manifest

View File

@ -1,11 +1,11 @@
# HG changeset patch # HG changeset patch
# Parent 1c4e33861cfcffe5a189802cf97957b0701260db # Parent 05209af7fdfec897f5f574c691184ba27049b0ff
diff --git a/browser/base/content/browser-kde.xul b/browser/base/content/browser-kde.xul diff --git a/browser/base/content/browser-kde.xul b/browser/base/content/browser-kde.xul
new file mode 100644 new file mode 100644
--- /dev/null --- /dev/null
+++ b/browser/base/content/browser-kde.xul +++ b/browser/base/content/browser-kde.xul
@@ -0,0 +1,1134 @@ @@ -0,0 +1,1320 @@
+#filter substitution +#filter substitution
+<?xml version="1.0"?> +<?xml version="1.0"?>
+# -*- Mode: HTML -*- +# -*- Mode: HTML -*-
@ -17,11 +17,9 @@ new file mode 100644
+<?xml-stylesheet href="chrome://browser/content/browser.css" type="text/css"?> +<?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/places/places.css" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/content/usercontext/usercontext.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/controlcenter/panel.css" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/customizableui/panelUI.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/" type="text/css"?>
+<?xml-stylesheet href="chrome://browser/skin/browser-lightweightTheme.css" type="text/css"?>
+ +
+<?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?> +<?xul-overlay href="chrome://global/content/editMenuOverlay.xul"?>
+<?xul-overlay href="chrome://browser/content/baseMenuOverlay.xul"?> +<?xul-overlay href="chrome://browser/content/baseMenuOverlay.xul"?>
@ -35,6 +33,7 @@ new file mode 100644
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns:html="http://www.w3.org/1999/xhtml" + xmlns:html="http://www.w3.org/1999/xhtml"
+ xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" + xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
+ onload="gBrowserInit.onLoad()" onunload="gBrowserInit.onUnload()" onclose="return WindowIsClosing();" + onload="gBrowserInit.onLoad()" onunload="gBrowserInit.onUnload()" onclose="return WindowIsClosing();"
+ title="&mainWindow.title;" + title="&mainWindow.title;"
@ -61,7 +60,6 @@ new file mode 100644
+#endif +#endif
+ titlemenuseparator="&mainWindow.titlemodifiermenuseparator;" + titlemenuseparator="&mainWindow.titlemodifiermenuseparator;"
+ lightweightthemes="true" + lightweightthemes="true"
+ lightweightthemesfooter="browser-bottombox"
+ windowtype="navigator:browser" + windowtype="navigator:browser"
+ macanimationtype="document" + macanimationtype="document"
+ screenX="4" screenY="4" + screenX="4" screenY="4"
@ -74,14 +72,9 @@ new file mode 100644
+# wishes to include *must* go into the global-scripts.inc file +# wishes to include *must* go into the global-scripts.inc file
+# so that they can be shared by macBrowserOverlay.xul. +# so that they can be shared by macBrowserOverlay.xul.
+#include global-scripts.inc +#include global-scripts.inc
+<script type="application/javascript" src="chrome://browser/content/nsContextMenu.js"/>
+ +
+<script type="application/javascript" src="chrome://global/content/contentAreaUtils.js"/> +<script type="application/javascript" src="chrome://global/content/contentAreaUtils.js"/>
+ +
+<script type="application/javascript" src="chrome://browser/content/downloads/downloads.js"/>
+<script type="application/javascript" src="chrome://browser/content/downloads/indicator.js"/>
+<script type="application/javascript" src="chrome://browser/content/places/editBookmarkOverlay.js"/>
+
+# All sets except for popupsets (commands, keys, stringbundles and broadcasters) *must* go into the +# All sets except for popupsets (commands, keys, stringbundles and broadcasters) *must* go into the
+# browser-sets.inc file for sharing with hiddenWindow.xul. +# browser-sets.inc file for sharing with hiddenWindow.xul.
+#define FULL_BROWSER_WINDOW +#define FULL_BROWSER_WINDOW
@ -112,11 +105,11 @@ new file mode 100644
+ hidden="true" + hidden="true"
+ oncommand="gBrowser.openNonRemoteWindow(TabContextMenu.contextTab);"/> + oncommand="gBrowser.openNonRemoteWindow(TabContextMenu.contextTab);"/>
+#endif +#endif
+ <menuseparator id="context_sendTabToDevice_separator" hidden="true"/> + <menuseparator id="context_sendTabToDevice_separator"/>
+ <menu id="context_sendTabToDevice" label="&sendTabToDevice.label;" + <menu id="context_sendTabToDevice" label="&sendTabToDevice.label;"
+ accesskey="&sendTabToDevice.accesskey;" hidden="true"> + accesskey="&sendTabToDevice.accesskey;">
+ <menupopup id="context_sendTabToDevicePopupMenu" + <menupopup id="context_sendTabToDevicePopupMenu"
+ onpopupshowing="gFxAccounts.populateSendTabToDevicesMenu(event.target, TabContextMenu.contextTab.linkedBrowser.currentURI.spec, TabContextMenu.contextTab.linkedBrowser.contentTitle);"/> + onpopupshowing="gSync.populateSendTabToDevicesMenu(event.target, TabContextMenu.contextTab.linkedBrowser.currentURI.spec, TabContextMenu.contextTab.linkedBrowser.contentTitle);"/>
+ </menu> + </menu>
+ <menuseparator/> + <menuseparator/>
+ <menuitem id="context_reloadAllTabs" label="&reloadAllTabs.label;" accesskey="&reloadAllTabs.accesskey;" + <menuitem id="context_reloadAllTabs" label="&reloadAllTabs.label;" accesskey="&reloadAllTabs.accesskey;"
@ -155,7 +148,8 @@ new file mode 100644
+ noautofocus="true" + noautofocus="true"
+ hidden="true" + hidden="true"
+ overflowpadding="4" + overflowpadding="4"
+ norolluponanchor="true" /> + norolluponanchor="true"
+ nomaxresults="true" />
+ +
+ <!-- for search with one-off buttons --> + <!-- for search with one-off buttons -->
+ <panel type="autocomplete" id="PopupSearchAutoComplete" noautofocus="true" hidden="true"/> + <panel type="autocomplete" id="PopupSearchAutoComplete" noautofocus="true" hidden="true"/>
@ -174,9 +168,10 @@ new file mode 100644
+ hidden="true" + hidden="true"
+ orient="vertical" + orient="vertical"
+ noautofocus="true" + noautofocus="true"
+ noautohide="true"
+ consumeoutsideclicks="false" + consumeoutsideclicks="false"
+ level="parent"> + level="parent"
+ <iframe id="dateTimePopupFrame"/> + tabspecific="true">
+ </panel> + </panel>
+ +
+ <!-- for select dropdowns. The menupopup is what shows the list of options, + <!-- for select dropdowns. The menupopup is what shows the list of options,
@ -186,6 +181,7 @@ new file mode 100644
+ <menulist popuponly="true" id="ContentSelectDropdown" hidden="true"> + <menulist popuponly="true" id="ContentSelectDropdown" hidden="true">
+ <menupopup rolluponmousewheel="true" + <menupopup rolluponmousewheel="true"
+ activateontab="true" position="after_start" + activateontab="true" position="after_start"
+ level="parent"
+#ifdef XP_WIN +#ifdef XP_WIN
+ consumeoutsideclicks="false" ignorekeys="shortcuts" + consumeoutsideclicks="false" ignorekeys="shortcuts"
+#endif +#endif
@ -296,10 +292,53 @@ new file mode 100644
+ </hbox> + </hbox>
+ <hbox id="share-container" flex="1"/> + <hbox id="share-container" flex="1"/>
+ </panel> + </panel>
+ <panel id="sidebarMenu-popup"
+ class="cui-widget-panel"
+ role="group"
+ type="arrow"
+ hidden="true"
+ flip="slide"
+ orient="vertical"
+ position="bottomcenter topleft">
+ <toolbarbutton id="sidebar-switcher-bookmarks"
+ class="subviewbutton subviewbutton-iconic"
+ key="viewBookmarksSidebarKb"
+ observes="viewBookmarksSidebar"
+ oncommand="SidebarUI.show('viewBookmarksSidebar');">
+ <observes element="viewBookmarksSidebar" attribute="checked"/>
+ </toolbarbutton>
+ <toolbarbutton id="sidebar-switcher-history"
+ label="&historyButton.label;"
+ class="subviewbutton subviewbutton-iconic"
+ key="key_gotoHistory"
+ observes="viewHistorySidebar"
+ oncommand="SidebarUI.show('viewHistorySidebar');">
+ <observes element="viewHistorySidebar" attribute="checked"/>
+ </toolbarbutton>
+ <toolbarbutton id="sidebar-switcher-tabs"
+ label="&syncedTabs.sidebar.label;"
+ class="subviewbutton subviewbutton-iconic"
+ observes="viewTabsSidebar"
+ oncommand="SidebarUI.show('viewTabsSidebar');">
+ <observes element="viewTabsSidebar" attribute="checked"/>
+ </toolbarbutton>
+ <toolbarseparator/>
+ <vbox id="sidebar-extensions"></vbox>
+ <toolbarseparator/>
+ <toolbarbutton id="sidebar-reverse-position"
+ class="subviewbutton"
+ oncommand="SidebarUI.reversePosition()"/>
+ <toolbarseparator/>
+ <toolbarbutton label="&sidebarMenuClose.label;"
+ class="subviewbutton"
+ oncommand="SidebarUI.hide()"/>
+ </panel>
+ +
+ <menupopup id="toolbar-context-menu" + <menupopup id="toolbar-context-menu"
+ onpopupshowing="onViewToolbarsPopupShowing(event, document.getElementById('viewToolbarsMenuSeparator'));"> + onpopupshowing="onViewToolbarsPopupShowing(event, document.getElementById('viewToolbarsMenuSeparator'));">
+ <menuitem oncommand="gCustomizeMode.addToPanel(document.popupNode)" + <menuitem oncommand="gCustomizeMode.addToPanel(document.popupNode)"
+ photonaccesskey="&customizeMenu.pinToOverflowMenu.accesskey;"
+ photonlabel="&customizeMenu.pinToOverflowMenu.label;"
+ accesskey="&customizeMenu.moveToPanel.accesskey;" + accesskey="&customizeMenu.moveToPanel.accesskey;"
+ label="&customizeMenu.moveToPanel.label;" + label="&customizeMenu.moveToPanel.label;"
+ contexttype="toolbaritem" + contexttype="toolbaritem"
@ -411,6 +450,42 @@ new file mode 100644
+ </hbox> + </hbox>
+ </panel> + </panel>
+ +
+#ifdef MOZ_PHOTON_THEME
+ <panel id="pageActionPanel"
+ class="cui-widget-panel"
+ role="group"
+ type="arrow"
+ hidden="true"
+ flip="slide"
+ position="bottomcenter topright"
+ tabspecific="true"
+ noautofocus="true"
+ context="pageActionPanelContextMenu"
+ oncontextmenu="BrowserPageActions.onContextMenu(event);"
+ copyURL-title="&copyURLCmd.label;"
+ emailLink-title="&emailPageCmd.label;"
+ sendToDevice-title="&sendToDevice.label2;"
+ sendToDevice-notReadyTitle="&sendToDevice.syncNotReady.label;">
+ <photonpanelmultiview id="pageActionPanelMultiView"
+ mainViewId="pageActionPanelMainView"
+ viewCacheId="appMenu-viewCache">
+ <panelview id="pageActionPanelMainView"
+ class="PanelUI-subView">
+ <vbox class="panel-subview-body"/>
+ </panelview>
+ </photonpanelmultiview>
+ </panel>
+
+ <menupopup id="pageActionPanelContextMenu"
+ onpopupshowing="BrowserPageActions.onContextMenuShowing(event, this);">
+ <menuitem id="pageActionPanelContextMenu-toggleUrlbar"
+ add-label="&pageAction.addToUrlbar.label;"
+ remove-label="&pageAction.removeFromUrlbar.label;"
+ label="&pageAction.addToUrlbar.label;"
+ oncommand="BrowserPageActions.toggleShownInUrlbarForContextAction();"/>
+ </menupopup>
+#endif
+
+ <!-- Bookmarks and history tooltip --> + <!-- Bookmarks and history tooltip -->
+ <tooltip id="bhTooltip"/> + <tooltip id="bhTooltip"/>
+ +
@ -483,6 +558,13 @@ new file mode 100644
+ accesskey="&syncedTabs.context.copy.accesskey;" + accesskey="&syncedTabs.context.copy.accesskey;"
+ id="syncedTabsCopySelected"/> + id="syncedTabsCopySelected"/>
+ <menuseparator/> + <menuseparator/>
+ <menuitem label="&syncedTabs.context.openAllInTabs.label;"
+ accesskey="&syncedTabs.context.openAllInTabs.accesskey;"
+ id="syncedTabsOpenAllInTabs"/>
+ <menuitem label="&syncedTabs.context.managedevices.label;"
+ accesskey="&syncedTabs.context.managedevices.accesskey;"
+ id="syncedTabsManageDevices"
+ oncommand="gSync.openDevicesManagementPage('syncedtabs-sidebar');"/>
+ <menuitem label="&syncSyncNowItem.label;" + <menuitem label="&syncSyncNowItem.label;"
+ accesskey="&syncSyncNowItem.accesskey;" + accesskey="&syncSyncNowItem.accesskey;"
+ id="syncedTabsRefresh"/> + id="syncedTabsRefresh"/>
@ -515,6 +597,7 @@ new file mode 100644
+ id="syncedTabsRefreshFilter"/> + id="syncedTabsRefreshFilter"/>
+ </menupopup> + </menupopup>
+ </popupset> + </popupset>
+ <box id="appMenu-viewCache" hidden="true"/>
+ +
+#ifdef CAN_DRAW_IN_TITLEBAR +#ifdef CAN_DRAW_IN_TITLEBAR
+<vbox id="titlebar"> +<vbox id="titlebar">
@ -554,10 +637,8 @@ new file mode 100644
+#ifdef MENUBAR_CAN_AUTOHIDE +#ifdef MENUBAR_CAN_AUTOHIDE
+ toolbarname="&menubarCmd.label;" + toolbarname="&menubarCmd.label;"
+ accesskey="&menubarCmd.accesskey;" + accesskey="&menubarCmd.accesskey;"
+#if defined(MOZ_WIDGET_GTK)
+ autohide="true" + autohide="true"
+#endif +#endif
+#endif
+ context="toolbar-context-menu"> + context="toolbar-context-menu">
+ <toolbaritem id="menubar-items" align="center"> + <toolbaritem id="menubar-items" align="center">
+# The entire main menubar is placed into browser-menubar.inc, so that it can be shared by +# The entire main menubar is placed into browser-menubar.inc, so that it can be shared by
@ -620,7 +701,6 @@ new file mode 100644
+ <menupopup id="alltabs-popup" + <menupopup id="alltabs-popup"
+ position="after_end"> + position="after_end">
+ <menuitem id="alltabs_undoCloseTab" + <menuitem id="alltabs_undoCloseTab"
+ class="menuitem-iconic"
+ key="key_undoCloseTab" + key="key_undoCloseTab"
+ label="&undoCloseTab.label;" + label="&undoCloseTab.label;"
+ observes="History:UndoCloseTab"/> + observes="History:UndoCloseTab"/>
@ -668,18 +748,51 @@ new file mode 100644
+ removable="false" + removable="false"
+ class="chromeclass-location" overflows="false"> + class="chromeclass-location" overflows="false">
+ <toolbarbutton id="back-button" class="toolbarbutton-1 chromeclass-toolbar-additional" + <toolbarbutton id="back-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
+ removable="false" overflows="false"
+ label="&backCmd.label;" + label="&backCmd.label;"
+ command="Browser:BackOrBackDuplicate" + command="Browser:BackOrBackDuplicate"
+ onclick="checkForMiddleClick(this, event);" + onclick="checkForMiddleClick(this, event);"
+ tooltip="back-button-tooltip" + tooltip="back-button-tooltip"
+ context="backForwardMenu"/> + context="backForwardMenu"/>
+#ifdef MOZ_PHOTON_THEME
+ <toolbarbutton id="forward-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
+ removable="false" overflows="false"
+ label="&forwardCmd.label;"
+ command="Browser:ForwardOrForwardDuplicate"
+ onclick="checkForMiddleClick(this, event);"
+ tooltip="forward-button-tooltip"
+ context="backForwardMenu"/>
+ <toolbaritem id="stop-reload-button"
+ removable="false" overflows="false"
+ class="chromeclass-toolbar-additional">
+ <toolbarbutton id="reload-button"
+ class="toolbarbutton-1"
+ command="Browser:ReloadOrDuplicate"
+ onclick="checkForMiddleClick(this, event);"
+ tooltip="dynamic-shortcut-tooltip">
+ <box class="toolbarbutton-animatable-box">
+ <image class="toolbarbutton-animatable-image"/>
+ </box>
+ </toolbarbutton>
+ <toolbarbutton id="stop-button"
+ class="toolbarbutton-1"
+ command="Browser:Stop"
+ tooltip="dynamic-shortcut-tooltip">
+ <box class="toolbarbutton-animatable-box">
+ <image class="toolbarbutton-animatable-image"/>
+ </box>
+ </toolbarbutton>
+ </toolbaritem>
+#endif
+ <hbox id="urlbar-wrapper" flex="1"> + <hbox id="urlbar-wrapper" flex="1">
+#ifndef MOZ_PHOTON_THEME
+ <toolbarbutton id="forward-button" class="toolbarbutton-1 chromeclass-toolbar-additional" + <toolbarbutton id="forward-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
+ label="&forwardCmd.label;" + label="&forwardCmd.label;"
+ command="Browser:ForwardOrForwardDuplicate" + command="Browser:ForwardOrForwardDuplicate"
+ onclick="checkForMiddleClick(this, event);" + onclick="checkForMiddleClick(this, event);"
+ tooltip="forward-button-tooltip" + tooltip="forward-button-tooltip"
+ context="backForwardMenu"/> + context="backForwardMenu"/>
+#endif
+ <textbox id="urlbar" flex="1" + <textbox id="urlbar" flex="1"
+ placeholder="&urlbar.placeholder2;" + placeholder="&urlbar.placeholder2;"
+ type="autocomplete" + type="autocomplete"
@ -692,7 +805,6 @@ new file mode 100644
+ showcommentcolumn="true" + showcommentcolumn="true"
+ showimagecolumn="true" + showimagecolumn="true"
+ enablehistory="true" + enablehistory="true"
+ maxrows="10"
+ newlines="stripsurroundingwhitespace" + newlines="stripsurroundingwhitespace"
+ ontextentered="this.handleCommand(param);" + ontextentered="this.handleCommand(param);"
+ ontextreverted="return this.handleRevert();" + ontextreverted="return this.handleRevert();"
@ -709,6 +821,7 @@ new file mode 100644
+ consumeanchor="identity-box" + consumeanchor="identity-box"
+ onclick="PageProxyClickHandler(event);"/> + onclick="PageProxyClickHandler(event);"/>
+ <image id="sharing-icon" mousethrough="always"/> + <image id="sharing-icon" mousethrough="always"/>
+ <image id="tracking-protection-icon"/>
+ <box id="blocked-permissions-container" align="center"> + <box id="blocked-permissions-container" align="center">
+ <image data-permission-id="geo" class="blocked-permission-icon geo-icon" role="button" + <image data-permission-id="geo" class="blocked-permission-icon geo-icon" role="button"
+ tooltiptext="&urlbar.geolocationBlocked.tooltip;"/> + tooltiptext="&urlbar.geolocationBlocked.tooltip;"/>
@ -722,11 +835,13 @@ new file mode 100644
+ tooltiptext="&urlbar.microphoneBlocked.tooltip;"/> + tooltiptext="&urlbar.microphoneBlocked.tooltip;"/>
+ <image data-permission-id="screen" class="blocked-permission-icon screen-icon" role="button" + <image data-permission-id="screen" class="blocked-permission-icon screen-icon" role="button"
+ tooltiptext="&urlbar.screenBlocked.tooltip;"/> + tooltiptext="&urlbar.screenBlocked.tooltip;"/>
+ <image data-permission-id="persistent-storage" class="blocked-permission-icon persistent-storage-icon" role="button"
+ tooltiptext="&urlbar.persistentStorageBlocked.tooltip;"/>
+ </box> + </box>
+ <box id="notification-popup-box" + <box id="notification-popup-box"
+ hidden="true" + hidden="true"
+ onmouseover="document.getElementById('identity-icon').classList.add('no-hover');" + onmouseover="document.getElementById('identity-box').classList.add('no-hover');"
+ onmouseout="document.getElementById('identity-icon').classList.remove('no-hover');" + onmouseout="document.getElementById('identity-box').classList.remove('no-hover');"
+ align="center"> + align="center">
+ <image id="default-notification-icon" class="notification-anchor-icon" role="button" + <image id="default-notification-icon" class="notification-anchor-icon" role="button"
+ tooltiptext="&urlbar.defaultNotificationAnchor.tooltip;"/> + tooltiptext="&urlbar.defaultNotificationAnchor.tooltip;"/>
@ -738,8 +853,11 @@ new file mode 100644
+ tooltiptext="&urlbar.indexedDBNotificationAnchor.tooltip;"/> + tooltiptext="&urlbar.indexedDBNotificationAnchor.tooltip;"/>
+ <image id="password-notification-icon" class="notification-anchor-icon login-icon" role="button" + <image id="password-notification-icon" class="notification-anchor-icon login-icon" role="button"
+ tooltiptext="&urlbar.passwordNotificationAnchor.tooltip;"/> + tooltiptext="&urlbar.passwordNotificationAnchor.tooltip;"/>
+ <image id="plugins-notification-icon" class="notification-anchor-icon plugin-icon" role="button" + <stack id="plugins-notification-icon" class="notification-anchor-icon" role="button" align="center"
+ tooltiptext="&urlbar.pluginsNotificationAnchor.tooltip;"/> + tooltiptext="&urlbar.pluginsNotificationAnchor.tooltip;">
+ <image class="plugin-icon" />
+ <image id="plugin-icon-badge" />
+ </stack>
+ <image id="web-notifications-notification-icon" class="notification-anchor-icon desktop-notification-icon" role="button" + <image id="web-notifications-notification-icon" class="notification-anchor-icon desktop-notification-icon" role="button"
+ tooltiptext="&urlbar.webNotificationAnchor.tooltip;"/> + tooltiptext="&urlbar.webNotificationAnchor.tooltip;"/>
+ <image id="webRTC-shareDevices-notification-icon" class="notification-anchor-icon camera-icon" role="button" + <image id="webRTC-shareDevices-notification-icon" class="notification-anchor-icon camera-icon" role="button"
@ -756,9 +874,13 @@ new file mode 100644
+ tooltiptext="&urlbar.translatedNotificationAnchor.tooltip;"/> + tooltiptext="&urlbar.translatedNotificationAnchor.tooltip;"/>
+ <image id="eme-notification-icon" class="notification-anchor-icon drm-icon" role="button" + <image id="eme-notification-icon" class="notification-anchor-icon drm-icon" role="button"
+ tooltiptext="&urlbar.emeNotificationAnchor.tooltip;"/> + tooltiptext="&urlbar.emeNotificationAnchor.tooltip;"/>
+ <image id="persistent-storage-notification-icon" class="notification-anchor-icon persistent-storage-icon" role="button"
+ tooltiptext="&urlbar.persistentStorageNotificationAnchor.tooltip;"/>
+ </box> + </box>
+ <image id="tracking-protection-icon"/>
+ <image id="connection-icon"/> + <image id="connection-icon"/>
+ <image id="extension-icon"/>
+ <image id="remote-control-icon"
+ tooltiptext="&urlbar.remoteControlNotificationAnchor.tooltip;"/>
+ <hbox id="identity-icon-labels"> + <hbox id="identity-icon-labels">
+ <label id="identity-icon-label" class="plain" flex="1"/> + <label id="identity-icon-label" class="plain" flex="1"/>
+ <label id="identity-icon-country-label" class="plain"/> + <label id="identity-icon-country-label" class="plain"/>
@ -780,26 +902,46 @@ new file mode 100644
+ onclick="ReaderParent.buttonClick(event);"/> + onclick="ReaderParent.buttonClick(event);"/>
+ <toolbarbutton id="urlbar-zoom-button" + <toolbarbutton id="urlbar-zoom-button"
+ onclick="FullZoom.reset();" + onclick="FullZoom.reset();"
+ tooltiptext="&urlbar.zoomReset.tooltip;" + tooltip="dynamic-shortcut-tooltip"
+ hidden="true"/> + hidden="true"/>
+#ifdef MOZ_PHOTON_THEME
+ <image id="pageActionButton"
+ class="urlbar-icon"
+ tooltiptext="&pageActionButton.tooltip;"
+ onclick="BrowserPageActions.mainButtonClicked(event);"/>
+ <hbox id="star-button-box" hidden="true">
+ <image id="star-button"
+ class="urlbar-icon"
+ onclick="BookmarkingUI.onStarCommand(event);">
+ <observes element="bookmarkThisPageBroadcaster" attribute="starred"/>
+ <observes element="bookmarkThisPageBroadcaster" attribute="tooltiptext"/>
+ </image>
+ <hbox id="star-button-animatable-box">
+ <image id="star-button-animatable-image"
+ onclick="BookmarkingUI.onStarCommand(event);"/>
+ </hbox>
+ </hbox>
+#endif
+ </hbox> + </hbox>
+ <hbox id="userContext-icons" hidden="true"> + <hbox id="userContext-icons" hidden="true">
+ <label id="userContext-label"/> + <label id="userContext-label"/>
+ <image id="userContext-indicator"/> + <image id="userContext-indicator"/>
+ </hbox> + </hbox>
+#ifndef MOZ_PHOTON_THEME
+ <toolbarbutton id="urlbar-go-button" + <toolbarbutton id="urlbar-go-button"
+ class="chromeclass-toolbar-additional" + class="chromeclass-toolbar-additional"
+ onclick="gURLBar.handleCommand(event);" + onclick="gURLBar.handleCommand(event);"
+ tooltiptext="&goEndCap.tooltip;"/> + tooltiptext="&goEndCap.tooltip;"/>
+ <toolbarbutton id="urlbar-reload-button" + <toolbarbutton id="reload-button"
+ class="chromeclass-toolbar-additional" + class="chromeclass-toolbar-additional"
+ command="Browser:ReloadOrDuplicate" + command="Browser:ReloadOrDuplicate"
+ onclick="checkForMiddleClick(this, event);" + onclick="checkForMiddleClick(this, event);"
+ tooltiptext="&reloadButton.tooltip;"/> + tooltip="dynamic-shortcut-tooltip"/>
+ <toolbarbutton id="urlbar-stop-button" + <toolbarbutton id="stop-button"
+ class="chromeclass-toolbar-additional" + class="chromeclass-toolbar-additional"
+ command="Browser:Stop" + command="Browser:Stop"
+ tooltiptext="&stopButton.tooltip;"/> + tooltip="dynamic-shortcut-tooltip"/>
+#endif
+ </textbox> + </textbox>
+ </hbox> + </hbox>
+ </toolbaritem> + </toolbaritem>
@ -814,7 +956,11 @@ new file mode 100644
+ <toolbarbutton id="bookmarks-menu-button" + <toolbarbutton id="bookmarks-menu-button"
+ class="toolbarbutton-1 chromeclass-toolbar-additional" + class="toolbarbutton-1 chromeclass-toolbar-additional"
+ removable="true" + removable="true"
+#ifdef MOZ_PHOTON_THEME
+ type="menu"
+#else
+ type="menu-button" + type="menu-button"
+#endif
+ label="&bookmarksMenuButton.label;" + label="&bookmarksMenuButton.label;"
+ tooltip="dynamic-shortcut-tooltip" + tooltip="dynamic-shortcut-tooltip"
+ anchor="dropmarker" + anchor="dropmarker"
@ -831,7 +977,7 @@ new file mode 100644
+ placespopup="true" + placespopup="true"
+ context="placesContext" + context="placesContext"
+ openInTabs="children" + openInTabs="children"
+ oncommand="BookmarksEventHandler.onCommand(event, this.parentNode._placesView);" + oncommand="BookmarksEventHandler.onCommand(event);"
+ onclick="BookmarksEventHandler.onClick(event, this.parentNode._placesView);" + onclick="BookmarksEventHandler.onClick(event, this.parentNode._placesView);"
+ onpopupshowing="BookmarkingUI.onPopupShowing(event); + onpopupshowing="BookmarkingUI.onPopupShowing(event);
+ BookmarkingUI.attachPlacesView(event, this);" + BookmarkingUI.attachPlacesView(event, this);"
@ -886,6 +1032,19 @@ new file mode 100644
+ new PlacesMenu(event, 'place:folder=UNFILED_BOOKMARKS', + new PlacesMenu(event, 'place:folder=UNFILED_BOOKMARKS',
+ PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);"/> + PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);"/>
+ </menu> + </menu>
+ <menu id="BMB_mobileBookmarks"
+ class="menu-iconic bookmark-item subviewbutton"
+ label="&bookmarksMenuButton.mobile.label;"
+ hidden="true"
+ container="true">
+ <menupopup id="BMB_mobileBookmarksPopup"
+ placespopup="true"
+ context="placesContext"
+ onpopupshowing="if (!this.parentNode._placesView)
+ new PlacesMenu(event, 'place:folder=MOBILE_BOOKMARKS',
+ PlacesUIUtils.getViewForNode(this.parentNode.parentNode).options);"/>
+ </menu>
+
+ <menuseparator/> + <menuseparator/>
+ <!-- Bookmarks menu items will go here --> + <!-- Bookmarks menu items will go here -->
+ <menuitem id="BMB_bookmarksShowAll" + <menuitem id="BMB_bookmarksShowAll"
@ -927,7 +1086,13 @@ new file mode 100644
+ <toolbarbutton id="nav-bar-overflow-button" + <toolbarbutton id="nav-bar-overflow-button"
+ class="toolbarbutton-1 chromeclass-toolbar-additional overflow-button" + class="toolbarbutton-1 chromeclass-toolbar-additional overflow-button"
+ skipintoolbarset="true" + skipintoolbarset="true"
+ tooltiptext="&navbarOverflow.label;"/> + tooltiptext="&navbarOverflow.label;">
+#ifdef MOZ_PHOTON_ANIMATIONS
+ <box class="toolbarbutton-animatable-box">
+ <image class="toolbarbutton-animatable-image"/>
+ </box>
+#endif
+ </toolbarbutton>
+ +
+ <toolbaritem id="PanelUI-button" + <toolbaritem id="PanelUI-button"
+ class="chromeclass-toolbar-additional" + class="chromeclass-toolbar-additional"
@ -982,7 +1147,7 @@ new file mode 100644
+ id="PlacesToolbar" + id="PlacesToolbar"
+ context="placesContext" + context="placesContext"
+ onclick="BookmarksEventHandler.onClick(event, this._placesView);" + onclick="BookmarksEventHandler.onClick(event, this._placesView);"
+ oncommand="BookmarksEventHandler.onCommand(event, this._placesView);" + oncommand="BookmarksEventHandler.onCommand(event);"
+ tooltip="bhTooltip" + tooltip="bhTooltip"
+ popupsinherittooltip="true"> + popupsinherittooltip="true">
+ <hbox flex="1"> + <hbox flex="1">
@ -1037,7 +1202,7 @@ new file mode 100644
+ +
+ <toolbarbutton id="new-window-button" class="toolbarbutton-1 chromeclass-toolbar-additional" + <toolbarbutton id="new-window-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
+ label="&newNavigatorCmd.label;" + label="&newNavigatorCmd.label;"
+ command="key_newNavigator" + command="cmd_newNavigator"
+ tooltip="dynamic-shortcut-tooltip" + tooltip="dynamic-shortcut-tooltip"
+ ondrop="newWindowButtonObserver.onDrop(event)" + ondrop="newWindowButtonObserver.onDrop(event)"
+ ondragover="newWindowButtonObserver.onDragOver(event)" + ondragover="newWindowButtonObserver.onDragOver(event)"
@ -1049,6 +1214,16 @@ new file mode 100644
+ type="checkbox" + type="checkbox"
+ label="&fullScreenCmd.label;" + label="&fullScreenCmd.label;"
+ tooltip="dynamic-shortcut-tooltip"/> + tooltip="dynamic-shortcut-tooltip"/>
+#ifdef MOZ_PHOTON_THEME
+ <toolbarbutton id="library-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
+ oncommand="PanelUI.showSubView('appMenu-libraryView', this, null, event);"
+ closemenu="none"
+ label="&places.library.title;">
+ <box class="toolbarbutton-animatable-box">
+ <image class="toolbarbutton-animatable-image"/>
+ </box>
+ </toolbarbutton>
+#endif
+ </toolbarpalette> + </toolbarpalette>
+ </toolbox> + </toolbox>
+ +
@ -1059,9 +1234,18 @@ new file mode 100644
+ <vbox id="browser-border-start" hidden="true" layer="true"/> + <vbox id="browser-border-start" hidden="true" layer="true"/>
+ <vbox id="sidebar-box" hidden="true" class="chromeclass-extrachrome"> + <vbox id="sidebar-box" hidden="true" class="chromeclass-extrachrome">
+ <sidebarheader id="sidebar-header" align="center"> + <sidebarheader id="sidebar-header" align="center">
+ <label id="sidebar-title" persist="value" flex="1" crop="end" control="sidebar"/> + <toolbarbutton id="sidebar-switcher-target" flex="1" class="tabbable">
+ <image id="sidebar-icon" consumeanchor="sidebar-switcher-target"/>
+ <label id="sidebar-title" persist="value" crop="end" flex="1" control="sidebar"/>
+ <image id="sidebar-switcher-arrow"/>
+ </toolbarbutton>
+ <image id="sidebar-throbber"/> + <image id="sidebar-throbber"/>
+ <toolbarbutton class="close-icon tabbable" tooltiptext="&sidebarCloseButton.tooltip;" oncommand="SidebarUI.hide();"/> +# To ensure the button label's intrinsic width doesn't expand the sidebar
+# if the label is long, the button needs flex=1.
+# To ensure the button doesn't expand unnecessarily for short labels, the
+# spacer should significantly out-flex the button.
+ <spacer flex="1000"/>
+ <toolbarbutton id="sidebar-close" class="tabbable" tooltiptext="&sidebarCloseButton.tooltip;" oncommand="SidebarUI.hide();"/>
+ </sidebarheader> + </sidebarheader>
+ <browser id="sidebar" flex="1" autoscroll="false" disablehistory="true" disablefullscreen="true" + <browser id="sidebar" flex="1" autoscroll="false" disablehistory="true" disablefullscreen="true"
+ style="min-width: 14em; width: 18em; max-width: 36em;" tooltip="aHTMLTooltip"/> + style="min-width: 14em; width: 18em; max-width: 36em;" tooltip="aHTMLTooltip"/>
@ -1119,6 +1303,7 @@ new file mode 100644
+ +
+ <svg:svg height="0"> + <svg:svg height="0">
+#include tab-shape.inc.svg +#include tab-shape.inc.svg
+#ifndef MOZ_PHOTON_THEME
+ <svg:clipPath id="urlbar-back-button-clip-path"> + <svg:clipPath id="urlbar-back-button-clip-path">
+#ifndef XP_MACOSX +#ifndef XP_MACOSX
+ <svg:path d="M -9,-4 l 0,1 a 15 15 0 0,1 0,30 l 0,1 l 10000,0 l 0,-32 l -10000,0 z" /> + <svg:path d="M -9,-4 l 0,1 a 15 15 0 0,1 0,30 l 0,1 l 10000,0 l 0,-32 l -10000,0 z" />
@ -1131,6 +1316,7 @@ new file mode 100644
+ <svg:path d="M -6,-2 l 0,1 a 15 15 0 0,1 0,30 l 0,1 l 10000,0 l 0,-32 l -10000,0 z" /> + <svg:path d="M -6,-2 l 0,1 a 15 15 0 0,1 0,30 l 0,1 l 10000,0 l 0,-32 l -10000,0 z" />
+ </svg:clipPath> + </svg:clipPath>
+#endif +#endif
+#endif
+ </svg:svg> + </svg:svg>
+ +
+</vbox> +</vbox>
@ -1143,7 +1329,7 @@ new file mode 100644
diff --git a/browser/base/jar.mn b/browser/base/jar.mn diff --git a/browser/base/jar.mn b/browser/base/jar.mn
--- a/browser/base/jar.mn --- a/browser/base/jar.mn
+++ b/browser/base/jar.mn +++ b/browser/base/jar.mn
@@ -66,16 +66,18 @@ browser.jar: @@ -58,16 +58,18 @@ browser.jar:
content/browser/aboutSocialError.xhtml (content/aboutSocialError.xhtml) content/browser/aboutSocialError.xhtml (content/aboutSocialError.xhtml)
content/browser/aboutProviderDirectory.xhtml (content/aboutProviderDirectory.xhtml) content/browser/aboutProviderDirectory.xhtml (content/aboutProviderDirectory.xhtml)
content/browser/aboutTabCrashed.css (content/aboutTabCrashed.css) content/browser/aboutTabCrashed.css (content/aboutTabCrashed.css)
@ -1159,7 +1345,7 @@ diff --git a/browser/base/jar.mn b/browser/base/jar.mn
content/browser/browser-ctrlTab.js (content/browser-ctrlTab.js) content/browser/browser-ctrlTab.js (content/browser-ctrlTab.js)
content/browser/browser-customization.js (content/browser-customization.js) content/browser/browser-customization.js (content/browser-customization.js)
content/browser/browser-data-submission-info-bar.js (content/browser-data-submission-info-bar.js) content/browser/browser-data-submission-info-bar.js (content/browser-data-submission-info-bar.js)
content/browser/browser-devedition.js (content/browser-devedition.js) content/browser/browser-compacttheme.js (content/browser-compacttheme.js)
content/browser/browser-feeds.js (content/browser-feeds.js) content/browser/browser-feeds.js (content/browser-feeds.js)
content/browser/browser-fullScreenAndPointerLock.js (content/browser-fullScreenAndPointerLock.js) content/browser/browser-fullScreenAndPointerLock.js (content/browser-fullScreenAndPointerLock.js)
diff --git a/browser/components/build/nsModule.cpp b/browser/components/build/nsModule.cpp diff --git a/browser/components/build/nsModule.cpp b/browser/components/build/nsModule.cpp
@ -1225,30 +1411,31 @@ diff --git a/browser/components/build/nsModule.cpp b/browser/components/build/ns
diff --git a/browser/components/preferences/in-content/main.js b/browser/components/preferences/in-content/main.js 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 --- a/browser/components/preferences/in-content/main.js
+++ b/browser/components/preferences/in-content/main.js +++ b/browser/components/preferences/in-content/main.js
@@ -33,16 +33,22 @@ var gMainPane = { @@ -41,16 +41,23 @@ var gMainPane = {
if (AppConstants.platform == "win") {
// In Windows 8 we launch the control panel since it's the only
// way to get all file type association prefs. So we don't know // way to get all file type association prefs. So we don't know
// when the user will select the default. We refresh here periodically // when the user will select the default. We refresh here periodically
// in case the default changes. On other Windows OS's defaults can also // in case the default changes. On other Windows OS's defaults can also
// be set while the prefs are open. // be set while the prefs are open.
window.setInterval(this.updateSetDefaultBrowser.bind(this), 1000); window.setInterval(this.updateSetDefaultBrowser.bind(this), 1000);
} }
+
+ var env = Components.classes["@mozilla.org/process/environment;1"]
+ .getService(Components.interfaces.nsIEnvironment);
+ var kde_session = 0;
+ if (env.get('KDE_FULL_SESSION') == "true")
+ kde_session = 1;
} }
// set up the "use current page" label-changing listener + var env = Components.classes["@mozilla.org/process/environment;1"]
this._updateUseCurrentButton(); + .getService(Components.interfaces.nsIEnvironment);
window.addEventListener("focus", this._updateUseCurrentButton.bind(this), false); + var kde_session = 0;
+ if (env.get('KDE_FULL_SESSION') == "true") {
+ kde_session = 1;
+ }
+
this.buildContentProcessCountMenuList();
this.updateDefaultPerformanceSettingsPref();
this.updateBrowserStartupLastSession(); let defaultPerformancePref =
document.getElementById("browser.preferences.defaultPerformanceSettings.enabled");
@@ -704,16 +710,27 @@ var gMainPane = { defaultPerformancePref.addEventListener("change", () => {
this.updatePerformanceSettingsBox({duringChangeEvent: true});
});
@@ -875,16 +882,27 @@ var gMainPane = {
let alwaysCheckPref = document.getElementById("browser.shell.checkDefaultBrowser"); let alwaysCheckPref = document.getElementById("browser.shell.checkDefaultBrowser");
alwaysCheckPref.value = true; alwaysCheckPref.value = true;
@ -1279,7 +1466,7 @@ diff --git a/browser/components/preferences/in-content/main.js b/browser/compone
diff --git a/browser/components/shell/moz.build b/browser/components/shell/moz.build diff --git a/browser/components/shell/moz.build b/browser/components/shell/moz.build
--- a/browser/components/shell/moz.build --- a/browser/components/shell/moz.build
+++ b/browser/components/shell/moz.build +++ b/browser/components/shell/moz.build
@@ -34,16 +34,18 @@ if CONFIG['OS_ARCH'] == 'WINNT': @@ -38,16 +38,18 @@ if CONFIG['OS_ARCH'] == 'WINNT':
] ]
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa':
SOURCES += [ SOURCES += [
@ -1561,7 +1748,7 @@ new file mode 100644
+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGNOMEShellService, Init) +NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGNOMEShellService, Init)
+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsKDEShellService, Init) +NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsKDEShellService, Init)
+ +
+NS_METHOD +NS_IMETHODIMP
+nsUnixShellServiceConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult) +nsUnixShellServiceConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult)
+{ +{
+ if( nsKDEUtils::kdeSupport()) + if( nsKDEUtils::kdeSupport())
@ -1584,28 +1771,29 @@ new file mode 100644
+ +
+#include "nsIGNOMEShellService.h" +#include "nsIGNOMEShellService.h"
+ +
+NS_METHOD +NS_IMETHODIMP
+nsUnixShellServiceConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult); +nsUnixShellServiceConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult);
+ +
+#endif // nsunixshellservice_h____ +#endif // nsunixshellservice_h____
diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in
--- a/browser/installer/package-manifest.in --- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in
@@ -652,16 +652,17 @@ @@ -664,16 +664,18 @@
@RESPATH@/greprefs.js @RESPATH@/browser/defaults/blocklists
@RESPATH@/defaults/autoconfig/prefcalls.js @RESPATH@/browser/defaults/pinning
@RESPATH@/browser/defaults/permissions
; Warning: changing the path to channel-prefs.js can cause bugs (Bug 756325) ; Warning: changing the path to channel-prefs.js can cause bugs (Bug 756325)
; Technically this is an app pref file, but we are keeping it in the original ; Technically this is an app pref file, but we are keeping it in the original
; gre location for now. ; gre location for now.
@RESPATH@/defaults/pref/channel-prefs.js @RESPATH@/defaults/pref/channel-prefs.js
+@BINPATH@/defaults/pref/kde.js +@BINPATH@/defaults/pref/kde.js
+
; Remote control protocol prefs
; defined in ../../testing/marionette/prefs/marionette.js
@RESPATH@/defaults/pref/marionette.js
; Services (gre) prefs ; Services (gre) prefs
@RESPATH@/defaults/pref/services-sync.js @RESPATH@/defaults/pref/services-sync.js
; [Layout Engine Resources] ; [Layout Engine Resources]
; Style Sheets, Graphics and other Resources used by the layout engine.
@RESPATH@/res/EditorOverride.css
@RESPATH@/res/contenteditable.css

1
google-api-key Normal file
View File

@ -0,0 +1 @@
AIzaSyD1hTe85_a14kr1Ks8T3Ce75rvbR1_Dx7Q

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:20761eb9dd53c5880410fa1a94574f14b75e443b5bc8efe383d27c40a3e241c9
size 45075116

3
l10n-56.0.tar.xz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:0a4704c6ae33b92f0f861cba02ab93bc5fe05b7429b7adc7e9180793556ef398
size 47661016

View File

@ -1,93 +1,96 @@
ach 34c236a22596 ach e7adc49e1901
af 90f7ccd90de4 af a175ec808407
an 10f71571821e an c02780857019
ar 0edb7b32133a ar 6688a184a4ee
as ee642d74fde9 as 1b201809c30b
ast 80b866a98b5a ast 5b0c1d37dfc4
az 07778ef756d4 az 46f153ea025d
bg f86aa012265d be e639859bd80d
bn-BD 6182802acd04 bg 45ac10a8eebb
bn-IN 0775fc62a38e bn-BD 78e42794be0a
br 88938f2eb7e2 bn-IN b12cd5984010
bs afe1158833f4 br 0c692a161e6a
ca c49b6bb37779 bs c566dcff9228
cak 30c024aa79ef ca 843005ebdf57
cs 392a1ff68cfd cak a201a160f1aa
cy e9cc2975266f cs 673e3c5d7e6d
da cb1423eac811 cy d7785e84b2d5
de 6535fbec1846 da d10cb0ccbfdf
dsb bbdbee2ecc9f de cbcbb67b7446
el 4232653d09a7 dsb 91d7f449c8b8
en-GB 3b1783bdb6fd el 9fae6e0cf73a
en-ZA 86f98526de2f en-GB 4efed4b7a026
eo 6af9eb3bb290 en-ZA 41d36ec15733
es-AR adc3a9f3054e eo 75689f423fee
es-CL 8ce5a00c2709 es-AR 008298fdc822
es-ES 3debdad3d876 es-CL 0719cf9a02c5
es-MX c2d80c000c8c es-ES 89444d0f0c5e
et 5ce460a1227b es-MX a3b2c719d335
eu 55202a38f74c et f94a081742e2
fa de4daf555606 eu e70ce824af92
ff 98974e0270a8 fa bd0a632a347e
fi 903b0416494a ff e9ec23d286da
fr 7e9efb5f39b1 fi dee2606c0c52
fy-NL 551f14553b31 fr 444f6f248cda
ga-IE 94a750872504 fy-NL 5442947be711
gd b2e4e78a85cf ga-IE 520a91e1b869
gl 79eda21c5b0b gd 7b8d318d7172
gn 8448413afd01 gl df4a43546115
gu-IN ef0d3c1d041a gn de90f7d4ad27
he 31df213cf89d gu-IN 49c0059e7b20
hi-IN 6578b433d66e he 14abb07c8067
hr 77f103c07be0 hi-IN 627e4866fa52
hsb 99f7c592ff8c hr 840d6fce9f2d
hu 7ec46b30e96d hsb 79b769f56afb
hy-AM ee9609100a98 hu 75d6acab27ff
id 584289a98164 hy-AM 3543e3c61d51
is 0de2039f0ead id 80d249bfce07
it 81a6b9f3a701 is df02eb864aba
ja 289cc8d9b658 it 54ebd710b0b9
ja-JP-mac 1dc42d8f8c6b ja 0f3bea597ba3
ka fd11643d032b ja-JP-mac 7f49be227f5d
kab 89a29ca718ef ka ee6c8ed935e1
kk bbde07088662 kab f53aac551d7a
km 1d78cae948e2 kk 07823d99b937
kn ceb699bfc19e km 3bf31b0b6d9e
ko ab9bc02a8c39 kn c3db01aad2bf
lij 221601dc2320 ko 9508383b1bb7
lt 1c563aa726f8 lij c585863b419f
lv 33dd8fbeb14e lt 74e2d1cc81a1
mai 4974d9967e3a lv 6e57fc56b250
mk 85557d511a18 mai 7c33a3406453
ml 3ac6473b90b8 mk b97e85f1e93e
mr 9c8106a513fd ml de8be9445c41
ms f5ed710c8534 mr 61ad0573f895
nb-NO c84b8fb6b939 ms 25a747386aab
nl b3c2ab953068 my 088ce3f4319d
nn-NO bc795ce8885a nb-NO 1d197e5f990c
or ad0d79e1df34 nl 5676db0716a9
pa-IN 7a7d721c7f47 nn-NO fcd11b7086e5
pl 42ea1da43a3b or f21324a0ed10
pt-BR e9eaef0caba5 pa-IN 4b71dd06d0e8
pt-PT 5deb6216933d pl b71e63bbbddd
rm 4981325b9462 pt-BR e0e7a5821812
ro 952587a63617 pt-PT 333e82cca862
ru 3d319dcf82c7 rm 6b8e6367d9d0
si ea8510d62e56 ro 84d897edfd6c
sk 968ee9fbd8ba ru aee79cd84afb
sl e398e25297bc si d91975c0b4d8
son a071d439a5f3 sk 8fa0e53e20c2
sq ab626a887267 sl 2abb9b1c667a
sr 3fb1197cc3f3 son be7a56e6d7fe
sv-SE 2d93a3f0c284 sq d9137ed745db
ta e5fbcf49496f sr 6839a5986d5b
te d4cabe943952 sv-SE 621c743144e6
th e66a11b8da51 ta aae2aa13babf
tr 2ec45f681bb0 te d9cf4d3c33e0
uk d3ccc79b70b2 th 34c1c62bb3cf
uz 53122cc7d6ad tr 921c1b013006
vi e4f8d820bef2 uk 03b177ac056c
xh 6ba5a5671721 ur d97e35bba2d8
zh-CN 02ca4c1400c1 uz 4807645f175b
zh-TW d17da9c45a93 vi fa843de1fbed
xh 7011a348aa3b
zh-CN 3ebe225f8ae8
zh-TW 99c6d5ce2901

View File

@ -1,14 +1,15 @@
# HG changeset patch # HG changeset patch
# Parent a5cfa3aa11a9d3391df49de6fc5a0e5232c12c10 # Parent a5cfa3aa11a9d3391df49de6fc5a0e5232c12c10
# Parent d36d722c028f553ac3fb2f3655fb2c0ca745050c
Bug 991344 - Rpi3: Firefox crashes after a few seconds of usage Bug 991344 - Rpi3: Firefox crashes after a few seconds of usage
diff --git a/netwerk/base/nsIOService.cpp b/netwerk/base/nsIOService.cpp diff --git a/netwerk/base/nsIOService.cpp b/netwerk/base/nsIOService.cpp
--- a/netwerk/base/nsIOService.cpp --- a/netwerk/base/nsIOService.cpp
+++ b/netwerk/base/nsIOService.cpp +++ b/netwerk/base/nsIOService.cpp
@@ -830,17 +830,23 @@ nsIOService::NewChannelFromURIWithProxyF @@ -874,17 +874,23 @@ nsIOService::NewChannelFromURIWithProxyF
consoleService->LogStringMessage(NS_LITERAL_STRING( "doesn't support nsIUploadChannel2. An extension has "
"Http channel implementation 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." "supplied a non-functional http protocol handler. This will "
).get()); "break behavior and in future releases not work at all.");
} }
gHasWarnedUploadChannel2 = true; gHasWarnedUploadChannel2 = true;
} }

View File

@ -1,5 +1,5 @@
# HG changeset patch # HG changeset patch
# Parent aff14a54f25dc3146ba7a64408ceb9f486a832db # Parent faadbf89d1cb02eefec4c5dfd3ab86bc20d815d5
Description: Add KDE integration to Firefox (toolkit parts) Description: Add KDE integration to Firefox (toolkit parts)
Author: Wolfgang Rosenauer <wolfgang@rosenauer.org> Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
Author: Lubos Lunak <lunak@suse.com> Author: Lubos Lunak <lunak@suse.com>
@ -9,7 +9,7 @@ Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751
diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
--- a/modules/libpref/Preferences.cpp --- a/modules/libpref/Preferences.cpp
+++ b/modules/libpref/Preferences.cpp +++ b/modules/libpref/Preferences.cpp
@@ -31,16 +31,17 @@ @@ -33,16 +33,17 @@
#include "nsIZipReader.h" #include "nsIZipReader.h"
#include "nsPrefBranch.h" #include "nsPrefBranch.h"
#include "nsXPIDLString.h" #include "nsXPIDLString.h"
@ -27,7 +27,7 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
#include "prefread.h" #include "prefread.h"
#include "prefapi_private_data.h" #include "prefapi_private_data.h"
@@ -1174,16 +1175,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char @@ -1435,16 +1436,34 @@ pref_LoadPrefsInDir(nsIFile* aDir, char
static nsresult pref_LoadPrefsInDirList(const char *listId) static nsresult pref_LoadPrefsInDirList(const char *listId)
{ {
@ -62,7 +62,7 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
return NS_OK; return NS_OK;
bool hasMore; bool hasMore;
@@ -1199,17 +1218,17 @@ static nsresult pref_LoadPrefsInDirList( @@ -1460,17 +1479,17 @@ static nsresult pref_LoadPrefsInDirList(
nsAutoCString leaf; nsAutoCString leaf;
path->GetNativeLeafName(leaf); path->GetNativeLeafName(leaf);
@ -81,7 +81,7 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
{ {
nsZipItemPtr<char> manifest(jarReader, name, true); nsZipItemPtr<char> manifest(jarReader, name, true);
NS_ENSURE_TRUE(manifest.Buffer(), NS_ERROR_NOT_AVAILABLE); NS_ENSURE_TRUE(manifest.Buffer(), NS_ERROR_NOT_AVAILABLE);
@@ -1303,24 +1322,36 @@ static nsresult pref_InitInitialObjects( @@ -1566,24 +1585,36 @@ pref_InitInitialObjects()
/* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */ /* these pref file names should not be used: we process them after all other application pref files for backwards compatibility */
static const char* specialFiles[] = { static const char* specialFiles[] = {
#if defined(XP_MACOSX) #if defined(XP_MACOSX)
@ -121,17 +121,17 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
--- a/modules/libpref/moz.build --- a/modules/libpref/moz.build
+++ b/modules/libpref/moz.build +++ b/modules/libpref/moz.build
@@ -31,16 +31,20 @@ UNIFIED_SOURCES += [ @@ -33,16 +33,20 @@ EXPORTS.mozilla += [
UNIFIED_SOURCES += [
'nsPrefBranch.cpp',
'nsPrefsFactory.cpp',
'prefapi.cpp',
'Preferences.cpp',
'prefread.cpp', 'prefread.cpp',
] ]
# prefapi.cpp cannot be built in unified mode because it uses plarena.h
SOURCES += [
'prefapi.cpp',
]
+LOCAL_INCLUDES += [ +LOCAL_INCLUDES += [
+ '/toolkit/xre' + '/toolkit/xre'
+] +]
+ +
include('/ipc/chromium/chromium-config.mozbuild') include('/ipc/chromium/chromium-config.mozbuild')
@ -140,12 +140,12 @@ diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
DEFINES['OS_ARCH'] = CONFIG['OS_ARCH'] DEFINES['OS_ARCH'] = CONFIG['OS_ARCH']
DEFINES['MOZ_WIDGET_TOOLKIT'] = CONFIG['MOZ_WIDGET_TOOLKIT'] DEFINES['MOZ_WIDGET_TOOLKIT'] = CONFIG['MOZ_WIDGET_TOOLKIT']
if CONFIG['MOZ_ENABLE_WEBRENDER']:
FINAL_TARGET_PP_FILES += [ DEFINES['MOZ_ENABLE_WEBRENDER'] = True
diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/chrome/flags.py diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/chrome/flags.py
--- a/python/mozbuild/mozpack/chrome/flags.py --- a/python/mozbuild/mozpack/chrome/flags.py
+++ b/python/mozbuild/mozpack/chrome/flags.py +++ b/python/mozbuild/mozpack/chrome/flags.py
@@ -211,16 +211,17 @@ class Flags(OrderedDict): @@ -220,16 +220,17 @@ class Flags(OrderedDict):
'contentaccessible': Flag, 'contentaccessible': Flag,
'os': StringFlag, 'os': StringFlag,
'osversion': VersionFlag, 'osversion': VersionFlag,
@ -187,9 +187,9 @@ diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpac
diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloads/moz.build diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloads/moz.build
--- a/toolkit/components/downloads/moz.build --- a/toolkit/components/downloads/moz.build
+++ b/toolkit/components/downloads/moz.build +++ b/toolkit/components/downloads/moz.build
@@ -57,16 +57,17 @@ if not CONFIG['MOZ_SUITE']: @@ -37,16 +37,17 @@ UNIFIED_SOURCES += [
'nsDownloadManagerUI.manifest', 'nsDownloadManager.cpp'
] ]
FINAL_LIBRARY = 'xul' FINAL_LIBRARY = 'xul'
@ -205,81 +205,13 @@ diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloa
CXXFLAGS += CONFIG['TK_CFLAGS'] CXXFLAGS += CONFIG['TK_CFLAGS']
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
@@ -52,16 +52,20 @@
#ifdef XP_WIN
#include <shlobj.h>
#include "nsWindowsHelpers.h"
#ifdef DOWNLOAD_SCANNER
#include "nsDownloadScanner.h"
#endif
#endif
+#if defined(XP_UNIX) && !defined(XP_MACOSX)
+#include "nsKDEUtils.h"
+#endif
+
#ifdef XP_MACOSX
#include <CoreFoundation/CoreFoundation.h>
#endif
#ifdef MOZ_WIDGET_ANDROID
#include "FennecJNIWrappers.h"
#endif
@@ -2723,16 +2727,25 @@ nsDownload::SetState(DownloadState aStat
nsCOMPtr<nsIPrefBranch> pref(do_GetService(NS_PREFSERVICE_CONTRACTID));
// Master pref to control this function.
bool showTaskbarAlert = true;
if (pref)
pref->GetBoolPref(PREF_BDM_SHOWALERTONCOMPLETE, &showTaskbarAlert);
if (showTaskbarAlert) {
+ if( nsKDEUtils::kdeSupport()) {
+ nsTArray<nsCString> command;
+ command.AppendElement( NS_LITERAL_CSTRING( "DOWNLOADFINISHED" ));
+ nsAutoString displayName;
+ GetDisplayName( displayName );
+ command.AppendElement( nsAutoCString( ToNewUTF8String( displayName )));
+ nsKDEUtils::command( command );
+ } else {
+ // begin non-KDE block
int32_t alertInterval = 2000;
if (pref)
pref->GetIntPref(PREF_BDM_SHOWALERTINTERVAL, &alertInterval);
int64_t alertIntervalUSec = alertInterval * PR_USEC_PER_MSEC;
int64_t goat = PR_Now() - mStartTime;
showTaskbarAlert = goat > alertIntervalUSec;
@@ -2764,16 +2777,17 @@ nsDownload::SetState(DownloadState aStat
message, !removeWhenDone,
mPrivate ? NS_LITERAL_STRING("private") : NS_LITERAL_STRING("non-private"),
mDownloadManager, EmptyString(), NS_LITERAL_STRING("auto"),
EmptyString(), EmptyString(), nullptr, mPrivate,
false /* requireInteraction */);
}
}
}
+ }
#if defined(XP_WIN) || defined(XP_MACOSX) || defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GTK)
nsCOMPtr<nsIFileURL> fileURL = do_QueryInterface(mTarget);
nsCOMPtr<nsIFile> file;
nsAutoString path;
if (fileURL &&
NS_SUCCEEDED(fileURL->GetFile(getter_AddRefs(file))) &&
diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn diff --git a/toolkit/content/jar.mn b/toolkit/content/jar.mn
--- a/toolkit/content/jar.mn --- a/toolkit/content/jar.mn
+++ b/toolkit/content/jar.mn +++ b/toolkit/content/jar.mn
@@ -70,29 +70,33 @@ toolkit.jar: @@ -75,29 +75,33 @@ toolkit.jar:
content/global/bindings/button.xml (widgets/button.xml)
content/global/bindings/checkbox.xml (widgets/checkbox.xml)
content/global/bindings/colorpicker.xml (widgets/colorpicker.xml) content/global/bindings/colorpicker.xml (widgets/colorpicker.xml)
content/global/bindings/datekeeper.js (widgets/datekeeper.js)
content/global/bindings/datepicker.js (widgets/datepicker.js)
content/global/bindings/datetimepicker.xml (widgets/datetimepicker.xml) content/global/bindings/datetimepicker.xml (widgets/datetimepicker.xml)
content/global/bindings/datetimepopup.xml (widgets/datetimepopup.xml) content/global/bindings/datetimepopup.xml (widgets/datetimepopup.xml)
content/global/bindings/datetimebox.xml (widgets/datetimebox.xml) content/global/bindings/datetimebox.xml (widgets/datetimebox.xml)
@ -314,7 +246,7 @@ diff --git a/toolkit/content/widgets/dialog-kde.xml b/toolkit/content/widgets/di
new file mode 100644 new file mode 100644
--- /dev/null --- /dev/null
+++ b/toolkit/content/widgets/dialog-kde.xml +++ b/toolkit/content/widgets/dialog-kde.xml
@@ -0,0 +1,457 @@ @@ -0,0 +1,455 @@
+<?xml version="1.0"?> +<?xml version="1.0"?>
+<!-- This Source Code Form is subject to the terms of the Mozilla Public +<!-- 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 + - License, v. 2.0. If a copy of the MPL was not distributed with this
@ -459,8 +391,8 @@ new file mode 100644
+ <method name="centerWindowOnScreen"> + <method name="centerWindowOnScreen">
+ <body> + <body>
+ <![CDATA[ + <![CDATA[
+ var xOffset = screen.availWidth/2 - window.outerWidth/2; + var xOffset = screen.availWidth / 2 - window.outerWidth / 2;
+ var yOffset = screen.availHeight/2 - window.outerHeight/2; + var yOffset = screen.availHeight / 2 - window.outerHeight / 2;
+ +
+ xOffset = xOffset > 0 ? xOffset : 0; + xOffset = xOffset > 0 ? xOffset : 0;
+ yOffset = yOffset > 0 ? yOffset : 0; + yOffset = yOffset > 0 ? yOffset : 0;
@ -474,10 +406,10 @@ new file mode 100644
+ this._configureButtons(this.buttons); + this._configureButtons(this.buttons);
+ +
+ // listen for when window is closed via native close buttons + // listen for when window is closed via native close buttons
+ window.addEventListener("close", this._closeHandler, false); + window.addEventListener("close", this._closeHandler);
+ +
+ // for things that we need to initialize after onload fires + // for things that we need to initialize after onload fires
+ window.addEventListener("load", this.postLoadInit, false); + window.addEventListener("load", this.postLoadInit);
+ +
+ window.moveToAlertPosition = this.moveToAlertPosition; + window.moveToAlertPosition = this.moveToAlertPosition;
+ window.centerWindowOnScreen = this.centerWindowOnScreen; + window.centerWindowOnScreen = this.centerWindowOnScreen;
@ -512,9 +444,8 @@ new file mode 100644
+ // so return focus to the tab itself + // so return focus to the tab itself
+ initialFocusedElt.focus(); + initialFocusedElt.focus();
+ } + }
+ } + } else if (!/Mac/.test(navigator.platform) &&
+ else if (!/Mac/.test(navigator.platform) && + focusedElt.hasAttribute("dlgtype") && focusedElt != defaultButton) {
+ focusedElt.hasAttribute("dlgtype") && focusedElt != defaultButton) {
+ defaultButton.focus(); + defaultButton.focus();
+ } + }
+ } + }
@ -578,13 +509,13 @@ new file mode 100644
+ // don't override custom labels with pre-defined labels on explicit buttons + // don't override custom labels with pre-defined labels on explicit buttons
+ if (!button.hasAttribute("label")) { + if (!button.hasAttribute("label")) {
+ // dialog attributes override the default labels in dialog.properties + // dialog attributes override the default labels in dialog.properties
+ if (this.hasAttribute("buttonlabel"+dlgtype)) { + if (this.hasAttribute("buttonlabel" + dlgtype)) {
+ button.setAttribute("label", this.getAttribute("buttonlabel"+dlgtype)); + button.setAttribute("label", this.getAttribute("buttonlabel" + dlgtype));
+ if (this.hasAttribute("buttonaccesskey"+dlgtype)) + if (this.hasAttribute("buttonaccesskey" + dlgtype))
+ button.setAttribute("accesskey", this.getAttribute("buttonaccesskey"+dlgtype)); + button.setAttribute("accesskey", this.getAttribute("buttonaccesskey" + dlgtype));
+ } else if (dlgtype != "extra1" && dlgtype != "extra2") { + } else if (dlgtype != "extra1" && dlgtype != "extra2") {
+ button.setAttribute("label", this.mStrBundle.GetStringFromName("button-"+dlgtype)); + button.setAttribute("label", this.mStrBundle.GetStringFromName("button-" + dlgtype));
+ var accessKey = this.mStrBundle.GetStringFromName("accesskey-"+dlgtype); + var accessKey = this.mStrBundle.GetStringFromName("accesskey-" + dlgtype);
+ if (accessKey) + if (accessKey)
+ button.setAttribute("accesskey", accessKey); + button.setAttribute("accesskey", accessKey);
+ } + }
@ -592,8 +523,8 @@ new file mode 100644
+ // allow specifying alternate icons in the dialog header + // allow specifying alternate icons in the dialog header
+ if (!button.hasAttribute("icon")) { + if (!button.hasAttribute("icon")) {
+ // if there's an icon specified, use that + // if there's an icon specified, use that
+ if (this.hasAttribute("buttonicon"+dlgtype)) + if (this.hasAttribute("buttonicon" + dlgtype))
+ button.setAttribute("icon", this.getAttribute("buttonicon"+dlgtype)); + button.setAttribute("icon", this.getAttribute("buttonicon" + dlgtype));
+ // otherwise set defaults + // otherwise set defaults
+ else + else
+ switch (dlgtype) { + switch (dlgtype) {
@ -637,7 +568,7 @@ new file mode 100644
+ if (/Win/.test(navigator.platform)) { + if (/Win/.test(navigator.platform)) {
+ var spacer = document.getAnonymousElementByAttribute(this, "anonid", "spacer"); + var spacer = document.getAnonymousElementByAttribute(this, "anonid", "spacer");
+ spacer.removeAttribute("hidden"); + spacer.removeAttribute("hidden");
+ spacer.setAttribute("flex", shown["extra2"]?"1":"0"); + spacer.setAttribute("flex", shown["extra2"] ? "1" : "0");
+ } + }
+ } + }
+ ]]> + ]]>
@ -657,11 +588,10 @@ new file mode 100644
+ if (newDefaultButton) { + if (newDefaultButton) {
+ this.setAttribute("defaultButton", aNewDefault); + this.setAttribute("defaultButton", aNewDefault);
+ newDefaultButton.setAttribute("default", "true"); + newDefaultButton.setAttribute("default", "true");
+ } + } else {
+ else {
+ this.setAttribute("defaultButton", "none"); + this.setAttribute("defaultButton", "none");
+ if (aNewDefault != "none") + if (aNewDefault != "none")
+ dump("invalid new default button: " + aNewDefault + ", assuming: none\n"); + dump("invalid new default button: " + aNewDefault + ", assuming: none\n");
+ } + }
+ ]]> + ]]>
+ </body> + </body>
@ -706,13 +636,13 @@ new file mode 100644
+ <body> + <body>
+ <![CDATA[ + <![CDATA[
+ var event = document.createEvent("Events"); + var event = document.createEvent("Events");
+ event.initEvent("dialog"+aDlgType, true, true); + event.initEvent("dialog" + aDlgType, true, true);
+ +
+ // handle dom event handlers + // handle dom event handlers
+ var noCancel = this.dispatchEvent(event); + var noCancel = this.dispatchEvent(event);
+ +
+ // handle any xml attribute event handlers + // handle any xml attribute event handlers
+ var handler = this.getAttribute("ondialog"+aDlgType); + var handler = this.getAttribute("ondialog" + aDlgType);
+ if (handler != "") { + if (handler != "") {
+ var fn = new Function("event", handler); + var fn = new Function("event", handler);
+ var returned = fn(event); + var returned = fn(event);
@ -776,7 +706,7 @@ diff --git a/toolkit/content/widgets/preferences-kde.xml b/toolkit/content/widge
new file mode 100644 new file mode 100644
--- /dev/null --- /dev/null
+++ b/toolkit/content/widgets/preferences-kde.xml +++ b/toolkit/content/widgets/preferences-kde.xml
@@ -0,0 +1,1411 @@ @@ -0,0 +1,1409 @@
+<?xml version="1.0"?> +<?xml version="1.0"?>
+ +
+<!DOCTYPE bindings [ +<!DOCTYPE bindings [
@ -812,19 +742,19 @@ new file mode 100644
+ <method name="_constructAfterChildren"> + <method name="_constructAfterChildren">
+ <body> + <body>
+ <![CDATA[ + <![CDATA[
+ // This method will be called after each one of the child + // This method will be called after the last of the child
+ // <preference> elements is constructed. Its purpose is to propagate + // <preference> elements is constructed. Its purpose is to propagate
+ // the values to the associated form elements + // the values to the associated form elements. Sometimes the code for
+ // some <preference> initializers depend on other <preference> elements
+ // being initialized so we wait and call updateElements on all of them
+ // once the last one has been constructed. See bugs 997570 and 992185.
+ +
+ var elements = this.getElementsByTagName("preference"); + var elements = this.getElementsByTagName("preference");
+ for (let element of elements) { + for (let element of elements) {
+ if (!element._constructed) {
+ return;
+ }
+ }
+ for (let element of elements) {
+ element.updateElements(); + element.updateElements();
+ } + }
+
+ this._constructAfterChildrenCalled = true;
+ ]]> + ]]>
+ </body> + </body>
+ </method> + </method>
@ -853,8 +783,7 @@ new file mode 100644
+ var event = document.createEvent("Events"); + var event = document.createEvent("Events");
+ event.initEvent("change", true, true); + event.initEvent("change", true, true);
+ aPreference.dispatchEvent(event); + aPreference.dispatchEvent(event);
+ } + } catch (e) {
+ catch (e) {
+ Components.utils.reportError(e); + Components.utils.reportError(e);
+ } + }
+ ]]> + ]]>
@ -892,6 +821,25 @@ new file mode 100644
+ ]]> + ]]>
+ </getter> + </getter>
+ </property> + </property>
+
+ <!-- We want to call _constructAfterChildren after all child
+ <preference> elements have been constructed. To do this, we get
+ and store the node list of all child <preference> elements in the
+ constructor, and maintain a count which is incremented in the
+ constructor of <preference>. _constructAfterChildren is called
+ when the count matches the length of the list. -->
+ <field name="_constructedChildrenCount">0</field>
+ <field name="_preferenceChildren">null</field>
+ <!-- Some <preference> elements are added dynamically after
+ _constructAfterChildren has already been called - we want to
+ avoid looping over all of them again in this case so we remember
+ if we already called it. -->
+ <field name="_constructAfterChildrenCalled">false</field>
+ <constructor>
+ <![CDATA[
+ this._preferenceChildren = this.getElementsByTagName("preference");
+ ]]>
+ </constructor>
+ </implementation> + </implementation>
+ </binding> + </binding>
+ +
@ -899,15 +847,13 @@ new file mode 100644
+ <implementation> + <implementation>
+ <constructor> + <constructor>
+ <![CDATA[ + <![CDATA[
+ this._constructed = true;
+
+ // if the element has been inserted without the name attribute set, + // if the element has been inserted without the name attribute set,
+ // we have nothing to do here + // we have nothing to do here
+ if (!this.name) + if (!this.name)
+ return; + return;
+ +
+ this.preferences.rootBranchInternal + this.preferences.rootBranchInternal
+ .addObserver(this.name, this.preferences, false); + .addObserver(this.name, this.preferences);
+ // In non-instant apply mode, we must try and use the last saved state + // In non-instant apply mode, we must try and use the last saved state
+ // from any previous opens of a child dialog instead of the value from + // from any previous opens of a child dialog instead of the value from
+ // preferences, to pick up any edits a user may have made. + // preferences, to pick up any edits a user may have made.
@ -933,10 +879,21 @@ new file mode 100644
+ +
+ // Don't use the value setter here, we don't want updateElements to be prematurely fired. + // Don't use the value setter here, we don't want updateElements to be prematurely fired.
+ this._value = preference ? preference.value : this.valueFromPreferences; + this._value = preference ? preference.value : this.valueFromPreferences;
+ } + } else {
+ else
+ this._value = this.valueFromPreferences; + this._value = this.valueFromPreferences;
+ this.preferences._constructAfterChildren(); + }
+ if (this.preferences._constructAfterChildrenCalled) {
+ // This <preference> was added after _constructAfterChildren() was already called.
+ // We can directly call updateElements().
+ this.updateElements();
+ return;
+ }
+ this.preferences._constructedChildrenCount++;
+ if (this.preferences._constructedChildrenCount ==
+ this.preferences._preferenceChildren.length) {
+ // This is the last <preference>, time to updateElements() on all of them.
+ this.preferences._constructAfterChildren();
+ }
+ ]]> + ]]>
+ </constructor> + </constructor>
+ <destructor> + <destructor>
@ -960,9 +917,9 @@ new file mode 100644
+ +
+ this.preferences.rootBranchInternal + this.preferences.rootBranchInternal
+ .removeObserver(this.name, this.preferences); + .removeObserver(this.name, this.preferences);
+ this.setAttribute('name', val); + this.setAttribute("name", val);
+ this.preferences.rootBranchInternal + this.preferences.rootBranchInternal
+ .addObserver(val, this.preferences, false); + .addObserver(val, this.preferences);
+ +
+ return val; + return val;
+ </setter> + </setter>
@ -1118,13 +1075,9 @@ new file mode 100644
+ .data; + .data;
+ case "string": + case "string":
+ case "unichar": + case "unichar":
+ return this._branch + return this._branch.getStringPref(this.name);
+ .getComplexValue(this.name, Components.interfaces.nsISupportsString)
+ .data;
+ case "fontname": + case "fontname":
+ var family = this._branch + var family = this._branch.getStringPref(this.name);
+ .getComplexValue(this.name, Components.interfaces.nsISupportsString)
+ .data;
+ var fontEnumerator = Components.classes["@mozilla.org/gfx/fontenumerator;1"] + var fontEnumerator = Components.classes["@mozilla.org/gfx/fontenumerator;1"]
+ .createInstance(Components.interfaces.nsIFontEnumerator); + .createInstance(Components.interfaces.nsIFontEnumerator);
+ return fontEnumerator.getStandardFamilyName(family); + return fontEnumerator.getStandardFamilyName(family);
@ -1135,8 +1088,7 @@ new file mode 100644
+ default: + default:
+ this._reportUnknownType(); + this._reportUnknownType();
+ } + }
+ } + } catch (e) { }
+ catch (e) { }
+ return null; + return null;
+ ]]> + ]]>
+ </getter> + </getter>
@ -1170,11 +1122,7 @@ new file mode 100644
+ case "string": + case "string":
+ case "unichar": + case "unichar":
+ case "fontname": + case "fontname":
+ var iss = Components.classes["@mozilla.org/supports-string;1"] + this.preferences.rootBranch.setStringPref(this.name, val);
+ .createInstance(Components.interfaces.nsISupportsString);
+ iss.data = val;
+ this.preferences.rootBranch
+ .setComplexValue(this.name, Components.interfaces.nsISupportsString, iss);
+ break; + break;
+ case "file": + case "file":
+ var lf; + var lf;
@ -1184,8 +1132,7 @@ new file mode 100644
+ lf.persistentDescriptor = val; + lf.persistentDescriptor = val;
+ if (!lf.exists()) + if (!lf.exists())
+ lf.initWithPath(val); + lf.initWithPath(val);
+ } + } else
+ else
+ lf = val.QueryInterface(Components.interfaces.nsILocalFile); + lf = val.QueryInterface(Components.interfaces.nsILocalFile);
+ this.preferences.rootBranch + this.preferences.rootBranch
+ .setComplexValue(this.name, Components.interfaces.nsILocalFile, lf); + .setComplexValue(this.name, Components.interfaces.nsILocalFile, lf);
@ -1216,11 +1163,10 @@ new file mode 100644
+ try { + try {
+ var event = document.createEvent("Events"); + var event = document.createEvent("Events");
+ event.initEvent("syncfrompreference", true, true); + event.initEvent("syncfrompreference", true, true);
+ var f = new Function ("event", + var f = new Function("event",
+ aElement.getAttribute("onsyncfrompreference")); + aElement.getAttribute("onsyncfrompreference"));
+ rv = f.call(aElement, event); + rv = f.call(aElement, event);
+ } + } catch (e) {
+ catch (e) {
+ Components.utils.reportError(e); + Components.utils.reportError(e);
+ } + }
+ } + }
@ -1255,8 +1201,7 @@ new file mode 100644
+ // of the input event handler. + // of the input event handler.
+ if (aElement.value !== val) + if (aElement.value !== val)
+ setValue(aElement, "value", val); + setValue(aElement, "value", val);
+ } + } else
+ else
+ setValue(aElement, "value", val); + setValue(aElement, "value", val);
+ ]]> + ]]>
+ </body> + </body>
@ -1271,13 +1216,12 @@ new file mode 100644
+ try { + try {
+ var event = document.createEvent("Events"); + var event = document.createEvent("Events");
+ event.initEvent("synctopreference", true, true); + event.initEvent("synctopreference", true, true);
+ var f = new Function ("event", + var f = new Function("event",
+ aElement.getAttribute("onsynctopreference")); + aElement.getAttribute("onsynctopreference"));
+ var rv = f.call(aElement, event); + var rv = f.call(aElement, event);
+ if (rv !== undefined) + if (rv !== undefined)
+ return rv; + return rv;
+ } + } catch (e) {
+ catch (e) {
+ Components.utils.reportError(e); + Components.utils.reportError(e);
+ } + }
+ } + }
@ -1423,7 +1367,7 @@ new file mode 100644
+ acceptButton.disabled = true; + acceptButton.disabled = true;
+ } else { + } else {
+ // morph the Cancel button into the Close button + // morph the Cancel button into the Close button
+ cancelButton.setAttribute ("icon", "close"); + cancelButton.setAttribute("icon", "close");
+ cancelButton.label = docElt.getAttribute("closebuttonlabel"); + cancelButton.label = docElt.getAttribute("closebuttonlabel");
+ cancelButton.accesskey = docElt.getAttribute("closebuttonaccesskey"); + cancelButton.accesskey = docElt.getAttribute("closebuttonaccesskey");
+ } + }
@ -1444,8 +1388,7 @@ new file mode 100644
+ if ("arguments" in window && window.arguments[0] && document.getElementById(window.arguments[0]) && document.getElementById(window.arguments[0]).nodeName == "prefpane") { + if ("arguments" in window && window.arguments[0] && document.getElementById(window.arguments[0]) && document.getElementById(window.arguments[0]).nodeName == "prefpane") {
+ paneToLoad = document.getElementById(window.arguments[0]); + paneToLoad = document.getElementById(window.arguments[0]);
+ this.lastSelected = paneToLoad.id; + this.lastSelected = paneToLoad.id;
+ } + } else if (lastPane)
+ else if (lastPane)
+ paneToLoad = lastPane; + paneToLoad = lastPane;
+ else + else
+ paneToLoad = panes[0]; + paneToLoad = panes[0];
@ -1542,14 +1485,12 @@ new file mode 100644
+ +
+ this._selector.selectedItem = document.getAnonymousElementByAttribute(this, "pane", aPaneElement.id); + this._selector.selectedItem = document.getAnonymousElementByAttribute(this, "pane", aPaneElement.id);
+ if (!aPaneElement.loaded) { + if (!aPaneElement.loaded) {
+ let OverlayLoadObserver = function(aPane) + let OverlayLoadObserver = function(aPane) {
+ {
+ this._pane = aPane; + this._pane = aPane;
+ } + }
+ OverlayLoadObserver.prototype = { + OverlayLoadObserver.prototype = {
+ _outer: this, + _outer: this,
+ observe: function (aSubject, aTopic, aData) + observe(aSubject, aTopic, aData) {
+ {
+ this._pane.loaded = true; + this._pane.loaded = true;
+ this._outer._fireEvent("paneload", this._pane); + this._outer._fireEvent("paneload", this._pane);
+ this._outer._selectPane(this._pane); + this._outer._selectPane(this._pane);
@ -1558,8 +1499,7 @@ new file mode 100644
+ +
+ var obs = new OverlayLoadObserver(aPaneElement); + var obs = new OverlayLoadObserver(aPaneElement);
+ document.loadOverlay(aPaneElement.src, obs); + document.loadOverlay(aPaneElement.src, obs);
+ } + } else
+ else
+ this._selectPane(aPaneElement); + this._selectPane(aPaneElement);
+ ]]> + ]]>
+ </body> + </body>
@ -1576,14 +1516,13 @@ new file mode 100644
+ event.initEvent(aEventName, true, true); + event.initEvent(aEventName, true, true);
+ var cancel = !aTarget.dispatchEvent(event); + var cancel = !aTarget.dispatchEvent(event);
+ if (aTarget.hasAttribute("on" + aEventName)) { + if (aTarget.hasAttribute("on" + aEventName)) {
+ var fn = new Function ("event", aTarget.getAttribute("on" + aEventName)); + var fn = new Function("event", aTarget.getAttribute("on" + aEventName));
+ var rv = fn.call(aTarget, event); + var rv = fn.call(aTarget, event);
+ if (rv == false) + if (rv == false)
+ cancel = true; + cancel = true;
+ } + }
+ return !cancel; + return !cancel;
+ } + } catch (e) {
+ catch (e) {
+ Components.utils.reportError(e); + Components.utils.reportError(e);
+ } + }
+ return false; + return false;
@ -1637,11 +1576,10 @@ new file mode 100644
+ if (this._shouldAnimate && oldPane.id != aPaneElement.id) { + if (this._shouldAnimate && oldPane.id != aPaneElement.id) {
+ aPaneElement.style.opacity = 0.0; + aPaneElement.style.opacity = 0.0;
+ this.animate(oldPane, aPaneElement); + this.animate(oldPane, aPaneElement);
+ } + } else if (!this._shouldAnimate && prefpanes.length > 1) {
+ else if (!this._shouldAnimate && prefpanes.length > 1) { + var targetHeight = parseInt(window.getComputedStyle(this._paneDeckContainer).height);
+ var targetHeight = parseInt(window.getComputedStyle(this._paneDeckContainer, "").height); + var verticalPadding = parseInt(window.getComputedStyle(aPaneElement).paddingTop);
+ var verticalPadding = parseInt(window.getComputedStyle(aPaneElement, "").paddingTop); + verticalPadding += parseInt(window.getComputedStyle(aPaneElement).paddingBottom);
+ verticalPadding += parseInt(window.getComputedStyle(aPaneElement, "").paddingBottom);
+ if (aPaneElement.contentHeight > targetHeight - verticalPadding) { + if (aPaneElement.contentHeight > targetHeight - verticalPadding) {
+ // To workaround the bottom border of a groupbox from being + // To workaround the bottom border of a groupbox from being
+ // cutoff an hbox with a class of bottomBox may enclose it. + // cutoff an hbox with a class of bottomBox may enclose it.
@ -1650,7 +1588,7 @@ new file mode 100644
+ var bottomPadding = 0; + var bottomPadding = 0;
+ var bottomBox = aPaneElement.getElementsByAttribute("class", "bottomBox")[0]; + var bottomBox = aPaneElement.getElementsByAttribute("class", "bottomBox")[0];
+ if (bottomBox) + if (bottomBox)
+ bottomPadding = parseInt(window.getComputedStyle(bottomBox, "").paddingBottom); + bottomPadding = parseInt(window.getComputedStyle(bottomBox).paddingBottom);
+ window.innerHeight += bottomPadding + verticalPadding + aPaneElement.contentHeight - targetHeight; + window.innerHeight += bottomPadding + verticalPadding + aPaneElement.contentHeight - targetHeight;
+ } + }
+ +
@ -1672,12 +1610,8 @@ new file mode 100644
+ <![CDATA[ + <![CDATA[
+ var psvc = Components.classes["@mozilla.org/preferences-service;1"] + var psvc = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch); + .getService(Components.interfaces.nsIPrefBranch);
+ var animate = /Mac/.test(navigator.platform); + return psvc.getBoolPref("browser.preferences.animateFadeIn",
+ try { + /Mac/.test(navigator.platform));
+ animate = psvc.getBoolPref("browser.preferences.animateFadeIn");
+ }
+ catch (e) { }
+ return animate;
+ ]]> + ]]>
+ </getter> + </getter>
+ </property> + </property>
@ -1729,14 +1663,13 @@ new file mode 100644
+ if (increment != 0) { + if (increment != 0) {
+ window.innerHeight += increment; + window.innerHeight += increment;
+ this._currentHeight += increment; + this._currentHeight += increment;
+ } + } else {
+ else {
+ aTimer.cancel(); + aTimer.cancel();
+ this._setUpFadeTimer(); + this._setUpFadeTimer();
+ } + }
+ } else if (aTimer == this._fadeTimer) { + } else if (aTimer == this._fadeTimer) {
+ var elt = document.getElementById(this.lastSelected); + var elt = document.getElementById(this.lastSelected);
+ var newOpacity = parseFloat(window.getComputedStyle(elt, "").opacity) + this._fadeIncrement; + var newOpacity = parseFloat(window.getComputedStyle(elt).opacity) + this._fadeIncrement;
+ if (newOpacity < 1.0) + if (newOpacity < 1.0)
+ elt.style.opacity = newOpacity; + elt.style.opacity = newOpacity;
+ else { + else {
@ -1825,8 +1758,7 @@ new file mode 100644
+ if ("initWithParams" in win) + if ("initWithParams" in win)
+ win.initWithParams(aParams); + win.initWithParams(aParams);
+ win.focus(); + win.focus();
+ } + } else {
+ else {
+ var features = "resizable,dialog=no,centerscreen" + (aFeatures != "" ? ("," + aFeatures) : ""); + var features = "resizable,dialog=no,centerscreen" + (aFeatures != "" ? ("," + aFeatures) : "");
+ var parentWindow = (this.instantApply || !window.opener || window.opener.closed) ? window : window.opener; + var parentWindow = (this.instantApply || !window.opener || window.opener.closed) ? window : window.opener;
+ win = parentWindow.openDialog(aURL, "_blank", features, aParams); + win = parentWindow.openDialog(aURL, "_blank", features, aParams);
@ -1847,15 +1779,12 @@ new file mode 100644
+ .getService(Components.interfaces.nsIScriptSecurityManager); + .getService(Components.interfaces.nsIScriptSecurityManager);
+ if (this.type == "child" && window.opener && + if (this.type == "child" && window.opener &&
+ secMan.isSystemPrincipal(window.opener.document.nodePrincipal)) { + secMan.isSystemPrincipal(window.opener.document.nodePrincipal)) {
+ let psvc = Components.classes["@mozilla.org/preferences-service;1"]
+ .getService(Components.interfaces.nsIPrefBranch);
+ var pdocEl = window.opener.document.documentElement; + var pdocEl = window.opener.document.documentElement;
+ if (pdocEl.instantApply) { + if (pdocEl.instantApply) {
+ let panes = this.preferencePanes; + let panes = this.preferencePanes;
+ for (let i = 0; i < panes.length; ++i) + for (let i = 0; i < panes.length; ++i)
+ panes[i].writePreferences(true); + panes[i].writePreferences(true);
+ } + } else {
+ else {
+ // Clone all the preferences elements from the child document and + // Clone all the preferences elements from the child document and
+ // insert them into the pane collection of the parent. + // insert them into the pane collection of the parent.
+ var pdoc = window.opener.document; + var pdoc = window.opener.document;
@ -1898,8 +1827,7 @@ new file mode 100644
+ } + }
+ } + }
+ } + }
+ } + } else {
+ else {
+ let panes = this.preferencePanes; + let panes = this.preferencePanes;
+ for (var i = 0; i < panes.length; ++i) + for (var i = 0; i < panes.length; ++i)
+ panes[i].writePreferences(false); + panes[i].writePreferences(false);
@ -2037,7 +1965,8 @@ new file mode 100644
+ while (temp && temp.nodeType == Node.ELEMENT_NODE && + while (temp && temp.nodeType == Node.ELEMENT_NODE &&
+ !temp.hasAttribute("preference")) + !temp.hasAttribute("preference"))
+ temp = temp.parentNode; + temp = temp.parentNode;
+ return temp.nodeType == Node.ELEMENT_NODE ? temp : aStartElement; + return temp && temp.nodeType == Node.ELEMENT_NODE ?
+ temp : aStartElement;
+ ]]> + ]]>
+ </body> + </body>
+ </method> + </method>
@ -2108,9 +2037,9 @@ new file mode 100644
+ +
+ <property name="contentHeight"> + <property name="contentHeight">
+ <getter> + <getter>
+ var targetHeight = parseInt(window.getComputedStyle(this._content, "").height); + var targetHeight = parseInt(window.getComputedStyle(this._content).height);
+ targetHeight += parseInt(window.getComputedStyle(this._content, "").marginTop); + targetHeight += parseInt(window.getComputedStyle(this._content).marginTop);
+ targetHeight += parseInt(window.getComputedStyle(this._content, "").marginBottom); + targetHeight += parseInt(window.getComputedStyle(this._content).marginBottom);
+ return targetHeight; + return targetHeight;
+ </getter> + </getter>
+ </property> + </property>
@ -2150,8 +2079,7 @@ new file mode 100644
+ try { + try {
+ var preference = this.preferenceForElement(elements[i]); + var preference = this.preferenceForElement(elements[i]);
+ preference.setElementValue(elements[i]); + preference.setElementValue(elements[i]);
+ } + } catch (e) {
+ catch (e) {
+ dump("*** No preference found for " + elements[i].getAttribute("preference") + "\n"); + dump("*** No preference found for " + elements[i].getAttribute("preference") + "\n");
+ } + }
+ } + }
@ -2191,7 +2119,7 @@ new file mode 100644
diff --git a/toolkit/mozapps/downloads/nsHelperAppDlg.js b/toolkit/mozapps/downloads/nsHelperAppDlg.js diff --git a/toolkit/mozapps/downloads/nsHelperAppDlg.js b/toolkit/mozapps/downloads/nsHelperAppDlg.js
--- a/toolkit/mozapps/downloads/nsHelperAppDlg.js --- a/toolkit/mozapps/downloads/nsHelperAppDlg.js
+++ b/toolkit/mozapps/downloads/nsHelperAppDlg.js +++ b/toolkit/mozapps/downloads/nsHelperAppDlg.js
@@ -627,17 +627,17 @@ nsUnknownContentTypeDialog.prototype = { @@ -628,17 +628,17 @@ nsUnknownContentTypeDialog.prototype = {
else else
typeString = mimeInfo.MIMEType; typeString = mimeInfo.MIMEType;
} }
@ -2210,7 +2138,7 @@ diff --git a/toolkit/mozapps/downloads/nsHelperAppDlg.js b/toolkit/mozapps/downl
}, },
// Returns true if opening the default application makes sense. // Returns true if opening the default application makes sense.
@@ -801,17 +801,17 @@ nsUnknownContentTypeDialog.prototype = { @@ -802,17 +802,17 @@ nsUnknownContentTypeDialog.prototype = {
switch (this.dialogElement("openHandler").selectedIndex) { switch (this.dialogElement("openHandler").selectedIndex) {
case 0: case 0:
// No app need be specified in this case. // No app need be specified in this case.
@ -2229,15 +2157,15 @@ diff --git a/toolkit/mozapps/downloads/nsHelperAppDlg.js b/toolkit/mozapps/downl
this.mDialog.document.documentElement.getButton("accept").disabled = !ok; this.mDialog.document.documentElement.getButton("accept").disabled = !ok;
}, },
@@ -1068,30 +1068,56 @@ nsUnknownContentTypeDialog.prototype = { @@ -1067,30 +1067,57 @@ nsUnknownContentTypeDialog.prototype = {
if (params.handlerApp &&
params.handlerApp.executable && params.handlerApp.executable &&
params.handlerApp.executable.isFile()) { params.handlerApp.executable.isFile()) {
// Remember the file they chose to run. // Remember the file they chose to run.
this.chosenApp = params.handlerApp; this.chosenApp = params.handlerApp;
} }
} } else if ("@mozilla.org/applicationchooser;1" in Components.classes) {
else {
#if MOZ_WIDGET_GTK == 3
- var nsIApplicationChooser = Components.interfaces.nsIApplicationChooser; - var nsIApplicationChooser = Components.interfaces.nsIApplicationChooser;
- var appChooser = Components.classes["@mozilla.org/applicationchooser;1"] - var appChooser = Components.classes["@mozilla.org/applicationchooser;1"]
- .createInstance(nsIApplicationChooser); - .createInstance(nsIApplicationChooser);
@ -2248,7 +2176,8 @@ diff --git a/toolkit/mozapps/downloads/nsHelperAppDlg.js b/toolkit/mozapps/downl
- contentTypeDialogObj.chosenApp = aResult.QueryInterface(Components.interfaces.nsILocalHandlerApp); - contentTypeDialogObj.chosenApp = aResult.QueryInterface(Components.interfaces.nsILocalHandlerApp);
+ // handle the KDE case which is implemented in the filepicker + // handle the KDE case which is implemented in the filepicker
+ // therefore falling back to Gtk2 like behaviour if KDE is running + // therefore falling back to Gtk2 like behaviour if KDE is running
+ // FIXME this should be better handled in the nsIApplicationChooser interface + // FIXME this should be better handled in the nsIApplicationChooser
+ // interface
+ var env = Components.classes["@mozilla.org/process/environment;1"] + var env = Components.classes["@mozilla.org/process/environment;1"]
+ .getService(Components.interfaces.nsIEnvironment); + .getService(Components.interfaces.nsIEnvironment);
+ if (env.get('KDE_FULL_SESSION') == "true") + if (env.get('KDE_FULL_SESSION') == "true")
@ -2291,7 +2220,7 @@ diff --git a/toolkit/mozapps/downloads/nsHelperAppDlg.js b/toolkit/mozapps/downl
+ // The finishChooseApp is called from appChooserCallback + // The finishChooseApp is called from appChooserCallback
+ return; + return;
+ } + }
#else } else {
var nsIFilePicker = Components.interfaces.nsIFilePicker; var nsIFilePicker = Components.interfaces.nsIFilePicker;
var fp = Components.classes["@mozilla.org/filepicker;1"] var fp = Components.classes["@mozilla.org/filepicker;1"]
.createInstance(nsIFilePicker); .createInstance(nsIFilePicker);
@ -2396,8 +2325,8 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
--- a/toolkit/xre/moz.build --- a/toolkit/xre/moz.build
+++ b/toolkit/xre/moz.build +++ b/toolkit/xre/moz.build
@@ -40,17 +40,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co @@ -61,17 +61,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
'updaterfileutils_osx.mm', '../components/printingui/mac',
] ]
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit': elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit':
UNIFIED_SOURCES += [ UNIFIED_SOURCES += [
@ -2841,7 +2770,7 @@ diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
'android/nsExternalSharingAppService.cpp', 'android/nsExternalSharingAppService.cpp',
'android/nsExternalURLHandlerService.cpp', 'android/nsExternalURLHandlerService.cpp',
'android/nsMIMEInfoAndroid.cpp', 'android/nsMIMEInfoAndroid.cpp',
@@ -123,16 +125,17 @@ include('/ipc/chromium/chromium-config.m @@ -125,16 +127,17 @@ include('/ipc/chromium/chromium-config.m
FINAL_LIBRARY = 'xul' FINAL_LIBRARY = 'xul'
@ -3200,7 +3129,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
#include "nsXPIDLString.h" #include "nsXPIDLString.h"
#include "nsIURL.h" #include "nsIURL.h"
#include "nsIFileStreams.h" #include "nsIFileStreams.h"
@@ -1146,26 +1146,26 @@ nsresult nsOSHelperAppService::OSProtoco @@ -1143,26 +1143,26 @@ nsresult nsOSHelperAppService::OSProtoco
ContentAction::Action::defaultActionForScheme(QString(aProtocolScheme) + ':'); ContentAction::Action::defaultActionForScheme(QString(aProtocolScheme) + ':');
if (action.isValid()) if (action.isValid())
@ -3229,7 +3158,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
nsresult nsOSHelperAppService::GetFileTokenForPath(const char16_t * platformAppPath, nsIFile ** aFile) nsresult nsOSHelperAppService::GetFileTokenForPath(const char16_t * platformAppPath, nsIFile ** aFile)
{ {
@@ -1252,17 +1252,17 @@ nsOSHelperAppService::GetFromExtension(c @@ -1249,17 +1249,17 @@ nsOSHelperAppService::GetFromExtension(c
mime_types_description, mime_types_description,
true); true);
@ -3248,7 +3177,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt),
majorType, majorType,
@@ -1373,17 +1373,17 @@ nsOSHelperAppService::GetFromType(const @@ -1370,17 +1370,17 @@ nsOSHelperAppService::GetFromType(const
nsAutoString extensions, mime_types_description; nsAutoString extensions, mime_types_description;
LookUpExtensionsAndDescription(majorType, LookUpExtensionsAndDescription(majorType,
minorType, minorType,
@ -3270,7 +3199,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
--- a/widget/gtk/moz.build --- a/widget/gtk/moz.build
+++ b/widget/gtk/moz.build +++ b/widget/gtk/moz.build
@@ -101,16 +101,17 @@ else: @@ -109,16 +109,17 @@ else:
include('/ipc/chromium/chromium-config.mozbuild') include('/ipc/chromium/chromium-config.mozbuild')
FINAL_LIBRARY = 'xul' FINAL_LIBRARY = 'xul'
@ -3281,13 +3210,13 @@ diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
'/other-licenses/atk-1.0', '/other-licenses/atk-1.0',
+ '/toolkit/xre', + '/toolkit/xre',
'/widget', '/widget',
'/widget/headless',
] ]
if CONFIG['MOZ_X11']: if CONFIG['MOZ_X11']:
LOCAL_INCLUDES += [ LOCAL_INCLUDES += [
'/widget/x11', '/widget/x11',
] ]
diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
--- a/widget/gtk/nsFilePicker.cpp --- a/widget/gtk/nsFilePicker.cpp
+++ b/widget/gtk/nsFilePicker.cpp +++ b/widget/gtk/nsFilePicker.cpp
@ -3645,7 +3574,7 @@ diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h
diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp
--- a/xpcom/components/ManifestParser.cpp --- a/xpcom/components/ManifestParser.cpp
+++ b/xpcom/components/ManifestParser.cpp +++ b/xpcom/components/ManifestParser.cpp
@@ -32,16 +32,17 @@ @@ -33,16 +33,17 @@
#include "nsTextFormatter.h" #include "nsTextFormatter.h"
#include "nsVersionComparator.h" #include "nsVersionComparator.h"
#include "nsXPCOMCIDInternal.h" #include "nsXPCOMCIDInternal.h"
@ -3663,7 +3592,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
const char* directive; const char* directive;
int argc; int argc;
@@ -472,16 +473,17 @@ ParseManifest(NSLocationType aType, File @@ -466,16 +467,17 @@ ParseManifest(NSLocationType aType, File
NS_NAMED_LITERAL_STRING(kRemoteEnabled, "remoteenabled"); NS_NAMED_LITERAL_STRING(kRemoteEnabled, "remoteenabled");
NS_NAMED_LITERAL_STRING(kRemoteRequired, "remoterequired"); NS_NAMED_LITERAL_STRING(kRemoteRequired, "remoterequired");
NS_NAMED_LITERAL_STRING(kApplication, "application"); NS_NAMED_LITERAL_STRING(kApplication, "application");
@ -3681,7 +3610,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
NS_NAMED_LITERAL_STRING(kMain, "main"); NS_NAMED_LITERAL_STRING(kMain, "main");
NS_NAMED_LITERAL_STRING(kContent, "content"); NS_NAMED_LITERAL_STRING(kContent, "content");
@@ -532,44 +534,49 @@ ParseManifest(NSLocationType aType, File @@ -526,44 +528,49 @@ ParseManifest(NSLocationType aType, File
CopyUTF8toUTF16(s, abi); CopyUTF8toUTF16(s, abi);
abi.Insert(char16_t('_'), 0); abi.Insert(char16_t('_'), 0);
abi.Insert(osTarget, 0); abi.Insert(osTarget, 0);
@ -3731,7 +3660,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
process = kMain; process = kMain;
} }
@@ -672,25 +679,27 @@ ParseManifest(NSLocationType aType, File @@ -666,25 +673,27 @@ ParseManifest(NSLocationType aType, File
TriState stOsVersion = eUnspecified; TriState stOsVersion = eUnspecified;
TriState stOs = eUnspecified; TriState stOs = eUnspecified;
TriState stABI = eUnspecified; TriState stABI = eUnspecified;
@ -3748,7 +3677,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
NS_ConvertASCIItoUTF16 wtoken(token); NS_ConvertASCIItoUTF16 wtoken(token);
if (CheckStringFlag(kApplication, wtoken, appID, stApp) || if (CheckStringFlag(kApplication, wtoken, appID, stApp) ||
CheckStringFlag(kOs, wtoken, osTarget, stOs) || CheckOsFlag(kOs, wtoken, osTarget, stOs) ||
CheckStringFlag(kABI, wtoken, abi, stABI) || CheckStringFlag(kABI, wtoken, abi, stABI) ||
+ CheckStringFlag(kDesktop, wtoken, desktop, stDesktop) || + CheckStringFlag(kDesktop, wtoken, desktop, stDesktop) ||
CheckStringFlag(kProcess, wtoken, process, stProcess) || CheckStringFlag(kProcess, wtoken, process, stProcess) ||
@ -3759,7 +3688,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
} }
#if defined(MOZ_WIDGET_ANDROID) #if defined(MOZ_WIDGET_ANDROID)
@@ -740,16 +749,17 @@ ParseManifest(NSLocationType aType, File @@ -729,16 +738,17 @@ ParseManifest(NSLocationType aType, File
} }
if (!ok || if (!ok ||
@ -3815,7 +3744,7 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
#include "prmem.h" #include "prmem.h"
#include "plbase64.h" #include "plbase64.h"
@@ -1948,42 +1949,52 @@ nsLocalFile::SetPersistentDescriptor(con @@ -1941,59 +1942,74 @@ nsLocalFile::SetPersistentDescriptor(con
return InitWithNativePath(aPersistentDescriptor); return InitWithNativePath(aPersistentDescriptor);
#endif #endif
} }
@ -3839,22 +3768,32 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
if (isDirectory) { if (isDirectory) {
- return giovfs->ShowURIForInput(mPath); - return giovfs->ShowURIForInput(mPath);
+ url = mPath; + url = mPath;
} else if (NS_SUCCEEDED(giovfs->OrgFreedesktopFileManager1ShowItems(mPath))) {
return NS_OK;
} else {
nsCOMPtr<nsIFile> parentDir;
nsAutoCString dirPath;
if (NS_FAILED(GetParent(getter_AddRefs(parentDir)))) {
return NS_ERROR_FAILURE;
}
if (NS_FAILED(parentDir->GetNativePath(dirPath))) {
return NS_ERROR_FAILURE;
}
- return giovfs->ShowURIForInput(dirPath);
+ url = dirPath;
} }
+ if (NS_SUCCEEDED(giovfs->OrgFreedesktopFileManager1ShowItems(mPath))) {
return NS_OK;
}
nsCOMPtr<nsIFile> parentDir;
nsAutoCString dirPath;
if (NS_FAILED(GetParent(getter_AddRefs(parentDir)))) {
return NS_ERROR_FAILURE;
}
if (NS_FAILED(parentDir->GetNativePath(dirPath))) {
return NS_ERROR_FAILURE;
}
- return giovfs->ShowURIForInput(dirPath);
+ url = dirPath;
#elif defined(MOZ_WIDGET_COCOA)
CFURLRef url;
if (NS_SUCCEEDED(GetCFURL(&url))) {
nsresult rv = CocoaFileUtils::RevealFileInFinder(url);
::CFRelease(url);
return rv;
}
return NS_ERROR_FAILURE;
#else
return NS_ERROR_FAILURE;
#endif
+ if(nsKDEUtils::kdeSupport()) { + if(nsKDEUtils::kdeSupport()) {
+ nsTArray<nsCString> command; + nsTArray<nsCString> command;
+ command.AppendElement( NS_LITERAL_CSTRING("REVEAL") ); + command.AppendElement( NS_LITERAL_CSTRING("REVEAL") );
@ -3866,17 +3805,6 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
+ return NS_ERROR_FAILURE; + return NS_ERROR_FAILURE;
+ +
+ return giovfs->ShowURIForInput(url); + return giovfs->ShowURIForInput(url);
#elif defined(MOZ_WIDGET_COCOA)
CFURLRef url;
if (NS_SUCCEEDED(GetCFURL(&url))) {
nsresult rv = CocoaFileUtils::RevealFileInFinder(url);
::CFRelease(url);
return rv;
}
return NS_ERROR_FAILURE;
@@ -1991,16 +2002,22 @@ nsLocalFile::Reveal()
return NS_ERROR_FAILURE;
#endif
} }
NS_IMETHODIMP NS_IMETHODIMP

View File

@ -1,13 +1,13 @@
# HG changeset patch # HG changeset patch
# User Wolfgang Rosenauer <wr@rosenauer.org> # User Wolfgang Rosenauer <wr@rosenauer.org>
# Parent 5a29924228527f8882c83cf62d470963ea1ce62e # Parent 5a29924228527f8882c83cf62d470963ea1ce62e
# Parent 4f39ed617c2f151a3a15903c7ae4471b66774e9e # Parent 242f2521ed48bb63b91582956b5e4af80bcb3378
Bug 583793 - Firefox interface language set to LANG, ignores LANGUAGE Bug 583793 - Firefox interface language set to LANG, ignores LANGUAGE
diff --git a/intl/locale/nsLocaleService.cpp b/intl/locale/nsLocaleService.cpp diff --git a/intl/locale/nsLocaleService.cpp b/intl/locale/nsLocaleService.cpp
--- a/intl/locale/nsLocaleService.cpp --- a/intl/locale/nsLocaleService.cpp
+++ b/intl/locale/nsLocaleService.cpp +++ b/intl/locale/nsLocaleService.cpp
@@ -114,16 +114,17 @@ nsLocaleService::nsLocaleService(void) @@ -116,16 +116,17 @@ nsLocaleService::nsLocaleService(void)
NS_ENSURE_SUCCESS_VOID(rv); NS_ENSURE_SUCCESS_VOID(rv);
#endif #endif
#if defined(XP_UNIX) && !defined(XP_MACOSX) #if defined(XP_UNIX) && !defined(XP_MACOSX)
@ -25,7 +25,7 @@ diff --git a/intl/locale/nsLocaleService.cpp b/intl/locale/nsLocaleService.cpp
for( i = 0; i < LocaleListLength; i++ ) { for( i = 0; i < LocaleListLength; i++ ) {
nsresult result; nsresult result;
// setlocale( , "") evaluates LC_* and LANG // setlocale( , "") evaluates LC_* and LANG
@@ -149,16 +150,36 @@ nsLocaleService::nsLocaleService(void) @@ -151,16 +152,37 @@ nsLocaleService::nsLocaleService(void)
} else { } else {
CopyASCIItoUTF16(lang, platformLocale); CopyASCIItoUTF16(lang, platformLocale);
result = nsPosixLocale::GetXPLocale(lang, xpLocale); result = nsPosixLocale::GetXPLocale(lang, xpLocale);
@ -54,11 +54,12 @@ diff --git a/intl/locale/nsLocaleService.cpp b/intl/locale/nsLocaleService.cpp
+ } + }
+ } + }
+ } + }
+
resultLocale->AddCategory(category, xpLocale); resultLocale->AddCategory(category, xpLocale);
resultLocale->AddCategory(category_platform, platformLocale); resultLocale->AddCategory(category_platform, platformLocale);
} }
mSystemLocale = do_QueryInterface(resultLocale); mSystemLocale = do_QueryInterface(resultLocale);
mApplicationLocale = do_QueryInterface(resultLocale); mApplicationLocale = do_QueryInterface(resultLocale);
#endif // XP_UNIX #endif // XP_UNIX

View File

@ -9,7 +9,7 @@ retrieving revision 1.1
diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
--- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp --- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
+++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp +++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
@@ -53,23 +53,27 @@ nsUnixSystemProxySettings::GetMainThread @@ -54,23 +54,27 @@ nsUnixSystemProxySettings::GetMainThread
// dbus prevents us from being threadsafe, but this routine should not block anyhow // dbus prevents us from being threadsafe, but this routine should not block anyhow
*aMainThreadOnly = true; *aMainThreadOnly = true;
return NS_OK; return NS_OK;
@ -37,7 +37,7 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
+ mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID); + mGConf = do_GetService(NS_GCONFSERVICE_CONTRACTID);
+ } + }
} }
return NS_OK; return NS_OK;
} }

View File

@ -1,7 +1,7 @@
# HG changeset patch # HG changeset patch
# User Petr Cerny <pcerny@novell.com> # User Petr Cerny <pcerny@novell.com>
# Parent 7308e4a7c1f769f4bbbc90870b849cadd99495a6 # Parent 7308e4a7c1f769f4bbbc90870b849cadd99495a6
# Parent 03565086f1e230cf6f0f6c01bf9a792c732de50b # Parent fe1932b7223a298863663244accc524d474a9f6d
Bug 634334 - call to the ntlm_auth helper fails Bug 634334 - call to the ntlm_auth helper fails
diff --git a/extensions/auth/nsAuthSambaNTLM.cpp b/extensions/auth/nsAuthSambaNTLM.cpp diff --git a/extensions/auth/nsAuthSambaNTLM.cpp b/extensions/auth/nsAuthSambaNTLM.cpp
@ -25,4 +25,4 @@ diff --git a/extensions/auth/nsAuthSambaNTLM.cpp b/extensions/auth/nsAuthSambaNT
}; };
bool isOK = SpawnIOChild(const_cast<char* const*>(args), &mChildPID, &mFromChildFD, &mToChildFD); bool isOK = SpawnIOChild(const_cast<char* const*>(args), &mChildPID, &mFromChildFD, &mToChildFD);
if (!isOK) if (!isOK)

View File

@ -1,143 +0,0 @@
From: Hans Petter Jansson <hpj@copyleft.no>
Wolfgang Rosenauer <wr@rosenauer.org>
Subject: use libnsssharedhelper if available at compile time
(can be disabled by exporting MOZ_XRE_NO_NSSHELPER=1)
References:
diff --git a/old-configure.in b/old-configure.in
--- a/old-configure.in
+++ b/old-configure.in
@@ -5358,16 +5358,31 @@ esac
AC_SUBST(MOZ_TREE_CAIRO)
AC_SUBST_LIST(MOZ_CAIRO_CFLAGS)
AC_SUBST_LIST(MOZ_CAIRO_LIBS)
AC_SUBST_LIST(MOZ_CAIRO_OSLIBS)
AC_SUBST(MOZ_TREE_PIXMAN)
dnl ========================================================
+dnl Check for nss-shared-helper
+dnl ========================================================
+
+ PKG_CHECK_MODULES(NSSHELPER, nss-shared-helper,
+ [MOZ_ENABLE_NSSHELPER=1],
+ [MOZ_ENABLE_NSSHELPER=])
+
+if test "$MOZ_ENABLE_NSSHELPER"; then
+ AC_DEFINE(MOZ_ENABLE_NSSHELPER)
+fi
+AC_SUBST(MOZ_ENABLE_NSSHELPER)
+AC_SUBST_LIST(NSSHELPER_CFLAGS)
+AC_SUBST_LIST(NSSHELPER_LIBS)
+
+dnl ========================================================
dnl disable xul
dnl ========================================================
MOZ_ARG_DISABLE_BOOL(xul,
[ --disable-xul Disable XUL],
MOZ_XUL= )
if test "$MOZ_XUL"; then
AC_DEFINE(MOZ_XUL)
else
diff --git a/security/manager/ssl/moz.build b/security/manager/ssl/moz.build
--- a/security/manager/ssl/moz.build
+++ b/security/manager/ssl/moz.build
@@ -160,16 +160,19 @@ if CONFIG['MOZ_XUL']:
]
UNIFIED_SOURCES += [
'md4.c',
]
FINAL_LIBRARY = 'xul'
+CXXFLAGS += sorted(CONFIG['NSSHELPER_CFLAGS'])
+OS_LIBS += sorted(CONFIG['NSSHELPER_LIBS'])
+
LOCAL_INCLUDES += [
'/dom/base',
'/dom/crypto',
'/security/certverifier',
'/security/pkix/include',
]
LOCAL_INCLUDES += [
diff --git a/security/manager/ssl/nsNSSComponent.cpp b/security/manager/ssl/nsNSSComponent.cpp
--- a/security/manager/ssl/nsNSSComponent.cpp
+++ b/security/manager/ssl/nsNSSComponent.cpp
@@ -1,14 +1,21 @@
/* -*- Mode: C++; tab-width: 2; 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/. */
+#ifdef MOZ_ENABLE_NSSHELPER
+#pragma GCC visibility push(default)
+#include <nss-shared-helper.h>
+#pragma GCC visibility pop
+#include "prenv.h"
+#endif
+
#include "nsNSSComponent.h"
#include "ExtendedValidation.h"
#include "NSSCertDBTrustDomain.h"
#include "ScopedNSSTypes.h"
#include "SharedSSLState.h"
#include "cert.h"
#include "certdb.h"
@@ -1702,17 +1709,31 @@ nsNSSComponent::InitializeNSS()
return rv;
}
}
MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("inSafeMode: %u\n", inSafeMode));
if (!nocertdb && !profileStr.IsEmpty()) {
// First try to initialize the NSS DB in read/write mode.
// Only load PKCS11 modules if we're not in safe mode.
+#ifdef MOZ_ENABLE_NSSHELPER
+ if (PR_GetEnv("MOZ_XRE_NO_NSSHELPER")) {
+ init_rv = ::mozilla::psm::InitializeNSS(profileStr.get(), false, !inSafeMode);
+ } else {
+ uint32_t flags = NSS_INIT_NOROOTINIT | NSS_INIT_OPTIMIZESPACE;
+ init_rv = ::nsshelp_open_db ("Firefox", profileStr.get(), flags);
+
+ if (init_rv != SECSuccess) {
+ MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("can not init NSS using nsshelp_open_db in %s\n", profileStr.get()));
+ init_rv = ::mozilla::psm::InitializeNSS(profileStr.get(), false, !inSafeMode);
+ }
+ }
+#else
init_rv = ::mozilla::psm::InitializeNSS(profileStr.get(), false, !inSafeMode);
+#endif
// If that fails, attempt read-only mode.
if (init_rv != SECSuccess) {
MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("could not init NSS r/w in %s\n", profileStr.get()));
init_rv = ::mozilla::psm::InitializeNSS(profileStr.get(), true, !inSafeMode);
}
if (init_rv != SECSuccess) {
MOZ_LOG(gPIPNSSLog, LogLevel::Debug, ("could not init in r/o either\n"));
}
diff --git a/toolkit/library/moz.build b/toolkit/library/moz.build
--- a/toolkit/library/moz.build
+++ b/toolkit/library/moz.build
@@ -220,16 +220,18 @@ OS_LIBS += CONFIG['MOZ_CAIRO_OSLIBS']
OS_LIBS += CONFIG['MOZ_WEBRTC_X11_LIBS']
if CONFIG['SERVO_TARGET_DIR']:
if CONFIG['_MSC_VER']:
OS_LIBS += ['%s/geckoservo' % CONFIG['SERVO_TARGET_DIR']]
else:
OS_LIBS += ['-L%s' % CONFIG['SERVO_TARGET_DIR'], '-lgeckoservo']
+OS_LIBS += sorted(CONFIG['NSSHELPER_LIBS'])
+
if CONFIG['MOZ_SYSTEM_JPEG']:
OS_LIBS += CONFIG['MOZ_JPEG_LIBS']
if CONFIG['MOZ_SYSTEM_PNG']:
OS_LIBS += CONFIG['MOZ_PNG_LIBS']
if CONFIG['MOZ_SYSTEM_HUNSPELL']:
OS_LIBS += CONFIG['MOZ_HUNSPELL_LIBS']

View File

@ -1,8 +1,17 @@
Index: mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc # HG changeset patch
=================================================================== # User Wolfgang Rosenauer <wr@rosenauer.org>
--- mozilla.orig/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc # Parent f6b8a48d89d77c7a3eb13fef234c618943306c2b
+++ mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc Replace struct ucontext with ucontext_t
@@ -40,15 +40,15 @@ namespace google_breakpad {
diff --git a/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.cc b/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.cc
--- a/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.cc
+++ b/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.cc
@@ -35,25 +35,25 @@
namespace google_breakpad {
// Minidump defines register structures which are different from the raw
// structures which we get from the kernel. These are platform specific
// functions to juggle the ucontext and user structures into minidump format.
#if defined(__i386__) #if defined(__i386__)
@ -21,7 +30,17 @@ Index: mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/dump_write
const struct _libc_fpstate* fp) { const struct _libc_fpstate* fp) {
const greg_t* regs = uc->uc_mcontext.gregs; const greg_t* regs = uc->uc_mcontext.gregs;
@@ -88,15 +88,15 @@ void UContextReader::FillCPUContext(RawC out->context_flags = MD_CONTEXT_X86_FULL |
MD_CONTEXT_X86_FLOATING_POINT;
out->gs = regs[REG_GS];
out->fs = regs[REG_FS];
@@ -83,25 +83,25 @@ void UContextReader::FillCPUContext(RawC
out->float_save.data_selector = fp->datasel;
// 8 registers * 10 bytes per register.
my_memcpy(out->float_save.register_area, fp->_st, 10 * 8);
}
#elif defined(__x86_64) #elif defined(__x86_64)
@ -40,7 +59,17 @@ Index: mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/dump_write
const struct _libc_fpstate* fpregs) { const struct _libc_fpstate* fpregs) {
const greg_t* regs = uc->uc_mcontext.gregs; const greg_t* regs = uc->uc_mcontext.gregs;
@@ -145,15 +145,15 @@ void UContextReader::FillCPUContext(RawC out->context_flags = MD_CONTEXT_AMD64_FULL;
out->cs = regs[REG_CSGSFS] & 0xffff;
out->fs = (regs[REG_CSGSFS] >> 32) & 0xffff;
@@ -140,25 +140,25 @@ void UContextReader::FillCPUContext(RawC
out->flt_save.mx_csr = fpregs->mxcsr;
out->flt_save.mx_csr_mask = fpregs->mxcr_mask;
my_memcpy(&out->flt_save.float_registers, &fpregs->_st, 8 * 16);
my_memcpy(&out->flt_save.xmm_registers, &fpregs->_xmm, 16 * 16);
}
#elif defined(__ARM_EABI__) #elif defined(__ARM_EABI__)
@ -59,7 +88,17 @@ Index: mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/dump_write
out->context_flags = MD_CONTEXT_ARM_FULL; out->context_flags = MD_CONTEXT_ARM_FULL;
out->iregs[0] = uc->uc_mcontext.arm_r0; out->iregs[0] = uc->uc_mcontext.arm_r0;
@@ -184,15 +184,15 @@ void UContextReader::FillCPUContext(RawC out->iregs[1] = uc->uc_mcontext.arm_r1;
out->iregs[2] = uc->uc_mcontext.arm_r2;
out->iregs[3] = uc->uc_mcontext.arm_r3;
out->iregs[4] = uc->uc_mcontext.arm_r4;
out->iregs[5] = uc->uc_mcontext.arm_r5;
@@ -179,25 +179,25 @@ void UContextReader::FillCPUContext(RawC
// TODO: fix this after fixing ExceptionHandler
out->float_save.fpscr = 0;
my_memset(&out->float_save.regs, 0, sizeof(out->float_save.regs));
my_memset(&out->float_save.extra, 0, sizeof(out->float_save.extra));
}
#elif defined(__aarch64__) #elif defined(__aarch64__)
@ -78,7 +117,17 @@ Index: mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/dump_write
const struct fpsimd_context* fpregs) { const struct fpsimd_context* fpregs) {
out->context_flags = MD_CONTEXT_ARM64_FULL; out->context_flags = MD_CONTEXT_ARM64_FULL;
@@ -210,15 +210,15 @@ void UContextReader::FillCPUContext(RawC out->cpsr = static_cast<uint32_t>(uc->uc_mcontext.pstate);
for (int i = 0; i < MD_CONTEXT_ARM64_REG_SP; ++i)
out->iregs[i] = uc->uc_mcontext.regs[i];
out->iregs[MD_CONTEXT_ARM64_REG_SP] = uc->uc_mcontext.sp;
out->iregs[MD_CONTEXT_ARM64_REG_PC] = uc->uc_mcontext.pc;
@@ -205,25 +205,25 @@ void UContextReader::FillCPUContext(RawC
out->float_save.fpsr = fpregs->fpsr;
out->float_save.fpcr = fpregs->fpcr;
my_memcpy(&out->float_save.regs, &fpregs->vregs,
MD_FLOATINGSAVEAREA_ARM64_FPR_COUNT * 16);
}
#elif defined(__mips__) #elif defined(__mips__)
@ -97,11 +146,20 @@ Index: mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/dump_write
#if _MIPS_SIM == _ABI64 #if _MIPS_SIM == _ABI64
out->context_flags = MD_CONTEXT_MIPS64_FULL; out->context_flags = MD_CONTEXT_MIPS64_FULL;
#elif _MIPS_SIM == _ABIO32 #elif _MIPS_SIM == _ABIO32
Index: mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.h out->context_flags = MD_CONTEXT_MIPS_FULL;
=================================================================== #else
--- mozilla.orig/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.h #error "This mips ABI is currently not supported (n32)"
+++ mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/dump_writer_common/ucontext_reader.h #endif
@@ -41,21 +41,21 @@ namespace google_breakpad {
diff --git a/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.h b/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.h
--- a/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.h
+++ b/toolkit/crashreporter/breakpad-client/linux/dump_writer_common/ucontext_reader.h
@@ -36,29 +36,29 @@
#include "linux/dump_writer_common/raw_context_cpu.h"
#include "common/memory.h"
#include "google_breakpad/common/minidump_format.h"
namespace google_breakpad {
// Wraps platform-dependent implementations of accessors to ucontext structs. // Wraps platform-dependent implementations of accessors to ucontext structs.
struct UContextReader { struct UContextReader {
@ -128,11 +186,18 @@ Index: mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/dump_write
#endif #endif
}; };
Index: mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.cc } // namespace google_breakpad
===================================================================
--- mozilla.orig/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.cc #endif // CLIENT_LINUX_DUMP_WRITER_COMMON_UCONTEXT_READER_H
+++ mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.cc diff --git a/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.cc b/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.cc
@@ -439,9 +439,9 @@ bool ExceptionHandler::HandleSignal(int --- a/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.cc
+++ b/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.cc
@@ -434,30 +434,30 @@ bool ExceptionHandler::HandleSignal(int
info->si_code == SI_TKILL;
if (signal_trusted || (signal_pid_trusted && info->si_pid == getpid())) {
sys_prctl(PR_SET_DUMPABLE, 1, 0, 0, 0);
}
// Fill in all the holes in the struct to make Valgrind happy. // Fill in all the holes in the struct to make Valgrind happy.
memset(&g_crash_context_, 0, sizeof(g_crash_context_)); memset(&g_crash_context_, 0, sizeof(g_crash_context_));
memcpy(&g_crash_context_.siginfo, info, sizeof(siginfo_t)); memcpy(&g_crash_context_.siginfo, info, sizeof(siginfo_t));
@ -144,7 +209,10 @@ Index: mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/handler/ex
struct fpsimd_context* fp_ptr = struct fpsimd_context* fp_ptr =
(struct fpsimd_context*)&uc_ptr->uc_mcontext.__reserved; (struct fpsimd_context*)&uc_ptr->uc_mcontext.__reserved;
if (fp_ptr->head.magic == FPSIMD_MAGIC) { if (fp_ptr->head.magic == FPSIMD_MAGIC) {
@@ -452,7 +452,7 @@ bool ExceptionHandler::HandleSignal(int memcpy(&g_crash_context_.float_state, fp_ptr,
sizeof(g_crash_context_.float_state));
}
#elif !defined(__ARM_EABI__) && !defined(__mips__)
// FP state is not part of user ABI on ARM Linux. // FP state is not part of user ABI on ARM Linux.
// In case of MIPS Linux FP state is already part of struct ucontext // In case of MIPS Linux FP state is already part of struct ucontext
// and 'float_state' is not a member of CrashContext. // and 'float_state' is not a member of CrashContext.
@ -153,7 +221,17 @@ Index: mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/handler/ex
if (uc_ptr->uc_mcontext.fpregs) { if (uc_ptr->uc_mcontext.fpregs) {
memcpy(&g_crash_context_.float_state, uc_ptr->uc_mcontext.fpregs, memcpy(&g_crash_context_.float_state, uc_ptr->uc_mcontext.fpregs,
sizeof(g_crash_context_.float_state)); sizeof(g_crash_context_.float_state));
@@ -476,7 +476,7 @@ bool ExceptionHandler::SimulateSignalDel }
#endif
g_crash_context_.tid = syscall(__NR_gettid);
if (crash_handler_ != NULL) {
if (crash_handler_(&g_crash_context_, sizeof(g_crash_context_),
@@ -471,17 +471,17 @@ bool ExceptionHandler::HandleSignal(int
// This is a public interface to HandleSignal that allows the client to
// generate a crash dump. This function may run in a compromised context.
bool ExceptionHandler::SimulateSignalDelivery(int sig) {
siginfo_t siginfo = {};
// Mimic a trusted signal to allow tracing the process (see
// ExceptionHandler::HandleSignal(). // ExceptionHandler::HandleSignal().
siginfo.si_code = SI_USER; siginfo.si_code = SI_USER;
siginfo.si_pid = getpid(); siginfo.si_pid = getpid();
@ -162,11 +240,20 @@ Index: mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/handler/ex
getcontext(&context); getcontext(&context);
return HandleSignal(sig, &siginfo, &context); return HandleSignal(sig, &siginfo, &context);
} }
Index: mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.h
=================================================================== // This function may run in a compromised context: see the top of the file.
--- mozilla.orig/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.h bool ExceptionHandler::GenerateDump(CrashContext *context) {
+++ mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/handler/exception_handler.h if (IsOutOfProcess())
@@ -191,7 +191,7 @@ class ExceptionHandler { return crash_generation_client_->RequestDump(context, sizeof(*context));
diff --git a/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.h b/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.h
--- a/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.h
+++ b/toolkit/crashreporter/breakpad-client/linux/handler/exception_handler.h
@@ -186,17 +186,17 @@ class ExceptionHandler {
MinidumpCallback callback,
void* callback_context);
// This structure is passed to minidump_writer.h:WriteMinidump via an opaque
// blob. It shouldn't be needed in any user code.
struct CrashContext { struct CrashContext {
siginfo_t siginfo; siginfo_t siginfo;
pid_t tid; // the crashing thread. pid_t tid; // the crashing thread.
@ -175,11 +262,20 @@ Index: mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/handler/ex
#if !defined(__ARM_EABI__) && !defined(__mips__) #if !defined(__ARM_EABI__) && !defined(__mips__)
// #ifdef this out because FP state is not part of user ABI for Linux ARM. // #ifdef this out because FP state is not part of user ABI for Linux ARM.
// In case of MIPS Linux FP state is already part of struct // In case of MIPS Linux FP state is already part of struct
Index: mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/microdump_writer/microdump_writer.cc // ucontext so 'float_state' is not required.
=================================================================== fpstate_t float_state;
--- mozilla.orig/toolkit/crashreporter/google-breakpad/src/client/linux/microdump_writer/microdump_writer.cc #endif
+++ mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/microdump_writer/microdump_writer.cc };
@@ -571,7 +571,7 @@ class MicrodumpWriter {
diff --git a/toolkit/crashreporter/breakpad-client/linux/microdump_writer/microdump_writer.cc b/toolkit/crashreporter/breakpad-client/linux/microdump_writer/microdump_writer.cc
--- a/toolkit/crashreporter/breakpad-client/linux/microdump_writer/microdump_writer.cc
+++ b/toolkit/crashreporter/breakpad-client/linux/microdump_writer/microdump_writer.cc
@@ -566,17 +566,17 @@ class MicrodumpWriter {
++iter) {
DumpModule(iter->first, false, 0, iter->second);
}
return true;
}
void* Alloc(unsigned bytes) { return dumper_->allocator()->Alloc(bytes); } void* Alloc(unsigned bytes) { return dumper_->allocator()->Alloc(bytes); }
@ -188,11 +284,20 @@ Index: mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/microdump_
#if !defined(__ARM_EABI__) && !defined(__mips__) #if !defined(__ARM_EABI__) && !defined(__mips__)
const google_breakpad::fpstate_t* const float_state_; const google_breakpad::fpstate_t* const float_state_;
#endif #endif
Index: mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer.cc LinuxDumper* dumper_;
=================================================================== const MappingList& mapping_list_;
--- mozilla.orig/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer.cc const MicrodumpExtraInfo microdump_extra_info_;
+++ mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_writer/minidump_writer.cc char* log_line_;
@@ -1247,7 +1247,7 @@ class MinidumpWriter { };
diff --git a/toolkit/crashreporter/breakpad-client/linux/minidump_writer/minidump_writer.cc b/toolkit/crashreporter/breakpad-client/linux/minidump_writer/minidump_writer.cc
--- a/toolkit/crashreporter/breakpad-client/linux/minidump_writer/minidump_writer.cc
+++ b/toolkit/crashreporter/breakpad-client/linux/minidump_writer/minidump_writer.cc
@@ -1242,17 +1242,17 @@ class MinidumpWriter {
return false;
return WriteFile(result, buf);
}
// Only one of the 2 member variables below should be set to a valid value.
const int fd_; // File descriptor where the minidum should be written. const int fd_; // File descriptor where the minidum should be written.
const char* path_; // Path to the file where the minidum should be written. const char* path_; // Path to the file where the minidum should be written.
@ -201,3 +306,8 @@ Index: mozilla/toolkit/crashreporter/google-breakpad/src/client/linux/minidump_w
#if !defined(__ARM_EABI__) && !defined(__mips__) #if !defined(__ARM_EABI__) && !defined(__mips__)
const google_breakpad::fpstate_t* const float_state_; // ditto const google_breakpad::fpstate_t* const float_state_; // ditto
#endif #endif
LinuxDumper* dumper_;
MinidumpFileWriter minidump_writer_;
off_t minidump_size_limit_;
MDLocationDescriptor crashing_thread_context_;
// Blocks of memory written to the dump. These are all currently

View File

@ -72,7 +72,7 @@ fi
mozilla_lib=`file $MOZ_PROGRAM` mozilla_lib=`file $MOZ_PROGRAM`
LIB=lib LIB=lib
echo $mozilla_lib | grep -q -E 'ELF.64-bit.*(x86-64|S/390|PowerPC)' && LIB=lib64 echo $mozilla_lib | grep -q -E 'ELF.64-bit.*(x86-64|S/390|PowerPC|ARM aarch64)' && LIB=lib64
BROWSER_PLUGIN_DIR=/usr/$LIB/browser-plugins BROWSER_PLUGIN_DIR=/usr/$LIB/browser-plugins
if [ ! -d $BROWSER_PLUGIN_DIR ]; then if [ ! -d $BROWSER_PLUGIN_DIR ]; then
@ -102,6 +102,10 @@ fi
# disable Gnome crash dialog (doesn't make sense anyway) # disable Gnome crash dialog (doesn't make sense anyway)
export GNOME_DISABLE_CRASH_DIALOG=1 export GNOME_DISABLE_CRASH_DIALOG=1
# enable xinput2 (boo#1032003)
# breaks too many things right now (boo#1053959)
#export MOZ_USE_XINPUT2=1
moz_debug=0 moz_debug=0
script_args="" script_args=""
pass_arg_count=0 pass_arg_count=0

View File

@ -1,2 +1,2 @@
REV=20a1a6ad46d5 REV=8fbf05f4b921
REPO=http://hg.mozilla.org/releases/mozilla-esr52 REPO=http://hg.mozilla.org/releases/mozilla-release