#65 updpkg: libre/iceweasel 107.0
Closed 11 days ago by billauger. Opened 4 months ago by commodorecrunch.
commodorecrunch/abslibre iceweasel  into  pull-requests

The added file is too large to be shown here, see it at: libre/iceweasel/0001-libwebrtc-screen-cast-sync.patch
@@ -1,4 +1,4 @@ 

- From e2e22a52ee5e5cf9f7c55854b828bb65a919b563 Mon Sep 17 00:00:00 2001

+ From 07801d1961effd9182c80a990a23f338e3972efb Mon Sep 17 00:00:00 2001

  From: grizzlyuser <grizzlyuser@protonmail.com>

  Date: Wed, 30 Dec 2020 17:20:39 +0200

  Subject: [PATCH 01/13] Point to local omni.ja files, not remote server
@@ -26,18 +26,19 @@ 

   .../newtab/data/content/activity-stream.bundle.js         | 2 +-

   services/settings/Utils.jsm                               | 2 +-

   .../periodic-updates/scripts/periodic_file_updates.sh     | 2 +-

-  toolkit/components/search/SearchUtils.jsm                 | 8 ++++----

+  .../components/backgroundtasks/BackgroundTask_message.jsm | 4 ++--

+  toolkit/components/search/SearchUtils.sys.mjs             | 8 ++++----

   toolkit/components/search/docs/DefaultSearchEngines.rst   | 2 +-

   .../components/search/docs/SearchEngineConfiguration.rst  | 2 +-

   toolkit/modules/AppConstants.jsm                          | 4 ++--

   toolkit/mozapps/defaultagent/RemoteSettings.cpp           | 2 +-

-  9 files changed, 13 insertions(+), 13 deletions(-)

+  10 files changed, 15 insertions(+), 15 deletions(-)

  

  diff --git a/browser/components/newtab/content-src/components/ASRouterAdmin/ASRouterAdmin.jsx b/browser/components/newtab/content-src/components/ASRouterAdmin/ASRouterAdmin.jsx

- index 0a9da8d804..fdc387aa63 100644

+ index e663fbd32b..a7b7a1994f 100644

  --- a/browser/components/newtab/content-src/components/ASRouterAdmin/ASRouterAdmin.jsx

  +++ b/browser/components/newtab/content-src/components/ASRouterAdmin/ASRouterAdmin.jsx

