firefox 113.0-1 (znver1;aarch64;x86_64) 2023-17495
9999

Status published
Submitter cris [@T] beebames.com
Platform rolling
Repository main
URL https://abf.openmandriva.org/build_lists/337651
Packages
firefox-113.0-1.znver1.binary
firefox-113.0-1.znver1.source
firefox-af-113.0-1.znver1.binary
firefox-ar-113.0-1.znver1.binary
firefox-ast-113.0-1.znver1.binary
firefox-bg-113.0-1.znver1.binary
firefox-bn-113.0-1.znver1.binary
firefox-br-113.0-1.znver1.binary
firefox-bs-113.0-1.znver1.binary
firefox-ca-113.0-1.znver1.binary
firefox-cs-113.0-1.znver1.binary
firefox-cy-113.0-1.znver1.binary
firefox-da-113.0-1.znver1.binary
firefox-de-113.0-1.znver1.binary
firefox-debuginfo-113.0-1.znver1.debuginfo
firefox-debugsource-113.0-1.znver1.binary
firefox-devel-113.0-1.znver1.binary
firefox-el-113.0-1.znver1.binary
firefox-en_GB-113.0-1.znver1.binary
firefox-eo-113.0-1.znver1.binary
firefox-es_AR-113.0-1.znver1.binary
firefox-es_CL-113.0-1.znver1.binary
firefox-es_ES-113.0-1.znver1.binary
firefox-es_MX-113.0-1.znver1.binary
firefox-et-113.0-1.znver1.binary
firefox-eu-113.0-1.znver1.binary
firefox-fa-113.0-1.znver1.binary
firefox-fi-113.0-1.znver1.binary
firefox-fr-113.0-1.znver1.binary
firefox-fy-113.0-1.znver1.binary
firefox-ga_IE-113.0-1.znver1.binary
firefox-gd-113.0-1.znver1.binary
firefox-gl-113.0-1.znver1.binary
firefox-gu_IN-113.0-1.znver1.binary
firefox-he-113.0-1.znver1.binary
firefox-hi-113.0-1.znver1.binary
firefox-hr-113.0-1.znver1.binary
firefox-hu-113.0-1.znver1.binary
firefox-hy-113.0-1.znver1.binary
firefox-id-113.0-1.znver1.binary
firefox-is-113.0-1.znver1.binary
firefox-it-113.0-1.znver1.binary
firefox-ja-113.0-1.znver1.binary
firefox-kk-113.0-1.znver1.binary
firefox-km-113.0-1.znver1.binary
firefox-kn-113.0-1.znver1.binary
firefox-ko-113.0-1.znver1.binary
firefox-lt-113.0-1.znver1.binary
firefox-lv-113.0-1.znver1.binary
firefox-mk-113.0-1.znver1.binary
firefox-mr-113.0-1.znver1.binary
firefox-nb_NO-113.0-1.znver1.binary
firefox-nl-113.0-1.znver1.binary
firefox-nn_NO-113.0-1.znver1.binary
firefox-pa_IN-113.0-1.znver1.binary
firefox-pl-113.0-1.znver1.binary
firefox-pt_BR-113.0-1.znver1.binary
firefox-pt_PT-113.0-1.znver1.binary
firefox-ro-113.0-1.znver1.binary
firefox-ru-113.0-1.znver1.binary
firefox-si-113.0-1.znver1.binary
firefox-sk-113.0-1.znver1.binary
firefox-sl-113.0-1.znver1.binary
firefox-sq-113.0-1.znver1.binary
firefox-sr-113.0-1.znver1.binary
firefox-sv_SE-113.0-1.znver1.binary
firefox-ta-113.0-1.znver1.binary
firefox-te-113.0-1.znver1.binary
firefox-th-113.0-1.znver1.binary
firefox-tr-113.0-1.znver1.binary
firefox-uk-113.0-1.znver1.binary
firefox-vi-113.0-1.znver1.binary
firefox-zh_CN-113.0-1.znver1.binary
firefox-zh_TW-113.0-1.znver1.binary
firefox-113.0-1.aarch64.source
firefox-113.0-1.aarch64.binary
firefox-af-113.0-1.aarch64.binary
firefox-ar-113.0-1.aarch64.binary
firefox-ast-113.0-1.aarch64.binary
firefox-bg-113.0-1.aarch64.binary
firefox-bn-113.0-1.aarch64.binary
firefox-br-113.0-1.aarch64.binary
firefox-bs-113.0-1.aarch64.binary
firefox-ca-113.0-1.aarch64.binary
firefox-cs-113.0-1.aarch64.binary
firefox-cy-113.0-1.aarch64.binary
firefox-da-113.0-1.aarch64.binary
firefox-de-113.0-1.aarch64.binary
firefox-debuginfo-113.0-1.aarch64.debuginfo
firefox-debugsource-113.0-1.aarch64.binary
firefox-devel-113.0-1.aarch64.binary
firefox-el-113.0-1.aarch64.binary
firefox-en_GB-113.0-1.aarch64.binary
firefox-eo-113.0-1.aarch64.binary
firefox-es_AR-113.0-1.aarch64.binary
firefox-es_CL-113.0-1.aarch64.binary
firefox-es_ES-113.0-1.aarch64.binary
firefox-es_MX-113.0-1.aarch64.binary
firefox-et-113.0-1.aarch64.binary
firefox-eu-113.0-1.aarch64.binary
firefox-fa-113.0-1.aarch64.binary
firefox-fi-113.0-1.aarch64.binary
firefox-fr-113.0-1.aarch64.binary
firefox-fy-113.0-1.aarch64.binary
firefox-ga_IE-113.0-1.aarch64.binary
firefox-gd-113.0-1.aarch64.binary
firefox-gl-113.0-1.aarch64.binary
firefox-gu_IN-113.0-1.aarch64.binary
firefox-he-113.0-1.aarch64.binary
firefox-hi-113.0-1.aarch64.binary
firefox-hr-113.0-1.aarch64.binary
firefox-hu-113.0-1.aarch64.binary
firefox-hy-113.0-1.aarch64.binary
firefox-id-113.0-1.aarch64.binary
firefox-is-113.0-1.aarch64.binary
firefox-it-113.0-1.aarch64.binary
firefox-ja-113.0-1.aarch64.binary
firefox-kk-113.0-1.aarch64.binary
firefox-km-113.0-1.aarch64.binary
firefox-kn-113.0-1.aarch64.binary
firefox-ko-113.0-1.aarch64.binary
firefox-lt-113.0-1.aarch64.binary
firefox-lv-113.0-1.aarch64.binary
firefox-mk-113.0-1.aarch64.binary
firefox-mr-113.0-1.aarch64.binary
firefox-nb_NO-113.0-1.aarch64.binary
firefox-nl-113.0-1.aarch64.binary
firefox-nn_NO-113.0-1.aarch64.binary
firefox-pa_IN-113.0-1.aarch64.binary
firefox-pl-113.0-1.aarch64.binary
firefox-pt_BR-113.0-1.aarch64.binary
firefox-pt_PT-113.0-1.aarch64.binary
firefox-ro-113.0-1.aarch64.binary
firefox-ru-113.0-1.aarch64.binary
firefox-si-113.0-1.aarch64.binary
firefox-sk-113.0-1.aarch64.binary
firefox-sl-113.0-1.aarch64.binary
firefox-sq-113.0-1.aarch64.binary
firefox-sr-113.0-1.aarch64.binary
firefox-sv_SE-113.0-1.aarch64.binary
firefox-ta-113.0-1.aarch64.binary
firefox-te-113.0-1.aarch64.binary
firefox-th-113.0-1.aarch64.binary
firefox-tr-113.0-1.aarch64.binary
firefox-uk-113.0-1.aarch64.binary
firefox-vi-113.0-1.aarch64.binary
firefox-zh_CN-113.0-1.aarch64.binary
firefox-zh_TW-113.0-1.aarch64.binary
firefox-113.0-1.x86_64.binary
firefox-113.0-1.x86_64.source
firefox-af-113.0-1.x86_64.binary
firefox-ar-113.0-1.x86_64.binary
firefox-ast-113.0-1.x86_64.binary
firefox-bg-113.0-1.x86_64.binary
firefox-bn-113.0-1.x86_64.binary
firefox-br-113.0-1.x86_64.binary
firefox-bs-113.0-1.x86_64.binary
firefox-ca-113.0-1.x86_64.binary
firefox-cs-113.0-1.x86_64.binary
firefox-cy-113.0-1.x86_64.binary
firefox-da-113.0-1.x86_64.binary
firefox-de-113.0-1.x86_64.binary
firefox-debuginfo-113.0-1.x86_64.debuginfo
firefox-debugsource-113.0-1.x86_64.binary
firefox-devel-113.0-1.x86_64.binary
firefox-el-113.0-1.x86_64.binary
firefox-en_GB-113.0-1.x86_64.binary
firefox-eo-113.0-1.x86_64.binary
firefox-es_AR-113.0-1.x86_64.binary
firefox-es_CL-113.0-1.x86_64.binary
firefox-es_ES-113.0-1.x86_64.binary
firefox-es_MX-113.0-1.x86_64.binary
firefox-et-113.0-1.x86_64.binary
firefox-eu-113.0-1.x86_64.binary
firefox-fa-113.0-1.x86_64.binary
firefox-fi-113.0-1.x86_64.binary
firefox-fr-113.0-1.x86_64.binary
firefox-fy-113.0-1.x86_64.binary
firefox-ga_IE-113.0-1.x86_64.binary
firefox-gd-113.0-1.x86_64.binary
firefox-gl-113.0-1.x86_64.binary
firefox-gu_IN-113.0-1.x86_64.binary
firefox-he-113.0-1.x86_64.binary
firefox-hi-113.0-1.x86_64.binary
firefox-hr-113.0-1.x86_64.binary
firefox-hu-113.0-1.x86_64.binary
firefox-hy-113.0-1.x86_64.binary
firefox-id-113.0-1.x86_64.binary
firefox-is-113.0-1.x86_64.binary
firefox-it-113.0-1.x86_64.binary
firefox-ja-113.0-1.x86_64.binary
firefox-kk-113.0-1.x86_64.binary
firefox-km-113.0-1.x86_64.binary
firefox-kn-113.0-1.x86_64.binary
firefox-ko-113.0-1.x86_64.binary
firefox-lt-113.0-1.x86_64.binary
firefox-lv-113.0-1.x86_64.binary
firefox-mk-113.0-1.x86_64.binary
firefox-mr-113.0-1.x86_64.binary
firefox-nb_NO-113.0-1.x86_64.binary
firefox-nl-113.0-1.x86_64.binary
firefox-nn_NO-113.0-1.x86_64.binary
firefox-pa_IN-113.0-1.x86_64.binary
firefox-pl-113.0-1.x86_64.binary
firefox-pt_BR-113.0-1.x86_64.binary
firefox-pt_PT-113.0-1.x86_64.binary
firefox-ro-113.0-1.x86_64.binary
firefox-ru-113.0-1.x86_64.binary
firefox-si-113.0-1.x86_64.binary
firefox-sk-113.0-1.x86_64.binary
firefox-sl-113.0-1.x86_64.binary
firefox-sq-113.0-1.x86_64.binary
firefox-sr-113.0-1.x86_64.binary
firefox-sv_SE-113.0-1.x86_64.binary
firefox-ta-113.0-1.x86_64.binary
firefox-te-113.0-1.x86_64.binary
firefox-th-113.0-1.x86_64.binary
firefox-tr-113.0-1.x86_64.binary
firefox-uk-113.0-1.x86_64.binary
firefox-vi-113.0-1.x86_64.binary
firefox-zh_CN-113.0-1.x86_64.binary
firefox-zh_TW-113.0-1.x86_64.binary
Build Date 2023-05-10 10:22:15 +0000 UTC
Last Updated 2023-05-20 13:24:02.302111988 +0000 UTC
$ git diff --patch-with-stat --summary bb93bbed722801ef4db147809ba0711f03f34f52..035943cc1a29244898c5b6239de50111dce7766a

 .abf.yml                                           | 140 ++---
 D173814.diff                                       |  82 ---
 firefox-enable-vaapi.patch                         |  10 +-
 firefox.spec                                       |  21 +-
 ...import-dmabuf-directly-into-desktop-frame.patch | 505 ----------------
 mozilla-107.0.1-kde.patch                          | 673 ++++-----------------
 mozilla-1663844.patch                              |  37 --
 mozilla-1670333.patch                              |  68 ---
 8 files changed, 216 insertions(+), 1320 deletions(-)
 delete mode 100644 D173814.diff
 delete mode 100644 libwebrtc-pipewire-capturer-import-dmabuf-directly-into-desktop-frame.patch
 delete mode 100644 mozilla-1663844.patch
 delete mode 100644 mozilla-1670333.patch

diff --git a/.abf.yml b/.abf.yml
index 26586aa..855c760 100644
--- a/.abf.yml
+++ b/.abf.yml
@@ -1,72 +1,72 @@
 sources:
-  af.xpi: 09fc8a1b64c52bcae2aa55c8126c018b4a839d50
-  ar.xpi: 6c55f611e6e69ec7cc39c5689988074d26b7a27f
-  ast.xpi: 9af20ceae798f0dc34e027a35578487e6d941369
-  bg.xpi: 0b48984d2c2f0106a7f6f9437d0135b8c214b4e9
-  bn.xpi: 29cd9aae339a2db24926decb6181613b2e8d51eb
-  br.xpi: 9b173e9c77b6896e2347ab992ef9e6104d284b6c
-  bs.xpi: 4f2ad26cd8a4b6c7f17f9efbc4ccbbdda36b82a8
-  ca.xpi: bc45b30fbfade45ac01f125b9f26b1a5a9311e2a
   cbindgen-vendor.tar.xz: 8faf49463f1705b8604b2d121dc844aad7e37eae
