$ git diff --patch-with-stat --summary 0681306249af77a63ca4eec1bd91e71293ca7700..742e4ba2ccf4ea10b0e9e35bee54f069290cde31
.abf.yml | 142 +-
build-nspr.patch | 28 +
firefox-48.0.1-qt-compile.patch | 73 -
firefox-57.0.4-bindgen_float128.patch | 19 -
firefox-72.0.2-sqlite-3.31.patch | 173 --
firefox-73.0-kde.patch | 282 ----
firefox-78.0-kde.patch => firefox-80.0-kde.patch | 12 +-
firefox.spec | 19 +-
freetype261.patch | 30 -
mozilla-73.0-kde.patch | 1938 ----------------------
mozilla-78.0-kde.patch => mozilla-80.0-kde.patch | 112 +-
prio-nss-build.patch | 88 -
rhbz-1291190-appchooser-crash.patch | 14 -
13 files changed, 169 insertions(+), 2761 deletions(-)
create mode 100644 build-nspr.patch
delete mode 100644 firefox-48.0.1-qt-compile.patch
delete mode 100644 firefox-57.0.4-bindgen_float128.patch
delete mode 100644 firefox-72.0.2-sqlite-3.31.patch
delete mode 100644 firefox-73.0-kde.patch
rename firefox-78.0-kde.patch => firefox-80.0-kde.patch (96%)
delete mode 100644 freetype261.patch
delete mode 100644 mozilla-73.0-kde.patch
rename mozilla-78.0-kde.patch => mozilla-80.0-kde.patch (95%)
delete mode 100644 prio-nss-build.patch
delete mode 100644 rhbz-1291190-appchooser-crash.patch
diff --git a/.abf.yml b/.abf.yml
index d4a8960..96ed4fb 100644
--- a/.abf.yml
+++ b/.abf.yml
@@ -1,75 +1,75 @@
sources:
- af.xpi: 0642084af964082c208b1ccecf887e178b28df8b
- ar.xpi: 7aaeb9adeb185d12b07e1aa60ca06b2f85d35b5a
- ast.xpi: 828f2eab993b43c0f602367c9ff7f75685e50338
+ af.xpi: 8b027222fe252dcce2fc6be7c48128877d78776c
+ ar.xpi: 04804e8b6b16125d3d4270455df0ca3b4805b981
+ ast.xpi: 1a264a5060db3fb5f33d6304f79e74f79e64fa6e
autoconf-2.13.tar.gz: e4826c8bd85325067818f19b2b2ad2b625da66fc
be.xpi: 12e55652aa01c3531dbeb1ac59b97eb649f937db
- bg.xpi: 96195abf0309ab5b00bcf1088ce36a5c117422e1
- bn.xpi: db93555ea52ab0f4bb6f9d1337e1013d35f9f3f4
- br.xpi: 7123b5a9d56f133aed3a000e6f883b59d307ebb2
- bs.xpi: d8b87325e230f9aa1ef5124ea77e02cd81844f86
- ca.xpi: fdad0689c36acb5940d52e66c0a2de2f3653b8a5
- cbindgen-vendor.tar.xz: 04a46d43f7f05e426bf2bd9f36592437353a3efc
- cs.xpi: b80b1abef319651a0d5aca17d76aedbd99c5a69b
- cy.xpi: 14a62092c45bd40b825a7b429a12085c90634295
- da.xpi: c829bf1742b67be170476224ea78c6cb71eb35cf
- de.xpi: 93fd3e1cbbedf8050e90d341c69ca53f2c15bd76
- el.xpi: 7db2c4aa44cecec3946d762dada1de7000239702
- en-GB.xpi: 9504d69a9fcf19585ecbf0f0c2e14a8ca1825167
- eo.xpi: 56636402da3cb4d36f8a1aacf219493f30cd7a07
- es-AR.xpi: 6e7bfd6c346a7a40e00a2ab9f5e7a452698437aa
- es-CL.xpi: 69a7c94fe3f9e7768fdbe7bc512f56259dcd1b9e
- es-ES.xpi: 18f54d16a019ab34c9dd69dfed7b9e6d01b5d7bc
- es-MX.xpi: 1c60989fbf1350eb769c9c3b7dcf29e6d5ddf3b9
- et.xpi: fcaf8f978085194f31e53e6fad62d9649de7ba72
- eu.xpi: ce9475989457ff7261630b0981e0fab443e17413
- fa.xpi: ff9a631d5b4dd4e2acf26877da44059d12a010e2
- fi.xpi: c7fd00920eb7c658f85a1e3dfd10e407e23df1d4
- firefox-78.0.1.source.tar.xz: 3de95657c9d26bacd9a36e62f756d090d09db63b
+ bg.xpi: ee8267d626b80a1df1d965f1fcd6121fa914e6f5
+ bn.xpi: 05039c64b8bef3e56b3a050a67195f43908beea1
+ br.xpi: 39f20efd9bb2f5a319ce9c1860798201092e5b69
+ bs.xpi: 14c57dc31866a6775467cf619059c2c3144368ae
+ ca.xpi: 009060b1ee62db658059f3faae7c0befd4999a3a
+ cbindgen-vendor.tar.xz: e6630767130f0e7b92f24e815cf4dd3831e4830c
+ cs.xpi: 3490c0f3a11a49ed032258cb3b8913e5c8fa1975
+ cy.xpi: 136567736eec5019a9c981dd8bcf28194fa0de0b
+ da.xpi: 440aaaa1ad6ae68dad122f1434dcd700d0ba9efa
+ de.xpi: 0800d4ce966cbe356d81cc1f30dac89c74df28f5
+ el.xpi: 9bd07d574574221e341812739d19bad7b293a5aa
+ en-GB.xpi: 1497cbaa3ddca81221431c410010509ba01917b7
+ eo.xpi: dd68e2a9f4564db78eee1ffefc96e2154a6f4498
+ es-AR.xpi: 6b66ca5b05615b52490dff14998b9d80c34dee44
+ es-CL.xpi: 8a32f798a6ab0398a26ec004543b33ef7089b4a4
+ es-ES.xpi: 3b7b1ef28e8ebd98ced6743bbb8224d83fe04ff4
+ es-MX.xpi: 589de09c367dd38e02beaf9ec83f3b9c8d5d3103
+ et.xpi: 0b914ef4a6d51676e552a143db0a3d67787f9501
+ eu.xpi: d1bc5205f969073d669b5eba569c6ed39bf09cf9
+ fa.xpi: 9c50ebffbe3b44ccdb7bf26a207391f2d1b66cee
+ fi.xpi: 2bc31f571b705a2701d2203459c5af8cb64ea7ec
+ firefox-82.0.source.tar.xz: aa8485a65038f1390eb9c367f5b6195cb7ca3bb8
firefox-omv-default-prefs.js: 7010f8f73032df2e7799843863b97c6a3ba36378
- fr.xpi: f7cbbe3aadbded4578c20e469c619b8e0ae33dca
- fy-NL.xpi: a30c8de02a4ea38949624ce01543ff63f15e7686
- ga-IE.xpi: 819614ce45bbdd822c2400dca8187a717690446d
- gd.xpi: 143410a717cf09ed3caf2271f3656ae6f1562eb4
- gl.xpi: 5fc34aee753cbdf264602c36652a8c48e46aa049
- gu-IN.xpi: 1bfefa9de7413410b6d5a00740eaadbb70e14bc6
- he.xpi: 9bb1bc76ca36fa3d9233d880037732ddcfdda7d6
- hi-IN.xpi: bf5040a55992f1d2ceff35e4de5313c9b77ba362
- hr.xpi: bc31884c038e5ed86c8ffcd229b45c6e027faf42
- hu.xpi: c9aa2604911c8007e66a091aac7327afa8d35403
- hy-AM.xpi: fc4825063898e026206d1240ba0e14e3a2edd87b
- id.xpi: 26830dc97fa93226b3f04dc2a86ad0dcb7156887
- is.xpi: c032a6c838132739d47c43139a94ceceba3c3e8a
- it.xpi: 7cbbbf34b985bbf610d79a53d93490f3d0206c9e
- ja.xpi: 73908f5b9f1f2b8f46f8d1609cc120c96fbf56f4
- kk.xpi: e63074e827c295b37e17fdb632af9a46ee94c153
- km.xpi: 6467a40617a687e0aded4cffe76745f97cfd8d59
- kn.xpi: 029489f97a4c801fcafd8258fce2210bddf004de
- ko.xpi: 70cb6698f68beab3858de969fe35cb1ec44e6b6f
- lt.xpi: b0e62367f6c658702bba250e4037c3023b799119
- lv.xpi: b0b8458f8fe4b1d2f8371ac0c83352172bebd13f
- mk.xpi: d06badf5bd05a2f15608ebbf6152dbb87fced9e4
- mr.xpi: 3975167f3bc1141cacc7565813d0e1f862564311
- nb-NO.xpi: 6aae5af8f7184c4682c3066a05e927ec3b1095ad
- nl.xpi: 810c3376bd673da5f300a844d5416020cb5d1719
- nn-NO.xpi: 794be4b6e51d019a6522d37c9089f02ad00fe081
- pa-IN.xpi: 042a1e134084bce13e70b9218bc3f3b9552cbb05
- pl.xpi: 3e5f863f9acfef14d4aadb4536bd31deaa2f9d67
- pt-BR.xpi: c0b497d78646016546bbdfdcc4153d5a11dba66c
- pt-PT.xpi: b29c7e19307f42208d0272ab62037bea5f9885fb
- ro.xpi: ed2ccae7cd86723de29e13d65106e6e6d921d798
- ru.xpi: 722c897c90ae0e7c68b30e6cc8b23549438231d1
- si.xpi: d1bca1c62e9dfb92300a183708f6b158d89cacc8
- sk.xpi: bc4f5bcecd1f9f5b57f75b97ab6e760236e5d351
- sl.xpi: 6ba53fca405315a36196aeb24472821b09508f9d
- sq.xpi: de163da759a68e3caba15b42007614846fd8fb85
- sr.xpi: 04f196523a001bcd6f5d387abbad41b27a8bebcc
- sv-SE.xpi: ba84feb496a7b024fd1bc56ad2d9a38e46f86805
- ta.xpi: 05d62de79cc8153c24e818d93a230e35477f6e7e
- te.xpi: 3fffc8a34172677b1dbc0491c49426a46828df08
- th.xpi: 1fcd54f2a24ecb980cd79cfd78af9db3b42715e0
- tr.xpi: 5a6678a58d82f99ff2f9483ce881e983b2d2bf6e
- uk.xpi: 12e1691cbcc82e6e96a98697bc9c254da7580ef4
- vi.xpi: b20d52e1a3afb93641696b2945a34c443b2d59d4
- zh-CN.xpi: 8aa9cb260f8ec0d742e31dfb91ea6725eed008f5
- zh-TW.xpi: 6457ae20bbebc0547fff90edae496f6b42ea2035
+ fr.xpi: 687c46df7d8103d764abe505d757492188a0555b
+ fy-NL.xpi: e926873c9f481e5fd1dea8b36f552e412582e937
+ ga-IE.xpi: 50e5609acd97eef2431adb734de1deb7538fe512
+ gd.xpi: 6169f5c4e0502df94f935d670cc44404ac2c212d
+ gl.xpi: 22f6902ec126d9dfb58befae4a8bbc45924d4d6e
+ gu-IN.xpi: 8f922ab44024e24de981321f81f143d11b741488
+ he.xpi: e697af7a6ba83b47d777e332ef335d0cb55fdf5e
+ hi-IN.xpi: a195389cc9a5d19d2ab8b9a2725fd5f6c0f884b2
+ hr.xpi: a3c972458f938c2b5566470f09247a9091fcab09
+ hu.xpi: 464e365dba8ccf0d661d59f670c644e0cb0c358b
+ hy-AM.xpi: 4f68e3b67c8b6e95bc0aa8c1d15dcb7655d8bc99
+ id.xpi: 36d4fdf2bb8ef85776ee0792d7b7c93b1f6dfbf0
+ is.xpi: e96f256d8eac0ce81e1ecba703a7a3ecd1766048
+ it.xpi: 97171959c83f7cdd8b6f44f6ff969972f651b21c
+ ja.xpi: 3676e887c8f8f0a37be8272fb5ad187444399946
+ kk.xpi: 3ff8342d79e38ce4391afe9cb1d4cfe3d6ef3af3
+ km.xpi: a4bbac62774bf9377a14bf545dcfd5f9c16361e9
+ kn.xpi: 262775ee5603c52add73f0a48ca21b8c9dd06fa5
+ ko.xpi: d059bcfa322c89a8e40872700ac279bd4bf9cd7f
+ lt.xpi: d76e9f2d0c5b22f92cee9c84cfbaeedfd724f53b
+ lv.xpi: cba932837c0e63705c6f7df995aaa2154007251d
+ mk.xpi: 7085bfcf6867e1535eef6aa207bbb376f7274331
+ mr.xpi: b4ca3bcf17681b49597962eac10df6579679b6e2
+ nb-NO.xpi: abd2b41d822d28063c3394526fc85a025c664dfc
+ nl.xpi: 1fe5f681072f5e25da1fb183602bec8920772493
+ nn-NO.xpi: bfd0588cbab21a05be53c4d4ff38fb4a27d4a00e
+ pa-IN.xpi: e4f493853513999a5dafc6f2cc583c354eba9eb2
+ pl.xpi: 20a7b3a3e902bb74077fe137a60ac9ec3bc24493
+ pt-BR.xpi: 3771fe22eeb2ff858922889d5ec3490d1110ffd0
+ pt-PT.xpi: f3c00e5a88df903e62422ec8602b64949240e1a0
+ ro.xpi: 8f288104a361bd20fb117a70f058a7e7529beed3
+ ru.xpi: c42c40646fe01c32d9db12b3e27ee2e816d48e25
+ si.xpi: c3dc8ae843e5a7fb356eb9e5236e8e7c59ab00c4
+ sk.xpi: 914b8e9ec76ee49502987a642adf39658a9f9bd0
+ sl.xpi: e56f80174139ba0db6301551b4f01634f9fa9e7c
+ sq.xpi: e6c5e23fd301887e54ead940a19474f3dc6e798b
+ sr.xpi: 915eaca2693b9e0e400cb4023a8b5416f901fee7
+ sv-SE.xpi: 887973055aa02d7c17e96ce8bc7a42af2f96ae74
+ ta.xpi: 38513e1b9e42fa4f1fd232c73e117cc0a1d459cc
+ te.xpi: f3d68685f8c14c52d5f643c0d4d913ff7fc0cc25
+ th.xpi: e206de462946f4e6794ad8c5926e7f71eb352f71
+ tr.xpi: 7758625760876bcd663e82bbbc0b756359a1c097
+ uk.xpi: 914c4e7e26d564d89f78c45f245e934454b8f39a
+ vi.xpi: fe255efa1b2ec7bdb5271509e308defdd9d784ba
+ zh-CN.xpi: e1ce46005bc743c61230e5179c2a0ce5fc724a13
+ zh-TW.xpi: 9ecf9ee877d75659d537e885542ae9dc05834a66
diff --git a/build-nspr.patch b/build-nspr.patch
new file mode 100644
index 0000000..acb67af
--- /dev/null
+++ b/build-nspr.patch
@@ -0,0 +1,28 @@
+diff -up firefox-80.0/dom/system/IOUtils.cpp.nspr-build firefox-80.0/dom/system/IOUtils.cpp
+--- firefox-80.0/dom/system/IOUtils.cpp.nspr-build 2020-08-19 17:38:00.895018639 +0200
++++ firefox-80.0/dom/system/IOUtils.cpp 2020-08-19 17:38:09.965978725 +0200
+@@ -14,9 +14,9 @@
+ #include "mozilla/Services.h"
+ #include "mozilla/Span.h"
+ #include "mozilla/TextUtils.h"
+-#include "nspr/prio.h"
+-#include "nspr/private/pprio.h"
+-#include "nspr/prtypes.h"
++#include "prio.h"
++#include "private/pprio.h"
++#include "prtypes.h"
+ #include "nsDirectoryServiceDefs.h"
+ #include "nsIFile.h"
+ #include "nsIGlobalObject.h"
+diff -up firefox-80.0/dom/system/IOUtils.h.nspr-build firefox-80.0/dom/system/IOUtils.h
+--- firefox-80.0/dom/system/IOUtils.h.nspr-build 2020-08-17 22:13:15.000000000 +0200
++++ firefox-80.0/dom/system/IOUtils.h 2020-08-19 17:20:33.332711771 +0200
+@@ -14,7 +14,7 @@
+ #include "mozilla/dom/TypedArray.h"
+ #include "mozilla/ErrorResult.h"
+ #include "mozilla/MozPromise.h"
+-#include "nspr/prio.h"
++#include "prio.h"
+ #include "nsIAsyncShutdown.h"
+ #include "nsISerialEventTarget.h"
+ #include "nsLocalFile.h"
diff --git a/firefox-48.0.1-qt-compile.patch b/firefox-48.0.1-qt-compile.patch
deleted file mode 100644
index 0568393..0000000
--- a/firefox-48.0.1-qt-compile.patch
+++ /dev/null
@@ -1,73 +0,0 @@
---- firefox-48.0.1/old-configure.in.omv~ 2016-08-18 23:18:25.642529946 +0200
-+++ firefox-48.0.1/old-configure.in 2016-08-18 23:19:08.766274007 +0200
-@@ -3108,7 +3108,7 @@ then
- AC_MSG_ERROR([$MOZ_QT_PKG_ERRORS Need qtbase development packages, (On Ubuntu, you might try installing the packages qtbase5-dev libqt5opengl5-dev.)])
- ])
- QT5INCDIR=`pkg-config --variable=includedir Qt5Gui`
-- MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QT5INCDIR/QtGui/$QT_VERSION/QtGui"
-+ MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QT5INCDIR/QtGui/$QT_VERSION/QtGui -I$QT5INCDIR -I$QT5INCDIR/QtCore -I$QT5INCDIR/QtGui -I$QT5INCDIR/QtXml -I$QT5INCDIR/QtNetwork -I$QT5INCDIR/QtPrintSupport -I$QT5INCDIR/QtNetwork/$QT_VERSION/QtNetwork/private"
- if test "$NS_PRINTING"; then
- PKG_CHECK_MODULES(MOZ_QT_WIDGETS, Qt5PrintSupport, ,
- [
-@@ -3137,7 +3137,8 @@ then
- 5.*)
- AC_MSG_RESULT("Using qt5: $QT_VERSION")
- MOZ_QT_LIBS="$MOZ_QT_LIBS -L$QTDIR/lib/ -lQt5Gui -lQt5Network -lQt5Core -lQt5Xml"
-- MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui/$QT_VERSION/QtGui"
-+ QT5INCDIR=`pkg-config --variable=includedir Qt5Gui`
-+ MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QT5INCDIR/QtGui/$QT_VERSION/QtGui -I$QT5INCDIR -I$QT5INCDIR/QtCore -I$QT5INCDIR/QtGui -I$QT5INCDIR/QtXml -I$QT5INCDIR/QtNetwork -I$QT5INCDIR/QtPrintSupport -I$QT5INCDIR/QtNetwork/$QT_VERSION/QtNetwork/private"
- if test "$NS_PRINTING"; then
- MOZ_QT_LIBS="$MOZ_QT_LIBS -lQt5Widgets -lQt5PrintSupport"
- MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtPrintSupport"
---- firefox-48.0.1/old-configure.omv~ 2016-08-18 23:16:38.058168813 +0200
-+++ firefox-48.0.1/old-configure 2016-08-18 23:19:23.382187278 +0200
-@@ -16257,7 +16257,7 @@ echo "configure:16229: checking MOZ_QT_L
- fi
-
- QT5INCDIR=`pkg-config --variable=includedir Qt5Gui`
-- MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QT5INCDIR/QtGui/$QT_VERSION/QtGui"
-+ MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QT5INCDIR/QtGui/$QT_VERSION/QtGui -I$QT5INCDIR -I$QT5INCDIR/QtCore -I$QT5INCDIR/QtGui -I$QT5INCDIR/QtXml -I$QT5INCDIR/QtNetwork -I$QT5INCDIR/QtPrintSupport -I$QT5INCDIR/QtNetwork/$QT_VERSION/QtNetwork/private"
- if test "$NS_PRINTING"; then
- succeeded=no
-
-@@ -16443,7 +16443,8 @@ test -n "$HOST_RCC" || HOST_RCC=""""
- 5.*)
- echo "$ac_t"""Using qt5: $QT_VERSION"" 1>&6
- MOZ_QT_LIBS="$MOZ_QT_LIBS -L$QTDIR/lib/ -lQt5Gui -lQt5Network -lQt5Core -lQt5Xml"
-- MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtGui/$QT_VERSION/QtGui"
-+ QT5INCDIR=`pkg-config --variable=includedir Qt5Gui`
-+ MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QT5INCDIR/QtGui/$QT_VERSION/QtGui -I$QT5INCDIR -I$QT5INCDIR/QtCore -I$QT5INCDIR/QtGui -I$QT5INCDIR/QtXml -I$QT5INCDIR/QtNetwork -I$QT5INCDIR/QtPrintSupport -I$QT5INCDIR/QtNetwork/$QT_VERSION/QtNetwork/private"
- if test "$NS_PRINTING"; then
- MOZ_QT_LIBS="$MOZ_QT_LIBS -lQt5Widgets -lQt5PrintSupport"
- MOZ_QT_CFLAGS="$MOZ_QT_CFLAGS -I$QTDIR/include/QtPrintSupport"
---- firefox-48.0.1/widget/nsShmImage.h.omv~ 2016-08-18 23:27:07.889434164 +0200
-+++ firefox-48.0.1/widget/nsShmImage.h 2016-08-18 23:27:18.316372416 +0200
-@@ -18,6 +18,7 @@
- #include "Units.h"
-
- #include <X11/Xlib.h>
-+#include <X11/Xutil.h>
- #include <X11/extensions/XShm.h>
-
- class nsShmImage {
---- firefox-48.0.1/toolkit/components/remote/nsQtRemoteService.cpp.omv~ 2016-08-18 23:51:09.400065396 +0200
-+++ firefox-48.0.1/toolkit/components/remote/nsQtRemoteService.cpp 2016-08-18 23:51:18.522009043 +0200
-@@ -83,7 +83,7 @@ nsQtRemoteService::Startup(const char* a
- }
-
- NS_IMETHODIMP
--nsQtRemoteService::RegisterWindow(nsIDOMWindow* aWindow)
-+nsQtRemoteService::RegisterWindow(mozIDOMWindow* aWindow)
- {
- return NS_ERROR_NOT_IMPLEMENTED;
- }
---- firefox-48.0.1/gfx/thebes/gfxQPainterSurface.cpp.omv~ 2016-08-18 23:59:01.648163858 +0200
-+++ firefox-48.0.1/gfx/thebes/gfxQPainterSurface.cpp 2016-08-18 23:59:42.219915675 +0200
-@@ -9,6 +9,7 @@
- #ifdef CAIRO_HAS_QT_SURFACE
- #include "cairo-qt.h"
- #include "gfxQPainterSurface.h"
-+#include "../2d/HelpersCairo.h"
-
- gfxQPainterSurface::gfxQPainterSurface(QPainter *painter)
- {
diff --git a/firefox-57.0.4-bindgen_float128.patch b/firefox-57.0.4-bindgen_float128.patch
deleted file mode 100644
index cc6469d..0000000
--- a/firefox-57.0.4-bindgen_float128.patch
+++ /dev/null
@@ -1,19 +0,0 @@
-diff -ur /home/crispin/rpmbuild/BUILD/firefox-57.0.4/third_party/rust/bindgen-0.29.1/src/ir/context.rs third_party/rust/bindgen-0.29.1/src/ir/context.rs
---- a/third_party/rust/bindgen/src/ir/context.rs 2017-11-02 16:16:31.000000000 +0000
-+++ b/third_party/rust/bindgen/src/ir/context.rs 2018-01-17 10:01:52.333059791 +0000
-@@ -1406,7 +1406,8 @@
- CXType_Float => FloatKind::Float,
- CXType_Double => FloatKind::Double,
- CXType_LongDouble => FloatKind::LongDouble,
-- _ => panic!("Non floating-type complex?"),
-+ CXType_Float128 => FloatKind::Float128,
-+ _ => panic!("Non floating-type complex? {:?}, {:?}", ty, float_type),
- };
- TypeKind::Complex(float_kind)
- }
---- firefox-58.0.1/third_party/rust/bindgen/.cargo-checksum.json.orig 2018-01-29 21:22:04.843518207 +0000
-+++ firefox-58.0.1/third_party/rust/bindgen/.cargo-checksum.json 2018-01-29 21:22:45.074128415 +0000
-@@ -1 +1 @@
--{"files":{"Cargo.toml":"314227b3a01aea704a0b7b1a2280350ccf965823e3d2ae307bda4b332f88b863","build.rs":"032a1c51963894a421b0535f9227796d88768ac5f665a81d2edced69dc6d106a","src/callbacks.rs":"c5c4e5bc8c49cb191d1b100339772fdc7dd1dbf5025a9de1ecaafb70f86cb48f","src/clang.rs":"541a016580c98c2e2af36c3c11b80127c26090795a380480c925c5f411f8100d","src/codegen/error.rs":"2613af1d833377fd4a70719f4a09951d9d45dc9227827b9a2a938a1bcaaea2dd","src/codegen/helpers.rs":"c7ce49fca07d7690f24fe3440af635a66c758a03d3d79396623289fd191215f6","src/codegen/impl_debug.rs":"e2ffd5b6ed936698aa4b9e7e3459d353383792707ad51f829a18a822f69cab0e","src/codegen/impl_partialeq.rs":"e86050b98f57fa4496dbde0beea319a89e46290309d274f626361779549b95bd","src/codegen/mod.rs":"92249f5626cf12d2f9f032277562b1f5e797cdc28c47efc778c6f6fdfb2ecedc","src/codegen/struct_layout.rs":"45f5c4182b6d4d890bb37f47cff13d1c8fb2392cc15d64fb7afccd12f91276dc","src/extra_assertions.rs":"449549c4a7a50c3f0b06332452b2fb6c9b23f31ca8e5e1656fe6c7f21e8ef7fa","src/features.rs":"8b1c8ea23bd3d0e00dddf3897639c43f0c18057f9f3e5dee48e09a8017cf1a67","src/ir/analysis/derive_copy.rs":"c8d700dcde2419d2687377a7cb1024ad3722bbcb83d0b1031618f57d484793b4","src/ir/analysis/derive_debug.rs":"1d6621c0fa5d899310cc175cb99703606ed34fd7f7ad77bb60f012f25ba504af","src/ir/analysis/derive_default.rs":"3af97eaa9bdc91a0bded060b393d0bb23ef9dcf59a7a6ed7d79814f35f73b66a","src/ir/analysis/derive_hash.rs":"c8a95040352b3d10f8edb46f6ae513d4f15ec87197668b1fc1d7cf2cb416054f","src/ir/analysis/derive_partialeq_or_partialord.rs":"1f7c097bde85ebb4082a3a318a753db13e8b4733fa1433dcc054f137dc0e6c2d","src/ir/analysis/has_destructor.rs":"d9aaaceba580b48eb0df4e5537b34b417c51ccdfeb8f6b72484f3bf4992317fe","src/ir/analysis/has_float.rs":"2a0465503d2c8247eaf916bd6a03594f3dc0370533d9a7c58cc5afb86693816c","src/ir/analysis/has_type_param_in_array.rs":"fcb1c78b6000f1f5eb8d8147e2afdaba9eb0e3a81b61e72537048dfdbeea7bcd","src/ir/analysis/has_vtable.rs":"37765e954ef792e369a58ccfe1d827a00fe9bce680466da1d6523671b94b6c92","src/ir/analysis/mod.rs":"ea5ace45c77e855674bb565ba0fef556f60e3293b0ddcf11d3a5a6ec15ab0648","src/ir/analysis/sizedness.rs":"3d3c8bde40604d53bb64273a3cbd8c55936a7dfe1de9b2ba92fc2c45572624b4","src/ir/analysis/template_params.rs":"5c6ee7a251a321ef5733e2e7ac3264621b4181268babcc008b69dbfc37691fb1","src/ir/annotations.rs":"ef106afcbe6084c18bd13a37ee3c1cdc9596bfb055db8c773d81f8f15fec3208","src/ir/comment.rs":"36f2a1d3970fdbf3d72c1f094043902747cde395215bdf7e9103926d9df011fd","src/ir/comp.rs":"b952cec08cdd126779b630ce523e285610bd4f4da563c661a8b92c556a4e1628","src/ir/context.rs":"2fa83bb1a062636f50e71452ae9cc00e772862f1c160a38d6f0c80a320fedfd8","src/ir/derive.rs":"1fd6ad621e3c60b950acbd51fbe386d1f0fadb7c1889c723245afff45e42e143","src/ir/dot.rs":"eca03a493a7fe48044b832c37c71d51f1bd4e8689feb6f1cb8bc0422541c7284","src/ir/enum_ty.rs":"7f6b56d47d47974548219d221eaa8a9bdea40fc85f405e2d28af5e4a629d748e","src/ir/function.rs":"b95d381633cfd652e46d2322dd039c328dbd3d2959730916a2786b80fc8f862d","src/ir/int.rs":"1f61a472288afe489d9320bc8b13920333ece57891ae8570b4c4f25ab50688e6","src/ir/item.rs":"a46f5968c85861d44356bacdd26b7e5925aa4ba715acfedf08d47122818b00c3","src/ir/item_kind.rs":"13048962657436a757ff9483d96f2ce351ec5f827ecab4921ed643f6f115c497","src/ir/layout.rs":"e3d1adf1ad2fa5bd96530cdd5097db3d9cc7b44d33ec23a04fcfccecd9cf4469","src/ir/mod.rs":"2eae90f207fad2e45957ec9287064992a419e3fc916aba84faff2ea25cbeb5ee","src/ir/module.rs":"c4d90bf38fe3672e01923734ccbdb7951ea929949d5f413a9c2aee12395a5094","src/ir/objc.rs":"05068c4fbf42429c4ac2a233c874f18ffcf7dc1744398e400a5a48d0e7a972f2","src/ir/template.rs":"bcd750450a4df0200a6e7958f9c96a09b91e3ccd29c60712f2b9d3458f1234aa","src/ir/traversal.rs":"a108f2b2a1b3d2e679274eead8cf6f8fc78454e88943527d56bb30b5f071f104","src/ir/ty.rs":"944dcee00762d77640d1bc9aacad16c489c2d2cb9d2c5fd00cbc97a5599984e4","src/ir/var.rs":"685718e5df2e146fde3c00a18940cbd30d25b5055a254cf14385aa269d98d906","src/lib.rs":"9dfc84f927bb3ba0737be29e668bf55943fa08bb73656fec7b5dbb70556ae235","src/log_stubs.rs":"6dfdd908b7c6453da416cf232893768f9480e551ca4add0858ef88bf71ee6ceb","src/main.rs":"fa0a21b4aca4df72896f911de3ee252bec87abb4c871e39b53e90923181a1658","src/options.rs":"8507b27bec74b3729b79c306ced738d60df026d63939f35e62332c4505497054","src/parse.rs":"be7d13cc84fae79ec7b3aa9e77063fa475a48d74a854423e2c72d75006a25202","src/regex_set.rs":"a55241f2117f15729d174790f386e255fcb224b692325bbe6716dbb1d6874881","src/time.rs":"a02befb48d10dcc31e3f9571b2fa1c40f97fafe6f6ae7d7fc4f8fd01f1a169ba"},"package":"57253399c086f4f29e57ffd3b5cdbc23a806a00292619351aa4cfa39cb49d4ea"}
-\ No newline at end of file
-+{"files":{"Cargo.toml":"314227b3a01aea704a0b7b1a2280350ccf965823e3d2ae307bda4b332f88b863","build.rs":"032a1c51963894a421b0535f9227796d88768ac5f665a81d2edced69dc6d106a","src/callbacks.rs":"c5c4e5bc8c49cb191d1b100339772fdc7dd1dbf5025a9de1ecaafb70f86cb48f","src/clang.rs":"541a016580c98c2e2af36c3c11b80127c26090795a380480c925c5f411f8100d","src/codegen/error.rs":"2613af1d833377fd4a70719f4a09951d9d45dc9227827b9a2a938a1bcaaea2dd","src/codegen/helpers.rs":"c7ce49fca07d7690f24fe3440af635a66c758a03d3d79396623289fd191215f6","src/codegen/impl_debug.rs":"e2ffd5b6ed936698aa4b9e7e3459d353383792707ad51f829a18a822f69cab0e","src/codegen/impl_partialeq.rs":"e86050b98f57fa4496dbde0beea319a89e46290309d274f626361779549b95bd","src/codegen/mod.rs":"92249f5626cf12d2f9f032277562b1f5e797cdc28c47efc778c6f6fdfb2ecedc","src/codegen/struct_layout.rs":"45f5c4182b6d4d890bb37f47cff13d1c8fb2392cc15d64fb7afccd12f91276dc","src/extra_assertions.rs":"449549c4a7a50c3f0b06332452b2fb6c9b23f31ca8e5e1656fe6c7f21e8ef7fa","src/features.rs":"8b1c8ea23bd3d0e00dddf3897639c43f0c18057f9f3e5dee48e09a8017cf1a67","src/ir/analysis/derive_copy.rs":"c8d700dcde2419d2687377a7cb1024ad3722bbcb83d0b1031618f57d484793b4","src/ir/analysis/derive_debug.rs":"1d6621c0fa5d899310cc175cb99703606ed34fd7f7ad77bb60f012f25ba504af","src/ir/analysis/derive_default.rs":"3af97eaa9bdc91a0bded060b393d0bb23ef9dcf59a7a6ed7d79814f35f73b66a","src/ir/analysis/derive_hash.rs":"c8a95040352b3d10f8edb46f6ae513d4f15ec87197668b1fc1d7cf2cb416054f","src/ir/analysis/derive_partialeq_or_partialord.rs":"1f7c097bde85ebb4082a3a318a753db13e8b4733fa1433dcc054f137dc0e6c2d","src/ir/analysis/has_destructor.rs":"d9aaaceba580b48eb0df4e5537b34b417c51ccdfeb8f6b72484f3bf4992317fe","src/ir/analysis/has_float.rs":"2a0465503d2c8247eaf916bd6a03594f3dc0370533d9a7c58cc5afb86693816c","src/ir/analysis/has_type_param_in_array.rs":"fcb1c78b6000f1f5eb8d8147e2afdaba9eb0e3a81b61e72537048dfdbeea7bcd","src/ir/analysis/has_vtable.rs":"37765e954ef792e369a58ccfe1d827a00fe9bce680466da1d6523671b94b6c92","src/ir/analysis/mod.rs":"ea5ace45c77e855674bb565ba0fef556f60e3293b0ddcf11d3a5a6ec15ab0648","src/ir/analysis/sizedness.rs":"3d3c8bde40604d53bb64273a3cbd8c55936a7dfe1de9b2ba92fc2c45572624b4","src/ir/analysis/template_params.rs":"5c6ee7a251a321ef5733e2e7ac3264621b4181268babcc008b69dbfc37691fb1","src/ir/annotations.rs":"ef106afcbe6084c18bd13a37ee3c1cdc9596bfb055db8c773d81f8f15fec3208","src/ir/comment.rs":"36f2a1d3970fdbf3d72c1f094043902747cde395215bdf7e9103926d9df011fd","src/ir/comp.rs":"b952cec08cdd126779b630ce523e285610bd4f4da563c661a8b92c556a4e1628","src/ir/context.rs":"8ffce6312194e153f5ecf2123db0a144e9a53713572b18941140680aee142088","src/ir/derive.rs":"1fd6ad621e3c60b950acbd51fbe386d1f0fadb7c1889c723245afff45e42e143","src/ir/dot.rs":"eca03a493a7fe48044b832c37c71d51f1bd4e8689feb6f1cb8bc0422541c7284","src/ir/enum_ty.rs":"7f6b56d47d47974548219d221eaa8a9bdea40fc85f405e2d28af5e4a629d748e","src/ir/function.rs":"b95d381633cfd652e46d2322dd039c328dbd3d2959730916a2786b80fc8f862d","src/ir/int.rs":"1f61a472288afe489d9320bc8b13920333ece57891ae8570b4c4f25ab50688e6","src/ir/item.rs":"a46f5968c85861d44356bacdd26b7e5925aa4ba715acfedf08d47122818b00c3","src/ir/item_kind.rs":"13048962657436a757ff9483d96f2ce351ec5f827ecab4921ed643f6f115c497","src/ir/layout.rs":"e3d1adf1ad2fa5bd96530cdd5097db3d9cc7b44d33ec23a04fcfccecd9cf4469","src/ir/mod.rs":"2eae90f207fad2e45957ec9287064992a419e3fc916aba84faff2ea25cbeb5ee","src/ir/module.rs":"c4d90bf38fe3672e01923734ccbdb7951ea929949d5f413a9c2aee12395a5094","src/ir/objc.rs":"05068c4fbf42429c4ac2a233c874f18ffcf7dc1744398e400a5a48d0e7a972f2","src/ir/template.rs":"bcd750450a4df0200a6e7958f9c96a09b91e3ccd29c60712f2b9d3458f1234aa","src/ir/traversal.rs":"a108f2b2a1b3d2e679274eead8cf6f8fc78454e88943527d56bb30b5f071f104","src/ir/ty.rs":"944dcee00762d77640d1bc9aacad16c489c2d2cb9d2c5fd00cbc97a5599984e4","src/ir/var.rs":"685718e5df2e146fde3c00a18940cbd30d25b5055a254cf14385aa269d98d906","src/lib.rs":"9dfc84f927bb3ba0737be29e668bf55943fa08bb73656fec7b5dbb70556ae235","src/log_stubs.rs":"6dfdd908b7c6453da416cf232893768f9480e551ca4add0858ef88bf71ee6ceb","src/main.rs":"fa0a21b4aca4df72896f911de3ee252bec87abb4c871e39b53e90923181a1658","src/options.rs":"8507b27bec74b3729b79c306ced738d60df026d63939f35e62332c4505497054","src/parse.rs":"be7d13cc84fae79ec7b3aa9e77063fa475a48d74a854423e2c72d75006a25202","src/regex_set.rs":"a55241f2117f15729d174790f386e255fcb224b692325bbe6716dbb1d6874881","src/time.rs":"a02befb48d10dcc31e3f9571b2fa1c40f97fafe6f6ae7d7fc4f8fd01f1a169ba"},"package":"57253399c086f4f29e57ffd3b5cdbc23a806a00292619351aa4cfa39cb49d4ea"}
diff --git a/firefox-72.0.2-sqlite-3.31.patch b/firefox-72.0.2-sqlite-3.31.patch
deleted file mode 100644
index 27693a8..0000000
--- a/firefox-72.0.2-sqlite-3.31.patch
+++ /dev/null
@@ -1,173 +0,0 @@
-diff -up firefox-72.0.2/storage/TelemetryVFS.cpp.omv~ firefox-72.0.2/storage/TelemetryVFS.cpp
---- firefox-72.0.2/storage/TelemetryVFS.cpp.omv~ 2020-01-23 23:39:53.926584589 +0100
-+++ firefox-72.0.2/storage/TelemetryVFS.cpp 2020-01-23 23:40:01.604584216 +0100
-@@ -167,140 +167,12 @@ struct telemetry_file {
- sqlite3_file pReal[1];
- };
-
--const char* DatabasePathFromWALPath(const char* zWALName) {
-- /**
-- * Do some sketchy pointer arithmetic to find the parameter key. The WAL
-- * filename is in the middle of a big allocated block that contains:
-- *
-- * - Random Values
-- * - Main Database Path
-- * - \0
-- * - Multiple URI components consisting of:
-- * - Key
-- * - \0
-- * - Value
-- * - \0
-- * - \0
-- * - Journal Path
-- * - \0
-- * - WAL Path (zWALName)
-- * - \0
-- *
-- * Because the main database path is preceded by a random value we have to be
-- * careful when trying to figure out when we should terminate this loop.
-- */
-- MOZ_ASSERT(zWALName);
--
-- nsDependentCSubstring dbPath(zWALName, strlen(zWALName));
--
-- // Chop off the "-wal" suffix.
-- NS_NAMED_LITERAL_CSTRING(kWALSuffix, "-wal");
-- MOZ_ASSERT(StringEndsWith(dbPath, kWALSuffix));
--
-- dbPath.Rebind(zWALName, dbPath.Length() - kWALSuffix.Length());
-- MOZ_ASSERT(!dbPath.IsEmpty());
--
-- // We want to scan to the end of the key/value URI pairs. Skip the preceding
-- // null and go to the last char of the journal path.
-- const char* cursor = zWALName - 2;
--
-- // Make sure we just skipped a null.
-- MOZ_ASSERT(!*(cursor + 1));
--
-- // Walk backwards over the journal path.
-- while (*cursor) {
-- cursor--;
-- }
--
-- // There should be another null here.
-- cursor--;
-- MOZ_ASSERT(!*cursor);
--
-- // Back up one more char to the last char of the previous string. It may be
-- // the database path or it may be a key/value URI pair.
-- cursor--;
--
--#ifdef DEBUG
-- {
-- // Verify that we just walked over the journal path. Account for the two
-- // nulls we just skipped.
-- const char* journalStart = cursor + 3;
--
-- nsDependentCSubstring journalPath(journalStart, strlen(journalStart));
--
-- // Chop off the "-journal" suffix.
-- NS_NAMED_LITERAL_CSTRING(kJournalSuffix, "-journal");
-- MOZ_ASSERT(StringEndsWith(journalPath, kJournalSuffix));
--
-- journalPath.Rebind(journalStart,
-- journalPath.Length() - kJournalSuffix.Length());
-- MOZ_ASSERT(!journalPath.IsEmpty());
--
-- // Make sure that the database name is a substring of the journal name.
-- MOZ_ASSERT(journalPath == dbPath);
-- }
--#endif
--
-- // Now we're either at the end of the key/value URI pairs or we're at the
-- // end of the database path. Carefully walk backwards one character at a
-- // time to do this safely without running past the beginning of the database
-- // path.
-- const char* const dbPathStart = dbPath.BeginReading();
-- const char* dbPathCursor = dbPath.EndReading() - 1;
-- bool isDBPath = true;
--
-- while (true) {
-- MOZ_ASSERT(*dbPathCursor, "dbPathCursor should never see a null char!");
--
-- if (isDBPath) {
-- isDBPath =
-- dbPathStart <= dbPathCursor && *dbPathCursor == *cursor && *cursor;
-- }
--
-- if (!isDBPath) {
-- // This isn't the database path so it must be a value. Scan past it and
-- // the key also.
-- for (size_t stringCount = 0; stringCount < 2; stringCount++) {
-- // Scan past the string to the preceding null character.
-- while (*cursor) {
-- cursor--;
-- }
--
-- // Back up one more char to the last char of preceding string.
-- cursor--;
-- }
--
-- // Reset and start again.
-- dbPathCursor = dbPath.EndReading() - 1;
-- isDBPath = true;
--
-- continue;
-- }
--
-- MOZ_ASSERT(isDBPath);
-- MOZ_ASSERT(*cursor);
--
-- if (dbPathStart == dbPathCursor) {
-- // Found the full database path, we're all done.
-- MOZ_ASSERT(nsDependentCString(cursor) == dbPath);
-- return cursor;
-- }
--
-- // Change the cursors and go through the loop again.
-- cursor--;
-- dbPathCursor--;
-- }
--
-- MOZ_CRASH("Should never get here!");
--}
--
- already_AddRefed<QuotaObject> GetQuotaObjectFromNameAndParameters(
-- const char* zName, const char* zURIParameterKey) {
-+ const char* zName) {
- MOZ_ASSERT(zName);
-- MOZ_ASSERT(zURIParameterKey);
-
- const char* directoryLockIdParam =
-- sqlite3_uri_parameter(zURIParameterKey, "directoryLockId");
-+ sqlite3_uri_parameter(zName, "directoryLockId");
- if (!directoryLockIdParam) {
- return nullptr;
- }
-@@ -328,13 +200,7 @@ void MaybeEstablishQuotaControl(const ch
-
- MOZ_ASSERT(zName);
-
-- const char* zURIParameterKey =
-- (flags & SQLITE_OPEN_WAL) ? DatabasePathFromWALPath(zName) : zName;
--
-- MOZ_ASSERT(zURIParameterKey);
--
-- pFile->quotaObject =
-- GetQuotaObjectFromNameAndParameters(zName, zURIParameterKey);
-+ pFile->quotaObject = GetQuotaObjectFromNameAndParameters(zName);
- }
-
- /*
-@@ -687,10 +553,7 @@ int xDelete(sqlite3_vfs* vfs, const char
- RefPtr<QuotaObject> quotaObject;
-
- if (StringEndsWith(nsDependentCString(zName), NS_LITERAL_CSTRING("-wal"))) {
-- const char* zURIParameterKey = DatabasePathFromWALPath(zName);
-- MOZ_ASSERT(zURIParameterKey);
--
-- quotaObject = GetQuotaObjectFromNameAndParameters(zName, zURIParameterKey);
-+ quotaObject = GetQuotaObjectFromNameAndParameters(zName);
- }
-
- rc = orig_vfs->xDelete(orig_vfs, zName, syncDir);
diff --git a/firefox-73.0-kde.patch b/firefox-73.0-kde.patch
deleted file mode 100644
index ce912e0..0000000
--- a/firefox-73.0-kde.patch
+++ /dev/null
@@ -1,282 +0,0 @@
-# HG changeset patch
-# User msirringhaus@suse.de
-# Date 1559300151 -7200
-# Fri May 31 12:55:51 2019 +0200
-# Node ID 54d41b0033b8d649d842a1f862c6fed8b9874dec
-# Parent 1143a0e4b2eefa83f74fc484c547d7790ca455a1
-How to apply this patch:
-1. Import and apply it
-2. cp browser/base/content/browser.xul browser/base/content/browser-kde.xul
-3. Find editBookmarkPanelDoneButton
-4. Replace #ifndef with #ifdef in the line above (this hanges the button order from Gnome-style to KDE-style)
-5. hg qrefresh
-
-diff --git a/browser/components/preferences/in-content/main.js b/browser/components/preferences/in-content/main.js
---- a/browser/components/preferences/in-content/main.js
-+++ b/browser/components/preferences/in-content/main.js
-@@ -329,16 +329,23 @@ var gMainPane = {
- }, backoffTimes[this._backoffIndex + 1 < backoffTimes.length ? this._backoffIndex++ : backoffTimes.length - 1]);
- };
-
- window.setTimeout(() => {
- window.requestIdleCallback(pollForDefaultBrowser);
- }, backoffTimes[this._backoffIndex]);
- }
-
-+ 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;
-+ }
-+
- this.initBrowserContainers();
- this.buildContentProcessCountMenuList();
-
- let performanceSettingsLink = document.getElementById(
- "performanceSettingsLearnMore"
- );
- let performanceSettingsUrl =
- Services.urlFormatter.formatURLPref("app.support.baseURL") +
-@@ -1283,16 +1290,27 @@ var gMainPane = {
- this._backoffIndex = 0;
-
- let shellSvc = getShellService();
- if (!shellSvc) {
- return;
- }
- try {
- shellSvc.setDefaultBrowser(true, false);
-+ if (kde_session == 1) {
-+ var shellObj = Components.classes["@mozilla.org/file/local;1"]
-+ .createInstance(Components.interfaces.nsILocalFile);
-+ shellObj.initWithPath("/usr/bin/kwriteconfig");
-+ var process = Components.classes["@mozilla.org/process/util;1"]
-+ .createInstance(Components.interfaces.nsIProcess);
-+ process.init(shellObj);
-+ var args = ["--file", "kdeglobals", "--group", "General", "--key",
-+ "BrowserApplication", "firefox"];
-+ process.run(false, args, args.length);
-+ }
- } catch (ex) {
- Cu.reportError(ex);
- return;
- }
-
- let selectedIndex = shellSvc.isDefaultBrowser(false, true) ? 1 : 0;
- document.getElementById("setDefaultPane").selectedIndex = selectedIndex;
- }
-diff --git a/browser/components/shell/moz.build b/browser/components/shell/moz.build
---- a/browser/components/shell/moz.build
-+++ b/browser/components/shell/moz.build
-@@ -28,16 +28,18 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'coco
- ]
- elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk':
- XPIDL_SOURCES += [
- 'nsIGNOMEShellService.idl',
- ]
-
- SOURCES += [
- 'nsGNOMEShellService.cpp',
-+ 'nsKDEShellService.cpp',
-+ 'nsUnixShellService.cpp',
- ]
- elif CONFIG['OS_ARCH'] == 'WINNT':
- XPIDL_SOURCES += [
- 'nsIWindowsShellService.idl',
- ]
- SOURCES += [
- 'nsWindowsShellService.cpp',
- ]
-diff --git a/browser/components/shell/nsKDEShellService.cpp b/browser/components/shell/nsKDEShellService.cpp
-new file mode 100644
---- /dev/null
-+++ b/browser/components/shell/nsKDEShellService.cpp
-@@ -0,0 +1,103 @@
-+/* -*- 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/. */
-+
-+#include "mozilla/ArrayUtils.h"
-+
-+#include "nsCOMPtr.h"
-+#include "nsKDEShellService.h"
-+#include "nsShellService.h"
-+#include "nsKDEUtils.h"
-+#include "nsIPrefService.h"
-+#include "nsIProcess.h"
-+#include "nsIFile.h"
-+#include "nsServiceManagerUtils.h"
-+#include "nsComponentManagerUtils.h"
-+#include "nsIMutableArray.h"
-+#include "nsISupportsPrimitives.h"
-+#include "nsArrayUtils.h"
-+
-+using namespace mozilla;
-+
-+nsresult
-+nsKDEShellService::Init()
-+{
-+ if( !nsKDEUtils::kdeSupport())
-+ return NS_ERROR_NOT_AVAILABLE;
-+ return NS_OK;
-+}
-+
-+NS_IMPL_ISUPPORTS(nsKDEShellService, nsIGNOMEShellService, nsIShellService)
-+
-+NS_IMETHODIMP
-+nsKDEShellService::IsDefaultBrowser(bool aForAllTypes,
-+ bool* aIsDefaultBrowser)
-+{
-+ *aIsDefaultBrowser = false;
-+
-+ nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
-+ if (!command)
-+ return NS_ERROR_FAILURE;
-+
-+ nsCOMPtr<nsISupportsCString> str = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
-+ if (!str)
-+ return NS_ERROR_FAILURE;
-+
-+ str->SetData( NS_LITERAL_CSTRING( "ISDEFAULTBROWSER" ));
-+ command->AppendElement( str );
-+
-+ if( nsKDEUtils::command( command ))
-+ *aIsDefaultBrowser = true;
-+ return NS_OK;
-+}
-+
-+NS_IMETHODIMP
-+nsKDEShellService::SetDefaultBrowser(bool aClaimAllTypes,
-+ bool aForAllUsers)
-+{
-+ nsCOMPtr<nsIMutableArray> command = do_CreateInstance( NS_ARRAY_CONTRACTID );
-+ if (!command)
-+ return NS_ERROR_FAILURE;
-+
-+ nsCOMPtr<nsISupportsCString> cmdstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
-+ nsCOMPtr<nsISupportsCString> paramstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
-+ if (!cmdstr || !paramstr)
-+ return NS_ERROR_FAILURE;
-+
-+ cmdstr->SetData( NS_LITERAL_CSTRING( "SETDEFAULTBROWSER" ));
-+ command->AppendElement( cmdstr );
-+
-+ paramstr->SetData( aClaimAllTypes ? NS_LITERAL_CSTRING( "ALLTYPES" ) : NS_LITERAL_CSTRING( "NORMAL" ));
-+ command->AppendElement( paramstr );
-+
-+ return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
-+}
-+
-+NS_IMETHODIMP
-+nsKDEShellService::GetCanSetDesktopBackground(bool* aResult)
-+{
-+ *aResult = true;
-+ return NS_OK;
-+}
-+
-+NS_IMETHODIMP
-+nsKDEShellService::SetDesktopBackground(dom::Element* aElement,
-+ int32_t aPosition,
-+ const nsACString& aImageName)
-+{
-+ return NS_ERROR_NOT_IMPLEMENTED;
-+}
-+
-+NS_IMETHODIMP
-+nsKDEShellService::GetDesktopBackgroundColor(PRUint32 *aColor)
-+{
-+ return NS_ERROR_NOT_IMPLEMENTED;
-+}
-+
-+NS_IMETHODIMP
-+nsKDEShellService::SetDesktopBackgroundColor(PRUint32 aColor)
-+{
-+ return NS_ERROR_NOT_IMPLEMENTED;
-+}
-+
-diff --git a/browser/components/shell/nsKDEShellService.h b/browser/components/shell/nsKDEShellService.h
-new file mode 100644
---- /dev/null
-+++ b/browser/components/shell/nsKDEShellService.h
-@@ -0,0 +1,32 @@
-+/* -*- 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/. */
-+
-+#ifndef nskdeshellservice_h____
-+#define nskdeshellservice_h____
-+
-+#include "nsIGNOMEShellService.h"
-+#include "nsToolkitShellService.h"
-+#include "nsString.h"
-+#include "mozilla/Attributes.h"
-+
-+class nsKDEShellService final : public nsIGNOMEShellService,
-+ public nsToolkitShellService
-+{
-+public:
-+ nsKDEShellService() : mCheckedThisSession(false) { }
-+
-+ NS_DECL_ISUPPORTS
-+ NS_DECL_NSISHELLSERVICE
-+ NS_DECL_NSIGNOMESHELLSERVICE
-+
-+ nsresult Init();
-+
-+private:
-+ ~nsKDEShellService() {}
-+
-+ bool mCheckedThisSession;
-+};
-+
-+#endif // nskdeshellservice_h____
-diff --git a/browser/components/shell/nsUnixShellService.cpp b/browser/components/shell/nsUnixShellService.cpp
-new file mode 100644
---- /dev/null
-+++ b/browser/components/shell/nsUnixShellService.cpp
-@@ -0,0 +1,22 @@
-+/* -*- 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/. */
-+
-+
-+#include "nsUnixShellService.h"
-+#include "nsGNOMEShellService.h"
-+#include "nsKDEShellService.h"
-+#include "nsKDEUtils.h"
-+#include "mozilla/ModuleUtils.h"
-+
-+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsGNOMEShellService, Init)
-+NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsKDEShellService, Init)
-+
-+NS_IMETHODIMP
-+nsUnixShellServiceConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult)
-+{
-+ if( nsKDEUtils::kdeSupport())
-+ return nsKDEShellServiceConstructor( aOuter, aIID, aResult );
-+ return nsGNOMEShellServiceConstructor( aOuter, aIID, aResult );
-+}
-diff --git a/browser/components/shell/nsUnixShellService.h b/browser/components/shell/nsUnixShellService.h
-new file mode 100644
---- /dev/null
-+++ b/browser/components/shell/nsUnixShellService.h
-@@ -0,0 +1,15 @@
-+/* -*- 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/. */
-+
-+
-+#ifndef nsunixshellservice_h____
-+#define nsunixshellservice_h____
-+
-+#include "nsIGNOMEShellService.h"
-+
-+NS_IMETHODIMP
-+nsUnixShellServiceConstructor(nsISupports *aOuter, REFNSIID aIID, void **aResult);
-+
-+#endif // nsunixshellservice_h____
diff --git a/firefox-78.0-kde.patch b/firefox-80.0-kde.patch
similarity index 96%
rename from firefox-78.0-kde.patch
rename to firefox-80.0-kde.patch
index 40d6aae..f12cab7 100644
--- a/firefox-78.0-kde.patch
+++ b/firefox-80.0-kde.patch
@@ -3,7 +3,7 @@
# Date 1559300151 -7200
# Fri May 31 12:55:51 2019 +0200
# Node ID 54d41b0033b8d649d842a1f862c6fed8b9874dec
-# Parent 0fd58e0df883086574263e0881e1503cf110562a
+# Parent 3804871eac4171b99e9049dbc881b5304b5ac207
How to apply this patch:
1. Import and apply it
2. cp browser/base/content/browser.xul browser/base/content/browser-kde.xul
@@ -14,7 +14,7 @@ How to apply this patch:
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
--- a/browser/components/preferences/main.js
+++ b/browser/components/preferences/main.js
-@@ -336,16 +336,23 @@ var gMainPane = {
+@@ -335,16 +335,23 @@ var gMainPane = {
}, backoffTimes[this._backoffIndex + 1 < backoffTimes.length ? this._backoffIndex++ : backoffTimes.length - 1]);
};
@@ -38,7 +38,7 @@ diff --git a/browser/components/preferences/main.js b/browser/components/prefere
);
let performanceSettingsUrl =
Services.urlFormatter.formatURLPref("app.support.baseURL") +
-@@ -1301,16 +1308,27 @@ var gMainPane = {
+@@ -1291,16 +1298,27 @@ var gMainPane = {
this._backoffIndex = 0;
let shellSvc = getShellService();
@@ -139,7 +139,7 @@ new file mode 100644
+ if (!str)
+ return NS_ERROR_FAILURE;
+
-+ str->SetData( NS_LITERAL_CSTRING( "ISDEFAULTBROWSER" ));
++ str->SetData("ISDEFAULTBROWSER"_ns);
+ command->AppendElement( str );
+
+ if( nsKDEUtils::command( command ))
@@ -160,10 +160,10 @@ new file mode 100644
+ if (!cmdstr || !paramstr)
+ return NS_ERROR_FAILURE;
+
-+ cmdstr->SetData( NS_LITERAL_CSTRING( "SETDEFAULTBROWSER" ));
++ cmdstr->SetData("SETDEFAULTBROWSER"_ns);
+ command->AppendElement( cmdstr );
+
-+ paramstr->SetData( aClaimAllTypes ? NS_LITERAL_CSTRING( "ALLTYPES" ) : NS_LITERAL_CSTRING( "NORMAL" ));
++ paramstr->SetData( aClaimAllTypes ? "ALLTYPES"_ns : "NORMAL"_ns );
+ command->AppendElement( paramstr );
+
+ return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
diff --git a/firefox.spec b/firefox.spec
index c997561..9377243 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -224,7 +224,7 @@ Name: firefox
Epoch: 0
# IMPORTANT: When updating, you MUST also update the l10n files by running
# download.sh after editing the version number
-Version: 78.0.1
+Version: 82.0
Release: 1
License: MPLv1+
Group: Networking/WWW
@@ -257,22 +257,18 @@ Source100: firefox.rpmlintrc
}
Patch0: firefox-67.0-webrtc-compile.patch
-#Patch1: firefox-72.0.2-sqlite-3.31.patch
# Patches for kde integration of FF from http://www.rosenauer.org/hg/mozilla/
-Patch11: firefox-78.0-kde.patch
-Patch12: mozilla-78.0-kde.patch
+Patch11: firefox-80.0-kde.patch
+Patch12: mozilla-80.0-kde.patch
Patch14: build-aarch64-skia.patch
Patch15: build-arm-libopus.patch
-# from fedora - fix for app chooser
-#Patch43: rhbz-1291190-appchooser-crash.patch
Patch44: https://src.fedoraproject.org/rpms/firefox/raw/master/f/build-disable-elfhack.patch
BuildRequires: doxygen
BuildRequires: makedepend
-BuildRequires: pkgconfig(python2)
BuildRequires: pkgconfig(python3)
BuildRequires: python3
BuildRequires: python-distribute
@@ -311,8 +307,8 @@ BuildRequires: pkgconfig(libpng) >= 1.6.34
BuildRequires: pkgconfig(libproxy-1.0)
BuildRequires: pkgconfig(libpulse)
BuildRequires: pkgconfig(libstartup-notification-1.0)
-BuildRequires: pkgconfig(nspr) >= 4.25.0
-BuildRequires: pkgconfig(nss) >= 3.53.1
+BuildRequires: pkgconfig(nspr) >= 4.26.0
+BuildRequires: pkgconfig(nss) >= 3.57
BuildRequires: pkgconfig(ogg)
BuildRequires: pkgconfig(opus)
BuildRequires: pkgconfig(libpulse)
@@ -335,8 +331,8 @@ BuildRequires: pkgconfig(valgrind)
BuildRequires: yasm >= 1.0.1
BuildRequires: nasm
%endif
-BuildRequires: rust >= 1.41.0
-BuildRequires: cargo >= 1.41.0
+BuildRequires: rust >= 1.43.0
+BuildRequires: cargo >= 1.43.0
BuildRequires: nodejs >= 10.19
BuildRequires: pkgconfig(jemalloc)
Requires: indexhtml
@@ -424,6 +420,7 @@ cd -
export AUTOCONF=$(pwd)/ac213bin/bin/autoconf
export PATH=$(pwd)/my_rust_vendor/.cargo/bin:$PATH
+export MACH_USE_SYSTEM_PYTHON=1
%ifarch %ix86
%global optflags %{optflags} -g0 -fno-exceptions -Wno-format-security
diff --git a/freetype261.patch b/freetype261.patch
deleted file mode 100644
index 0d5bbb1..0000000
--- a/freetype261.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-
-# HG changeset patch
-# User Mike Hommey <mh+mozilla@glandium.org>
-# Date 1439509838 -32400
-# Node ID ffb931f910498504782f4df88206b9cb911b33a4
-# Parent 467ce7a8340d008a5999e57198035d492b7bc79f
-Bug 1194520 - Add a system header wrapper for <freetype/ftfntfmt.h>. r=mshal a=ritu
-
-diff --git a/config/system-headers b/config/system-headers
---- a/config/system-headers
-+++ b/config/system-headers
-@@ -453,16 +453,17 @@ foundation/base64.h
- foundation/hexdump.h
- #endif
- fp.h
- fpieee.h
- frame/log.h
- frame/req.h
- freetype/freetype.h
- freetype/ftcache.h
-+freetype/ftfntfmt.h
- freetype/ftglyph.h
- freetype/ftsynth.h
- freetype/ftoutln.h
- freetype/ttnameid.h
- freetype/tttables.h
- freetype/t1tables.h
- freetype/ftlcdfil.h
- freetype/ftsizes.h
-
diff --git a/mozilla-73.0-kde.patch b/mozilla-73.0-kde.patch
deleted file mode 100644
index 8bce10e..0000000
--- a/mozilla-73.0-kde.patch
+++ /dev/null
@@ -1,1938 +0,0 @@
-# HG changeset patch
-# User msirringhaus@suse.de
-# Date 1559294891 -7200
-# Fri May 31 11:28:11 2019 +0200
-# Node ID c2aa7198fb925e7fde96abf65b6f68b9b755f112
-# Parent 48866e4a200fb5299b94af4d9841e38336cff9f4
-Description: Add KDE integration to Firefox (toolkit parts)
-Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
-Author: Lubos Lunak <lunak@suse.com>
-Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=140751
- https://bugzilla.novell.com/show_bug.cgi?id=170055
-
-diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
---- a/modules/libpref/Preferences.cpp
-+++ b/modules/libpref/Preferences.cpp
-@@ -84,16 +84,17 @@
- #include "nsXPCOM.h"
- #include "nsXULAppAPI.h"
- #include "nsZipArchive.h"
- #include "plbase64.h"
- #include "PLDHashTable.h"
- #include "plstr.h"
- #include "prlink.h"
- #include "xpcpublic.h"
-+#include "nsKDEUtils.h"
-
- #ifdef DEBUG
- # include <map>
- #endif
-
- #ifdef MOZ_MEMORY
- # include "mozmemory.h"
- #endif
-@@ -4539,25 +4540,37 @@ nsresult Preferences::InitInitialObjects
- // application pref files for backwards compatibility.
- static const char* specialFiles[] = {
- #if defined(XP_MACOSX)
- "macprefs.js"
- #elif defined(XP_WIN)
- "winpref.js"
- #elif defined(XP_UNIX)
- "unix.js"
-+ , "" // placeholder for KDE (empty is otherwise harmless)
- # if defined(_AIX)
- ,
- "aix.js"
- # endif
- #elif defined(XP_BEOS)
- "beos.js"
- #endif
- };
-
-+ if(nsKDEUtils::kdeSession()) { // TODO what if some setup actually requires the helper?
-+ for(int i = 0;
-+ i < MOZ_ARRAY_LENGTH(specialFiles);
-+ ++i ) {
-+ if( *specialFiles[ i ] == '\0' ) {
-+ specialFiles[ i ] = "kde.js";
-+ break;
-+ }
-+ }
-+ }
-+
- rv = pref_LoadPrefsInDir(defaultPrefDir, specialFiles,
- ArrayLength(specialFiles));
- if (NS_FAILED(rv)) {
- NS_WARNING("Error parsing application default preferences.");
- }
-
- // Load jar:$app/omni.jar!/defaults/preferences/*.js
- // or jar:$gre/omni.jar!/defaults/preferences/*.js.
-@@ -4603,17 +4616,17 @@ nsresult Preferences::InitInitialObjects
- }
-
- nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
- if (!path) {
- continue;
- }
-
- // Do we care if a file provided by this process fails to load?
-- pref_LoadPrefsInDir(path, nullptr, 0);
-+ pref_LoadPrefsInDir(path, specialFiles, ArrayLength(specialFiles));
- }
- }
-
- if (XRE_IsParentProcess()) {
- SetupTelemetryPref();
- }
-
- NS_CreateServicesFromCategory(NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID, nullptr,
-diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
---- a/modules/libpref/moz.build
-+++ b/modules/libpref/moz.build
-@@ -113,16 +113,20 @@ EXPORTS.mozilla += [
- ]
- EXPORTS.mozilla += sorted(['!' + g for g in gen_h])
-
- UNIFIED_SOURCES += [
- 'Preferences.cpp',
- 'SharedPrefMap.cpp',
- ]
-
-+LOCAL_INCLUDES += [
-+ '/toolkit/xre'
-+]
-+
- gen_all_tuple = tuple(gen_h + gen_cpp + gen_rs)
-
- GENERATED_FILES += [gen_all_tuple]
-
- static_pref_list = GENERATED_FILES[gen_all_tuple]
- static_pref_list.script = 'init/generate_static_pref_list.py:emit_code'
- static_pref_list.inputs = ['init/StaticPrefList.yaml']
-
-diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/chrome/flags.py
---- a/python/mozbuild/mozpack/chrome/flags.py
-+++ b/python/mozbuild/mozpack/chrome/flags.py
-@@ -227,16 +227,17 @@ class Flags(OrderedDict):
- 'contentaccessible': Flag,
- 'os': StringFlag,
- 'osversion': VersionFlag,
- 'abi': StringFlag,
- 'platform': Flag,
- 'xpcnativewrappers': Flag,
- 'tablet': Flag,
- 'process': StringFlag,
-+ 'desktop': StringFlag,
- }
- RE = re.compile(r'([!<>=]+)')
-
- def __init__(self, *flags):
- '''
- Initialize a set of flags given in string form.
- flags = Flags('contentaccessible=yes', 'appversion>=3.5')
- '''
-diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpack/chrome/manifest.py
---- a/python/mozbuild/mozpack/chrome/manifest.py
-+++ b/python/mozbuild/mozpack/chrome/manifest.py
-@@ -37,16 +37,17 @@ class ManifestEntry(object):
- 'platformversion',
- 'os',
- 'osversion',
- 'abi',
- 'xpcnativewrappers',
- 'tablet',
- 'process',
- 'contentaccessible',
-+ 'desktop',
- ]
-
- def __init__(self, base, *flags):
- '''
- Initialize a manifest entry with the given base path and flags.
- '''
- self.base = base
- self.flags = Flags(*flags)
-diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloads/moz.build
---- a/toolkit/components/downloads/moz.build
-+++ b/toolkit/components/downloads/moz.build
-@@ -41,10 +41,14 @@ XPCOM_MANIFESTS += [
-
- if CONFIG['MOZ_PLACES']:
- EXTRA_JS_MODULES += [
- 'DownloadHistory.jsm',
- ]
-
- FINAL_LIBRARY = 'xul'
-
-+LOCAL_INCLUDES += [
-+ '/toolkit/xre'
-+]
-+
- with Files('**'):
- BUG_COMPONENT = ('Toolkit', 'Downloads API')
-diff --git a/toolkit/mozapps/downloads/HelperAppDlg.jsm b/toolkit/mozapps/downloads/HelperAppDlg.jsm
---- a/toolkit/mozapps/downloads/HelperAppDlg.jsm
-+++ b/toolkit/mozapps/downloads/HelperAppDlg.jsm
-@@ -1195,36 +1195,66 @@ nsUnknownContentTypeDialog.prototype = {
- params.handlerApp &&
- params.handlerApp.executable &&
- params.handlerApp.executable.isFile()
- ) {
- // Remember the file they chose to run.
- this.chosenApp = params.handlerApp;
- }
- } else if ("@mozilla.org/applicationchooser;1" in Cc) {
-- var nsIApplicationChooser = Ci.nsIApplicationChooser;
-- var appChooser = Cc["@mozilla.org/applicationchooser;1"].createInstance(
-- nsIApplicationChooser
-- );
-- appChooser.init(
-- this.mDialog,
-- this.dialogElement("strings").getString("chooseAppFilePickerTitle")
-- );
-- var contentTypeDialogObj = this;
-- let appChooserCallback = function appChooserCallback_done(aResult) {
-- if (aResult) {
-- contentTypeDialogObj.chosenApp = aResult.QueryInterface(
-- Ci.nsILocalHandlerApp
-- );
-- }
-- contentTypeDialogObj.finishChooseApp();
-- };
-- appChooser.open(this.mLauncher.MIMEInfo.MIMEType, appChooserCallback);
-- // The finishChooseApp is called from appChooserCallback
-- return;
-+ // handle the KDE case which is implemented in the filepicker
-+ // therefore falling back to Gtk2 like behaviour if KDE is running
-+ // FIXME this should be better handled in the nsIApplicationChooser
-+ // interface
-+ var env = Components.classes["@mozilla.org/process/environment;1"]
-+ .getService(Components.interfaces.nsIEnvironment);
-+ if (env.get('KDE_FULL_SESSION') == "true")
-+ {
-+ var nsIFilePicker = Ci.nsIFilePicker;
-+ var fp = Cc["@mozilla.org/filepicker;1"]
-+ .createInstance(nsIFilePicker);
-+ fp.init(this.mDialog,
-+ this.dialogElement("strings").getString("chooseAppFilePickerTitle"),
-+ nsIFilePicker.modeOpen);
-+
-+ fp.appendFilters(nsIFilePicker.filterApps);
-+
-+ fp.open(aResult => {
-+ if (aResult == nsIFilePicker.returnOK && fp.file) {
-+ // Remember the file they chose to run.
-+ var localHandlerApp =
-+ Cc["@mozilla.org/uriloader/local-handler-app;1"].
-+ createInstance(Ci.nsILocalHandlerApp);
-+ localHandlerApp.executable = fp.file;
-+ this.chosenApp = localHandlerApp;
-+ }
-+ this.finishChooseApp();
-+ });
-+ } else {
-+ var nsIApplicationChooser = Ci.nsIApplicationChooser;
-+ var appChooser = Cc["@mozilla.org/applicationchooser;1"].createInstance(
-+ nsIApplicationChooser
-+ );
-+ appChooser.init(
-+ this.mDialog,
-+ this.dialogElement("strings").getString("chooseAppFilePickerTitle")
-+ );
-+ var contentTypeDialogObj = this;
-+ let appChooserCallback = function appChooserCallback_done(aResult) {
-+ if (aResult) {
-+ contentTypeDialogObj.chosenApp = aResult.QueryInterface(
-+ Ci.nsILocalHandlerApp
-+ );
-+ }
-+ contentTypeDialogObj.finishChooseApp();
-+ };
-+ appChooser.open(this.mLauncher.MIMEInfo.MIMEType, appChooserCallback);
-+ // The finishChooseApp is called from appChooserCallback
-+ return;
-+ }
- } else {
- var nsIFilePicker = Ci.nsIFilePicker;
- var fp = Cc["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
- fp.init(
- this.mDialog,
- this.dialogElement("strings").getString("chooseAppFilePickerTitle"),
- nsIFilePicker.modeOpen
- );
-diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
---- a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
-+++ b/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
-@@ -13,16 +13,17 @@
- #include "nsPrintfCString.h"
- #include "nsNetCID.h"
- #include "nsNetUtil.h"
- #include "nsISupportsPrimitives.h"
- #include "nsIGSettingsService.h"
- #include "nsInterfaceHashtable.h"
- #include "mozilla/Attributes.h"
- #include "nsIURI.h"
-+#include "nsKDEUtils.h"
-
- using namespace mozilla;
-
- class nsUnixSystemProxySettings final : public nsISystemProxySettings {
- public:
- NS_DECL_ISUPPORTS
- NS_DECL_NSISYSTEMPROXYSETTINGS
-
-@@ -36,16 +37,18 @@ class nsUnixSystemProxySettings final :
- nsCOMPtr<nsIGSettingsCollection> mProxySettings;
- nsInterfaceHashtable<nsCStringHashKey, nsIGSettingsCollection>
- mSchemeProxySettings;
- nsresult GetProxyFromGSettings(const nsACString& aScheme,
- const nsACString& aHost, int32_t aPort,
- nsACString& aResult);
- nsresult SetProxyResultFromGSettings(const char* aKeyBase, const char* aType,
- nsACString& aResult);
-+ nsresult GetProxyFromKDE(const nsACString& aScheme, const nsACString& aHost,
-+ PRInt32 aPort, nsACString& aResult);
- };
-
- NS_IMPL_ISUPPORTS(nsUnixSystemProxySettings, nsISystemProxySettings)
-
- NS_IMETHODIMP
- nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) {
- // dbus prevents us from being threadsafe, but this routine should not block
- // anyhow
-@@ -380,21 +383,50 @@ nsresult nsUnixSystemProxySettings::GetP
- return NS_OK;
- }
-
- nsresult nsUnixSystemProxySettings::GetProxyForURI(const nsACString& aSpec,
- const nsACString& aScheme,
- const nsACString& aHost,
- const int32_t aPort,
- nsACString& aResult) {
-+ if (nsKDEUtils::kdeSupport())
-+ return GetProxyFromKDE(aScheme, aHost, aPort, aResult);
-+
- if (mProxySettings) {
- nsresult rv = GetProxyFromGSettings(aScheme, aHost, aPort, aResult);
- if (NS_SUCCEEDED(rv)) return rv;
- }
-
- return GetProxyFromEnvironment(aScheme, aHost, aPort, aResult);
- }
-
-+nsresult
-+nsUnixSystemProxySettings::GetProxyFromKDE(const nsACString& aScheme,
-+ const nsACString& aHost,
-+ PRInt32 aPort,
-+ nsACString& aResult)
-+{
-+ nsAutoCString url;
-+ url = aScheme;
-+ url += "://";
-+ url += aHost;
-+ if( aPort >= 0 )
-+ {
-+ url += ":";
-+ url += nsPrintfCString("%d", aPort);
-+ }
-+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING( "GETPROXY" ));
-+ command.AppendElement( url );
-+ nsTArray<nsCString> result;
-+ if( !nsKDEUtils::command( command, &result ) || result.Length() != 1 )
-+ return NS_ERROR_FAILURE;
-+ aResult = result[0];
-+ return NS_OK;
-+}
-+
-+
- NS_IMPL_COMPONENT_FACTORY(nsUnixSystemProxySettings) {
- auto result = MakeRefPtr<nsUnixSystemProxySettings>();
- result->Init();
- return result.forget().downcast<nsISupports>();
- }
-diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
---- a/toolkit/xre/moz.build
-+++ b/toolkit/xre/moz.build
-@@ -88,17 +88,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
- '../components/printingui',
- ]
- elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit':
- UNIFIED_SOURCES += [
- 'nsNativeAppSupportDefault.cpp',
- 'UIKitDirProvider.mm',
- ]
- elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk':
-+ EXPORTS += ['nsKDEUtils.h']
- UNIFIED_SOURCES += [
-+ 'nsKDEUtils.cpp',
- 'nsNativeAppSupportUnix.cpp',
- ]
- else:
- UNIFIED_SOURCES += [
- 'nsNativeAppSupportDefault.cpp',
- ]
-
- if CONFIG['MOZ_HAS_REMOTE']:
-diff --git a/toolkit/xre/nsKDEUtils.cpp b/toolkit/xre/nsKDEUtils.cpp
-new file mode 100644
---- /dev/null
-+++ b/toolkit/xre/nsKDEUtils.cpp
-@@ -0,0 +1,344 @@
-+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-+/* This Source Code Form is subject to the terms of the Mozilla Public
-+ * License, v. 2.0. If a copy of the MPL was not distributed with this
-+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-+
-+#include "nsKDEUtils.h"
-+#include "nsIWidget.h"
-+#include "nsISupportsPrimitives.h"
-+#include "nsIMutableArray.h"
-+#include "nsComponentManagerUtils.h"
-+#include "nsArrayUtils.h"
-+
-+#include <gtk/gtk.h>
-+
-+#include <limits.h>
-+#include <stdio.h>
-+#include <sys/wait.h>
-+#include <sys/resource.h>
-+#include <unistd.h>
-+#include <X11/Xlib.h>
-+// copied from X11/X.h as a hack since for an unknown
-+// reason it's not picked up from X11/X.h
-+#ifndef None
-+#define None 0L /* universal null resource or null atom */
-+#endif
-+
-+//#define DEBUG_KDE
-+#ifdef DEBUG_KDE
-+#define KMOZILLAHELPER "kmozillahelper"
-+#else
-+// not need for lib64, it's a binary
-+#define KMOZILLAHELPER "/usr/lib/mozilla/kmozillahelper"
-+#endif
-+
-+#define KMOZILLAHELPER_VERSION 6
-+#define MAKE_STR2( n ) #n
-+#define MAKE_STR( n ) MAKE_STR2( n )
-+
-+static bool getKdeSession()
-+ {
-+ Display* dpy = XOpenDisplay( NULL );
-+ if( dpy == NULL )
-+ return false;
-+ Atom kde_full_session = XInternAtom( dpy, "KDE_FULL_SESSION", true );
-+ bool kde = false;
-+ if( kde_full_session != None )
-+ {
-+ int cnt;
-+ if( Atom* props = XListProperties( dpy, DefaultRootWindow( dpy ), &cnt ))
-+ {
-+ for( int i = 0;
-+ i < cnt;
-+ ++i )
-+ {
-+ if( props[ i ] == kde_full_session )
-+ {
-+ kde = true;
-+#ifdef DEBUG_KDE
-+ fprintf( stderr, "KDE SESSION %d\n", kde );
-+#endif
-+ break;
-+ }
-+ }
-+ XFree( props );
-+ }
-+ }
-+ XCloseDisplay( dpy );
-+ return kde;
-+ }
-+
-+static bool getKdeSupport()
-+ {
-+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING( "CHECK" ));
-+ command.AppendElement( NS_LITERAL_CSTRING( MAKE_STR( KMOZILLAHELPER_VERSION )));
-+ bool kde = nsKDEUtils::command( command );
-+#ifdef DEBUG_KDE
-+ fprintf( stderr, "KDE RUNNING %d\n", kde );
-+#endif
-+ return kde;
-+ }
-+
-+nsKDEUtils::nsKDEUtils()
-+ : commandFile( NULL )
-+ , replyFile( NULL )
-+ {
-+ }
-+
-+nsKDEUtils::~nsKDEUtils()
-+ {
-+// closeHelper(); not actually useful, exiting will close the fd too
-+ }
-+
-+nsKDEUtils* nsKDEUtils::self()
-+ {
-+ static nsKDEUtils s;
-+ return &s;
-+ }
-+
-+static bool helperRunning = false;
-+static bool helperFailed = false;
-+
-+bool nsKDEUtils::kdeSession()
-+ {
-+ static bool session = getKdeSession();
-+ return session;
-+ }
-+
-+bool nsKDEUtils::kdeSupport()
-+ {
-+ static bool support = kdeSession() && getKdeSupport();
-+ return support && helperRunning;
-+ }
-+
-+struct nsKDECommandData
-+ {
-+ FILE* file;
-+ nsTArray<nsCString>* output;
-+ GMainLoop* loop;
-+ bool success;
-+ };
-+
-+static gboolean kdeReadFunc( GIOChannel*, GIOCondition, gpointer data )
-+ {
-+ nsKDECommandData* p = static_cast< nsKDECommandData* >( data );
-+ char buf[ 8192 ]; // TODO big enough
-+ bool command_done = false;
-+ bool command_failed = false;
-+ while( !command_done && !command_failed && fgets( buf, 8192, p->file ) != NULL )
-+ { // TODO what if the kernel splits a line into two chunks?
-+//#ifdef DEBUG_KDE
-+// fprintf( stderr, "READ: %s %d\n", buf, feof( p->file ));
-+//#endif
-+ if( char* eol = strchr( buf, '\n' ))
-+ *eol = '\0';
-+ command_done = ( strcmp( buf, "\\1" ) == 0 );
-+ command_failed = ( strcmp( buf, "\\0" ) == 0 );
-+ nsAutoCString line( buf );
-+ line.ReplaceSubstring( "\\n", "\n" );
-+ line.ReplaceSubstring( "\\" "\\", "\\" ); // \\ -> \ , i.e. unescape
-+ if( p->output && !( command_done || command_failed ))
-+ p->output->AppendElement( nsCString( buf )); // TODO utf8?
-+ }
-+ bool quit = false;
-+ if( feof( p->file ) || command_failed )
-+ {
-+ quit = true;
-+ p->success = false;
-+ }
-+ if( command_done )
-+ { // reading one reply finished
-+ quit = true;
-+ p->success = true;
-+ }
-+ if( quit )
-+ {
-+ if( p->loop )
-+ g_main_loop_quit( p->loop );
-+ return FALSE;
-+ }
-+ return TRUE;
-+ }
-+
-+bool nsKDEUtils::command( const nsTArray<nsCString>& command, nsTArray<nsCString>* output )
-+ {
-+ return self()->internalCommand( command, NULL, false, output );
-+ }
-+
-+bool nsKDEUtils::command( nsIArray* command, nsIArray** output)
-+ {
-+ nsTArray<nsCString> in;
-+ PRUint32 length;
-+ command->GetLength( &length );
-+ for ( PRUint32 i = 0; i < length; i++ )
-+ {
-+ nsCOMPtr<nsISupportsCString> str = do_QueryElementAt( command, i );
-+ if( str )
-+ {
-+ nsAutoCString s;
-+ str->GetData( s );
-+ in.AppendElement( s );
-+ }
-+ }
-+
-+ nsTArray<nsCString> out;
-+ bool ret = self()->internalCommand( in, NULL, false, &out );
-+
-+ if ( !output ) return ret;
-+
-+ nsCOMPtr<nsIMutableArray> result = do_CreateInstance( NS_ARRAY_CONTRACTID );
-+ if ( !result ) return false;
-+
-+ for ( PRUint32 i = 0; i < out.Length(); i++ )
-+ {
-+ nsCOMPtr<nsISupportsCString> rstr = do_CreateInstance( NS_SUPPORTS_CSTRING_CONTRACTID );
-+ if ( !rstr ) return false;
-+
-+ rstr->SetData( out[i] );
-+ result->AppendElement( rstr );
-+ }
-+
-+ NS_ADDREF( *output = result);
-+ return ret;
-+ }
-+
-+
-+bool nsKDEUtils::commandBlockUi( const nsTArray<nsCString>& command, GtkWindow* parent, nsTArray<nsCString>* output )
-+ {
-+ return self()->internalCommand( command, parent, true, output );
-+ }
-+
-+bool nsKDEUtils::internalCommand( const nsTArray<nsCString>& command, GtkWindow* parent, bool blockUi,
-+ nsTArray<nsCString>* output )
-+ {
-+ if( !startHelper())
-+ return false;
-+ feedCommand( command );
-+ // do not store the data in 'this' but in extra structure, just in case there
-+ // is reentrancy (can there be? the event loop is re-entered)
-+ nsKDECommandData data;
-+ data.file = replyFile;
-+ data.output = output;
-+ data.success = false;
-+ if( blockUi )
-+ {
-+ data.loop = g_main_loop_new( NULL, FALSE );
-+ GtkWidget* window = gtk_window_new( GTK_WINDOW_TOPLEVEL );
-+ if( parent && gtk_window_get_group(parent) )
-+ gtk_window_group_add_window( gtk_window_get_group(parent), GTK_WINDOW( window ));
-+ gtk_widget_realize( window );
-+ gtk_widget_set_sensitive( window, TRUE );
-+ gtk_grab_add( window );
-+ GIOChannel* channel = g_io_channel_unix_new( fileno( data.file ));
-+ g_io_add_watch( channel, static_cast< GIOCondition >( G_IO_IN | G_IO_ERR | G_IO_HUP ), kdeReadFunc, &data );
-+ g_io_channel_unref( channel );
-+ g_main_loop_run( data.loop );
-+ g_main_loop_unref( data.loop );
-+ gtk_grab_remove( window );
-+ gtk_widget_destroy( window );
-+ }
-+ else
-+ {
-+ data.loop = NULL;
-+ while( kdeReadFunc( NULL, static_cast< GIOCondition >( 0 ), &data ))
-+ ;
-+ }
-+ return data.success;
-+ }
-+
-+bool nsKDEUtils::startHelper()
-+ {
-+ if( helperRunning )
-+ return true;
-+ if( helperFailed )
-+ return false;
-+ helperFailed = true;
-+ int fdcommand[ 2 ];
-+ int fdreply[ 2 ];
-+ if( pipe( fdcommand ) < 0 )
-+ return false;
-+ if( pipe( fdreply ) < 0 )
-+ {
-+ close( fdcommand[ 0 ] );
-+ close( fdcommand[ 1 ] );
-+ return false;
-+ }
-+ char* args[ 2 ] = { const_cast< char* >( KMOZILLAHELPER ), NULL };
-+ switch( fork())
-+ {
-+ case -1:
-+ {
-+ close( fdcommand[ 0 ] );
-+ close( fdcommand[ 1 ] );
-+ close( fdreply[ 0 ] );
-+ close( fdreply[ 1 ] );
-+ return false;
-+ }
-+ case 0: // child
-+ {
-+ if( dup2( fdcommand[ 0 ], STDIN_FILENO ) < 0 )
-+ _exit( 1 );
-+ if( dup2( fdreply[ 1 ], STDOUT_FILENO ) < 0 )
-+ _exit( 1 );
-+ int maxfd = 1024; // close all other fds
-+ struct rlimit rl;
-+ if( getrlimit( RLIMIT_NOFILE, &rl ) == 0 )
-+ maxfd = rl.rlim_max;
-+ for( int i = 3;
-+ i < maxfd;
-+ ++i )
-+ close( i );
-+#ifdef DEBUG_KDE
-+ execvp( KMOZILLAHELPER, args );
-+#else
-+ execv( KMOZILLAHELPER, args );
-+#endif
-+ _exit( 1 ); // failed
-+ }
-+ default: // parent
-+ {
-+ commandFile = fdopen( fdcommand[ 1 ], "w" );
-+ replyFile = fdopen( fdreply[ 0 ], "r" );
-+ close( fdcommand[ 0 ] );
-+ close( fdreply[ 1 ] );
-+ if( commandFile == NULL || replyFile == NULL )
-+ {
-+ closeHelper();
-+ return false;
-+ }
-+ // ok, helper ready, getKdeRunning() will check if it works
-+ }
-+ }
-+ helperFailed = false;
-+ helperRunning = true;
-+ return true;
-+ }
-+
-+void nsKDEUtils::closeHelper()
-+ {
-+ if( commandFile != NULL )
-+ fclose( commandFile ); // this will also make the helper quit
-+ if( replyFile != NULL )
-+ fclose( replyFile );
-+ helperRunning = false;
-+ }
-+
-+void nsKDEUtils::feedCommand( const nsTArray<nsCString>& command )
-+ {
-+ for( int i = 0;
-+ i < command.Length();
-+ ++i )
-+ {
-+ nsCString line = command[ i ];
-+ line.ReplaceSubstring( "\\", "\\" "\\" ); // \ -> \\ , i.e. escape
-+ line.ReplaceSubstring( "\n", "\\n" );
-+#ifdef DEBUG_KDE
-+ fprintf( stderr, "COMM: %s\n", line.get());
-+#endif
-+ fputs( line.get(), commandFile );
-+ fputs( "\n", commandFile );
-+ }
-+ fputs( "\\E\n", commandFile ); // done as \E, so it cannot happen in normal data
-+ fflush( commandFile );
-+ }
-diff --git a/toolkit/xre/nsKDEUtils.h b/toolkit/xre/nsKDEUtils.h
-new file mode 100644
---- /dev/null
-+++ b/toolkit/xre/nsKDEUtils.h
-@@ -0,0 +1,48 @@
-+/* -*- 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/. */
-+
-+#ifndef nsKDEUtils_h__
-+#define nsKDEUtils_h__
-+
-+#include "nsString.h"
-+#include "nsTArray.h"
-+#include <stdio.h>
-+
-+typedef struct _GtkWindow GtkWindow;
-+
-+class nsIArray;
-+
-+class NS_EXPORT nsKDEUtils
-+ {
-+ public:
-+ /* Returns true if running inside a KDE session (regardless of whether there is KDE
-+ support available for Firefox). This should be used e.g. when determining
-+ dialog button order but not for code that requires the KDE support. */
-+ static bool kdeSession();
-+ /* Returns true if running inside a KDE session and KDE support is available
-+ for Firefox. This should be used everywhere where the external helper is needed. */
-+ static bool kdeSupport();
-+ /* Executes the given helper command, returns true if helper returned success. */
-+ static bool command( const nsTArray<nsCString>& command, nsTArray<nsCString>* output = NULL );
-+ static bool command( nsIArray* command, nsIArray** output = NULL );
-+ /* Like command(), but additionally blocks the parent widget like if there was
-+ a modal dialog shown and enters the event loop (i.e. there are still paint updates,
-+ this is for commands that take long). */
-+ static bool commandBlockUi( const nsTArray<nsCString>& command, GtkWindow* parent, nsTArray<nsCString>* output = NULL );
-+
-+ private:
-+ nsKDEUtils();
-+ ~nsKDEUtils();
-+ static nsKDEUtils* self();
-+ bool startHelper();
-+ void closeHelper();
-+ void feedCommand( const nsTArray<nsCString>& command );
-+ bool internalCommand( const nsTArray<nsCString>& command, GtkWindow* parent, bool isParent,
-+ nsTArray<nsCString>* output );
-+ FILE* commandFile;
-+ FILE* replyFile;
-+ };
-+
-+#endif // nsKDEUtils
-diff --git a/uriloader/exthandler/HandlerServiceParent.cpp b/uriloader/exthandler/HandlerServiceParent.cpp
---- a/uriloader/exthandler/HandlerServiceParent.cpp
-+++ b/uriloader/exthandler/HandlerServiceParent.cpp
-@@ -7,17 +7,17 @@
- #include "mozilla/ipc/ProtocolUtils.h"
- #include "mozilla/Logging.h"
- #include "HandlerServiceParent.h"
- #include "nsIHandlerService.h"
- #include "nsIMIMEInfo.h"
- #include "ContentHandlerService.h"
- #include "nsStringEnumerator.h"
- #ifdef MOZ_WIDGET_GTK
--# include "unix/nsGNOMERegistry.h"
-+# include "unix/nsCommonRegistry.h"
- #endif
-
- using mozilla::dom::ContentHandlerService;
- using mozilla::dom::HandlerApp;
- using mozilla::dom::HandlerInfo;
- using mozilla::dom::RemoteHandlerApp;
-
- namespace {
-@@ -288,17 +288,17 @@ mozilla::ipc::IPCResult HandlerServicePa
- mozilla::ipc::IPCResult HandlerServiceParent::RecvExistsForProtocolOS(
- const nsCString& aProtocolScheme, bool* aHandlerExists) {
- if (aProtocolScheme.Length() > MAX_SCHEME_LENGTH) {
- *aHandlerExists = false;
- return IPC_OK();
- }
- #ifdef MOZ_WIDGET_GTK
- // Check the GNOME registry for a protocol handler
-- *aHandlerExists = nsGNOMERegistry::HandlerExists(aProtocolScheme.get());
-+ *aHandlerExists = nsCommonRegistry::HandlerExists(aProtocolScheme.get());
- #else
- *aHandlerExists = false;
- #endif
- return IPC_OK();
- }
-
- /*
- * Check if a handler exists for the provided protocol. Check the datastore
-@@ -317,17 +317,17 @@ mozilla::ipc::IPCResult HandlerServicePa
- nsCOMPtr<nsIExternalProtocolService> protoSvc =
- do_GetService(NS_EXTERNALPROTOCOLSERVICE_CONTRACTID, &rv);
- if (NS_WARN_IF(NS_FAILED(rv))) {
- *aHandlerExists = false;
- return IPC_OK();
- }
- rv = protoSvc->ExternalProtocolHandlerExists(aProtocolScheme.get(),
- aHandlerExists);
--
-+##
- if (NS_WARN_IF(NS_FAILED(rv))) {
- *aHandlerExists = false;
- }
- #else
- MOZ_RELEASE_ASSERT(false, "No implementation on this platform.");
- *aHandlerExists = false;
- #endif
- return IPC_OK();
-diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
---- a/uriloader/exthandler/moz.build
-+++ b/uriloader/exthandler/moz.build
-@@ -85,17 +85,19 @@ else:
- SOURCES += [
- osdir + '/nsOSHelperAppService.cpp',
- ]
- if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
- CXXFLAGS += ['-Wno-error=shadow']
-
- if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk':
- UNIFIED_SOURCES += [
-+ 'unix/nsCommonRegistry.cpp',
- 'unix/nsGNOMERegistry.cpp',
-+ 'unix/nsKDERegistry.cpp',
- 'unix/nsMIMEInfoUnix.cpp',
- ]
- elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
- UNIFIED_SOURCES += [
- 'android/nsAndroidHandlerApp.cpp',
- 'android/nsExternalURLHandlerService.cpp',
- 'android/nsMIMEInfoAndroid.cpp',
- ]
-@@ -135,16 +137,17 @@ include('/ipc/chromium/chromium-config.m
- FINAL_LIBRARY = 'xul'
-
- LOCAL_INCLUDES += [
- '/docshell/base',
- '/dom/base',
- '/dom/ipc',
- '/netwerk/base',
- '/netwerk/protocol/http',
-+ '/toolkit/xre',
- ]
-
- if CONFIG['MOZ_ENABLE_DBUS']:
- CXXFLAGS += CONFIG['TK_CFLAGS']
- CXXFLAGS += CONFIG['MOZ_DBUS_CFLAGS']
-
- if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk':
- CXXFLAGS += CONFIG['TK_CFLAGS']
-diff --git a/uriloader/exthandler/unix/nsCommonRegistry.cpp b/uriloader/exthandler/unix/nsCommonRegistry.cpp
-new file mode 100644
---- /dev/null
-+++ b/uriloader/exthandler/unix/nsCommonRegistry.cpp
-@@ -0,0 +1,53 @@
-+/* -*- 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/. */
-+
-+#include "nsCommonRegistry.h"
-+
-+#include "nsGNOMERegistry.h"
-+#include "nsKDERegistry.h"
-+#include "nsString.h"
-+#include "nsKDEUtils.h"
-+
-+/* static */ bool
-+nsCommonRegistry::HandlerExists(const char *aProtocolScheme)
-+{
-+ if( nsKDEUtils::kdeSupport())
-+ return nsKDERegistry::HandlerExists( aProtocolScheme );
-+ return nsGNOMERegistry::HandlerExists( aProtocolScheme );
-+}
-+
-+/* static */ nsresult
-+nsCommonRegistry::LoadURL(nsIURI *aURL)
-+{
-+ if( nsKDEUtils::kdeSupport())
-+ return nsKDERegistry::LoadURL( aURL );
-+ return nsGNOMERegistry::LoadURL( aURL );
-+}
-+
-+/* static */ void
-+nsCommonRegistry::GetAppDescForScheme(const nsACString& aScheme,
-+ nsAString& aDesc)
-+{
-+ if( nsKDEUtils::kdeSupport())
-+ return nsKDERegistry::GetAppDescForScheme( aScheme, aDesc );
-+ return nsGNOMERegistry::GetAppDescForScheme( aScheme, aDesc );
-+}
-+
-+
-+/* static */ already_AddRefed<nsMIMEInfoBase>
-+nsCommonRegistry::GetFromExtension(const nsACString& aFileExt)
-+{
-+ if( nsKDEUtils::kdeSupport())
-+ return nsKDERegistry::GetFromExtension( aFileExt );
-+ return nsGNOMERegistry::GetFromExtension( aFileExt );
-+}
-+
-+/* static */ already_AddRefed<nsMIMEInfoBase>
-+nsCommonRegistry::GetFromType(const nsACString& aMIMEType)
-+{
-+ if( nsKDEUtils::kdeSupport())
-+ return nsKDERegistry::GetFromType( aMIMEType );
-+ return nsGNOMERegistry::GetFromType( aMIMEType );
-+}
-diff --git a/uriloader/exthandler/unix/nsCommonRegistry.h b/uriloader/exthandler/unix/nsCommonRegistry.h
-new file mode 100644
---- /dev/null
-+++ b/uriloader/exthandler/unix/nsCommonRegistry.h
-@@ -0,0 +1,28 @@
-+/* 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/. */
-+
-+#ifndef nsCommonRegistry_h__
-+#define nsCommonRegistry_h__
-+
-+#include "nsIURI.h"
-+#include "nsCOMPtr.h"
-+
-+class nsMIMEInfoBase;
-+
-+class nsCommonRegistry
-+{
-+ public:
-+ static bool HandlerExists(const char *aProtocolScheme);
-+
-+ static nsresult LoadURL(nsIURI *aURL);
-+
-+ static void GetAppDescForScheme(const nsACString& aScheme,
-+ nsAString& aDesc);
-+
-+ static already_AddRefed<nsMIMEInfoBase> GetFromExtension(const nsACString& aFileExt);
-+
-+ static already_AddRefed<nsMIMEInfoBase> GetFromType(const nsACString& aMIMEType);
-+};
-+
-+#endif
-diff --git a/uriloader/exthandler/unix/nsKDERegistry.cpp b/uriloader/exthandler/unix/nsKDERegistry.cpp
-new file mode 100644
---- /dev/null
-+++ b/uriloader/exthandler/unix/nsKDERegistry.cpp
-@@ -0,0 +1,87 @@
-+/* -*- 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/. */
-+
-+#include "nsKDERegistry.h"
-+#include "prlink.h"
-+#include "prmem.h"
-+#include "nsString.h"
-+#include "nsMIMEInfoUnix.h"
-+#include "nsAutoPtr.h"
-+#include "nsKDEUtils.h"
-+
-+/* static */ bool
-+nsKDERegistry::HandlerExists(const char *aProtocolScheme)
-+{
-+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING( "HANDLEREXISTS" ));
-+ command.AppendElement( nsAutoCString( aProtocolScheme ));
-+ return nsKDEUtils::command( command );
-+}
-+
-+/* static */ nsresult
-+nsKDERegistry::LoadURL(nsIURI *aURL)
-+{
-+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING( "OPEN" ));
-+ nsCString url;
-+ aURL->GetSpec( url );
-+ command.AppendElement( url );
-+ bool rv = nsKDEUtils::command( command );
-+ if (!rv)
-+ return NS_ERROR_FAILURE;
-+
-+ return NS_OK;
-+}
-+
-+/* static */ void
-+nsKDERegistry::GetAppDescForScheme(const nsACString& aScheme,
-+ nsAString& aDesc)
-+{
-+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING( "GETAPPDESCFORSCHEME" ));
-+ command.AppendElement( aScheme );
-+ nsTArray<nsCString> output;
-+ if( nsKDEUtils::command( command, &output ) && output.Length() == 1 )
-+ CopyUTF8toUTF16( output[ 0 ], aDesc );
-+}
-+
-+
-+/* static */ already_AddRefed<nsMIMEInfoBase>
-+nsKDERegistry::GetFromExtension(const nsACString& aFileExt)
-+{
-+ NS_ASSERTION(aFileExt[0] != '.', "aFileExt shouldn't start with a dot");
-+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING( "GETFROMEXTENSION" ));
-+ command.AppendElement( aFileExt );
-+ return GetFromHelper( command );
-+}
-+
-+/* static */ already_AddRefed<nsMIMEInfoBase>
-+nsKDERegistry::GetFromType(const nsACString& aMIMEType)
-+{
-+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING( "GETFROMTYPE" ));
-+ command.AppendElement( aMIMEType );
-+ return GetFromHelper( command );
-+}
-+
-+/* static */ already_AddRefed<nsMIMEInfoBase>
-+nsKDERegistry::GetFromHelper(const nsTArray<nsCString>& command)
-+{
-+ nsTArray<nsCString> output;
-+ if( nsKDEUtils::command( command, &output ) && output.Length() == 3 )
-+ {
-+ nsCString mimetype = output[ 0 ];
-+ RefPtr<nsMIMEInfoUnix> mimeInfo = new nsMIMEInfoUnix( mimetype );
-+ NS_ENSURE_TRUE(mimeInfo, nullptr);
-+ nsCString description = output[ 1 ];
-+ mimeInfo->SetDescription(NS_ConvertUTF8toUTF16(description));
-+ nsCString handlerAppName = output[ 2 ];
-+ mimeInfo->SetDefaultDescription(NS_ConvertUTF8toUTF16(handlerAppName));
-+ mimeInfo->SetPreferredAction(nsIMIMEInfo::useSystemDefault);
-+ return mimeInfo.forget();
-+ }
-+ return nullptr;
-+}
-diff --git a/uriloader/exthandler/unix/nsKDERegistry.h b/uriloader/exthandler/unix/nsKDERegistry.h
-new file mode 100644
---- /dev/null
-+++ b/uriloader/exthandler/unix/nsKDERegistry.h
-@@ -0,0 +1,34 @@
-+/* 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/. */
-+
-+#ifndef nsKDERegistry_h__
-+#define nsKDERegistry_h__
-+
-+#include "nsIURI.h"
-+#include "nsCOMPtr.h"
-+#include "nsTArray.h"
-+
-+class nsMIMEInfoBase;
-+//class nsAutoCString;
-+//class nsCString;
-+
-+class nsKDERegistry
-+{
-+ public:
-+ static bool HandlerExists(const char *aProtocolScheme);
-+
-+ static nsresult LoadURL(nsIURI *aURL);
-+
-+ static void GetAppDescForScheme(const nsACString& aScheme,
-+ nsAString& aDesc);
-+
-+ static already_AddRefed<nsMIMEInfoBase> GetFromExtension(const nsACString& aFileExt);
-+
-+ static already_AddRefed<nsMIMEInfoBase> GetFromType(const nsACString& aMIMEType);
-+ private:
-+ static already_AddRefed<nsMIMEInfoBase> GetFromHelper(const nsTArray<nsCString>& command);
-+
-+};
-+
-+#endif //nsKDERegistry_h__
-diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
---- a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
-+++ b/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
-@@ -1,47 +1,50 @@
- /* -*- Mode: C++; tab-width: 3; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
- #include "nsMIMEInfoUnix.h"
--#include "nsGNOMERegistry.h"
-+#include "nsCommonRegistry.h"
- #include "nsIGIOService.h"
- #include "nsNetCID.h"
- #include "nsIIOService.h"
- #include "nsAutoPtr.h"
- #ifdef MOZ_ENABLE_DBUS
- # include "nsDBusHandlerApp.h"
- #endif
-+#if defined(XP_UNIX) && !defined(XP_MACOSX)
-+#include "nsKDEUtils.h"
-+#endif
-
- nsresult nsMIMEInfoUnix::LoadUriInternal(nsIURI* aURI) {
-- return nsGNOMERegistry::LoadURL(aURI);
-+ return nsCommonRegistry::LoadURL(aURI);
- }
-
- NS_IMETHODIMP
- nsMIMEInfoUnix::GetHasDefaultHandler(bool* _retval) {
- // if mDefaultApplication is set, it means the application has been set from
- // either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to
- // give the GNOME answer.
- if (mDefaultApplication) return nsMIMEInfoImpl::GetHasDefaultHandler(_retval);
-
- *_retval = false;
-
- if (mClass == eProtocolInfo) {
-- *_retval = nsGNOMERegistry::HandlerExists(mSchemeOrType.get());
-+ *_retval = nsCommonRegistry::HandlerExists(mSchemeOrType.get());
- } else {
- RefPtr<nsMIMEInfoBase> mimeInfo =
-- nsGNOMERegistry::GetFromType(mSchemeOrType);
-+ nsCommonRegistry::GetFromType(mSchemeOrType);
- if (!mimeInfo) {
- nsAutoCString ext;
- nsresult rv = GetPrimaryExtension(ext);
- if (NS_SUCCEEDED(rv)) {
-- mimeInfo = nsGNOMERegistry::GetFromExtension(ext);
-+ mimeInfo = nsCommonRegistry::GetFromExtension(ext);
- }
- }
- if (mimeInfo) *_retval = true;
- }
-
- if (*_retval) return NS_OK;
-
- return NS_OK;
-@@ -51,16 +54,33 @@ nsresult nsMIMEInfoUnix::LaunchDefaultWi
- // if mDefaultApplication is set, it means the application has been set from
- // either /etc/mailcap or ${HOME}/.mailcap, in which case we don't want to
- // give the GNOME answer.
- if (mDefaultApplication) return nsMIMEInfoImpl::LaunchDefaultWithFile(aFile);
-
- nsAutoCString nativePath;
- aFile->GetNativePath(nativePath);
-
-+ if( nsKDEUtils::kdeSupport()) {
-+ bool supports;
-+ if( NS_SUCCEEDED( GetHasDefaultHandler( &supports )) && supports ) {
-+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING( "OPEN" ));
-+ command.AppendElement( nativePath );
-+ command.AppendElement( NS_LITERAL_CSTRING( "MIMETYPE" ));
-+ command.AppendElement( mSchemeOrType );
-+ if( nsKDEUtils::command( command ))
-+ return NS_OK;
-+ }
-+ if (!mDefaultApplication)
-+ return NS_ERROR_FILE_NOT_FOUND;
-+
-+ return LaunchWithIProcess(mDefaultApplication, nativePath);
-+ }
-+
- nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
- if (!giovfs) {
- return NS_ERROR_FAILURE;
- }
-
- // nsGIOMimeApp->Launch wants a URI string instead of local file
- nsresult rv;
- nsCOMPtr<nsIIOService> ioservice =
-diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exthandler/unix/nsOSHelperAppService.cpp
---- a/uriloader/exthandler/unix/nsOSHelperAppService.cpp
-+++ b/uriloader/exthandler/unix/nsOSHelperAppService.cpp
-@@ -5,17 +5,17 @@
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
- #include <sys/types.h>
- #include <sys/stat.h>
-
- #include "nsOSHelperAppService.h"
- #include "nsMIMEInfoUnix.h"
- #ifdef MOZ_WIDGET_GTK
--# include "nsGNOMERegistry.h"
-+# include "nsCommonRegistry.h"
- #endif
- #include "nsISupports.h"
- #include "nsString.h"
- #include "nsReadableUtils.h"
- #include "nsUnicharUtils.h"
- #include "nsIFileStreams.h"
- #include "nsILineInputStream.h"
- #include "nsIFile.h"
-@@ -1024,17 +1024,17 @@ nsresult nsOSHelperAppService::GetHandle
-
- nsresult nsOSHelperAppService::OSProtocolHandlerExists(
- const char* aProtocolScheme, bool* aHandlerExists) {
- nsresult rv = NS_OK;
-
- if (!XRE_IsContentProcess()) {
- #ifdef MOZ_WIDGET_GTK
- // Check the GNOME registry for a protocol handler
-- *aHandlerExists = nsGNOMERegistry::HandlerExists(aProtocolScheme);
-+ *aHandlerExists = nsCommonRegistry::HandlerExists(aProtocolScheme);
- #else
- *aHandlerExists = false;
- #endif
- } else {
- *aHandlerExists = false;
- nsCOMPtr<nsIHandlerService> handlerSvc =
- do_GetService(NS_HANDLERSERVICE_CONTRACTID, &rv);
- if (NS_SUCCEEDED(rv) && handlerSvc) {
-@@ -1044,17 +1044,17 @@ nsresult nsOSHelperAppService::OSProtoco
- }
-
- return rv;
- }
-
- NS_IMETHODIMP nsOSHelperAppService::GetApplicationDescription(
- const nsACString& aScheme, nsAString& _retval) {
- #ifdef MOZ_WIDGET_GTK
-- nsGNOMERegistry::GetAppDescForScheme(aScheme, _retval);
-+ nsCommonRegistry::GetAppDescForScheme(aScheme, _retval);
- return _retval.IsEmpty() ? NS_ERROR_NOT_AVAILABLE : NS_OK;
- #else
- return NS_ERROR_NOT_AVAILABLE;
- #endif
- }
-
- NS_IMETHODIMP nsOSHelperAppService::IsCurrentAppOSDefaultForProtocol(
- const nsACString& aScheme, bool* _retval) {
-@@ -1141,17 +1141,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
- nsresult rv =
- LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
- minorType, mime_types_description, true);
-
- if (NS_FAILED(rv) || majorType.IsEmpty()) {
- #ifdef MOZ_WIDGET_GTK
- LOG(("Looking in GNOME registry\n"));
- RefPtr<nsMIMEInfoBase> gnomeInfo =
-- nsGNOMERegistry::GetFromExtension(aFileExt);
-+ nsCommonRegistry::GetFromExtension(aFileExt);
- if (gnomeInfo) {
- LOG(("Got MIMEInfo from GNOME registry\n"));
- return gnomeInfo.forget();
- }
- #endif
-
- rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
- minorType, mime_types_description, false);
-@@ -1253,17 +1253,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
-
- // Now look up our extensions
- nsAutoString extensions, mime_types_description;
- LookUpExtensionsAndDescription(majorType, minorType, extensions,
- mime_types_description);
-
- #ifdef MOZ_WIDGET_GTK
- if (handler.IsEmpty()) {
-- RefPtr<nsMIMEInfoBase> gnomeInfo = nsGNOMERegistry::GetFromType(aMIMEType);
-+ RefPtr<nsMIMEInfoBase> gnomeInfo = nsCommonRegistry::GetFromType(aMIMEType);
- if (gnomeInfo) {
- LOG(
- ("Got MIMEInfo from GNOME registry without extensions; setting them "
- "to %s\n",
- NS_LossyConvertUTF16toASCII(extensions).get()));
-
- NS_ASSERTION(!gnomeInfo->HasExtensions(), "How'd that happen?");
- gnomeInfo->SetFileExtensions(NS_ConvertUTF16toUTF8(extensions));
-diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
---- a/widget/gtk/moz.build
-+++ b/widget/gtk/moz.build
-@@ -128,16 +128,17 @@ include('/ipc/chromium/chromium-config.m
-
- FINAL_LIBRARY = 'xul'
-
- LOCAL_INCLUDES += [
- '/layout/base',
- '/layout/generic',
- '/layout/xul',
- '/other-licenses/atk-1.0',
-+ '/toolkit/xre',
- '/widget',
- '/widget/headless',
- ]
-
- if CONFIG['MOZ_X11']:
- LOCAL_INCLUDES += [
- '/widget/x11',
- ]
-diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
---- a/widget/gtk/nsFilePicker.cpp
-+++ b/widget/gtk/nsFilePicker.cpp
-@@ -1,15 +1,16 @@
- /* -*- 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/. */
-
- #include <dlfcn.h>
- #include <gtk/gtk.h>
-+#include <gdk/gdkx.h>
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <unistd.h>
-
- #include "mozilla/Types.h"
- #include "nsGtkUtils.h"
- #include "nsIFileURL.h"
- #include "nsIGIOService.h"
-@@ -20,16 +21,17 @@
- #include "nsArrayEnumerator.h"
- #include "nsMemory.h"
- #include "nsEnumeratorUtils.h"
- #include "nsNetUtil.h"
- #include "nsReadableUtils.h"
- #include "mozcontainer.h"
-
- #include "nsFilePicker.h"
-+#include "nsKDEUtils.h"
-
- using namespace mozilla;
-
- #define MAX_PREVIEW_SIZE 180
- // bug 1184009
- #define MAX_PREVIEW_SOURCE_SIZE 4096
-
- nsIFile* nsFilePicker::mPrevDisplayDirectory = nullptr;
-@@ -227,17 +229,19 @@ nsFilePicker::AppendFilters(int32_t aFil
- mAllowURLs = !!(aFilterMask & filterAllowURLs);
- return nsBaseFilePicker::AppendFilters(aFilterMask);
- }
-
- NS_IMETHODIMP
- nsFilePicker::AppendFilter(const nsAString& aTitle, const nsAString& aFilter) {
- if (aFilter.EqualsLiteral("..apps")) {
- // No platform specific thing we can do here, really....
-- return NS_OK;
-+ // Unless it's KDE.
-+ if( mMode != modeOpen || !nsKDEUtils::kdeSupport())
-+ return NS_OK;
- }
-
- nsAutoCString filter, name;
- CopyUTF16toUTF8(aFilter, filter);
- CopyUTF16toUTF8(aTitle, name);
-
- mFilters.AppendElement(filter);
- mFilterNames.AppendElement(name);
-@@ -337,16 +341,39 @@ nsresult nsFilePicker::Show(int16_t* aRe
- return NS_OK;
- }
-
- NS_IMETHODIMP
- nsFilePicker::Open(nsIFilePickerShownCallback* aCallback) {
- // Can't show two dialogs concurrently with the same filepicker
- if (mRunning) return NS_ERROR_NOT_AVAILABLE;
-
-+ // KDE file picker is not handled via callback
-+ if( nsKDEUtils::kdeSupport()) {
-+ mCallback = aCallback;
-+ mRunning = true;
-+ NS_ADDREF_THIS();
-+ g_idle_add([](gpointer data) -> gboolean {
-+ nsFilePicker* queuedPicker = (nsFilePicker*) data;
-+ int16_t result;
-+ queuedPicker->kdeFileDialog(&result);
-+ if (queuedPicker->mCallback) {
-+ queuedPicker->mCallback->Done(result);
-+ queuedPicker->mCallback = nullptr;
-+ } else {
-+ queuedPicker->mResult = result;
-+ }
-+ queuedPicker->mRunning = false;
-+ NS_RELEASE(queuedPicker);
-+ return G_SOURCE_REMOVE;
-+ }, this);
-+
-+ return NS_OK;
-+ }
-+
- NS_ConvertUTF16toUTF8 title(mTitle);
-
- GtkWindow* parent_widget =
- GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET));
-
- GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
-
- const gchar* accept_button;
-@@ -572,16 +599,240 @@ void nsFilePicker::Done(void* file_choos
- mCallback->Done(result);
- mCallback = nullptr;
- } else {
- mResult = result;
- }
- NS_RELEASE_THIS();
- }
-
-+nsCString nsFilePicker::kdeMakeFilter( int index )
-+ {
-+ nsCString buf = mFilters[ index ];
-+ for( PRUint32 i = 0;
-+ i < buf.Length();
-+ ++i )
-+ if( buf[ i ] == ';' ) // KDE separates just using spaces
-+ buf.SetCharAt( ' ', i );
-+ if (!mFilterNames[index].IsEmpty())
-+ {
-+ buf += "|";
-+ buf += mFilterNames[index].get();
-+ }
-+ return buf;
-+ }
-+
-+static PRInt32 windowToXid( nsIWidget* widget )
-+ {
-+ GtkWindow *parent_widget = GTK_WINDOW(widget->GetNativeData(NS_NATIVE_SHELLWIDGET));
-+ GdkWindow* gdk_window = gtk_widget_get_window( gtk_widget_get_toplevel( GTK_WIDGET( parent_widget )));
-+ return GDK_WINDOW_XID( gdk_window );
-+ }
-+
-+NS_IMETHODIMP nsFilePicker::kdeFileDialog(PRInt16 *aReturn)
-+ {
-+ NS_ENSURE_ARG_POINTER(aReturn);
-+
-+ if( mMode == modeOpen && mFilters.Length() == 1 && mFilters[ 0 ].EqualsLiteral( "..apps" ))
-+ return kdeAppsDialog( aReturn );
-+
-+ nsCString title;
-+ title.Adopt(ToNewUTF8String(mTitle));
-+
-+ const char* arg = NULL;
-+ if( mAllowURLs )
-+ {
-+ switch( mMode )
-+ {
-+ case nsIFilePicker::modeOpen:
-+ case nsIFilePicker::modeOpenMultiple:
-+ arg = "GETOPENURL";
-+ break;
-+ case nsIFilePicker::modeSave:
-+ arg = "GETSAVEURL";
-+ break;
-+ case nsIFilePicker::modeGetFolder:
-+ arg = "GETDIRECTORYURL";
-+ break;
-+ }
-+ }
-+ else
-+ {
-+ switch( mMode )
-+ {
-+ case nsIFilePicker::modeOpen:
-+ case nsIFilePicker::modeOpenMultiple:
-+ arg = "GETOPENFILENAME";
-+ break;
-+ case nsIFilePicker::modeSave:
-+ arg = "GETSAVEFILENAME";
-+ break;
-+ case nsIFilePicker::modeGetFolder:
-+ arg = "GETDIRECTORYFILENAME";
-+ break;
-+ }
-+ }
-+
-+ nsAutoCString directory;
-+ if (mDisplayDirectory) {
-+ mDisplayDirectory->GetNativePath(directory);
-+ } else if (mPrevDisplayDirectory) {
-+ mPrevDisplayDirectory->GetNativePath(directory);
-+ }
-+
-+ nsAutoCString startdir;
-+ if (!directory.IsEmpty()) {
-+ startdir = directory;
-+ }
-+ if (mMode == nsIFilePicker::modeSave) {
-+ if( !startdir.IsEmpty())
-+ {
-+ startdir += "/";
-+ startdir += ToNewUTF8String(mDefault);
-+ }
-+ else
-+ startdir = ToNewUTF8String(mDefault);
-+ }
-+
-+ nsAutoCString filters;
-+ PRInt32 count = mFilters.Length();
-+ if( count == 0 ) //just in case
-+ filters = "*";
-+ else
-+ {
-+ filters = kdeMakeFilter( 0 );
-+ for (PRInt32 i = 1; i < count; ++i)
-+ {
-+ filters += "\n";
-+ filters += kdeMakeFilter( i );
-+ }
-+ }
-+
-+ nsTArray<nsCString> command;
-+ command.AppendElement( nsAutoCString( arg ));
-+ command.AppendElement( startdir );
-+ if( mMode != nsIFilePicker::modeGetFolder )
-+ {
-+ command.AppendElement( filters );
-+ nsAutoCString selected;
-+ selected.AppendInt( mSelectedType );
-+ command.AppendElement( selected );
-+ }
-+ command.AppendElement( title );
-+ if( mMode == nsIFilePicker::modeOpenMultiple )
-+ command.AppendElement( NS_LITERAL_CSTRING( "MULTIPLE" ));
-+ if( PRInt32 xid = windowToXid( mParentWidget ))
-+ {
-+ command.AppendElement( NS_LITERAL_CSTRING( "PARENT" ));
-+ nsAutoCString parent;
-+ parent.AppendInt( xid );
-+ command.AppendElement( parent );
-+ }
-+
-+ nsTArray<nsCString> output;
-+ if( nsKDEUtils::commandBlockUi( command, GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET)), &output ))
-+ {
-+ *aReturn = nsIFilePicker::returnOK;
-+ mFiles.Clear();
-+ if( mMode != nsIFilePicker::modeGetFolder )
-+ {
-+ mSelectedType = atoi( output[ 0 ].get());
-+ output.RemoveElementAt( 0 );
-+ }
-+ if (mMode == nsIFilePicker::modeOpenMultiple)
-+ {
-+ mFileURL.Truncate();
-+ PRUint32 count = output.Length();
-+ for( PRUint32 i = 0;
-+ i < count;
-+ ++i )
-+ {
-+ nsCOMPtr<nsIFile> localfile;
-+ nsresult rv = NS_NewNativeLocalFile( output[ i ],
-+ PR_FALSE,
-+ getter_AddRefs(localfile));
-+ if (NS_SUCCEEDED(rv))
-+ mFiles.AppendObject(localfile);
-+ }
-+ }
-+ else
-+ {
-+ if( output.Length() == 0 )
-+ mFileURL = nsCString();
-+ else if( mAllowURLs )
-+ mFileURL = output[ 0 ];
-+ else // GetFile() actually requires it to be url even for local files :-/
-+ {
-+ mFileURL = nsCString( "file://" );
-+ mFileURL.Append( output[ 0 ] );
-+ }
-+ }
-+ // Remember last used directory.
-+ nsCOMPtr<nsIFile> file;
-+ GetFile(getter_AddRefs(file));
-+ if (file) {
-+ nsCOMPtr<nsIFile> dir;
-+ file->GetParent(getter_AddRefs(dir));
-+ nsCOMPtr<nsIFile> localDir(do_QueryInterface(dir));
-+ if (localDir) {
-+ localDir.swap(mPrevDisplayDirectory);
-+ }
-+ }
-+ if (mMode == nsIFilePicker::modeSave)
-+ {
-+ nsCOMPtr<nsIFile> file;
-+ GetFile(getter_AddRefs(file));
-+ if (file)
-+ {
-+ bool exists = false;
-+ file->Exists(&exists);
-+ if (exists) // TODO do overwrite check in the helper app
-+ *aReturn = nsIFilePicker::returnReplace;
-+ }
-+ }
-+ }
-+ else
-+ {
-+ *aReturn = nsIFilePicker::returnCancel;
-+ }
-+ return NS_OK;
-+ }
-+
-+
-+NS_IMETHODIMP nsFilePicker::kdeAppsDialog(PRInt16 *aReturn)
-+ {
-+ NS_ENSURE_ARG_POINTER(aReturn);
-+
-+ nsCString title;
-+ title.Adopt(ToNewUTF8String(mTitle));
-+
-+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING( "APPSDIALOG" ));
-+ command.AppendElement( title );
-+ if( PRInt32 xid = windowToXid( mParentWidget ))
-+ {
-+ command.AppendElement( NS_LITERAL_CSTRING( "PARENT" ));
-+ nsAutoCString parent;
-+ parent.AppendInt( xid );
-+ command.AppendElement( parent );
-+ }
-+
-+ nsTArray<nsCString> output;
-+ if( nsKDEUtils::commandBlockUi( command, GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET)), &output ))
-+ {
-+ *aReturn = nsIFilePicker::returnOK;
-+ mFileURL = output.Length() > 0 ? output[ 0 ] : nsCString();
-+ }
-+ else
-+ {
-+ *aReturn = nsIFilePicker::returnCancel;
-+ }
-+ return NS_OK;
-+ }
-+
- // All below functions available as of GTK 3.20+
- void* nsFilePicker::GtkFileChooserNew(const gchar* title, GtkWindow* parent,
- GtkFileChooserAction action,
- const gchar* accept_label) {
- static auto sGtkFileChooserNativeNewPtr =
- (void* (*)(const gchar*, GtkWindow*, GtkFileChooserAction, const gchar*,
- const gchar*))dlsym(RTLD_DEFAULT,
- "gtk_file_chooser_native_new");
-diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h
---- a/widget/gtk/nsFilePicker.h
-+++ b/widget/gtk/nsFilePicker.h
-@@ -67,16 +67,22 @@ class nsFilePicker : public nsBaseFilePi
- nsString mDefaultExtension;
-
- nsTArray<nsCString> mFilters;
- nsTArray<nsCString> mFilterNames;
-
- private:
- static nsIFile* mPrevDisplayDirectory;
-
-+ bool kdeRunning();
-+ bool getKdeRunning();
-+ NS_IMETHODIMP kdeFileDialog(PRInt16 *aReturn);
-+ NS_IMETHODIMP kdeAppsDialog(PRInt16 *aReturn);
-+ nsCString kdeMakeFilter( int index );
-+
- void* GtkFileChooserNew(const gchar* title, GtkWindow* parent,
- GtkFileChooserAction action,
- const gchar* accept_label);
- void GtkFileChooserShow(void* file_chooser);
- void GtkFileChooserDestroy(void* file_chooser);
- void GtkFileChooserSetModal(void* file_chooser, GtkWindow* parent_widget,
- gboolean modal);
-
-diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestParser.cpp
---- a/xpcom/components/ManifestParser.cpp
-+++ b/xpcom/components/ManifestParser.cpp
-@@ -33,16 +33,17 @@
- #include "nsTextFormatter.h"
- #include "nsVersionComparator.h"
- #include "nsXPCOMCIDInternal.h"
-
- #include "nsIConsoleService.h"
- #include "nsIScriptError.h"
- #include "nsIXULAppInfo.h"
- #include "nsIXULRuntime.h"
-+#include "nsKDEUtils.h"
-
- using namespace mozilla;
-
- struct ManifestDirective {
- const char* directive;
- int argc;
-
- bool ischrome;
-@@ -393,16 +394,17 @@ void ParseManifest(NSLocationType aType,
- NS_NAMED_LITERAL_STRING(kRemoteEnabled, "remoteenabled");
- NS_NAMED_LITERAL_STRING(kRemoteRequired, "remoterequired");
- NS_NAMED_LITERAL_STRING(kApplication, "application");
- NS_NAMED_LITERAL_STRING(kAppVersion, "appversion");
- NS_NAMED_LITERAL_STRING(kGeckoVersion, "platformversion");
- NS_NAMED_LITERAL_STRING(kOs, "os");
- NS_NAMED_LITERAL_STRING(kOsVersion, "osversion");
- NS_NAMED_LITERAL_STRING(kABI, "abi");
-+ NS_NAMED_LITERAL_STRING(kDesktop, "desktop");
- NS_NAMED_LITERAL_STRING(kProcess, "process");
- #if defined(MOZ_WIDGET_ANDROID)
- NS_NAMED_LITERAL_STRING(kTablet, "tablet");
- #endif
-
- NS_NAMED_LITERAL_STRING(kMain, "main");
- NS_NAMED_LITERAL_STRING(kContent, "content");
-
-@@ -448,39 +450,44 @@ void ParseManifest(NSLocationType aType,
- CopyUTF8toUTF16(s, abi);
- abi.Insert(char16_t('_'), 0);
- abi.Insert(osTarget, 0);
- }
- }
- }
-
- nsAutoString osVersion;
-+ nsAutoString desktop;
- #if defined(XP_WIN)
- # pragma warning(push)
- # pragma warning(disable : 4996) // VC12+ deprecates GetVersionEx
- OSVERSIONINFO info = {sizeof(OSVERSIONINFO)};
- if (GetVersionEx(&info)) {
- nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", info.dwMajorVersion,
- info.dwMinorVersion);
- }
-+ desktop = NS_LITERAL_STRING("win");
- # pragma warning(pop)
- #elif defined(MOZ_WIDGET_COCOA)
- SInt32 majorVersion = nsCocoaFeatures::OSXVersionMajor();
- SInt32 minorVersion = nsCocoaFeatures::OSXVersionMinor();
- nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", majorVersion, minorVersion);
-+ desktop = NS_LITERAL_STRING("macosx");
- #elif defined(MOZ_WIDGET_GTK)
- nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", gtk_major_version,
- gtk_minor_version);
-+ desktop = nsKDEUtils::kdeSession() ? NS_LITERAL_STRING("kde") : NS_LITERAL_STRING("gnome");
- #elif defined(MOZ_WIDGET_ANDROID)
- bool isTablet = false;
- if (mozilla::AndroidBridge::Bridge()) {
- mozilla::AndroidBridge::Bridge()->GetStaticStringField(
- "android/os/Build$VERSION", "RELEASE", osVersion);
- isTablet = java::GeckoAppShell::IsTablet();
- }
-+ desktop = NS_LITERAL_STRING("android");
- #endif
-
- if (XRE_IsContentProcess()) {
- process = kContent;
- } else {
- process = kMain;
- }
-
-@@ -567,25 +574,27 @@ void ParseManifest(NSLocationType aType,
- TriState stOsVersion = eUnspecified;
- TriState stOs = eUnspecified;
- TriState stABI = eUnspecified;
- TriState stProcess = eUnspecified;
- #if defined(MOZ_WIDGET_ANDROID)
- TriState stTablet = eUnspecified;
- #endif
- int flags = 0;
-+ TriState stDesktop = eUnspecified;
-
- while ((token = nsCRT::strtok(whitespace, kWhitespace, &whitespace)) &&
- ok) {
- ToLowerCase(token);
- NS_ConvertASCIItoUTF16 wtoken(token);
-
- if (CheckStringFlag(kApplication, wtoken, appID, stApp) ||
- CheckOsFlag(kOs, wtoken, osTarget, stOs) ||
- CheckStringFlag(kABI, wtoken, abi, stABI) ||
-+ CheckStringFlag(kDesktop, wtoken, desktop, stDesktop) ||
- CheckStringFlag(kProcess, wtoken, process, stProcess) ||
- CheckVersionFlag(kOsVersion, wtoken, osVersion, stOsVersion) ||
- CheckVersionFlag(kAppVersion, wtoken, appVersion, stAppVersion) ||
- CheckVersionFlag(kGeckoVersion, wtoken, geckoVersion,
- stGeckoVersion)) {
- continue;
- }
-
-@@ -622,17 +631,17 @@ void ParseManifest(NSLocationType aType,
- }
-
- LogMessageWithContext(
- aFile, line, "Unrecognized chrome manifest modifier '%s'.", token);
- ok = false;
- }
-
- if (!ok || stApp == eBad || stAppVersion == eBad ||
-- stGeckoVersion == eBad || stOs == eBad || stOsVersion == eBad ||
-+ stGeckoVersion == eBad || stOs == eBad || stOsVersion == eBad || stDesktop == eBad ||
- #ifdef MOZ_WIDGET_ANDROID
- stTablet == eBad ||
- #endif
- stABI == eBad || stProcess == eBad) {
- continue;
- }
-
- if (directive->regfunc) {
-diff --git a/xpcom/components/moz.build b/xpcom/components/moz.build
---- a/xpcom/components/moz.build
-+++ b/xpcom/components/moz.build
-@@ -62,16 +62,17 @@ LOCAL_INCLUDES += [
- '!..',
- '../base',
- '../build',
- '../ds',
- '/chrome',
- '/js/xpconnect/loader',
- '/layout/build',
- '/modules/libjar',
-+ '/toolkit/xre',
- ]
-
- if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gtk':
- CXXFLAGS += CONFIG['TK_CFLAGS']
-
- if CONFIG['MOZ_LAYOUT_DEBUGGER']:
- DEFINES['MOZ_LAYOUT_DEBUGGER'] = True
-
-diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
---- a/xpcom/io/nsLocalFileUnix.cpp
-+++ b/xpcom/io/nsLocalFileUnix.cpp
-@@ -46,16 +46,17 @@
- #include "prproces.h"
- #include "nsIDirectoryEnumerator.h"
- #include "nsSimpleEnumerator.h"
- #include "private/pprio.h"
- #include "prlink.h"
-
- #ifdef MOZ_WIDGET_GTK
- # include "nsIGIOService.h"
-+# include "nsKDEUtils.h"
- #endif
-
- #ifdef MOZ_WIDGET_COCOA
- # include <Carbon/Carbon.h>
- # include "CocoaFileUtils.h"
- # include "prmem.h"
- # include "plbase64.h"
-
-@@ -1904,62 +1905,77 @@ nsLocalFile::SetPersistentDescriptor(con
-
- NS_IMETHODIMP
- nsLocalFile::Reveal() {
- if (!FilePreferences::IsAllowedPath(mPath)) {
- return NS_ERROR_FILE_ACCESS_DENIED;
- }
-
- #ifdef MOZ_WIDGET_GTK
-- nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
-- if (!giovfs) {
-- return NS_ERROR_FAILURE;
-- }
-+ nsAutoCString url;
-
- bool isDirectory;
- if (NS_FAILED(IsDirectory(&isDirectory))) {
- return NS_ERROR_FAILURE;
- }
-
-+ nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
- if (isDirectory) {
-- return giovfs->ShowURIForInput(mPath);
-+ url = mPath;
- }
- 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()) {
-+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING("REVEAL") );
-+ command.AppendElement( mPath );
-+ return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
-+ }
-+
-+ if (!giovfs)
-+ return NS_ERROR_FAILURE;
-+
-+ return giovfs->ShowURIForInput(url);
- }
-
- NS_IMETHODIMP
- nsLocalFile::Launch() {
- if (!FilePreferences::IsAllowedPath(mPath)) {
- return NS_ERROR_FILE_ACCESS_DENIED;
- }
-
- #ifdef MOZ_WIDGET_GTK
-+ if( nsKDEUtils::kdeSupport()) {
-+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING("OPEN") );
-+ command.AppendElement( mPath );
-+ return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
-+ }
- nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
- if (!giovfs) {
- return NS_ERROR_FAILURE;
- }
-
- return giovfs->ShowURIForInput(mPath);
- #elif defined(MOZ_WIDGET_ANDROID)
- // Try to get a mimetype, if this fails just use the file uri alone
diff --git a/mozilla-78.0-kde.patch b/mozilla-80.0-kde.patch
similarity index 95%
rename from mozilla-78.0-kde.patch
rename to mozilla-80.0-kde.patch
index ae5b040..a679961 100644
--- a/mozilla-78.0-kde.patch
+++ b/mozilla-80.0-kde.patch
@@ -3,7 +3,7 @@
# Date 1559294891 -7200
# Fri May 31 11:28:11 2019 +0200
# Node ID c2aa7198fb925e7fde96abf65b6f68b9b755f112
-# Parent aa58e8c70d1448a08407c6c191ea8b76d61e8bf6
+# Parent a22a4c4e41107a0809c33a83e9d14916738c5a82
Description: Add KDE integration to Firefox (toolkit parts)
Author: Wolfgang Rosenauer <wolfgang@rosenauer.org>
Author: Lubos Lunak <lunak@suse.com>
@@ -31,7 +31,7 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
#ifdef MOZ_MEMORY
# include "mozmemory.h"
#endif
-@@ -4566,25 +4567,37 @@ nsresult Preferences::InitInitialObjects
+@@ -4530,25 +4531,37 @@ nsresult Preferences::InitInitialObjects
// application pref files for backwards compatibility.
static const char* specialFiles[] = {
#if defined(XP_MACOSX)
@@ -69,7 +69,7 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
// Load jar:$app/omni.jar!/defaults/preferences/*.js
// or jar:$gre/omni.jar!/defaults/preferences/*.js.
-@@ -4630,17 +4643,17 @@ nsresult Preferences::InitInitialObjects
+@@ -4594,17 +4607,17 @@ nsresult Preferences::InitInitialObjects
}
nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
@@ -91,7 +91,7 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
--- a/modules/libpref/moz.build
+++ b/modules/libpref/moz.build
-@@ -114,16 +114,20 @@ EXPORTS.mozilla += [
+@@ -118,16 +118,20 @@ EXPORTS.mozilla += [
]
EXPORTS.mozilla += sorted(['!' + g for g in gen_h])
@@ -106,12 +106,12 @@ diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
+
gen_all_tuple = tuple(gen_h + gen_cpp + gen_rs)
- GENERATED_FILES += [gen_all_tuple]
-
- static_pref_list = GENERATED_FILES[gen_all_tuple]
- static_pref_list.script = 'init/generate_static_pref_list.py:emit_code'
- static_pref_list.inputs = ['init/StaticPrefList.yaml']
+ GeneratedFile(*gen_all_tuple, script='init/generate_static_pref_list.py',
+ entry_point='emit_code', inputs=['init/StaticPrefList.yaml'])
+ PYTHON_UNITTEST_MANIFESTS += [
+ 'test/python.ini',
+ ]
diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/chrome/flags.py
--- a/python/mozbuild/mozpack/chrome/flags.py
+++ b/python/mozbuild/mozpack/chrome/flags.py
@@ -157,7 +157,7 @@ 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
--- a/toolkit/components/downloads/moz.build
+++ b/toolkit/components/downloads/moz.build
-@@ -46,10 +46,14 @@ XPCOM_MANIFESTS += [
+@@ -45,10 +45,14 @@ XPCOM_MANIFESTS += [
if CONFIG['MOZ_PLACES']:
EXTRA_JS_MODULES += [
@@ -302,7 +302,7 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) {
// dbus prevents us from being threadsafe, but this routine should not block
// anyhow
-@@ -384,21 +387,50 @@ nsresult nsUnixSystemProxySettings::GetP
+@@ -381,21 +384,50 @@ nsresult nsUnixSystemProxySettings::GetP
return NS_OK;
}
@@ -338,7 +338,7 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
+ url += nsPrintfCString("%d", aPort);
+ }
+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING( "GETPROXY" ));
++ command.AppendElement( "GETPROXY"_ns );
+ command.AppendElement( url );
+ nsTArray<nsCString> result;
+ if( !nsKDEUtils::command( command, &result ) || result.Length() != 1 )
@@ -356,7 +356,7 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
--- a/toolkit/xre/moz.build
+++ b/toolkit/xre/moz.build
-@@ -88,17 +88,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
+@@ -90,17 +90,19 @@ elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'co
'../components/printingui',
]
elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'uikit':
@@ -454,8 +454,8 @@ new file mode 100644
+static bool getKdeSupport()
+ {
+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING( "CHECK" ));
-+ command.AppendElement( NS_LITERAL_CSTRING( MAKE_STR( KMOZILLAHELPER_VERSION )));
++ command.AppendElement( "CHECK"_ns );
++ command.AppendElement( "KMOZILLAHELPER_VERSION"_ns );
+ bool kde = nsKDEUtils::command( command );
+#ifdef DEBUG_KDE
+ fprintf( stderr, "KDE RUNNING %d\n", kde );
@@ -991,7 +991,7 @@ new file mode 100644
+nsKDERegistry::HandlerExists(const char *aProtocolScheme)
+{
+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING( "HANDLEREXISTS" ));
++ command.AppendElement( "HANDLEREXISTS"_ns );
+ command.AppendElement( nsAutoCString( aProtocolScheme ));
+ return nsKDEUtils::command( command );
+}
@@ -1000,7 +1000,7 @@ new file mode 100644
+nsKDERegistry::LoadURL(nsIURI *aURL)
+{
+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING( "OPEN" ));
++ command.AppendElement( "OPEN"_ns );
+ nsCString url;
+ aURL->GetSpec( url );
+ command.AppendElement( url );
@@ -1016,7 +1016,7 @@ new file mode 100644
+ nsAString& aDesc)
+{
+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING( "GETAPPDESCFORSCHEME" ));
++ command.AppendElement( "GETAPPDESCFORSCHEME"_ns );
+ command.AppendElement( aScheme );
+ nsTArray<nsCString> output;
+ if( nsKDEUtils::command( command, &output ) && output.Length() == 1 )
@@ -1029,7 +1029,7 @@ new file mode 100644
+{
+ NS_ASSERTION(aFileExt[0] != '.', "aFileExt shouldn't start with a dot");
+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING( "GETFROMEXTENSION" ));
++ command.AppendElement( "GETFROMEXTENSION"_ns );
+ command.AppendElement( aFileExt );
+ return GetFromHelper( command );
+}
@@ -1038,7 +1038,7 @@ new file mode 100644
+nsKDERegistry::GetFromType(const nsACString& aMIMEType)
+{
+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING( "GETFROMTYPE" ));
++ command.AppendElement( "GETFROMTYPE"_ns );
+ command.AppendElement( aMIMEType );
+ return GetFromHelper( command );
+}
@@ -1171,9 +1171,9 @@ diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler
+ bool supports;
+ if( NS_SUCCEEDED( GetHasDefaultHandler( &supports )) && supports ) {
+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING( "OPEN" ));
++ command.AppendElement( "OPEN"_ns );
+ command.AppendElement( nativePath );
-+ command.AppendElement( NS_LITERAL_CSTRING( "MIMETYPE" ));
++ command.AppendElement( "MIMETYPE"_ns );
+ command.AppendElement( mSchemeOrType );
+ if( nsKDEUtils::command( command ))
+ return NS_OK;
@@ -1214,7 +1214,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
#include "nsIFileStreams.h"
#include "nsILineInputStream.h"
#include "nsIFile.h"
-@@ -1022,17 +1022,17 @@ nsresult nsOSHelperAppService::GetHandle
+@@ -1019,17 +1019,17 @@ nsresult nsOSHelperAppService::GetHandle
nsresult nsOSHelperAppService::OSProtocolHandlerExists(
const char* aProtocolScheme, bool* aHandlerExists) {
@@ -1233,7 +1233,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
nsCOMPtr<nsIHandlerService> handlerSvc =
do_GetService(NS_HANDLERSERVICE_CONTRACTID, &rv);
if (NS_SUCCEEDED(rv) && handlerSvc) {
-@@ -1042,17 +1042,17 @@ nsresult nsOSHelperAppService::OSProtoco
+@@ -1039,17 +1039,17 @@ nsresult nsOSHelperAppService::OSProtoco
}
return rv;
@@ -1252,7 +1252,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
NS_IMETHODIMP nsOSHelperAppService::IsCurrentAppOSDefaultForProtocol(
const nsACString& aScheme, bool* _retval) {
-@@ -1139,17 +1139,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
+@@ -1136,17 +1136,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
nsresult rv =
LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
minorType, mime_types_description, true);
@@ -1271,7 +1271,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
minorType, mime_types_description, false);
-@@ -1251,17 +1251,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
+@@ -1247,17 +1247,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
// Now look up our extensions
nsAutoString extensions, mime_types_description;
@@ -1293,15 +1293,15 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
--- a/widget/gtk/moz.build
+++ b/widget/gtk/moz.build
-@@ -131,16 +131,17 @@ include('/ipc/chromium/chromium-config.m
-
- FINAL_LIBRARY = 'xul'
+@@ -133,16 +133,17 @@ include('/ipc/chromium/chromium-config.m
LOCAL_INCLUDES += [
'/layout/base',
+ '/layout/forms',
'/layout/generic',
'/layout/xul',
'/other-licenses/atk-1.0',
+ '/third_party/cups/include',
+ '/toolkit/xre',
'/widget',
'/widget/headless',
@@ -1534,10 +1534,10 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
+ }
+ command.AppendElement( title );
+ if( mMode == nsIFilePicker::modeOpenMultiple )
-+ command.AppendElement( NS_LITERAL_CSTRING( "MULTIPLE" ));
++ command.AppendElement( "MULTIPLE"_ns );
+ if( PRInt32 xid = windowToXid( mParentWidget ))
+ {
-+ command.AppendElement( NS_LITERAL_CSTRING( "PARENT" ));
++ command.AppendElement( "PARENT"_ns );
+ nsAutoCString parent;
+ parent.AppendInt( xid );
+ command.AppendElement( parent );
@@ -1625,11 +1625,11 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
+ title.Adopt(ToNewUTF8String(mTitle));
+
+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING( "APPSDIALOG" ));
++ command.AppendElement( "APPSDIALOG"_ns );
+ command.AppendElement( title );
+ if( PRInt32 xid = windowToXid( mParentWidget ))
+ {
-+ command.AppendElement( NS_LITERAL_CSTRING( "PARENT" ));
++ command.AppendElement( "PARENT"_ns );
+ nsAutoCString parent;
+ parent.AppendInt( xid );
+ command.AppendElement( parent );
@@ -1703,25 +1703,25 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
int argc;
bool ischrome;
-@@ -394,16 +395,17 @@ void ParseManifest(NSLocationType aType,
- NS_NAMED_LITERAL_STRING(kRemoteEnabled, "remoteenabled");
- NS_NAMED_LITERAL_STRING(kRemoteRequired, "remoterequired");
- NS_NAMED_LITERAL_STRING(kApplication, "application");
- NS_NAMED_LITERAL_STRING(kAppVersion, "appversion");
- NS_NAMED_LITERAL_STRING(kGeckoVersion, "platformversion");
- NS_NAMED_LITERAL_STRING(kOs, "os");
- NS_NAMED_LITERAL_STRING(kOsVersion, "osversion");
- NS_NAMED_LITERAL_STRING(kABI, "abi");
-+ NS_NAMED_LITERAL_STRING(kDesktop, "desktop");
- NS_NAMED_LITERAL_STRING(kProcess, "process");
+@@ -393,16 +394,17 @@ void ParseManifest(NSLocationType aType,
+ constexpr auto kRemoteEnabled = u"remoteenabled"_ns;
+ constexpr auto kRemoteRequired = u"remoterequired"_ns;
+ constexpr auto kApplication = u"application"_ns;
+ constexpr auto kAppVersion = u"appversion"_ns;
+ constexpr auto kGeckoVersion = u"platformversion"_ns;
+ constexpr auto kOs = u"os"_ns;
+ constexpr auto kOsVersion = u"osversion"_ns;
+ constexpr auto kABI = u"abi"_ns;
++ constexpr auto kDesktop = u"desktop"_ns;
+ constexpr auto kProcess = u"process"_ns;
#if defined(MOZ_WIDGET_ANDROID)
- NS_NAMED_LITERAL_STRING(kTablet, "tablet");
+ constexpr auto kTablet = u"tablet"_ns;
#endif
- NS_NAMED_LITERAL_STRING(kMain, "main");
- NS_NAMED_LITERAL_STRING(kContent, "content");
+ constexpr auto kMain = u"main"_ns;
+ constexpr auto kContent = u"content"_ns;
-@@ -449,39 +451,44 @@ void ParseManifest(NSLocationType aType,
+@@ -448,39 +450,44 @@ void ParseManifest(NSLocationType aType,
CopyUTF8toUTF16(s, abi);
abi.Insert(char16_t('_'), 0);
abi.Insert(osTarget, 0);
@@ -1739,17 +1739,17 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", info.dwMajorVersion,
info.dwMinorVersion);
}
-+ desktop = NS_LITERAL_STRING("win");
++ desktop = u"win"_ns;
# pragma warning(pop)
#elif defined(MOZ_WIDGET_COCOA)
SInt32 majorVersion = nsCocoaFeatures::macOSVersionMajor();
SInt32 minorVersion = nsCocoaFeatures::macOSVersionMinor();
nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", majorVersion, minorVersion);
-+ desktop = NS_LITERAL_STRING("macosx");
++ desktop = u"macosx"_ns);
#elif defined(MOZ_WIDGET_GTK)
nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", gtk_major_version,
gtk_minor_version);
-+ desktop = nsKDEUtils::kdeSession() ? NS_LITERAL_STRING("kde") : NS_LITERAL_STRING("gnome");
++ desktop = nsKDEUtils::kdeSession() ? u"kde"_ns : u"gnome"_ns;
#elif defined(MOZ_WIDGET_ANDROID)
bool isTablet = false;
if (mozilla::AndroidBridge::Bridge()) {
@@ -1757,7 +1757,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
"android/os/Build$VERSION", "RELEASE", osVersion);
isTablet = java::GeckoAppShell::IsTablet();
}
-+ desktop = NS_LITERAL_STRING("android");
++ desktop = u"android"_ns;
#endif
if (XRE_IsContentProcess()) {
@@ -1766,7 +1766,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
process = kMain;
}
-@@ -568,25 +575,27 @@ void ParseManifest(NSLocationType aType,
+@@ -567,25 +574,27 @@ void ParseManifest(NSLocationType aType,
TriState stOsVersion = eUnspecified;
TriState stOs = eUnspecified;
TriState stABI = eUnspecified;
@@ -1794,7 +1794,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
continue;
}
-@@ -623,17 +632,17 @@ void ParseManifest(NSLocationType aType,
+@@ -622,17 +631,17 @@ void ParseManifest(NSLocationType aType,
}
LogMessageWithContext(
@@ -1907,7 +1907,7 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
#endif
+ if(nsKDEUtils::kdeSupport()) {
+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING("REVEAL") );
++ command.AppendElement( "REVEAL"_ns );
+ command.AppendElement( mPath );
+ return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
+ }
@@ -1927,7 +1927,7 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
#ifdef MOZ_WIDGET_GTK
+ if( nsKDEUtils::kdeSupport()) {
+ nsTArray<nsCString> command;
-+ command.AppendElement( NS_LITERAL_CSTRING("OPEN") );
++ command.AppendElement( "OPEN"_ns );
+ command.AppendElement( mPath );
+ return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
+ }
diff --git a/prio-nss-build.patch b/prio-nss-build.patch
deleted file mode 100644
index 3854572..0000000
--- a/prio-nss-build.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-diff -up firefox-63.0/media/libyuv/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium.old firefox-63.0/media/libyuv/libyuv/tools_libyuv/autoroller/unittests/testdata/DEPS.chromium
-diff -up firefox-63.0/media/webrtc/trunk/Makefile.old firefox-63.0/media/webrtc/trunk/Makefile
-diff -up firefox-63.0/third_party/prio/include/mprio.h.old firefox-63.0/third_party/prio/include/mprio.h
---- firefox-63.0/third_party/prio/include/mprio.h.old 2018-10-18 15:10:24.616102952 +0200
-+++ firefox-63.0/third_party/prio/include/mprio.h 2018-10-18 15:10:33.853076714 +0200
-@@ -14,9 +14,9 @@ extern "C" {
- #endif
-
- #include <msgpack.h>
--#include <nss/blapit.h>
--#include <nss/pk11pub.h>
--#include <nss/seccomon.h>
-+#include <blapit.h>
-+#include <pk11pub.h>
-+#include <seccomon.h>
- #include <stdbool.h>
- #include <stddef.h>
-
-diff -up firefox-63.0/third_party/prio/prio/encrypt.c.old firefox-63.0/third_party/prio/prio/encrypt.c
---- firefox-63.0/third_party/prio/prio/encrypt.c.old 2018-10-18 15:15:08.279250181 +0200
-+++ firefox-63.0/third_party/prio/prio/encrypt.c 2018-10-18 15:15:14.614229961 +0200
-@@ -6,9 +6,9 @@
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- */
-
--#include <nss/keyhi.h>
--#include <nss/keythi.h>
--#include <nss/pk11pub.h>
-+#include <keyhi.h>
-+#include <keythi.h>
-+#include <pk11pub.h>
- #include <prerror.h>
-
- #include "encrypt.h"
-diff -up firefox-63.0/third_party/prio/prio/prg.c.old firefox-63.0/third_party/prio/prio/prg.c
---- firefox-63.0/third_party/prio/prio/prg.c.old 2018-10-18 15:15:21.364208421 +0200
-+++ firefox-63.0/third_party/prio/prio/prg.c 2018-10-18 15:15:27.542188720 +0200
-@@ -7,8 +7,8 @@
- */
-
- #include <mprio.h>
--#include <nss/blapit.h>
--#include <nss/pk11pub.h>
-+#include <blapit.h>
-+#include <pk11pub.h>
- #include <string.h>
-
- #include "prg.h"
-diff -up firefox-63.0/third_party/prio/prio/prg.h.old firefox-63.0/third_party/prio/prio/prg.h
---- firefox-63.0/third_party/prio/prio/prg.h.old 2018-10-18 15:15:35.511163303 +0200
-+++ firefox-63.0/third_party/prio/prio/prg.h 2018-10-18 15:15:40.568147167 +0200
-@@ -10,7 +10,7 @@
- #define __PRG_H__
-
- #include <mpi.h>
--#include <nss/blapit.h>
-+#include <blapit.h>
- #include <stdlib.h>
-
- #include "config.h"
-diff -up firefox-63.0/third_party/prio/prio/rand.c.old firefox-63.0/third_party/prio/prio/rand.c
---- firefox-63.0/third_party/prio/prio/rand.c.old 2018-10-18 15:15:49.967117182 +0200
-+++ firefox-63.0/third_party/prio/prio/rand.c 2018-10-18 15:16:00.130084760 +0200
-@@ -8,9 +8,9 @@
-
- #include <limits.h>
- #include <mprio.h>
--#include <nss/nss.h>
--#include <nss/pk11pub.h>
--#include <nspr/prinit.h>
-+#include <nss.h>
-+#include <pk11pub.h>
-+#include <prinit.h>
-
- #include "debug.h"
- #include "rand.h"
-diff -up firefox-63.0/third_party/prio/prio/rand.h.old firefox-63.0/third_party/prio/prio/rand.h
---- firefox-63.0/third_party/prio/prio/rand.h.old 2018-10-18 15:14:49.689309517 +0200
-+++ firefox-63.0/third_party/prio/prio/rand.h 2018-10-18 15:14:56.789286855 +0200
-@@ -10,7 +10,7 @@
- #define __RAND_H__
-
- #include <mpi.h>
--#include <nss/seccomon.h>
-+#include <seccomon.h>
- #include <stdlib.h>
-
- /*
diff --git a/rhbz-1291190-appchooser-crash.patch b/rhbz-1291190-appchooser-crash.patch
deleted file mode 100644
index be3ccd8..0000000
--- a/rhbz-1291190-appchooser-crash.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -up firefox-46.0.1/widget/gtk/nsApplicationChooser.cpp.appchooser-crash firefox-46.0.1/widget/gtk/nsApplicationChooser.cpp
---- firefox-46.0.1/widget/gtk/nsApplicationChooser.cpp.appchooser-crash 2016-05-03 07:31:12.000000000 +0200
-+++ firefox-46.0.1/widget/gtk/nsApplicationChooser.cpp 2016-05-12 12:17:44.043729262 +0200
-@@ -112,7 +112,9 @@ void nsApplicationChooser::Done(GtkWidge
-
- // A "response" signal won't be sent again but "destroy" will be.
- g_signal_handlers_disconnect_by_func(chooser, FuncToGpointer(OnDestroy), this);
-- gtk_widget_destroy(chooser);
-+ // GTK >= 3.18 has a problem with destroying dialog at this stage for some reason.
-+ // We're going to hide the dialog in this case as a workaround.
-+ gtk_widget_hide(chooser);
-
- if (mCallback) {
- mCallback->Done(localHandler);