summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorB. Stack <bgstack15@gmail.com>2022-07-03 09:04:13 -0400
committerB. Stack <bgstack15@gmail.com>2022-07-03 09:04:13 -0400
commit28132e774478bb632672ff04958b1cfc1a464da8 (patch)
tree39176f6b62dfa11d262572e44ae9c07dc553cdc5
parentMerge branch 'rawhide' of ssh://pkgs.fedoraproject.org/rpms/firefox into rawhide (diff)
downloadlibrewolf-fedora-ff-b102.0.tar.gz
librewolf-fedora-ff-b102.0.tar.bz2
librewolf-fedora-ff-b102.0.zip
v102.0 rc1b102.0
-rw-r--r--.gitignore4
-rw-r--r--README.md30
-rw-r--r--aboutLogos.patch17
-rw-r--r--allow-searchengines-non-esr.patch13
-rw-r--r--allow-ubo-private-mode.patch18
-rw-r--r--bootstrap-without-vcs.patch125
-rw-r--r--cbindgen-vendor.tar.xzbin0 -> 5623544 bytes
-rw-r--r--context-menu.patch24
-rw-r--r--custom-ubo-assets-bootstrap-location.patch17
-rw-r--r--disable-data-reporting-at-compile-time.patch18
-rw-r--r--disable-pocket.patch38
-rw-r--r--faster-package-multi-locale.patch88
-rw-r--r--handlers.patch232
-rw-r--r--hide-default-browser.patch15
-rw-r--r--hide-passwordmgr.patch29
-rw-r--r--librewolf-branding.tgzbin0 -> 2371606 bytes
-rw-r--r--librewolf-pref-pane.patch920
-rwxr-xr-xlibrewolf.cfg556
-rw-r--r--librewolf.spec2086
-rw-r--r--local-settings.js7
-rw-r--r--lw-logo-devtools.patch37
-rw-r--r--mozilla_dirs.patch76
-rw-r--r--policies.json94
-rw-r--r--pref-naming.patch57
-rw-r--r--privacy-preferences.patch62
-rw-r--r--remap-links.patch156
-rw-r--r--remove-branding-urlbar.patch11
-rw-r--r--remove-cfrprefs.patch19
-rw-r--r--remove-internal-plugin-certs.patch18
-rw-r--r--remove-organization-policy-banner.patch13
-rw-r--r--remove-snippets-from-home.patch22
-rw-r--r--remove_addons.patch75
-rw-r--r--sanitizing-description.patch11
-rw-r--r--search-config.json377
-rw-r--r--sources4
-rw-r--r--stop-undesired-requests.patch57
-rw-r--r--uBlock0@raymondhill.net.xpibin0 -> 3047681 bytes
-rw-r--r--urlbarprovider-interventions.patch13
-rw-r--r--website-appearance-ui-rfp.patch52
39 files changed, 5386 insertions, 5 deletions
diff --git a/.gitignore b/.gitignore
index c0734c0..acaebb3 100644
--- a/.gitignore
+++ b/.gitignore
@@ -314,7 +314,6 @@ firefox-3.6.4.source.tar.bz2
/firefox-langpacks-62.0.3-20181002.tar.xz
/firefox-63.0.source.tar.xz
/firefox-langpacks-63.0-20181018.tar.xz
-/cbindgen-vendor.tar.xz
/firefox-langpacks-63.0.1-20181101.tar.xz
/firefox-63.0.1.source.tar.xz
/firefox-63.0.3.source.tar.xz
@@ -517,3 +516,6 @@ firefox-3.6.4.source.tar.bz2
/firefox-langpacks-101.0.1-20220609.tar.xz
/firefox-102.0.source.tar.xz
/firefox-langpacks-102.0-20220628.tar.xz
+*.spec?
+.*.swp
+*.source.tar.xz
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..48a88a6
--- /dev/null
+++ b/README.md
@@ -0,0 +1,30 @@
+# README for librewolf-fedora-ff
+
+## Overview
+After using the [prep-librewolf-rpm.sh](https://gitlab.com/bgstack15/librewolf-fedora) script, a modified copy of Fedora Firefox src.rpm git repo exists on the local filesystem.
+
+If this README.md exists in a directory named `for-repo`, then it is still in its source location from the above link, and not in its final location.
+
+## This repository
+This README file belongs in the modified copy of that Fedora Firefox src.rpm [git repository](https://src.fedoraproject.org/rpms/firefox). That modified git repo can be sent up to a [new web location](https://gitlab.com/bgstack15/librewolf-fedora-ff).
+
+Fedora [COPR](https://copr.fedorainfracloud.org/coprs/bgstack15/AfterMozilla/packages/) can then use rpkg to pull this new git repository, so users do not have to upload the 400MB src.rpm manually.
+
+## Using this repository
+Script `git-helper.sh` included in the [librewolf-fedora](https://gitlab.com/bgstack15/librewolf-fedora) repository will add the new git repo for librewolf-fedora-ff and fix the .gitignore.
+
+## Differences from upstream repo
+The Librewolf rpm git repo makes some changes to the Firefox rpm git repo.
+Files are added or modified:
+* this README.md
+* .gitignore
+* librewolf.spec
+* LibreWolf patches that are not named here
+* a few tarballs omitted from upstream git sources:
+ * cbindgen-vendor.tar.xz
+ * `firefox-langpacks-*.tar.xz`
+
+Files that are removed:
+* sources
+
+Fedora's dist-git project provides a lookaside cache for large assets so they do not have to be stored in source control. The `sources` file links to those files, but we embed in the librewolf src.rpm the two tarballs we need.
diff --git a/aboutLogos.patch b/aboutLogos.patch
new file mode 100644
index 0000000..6584e40
--- /dev/null
+++ b/aboutLogos.patch
@@ -0,0 +1,17 @@
+--- a/browser/base/jar.mn
++++ b/browser/base/jar.mn
+@@ -97,6 +97,14 @@ browser.jar:
+ #endif
+ content/browser/webrtcIndicator.xhtml (content/webrtcIndicator.xhtml)
+ content/browser/webrtcIndicator.js (content/webrtcIndicator.js)
++ content/browser/aboutLogos/0.png (content/aboutLogos/0.png)
++ content/browser/aboutLogos/1.png (content/aboutLogos/1.png)
++ content/browser/aboutLogos/2.png (content/aboutLogos/2.png)
++ content/browser/aboutLogos/3.png (content/aboutLogos/3.png)
++ content/browser/aboutLogos/4.png (content/aboutLogos/4.png)
++ content/browser/aboutLogos/5.png (content/aboutLogos/5.png)
++ content/browser/aboutLogos/6.png (content/aboutLogos/6.png)
++ content/browser/aboutLogos/original.svg (content/aboutLogos/original.svg)
+ # the following files are browser-specific overrides
+ * content/browser/license.html (/toolkit/content/license.html)
+ % override chrome://global/content/license.html chrome://browser/content/license.html
diff --git a/allow-searchengines-non-esr.patch b/allow-searchengines-non-esr.patch
new file mode 100644
index 0000000..6418416
--- /dev/null
+++ b/allow-searchengines-non-esr.patch
@@ -0,0 +1,13 @@
+diff --git a/browser/components/enterprisepolicies/schemas/policies-schema.json b/browser/components/enterprisepolicies/schemas/policies-schema.json
+index d436cf1ca1..ecd6e53b9e 100644
+--- a/browser/components/enterprisepolicies/schemas/policies-schema.json
++++ b/browser/components/enterprisepolicies/schemas/policies-schema.json
+@@ -1074,7 +1074,7 @@
+ },
+
+ "SearchEngines": {
+- "enterprise_only": true,
++ "enterprise_only": false,
+
+ "type": "object",
+ "properties": {
diff --git a/allow-ubo-private-mode.patch b/allow-ubo-private-mode.patch
new file mode 100644
index 0000000..ef08f46
--- /dev/null
+++ b/allow-ubo-private-mode.patch
@@ -0,0 +1,18 @@
+--- a/toolkit/components/extensions/Extension.jsm
++++ b/toolkit/components/extensions/Extension.jsm
+@@ -2658,6 +2658,15 @@
+ this.permissions.add(PRIVATE_ALLOWED_PERMISSION);
+ }
+
++ if (this.id === "uBlock0@raymondhill.net") {
++ ExtensionPermissions.add(this.id, {
++ permissions: [PRIVATE_ALLOWED_PERMISSION],
++ origins: [],
++ });
++ this.permissions.add(PRIVATE_ALLOWED_PERMISSION);
++ }
++
++
+ // We only want to update the SVG_CONTEXT_PROPERTIES_PERMISSION during install and
+ // upgrade/downgrade startups.
+ if (INSTALL_AND_UPDATE_STARTUP_REASONS.has(this.startupReason)) {
diff --git a/bootstrap-without-vcs.patch b/bootstrap-without-vcs.patch
new file mode 100644
index 0000000..d213d70
--- /dev/null
+++ b/bootstrap-without-vcs.patch
@@ -0,0 +1,125 @@
+diff --git a/python/mozboot/mozboot/bootstrap.py b/python/mozboot/mozboot/bootstrap.py
+index 0c5ecbf..d9a6d9d 100644
+--- a/python/mozboot/mozboot/bootstrap.py
++++ b/python/mozboot/mozboot/bootstrap.py
+@@ -550,10 +550,7 @@ def current_firefox_checkout(env, hg: Optional[Path] = None):
+ break
+ path = path.parent
+
+- raise UserError(
+- "Could not identify the root directory of your checkout! "
+- "Are you running `mach bootstrap` in an hg or git clone?"
+- )
++ return ("local", Path.cwd())
+
+
+ def update_git_tools(git: Optional[Path], root_state_dir: Path):
+diff --git a/python/mozversioncontrol/mozversioncontrol/__init__.py b/python/mozversioncontrol/mozversioncontrol/__init__.py
+index dd31f53..6f0087a 100644
+--- a/python/mozversioncontrol/mozversioncontrol/__init__.py
++++ b/python/mozversioncontrol/mozversioncontrol/__init__.py
+@@ -684,6 +684,29 @@ class GitRepository(Repository):
+ self._run("config", name, value)
+
+
++class LocalRepository(Repository):
++
++ def __init__(self, path):
++ super(LocalRepository, self).__init__(path, tool="true")
++
++ @property
++ def head_ref(self):
++ return ""
++
++ def get_outgoing_files(self):
++ return []
++
++ def get_changed_files(self):
++ return []
++
++ def get_tracked_files_finder(self):
++ files = [os.path.relpath(os.path.join(dp, f), self.path).replace("\\","/") for dp, dn, fn in os.walk(self.path) for f in fn]
++ files.sort()
++ return FileListFinder(files)
++
++
++
++
+ def get_repository_object(path: Optional[Union[str, Path]], hg="hg", git="git"):
+ """Get a repository object for the repository at `path`.
+ If `path` is not a known VCS repository, raise an exception.
+@@ -697,7 +720,7 @@ def get_repository_object(path: Optional[Union[str, Path]], hg="hg", git="git"):
+ elif (path / ".git").exists():
+ return GitRepository(path, git=git)
+ else:
+- raise InvalidRepoPath(f"Unknown VCS, or not a source checkout: {path}")
++ return LocalRepository(path)
+
+
+ def get_repository_from_build_config(config):
+@@ -721,6 +744,8 @@ def get_repository_from_build_config(config):
+ return HgRepository(Path(config.topsrcdir), hg=config.substs["HG"])
+ elif flavor == "git":
+ return GitRepository(Path(config.topsrcdir), git=config.substs["GIT"])
++ elif flavor == "local":
++ return LocalRepository(config.topsrcdir)
+ else:
+ raise MissingVCSInfo("unknown VCS_CHECKOUT_TYPE value: %s" % flavor)
+
+diff --git a/third_party/python/taskcluster_taskgraph/taskgraph/util/vcs.py b/third_party/python/taskcluster_taskgraph/taskgraph/util/vcs.py
+index 016578b..7525139 100644
+--- a/third_party/python/taskcluster_taskgraph/taskgraph/util/vcs.py
++++ b/third_party/python/taskcluster_taskgraph/taskgraph/util/vcs.py
+@@ -168,6 +168,43 @@ class GitRepository(Repository):
+ self.run("checkout", ref)
+
+
++class LocalRepository(Repository):
++ tool = "true"
++
++ @property
++ def head_ref(self):
++ return ""
++
++ def get_outgoing_files(self):
++ return []
++
++ def get_changed_files(self):
++ return []
++
++ def base_ref(self):
++ raise Exception("Unimplemented")
++
++ def branch(self):
++ raise Exception("Unimplemented")
++
++ def get_commit_message(self):
++ raise Exception("Unimplemented")
++
++ def get_url(self):
++ return ""
++
++ def update(self):
++ raise Exception("Unimplemented")
++
++ def working_directory_clean(self):
++ raise Exception("Unimplemented")
++
++ def get_tracked_files_finder(self):
++ files = [os.path.relpath(os.path.join(dp, f), self.path).replace("\\","/") for dp, dn, fn in os.walk(self.path) for f in fn]
++ files.sort()
++ return FileListFinder(files)
++
++
+ def get_repository(path):
+ """Get a repository object for the repository at `path`.
+ If `path` is not a known VCS repository, raise an exception.
+@@ -178,7 +215,7 @@ def get_repository(path):
+ elif os.path.exists(os.path.join(path, ".git")):
+ return GitRepository(path)
+
+- raise RuntimeError("Current directory is neither a git or hg repository")
++ return LocalRepository(path)
+
+
+ def find_hg_revision_push_info(repository, revision):
diff --git a/cbindgen-vendor.tar.xz b/cbindgen-vendor.tar.xz
new file mode 100644
index 0000000..7bdb58a
--- /dev/null
+++ b/cbindgen-vendor.tar.xz
Binary files differ
diff --git a/context-menu.patch b/context-menu.patch
new file mode 100644
index 0000000..da19aa6
--- /dev/null
+++ b/context-menu.patch
@@ -0,0 +1,24 @@
+diff --git a/browser/base/content/browser-context.inc b/browser/base/content/browser-context.inc
+index 39a139f..c565bce 100644
+--- a/browser/base/content/browser-context.inc
++++ b/browser/base/content/browser-context.inc
+@@ -100,9 +100,6 @@
+ <menuitem id="context-savelink"
+ data-l10n-id="main-context-menu-save-link"
+ oncommand="gContextMenu.saveLink();"/>
+- <menuitem id="context-savelinktopocket"
+- data-l10n-id="main-context-menu-save-link-to-pocket"
+- oncommand= "Pocket.savePage(gContextMenu.browser, gContextMenu.linkURL);"/>
+ <menuitem id="context-copyemail"
+ data-l10n-id="main-context-menu-copy-email"
+ oncommand="gContextMenu.copyEmail();"/>
+@@ -256,9 +253,6 @@
+ <menuitem id="context-savepage"
+ data-l10n-id="main-context-menu-page-save"
+ oncommand="gContextMenu.savePageAs();"/>
+- <menuitem id="context-pocket"
+- data-l10n-id="main-context-menu-save-to-pocket"
+- oncommand="Pocket.savePage(gContextMenu.browser, gContextMenu.browser.currentURI.spec, gContextMenu.browser.contentTitle);"/>
+ <menu id="context-sendpagetodevice"
+ class="sync-ui-item"
+ data-l10n-id="main-context-menu-send-to-device"
diff --git a/custom-ubo-assets-bootstrap-location.patch b/custom-ubo-assets-bootstrap-location.patch
new file mode 100644
index 0000000..81a703f
--- /dev/null
+++ b/custom-ubo-assets-bootstrap-location.patch
@@ -0,0 +1,17 @@
+--- a/toolkit/components/extensions/parent/ext-storage.js
++++ b/toolkit/components/extensions/parent/ext-storage.js
+@@ -177,6 +177,14 @@ this.storage = class extends ExtensionAPI {
+
+ let data = await lookup;
+ if (!data) {
++ const assetsBootstrapLocation = Services.prefs.getStringPref("librewolf.uBO.assetsBootstrapLocation", undefined);
++ if (extension.id == "uBlock0@raymondhill.net" && assetsBootstrapLocation) {
++ return {
++ adminSettings: {
++ assetsBootstrapLocation
++ }
++ }
++ }
+ return Promise.reject({
+ message: "Managed storage manifest not found",
+ });
diff --git a/disable-data-reporting-at-compile-time.patch b/disable-data-reporting-at-compile-time.patch
new file mode 100644
index 0000000..3702402
--- /dev/null
+++ b/disable-data-reporting-at-compile-time.patch
@@ -0,0 +1,18 @@
+diff --git a/browser/moz.configure b/browser/moz.configure
+index 8653bcb..935af40 100644
+--- a/browser/moz.configure
++++ b/browser/moz.configure
+@@ -5,11 +5,11 @@
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+ imply_option("MOZ_PLACES", True)
+-imply_option("MOZ_SERVICES_HEALTHREPORT", True)
++imply_option("MOZ_SERVICES_HEALTHREPORT", False)
+ imply_option("MOZ_SERVICES_SYNC", True)
+ imply_option("MOZ_DEDICATED_PROFILES", True)
+ imply_option("MOZ_BLOCK_PROFILE_DOWNGRADE", True)
+-imply_option("MOZ_NORMANDY", True)
++imply_option("MOZ_NORMANDY", False)
+
+ with only_when(target_is_linux & compile_environment):
+ option(env="MOZ_NO_PIE_COMPAT", help="Enable non-PIE wrapper")
diff --git a/disable-pocket.patch b/disable-pocket.patch
new file mode 100644
index 0000000..9f5a890
--- /dev/null
+++ b/disable-pocket.patch
@@ -0,0 +1,38 @@
+diff --git a/browser/components/BrowserGlue.jsm b/browser/components/BrowserGlue.jsm
+index 81de0fb201..163b4843e4 100644
+--- a/browser/components/BrowserGlue.jsm
++++ b/browser/components/BrowserGlue.jsm
+@@ -1375,8 +1375,6 @@ BrowserGlue.prototype = {
+ Normandy.init();
+ }
+
+- SaveToPocket.init();
+-
+ AboutHomeStartupCache.init();
+
+ Services.obs.notifyObservers(null, "browser-ui-startup-complete");
+diff --git a/browser/components/moz.build b/browser/components/moz.build
+index d16b27b1ea..a119166fa5 100644
+--- a/browser/components/moz.build
++++ b/browser/components/moz.build
+@@ -42,7 +42,6 @@ DIRS += [
+ "originattributes",
+ "ion",
+ "places",
+- "pocket",
+ "preferences",
+ "privatebrowsing",
+ "prompts",
+diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
+index 16168e5..857a968 100644
+--- a/browser/base/content/browser.js
++++ b/browser/base/content/browser.js
+@@ -5246,8 +5246,6 @@ var XULBrowserWindow = {
+
+ SafeBrowsingNotificationBox.onLocationChange(aLocationURI);
+
+- SaveToPocket.onLocationChange(window);
+-
+ UrlbarProviderSearchTips.onLocationChange(
+ window,
+ aLocationURI,
diff --git a/faster-package-multi-locale.patch b/faster-package-multi-locale.patch
new file mode 100644
index 0000000..e61151a
--- /dev/null
+++ b/faster-package-multi-locale.patch
@@ -0,0 +1,88 @@
+diff --git a/python/mozbuild/mozbuild/mach_commands.py b/python/mozbuild/mozbuild/mach_commands.py
+--- a/python/mozbuild/mozbuild/mach_commands.py
++++ b/python/mozbuild/mozbuild/mach_commands.py
+@@ -2468,11 +2468,11 @@
+ @CommandArgument(
+ "--locales",
+ metavar="LOCALES",
+ nargs="+",
+ required=True,
+- help='List of locales to package, including "en-US"',
++ help="List of locales to package",
+ )
+ @CommandArgument(
+ "--verbose", action="store_true", help="Log informative status messages."
+ )
+ def package_l10n(command_context, verbose=False, locales=[]):
+@@ -2484,55 +2484,33 @@
+ "export BUILD_BACKENDS=FasterMake,RecursiveMake\n"
+ "in your mozconfig."
+ )
+ return 1
+
+- if "en-US" not in locales:
+- command_context.log(
+- logging.WARN,
+- "package-multi-locale",
+- {"locales": locales},
+- 'List of locales does not include default locale "en-US": '
+- '{locales}; adding "en-US"',
+- )
+- locales.append("en-US")
+- locales = list(sorted(locales))
++ locales = sorted(locale for locale in locales if locale != "en-US")
+
+ append_env = {
+ # We are only (re-)packaging, we don't want to (re-)build
+ # anything inside Gradle.
+ "GRADLE_INVOKED_WITHIN_MACH_BUILD": "1",
+ "MOZ_CHROME_MULTILOCALE": " ".join(locales),
+ }
+
+- for locale in locales:
+- if locale == "en-US":
+- command_context.log(
+- logging.INFO,
+- "package-multi-locale",
+- {"locale": locale},
+- "Skipping default locale {locale}",
+- )
+- continue
+-
+- command_context.log(
+- logging.INFO,
+- "package-multi-locale",
+- {"locale": locale},
+- "Processing chrome Gecko resources for locale {locale}",
+- )
+- command_context.run_process(
+- [
+- mozpath.join(command_context.topsrcdir, "mach"),
+- "build",
+- "chrome-{}".format(locale),
+- ],
+- append_env=append_env,
+- pass_thru=True,
+- ensure_exit_code=True,
+- cwd=mozpath.join(command_context.topsrcdir),
+- )
++ command_context.log(
++ logging.INFO,
++ "package-multi-locale",
++ {"locales": locales},
++ "Processing chrome Gecko resources for locales {locales}",
++ )
++ command_context._run_make(
++ directory=command_context.topobjdir,
++ target=["chrome-{}".format(locale) for locale in locales],
++ append_env=append_env,
++ pass_thru=False,
++ print_directory=False,
++ ensure_exit_code=True,
++ )
+
+ if command_context.substs["MOZ_BUILD_APP"] == "mobile/android":
+ command_context.log(
+ logging.INFO,
+ "package-multi-locale",
+
diff --git a/handlers.patch b/handlers.patch
new file mode 100644
index 0000000..2916500
--- /dev/null
+++ b/handlers.patch
@@ -0,0 +1,232 @@
+--- a/uriloader/exthandler/HandlerList.jsm
++++ b/uriloader/exthandler/HandlerList.jsm
+@@ -13,228 +13,7 @@ this.kHandlerList = {
+ schemes: {
+ mailto: {
+ handlers: [
+- {
+- name: "Gmail",
+- uriTemplate: "https://mail.google.com/mail/?extsrc=mailto&url=%s",
+- },
+- ],
+- },
+- },
+- },
+- cs: {
+- schemes: {
+- mailto: {
+- handlers: [
+- {
+- name: "Seznam",
+- uriTemplate: "https://email.seznam.cz/newMessageScreen?mailto=%s",
+- },
+- {
+- name: "Gmail",
+- uriTemplate: "https://mail.google.com/mail/?extsrc=mailto&url=%s",
+- },
+- ],
+- },
+- },
+- },
+- csb: {
+- schemes: {
+- mailto: {
+- handlers: [
+- {
+- name: "Poczta Interia.pl",
+- uriTemplate: "http://poczta.interia.pl/mh/?mailto=%s",
+- },
+- {
+- name: "OnetPoczta",
+- uriTemplate: "http://poczta.onet.pl/napisz.html?uri=%s",
+- },
+- ],
+- },
+- },
+- },
+- "es-CL": {
+- schemes: {
+- mailto: {
+- handlers: [
+- {
+- name: "Gmail",
+- uriTemplate: "https://mail.google.com/mail/?extsrc=mailto&url=%s",
+- },
+- {
+- name: "Outlook",
+- uriTemplate:
+- "https://outlook.live.com/default.aspx?rru=compose&to=%s",
+- },
+- ],
+- },
+- },
+- },
+- "ja-JP-mac": {
+- schemes: {
+- mailto: {
+- handlers: [
+- {
+- name: "Yahoo!メール",
+- uriTemplate: "https://mail.yahoo.co.jp/compose/?To=%s",
+- },
+- {
+- name: "Gmail",
+- uriTemplate: "https://mail.google.com/mail/?extsrc=mailto&url=%s",
+- },
+- ],
+- },
+- },
+- },
+- ja: {
+- schemes: {
+- mailto: {
+- handlers: [
+- {
+- name: "Yahoo!メール",
+- uriTemplate: "https://mail.yahoo.co.jp/compose/?To=%s",
+- },
+- {
+- name: "Gmail",
+- uriTemplate: "https://mail.google.com/mail/?extsrc=mailto&url=%s",
+- },
+- ],
+- },
+- },
+- },
+- kk: {
+- schemes: {
+- mailto: {
+- handlers: [
+- {
+- name: "Яндекс.Почта",
+- uriTemplate: "https://mail.yandex.ru/compose?mailto=%s",
+- },
+- {
+- name: "Mail.Ru",
+- uriTemplate: "https://e.mail.ru/cgi-bin/sentmsg?mailto=%s",
+- },
+- {
+- name: "Gmail",
+- uriTemplate: "https://mail.google.com/mail/?extsrc=mailto&url=%s",
+- },
+- ],
+- },
+- },
+- },
+- ltg: {
+- schemes: {
+- mailto: {
+- handlers: [
+- {
+- name: "Gmail",
+- uriTemplate: "https://mail.google.com/mail/?extsrc=mailto&url=%s",
+- },
+- {
+- name: "inbox.lv mail",
+- uriTemplate: "https://mail.inbox.lv/compose?to=%s",
+- },
+- ],
+- },
+- },
+- },
+- lv: {
+- schemes: {
+- mailto: {
+- handlers: [
+- {
+- name: "Gmail",
+- uriTemplate: "https://mail.google.com/mail/?extsrc=mailto&url=%s",
+- },
+- {
+- name: "inbox.lv mail",
+- uriTemplate: "https://mail.inbox.lv/compose?to=%s",
+- },
+- ],
+- },
+- },
+- },
+- pl: {
+- schemes: {
+- mailto: {
+- handlers: [
+- {
+- name: "Poczta Interia.pl",
+- uriTemplate: "https://poczta.interia.pl/mh/?mailto=%s",
+- },
+- {
+- name: "Gmail",
+- uriTemplate: "https://mail.google.com/mail/?extsrc=mailto&url=%s",
+- },
+- ],
+- },
+- },
+- },
+- ru: {
+- schemes: {
+- mailto: {
+- handlers: [
+- {
+- name: "Яндекс.Почту",
+- uriTemplate: "https://mail.yandex.ru/compose?mailto=%s",
+- },
+- {
+- name: "Mail.Ru",
+- uriTemplate: "https://e.mail.ru/cgi-bin/sentmsg?mailto=%s",
+- },
+- {
+- name: "Gmail",
+- uriTemplate: "https://mail.google.com/mail/?extsrc=mailto&url=%s",
+- },
+- ],
+- },
+- },
+- },
+- sah: {
+- schemes: {
+- mailto: {
+- handlers: [
+- {
+- name: "Яндекс.Почта",
+- uriTemplate: "https://mail.yandex.ru/compose?mailto=%s",
+- },
+- {
+- name: "Mail.Ru",
+- uriTemplate: "https://e.mail.ru/cgi-bin/sentmsg?mailto=%s",
+- },
+- ],
+- },
+- },
+- },
+- uk: {
+- schemes: {
+- mailto: {
+- handlers: [
+- {
+- name: "Gmail",
+- uriTemplate: "https://mail.google.com/mail/?extsrc=mailto&url=%s",
+- },
+- {
+- name: "Outlook",
+- uriTemplate:
+- "https://outlook.live.com/default.aspx?rru=compose&to=%s",
+- },
+- ],
+- },
+- },
+- },
+- uz: {
+- schemes: {
+- mailto: {
+- handlers: [
+- {
+- name: "Gmail",
+- uriTemplate: "https://mail.google.com/mail/?extsrc=mailto&url=%s",
+- },
+- {
+- name: "Mail.Ru",
+- uriTemplate: "https://e.mail.ru/cgi-bin/sentmsg?mailto=%s",
+- },
++ {},
+ ],
+ },
+ },
diff --git a/hide-default-browser.patch b/hide-default-browser.patch
new file mode 100644
index 0000000..3db1aa3
--- /dev/null
+++ b/hide-default-browser.patch
@@ -0,0 +1,15 @@
+--- a/browser/components/preferences/main.inc.xhtml
++++ b/browser/components/preferences/main.inc.xhtml
+@@ -29,10 +29,11 @@
+ <vbox id="startupPageBox">
+ <checkbox id="browserRestoreSession"
+ data-l10n-id="startup-restore-windows-and-tabs"/>
++ <label id="sessionRestoreLearnMore" is="text-link" class="learnMore" data-l10n-id="session-restore-learn-more"/>
+ </vbox>
+
+ #ifdef HAVE_SHELL_SERVICE
+- <vbox id="defaultBrowserBox">
++ <vbox id="defaultBrowserBox" hidden="true">
+ <checkbox id="alwaysCheckDefault" preference="browser.shell.checkDefaultBrowser"
+ disabled="true"
+ data-l10n-id="always-check-default"/>
diff --git a/hide-passwordmgr.patch b/hide-passwordmgr.patch
new file mode 100644
index 0000000..933b4e6
--- /dev/null
+++ b/hide-passwordmgr.patch
@@ -0,0 +1,29 @@
+--- a/browser/base/content/browser.js
++++ b/browser/base/content/browser.js
+@@ -1847,6 +1847,13 @@ var gBrowserInit = {
+ )?.removeAttribute("key");
+ }
+
++ if (Services.prefs.getBoolPref("librewolf.hidePasswdmgr", false)) {
++ PanelMultiView.getViewNode(
++ document,
++ "appMenu-passwords-button"
++ )?.remove();
++ }
++
+ this._loadHandled = true;
+ },
+
+--- a/browser/components/preferences/privacy.js
++++ b/browser/components/preferences/privacy.js
+@@ -810,6 +810,10 @@ var gPrivacyPane = {
+ /* init HTTPS-Only mode */
+ this.initHttpsOnly();
+
++ if (Services.prefs.getBoolPref("librewolf.hidePasswdmgr", false)) {
++ document.getElementById("passwordsGroup")?.remove();
++ }
++
+ // Notify observers that the UI is now ready
+ Services.obs.notifyObservers(window, "privacy-pane-loaded");
+ },
diff --git a/librewolf-branding.tgz b/librewolf-branding.tgz
new file mode 100644
index 0000000..1b3db54
--- /dev/null
+++ b/librewolf-branding.tgz
Binary files differ
diff --git a/librewolf-pref-pane.patch b/librewolf-pref-pane.patch
new file mode 100644
index 0000000..71d46df
--- /dev/null
+++ b/librewolf-pref-pane.patch
@@ -0,0 +1,920 @@
+From cd0ec42d56fe5d4689ed19c84ad5ca5a27a005fd Mon Sep 17 00:00:00 2001
+From: ohfp <1813007-ohfp@users.noreply.gitlab.com>
+Date: Tue, 12 Apr 2022 11:57:53 +0200
+Subject: [PATCH] port pref-pane patch changes to gecko-dev
+
+fix xorigin pref init and handling
+
+[LW] Ask to Restart Browser if Sync Pref in LW Settings is changed
+---
+ browser/components/preferences/jar.mn | 1 +
+ .../preferences/librewolf.inc.xhtml | 254 ++++++++++++++++
+ browser/components/preferences/librewolf.js | 287 ++++++++++++++++++
+ browser/components/preferences/preferences.js | 2 +
+ .../components/preferences/preferences.xhtml | 13 +
+ .../en-US/browser/preferences/preferences.ftl | 95 ++++++
+ browser/themes/shared/jar.inc.mn | 2 +
+ .../shared/preferences/category-librewolf.svg | 96 ++++++
+ .../themes/shared/preferences/librewolf.css | 23 ++
+ .../themes/shared/preferences/preferences.css | 4 +
+ 10 files changed, 777 insertions(+)
+ create mode 100644 browser/components/preferences/librewolf.inc.xhtml
+ create mode 100644 browser/components/preferences/librewolf.js
+ create mode 100644 browser/themes/shared/preferences/category-librewolf.svg
+ create mode 100644 browser/themes/shared/preferences/librewolf.css
+
+diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn
+index 912d9edf0855..30a83da4edca 100644
+--- a/browser/components/preferences/jar.mn
++++ b/browser/components/preferences/jar.mn
+@@ -11,6 +11,7 @@ browser.jar:
+ content/browser/preferences/home.js
+ content/browser/preferences/search.js
+ content/browser/preferences/privacy.js
++ content/browser/preferences/librewolf.js
+ content/browser/preferences/containers.js
+ content/browser/preferences/sync.js
+ content/browser/preferences/experimental.js
+diff --git a/browser/components/preferences/librewolf.inc.xhtml b/browser/components/preferences/librewolf.inc.xhtml
+new file mode 100644
+index 000000000000..c2dfea6d0858
+--- /dev/null
++++ b/browser/components/preferences/librewolf.inc.xhtml
+@@ -0,0 +1,254 @@
++# 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/.
++
++<script src="chrome://browser/content/preferences/librewolf.js"/>
++
++<html:template id="template-paneLibrewolf">
++
++<hbox class="subcategory" hidden="true" data-category="paneLibrewolf">
++ <html:h1 data-l10n-id="librewolf-header"/>
++</hbox>
++
++<groupbox hidden="true" data-category="paneLibrewolf">
++ <html:h2 data-l10n-id="librewolf-general-heading"/>
++
++ <!-- TEMPLATE FOR A NEW PREFERENCE
++ <hbox>
++ <checkbox id="librewolf-LABEL-checkbox" data-l10n-id="librewolf-LABEL-checkbox" preference="PREF" flex="1" />
++ <html:label for="librewolf-LABEL-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-LABEL-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-LABEL-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-LABEL-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="PREF" label="PREF" />
++ </vbox>
++ </vbox>
++ -->
++
++ <hbox>
++ <checkbox id="librewolf-extension-update-checkbox" data-l10n-id="librewolf-extension-update-checkbox" preference="extensions.update.autoUpdateDefault" flex="1" />
++ <html:label for="librewolf-extension-update-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-extension-update-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-extension-update-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-extension-update-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="extensions.update.autoUpdateDefault" label="extensions.update.autoUpdateDefault" />
++ <checkbox preference="extensions.update.enabled" label="extensions.update.enabled" />
++ </vbox>
++ </vbox>
++
++ <hbox>
++ <checkbox id="librewolf-sync-checkbox" data-l10n-id="librewolf-sync-checkbox" preference="identity.fxaccounts.enabled" flex="1" />
++ <html:label for="librewolf-sync-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-sync-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-sync-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-sync-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="identity.fxaccounts.enabled" label="identity.fxaccounts.enabled" />
++ </vbox>
++ </vbox>
++
++ <hbox>
++ <checkbox id="librewolf-autocopy-checkbox" data-l10n-id="librewolf-autocopy-checkbox" preference="clipboard.autocopy" flex="1" />
++ <html:label for="librewolf-autocopy-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-autocopy-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-autocopy-description" />
++ <checkbox preference="clipboard.autocopy" label="clipboard.autocopy" />
++ <checkbox preference="middlemouse.paste" label="middlemouse.paste" />
++ </vbox>
++ </vbox>
++
++ <hbox>
++ <checkbox id="librewolf-styling-checkbox" data-l10n-id="librewolf-styling-checkbox" preference="toolkit.legacyUserProfileCustomizations.stylesheets" flex="1" />
++ <html:label for="librewolf-styling-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-styling-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-styling-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-styling-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="toolkit.legacyUserProfileCustomizations.stylesheets" label="toolkit.legacyUserProfileCustomizations.stylesheets" />
++ </vbox>
++ </vbox>
++
++</groupbox>
++
++<groupbox hidden="true" data-category="paneLibrewolf">
++ <html:h2 data-l10n-id="librewolf-network-heading" />
++
++ <hbox>
++ <checkbox id="librewolf-ipv6-checkbox" data-l10n-id="librewolf-ipv6-checkbox" preference="network.dns.disableIPv6" flex="1" />
++ <html:label for="librewolf-ipv6-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-ipv6-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-ipv6-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-ipv6-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="network.dns.disableIPv6" label="network.dns.disableIPv6" />
++ </vbox>
++ </vbox>
++
++</groupbox>
++
++<groupbox hidden="true" data-category="paneLibrewolf">
++ <html:h2 data-l10n-id="librewolf-privacy-heading" />
++
++ <hbox>
++ <checkbox id="librewolf-xorigin-ref-checkbox" data-l10n-id="librewolf-xorigin-ref-checkbox" preference="network.http.referer.XOriginPolicy" flex="1" />
++ <html:label for="librewolf-xorigin-ref-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-xorigin-ref-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-xorigin-ref-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-xorigin-ref-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox disabled="true" preference="network.http.referer.XOriginPolicy" label="network.http.referer.XOriginPolicy" />
++ </vbox>
++ </vbox>
++
++</groupbox>
++
++<groupbox hidden="true" data-category="paneLibrewolf">
++ <html:h2 data-l10n-id="librewolf-broken-heading" />
++
++ <hbox>
++ <checkbox id="librewolf-rfp-checkbox" data-l10n-id="librewolf-rfp-checkbox" preference="privacy.resistFingerprinting" flex="1" />
++ <html:label for="librewolf-rfp-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-rfp-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-rfp-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-rfp-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="privacy.resistFingerprinting" label="privacy.resistFingerprinting" />
++ </vbox>
++ </vbox>
++
++ <vbox class="indent">
++
++ <hbox>
++ <checkbox id="librewolf-letterboxing-checkbox" data-l10n-id="librewolf-letterboxing-checkbox" preference="privacy.resistFingerprinting.letterboxing" flex="1" />
++ <html:label for="librewolf-letterboxing-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-letterboxing-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-letterboxing-description" />
++ <checkbox preference="privacy.resistFingerprinting.letterboxing" label="privacy.resistFingerprinting.letterboxing" />
++ </vbox>
++ </vbox>
++
++ <hbox>
++ <checkbox id="librewolf-auto-decline-canvas-checkbox" data-l10n-id="librewolf-auto-decline-canvas-checkbox" preference="privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts" flex="1" />
++ <html:label for="librewolf-auto-decline-canvas-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-auto-decline-canvas-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-auto-decline-canvas-description" />
++ <html:div> <label data-l10n-id="librewolf-auto-decline-canvas-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts" label="privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts" />
++ </vbox>
++ </vbox>
++
++ </vbox>
++
++ <hbox>
++ <checkbox id="librewolf-webgl-checkbox" data-l10n-id="librewolf-webgl-checkbox" preference="webgl.disabled" flex="1" />
++ <html:label for="librewolf-webgl-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-webgl-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-webgl-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-webgl-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="webgl.disabled" label="webgl.disabled" />
++ </vbox>
++ </vbox>
++
++
++</groupbox>
++
++<groupbox hidden="true" data-category="paneLibrewolf">
++ <html:h2 data-l10n-id="librewolf-security-heading" />
++
++ <hbox>
++ <checkbox id="librewolf-ocsp-checkbox" data-l10n-id="librewolf-ocsp-checkbox" preference="security.OCSP.require" flex="1" />
++ <html:label for="librewolf-ocsp-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-ocsp-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-ocsp-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-ocsp-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="security.OCSP.require" label="security.OCSP.require" />
++ </vbox>
++ </vbox>
++
++ <hbox>
++ <checkbox id="librewolf-goog-safe-checkbox" data-l10n-id="librewolf-goog-safe-checkbox" preference="browser.safebrowsing.malware.enabled" flex="1" />
++ <html:label for="librewolf-goog-safe-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-goog-safe-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-goog-safe-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-goog-safe-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="browser.safebrowsing.malware.enabled" label="browser.safebrowsing.malware.enabled" />
++ <checkbox preference="browser.safebrowsing.phishing.enabled" label="browser.safebrowsing.phishing.enabled" />
++ <checkbox preference="browser.safebrowsing.blockedURIs.enabled" label="browser.safebrowsing.blockedURIs.enabled" />
++ <checkbox preference="browser.safebrowsing.provider.google4.gethashURL" label="browser.safebrowsing.provider.google4.gethashURL" id="librewolf-goog-safe-hash4"/>
++ <checkbox preference="browser.safebrowsing.provider.google4.updateURL" label="browser.safebrowsing.provider.google4.updateURL" id="librewolf-goog-safe-up4"/>
++ <checkbox preference="browser.safebrowsing.provider.google.gethashURL" label="browser.safebrowsing.provider.google.gethashURL" id="librewolf-goog-safe-hash"/>
++ <checkbox preference="browser.safebrowsing.provider.google.updateURL" label="browser.safebrowsing.provider.google.updateURL" id="librewolf-goog-safe-up"/>
++ </vbox>
++ </vbox>
++
++ <vbox class="indent">
++ <hbox>
++ <checkbox id="librewolf-goog-safe-download-checkbox" data-l10n-id="librewolf-goog-safe-download-checkbox" preference="browser.safebrowsing.downloads.enabled" flex="1" />
++ <html:label for="librewolf-goog-safe-download-collapse" class="sidebar-footer-link" pack="end"> <image class="sidebar-footer-icon help-icon"/> </html:label>
++ </hbox>
++ <vbox class="librewolf-collapse indent">
++ <html:input type="checkbox" id="librewolf-goog-safe-download-collapse" />
++ <vbox class="librewolf-collapsed tracking-protection-ui content-blocking-category">
++ <label data-l10n-id="librewolf-goog-safe-download-description" />
++ <html:div> <image src="chrome://browser/skin/warning.svg" /> <label data-l10n-id="librewolf-goog-safe-download-warning1" class="librewolf-warning" /> </html:div>
++ <checkbox preference="browser.safebrowsing.downloads.enabled" label="browser.safebrowsing.downloads.enabled" />
++ </vbox>
++ </vbox>
++ </vbox>
++
++</groupbox>
++
++<hbox class="subcategory" hidden="true" data-category="paneLibrewolf">
++ <html:h1 data-l10n-id="librewolf-footer"/>
++</hbox>
++
++<groupbox data-category="paneLibrewolf" hidden="true">
++ <vbox align="start">
++ <hbox>
++ <button id="librewolf-config-link" is="highlightable-button" flex="1">
++ <image class="librewolf-button-icon" src="chrome://browser/skin/ion.svg" /> <!-- TODO not the typical way a picture is defined I think, and also we should copy the svg file in case they change it -->
++ <label data-l10n-id="librewolf-config-link"></label>
++ </button>
++ <button id="librewolf-open-profile" is="highlightable-button" flex="1">
++ <image class="librewolf-button-icon" src="chrome://browser/skin/open.svg" />
++ <label data-l10n-id="librewolf-open-profile"></label>
++ </button>
++ </hbox>
++ </vbox>
++</groupbox>
++
++</html:template>
+diff --git a/browser/components/preferences/librewolf.js b/browser/components/preferences/librewolf.js
+new file mode 100644
+index 000000000000..c8cbb075d59b
+--- /dev/null
++++ b/browser/components/preferences/librewolf.js
+@@ -0,0 +1,287 @@
++/* 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/. */
++
++/* import-globals-from extensionControlled.js */
++/* import-globals-from preferences.js */
++
++var { AppConstants } = ChromeUtils.import( "resource://gre/modules/AppConstants.jsm");
++XPCOMUtils.defineLazyGetter(this, "L10n", () => {
++ return new Localization([
++ "branding/brand.ftl",
++ "browser/preferences/preferences.ftl",
++ ]);
++});
++
++Preferences.addAll([
++ // IPv6
++ { id: "network.dns.disableIPv6", type: "bool" },
++ // ocsp hard-fail
++ { id: "security.OCSP.require", type: "bool" },
++ // ocsp hard-fail
++ { id: "identity.fxaccounts.enabled", type: "bool" },
++ // WebGL
++ { id: "webgl.disabled", type: "bool" },
++ // RFP
++ { id: "privacy.resistFingerprinting", type: "bool" },
++ // Automatically Update Extensions
++ { id: "extensions.update.enabled", type: "bool" },
++ { id: "extensions.update.autoUpdateDefault", type: "bool" },
++ // Clipboard autocopy/paste
++ { id: "clipboard.autocopy", type: "bool" },
++ { id: "middlemouse.paste", type: "bool" },
++ // XOrigin referrers
++ { id: "network.http.referer.XOriginPolicy", type: "int" },
++ // Harden
++ { id: "privacy.resistFingerprinting.letterboxing", type: "bool" },
++ // Google Safe Browsing
++ //{ id: "browser.safebrowsing.malware.enabled", type: "bool" }, // Already loaded
++ //{ id: "browser.safebrowsing.phishing.enabled", type: "bool" },
++ { id: "browser.safebrowsing.blockedURIs.enabled", type: "bool" },
++ { id: "browser.safebrowsing.provider.google4.gethashURL", type: "string" },
++ { id: "browser.safebrowsing.provider.google4.updateURL", type: "string" },
++ { id: "browser.safebrowsing.provider.google.gethashURL", type: "string" },
++ { id: "browser.safebrowsing.provider.google.updateURL", type: "string" },
++ /**** Prefs that require changing a lockPref ****/
++ // Google safe browsing check downloads
++ //{ id: "browser.safebrowsing.downloads.enabled", type: "bool" }, //Also already added
++ { id: "toolkit.legacyUserProfileCustomizations.stylesheets", type: "bool" },
++ // Canvas UI when blocked
++ {
++ id: "privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts",
++ type: "bool",
++ },
++]);
++
++var gLibrewolfPane = {
++ _pane: null,
++
++ // called when the document is first parsed
++ init() {
++ this._pane = document.getElementById("paneLibrewolf");
++
++ // Set all event listeners on checkboxes
++ setBoolSyncListeners(
++ "librewolf-extension-update-checkbox",
++ ["extensions.update.autoUpdateDefault", "extensions.update.enabled"],
++ [true, true ],
++ );
++ setBoolSyncListeners(
++ "librewolf-ipv6-checkbox",
++ ["network.dns.disableIPv6"],
++ [false, ],
++ );
++ setBoolSyncListeners(
++ "librewolf-ocsp-checkbox",
++ ["security.OCSP.require"],
++ [true, ],
++ );
++ setBoolSyncListeners(
++ "librewolf-sync-checkbox",
++ ["identity.fxaccounts.enabled"],
++ [true, ],
++ );
++ setBoolSyncListeners(
++ "librewolf-autocopy-checkbox",
++ ["clipboard.autocopy", "middlemouse.paste"],
++ [true, true ],
++ );
++ setBoolSyncListeners(
++ "librewolf-styling-checkbox",
++ ["toolkit.legacyUserProfileCustomizations.stylesheets"],
++ [true, ],
++ );
++
++ setBoolSyncListeners(
++ "librewolf-webgl-checkbox",
++ ["webgl.disabled"],
++ [false ],
++ );
++ setBoolSyncListeners(
++ "librewolf-rfp-checkbox",
++ ["privacy.resistFingerprinting"],
++ [true ],
++ );
++ setBoolSyncListeners(
++ "librewolf-auto-decline-canvas-checkbox",
++ ["privacy.resistFingerprinting.autoDeclineNoUserInputCanvasPrompts"],
++ [true ],
++ );
++
++ setBoolSyncListeners(
++ "librewolf-letterboxing-checkbox",
++ ["privacy.resistFingerprinting.letterboxing"],
++ [true ],
++ );
++
++ setSyncListeners(
++ "librewolf-goog-safe-checkbox",
++ [
++ "browser.safebrowsing.malware.enabled",
++ "browser.safebrowsing.phishing.enabled",
++ "browser.safebrowsing.blockedURIs.enabled",
++ "browser.safebrowsing.provider.google4.gethashURL",
++ "browser.safebrowsing.provider.google4.updateURL",
++ "browser.safebrowsing.provider.google.gethashURL",
++ "browser.safebrowsing.provider.google.updateURL",
++ ],
++ [
++ true,
++ true,
++ true,
++ "https://safebrowsing.googleapis.com/v4/fullHashes:find?$ct=application/x-protobuf&key=%GOOGLE_SAFEBROWSING_API_KEY%&$httpMethod=POST",
++ "https://safebrowsing.googleapis.com/v4/threatListUpdates:fetch?$ct=application/x-protobuf&key=%GOOGLE_SAFEBROWSING_API_KEY%&$httpMethod=POST",
++ "https://safebrowsing.google.com/safebrowsing/gethash?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2",
++ "https://safebrowsing.google.com/safebrowsing/downloads?client=SAFEBROWSING_ID&appver=%MAJOR_VERSION%&pver=2.2&key=%GOOGLE_SAFEBROWSING_API_KEY%",
++ ],
++ [
++ false,
++ false,
++ false,
++ "",
++ "",
++ "",
++ "",
++ ]
++ );
++
++ setXOriginPolicySyncListeners(
++ "librewolf-xorigin-ref-checkbox",
++ "network.http.referer.XOriginPolicy",
++ [1, 2],
++ [0]
++ );
++
++ // Set event listener on open profile directory button
++ setEventListener("librewolf-open-profile", "command", openProfileDirectory);
++ // Set event listener on open about:config button
++ setEventListener("librewolf-config-link", "click", openAboutConfig);
++
++ // Notify observers that the UI is now ready
++ Services.obs.notifyObservers(window, "librewolf-pane-loaded");
++ },
++};
++
++function setXOriginPolicySyncListeners(checkboxid, pref, onVals, offVals) {
++ setSyncFromPrefListener(checkboxid, () => onVals.includes(getPref(pref)));
++ setSyncToPrefListener(checkboxid, () =>
++ writeGenericPrefs([pref], [2], [0], document.getElementById(checkboxid).checked)
++ );
++ Preferences.get(pref).on("change", () =>
++ makeMasterCheckboxesReactive(checkboxid, () =>
++ onVals.includes(getPref(pref))
++ )
++ );
++}
++
++function openProfileDirectory() {
++ // Get the profile directory.
++ let currProfD = Services.dirsvc.get("ProfD", Ci.nsIFile);
++ let profileDir = currProfD.path;
++
++ // Show the profile directory.
++ let nsLocalFile = Components.Constructor(
++ "@mozilla.org/file/local;1",
++ "nsIFile",
++ "initWithPath"
++ );
++ new nsLocalFile(profileDir).reveal();
++}
++
++function openAboutConfig() {
++ window.open("about:config", "_blank");
++}
++
++function setBoolSyncListeners(checkboxid, opts, vals) {
++ setSyncFromPrefListener(checkboxid, () => readGenericBoolPrefs(opts, vals));
++ setSyncToPrefListener(checkboxid, () => writeGenericBoolPrefs(opts, vals, document.getElementById(checkboxid).checked));
++ for (let i = 1; i < opts.length; i++) {
++ Preferences.get(opts[i]).on("change", () => makeMasterCheckboxesReactive(checkboxid, () => readGenericBoolPrefs(opts, vals)));
++ }
++}
++function setSyncListeners(checkboxid, opts, onVals, offVals) {
++ setSyncFromPrefListener(checkboxid, () => readGenericPrefs(opts, onVals, offVals));
++ setSyncToPrefListener(checkboxid, () => writeGenericPrefs(opts, onVals, offVals, document.getElementById(checkboxid).checked));
++ for (let i = 1; i < opts.length; i++) {
++ Preferences.get(opts[i]).on("change", () => makeMasterCheckboxesReactive(checkboxid, () => readGenericPrefs(opts, onVals, offVals)));
++ }
++}
++
++function makeMasterCheckboxesReactive(checkboxid, func) {
++ const shouldBeChecked = func();
++ document.getElementById(checkboxid).checked = shouldBeChecked;
++}
++
++// Wrapper function in case something more is required (as I suspected in the first iteration of this)
++function getPref(pref) {
++ const retval = Preferences.get(pref);
++/* if (retval === undefined) {
++ return defaultValue;
++ } */
++ return retval._value;
++}
++// Returns true if all the preferences in prefs are equal to onVals, false otherwise TODO may need a third array for their default values because mozilla is dumb, after testing though pretty sure this was misinformation being spread by comments in default FF code that has long since been fixed
++function readGenericBoolPrefs(prefs, onVals) {
++ for (let i = 0; i < prefs.length; i++) {
++ if (getPref(prefs[i]) != onVals[i]) {
++ return false;
++ }
++ }
++ return true;
++}
++function writeGenericBoolPrefs(opts, vals, changeToOn) {
++ valsCopy = [...vals];
++ if (!changeToOn) {
++ for (let i = 0; i < vals.length; i++) {
++ valsCopy[i] = !vals[i];
++ }
++ }
++ // Start at 1 because returning sets the last one
++ for (let i = 1; i < vals.length; i++) {
++ Services.prefs.setBoolPref(opts[i], valsCopy[i]);
++ }
++ return valsCopy[0];
++}
++
++// Returns true if all the preferences in prefs are equal to onVals, false otherwise... currently the same as for Bool as offVals is ignored
++function readGenericPrefs(prefs, onVals, offVals) {
++ for (let i = 0; i < prefs.length; i ++) {
++ let temp = getPref(prefs[i]);
++ if (getPref(prefs[i]) != onVals[i]) {
++ return false;
++ }
++ }
++ return true;
++}
++function writeGenericPrefs(opts, onVals, offVals, changeToOn) {
++ let writeArr = (changeToOn) ? onVals : offVals;
++ for (let i = 1; i < opts.length; i++) {
++ let type = typeof(writeArr[i]);
++ if (type == "number") {
++ Services.prefs.setIntPref(opts[i], writeArr[i]);
++ } else if (type == "boolean") {
++ Services.prefs.setBoolPref(opts[i], writeArr[i]);
++ } else if (type == "string") {
++ Services.prefs.setCharPref(opts[i], writeArr[i]);
++ } else {
++ console.log("BADNESS 10000");
++ }
++ }
++ return writeArr[0];
++}
++
++Preferences.get("identity.fxaccounts.enabled").on("change", () => {
++ confirmRestartPrompt(
++ Services.prefs.getBoolPref("identity.fxaccounts.enabled"), // Restart is required to *enable* / *disable* the pref
++ 1, // Default Button Index
++ true, // Cancel instead of Revert Button
++ false // No Restart Later button
++ ).then(buttonIndex => {
++ if (buttonIndex == CONFIRM_RESTART_PROMPT_RESTART_NOW) {
++ Services.startup.quit(
++ Ci.nsIAppStartup.eAttemptQuit | Ci.nsIAppStartup.eRestart
++ );
++ return;
++ }
++ });
++});
+diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
+index 0b97e8c3cb59..637090adaa5e 100644
+--- a/browser/components/preferences/preferences.js
++++ b/browser/components/preferences/preferences.js
+@@ -8,6 +8,7 @@
+ /* import-globals-from search.js */
+ /* import-globals-from containers.js */
+ /* import-globals-from privacy.js */
++/* import-globals-from librewolf.js */
+ /* import-globals-from sync.js */
+ /* import-globals-from experimental.js */
+ /* import-globals-from moreFromMozilla.js */
+@@ -191,6 +192,7 @@ function init_all() {
+ register_module("paneHome", gHomePane);
+ register_module("paneSearch", gSearchPane);
+ register_module("panePrivacy", gPrivacyPane);
++ register_module("paneLibrewolf", gLibrewolfPane);
+ register_module("paneContainers", gContainersPane);
+ if (Services.prefs.getBoolPref("browser.preferences.experimental")) {
+ // Set hidden based on previous load's hidden value.
+diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
+index 6ee14eec9b2e..a0d768dce307 100644
+--- a/browser/components/preferences/preferences.xhtml
++++ b/browser/components/preferences/preferences.xhtml
+@@ -13,6 +13,7 @@
+ <?xml-stylesheet href="chrome://browser/skin/preferences/search.css"?>
+ <?xml-stylesheet href="chrome://browser/skin/preferences/containers.css"?>
+ <?xml-stylesheet href="chrome://browser/skin/preferences/privacy.css"?>
++<?xml-stylesheet href="chrome://browser/skin/preferences/librewolf.css"?>
+
+ <!DOCTYPE html>
+
+@@ -129,6 +130,17 @@
+ <label class="category-name" flex="1" data-l10n-id="pane-privacy-title"></label>
+ </richlistitem>
+
++ <richlistitem id="category-librewolf"
++ class="category"
++ value="paneLibrewolf"
++ helpTopic="prefs-librewolf"
++ data-l10n-id="category-librewolf"
++ data-l10n-attrs="tooltiptext"
++ align="center">
++ <image class="category-icon"/>
++ <label class="category-name" flex="1" data-l10n-id="pane-librewolf-title"></label>
++ </richlistitem>
++
+ <richlistitem id="category-sync"
+ class="category"
+ hidden="true"
+@@ -207,6 +219,7 @@
+ #include home.inc.xhtml
+ #include search.inc.xhtml
+ #include privacy.inc.xhtml
++#include librewolf.inc.xhtml
+ #include containers.inc.xhtml
+ #include sync.inc.xhtml
+ #include experimental.inc.xhtml
+diff --git a/browser/locales/en-US/browser/preferences/preferences.ftl b/browser/locales/en-US/browser/preferences/preferences.ftl
+index b10403800c7a..7f9bc2760342 100644
+--- a/browser/locales/en-US/browser/preferences/preferences.ftl
++++ b/browser/locales/en-US/browser/preferences/preferences.ftl
+@@ -1413,3 +1413,98 @@ httpsonly-radio-disabled =
+ desktop-folder-name = Desktop
+ downloads-folder-name = Downloads
+ choose-download-folder-title = Choose Download Folder:
++
++# Variables:
++# $service-name (String) - Name of a cloud storage provider like Dropbox, Google Drive, etc...
++save-files-to-cloud-storage =
++ .label = Save files to { $service-name }
++
++## LibreWolf preferences
++
++# Sidebar
++pane-librewolf-title = LibreWolf
++category-librewolf =
++ .tooltiptext = about:config changes, logically grouped and easily accessible
++
++# Main content
++librewolf-header = LibreWolf Preferences
++librewolf-warning-title = Heads up!
++librewolf-warning-description = We carefully choose default settings to focus on privacy and security. When changing these settings, read the descriptions to understand the implications of those changes.
++
++# Page Layout
++librewolf-general-heading = Browser Behavior
++librewolf-extension-update-checkbox =
++ .label = Update add-ons automatically
++librewolf-sync-checkbox =
++ .label = Enable Firefox Sync
++librewolf-autocopy-checkbox =
++ .label = Enable middle click paste
++librewolf-styling-checkbox =
++ .label = Allow userChrome.css customization
++
++librewolf-network-heading = Networking
++librewolf-ipv6-checkbox =
++ .label = Enable IPv6
++
++librewolf-privacy-heading = Privacy
++librewolf-xorigin-ref-checkbox =
++ .label = Limit cross-origin referrers
++
++librewolf-broken-heading = Fingerprinting
++librewolf-webgl-checkbox =
++ .label = Enable WebGL
++librewolf-rfp-checkbox =
++ .label = Enable ResistFingerprinting
++librewolf-auto-decline-canvas-checkbox =
++ .label = Silently block canvas access requests
++librewolf-letterboxing-checkbox =
++ .label = Enable letterboxing
++
++librewolf-security-heading = Security
++librewolf-ocsp-checkbox =
++ .label = Enforce OCSP hard-fail
++librewolf-goog-safe-checkbox =
++ .label = Enable Google Safe Browsing
++librewolf-goog-safe-download-checkbox =
++ .label = Scan downloads
++
++# In-depth descriptions
++librewolf-extension-update-description = Keep extensions up to date without manual intervention. A good choice for your security.
++librewolf-extension-update-warning1 = If you don't review the code of your extensions before every update, you should enable this option.
++
++librewolf-ipv6-description = Allow { -brand-short-name } to connect using IPv6.
++librewolf-ipv6-warning1 = Before you change this, make sure your OS uses the IPv6 privacy extension.
++librewolf-ocsp-description = Prevent connecting to a website if the OCSP check cannot be performed.
++librewolf-ocsp-warning1 = This increases security, but it will cause breakage when an OCSP server is down.
++librewolf-sync-description = Sync your data with other browsers. Requires restart.
++librewolf-sync-warning1 = Firefox Sync encrypts data locally before transmitting it to the server.
++
++librewolf-autocopy-description = Select some text to copy it, then paste it with a middle-mouse click.
++
++librewolf-styling-description = Enable this if you want to customize the UI with a manually loaded theme.
++librewolf-styling-warning1 = Make sure you trust the provider of the theme.
++
++librewolf-xorigin-ref-description = Send a referrer only on same-origin.
++librewolf-xorigin-ref-warning1 = This causes breakage. Additionally, even when sent referrers will still be trimmed.
++
++librewolf-webgl-description = WebGL is a strong fingerprinting vector.
++librewolf-webgl-warning1 = If you need to enable it, consider using an extension like Canvas Blocker.
++
++librewolf-rfp-description = ResistFingerprinting is the best in class anti-fingerprinting tool.
++librewolf-rfp-warning1 = If you need to disable it, consider using an extension like Canvas Blocker.
++
++librewolf-auto-decline-canvas-description = Automatically deny canvas access to websites, without prompting the user.
++librewolf-auto-decline-canvas-warning1 = It is still possible to allow canvas access from the urlbar.
++
++librewolf-letterboxing-description = Letterboxing applies margins around your windows, in order to return a limited set of rounded resolutions.
++
++librewolf-goog-safe-description = If you are worried about malware and phishing, consider enabling it.
++librewolf-goog-safe-warning1 = Disabled over censorship concerns but recommended for less advanced users. All the checks happen locally.
++
++librewolf-goog-safe-download-description = Allow Safe Browsing to scan your downloads to identify suspicious files.
++librewolf-goog-safe-download-warning1 = All the checks happen locally.
++
++# Footer
++librewolf-footer = Useful links
++librewolf-config-link = All advanced settings (about:config)
++librewolf-open-profile = Open user profile directory
+diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn
+index 4a88a1cc318d..2d7ac15e9b48 100644
+--- a/browser/themes/shared/jar.inc.mn
++++ b/browser/themes/shared/jar.inc.mn
+@@ -106,6 +106,7 @@
+ skin/classic/browser/preferences/android-menu.svg (../shared/preferences/android-menu.svg)
+ skin/classic/browser/preferences/category-general.svg (../shared/preferences/category-general.svg)
+ skin/classic/browser/preferences/category-privacy-security.svg (../shared/preferences/category-privacy-security.svg)
++ skin/classic/browser/preferences/category-librewolf.svg (../shared/preferences/category-librewolf.svg)
+ skin/classic/browser/preferences/category-search.svg (../shared/preferences/category-search.svg)
+ skin/classic/browser/preferences/category-sync.svg (../shared/preferences/category-sync.svg)
+ skin/classic/browser/preferences/containers.css (../shared/preferences/containers.css)
+@@ -128,6 +129,7 @@
+ skin/classic/browser/preferences/vpn-logo.svg (../shared/preferences/vpn-logo.svg)
+ skin/classic/browser/preferences/search.css (../shared/preferences/search.css)
+ skin/classic/browser/preferences/siteDataSettings.css (../shared/preferences/siteDataSettings.css)
++ skin/classic/browser/preferences/librewolf.css (../shared/preferences/librewolf.css)
+ skin/classic/browser/spotlight.css (../shared/spotlight.css)
+ skin/classic/browser/upgradeDialog/abstract.png (../shared/upgradeDialog/abstract.png)
+ skin/classic/browser/upgradeDialog/cheers.png (../shared/upgradeDialog/cheers.png)
+diff --git a/browser/themes/shared/preferences/category-librewolf.svg b/browser/themes/shared/preferences/category-librewolf.svg
+new file mode 100644
+index 000000000000..8ebf2ebe19a9
+--- /dev/null
++++ b/browser/themes/shared/preferences/category-librewolf.svg
+@@ -0,0 +1,96 @@
++<!-- 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 xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" width="20" height="20" fill="context-fill" fill-opacity="context-fill-opacity">
++ <path d="M15.5 9 15 9l0-4A5 5 0 0 0 5 5l0 4-.5 0A2.5 2.5 0 0 0 2 11.5l0 6A2.5 2.5 0 0 0 4.5 20l11 0a2.5 2.5 0 0 0 2.5-2.5l0-6A2.5 2.5 0 0 0 15.5 9zm-9-4c0-1.93 1.57-3.5 3.5-3.5 1.93 0 3.5 1.57 3.5 3.5l0 4-7 0 0-4zm10 12.7-.8.8-11.4 0-.8-.8 0-6.4.8-.8 11.4 0 .8.8 0 6.4z"/>
++</svg>
++-->
++
++<svg
++ xmlns:dc="http://purl.org/dc/elements/1.1/"
++ xmlns:cc="http://creativecommons.org/ns#"
++ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
++ xmlns:svg="http://www.w3.org/2000/svg"
++ xmlns="http://www.w3.org/2000/svg"
++ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
++ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
++ width="67.733337mm"
++ height="67.733337mm"
++ viewBox="0 0 67.733337 67.733337"
++ version="1.1"
++ id="svg8"
++ inkscape:version="0.92.4 5da689c313, 2019-01-14"
++ sodipodi:docname="LibreWolf.svg">
++ <defs
++ id="defs2" />
++ <sodipodi:namedview
++ id="base"
++ pagecolor="#ffffff"
++ bordercolor="#666666"
++ borderopacity="1.0"
++ inkscape:pageopacity="0.0"
++ inkscape:pageshadow="2"
++ inkscape:zoom="0.9899495"
++ inkscape:cx="-15.106575"
++ inkscape:cy="110.91343"
++ inkscape:document-units="mm"
++ inkscape:current-layer="layer1"
++ showgrid="false"
++ inkscape:window-width="1366"
++ inkscape:window-height="711"
++ inkscape:window-x="0"
++ inkscape:window-y="30"
++ inkscape:window-maximized="1"
++ inkscape:showpageshadow="false"
++ units="px"
++ fit-margin-top="0"
++ fit-margin-left="0"
++ fit-margin-right="0"
++ fit-margin-bottom="0" />
++ <metadata
++ id="metadata5">
++ <rdf:RDF>
++ <cc:Work
++ rdf:about="">
++ <dc:format>image/svg+xml</dc:format>
++ <dc:type
++ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
++ <dc:title />
++ </cc:Work>
++ </rdf:RDF>
++ </metadata>
++ <g
++ inkscape:label="Layer 1"
++ inkscape:groupmode="layer"
++ id="layer1"
++ transform="translate(-42.106554,-153.8982)">
++ <circle
++ style="fill:#00acff;fill-opacity:1;stroke:none;stroke-width:0.53545821;stroke-miterlimit:4;stroke-dasharray:none"
++ id="path875"
++ cx="75.973221"
++ cy="187.76486"
++ r="33.866669" />
++ <path
++ style="fill:#ffffff;stroke-width:0.13229167"
++ d="m 72.543594,214.67719 c -4.744093,-0.60875 -9.281981,-2.49991 -13.241953,-5.51858 -1.29157,-0.98455 -3.714943,-3.42363 -4.772834,-4.80375 -2.96241,-3.86476 -4.804479,-8.2508 -5.41218,-12.88661 -0.260164,-1.98464 -0.258719,-5.63349 0.0029,-7.44738 1.308078,-9.0677 7.01463,-16.8454 15.20915,-20.72918 3.811512,-1.80647 7.300266,-2.57114 11.730683,-2.57114 7.165903,0 13.5265,2.56749 18.680882,7.54063 2.483054,2.39575 4.148141,4.66808 5.573968,7.60677 1.92868,3.9751 2.70979,7.43276 2.70979,11.99526 0,6.00619 -1.7345,11.24407 -5.336957,16.11672 -1.070527,1.44797 -3.161747,3.64749 -4.549468,4.78507 -3.806562,3.12041 -8.658642,5.23183 -13.473174,5.86296 -1.663528,0.21807 -5.593318,0.24524 -7.120854,0.0492 z m 10.041381,-4.86547 c 2.898391,-0.91366 5.260364,-2.14146 7.540624,-3.91979 1.212494,-0.9456 3.308223,-3.06144 4.186916,-4.22711 2.38328,-3.16162 4.004927,-7.12196 4.482067,-10.94597 0.229814,-1.84182 0.09634,-5.73827 -0.2545,-7.4296 -0.9294,-4.48046 -2.931647,-8.26499 -6.086007,-11.50342 -1.966575,-2.01898 -3.756882,-3.34972 -6.060203,-4.50458 -3.495001,-1.75236 -6.489835,-2.46043 -10.423481,-2.46442 -4.164073,-0.004 -7.815325,0.95024 -11.429055,2.98766 -3.289753,1.85476 -6.690628,5.25952 -8.553227,8.563 -1.371786,2.43299 -2.37583,5.32029 -2.767595,7.95869 -0.256867,1.72991 -0.261933,5.16508 -0.01006,6.82145 0.504067,3.31489 1.761474,6.59111 3.584314,9.33904 0.995409,1.50058 0.964154,1.48393 1.842248,0.98153 1.570774,-0.8987 1.980396,-1.33342 2.836087,-3.00984 1.000624,-1.96036 2.070459,-3.6735 3.037094,-4.86332 1.115822,-1.37347 1.269228,-1.61793 1.828988,-2.9147 0.281654,-0.65249 0.786977,-1.61074 1.122938,-2.12943 l 0.61084,-0.94309 -0.79023,-0.77671 c -1.049647,-1.03168 -1.922751,-2.2016 -2.087012,-2.79651 -0.167761,-0.60758 0.03021,-0.9466 0.818744,-1.40207 0.797354,-0.46057 1.367585,-0.5929 3.498657,-0.81193 1.037629,-0.10665 2.164153,-0.30199 2.518962,-0.43681 0.353024,-0.13414 1.407825,-0.70824 2.344001,-1.27579 2.702947,-1.63863 2.931619,-1.72344 4.552111,-1.68831 1.368686,0.0297 1.371262,0.0291 2.182813,-0.46143 1.700674,-1.02802 4.14305,-2.88289 7.357044,-5.58733 0.61632,-0.5186 1.21002,-0.92569 1.31934,-0.90464 0.45462,0.0876 1.289567,2.13636 1.416407,3.47562 0.07693,0.81225 -0.08023,1.6155 -0.562014,2.87261 -0.13146,0.34301 -0.19208,0.67043 -0.134706,0.7276 0.13774,0.13726 0.610706,-0.4535 0.610706,-0.76279 0,-0.39435 0.261127,-0.43936 0.616327,-0.10623 0.258235,0.24218 0.480842,0.31151 1.000202,0.31151 0.567073,0 0.707447,0.0526 0.928773,0.3479 0.375574,0.50112 0.463647,1.86688 0.176201,2.73231 -0.279641,0.84191 -1.124801,1.81287 -1.891829,2.17341 -0.686334,0.32262 -2.075841,1.67928 -2.726081,2.66164 -0.248906,0.37604 -0.715586,1.15995 -1.037066,1.74204 -0.321487,0.58208 -0.86074,1.46154 -1.19834,1.95436 -0.664294,0.96972 -1.233147,2.3224 -1.782214,4.23798 -0.322553,1.1253 -0.34962,1.41826 -0.362953,3.92797 -0.01613,3.0317 -0.172894,3.77561 -0.9925,4.7091 -0.931805,1.06126 -1.861937,3.39186 -1.940127,4.8613 -0.04935,0.92751 -0.192246,1.83164 -0.395304,2.50122 -0.08942,0.29484 0.07752,0.2914 1.072102,-0.0221 z"
++ id="path847"
++ inkscape:connector-curvature="0" />
++ <path
++ sodipodi:type="star"
++ style="fill:#00acff;fill-opacity:1;stroke:none;stroke-width:1.5;stroke-miterlimit:4;stroke-dasharray:none"
++ id="path814"
++ sodipodi:sides="4"
++ sodipodi:cx="18.854025"
++ sodipodi:cy="172.98837"
++ sodipodi:r1="1.6036172"
++ sodipodi:r2="1.1339285"
++ sodipodi:arg1="1.5707963"
++ sodipodi:arg2="2.3561945"
++ inkscape:flatsided="true"
++ inkscape:rounded="0"
++ inkscape:randomized="0"
++ d="m 18.854025,174.59199 -1.603617,-1.60362 1.603617,-1.60361 1.603617,1.60361 z"
++ transform="matrix(0.23203125,0.40188991,-0.99392962,0.57384553,246.21921,73.888081)" />
++ </g>
++</svg>
++
+diff --git a/browser/themes/shared/preferences/librewolf.css b/browser/themes/shared/preferences/librewolf.css
+new file mode 100644
+index 000000000000..12f926ab7018
+--- /dev/null
++++ b/browser/themes/shared/preferences/librewolf.css
+@@ -0,0 +1,23 @@
++.librewolf-collapse > input {
++ display: none;
++}
++.librewolf-collapse > input ~ .librewolf-collapsed {
++ display: none;
++ /* max-height: 0; */
++ transition: max-height 0.25s ease-in-out;
++}
++.librewolf-collapse > input:checked ~ .librewolf-collapsed {
++ display: block;
++ /* max-height: 20rem; */
++}
++.librewolf-warning {
++ display: inline;
++ font-size: 0.8em;
++}
++.librewolf-button-icon {
++ width: 16px;
++ height: 16px;
++ margin-right: 8px;
++ -moz-context-properties: fill, fill-opacity;
++ fill: currentColor;
++}
+diff --git a/browser/themes/shared/preferences/preferences.css b/browser/themes/shared/preferences/preferences.css
+index 74493f3c59c4..2f3623cf6631 100644
+--- a/browser/themes/shared/preferences/preferences.css
++++ b/browser/themes/shared/preferences/preferences.css
+@@ -222,6 +222,10 @@ checkbox {
+ list-style-image: url("chrome://browser/skin/preferences/category-privacy-security.svg");
+ }
+
++#category-librewolf > .category-icon {
++ list-style-image: url("chrome://browser/skin/preferences/category-librewolf.svg");
++}
++
+ #category-sync > .category-icon {
+ list-style-image: url("chrome://browser/skin/preferences/category-sync.svg");
+ }
+--
+2.36.1
+
diff --git a/librewolf.cfg b/librewolf.cfg
new file mode 100755
index 0000000..f2452a0
--- /dev/null
+++ b/librewolf.cfg
@@ -0,0 +1,556 @@
+
+/** LIBREWOLF SETTINGS
+ *
+ * please take the time to read and understand, but also to customize the settings to find your own setup.
+ * the answers to the most common questions are at this link https://librewolf.net/docs/faq/
+ *
+ * WARNING: please make sure the first line of this file is empty. this is a known bug.
+ */
+defaultPref("librewolf.cfg.version", "6.6");
+
+
+/** INDEX
+ * the file is organized in categories, and each one has a number of sections:
+ *
+ * PRIVACY [ISOLATION, SANITIZING, CACHE AND STORAGE, HISTORY AND SESSION RESTORE, QUERY STRIPPING]
+ * NETWORKING [HTTPS, IPv6, REFERERS, WEBRTC, PROXY, DNS, PREFETCHING AND SPECULATIVE CONNECTIONS, OFFLINE]
+ * FINGERPRINTING [RFP, WEBGL]
+ * SECURITY [SITE ISOLATION, CERTIFICATES, TLS/SSL, PERMISSIONS, FONTS, SAFE BROWSING, OTHERS]
+ * REGION [LOCATION, LANGUAGE]
+ * BEHAVIOR [DRM, SEARCH AND URLBAR, DOWNLOADS, AUTOPLAY, POP-UPS AND WINDOWS, MOUSE]
+ * EXTENSIONS [USER INSTALLED, SYSTEM, EXTENSION FIREWALL]
+ * BUILT-IN FEATURES [UPDATER, SYNC, LOCKWISE, CONTAINERS, DEVTOOLS, OTHERS]
+ * UI [BRANDING, HANDLERS, FIRST LAUNCH, NEW TAB PAGE, ABOUT, RECOMMENDED]
+ * TELEMETRY
+ * WINDOWS [UPDATES, OTHERS]
+ */
+
+
+
+/** [CATEGORY] PRIVACY */
+
+/** [SECTION] ISOLATION
+ * default to strict mode, which includes:
+ * 1. dFPI for both normal and private windows
+ * 2. strict blocking lists for trackers
+ * 3. shims to avoid breakage caused by blocking lists
+ * 4. stricter policies for xorigin referrers
+ * 5. dFPI specific cookie cleaning mechanism
+ * 6. query stripping
+ *
+ * the desired category must be set with pref() otherwise it won't stick.
+ * the UI that allows to change mode manually is hidden.
+ */
+pref("browser.contentblocking.category", "strict");
+defaultPref("network.cookie.cookieBehavior", 5); // enforce dFPI
+defaultPref("privacy.partition.serviceWorkers", true); // isolate service workers
+
+/** [SECTION] SANITIZING */
+defaultPref("network.cookie.lifetimePolicy", 2); // keep cookies until end of the session, then clear
+/**
+ * this way of sanitizing cookies would override the exceptions set by the users and just delete everything,
+ * we disable it but cookies and site data are still cleared per session unless exceptions are set.
+ * all the cleaning prefs true by default except for siteSetting and offlineApps, which is what we want.
+ */
+defaultPref("privacy.clearOnShutdown.offlineApps", true);
+defaultPref("privacy.sanitize.sanitizeOnShutdown", true);
+defaultPref("privacy.sanitize.timeSpan", 0);
+
+/** [SECTION] CACHE AND STORAGE */
+defaultPref("browser.cache.disk.enable", false); // disable disk cache
+/** prevent media cache from being written to disk in pb, but increase max cache size to avoid playback issues */
+defaultPref("browser.privatebrowsing.forceMediaMemoryCache", true);
+defaultPref("media.memory_cache_max_size", 65536);
+// disable favicons in profile folder and page thumbnail capturing
+defaultPref("browser.shell.shortcutFavicons", false);
+defaultPref("browser.pagethumbnails.capturing_disabled", true);
+defaultPref("browser.helperApps.deleteTempFileOnExit", true); // delete temporary files opened with external apps
+
+/** [SECTION] HISTORY AND SESSION RESTORE
+ * since we hide the UI for modes other than custom we want to reset it for
+ * everyone. same thing for always on PB mode.
+ */
+pref("privacy.history.custom", true);
+pref("browser.privatebrowsing.autostart", false);
+defaultPref("browser.formfill.enable", false); // disable form history
+defaultPref("browser.sessionstore.privacy_level", 2); // prevent websites from storing session data like cookies and forms
+defaultPref("browser.sessionstore.interval", 60000); // increase time between session saves
+
+/** [SECTION] QUERY STRIPPING
+ * currently we set the same query stripping list that brave uses:
+ * https://github.com/brave/brave-core/blob/f337a47cf84211807035581a9f609853752a32fb/browser/net/brave_site_hacks_network_delegate_helper.cc#L29
+ */
+defaultPref("privacy.query_stripping.strip_list", "__hsfp __hssc __hstc __s _hsenc _openstat dclid fbclid gbraid gclid hsCtaTracking igshid mc_eid ml_subscriber ml_subscriber_hash msclkid oft_c oft_ck oft_d oft_id oft_ids oft_k oft_lk oft_sk oly_anon_id oly_enc_id rb_clickid s_cid twclid vero_conv vero_id wbraid wickedid yclid");
+/**
+ * librewolf specific pref that allows to include the query stripping lists in uBO by default.
+ * the asset file is fetched every 7 days.
+ */
+defaultPref("librewolf.uBO.assetsBootstrapLocation", "https://gitlab.com/librewolf-community/browser/source/-/raw/main/assets/uBOAssets.json");
+
+
+
+/** [CATEGORY] NETWORKING */
+
+/** [SECTION] HTTPS */
+defaultPref("dom.security.https_only_mode", true); // only allow https in all windows, including private browsing
+defaultPref("network.auth.subresource-http-auth-allow", 1); // block HTTP authentication credential dialogs
+defaultPref("security.mixed_content.block_display_content", true); // block insecure passive content
+
+/** [SECTION] IPv6
+ * privacy extension isn't the default for all linux distros, so we disable ipv6.
+ */
+defaultPref("network.dns.disableIPv6", true);
+
+/** [SECTION] REFERERS
+ * to enhance privacy but keep a certain level of usability we trim cross-origin
+ * referers, instead of completely avoid sending them.
+ * as a general rule, the behavior of referes which are not cross-origin should not
+ * be changed.
+ */
+defaultPref("network.http.referer.XOriginPolicy", 0); // default, might be worth changing to 2 to stop sending them completely
+defaultPref("network.http.referer.XOriginTrimmingPolicy", 2); // trim referer to only send scheme, host and port
+
+/** [SECTION] WEBRTC
+ * there's no point in disabling webrtc as mDNS protects the private IP on linux, osx and win10+.
+ * with the below preference we protect the value even in trusted environments and for win7/8 users,
+ * although this will likely cause breakage.
+ */
+defaultPref("media.peerconnection.ice.no_host", true); // don't use any private IPs for ICE candidate
+defaultPref("media.peerconnection.ice.default_address_only", true); // use a single interface for ICE candidates, the vpn one when a vpn is used
+
+/** [SECTION] PROXY */
+defaultPref("network.gio.supported-protocols", ""); // disable gio as it could bypass proxy
+defaultPref("network.file.disable_unc_paths", true); // hidden, disable using uniform naming convention to prevent proxy bypass
+defaultPref("network.proxy.socks_remote_dns", true); // forces dns query through the proxy when using one
+defaultPref("media.peerconnection.ice.proxy_only_if_behind_proxy", true); // force webrtc inside proxy when one is used
+
+/** [SECTION] DNS */
+defaultPref("network.trr.confirmationNS", "skip"); // skip undesired doh test connection
+defaultPref("network.dns.disablePrefetch", true); // disable dns prefetching
+/**
+ * librewolf doesn't use DoH, but it can be enabled with the following prefs:
+ * pref("network.trr.mode", 2);
+ * pref("network.trr.uri", "https://dns.quad9.net/dns-query");
+ *
+ * the possible modes are:
+ * 0 = default
+ * 1 = browser picks faster
+ * 2 = DoH with system dns fallback
+ * 3 = DoH without fallback
+ * 5 = DoH is off, default currently
+ */
+
+/** [SECTION] PREFETCHING AND SPECULATIVE CONNECTIONS
+ * disable prefecthing for different things such as links, bookmarks and predictors.
+ */
+lockPref("network.predictor.enabled", false);
+lockPref("network.prefetch-next", false);
+lockPref("network.http.speculative-parallel-limit", 0);
+defaultPref("browser.places.speculativeConnect.enabled", false);
+// disable speculative connections and domain guessing from the urlbar
+defaultPref("browser.urlbar.dnsResolveSingleWordsAfterSearch", 0);
+defaultPref("browser.urlbar.speculativeConnect.enabled", false);
+lockPref("browser.fixup.alternate.enabled", false);
+
+/** [SECTION] OFFLINE
+ * let users set the browser as offline, without the browser trying to guess.
+ */
+defaultPref("network.manage-offline-status", false);
+
+
+
+/** [CATEGORY] FINGERPRINTING */
+
+/** [SECTION] RFP
+ * librewolf should stick to RFP for fingerprinting. we should not set prefs that interfere with it
+ * and disabling API for no good reason will be counter productive, so it should also be avoided.
+ */
+defaultPref("privacy.resistFingerprinting", true);
+// rfp related settings
+defaultPref("privacy.resistFingerprinting.block_mozAddonManager", true); // prevents rfp from breaking AMO
+defaultPref("browser.startup.blankWindow", false); // if set to true it breaks RFP windows resizing
+defaultPref("browser.display.use_system_colors", false); // default but enforced due to RFP
+/**
+ * increase the size of new RFP windows for better usability, while still using a rounded value.
+ * if the screen resolution is lower it will stretch to the biggest possible rounded value.
+ * also, expose hidden letterboxing pref but do not enable it for now.
+ */
+defaultPref("privacy.window.maxInnerWidth", 1600);
+defaultPref("privacy.window.maxInnerHeight", 900);
+defaultPref("privacy.resistFingerprinting.letterboxing", false);
+
+/** [SECTION] WEBGL */
+defaultPref("webgl.disabled", true);
+
+
+
+/** [CATEGORY] SECURITY */
+
+/** [SECTION] CERTIFICATES */
+defaultPref("security.cert_pinning.enforcement_level", 2); // enable strict public key pinning, might cause issues with AVs
+/**
+ * enable safe negotiation and show warning when it is not supported. might cause breakage.
+ */
+defaultPref("security.ssl.require_safe_negotiation", true);
+defaultPref("security.ssl.treat_unsafe_negotiation_as_broken", true);
+/**
+ * our strategy with revocation is to perform all possible checks with CRL, but when a cert
+ * cannot be checked with it we use OCSP stapled with hard-fail, to still keep privacy and
+ * increase security.
+ * crlite is in mode 3 by default, which allows us to detect false positive with OCSP.
+ * in v103, when crlite is fully mature, it will switch to mode 2 and no longer double-check.
+ */
+defaultPref("security.remote_settings.crlite_filters.enabled", true);
+defaultPref("security.OCSP.require", true); // set to hard-fail
+
+/** [SECTION] TLS/SSL */
+lockPref("security.tls.enable_0rtt_data", false); // disable 0 RTT to improve tls 1.3 security
+pref("security.tls.version.enable-deprecated", false); // make TLS downgrades session only by enforcing it with pref()
+// show relevant and advanced issues on warnings and error screens
+defaultPref("browser.ssl_override_behavior", 1);
+defaultPref("browser.xul.error_pages.expert_bad_cert", true);
+
+/** [SECTION] PERMISSIONS */
+lockPref("permissions.delegation.enabled", false); // force permission request to show real origin
+lockPref("permissions.manager.defaultsUrl", ""); // revoke special permissions for some mozilla domains
+
+/** [SECTION] FONTS */
+defaultPref("gfx.font_rendering.opentype_svg.enabled", false); // disale svg opentype fonts
+
+/** [SECTION] SAFE BROWSING
+ * disable safe browsing, including the fetch of updates. reverting the 7 prefs below
+ * allows to perform local checks and to fetch updated lists from google.
+ */
+defaultPref("browser.safebrowsing.malware.enabled", false);
+defaultPref("browser.safebrowsing.phishing.enabled", false);
+defaultPref("browser.safebrowsing.blockedURIs.enabled", false);
+defaultPref("browser.safebrowsing.provider.google4.gethashURL", "");
+defaultPref("browser.safebrowsing.provider.google4.updateURL", "");
+defaultPref("browser.safebrowsing.provider.google.gethashURL", "");
+defaultPref("browser.safebrowsing.provider.google.updateURL", "");
+/**
+ * disable safe browsing checks on downloads, both local and remote. the locked prefs
+ * control remote checks, while the first one is for local checks only.
+ */
+defaultPref("browser.safebrowsing.downloads.enabled", false);
+lockPref("browser.safebrowsing.downloads.remote.enabled", false);
+lockPref("browser.safebrowsing.downloads.remote.url", "");
+lockPref("browser.safebrowsing.downloads.remote.block_potentially_unwanted", false);
+lockPref("browser.safebrowsing.downloads.remote.block_uncommon", false);
+// other safe browsing options, all default but enforce
+lockPref("browser.safebrowsing.passwords.enabled", false);
+lockPref("browser.safebrowsing.provider.google4.dataSharing.enabled", false);
+lockPref("browser.safebrowsing.provider.google4.dataSharingURL", "");
+
+/** [SECTION] OTHERS */
+defaultPref("network.IDN_show_punycode", true); // use punycode in idn to prevent spoofing
+defaultPref("pdfjs.enableScripting", false); // disable js scripting in the built-in pdf reader
+
+
+
+/** [CATEGORY] REGION */
+
+/** [SECTION] LOCATION
+ * replace google with mozilla as the default geolocation provide and prevent use of OS location services
+ */
+defaultPref("geo.provider.network.url", "https://location.services.mozilla.com/v1/geolocate?key=%MOZILLA_API_KEY%");
+lockPref("geo.provider.ms-windows-location", false); // [WINDOWS]
+lockPref("geo.provider.use_corelocation", false); // [MAC]
+lockPref("geo.provider.use_gpsd", false); // [LINUX]
+
+/** [SECTION] LANGUAGE
+ * show language as en-US for all users, regardless of their OS language and browser language.
+ * both prefs must use pref() and not defaultPref to work.
+ */
+pref("javascript.use_us_english_locale", true);
+pref("intl.accept_languages", "en-US, en");
+// disable region specific updates from mozilla
+lockPref("browser.region.network.url", "");
+lockPref("browser.region.update.enabled", false);
+
+
+
+/** [CATEGORY] BEHAVIOR */
+
+/** [SECTION] DRM */
+defaultPref("media.eme.enabled", false); // master switch for drm content
+defaultPref("media.gmp-manager.url", "data:text/plain,"); // prevent checks for plugin updates when drm is disabled
+// disable the widevine and the openh264 plugins
+defaultPref("media.gmp-provider.enabled", false);
+defaultPref("media.gmp-gmpopenh264.enabled", false);
+
+/** [SECTION] SEARCH AND URLBAR
+ * disable search suggestion and do not update opensearch engines.
+ */
+defaultPref("browser.urlbar.suggest.searches", false);
+defaultPref("browser.search.suggest.enabled", false);
+defaultPref("browser.search.update", false);
+/**
+ * the pref disables the whole feature and hide it from the ui
+ * (as noted in https://bugzilla.mozilla.org/show_bug.cgi?id=1755057).
+ * this also includes the best match feature, as it is part of firefox suggest.
+ */
+pref("browser.urlbar.quicksuggest.enabled", false);
+
+/** [SECTION] DOWNLOADS
+ * user interaction should always be required for downloads, as a way to enhance security by asking
+ * the user to specific a certain save location.
+ */
+defaultPref("browser.download.useDownloadDir", false);
+defaultPref("browser.download.autohideButton", false); // do not hide download button automatically
+defaultPref("browser.download.manager.addToRecentDocs", false); // do not add downloads to recents
+defaultPref("browser.download.alwaysOpenPanel", false); // do not expand toolbar menu for every download, we already have enough interaction
+
+/** [SECTION] AUTOPLAY
+ * block autoplay unless element is clicked, and apply the policy to all elements
+ * including muted ones.
+ */
+defaultPref("media.autoplay.blocking_policy", 2);
+defaultPref("media.autoplay.default", 5);
+
+/** [SECTION] POP-UPS AND WINDOWS
+ * disable annoyin pop-ups and limit events that can trigger them.
+ */
+defaultPref("dom.disable_beforeunload", true); // disable "confirm you want to leave" pop-ups
+defaultPref("dom.disable_open_during_load", true); // block pop-ups windows
+defaultPref("dom.popup_allowed_events", "click dblclick mousedown pointerdown");
+/**
+ * prevent scripts from resizing existing windows and opening new ones, by forcing them into
+ * new tabs that can't be resized as well.
+ */
+defaultPref("dom.disable_window_move_resize", true);
+defaultPref("browser.link.open_newwindow", 3);
+defaultPref("browser.link.open_newwindow.restriction", 0);
+
+/** [SECTION] MOUSE */
+defaultPref("middlemouse.contentLoadURL", false); // prevent mouse middle click from opening links
+
+
+
+/** [CATEGORY] EXTENSIONS */
+
+/** [SECTION] USER INSTALLED
+ * extensions are allowed to operate on restricted domains, while their scope
+ * is set to profile+applications (https://mike.kaply.com/2012/02/21/understanding-add-on-scopes/).
+ * an installation prompt should always be displayed.
+ */
+defaultPref("extensions.webextensions.restrictedDomains", "");
+defaultPref("extensions.enabledScopes", 5); // hidden
+defaultPref("extensions.postDownloadThirdPartyPrompt", false);
+
+/** [SECTION] SYSTEM
+ * built-in extension are not allowed to auto-update. additionally the reporter extension
+ * of webcompat is disabled. urls are stripped for defense in depth.
+ */
+defaultPref("extensions.systemAddon.update.enabled", false);
+defaultPref("extensions.systemAddon.update.url", "");
+lockPref("extensions.webcompat-reporter.enabled", false);
+lockPref("extensions.webcompat-reporter.newIssueEndpoint", "");
+
+/** [SECTION] EXTENSION FIREWALL
+ * the firewall can be enabled with the below prefs, but it is not a sane default:
+ * defaultPref("extensions.webextensions.base-content-security-policy", "default-src 'none'; script-src 'none'; object-src 'none';");
+ * defaultPref("extensions.webextensions.base-content-security-policy.v3", "default-src 'none'; script-src 'none'; object-src 'none';");
+ */
+
+
+
+/** [CATEGORY] BUILT-IN FEATURES */
+
+/** [SECTION] UPDATER
+ * since we do not bake auto-updates in the browser it doesn't make sense at the moment.
+ */
+lockPref("app.update.auto", false);
+
+/** [SECTION] SYNC
+ * this functionality is disabled by default but it can be activated in one click.
+ * this pref fully controls the feature, including its ui.
+ */
+defaultPref("identity.fxaccounts.enabled", false);
+
+/** [SECTION] LOCKWISE
+ * disable the default password manager built into the browser, including its autofill
+ * capabilities and formless login capture.
+ */
+defaultPref("signon.rememberSignons", false);
+defaultPref("signon.autofillForms", false);
+defaultPref("extensions.formautofill.available", "off");
+defaultPref("extensions.formautofill.addresses.enabled", false);
+defaultPref("extensions.formautofill.creditCards.enabled", false);
+defaultPref("extensions.formautofill.creditCards.available", false);
+defaultPref("extensions.formautofill.heuristics.enabled", false);
+defaultPref("signon.formlessCapture.enabled", false);
+
+/** [SECTION] CONTAINERS
+ * enable containers and show the settings to control them in the stock ui
+ */
+defaultPref("privacy.userContext.enabled", true);
+defaultPref("privacy.userContext.ui.enabled", true);
+
+/** [SECTION] DEVTOOLS
+ * disable chrome and remote debugging.
+ */
+defaultPref("devtools.chrome.enabled", false);
+defaultPref("devtools.debugger.remote-enabled", false);
+defaultPref("devtools.remote.adb.extensionURL", "");
+defaultPref("devtools.selfxss.count", 0); // required for devtools console to work
+
+/** [SECTION] OTHERS */
+lockPref("browser.translation.engine", ""); // remove translation engine
+defaultPref("accessibility.force_disabled", 1); // block accessibility services
+defaultPref("webchannel.allowObject.urlWhitelist", ""); // do not receive objects through webchannels
+// NOTE/TODO: net really the right category/section, probably?
+defaultPref("services.settings.server", "https://%.invalid") // set the remote settings URL (REMOTE_SETTINGS_SERVER_URL in the code)
+
+
+
+/** [CATEGORY] UI */
+
+/** [SECTION] BRANDING
+ * set librewolf support and releases urls in the UI, so that users land in the proper places.
+ */
+defaultPref("app.support.baseURL", "https://librewolf.net/docs/faq/#");
+defaultPref("browser.search.searchEnginesURL", "https://librewolf.net/docs/faq/#how-do-i-add-a-search-engine");
+defaultPref("browser.geolocation.warning.infoURL", "https://librewolf.net/docs/faq/#how-do-i-enable-location-aware-browsing");
+defaultPref("app.feedback.baseURL", "https://librewolf.net/#questions");
+defaultPref("app.releaseNotesURL", "https://gitlab.com/librewolf-community/browser");
+defaultPref("app.releaseNotesURL.aboutDialog", "https://gitlab.com/librewolf-community/browser");
+defaultPref("app.update.url.details", "https://gitlab.com/librewolf-community/browser");
+defaultPref("app.update.url.manual", "https://gitlab.com/librewolf-community/browser");
+
+/** [SECTION] FIRST LAUNCH
+ * disable what's new and ui tour on first start and updates. the browser
+ * should also not stress user about being the default one.
+ */
+defaultPref("browser.startup.homepage_override.mstone", "ignore");
+defaultPref("startup.homepage_override_url", "about:blank");
+defaultPref("startup.homepage_welcome_url", "about:blank");
+defaultPref("startup.homepage_welcome_url.additional", "");
+lockPref("browser.messaging-system.whatsNewPanel.enabled", false);
+lockPref("browser.uitour.enabled", false);
+lockPref("browser.uitour.url", "");
+defaultPref("browser.shell.checkDefaultBrowser", false);
+
+/** [SECTION] NEW TAB PAGE
+ * we want the new tab page to display nothing but the search bar without anything distracting.
+ */
+defaultPref("browser.newtab.preload", false);
+defaultPref("browser.newtabpage.activity-stream.section.highlights.includeDownloads", false);
+defaultPref("browser.newtabpage.activity-stream.section.highlights.includeVisited", false);
+defaultPref("browser.newtabpage.activity-stream.feeds.topsites", false);
+// hide pocket and sponsored content, from new tab page and search bar
+lockPref("browser.newtabpage.activity-stream.feeds.section.topstories", false);
+lockPref("browser.newtabpage.activity-stream.feeds.system.topstories", false);
+lockPref("browser.newtabpage.activity-stream.feeds.telemetry", false);
+lockPref("browser.newtabpage.activity-stream.feeds.section.topstories.options", "{\"hidden\":true}"); // hide buggy pocket section from about:preferences#home
+lockPref("browser.newtabpage.activity-stream.showSponsored", false);
+lockPref("browser.newtabpage.activity-stream.showSponsoredTopSites", false);
+lockPref("browser.newtabpage.activity-stream.telemetry", false);
+lockPref("browser.newtabpage.activity-stream.default.sites", "");
+lockPref("browser.newtabpage.activity-stream.feeds.discoverystreamfeed", false);
+lockPref("browser.newtabpage.activity-stream.discoverystream.enabled", false);
+lockPref("browser.newtabpage.activity-stream.feeds.snippets", false); // default
+
+/** [SECTION] ABOUT
+ * remove annoying ui elements from the about pages, including about:protections
+ */
+defaultPref("browser.contentblocking.report.lockwise.enabled", false);
+defaultPref("browser.contentblocking.report.monitor.enabled", false);
+lockPref("browser.contentblocking.report.hide_vpn_banner", true);
+lockPref("browser.contentblocking.report.vpn.enabled", false);
+lockPref("browser.contentblocking.report.show_mobile_app", false);
+lockPref("browser.vpn_promo.enabled", false);
+lockPref("browser.promo.focus.enabled", false);
+// ...about:addons recommendations sections and more
+defaultPref("extensions.htmlaboutaddons.recommendations.enabled", false);
+defaultPref("extensions.getAddons.showPane", false);
+defaultPref("extensions.getAddons.cache.enabled", false); // disable fetching of extension metadata
+defaultPref("lightweightThemes.getMoreURL", ""); // disable button to get more themes
+// ...about:preferences#home
+defaultPref("browser.topsites.useRemoteSetting", false); // hide sponsored shortcuts button
+// ...and about:config
+defaultPref("browser.aboutConfig.showWarning", false);
+// hide about:preferences#moreFromMozilla
+defaultPref("browser.preferences.moreFromMozilla", false);
+
+/** [SECTION] RECOMMENDED
+ * disable all "recommend as you browse" activity.
+ */
+lockPref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
+lockPref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
+
+
+
+/** [CATEGORY] TELEMETRY
+ * telemetry is already disabled elsewhere and most of the stuff in here is just for redundancy.
+ */
+lockPref("toolkit.telemetry.unified", false); // master switch
+lockPref("toolkit.telemetry.enabled", false); // master switch
+lockPref("toolkit.telemetry.server", "data:,");
+lockPref("toolkit.telemetry.archive.enabled", false);
+lockPref("toolkit.telemetry.newProfilePing.enabled", false);
+lockPref("toolkit.telemetry.updatePing.enabled", false);
+lockPref("toolkit.telemetry.firstShutdownPing.enabled", false);
+lockPref("toolkit.telemetry.shutdownPingSender.enabled", false);
+lockPref("toolkit.telemetry.shutdownPingSender.enabledFirstSession", false); // default
+lockPref("toolkit.telemetry.bhrPing.enabled", false);
+lockPref("toolkit.telemetry.reportingpolicy.firstRun", false); // default
+lockPref("toolkit.telemetry.cachedClientID", "");
+lockPref("toolkit.telemetry.previousBuildID", "");
+lockPref("toolkit.telemetry.server_owner", "");
+lockPref("toolkit.coverage.opt-out", true); // hidden
+lockPref("toolkit.telemetry.coverage.opt-out", true); // hidden
+lockPref("toolkit.coverage.enabled", false);
+lockPref("toolkit.coverage.endpoint.base", "");
+lockPref("toolkit.crashreporter.infoURL", "");
+lockPref("datareporting.healthreport.uploadEnabled", false);
+lockPref("datareporting.policy.dataSubmissionEnabled", false);
+lockPref("security.protectionspopup.recordEventTelemetry", false);
+lockPref("browser.ping-centre.telemetry", false);
+// opt-out of normandy and studies
+lockPref("app.normandy.enabled", false);
+lockPref("app.normandy.api_url", "");
+lockPref("app.shield.optoutstudies.enabled", false);
+// disable personalized extension recommendations
+lockPref("browser.discovery.enabled", false);
+lockPref("browser.discovery.containers.enabled", false);
+lockPref("browser.discovery.sites", "");
+// disable crash report
+lockPref("browser.tabs.crashReporting.sendReport", false);
+lockPref("breakpad.reportURL", "");
+// disable connectivity checks
+lockPref("network.connectivity-service.enabled", false);
+// disable captive portal
+lockPref("network.captive-portal-service.enabled", false);
+lockPref("captivedetect.canonicalURL", "");
+// prevent sending server side analytics
+lockPref("beacon.enabled", false);
+
+/** [CATEGORY] WINDOWS
+ * the prefs in this section only apply to windows installations and they don't have any
+ * effect on linux, macos and bsd users.
+ */
+
+/** [SECTION] UPDATES
+ * disable windows specific update services.
+ */
+lockPref("app.update.service.enabled", false);
+defaultPref("app.update.background.scheduling.enabled", false);
+
+/** [SECTION] OTHERS */
+lockPref("default-browser-agent.enabled", false); // disable windows specific telemetry
+defaultPref("network.protocol-handler.external.ms-windows-store", false); // prevent links from launching windows store
+lockPref("toolkit.winRegisterApplicationRestart", false); // disable automatic start and session restore after reboot
+lockPref("security.family_safety.mode", 0); // disable win8.1 family safety cert
+defaultPref("network.http.windows-sso.enabled", false); // disable MS auto authentication via sso
+
+
+
+/** [CATEGORY] OVERRIDES
+ * allow settings to be overriden with a file placed in the right location
+ * https://librewolf.net/docs/settings/#where-do-i-find-my-librewolfoverridescfg
+ */
+let profile_directory;
+if (profile_directory = getenv('USERPROFILE') || getenv('HOME')) {
+ defaultPref('autoadmin.global_config_url', `file://${profile_directory}/.librewolf/librewolf.overrides.cfg`);
+}
diff --git a/librewolf.spec b/librewolf.spec
new file mode 100644
index 0000000..b19f0fb
--- /dev/null
+++ b/librewolf.spec
@@ -0,0 +1,2086 @@
+# Produce a build suitable for release, i.e. use PGO/LTO. You can turn it off
+# when building locally to reduce build time.
+%global release_build 1
+
+# Run Mozilla test suite as a part of compile rpm section. Turn off when
+# building locally and don't want to spend 24 hours waiting for results.
+%global run_firefox_tests 0
+%ifarch x86_64 %{ix86}
+%global run_firefox_tests 0
+%endif
+
+# Don't create debuginfo rpm packages. It reduces build time as
+# exctracting debuginfo takes long time.
+%global create_debuginfo 1
+
+# Produce debug (non-optimized) package build. Suitable for debugging only
+# as the build is *very* slow.
+%global debug_build 0
+
+%global system_nss 1
+%global build_with_asan 0
+%global test_on_wayland 1
+
+%if "%{toolchain}" == "clang"
+%global build_with_clang 1
+%else
+%global build_with_clang 0
+%endif
+
+# There are still build problems on s390x, see
+# https://koji.fedoraproject.org/koji/taskinfo?taskID=55048351
+# https://bugzilla.redhat.com/show_bug.cgi?id=1897522
+ExcludeArch: s390x
+
+# Disabled due to
+# https://bugzilla.redhat.com/show_bug.cgi?id=1966949
+%if 0%{?fedora} > 33
+ExcludeArch: armv7hl
+%endif
+
+# Disabled due to
+# https://bugzilla.redhat.com/show_bug.cgi?id=2019160
+%if 0%{?fedora} == 33
+ExcludeArch: aarch64
+%endif
+
+%ifarch armv7hl
+%global create_debuginfo 0
+%endif
+
+# Temporary disabled due to
+# https://bugzilla.redhat.com/show_bug.cgi?id=1951606
+%global enable_mozilla_crashreporter 0
+%ifarch x86_64 %{ix86}
+%global enable_mozilla_crashreporter 1
+%endif
+%if %{build_with_asan}
+%global enable_mozilla_crashreporter 0
+%endif
+%if 0%{?flatpak}
+%global enable_mozilla_crashreporter 0
+%endif
+%if !%{create_debuginfo}
+%define _unpackaged_files_terminate_build 0
+%global debug_package %{nil}
+%global enable_mozilla_crashreporter 0
+%endif
+
+%global system_ffi 1
+%ifarch armv7hl
+%global system_libvpx 1
+%else
+%global system_libvpx 0
+%endif
+%global hardened_build 1
+%global system_jpeg 1
+%global disable_elfhack 1
+%global use_bundled_cbindgen 1
+%if %{debug_build}
+%global release_build 0
+%endif
+# Build PGO+LTO on x86_64 only due to build issues
+# on other arches.
+%global build_with_pgo 0
+%ifarch x86_64
+%if %{release_build}
+%global build_with_pgo 0
+%endif
+%endif
+%if 0%{?flatpak}
+%global build_with_pgo 0
+%endif
+# Big endian platforms
+%ifarch ppc64 s390x
+%global big_endian 1
+%endif
+
+%if 0%{?build_with_pgo}
+%global use_xvfb 1
+%global build_tests 1
+%endif
+
+%if 0%{?run_firefox_tests}
+%global use_xvfb 1
+%global build_tests 1
+%endif
+
+%global launch_wayland_compositor 0
+%if %{build_with_pgo} && %{test_on_wayland}
+%global launch_wayland_compositor 1
+%endif
+%if %{run_firefox_tests} && %{test_on_wayland}
+%global launch_wayland_compositor 1
+%endif
+
+%global default_bookmarks_file %{_datadir}/bookmarks/default-bookmarks.html
+%global firefox_app_id \{ec8030f7-c20a-464f-9b0e-13a3a9e97384\}
+# Minimal required versions
+%global cairo_version 1.13.1
+%global freetype_version 2.1.9
+%global libnotify_version 0.7.0
+%if %{?system_libvpx}
+%global libvpx_version 1.8.2
+%endif
+
+%if %{?system_nss}
+%global nspr_version 4.32
+%global nspr_build_version %{nspr_version}
+%global nss_version 3.78
+%global nss_build_version %{nss_version}
+%endif
+
+%global mozappdir %{_libdir}/librewolf
+%global mozappdirdev %{_libdir}/librewolf-devel-%{version}
+%global langpackdir %{mozappdir}/langpacks
+%global tarballdir firefox-%{version}
+
+%global official_branding 1
+
+%bcond_with langpacks
+
+%if %{with langpacks}
+%if 0%{?fedora} >= 37
+%bcond_with langpacks_subpkg
+%endif
+%endif
+
+%if !%{release_build}
+%global pre_tag .npgo
+%endif
+%if %{build_with_clang}
+%global pre_tag .clang
+%endif
+%if %{build_with_asan}
+%global pre_tag .asan
+%global build_with_pgo 0
+%endif
+%if !%{system_nss}
+%global nss_tag .nss
+%endif
+%if %{debug_build}
+%global pre_tag .debug
+%endif
+
+# Exclude private libraries from autogenerated provides and requires
+%global __provides_exclude_from ^%{mozappdir}
+%global __requires_exclude ^(%%(find %{buildroot}%{mozappdir} -name '*.so' | xargs -n1 basename | sort -u | paste -s -d '|' -))
+
+Summary: Mozilla Firefox Web browser
+Name: librewolf
+%global enable_mozilla_crashreporter 0
+Version: 102.0
+Release: 1%{?pre_tag}%{?dist}
+URL: https://www.mozilla.org/firefox/
+License: MPLv1.1 or GPLv2+ or LGPLv2+
+Source0: https://archive.mozilla.org/pub/firefox/releases/%{version}%{?pre_version}/source/firefox-%{version}%{?pre_version}.source.tar.xz
+%if %{with langpacks}
+Source1: firefox-langpacks-%{version}%{?pre_version}-20220628.tar.xz
+%endif
+Source2: cbindgen-vendor.tar.xz
+Source10: firefox-mozconfig
+Source12: firefox-redhat-default-prefs.js
+Source20: firefox.desktop
+Source21: firefox.sh.in
+Source23: firefox.1
+Source24: mozilla-api-key
+Source25: firefox-symbolic.svg
+Source26: distribution.ini
+Source27: google-api-key
+Source28: firefox-wayland.sh.in
+Source29: firefox-wayland.desktop
+Source30: firefox-x11.sh.in
+Source31: firefox-x11.desktop
+Source32: node-stdout-nonblocking-wrapper
+Source33: firefox.appdata.xml.in
+Source34: firefox-search-provider.ini
+Source35: google-loc-api-key
+%if 0
+Source37: mochitest-python.tar.gz
+%endif
+Source200: uBlock0@raymondhill.net.xpi
+Source38: print_results
+Source39: print-errors
+Source40: run-tests-x11
+Source41: run-tests-wayland
+Source42: psummary
+Source43: print_failures
+Source44: print-error-reftest
+Source45: run-wayland-compositor
+
+# Build patches
+Patch3: mozilla-build-arm.patch
+Patch25: rhbz-1219542-s390-build.patch
+Patch32: build-rust-ppc64le.patch
+Patch35: build-ppc-jit.patch
+# Fixing missing cacheFlush when JS_CODEGEN_NONE is used (s390x)
+Patch38: build-cacheFlush-missing.patch
+Patch40: build-aarch64-skia.patch
+Patch41: build-disable-elfhack.patch
+Patch44: build-arm-libopus.patch
+Patch46: firefox-nss-version.patch
+Patch47: fedora-shebang-build.patch
+Patch49: build-arm-libaom.patch
+Patch53: firefox-gcc-build.patch
+Patch54: mozilla-1669639.patch
+Patch55: firefox-testing.patch
+Patch61: firefox-glibc-dynstack.patch
+Patch62: build-python.patch
+Patch71: 0001-GLIBCXX-fix-for-GCC-12.patch
+Patch75: mozilla-1773336.patch
+
+# Test patches
+# Generate without context by
+# GENDIFF_DIFF_ARGS=-U0 gendiff firefox-xxxx .firefox-tests-xpcshell
+# GENDIFF_DIFF_ARGS=-U0 gendiff firefox-xxxx .firefox-tests-reftest
+Patch100: firefox-tests-xpcshell.patch
+Patch101: firefox-tests-reftest.patch
+Patch102: firefox-tests-xpcshell-freeze.patch
+
+# Fedora specific patches
+Patch215: firefox-enable-addons.patch
+Patch219: rhbz-1173156.patch
+Patch224: mozilla-1170092.patch
+#ARM run-time patch
+Patch226: rhbz-1354671.patch
+Patch228: disable-openh264-download.patch
+Patch229: firefox-nss-addon-hack.patch
+
+# Upstream patches
+Patch402: mozilla-1196777.patch
+Patch407: mozilla-1667096.patch
+Patch408: mozilla-1663844.patch
+Patch415: mozilla-1670333.patch
+
+# VA-API fixes
+Patch423: D147874.diff
+
+# NVIDIA mzbz#1735929
+Patch440: D147635.diff
+Patch441: D147636.diff
+Patch442: D147637.diff
+
+# More upstream fixes
+Patch443: D149135.diff
+Patch444: D148946.diff
+Patch445: D149238.diff
+Patch446: mozilla-1758948.patch
+Patch447: mozilla-1774271.patch
+
+# PGO/LTO patches
+Patch600: pgo.patch
+Patch602: mozilla-1516803.patch
+
+# Backported WebRTC changes for PipeWire/Wayland screen sharing support
+Patch1000: libwebrtc-screen-cast-sync.patch
+
+%if %{?system_nss}
+BuildRequires: pkgconfig(nspr) >= %{nspr_version}
+BuildRequires: pkgconfig(nss) >= %{nss_version}
+BuildRequires: nss-static >= %{nss_version}
+%endif
+BuildRequires: pkgconfig(libpng)
+%if %{?system_jpeg}
+BuildRequires: libjpeg-devel
+%endif
+BuildRequires: zip
+BuildRequires: jack-audio-connection-kit-devel
+BuildRequires: alsa-lib-devel
+BuildRequires: bzip2-devel
+BuildRequires: pkgconfig(zlib)
+BuildRequires: pkgconfig(gtk+-3.0)
+BuildRequires: pkgconfig(gtk+-2.0)
+BuildRequires: pkgconfig(krb5)
+BuildRequires: pkgconfig(pango)
+BuildRequires: pkgconfig(freetype2) >= %{freetype_version}
+BuildRequires: pkgconfig(xt)
+BuildRequires: pkgconfig(xrender)
+BuildRequires: pkgconfig(libstartup-notification-1.0)
+BuildRequires: pkgconfig(libnotify) >= %{libnotify_version}
+BuildRequires: pkgconfig(dri)
+BuildRequires: pkgconfig(libcurl)
+BuildRequires: pkgconfig(alsa)
+BuildRequires: dbus-glib-devel
+%if %{?system_libvpx}
+BuildRequires: libvpx-devel >= %{libvpx_version}
+%endif
+BuildRequires: autoconf213
+BuildRequires: pkgconfig(libpulse)
+BuildRequires: yasm
+BuildRequires: llvm
+BuildRequires: llvm-devel
+BuildRequires: clang
+BuildRequires: clang-libs
+%if %{build_with_clang}
+BuildRequires: lld
+%endif
+
+BuildRequires: pipewire-devel
+
+%if !0%{?use_bundled_cbindgen}
+BuildRequires: cbindgen
+%endif
+BuildRequires: nodejs
+BuildRequires: nasm >= 1.13
+BuildRequires: libappstream-glib
+
+%if 0%{?big_endian}
+BuildRequires: icu
+%endif
+
+Requires: mozilla-filesystem
+Recommends: mozilla-openh264 >= 2.1.1
+%if %{with langpacks_subpkg}
+Recommends: firefox-langpacks = %{version}-%{release}
+%else
+Obsoletes: firefox-langpacks < %{version}-%{release}
+%endif
+Recommends: libva
+Requires: p11-kit-trust
+Requires: pciutils-libs
+%if %{?system_nss}
+Requires: nspr >= %{nspr_build_version}
+Requires: nss >= %{nss_build_version}
+%endif
+BuildRequires: python3-devel
+BuildRequires: python3-setuptools
+%if !0%{?flatpak}
+Requires: u2f-hidraw-policy
+%endif
+
+BuildRequires: desktop-file-utils
+%if !0%{?flatpak}
+BuildRequires: system-bookmarks
+%endif
+%if %{?system_ffi}
+BuildRequires: pkgconfig(libffi)
+%endif
+
+%if 0%{?use_xvfb}
+BuildRequires: xorg-x11-server-Xvfb
+%endif
+BuildRequires: rust
+BuildRequires: cargo
+BuildRequires: clang-devel
+%if %{build_with_asan}
+BuildRequires: libasan
+BuildRequires: libasan-static
+%endif
+BuildRequires: perl-interpreter
+BuildRequires: fdk-aac-free-devel
+%if 0%{?test_on_wayland}
+BuildRequires: mutter
+BuildRequires: gsettings-desktop-schemas
+BuildRequires: gnome-settings-daemon
+BuildRequires: mesa-dri-drivers
+BuildRequires: xorg-x11-server-Xwayland
+BuildRequires: dbus-x11
+BuildRequires: gnome-keyring
+%endif
+%if 0%{?run_firefox_tests}
+BuildRequires: procps-ng
+BuildRequires: nss-tools
+BuildRequires: python2.7
+BuildRequires: dejavu-sans-mono-fonts
+BuildRequires: dejavu-sans-fonts
+BuildRequires: dejavu-serif-fonts
+BuildRequires: dbus-x11
+BuildRequires: gnome-keyring
+BuildRequires: mesa-dri-drivers
+# ----------------------------------------
+BuildRequires: liberation-fonts-common
+BuildRequires: liberation-mono-fonts
+BuildRequires: liberation-sans-fonts
+BuildRequires: liberation-serif-fonts
+# ----------------------------------
+# Missing on f32
+%if 0%{?fedora} > 33
+BuildRequires: google-carlito-fonts
+%endif
+BuildRequires: google-droid-sans-fonts
+BuildRequires: google-noto-fonts-common
+BuildRequires: google-noto-cjk-fonts-common
+BuildRequires: google-noto-sans-cjk-ttc-fonts
+BuildRequires: google-noto-sans-gurmukhi-fonts
+BuildRequires: google-noto-sans-fonts
+BuildRequires: google-noto-emoji-color-fonts
+BuildRequires: google-noto-sans-sinhala-vf-fonts
+# -----------------------------------
+BuildRequires: thai-scalable-fonts-common
+BuildRequires: thai-scalable-waree-fonts
+BuildRequires: khmeros-base-fonts
+BuildRequires: jomolhari-fonts
+# ----------------------------------
+BuildRequires: lohit-tamil-fonts
+BuildRequires: lohit-telugu-fonts
+# ----------------------------------
+BuildRequires: paktype-naskh-basic-fonts
+# faild to build in Koji / f32
+%if 0%{?fedora} > 33
+BuildRequires: pt-sans-fonts
+%endif
+BuildRequires: smc-meera-fonts
+BuildRequires: stix-fonts
+BuildRequires: abattis-cantarell-fonts
+BuildRequires: xorg-x11-fonts-ISO8859-1-100dpi
+BuildRequires: xorg-x11-fonts-misc
+%endif
+BuildRequires: make
+BuildRequires: pciutils-libs
+
+Obsoletes: mozilla <= 37:1.7.13
+Provides: webclient
+
+Source100: librewolf-branding.tgz
+Source101: librewolf.cfg
+Source102: local-settings.js
+Source103: policies.json
+Source104: search-config.json
+Patch900: aboutLogos.patch
+Patch901: allow-ubo-private-mode.patch
+Patch902: bootstrap-without-vcs.patch
+Patch903: context-menu.patch
+Patch904: custom-ubo-assets-bootstrap-location.patch
+Patch905: disable-data-reporting-at-compile-time.patch
+Patch906: faster-package-multi-locale.patch
+Patch907: hide-passwordmgr.patch
+Patch908: librewolf-pref-pane.patch
+Patch909: mozilla_dirs.patch
+Patch910: remove_addons.patch
+Patch911: allow-searchengines-non-esr.patch
+Patch912: disable-pocket.patch
+Patch913: remove-internal-plugin-certs.patch
+Patch914: stop-undesired-requests.patch
+Patch915: handlers.patch
+Patch916: hide-default-browser.patch
+Patch917: lw-logo-devtools.patch
+Patch918: pref-naming.patch
+Patch919: privacy-preferences.patch
+Patch920: remap-links.patch
+Patch921: remove-branding-urlbar.patch
+Patch922: remove-cfrprefs.patch
+Patch923: remove-organization-policy-banner.patch
+Patch924: remove-snippets-from-home.patch
+Patch925: sanitizing-description.patch
+Patch926: website-appearance-ui-rfp.patch
+Patch927: urlbarprovider-interventions.patch
+
+%description
+Mozilla Firefox is an open-source web browser, designed for standards
+compliance, performance and portability.
+
+%if %{with langpacks_subpkg}
+%package langpacks
+Summary: Firefox langpacks
+Requires: %{name} = %{version}-%{release}
+%description langpacks
+The firefox-langpacks package contains all the localization
+and translations langpack add-ons.
+%files langpacks -f %{name}.lang
+%dir %{langpackdir}
+%endif
+
+%package x11
+Summary: LibreWolf X11 launcher.
+Requires: %{name}
+%description x11
+The librewolf-x11 package contains launcher and desktop file
+to run LibreWolf explicitly on X11.
+%files x11
+%{_bindir}/librewolf-x11
+%{_datadir}/applications/librewolf-x11.desktop
+
+%package wayland
+Summary: LibreWolf Wayland launcher.
+Requires: %{name}
+%description wayland
+The librewolf-wayland package contains launcher and desktop file
+to run LibreWolf explicitly on Wayland.
+%files wayland
+%{_bindir}/librewolf-wayland
+%{_datadir}/applications/librewolf-wayland.desktop
+
+%if 0%{?run_firefox_tests}
+%global testsuite_pkg_name %{name}-testresults
+%package -n %{testsuite_pkg_name}
+Summary: Results of testsuite
+%description -n %{testsuite_pkg_name}
+This package contains results of tests executed during build.
+%files -n %{testsuite_pkg_name}
+/%{version}-%{release}/test_results
+/%{version}-%{release}/test_summary.txt
+/%{version}-%{release}/failures-*
+%endif
+
+#---------------------------------------------------------------------
+
+%prep
+%setup -q -n %{tarballdir}
+
+# Build patches, can't change backup suffix from default because during build
+# there is a compare of config and js/config directories and .orig suffix is
+# ignored during this compare.
+
+%ifarch s390
+%patch25 -p1 -b .rhbz-1219542-s390
+%endif
+%patch40 -p1 -b .aarch64-skia
+%if 0%{?disable_elfhack}
+%patch41 -p1 -b .disable-elfhack
+%endif
+%patch3 -p1 -b .arm
+%patch44 -p1 -b .build-arm-libopus
+%patch47 -p1 -b .fedora-shebang
+%patch49 -p1 -b .build-arm-libaom
+%patch53 -p1 -b .firefox-gcc-build
+%patch54 -p1 -b .1669639
+%patch71 -p1 -b .0001-GLIBCXX-fix-for-GCC-12
+# Needs for new cbindgen only
+%patch75 -p1 -b .1773336
+
+# Test patches
+#%patch100 -p1 -b .firefox-tests-xpcshell
+#%patch101 -p1 -b .firefox-tests-reftest
+%patch102 -p1 -b .firefox-tests-xpcshell-freeze
+
+# Fedora patches
+%patch215 -p1 -b .addons
+%patch219 -p1 -b .rhbz-1173156
+%patch224 -p1 -b .1170092
+#ARM run-time patch
+%ifarch aarch64
+%patch226 -p1 -b .1354671
+%endif
+%patch228 -p1 -b .disable-openh264-download
+%patch229 -p1 -b .firefox-nss-addon-hack
+
+%patch402 -p1 -b .1196777
+%patch407 -p1 -b .1667096
+%patch408 -p1 -b .1663844
+%patch415 -p1 -b .1670333
+
+# VA-API fixes
+%patch423 -p1 -b .D147874.diff
+
+# NVIDIA mzbz#1735929
+%patch440 -p1 -b .D147635.diff
+%patch441 -p1 -b .D147636.diff
+%patch442 -p1 -b .D147637.diff
+%patch443 -p1 -b .D149135.diff
+
+# More VA-API fixes
+%patch444 -p1 -b .D148946.diff
+%patch445 -p1 -b .D149238.diff
+%patch446 -p1 -b .mozbz#1758948
+%patch447 -p1 -b .mozbz#1774271
+
+# PGO patches
+%if %{build_with_pgo}
+%if !%{build_with_clang}
+%patch600 -p1 -b .pgo
+%patch602 -p1 -b .1516803
+%endif
+%endif
+
+%patch1000 -p1 -b .libwebrtc-screen-cast-sync
+
+export MOZ_NOSPAM=1
+( cd browser ; tar -zxf %{SOURCE100} )
+%{__rm} -f .mozconfig
+%patch900 -p1
+%patch901 -p1
+%patch902 -p1
+%patch903 -p1
+%patch904 -p1
+%patch905 -p1
+%patch906 -p1
+%patch907 -p1
+%patch908 -p1
+%patch909 -p1
+%patch910 -p1
+%patch911 -p1
+%patch912 -p1
+%patch913 -p1
+%patch914 -p1
+%patch915 -p1
+%patch916 -p1
+%patch917 -p1
+%patch918 -p1
+%patch919 -p1
+%patch920 -p1
+%patch921 -p1
+%patch922 -p1
+%patch923 -p1
+%patch924 -p1
+%patch925 -p1
+%patch926 -p1
+%patch927 -p1
+sed -i '/"pocket"/d' browser/components/moz.build
+sed -i "/SaveToPocket\.init/d" browser/components/BrowserGlue.jsm
+sed -i -r -e '/organizationalUnit.{0,5}=.{0,5}Mozilla/{N;N;N;d}' toolkit/mozapps/extensions/internal/XPIInstall.jsm
+sed -i -r -e '/enterprise_only/s#true#false#g;' browser/components/enterprisepolicies/schemas/policies-schema.json
+_settings_services_sed='s#firefox.settings.services.mozilla.com#f.s.s.m.c.qjz9zk#g'
+sed -e "${_settings_services_sed}" -i browser/components/newtab/data/content/activity-stream.bundle.js
+sed -e "${_settings_services_sed}" -i modules/libpref/init/all.js
+sed -e "${_settings_services_sed}" -i services/settings/Utils.jsm
+sed -e "${_settings_services_sed}" -i toolkit/components/search/SearchUtils.jsm
+%{__cp} %{SOURCE10} .mozconfig
+echo "ac_add_options --enable-default-toolkit=cairo-gtk3-wayland" >> .mozconfig
+%if %{official_branding}
+echo "ac_add_options --enable-official-branding" >> .mozconfig
+%endif
+%{__cp} %{SOURCE24} mozilla-api-key
+%{__cp} %{SOURCE27} google-api-key
+%{__cp} %{SOURCE35} google-loc-api-key
+
+echo "ac_add_options --prefix=\"%{_prefix}\"" >> .mozconfig
+echo "ac_add_options --libdir=\"%{_libdir}\"" >> .mozconfig
+
+%if %{?system_nss}
+echo "ac_add_options --with-system-nspr" >> .mozconfig
+echo "ac_add_options --with-system-nss" >> .mozconfig
+%else
+echo "ac_add_options --without-system-nspr" >> .mozconfig
+echo "ac_add_options --without-system-nss" >> .mozconfig
+%endif
+
+%if %{?system_ffi}
+echo "ac_add_options --enable-system-ffi" >> .mozconfig
+%endif
+
+%ifarch %{arm}
+echo "ac_add_options --disable-elf-hack" >> .mozconfig
+%endif
+
+%if %{?debug_build}
+echo "ac_add_options --disable-debug" >> .mozconfig
+echo "ac_add_options --disable-optimize" >> .mozconfig
+%else
+%global optimize_flags "none"
+%ifarch ppc64le aarch64
+%global optimize_flags "-g -O2"
+%endif
+%if %{optimize_flags} != "none"
+echo 'ac_add_options --enable-optimize=%{?optimize_flags}' >> .mozconfig
+%else
+echo 'ac_add_options --enable-optimize' >> .mozconfig
+%endif
+echo "ac_add_options --disable-debug" >> .mozconfig
+%endif
+
+# Second arches fail to start with jemalloc enabled
+%ifnarch %{ix86} x86_64
+echo "ac_add_options --disable-jemalloc" >> .mozconfig
+%endif
+
+%if 0%{?build_tests}
+echo "ac_add_options --disable-tests" >> .mozconfig
+%else
+echo "ac_add_options --disable-tests" >> .mozconfig
+%endif
+
+%if !%{?system_jpeg}
+echo "ac_add_options --without-system-jpeg" >> .mozconfig
+%else
+echo "ac_add_options --with-system-jpeg" >> .mozconfig
+%endif
+
+%if %{?system_libvpx}
+echo "ac_add_options --with-system-libvpx" >> .mozconfig
+%else
+echo "ac_add_options --without-system-libvpx" >> .mozconfig
+%endif
+
+%ifarch s390 s390x
+echo "ac_add_options --disable-jit" >> .mozconfig
+%endif
+
+%if %{build_with_asan}
+echo "ac_add_options --enable-address-sanitizer" >> .mozconfig
+echo "ac_add_options --disable-jemalloc" >> .mozconfig
+%endif
+
+%if !%{enable_mozilla_crashreporter}
+echo "ac_add_options --disable-crashreporter" >> .mozconfig
+%endif
+
+# api keys full path
+echo "ac_add_options --with-mozilla-api-keyfile=`pwd`/mozilla-api-key" >> .mozconfig
+# It seems that the api key we have is for the safe browsing only
+echo "ac_add_options --with-google-location-service-api-keyfile=`pwd`/google-loc-api-key" >> .mozconfig
+echo "ac_add_options --with-google-safebrowsing-api-keyfile=`pwd`/google-api-key" >> .mozconfig
+
+echo 'export NODEJS="%{_buildrootdir}/bin/node-stdout-nonblocking-wrapper"' >> .mozconfig
+
+# Remove executable bit to make brp-mangle-shebangs happy.
+chmod -x third_party/rust/itertools/src/lib.rs
+chmod a-x third_party/rust/ash/src/extensions/ext/*.rs
+chmod a-x third_party/rust/ash/src/extensions/khr/*.rs
+chmod a-x third_party/rust/ash/src/extensions/nv/*.rs
+
+#---------------------------------------------------------------------
+
+cp -p %{SOURCE104} %{_builddir}/%{tarballdir}/services/settings/dumps/main/
+%build
+# Disable LTO to work around rhbz#1883904
+%define _lto_cflags %{nil}
+
+%if 0%{?use_bundled_cbindgen}
+mkdir -p my_rust_vendor
+cd my_rust_vendor
+%{__tar} xf %{SOURCE2}
+mkdir -p .cargo
+cat > .cargo/config <<EOL
+[source.crates-io]
+replace-with = "vendored-sources"
+
+[source.vendored-sources]
+directory = "`pwd`"
+EOL
+
+env CARGO_HOME=.cargo cargo install cbindgen
+export PATH=`pwd`/.cargo/bin:$PATH
+cd -
+%endif
+
+mkdir %{_buildrootdir}/bin || :
+cp %{SOURCE32} %{_buildrootdir}/bin || :
+
+# Update the various config.guess to upstream release for aarch64 support
+# Do not update config.guess in the ./third_party/rust because that would break checksums
+find ./ -path ./third_party/rust -prune -o -name config.guess -exec cp /usr/lib/rpm/config.guess {} ';'
+
+MOZ_OPT_FLAGS=$(echo "%{optflags}" | %{__sed} -e 's/-Wall//')
+#rhbz#1037063
+# -Werror=format-security causes build failures when -Wno-format is explicitly given
+# for some sources
+# Explicitly force the hardening flags for Firefox so it passes the checksec test;
+# See also https://fedoraproject.org/wiki/Changes/Harden_All_Packages
+%if 0%{?fedora} < 30
+MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -Wformat-security -Wformat -Werror=format-security"
+%else
+# Workaround for mozbz#1531309
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-Werror=format-security//')
+%endif
+%if 0%{?fedora} > 30
+MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fpermissive"
+%endif
+%if %{?hardened_build}
+MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fPIC -Wl,-z,relro -Wl,-z,now"
+%endif
+%if %{?debug_build}
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-O2//')
+%endif
+%ifarch s390
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g1/')
+# If MOZ_DEBUG_FLAGS is empty, firefox's build will default it to "-g" which
+# overrides the -g1 from line above and breaks building on s390/arm
+# (OOM when linking, rhbz#1238225)
+export MOZ_DEBUG_FLAGS=" "
+%endif
+%ifarch %{arm} %{ix86}
+MOZ_OPT_FLAGS=$(echo "$MOZ_OPT_FLAGS" | %{__sed} -e 's/-g/-g0/')
+export MOZ_DEBUG_FLAGS=" "
+%endif
+%if !%{build_with_clang}
+%ifarch s390 ppc aarch64 %{ix86}
+MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--reduce-memory-overheads"
+%endif
+%ifarch %{arm}
+MOZ_LINK_FLAGS="-Wl,--no-keep-memory -Wl,--strip-debug"
+echo "ac_add_options --enable-linker=gold" >> .mozconfig
+%endif
+%endif
+%if 0%{?flatpak}
+# Make sure the linker can find libraries in /app/lib64 as we don't use
+# __global_ldflags that normally sets this.
+MOZ_LINK_FLAGS="$MOZ_LINK_FLAGS -L%{_libdir}"
+%endif
+%ifarch %{arm} %{ix86} %{s390x}
+export RUSTFLAGS="-Cdebuginfo=0"
+%endif
+%if %{build_with_asan}
+MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -fsanitize=address -Dxmalloc=myxmalloc"
+MOZ_LINK_FLAGS="$MOZ_LINK_FLAGS -fsanitize=address -ldl"
+%endif
+
+# We don't wantfirefox to use CK_GCM_PARAMS_V3 in nss
+MOZ_OPT_FLAGS="$MOZ_OPT_FLAGS -DNSS_PKCS11_3_0_STRICT"
+
+echo "export CFLAGS=\"$MOZ_OPT_FLAGS\"" >> .mozconfig
+echo "export CXXFLAGS=\"$MOZ_OPT_FLAGS\"" >> .mozconfig
+echo "export LDFLAGS=\"$MOZ_LINK_FLAGS\"" >> .mozconfig
+
+%if %{build_with_clang}
+echo "export LLVM_PROFDATA=\"llvm-profdata\"" >> .mozconfig
+echo "export AR=\"llvm-ar\"" >> .mozconfig
+echo "export NM=\"llvm-nm\"" >> .mozconfig
+echo "export RANLIB=\"llvm-ranlib\"" >> .mozconfig
+echo "ac_add_options --enable-linker=lld" >> .mozconfig
+%else
+echo "export CC=gcc" >> .mozconfig
+echo "export CXX=g++" >> .mozconfig
+echo "export AR=\"gcc-ar\"" >> .mozconfig
+echo "export NM=\"gcc-nm\"" >> .mozconfig
+echo "export RANLIB=\"gcc-ranlib\"" >> .mozconfig
+%endif
+%if 0%{?build_with_pgo}
+echo "ac_add_options MOZ_PGO=1" >> .mozconfig
+# PGO build doesn't work with ccache
+export CCACHE_DISABLE=1
+%endif
+
+echo "ac_add_options --enable-hardening" >> .mozconfig
+echo "ac_add_options --enable-rust-simd" >> .mozconfig
+echo "ac_add_options --with-app-name=librewolf" >> .mozconfig
+echo "ac_add_options --with-app-basename=LibreWolf" >> .mozconfig
+echo "ac_add_options --disable-default-browser-agent" >> .mozconfig
+echo "ac_add_options --with-branding=browser/branding/librewolf" >> .mozconfig
+echo "ac_add_options --with-branding=browser/branding/librewolf" >> .mozconfig
+echo "ac_add_options --with-distribution-id=io.gitlab.librewolf-community" >> .mozconfig
+echo "ac_add_options --with-unsigned-addon-scopes=app,system" >> .mozconfig
+echo "ac_add_options --enable-alsa" >> .mozconfig
+echo "ac_add_options --enable-jack" >> .mozconfig
+echo "export MOZ_REQUIRE_SIGNING=" >> .mozconfig
+echo "ac_add_options --disable-updater" >> .mozconfig
+echo "mk_add_options MOZ_CRASHREPORTER=0" >> .mozconfig
+echo "mk_add_options MOZ_DATA_REPORTING=0" >> .mozconfig
+echo "mk_add_options MOZ_SERVICES_HEALTHREPORT=0" >> .mozconfig
+echo "mk_add_options MOZ_TELEMETRY_REPORTING=0" >> .mozconfig
+MOZ_SMP_FLAGS=-j1
+# On x86_64 architectures, Mozilla can build up to 4 jobs at once in parallel,
+# however builds tend to fail on other arches when building in parallel.
+%ifarch %{ix86} s390x %{arm} aarch64
+[ -z "$RPM_BUILD_NCPUS" ] && \
+ RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
+[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2
+%endif
+%ifarch x86_64 ppc ppc64 ppc64le
+[ -z "$RPM_BUILD_NCPUS" ] && \
+ RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"
+[ "$RPM_BUILD_NCPUS" -ge 2 ] && MOZ_SMP_FLAGS=-j2
+[ "$RPM_BUILD_NCPUS" -ge 4 ] && MOZ_SMP_FLAGS=-j4
+[ "$RPM_BUILD_NCPUS" -ge 8 ] && MOZ_SMP_FLAGS=-j8
+[ "$RPM_BUILD_NCPUS" -ge 16 ] && MOZ_SMP_FLAGS=-j16
+[ "$RPM_BUILD_NCPUS" -ge 24 ] && MOZ_SMP_FLAGS=-j24
+[ "$RPM_BUILD_NCPUS" -ge 32 ] && MOZ_SMP_FLAGS=-j32
+[ "$RPM_BUILD_NCPUS" -ge 64 ] && MOZ_SMP_FLAGS=-j64
+%endif
+
+echo "mk_add_options MOZ_MAKE_FLAGS=\"$MOZ_SMP_FLAGS\"" >> .mozconfig
+echo "mk_add_options MOZ_SERVICES_SYNC=1" >> .mozconfig
+echo "export STRIP=/bin/true" >> .mozconfig
+#export MACH_USE_SYSTEM_PYTHON=1
+
+%if %{launch_wayland_compositor}
+cp %{SOURCE45} .
+. ./run-wayland-compositor
+%endif
+
+%if %{build_with_pgo}
+%if %{test_on_wayland}
+env | grep "WAYLAND"
+MOZ_ENABLE_WAYLAND=1 ./mach build -v 2>&1 | cat - || exit 1
+%else
+xvfb-run ./mach build -v 2>&1 | cat - || exit 1
+%endif
+%else
+./mach build -v 2>&1 | cat - || exit 1
+%endif
+
+#---------------------------------------------------------------------
+%install
+# run Firefox test suite
+export MACH_USE_SYSTEM_PYTHON=1
+%if %{launch_wayland_compositor}
+cp %{SOURCE45} .
+. ./run-wayland-compositor
+%endif
+
+%if 0%{?run_firefox_tests}
+mkdir -p objdir/_virtualenvs/init_py3
+%{__cat} > objdir/_virtualenvs/init_py3/pip.conf << EOF
+[global]
+find-links=`pwd`/mochitest-python
+no-index=true
+EOF
+tar xf %{SOURCE37}
+cp %{SOURCE40} %{SOURCE41} %{SOURCE42} %{SOURCE38} %{SOURCE39} %{SOURCE43} %{SOURCE44} .
+mkdir -p test_results
+%if %{test_on_wayland}
+./run-tests-wayland || true
+%else
+./run-tests-x11 || true
+%endif
+./print_results > test_summary.txt 2>&1 || true
+./print_failures || true
+%endif
+
+# set up our default bookmarks
+%if 0
+%{__cp} -p %{default_bookmarks_file} objdir/dist/bin/browser/chrome/browser/content/browser/default-bookmarks.html
+%endif
+
+mkdir -p %{buildroot}%{mozappdir}/browser/extensions
+cp -p %{SOURCE200} %{buildroot}%{mozappdir}/browser/extensions/
+DESTDIR=%{buildroot} make -C objdir install
+
+%{__mkdir_p} %{buildroot}{%{_libdir},%{_bindir},%{_datadir}/applications}
+_seds="s/Firefox/LibreWolf/g;s/firefox/librewolf/g;"
+S20="$( basename "%{SOURCE20}" | sed -r -e ${_seds} )"
+S31="$( basename "%{SOURCE31}" | sed -r -e ${_seds} )"
+S29="$( basename "%{SOURCE29}" | sed -r -e ${_seds} )"
+sed -r %{SOURCE20} -e ${_seds} > ${S20}
+sed -r %{SOURCE31} -e ${_seds} > ${S31}
+sed -r %{SOURCE29} -e ${_seds} > ${S29}
+
+desktop-file-install --dir %{buildroot}%{_datadir}/applications ${S20}
+desktop-file-install --dir %{buildroot}%{_datadir}/applications ${S31}
+desktop-file-install --dir %{buildroot}%{_datadir}/applications ${S29}
+
+# set up the librewolf start script
+%{__rm} -rf %{buildroot}%{_bindir}/librewolf
+%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE21} > %{buildroot}%{_bindir}/librewolf
+%{__sed} -i %{buildroot}%{_bindir}/librewolf \
+ -e "${_seds}" \
+ -e "/restorecon/{s/.mozilla\/firefox/.librewolf/;}"
+%{__chmod} 755 %{buildroot}%{_bindir}/librewolf
+
+%if 0%{?flatpak}
+sed -i -e 's|%FLATPAK_ENV_VARS%|export TMPDIR="$XDG_CACHE_HOME/tmp"|' %{buildroot}%{_bindir}/librewolf
+%else
+sed -i -e 's|%FLATPAK_ENV_VARS%||' %{buildroot}%{_bindir}/librewolf
+%endif
+
+%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE30} > %{buildroot}%{_bindir}/librewolf-x11
+%{__chmod} 755 %{buildroot}%{_bindir}/librewolf-x11
+%{__sed} -e 's,/__PREFIX__,%{_prefix},g' %{SOURCE28} > %{buildroot}%{_bindir}/librewolf-wayland
+%{__chmod} 755 %{buildroot}%{_bindir}/librewolf-wayland
+
+%{__cp} -p %{SOURCE101} %{buildroot}/%{mozappdir}/
+%{__install} -p -D -m 0644 %{SOURCE102} %{buildroot}/%{mozappdir}/defaults/pref/local-settings.js
+%{__install} -p -D -m 0644 %{SOURCE103} %{buildroot}/%{mozappdir}/distribution/policies.json
+%{__install} -p -D -m 644 %{SOURCE23} %{buildroot}%{_mandir}/man1/librewolf.1
+
+%{__rm} -f %{buildroot}/%{mozappdir}/librewolf-config
+%{__rm} -f %{buildroot}/%{mozappdir}/update-settings.ini
+
+for s in 16 32 48 64 128; do
+ %{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps
+ %{__cp} -p browser/branding/librewolf/default${s}.png \
+ %{buildroot}%{_datadir}/icons/hicolor/${s}x${s}/apps/librewolf.png
+done
+
+# Install hight contrast icon
+%{__mkdir_p} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
+%{__cp} -p %{SOURCE25} \
+ %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps/$( basename %{SOURCE25} | sed -r -e "${_seds}" )
+
+echo > %{name}.lang
+%if %{with langpacks}
+# Extract langpacks, make any mods needed, repack the langpack, and install it.
+%{__mkdir_p} %{buildroot}%{langpackdir}
+%{__tar} xf %{SOURCE1}
+for langpack in `ls firefox-langpacks/*.xpi`; do
+ language=`basename $langpack .xpi`
+ extensionID=langpack-$language@firefox.mozilla.org
+ %{__mkdir_p} $extensionID
+ unzip -qq $langpack -d $extensionID
+ find $extensionID -type f | xargs chmod 644
+
+ cd $extensionID
+ zip -qq -r9mX ../${extensionID}.xpi *
+ cd -
+
+ %{__install} -m 644 ${extensionID}.xpi %{buildroot}%{langpackdir}
+ language=`echo $language | sed -e 's/-/_/g'`
+%if 0%{?flatpak}
+ echo "%{langpackdir}/${extensionID}.xpi" >> %{name}.lang
+%else
+ echo "%%lang($language) %{langpackdir}/${extensionID}.xpi" >> %{name}.lang
+%endif
+done
+%{__rm} -rf firefox-langpacks
+
+# Install langpack workaround (see #707100, #821169)
+function create_default_langpack() {
+language_long=$1
+language_short=$2
+cd %{buildroot}%{langpackdir}
+ln -s langpack-$language_long@firefox.mozilla.org.xpi langpack-$language_short@firefox.mozilla.org.xpi
+cd -
+echo "%%lang($language_short) %{langpackdir}/langpack-$language_short@firefox.mozilla.org.xpi" >> %{name}.lang
+}
+
+# Table of fallbacks for each language
+# please file a bug at bugzilla.redhat.com if the assignment is incorrect
+#create_default_langpack "bn-IN" "bn"
+create_default_langpack "es-AR" "es"
+create_default_langpack "fy-NL" "fy"
+create_default_langpack "ga-IE" "ga"
+create_default_langpack "gu-IN" "gu"
+create_default_langpack "hi-IN" "hi"
+create_default_langpack "hy-AM" "hy"
+create_default_langpack "nb-NO" "nb"
+create_default_langpack "nn-NO" "nn"
+create_default_langpack "pa-IN" "pa"
+create_default_langpack "pt-PT" "pt"
+create_default_langpack "sv-SE" "sv"
+create_default_langpack "zh-TW" "zh"
+%endif
+
+%{__mkdir_p} %{buildroot}/%{mozappdir}/browser/defaults/preferences
+
+# System config dir
+%{__mkdir_p} %{buildroot}/%{_sysconfdir}/%{name}/pref
+
+# System extensions
+%{__mkdir_p} %{buildroot}%{_datadir}/mozilla/extensions/%{firefox_app_id}
+%{__mkdir_p} %{buildroot}%{_libdir}/mozilla/extensions/%{firefox_app_id}
+
+# Copy over the LICENSE
+%{__install} -p -c -m 644 LICENSE %{buildroot}/%{mozappdir}
+
+# Use the system hunspell dictionaries
+%{__rm} -rf %{buildroot}%{mozappdir}/dictionaries
+%if 0%{?fedora} > 35
+ln -s %{_datadir}/hunspell %{buildroot}%{mozappdir}/dictionaries
+%else
+ln -s %{_datadir}/myspell %{buildroot}%{mozappdir}/dictionaries
+%endif
+
+%if 0%{?run_firefox_tests}
+%{__mkdir_p} %{buildroot}/%{version}-%{release}/test_results
+%{__cp} test_results/* %{buildroot}/%{version}-%{release}/test_results
+%{__cp} test_summary.txt %{buildroot}/%{version}-%{release}/
+%{__cp} failures-* %{buildroot}/%{version}-%{release}/ || true
+%endif
+
+# Default
+%{__cp} %{SOURCE12} %{buildroot}%{mozappdir}/browser/defaults/preferences
+
+# Since Fedora 36 the location of dictionaries has changed to /usr/share/hunspell.
+# For backward spec compatibility we set the old path in previous versions.
+# TODO remove when Fedora 35 becomes obsolete
+%if 0%{?fedora} <= 35
+sed -i -e 's|/usr/share/hunspell|/usr/share/myspell|g' %{buildroot}%{mozappdir}/browser/defaults/preferences/firefox-redhat-default-prefs.js
+%endif
+
+# Copy over run-mozilla.sh
+%{__cp} build/unix/run-mozilla.sh %{buildroot}%{mozappdir}
+
+# Add distribution.ini
+%{__mkdir_p} %{buildroot}%{mozappdir}/distribution
+%{__cp} %{SOURCE26} %{buildroot}%{mozappdir}/distribution
+cat > distribution.ini <<END
+[Global]
+id=io.gitlab.librewolf-community
+version=1.0
+about=LibreWolf
+
+[Preferences]
+app.distributor="LibreWolf Community"
+app.distributor.channel=librewolf
+app.partner.librewolf=librewolf
+END
+install -Dvm644 distribution.ini %{buildroot}%{mozappdir}/distribution
+
+# Install appdata file
+mkdir -p %{buildroot}%{_datadir}/metainfo
+%{__sed} -e "s/__VERSION__/%{version}/" \
+ -e "s/__DATE__/$(date '+%F')/" \
+ %{SOURCE33} > %{buildroot}%{_datadir}/metainfo/librewolf.appdata.xml
+
+# Install Gnome search provider files
+mkdir -p %{buildroot}%{_datadir}/gnome-shell/search-providers
+%{__cp} %{SOURCE34} %{buildroot}%{_datadir}/gnome-shell/search-providers
+
+# Remove gtk2 support as flash plugin is no longer supported
+rm -rf %{buildroot}%{mozappdir}/gtk2/
+
+# Remove copied libraries to speed up build
+rm -f %{buildroot}%{mozappdirdev}/sdk/lib/libmozjs.so
+rm -f %{buildroot}%{mozappdirdev}/sdk/lib/libmozalloc.so
+rm -f %{buildroot}%{mozappdirdev}/sdk/lib/libxul.so
+
+# Create a symlink to replace libnssckbi.so with p11-kit-client.so
+# instead of p11-kit-trust.so, so that Firefox can see the system
+# trust store on the host through the p11-kit RPC protocol. A symlink
+# to libnss3.so is also needed, because Firefox tries to load
+# libnssckbi.so from the same directory where libnss3.so is loaded (as
+# of Firefox 89).
+%if 0%{?flatpak}
+ln -sf /usr/lib64/libnss3.so %{buildroot}%{_libdir}/libnss3.so
+ln -sf /usr/lib64/pkcs11/p11-kit-client.so %{buildroot}%{_libdir}/libnssckbi.so
+%endif
+#---------------------------------------------------------------------
+
+# Moves defaults/preferences to browser/defaults/preferences
+%pretrans -p <lua>
+require 'posix'
+require 'os'
+if (posix.stat("%{mozappdir}/browser/defaults/preferences", "type") == "link") then
+ posix.unlink("%{mozappdir}/browser/defaults/preferences")
+ posix.mkdir("%{mozappdir}/browser/defaults/preferences")
+ if (posix.stat("%{mozappdir}/defaults/preferences", "type") == "directory") then
+ for i,filename in pairs(posix.dir("%{mozappdir}/defaults/preferences")) do
+ os.rename("%{mozappdir}/defaults/preferences/"..filename, "%{mozappdir}/browser/defaults/preferences/"..filename)
+ end
+ f = io.open("%{mozappdir}/defaults/preferences/README","w")
+ if f then
+ f:write("Content of this directory has been moved to %{mozappdir}/browser/defaults/preferences.")
+ f:close()
+ end
+ end
+end
+
+%check
+appstream-util validate-relax --nonet %{buildroot}%{_datadir}/metainfo/*.appdata.xml
+
+%preun
+# is it a final removal?
+if [ $1 -eq 0 ]; then
+ %{__rm} -rf %{mozappdir}/components
+ %{__rm} -rf %{mozappdir}/extensions
+ %{__rm} -rf %{mozappdir}/plugins
+ %{__rm} -rf %{langpackdir}
+fi
+
+%post
+update-desktop-database &> /dev/null || :
+touch --no-create %{_datadir}/icons/hicolor &>/dev/null || :
+
+%postun
+update-desktop-database &> /dev/null || :
+if [ $1 -eq 0 ] ; then
+ touch --no-create %{_datadir}/icons/hicolor &>/dev/null
+ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+fi
+
+%posttrans
+gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
+
+%if %{with langpacks_subpkg}
+%files
+%else
+%files -f %{name}.lang
+%{mozappdir}/defaults/pref/local-settings.js
+%{mozappdir}/distribution/policies.json
+%{mozappdir}/librewolf.cfg
+%{mozappdir}/browser/extensions/*.xpi
+%endif
+%{_bindir}/librewolf
+%{mozappdir}/librewolf
+%{mozappdir}/librewolf-bin
+%doc %{_mandir}/man1/*
+%dir %{_sysconfdir}/%{name}
+%dir %{_sysconfdir}/%{name}/*
+%dir %{_datadir}/mozilla/extensions/*
+%dir %{_libdir}/mozilla/extensions/*
+%{_datadir}/applications/%{name}.desktop
+%{_datadir}/metainfo/*.appdata.xml
+%{_datadir}/gnome-shell/search-providers/*.ini
+%dir %{mozappdir}
+%license %{mozappdir}/LICENSE
+%{mozappdir}/browser/chrome
+%{mozappdir}/browser/defaults/preferences/firefox-redhat-default-prefs.js
+%{mozappdir}/browser/features/*.xpi
+%{mozappdir}/distribution/distribution.ini
+# That's Windows only
+%ghost %{mozappdir}/browser/features/aushelper@mozilla.org.xpi
+%if %{without langpacks_subpkg}
+%if %{with langpacks}
+%dir %{langpackdir}
+%endif
+%endif
+%{mozappdir}/browser/omni.ja
+%{mozappdir}/run-mozilla.sh
+%{mozappdir}/application.ini
+%{mozappdir}/pingsender
+%exclude %{mozappdir}/removed-files
+%if 0%{?flatpak}
+%{_libdir}/libnss3.so
+%{_libdir}/libnssckbi.so
+%endif
+%{_datadir}/icons/hicolor/16x16/apps/librewolf.png
+%{_datadir}/icons/hicolor/64x64/apps/librewolf.png
+%{_datadir}/icons/hicolor/128x128/apps/librewolf.png
+%{_datadir}/icons/hicolor/32x32/apps/librewolf.png
+%{_datadir}/icons/hicolor/48x48/apps/librewolf.png
+%{_datadir}/icons/hicolor/symbolic/apps/librewolf-symbolic.svg
+%if %{enable_mozilla_crashreporter}
+%{mozappdir}/crashreporter
+%{mozappdir}/crashreporter.ini
+%{mozappdir}/minidump-analyzer
+%{mozappdir}/Throbber-small.gif
+%{mozappdir}/browser/crashreporter-override.ini
+%endif
+%{mozappdir}/*.so
+%{mozappdir}/defaults/pref/channel-prefs.js
+%{mozappdir}/dependentlibs.list
+%{mozappdir}/dictionaries
+%{mozappdir}/omni.ja
+%{mozappdir}/platform.ini
+%{mozappdir}/plugin-container
+%{mozappdir}/gmp-clearkey
+%{mozappdir}/fonts/TwemojiMozilla.ttf
+%if !%{?system_nss}
+%exclude %{mozappdir}/libnssckbi.so
+%endif
+%if %{build_with_asan}
+%{mozappdir}/llvm-symbolizer
+%endif
+
+#---------------------------------------------------------------------
+
+%changelog
+* Sun Jul 03 2022 B. Stack <bgstack15@gmail.com> - 102.0-1
+- Fork to librewolf release.
+- Disable PGO
+
+* Tue Jun 28 2022 Martin Stransky <stransky@redhat.com>- 102.0-1
+- Updated to 102.0
+- Applied patch from https://src.fedoraproject.org/rpms/firefox/pull-request/43
+
+* Mon Jun 27 2022 Martin Stransky <stransky@redhat.com>- 101.0.1-7
+- Rebuild
+
+* Fri Jun 17 2022 Martin Stransky <stransky@redhat.com>- 101.0.1-6
+- Added fix for mozbz#1774271 - Intel/dmabuf export issues.
+
+* Wed Jun 15 2022 Martin Stransky <stransky@redhat.com>- 101.0.1-5
+- Added fix for mozbz#1758948 (AV1 VA-API playback shuttering)
+
+* Tue Jun 14 2022 Martin Stransky <stransky@redhat.com>- 101.0.1-3
+- Added fixes for mozbz#1773377 and mozbz#1774075
+
+* Mon Jun 13 2022 Martin Stransky <stransky@redhat.com>- 101.0.1-2
+- Fix WebGL mem leaks (mzbz#1773968)
+
+* Thu Jun 9 2022 Martin Stransky <stransky@redhat.com>- 101.0.1-1
+- Updated to 101.0.1
+- More VA-API sandbox fixes (mzbz#1769182)
+- Fixed OpenH264 decode (rhbz#2094319)
+
+* Tue Jun 7 2022 Martin Stransky <stransky@redhat.com>- 101.0-2
+- Enabled VA-API by default (+ added VA-API fixes from upstream)
+- Fixed WebGL performance on NVIDIA drivers (mzbz#1735929)
+
+* Mon May 30 2022 Martin Stransky <stransky@redhat.com>- 101.0-1
+- Updated to 101.0
+
+* Wed May 25 2022 Martin Stransky <stransky@redhat.com>- 100.0.2-2
+- Added fix for mzbz#1771104
+
+* Fri May 20 2022 Martin Stransky <stransky@redhat.com>- 100.0.2-1
+- Updated to 100.0.2
+
+* Wed May 18 2022 Martin Stransky <stransky@redhat.com>- 100.0.1-1
+- Updated to 100.0.1
+
+* Mon May 16 2022 Jan Horak <jhorak@redhat.com> - 100.0-6
+- Fix spellchecker.dictionary_path of F36+
+
+* Tue May 10 2022 Jan Horak <jhorak@redhat.com> - 100.0-5
+- Fix crashes on f36 multimonitor setup and too big profile manager
+
+* Mon May 9 2022 Martin Stransky <stransky@redhat.com>- 100.0-4
+- Added fix for mozbz#1767916.
+
+* Thu May 5 2022 Martin Stransky <stransky@redhat.com>- 100.0-3
+- Removed Fedora user agent patch (rhbz#2081791).
+
+* Tue May 3 2022 Martin Stransky <stransky@redhat.com>- 100.0-2
+- Added fix for mozbz#1759137
+
+* Mon May 2 2022 Martin Stransky <stransky@redhat.com>- 100.0-1
+- Updated to 100.0
+
+* Thu Apr 28 2022 Jan Horak <jhorak@redhat.com> - 99.0.1-2
+- Fixing bookmark install location - rhbz#2054953
+
+* Wed Apr 13 2022 Martin Stransky <stransky@redhat.com> - 99.0.1-1
+- Updated to 99.0.1
+
+* Wed Apr 6 2022 Martin Stransky <stransky@redhat.com> - 99.0-1
+- Updated to 99.0
+
+* Thu Mar 31 2022 Martin Stransky <stransky@redhat.com> - 98.0.2-1
+- Updated to 98.0.2
+
+* Wed Mar 30 2022 Jan Grulich <jgrulich@redhat.com> - 98.0-4
+- Wayland screensharing: avoid potential crash when cursor metadata are not set
+
+* Wed Mar 16 2022 Martin Stransky <stransky@redhat.com> - 98.0-3
+- Added a workaround for rhbz#2063961
+
+* Wed Mar 2 2022 Martin Stransky <stransky@redhat.com> - 98.0-2
+- Added support for ffmpeg 5.0
+- Spec tweaks
+- Updated to Build 3
+
+* Tue Mar 1 2022 Martin Stransky <stransky@redhat.com> - 98.0-1
+- Updated to 98.0
+
+* Mon Feb 21 2022 Jan Grulich <jgrulich@redhat.com> - 97.0.1-2
+- Backport WebRTC changes to PipeWire/Wayland screen sharing support
+
+* Fri Feb 18 2022 Martin Stransky <stransky@redhat.com> - 97.0.1-1
+- Updated to 97.0.1
+- GCC 12 build fixes
+
+* Tue Feb 8 2022 Martin Stransky <stransky@redhat.com> - 97.0-1
+- Updated to 97.0
+
+* Mon Jan 31 2022 Martin Stransky <stransky@redhat.com> - 96.0.3-1
+- Updated to 96.0.3
+
+* Tue Jan 25 2022 Parag Nemade <pnemade AT redhat DOT com> - 96.0.1-3
+- Update hunspell-dir path
+ F36 Change https://fedoraproject.org/wiki/Changes/Hunspell_dictionary_dir_change
+
+* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 96.0.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
+
+* Tue Jan 18 2022 Martin Stransky <stransky@redhat.com> - 96.0.1-1
+- Updated to 96.0.1
+
+* Tue Jan 11 2022 Martin Stransky <stransky@redhat.com> - 96.0-1
+- Updated to 96.0
+
+* Sat Jan 08 2022 Miro Hrončok <mhroncok@redhat.com> - 95.0.2-5
+- Rebuilt for https://fedoraproject.org/wiki/Changes/LIBFFI34
+
+* Thu Dec 23 2021 Martin Stransky <stransky@redhat.com> - 95.0.2-4
+- Added fix fox mozbz#1744896 (VSync)
+
+* Wed Dec 22 2021 Martin Stransky <stransky@redhat.com> - 95.0.2-3
+- Added Fedora 36 build fix (mzbz#1745560)
+
+* Mon Dec 20 2021 Martin Stransky <stransky@redhat.com> - 95.0.2-1
+- Updated to 95.0.2
+- Enabled Wayland on KDE by default
+
+* Thu Dec 9 2021 Martin Stransky <stransky@redhat.com> - 95.0-2
+- Updated symbolic icon (rhbz#2028939)
+
+* Fri Dec 3 2021 Martin Stransky <stransky@redhat.com> - 95.0-1
+- Updated to 95.0
+
+* Fri Nov 19 2021 Martin Stransky <stransky@redhat.com> - 94.0-2
+- Added fix for mozbz#1739924 / rhbz#2020981.
+
+* Mon Nov 1 2021 Martin Stransky <stransky@redhat.com> - 94.0-1
+- Updated to 94.0
+
+* Thu Oct 07 2021 Martin Stransky <stransky@redhat.com> - 93.0-2
+- Require NSS 3.70
+
+* Wed Sep 29 2021 Martin Stransky <stransky@redhat.com> - 93.0-1
+- Updated to 93.0
+
+* Mon Sep 27 2021 Martin Stransky <stransky@redhat.com> - 92.0.1-1
+- Updated to 92.0.1
+
+* Mon Sep 13 2021 Martin Stransky <stransky@redhat.com> - 92.0-3
+- Added fix for mozbz#1725828
+
+* Thu Sep 9 2021 Martin Stransky <stransky@redhat.com> - 92.0-2
+- Disable test
+
+* Fri Sep 3 2021 Martin Stransky <stransky@redhat.com> - 92.0-1
+- Updated to 92.0
+- Added fix for mozbz#1728749
+- Added fix for mozbz#1708709
+
+* Thu Aug 26 2021 Martin Stransky <stransky@redhat.com> - 91.0.2-1
+- Updated to 91.0.2
+
+* Mon Aug 23 2021 Martin Stransky <stransky@redhat.com> - 91.0.1-2
+- Set %%build_with_clang automatically based on %%toolchain
+ by Timm Bäder <tbaeder@redhat.com>
+- Updated Fedora UA patch by Eric Engestrom
+ (https://src.fedoraproject.org/rpms/firefox/pull-request/21)
+- Added fix for mozbz#1726515
+
+* Mon Aug 23 2021 Martin Stransky <stransky@redhat.com> - 91.0.1-1
+- Updated to 91.0.1
+
+* Tue Aug 10 2021 Martin Stransky <stransky@redhat.com> - 91.0-1
+- Updated to 91.0
+
+* Wed Aug 04 2021 Martin Stransky <stransky@redhat.com> - 90.0.2-2
+- Added fix for rhbz#1988841 - Allow unsigned extensions when installed
+ under non-user-writable dirs.
+
+* Thu Jul 22 2021 Martin Stransky <stransky@redhat.com> - 90.0.2-1
+- Updated to 90.0.2
+
+* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 90.0.1-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
+
+* Wed Jul 21 2021 Martin Stransky <stransky@redhat.com> - 90.0.1-1
+- Updated to 90.0.1
+- Added fixes to build on rawhide
+
+* Thu Jul 15 2021 Martin Stransky <stransky@redhat.com> - 90.0-3
+- Disabled Wayland backend on KDE due to
+ https://bugzilla.mozilla.org/show_bug.cgi?id=1714132
+
+* Tue Jul 13 2021 Martin Stransky <stransky@redhat.com> - 90.0-2
+- Added xorg-x11-server-Xwayland dependency for Mutter
+
+* Mon Jul 12 2021 Martin Stransky <stransky@redhat.com> - 90.0-1
+- Updated to 90.0
+
+* Mon Jul 12 2021 Daiki Ueno <dueno@redhat.com> - 89.0.2-3
+- flatpak: Enable loading system trust store on the host (rhbz#1766340)
+
+* Wed Jun 30 2021 Martin Stransky <stransky@redhat.com> - 89.0.2-2
+- Added fix for mozbz#1715254 (rhbz#1976892).
+
+* Thu Jun 24 2021 Martin Stransky <stransky@redhat.com> - 89.0.2-1
+- Updated to latest upstream (89.0.2)
+
+* Mon Jun 14 2021 Martin Stransky <stransky@redhat.com> - 89.0-2
+- Added fix for mozbz#1646135
+
+* Tue Jun 1 2021 Martin Stransky <stransky@redhat.com> - 89.0-1
+- Updated to latest upstream (89.0)
+
+* Mon May 10 2021 Martin Stransky <stransky@redhat.com> - 88.0.1-1
+- Updated to latest upstream (88.0.1)
+
+* Tue May 4 2021 Martin Stransky <stransky@redhat.com> - 88.0-8
+- Added fix for mozbz#1705048.
+
+* Fri Apr 30 2021 Martin Stransky <stransky@redhat.com> - 88.0-7
+- Added pciutils-libs req (rhbz#1955338)
+- Enabled Wayland on KDE (rhbz#1922608)
+
+* Tue Apr 27 2021 Martin Stransky <stransky@redhat.com> - 88.0-6
+- Test fix.
+
+* Fri Apr 23 2021 Martin Stransky <stransky@redhat.com> - 88.0-5
+- Added fix for mozbz#1580595 - mouse pointer lock.
+- Another test update.
+
+* Thu Apr 22 2021 Martin Stransky <stransky@redhat.com> - 88.0-4
+- Run with mochitest test suite.
+
+* Thu Apr 22 2021 Martin Stransky <stransky@redhat.com> - 88.0-3
+- Build with crashreporter enabled.
+
+* Wed Apr 21 2021 Martin Stransky <stransky@redhat.com> - 88.0-2
+- Added clipboard fix mzbz#1703763.
+
+* Mon Apr 19 2021 Martin Stransky <stransky@redhat.com> - 88.0-1
+- Update to 88.0
+
+* Mon Apr 12 2021 Martin Stransky <stransky@redhat.com> - 87.0-12
+- Added fix for mozbz#1701089 (Widevine playback issues).
+
+* Tue Apr 6 2021 Martin Stransky <stransky@redhat.com> - 87.0-11
+- Enabled xpcshell/crashtests on Wayland.
+
+* Sat Apr 3 2021 Martin Stransky <stransky@redhat.com> - 87.0-10
+- Wayland testing again.
+
+* Thu Apr 1 2021 Martin Stransky <stransky@redhat.com> - 87.0-9
+- Added fix for mozbz#1702606 / rhbz#1936071
+- Switched tests back to X11 due to massive failures.
+
+* Thu Apr 1 2021 Martin Stransky <stransky@redhat.com> - 87.0-8
+- Run testsuite on Wayland on Fedora 33+
+- Spec cleanup
+
+* Wed Mar 31 2021 Martin Stransky <stransky@redhat.com> - 87.0-7
+- Added fix for mozbz#1693472 - Wayland/KDE rendering issues.
+
+* Tue Mar 30 2021 Jonathan Wakely <jwakely@redhat.com> - 87.0-6
+- Rebuilt for removed libstdc++ symbol (#1937698)
+
+* Tue Mar 30 2021 Martin Stransky <stransky@redhat.com> - 87.0-5
+- Reftest fix
+
+* Fri Mar 26 2021 Martin Stransky <stransky@redhat.com> - 87.0-4
+- More test fixes
+- Enabled ppc64le
+- Disabled crashreporter on Fedora 34+
+
+* Wed Mar 24 2021 Martin Stransky <stransky@redhat.com> - 87.0-2
+- More test fixes
+
+* Tue Mar 23 2021 Martin Stransky <stransky@redhat.com> - 87.0-1
+- Disabled ARM due to build failures
+- Updated to 87.0
+
+* Sat Mar 13 2021 Martin Stransky <stransky@redhat.com> - 86.0.1-2
+- Enabled ARM
+
+* Fri Mar 12 2021 Martin Stransky <stransky@redhat.com> - 86.0.1-1
+- Update to latest upstream (86.0.1)
+
+* Wed Mar 10 2021 Martin Stransky <stransky@redhat.com> - 86.0-8
+- Temporary disable ppc64le/Fedora 35 due to
+ https://bugzilla.redhat.com/show_bug.cgi?id=1933742
+
+* Wed Mar 3 2021 Martin Stransky <stransky@redhat.com> - 86.0-7
+- Added fix for mozbz#1694670
+
+* Mon Mar 1 2021 Martin Stransky <stransky@redhat.com> - 86.0-6
+- Run xpcshell tests sequential
+- Test fixes
+
+* Mon Mar 1 2021 Martin Stransky <stransky@redhat.com> - 86.0-4
+- Enable Wayland backend only when Wayland display is set.
+
+* Mon Mar 1 2021 Martin Stransky <stransky@redhat.com> - 86.0-3
+- Added icecat-78.7.1-fix_error_template_with_C_linkage.patch to
+ build on F34+
+
+* Fri Feb 26 2021 Martin Stransky <stransky@redhat.com> - 86.0-2
+- Built with system nss
+
+* Tue Feb 23 2021 Martin Stransky <stransky@redhat.com> - 86.0-1
+- Update to 86.0
+- Disabled Wayland backend on KDE/Plasma
+
+* Tue Feb 23 2021 Martin Stransky <stransky@redhat.com> - 85.0.1-2
+- Fixed some reftest run in Mock
+
+* Mon Feb 08 2021 Martin Stransky <stransky@redhat.com> - 85.0.1-1
+- Updated to 85.0.1
+
+* Wed Feb 03 2021 Dan Horák <dan[at]danny.cz> - 85.0-11
+- Fix parameter passing on ppc64le (mozb#1690152)
+
+* Tue Feb 02 2021 Kalev Lember <klember@redhat.com> - 85.0-10
+- Remove gtk2 support as flash plugin is no longer supported
+
+* Sat Jan 30 2021 Martin Stransky <stransky@redhat.com> - 85.0-9
+- Enable WebRender on KDE/Wayland and AMD/Intel drivers.
+
+* Sat Jan 30 2021 Martin Stransky <stransky@redhat.com> - 85.0-8
+- Enable Wayland backend on Fedora 34/KDE/Plasma (and other compositors)
+ by default (https://bugzilla.redhat.com/show_bug.cgi?id=1922608).
+
+* Fri Jan 29 2021 Martin Stransky <stransky@redhat.com> - 85.0-7
+- Added clipboard fix mozbz#1631061.
+
+* Thu Jan 28 2021 Kalev Lember <klember@redhat.com> - 85.0-6
+- Make provides/requires filtering smarter/automatic (rhbz#1582116)
+- Drop dbus-glib requires that are now automatically generated again
+
+* Thu Jan 28 2021 Martin Stransky <stransky@redhat.com> - 85.0-5
+- Add dbus-glib requires.
+
+* Tue Jan 26 2021 Martin Stransky <stransky@redhat.com> - 85.0-4
+- Added fix for mozbz#1679933 - startup crash
+
+* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 85.0-3
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
+
+* Wed Jan 20 2021 Martin Stransky <stransky@redhat.com> - 85.0-2
+- Update to 85.0.
+
+* Wed Jan 20 2021 Jan Horak <jhorak@redhat.com> - 84.0.2-8
+- Fixing package requires/provides
+
+* Tue Jan 19 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-7
+- Fixed mzbz#164294 regression.
+
+* Fri Jan 15 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-6
+- Added WebRender fix (mozbz#1681107).
+
+* Thu Jan 14 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-5
+- Removed some failing tests.
+- Spec file tweaks.
+
+* Tue Jan 12 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-4
+- Enabled LTO in Firefox build system.
+
+* Tue Jan 12 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-3
+- Removed failing xpcshell/reftests, test tweaks.
+
+* Mon Jan 11 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-2
+- Added a workaround for rhbz#1908018
+
+* Wed Jan 6 2021 Martin Stransky <stransky@redhat.com> - 84.0.2-1
+- Updated to 84.0.2
+
+* Tue Jan 05 2021 Jan Horak <jhorak@redhat.com> - 84.0.1-5
+- Removing requires/provides of the bundled libraries
+
+* Mon Jan 4 2021 Martin Stransky <stransky@redhat.com> - 84.0.1-4
+- Enabled tests
+
+* Mon Jan 4 2021 Martin Stransky <stransky@redhat.com> - 84.0.1-3
+- Enabled armv7hl arch on rawhide
+
+* Wed Dec 23 2020 Martin Stransky <stransky@redhat.com> - 84.0.1-2
+- Reverted mzbz#1631061 due to clipboard regressions
+- Disabled armv7hl build on rawhide due to rhbz#1910277
+- Build with system nss on rawhide (rhbz#1908791).
+
+* Tue Dec 22 2020 Martin Stransky <stransky@redhat.com> - 84.0.1-1
+- Updated to 84.0.1
+
+* Sun Dec 20 2020 Miro Hrončok <mhroncok@redhat.com> - 84.0-7
+- Filter out private libraries provides
+- Fixes: rhbz#1908791
+
+* Thu Dec 17 2020 Martin Stransky <stransky@redhat.com> - 84.0-6
+- Disable PGO on Rawhide due to build issues
+- Disable system nss on Rawhide due to rhbz#1908018
+- Enabled system nss on Fedora 33/32
+
+* Wed Dec 16 2020 Martin Stransky <stransky@redhat.com> - 84.0-5
+- Build with tests enabled
+
+* Wed Dec 16 2020 Martin Stransky <stransky@redhat.com> - 84.0-4
+- Disabled LTO due to massive test failures
+
+* Wed Dec 16 2020 Martin Stransky <stransky@redhat.com> - 84.0-3
+- Updated to Firefox 84 Build 3
+- Disabled system nss due to addon breakage (rhbz#1908018).
+
+* Wed Dec 9 2020 Martin Stransky <stransky@redhat.com> - 83.0-15
+- Enabled tests everywhere
+- Enabled crash reporter
+
+* Tue Dec 1 2020 Martin Stransky <stransky@redhat.com> - 83.0-14
+- Enabled LTO
+
+* Tue Dec 1 2020 Martin Stransky <stransky@redhat.com> - 83.0-13
+- Added fix for mozbz#1672139
+
+* Tue Dec 1 2020 Martin Stransky <stransky@redhat.com> - 83.0-12
+- More mochitest fixes
+
+* Mon Nov 30 2020 Martin Stransky <stransky@redhat.com> - 83.0-11
+- Mochitest tweaking
+
+* Sat Nov 28 2020 Martin Stransky <stransky@redhat.com> - 83.0-10
+- Added fix for mzbz#1678680
+
+* Wed Nov 25 2020 Martin Stransky <stransky@redhat.com> - 83.0-9
+- Added mochitest test files
+
+* Wed Nov 25 2020 Martin Stransky <stransky@redhat.com> - 83.0-8
+- Added fix for rhbz#1900542
+
+* Wed Nov 25 2020 Martin Stransky <stransky@redhat.com> - 83.0-7
+- Export MOZ_GMP_PATH from /usr/bin/firefox script
+ (https://pagure.io/fedora-workstation/issue/126)
+
+* Tue Nov 24 2020 Martin Stransky <stransky@redhat.com> - 83.0-6
+- Fix mochitest
+
+* Wed Nov 18 2020 Martin Stransky <stransky@redhat.com> - 83.0-5
+- Build with tests enabled
+
+* Wed Nov 18 2020 Martin Stransky <stransky@redhat.com> - 83.0-4
+- Enable all arches
+
+* Fri Nov 13 2020 Martin Stransky <stransky@redhat.com> - 83.0-3
+- Updated to 83.0 Build 2
+
+* Thu Nov 12 2020 Martin Stransky <stransky@redhat.com> - 83.0-1
+- Updated to 83.0
+- Updated PipeWire patches from mozbz#1672944
+
+* Tue Nov 10 2020 Martin Stransky <stransky@redhat.com> - 82.0.3-2
+- Added fix for mozbz#1885133
+
+* Mon Nov 9 2020 Martin Stransky <stransky@redhat.com> - 82.0.3-1
+- Updated to 82.0.3
+
+* Mon Nov 9 2020 Kalev Lember <klember@redhat.com> - 82.0.2-7
+- Include date in appdata release tags
+
+* Fri Nov 6 2020 Tomas Popela <tpopela@redhat.com> - 82.0.2-6
+- Re-enable s390x buils by backporting a change from Thunderbird
+ https://src.fedoraproject.org/rpms/thunderbird/c/5f0bec1b5b79e117cc469710afbfa4d008af9c29?branch=master
+
+* Tue Nov 3 2020 Martin Stransky <stransky@redhat.com> - 82.0.2-5
+- Added mozilla-openh264 dependency to play H264 clips out of the box
+- Updated Firefox tests
+
+* Tue Nov 3 2020 Martin Stransky <stransky@redhat.com> - 82.0.2-3
+- Disabled LTO again.
+
+* Tue Nov 3 2020 Martin Stransky <stransky@redhat.com> - 82.0.2-2
+- NSS debug build
+
+* Thu Oct 29 2020 Martin Stransky <stransky@redhat.com> - 82.0.2-1
+- Updated to 82.0.2
+- Removed mzbz#1668771 due to rhbz#1888920
+
+* Wed Oct 28 2020 Martin Stransky <stransky@redhat.com> - 82.0.1-1
+- Updated to 82.0.1
+
+* Tue Oct 27 2020 Martin Stransky <stransky@redhat.com> - 82.0-8
+- Added fix for mozbz#1673313
+
+* Tue Oct 27 2020 Martin Stransky <stransky@redhat.com> - 82.0-7
+- Added fix for rawhide crashes (rhbz#1891234)
+
+* Sat Oct 24 2020 Martin Stransky <stransky@redhat.com> - 82.0-6
+- Enable LTO
+
+* Tue Oct 20 2020 Martin Stransky <stransky@redhat.com> - 82.0-5
+- Added fix for rhbz#1889742 - Typo in /usr/bin/firefox
+
+* Mon Oct 19 2020 Martin Stransky <stransky@redhat.com> - 82.0-4
+- Updated openh264 patch to use keyframes from contained
+ for openh264 only.
+
+* Mon Oct 19 2020 Martin Stransky <stransky@redhat.com> - 82.0-3
+- Added ELN build fixes
+
+* Thu Oct 15 2020 Martin Stransky <stransky@redhat.com> - 82.0-2
+- Updated SELinux relabel setup (rhbz#1731371)
+
+* Thu Oct 15 2020 Martin Stransky <stransky@redhat.com> - 82.0-1
+- Updated to 82.0 Build 2
+
+* Thu Oct 15 2020 Martin Stransky <stransky@redhat.com> - 81.0.2-3
+- Added experimental openh264 seek patch (mzbz#1670333)
+
+* Mon Oct 12 2020 Martin Stransky <stransky@redhat.com> - 81.0.2-2
+- Added a partial fox for rhbz#1886722
+
+* Mon Oct 12 2020 Martin Stransky <stransky@redhat.com> - 81.0.2-1
+- Updated to latest upstream - 81.0.2
+
+* Thu Oct 8 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-9
+- Added an updated fix for mozbz#1656727
+
+* Thu Oct 8 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-8
+- Added fixes for mozbz#1634404, mozbz#1669495
+
+* Thu Oct 8 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-7
+- Removed mozbz#1656727 as it causes a regression rhbz#1886243
+
+* Wed Oct 7 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-6
+- PGO patch update
+- Added fix for mzbz#1669442 (LTO builds)
+
+* Mon Oct 5 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-5
+- Added fix for mozbz#1656727
+
+* Fri Oct 2 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-4
+- Added fix for mozbz#1668771
+
+* Thu Oct 1 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-3
+- Added fix for mozbz#1661192
+
+* Thu Oct 1 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-2
+- Added fix for mozbz#1640567
+- Enable PGO
+
+* Wed Sep 30 2020 Martin Stransky <stransky@redhat.com> - 81.0.1-1
+- Updated to 81.0.1
+
+* Wed Sep 30 2020 Martin Stransky <stransky@redhat.com> - 81.0-9
+- Disabled openh264 download
+- Removed fdk-aac-free dependency (rhbz#1883672)
+- Enabled LTO
+
+* Sat Sep 26 2020 Dan Horák <dan[at]danny.cz> - 81.0-8
+- Re-enable builds for ppc64le
+
+* Fri Sep 25 2020 Martin Stransky <stransky@redhat.com> - 81.0-7
+- Added openh264 fixes
+
+* Wed Sep 23 2020 Martin Stransky <stransky@redhat.com> - 81.0-6
+- Added fix for rhbz#1731371
+
+* Tue Sep 22 2020 Kalev Lember <klember@redhat.com> - 81.0-5
+- Re-enable builds for armv7hl and aarch64 architectures
+
+* Tue Sep 22 2020 Kalev Lember <klember@redhat.com> - 81.0-4
+- Disable LTO to work around firefox build failing in F33+
+
+* Mon Sep 21 2020 Martin Stransky <stransky@redhat.com> - 81.0-3
+- Updated to 81.0 Build 2
+- Updated firefox-disable-ffvpx-with-vapi patch
+- Deleted old changelog entries
+
+* Thu Sep 17 2020 Martin Stransky <stransky@redhat.com> - 81.0-2
+- Added upstream patches mzbz#1665324 mozbz#1665329
+- Updated requested nss version to 3.56
+
+* Tue Sep 15 2020 Martin Stransky <stransky@redhat.com> - 81.0-1
+- Updated to 81.0
+
+* Thu Sep 10 2020 Martin Stransky <stransky@redhat.com> - 80.0.1-3
+- Test build for all arches.
+
+* Fri Sep 4 2020 Martin Stransky <stransky@redhat.com> - 80.0.1-2
+- Added patch for mozbz#1875469
+
+* Tue Sep 1 2020 Martin Stransky <stransky@redhat.com> - 80.0.1-1
+- Updated to 80.0.1
+
+* Tue Aug 18 2020 Martin Stransky <stransky@redhat.com> - 80.0-1
+- Updated to 80.0 Build 2
+- Go back to gcc
+- Disabled WebGL dmabuf backend due to reported errors
+ (mzbz#1655323, mozbz#1656505).
+
+* Tue Aug 18 2020 Martin Stransky <stransky@redhat.com> - 79.0-6
+- Enabled pgo
+- Build with clang
+
+* Tue Aug 4 2020 Martin Stransky <stransky@redhat.com> - 79.0-5
+- Added upstream fix for mozbz#1656436.
+
+* Mon Aug 3 2020 Martin Stransky <stransky@redhat.com> - 79.0-4
+- Updated fix for mozbz#1645671
+
+* Thu Jul 30 2020 Martin Stransky <stransky@redhat.com> - 79.0-3
+- Added VA-API fix for mozbz#1645671
+
+* Wed Jul 29 2020 Martin Stransky <stransky@redhat.com> - 79.0-2
+- Try to enable armv7hl again.
+- Disabled ppc64le due to cargo crash (rhbz#1862012).
+
+* Mon Jul 27 2020 Martin Stransky <stransky@redhat.com> - 79.0-1
+- Update to 79.0
+- Disabled PGO due to rhbz#1849165 (gcc internal error).
+
+* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 78.0.2-5
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
+
+* Thu Jul 23 2020 Frantisek Zatloukal <fzatlouk@redhat.com> - 78.0-4
+- Use python3 instead of python2 for build
+
+* Tue Jul 21 2020 Martin Stransky <stransky@redhat.com> - 78.0-3
+- Added fix for mozbz#1651701/rhbz#1855730
+
+* Fri Jul 10 2020 Jan Horak <jhorak@redhat.com> - 78.0.2-2
+- Fixing clang build - linker setup
+
+* Thu Jul 09 2020 Jan Horak <jhorak@redhat.com> - 78.0.2-1
+- Update to 78.0.2 build2
+
+* Wed Jul 01 2020 Jan Horak <jhorak@redhat.com> - 78.0.1-1
+- Update to 78.0.1 build1
+
+* Wed Jul 1 2020 Martin Stransky <stransky@redhat.com> - 78.0-2
+- Add 'Open the Profile Manager' desktop file entry
+
+* Mon Jun 29 2020 Jan Horak <jhorak@redhat.com> - 78.0-1
+- Update to 78.0 build2
+
+* Tue Jun 23 2020 Martin Stransky <stransky@redhat.com> - 77.0.1-3
+- Build with PGO/LTO again.
+
+* Wed Jun 03 2020 Jan Horak <jhorak@redhat.com> - 77.0.1-2
+- Update to 77.0.1 build1
+
+* Wed Jun 03 2020 Jan Horak <jhorak@redhat.com> - 77.0.1-1
+- Fixing pipewire patch
+- New upstream version (77.0.1)
+
+* Tue Jun 2 2020 Martin Stransky <stransky@redhat.com> - 77.0-2
+- Rebuild with updated langpacks (rhbz#1843028).
+
+* Fri May 29 2020 Martin Stransky <stransky@redhat.com> - 77.0-1
+- Updated to Firefox 77.0
+
+* Mon May 25 2020 Martin Stransky <stransky@redhat.com> - 76.0.1-7
+- Added fix for mozbz#1632456
+
+* Mon May 25 2020 Martin Stransky <stransky@redhat.com> - 76.0.1-6
+- Added fix for mozbz#1634213
+
+* Mon May 25 2020 Martin Stransky <stransky@redhat.com> - 76.0.1-5
+- Added fix for mozbz#1619882 - video flickering when va-api is used.
+
+* Thu May 21 2020 Jan Grulich <jgrulich@redhat.com> - 76.0.1-4
+- Add support for PipeWire 0.3
+
+* Wed May 20 2020 Peter Robinson <pbrobinson@fedoraproject.org> - 76.0.1-3
+- Build aarch64 again so aarch64 users get updates
+
+* Wed May 13 2020 Martin Stransky <stransky@redhat.com> - 76.0.1-2
+- Added extra va-api frames to vp8/9 decoder.
+
+* Fri May 8 2020 Martin Stransky <stransky@redhat.com> - 76.0.1-1
+- Updated to 76.0.1
+
+* Thu May 7 2020 Martin Stransky <stransky@redhat.com> - 76.0-3
+- Disable ffvpx when va-api is enabled.
+
+* Tue May 05 2020 Jan Horak <jhorak@redhat.com> - 76.0-2
+- Don't use google safe browsing api key for the geolocation
+
+* Sun May 3 2020 Martin Stransky <stransky@redhat.com> - 76.0-1
+- Updated to 76.0
+
+* Thu Apr 23 2020 Martin Stransky <stransky@redhat.com> - 75.0-3
+- Added fix for mozilla bug #1527976 (browser D&D)
+
+* Tue Apr 14 2020 Jan Horak <jhorak@redhat.com> - 75.0-2
+- Removed gconf-2.0 build requirement
+
+* Mon Apr 06 2020 Martin Stransky <stransky@redhat.com> - 75.0-1
+- Updated to 75.0
+
+* Mon Apr 06 2020 Martin Stransky <stransky@redhat.com> - 74.0.1-3
+- Added fix for mozbz#1627469
+
+* Mon Apr 06 2020 Jan Horak <jhorak@redhat.com> - 74.0.1-2
+- Fixing pipewire patch
+
+* Sat Apr 4 2020 Martin Stransky <stransky@redhat.com> - 74.0.1-1
+- Updated to latest upstream
+- Added fix for mozbz#1624745
+
+* Wed Apr 1 2020 Martin Stransky <stransky@redhat.com> - 74.0-14
+- Added fixes to gnome shell search provider
+
+* Tue Mar 31 2020 Jan Horak <jhorak@redhat.com> - 74.0-13
+- Allow addons sideload to fix missing langpacks issues
+
+* Thu Mar 19 2020 Martin Stransky <stransky@redhat.com> - 74.0-12
+- Added fix for rhbz#1814850 by Daniel Rusek
+
+* Tue Mar 17 2020 Martin Stransky <stransky@redhat.com> - 74.0-11
+- Added fix for mozbz#1623106
+
+* Tue Mar 17 2020 Martin Stransky <stransky@redhat.com> - 74.0-9
+- Added fix for mozbz#1623060
+
+* Tue Mar 17 2020 Jan Grulich <jgrulich@redhat.com> - 74-0-8
+- Add support for window sharing
+
+* Mon Mar 16 2020 Martin Stransky <stransky@redhat.com> - 74.0-7
+- Use D-Bus remote exclusively for both X11 and Wayland backends
+ when WAYLAND_DISPLAY is present.
+
+* Fri Mar 13 2020 Martin Stransky <stransky@redhat.com> - 74.0-6
+- Added fix for mozbz#1615098
+
+* Thu Mar 12 2020 Martin Stransky <stransky@redhat.com> - 74.0-5
+- Added fix for mozbz#1196777
+
+* Tue Mar 10 2020 Kalev Lember <klember@redhat.com> - 74.0-4
+- Remove unused libIDL build dep
+- Disabled arm due to build failures
+
+* Tue Mar 10 2020 Martin Stransky <stransky@redhat.com> - 74.0-3
+- Update to 74.0 Build 3
+
+* Mon Mar 09 2020 Martin Stransky <stransky@redhat.com> - 74.0-2
+- Update to 74.0 Build 2
+
+* Tue Mar 03 2020 Martin Stransky <stransky@redhat.com> - 74.0-1
+- Update to 74.0 Build 1
+- Added mozbz#1609538
+
+* Mon Feb 24 2020 Martin Stransky <stransky@redhat.com> - 73.0.1-4
+- Using pipewire-0.2 as buildrequire
+- Added armv7hl fixes by Gabriel Hojda
+
+* Mon Feb 24 2020 Martin Stransky <stransky@redhat.com> - 73.0.1-2
+- Fixed Bug 1804787 - Some .desktop menu entries unlocalized
+
+* Thu Feb 20 2020 Martin Stransky <stransky@redhat.com> - 73.0.1-1
+- Update to 73.0.1
+
+* Tue Feb 11 2020 Jan Horak <jhorak@redhat.com> - 73.0-1
+- Update to 73.0 build3
+
+* Tue Feb 04 2020 Kalev Lember <klember@redhat.com> - 72.0.2-3
+- Fix various issues with appdata, making the validation pass again
+- Validate appdata during the build
+- Make sure the release tag in appdata is in sync with the package version
+
+* Tue Jan 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 72.0.2-2
+- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
+
+* Mon Jan 20 2020 Jan Horak <jhorak@redhat.com> - 72.0.2-1
+- Update to 72.0.2 build1
+
+* Wed Jan 15 2020 Jan Horak <jhorak@redhat.com> - 72.0.1-2
+- Added fix for wrong cursor offset of popup windows and bumped required nss
+ version
+
+* Wed Jan 08 2020 Jan Horak <jhorak@redhat.com> - 72.0.1-1
+- Update to 72.0.1 build1
+
+* Mon Jan 06 2020 Jan Horak <jhorak@redhat.com> - 72.0-2
+- Update to 72.0 build4
+
+* Fri Jan 03 2020 Jan Horak <jhorak@redhat.com> - 72.0-1
+- Update to 72.0 build3
+
+* Wed Dec 18 2019 Jan Horak <jhorak@redhat.com> - 71.0-17
+- Fix for wrong intl.accept_lang when using non en-us langpack
+
+* Mon Dec 9 2019 Martin Stransky <stransky@redhat.com> - 71.0-16
+- Build with asan
+
+* Mon Dec 9 2019 Martin Stransky <stransky@redhat.com> - 71.0-15
+- Enabled Mozilla crash reporter
+- Enabled PGO builds
+
+* Mon Dec 9 2019 Martin Stransky <stransky@redhat.com> - 71.0-14
+- Updated workaround for mzbz#1601707
+
+* Sat Dec 7 2019 Martin Stransky <stransky@redhat.com> - 71.0-13
+- Built with -fno-lifetime-dse
+
+* Fri Dec 6 2019 Martin Stransky <stransky@redhat.com> - 71.0-12
+- Clang test build, should fix extension breakage
+
+* Fri Dec 6 2019 Martin Stransky <stransky@redhat.com> - 71.0-11
+- Added workaround for:
+ https://bugzilla.mozilla.org/show_bug.cgi?id=1601707
+ http://gcc.gnu.org/PR92831
+
+* Fri Dec 6 2019 Martin Stransky <stransky@redhat.com> - 71.0-10
+- Remove appdata and ship metainfo only
+
+* Wed Dec 4 2019 Martin Stransky <stransky@redhat.com> - 71.0-9
+- Included kiosk mode workaround (mozbz#1594738)
+
+* Tue Dec 3 2019 Martin Stransky <stransky@redhat.com> - 71.0-8
+- Disabled PGO due to startup crash
+
+* Mon Dec 2 2019 Martin Stransky <stransky@redhat.com> - 71.0-7
+- Updated to 71.0 Build 5
+- Updated Gnome search provider
+
+* Wed Nov 27 2019 Martin Stransky <stransky@redhat.com> - 71.0-6
+- Enable Gnome search provider
+
+* Wed Nov 27 2019 Martin Stransky <stransky@redhat.com> - 71.0-5
+- Added fix for mozbz#1593408
+- Temporary disable Gnome search provider
+
+* Tue Nov 26 2019 Martin Stransky <stransky@redhat.com> - 71.0-2
+- Enable Gnome search provider
+
+* Tue Nov 26 2019 Martin Stransky <stransky@redhat.com> - 71.0-1
+- Updated to 71.0 Build 2
+
+* Tue Nov 19 2019 Jan Horak <jhorak@redhat.com> - 70.0.1-5
+- Added fixes for missing popup and overflow widget glitches
+
+* Mon Nov 04 2019 Jan Horak <jhorak@redhat.com> - 70.0.1-4
+- Added fix for non-scrollable popups
+
+* Fri Nov 1 2019 Martin Stransky <stransky@redhat.com> - 70.0.1-1
+- Updated to 70.0.1
+- Built with system-nss (reverted 70.0-2 change).
+
+* Thu Oct 31 2019 Martin Stransky <stransky@redhat.com> - 70.0-2
+- Switched to in-tree nss due to rhbz#1752303
+
+* Tue Oct 15 2019 Martin Stransky <stransky@redhat.com> - 70.0-1
+- Updated to 70.0
diff --git a/local-settings.js b/local-settings.js
new file mode 100644
index 0000000..eaecc05
--- /dev/null
+++ b/local-settings.js
@@ -0,0 +1,7 @@
+// Sets up the .cfg file.
+
+//Specifies the .cfg filename (path cannot be changed)
+pref("general.config.filename", "librewolf.cfg");
+
+//Allows .cfg file to be stored in plain text without obfuscation
+pref("general.config.obscure_value", 0);
diff --git a/lw-logo-devtools.patch b/lw-logo-devtools.patch
new file mode 100644
index 0000000..5362655
--- /dev/null
+++ b/lw-logo-devtools.patch
@@ -0,0 +1,37 @@
+--- a/devtools/client/aboutdebugging/src/actions/runtimes.js
++++ b/devtools/client/aboutdebugging/src/actions/runtimes.js
+@@ -71,9 +71,7 @@ async function getRuntimeIcon(runtime, channel) {
+ }
+ }
+
+- return channel === "release" || channel === "beta" || channel === "aurora"
+- ? `chrome://devtools/skin/images/aboutdebugging-firefox-${channel}.svg`
+- : "chrome://devtools/skin/images/aboutdebugging-firefox-nightly.svg";
++ return "chrome://devtools/skin/images/aboutdebugging-firefox-librewolf.svg";
+ }
+
+ function onRemoteDevToolsClientClosed() {
+--- a/devtools/client/jar.mn
++++ b/devtools/client/jar.mn
+@@ -374,6 +374,7 @@ devtools.jar:
+ skin/images/aboutdebugging-firefox-logo.svg (themes/images/aboutdebugging-firefox-logo.svg)
+ skin/images/aboutdebugging-firefox-nightly.svg (themes/images/aboutdebugging-firefox-nightly.svg)
+ skin/images/aboutdebugging-firefox-release.svg (themes/images/aboutdebugging-firefox-release.svg)
++ skin/images/aboutdebugging-firefox-librewolf.svg (themes/images/aboutdebugging-firefox-librewolf.svg)
+ skin/images/aboutdebugging-globe-icon.svg (themes/images/aboutdebugging-globe-icon.svg)
+ skin/images/aboutdebugging-information.svg (themes/images/aboutdebugging-information.svg)
+ skin/images/aboutdebugging-process-icon.svg (themes/images/aboutdebugging-process-icon.svg)
+--- /dev/null
++++ b/devtools/client/themes/images/aboutdebugging-firefox-librewolf.svg
+@@ -0,0 +1 @@
++<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 67.733 67.733"><g transform="translate(-42.107 -153.898)"><circle cx="75.973" cy="187.765" r="33.867" fill="#00acff"/><path d="M72.544 214.677c-4.744-.609-9.282-2.5-13.242-5.518-1.292-.985-3.715-3.424-4.773-4.804-2.963-3.865-4.805-8.25-5.412-12.887-.26-1.984-.26-5.633.003-7.447 1.308-9.068 7.014-16.846 15.209-20.73 3.811-1.806 7.3-2.57 11.73-2.57 7.166 0 13.527 2.567 18.681 7.54 2.483 2.396 4.148 4.668 5.574 7.607 1.929 3.975 2.71 7.433 2.71 11.995 0 6.006-1.735 11.244-5.337 16.117-1.07 1.448-3.162 3.647-4.55 4.785-3.806 3.12-8.658 5.232-13.473 5.863-1.663.218-5.593.245-7.12.05zm10.041-4.865c2.898-.914 5.26-2.142 7.54-3.92 1.213-.946 3.309-3.062 4.188-4.227 2.383-3.162 4.004-7.122 4.482-10.946.23-1.842.096-5.738-.255-7.43-.93-4.48-2.932-8.265-6.086-11.503-1.966-2.02-3.757-3.35-6.06-4.505-3.495-1.752-6.49-2.46-10.424-2.464-4.164-.004-7.815.95-11.429 2.987-3.29 1.855-6.69 5.26-8.553 8.563-1.372 2.433-2.376 5.32-2.767 7.96-.257 1.73-.262 5.164-.01 6.82.504 3.316 1.76 6.592 3.584 9.34.995 1.5.964 1.484 1.842.981 1.57-.898 1.98-1.333 2.836-3.01 1-1.96 2.07-3.673 3.037-4.863 1.116-1.373 1.27-1.618 1.83-2.915.28-.652.786-1.61 1.122-2.13l.611-.942-.79-.777c-1.05-1.032-1.923-2.201-2.087-2.796-.168-.608.03-.947.818-1.402.798-.461 1.368-.593 3.5-.812 1.037-.107 2.163-.302 2.518-.437.353-.134 1.408-.708 2.344-1.276 2.703-1.639 2.932-1.723 4.552-1.688 1.369.03 1.371.029 2.183-.462 1.7-1.028 4.143-2.883 7.357-5.587.616-.519 1.21-.926 1.32-.905.454.088 1.289 2.137 1.416 3.476.077.812-.08 1.615-.562 2.873-.132.343-.192.67-.135.727.138.137.61-.453.61-.763 0-.394.262-.439.617-.106.258.242.481.312 1 .312.567 0 .708.052.93.348.375.5.463 1.866.175 2.732-.28.842-1.125 1.813-1.892 2.173-.686.323-2.075 1.68-2.726 2.662a31.64 31.64 0 00-1.037 1.742c-.321.582-.86 1.461-1.198 1.954-.664.97-1.233 2.323-1.782 4.238-.323 1.126-.35 1.419-.363 3.928-.016 3.032-.173 3.776-.993 4.71-.931 1.06-1.862 3.391-1.94 4.86-.05.928-.192 1.832-.395 2.502-.09.295.077.291 1.072-.022z" fill="#fff"/><path d="M77.062 181.654l1.222-1.565 1.966-.275-1.222 1.564z" fill="#00acff"/></g></svg>
+--- a/devtools/client/themes/images/aboutdebugging-firefox-logo.svg
++++ b/devtools/client/themes/images/aboutdebugging-firefox-logo.svg
+@@ -1,6 +1 @@
+-<!-- 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 xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
+- <path fill="context-fill #20123a" d="M190.368 150.591c0.157 0.009 0.079 0.003 0 0zm-57.874-28.933c0.158 0.008 0.079 0.003 0 0zm346.228 44.674c-10.445-25.123-31.6-52.248-48.211-60.82 13.52 26.5 21.345 53.093 24.335 72.935 0 0.04 0.015 0.136 0.047 0.4-27.175-67.732-73.254-95.047-110.886-154.512-1.9-3.008-3.805-6.022-5.661-9.2a73.237 73.237 0 0 1-2.646-4.972 43.757 43.757 0 0 1-3.585-9.5 0.625 0.625 0 0 0-0.546-0.644 0.8 0.8 0 0 0-0.451 0c-0.033 0.011-0.084 0.051-0.119 0.065-0.053 0.02-0.12 0.069-0.176 0.095 0.026-0.036 0.083-0.117 0.1-0.135-53.437 31.3-75.587 86.093-81.282 120.97a128.057 128.057 0 0 0-47.624 12.153 6.144 6.144 0 0 0-3.041 7.63 6.034 6.034 0 0 0 8.192 3.525 116.175 116.175 0 0 1 41.481-10.826c0.468-0.033 0.937-0.062 1.405-0.1a117.624 117.624 0 0 1 5.932-0.211 120.831 120.831 0 0 1 34.491 4.777c0.654 0.192 1.295 0.414 1.946 0.616a120.15 120.15 0 0 1 5.539 1.842 121.852 121.852 0 0 1 3.992 1.564c1.074 0.434 2.148 0.868 3.206 1.331a118.453 118.453 0 0 1 4.9 2.307c0.743 0.368 1.485 0.735 2.217 1.117a120.535 120.535 0 0 1 4.675 2.587 107.785 107.785 0 0 1 2.952 1.776 123.018 123.018 0 0 1 42.028 43.477c-12.833-9.015-35.81-17.918-57.947-14.068 86.441 43.214 63.234 192.027-56.545 186.408a106.7 106.7 0 0 1-31.271-6.031 132.461 132.461 0 0 1-7.059-2.886c-1.356-0.618-2.711-1.243-4.051-1.935-29.349-15.168-53.583-43.833-56.611-78.643 0 0 11.093-41.335 79.433-41.335 7.388 0 28.508-20.614 28.9-26.593-0.09-1.953-41.917-18.59-58.223-34.656-8.714-8.585-12.851-12.723-16.514-15.829a71.7 71.7 0 0 0-6.225-4.7 111.335 111.335 0 0 1-0.675-58.733c-24.687 11.242-43.89 29.011-57.849 44.7h-0.111c-9.528-12.067-8.855-51.873-8.312-60.184-0.114-0.516-7.107 3.63-8.024 4.254a175.21 175.21 0 0 0-23.486 20.12 210.5 210.5 0 0 0-22.443 26.913c0 0.012-0.007 0.025-0.011 0.037 0-0.012 0.007-0.025 0.011-0.038a202.837 202.837 0 0 0-32.244 72.81c-0.058 0.265-2.29 10.054-3.92 22.147a265.794 265.794 0 0 0-0.769 5.651c-0.558 3.636-0.992 7.6-1.42 13.767-0.019 0.239-0.031 0.474-0.048 0.712a591.152 591.152 0 0 0-0.481 7.995c0 0.411-0.025 0.816-0.025 1.227 0 132.709 107.6 240.29 240.324 240.29 118.865 0 217.559-86.288 236.882-199.63 0.407-3.075 0.732-6.168 1.092-9.27 4.777-41.21-0.53-84.525-15.588-120.747zm-164.068 72.1z" />
+-</svg>
++<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 67.733 67.733"><path d="M33.867 0A33.867 33.867 0 000 33.867a33.867 33.867 0 0033.867 33.866 33.867 33.867 0 0033.866-33.866A33.867 33.867 0 0033.867 0zm.086 6.822c7.166 0 13.526 2.568 18.68 7.54 2.484 2.397 4.149 4.669 5.575 7.608 1.928 3.975 2.71 7.432 2.71 11.995 0 6.006-1.735 11.244-5.337 16.117-1.07 1.448-3.162 3.647-4.55 4.785-3.807 3.12-8.659 5.231-13.473 5.863-1.664.218-5.594.245-7.121.049-4.744-.609-9.282-2.5-13.242-5.519-1.291-.984-3.715-3.423-4.773-4.803C9.46 46.592 7.618 42.206 7.01 37.57c-.26-1.985-.259-5.633.003-7.447 1.308-9.068 7.014-16.845 15.209-20.73 3.811-1.806 7.3-2.57 11.731-2.57zm-.089 4.097c-4.164-.004-7.815.95-11.43 2.987-3.289 1.855-6.69 5.26-8.553 8.563-1.371 2.433-2.375 5.32-2.767 7.96-.257 1.729-.262 5.164-.01 6.82.504 3.315 1.761 6.591 3.584 9.34.995 1.5.964 1.484 1.842.981 1.571-.898 1.981-1.334 2.837-3.01 1-1.96 2.07-3.673 3.037-4.863 1.116-1.374 1.269-1.618 1.829-2.915a17.5 17.5 0 011.123-2.13l.61-.942-.79-.777c-1.05-1.032-1.923-2.202-2.087-2.797-.168-.607.03-.946.82-1.402.796-.46 1.367-.593 3.498-.812 1.037-.106 2.163-.302 2.518-.436.353-.134 1.408-.709 2.344-1.276 2.703-1.639 2.932-1.724 4.553-1.688 1.368.03 1.37.029 2.182-.462 1.701-1.028 4.144-2.883 7.358-5.587.616-.519 1.21-.926 1.319-.905.454.088 1.29 2.136 1.416 3.476.077.812-.08 1.615-.562 2.872-.131.343-.192.67-.134.728.137.137.61-.453.61-.763 0-.394.261-.44.616-.106.259.242.482.311 1 .311.568 0 .708.053.93.348.375.501.463 1.867.176 2.733-.28.842-1.125 1.812-1.892 2.173-.686.322-2.076 1.68-2.726 2.662-.249.376-.716 1.16-1.037 1.742-.322.582-.861 1.461-1.199 1.954-.664.97-1.233 2.322-1.782 4.238-.322 1.125-.35 1.418-.363 3.928-.016 3.032-.173 3.776-.992 4.71-.932 1.06-1.862 3.391-1.94 4.86-.05.928-.193 1.832-.396 2.502-.089.294.078.29 1.073-.023 2.898-.913 5.26-2.14 7.54-3.92 1.213-.945 3.308-3.06 4.187-4.226 2.383-3.162 4.005-7.122 4.482-10.947.23-1.841.097-5.738-.254-7.429-.93-4.48-2.932-8.265-6.087-11.503-1.966-2.02-3.756-3.35-6.06-4.505-3.495-1.752-6.49-2.46-10.423-2.464zm4.279 14.997l-1.966.275-1.222 1.565 1.966-.276 1.222-1.564z" fill="context-fill #00acff"/></svg>
diff --git a/mozilla_dirs.patch b/mozilla_dirs.patch
new file mode 100644
index 0000000..e854faa
--- /dev/null
+++ b/mozilla_dirs.patch
@@ -0,0 +1,76 @@
+diff --git a/toolkit/xre/nsXREDirProvider.cpp b/toolkit/xre/nsXREDirProvider.cpp
+index 50a64a2..79d7d9c 100644
+--- a/toolkit/xre/nsXREDirProvider.cpp
++++ b/toolkit/xre/nsXREDirProvider.cpp
+@@ -303,16 +303,16 @@ static nsresult GetSystemParentDirectory(nsIFile** aFile) {
+ rv = GetOSXFolderType(kOnSystemDisk, kApplicationSupportFolderType,
+ getter_AddRefs(localDir));
+ if (NS_SUCCEEDED(rv)) {
+- rv = localDir->AppendNative("Mozilla"_ns);
++ rv = localDir->AppendNative("LibreWolf"_ns);
+ }
+ # else
+ constexpr auto dirname =
+ # ifdef HAVE_USR_LIB64_DIR
+- "/usr/lib64/mozilla"_ns
++ "/usr/lib64/librewolf"_ns
+ # elif defined(__OpenBSD__) || defined(__FreeBSD__)
+- "/usr/local/lib/mozilla"_ns
++ "/usr/local/lib/librewolf"_ns
+ # else
+- "/usr/lib/mozilla"_ns
++ "/usr/lib/librewolf"_ns
+ # endif
+ ;
+ rv = NS_NewNativeLocalFile(dirname, false, getter_AddRefs(localDir));
+@@ -413,9 +413,9 @@ nsXREDirProvider::GetFile(const char* aProperty, bool* aPersistent,
+ rv = GetUserDataDirectoryHome(getter_AddRefs(localDir), false);
+ if (NS_SUCCEEDED(rv)) {
+ # if defined(XP_MACOSX)
+- rv = localDir->AppendNative("Mozilla"_ns);
++ rv = localDir->AppendNative("LibreWolf"_ns);
+ # else
+- rv = localDir->AppendNative(".mozilla"_ns);
++ rv = localDir->AppendNative(".librewolf"_ns);
+ # endif
+ }
+ if (NS_SUCCEEDED(rv)) {
+@@ -465,9 +465,9 @@ nsXREDirProvider::GetFile(const char* aProperty, bool* aPersistent,
+ else if (!strcmp(aProperty, XRE_SYS_SHARE_EXTENSION_PARENT_DIR)) {
+ # ifdef ENABLE_SYSTEM_EXTENSION_DIRS
+ # if defined(__OpenBSD__) || defined(__FreeBSD__)
+- static const char* const sysLExtDir = "/usr/local/share/mozilla/extensions";
++ static const char* const sysLExtDir = "/usr/local/share/librewolf/extensions";
+ # else
+- static const char* const sysLExtDir = "/usr/share/mozilla/extensions";
++ static const char* const sysLExtDir = "/usr/share/librewolf/extensions";
+ # endif
+ return NS_NewNativeLocalFile(nsDependentCString(sysLExtDir), false, aFile);
+ # else
+@@ -1276,7 +1276,7 @@ nsresult nsXREDirProvider::GetUpdateRootDir(nsIFile** aResult,
+ nsDependentCString(hasVendor ? GetAppVendor() : GetAppName())))) {
+ return NS_ERROR_FAILURE;
+ }
+- } else if (NS_FAILED(localDir->AppendNative("Mozilla"_ns))) {
++ } else if (NS_FAILED(localDir->AppendNative("LibreWolf"_ns))) {
+ return NS_ERROR_FAILURE;
+ }
+
+@@ -1559,7 +1559,7 @@ nsresult nsXREDirProvider::AppendSysUserExtensionPath(nsIFile* aFile) {
+
+ #if defined(XP_MACOSX) || defined(XP_WIN)
+
+- static const char* const sXR = "Mozilla";
++ static const char* const sXR = "LibreWolf";
+ rv = aFile->AppendNative(nsDependentCString(sXR));
+ NS_ENSURE_SUCCESS(rv, rv);
+
+@@ -1569,7 +1569,7 @@ nsresult nsXREDirProvider::AppendSysUserExtensionPath(nsIFile* aFile) {
+
+ #elif defined(XP_UNIX)
+
+- static const char* const sXR = ".mozilla";
++ static const char* const sXR = ".librewolf";
+ rv = aFile->AppendNative(nsDependentCString(sXR));
+ NS_ENSURE_SUCCESS(rv, rv);
+
diff --git a/policies.json b/policies.json
new file mode 100644
index 0000000..f9058c4
--- /dev/null
+++ b/policies.json
@@ -0,0 +1,94 @@
+{
+ "__COMMENT__ More Information": "https://github.com/mozilla/policy-templates/blob/master/README.md",
+ "policies": {
+ "AppUpdateURL": "https://localhost",
+ "DisableAppUpdate": true,
+ "OverrideFirstRunPage": "",
+ "OverridePostUpdatePage": "",
+ "DisableSystemAddonUpdate": true,
+ "DisableProfileImport": false,
+ "DisableFirefoxStudies": true,
+ "DisableTelemetry": true,
+ "DisableFeedbackCommands": true,
+ "DisablePocket": true,
+ "DisableSetDesktopBackground": false,
+ "DisableDeveloperTools": false,
+ "DNSOverHTTPS": {
+ "Enabled": false,
+ "ProviderURL": "",
+ "Locked": false
+ },
+ "NoDefaultBookmarks": true,
+ "WebsiteFilter": {
+ "Block": [
+ "https://localhost/*"
+ ],
+ "Exceptions": [
+ "https://localhost/*"
+ ]
+ },
+ "Extensions": {
+ "Install": [
+ "https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi"
+ ],
+ "Uninstall": [
+ "google@search.mozilla.org",
+ "bing@search.mozilla.org",
+ "amazondotcom@search.mozilla.org",
+ "ebay@search.mozilla.org",
+ "twitter@search.mozilla.org"
+ ]
+ },
+ "SearchEngines": {
+ "PreventInstalls": false,
+ "Remove": [
+ "Google",
+ "Bing",
+ "Amazon.com",
+ "eBay",
+ "Twitter"
+ ],
+ "Default": "DuckDuckGo",
+ "Add": [
+ {
+ "Name": "DuckDuckGo Lite",
+ "Description": "Minimal, ad-free version of DuckDuckGo",
+ "Alias": "",
+ "Method": "POST",
+ "URLTemplate": "https://duckduckgo.com/lite/?q={searchTerms}",
+ "PostData": "q={searchTerms}",
+ "IconURL": "data:image/x-icon;base64,AAABAAIAEBAAAAEAIABoBAAAJgAAACAgAAABACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVZ4Ss0Wd+PM1nf1Tpd4PM6XeDzM1nf1TRZ3481WeErAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVYD/BjRa3pRQcOP9tMLy/83q2f/m9uv//f7+//L0/P+qu+7/UHDj/TRa3pRVgP8GAAAAAAAAAAAAAAAAVYD/BjNZ372Jnuv/9/j9/8nT9v+D0pj/R71m/02+a/9Kr3z/XreM//f4/f+Jnuv/M1nfvVWA/wYAAAAAAAAAADRa3pSJnuv/4Ob6/1h25P+8yPT/ntyv/6zhuv+Fvrj/PpKY/0Cbjf9YduT/4Ob6/4me6/80Wt6UAAAAADVZ4StQcOP99/j9/1h25P8zWN7/5+z7////////////Z4Lm/zNY3v8zWd3/M1je/1h25P/3+P3/UHDj/TVZ4Ss0Wd+PrLvx/5ut7v8zWN7/Rmfh/////////////////0Jo4P8neuf/IY/s/yZ85/8yXN//m63u/6y78f80Wd+PM1nf1ert+/9ObuL/M1je/3CK5////////////9j4//8RyPv/J3vn/ytx5P8lg+n/KHjm/05u4v/p7fv/M1nf1Tpd4PP4+f3/M1je/zNY3v+bre7////////////X+P//JNL8/yDJ+v8Utvb/II/t/y9j4P8zWN7/+Pn9/zpd4PM6XeDz+Pn9/zNY3v8zWN7/w871///////////////////////k+v//T5zt/xyc7/8UtPX/L2Ph//j5/f86XeDzM1nf1ert+/9ObuL/M1je/9vi+f//////oXZf////////////oXZf/2N/5f8zWN7/M1je/05u4v/q7fv/M1nf1TRZ34+su/H/m63u/zNY3v/H0fX//////////////////////+js+/83W97/M1je/zNY3v+bre7/rLvx/zRZ3481WeErUHDj/ff4/f9YduT/X3zl//Hz/P////////////j5/f9yi+j/M1je/zNY3v9YduT/9/j9/1Bw4/01WeErAAAAADRa3pSJnuv/4Ob6/1h25P9MbOL/2N/4/73J9P9DZeD/M1je/zNY3v9YduT/4Ob6/4me6/80Wt6UAAAAAAAAAABVgP8GM1nfvYme6//3+P3/m63u/05u4v8zWN7/M1je/05u4v+bre7/9/j9/4me6/8zWd+9VYD/BgAAAAAAAAAAAAAAAFWA/wY0Wt6UUHDj/ay78f/p7fv/+Pn9//j5/f/p7fv/rLvx/1Bw4/00Wt6UVYD/BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVZ4Ss0Wd+PM1nf1Tpd4PM6XeDzM1nf1TRZ3481WeErAAAAAAAAAAAAAAAAAAAAAPAPAADAAwAAgAEAAIABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIABAACAAQAAwAMAAPAPAAAoAAAAIAAAAEAAAAABACAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFWA/wY2Wt9HM1nelTRY3780WN7ZM1je8zNY3vM0WN7ZNFjfvzNZ3pU2Wt9HVYD/BgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVg3xgzWN+WNFne8TNY3v9ceuT/iJ7r/52v7/+ywPL/ssDy/52v7/+Inuv/XHrk/zNY3v80Wd7xM1jfljVg3xgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElt/wczWOCCM1nf9Ets4v+ouPH/6e37/+vv+//a4Pj/2eD4/9zi+f/c4vn/2eD4/9rg+P/m6vv/6e37/6i48f9LbOL/M1nf9DNY4IJJbf8HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1YN8YM1jfxz9i4P+js/D/8fP8/6Cx7/+7x/P/5fbp/1zEd/+o4Lb/9vz4////////////3+T5/zVZ3v9Xed3/obPu//Hz/P+js/D/P2Hf/zNY38c1YN8YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN1njLjRZ3uNTcuP/4eb6/7PB8v9IaeH/M1je/9rg+f/H69D/Rrxl/0a8Zf9NtV//RrRa/063Yv9fpqf/QqWA/0a8Zf87gqv/SGnh/7TC8v/h5vr/U3Lj/zRZ3uMzW+MtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVg3xg0Wd7jZ4Pm/+/x/P+Emuv/M1je/zNY3v87Xt///P3+/7rmxv9GvGX/Rrxl/0azWv9GvGX/Rrxl/0a8ZP9GvGX/Rrxl/zyIo/8zWN7/M1je/4Sa6//v8fz/Z4Lm/zRZ3uM1YN8YAAAAAAAAAAAAAAAAAAAAAAAAAABJbf8HM1jfx1Ny4//v8fz/aoXm/zNY3v8zWN7/M1je/2N/5f//////tOTB/0a8Zf9HvWb/c8mH/1W+bv9IuWj/Qqp7/0a8Zf9GvGX/PIWo/zNY3v8zWN7/M1je/2qF5v/v8fz/U3Lj/zNY38dJbf8HAAAAAAAAAAAAAAAAAAAAADNY4II/YuD/4eb6/4Sa6/8zWN7/M1je/zNY3v8zWN7/j6Ps///////W8d3/pt+1/+X26v//////8/X9/zhc3v80Wdz/PIek/0a4av85d7j/M1je/zNY3v8zWN7/M1je/4Sa6//h5vr/P2Hf/zNY4IIAAAAAAAAAAAAAAAA1YN8YM1nf9KOz8P+0wvL/M1je/zNY3v8zWN7/M1je/zNY3v+6xvP///////////////////////////+zwfL/M1je/zNY3v8zWN7/NFzY/zNZ3f8zWN7/M1je/zNY3v8zWN7/M1je/7TC8v+js/D/M1nf9DVg3xgAAAAAAAAAADNY35ZLbOL/8fP8/0hp4f8zWN7/M1je/zNY3v8zWN7/M1je/+Xq+v///////////////////////////32U6v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/SGnh//Hz/P9LbOL/M1jflgAAAABVgP8GNFne8ai48f+hsu//M1je/zNY3v8zWN7/M1je/zNY3v9DZeD/////////////////////////////////V3bj/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/obLv/6i48f80Wd7xVYD/BjZa30czWN7/6e37/1Z04/8zWN7/M1je/zNY3v8zWN7/M1je/2+J5/////////////////////////////////9RcOL/Lmfi/yKN7P8XrPP/EML5/w3K+/8Suvf/HZnu/y5n4v8zWN7/M1je/zNY3v9WdOP/6e37/zNY3v82Wt9HM1nelVx65P/j6Pr/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/mavu////////////////////////////7/z//yK79v8K0v3/Fq/0/yKN7P8iiev/IY7s/xqh8P8Suff/Dcr7/y5o4v8zWN7/M1je/zNY3v/j6Pr/XHrk/zNZ3pU0WN+/iJ7r/6++8v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v/DzvX///////////////////////////9k4/7/CtL9/xK59/8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/6++8v+Inuv/NFjfvzRY3tmdr+//mqzu/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/+7x/P///////////////////////////2Xj/v8K0v3/C9D9/xmm8f8YqfP/Gafy/yKN7P8vZuH/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/mqzu/52v7/80WN7ZM1je87LA8v+Fm+v/M1je/zNY3v8zWN7/M1je/zNY3v9La+H/////////////////////////////////+P7//3Pm/v8P0/3/CtL9/wrS/f8K0v3/CtL9/wrR/f8VsvX/JYPp/zNb3v8zWN7/M1je/zNY3v+Fm+v/ssDy/zRZ3vIzWN7zssDy/4Wb6/8zWN7/M1je/zNY3v8zWN7/M1je/3SN6P////////////////////////////////////////////b+///T9///vPP//1q/9v8WrfT/DMv8/wrS/f8K0v3/DsX6/yl25v8zWN7/M1je/4Wb6/+ywPL/M1je8zRY3tmdr+//mqzu/zNY3v8zWN7/M1je/zNY3v8zWN7/m63u////////////0LWn/7qTfv/////////////////////////////+/v//////s8Dy/zNY3v8zWt7/KXbm/x2b7v8bn/D/KnPl/zNY3v8zWN7/mqzu/52v7/80WN7ZNFjfv4me6/+vvvL/M1je/zNY3v8zWN7/M1je/zNY3v+zwPL///////////+sfWT/om5R//v59///////////////////////pHFV/8Cdiv+ruvH/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v+vvvL/iJ7r/zRY378zWd6VXHrk/+Po+v8zWN7/M1je/zNY3v8zWN7/M1je/7/K9P////////////z6+f/38u/////////////////////////////NsKH/4dDH/3uT6f8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/+Po+v9ceuT/M1nelTZa30czWN7/6e37/1Z04/8zWN7/M1je/zNY3v8zWN7/p7fw///////k1c3////////////////////////////////////////////3+f3/Q2Xg/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v9WdOP/6e37/zNY3v82Wt9HVYD/BjRZ3vGouPH/oLHv/zNY3v8zWN7/M1je/zNY3v92j+j//////+7l3//gz8b/+/j2///////////////////////p3db/2MK2/6mz5P8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/6Gy7/+ouPH/NFne8VWA/wYAAAAAM1jflkts4v/x8/z/SGnh/zNY3v8zWN7/M1je/zNY3v/U3Pj////////////////////////////////////////////s7/z/RWfg/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v9IaeH/8fP8/0ts4v8zWN+WAAAAAAAAAAA1YN8YM1nf9KOz8P+zwfL/M1je/zNY3v8zWN7/M1je/0Fj4P/DzvX/////////////////////////////////8PP8/2WB5v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/7TC8v+js/D/M1nf9DVg3xgAAAAAAAAAAAAAAAAzWOCCP2Lg/+Hm+v+Emuv/M1je/zNY3v8zWN7/R2jh/0do4f97k+n/1dz4////////////7/L8/4Oa6/9CZOD/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v+Fm+v/4eb6/z9i4P8zWOCCAAAAAAAAAAAAAAAAAAAAAElt/wczWN/HU3Lj/+/x/P9qheb/M1je/zNY3v+Xqe7/7vH8/////////////////87X9/9TcuP/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/aoXm/+/x/P9TcuP/M1jfx0lt/wcAAAAAAAAAAAAAAAAAAAAAAAAAADVg3xg0Wd7jZ4Lm/+/x/P+Emuv/M1je/2J+5f+puPH/rrzx/5Kl7f9PbuL/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/4Sa6//v8fz/Z4Lm/zRZ3uM1YN8YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdZ4y40Wd7jU3Lj/+Hm+v+0wvL/SGnh/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/0hp4f+0wvL/4eb6/1Ny4/80Wd7jM1vjLQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADVg3xgzWN/HP2Lg/6Oz8P/x8/z/obLv/1Z04/8zWN7/M1je/zNY3v8zWN7/M1je/zNY3v8zWN7/M1je/1Z04/+hsu//8fP8/6Oz8P8/Yd//M1jfxzVg3xgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAElt/wczWOCCM1nf9Ets4v+ouPH/6e37/+Po+v+vvvL/mqzu/4Wb6/+Fm+v/mqzu/6++8v/j6Pr/6e37/6i48f9LbOL/M1nf9DNY4IJJbf8HAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1YN8YM1jfljRZ3vEzWN7/XHrk/4ie6/+dr+//ssDy/7LA8v+dr+//iJ7r/1x65P8zWN7/NFne8TNY35Y1YN8YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAVYD/BjZa30czWd6VNFjfvzRY3tkzWN7zM1je8zRY3tk0WN+/M1nelTZa30dVgP8GAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/AA///AAD//AAAP/gAAB/wAAAP4AAAB8AAAAPAAAADgAAAAYAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAABgAAAAcAAAAPAAAAD4AAAB/AAAA/4AAAf/AAAP/8AAP//wAP/"
+ },
+ {
+ "Name": "SearXNG",
+ "Description": "A privacy-respecting, hackable metasearch engine",
+ "Alias": "",
+ "Method": "POST",
+ "URLTemplate": "https://searx.be/?q={searchTerms}",
+ "PostData": "q={searchTerms}&time_range=&language=en-US&category_general=on",
+ "IconURL": "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgaWQ9InN2ZzgiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDkyIDkyIiBoZWlnaHQ9IjkybW0iIHdpZHRoPSI5Mm1tIj4KICA8ZGVmcyBpZD0iZGVmczIiLz4KICA8bWV0YWRhdGEgaWQ9Im1ldGFkYXRhNSI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiLz4KICAgICAgICA8ZGM6dGl0bGUvPgogICAgICA8L2NjOldvcms+CiAgICA8L3JkZjpSREY+CiAgPC9tZXRhZGF0YT4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNDAuOTIxMzAzLC0xNy40MTY1MjYpIiBpZD0ibGF5ZXIxIj4KICAgIDxjaXJjbGUgcj0iMCIgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTI7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIgY3k9IjkyIiBjeD0iNzUiIGlkPSJwYXRoMzcxMyIvPgogICAgPGNpcmNsZSByPSIzMCIgY3k9IjUzLjkwMjU1NyIgY3g9Ijc1LjkyMTMwMyIgaWQ9InBhdGg4MzQiIHN0eWxlPSJmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMzMDUwZmY7c3Ryb2tlLXdpZHRoOjEwO3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiLz4KICAgIDxwYXRoIGQ9Im0gNjcuNTE0ODQ5LDM3LjkxNTI0IGEgMTgsMTggMCAwIDEgMjEuMDUxNDc1LDMuMzEyNDA3IDE4LDE4IDAgMCAxIDMuMTM3MzEyLDIxLjA3ODI4MiIgaWQ9InBhdGg4NTIiIHN0eWxlPSJmaWxsOm5vbmU7ZmlsbC1vcGFjaXR5OjE7c3Ryb2tlOiMzMDUwZmY7c3Ryb2tlLXdpZHRoOjU7c3Ryb2tlLW1pdGVybGltaXQ6NDtzdHJva2UtZGFzaGFycmF5Om5vbmU7c3Ryb2tlLW9wYWNpdHk6MSIvPgogICAgPHJlY3QgdHJhbnNmb3JtPSJyb3RhdGUoLTQ2LjIzNDcwOSkiIHJ5PSIxLjg2NjkxMDVlLTEzIiB5PSIxMjIuMDg5OTUiIHg9IjMuNzA2MzUyOSIgaGVpZ2h0PSIzOS45NjMzMDMiIHdpZHRoPSIxOC44NDYzMzEiIGlkPSJyZWN0OTEyIiBzdHlsZT0ib3BhY2l0eToxO2ZpbGw6IzMwNTBmZjtmaWxsLW9wYWNpdHk6MTtzdHJva2U6bm9uZTtzdHJva2Utd2lkdGg6ODtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2Utb3BhY2l0eToxIi8+CiAgPC9nPgo8L3N2Zz4="
+ },
+ {
+ "Name": "MetaGer",
+ "Description": "MetaGer: Privacy Protected Search & Find",
+ "Alias": "",
+ "Method": "GET",
+ "URLTemplate": "https://metager.org/meta/meta.ger3?eingabe={searchTerms}",
+ "IconURL": "data:image/x-icon;base64,AAABAAEAQEAAAAEACAAoFgAAFgAAACgAAABAAAAAgAAAAAEACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgP4AAYD+AACA/wADgf4ABIH+AAWC/gAGgv4ACYT+AAuF/gAMhf4ADYb+AA6G/gAPh/4AEIf+ABGI/gATif4AFIn+ABWK/gAWiv4AF4v+ABmM/gAajP4AG43+AByN/gAejv4AIZD+ACSR/gAmkv4AJ5L+ACmU/gAqlP4ALJX+AC2W/gAulv4AMpj+ADSZ/gA5m/4AO5z+AD6e/gA/n/4AQJ/+AEKg/gBDof4ARKH+AEWi/gBGov4ASKP+AEyl/gBPpv4AU6j+AFWq/gBXq/4AWKv+AFut/gBcrf4AX6/+AGGw/gBksf4AZ7L+AGq0/gBvtv4Acbf+AHO4/gB0uf4Adrr+AHe6/gB4u/4Afr7+AIC//gCBwP4Ah8P+AIjD/gCJxP4AisT+AIvF/gCNxv4AkMf+AJHI/gCSyP4Ak8n+AJTJ/gCVyv4Alsr+AJjL/gCazP4AnM3+AJ7O/gCgz/4AodD+AKLQ/gCk0f4AptL+AKjT/gCq1P4ArdX+AK7W/gCv1v4AsNf+ALXZ/gC22v4At9r+ALjb/gC52/4AvN3+AMPg/gDE4f4AxuL+AMrk/gDM5f4Azub+AM/m/gDQ5/4A0ef+ANLo/gDU6f4A1ur+ANnr/gDb7P4A3+7+AOHv/gDk8f4A5fH+AOby/gDn8v4A6PP+AOnz/gDq9P4A6/T+AO31/gDv9v4A8/j+APX5/gD2+v4A9/r+APj7/gD5+/4A+vz+APv8/gD8/f4A/f3+AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnyMjIyMHgICAgICAgICAgICAgIDhYyMjIwSAgICAgICAgIEMlVxfoiEfXJeRSYDAgICAgICAgICAgICAgICAgJmjIyMjDQCAgICAgICAgICAgICAm2MjIyMKwICAgICAgIzeIyMjIyMjIyMjIyMgU8dAgICAgICAgICAgICAgICSoyMjIxGAgICAgICAgICAgICAgJXjIyMjD4CAgICAgJMjIyMjIyMjIyMjIyMjIyMhQUCAgICAgICAgICAgICAjaMjIyMYwICAgICAgICAgICAgICPYyMjIxYAgICAgJAjIyMjIyMjIyMjIyMjIyMjIwjAgICAgICAgICAgICAgIhjIyMjHkCAgICAjtoaGIIAgICAiqMjIyMbwICAgIWg4yMjIyMXCoOAQMPJWmMjIyMOwICAgICAgICAgICAgICBYeMjIyMEAICAgJtjIyMUgICAgIQjIyMjIYEAgICQ4yMjIyMOAICAgICAgJCjIyMjFcCAgICAgICAgICAgICAgJwjIyMjCkCAgIVjIyMjIwrAgICAnqMjIyMIAICAmqMjIyMWgICAgICAgICKoyMjIxzAgICAgICAgICAgICAgICWYyMjIw9AgICOYyMjIyMdwsCAgJljIyMjDUCAgJ9jIyMjCcCAgICAgICAgyLjIyMiwoCAgICAgICAgICAgICAj+MjIyMVwICAmCMjIyMjIxWAgICSYyMjIxJAgICh4yMjIwMAgICAgJkjIyMjIyMjIwpAgICAgICAgICAgICAgIsjIyMjG4CAgaCjIyMjIyMjC8CAjWMjIyMZQICAn+MjIyMBAICAgICRoyMjIyMjIyMQgICAgICAgICAgICAgICEoyMjIyGBAIsjIyMjGiMjIx6DgIgjIyMjHsCAgJzjIyMjBMCAgICAjOMjIyMjIyMjF8CAgICAgICAgICAgICAgJ8jIyMjB8CTIyMjHYNeIyMjFsCBIeMjIyMEgICXYyMjIwnAgICAgIcjIyMjIyMjIx4AgICAgICAgICAgICAgICZoyMjIw1AnWMjIxQAi6MjIyMMQJvjIyMjCsCAjqMjIyMRwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkqMjIyMSRuMjIyMLgICVIyMjH4RWYyMjIw+AgIXiIyMjH8KAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2jIyMjGY9jIyMggYCAgl2jIyMXj+MjIyMWAICAlmMjIyMUQICAgICAgICAgICAgICAgICAgICAgICAgICAgICIYyMjIx8Z4yMjGECAgICKIuMjIxZjIyMjG8CAgIchYyMjIw8AgICAgICAgICAgICAgICAgICAgICAgICAgICAgWHjIyMjImMjIw5AgICAgJOjIyMiYyMjIyGBAICAjyMjIyMjFMMAgICAgICAgIBMGwYAgICAgICAgICAgICAgICcIyMjIyMjIyLFAICAgICB3SMjIyMjIyMjCACAgICXYyMjIyMgUstFgYJGTFNeYyMMwICAgICAgICAgICAgICAlmMjIyMjIyMbAICAgICAgIkioyMjIyMjIw1AgICAgRdjIyMjIyMjIyMjIyMjIyMjE0CAgICAgICAgICAgICAgI/jIyMjIyMjEQCAgICAgICAkiMjIyMjIyMSQICAgICAEGFjIyMjIyMjIyMjIyMjIxrAgICAgICAgICAgICAgICLIyMjIyMjIwjAgICAgICAgIGcoyMjIyMjGUCAgICAgICGliHjIyMjIyMjIyMjIx/TAICAgICAgICAgICAgICAhKMjIyMjIx6AAICAgICAgICAiKIjIyMjIx7AgICAgICAgICDjdWa32FiIBzYEMmBAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"
+ },
+ {
+ "Name": "StartPage",
+ "Description": "The world's most private search engine",
+ "Alias": "",
+ "Method": "GET",
+ "URLTemplate": "https://www.startpage.com/sp/search?query={searchTerms}",
+ "IconURL": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAADb0lEQVRYhb2VXWgUVxiGv2gtWHrXBqExO2d2z5leWC80ilRKDTHunAPWhEi0gYY2mZkorYm7Z260oCiiFaQ3/RNqG/CvqAheKLSUUgpWqBdCKdbc+XMji4mhmk2MXTdvL9r4U+dsZtasH3x3877v852/IapUuzDHz6HF0/jU1/g10CgEIUq+xoMgxLAf4qIX4ksvj3c6O/FiRa8k1dyMF4IQm/0QV4MQiNkFP4+P+/rw0jOFewN4I9D4PUHwk61xrSePVVWF9+agAo2xqsMfdcnLwU8U7ufQHGhMzkL4dJe9EN3xwrdiga9xq4LZXV/jkK+xsTePZT05LPXzaPvvcBZMOj/EvQ/yWDwzgMZRo4nG0a4+vGrSduYxP9DYF4QoG/QXKoa/349M8O+1ippgb6wlJCIvh25fY8rgs6bS9LuiRJ7GT0SoiwtARORpfG5YhWNGURDifJSoR2NlknAiop5+1Psh7kdczYJR5IcYiRAMJw1/OJDGL1EDdYWGc7R9LyY/+QzlLwYxdfgkcPoscO5H/FYtwMQ9HBmfAMaKwOhfwPBt4GYBuH4ddqQAQBFP1+VqAQCcifADgAaT4HLExyXAfPXM1TSvvTNX6NiQH29bPzC2tr2/uLZ9y/i6joERAHMjJVeGrn79/Q/ncejb09i95yA2fbQHbeu3YsmKjTuTxltc9dqOwv+bOfJno6iRq2ykSKiJVCbbFDc8lWpNM0eORHlZXH5YSVtnO+oPA/mIlVEtMSZfYgt1I8rDFvJWfX3zy5UNMqqFCVU2rESZCXU8lZZvEdHj+1hncXcpE+qg7ci/I8MdBYu78f6KjLv7TSaPYOQ4E3KICfWnLdSdGb935KlY4dMTMaEGZzJN0kzI74hoTiIIW7g7bEeVZg/C/SoJABERNablcsbdC7MFYXEV+6/6JIjIvs2EGmRCFcz7rEYZd0+kuHyPOfKmESLjhlVBTJdlZe1GvibLHPkuE7LLymTVa7Z8nR7b44Xp1sXMUaOG8zBl8WzvM0HEAuXyTebIomElSpaQHTWHaOTStR113wAxmUq7rTWHSHF3AxPqQTSEHGMiu6LmECwjNzEhpwyP1O0UdxfVHoLLbRUeqks1ByAisoQ8YNiK0nMBICKyufzmqbdByHPPDYCI5jIu99lCDTNHFhl3TzQ0rH7lHy2g5RVQKFbLAAAAAElFTkSuQmCC"
+ }
+ ]
+ },
+ "SupportMenu": {
+ "Title": "LibreWolf Issue Tracker",
+ "URL": "https://gitlab.com/librewolf-community/settings/issues"
+ }
+ }
+}
diff --git a/pref-naming.patch b/pref-naming.patch
new file mode 100644
index 0000000..f5cb16d
--- /dev/null
+++ b/pref-naming.patch
@@ -0,0 +1,57 @@
+--- a/browser/locales/en-US/browser/preferences/preferences.ftl
++++ b/browser/locales/en-US/browser/preferences/preferences.ftl
+@@ -128,6 +128,8 @@
+
+ startup-header = Startup
+
++session-restore-learn-more = What if it does not work?
++
+ always-check-default =
+ .label = Always check if { -brand-short-name } is your default browser
+ .accesskey = y
+@@ -409,13 +409,13 @@
+ .label = Play DRM-controlled content
+ .accesskey = P
+
+-play-drm-content-learn-more = Learn more
++play-drm-content-learn-more = Why we disable it
+
+ update-application-title = { -brand-short-name } Updates
+
+ update-application-description = Keep { -brand-short-name } up to date for the best performance, stability, and security.
+
+-update-application-version = Version { $version } <a data-l10n-name="learn-more">What’s new</a>
++update-application-version = Version { $version } <a data-l10n-name="learn-more">Visit the repositories</a>
+
+ update-history =
+ .label = Show Update History…
+@@ -568,7 +568,7 @@
+ # "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 = Homepage (Default)
+
+ home-mode-choice-custom =
+ .label = Custom URLs…
+@@ -597,8 +597,8 @@
+
+ ## Home Section - Firefox 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 = Homepage Content
++home-prefs-content-description = Choose what content you want on your Homepage screen.
+
+ home-prefs-search-header =
+ .label = Web Search
+@@ -650,7 +650,7 @@
+ home-prefs-snippets-header =
+ .label = Snippets
+
+-home-prefs-snippets-description-new = Tips and news from { -vendor-short-name } and { -brand-product-name }
++home-prefs-snippets-description-new = Tips and news from { -vendor-short-name }
+
+ home-prefs-sections-rows-option =
+ .label =
+
diff --git a/privacy-preferences.patch b/privacy-preferences.patch
new file mode 100644
index 0000000..ab6899a
--- /dev/null
+++ b/privacy-preferences.patch
@@ -0,0 +1,62 @@
+--- a/browser/components/preferences/privacy.inc.xhtml
++++ b/browser/components/preferences/privacy.inc.xhtml
+@@ -54,7 +54,7 @@
+ </description>
+ </vbox>
+ </hbox>
+- <vbox id="contentBlockingCategories">
++ <vbox id="contentBlockingCategories" hidden="true">
+ <radiogroup id="contentBlockingCategoryRadio"
+ preference="browser.contentblocking.category"
+ aria-labelledby="trackingProtectionMenuDesc">
+@@ -535,7 +535,7 @@
+ <!-- History -->
+ <groupbox id="historyGroup" data-category="panePrivacy" hidden="true">
+ <label><html:h2 data-l10n-id="history-header"/></label>
+- <hbox align="center">
++ <hbox align="center" hidden="true">
+ <label id="historyModeLabel"
+ control="historyMode"
+ data-l10n-id="history-remember-label"/>
+@@ -585,8 +585,9 @@
+ <vbox>
+ <checkbox id="privateBrowsingAutoStart"
+ data-l10n-id="history-private-browsing-permanent"
+- preference="browser.privatebrowsing.autostart"/>
+- <vbox class="indent">
++ preference="browser.privatebrowsing.autostart"
++ hidden="true" />
++ <vbox>
+ <checkbox id="rememberHistory"
+ data-l10n-id="history-remember-browser-option"
+ preference="places.history.enabled"/>
+@@ -1015,15 +1016,15 @@
+
+ <!-- addons, forgery (phishing) UI Security -->
+ <groupbox id="browsingProtectionGroup" data-category="panePrivacy" hidden="true">
+- <label><html:h2 data-l10n-id="security-browsing-protection"/></label>
+- <hbox align = "center">
++ <label><html:h2 data-l10n-id="security-browsing-protection" hidden="true"/></label>
++ <hbox align = "center" hidden="true">
+ <checkbox id="enableSafeBrowsing"
+ data-l10n-id="security-enable-safe-browsing"
+ class="tail-with-learn-more"/>
+ <label id="enableSafeBrowsingLearnMore"
+ class="learnMore" is="text-link" data-l10n-id="security-enable-safe-browsing-link"/>
+ </hbox>
+- <vbox class="indent">
++ <vbox class="indent" hidden="true">
+ <checkbox id="blockDownloads"
+ data-l10n-id="security-block-downloads"/>
+ <checkbox id="blockUncommonUnwanted"
+--- a/browser/locales/en-US/browser/preferences/preferences.ftl
++++ b/browser/locales/en-US/browser/preferences/preferences.ftl
+@@ -1107,7 +1107,7 @@ addressbar-suggestions-settings = Change preferences for search engine suggestio
+
+ content-blocking-enhanced-tracking-protection = Enhanced Tracking Protection
+
+-content-blocking-section-top-level-description = Trackers follow you around online to collect information about your browsing habits and interests. { -brand-short-name } blocks many of these trackers and other malicious scripts.
++content-blocking-section-top-level-description = LibreWolf supports - and it enables by default - Enhanced Tracking Protection in Strict mode. This is one of the most important settings in the browser, as it provides state partitioning, strict blocking lists and other neat privacy features. We do not recommend changing to other modes.
+
+ content-blocking-learn-more = Learn more
+
diff --git a/remap-links.patch b/remap-links.patch
new file mode 100644
index 0000000..c6a6a7d
--- /dev/null
+++ b/remap-links.patch
@@ -0,0 +1,156 @@
+--- a/browser/components/preferences/main.js
++++ b/browser/components/preferences/main.js
+@@ -308,12 +308,19 @@
+ "performanceSettingsLearnMore"
+ );
+ let performanceSettingsUrl =
+- Services.urlFormatter.formatURLPref("app.support.baseURL") +
+- "performance";
++ "https://support.mozilla.org/en-US/kb/performance-settings";
+ performanceSettingsLink.setAttribute("href", performanceSettingsUrl);
+
+ this.updateDefaultPerformanceSettingsPref();
+
++ let sessionRestoreLink = document.getElementById(
++ "sessionRestoreLearnMore"
++ );
++ let sessionRestoreUrl =
++ Services.urlFormatter.formatURLPref("app.support.baseURL") +
++ "why-is-session-restore-not-working";
++ sessionRestoreLink.setAttribute("href", sessionRestoreUrl);
++
+ let defaultPerformancePref = Preferences.get(
+ "browser.preferences.defaultPerformanceSettings.enabled"
+ );
+@@ -326,8 +333,7 @@
+ "connectionSettingsLearnMore"
+ );
+ let connectionSettingsUrl =
+- Services.urlFormatter.formatURLPref("app.support.baseURL") +
+- "prefs-connection-settings";
++ "https://support.mozilla.org/en-US/kb/connection-settings-firefox"
+ connectionSettingsLink.setAttribute("href", connectionSettingsUrl);
+ this.updateProxySettingsUI();
+ initializeProxyUI(gMainPane);
+@@ -357,8 +363,7 @@
+ document.getElementById("pictureInPictureBox").hidden = false;
+
+ let pipLearnMoreUrl =
+- Services.urlFormatter.formatURLPref("app.support.baseURL") +
+- "picture-in-picture";
++ "https://support.mozilla.org/en-US/kb/turn-picture-picture-mode";
+ let link = document.getElementById("pictureInPictureLearnMore");
+ link.setAttribute("href", pipLearnMoreUrl);
+ }
+@@ -509,8 +514,7 @@
+ ) {
+ document.getElementById("mediaControlBox").hidden = false;
+ let mediaControlLearnMoreUrl =
+- Services.urlFormatter.formatURLPref("app.support.baseURL") +
+- "media-keyboard-control";
++ "https://support.mozilla.org/en-US/kb/control-audio-or-video-playback-your-keyboard";
+ let link = document.getElementById("mediaControlLearnMore");
+ link.setAttribute("href", mediaControlLearnMoreUrl);
+ }
+@@ -543,7 +547,7 @@
+
+ let drmInfoURL =
+ Services.urlFormatter.formatURLPref("app.support.baseURL") +
+- "drm-content";
++ "how-do-i-enable-drm";
+ document
+ .getElementById("playDRMContentLink")
+ .setAttribute("href", drmInfoURL);
+@@ -870,7 +874,8 @@
+
+ const link = document.getElementById("browserContainersLearnMore");
+ link.href =
+- Services.urlFormatter.formatURLPref("app.support.baseURL") + "containers";
++ Services.urlFormatter.formatURLPref("app.support.baseURL") +
++ "why-isnt-first-party-isolate-enabled-by-default";
+
+ document.getElementById("browserContainersbox").hidden = false;
+ this.readBrowserContainersCheckbox();
+
+--- a/browser/components/preferences/privacy.js
++++ b/browser/components/preferences/privacy.js
+@@ -283,7 +283,7 @@ function setUpContentBlockingWarnings() {
+ let links = document.querySelectorAll(".contentBlockWarningLink");
+ let contentBlockingWarningUrl =
+ Services.urlFormatter.formatURLPref("app.support.baseURL") +
+- "turn-off-etp-desktop";
++ "what-is-mozilla-tracking-protection";
+ for (let link of links) {
+ link.setAttribute("href", contentBlockingWarningUrl);
+ }
+@@ -478,7 +478,7 @@ var gPrivacyPane = {
+ let link = document.getElementById("httpsOnlyLearnMore");
+ let httpsOnlyURL =
+ Services.urlFormatter.formatURLPref("app.support.baseURL") +
+- "https-only-prefs";
++ "does-librewolf-use-https-only-mode";
+ link.setAttribute("href", httpsOnlyURL);
+
+ // Set radio-value based on the pref value
+@@ -644,7 +644,7 @@ var gPrivacyPane = {
+ );
+ const breachAlertsLearnMoreUrl =
+ Services.urlFormatter.formatURLPref("app.support.baseURL") +
+- "lockwise-alerts";
++ "why-is-the-built-in-password-manager-disabled";
+ breachAlertsLearnMoreLink.setAttribute("href", breachAlertsLearnMoreUrl);
+
+ this._initSafeBrowsing();
+@@ -751,11 +751,12 @@ var gPrivacyPane = {
+ );
+ let url =
+ Services.urlFormatter.formatURLPref("app.support.baseURL") +
+- "storage-permissions";
++ "how-do-i-stay-logged-into-specific-websites";
+ document.getElementById("siteDataLearnMoreLink").setAttribute("href", url);
+
+ let notificationInfoURL =
+- Services.urlFormatter.formatURLPref("app.support.baseURL") + "push";
++ Services.urlFormatter.formatURLPref("app.support.baseURL") +
++ "how-do-i-enable-push-notifications";
+ document
+ .getElementById("notificationPermissionsLearnMore")
+ .setAttribute("href", notificationInfoURL);
+@@ -924,7 +925,7 @@ var gPrivacyPane = {
+ let link = document.getElementById("contentBlockingLearnMore");
+ let contentBlockingUrl =
+ Services.urlFormatter.formatURLPref("app.support.baseURL") +
+- "enhanced-tracking-protection";
++ "what-is-mozilla-tracking-protection";
+ link.setAttribute("href", contentBlockingUrl);
+
+ // Toggles the text "Cross-site and social media trackers" based on the
+@@ -2276,7 +2277,7 @@ var gPrivacyPane = {
+ let learnMoreLink = document.getElementById("primaryPasswordLearnMoreLink");
+ let learnMoreURL =
+ Services.urlFormatter.formatURLPref("app.support.baseURL") +
+- "primary-password-stored-logins";
++ "why-is-the-built-in-password-manager-disabled";
+ learnMoreLink.setAttribute("href", learnMoreURL);
+ },
+
+@@ -2474,7 +2475,7 @@ var gPrivacyPane = {
+ let learnMoreLink = document.getElementById("enableSafeBrowsingLearnMore");
+ let phishingUrl =
+ Services.urlFormatter.formatURLPref("app.support.baseURL") +
+- "phishing-malware";
++ "why-do-you-disable-google-safe-browsing";
+ learnMoreLink.setAttribute("href", phishingUrl);
+
+ enableSafeBrowsing.addEventListener("command", function() {
+--- a/toolkit/mozapps/extensions/content/aboutaddons.js
++++ b/toolkit/mozapps/extensions/content/aboutaddons.js
+@@ -1997,7 +1997,7 @@ class SidebarFooter extends HTMLElement
+ icon: "chrome://global/skin/icons/help.svg",
+ createLinkElement: () => {
+ let link = document.createElement("a", { is: "support-link" });
+- link.setAttribute("support-page", "addons-help");
++ link.setAttribute("support-page", "do-you-recommend-using-any-extensions");
+ link.id = "help-button";
+ return link;
+ },
diff --git a/remove-branding-urlbar.patch b/remove-branding-urlbar.patch
new file mode 100644
index 0000000..8858863
--- /dev/null
+++ b/remove-branding-urlbar.patch
@@ -0,0 +1,11 @@
+--- a/browser/locales/en-US/browser/browser.ftl.orig 2022-03-22 12:57:21.330016999 -0400
++++ b/browser/locales/en-US/browser/browser.ftl 2022-03-22 13:01:42.740728393 -0400
+@@ -543,7 +543,7 @@
+ # A label shown above the "Firefox Suggest" (bookmarks/history) group in the
+ # urlbar results.
+ urlbar-group-firefox-suggest =
+- .label = { -firefox-suggest-brand-name }
++ .label = Suggestions
+
+ # A label shown above the search suggestions group in the urlbar results. It
+ # should use sentence case.
diff --git a/remove-cfrprefs.patch b/remove-cfrprefs.patch
new file mode 100644
index 0000000..f01d860
--- /dev/null
+++ b/remove-cfrprefs.patch
@@ -0,0 +1,19 @@
+--- a/browser/components/preferences/main.inc.xhtml
++++ b/browser/components/preferences/main.inc.xhtml
+@@ -665,14 +665,14 @@
+ preference="media.hardwaremediakeys.enabled"/>
+ <label id="mediaControlLearnMore" class="learnMore" data-l10n-id="browsing-media-control-learn-more" is="text-link"/>
+ </hbox>
+- <hbox align="center" data-subcategory="cfraddons">
++ <hbox align="center" data-subcategory="cfraddons" hidden="true">
+ <checkbox id="cfrRecommendations"
+ class="tail-with-learn-more"
+ data-l10n-id="browsing-cfr-recommendations"
+ preference="browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons"/>
+ <label id="cfrLearnMore" class="learnMore" data-l10n-id="browsing-cfr-recommendations-learn-more" is="text-link"/>
+ </hbox>
+- <hbox align="center" data-subcategory="cfrfeatures">
++ <hbox align="center" data-subcategory="cfrfeatures" hidden="true">
+ <checkbox id="cfrRecommendations-features"
+ class="tail-with-learn-more"
+ data-l10n-id="browsing-cfr-features"
diff --git a/remove-internal-plugin-certs.patch b/remove-internal-plugin-certs.patch
new file mode 100644
index 0000000..72183e2
--- /dev/null
+++ b/remove-internal-plugin-certs.patch
@@ -0,0 +1,18 @@
+diff --git a/toolkit/mozapps/extensions/internal/XPIInstall.jsm b/toolkit/mozapps/extensions/internal/XPIInstall.jsm
+index 698cd67..5b899d9 100644
+--- a/toolkit/mozapps/extensions/internal/XPIInstall.jsm
++++ b/toolkit/mozapps/extensions/internal/XPIInstall.jsm
+@@ -832,11 +832,11 @@ function getSignedStatus(aRv, aCert, aAddonID) {
+ }
+
+ if (aCert.organizationalUnit == "Mozilla Components") {
+- return AddonManager.SIGNEDSTATE_SYSTEM;
++ return AddonManager.SIGNEDSTATE_SIGNED;
+ }
+
+ if (aCert.organizationalUnit == "Mozilla Extensions") {
+- return AddonManager.SIGNEDSTATE_PRIVILEGED;
++ return AddonManager.SIGNEDSTATE_SIGNED;
+ }
+
+ return /preliminary/i.test(aCert.organizationalUnit)
diff --git a/remove-organization-policy-banner.patch b/remove-organization-policy-banner.patch
new file mode 100644
index 0000000..f82448f
--- /dev/null
+++ b/remove-organization-policy-banner.patch
@@ -0,0 +1,13 @@
+diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
+index 0a2a789..0601d28 100644
+--- a/browser/components/preferences/preferences.js
++++ b/browser/components/preferences/preferences.js
+@@ -234,8 +234,6 @@ function init_all() {
+ this.removeAttribute("keyboard-navigation");
+ });
+
+- maybeDisplayPoliciesNotice();
+-
+ window.addEventListener("hashchange", onHashChange);
+
+ document.getElementById("focusSearch1").addEventListener("command", () => {
diff --git a/remove-snippets-from-home.patch b/remove-snippets-from-home.patch
new file mode 100644
index 0000000..4bd88ca
--- /dev/null
+++ b/remove-snippets-from-home.patch
@@ -0,0 +1,22 @@
+--- a/browser/components/newtab/lib/AboutPreferences.jsm
++++ b/browser/components/newtab/lib/AboutPreferences.jsm
+@@ -54,18 +54,7 @@
+ },
+ ];
+
+-const PREFS_AFTER_SECTIONS = () => [
+- {
+- id: "snippets",
+- pref: {
+- feed: "feeds.snippets",
+- titleString: "home-prefs-snippets-header",
+- descString: "home-prefs-snippets-description-new",
+- },
+- icon: "chrome://global/skin/icons/info.svg",
+- eventSource: "SNIPPETS",
+- },
+-];
++const PREFS_AFTER_SECTIONS = () => [];
+
+ this.AboutPreferences = class AboutPreferences {
+ init() {
diff --git a/remove_addons.patch b/remove_addons.patch
new file mode 100644
index 0000000..e818301
--- /dev/null
+++ b/remove_addons.patch
@@ -0,0 +1,75 @@
+diff --git a/browser/extensions/moz.build b/browser/extensions/moz.build
+index 0d4b9c3..d923333 100644
+--- a/browser/extensions/moz.build
++++ b/browser/extensions/moz.build
+@@ -5,11 +5,9 @@
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+ DIRS += [
+- "doh-rollout",
+ "formautofill",
+ "screenshots",
+ "webcompat",
+- "report-site-issue",
+ "pictureinpicture",
+ "search-detection",
+ ]
+diff --git a/browser/locales/Makefile.in b/browser/locales/Makefile.in
+index e4b60a0..c38fdd2 100644
+--- a/browser/locales/Makefile.in
++++ b/browser/locales/Makefile.in
+@@ -55,7 +55,6 @@ l10n-%:
+ ifneq (,$(wildcard ../extensions/formautofill/locales))
+ @$(MAKE) -C ../extensions/formautofill/locales AB_CD=$* XPI_NAME=locale-$*
+ endif
+- @$(MAKE) -C ../extensions/report-site-issue/locales AB_CD=$* XPI_NAME=locale-$*
+ @$(MAKE) -C ../../devtools/client/locales AB_CD=$* XPI_NAME=locale-$* XPI_ROOT_APPID='$(XPI_ROOT_APPID)'
+ @$(MAKE) -C ../../devtools/startup/locales AB_CD=$* XPI_NAME=locale-$* XPI_ROOT_APPID='$(XPI_ROOT_APPID)'
+ @$(MAKE) l10n AB_CD=$* XPI_NAME=locale-$* PREF_DIR=$(PREF_DIR)
+@@ -76,7 +75,6 @@ endif
+ @$(MAKE) -C ../../devtools/startup/locales chrome AB_CD=$*
+ @$(MAKE) chrome AB_CD=$*
+ @$(MAKE) -C $(DEPTH)/$(MOZ_BRANDING_DIRECTORY)/locales chrome AB_CD=$*
+- @$(MAKE) -C ../extensions/report-site-issue/locales chrome AB_CD=$*
+
+ package-win32-installer: $(SUBMAKEFILES)
+ $(MAKE) -C ../installer/windows CONFIG_DIR=l10ngen ZIP_IN='$(ZIP_OUT)' installer
+diff --git a/browser/locales/filter.py b/browser/locales/filter.py
+index 22eb5cb..5e1f09f 100644
+--- a/browser/locales/filter.py
++++ b/browser/locales/filter.py
+@@ -17,7 +17,6 @@ def test(mod, path, entity=None):
+ "devtools/startup",
+ "browser",
+ "browser/extensions/formautofill",
+- "browser/extensions/report-site-issue",
+ "extensions/spellcheck",
+ "other-licenses/branding/firefox",
+ "browser/branding/official",
+diff --git a/browser/locales/l10n.ini b/browser/locales/l10n.ini
+index 7a65997..7f97667 100644
+--- a/browser/locales/l10n.ini
++++ b/browser/locales/l10n.ini
+@@ -13,7 +13,6 @@ dirs = browser
+ devtools/client
+ devtools/startup
+ browser/extensions/formautofill
+- browser/extensions/report-site-issue
+
+ [includes]
+ # non-central apps might want to use %(topsrcdir)s here, or other vars
+diff --git a/browser/locales/l10n.toml b/browser/locales/l10n.toml
+index e9d5010..914a2f1 100644
+--- a/browser/locales/l10n.toml
++++ b/browser/locales/l10n.toml
+@@ -133,10 +133,6 @@ locales = [
+ reference = "browser/extensions/formautofill/locales/en-US/**"
+ l10n = "{l}browser/extensions/formautofill/**"
+
+-[[paths]]
+- reference = "browser/extensions/report-site-issue/locales/en-US/**"
+- l10n = "{l}browser/extensions/report-site-issue/**"
+-
+ [[paths]]
+ reference = "services/sync/locales/en-US/**"
+ l10n = "{l}services/sync/**"
diff --git a/sanitizing-description.patch b/sanitizing-description.patch
new file mode 100644
index 0000000..0909d54
--- /dev/null
+++ b/sanitizing-description.patch
@@ -0,0 +1,11 @@
+--- a/browser/locales/en-US/browser/sanitize.ftl
++++ b/browser/locales/en-US/browser/sanitize.ftl
+@@ -19,7 +19,7 @@
+ .title = Clear All History
+ .style = width: 34em
+
+-clear-data-settings-label = When closed, { -brand-short-name } should automatically clear all
++clear-data-settings-label = When closed, { -brand-short-name } should automatically clear all (this will bypass your cookie exceptions)
+
+ ## clear-time-duration-prefix is followed by a dropdown list, with
+ ## values localized using clear-time-duration-value-* messages.
diff --git a/search-config.json b/search-config.json
new file mode 100644
index 0000000..211946f
--- /dev/null
+++ b/search-config.json
@@ -0,0 +1,377 @@
+{
+ "data": [
+ {
+ "schema": 1619432100208,
+ "appliesTo": [
+ {
+ "included": {
+ "everywhere": true
+ }
+ }
+ ],
+ "webExtension": {
+ "id": "ddg@search.mozilla.org"
+ },
+ "id": "c0b26c0e-63e6-4235-b2ce-5f16b6a8bf87",
+ "last_modified": 1654094046000
+ },
+ {
+ "schema": 1613245306902,
+ "appliesTo": [
+ {
+ "included": {
+ "everywhere": true
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "af",
+ "an",
+ "ar",
+ "ast",
+ "az",
+ "bg",
+ "br",
+ "bs",
+ "cy",
+ "da",
+ "de",
+ "dsb",
+ "el",
+ "eo",
+ "et",
+ "eu",
+ "fa",
+ "fi",
+ "fy-NL",
+ "ga-IE",
+ "gd",
+ "gl",
+ "gn",
+ "he",
+ "hr",
+ "hsb",
+ "hu",
+ "ia",
+ "id",
+ "is",
+ "it",
+ "ka",
+ "kab",
+ "kk",
+ "km",
+ "kn",
+ "lij",
+ "lo",
+ "lt",
+ "ltg",
+ "lv",
+ "mk",
+ "mr",
+ "ms",
+ "my",
+ "nl",
+ "oc",
+ "pl",
+ "rm",
+ "ro",
+ "ru",
+ "si",
+ "sk",
+ "sl",
+ "sq",
+ "sr",
+ "sv-SE",
+ "ta",
+ "te",
+ "th",
+ "tl",
+ "tr",
+ "uk",
+ "ur",
+ "uz",
+ "vi",
+ "wo",
+ "zh-CN",
+ "zh-TW"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "$USER_LOCALE"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "be"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "be",
+ "be-tarask"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "bn",
+ "bn-BD",
+ "bn-IN"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "bn"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "ca",
+ "ca-valencia"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "ca"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "cak",
+ "es-AR",
+ "es-CL",
+ "es-ES",
+ "es-MX",
+ "trs"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "es"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "cs"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "cz"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "ff",
+ "fr",
+ "son"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "fr"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "gu-IN"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "gu"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "hi-IN"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "hi"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "hy-AM"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "hy"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "ja-JP-macos",
+ "ja"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "ja"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "ko"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "kr"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "nb-NO"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "NO"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "ne-NP"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "ne"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "nn-NO"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "NN"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "pa-IN"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "pa"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "pt-BR",
+ "pt-PT"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "pt"
+ ]
+ }
+ },
+ {
+ "included": {
+ "locales": {
+ "matches": [
+ "szl"
+ ]
+ }
+ },
+ "webExtension": {
+ "locales": [
+ "pl"
+ ]
+ }
+ },
+ {
+ "override": true,
+ "orderHint": 1000,
+ "application": {
+ "distributions": [
+ "MozillaOnline"
+ ]
+ }
+ }
+ ],
+ "webExtension": {
+ "id": "wikipedia@search.mozilla.org"
+ },
+ "id": "3f3beb1d-e32e-40a4-b6ed-56741803e1d8",
+ "last_modified": 1654094046000
+ }
+ ],
+ "timestamp": 1654094046000
+}
diff --git a/sources b/sources
deleted file mode 100644
index 122ebf2..0000000
--- a/sources
+++ /dev/null
@@ -1,4 +0,0 @@
-SHA512 (mochitest-python.tar.gz) = 18e1aeb475df5fbf1fe3838897d5ac2f3114aa349030713fc2be27af087b1b12f57642621b87bd052f324a7cb7fbae5f36b21502191d85692f62c8cdd69c8bf2
-SHA512 (cbindgen-vendor.tar.xz) = d681ca855f3779553b4a452f9dc1e3acea6253b7ef33a65948ab2d32d9848e8c06f0b3f3504ef237d6b9adb4813bdad990f7a79fa9f89333ce0d4e8da7e12d94
-SHA512 (firefox-102.0.source.tar.xz) = c7dd6d8d74c46573b16d097a5e5d230669e5778cd680b3b6f30510e989d21543138ced3bb013998b76614aa380b28efd8542450c591d8b724e03bd163d012057
-SHA512 (firefox-langpacks-102.0-20220628.tar.xz) = 2e67c06dda372077be087c65778a109070a27bc2e28e347c75ad240a67c57803e315858198273330d931091bf849cfe3d6003d9106d497049090eaf0a4af718c
diff --git a/stop-undesired-requests.patch b/stop-undesired-requests.patch
new file mode 100644
index 0000000..79caa68
--- /dev/null
+++ b/stop-undesired-requests.patch
@@ -0,0 +1,57 @@
+diff --git a/browser/components/newtab/data/content/activity-stream.bundle.js b/browser/components/newtab/data/content/activity-stream.bundle.js
+index 34395476104e..83bc25d7fc62 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 {
+ label = /*#__PURE__*/external_React_default().createElement("span", null, "remote settings (", /*#__PURE__*/external_React_default().createElement("a", {
+ className: "providerUrl",
+ target: "_blank",
+- href: "https://firefox.settings.services.mozilla.com/v1/buckets/main/collections/nimbus-desktop-experiments/records",
++ href: "https://see.ticket.about.this.invalid",
+ rel: "noopener noreferrer"
+ }, "nimbus-desktop-experiments"), ")");
+ }
+diff --git a/services/settings/Utils.jsm b/services/settings/Utils.jsm
+index 31ad77d28678..cca446b6fbde 100644
+--- a/services/settings/Utils.jsm
++++ b/services/settings/Utils.jsm
+@@ -60,6 +60,10 @@ XPCOMUtils.defineLazyGetter(this, "isRunningTests", () => {
+ // Overriding the server URL is normally disabled on Beta and Release channels,
+ // except under some conditions.
+ XPCOMUtils.defineLazyGetter(this, "allowServerURLOverride", () => {
++
++ // always allow this override for librewolf
++ return true;
++
+ if (!AppConstants.RELEASE_OR_BETA) {
+ // Always allow to override the server URL on Nightly/DevEdition.
+ return true;
+diff --git a/toolkit/components/search/SearchUtils.jsm b/toolkit/components/search/SearchUtils.jsm
+index 0bf60e5f163a..bcb685efe68d 100644
+--- a/toolkit/components/search/SearchUtils.jsm
++++ b/toolkit/components/search/SearchUtils.jsm
+@@ -158,9 +158,9 @@ var SearchUtils = {
+
+ ENGINES_URLS: {
+ "prod-main":
+- "https://firefox.settings.services.mozilla.com/v1/buckets/main/collections/search-config/records",
++ "https://%.invalid",
+ "prod-preview":
+- "https://firefox.settings.services.mozilla.com/v1/buckets/main-preview/collections/search-config/records",
++ "https://%.invalid",
+ "stage-main":
+ "https://settings.stage.mozaws.net/v1/buckets/main/collections/search-config/records",
+ "stage-preview":
+diff --git a/toolkit/modules/AppConstants.jsm b/toolkit/modules/AppConstants.jsm
+index 7f8ac95dd962..334003b3e005 100644
+--- a/toolkit/modules/AppConstants.jsm
++++ b/toolkit/modules/AppConstants.jsm
+@@ -422,7 +422,7 @@ this.AppConstants = Object.freeze({
+ #ifdef MOZ_THUNDERBIRD
+ "https://thunderbird-settings.thunderbird.net/v1",
+ #else
+- "https://firefox.settings.services.mozilla.com/v1",
++ "https://%.invalid",
+ #endif
+
+ REMOTE_SETTINGS_VERIFY_SIGNATURE:
diff --git a/uBlock0@raymondhill.net.xpi b/uBlock0@raymondhill.net.xpi
new file mode 100644
index 0000000..48513d8
--- /dev/null
+++ b/uBlock0@raymondhill.net.xpi
Binary files differ
diff --git a/urlbarprovider-interventions.patch b/urlbarprovider-interventions.patch
new file mode 100644
index 0000000..22448f1
--- /dev/null
+++ b/urlbarprovider-interventions.patch
@@ -0,0 +1,13 @@
+diff --git a/browser/components/urlbar/UrlbarProviderInterventions.jsm b/browser/components/urlbar/UrlbarProviderInterventions.jsm
+index e22886ce92..d46d8191f2 100644
+--- a/browser/components/urlbar/UrlbarProviderInterventions.jsm
++++ b/browser/components/urlbar/UrlbarProviderInterventions.jsm
+@@ -451,7 +451,7 @@ class ProviderInterventions extends UrlbarProvider {
+ ]),
+ });
+ for (let [id, phrases] of Object.entries(DOCUMENTS)) {
+- queryScorer.addDocument({ id, phrases });
++// queryScorer.addDocument({ id, phrases });
+ }
+ return queryScorer;
+ });
diff --git a/website-appearance-ui-rfp.patch b/website-appearance-ui-rfp.patch
new file mode 100644
index 0000000..0de5504
--- /dev/null
+++ b/website-appearance-ui-rfp.patch
@@ -0,0 +1,52 @@
+--- a/browser/components/preferences/main.js
++++ b/browser/components/preferences/main.js
+@@ -3737,6 +3737,7 @@ const AppearanceChooser = {
+ FORCED_COLORS_QUERY.addEventListener("change", this);
+ SYSTEM_DARK_MODE_QUERY.addEventListener("change", this);
+ Services.prefs.addObserver(PREF_USE_SYSTEM_COLORS, this);
++ Services.prefs.addObserver("privacy.resistFingerprinting", this);
+ Services.obs.addObserver(this, "look-and-feel-changed");
+ this._update();
+ },
+@@ -3756,6 +3757,7 @@ const AppearanceChooser = {
+
+ destroy() {
+ Services.prefs.removeObserver(PREF_USE_SYSTEM_COLORS, this);
++ Services.prefs.removeObserver("privacy.resistFingerprinting", this);
+ Services.obs.removeObserver(this, "look-and-feel-changed");
+ FORCED_COLORS_QUERY.removeEventListener("change", this);
+ SYSTEM_DARK_MODE_QUERY.removeEventListener("change", this);
+@@ -3798,5 +3800,33 @@ const AppearanceChooser = {
+ (AppConstants.platform == "win" ||
+ !Services.prefs.getBoolPref(PREF_USE_SYSTEM_COLORS));
+ this.warning.hidden = !forcingColorsAndNoColorSchemeSupport;
++
++ if (Services.prefs.getBoolPref("privacy.resistFingerprinting")) {
++ document.getElementById("web-appearance-chooser").style.opacity = 0.3;
++ document.getElementById("web-appearance-chooser").style.pointerEvents = "none";
++ const infoBox = document.createElement("div");
++ infoBox.id = "web-appearance-rfp-warning";
++ infoBox.classList.add("info-box-container");
++ infoBox.style.display = "flex";
++ infoBox.style.alignItems = "center";
++ infoBox.style.marginTop = "10px";
++ infoBox.style.marginBottom = "5px";
++ const text = document.createElement("div");
++ text.innerText = "This feature is disabled because ResistFingerprinting is enabled. This means LibreWolf will force web content to display in a light theme.";
++ infoBox.appendChild(text);
++ const learnMore = document.createElement("a");
++ learnMore.classList.add("text-link");
++ learnMore.style.marginLeft = "5px";
++ learnMore.style.flexShrink = 0;
++ learnMore.setAttribute("is", "learn-more");
++ learnMore.href = "https://librewolf.net/docs/faq/#why-is-librewolf-forcing-light-theme";
++ learnMore.innerText = "Learn more";
++ infoBox.appendChild(learnMore);
++ document.getElementById("webAppearanceSettings").insertBefore(infoBox, document.getElementById("webAppearanceSettings").children[2]);
++ } else {
++ document.getElementById("web-appearance-rfp-warning")?.remove();
++ document.getElementById("web-appearance-chooser").style.opacity = 1;
++ document.getElementById("web-appearance-chooser").style.pointerEvents = "all";
++ }
+ },
+ };
bgstack15