-  cs.xpi: 4471a0afa4ca83c5644dc2691c25da2b6d09b690
-  cy.xpi: ebe262935e3a05f602379350025dc2e05322874e
-  da.xpi: 347638e79e3906fa521a2b7a80ee39a2715bf49c
-  de.xpi: 70791b195882da777bfb9a65af5251ad943501d9
-  el.xpi: 053b9014b5f4cf7a522ab3b81d11acab5f4a951b
-  en-GB.xpi: 97b11d254a2ede34d8932c03b13c0bb308110619
-  eo.xpi: 11d3d9083cab58b03bf2613c84a7ff35ce0a4d3e
-  es-AR.xpi: 0a41b12b7c5a572155fe1b9ff2d6e83fbc4ea8f5
-  es-CL.xpi: 49c9b8969d51256b237ce0794ce833736b0ed093
-  es-ES.xpi: 8bd3989ca918eae58f10a0fbf4f11f9c1f7ca1f3
-  es-MX.xpi: e27ab4f1d187f4b81c10a89647d323eb8058a3ae
-  et.xpi: 0597217bb6448c7050617001448f43b762c005dc
-  eu.xpi: 63ef4f382beea46da155a27008f8ae3575818576
-  fa.xpi: 20992f693d65b3eab448aece45477debf2710b1c
-  fi.xpi: f2fd09b39695776566e52f9ef78cc398a29be6d8
-  firefox-112.0.2.source.tar.xz: 65deb4379e6d8104216ce9ba0f743403964efee5
-  fr.xpi: d4c181f65e7a0b62e0bd2a8cd88a246a80172cec
-  fy-NL.xpi: a660fffcf9fa2aa186181785f972f4bcc735d809
-  ga-IE.xpi: 7c7bc423ea25c619d88cd1120681ee087c44306c
-  gd.xpi: 565788ed5f1358b516c432c3b94a9a4137f479cd
-  gl.xpi: 5f8d69832f160ded2d6fe586be0935adccb9cf6d
-  gu-IN.xpi: caca5d023f08ad03caae4d54945ffaf3e762b4b4
-  he.xpi: 1dc3e383b4936a0ed5195cb6d5af22613968973f
-  hi-IN.xpi: 0a55d1e9b068fed90c4efb6cfcfecd7680efe31a
-  hr.xpi: 08eaddb6d7a6562c3e16c0908ae5ab48b858702d
-  hu.xpi: 9903acb8e4e0cf8444005e2b88eb9e11341bb8d2
-  hy-AM.xpi: 8fd47b637e1851a6a7ce3543617ee34d884bbce2
-  id.xpi: bf4f9d3020a02e75805de237179ee96495de0744
-  is.xpi: 9f8d2a42494d8ea7be94458de3ff4fa06b00599f
-  it.xpi: bf72a30420c152ef89707255465a7f4fb22ee691
-  ja.xpi: 983e4005a7bd0a9a1a156d80c7b1a148130d30cb
-  kk.xpi: 2132b972eecab3d872fffb587fedeeebad53d666
-  km.xpi: 96300907645c7416d9ce21b6bf1c993570f82df4
-  kn.xpi: 058635203bb40fd782e736de953cb79f9f0794a4
-  ko.xpi: e45bcfaa0bbf816ab0c74e6f53f2aa33aa2e4cf9
-  lt.xpi: e804ff6a8116101e8cd01ecc24bc3c6ac3a56c23
-  lv.xpi: 45169074947be30de5550398cec7802f0e75200e
-  mk.xpi: 827ffeca958221023b903c41166e56b2d5babc58
-  mr.xpi: 793d14aa979470b58fee27d119f9cf95c38434ed
-  nb-NO.xpi: 3bc95e3a22d598aadab06b99804f894337740ee4
-  nl.xpi: 159a602697a63fec3742270f9d07fdd7fa0565b0
-  nn-NO.xpi: ce2e1571bb7d4a1baceac9a855537fde3fd3b302
-  pa-IN.xpi: edbee4f4410353e7d048430cb25db34dbd4ba001
-  pl.xpi: 97a63853ffd911f33719917a09134fa30ede4541
-  pt-BR.xpi: e1844c6eac74a51ef392245a6e58a5df4f8aa55a
-  pt-PT.xpi: 0b5d074c9faea27c1bbeefb08ceaf918b7faf01e
-  ro.xpi: 1048fecfbeb33a2bc43469f76c11cefa65aff575
-  ru.xpi: f37f7030d84ed60563f4a47af632b8bb556463bf
-  si.xpi: 08ddf24d22f6677d244a6c41559e2d4854e7ef7e
-  sk.xpi: e46baa1a7d75becd00a2a27fbb5aa636978ef78e
-  sl.xpi: fa0dd952311c8063cc8785ee01ed31e8034b9ed7
-  sq.xpi: b89dbaaae741b99ed4eb2ab9d59be3cfd1c83f1e
-  sr.xpi: bd7d9a612d9690d6215f3f8c2bd8b0b638d4d1b8
-  sv-SE.xpi: 7be54d76f70d6cd2855d6f2de6b78c2fe053b114
-  ta.xpi: f7aa318b22e41ede2456d2f2bb637cf1ecead63a
-  te.xpi: c1da7e0fec7a8e81ea27df5dccd9bea121b28ed3
-  th.xpi: c8bfd62fe5c89fb1cd835d26357a15bde5bb5fde
-  tr.xpi: f205e48ecd3005c10020afd4920c8d9a11b625bc
-  uk.xpi: 1b9bd4199ec87054b67c65084900747c1fe856a7
-  vi.xpi: 14ac7ef15fd257a5e5670939314c602ecf3337c6
-  zh-CN.xpi: e7f7d089560f7233308b3d9b9ddc8d28b9091253
-  zh-TW.xpi: e3b62af1a84c2ebc9dbfd7492f707b964b0248ae
+  firefox-113.0.source.tar.xz: 66f0217f7a1bde8ceb2f5368263d7569baa68597
+  af.xpi: e48817e9499363ac3d631045df7febd296bfa15f
+  ar.xpi: 51bcd5874bfebdef230e6b65df9b65840b3a883d
+  ast.xpi: d7eb819e8131c2a070eb2dddb301dd3a4756b44f
+  bg.xpi: 923d52ac0461636483379a0219cf46f902026bdd
+  bn.xpi: 426e50605b4e6aa99a4a05d442a0c98f3a801a53
+  br.xpi: 109d4c62216f9eb26686f2481299371ed481e416
+  bs.xpi: dd59334a2d7ce6325f2a330626396dd943c4f2f1
+  ca.xpi: d6353f88e9ffc7c896b3b73dd8bcaabf52fffe4d
+  cs.xpi: 6ceceb90cdc871134f14c3a5a7c3ac7ffd15539d
+  cy.xpi: 685cb966eba4d14e04bb1c3ef775233c731afa09
+  da.xpi: d1be981f840127af8bef8a100c4aba02a15df34d
+  de.xpi: 137f0327b2d505d2aebda45f649d37a1ae7834d4
+  el.xpi: f3532594c28ab564988059ee2cb1534fb8a9957b
+  en-GB.xpi: ddb774f240d3f534570051899023e910395b4f7f
+  eo.xpi: 0d0ece3347d7e81310f60c18961b42a535caa166
+  es-AR.xpi: 7beaa6152c924c623b62dd1fdff62f0dcc4859f7
+  es-CL.xpi: f210eac26eff92230cca20a4cb05864936dd079e
+  es-ES.xpi: 2b3b0cc1ab18605d342e1429e61b79a90436cfb1
+  es-MX.xpi: 9e71682cecd9d361c8878eacc3947a8e760d68fb
+  et.xpi: 4cd425e184658565c3fe08dd09759f949a9934d4
+  eu.xpi: 2292526feb37c0f4755ec0437ff2de4ecb437d3a
+  fa.xpi: 55010ad861328c5887fedf72ac3c0351f824ca9b
+  fi.xpi: d43312f1784b8ce057576a0dc183e1f01f7d209c
+  fr.xpi: 8cc60f2e5bc9cd109e0a2f188c45c713906ed3d7
+  fy-NL.xpi: 28dfbdfd44743a45d62561c33df4d7024f63dfbc
+  ga-IE.xpi: 15f8bc7b98b665296b4aee181267b6b7ac7d483a
+  gd.xpi: 4c043391cfa02aa6681c25653f61b94e98765891
+  gl.xpi: 257440ddf02f46cdfce441e56b63d4f2f8029bb0
+  gu-IN.xpi: 25cd4dc71201e40162ff4ffb1137d6ae52df2096
+  he.xpi: 7d3a9370fad4844a108eabe883a2cb10d3857d0a
+  hi-IN.xpi: d95563c5dec8479be2ff9f211cc33fc4f110882d
+  hr.xpi: 8f26f1f8dbcddec85912dc3683892fe52d9fac5c
+  hu.xpi: 94274daa5e32a5847902032c5793df554507dd64
+  hy-AM.xpi: 1def27aa2064ce88b4d7f6bc803747a34a7fb9a1
+  id.xpi: 90a4d5dec43423480595913dcf0946efda6ffed6
+  is.xpi: c87a133897e9cdba29c8c999bdd682d7e4ae8246
+  it.xpi: 868922406e022cbbc056dea43faff50f91bf390e
+  ja.xpi: 89829555194e0693bcd6a257ecb3582d5ae7e4cc
+  kk.xpi: dfe13f2dc36833c275a5368135235c5b0d2807b6
+  km.xpi: be52b7e76df83c95a884d501116c193c057713bc
+  kn.xpi: 46e515548718e1e92b7b6bb6021cbc9a32d6519e
+  ko.xpi: 8fad99e9e7b227992f44276ea3c3448d2eddd94c
+  lt.xpi: e5c4a1cfb81846ea13f439947def00f172006700
+  lv.xpi: 82a006b6312e8e7850997849268317d88d65a4a2
+  mk.xpi: fff162721c0808fb8ddd078bfe06c74992f5a402
+  mr.xpi: 85be4a74255904787378c3efa26bb74375f3484e
+  nb-NO.xpi: a1750383a8645d61f6e3303248fa33b2f1c1dfd7
+  nl.xpi: 9dc390828f66c74c927fe09c97be1a2ec9576940
+  nn-NO.xpi: 3301b27fab68e922788c44662379ef0f7d5597e2
+  pa-IN.xpi: 17ef27efc0113933dcadcaf10687257cf2b57ae5
+  pl.xpi: 1efcf7f38769d3c20978d3deb631e075c0ab3a81
+  pt-BR.xpi: 60e88e174eed540e779bef21b13cdbe1ab71dd9c
+  pt-PT.xpi: 7885b752f7c354ab681205a46709b20e6e1533fe
+  ro.xpi: cb0e056d01151393cf58a2dc905d489de0634091
+  ru.xpi: 580ede1a5a6ccf8ad4c8992f7812050541f282e6
+  si.xpi: 06c57c77b425543fc002c7cc4cd0eb31691a3668
+  sk.xpi: 4a850aa52e59440efdfcfb94b372d6bbea27bdec
+  sl.xpi: 359880834f7526c1ece33372a0338608caa689cf
+  sq.xpi: c7e88f3f159c0dd48b823ec6a72d90e57d51580b
+  sr.xpi: 5a88520ce1e0ae1e4df1e6b040854ed105dbc1d7
+  sv-SE.xpi: 5ab23cff2bdec164912fd9b6f522f4458d0e5f05
+  ta.xpi: eab6182194ffd7c86d98eb0be014f778fc1aff6f
+  te.xpi: be3d6e099aeb516213137da5cebd54ca2364fb32
+  th.xpi: 1800d18a1eafdf9d4e8f5f6b71bb3d2db994dde4
+  tr.xpi: 1e5facbe0036bcf2766624b6f7c5c4c811e5beeb
+  uk.xpi: b8552bf73266b030c06caa4a2add3b843b2ae432
+  vi.xpi: 334e35ed2094acc35c6fe2717d1604433fad8e7c
+  zh-CN.xpi: 9aadb73109a8c0cccfebc43a8b85dbda3f5f3d78
+  zh-TW.xpi: 000f13b96f0d294a39e2dc0c2abc6f681ecc8adf
diff --git a/D173814.diff b/D173814.diff
deleted file mode 100644
index 91898aa..0000000
--- a/D173814.diff
+++ /dev/null
@@ -1,82 +0,0 @@
-diff --git a/widget/gtk/MozContainerWayland.h b/widget/gtk/MozContainerWayland.h
---- a/widget/gtk/MozContainerWayland.h
-+++ b/widget/gtk/MozContainerWayland.h
-@@ -83,10 +83,13 @@
-                                                         nsIntSize aSize,
-                                                         int scale);
- void moz_container_wayland_set_scale_factor(MozContainer* container);
- void moz_container_wayland_set_scale_factor_locked(
-     const mozilla::MutexAutoLock& aProofOfLock, MozContainer* container);
-+bool moz_container_wayland_size_matches_scale_factor_locked(
-+    const mozilla::MutexAutoLock& aProofOfLock, MozContainer* container,
-+    int aWidth, int aHeight);
- 
- void moz_container_wayland_add_initial_draw_callback_locked(
-     MozContainer* container, const std::function<void(void)>& initial_draw_cb);
- void moz_container_wayland_add_or_fire_initial_draw_callback(
-     MozContainer* container, const std::function<void(void)>& initial_draw_cb);
-diff --git a/widget/gtk/MozContainerWayland.cpp b/widget/gtk/MozContainerWayland.cpp
---- a/widget/gtk/MozContainerWayland.cpp
-+++ b/widget/gtk/MozContainerWayland.cpp
-@@ -595,10 +595,17 @@
-   if (container->wl_container.surface) {
-     moz_container_wayland_set_scale_factor_locked(lock, container);
-   }
- }
- 
-+bool moz_container_wayland_size_matches_scale_factor_locked(
-+    const MutexAutoLock& aProofOfLock, MozContainer* container, int aWidth,
-+    int aHeight) {
-+  return aWidth % container->wl_container.buffer_scale == 0 &&
-+         aHeight % container->wl_container.buffer_scale == 0;
-+}
-+
- static bool moz_container_wayland_surface_create_locked(
-     const MutexAutoLock& aProofOfLock, MozContainer* container) {
-   MozContainerWayland* wl_container = &container->wl_container;
- 
-   LOGWAYLAND("%s [%p]\n", __FUNCTION__,
-diff --git a/widget/gtk/WindowSurfaceWaylandMultiBuffer.cpp b/widget/gtk/WindowSurfaceWaylandMultiBuffer.cpp
---- a/widget/gtk/WindowSurfaceWaylandMultiBuffer.cpp
-+++ b/widget/gtk/WindowSurfaceWaylandMultiBuffer.cpp
-@@ -283,12 +283,12 @@
-     return;
-   }
-   mFrameInProcess = false;
- 
-   MozContainer* container = mWindow->GetMozContainer();
--  MozContainerSurfaceLock lock(container);
--  struct wl_surface* waylandSurface = lock.GetSurface();
-+  MozContainerSurfaceLock MozContainerLock(container);
-+  struct wl_surface* waylandSurface = MozContainerLock.GetSurface();
-   if (!waylandSurface) {
-     LOGWAYLAND(
-         "WindowSurfaceWaylandMB::Commit [%p] frame queued: can't lock "
-         "wl_surface\n",
-         (void*)mWindow.get());
-@@ -317,12 +317,23 @@
-       LayoutDeviceIntRect r = iter.Get();
-       wl_surface_damage_buffer(waylandSurface, r.x, r.y, r.width, r.height);
-     }
-   }
- 
-+  // aProofOfLock is a kind of substitution of MozContainerSurfaceLock.
-+  // MozContainer is locked but MozContainerSurfaceLock doen't convert to
-+  // MutexAutoLock& so we use aProofOfLock here.
-   moz_container_wayland_set_scale_factor_locked(aProofOfLock, container);
--  mInProgressBuffer->AttachAndCommit(waylandSurface);
-+
-+  // It's possible that scale factor changed between Lock() and Commit()
-+  // but window size is the same.
-+  // Don't attach such buffer as it may have incorrect size,
-+  // we'll paint new content soon.
-+  if (moz_container_wayland_size_matches_scale_factor_locked(
-+          aProofOfLock, container, mWindowSize.width, mWindowSize.height)) {
-+    mInProgressBuffer->AttachAndCommit(waylandSurface);
-+  }
- 
-   mInProgressBuffer->ResetBufferAge();
-   mFrontBuffer = mInProgressBuffer;
-   mFrontBufferInvalidRegion = aInvalidRegion;
-   mInProgressBuffer = nullptr;
-
diff --git a/firefox-enable-vaapi.patch b/firefox-enable-vaapi.patch
index dbe92bc..50da2c6 100644
--- a/firefox-enable-vaapi.patch
+++ b/firefox-enable-vaapi.patch
@@ -1,9 +1,9 @@
-diff -up firefox-112.0/widget/gtk/GfxInfo.cpp.firefox-enable-vaapi firefox-112.0/widget/gtk/GfxInfo.cpp
---- firefox-112.0/widget/gtk/GfxInfo.cpp.firefox-enable-vaapi	2023-04-05 11:10:14.156695694 +0200
-+++ firefox-112.0/widget/gtk/GfxInfo.cpp	2023-04-05 11:11:40.697665718 +0200
-@@ -810,14 +810,6 @@ const nsTArray<GfxDriverInfo>& GfxInfo::
+diff -up firefox-113.0/widget/gtk/GfxInfo.cpp.6~ firefox-113.0/widget/gtk/GfxInfo.cpp
+--- firefox-113.0/widget/gtk/GfxInfo.cpp.6~	2023-05-09 15:56:03.091736331 +0200
++++ firefox-113.0/widget/gtk/GfxInfo.cpp	2023-05-09 15:56:47.355062687 +0200
+@@ -818,14 +818,6 @@ const nsTArray<GfxDriverInfo>& GfxInfo::
          nsIGfxInfo::FEATURE_BLOCKED_DEVICE, DRIVER_COMPARISON_IGNORED,