- @@ -1226,7 +1226,7 @@ export class ASRouterAdminInner extends React.PureComponent {

+ @@ -1116,7 +1116,7 @@ export class ASRouterAdminInner extends React.PureComponent {

                     <a

                       className="providerUrl"

                       target="_blank"
@@ -47,10 +48,10 @@ 

                     >

                       nimbus-desktop-experiments

  diff --git a/browser/components/newtab/data/content/activity-stream.bundle.js b/browser/components/newtab/data/content/activity-stream.bundle.js

- index 3439547610..e4b170454c 100644

+ index 938b44f87b..cdfd5b8589 100644

  --- a/browser/components/newtab/data/content/activity-stream.bundle.js

  +++ b/browser/components/newtab/data/content/activity-stream.bundle.js

- @@ -1577,7 +1577,7 @@ class ASRouterAdminInner extends (external_React_default()).PureComponent {

+ @@ -1487,7 +1487,7 @@ class ASRouterAdminInner extends (external_React_default()).PureComponent {

           label = /*#__PURE__*/external_React_default().createElement("span", null, "remote settings (", /*#__PURE__*/external_React_default().createElement("a", {

             className: "providerUrl",

             target: "_blank",
@@ -60,10 +61,10 @@ 

           }, "nimbus-desktop-experiments"), ")");

         }

  diff --git a/services/settings/Utils.jsm b/services/settings/Utils.jsm

- index 31ad77d286..9f2e97f14c 100644

+ index a8b0c67ce1..9761486718 100644

  --- a/services/settings/Utils.jsm

  +++ b/services/settings/Utils.jsm

- @@ -106,7 +106,7 @@ var Utils = {

+ @@ -107,7 +107,7 @@ var Utils = {

         : AppConstants.REMOTE_SETTINGS_SERVER_URL;

     },

   
@@ -73,7 +74,7 @@ 

     /**

      * Logger instance.

  diff --git a/taskcluster/docker/periodic-updates/scripts/periodic_file_updates.sh b/taskcluster/docker/periodic-updates/scripts/periodic_file_updates.sh

- index 3bc70462c4..dc9592c9fa 100755

+ index f177a1440c..c41b0beece 100755

  --- a/taskcluster/docker/periodic-updates/scripts/periodic_file_updates.sh

  +++ b/taskcluster/docker/periodic-updates/scripts/periodic_file_updates.sh

  @@ -285,7 +285,7 @@ function compare_suffix_lists {
@@ -85,11 +86,26 @@ 

   

     # 1. List remote settings collections from server.

     echo "INFO: fetch remote settings list from server"

- diff --git a/toolkit/components/search/SearchUtils.jsm b/toolkit/components/search/SearchUtils.jsm

- index 0bf60e5f16..5561b885f6 100644

- --- a/toolkit/components/search/SearchUtils.jsm

- +++ b/toolkit/components/search/SearchUtils.jsm

- @@ -158,13 +158,13 @@ var SearchUtils = {

+ diff --git a/toolkit/components/backgroundtasks/BackgroundTask_message.sys.mjs b/toolkit/components/backgroundtasks/BackgroundTask_message.sys.mjs

+ index 55e8f70e77..2b5167b36b 100644

+ --- a/toolkit/components/backgroundtasks/BackgroundTask_message.sys.mjs

+ +++ b/toolkit/components/backgroundtasks/BackgroundTask_message.sys.mjs

+ @@ -19,8 +19,8 @@

+  // environment variables still apply.

+  //

+  // --stage: use stage Remote Settings

+ -//   (`https://settings-cdn.stage.mozaws.net/v1`) rather than production

+ -//   (`https://firefox.settings.services.mozilla.com/v1`)

+ +//   (`resource://app/defaults/settings/`) rather than production

+ +//   (`resource://app/defaults/settings/`)

+  //

+  // --preview: enable Remote Settings and Experiment previews.

+  //

+ diff --git a/toolkit/components/search/SearchUtils.sys.mjs b/toolkit/components/search/SearchUtils.sys.mjs

+ index a3072d19b3..d24df38913 100644

+ --- a/toolkit/components/search/SearchUtils.sys.mjs

+ +++ b/toolkit/components/search/SearchUtils.sys.mjs

+ @@ -154,13 +154,13 @@ export var SearchUtils = {

   

     ENGINES_URLS: {

       "prod-main":
@@ -129,10 +145,10 @@ 

  +.. _viewed live: resource://app/defaults/settings/main/search-config.json

   .. _Normandy: /toolkit/components/normandy/normandy/services.html

  diff --git a/toolkit/modules/AppConstants.jsm b/toolkit/modules/AppConstants.jsm

- index 7f8ac95dd9..fc34169ea5 100644

+ index 15125bcca0..1b3e502730 100644

  --- a/toolkit/modules/AppConstants.jsm

  +++ b/toolkit/modules/AppConstants.jsm

- @@ -420,9 +420,9 @@ this.AppConstants = Object.freeze({

+ @@ -420,9 +420,9 @@ var AppConstants = Object.freeze({

   

     REMOTE_SETTINGS_SERVER_URL:

   #ifdef MOZ_THUNDERBIRD
@@ -158,10 +174,10 @@ 

   #define PROD_CID "windows-default-browser-agent"

   #define PROD_ID "state"

  -- 

- 2.37.0

+ 2.37.2

  

  

- From 9329ba8b85b542759a089818d70ba86d0a5b9a60 Mon Sep 17 00:00:00 2001

+ From 70b74406d004aa6a4da38d179495f767ec583e58 Mon Sep 17 00:00:00 2001

  From: grizzlyuser <grizzlyuser@protonmail.com>

  Date: Wed, 30 Dec 2020 17:34:08 +0200

  Subject: [PATCH 02/13] Remove polling triggered by push broadcasts
@@ -174,11 +190,11 @@ 

  service.

  ---

   dom/push/PushBroadcastService.jsm    | 13 +++++++++++++

-  services/settings/remote-settings.js |  7 ++-----

-  2 files changed, 15 insertions(+), 5 deletions(-)

+  services/settings/remote-settings.js | 11 ++---------

+  2 files changed, 15 insertions(+), 9 deletions(-)

  

  diff --git a/dom/push/PushBroadcastService.jsm b/dom/push/PushBroadcastService.jsm

- index 1ee7986f6a..db73413b1a 100644

+ index 80df53ee49..109d602d4a 100644

  --- a/dom/push/PushBroadcastService.jsm

  +++ b/dom/push/PushBroadcastService.jsm

  @@ -179,6 +179,19 @@ var BroadcastService = class {
@@ -202,19 +218,23 @@ 

      * Call the listeners of the specified broadcasts.

      *

  diff --git a/services/settings/remote-settings.js b/services/settings/remote-settings.js

- index f7e8e24748..57d11d71b3 100644

+ index 44727dfc0e..ece21d09bc 100644

  --- a/services/settings/remote-settings.js

  +++ b/services/settings/remote-settings.js

- @@ -533,7 +533,7 @@ function remoteSettingsFunction() {

+ @@ -582,11 +582,7 @@ function remoteSettingsFunction() {

         moduleURI: __URI__,

         symbolName: "remoteSettingsBroadcastHandler",

       };

- -    pushBroadcastService.addListener(BROADCAST_ID, currentVersion, moduleInfo);

- +    pushBroadcastService.deleteListener(BROADCAST_ID);

+ -    lazy.pushBroadcastService.addListener(

+ -      BROADCAST_ID,

+ -      currentVersion,

+ -      moduleInfo

+ -    );

+ +    lazy.pushBroadcastService.deleteListener(BROADCAST_ID);

     };

   

     return remoteSettings;

- @@ -553,9 +553,6 @@ var remoteSettingsBroadcastHandler = {

+ @@ -606,9 +602,6 @@ var remoteSettingsBroadcastHandler = {

         `Push notification received (version=${version} phase=${phase})`

       );

   
@@ -226,10 +246,10 @@ 

     },

   };

  -- 

- 2.37.0

+ 2.37.2

  

  

- From 11631dd36d3eeecc5f22171d5e059fbe7662c77c Mon Sep 17 00:00:00 2001

+ From 9f91207a91cb895a67f90f5e2e4e3968e8bd7b0e Mon Sep 17 00:00:00 2001

  From: grizzlyuser <grizzlyuser@protonmail.com>

  Date: Wed, 30 Dec 2020 17:41:54 +0200

  Subject: [PATCH 03/13] Remove timer that triggers polling for changes
@@ -270,10 +290,10 @@ 

  -# see syntax https://searchfox.org/mozilla-central/rev/cc280c4be94ff8cf64a27cc9b3d6831ffa49fa45/toolkit/components/timermanager/UpdateTimerManager.jsm#155

  -category update-timer RemoteSettingsComponents @mozilla.org/services/settings;1,getService,services-settings-poll-changes,services.settings.poll_interval,86400,259200

  -- 

- 2.37.0

+ 2.37.2

  

  

- From d720d5680fa97ad53998b6050bc28df4503f0c39 Mon Sep 17 00:00:00 2001

+ From 8f0541899626807c4cb11996b5763463f3b9dc6f Mon Sep 17 00:00:00 2001

  From: grizzlyuser <grizzlyuser@protonmail.com>

  Date: Wed, 30 Dec 2020 17:47:41 +0200

  Subject: [PATCH 04/13] Utils: fetch timestamps of each collection locally
@@ -292,10 +312,10 @@ 

   create mode 100644 services/settings/dumps/monitor/moz.build

  

  diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in

- index 73a41dc25b..04c2a3fb6a 100644

+ index 14e582fc61..821b1e2167 100644

  --- a/browser/installer/package-manifest.in

  +++ b/browser/installer/package-manifest.in

- @@ -275,6 +275,7 @@

+ @@ -259,6 +259,7 @@

   @RESPATH@/browser/defaults/settings/last_modified.json

   @RESPATH@/browser/defaults/settings/blocklists

   @RESPATH@/browser/defaults/settings/main
@@ -304,10 +324,10 @@ 

   

   ; Warning: changing the path to channel-prefs.js can cause bugs (Bug 756325)

  diff --git a/services/settings/Utils.jsm b/services/settings/Utils.jsm

- index 9f2e97f14c..4e140f0fdd 100644

+ index 9761486718..da55d60201 100644

  --- a/services/settings/Utils.jsm

  +++ b/services/settings/Utils.jsm

- @@ -377,7 +377,7 @@ var Utils = {

+ @@ -379,7 +379,7 @@ var Utils = {

     async fetchLatestChanges(serverUrl, options = {}) {

       const { expectedTimestamp, lastEtag = "", filters = {} } = options;

   
@@ -316,7 +336,7 @@ 

       const params = {

         ...filters,

         _expected: expectedTimestamp ?? 0,

- @@ -392,7 +392,11 @@ var Utils = {

+ @@ -394,7 +394,11 @@ var Utils = {

             .map(([k, v]) => `${k}=${encodeURIComponent(v)}`)

             .join("&");

       }
@@ -329,7 +349,7 @@ 

   

       if (response.status >= 500) {

         throw new Error(`Server error ${response.status} ${response.statusText}`);

- @@ -427,7 +431,15 @@ var Utils = {

+ @@ -429,7 +433,15 @@ var Utils = {

         }

       }

   
@@ -373,10 +393,10 @@ 

   ]

   

  -- 

- 2.37.0

+ 2.37.2

  

  

- From 98496943d01589201771f69e14ba6b3cb7395e48 Mon Sep 17 00:00:00 2001

+ From dca0c5d7c983a24d742c45705a899430afed41bd Mon Sep 17 00:00:00 2001

  From: grizzlyuser <grizzlyuser@protonmail.com>

  Date: Wed, 30 Dec 2020 17:52:10 +0200

  Subject: [PATCH 05/13] Utils: disable offline checking
@@ -384,22 +404,23 @@ 

  Since only local data is read now, it should always return false for the

  current and any future code that relies on it.

  ---

-  services/settings/Utils.jsm | 9 ---------

-  1 file changed, 9 deletions(-)

+  services/settings/Utils.jsm | 10 ----------

+  1 file changed, 10 deletions(-)

  

  diff --git a/services/settings/Utils.jsm b/services/settings/Utils.jsm

- index 4e140f0fdd..5d448da54c 100644

+ index da55d60201..ff45380ff8 100644

  --- a/services/settings/Utils.jsm

  +++ b/services/settings/Utils.jsm

- @@ -192,15 +192,6 @@ var Utils = {

+ @@ -193,16 +193,6 @@ var Utils = {

      * @return {bool} Whether network is down or not.

      */

     get isOffline() {

  -    try {

  -      return (

  -        Services.io.offline ||

- -        CaptivePortalService.state == CaptivePortalService.LOCKED_PORTAL ||

- -        !gNetworkLinkService.isLinkUp

+ -        lazy.CaptivePortalService.state ==

+ -          lazy.CaptivePortalService.LOCKED_PORTAL ||

+ -        !lazy.gNetworkLinkService.isLinkUp

  -      );

  -    } catch (ex) {

  -      log.warn("Could not determine network status.", ex);
@@ -408,10 +429,10 @@ 

     },

   

  -- 

- 2.37.0

+ 2.37.2

  

  

- From 738c1836a53ead5253ab3e0f9750aec94192dff0 Mon Sep 17 00:00:00 2001

+ From 1e29854983d5fcc360a6b407b4cd11f6af8d993e Mon Sep 17 00:00:00 2001

  From: grizzlyuser <grizzlyuser@protonmail.com>

  Date: Wed, 30 Dec 2020 17:56:02 +0200

  Subject: [PATCH 06/13] Refactor hashing logic to a separate function
@@ -424,25 +445,25 @@ 

   2 files changed, 11 insertions(+), 2 deletions(-)

  

  diff --git a/services/settings/RemoteSettingsWorker.jsm b/services/settings/RemoteSettingsWorker.jsm

- index 147ebb6b13..c86e218fd3 100644

+ index 2e8073271b..24b4ce2af8 100644

  --- a/services/settings/RemoteSettingsWorker.jsm

  +++ b/services/settings/RemoteSettingsWorker.jsm

- @@ -189,6 +189,10 @@ class Worker {

+ @@ -191,6 +191,10 @@ class Worker {

       // task on the current thread instead of the worker thread.

-      return SharedUtils.checkContentHash(buffer, size, hash);

+      return lazy.SharedUtils.checkContentHash(buffer, size, hash);

     }

  +

  +  async getContentHash(bytes) {

- +    return SharedUtils.getContentHash(bytes);

+ +    return lazy.SharedUtils.getContentHash(bytes);

  +  }

   }

   

   // Now, first add a shutdown blocker. If that fails, we must have

  diff --git a/services/settings/SharedUtils.jsm b/services/settings/SharedUtils.jsm

- index 5d32fb38bd..753a1b1393 100644

+ index 9804e80c91..de67b0fb6f 100644

  --- a/services/settings/SharedUtils.jsm

  +++ b/services/settings/SharedUtils.jsm

- @@ -28,11 +28,16 @@ var SharedUtils = {

+ @@ -23,11 +23,16 @@ var SharedUtils = {

         return false;

       }

       // Has expected content?
@@ -462,10 +483,10 @@ 

   

     /**

  -- 

- 2.37.0

+ 2.37.2

  

  

- From fa07a0a3fbd62a0d973a4ca07fdc3a5cf2209841 Mon Sep 17 00:00:00 2001

+ From 49543366ee33ad44a5577d082e51a11a2e7b4b7f Mon Sep 17 00:00:00 2001

  From: grizzlyuser <grizzlyuser@protonmail.com>

  Date: Wed, 30 Dec 2020 18:05:02 +0200

  Subject: [PATCH 07/13] Client: Fetch and hash records from local dump
@@ -500,16 +521,16 @@ 

   1 file changed, 27 insertions(+), 36 deletions(-)

  

  diff --git a/services/settings/RemoteSettingsClient.jsm b/services/settings/RemoteSettingsClient.jsm

- index eee1487491..90e82772c4 100644

+ index ae94f272d8..75589ff02e 100644

  --- a/services/settings/RemoteSettingsClient.jsm

  +++ b/services/settings/RemoteSettingsClient.jsm

- @@ -592,11 +592,9 @@ class RemoteSettingsClient extends EventEmitter {

+ @@ -678,11 +678,9 @@ class RemoteSettingsClient extends EventEmitter {

   

             // If the data is up-to-date but don't have metadata (records loaded from dump),

             // we fetch them and validate the signature immediately.

- -          if (this.verifySignature && ObjectUtils.isEmpty(localMetadata)) {

- +          if (this.verifySignature && ObjectUtils.isEmpty(localMetadata?.json_dump_metadata)) {

-              console.debug(`${this.identifier} pull collection metadata`);

+ -          if (this.verifySignature && lazy.ObjectUtils.isEmpty(localMetadata)) {

+ +          if (this.verifySignature && lazy.ObjectUtils.isEmpty(localMetadata?.json_dump_metadata)) {

+              lazy.console.debug(`${this.identifier} pull collection metadata`);

  -            const metadata = await this.httpClient().getData({

  -              query: { _expected: expectedTimestamp },

  -            });
@@ -517,7 +538,7 @@ 

               await this.db.importChanges(metadata);

               // We don't bother validating the signature if the dump was just loaded. We do

               // if the dump was loaded at some other point (eg. from .get()).

- @@ -825,33 +823,23 @@ class RemoteSettingsClient extends EventEmitter {

+ @@ -945,33 +943,23 @@ class RemoteSettingsClient extends EventEmitter {

      * @returns {Promise}

      */

     async _validateCollectionSignature(records, timestamp, metadata) {
@@ -537,9 +558,9 @@ 

  -      signature: { x5u, signature },

  +      json_dump_metadata: { hash, size },

       } = metadata;

- -    const certChain = await (await Utils.fetch(x5u)).text();

+ -    const certChain = await (await lazy.Utils.fetch(x5u)).text();

       // Merge remote records with local ones and serialize as canonical JSON.

-      const serialized = await RemoteSettingsWorker.canonicalStringify(

+      const serialized = await lazy.RemoteSettingsWorker.canonicalStringify(

         records,

         timestamp

       );
@@ -549,15 +570,15 @@ 

  -        "p384ecdsa=" + signature,

  -        certChain,

  -        this.signerName,

- -        Utils.CERT_CHAIN_ROOT_IDENTIFIER

- +      !(await RemoteSettingsWorker.checkContentHash(

+ -        lazy.Utils.CERT_CHAIN_ROOT_IDENTIFIER

+ +      !(await lazy.RemoteSettingsWorker.checkContentHash(

  +        new TextEncoder().encode(serialized),

  +        size,

  +        hash

         ))

       ) {

         throw new InvalidSignatureError(this.identifier);

- @@ -1024,24 +1012,27 @@ class RemoteSettingsClient extends EventEmitter {

+ @@ -1144,24 +1132,27 @@ class RemoteSettingsClient extends EventEmitter {

      * @param since timestamp of last sync (optional)

      */

     async _fetchChangeset(expectedTimestamp, since) {
@@ -576,21 +597,21 @@ 

  -          _since: since,

  -        },

  -      }

- +    const { data } = await SharedUtils.loadJSONDump(

+ +    const { data } = await lazy.SharedUtils.loadJSONDump(

  +      this.bucketName,

  +      this.collectionName

-      );

+ +    );

  +    const remoteRecords = data ?? [];

  +

- +    const serialized = await RemoteSettingsWorker.canonicalStringify(

+ +    const serialized = await lazy.RemoteSettingsWorker.canonicalStringify(

  +      remoteRecords,

  +      expectedTimestamp

- +    );

+      );

  +    const bytes = new TextEncoder().encode(serialized);

  +    const metadata = {

  +      app_build_id: Services.appinfo.appBuildID,

  +      json_dump_metadata: {

- +        hash: await RemoteSettingsWorker.getContentHash(bytes),

+ +        hash: await lazy.RemoteSettingsWorker.getContentHash(bytes),

  +        size: bytes.length,

  +      },

  +    }
@@ -602,10 +623,10 @@ 

         remoteRecords,

       };

  -- 

- 2.37.0

+ 2.37.2

  

  

- From 9e4840347d561c7dc98ab6f84e3c3a195297c29e Mon Sep 17 00:00:00 2001

+ From b6ce5faacf9bdf97066c7182399b58d5ef91a445 Mon Sep 17 00:00:00 2001

  From: grizzlyuser <grizzlyuser@protonmail.com>

  Date: Wed, 30 Dec 2020 18:42:56 +0200

  Subject: [PATCH 08/13] Client: start deferred sync on get() or on()
@@ -623,45 +644,42 @@ 

  correctly synchronized with the dump, so that no metadata checking

  occurs during the session.

  ---

-  services/settings/RemoteSettingsClient.jsm | 30 +++++++++++++++++++++-

-  1 file changed, 29 insertions(+), 1 deletion(-)

+  services/settings/RemoteSettingsClient.jsm | 27 +++++++++++++++++++++-

+  1 file changed, 26 insertions(+), 1 deletion(-)

  

  diff --git a/services/settings/RemoteSettingsClient.jsm b/services/settings/RemoteSettingsClient.jsm

- index 90e82772c4..2a009eca7c 100644

+ index 75589ff02e..90280fc848 100644

  --- a/services/settings/RemoteSettingsClient.jsm

  +++ b/services/settings/RemoteSettingsClient.jsm

- @@ -16,6 +16,7 @@ XPCOMUtils.defineLazyModuleGetters(this, {

+ @@ -22,6 +22,7 @@ XPCOMUtils.defineLazyModuleGetters(lazy, {

     ClientEnvironmentBase:

       "resource://gre/modules/components-utils/ClientEnvironment.jsm",

     Database: "resource://services-settings/Database.jsm",

  +  DeferredTask: "resource://gre/modules/DeferredTask.jsm",

-    Downloader: "resource://services-settings/Attachments.jsm",

     IDBHelpers: "resource://services-settings/IDBHelpers.jsm",

     KintoHttpClient: "resource://services-common/kinto-http-client.js",

- @@ -27,6 +28,7 @@ XPCOMUtils.defineLazyModuleGetters(this, {

+    ObjectUtils: "resource://gre/modules/ObjectUtils.jsm",

+ @@ -32,6 +33,7 @@ XPCOMUtils.defineLazyModuleGetters(lazy, {

   });

   

   const TELEMETRY_COMPONENT = "remotesettings";

  +const DEFERRED_SYNC_DELAY_MILLISECONDS = 1000;

   

-  XPCOMUtils.defineLazyGetter(this, "console", () => Utils.log);

+  XPCOMUtils.defineLazyGetter(lazy, "console", () => lazy.Utils.log);

   

- @@ -249,6 +251,14 @@ class RemoteSettingsClient extends EventEmitter {

+ @@ -319,6 +321,11 @@ class RemoteSettingsClient extends EventEmitter {

       this._lastCheckTimePref = lastCheckTimePref;

       this._verifier = null;

       this._syncRunning = false;

- +    this._deferredSync = new DeferredTask(

- +      async () => {

- +        if (!this._syncRunning && !(await this._isSynced())) {

- +          await this.sync();

- +        }

- +      },

- +      DEFERRED_SYNC_DELAY_MILLISECONDS

- +    );

+ +    this._deferredSync = new lazy.DeferredTask(async () => {

+ +      if (!this._syncRunning && !(await this._isSynced())) {

+ +        await this.sync();

+ +      }

+ +    }, DEFERRED_SYNC_DELAY_MILLISECONDS);

   

       // This attribute allows signature verification to be disabled, when running tests

       // or when pulling data from a dev server.

- @@ -278,6 +288,11 @@ class RemoteSettingsClient extends EventEmitter {

+ @@ -348,6 +355,11 @@ class RemoteSettingsClient extends EventEmitter {

       this.db.identifier = this.identifier;

     }

   
@@ -673,7 +691,7 @@ 

     get identifier() {

       return `${this.bucketName}/${this.collectionName}`;

     }

- @@ -346,6 +361,10 @@ class RemoteSettingsClient extends EventEmitter {

+ @@ -419,6 +431,10 @@ class RemoteSettingsClient extends EventEmitter {

         let lastModified = await this.db.getLastModified();

         let hasLocalData = lastModified !== null;

   
@@ -684,7 +702,7 @@ 

         if (syncIfEmpty && !hasLocalData) {

           // .get() was called before we had the chance to synchronize the local database.

           // We'll try to avoid returning an empty list.

- @@ -444,7 +463,10 @@ class RemoteSettingsClient extends EventEmitter {

+ @@ -527,7 +543,10 @@ class RemoteSettingsClient extends EventEmitter {

         // No need to verify signature on JSON dumps.

         // If local DB cannot be read, then we don't even try to do anything,

         // we return results early.
@@ -695,14 +713,14 @@ 

  +      return filtered;

       }

   

-      console.debug(

- @@ -484,6 +506,12 @@ class RemoteSettingsClient extends EventEmitter {

+      lazy.console.debug(

+ @@ -567,6 +586,12 @@ class RemoteSettingsClient extends EventEmitter {

       return final;

     }

   

  +  async _isSynced() {

  +    this._synced ||=

- +      Services.appinfo.appBuildID === (await this.db.getMetadata())?.app_build_id;

+ +      Services.appinfo.appBuildID === (await this.db?.getMetadata())?.app_build_id;

  +    return this._synced;

  +  }

  +
@@ -710,10 +728,10 @@ 

      * Synchronize the local database with the remote server.

      *

  -- 

- 2.37.0

+ 2.37.2

  

  

- From 72de3dbe162430638a58838b714f1872c2dd8195 Mon Sep 17 00:00:00 2001

+ From 617d90b265e5d82aa964247f3bd68eb92ebd2cf0 Mon Sep 17 00:00:00 2001

  From: grizzlyuser <grizzlyuser@protonmail.com>

  Date: Wed, 30 Dec 2020 18:53:51 +0200

  Subject: [PATCH 09/13] Client: deep compare records if timestamps match
@@ -735,34 +753,34 @@ 

   1 file changed, 5 insertions(+), 1 deletion(-)

  

  diff --git a/services/settings/RemoteSettingsClient.jsm b/services/settings/RemoteSettingsClient.jsm

- index 2a009eca7c..dbcdb559df 100644

+ index 90280fc848..3d9f04696f 100644

  --- a/services/settings/RemoteSettingsClient.jsm

  +++ b/services/settings/RemoteSettingsClient.jsm

- @@ -13,6 +13,7 @@ const { Services } = ChromeUtils.import("resource://gre/modules/Services.jsm");

+ @@ -19,6 +19,7 @@ const { Downloader } = ChromeUtils.import(

+  const lazy = {};

   

-  XPCOMUtils.defineLazyModuleGetters(this, {

-    AppConstants: "resource://gre/modules/AppConstants.jsm",

+  XPCOMUtils.defineLazyModuleGetters(lazy, {

  +  CanonicalJSON: "resource://gre/modules/CanonicalJSON.jsm",

     ClientEnvironmentBase:

       "resource://gre/modules/components-utils/ClientEnvironment.jsm",

     Database: "resource://services-settings/Database.jsm",

- @@ -1015,7 +1016,10 @@ class RemoteSettingsClient extends EventEmitter {

+ @@ -1132,7 +1133,10 @@ class RemoteSettingsClient extends EventEmitter {

           const old = oldById.get(r.id);

           if (old) {

             oldById.delete(r.id);

  -          if (r.last_modified != old.last_modified) {

  +          if (

  +            r.last_modified != old.last_modified ||

- +            CanonicalJSON.stringify(r) != CanonicalJSON.stringify(old)

+ +            lazy.CanonicalJSON.stringify(r) != lazy.CanonicalJSON.stringify(old)

  +          ) {

               syncResult.updated.push({ old, new: r });

             }

           } else {

  -- 

- 2.37.0

+ 2.37.2

  

  

- From 0ddc970c40569ca7b20ec67a413519589e7c52f6 Mon Sep 17 00:00:00 2001

+ From 66122f118e859c33f1d972b658340dfc43b4b875 Mon Sep 17 00:00:00 2001

  From: grizzlyuser <grizzlyuser@protonmail.com>

  Date: Wed, 30 Dec 2020 19:01:39 +0200

  Subject: [PATCH 10/13] Client: delete more data on cleanup
@@ -780,10 +798,10 @@ 

   1 file changed, 9 insertions(+), 3 deletions(-)

  

  diff --git a/services/settings/RemoteSettingsClient.jsm b/services/settings/RemoteSettingsClient.jsm

- index dbcdb559df..c20ce412b2 100644

+ index 3d9f04696f..e102c8b89d 100644

  --- a/services/settings/RemoteSettingsClient.jsm

  +++ b/services/settings/RemoteSettingsClient.jsm

- @@ -207,7 +207,7 @@ class AttachmentDownloader extends Downloader {

+ @@ -256,7 +256,7 @@ class AttachmentDownloader extends Downloader {

         allRecords

           .filter(r => !!r.attachment)

           .map(r =>
@@ -792,16 +810,16 @@ 

           )

       );

     }

- @@ -975,7 +975,7 @@ class RemoteSettingsClient extends EventEmitter {

+ @@ -1092,7 +1092,7 @@ class RemoteSettingsClient extends EventEmitter {

             // Signature failed, clear local DB because it contains

             // bad data (local + remote changes).

-            console.debug(`${this.identifier} clear local data`);

+            lazy.console.debug(`${this.identifier} clear local data`);

  -          await this.db.clear();

  +          await this._clearAll();

             // Local data was tampered, throw and it will retry from empty DB.

-            console.error(`${this.identifier} local data was corrupted`);

+            lazy.console.error(`${this.identifier} local data was corrupted`);

             throw new CorruptedDataError(this.identifier);

- @@ -997,7 +997,7 @@ class RemoteSettingsClient extends EventEmitter {

+ @@ -1114,7 +1114,7 @@ class RemoteSettingsClient extends EventEmitter {

               // _importJSONDump() only clears DB if dump is available,

               // therefore do it here!

               if (imported < 0) {
@@ -810,7 +828,7 @@ 

               }

             }

           }

- @@ -1037,6 +1037,12 @@ class RemoteSettingsClient extends EventEmitter {

+ @@ -1154,6 +1154,12 @@ class RemoteSettingsClient extends EventEmitter {

       return syncResult;

     }

   
@@ -824,10 +842,10 @@ 

      * Fetch information from changeset endpoint.

      *

  -- 

- 2.37.0

+ 2.37.2

  

  

- From 00e45ee5b33b5e6030fa2d3b589cce5418822a3e Mon Sep 17 00:00:00 2001

+ From 3ef189a633dfbe5a95cf5b290808b0003e8ba5c1 Mon Sep 17 00:00:00 2001

  From: grizzlyuser <grizzlyuser@protonmail.com>

  Date: Wed, 30 Dec 2020 19:07:56 +0200

  Subject: [PATCH 11/13] Client: remove comparison of collection timestamps
@@ -842,16 +860,16 @@ 

   1 file changed, 5 deletions(-)

  

  diff --git a/services/settings/RemoteSettingsClient.jsm b/services/settings/RemoteSettingsClient.jsm

- index c20ce412b2..79ec40ee9e 100644

+ index e102c8b89d..9cb3455aaf 100644

  --- a/services/settings/RemoteSettingsClient.jsm

  +++ b/services/settings/RemoteSettingsClient.jsm

- @@ -917,14 +917,9 @@ class RemoteSettingsClient extends EventEmitter {

+ @@ -1034,14 +1034,9 @@ class RemoteSettingsClient extends EventEmitter {

         updated: [],

         deleted: [],

       };

  -    // If data wasn't changed, return empty sync result.

  -    // This can happen when we update the signature but not the data.

-      console.debug(

+      lazy.console.debug(

         `${this.identifier} local timestamp: ${localTimestamp}, remote: ${remoteTimestamp}`

       );

  -    if (localTimestamp && remoteTimestamp < localTimestamp) {
@@ -861,20 +879,20 @@ 

       await this.db.importChanges(metadata, remoteTimestamp, remoteRecords, {

         clear: retry,

  -- 

- 2.37.0

+ 2.37.2

  

  

- From 37d74c55d8c1d852666f179fe6ea45fd99ff83ca Mon Sep 17 00:00:00 2001

+ From 3d8d5ef12ab1c06cff841a9cca15a575750fc48d Mon Sep 17 00:00:00 2001

  From: grizzlyuser <grizzlyuser@protonmail.com>

  Date: Wed, 30 Dec 2020 19:15:44 +0200

  Subject: [PATCH 12/13] Attachments: load only from dump and drop cached

  

  ---

-  services/settings/Attachments.jsm | 35 +++++++------------------------

-  1 file changed, 8 insertions(+), 27 deletions(-)

+  services/settings/Attachments.jsm | 37 +++++++------------------------

+  1 file changed, 8 insertions(+), 29 deletions(-)

  

  diff --git a/services/settings/Attachments.jsm b/services/settings/Attachments.jsm

- index 2bf846e4e1..542f34f97e 100644

+ index 00bf059d55..979e22c06a 100644

  --- a/services/settings/Attachments.jsm

  +++ b/services/settings/Attachments.jsm

  @@ -151,9 +151,10 @@ class Downloader {
@@ -915,7 +933,7 @@ 

       const {

         attachment: { filename, size, hash },

       } = record;

- @@ -357,31 +359,10 @@ class Downloader {

+ @@ -359,33 +361,10 @@ class Downloader {

      */

     async downloadAsBytes(record, options = {}) {

       const {
@@ -934,7 +952,9 @@ 

  -        if (!checkHash) {

  -          return buffer;

  -        }

- -        if (await RemoteSettingsWorker.checkContentHash(buffer, size, hash)) {

+ -        if (

+ -          await lazy.RemoteSettingsWorker.checkContentHash(buffer, size, hash)

+ -        ) {

  -          return buffer;

  -        }

  -        // Content is corrupted.
@@ -951,10 +971,10 @@ 

   

     /**

  -- 

- 2.37.0

+ 2.37.2

  

  

- From 5f475d79389de681e2eac63527a6d497b0b0da77 Mon Sep 17 00:00:00 2001

+ From 0ba5c3f95dd3c8a468d49c73b5067bd78deb1442 Mon Sep 17 00:00:00 2001

  From: grizzlyuser <grizzlyuser@protonmail.com>

  Date: Wed, 30 Dec 2020 19:22:20 +0200

  Subject: [PATCH 13/13] Disable CRLite entirely for now
@@ -979,10 +999,10 @@ 

   2 files changed, 2 insertions(+), 1 deletion(-)

  

  diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml

- index c487b04a35..b0808338ef 100644

+ index 192915c16f..307f983896 100644

  --- a/modules/libpref/init/StaticPrefList.yaml

  +++ b/modules/libpref/init/StaticPrefList.yaml

- @@ -12269,7 +12269,7 @@

+ @@ -12540,7 +12540,7 @@

   # 3: Consult CRLite and enforce "Not Revoked" results, but defer to OCSP for "Revoked".

   - name: security.pki.crlite_mode

     type: RelaxedAtomicUint32
@@ -992,10 +1012,10 @@ 

   

   - name: security.tls.version.min

  diff --git a/security/manager/ssl/nsNSSComponent.cpp b/security/manager/ssl/nsNSSComponent.cpp

- index 12da07c56f..39f85cf5b3 100644

+ index aab4319651..f21432a7e3 100644

  --- a/security/manager/ssl/nsNSSComponent.cpp

  +++ b/security/manager/ssl/nsNSSComponent.cpp

- @@ -1453,6 +1453,7 @@ void nsNSSComponent::setValidationOptions(

+ @@ -1434,6 +1434,7 @@ void nsNSSComponent::setValidationOptions(

     CRLiteMode defaultCRLiteMode = CRLiteMode::Disabled;

     CRLiteMode crliteMode =

         static_cast<CRLiteMode>(StaticPrefs::security_pki_crlite_mode());
@@ -1004,5 +1024,5 @@ 

       case CRLiteMode::Disabled:

       case CRLiteMode::TelemetryOnly:

  -- 

- 2.37.0

+ 2.37.2

  

@@ -122,14 +122,6 @@ 

  index 4c59b84a7c..44d36d3b28 100644

  --- a/browser/base/content/test/static/browser_all_files_referenced.js

  +++ b/browser/base/content/test/static/browser_all_files_referenced.js

- @@ -33,7 +33,6 @@ var gExceptionPaths = [

-    "chrome://browser/content/assets/moz-vpn.svg",

-    "chrome://browser/content/assets/vpn-logo.svg",

-    "chrome://browser/content/assets/focus-promo.png",

- -  "chrome://browser/content/preferences/more-from-mozilla-qr-code-advanced.svg",

-    "chrome://browser/content/assets/klar-qr-code.svg",

-  

-    // These app marketplace icons are referenced based on the user's locale

  @@ -136,17 +135,6 @@ var whitelist = [

     // extensions/pref/autoconfig/src/nsReadConfig.cpp

     { file: "resource://gre/defaults/autoconfig/prefcalls.js" },
@@ -149,10 +141,10 @@ 

   

     // layout/mathml/nsMathMLChar.cpp

  diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn

- index 912d9edf08..dd4697a368 100644

+ index 2131a15cee..dd4697a368 100644

  --- a/browser/components/preferences/jar.mn

  +++ b/browser/components/preferences/jar.mn

- @@ -14,12 +14,8 @@ browser.jar:

+ @@ -14,11 +14,8 @@ browser.jar:

      content/browser/preferences/containers.js

      content/browser/preferences/sync.js

      content/browser/preferences/experimental.js
@@ -162,20 +154,8 @@ 

      content/browser/preferences/findInPage.js

  -   content/browser/preferences/more-from-mozilla-qr-code-simple.svg

  -   content/browser/preferences/more-from-mozilla-qr-code-simple-cn.svg

- -   content/browser/preferences/more-from-mozilla-qr-code-advanced.svg

      content/browser/preferences/web-appearance-dark.svg

      content/browser/preferences/web-appearance-light.svg

- diff --git a/browser/components/preferences/more-from-mozilla-qr-code-advanced.svg b/browser/components/preferences/more-from-mozilla-qr-code-advanced.svg

- deleted file mode 100644

- index 4848d3e20c..0000000000

- --- a/browser/components/preferences/more-from-mozilla-qr-code-advanced.svg

- +++ /dev/null

- @@ -1,4 +0,0 @@

- -<!-- 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/. -->

- -<svg width="113" height="113" fill="content" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M4 2h105a2 2 0 0 1 2 2v105a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2ZM0 4a4 4 0 0 1 4-4h105a4 4 0 0 1 4 4v105a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V4Zm10 6h22.448v22.448H10V10Zm6.414 3.207h-3.207V29.24H29.24V13.207H16.414ZM38.862 10h6.414v3.207h3.207v3.207h-3.207v3.207h3.207v-3.207h3.207V10h6.413v3.207h3.207V10h3.207v6.414h-9.62v6.414h3.206v3.207h3.207v-3.207h3.207V19.62h3.207v-3.207h3.207v3.207h3.207v-6.414h3.207V22.828h-3.207v3.207H70.93v6.413h-3.207v-3.207h-3.207v6.414H61.31v-6.414h-3.207v3.207h-3.206v-6.413h-6.414v-3.207h-6.414v3.207h-3.207v-3.207h-3.207v-6.414h6.414v-3.207h-3.207V10Zm6.414 22.448h-3.207v-6.413h3.207v6.413Zm-9.62 9.621h6.413v-3.207h-3.207v-3.207h6.414v-3.207h3.207v-3.207h3.207v3.207h3.207v6.414H51.69v-3.207h-3.207v3.207h3.207v3.207h-6.414v3.207h-3.207V54.897h-3.207v3.206h-3.207v-3.206h-3.207V51.69h-3.207v-3.207h3.207v-3.207h3.207v3.207h3.207v-3.207h-3.207v-3.207Zm-3.208 0v3.207h-3.207v-3.207h3.207Zm-3.207-3.207v-3.207h6.414v6.414h-3.207v-3.207h-3.207Zm-9.62 0v-3.207h6.414v3.207h3.206v3.207h-6.413v-3.207H19.62Zm0 0v3.207h-3.207v3.207h-3.207v-3.207H10v-3.207H19.621Zm6.414 19.241V51.69h3.206v3.207h3.207v3.206h-6.413Zm0 3.207v-3.207h-3.207V48.483h3.207v-3.207H19.62v3.207h-6.414v6.414h6.414v3.206h3.207v3.207h-6.414v-3.207H10v19.242h12.828v-3.207H19.62V70.93h6.414v6.414h6.413v-3.207h3.207V83.759h3.207v-3.207h3.207v16.034h16.034v3.207H48.483V103h9.62v-3.207h3.207V103h16.035v-3.207H67.724v-3.207H61.31V93.38H70.931v-3.207h12.828v6.414h-3.207V93.38h-6.414v3.207h6.414V103H93.379v-3.207h3.207v-3.207h3.207v3.207H103V93.38h-3.207v-3.207H90.172v-3.206h3.207v-3.207h3.207V70.93h-9.62v-3.207H96.586v-3.207H93.38V61.31h3.207v-3.207H93.38v-3.206h3.207V51.69h3.207V64.517H103V51.69h-3.207v-3.207H103v-3.207h-3.207v3.207h-3.207v3.207H93.38v-3.207h-3.207v3.207h-3.206v3.207h-3.207v-6.414h3.207v-3.207H96.586v-3.207h3.207v-3.207h-3.207v-3.207h-6.414v3.207H83.76v3.207h-6.414v-3.207h-3.207v6.414H70.93v3.207h3.207v-3.207H83.759v3.207h-6.414v3.207h3.207v3.207H70.93v3.206H80.552v3.207h3.207v-3.207h3.207v3.207h3.206v3.207h-3.206v3.207h-3.207v-3.207h-6.414V61.31H70.93v3.207h3.207v3.207h-6.414v6.414h-3.207V70.93H61.31v3.207h-3.207V70.93h-3.206v3.207H51.69V83.759h-3.207v3.207h-3.207v-6.414h-3.207v-3.207h3.207v-3.207h-3.207v3.207h-3.207V70.93h-3.207v-6.414h3.207v3.207h3.207V61.31h-6.414v-3.207h-3.207v3.207h-6.413Zm0 3.207V61.31h-3.207v3.207H19.62v3.207h3.207v-3.207h3.207Zm3.206 6.414h3.207v3.207h-3.207V70.93Zm0 0v-3.207h3.207v-3.207h-6.413v6.414h3.206Zm25.656 16.035h-6.414v3.206h-3.207v3.207H58.103v-3.207h3.207v-3.206h3.207v-3.207h3.207v6.413h3.207V83.76h-3.207v-3.207h-3.207v-3.207H61.31v3.207h-3.207v3.207h-3.206v3.207Zm3.206 0h3.207v-3.207h3.207v-3.207H61.31v3.207h-3.207v3.207Zm0 0h-3.206v3.206h3.206v-3.206Zm-3.206-12.828v3.207h3.206v-3.207h-3.206Zm28.862-3.207v-3.207h-6.414v3.207H70.93v3.207h6.414V70.93h6.414Zm0 0v3.207h3.207V70.93h-3.207Zm6.413-16.034h-3.206v3.206h3.206v-3.206Zm-6.413 3.206v-3.206h-3.207v3.206h3.207Zm6.413-19.24v3.206h3.207v-3.207h-3.207Zm0 16.034V51.69h3.207v3.207h-3.207Zm3.207 28.862v-3.207h-3.207v3.207h3.207Zm-3.207 9.62v6.414h3.207V93.38h-3.207Zm0 0v-3.207h-3.206v3.207h3.206Zm-6.413 3.207v3.207h3.207v-3.207h-3.207ZM54.897 38.862H64.517v3.207h-9.62v-3.207Zm19.24-25.655h-6.413V10h6.414v3.207Zm-12.827 9.62h-3.207v-3.206h3.207v3.207ZM80.552 10H103v22.448H80.552V10Zm6.413 3.207H83.76V29.24H99.793V13.207H86.966Zm-70.551 3.207H26.035V26.035H16.414V16.414Zm70.552 0H96.586V26.035h-9.62V16.414ZM35.656 29.24h3.206v3.207h-3.207v-3.207Zm38.482 0h3.207v6.414h-3.207v-6.414Zm-6.414 6.414h3.207v3.207h-3.207v-3.207Zm32.07 32.07H103V77.344h-3.207V67.724Zm-6.415 6.413h-3.207v3.207h3.207v-3.207Zm-19.241 3.207H70.93v3.207h3.207v-3.207Zm6.414 0h-3.207V86.966H86.966V77.345h-6.414ZM10 80.552h22.448V103H10V80.552Zm6.414 3.207h-3.207V99.793H29.24V83.76H16.414Zm64.138-3.207h3.207v3.207h-3.207v-3.207Zm-64.138 6.413H26.035V96.587H16.414v-9.62Zm19.241 0h3.207v6.414h-3.207v-6.413Zm6.414 12.828h3.207V103h-3.207v-3.207Z" fill="#141422"/><path d="M65.068 53.042c-.403-.968-1.219-2.014-1.858-2.344.456.882.772 1.83.938 2.81l.002.015c-1.048-2.609-2.822-3.663-4.273-5.954a11.08 11.08 0 0 1-.218-.355 2.928 2.928 0 0 1-.102-.19 1.685 1.685 0 0 1-.144-.383.024.024 0 0 0-.015-.008.032.032 0 0 0-.017 0l-.005.002-.007.004.004-.006c-2.326 1.361-3.116 3.882-3.187 5.144a4.633 4.633 0 0 0-2.55.982 2.782 2.782 0 0 0-.239-.181 4.295 4.295 0 0 1-.026-2.264c-.854.414-1.613 1-2.229 1.723h-.004c-.367-.465-.341-1.999-.32-2.32a1.656 1.656 0 0 0-.31.165c-.323.231-.626.49-.904.775a8.089 8.089 0 0 0-.866 1.039v.001-.002a7.821 7.821 0 0 0-1.242 2.806l-.013.06c-.017.082-.08.49-.091.579l-.002.02a8.82 8.82 0 0 0-.15 1.277v.048a9.26 9.26 0 0 0 18.385 1.566c.016-.12.029-.238.042-.359a9.523 9.523 0 0 0-.6-4.652v.002ZM54.395 60.29c.043.02.083.043.128.063l.006.004a5.116 5.116 0 0 1-.134-.067Zm9.755-6.765v-.01l.001.01h-.001Z" fill="url(#a)"/><path d="M65.068 53.042c-.403-.968-1.219-2.014-1.858-2.344.456.883.772 1.83.938 2.81v.009l.002.01a8.387 8.387 0 0 1-.289 6.25c-1.061 2.277-3.629 4.611-7.65 4.497-4.344-.123-8.172-3.348-8.886-7.57-.13-.666 0-1.003.065-1.544-.089.42-.139.848-.148 1.277v.048a9.26 9.26 0 0 0 18.385 1.566c.016-.12.029-.238.042-.358a9.525 9.525 0 0 0-.6-4.652h-.001Z" fill="url(#b)"/><path d="M65.068 53.042c-.403-.968-1.219-2.014-1.858-2.344.456.883.772 1.83.938 2.81v.009l.002.01a8.387 8.387 0 0 1-.289 6.25c-1.061 2.277-3.629 4.611-7.65 4.497-4.344-.123-8.172-3.348-8.886-7.57-.13-.666 0-1.003.065-1.544-.089.42-.139.848-.148 1.277v.048a9.26 9.26 0 0 0 18.385 1.566c.016-.12.029-.238.042-.358a9.525 9.525 0 0 0-.6-4.652h-.001Z" fill="url(#c)"/><path d="m60.566 54.129.058.042a5.043 5.043 0 0 0-.86-1.121c-2.88-2.88-.755-6.241-.397-6.413l.004-.006c-2.326 1.362-3.116 3.883-3.187 5.145.108-.008.215-.017.325-.017a4.673 4.673 0 0 1 4.057 2.37Z" fill="url(#d)"/><path d="M56.514 54.705c-.015.23-.83 1.025-1.114 1.025-2.633 0-3.06 1.593-3.06 1.593.116 1.341 1.05 2.446 2.18 3.03.052.026.105.05.157.074.09.04.181.077.272.111a4.12 4.12 0 0 0 1.205.233c4.616.216 5.51-5.52 2.179-7.185a3.196 3.196 0 0 1 2.233.542 4.673 4.673 0 0 0-4.058-2.37c-.11 0-.217.01-.325.017a4.633 4.633 0 0 0-2.55.982c.142.12.301.28.637.61.628.62 2.24 1.26 2.243 1.336l.001.002Z" fill="url(#e)"/><path d="M56.514 54.705c-.015.23-.83 1.025-1.114 1.025-2.633 0-3.06 1.593-3.06 1.593.116 1.341 1.05 2.446 2.18 3.03.052.026.105.05.157.074.09.04.181.077.272.111a4.12 4.12 0 0 0 1.205.233c4.616.216 5.51-5.52 2.179-7.185a3.196 3.196 0 0 1 2.233.542 4.673 4.673 0 0 0-4.058-2.37c-.11 0-.217.01-.325.017a4.633 4.633 0 0 0-2.55.982c.142.12.301.28.637.61.628.62 2.24 1.26 2.243 1.336l.001.002Z" fill="url(#f)"/><path d="M53.202 52.452c.075.047.137.09.192.127a4.295 4.295 0 0 1-.026-2.264c-.855.414-1.614 1-2.23 1.723.046-.001 1.389-.025 2.064.414Z" fill="url(#g)"/><path d="M47.323 56.705c.715 4.222 4.542 7.447 8.886 7.57 4.021.113 6.59-2.222 7.65-4.498a8.387 8.387 0 0 0 .289-6.25v-.009c0-.007-.002-.01 0-.009l.002.016c.328 2.145-.763 4.222-2.469 5.629l-.005.012c-3.324 2.707-6.504 1.633-7.146 1.195a4.961 4.961 0 0 1-.135-.067c-1.938-.927-2.738-2.69-2.566-4.206a2.379 2.379 0 0 1-2.194-1.38 3.493 3.493 0 0 1 3.405-.136 4.611 4.611 0 0 0 3.476.136c-.003-.075-1.615-.716-2.243-1.335-.336-.331-.495-.49-.637-.61a2.78 2.78 0 0 0-.238-.181c-.055-.038-.117-.078-.192-.127-.675-.44-2.018-.415-2.063-.414h-.004c-.367-.465-.341-2-.32-2.32a1.66 1.66 0 0 0-.31.165c-.323.23-.626.49-.904.775-.319.32-.61.667-.87 1.036v.002-.002a7.82 7.82 0 0 0-1.242 2.805c-.005.019-.334 1.457-.172 2.203h.002Z" fill="url(#h)"/><path d="M59.763 53.05c.339.331.628.71.86 1.122.052.039.099.077.14.114 2.099 1.935.999 4.67.917 4.864 1.705-1.405 2.795-3.483 2.468-5.629-1.047-2.611-2.824-3.665-4.272-5.956a11.265 11.265 0 0 1-.218-.355 2.923 2.923 0 0 1-.102-.191 1.686 1.686 0 0 1-.144-.383.024.024 0 0 0-.015-.008.035.035 0 0 0-.018 0l-.004.003-.007.004c-.358.17-2.483 3.533.397 6.41l-.002.004Z" fill="url(#i)"/><path d="M60.762 54.287a1.93 1.93 0 0 0-.139-.114l-.057-.042a3.196 3.196 0 0 0-2.233-.542c3.33 1.665 2.437 7.4-2.179 7.184a4.12 4.12 0 0 1-1.205-.232 4.906 4.906 0 0 1-.428-.186l.007.004c.643.44 3.822 1.513 7.146-1.195l.005-.012c.083-.193 1.183-2.929-.917-4.864v-.001Z" fill="url(#j)"/><path d="M52.34 57.321s.427-1.593 3.06-1.593c.285 0 1.1-.794 1.114-1.025a4.612 4.612 0 0 1-3.476-.136 3.492 3.492 0 0 0-3.405.136 2.378 2.378 0 0 0 2.194 1.38c-.172 1.514.629 3.278 2.566 4.206.043.02.084.043.128.063-1.13-.585-2.065-1.69-2.181-3.03Z" fill="url(#k)"/><path d="M65.068 53.042c-.403-.968-1.219-2.014-1.858-2.344.456.882.772 1.83.938 2.81l.002.015c-1.048-2.609-2.822-3.663-4.273-5.954a11.265 11.265 0 0 1-.218-.355 2.923 2.923 0 0 1-.102-.19 1.685 1.685 0 0 1-.144-.383.024.024 0 0 0-.015-.008.033.033 0 0 0-.017 0l-.005.002-.007.004.004-.006c-2.326 1.361-3.116 3.882-3.187 5.144.108-.008.215-.017.325-.017a4.673 4.673 0 0 1 4.057 2.37 3.197 3.197 0 0 0-2.233-.542c3.331 1.665 2.437 7.4-2.178 7.184a4.117 4.117 0 0 1-1.205-.232 4.828 4.828 0 0 1-.429-.186l.007.004a4.825 4.825 0 0 1-.135-.067c.043.02.084.043.128.063-1.13-.584-2.064-1.69-2.18-3.03 0 0 .427-1.593 3.06-1.593.285 0 1.099-.794 1.114-1.024-.004-.076-1.616-.717-2.244-1.336-.336-.331-.495-.49-.636-.61a2.765 2.765 0 0 0-.24-.181 4.293 4.293 0 0 1-.025-2.264c-.855.414-1.614 1-2.23 1.723h-.004c-.366-.465-.34-1.999-.32-2.32a1.653 1.653 0 0 0-.309.165 6.75 6.75 0 0 0-.905.775 8.08 8.08 0 0 0-.866 1.039v.001-.002a7.82 7.82 0 0 0-1.242 2.805l-.013.062c-.017.081-.095.495-.106.584-.072.427-.117.858-.137 1.29v.049a9.261 9.261 0 0 0 18.386 1.566l.042-.359a9.525 9.525 0 0 0-.6-4.652Zm-.919.475.002.01-.002-.01Z" fill="url(#l)"/><defs><radialGradient id="b" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(63.247 48.782) scale(19.3057)"><stop offset=".129" stop-color="#FFBD4F"/><stop offset=".186" stop-color="#FFAC31"/><stop offset=".247" stop-color="#FF9D17"/><stop offset=".283" stop-color="#FF980E"/><stop offset=".403" stop-color="#FF563B"/><stop offset=".467" stop-color="#FF3750"/><stop offset=".71" stop-color="#F5156C"/><stop offset=".782" stop-color="#EB0878"/><stop offset=".86" stop-color="#E50080"/></radialGradient><radialGradient id="c" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(56.08 56.666) scale(19.3057)"><stop offset=".3" stop-color="#960E18"/><stop offset=".351" stop-color="#B11927" stop-opacity=".74"/><stop offset=".435" stop-color="#DB293D" stop-opacity=".343"/><stop offset=".497" stop-color="#F5334B" stop-opacity=".094"/><stop offset=".53" stop-color="#FF3750" stop-opacity="0"/></radialGradient><radialGradient id="d" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(58.468 44.481) scale(13.9847)"><stop offset=".132" stop-color="#FFF44F"/><stop offset=".252" stop-color="#FFDC3E"/><stop offset=".506" stop-color="#FF9D12"/><stop offset=".526" stop-color="#FF980E"/></radialGradient><radialGradient id="e" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(53.929 61.684) scale(9.19171)"><stop offset=".353" stop-color="#3A8EE6"/><stop offset=".472" stop-color="#5C79F0"/><stop offset=".669" stop-color="#9059FF"/><stop offset="1" stop-color="#C139E6"/></radialGradient><radialGradient id="f" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(4.73773 -1.14544 1.34103 5.5467 57.013 55.01)"><stop offset=".206" stop-color="#9059FF" stop-opacity="0"/><stop offset=".278" stop-color="#8C4FF3" stop-opacity=".064"/><stop offset=".747" stop-color="#7716A8" stop-opacity=".45"/><stop offset=".975" stop-color="#6E008B" stop-opacity=".6"/></radialGradient><radialGradient id="g" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(55.84 48.065) scale(6.61363)"><stop stop-color="#FFE226"/><stop offset=".121" stop-color="#FFDB27"/><stop offset=".295" stop-color="#FFC82A"/><stop offset=".502" stop-color="#FFA930"/><stop offset=".732" stop-color="#FF7E37"/><stop offset=".792" stop-color="#FF7139"/></radialGradient><radialGradient id="h" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(61.097 43.764) scale(28.2178)"><stop offset=".113" stop-color="#FFF44F"/><stop offset=".456" stop-color="#FF980E"/><stop offset=".622" stop-color="#FF5634"/><stop offset=".716" stop-color="#FF3647"/><stop offset=".904" stop-color="#E31587"/></radialGradient><radialGradient id="i" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(2.1701 20.56421 -13.49616 1.42422 58.751 45.329)"><stop stop-color="#FFF44F"/><stop offset=".06" stop-color="#FFE847"/><stop offset=".168" stop-color="#FFC830"/><stop offset=".304" stop-color="#FF980E"/><stop offset=".356" stop-color="#FF8B16"/><stop offset=".455" stop-color="#FF672A"/><stop offset=".57" stop-color="#FF3647"/><stop offset=".737" stop-color="#E31587"/></radialGradient><radialGradient id="j" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(55.84 50.454) scale(17.614)"><stop offset=".137" stop-color="#FFF44F"/><stop offset=".48" stop-color="#FF980E"/><stop offset=".592" stop-color="#FF5634"/><stop offset=".655" stop-color="#FF3647"/><stop offset=".904" stop-color="#E31587"/></radialGradient><radialGradient id="k" cx="0" cy="0" r="1" gradientUnits="userSpaceOnUse" gradientTransform="translate(60.38 51.41) scale(19.2794)"><stop offset=".094" stop-color="#FFF44F"/><stop offset=".231" stop-color="#FFE141"/><stop offset=".509" stop-color="#FFAF1E"/><stop offset=".626" stop-color="#FF980E"/></radialGradient><linearGradient id="a" x1="63.842" y1="49.59" x2="48.468" y2="64.423" gradientUnits="userSpaceOnUse"><stop offset=".048" stop-color="#FFF44F"/><stop offset=".111" stop-color="#FFE847"/><stop offset=".225" stop-color="#FFC830"/><stop offset=".368" stop-color="#FF980E"/><stop offset=".401" stop-color="#FF8B16"/><stop offset=".462" stop-color="#FF672A"/><stop offset=".534" stop-color="#FF3647"/><stop offset=".705" stop-color="#E31587"/></linearGradient><linearGradient id="l" x1="63.656" y1="49.512" x2="50.577" y2="62.593" gradientUnits="userSpaceOnUse"><stop offset=".167" stop-color="#FFF44F" stop-opacity=".8"/><stop offset=".266" stop-color="#FFF44F" stop-opacity=".634"/><stop offset=".489" stop-color="#FFF44F" stop-opacity=".217"/><stop offset=".6" stop-color="#FFF44F" stop-opacity="0"/></linearGradient></defs></svg>

- \ No newline at end of file

  diff --git a/browser/components/preferences/more-from-mozilla-qr-code-simple-cn.svg b/browser/components/preferences/more-from-mozilla-qr-code-simple-cn.svg

  deleted file mode 100644

  index 5052db9702..0000000000
@@ -354,15 +334,13 @@ 

   

     // These app marketplace icons are referenced based on the user's locale

     // in browser/components/newtab/content-src/aboutwelcome/components/MobileDownloads.jsx

- diff --git a/browser/components/newtab/lib/OnboardingMessageProvider.jsm b/browser/components/newtab/lib/OnboardingMessageProvider.jsm

- index 940332f27f..1f7378bbae 100644

+ diff -u a/browser/components/newtab/lib/OnboardingMessageProvider.jsm b/browser/components/newtab/lib/OnboardingMessageProvider.jsm

  --- a/browser/components/newtab/lib/OnboardingMessageProvider.jsm

  +++ b/browser/components/newtab/lib/OnboardingMessageProvider.jsm

- @@ -95,220 +95,6 @@ const ONBOARDING_MESSAGES = () => [

-        ],

+ @@ -649,321 +649,6 @@

       },

     },

- -  {

+    {

  -    id: "PB_NEWTAB_FOCUS_PROMO",

  -    type: "default",

  -    template: "pb_newtab",
@@ -443,10 +421,6 @@ 

  -                          alt_text: {

  -                            string_id: "spotlight-focus-promo-qr-code",

  -                          },

- -                          image_overrides: {

- -                            de:

- -                              "chrome://browser/content/assets/klar-qr-code.svg",

- -                          },

  -                        },

  -                        marketplace_buttons: ["ios", "android"],

  -                      },
@@ -469,7 +443,9 @@ 

  -      ],

  -      lifetime: 12,

  -    },

- -    targeting: "!(region in [ 'DE', 'AT', 'CH'] && localeLanguageCode == 'en')",

+ -    // Exclude the next 2 messages: 1) Klar for en 2) Klar for de

+ -    targeting:

+ -      "!(region in [ 'DE', 'AT', 'CH'] && localeLanguageCode == 'en') && localeLanguageCode != 'de'",

  -  },

  -  {

  -    id: "PB_NEWTAB_KLAR_PROMO",
@@ -549,6 +525,109 @@ 

  -                        QR_code: {

  -                          image_url:

  -                            "chrome://browser/content/assets/klar-qr-code.svg",

+ -                          alt_text: "Scan the QR code to get Firefox Klar",

+ -                        },

+ -                        marketplace_buttons: ["ios", "android"],

+ -                      },

+ -                    },

+ -                  },

+ -                },

+ -              ],

+ -            },

+ -          },

+ -        },

+ -      },

+ -    },

+ -    priority: 2,

+ -    frequency: {

+ -      custom: [

+ -        {

+ -          cap: 3,

+ -          period: 604800000, // Max 3 per week

+ -        },

+ -      ],

+ -      lifetime: 12,

+ -    },

+ -    targeting: "region in [ 'DE', 'AT', 'CH'] && localeLanguageCode == 'en'",

+ -  },

+ -  {

+ -    id: "PB_NEWTAB_KLAR_PROMO_DE",

+ -    type: "default",

+ -    template: "pb_newtab",

+ -    groups: ["pbNewtab"],

+ -    content: {

+ -      infoBody: "fluent:about-private-browsing-info-description-simplified",

+ -      infoEnabled: true,

+ -      infoIcon: "chrome://global/skin/icons/indicator-private-browsing.svg",

+ -      infoLinkText: "fluent:about-private-browsing-learn-more-link",

+ -      infoTitle: "",

+ -      infoTitleEnabled: false,

+ -      promoEnabled: true,

+ -      promoType: "FOCUS",

+ -      promoHeader: "fluent:about-private-browsing-focus-promo-header-c",

+ -      promoImageLarge: "chrome://browser/content/assets/focus-promo.png",

+ -      promoLinkText: "fluent:about-private-browsing-focus-promo-cta",

+ -      promoLinkType: "button",

+ -      promoSectionStyle: "below-search",

+ -      promoTitle: "fluent:about-private-browsing-focus-promo-text-c",

+ -      promoTitleEnabled: true,

+ -      promoButton: {

+ -        action: {

+ -          type: "SHOW_SPOTLIGHT",

+ -          data: {

+ -            content: {

+ -              id: "FOCUS_PROMO",

+ -              template: "multistage",

+ -              modal: "tab",

+ -              backdrop: "transparent",

+ -              screens: [

+ -                {

+ -                  id: "DEFAULT_MODAL_UI",

+ -                  content: {

+ -                    logo: {

+ -                      imageURL:

+ -                        "chrome://browser/content/assets/focus-logo.svg",

+ -                      height: "48px",

+ -                    },

+ -                    title: {

+ -                      string_id: "spotlight-focus-promo-title",

+ -                    },

+ -                    subtitle: {

+ -                      string_id: "spotlight-focus-promo-subtitle",

+ -                    },

+ -                    dismiss_button: {

+ -                      action: {

+ -                        navigate: true,

+ -                      },

+ -                    },

+ -                    ios: {

+ -                      action: {

+ -                        data: {

+ -                          args:

+ -                            "https://app.adjust.com/a8bxj8j?campaign=firefox-desktop&adgroup=pb&creative=focus-omc172&redirect=https%3A%2F%2Fapps.apple.com%2Fde%2Fapp%2Fklar-by-firefox%2Fid1073435754",

+ -                          where: "tabshifted",

+ -                        },

+ -                        type: "OPEN_URL",

+ -                        navigate: true,

+ -                      },

+ -                    },

+ -                    android: {

+ -                      action: {

+ -                        data: {

+ -                          args:

+ -                            "https://app.adjust.com/a8bxj8j?campaign=firefox-desktop&adgroup=pb&creative=focus-omc172&redirect=https%3A%2F%2Fplay.google.com%2Fstore%2Fapps%2Fdetails%3Fid%3Dorg.mozilla.klar",

+ -                          where: "tabshifted",

+ -                        },

+ -                        type: "OPEN_URL",

+ -                        navigate: true,

+ -                      },

+ -                    },

+ -                    tiles: {

+ -                      type: "mobile_downloads",

+ -                      data: {

+ -                        QR_code: {

+ -                          image_url:

+ -                            "chrome://browser/content/assets/klar-qr-code.svg",

  -                          alt_text: {

  -                            string_id: "spotlight-focus-promo-qr-code",

  -                          },
@@ -574,21 +653,19 @@ 

  -      ],

  -      lifetime: 12,

  -    },

- -    targeting: "region in [ 'DE', 'AT', 'CH'] && localeLanguageCode == 'en'",

+ -    targeting: "localeLanguageCode == 'de'",

  -  },

-    {

+ -  {

       id: "PB_NEWTAB_INFO_SECTION",

       template: "pb_newtab",

- 

- diff --git a/browser/components/newtab/lib/PanelTestProvider.jsm b/browser/components/newtab/lib/PanelTestProvider.jsm

- index a991581f7b..af57c3eea8 100644

+      content: {

+ diff -u a/browser/components/newtab/lib/PanelTestProvider.jsm b/browser/components/newtab/lib/PanelTestProvider.jsm

  --- a/browser/components/newtab/lib/PanelTestProvider.jsm

  +++ b/browser/components/newtab/lib/PanelTestProvider.jsm

- @@ -558,90 +558,6 @@ const MESSAGES = () => [

-      frequency: { lifetime: 3 },

+ @@ -557,87 +557,6 @@

       trigger: { id: "defaultBrowserCheck" },

     },

- -  {

+    {

  -    id: "PB_FOCUS_PROMO",

  -    groups: ["panel-test-provider"],

  -    template: "spotlight",
@@ -656,9 +733,6 @@ 

  -                  alt_text: {

  -                    string_id: "spotlight-focus-promo-qr-code",

  -                  },

- -                  image_overrides: {

- -                    de: "chrome://browser/content/assets/klar-qr-code.svg",

- -                  },

  -                },

  -                email: {

  -                  link_text: "Email yourself a link",
@@ -672,9 +746,10 @@ 

  -    },

  -    trigger: { id: "defaultBrowserCheck" },

  -  },

-    {

+ -  {

       id: "PB_NEWTAB_VPN_PROMO",

       template: "pb_newtab",

+      content: {

  diff --git a/browser/components/privatebrowsing/content/assets/focus-qr-code.svg b/browser/components/privatebrowsing/content/assets/focus-qr-code.svg

  deleted file mode 100644

  index f182567314..0000000000
@@ -961,46 +1036,56 @@ 

     </groupbox>

   

     <vbox id="hasFxaAccount">

- diff --git a/browser/locales/en-US/browser/policies/policies-descriptions.ftl b/browser/locales/en-US/browser/policies/policies-descriptions.ftl

- index dabfadc..3ce732e 100644

- --- a/browser/locales/en-US/browser/policies/policies-descriptions.ftl

- +++ b/browser/locales/en-US/browser/policies/policies-descriptions.ftl

- @@ -96,7 +96,7 @@ policy-ExtensionSettings = Manage all aspects of extension installation.

+ diff --git a/browser/locales/en-US/browser/branding/brandings.ftl b/browser/locales/en-US/browser/branding/brandings.ftl

+ index efba683d66..9fe12b80fa 100644

+ --- a/browser/locales/en-US/browser/branding/brandings.ftl

+ +++ b/browser/locales/en-US/browser/branding/brandings.ftl

+ @@ -15,28 +15,28 @@

+  ## https://mozilla-l10n.github.io/styleguides/mozilla_general/#brands-copyright-and-trademark

   

-  policy-ExtensionUpdate = Enable or disable automatic extension updates.

+  -facebook-container-brand-name = Facebook Container

+ --lockwise-brand-name = Firefox Lockwise

+ +-lockwise-brand-name = Iceweasel Lockwise

+  -lockwise-brand-short-name = Lockwise

+ --monitor-brand-name = Firefox Monitor

+ +-monitor-brand-name = Iceweasel Monitor

+  -monitor-brand-short-name = Monitor

+  -pocket-brand-name = Pocket

+ --send-brand-name = Firefox Send

+ --screenshots-brand-name = Firefox Screenshots

+ +-send-brand-name = Iceweasel Send

+ +-screenshots-brand-name = Iceweasel Screenshots

+  -mozilla-vpn-brand-name = Mozilla VPN

+ --profiler-brand-name = Firefox Profiler

+ --translations-brand-name = Firefox Translations

+ +-profiler-brand-name = Iceweasel Profiler

+ +-translations-brand-name = Iceweasel Translations

+  -rally-brand-name = Mozilla Rally

+  -rally-short-name = Rally

+ --focus-brand-name = Firefox Focus

+ +-focus-brand-name = Iceweasel Focus

   

- -policy-FirefoxHome = Configure Firefox Home.

- +policy-FirefoxHome = Configure Iceweasel Home.

+ -# “Suggest” can be localized, “Firefox” must be treated as a brand

+ +# “Suggest” can be localized, “Iceweasel” must be treated as a brand

+  # and kept in English.

+ --firefox-suggest-brand-name = Firefox Suggest

+ +-firefox-suggest-brand-name = Iceweasel Suggest

   

-  policy-FlashPlugin = Allow or deny usage of the Flash plugin.

+ -# ”Home" can be localized, “Firefox” must be treated as a brand

+ +# ”Home" can be localized, “Iceweasel” must be treated as a brand

+  # and kept in English.

+ --firefox-home-brand-name = Firefox Home

+ +-firefox-home-brand-name = Iceweasel Home

   

+ -# View" can be localized, “Firefox” must be treated as a brand

+ +# View" can be localized, “Iceweasel” must be treated as a brand

+  # and kept in English.

+ --firefoxview-brand-name = Firefox View

+ +-firefoxview-brand-name = Iceweasel View

  diff --git a/browser/locales/en-US/browser/preferences/preferences.ftl b/browser/locales/en-US/browser/preferences/preferences.ftl

  index 1b29e8d..6f7566c 100644

  --- a/browser/locales/en-US/browser/preferences/preferences.ftl

  +++ b/browser/locales/en-US/browser/preferences/preferences.ftl

- @@ -550,7 +550,7 @@ home-restore-defaults =

-  # "Firefox" should be treated as a brand and kept in English,

-  # while "Home" and "(Default)" can be localized.

-  home-mode-choice-default =

- -    .label = Firefox Home (Default)

- +    .label = Iceweasel Home (Default)

-  

-  home-mode-choice-custom =

-      .label = Custom URLs…

- @@ -577,10 +577,10 @@ choose-bookmark =

-      .label = Use Bookmark…

-      .accesskey = B

-  

- -## Home Section - Firefox Home Content Customization

- +## Home Section - Iceweasel Home Content Customization

-  

- -home-prefs-content-header = Firefox Home Content

- -home-prefs-content-description = Choose what content you want on your Firefox Home screen.

- +home-prefs-content-header = Iceweasel Home Content

- +home-prefs-content-description = Choose what content you want on your Iceweasel Home screen.

-  

-  home-prefs-search-header =

-      .label = Web Search

  @@ -714,16 +714,6 @@ sync-signedout-account-signin2 =

       .label = Sign in to { -sync-brand-short-name }…

       .accesskey = i
@@ -1066,10 +1151,10 @@ 

                 </p>

               </div>

               <a target="_blank" id="get-vpn-link" data-l10n-id="get-vpn-link"></a>

- diff --git a/browser/components/protections/content/vpn-card.js b/browser/components/protections/content/vpn-card.js

+ diff --git a/browser/components/protections/content/vpn-card.mjs b/browser/components/protections/content/vpn-card.mjs

  index 2417f1a641..698c48ccc3 100644

- --- a/browser/components/protections/content/vpn-card.js

- +++ b/browser/components/protections/content/vpn-card.js

+ --- a/browser/components/protections/content/vpn-card.mjs

+ +++ b/browser/components/protections/content/vpn-card.mjs

  @@ -23,22 +23,6 @@ export default class VPNCard {

       vpnLink.addEventListener("click", () => {

         this.doc.sendTelemetryEvent("click", "vpn_card_link");

file modified
+268 -156
@@ -14,6 +14,7 @@ 

  # Contributor: Figue <ffigue at gmail>

  # Contributor: evr <evanroman at gmail>

  # Contributor: Muhammad 'MJ' Jassim <UnbreakableMJ@gmail.com>

+ # Contributor: vando <facundo@esdebian.org>

  # Contributor: taro-k <taro-k@movasense_com>

  # Contributor: Michał Masłowski <mtjm@mtjm.eu>

  # Contributor: Luke R. <g4jc@openmailbox.org>
@@ -23,18 +24,25 @@ 

  

  

  # parabola changes and rationale

- # FSDG:

+ # libre:

  #  - Modify the addons pages to use GNU IceCat plugins sources, rather

  #    than addons.mozilla.org, which hosts non-free addons

  #  - Disable EME, which is implemented via the non-free libWideVine CDM

  #  - Disable Normandy that let Mozilla push messages with recommendations

  #    of nonfree software

  #  - Make Remote Settings work completely offline using local data

+ #  - Use system python libs. The arch package uses 'pip' to download

+ #    dependencies from the internet at build-time, despite that those needed

+ #    dependencies are already packaged in the arch repos. So strictly-speaking,

+ #    the package is not built from source, as some sources will be missing

+ #    from the published source package, and will not be required as makedepends.

  #

  # technical:

  #  - build i686 with GCC instead of clang

  #  - disable rust-SIMD, LTO, PGO, and skip profiling build for armv7h and i686

- #  - allow skipping profiling build for x86_64 (_x86_64_skip_pgo)

+ #  - allow skipping profiling build for x86_64 (_x86_64_skip_pgo).

+ #    this is to avoid OOM problems, and occasional deadlocks in some versions,

+ #    which expect active netwokring or internet access at build time.

  #  - prefer as many system libs as possible, over their vendored couterparts

  #  - Rebrand to Iceweasel, per the mozilla trademark policy, due to the FSDG changes

  #  - set user profile directory to ~/.mozilla/iceweasel
@@ -46,21 +54,23 @@ 

  #  - do not compile/upload remote debug symbols

  

  

- # NOTE: This PKGBUILD is kept in-sync with arch{,arm,32}, as closely as possible,

+ # NOTE: This PKGBUILD is kept in-sync, as closely as possible,

+ #       with arch{,arm,32} (firefox), and parabola {iceweasel,icecat},

  #       for the sake of documentation and cleaner diffs.

  #       That also helps to identify which changes were made by Parabola vs upstream.

  #       Therefore, this PKGBUILD may declare blacklisted dependencies, non-free sources,

  #       or include code for anti-features; but those will be filtered-out subsequently.

  #       Any code which implements an anti-feature should be commented-out;

  #       and include an 'anti-feature' comment, for clarity.

- #       Any blacklisted dependencies and non-free sources should be filtered.

+ #       Any blacklisted dependencies and non-free sources should be filtered,

+ #       and include a 'non-free' comment, for clarity.

  #       Without those over-rides, the resulting program may not be FSDG-fit.

  #       Do not circumvent those over-rides, if compiling for the Parabola repos.

  

  

  pkgname=iceweasel

  epoch=1

- pkgver=102.0

+ pkgver=107.0

  pkgrel=1

  pkgrel+=.parabola1

  _brandingver=102.0-1
@@ -68,24 +78,24 @@ 

  arch=(x86_64)

  arch+=(armv7h i686)

  license=(MPL GPL LGPL)

- url="https://wiki.parabola.nu/Iceweasel"

+ url=https://wiki.parabola.nu/Iceweasel

  depends=(gtk3 libxt mime-types dbus-glib ffmpeg nss ttf-font libpulse)

  makedepends=(unzip zip diffutils yasm mesa imake inetutils xorg-server-xvfb

-              autoconf2.13 rust clang llvm jack nodejs cbindgen nasm

-              python-setuptools python-zstandard lld dump_syms

-              wasi-compiler-rt wasi-libc wasi-libc++ wasi-libc++abi)

- makedepends+=(quilt libxslt imagemagick git jq python-jsonschema)

- makedepends_i686=(gcc10)

+              autoconf2.13 rust clang llvm jack nodejs cbindgen nasm python

+              lld dump_syms wasi-compiler-rt wasi-libc wasi-libc++ wasi-libc++abi

+              )

+ makedepends+=(python-setuptools python-zstandard python-typing-extensions

+               quilt libxslt imagemagick git jq python-jsonschema)

  optdepends=('networkmanager: Location detection via available WiFi networks'

              'libnotify: Notification integration'

              'pulseaudio: Audio support'

              'speech-dispatcher: Text-to-Speech'

              'hunspell-en_US: Spell checking, American English'

              'xdg-desktop-portal: Screensharing with Wayland')

+ # provides=('firefox') # TODO: redmine #2164 - currently conflicts with 'your-freedom'

  replaces=('firefox')

- options=(!emptydirs !makeflags !strip !lto !debug) # FIXME: can we still make debug package?

+ options=(!emptydirs !makeflags !strip !lto !debug)

  source=(https://archive.mozilla.org/pub/firefox/releases/$pkgver/source/firefox-$pkgver.source.tar.xz{,.asc}

-         zstandard-0.18.0.diff

          $pkgname.desktop identity-icons-brand.svg)

  source=(${source[*]/identity-icons-brand.svg/})

  source+=(https://repo.parabola.nu/other/iceweasel/${pkgname}_${_brandingver}.branding.tar.xz{,.sig}
@@ -94,27 +104,35 @@ 

           9003-FSDG-urihandlers.patch

           9004-FSDG-misc.patch

           process-json-files.py

-          vendor.js.in)

+          vendor.js.in

+          zstandard-0.18.0.diff

+          0001-libwebrtc-screen-cast-sync.patch)

  source_armv7h=(build-arm-libopus.patch)

- source_i686=('avoid-libxul-OOM-python-check.patch'

-              'rust-static-disable-network-test-on-static-libraries.patch'

-              'firefox-99.0.1-fdlibm-double.patch')

- sha256sums=('01797f04bd8d65f4c7f628d7ce832bf52a0874433886e4d0d78ef33c1ca66abf'

+ source_i686=(avoid-libxul-OOM-python-check.patch

+              rust-static-disable-network-test-on-static-libraries.patch

+              firefox-106.0.1-fdlibm.patch

+              simd_avx2.patch

+              fix-i686-build-moz-1792159.patch)

+ sha256sums=('8a562e5a397b57e9bf383c2988308ab494c5d28844e792c658fedea27756584a'

              'SKIP'

-             'a6857ad2f2e2091c6c4fdcde21a59fbeb0138914c0e126df64b50a5af5ff63be'

              '9cdc2602661717712092d28bb494e5b48e518cb930898aca85eaf21f91f7ef58')

  sha256sums+=('d29c194ed7b3b4fa0f511866723118938c2be40077b4e9aadf8b3e6bfff91049'

               'SKIP'

-              '77b79ce95a560d371b08925a4f8c005b38e45936f61c8e4a4378d5ac56313cba'

+              'dda068f422258dfde77af4c4052e738a7e6eb2a39b882a61bedafec3bc784171'

               'a2c71759290dd48c87bf8aacb681040dcaefdabe0d57317de361d2d2d509664b'

               'e192458a2a9878483984e1400bb3c66df369adfbf6f144b90445f80973c32ed1'

-              'a6a0bf8296d42a0ea2664efd45e9131df1f19fc6199724ec78d66119589850dd'

+ #              'e66bc271b35e0eabe1e8a67802ce95ea3742d73006b8ad37bbce225457366458'

+              '0c5333c4fc28ba9ca5b4d00127918d662fe8c570d4ebc0a64e5174e0ef41ae01'

               '6a0250c20a6f4cbf0ff1320c194342fe691ece56959d87de41be8f82a8feca65'

-              'c93ce98e1cb64033079343ff1f3037fab6a3bc6d3eb5bc14c5edb70e2d45965d')

+              '5095942e37c4d9814788b7ac5a48661fbcf1d2ced56a02b74e5a58e7e8a5bd45'

+              'a6857ad2f2e2091c6c4fdcde21a59fbeb0138914c0e126df64b50a5af5ff63be'

+              '5c164f6dfdf2d97f3f317e417aaa2e6ae46a9b3a160c3162d5073fe39d203286')

  sha256sums_armv7h=('2d4d91f7e35d0860225084e37ec320ca6cae669f6c9c8fe7735cdbd542e3a7c9')

  sha256sums_i686=('2f0c81a38c4578f68f5456b618fe84a78974072821488173eb55e0e72287e353'

                   '10c5276eab2e87f400a6ec15d7ffbef3b0407ee888dea36f1128927ca55b9041'

-                  '62695e56daf8c0b8bb921980d475b3fd169b9134188ad9ffaeb9cd660589c23d')

+                  'ddc0945f2414828668dd922b6b8203f7fb54d7b1f0aac3e18299bccb5c2facab'

+                  'e68f8a9858f14a75813df608510e1f8143fd6eb1fcf233df8239d16d935e80f8'

+                  '2fb39374fd3d80eea9e346032a2a4b2bc2e357dee7380855b24bcf19b1335d06')

  validpgpkeys=('14F26682D0916CDD81E37B6D61B7B526D98F0353') # Mozilla Software Releases <release@mozilla.com>

  validpgpkeys+=('BFA8008A8265677063B11BF47171986E4B745536') # Andreas Grapentin

  validpgpkeys+=('3954A7AB837D0EA9CFA9798925DB7D9B5A8D4B40') # bill-auger
@@ -132,9 +150,28 @@ 

  # _mozilla_api_key=e05d56db0a694edc8b5aaebda3f2db6a                          # anti-feature

  

  

+ ## global tweaks and transient hacks ##

+ 

  # disable PGO for 32-bit arches

- _should_skip_pgo=0 # for x86_64

- [[ "${CARCH}" != 'armv7h' && "${CARCH}" != 'i686' ]] || _should_skip_pgo=1

+ _should_skip_pgo=0 # for x86_64 (try '1' if the build hangs indefinitely)

+ 

+ # makedepends+=( python-pydantic=1.9.2 ) # configure error: "pydantic 1.10.2 has requirement typing-extensions>=4.1.0, but you have typing-extensions 3.10.0.0. - ('typing-extensions' is vendored; but 'python-pydantic' is not)"

+ 

+ case "${CARCH}" in

+ armv7h)

+   _should_skip_pgo=1

+ 

+   makedepends=( ${makedepends[*]/wasi*/} ) # armv7h has no wasi compiler

+   ;;

+ i686)

+   _should_skip_pgo=1

+ 

+   makedepends=( ${makedepends[*]/wasi-compiler-rt/wasi-compiler-rt=13.0.1-1.0} ) # dustbin

+   makedepends=( ${makedepends[*]/wasi-libc++*/}                                )

+   makedepends+=( wasi-libc++=13.0.1-1.0 wasi-libc++abi=13.0.1-1.0              ) # dustbin

+   makedepends+=( llvm13                                                        ) # rustup: error while loading shared libraries: libLLVM-13.so: cannot open shared object file: No such file or directory

+   ;;

+ esac

  

  

  ## helpers ##
@@ -144,6 +181,17 @@ 

  

    echo "Checking build configuration..."

  

+   # Each of the [ARCH-SPECIFIC CONFIG] branches in prepare(), should have prepared a

+   # $srcdir/mozconfig file with any arch-specific changes to the Arch x86_64 PKGBUILD.

+   # Finally, that file should have been copied to $srcdir/firefox-$pkgver/.mozconfig

+   grep '^ac_add_options --with-distribution-id=nu.parabola' .mozconfig &> /dev/null || \

+   ! echo "cannot continue without a .mozconfig file"                                || return 1

+ 

+   if ! [[ "${CARCH}" =~ ^(aarch64|armv7h)$ ]] # ARM has no --disable-eme option

+   then grep '^ac_add_options --disable-eme' .mozconfig &> /dev/null   || \

+        ! echo ".mozconfig file was not properly treated per the FSDG" || return 1

+   fi

+ 

    # Configure produces mozinfo.json that reflects current configuration.

    # See build/docs/mozinfo.rst

    ./mach configure
@@ -157,7 +205,9 @@ 

    local antifeatures=()

    echo "obj_directory is: ${obj_directory}"

    for key in ${antifeature_keys[@]}

-   do  jq -e "${key} != false" "${obj_directory}"/mozinfo.json && antifeatures+=(${key})

+   do  if   jq -e "${key} != false" "${obj_directory}"/mozinfo.json &> /dev/null

+       then antifeatures+=(${key})

+       fi

    done

    if   (( ${#antifeatures[@]} ))

    then echo "Some anti-features are not disabled in build configuration files, aborting:"
@@ -171,6 +221,8 @@ 

  _check_patching() {

    pushd "${srcdir}"/firefox-${pkgver} > /dev/null

  

+   echo "verifying libre patching"

+ 

    # URI protocol handlers

    local uri_handlers=uriloader/exthandler/HandlerList.jsm

    local webmails='google|yahoo'
@@ -196,9 +248,32 @@ 

    mkdir mozbuild

    cd firefox-$pkgver

  

+   ## technical patching ##

+ 

    # Unbreak build with python-zstandard 0.18.0

+   echo "applying zstandard-0.18.0.diff"

    patch -Np1 -i ../zstandard-0.18.0.diff

  

+   # https://bugs.archlinux.org/task/76231

+   # https://bugzilla.mozilla.org/show_bug.cgi?id=1790496

+   # https://src.fedoraproject.org/rpms/firefox/blob/rawhide/f/libwebrtc-screen-cast-sync.patch

+   patch -Np1 -i ../0001-libwebrtc-screen-cast-sync.patch

+ 

+   case ${CARCH} in

+   aarch64|armv7h)

+     # Error: immediate expression requires a # prefix -- `pld [r0,1792]'

+     #        mozilla #1787405 and #1791267

+     sed -i "s|# 'LIBYUV_DISABLE_NEON',|'LIBYUV_DISABLE_NEON',|" media/libyuv/libyuv/libyuv.gyp

+     ;;

+   i686)

+     ;;

+   x86_64)

+     ;;

+   esac

+ 

+ 

+   ## general configuration ##

+ 

    # echo -n "$_google_api_key" >google-api-key   # anti-feature

    # echo -n "$_mozilla_api_key" >mozilla-api-key # anti-feature

  
@@ -217,15 +292,15 @@ 

  ac_add_options --with-wasi-sysroot=/usr/share/wasi-sysroot

  

  # Branding

- ac_add_options --disable-official-branding

+ ac_add_options --disable-official-branding                 # branding over-ride

  ac_add_options --enable-update-channel=release

- ac_add_options --with-distribution-id=nu.parabola

- ac_add_options --with-branding=browser/branding/${pkgname}

- ac_add_options --with-app-name=${pkgname}

- ac_add_options --with-app-basename=${pkgname}

+ ac_add_options --with-distribution-id=nu.parabola          # branding over-ride

+ ac_add_options --with-branding=browser/branding/${pkgname} # branding over-ride

+ ac_add_options --with-app-name=${pkgname}                  # branding over-ride

+ ac_add_options --with-app-basename=${pkgname}              # branding over-ride

  ac_add_options --with-unsigned-addon-scopes=app,system

  ac_add_options --allow-addon-sideload

- # export MOZILLA_OFFICIAL=1 # branding over-ride

+ # export MOZILLA_OFFICIAL=1                                # branding over-ride

  export MOZ_APP_REMOTINGNAME=${pkgname//-/}

  export MOZ_TELEMETRY_REPORTING=

  export MOZ_REQUIRE_SIGNING=
@@ -242,55 +317,76 @@ 

  # Features

  ac_add_options --enable-alsa

  ac_add_options --enable-jack

- ac_add_options --disable-crashreporter

+ ac_add_options --disable-crashreporter # anti-feature

  ac_add_options --disable-updater

  ac_add_options --disable-tests

- ac_add_options --disable-eme

+ ac_add_options --disable-eme           # anti-feature

  END

  

  

-   # FIXME: FTBS with cbindgen > 0.23 (currently 0.24)

-   # https://bugzilla.mozilla.org/show_bug.cgi?id=1773259

-   sed -i '/const uint64_t ROOT_CLIP_CHAIN = ~0;/d' gfx/webrender_bindings/webrender_ffi.h

- 

- 

    ## [ARCH-SPECIFIC CONFIG] ##

  

    case ${CARCH} in

-     armv7h)

-       sed -i '

-         /--enable-hardening/d

-         /--enable-optimize/d

-         /--enable-rust-simd/d

-         s|--with-wasi-sysroot=/usr/share/wasi-sysroot|--without-wasm-sandboxed-libraries|

-       ' ../mozconfig

- 

-       cat >>../mozconfig <<END

- export CC=clang

- export CXX=clang++

- ac_add_options --disable-elf-hack

- 

- # https://bugzilla.redhat.com/show_bug.cgi?id=1641623

- ac_add_options --disable-av1

- ac_add_options --enable-optimize="-g0 -O2"

- mk_add_options MOZ_MAKE_FLAGS='-j1'

- END

- 

-       # mozbuild.configure.options.InvalidOptionError: --disable-eme is not available in this configuration

-       # EME is disabled anyway in the built package, but better check if it exists for ARM each new release.

-       sed -i 's|ac_add_options --disable-eme||' ../mozconfig

- 

-       echo "applying build-arm-libopus.patch"

-       patch -p1 -i ../build-arm-libopus.patch

+   aarch64|armv7h)

+     # version-specific hacks

+     cat >> ../mozconfig <<EOF

+ export CC=gcc

+ export CXX=g++

+ export AR=gcc-ar

+ export NM=gcc-nm

+ export RANLIB=gcc-ranlib

+ EOF

+     echo 'ac_add_options --with-system-icu' >> ../mozconfig # ld.lld: error: undefined hidden symbol: std::type_info::operator==(std::type_info const&) const

+ 

+     # archarm has these differences in ## general configuration ## above

+     sed -i '

+       /--enable-hardening/d

+       /--enable-optimize/d

+       /--enable-rust-simd/d

+       s| --with-wasi-sysroot=.*| --without-wasm-sandboxed-libraries|

+       /--disable-eme/d

+     ' ../mozconfig

+ 

+     if [[ $CARCH == "armv7h" ]]; then

+       echo "ac_add_options --disable-elf-hack" >> .mozconfig

+       # https://bugzilla.redhat.com/show_bug.cgi?id=1641623

+       echo "ac_add_options --disable-av1" >> .mozconfig

+       # reduce jobs due to RAM constraints

+       MAKEFLAGS="-j4"

+       # disable hard-coded LTO

+       sed -i '/cargo_rustc_flags += -Clto/d' config/makefiles/rust.mk

+       sed -i '/RUSTFLAGS += -Cembed-bitcode=yes/d' config/makefiles/rust.mk

+       # increase codegen-units due to RAM constraints

+       sed -i 's/codegen-units=1/codegen-units=16/' config/makefiles/rust.mk

+       # webrtc on ARMv7 implies android, so disable it

+       echo "ac_add_options --disable-webrtc" >> .mozconfig

+     elif [[ $CARCH == "aarch64" ]]; then

+       echo 'ac_add_options --enable-rust-simd' >> .mozconfig

+     fi

+     echo 'ac_add_options --enable-optimize="-g0 -O2"' >> .mozconfig

+     echo "mk_add_options MOZ_MAKE_FLAGS=\"${MAKEFLAGS}\"" >> .mozconfig

+ 

+     # archarm `export` commands are under the '[ARCH-SPECIFIC BUILD ENV]' section

+ 

+     patch -p1 -i ../build-arm-libopus.patch

+ 

+     # At this point in the script, the arch, arch32, and parabola PKGBUILDs

+     # have prepared a temporary ${srcdir}/mozconfig; but the archarm PKGBUILD

+     # writes directly to the final firefox-$pkgver/.mozconfig.

+     # We allowed .mozconfig to be written above, only to minimize the diff against archarm.

+     # For consistency across arches, we move it to ${srcdir}/mozconfig now.

+     # ${srcdir}/mozconfig will clobber firefox-$pkgver/.mozconfig later, in build().

+     cat .mozconfig >> ../mozconfig

      ;;

-     i686)

-       export MOZ_SOURCE_CHANGESET="DEVEDITION_${pkgver//./_}_RELEASE"

- 

-       # disable LTO as it has little benefit and uses too many resources

-       # don't compile with clang, use gcc toolchain (clang has issues on IA32)

-       # disable SIMD (SSE2 for i686)

-       # set correct compiler and toochain tools

-       cat >>../mozconfig <<END

+   i686)

+     export MOZ_SOURCE_CHANGESET="DEVEDITION_${pkgver//./_}_RELEASE"

+ #     export MOZ_MAKE_FLAGS=-j2

+ 

+     # disable LTO as it has little benefit and uses too many resources

+     # don't compile with clang, use gcc toolchain (clang has issues on IA32)

+     # disable SIMD (SSE2 for i686)

+     # set correct compiler and toochain tools

+     cat >>../mozconfig <<END

  ac_add_options --disable-linker=lld

  ac_add_options --enable-linker=bfd

  ac_add_options --disable-lto
@@ -298,34 +394,43 @@ 

  ac_add_options --enable-strip

  ac_add_options --disable-debug

  ac_add_options --disable-debug-symbols

- export CC=gcc-10

- export CXX=g++-10

- export AR=gcc-ar-10

- export NM=gcc-nm-10

- export RANLIB=gcc-ranlib-10

+ export CC=gcc

+ export CXX=g++

+ export AR=gcc-ar

+ export NM=gcc-nm

+ export RANLIB=gcc-ranlib

  export STRIP=strip

  END

  

-       # readelf: Error: Unable to seek to 0x801db328 for section headers

-       echo "applying avoid-libxul-OOM-python-check.patch"

-       patch -p1 -i ../avoid-libxul-OOM-python-check.patch

- 

-       # test failure in rust code (complaining about network functions) when PGO is used,

-       # see https://bugzilla.mozilla.org/show_bug.cgi?id=1565757

-       echo "applying rust-static-disable-network-test-on-static-libraries.patch"

-       patch -p1 -i ../rust-static-disable-network-test-on-static-libraries.patch

- 

-       # FIXME: this patch is probably temporary - it comes from mozilla

-       #          https://bugzilla.mozilla.org/show_bug.cgi?id=1729459

-       #        /build/iceweasel/src/firefox-96.0.1/modules/fdlibm/src/math_private.h:34:21:

-       #          error: conflicting declaration ‘typedef __double_t double_t’

-       #        /usr/include/math.h:156:21: note: previous declaration as ‘typedef long double double_t’

-       echo "applying firefox-99.0.1-fdlibm-double.patch"

-       patch -p1 -i "$srcdir/firefox-99.0.1-fdlibm-double.patch"

+     # readelf: Error: Unable to seek to 0x801db328 for section headers

+     echo "applying avoid-libxul-OOM-python-check.patch"

+     patch -p1 -i ../avoid-libxul-OOM-python-check.patch

+ 

+     # test failure in rust code (complaining about network functions) when PGO is used,

+     # see https://bugzilla.mozilla.org/show_bug.cgi?id=1565757

+     echo "applying rust-static-disable-network-test-on-static-libraries.patch"

+     patch -p1 -i ../rust-static-disable-network-test-on-static-libraries.patch

+ 

+     # FIXME: this patch is probably temporary - it comes from mozilla

+     #          https://bugzilla.mozilla.org/show_bug.cgi?id=1729459

+     #        /build/iceweasel/src/firefox-96.0.1/modules/fdlibm/src/math_private.h:34:21:

+     #          error: conflicting declaration ‘typedef __double_t double_t’

+     #        /usr/include/math.h:156:21: note: previous declaration as ‘typedef long double double_t’

+     echo "applying firefox-106.0.1-fdlibm.patch"

+     patch -p1 -i "$srcdir/firefox-106.0.1-fdlibm.patch"

+ 

+     # disable AVX2 the brutal way

+     # mozglue/misc/SIMD_avx2.cpp:66:10: error: ‘_mm_cvtsi64_si128’ was not declared in this scope; did you mean ‘_mm_cvtsi64_si32’?

+     echo "applying simd_avx2.patch"

+     patch -p1 -i "$srcdir/simd_avx2.patch"

+ 

+     # js/src/jit/shared/AtomicOperations-shared-jit.cpp:88:9: error: ‘AtomicCopyByteUnsynchronized’ was not declared in this scope; did you mean ‘AtomicMemcpyUpUnsynchronized’?

+     echo "applying fix-i686-build-moz-1792159.patch"

+     patch -p1 -i "$srcdir/fix-i686-build-moz-1792159.patch"

      ;;

-     x86_64)

+   x86_64)

      ;;

-     *) echo "no [ARCH-SPECIFIC CONFIG] for arch: ${CARCH}" ; return 1 ;

+   *) echo "no [ARCH-SPECIFIC CONFIG] for arch: ${CARCH}" ; return 1 ;

      ;;

    esac

  
@@ -346,10 +451,12 @@ 

    for size in 16 22 24 32 48 64 128 256

    do  rsvg-convert -w ${size} -h ${size}  iceweasel_icon.svg -o default${size}.png

    done

-   cp                                      iceweasel_logo.svg    content/aboutlogins.svg

-   cp                                      iceweasel_logo.svg    content/about-logo.svg

-   rsvg-convert -w 192 --keep-aspect-ratio iceweasel_logo.svg -o content/about-logo.png

-   rsvg-convert -w 384 --keep-aspect-ratio iceweasel_logo.svg -o content/about-logo@2x.png

+   cp                                      iceweasel_logo.svg        content/aboutlogins.svg

+   cp                                      iceweasel_logo.svg        content/about-logo.svg

+   rsvg-convert -w 192 --keep-aspect-ratio iceweasel_logo.svg     -o content/about-logo.png

+   rsvg-convert -w 384 --keep-aspect-ratio iceweasel_logo.svg     -o content/about-logo@2x.png

+   cp                                      content/about-logo.png    content/about-logo-private.png

+   cp                                      content/about-logo@2x.png content/about-logo-private@2x.png

    echo ${blank_svg}                                           > content/blank.svg

  

    popd > /dev/null
@@ -466,7 +573,10 @@