brizental pushed to branch mullvad-browser-146.0a1-16.0-1 at The Tor Project / Applications / Mullvad Browser
WARNING: The push did not contain any new commits, but force pushed to delete the commits and changes below.
Deleted commits:
-
5af13b75
by Pier Angelo Vendrame at 2025-12-03T09:16:51-03:00
-
d359c213
by Pier Angelo Vendrame at 2025-12-03T09:16:52-03:00
-
bbe21982
by Beatriz Rizental at 2025-12-03T09:16:53-03:00
-
43309ee3
by Pier Angelo Vendrame at 2025-12-03T09:16:53-03:00
-
d7b0c8b2
by Pier Angelo Vendrame at 2025-12-03T09:16:54-03:00
-
c069186f
by Beatriz Rizental at 2025-12-03T09:16:55-03:00
-
696b02a3
by Pier Angelo Vendrame at 2025-12-03T09:16:55-03:00
-
0f552652
by Henry Wilkes at 2025-12-03T09:16:56-03:00
-
cc63d325
by Henry Wilkes at 2025-12-03T09:16:57-03:00
-
c432145c
by Beatriz Rizental at 2025-12-03T09:24:24-03:00
-
3b120502
by Beatriz Rizental at 2025-12-03T09:24:36-03:00
-
9a00ac3f
by Beatriz Rizental at 2025-12-03T09:24:49-03:00
-
7d555719
by Beatriz Rizental at 2025-12-03T09:24:58-03:00
-
fcc576ca
by Beatriz Rizental at 2025-12-03T09:25:08-03:00
25 changed files:
- .gitlab/issue_templates/040 Feature.md
- .gitlab/issue_templates/050 Backport.md
- .gitlab/merge_request_templates/Default.md
- browser/app/Makefile.in
- browser/app/macbuild/Contents/Info.plist.in
- − browser/branding/aurora/Assets.car
- − browser/branding/nightly/Assets.car
- − browser/branding/official/Assets.car
- − browser/branding/unofficial/Assets.car
- browser/components/about/AboutRedirector.cpp
- browser/components/securitylevel/content/securityLevelPanel.css
- browser/components/securitylevel/content/securityLevelPreferences.css
- browser/installer/package-manifest.in
- build/moz.configure/basebrowser-resources.configure
- eslint.config.mjs
- mobile/android/mach_commands.py
- python/mach/mach/sentry.py
- python/mach/mach/telemetry.py
- python/mozlint/mozlint/cli.py
- testing/testsuite-targets.mk
- toolkit/components/resistfingerprinting/content/letterboxing.css
- toolkit/components/search/content/base-browser-search-engine-icons.json
- toolkit/components/search/content/base-browser-search-engines.json
- toolkit/components/search/tests/xpcshell/test_base_browser.js
- toolkit/mozapps/update/updater/updater.cpp
Changes:
| ... | ... | @@ -18,11 +18,11 @@ Provide an overview of the technical/implementation aspects of this feature |
| 18 | 18 | |
| 19 | 19 | ### Proposal
|
| 20 | 20 | <!-- Add links to associated proposal issues (or delete block) -->
|
| 21 | -- tor-browser#12345
|
|
| 21 | +- tor-browser#xxxxx
|
|
| 22 | 22 | |
| 23 | 23 | ### Design
|
| 24 | 24 | <!-- Add links to associated design issues (or delete block) -->
|
| 25 | -- tpo/UX/Design#123
|
|
| 25 | +- tpo/UX/Design#xyz
|
|
| 26 | 26 | |
| 27 | 27 | <!-- Do not edit beneath this line <3 -->
|
| 28 | 28 |
| ... | ... | @@ -13,12 +13,12 @@ please ensure the title has the following format: |
| 13 | 13 | ## Bookkeeping
|
| 14 | 14 | |
| 15 | 15 | ### Issue(s)
|
| 16 | -- tor-browser#12345
|
|
| 17 | -- mullvad-browser#123
|
|
| 18 | -- https://bugzilla.mozilla.org/show_bug.cgi?id=1234567
|
|
| 16 | +- tor-browser#xxxxx
|
|
| 17 | +- mullvad-browser#xyz
|
|
| 18 | +- https://bugzilla.mozilla.org/show_bug.cgi?id=xxxxxxx
|
|
| 19 | 19 | |
| 20 | 20 | ### Merge Request(s)
|
| 21 | -- tor-browser!123
|
|
| 21 | +- tor-browser!xxxx
|
|
| 22 | 22 | |
| 23 | 23 | ### Target Channels
|
| 24 | 24 |
| ... | ... | @@ -27,8 +27,8 @@ |
| 27 | 27 | |
| 28 | 28 | #### Target Channels
|
| 29 | 29 | |
| 30 | -- [ ] **Alpha**: esr140-15.0
|
|
| 31 | -- [ ] **Stable**: esr128-14.5
|
|
| 30 | +- [ ] **Alpha**: rapid release, 16.0
|
|
| 31 | +- [ ] **Stable**: esr140-15.0
|
|
| 32 | 32 | - [ ] **Legacy**: esr115-13.5
|
| 33 | 33 | |
| 34 | 34 | ### Backporting
|
| ... | ... | @@ -92,7 +92,6 @@ tools repackage:: $(DIST)/bin/$(MOZ_APP_NAME) $(objdir)/macbuild/Contents/MacOS- |
| 92 | 92 | rsync -aL $(DIST)/bin/$(MOZ_APP_NAME) '$(dist_dest)/Contents/MacOS'
|
| 93 | 93 | cp -RL $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/firefox.icns '$(dist_dest)/Contents/Resources/firefox.icns'
|
| 94 | 94 | cp -RL $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/document.icns '$(dist_dest)/Contents/Resources/document.icns'
|
| 95 | - cp -RL $(topsrcdir)/$(MOZ_BRANDING_DIRECTORY)/Assets.car '$(dist_dest)/Contents/Resources/Assets.car'
|
|
| 96 | 95 | ifndef BASE_BROWSER_UPDATE
|
| 97 | 96 | $(MKDIR) -p '$(dist_dest)/Contents/Library/LaunchServices'
|
| 98 | 97 | ifdef MOZ_UPDATER
|
| ... | ... | @@ -190,8 +190,6 @@ |
| 190 | 190 | <string>@MAC_APP_NAME@ @APP_VERSION@</string>
|
| 191 | 191 | <key>CFBundleIconFile</key>
|
| 192 | 192 | <string>firefox.icns</string>
|
| 193 | - <key>CFBundleIconName</key>
|
|
| 194 | - <string>AppIcon</string>
|
|
| 195 | 193 | <key>CFBundleIdentifier</key>
|
| 196 | 194 | <string>@MOZ_MACBUNDLE_ID@</string>
|
| 197 | 195 | <key>CFBundleInfoDictionaryVersion</key>
|
| ... | ... | @@ -36,6 +36,7 @@ struct RedirEntry { |
| 36 | 36 | |
| 37 | 37 | static const uint32_t BASE_BROWSER_HOME_PAGE_FLAGS =
|
| 38 | 38 | nsIAboutModule::URI_MUST_LOAD_IN_CHILD |
|
| 39 | + nsIAboutModule::URI_CAN_LOAD_IN_PRIVILEGEDABOUT_PROCESS |
|
|
| 39 | 40 | nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
|
| 40 | 41 | nsIAboutModule::ALLOW_SCRIPT | nsIAboutModule::IS_SECURE_CHROME_UI;
|
| 41 | 42 |
| ... | ... | @@ -59,7 +59,7 @@ |
| 59 | 59 | }
|
| 60 | 60 | |
| 61 | 61 | #securityLevel-level {
|
| 62 | - font-size: 1.25em;
|
|
| 62 | + font-size: larger;
|
|
| 63 | 63 | font-weight: var(--font-weight-bold);
|
| 64 | 64 | grid-area: title;
|
| 65 | 65 | }
|
| ... | ... | @@ -63,7 +63,7 @@ |
| 63 | 63 | |
| 64 | 64 | .security-level-name {
|
| 65 | 65 | grid-area: name;
|
| 66 | - font-weight: bold;
|
|
| 66 | + font-weight: var(--font-weight-bold);
|
|
| 67 | 67 | align-self: center;
|
| 68 | 68 | white-space: nowrap;
|
| 69 | 69 | }
|
| ... | ... | @@ -97,7 +97,7 @@ |
| 97 | 97 | #security-level-current {
|
| 98 | 98 | margin-block-start: var(--space-large);
|
| 99 | 99 | background: var(--background-color-box);
|
| 100 | - border: 1px solid var(--in-content-box-border-color);
|
|
| 100 | + border: 1px solid var(--border-color);
|
|
| 101 | 101 | border-radius: var(--border-radius-small);
|
| 102 | 102 | padding: var(--space-medium);
|
| 103 | 103 | }
|
| ... | ... | @@ -44,7 +44,6 @@ |
| 44 | 44 | @APPNAME@/Contents/PkgInfo
|
| 45 | 45 | @RESPATH@/firefox.icns
|
| 46 | 46 | @RESPATH@/document.icns
|
| 47 | -@RESPATH@/Assets.car
|
|
| 48 | 47 | @RESPATH@/@LPROJ_ROOT@.lproj/*
|
| 49 | 48 | #endif
|
| 50 | 49 |
| ... | ... | @@ -55,6 +55,7 @@ option( |
| 55 | 55 | nargs=1,
|
| 56 | 56 | default=None,
|
| 57 | 57 | help="Path to location of fonts directory.",
|
| 58 | + when=is_desktop_build,
|
|
| 58 | 59 | )
|
| 59 | 60 | |
| 60 | 61 | |
| ... | ... | @@ -63,8 +64,11 @@ option( |
| 63 | 64 | mozbuild_state_path,
|
| 64 | 65 | bootstrap_path(
|
| 65 | 66 | "fonts",
|
| 66 | - when=depends("--with-tor-browser-fonts")(lambda x: not x) & is_desktop_build,
|
|
| 67 | + when=depends("--with-tor-browser-fonts", when=is_desktop_build)(
|
|
| 68 | + lambda x: not x
|
|
| 69 | + ),
|
|
| 67 | 70 | ),
|
| 71 | + when=is_desktop_build,
|
|
| 68 | 72 | )
|
| 69 | 73 | @checking("for tor-browser fonts directory")
|
| 70 | 74 | @imports(_from="pathlib", _import="Path")
|
| ... | ... | @@ -420,7 +420,7 @@ let config = [ |
| 420 | 420 | ignores: ["toolkit/**/test/**", "toolkit/**/tests/**"],
|
| 421 | 421 | plugins: { mozilla },
|
| 422 | 422 | rules: {
|
| 423 | - "mozilla/no-browser-refs-in-toolkit": "error",
|
|
| 423 | + "mozilla/no-browser-refs-in-toolkit": "warn",
|
|
| 424 | 424 | },
|
| 425 | 425 | },
|
| 426 | 426 | {
|
| ... | ... | @@ -197,8 +197,7 @@ def android_archive_geckoview(command_context, args): |
| 197 | 197 | |
| 198 | 198 | if ret != 0:
|
| 199 | 199 | return ret
|
| 200 | - if "MOZ_AUTOMATION" in os.environ:
|
|
| 201 | - create_maven_archive(command_context.topobjdir)
|
|
| 200 | + create_maven_archive(command_context.topobjdir)
|
|
| 202 | 201 | |
| 203 | 202 | return 0
|
| 204 | 203 |
| ... | ... | @@ -35,7 +35,8 @@ class SentryErrorReporter(ErrorReporter): |
| 35 | 35 | """Reports errors using Sentry."""
|
| 36 | 36 | |
| 37 | 37 | def report_exception(self, exception):
|
| 38 | - return sentry_sdk.capture_exception(exception)
|
|
| 38 | + pass
|
|
| 39 | + # return sentry_sdk.capture_exception(exception)
|
|
| 39 | 40 | |
| 40 | 41 | |
| 41 | 42 | class NoopErrorReporter(ErrorReporter):
|
| ... | ... | @@ -61,10 +62,10 @@ def register_sentry(argv, settings, topsrcdir: Path): |
| 61 | 62 | )
|
| 62 | 63 | _is_unmodified_mach_core_thread.start()
|
| 63 | 64 | |
| 64 | - sentry_sdk.init(
|
|
| 65 | - _SENTRY_DSN, before_send=lambda event, _: _process_event(event, topsrcdir)
|
|
| 66 | - )
|
|
| 67 | - sentry_sdk.add_breadcrumb(message="./mach {}".format(" ".join(argv)))
|
|
| 65 | + # sentry_sdk.init(
|
|
| 66 | + # _SENTRY_DSN, before_send=lambda event, _: _process_event(event, topsrcdir)
|
|
| 67 | + # )
|
|
| 68 | + # sentry_sdk.add_breadcrumb(message="./mach {}".format(" ".join(argv)))
|
|
| 68 | 69 | return SentryErrorReporter()
|
| 69 | 70 | |
| 70 | 71 |
| ... | ... | @@ -7,7 +7,6 @@ import importlib.util |
| 7 | 7 | import os
|
| 8 | 8 | import subprocess
|
| 9 | 9 | import sys
|
| 10 | -import urllib.parse as urllib_parse
|
|
| 11 | 10 | from pathlib import Path
|
| 12 | 11 | from textwrap import dedent
|
| 13 | 12 | |
| ... | ... | @@ -129,40 +128,6 @@ def resolve_setting_from_arcconfig(topsrcdir: Path, setting): |
| 129 | 128 | |
| 130 | 129 | def resolve_is_employee_by_credentials(topsrcdir: Path):
|
| 131 | 130 | return None
|
| 132 | - try:
|
|
| 133 | - phabricator_uri = resolve_setting_from_arcconfig(topsrcdir, "phabricator.uri")
|
|
| 134 | - |
|
| 135 | - if not phabricator_uri:
|
|
| 136 | - return None
|
|
| 137 | - |
|
| 138 | - with arcrc_path().open() as arcrc_file:
|
|
| 139 | - arcrc = json.load(arcrc_file)
|
|
| 140 | - |
|
| 141 | - phabricator_token = (
|
|
| 142 | - arcrc.get("hosts", {})
|
|
| 143 | - .get(urllib_parse.urljoin(phabricator_uri, "api/"), {})
|
|
| 144 | - .get("token")
|
|
| 145 | - )
|
|
| 146 | - |
|
| 147 | - if not phabricator_token:
|
|
| 148 | - return None
|
|
| 149 | - |
|
| 150 | - bmo_uri = (
|
|
| 151 | - resolve_setting_from_arcconfig(topsrcdir, "bmo_url")
|
|
| 152 | - or "https://bugzilla.mozilla.org"
|
|
| 153 | - )
|
|
| 154 | - bmo_api_url = urllib_parse.urljoin(bmo_uri, "rest/whoami")
|
|
| 155 | - bmo_result = requests.get(
|
|
| 156 | - bmo_api_url, headers={"X-PHABRICATOR-TOKEN": phabricator_token}
|
|
| 157 | - )
|
|
| 158 | - |
|
| 159 | - return "mozilla-employee-confidential" in bmo_result.json().get("groups", [])
|
|
| 160 | - except (
|
|
| 161 | - FileNotFoundError,
|
|
| 162 | - json.JSONDecodeError,
|
|
| 163 | - requests.exceptions.RequestException,
|
|
| 164 | - ):
|
|
| 165 | - return None
|
|
| 166 | 131 | |
| 167 | 132 | |
| 168 | 133 | def resolve_is_employee_by_vcs(topsrcdir: Path):
|
| ... | ... | @@ -16,8 +16,11 @@ from mozlint.formatters import all_formatters |
| 16 | 16 | # Below is a list of linters we do not use,
|
| 17 | 17 | # these will be skipped when running `./mach lint` commands.
|
| 18 | 18 | INACTIVE_LINTERS = [
|
| 19 | + "android-ac",
|
|
| 19 | 20 | "android-api-lint",
|
| 20 | 21 | "android-checkstyle",
|
| 22 | + "android-fenix",
|
|
| 23 | + "android-focus",
|
|
| 21 | 24 | "android-format",
|
| 22 | 25 | "android-javadoc",
|
| 23 | 26 | "android-lint",
|
| ... | ... | @@ -33,7 +36,10 @@ INACTIVE_LINTERS = [ |
| 33 | 36 | "rejected-words",
|
| 34 | 37 | "rst",
|
| 35 | 38 | "updatebot",
|
| 39 | + "typescript",
|
|
| 36 | 40 | "wpt",
|
| 41 | + "stylelint",
|
|
| 42 | + "glean-parser",
|
|
| 37 | 43 | ]
|
| 38 | 44 | |
| 39 | 45 |
| ... | ... | @@ -151,7 +151,7 @@ download-wpt-manifest: |
| 151 | 151 | $(call py_action,download_wpt_manifest)
|
| 152 | 152 | |
| 153 | 153 | define package_archive
|
| 154 | -package-tests-$(1): stage-all package-tests-prepare-dest download-wpt-manifest
|
|
| 154 | +package-tests-$(1): stage-all package-tests-prepare-dest
|
|
| 155 | 155 | $$(call py_action,test_archive, \
|
| 156 | 156 | $(1) \
|
| 157 | 157 | '$$(abspath $$(test_archive_dir))/$$(PKG_BASENAME).$(1).tests.$(2)')
|
| ... | ... | @@ -17,6 +17,9 @@ |
| 17 | 17 | }
|
| 18 | 18 | }
|
| 19 | 19 | |
| 20 | +/* stylelint-disable stylelint-plugin-mozilla/use-border-color-tokens */
|
|
| 21 | +/* stylelint-disable stylelint-plugin-mozilla/use-border-radius-tokens */
|
|
| 22 | + |
|
| 20 | 23 | #tabbrowser-tabbox.letterboxing {
|
| 21 | 24 | --letterboxing-bgcolor: var(--background-color-canvas);
|
| 22 | 25 | /* Match the border radius used for the sidebar. */
|
| ... | ... | @@ -2,6 +2,9 @@ |
| 2 | 2 | "ddg": [
|
| 3 | 3 | { "url": "chrome://global/content/search/duckduckgo.ico", "imageSize": 32 }
|
| 4 | 4 | ],
|
| 5 | + "ddg-noai": [
|
|
| 6 | + { "url": "chrome://global/content/search/duckduckgo.ico", "imageSize": 32 }
|
|
| 7 | + ],
|
|
| 5 | 8 | "startpage": [
|
| 6 | 9 | {
|
| 7 | 10 | "url": "chrome://global/content/search/startpage-16.png",
|
| ... | ... | @@ -17,6 +17,24 @@ |
| 17 | 17 | "recordType": "engine",
|
| 18 | 18 | "variants": [{ "environment": { "allRegionsAndLocales": true } }]
|
| 19 | 19 | },
|
| 20 | + {
|
|
| 21 | + "base": {
|
|
| 22 | + "aliases": ["ddgnoai"],
|
|
| 23 | + "classification": "general",
|
|
| 24 | + "name": "DuckDuckGo (no AI)",
|
|
| 25 | + "urls": {
|
|
| 26 | + "search": {
|
|
| 27 | + "base": "https://noai.duckduckgo.com/",
|
|
| 28 | + "params": [],
|
|
| 29 | + "searchTermParamName": "q"
|
|
| 30 | + }
|
|
| 31 | + }
|
|
| 32 | + },
|
|
| 33 | + "id": "91687f02-56dd-4fef-ba26-bf139dff3166",
|
|
| 34 | + "identifier": "ddg-noai",
|
|
| 35 | + "recordType": "engine",
|
|
| 36 | + "variants": [{ "environment": { "allRegionsAndLocales": true } }]
|
|
| 37 | + },
|
|
| 20 | 38 | {
|
| 21 | 39 | "base": {
|
| 22 | 40 | "aliases": ["startpage", "sp"],
|
| ... | ... | @@ -39,5 +57,14 @@ |
| 39 | 57 | "recordType": "defaultEngines",
|
| 40 | 58 | "globalDefault": "ddg",
|
| 41 | 59 | "globalDefaultPrivate": "ddg"
|
| 60 | + },
|
|
| 61 | + {
|
|
| 62 | + "recordType": "engineOrders",
|
|
| 63 | + "orders": [
|
|
| 64 | + {
|
|
| 65 | + "environment": { "allRegionsAndLocales": true },
|
|
| 66 | + "order": ["ddg", "ddg-noai", "startpage"]
|
|
| 67 | + }
|
|
| 68 | + ]
|
|
| 42 | 69 | }
|
| 43 | 70 | ] |
| ... | ... | @@ -4,12 +4,15 @@ |
| 4 | 4 | /**
|
| 5 | 5 | * This tests the SearchService to check our override of the remote settings is
|
| 6 | 6 | * working as expected.
|
| 7 | + *
|
|
| 8 | + * When adding new engines, it should be enough to change expectedURLs below.
|
|
| 7 | 9 | */
|
| 8 | 10 | |
| 9 | 11 | "use strict";
|
| 10 | 12 | |
| 11 | 13 | const expectedURLs = {
|
| 12 | 14 | ddg: "https://duckduckgo.com/?q=test",
|
| 15 | + "ddg-noai": "https://noai.duckduckgo.com/?q=test",
|
|
| 13 | 16 | startpage: "https://www.startpage.com/sp/search?q=test",
|
| 14 | 17 | };
|
| 15 | 18 | const defaultEngine = "ddg";
|
| ... | ... | @@ -45,3 +48,11 @@ add_task(function test_checkSearchURLs() { |
| 45 | 48 | Assert.equal(foundUrl, url, `The URL of ${engine.name} is not altered.`);
|
| 46 | 49 | }
|
| 47 | 50 | });
|
| 51 | + |
|
| 52 | +add_task(async function test_iconsDoesNotFail() {
|
|
| 53 | + for (const id of Object.keys(expectedURLs)) {
|
|
| 54 | + const engine = Services.search.getEngineById(id);
|
|
| 55 | + // No need to assert anything, as in case of error this method should throw.
|
|
| 56 | + await engine.getIconURL();
|
|
| 57 | + }
|
|
| 58 | +}); |
| ... | ... | @@ -3326,6 +3326,10 @@ int NS_main(int argc, NS_tchar** argv) { |
| 3326 | 3326 | putenv(const_cast<char*>("MOZ_USING_SERVICE="));
|
| 3327 | 3327 | #endif
|
| 3328 | 3328 | |
| 3329 | +#if defined(XP_UNIX) && !defined(XP_MACOSX)
|
|
| 3330 | + unsetenv("FONTCONFIG_PATH");
|
|
| 3331 | +#endif
|
|
| 3332 | + |
|
| 3329 | 3333 | if (argc == 2 && NS_tstrcmp(argv[1], NS_T("--channels-allowed")) == 0) {
|
| 3330 | 3334 | #ifdef MOZ_VERIFY_MAR_SIGNATURE
|
| 3331 | 3335 | int rv = PopulategMARStrings();
|