-         V(0, 0, 0, 0), "FEATURE_HARDWARE_VIDEO_DECODING_NO_LINUX_AMD", "");
+         V(0, 0, 0, 0), "FEATURE_HARDWARE_VIDEO_DECODING_NO_R600", "");
  
 -    // Disable on Release/late Beta
 -#if !defined(EARLY_BETA_OR_EARLIER)
diff --git a/firefox.spec b/firefox.spec
index 9abd7bb..c4a269b 100644
--- a/firefox.spec
+++ b/firefox.spec
@@ -239,7 +239,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:	112.0.2
+Version:	113.0
 Release:	%{?beta:0.%{beta}.}1
 License:	MPLv1+
 Group:		Networking/WWW
@@ -279,16 +279,12 @@ Patch17:	firefox-112.0.1-no-static-libstdc++.patch
 Patch50:    	https://src.fedoraproject.org/rpms/firefox/raw/rawhide/f/firefox-enable-vaapi.patch
 Patch51:	https://src.fedoraproject.org/rpms/firefox/raw/rawhide/f/0001-GLIBCXX-fix-for-GCC-12.patch
 Patch52:	https://src.fedoraproject.org/rpms/firefox/raw/rawhide/f/build-aarch64-skia.patch
-Patch55:	https://src.fedoraproject.org/rpms/firefox/raw/rawhide/f/D173814.diff
 Patch57:	https://src.fedoraproject.org/rpms/firefox/raw/rawhide/f/firefox-112.0-commasplit.patch
 Patch58:	https://src.fedoraproject.org/rpms/firefox/raw/rawhide/f/firefox-gcc-13-build.patch
-Patch60:	https://src.fedoraproject.org/rpms/firefox/raw/rawhide/f/libwebrtc-pipewire-capturer-import-dmabuf-directly-into-desktop-frame.patch
 Patch61:	https://src.fedoraproject.org/rpms/firefox/raw/rawhide/f/mozilla-1196777.patch
 Patch62:	https://src.fedoraproject.org/rpms/firefox/raw/rawhide/f/mozilla-1516803.patch
-Patch63:	https://src.fedoraproject.org/rpms/firefox/raw/rawhide/f/mozilla-1663844.patch
 #Patch64:	https://src.fedoraproject.org/rpms/firefox/raw/rawhide/f/mozilla-1667096.patch
 Patch65:	https://src.fedoraproject.org/rpms/firefox/raw/rawhide/f/mozilla-1669639.patch
-Patch66:	https://src.fedoraproject.org/rpms/firefox/raw/rawhide/f/mozilla-1670333.patch
 Patch67:	https://src.fedoraproject.org/rpms/firefox/raw/rawhide/f/mozilla-1775202.patch
 
 BuildRequires:	doxygen
@@ -546,11 +542,11 @@ cat > .cargo/config <<EOL
 replace-with = "vendored-sources"
 
 [source.vendored-sources]
-directory = "`pwd`"
+directory = "$(pwd)"
 EOL
 
 env CARGO_HOME=.cargo cargo install cbindgen
-export PATH=`pwd`/.cargo/bin:$PATH
+export PATH=$(pwd)/.cargo/bin:$PATH
 cd -
 %endif
 
@@ -559,15 +555,16 @@ export MOZCONFIG=$(pwd)/mozconfig
 cat $MOZCONFIG
 
 export MOZ_NOSPAM=1
-export MOZ_SERVICES_SYNC="1"
+export MOZ_SERVICES_SYNC=1
 export MACH_NO_WRITE_TIMES=1
-# (tpg) do not create new user profiles on each upgrade, use exsting one
-export MOZ_LEGACY_PROFILES="1"
 export LDFLAGS+="%{build_ldflags} -Wl,--no-keep-memory"
 export RUSTFLAGS="-Cdebuginfo=0"
 
-# Needed to keep old profile working
-export MOZ_LEGACY_PROFILES="1"
+# (tpg) do not create new user profiles on each upgrade, use exsting one
+export MOZ_LEGACY_PROFILES=1
+
+# (tpg) re-use already existing user profile
+export MOZ_ALLOW_DOWNGRADE=1
 
 %if %{with system_python}
 # FIXME We should enable system python, but need to sort out dependencies
diff --git a/libwebrtc-pipewire-capturer-import-dmabuf-directly-into-desktop-frame.patch b/libwebrtc-pipewire-capturer-import-dmabuf-directly-into-desktop-frame.patch
deleted file mode 100644
index 69f9df2..0000000
--- a/libwebrtc-pipewire-capturer-import-dmabuf-directly-into-desktop-frame.patch
+++ /dev/null
@@ -1,505 +0,0 @@
-From d9faa73cbbc186d7dd0dbfce0589012a0bed9f17 Mon Sep 17 00:00:00 2001
-From: Jan Grulich <grulja@gmail.com>
-Date: Fri, 17 Mar 2023 10:58:10 +0100
-Subject: [PATCH] PipeWire capturer: import DMABufs directly into desktop frame
-
-Originally DMABufs were imported into a temporary buffer followed by a
-copy operation into the desktop frame itself. This is not needed as we
-can import them directly into desktop frames and avoid this overhead.
-
-Also drop support for MemPtr buffers as both Mutter and KWin don't seem
-to support them and they are going to be too slow anyway.
-
-Testing with latest Chromium, I could see two processes with usage around 20% and 40% without this change going down to 10% and 20% with
-this change applied.
-
-Bug: webrtc:13429
-Bug: chrome:1378258
-Change-Id: Ice3292528ff56300931c8638f8e03d4883d5e331
-Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/297501
-Reviewed-by: Alexander Cooper <alcooper@chromium.org>
-Commit-Queue: Jan Grulich <grulja@gmail.com>
-Cr-Commit-Position: refs/heads/main@{#39594}
----
-
-diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.cc b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.cc
-index 5bbd5d7aba..b529077c6d 100644
---- a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.cc
-+++ b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.cc
-@@ -101,11 +101,23 @@ typedef void (*glDeleteTextures_func)(GLsizei n, const GLuint* textures);
- typedef void (*glGenTextures_func)(GLsizei n, GLuint* textures);
- typedef GLenum (*glGetError_func)(void);
- typedef const GLubyte* (*glGetString_func)(GLenum name);
--typedef void (*glGetTexImage_func)(GLenum target,
--                                   GLint level,
--                                   GLenum format,
--                                   GLenum type,
--                                   void* pixels);
-+typedef void (*glReadPixels_func)(GLint x,
-+                                  GLint y,
-+                                  GLsizei width,
-+                                  GLsizei height,
-+                                  GLenum format,
-+                                  GLenum type,
-+                                  void* data);
-+typedef void (*glGenFramebuffers_func)(GLsizei n, GLuint* ids);
-+typedef void (*glDeleteFramebuffers_func)(GLsizei n,
-+                                          const GLuint* framebuffers);
-+typedef void (*glBindFramebuffer_func)(GLenum target, GLuint framebuffer);
-+typedef void (*glFramebufferTexture2D_func)(GLenum target,
-+                                            GLenum attachment,
-+                                            GLenum textarget,
-+                                            GLuint texture,
-+                                            GLint level);
-+typedef GLenum (*glCheckFramebufferStatus_func)(GLenum target);
- typedef void (*glTexParameteri_func)(GLenum target, GLenum pname, GLint param);
- typedef void* (*glXGetProcAddressARB_func)(const char*);
-
-@@ -118,7 +130,12 @@ glDeleteTextures_func GlDeleteTextures = nullptr;
- glGenTextures_func GlGenTextures = nullptr;
- glGetError_func GlGetError = nullptr;
- glGetString_func GlGetString = nullptr;
--glGetTexImage_func GlGetTexImage = nullptr;
-+glReadPixels_func GlReadPixels = nullptr;
-+glGenFramebuffers_func GlGenFramebuffers = nullptr;
-+glDeleteFramebuffers_func GlDeleteFramebuffers = nullptr;
-+glBindFramebuffer_func GlBindFramebuffer = nullptr;
-+glFramebufferTexture2D_func GlFramebufferTexture2D = nullptr;
-+glCheckFramebufferStatus_func GlCheckFramebufferStatus = nullptr;
- glTexParameteri_func GlTexParameteri = nullptr;
- glXGetProcAddressARB_func GlXGetProcAddressARB = nullptr;
-
-@@ -279,12 +296,26 @@ static bool LoadGL() {
-         (glDeleteTextures_func)GlXGetProcAddressARB("glDeleteTextures");
-     GlGenTextures = (glGenTextures_func)GlXGetProcAddressARB("glGenTextures");
-     GlGetError = (glGetError_func)GlXGetProcAddressARB("glGetError");
--    GlGetTexImage = (glGetTexImage_func)GlXGetProcAddressARB("glGetTexImage");
-+    GlReadPixels = (glReadPixels_func)GlXGetProcAddressARB("glReadPixels");
-+    GlGenFramebuffers =
-+        (glGenFramebuffers_func)GlXGetProcAddressARB("glGenFramebuffers");
-+    GlDeleteFramebuffers =
-+        (glDeleteFramebuffers_func)GlXGetProcAddressARB("glDeleteFramebuffers");
-+    GlBindFramebuffer =
-+        (glBindFramebuffer_func)GlXGetProcAddressARB("glBindFramebuffer");
-+    GlFramebufferTexture2D = (glFramebufferTexture2D_func)GlXGetProcAddressARB(
-+        "glFramebufferTexture2D");
-+    GlCheckFramebufferStatus =
-+        (glCheckFramebufferStatus_func)GlXGetProcAddressARB(
-+            "glCheckFramebufferStatus");
-+
-     GlTexParameteri =
-         (glTexParameteri_func)GlXGetProcAddressARB("glTexParameteri");
-
-     return GlBindTexture && GlDeleteTextures && GlGenTextures && GlGetError &&
--           GlGetTexImage && GlTexParameteri;
-+           GlReadPixels && GlGenFramebuffers && GlDeleteFramebuffers &&
-+           GlBindFramebuffer && GlFramebufferTexture2D &&
-+           GlCheckFramebufferStatus && GlTexParameteri;
-   }
-
-   return false;
-@@ -435,6 +466,14 @@ EglDmaBuf::~EglDmaBuf() {
-     EglTerminate(egl_.display);
-   }
-
-+  if (fbo_) {
-+    GlDeleteFramebuffers(1, &fbo_);
-+  }
-+
-+  if (texture_) {
-+    GlDeleteTextures(1, &texture_);
-+  }
-+
-   // BUG: crbug.com/1290566
-   // Closing libEGL.so.1 when using NVidia drivers causes a crash
-   // when EglGetPlatformDisplayEXT() is used, at least this one is enough
-@@ -466,20 +505,20 @@ bool EglDmaBuf::GetClientExtensions(EGLDisplay dpy, EGLint name) {
- }
-
- RTC_NO_SANITIZE("cfi-icall")
--std::unique_ptr<uint8_t[]> EglDmaBuf::ImageFromDmaBuf(
--    const DesktopSize& size,
--    uint32_t format,
--    const std::vector<PlaneData>& plane_datas,
--    uint64_t modifier) {
--  std::unique_ptr<uint8_t[]> src;
--
-+bool EglDmaBuf::ImageFromDmaBuf(const DesktopSize& size,
-+                                uint32_t format,
-+                                const std::vector<PlaneData>& plane_datas,
-+                                uint64_t modifier,
-+                                const DesktopVector& offset,
-+                                const DesktopSize& buffer_size,
-+                                uint8_t* data) {
-   if (!egl_initialized_) {
--    return src;
-+    return false;
-   }
-
-   if (plane_datas.size() <= 0) {
-     RTC_LOG(LS_ERROR) << "Failed to process buffer: invalid number of planes";
--    return src;
-+    return false;
-   }
-
-   EGLint attribs[47];
-@@ -568,20 +607,32 @@ std::unique_ptr<uint8_t[]> EglDmaBuf::ImageFromDmaBuf(
-   if (image == EGL_NO_IMAGE) {
-     RTC_LOG(LS_ERROR) << "Failed to record frame: Error creating EGLImage - "
-                       << FormatEGLError(EglGetError());
--    return src;
-+    return false;
-   }
-
-   // create GL 2D texture for framebuffer
--  GLuint texture;
--  GlGenTextures(1, &texture);
--  GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
--  GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
--  GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
--  GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
--  GlBindTexture(GL_TEXTURE_2D, texture);
-+  if (!texture_) {
-+    GlGenTextures(1, &texture_);
-+    GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
-+    GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-+    GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
-+    GlTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-+  }
-+  GlBindTexture(GL_TEXTURE_2D, texture_);
-   GlEGLImageTargetTexture2DOES(GL_TEXTURE_2D, image);
-
--  src = std::make_unique<uint8_t[]>(plane_datas[0].stride * size.height());
-+  if (!fbo_) {
-+    GlGenFramebuffers(1, &fbo_);
-+  }
-+
-+  GlBindFramebuffer(GL_FRAMEBUFFER, fbo_);
-+  GlFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D,
-+                         texture_, 0);
-+  if (GlCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
-+    RTC_LOG(LS_ERROR) << "Failed to bind DMA buf framebuffer";
-+    EglDestroyImageKHR(egl_.display, image);
-+    return false;
-+  }
-
-   GLenum gl_format = GL_BGRA;
-   switch (format) {
-@@ -598,17 +649,18 @@ std::unique_ptr<uint8_t[]> EglDmaBuf::ImageFromDmaBuf(
-       gl_format = GL_BGRA;
-       break;
-   }
--  GlGetTexImage(GL_TEXTURE_2D, 0, gl_format, GL_UNSIGNED_BYTE, src.get());
-
--  if (GlGetError()) {
-+  GlReadPixels(offset.x(), offset.y(), buffer_size.width(),
-+               buffer_size.height(), gl_format, GL_UNSIGNED_BYTE, data);
-+
-+  const GLenum error = GlGetError();
-+  if (error) {
-     RTC_LOG(LS_ERROR) << "Failed to get image from DMA buffer.";
--    return src;
-   }
-
--  GlDeleteTextures(1, &texture);
-   EglDestroyImageKHR(egl_.display, image);
-
--  return src;
-+  return !error;
- }
-
- RTC_NO_SANITIZE("cfi-icall")
-diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.h b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.h
-index f1d96b2f80..22a8f5ab52 100644
---- a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.h
-+++ b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/egl_dmabuf.h
-@@ -41,11 +41,15 @@ class EglDmaBuf {
-   EglDmaBuf();
-   ~EglDmaBuf();
-
--  std::unique_ptr<uint8_t[]> ImageFromDmaBuf(
--      const DesktopSize& size,
--      uint32_t format,
--      const std::vector<PlaneData>& plane_datas,
--      uint64_t modifiers);
-+  // Returns whether the image was successfully imported from
-+  // given DmaBuf and its parameters
-+  bool ImageFromDmaBuf(const DesktopSize& size,
-+                       uint32_t format,
-+                       const std::vector<PlaneData>& plane_datas,
-+                       uint64_t modifiers,
-+                       const DesktopVector& offset,
-+                       const DesktopSize& buffer_size,
-+                       uint8_t* data);
-   std::vector<uint64_t> QueryDmaBufModifiers(uint32_t format);
-
-   bool IsEglInitialized() const { return egl_initialized_; }
-@@ -58,6 +62,8 @@ class EglDmaBuf {
-   int32_t drm_fd_ = -1;               // for GBM buffer mmap
-   gbm_device* gbm_device_ = nullptr;  // for passed GBM buffer retrieval
-
-+  GLuint fbo_ = 0;
-+  GLuint texture_ = 0;
-   EGLStruct egl_;
-
-   absl::optional<std::string> GetRenderNode();
-diff --git a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
-index 0ca75d00fc..a8879764c7 100644
---- a/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
-+++ b/third_party/libwebrtc/modules/desktop_capture/linux/wayland/shared_screencast_stream.cc
-@@ -149,6 +149,12 @@ class SharedScreenCastStreamPrivate {
-   struct spa_video_info_raw spa_video_format_;
-
-   void ProcessBuffer(pw_buffer* buffer);
-+  bool ProcessMemFDBuffer(pw_buffer* buffer,
-+                          DesktopFrame& frame,
-+                          const DesktopVector& offset);
-+  bool ProcessDMABuffer(pw_buffer* buffer,
-+                        DesktopFrame& frame,
-+                        const DesktopVector& offset);
-   void ConvertRGBxToBGRx(uint8_t* frame, uint32_t size);
-
-   // PipeWire callbacks
-@@ -268,9 +274,8 @@ void SharedScreenCastStreamPrivate::OnStreamParamChanged(
-   std::vector<const spa_pod*> params;
-   const int buffer_types =
-       has_modifier || (that->pw_server_version_ >= kDmaBufMinVersion)
--          ? (1 << SPA_DATA_DmaBuf) | (1 << SPA_DATA_MemFd) |
--                (1 << SPA_DATA_MemPtr)
--          : (1 << SPA_DATA_MemFd) | (1 << SPA_DATA_MemPtr);
-+          ? (1 << SPA_DATA_DmaBuf) | (1 << SPA_DATA_MemFd)
-+          : (1 << SPA_DATA_MemFd);
-
-   params.push_back(reinterpret_cast<spa_pod*>(spa_pod_builder_add_object(
-       &builder, SPA_TYPE_OBJECT_ParamBuffers, SPA_PARAM_Buffers,
-@@ -605,9 +610,6 @@ DesktopVector SharedScreenCastStreamPrivate::CaptureCursorPosition() {
- RTC_NO_SANITIZE("cfi-icall")
- void SharedScreenCastStreamPrivate::ProcessBuffer(pw_buffer* buffer) {
-   spa_buffer* spa_buffer = buffer->buffer;
--  ScopedBuf map;
--  std::unique_ptr<uint8_t[]> src_unique_ptr;
--  uint8_t* src = nullptr;
-
-   // Try to update the mouse cursor first, because it can be the only
-   // information carried by the buffer
-@@ -641,76 +643,6 @@ void SharedScreenCastStreamPrivate::ProcessBuffer(pw_buffer* buffer) {
-     return;
-   }
-
--  if (spa_buffer->datas[0].type == SPA_DATA_MemFd) {
--    map.initialize(
--        static_cast<uint8_t*>(
--            mmap(nullptr,
--                 spa_buffer->datas[0].maxsize + spa_buffer->datas[0].mapoffset,
--                 PROT_READ, MAP_PRIVATE, spa_buffer->datas[0].fd, 0)),
--        spa_buffer->datas[0].maxsize + spa_buffer->datas[0].mapoffset,
--        spa_buffer->datas[0].fd);
--
--    if (!map) {
--      RTC_LOG(LS_ERROR) << "Failed to mmap the memory: "
--                        << std::strerror(errno);
--      return;
--    }
--
--    src = SPA_MEMBER(map.get(), spa_buffer->datas[0].mapoffset, uint8_t);
--  } else if (spa_buffer->datas[0].type == SPA_DATA_DmaBuf) {
--    const uint n_planes = spa_buffer->n_datas;
--
--    if (!n_planes) {
--      return;
--    }
--
--    std::vector<EglDmaBuf::PlaneData> plane_datas;
--    for (uint32_t i = 0; i < n_planes; ++i) {
--      EglDmaBuf::PlaneData data = {
--          static_cast<int32_t>(spa_buffer->datas[i].fd),
--          static_cast<uint32_t>(spa_buffer->datas[i].chunk->stride),
--          static_cast<uint32_t>(spa_buffer->datas[i].chunk->offset)};
--      plane_datas.push_back(data);
--    }
--
--    // When importing DMA-BUFs, we use the stride (number of bytes from one row
--    // of pixels in the buffer) provided by PipeWire. The stride from PipeWire
--    // is given by the graphics driver and some drivers might add some
--    // additional padding for memory layout optimizations so not everytime the
--    // stride is equal to BYTES_PER_PIXEL x WIDTH. This is fine, because during
--    // the import we will use OpenGL and same graphics driver so it will be able
--    // to work with the stride it provided, but later on when we work with
--    // images we get from DMA-BUFs we will need to update the stride to be equal
--    // to BYTES_PER_PIXEL x WIDTH as that's the size of the DesktopFrame we
--    // allocate for each captured frame.
--    src_unique_ptr = egl_dmabuf_->ImageFromDmaBuf(
--        stream_size_, spa_video_format_.format, plane_datas, modifier_);
--    if (src_unique_ptr) {
--      src = src_unique_ptr.get();
--    } else {
--      RTC_LOG(LS_ERROR) << "Dropping DMA-BUF modifier: " << modifier_
--                        << " and trying to renegotiate stream parameters";
--
--      if (pw_server_version_ >= kDropSingleModifierMinVersion) {
--        modifiers_.erase(
--            std::remove(modifiers_.begin(), modifiers_.end(), modifier_),
--            modifiers_.end());
--      } else {
--        modifiers_.clear();
--      }
--
--      pw_loop_signal_event(pw_thread_loop_get_loop(pw_main_loop_),
--                           renegotiate_);
--      return;
--    }
--  } else if (spa_buffer->datas[0].type == SPA_DATA_MemPtr) {
--    src = static_cast<uint8_t*>(spa_buffer->datas[0].data);
--  }
--
--  if (!src) {
--    return;
--  }
--
-   // Use SPA_META_VideoCrop metadata to get the frame size. KDE and GNOME do
-   // handle screen/window sharing differently. KDE/KWin doesn't use
-   // SPA_META_VideoCrop metadata and when sharing a window, it always sets
-@@ -763,8 +695,8 @@ void SharedScreenCastStreamPrivate::ProcessBuffer(pw_buffer* buffer) {
-   }
-
-   // Get the position of the video crop within the stream. Just double-check
--  // that the position doesn't exceed the size of the stream itself. NOTE:
--  // Currently it looks there is no implementation using this.
-+  // that the position doesn't exceed the size of the stream itself.
-+  // NOTE: Currently it looks there is no implementation using this.
-   uint32_t y_offset =
-       videocrop_metadata_use &&
-               (videocrop_metadata->region.position.y + frame_size_.height() <=
-@@ -777,22 +709,7 @@ void SharedScreenCastStreamPrivate::ProcessBuffer(pw_buffer* buffer) {
-                stream_size_.width())
-           ? videocrop_metadata->region.position.x
-           : 0;
--
--  const uint32_t stream_stride = kBytesPerPixel * stream_size_.width();
--  uint32_t buffer_stride = spa_buffer->datas[0].chunk->stride;
--  uint32_t src_stride = buffer_stride;
--
--  if (spa_buffer->datas[0].type == SPA_DATA_DmaBuf &&
--      buffer_stride > stream_stride) {
--    // When DMA-BUFs are used, sometimes spa_buffer->stride we get might
--    // contain additional padding, but after we import the buffer, the stride
--    // we used is no longer relevant and we should just calculate it based on
--    // the stream width. For more context see https://crbug.com/1333304.
--    src_stride = stream_stride;
--  }
--
--  uint8_t* updated_src =
--      src + (src_stride * y_offset) + (kBytesPerPixel * x_offset);
-+  DesktopVector offset = DesktopVector(x_offset, y_offset);
-
-   webrtc::MutexLock lock(&queue_lock_);
-
-@@ -813,9 +730,17 @@ void SharedScreenCastStreamPrivate::ProcessBuffer(pw_buffer* buffer) {
-     queue_.ReplaceCurrentFrame(SharedDesktopFrame::Wrap(std::move(frame)));
-   }
-
--  queue_.current_frame()->CopyPixelsFrom(
--      updated_src, (src_stride - (kBytesPerPixel * x_offset)),
--      DesktopRect::MakeWH(frame_size_.width(), frame_size_.height()));
-+  bool bufferProcessed = false;
-+  if (spa_buffer->datas[0].type == SPA_DATA_MemFd) {
-+    bufferProcessed =
-+        ProcessMemFDBuffer(buffer, *queue_.current_frame(), offset);
-+  } else if (spa_buffer->datas[0].type == SPA_DATA_DmaBuf) {
-+    bufferProcessed = ProcessDMABuffer(buffer, *queue_.current_frame(), offset);
-+  }
-+
-+  if (!bufferProcessed) {
-+    return;
-+  }
-
-   if (spa_video_format_.format == SPA_VIDEO_FORMAT_RGBx ||
-       spa_video_format_.format == SPA_VIDEO_FORMAT_RGBA) {
-@@ -832,6 +757,87 @@ void SharedScreenCastStreamPrivate::ProcessBuffer(pw_buffer* buffer) {
-       DesktopRect::MakeSize(queue_.current_frame()->size()));
- }
-
-+RTC_NO_SANITIZE("cfi-icall")
-+bool SharedScreenCastStreamPrivate::ProcessMemFDBuffer(
-+    pw_buffer* buffer,
-+    DesktopFrame& frame,
-+    const DesktopVector& offset) {
-+  spa_buffer* spa_buffer = buffer->buffer;
-+  ScopedBuf map;
-+  uint8_t* src = nullptr;
-+
-+  map.initialize(
-+      static_cast<uint8_t*>(
-+          mmap(nullptr,
-+               spa_buffer->datas[0].maxsize + spa_buffer->datas[0].mapoffset,
-+               PROT_READ, MAP_PRIVATE, spa_buffer->datas[0].fd, 0)),
-+      spa_buffer->datas[0].maxsize + spa_buffer->datas[0].mapoffset,
-+      spa_buffer->datas[0].fd);
-+
-+  if (!map) {
-+    RTC_LOG(LS_ERROR) << "Failed to mmap the memory: " << std::strerror(errno);
-+    return false;
-+  }
-+
-+  src = SPA_MEMBER(map.get(), spa_buffer->datas[0].mapoffset, uint8_t);
-+
-+  uint32_t buffer_stride = spa_buffer->datas[0].chunk->stride;
-+  uint32_t src_stride = buffer_stride;
-+
-+  uint8_t* updated_src =
-+      src + (src_stride * offset.y()) + (kBytesPerPixel * offset.x());
-+
-+  frame.CopyPixelsFrom(
-+      updated_src, (src_stride - (kBytesPerPixel * offset.x())),
-+      DesktopRect::MakeWH(frame.size().width(), frame.size().height()));
-+
-+  return true;
-+}
-+
-+RTC_NO_SANITIZE("cfi-icall")
-+bool SharedScreenCastStreamPrivate::ProcessDMABuffer(
-+    pw_buffer* buffer,
-+    DesktopFrame& frame,
-+    const DesktopVector& offset) {
-+  spa_buffer* spa_buffer = buffer->buffer;
-+
-+  const uint n_planes = spa_buffer->n_datas;
-+
-+  if (!n_planes) {
-+    return false;
-+  }
-+
-+  std::vector<EglDmaBuf::PlaneData> plane_datas;
-+  for (uint32_t i = 0; i < n_planes; ++i) {
-+    EglDmaBuf::PlaneData data = {
-+        static_cast<int32_t>(spa_buffer->datas[i].fd),
-+        static_cast<uint32_t>(spa_buffer->datas[i].chunk->stride),
-+        static_cast<uint32_t>(spa_buffer->datas[i].chunk->offset)};
-+    plane_datas.push_back(data);
-+  }
-+
-+  const bool imported = egl_dmabuf_->ImageFromDmaBuf(
-+      stream_size_, spa_video_format_.format, plane_datas, modifier_, offset,
-+      frame.size(), frame.data());
-+  if (!imported) {
-+    RTC_LOG(LS_ERROR) << "Dropping DMA-BUF modifier: " << modifier_
-+                      << " and trying to renegotiate stream parameters";
-+
-+    if (pw_server_version_ >= kDropSingleModifierMinVersion) {
-+      modifiers_.erase(
-+          std::remove(modifiers_.begin(), modifiers_.end(), modifier_),
-+          modifiers_.end());
-+    } else {
-+      modifiers_.clear();
-+    }
-+
-+    pw_loop_signal_event(pw_thread_loop_get_loop(pw_main_loop_), renegotiate_);
-+    return false;
-+  }
-+
-+  return true;
-+}
-+
- void SharedScreenCastStreamPrivate::ConvertRGBxToBGRx(uint8_t* frame,
-                                                       uint32_t size) {
-   for (uint32_t i = 0; i < size; i += 4) {
diff --git a/mozilla-107.0.1-kde.patch b/mozilla-107.0.1-kde.patch
index 859ee20..c318a14 100644
--- a/mozilla-107.0.1-kde.patch
+++ b/mozilla-107.0.1-kde.patch
@@ -1,24 +1,21 @@
-# HG changeset patch
-# User msirringhaus@suse.de
-# Date 1559294891 -7200
-#      Fri May 31 11:28:11 2019 +0200
-# Node ID c2aa7198fb925e7fde96abf65b6f68b9b755f112
-# Parent  36f9c3a81777563ef87663a210b1cd38fdd734d9
-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
-@@ -89,16 +89,17 @@
- #include "plstr.h"
- #include "prdtoa.h"
- #include "prlink.h"
- #include "xpcpublic.h"
- #include "js/RootingAPI.h"
+diff -up firefox-113.0/modules/libpref/moz.build.2~ firefox-113.0/modules/libpref/moz.build
+--- firefox-113.0/modules/libpref/moz.build.2~	2023-05-05 00:09:17.000000000 +0200
++++ firefox-113.0/modules/libpref/moz.build	2023-05-09 15:54:23.806998016 +0200
+@@ -127,6 +127,10 @@ UNIFIED_SOURCES += [
+     "SharedPrefMap.cpp",
+ ]
+ 
++LOCAL_INCLUDES += [
++    '/toolkit/xre'
++]
++
+ gen_all_tuple = tuple(gen_h + gen_cpp + gen_rs)
+ 
+ GeneratedFile(
+diff -up firefox-113.0/modules/libpref/Preferences.cpp.2~ firefox-113.0/modules/libpref/Preferences.cpp
+--- firefox-113.0/modules/libpref/Preferences.cpp.2~	2023-05-05 00:09:17.000000000 +0200
++++ firefox-113.0/modules/libpref/Preferences.cpp	2023-05-09 15:54:23.806998016 +0200
+@@ -96,6 +96,7 @@
  #ifdef MOZ_BACKGROUNDTASKS
  #  include "mozilla/BackgroundTasks.h"
  #endif
@@ -26,17 +23,7 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
  
  #ifdef DEBUG
  #  include <map>
- #endif
- 
- #ifdef MOZ_MEMORY
- #  include "mozmemory.h"
- #endif
-@@ -4849,16 +4850,27 @@ nsresult Preferences::InitInitialObjects
-     "unix.js"
- #  if defined(_AIX)
-     ,
-     "aix.js"
- #  endif
+@@ -4912,6 +4913,17 @@ nsresult Preferences::InitInitialObjects
  #endif
    };
  
@@ -54,17 +41,7 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
    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.
-@@ -4923,17 +4935,17 @@ nsresult Preferences::InitInitialObjects
-       }
- 
-       nsCOMPtr<nsIFile> path = do_QueryInterface(elem);
-       if (!path) {
-         continue;
+@@ -4986,7 +4998,7 @@ nsresult Preferences::InitInitialObjects
        }
  
        // Do we care if a file provided by this process fails to load?
@@ -73,44 +50,10 @@ diff --git a/modules/libpref/Preferences.cpp b/modules/libpref/Preferences.cpp
      }
    }
  
- #if defined(MOZ_WIDGET_GTK)
-   // To ensure the system-wide preferences are not overwritten by
-   // firefox/browser/defauts/preferences/*.js we need to load
-   // the /etc/firefox/defaults/pref/*.js settings as last.
-   // Under Flatpak, the NS_OS_SYSTEM_CONFIG_DIR points to /app/etc/firefox
-diff --git a/modules/libpref/moz.build b/modules/libpref/moz.build
---- a/modules/libpref/moz.build
-+++ b/modules/libpref/moz.build
-@@ -123,16 +123,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)
- 
- GeneratedFile(
-     *gen_all_tuple,
-     script="init/generate_static_pref_list.py",
-     entry_point="emit_code",
-     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
-@@ -229,16 +229,17 @@ class Flags(OrderedDict):
-         "os": StringFlag,
-         "osversion": VersionFlag,
-         "abi": StringFlag,
-         "platform": Flag,
-         "xpcnativewrappers": Flag,
+diff -up firefox-113.0/python/mozbuild/mozpack/chrome/flags.py.2~ firefox-113.0/python/mozbuild/mozpack/chrome/flags.py
+--- firefox-113.0/python/mozbuild/mozpack/chrome/flags.py.2~	2023-05-05 00:09:17.000000000 +0200
++++ firefox-113.0/python/mozbuild/mozpack/chrome/flags.py	2023-05-09 15:54:23.807998023 +0200
+@@ -234,6 +234,7 @@ class Flags(OrderedDict):
          "tablet": Flag,
          "process": StringFlag,
          "backgroundtask": StringFlag,
@@ -118,20 +61,10 @@ diff --git a/python/mozbuild/mozpack/chrome/flags.py b/python/mozbuild/mozpack/c
      }
      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
-@@ -39,16 +39,17 @@ class ManifestEntry(object):
-         "os",
-         "osversion",
-         "abi",
-         "xpcnativewrappers",
-         "tablet",
+diff -up firefox-113.0/python/mozbuild/mozpack/chrome/manifest.py.2~ firefox-113.0/python/mozbuild/mozpack/chrome/manifest.py
+--- firefox-113.0/python/mozbuild/mozpack/chrome/manifest.py.2~	2023-05-05 00:09:17.000000000 +0200
++++ firefox-113.0/python/mozbuild/mozpack/chrome/manifest.py	2023-05-09 15:54:23.807998023 +0200
+@@ -43,6 +43,7 @@ class ManifestEntry(object):
          "process",
          "contentaccessible",
          "backgroundtask",
@@ -139,20 +72,10 @@ diff --git a/python/mozbuild/mozpack/chrome/manifest.py b/python/mozbuild/mozpac
      ]
  
      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
-@@ -46,10 +46,14 @@ XPCOM_MANIFESTS += [
- 
- if CONFIG["MOZ_PLACES"]:
-     EXTRA_JS_MODULES += [
-         "DownloadHistory.sys.mjs",
-     ]
+diff -up firefox-113.0/toolkit/components/downloads/moz.build.2~ firefox-113.0/toolkit/components/downloads/moz.build
+--- firefox-113.0/toolkit/components/downloads/moz.build.2~	2023-05-05 00:09:24.000000000 +0200
++++ firefox-113.0/toolkit/components/downloads/moz.build	2023-05-09 15:54:23.807998023 +0200
+@@ -51,5 +51,9 @@ if CONFIG["MOZ_PLACES"]:
  
  FINAL_LIBRARY = "xul"
  
@@ -162,15 +85,10 @@ diff --git a/toolkit/components/downloads/moz.build b/toolkit/components/downloa
 +
  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
-@@ -1239,36 +1239,66 @@ nsUnknownContentTypeDialog.prototype = {
-         params.handlerApp &&
-         params.handlerApp.executable &&
-         params.handlerApp.executable.isFile()
-       ) {
-         // Remember the file they chose to run.
+diff -up firefox-113.0/toolkit/mozapps/downloads/HelperAppDlg.jsm.2~ firefox-113.0/toolkit/mozapps/downloads/HelperAppDlg.jsm
+--- firefox-113.0/toolkit/mozapps/downloads/HelperAppDlg.jsm.2~	2023-05-05 00:09:25.000000000 +0200
++++ firefox-113.0/toolkit/mozapps/downloads/HelperAppDlg.jsm	2023-05-09 15:54:23.807998023 +0200
+@@ -1255,26 +1255,56 @@ nsUnknownContentTypeDialog.prototype = {
          this.chosenApp = params.handlerApp;
        }
      } else if ("@mozilla.org/applicationchooser;1" in Cc) {
@@ -247,20 +165,10 @@ diff --git a/toolkit/mozapps/downloads/HelperAppDlg.jsm b/toolkit/mozapps/downlo
      } 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
-@@ -10,16 +10,18 @@
- #include "prenv.h"
- #include "nsInterfaceHashtable.h"
- #include "nsHashtablesFwd.h"
- #include "nsHashKeys.h"
- #include "nsNetUtil.h"
+diff -up firefox-113.0/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp.2~ firefox-113.0/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp
+--- firefox-113.0/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp.2~	2023-05-05 00:09:25.000000000 +0200
++++ firefox-113.0/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp	2023-05-09 15:54:23.807998023 +0200
+@@ -16,6 +16,8 @@
  #include "nsISupportsPrimitives.h"
  #include "nsIGSettingsService.h"
  #include "nsReadableUtils.h"
@@ -269,17 +177,7 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
  
  using namespace mozilla;
  
- class nsUnixSystemProxySettings final : public nsISystemProxySettings {
-  public:
-   NS_DECL_ISUPPORTS
-   NS_DECL_NSISYSTEMPROXYSETTINGS
- 
-@@ -33,16 +35,18 @@ class nsUnixSystemProxySettings final : 
-   nsCOMPtr<nsIGSettingsCollection> mProxySettings;
-   nsInterfaceHashtable<nsCStringHashKey, nsIGSettingsCollection>
-       mSchemeProxySettings;
-   nsresult GetProxyFromGSettings(const nsACString& aScheme,
-                                  const nsACString& aHost, int32_t aPort,
+@@ -39,6 +41,8 @@ class nsUnixSystemProxySettings final :
                                   nsACString& aResult);
    nsresult SetProxyResultFromGSettings(const char* aKeyBase, const char* aType,
                                         nsACString& aResult);
@@ -288,17 +186,7 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
  };
  
  NS_IMPL_ISUPPORTS(nsUnixSystemProxySettings, nsISystemProxySettings)
- 
- NS_IMETHODIMP
- nsUnixSystemProxySettings::GetMainThreadOnly(bool* aMainThreadOnly) {
-   // dbus prevents us from being threadsafe, but this routine should not block
-   // anyhow
-@@ -378,21 +382,50 @@ nsresult nsUnixSystemProxySettings::GetP
-   return NS_OK;
- }
- 
- nsresult nsUnixSystemProxySettings::GetProxyForURI(const nsACString& aSpec,
-                                                    const nsACString& aScheme,
+@@ -393,6 +397,9 @@ nsresult nsUnixSystemProxySettings::GetP
                                                     const nsACString& aHost,
                                                     const int32_t aPort,
                                                     nsACString& aResult) {
@@ -308,8 +196,7 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
    if (mProxySettings) {
      nsresult rv = GetProxyFromGSettings(aScheme, aHost, aPort, aResult);
      if (NS_SUCCEEDED(rv)) return rv;
-   }
- 
+@@ -401,6 +408,32 @@ nsresult nsUnixSystemProxySettings::GetP
    return GetProxyFromEnvironment(aScheme, aHost, aPort, aResult);
  }
  
@@ -342,17 +229,10 @@ diff --git a/toolkit/system/unixproxy/nsUnixSystemProxySettings.cpp b/toolkit/sy
  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
-@@ -92,17 +92,19 @@ elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "co
-         "../components/printingui",
-     ]
- elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "uikit":
-     UNIFIED_SOURCES += [
-         "nsNativeAppSupportDefault.cpp",
+diff -up firefox-113.0/toolkit/xre/moz.build.2~ firefox-113.0/toolkit/xre/moz.build
+--- firefox-113.0/toolkit/xre/moz.build.2~	2023-05-05 00:09:25.000000000 +0200
++++ firefox-113.0/toolkit/xre/moz.build	2023-05-09 15:54:23.807998023 +0200
+@@ -96,7 +96,9 @@ elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "ui
          "UIKitDirProvider.mm",
      ]
  elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
@@ -362,15 +242,9 @@ diff --git a/toolkit/xre/moz.build b/toolkit/xre/moz.build
          "nsNativeAppSupportUnix.cpp",
      ]
      CXXFLAGS += CONFIG["MOZ_X11_SM_CFLAGS"]
- else:
-     UNIFIED_SOURCES += [
-         "nsNativeAppSupportDefault.cpp",
-     ]
- 
-diff --git a/toolkit/xre/nsKDEUtils.cpp b/toolkit/xre/nsKDEUtils.cpp
-new file mode 100644
---- /dev/null
-+++ b/toolkit/xre/nsKDEUtils.cpp
+diff -up firefox-113.0/toolkit/xre/nsKDEUtils.cpp.2~ firefox-113.0/toolkit/xre/nsKDEUtils.cpp
+--- firefox-113.0/toolkit/xre/nsKDEUtils.cpp.2~	2023-05-09 15:54:23.807998023 +0200
++++ firefox-113.0/toolkit/xre/nsKDEUtils.cpp	2023-05-09 15:54:23.807998023 +0200
 @@ -0,0 +1,321 @@
 +/* -*- 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
@@ -693,10 +567,9 @@ new file mode 100644
 +    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
+diff -up firefox-113.0/toolkit/xre/nsKDEUtils.h.2~ firefox-113.0/toolkit/xre/nsKDEUtils.h
+--- firefox-113.0/toolkit/xre/nsKDEUtils.h.2~	2023-05-09 15:54:23.807998023 +0200
++++ firefox-113.0/toolkit/xre/nsKDEUtils.h	2023-05-09 15:54:23.807998023 +0200
 @@ -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
@@ -746,34 +619,19 @@ new file mode 100644
 +    };
 +
 +#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"
+diff -up firefox-113.0/uriloader/exthandler/HandlerServiceParent.cpp.2~ firefox-113.0/uriloader/exthandler/HandlerServiceParent.cpp
+--- firefox-113.0/uriloader/exthandler/HandlerServiceParent.cpp.2~	2023-05-05 00:09:25.000000000 +0200
++++ firefox-113.0/uriloader/exthandler/HandlerServiceParent.cpp	2023-05-09 15:55:37.238544949 +0200
+@@ -18,7 +18,7 @@
+ #include "nsComponentManagerUtils.h"
+ #include "nsServiceManagerUtils.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 {
-@@ -300,17 +300,17 @@ mozilla::ipc::IPCResult HandlerServicePa
-     const nsACString& aProtocolScheme, bool* aHandlerExists) {
-   if (aProtocolScheme.Length() > MAX_SCHEME_LENGTH) {
-     *aHandlerExists = false;
-     return IPC_OK();
-   }
+@@ -311,7 +311,7 @@ mozilla::ipc::IPCResult HandlerServicePa
  #ifdef MOZ_WIDGET_GTK
    // Check the GNOME registry for a protocol handler
    *aHandlerExists =
@@ -782,20 +640,10 @@ diff --git a/uriloader/exthandler/HandlerServiceParent.cpp b/uriloader/exthandle
  #else
    *aHandlerExists = false;
  #endif
-   return IPC_OK();
- }
- 
- /*
-  * Check if a handler exists for the provided protocol. Check the datastore
-diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
---- a/uriloader/exthandler/moz.build
-+++ b/uriloader/exthandler/moz.build
-@@ -78,17 +78,19 @@ elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "ui
- else:
-     # These files can't be built in unified mode because they redefine LOG.
-     SOURCES += [
-         osdir + "/nsOSHelperAppService.cpp",
-     ]
+diff -up firefox-113.0/uriloader/exthandler/moz.build.2~ firefox-113.0/uriloader/exthandler/moz.build
+--- firefox-113.0/uriloader/exthandler/moz.build.2~	2023-05-05 00:09:25.000000000 +0200
++++ firefox-113.0/uriloader/exthandler/moz.build	2023-05-09 15:54:23.807998023 +0200
+@@ -86,7 +86,9 @@ else:
  
  if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
      UNIFIED_SOURCES += [
@@ -805,17 +653,7 @@ diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
          "unix/nsMIMEInfoUnix.cpp",
      ]
  elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "android":
-     UNIFIED_SOURCES += [
-         "android/nsMIMEInfoAndroid.cpp",
-     ]
- elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "windows":
-     UNIFIED_SOURCES += [
-@@ -126,16 +128,17 @@ include("/ipc/chromium/chromium-config.m
- FINAL_LIBRARY = "xul"
- 
- LOCAL_INCLUDES += [
-     "/docshell/base",
-     "/dom/base",
+@@ -134,6 +136,7 @@ LOCAL_INCLUDES += [
      "/dom/ipc",
      "/netwerk/base",
      "/netwerk/protocol/http",
@@ -823,15 +661,9 @@ diff --git a/uriloader/exthandler/moz.build b/uriloader/exthandler/moz.build
  ]
  
  if CONFIG["MOZ_ENABLE_DBUS"]:
-     CXXFLAGS += CONFIG["MOZ_DBUS_CFLAGS"]
- 
- if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
-     CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
-     CXXFLAGS += CONFIG["MOZ_DBUS_GLIB_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
+diff -up firefox-113.0/uriloader/exthandler/unix/nsCommonRegistry.cpp.2~ firefox-113.0/uriloader/exthandler/unix/nsCommonRegistry.cpp
+--- firefox-113.0/uriloader/exthandler/unix/nsCommonRegistry.cpp.2~	2023-05-09 15:54:23.807998023 +0200
++++ firefox-113.0/uriloader/exthandler/unix/nsCommonRegistry.cpp	2023-05-09 15:54:23.807998023 +0200
 @@ -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
@@ -886,10 +718,9 @@ new file mode 100644
 +        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
+diff -up firefox-113.0/uriloader/exthandler/unix/nsCommonRegistry.h.2~ firefox-113.0/uriloader/exthandler/unix/nsCommonRegistry.h
+--- firefox-113.0/uriloader/exthandler/unix/nsCommonRegistry.h.2~	2023-05-09 15:54:23.807998023 +0200
++++ firefox-113.0/uriloader/exthandler/unix/nsCommonRegistry.h	2023-05-09 15:54:23.807998023 +0200
 @@ -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
@@ -919,10 +750,9 @@ new file mode 100644
 +};
 +
 +#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
+diff -up firefox-113.0/uriloader/exthandler/unix/nsKDERegistry.cpp.2~ firefox-113.0/uriloader/exthandler/unix/nsKDERegistry.cpp
+--- firefox-113.0/uriloader/exthandler/unix/nsKDERegistry.cpp.2~	2023-05-09 15:54:23.807998023 +0200
++++ firefox-113.0/uriloader/exthandler/unix/nsKDERegistry.cpp	2023-05-09 15:54:23.807998023 +0200
 @@ -0,0 +1,89 @@
 +/* -*- 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
@@ -1013,10 +843,9 @@ new file mode 100644
 +        }
 +    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
+diff -up firefox-113.0/uriloader/exthandler/unix/nsKDERegistry.h.2~ firefox-113.0/uriloader/exthandler/unix/nsKDERegistry.h
+--- firefox-113.0/uriloader/exthandler/unix/nsKDERegistry.h.2~	2023-05-09 15:54:23.807998023 +0200
++++ firefox-113.0/uriloader/exthandler/unix/nsKDERegistry.h	2023-05-09 15:54:23.807998023 +0200
 @@ -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
@@ -1052,14 +881,10 @@ new file mode 100644
 +};
 +
 +#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,48 +1,51 @@
- /* -*- 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
+diff -up firefox-113.0/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp.2~ firefox-113.0/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp
+--- firefox-113.0/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp.2~	2023-05-05 00:09:25.000000000 +0200
++++ firefox-113.0/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp	2023-05-09 15:54:23.807998023 +0200
+@@ -5,16 +5,19 @@
   * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
  
  #include "nsMIMEInfoUnix.h"
@@ -1079,16 +904,9 @@ diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler
 -  return nsGNOMERegistry::LoadURL(aURI);
 +  return nsCommonRegistry::LoadURL(aURI);
  }
-
- NS_IMETHODIMP
- nsMIMEInfoUnix::GetHasDefaultHandler(bool* _retval) {
-   // if a default app 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 (GetDefaultApplication()) {
-     return nsMIMEInfoImpl::GetHasDefaultHandler(_retval);
-   }
  
+ NS_IMETHODIMP
+@@ -29,15 +32,15 @@ nsMIMEInfoUnix::GetHasDefaultHandler(boo
    *_retval = false;
  
    if (mClass == eProtocolInfo) {
@@ -1107,17 +925,7 @@ diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler
        }
      }
      if (mimeInfo) *_retval = true;
-   }
- 
-   if (*_retval) return NS_OK;
- 
-   return NS_OK;
-@@ -50,16 +53,33 @@ nsresult nsMIMEInfoUnix::LaunchDefaultWi
-   // give the GNOME answer.
-   if (GetDefaultApplication()) {
-     return nsMIMEInfoImpl::LaunchDefaultWithFile(aFile);
-   }
- 
+@@ -59,6 +62,23 @@ nsresult nsMIMEInfoUnix::LaunchDefaultWi
    nsAutoCString nativePath;
    aFile->GetNativePath(nativePath);
  
@@ -1141,20 +949,10 @@ diff --git a/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp b/uriloader/exthandler
    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>
- 
+diff -up firefox-113.0/uriloader/exthandler/unix/nsOSHelperAppService.cpp.2~ firefox-113.0/uriloader/exthandler/unix/nsOSHelperAppService.cpp
+--- firefox-113.0/uriloader/exthandler/unix/nsOSHelperAppService.cpp.2~	2023-05-05 00:09:25.000000000 +0200
++++ firefox-113.0/uriloader/exthandler/unix/nsOSHelperAppService.cpp	2023-05-09 15:54:23.807998023 +0200
+@@ -10,7 +10,7 @@
  #include "nsOSHelperAppService.h"
  #include "nsMIMEInfoUnix.h"
  #ifdef MOZ_WIDGET_GTK
@@ -1163,17 +961,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
  #  ifdef MOZ_BUILD_APP_IS_BROWSER
  #    include "nsIToolkitShellService.h"
  #    include "nsIGNOMEShellService.h"
- #  endif
- #endif
- #include "nsISupports.h"
- #include "nsString.h"
- #include "nsReadableUtils.h"
-@@ -1102,17 +1102,17 @@ nsresult nsOSHelperAppService::GetHandle
- 
- nsresult nsOSHelperAppService::OSProtocolHandlerExists(
-     const char* aProtocolScheme, bool* aHandlerExists) {
-   nsresult rv = NS_OK;
- 
+@@ -1107,7 +1107,7 @@ nsresult nsOSHelperAppService::OSProtoco
    if (!XRE_IsContentProcess()) {
  #ifdef MOZ_WIDGET_GTK
      // Check the GNOME registry for a protocol handler
@@ -1182,17 +970,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
  #else
      *aHandlerExists = false;
  #endif
-   } else {
-     *aHandlerExists = false;
-     nsCOMPtr<nsIHandlerService> handlerSvc =
-         do_GetService(NS_HANDLERSERVICE_CONTRACTID, &rv);
-     if (NS_SUCCEEDED(rv) && handlerSvc) {
-@@ -1122,17 +1122,17 @@ nsresult nsOSHelperAppService::OSProtoco
-   }
- 
-   return rv;
- }
- 
+@@ -1127,7 +1127,7 @@ nsresult nsOSHelperAppService::OSProtoco
  NS_IMETHODIMP nsOSHelperAppService::GetApplicationDescription(
      const nsACString& aScheme, nsAString& _retval) {
  #ifdef MOZ_WIDGET_GTK
@@ -1201,17 +979,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
    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) {
-@@ -1227,17 +1227,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
-   nsresult rv =
-       LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
-                                minorType, mime_types_description, true);
- 
-   if (NS_FAILED(rv) || majorType.IsEmpty()) {
+@@ -1232,7 +1232,7 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
  #ifdef MOZ_WIDGET_GTK
      LOG("Looking in GNOME registry\n");
      RefPtr<nsMIMEInfoBase> gnomeInfo =
@@ -1220,17 +988,7 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
      if (gnomeInfo) {
        LOG("Got MIMEInfo from GNOME registry\n");
        return gnomeInfo.forget();
-     }
- #endif
- 
-     rv = LookUpTypeAndDescription(NS_ConvertUTF8toUTF16(aFileExt), majorType,
-                                   minorType, mime_types_description, false);
-@@ -1342,17 +1342,17 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
- 
-   // Now look up our extensions
-   nsAutoString extensions, mime_types_description;
-   LookUpExtensionsAndDescription(majorType, minorType, extensions,
-                                  mime_types_description);
+@@ -1347,7 +1347,7 @@ already_AddRefed<nsMIMEInfoBase> nsOSHel
  
  #ifdef MOZ_WIDGET_GTK
    if (handler.IsEmpty()) {
@@ -1239,20 +997,10 @@ diff --git a/uriloader/exthandler/unix/nsOSHelperAppService.cpp b/uriloader/exth
      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));
-       return gnomeInfo.forget();
-diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
---- a/widget/gtk/moz.build
-+++ b/widget/gtk/moz.build
-@@ -147,16 +147,17 @@ FINAL_LIBRARY = "xul"
- 
- LOCAL_INCLUDES += [
-     "/layout/base",
-     "/layout/forms",
-     "/layout/generic",
+diff -up firefox-113.0/widget/gtk/moz.build.2~ firefox-113.0/widget/gtk/moz.build
+--- firefox-113.0/widget/gtk/moz.build.2~	2023-05-05 00:09:25.000000000 +0200
++++ firefox-113.0/widget/gtk/moz.build	2023-05-09 15:54:23.807998023 +0200
+@@ -147,6 +147,7 @@ LOCAL_INCLUDES += [
      "/layout/xul",
      "/other-licenses/atk-1.0",
      "/third_party/cups/include",
@@ -1260,19 +1008,10 @@ diff --git a/widget/gtk/moz.build b/widget/gtk/moz.build
      "/widget",
      "/widget/headless",
  ]
- 
- if CONFIG["MOZ_X11"] or CONFIG["MOZ_WAYLAND"]:
-     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/. */
+diff -up firefox-113.0/widget/gtk/nsFilePicker.cpp.2~ firefox-113.0/widget/gtk/nsFilePicker.cpp
+--- firefox-113.0/widget/gtk/nsFilePicker.cpp.2~	2023-05-05 00:09:25.000000000 +0200
++++ firefox-113.0/widget/gtk/nsFilePicker.cpp	2023-05-09 15:54:23.807998023 +0200
+@@ -5,6 +5,7 @@
  
  #include <dlfcn.h>
  #include <gtk/gtk.h>
@@ -1280,17 +1019,7 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
  #include <sys/types.h>
  #include <sys/stat.h>
  #include <unistd.h>
- 
- #include "mozilla/Types.h"
- #include "nsGtkUtils.h"
- #include "nsIFileURL.h"
- #include "nsIGIOService.h"
-@@ -21,16 +22,18 @@
- #include "nsArrayEnumerator.h"
- #include "nsEnumeratorUtils.h"
- #include "nsNetUtil.h"
- #include "nsReadableUtils.h"
- #include "MozContainer.h"
+@@ -28,6 +29,8 @@
  #include "WidgetUtilsGtk.h"
  
  #include "nsFilePicker.h"
@@ -1299,17 +1028,7 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
  
  #undef LOG
  #ifdef MOZ_LOGGING
- #  include "mozilla/Logging.h"
- #  include "nsTArray.h"
- #  include "Units.h"
- extern mozilla::LazyLogModule gWidgetLog;
- #  define LOG(args) MOZ_LOG(gWidgetLog, mozilla::LogLevel::Debug, args)
-@@ -235,17 +238,19 @@ nsFilePicker::AppendFilters(int32_t aFil
-   mAllowURLs = !!(aFilterMask & filterAllowURLs);
-   return nsBaseFilePicker::AppendFilters(aFilterMask);
- }
- 
- NS_IMETHODIMP
+@@ -242,7 +245,9 @@ NS_IMETHODIMP
  nsFilePicker::AppendFilter(const nsAString& aTitle, const nsAString& aFilter) {
    if (aFilter.EqualsLiteral("..apps")) {
      // No platform specific thing we can do here, really....
@@ -1320,17 +1039,7 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
    }
  
    nsAutoCString filter, name;
-   CopyUTF16toUTF8(aFilter, filter);
-   CopyUTF16toUTF8(aTitle, name);
- 
-   mFilters.AppendElement(filter);
-   mFilterNames.AppendElement(name);
-@@ -345,16 +350,39 @@ nsresult nsFilePicker::Show(int16_t* aRe
-   return NS_OK;
- }
- 
- NS_IMETHODIMP
- nsFilePicker::Open(nsIFilePickerShownCallback* aCallback) {
+@@ -352,6 +357,29 @@ nsFilePicker::Open(nsIFilePickerShownCal
    // Can't show two dialogs concurrently with the same filepicker
    if (mRunning) return NS_ERROR_NOT_AVAILABLE;
  
@@ -1360,17 +1069,7 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
    NS_ConvertUTF16toUTF8 title(mTitle);
  
    GtkWindow* parent_widget =
-       GTK_WINDOW(mParentWidget->GetNativeData(NS_NATIVE_SHELLWIDGET));
- 
-   GtkFileChooserAction action = GetGtkFileChooserAction(mMode);
- 
-   const gchar* accept_button;
-@@ -574,16 +602,244 @@ void nsFilePicker::Done(void* file_choos
-     mCallback->Done(result);
-     mCallback = nullptr;
-   } else {
-     mResult = result;
-   }
+@@ -633,6 +661,234 @@ void nsFilePicker::Done(void* file_choos
    NS_RELEASE_THIS();
  }
  
@@ -1605,20 +1304,10 @@ diff --git a/widget/gtk/nsFilePicker.cpp b/widget/gtk/nsFilePicker.cpp
  // 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;
- 
+diff -up firefox-113.0/widget/gtk/nsFilePicker.h.2~ firefox-113.0/widget/gtk/nsFilePicker.h
+--- firefox-113.0/widget/gtk/nsFilePicker.h.2~	2023-05-05 00:09:25.000000000 +0200
++++ firefox-113.0/widget/gtk/nsFilePicker.h	2023-05-09 15:54:23.807998023 +0200
+@@ -74,6 +74,12 @@ class nsFilePicker : public nsBaseFilePi
   private:
    static nsIFile* mPrevDisplayDirectory;
  
@@ -1631,20 +1320,10 @@ diff --git a/widget/gtk/nsFilePicker.h b/widget/gtk/nsFilePicker.h
    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
-@@ -38,16 +38,17 @@
- #include "nsTextFormatter.h"
- #include "nsVersionComparator.h"
- #include "nsXPCOMCIDInternal.h"
- 
- #include "nsIConsoleService.h"
+diff -up firefox-113.0/xpcom/components/ManifestParser.cpp.2~ firefox-113.0/xpcom/components/ManifestParser.cpp
+--- firefox-113.0/xpcom/components/ManifestParser.cpp.2~	2023-05-05 00:09:25.000000000 +0200
++++ firefox-113.0/xpcom/components/ManifestParser.cpp	2023-05-09 15:54:23.808998031 +0200
+@@ -43,6 +43,7 @@
  #include "nsIScriptError.h"
  #include "nsIXULAppInfo.h"
  #include "nsIXULRuntime.h"
@@ -1652,17 +1331,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
  
  using namespace mozilla;
  
- struct ManifestDirective {
-   const char* directive;
-   int argc;
- 
-   bool ischrome;
-@@ -389,16 +390,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;
+@@ -394,6 +395,7 @@ void ParseManifest(NSLocationType aType,
    constexpr auto kOs = u"os"_ns;
    constexpr auto kOsVersion = u"osversion"_ns;
    constexpr auto kABI = u"abi"_ns;
@@ -1670,17 +1339,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
    constexpr auto kProcess = u"process"_ns;
  #if defined(MOZ_WIDGET_ANDROID)
    constexpr auto kTablet = u"tablet"_ns;
- #endif
-   // You might expect this to be guarded by MOZ_BACKGROUNDTASKS, but it's not
-   // possible to have conditional manifest contents, so we need to recognize and
-   // discard these tokens even when MOZ_BACKGROUNDTASKS is not set.
-   constexpr auto kBackgroundTask = u"backgroundtask"_ns;
-@@ -448,39 +450,44 @@ void ParseManifest(NSLocationType aType,
-         CopyUTF8toUTF16(s, abi);
-         abi.Insert(char16_t('_'), 0);
-         abi.Insert(osTarget, 0);
-       }
-     }
+@@ -453,6 +455,7 @@ void ParseManifest(NSLocationType aType,
    }
  
    nsAutoString osVersion;
@@ -1688,8 +1347,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
  #if defined(XP_WIN)
  #  pragma warning(push)
  #  pragma warning(disable : 4996)  // VC12+ deprecates GetVersionEx
-   OSVERSIONINFO info = {sizeof(OSVERSIONINFO)};
-   if (GetVersionEx(&info)) {
+@@ -461,14 +464,17 @@ void ParseManifest(NSLocationType aType,
      nsTextFormatter::ssprintf(osVersion, u"%ld.%ld", info.dwMajorVersion,
                                info.dwMinorVersion);
    }
@@ -1707,7 +1365,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
  #elif defined(MOZ_WIDGET_ANDROID)
    bool isTablet = false;
    if (jni::IsAvailable()) {
-     jni::String::LocalRef release = java::sdk::Build::VERSION::RELEASE();
+@@ -476,6 +482,7 @@ void ParseManifest(NSLocationType aType,
      osVersion.Assign(release->ToString());
      isTablet = java::GeckoAppShell::IsTablet();
    }
@@ -1715,17 +1373,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
  #endif
  
    if (XRE_IsContentProcess()) {
-     process = kContent;
-   } else {
-     process = kMain;
-   }
- 
-@@ -571,25 +578,27 @@ void ParseManifest(NSLocationType aType,
-     // When in background task mode, default to not registering
-     // category directivies unless backgroundtask=1 is specified.
-     TriState stBackgroundTask = (BackgroundTasks::IsBackgroundTaskMode() &&
-                                  strcmp("category", directive->directive) == 0)
-                                     ? eBad
+@@ -576,6 +583,7 @@ void ParseManifest(NSLocationType aType,
                                      : eUnspecified;
  #endif
      int flags = 0;
@@ -1733,9 +1381,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
  
      while ((token = nsCRT::strtok(whitespace, kWhitespace, &whitespace)) &&
             ok) {
-       ToLowerCase(token);
-       NS_ConvertASCIItoUTF16 wtoken(token);
- 
+@@ -585,6 +593,7 @@ void ParseManifest(NSLocationType aType,
        if (CheckStringFlag(kApplication, wtoken, appID, stApp) ||
            CheckOsFlag(kOs, wtoken, osTarget, stOs) ||
            CheckStringFlag(kABI, wtoken, abi, stABI) ||
@@ -1743,17 +1389,7 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
            CheckStringFlag(kProcess, wtoken, process, stProcess) ||
            CheckVersionFlag(kOsVersion, wtoken, osVersion, stOsVersion) ||
            CheckVersionFlag(kAppVersion, wtoken, appVersion, stAppVersion) ||
-           CheckVersionFlag(kGeckoVersion, wtoken, geckoVersion,
-                            stGeckoVersion)) {
-         continue;
-       }
- 
-@@ -638,17 +647,17 @@ void ParseManifest(NSLocationType aType,
-       }
- 
-       LogMessageWithContext(
-           aFile, line, "Unrecognized chrome manifest modifier '%s'.", token);
-       ok = false;
+@@ -643,7 +652,7 @@ void ParseManifest(NSLocationType aType,
      }
  
      if (!ok || stApp == eBad || stAppVersion == eBad ||
@@ -1762,20 +1398,10 @@ diff --git a/xpcom/components/ManifestParser.cpp b/xpcom/components/ManifestPars
  #ifdef MOZ_WIDGET_ANDROID
          stTablet == eBad ||
  #endif
- #ifdef MOZ_BACKGROUNDTASKS
-         stBackgroundTask == eBad ||
- #endif
-         stABI == eBad || stProcess == eBad) {
-       continue;
-diff --git a/xpcom/components/moz.build b/xpcom/components/moz.build
---- a/xpcom/components/moz.build
-+++ b/xpcom/components/moz.build
-@@ -66,16 +66,17 @@ LOCAL_INCLUDES += [
-     "!..",
-     "../base",
-     "../build",
-     "../ds",
-     "/chrome",
+diff -up firefox-113.0/xpcom/components/moz.build.2~ firefox-113.0/xpcom/components/moz.build
+--- firefox-113.0/xpcom/components/moz.build.2~	2023-05-05 00:09:25.000000000 +0200
++++ firefox-113.0/xpcom/components/moz.build	2023-05-09 15:54:23.808998031 +0200
+@@ -71,6 +71,7 @@ LOCAL_INCLUDES += [
      "/js/xpconnect/loader",
      "/layout/build",
      "/modules/libjar",
@@ -1783,20 +1409,10 @@ diff --git a/xpcom/components/moz.build b/xpcom/components/moz.build
  ]
  
  if CONFIG["MOZ_WIDGET_TOOLKIT"] == "gtk":
-     CXXFLAGS += CONFIG["MOZ_GTK3_CFLAGS"]
-     if CONFIG["MOZ_ENABLE_DBUS"]:
-         CXXFLAGS += CONFIG["MOZ_DBUS_GLIB_CFLAGS"]
- 
- include("/ipc/chromium/chromium-config.mozbuild")
-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 "nsString.h"
- #include "nsIDirectoryEnumerator.h"
- #include "nsSimpleEnumerator.h"
- #include "private/pprio.h"
- #include "prlink.h"
+diff -up firefox-113.0/xpcom/io/nsLocalFileUnix.cpp.2~ firefox-113.0/xpcom/io/nsLocalFileUnix.cpp
+--- firefox-113.0/xpcom/io/nsLocalFileUnix.cpp.2~	2023-05-05 00:09:25.000000000 +0200
++++ firefox-113.0/xpcom/io/nsLocalFileUnix.cpp	2023-05-09 15:54:23.808998031 +0200
+@@ -51,6 +51,7 @@
  
  #ifdef MOZ_WIDGET_GTK
  #  include "nsIGIOService.h"
@@ -1804,49 +1420,29 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
  #endif
  
  #ifdef MOZ_WIDGET_COCOA
- #  include <Carbon/Carbon.h>
- #  include "CocoaFileUtils.h"
- #  include "prmem.h"
- #  include "plbase64.h"
- 
-@@ -2088,20 +2089,29 @@ nsLocalFile::SetPersistentDescriptor(con
- 
- NS_IMETHODIMP
- nsLocalFile::Reveal() {
-   if (!FilePreferences::IsAllowedPath(mPath)) {
-     return NS_ERROR_FILE_ACCESS_DENIED;
+@@ -2172,10 +2173,19 @@ nsLocalFile::Reveal() {
    }
  
  #ifdef MOZ_WIDGET_GTK
 +  nsAutoCString url;
    nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
 -  if (!giovfs) {
+-    return NS_ERROR_FAILURE;
 +  url = mPath;
 +  if(nsKDEUtils::kdeSupport()) {
 +    nsTArray<nsCString> command;
 +    command.AppendElement( "REVEAL"_ns );
 +    command.AppendElement( mPath );
 +    return nsKDEUtils::command( command ) ? NS_OK : NS_ERROR_FAILURE;
-+  }
+   }
 +
 +  if (!giovfs)
-     return NS_ERROR_FAILURE;
--  }
++    return NS_ERROR_FAILURE;
 +
    return giovfs->RevealFile(this);
  #elif defined(MOZ_WIDGET_COCOA)
    CFURLRef url;
-   if (NS_SUCCEEDED(GetCFURL(&url))) {
-     nsresult rv = CocoaFileUtils::RevealFileInFinder(url);
-     ::CFRelease(url);
-     return rv;
-   }
-@@ -2113,16 +2123,23 @@ nsLocalFile::Reveal() {
- 
- NS_IMETHODIMP
- nsLocalFile::Launch() {
-   if (!FilePreferences::IsAllowedPath(mPath)) {
-     return NS_ERROR_FILE_ACCESS_DENIED;
+@@ -2197,6 +2207,13 @@ nsLocalFile::Launch() {
    }
  
  #ifdef MOZ_WIDGET_GTK
@@ -1860,8 +1456,3 @@ diff --git a/xpcom/io/nsLocalFileUnix.cpp b/xpcom/io/nsLocalFileUnix.cpp
    nsCOMPtr<nsIGIOService> giovfs = do_GetService(NS_GIOSERVICE_CONTRACTID);
    if (!giovfs) {
      return NS_ERROR_FAILURE;
-   }
- 
-   return giovfs->LaunchFile(mPath);
- #elif defined(MOZ_WIDGET_ANDROID)
-   // Not supported on GeckoView
diff --git a/mozilla-1663844.patch b/mozilla-1663844.patch
deleted file mode 100644
index afa5168..0000000
--- a/mozilla-1663844.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-diff -up firefox-109.0/dom/media/gmp/GMPSharedMemManager.h.1663844 firefox-109.0/dom/media/gmp/GMPSharedMemManager.h
---- firefox-109.0/dom/media/gmp/GMPSharedMemManager.h.1663844	2023-01-09 20:34:10.000000000 +0100
-+++ firefox-109.0/dom/media/gmp/GMPSharedMemManager.h	2023-01-12 09:28:56.035741438 +0100
-@@ -26,7 +26,7 @@ class GMPSharedMem {
-   // returned to the parent pool (which is not included).  If more than
-   // this are needed, we presume the client has either crashed or hung
-   // (perhaps temporarily).
--  static const uint32_t kGMPBufLimit = 20;
-+  static const uint32_t kGMPBufLimit = 40;
- 
-   GMPSharedMem() {
-     for (size_t i = 0; i < sizeof(mGmpAllocated) / sizeof(mGmpAllocated[0]);
-diff -up firefox-109.0/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp.1663844 firefox-109.0/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp
---- firefox-109.0/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp.1663844	2023-01-09 20:34:10.000000000 +0100
-+++ firefox-109.0/dom/media/platforms/agnostic/gmp/GMPDecoderModule.cpp	2023-01-12 09:28:56.036741473 +0100
-@@ -84,6 +84,9 @@ media::DecodeSupportSet GMPDecoderModule
- 
- media::DecodeSupportSet GMPDecoderModule::SupportsMimeType(
-     const nsACString& aMimeType, DecoderDoctorDiagnostics* aDiagnostics) const {
-+  if (MP4Decoder::IsH264(aMimeType)) {
-+    return media::DecodeSupport::SoftwareDecode;
-+  }
-   return media::DecodeSupport::Unsupported;
- }
- 
-diff -up firefox-109.0/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp.1663844 firefox-109.0/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp
---- firefox-109.0/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp.1663844	2023-01-12 09:28:56.036741473 +0100
-+++ firefox-109.0/dom/media/platforms/agnostic/gmp/GMPVideoDecoder.cpp	2023-01-12 14:18:12.354866405 +0100
-@@ -81,6 +81,8 @@ void GMPVideoDecoder::Decoded(GMPVideoi4
-                                 });
- 
-     mDecodedData.AppendElement(std::move(v));
-+    mDecodePromise.ResolveIfExists(std::move(mDecodedData), __func__);
-+    mDecodedData = DecodedData();
-   } else {
-     mDecodedData.Clear();
-     mDecodePromise.RejectIfExists(
diff --git a/mozilla-1670333.patch b/mozilla-1670333.patch
deleted file mode 100644
index a1eaa9a..0000000
--- a/mozilla-1670333.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-diff -up firefox-105.0/dom/media/mp4/MP4Demuxer.cpp.1670333 firefox-105.0/dom/media/mp4/MP4Demuxer.cpp
---- firefox-105.0/dom/media/mp4/MP4Demuxer.cpp.1670333	2022-09-15 20:49:09.000000000 +0200
-+++ firefox-105.0/dom/media/mp4/MP4Demuxer.cpp	2022-09-20 09:16:35.404519249 +0200
-@@ -31,6 +31,8 @@ mozilla::LogModule* GetDemuxerLog() { re
-   DDMOZ_LOG(gMediaDemuxerLog, mozilla::LogLevel::Debug, "::%s: " arg, \
-             __func__, ##__VA_ARGS__)
- 
-+extern bool gUseKeyframeFromContainer;
-+
- namespace mozilla {
- 
- DDLoggedTypeDeclNameAndBase(MP4TrackDemuxer, MediaTrackDemuxer);
-@@ -394,6 +396,12 @@ already_AddRefed<MediaRawData> MP4TrackD
-           [[fallthrough]];
-         case H264::FrameType::OTHER: {
-           bool keyframe = type == H264::FrameType::I_FRAME;
-+          if (gUseKeyframeFromContainer) {
-+            if (sample->mKeyframe && sample->mKeyframe != keyframe) {
-+              sample->mKeyframe = keyframe;
-+            }
-+            break;
-+          }
-           if (sample->mKeyframe != keyframe) {
-             NS_WARNING(nsPrintfCString("Frame incorrectly marked as %skeyframe "
-                                        "@ pts:%" PRId64 " dur:%" PRId64
-diff -up firefox-105.0/dom/media/platforms/PDMFactory.cpp.1670333 firefox-105.0/dom/media/platforms/PDMFactory.cpp
---- firefox-105.0/dom/media/platforms/PDMFactory.cpp.1670333	2022-09-15 20:49:09.000000000 +0200
-+++ firefox-105.0/dom/media/platforms/PDMFactory.cpp	2022-09-20 09:20:05.369572900 +0200
-@@ -61,6 +61,8 @@
- 
- #include <functional>
- 
-+bool gUseKeyframeFromContainer = false;
-+
- using DecodeSupport = mozilla::media::DecodeSupport;
- using DecodeSupportSet = mozilla::media::DecodeSupportSet;
- using MediaCodec = mozilla::media::MediaCodec;
-@@ -553,7 +555,7 @@ void PDMFactory::CreateRddPDMs() {
- #ifdef MOZ_FFMPEG
-   if (StaticPrefs::media_ffmpeg_enabled() &&
-       StaticPrefs::media_rdd_ffmpeg_enabled() &&
--      !CreateAndStartupPDM<FFmpegRuntimeLinker>()) {
-+      !(mFFmpegUsed = CreateAndStartupPDM<FFmpegRuntimeLinker>())) {
-     mFailureFlags += GetFailureFlagBasedOnFFmpegStatus(
-         FFmpegRuntimeLinker::LinkStatusCode());
-   }
-@@ -653,8 +655,9 @@ void PDMFactory::CreateContentPDMs() {
- 
-   CreateAndStartupPDM<AgnosticDecoderModule>();
- 
--  if (StaticPrefs::media_gmp_decoder_enabled() &&
-+  if (StaticPrefs::media_gmp_decoder_enabled() && !mFFmpegUsed &&
-       !CreateAndStartupPDM<GMPDecoderModule>()) {
-+    gUseKeyframeFromContainer = true;
-     mFailureFlags += DecoderDoctorDiagnostics::Flags::GMPPDMFailedToStartup;
-   }
- }
-diff -up firefox-105.0/dom/media/platforms/PDMFactory.h.1670333 firefox-105.0/dom/media/platforms/PDMFactory.h
---- firefox-105.0/dom/media/platforms/PDMFactory.h.1670333	2022-09-15 20:49:08.000000000 +0200
-+++ firefox-105.0/dom/media/platforms/PDMFactory.h	2022-09-20 09:16:35.404519249 +0200
-@@ -102,6 +102,7 @@ class PDMFactory final {
-   RefPtr<PlatformDecoderModule> mNullPDM;
- 
-   DecoderDoctorDiagnostics::FlagsSet mFailureFlags;
-+  bool mFFmpegUsed = false;
- 
-   friend class RemoteVideoDecoderParent;
-   static void EnsureInit();
Not Available

benbullard79 [@T] cox.netNo Comment.341d 23hrs
benbullard79 [@T] cox.netNo Comment.341d 22hrs