* Fix Origin branding strings showing "Brave Nightly" on Windows
The brave_origin_strings.grd file had identical strings to
brave_strings.grd, causing Origin builds to display "Brave Nightly"
instead of "Brave Origin Nightly" on Windows. Update all user-facing
product name strings to use "Brave Origin" branding across Windows
shortcut names, accessible window titles, Start Menu folders, firewall
rules, and Mac helper names.
* Generate Origin branding via chromium-rebase-l10n.py
Update the python rebase script to apply "Brave Origin" branding
to brave_origin_strings.grd after it is copied from brave_strings.grd,
so the changes survive future l10n rebases.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Only apply Origin branding to non-translatable strings
Remove translatable strings from the Origin branding list to avoid
breaking XTB fingerprint matching. Only strings with
translateable="false" or with their translateable attribute stripped
by the brave_strings processing are modified.
* Also update XTB fingerprints for Origin-branded strings
Apply Origin branding to all user-visible strings (not just
translateable=false) and update XTB files with new fingerprints
and "Brave Origin" text in translations.
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add upstream test failures best practices doc
Consolidates upstream-flake filter guidance from testing-isolation.md
(TI-031, TI-032, TI-041, TI-042, TI-043) and patches.md (PATCH-011)
into a dedicated testing-upstream-failures.md. Expands the flake-check
section with full script usage and the LUCI verdict table.
* Fixed `CheckSettingsChanges` presubmit function
There were two problems:
1. Somehow the `registry_full_path` misses segments `chrome` and
`android` when accessing `SearchIndexProviderRegistry.java`, so
it is
`.../brave-browser/src/java/src/org/chromium/chrome/browser/settings/search/SearchIndexProviderRegistry.java`
instead of an actual
`.../brave-browser/src/chrome/android/java/src/org/chromium/chrome/browser/settings/search/SearchIndexProviderRegistry.java`
which causes the registry not being read
2. `input_api.ReadFile` could not read outside of repo root which
is `brave-browser/src/brave` so it could not read `SearchIndexProviderRegistry.java`
Fixed both with patching or chromium_presubmit_overrides.py
Resolves https://github.com/brave/brave-browser/issues/53560
Relocate the WASM workspace from ui/webui/resources/wasm/ to
third_party/wasm/, following the convention of third_party/rust/.
This is a plain move with path updates — no structural changes to
the workspace, crate locations within it, or build targets.
On extensions page when dev mode is enabled, the documentation link now
says "Google Extension developer documentation" instead of Brave as the
link points to Google's help article.
Removing download method and the only script which had called it
This bisect script was not actively being used.
It was written and used on macOS for brave-core.Last I
had tested was ~Feb 2020. It might still work.
But no active users. It's always there in git history
in case we wanted to reconsider the idea.
The PR:
* Reengineering eslint.config.js to properly extending the existing plugins and configs.
It also implies disabling a bunch of broken rules.
* Adds running eslint for all brave files in `npm run presubmit -- --all`.
* Also enables eslint check for all *.js files
* Update l10n for 1.87.x (Chromium 145). (#33691)
* Fixes l10n srcipt warning.
script\lib\l10n\grd_utils.py:443: FutureWarning: This search incorrectly ignores the root element, and will be fixed in a future version. If you rely on the current behaviour, change it to './/message'
elements = lxml.etree.parse(grd_file_path).findall('//message')
* Updated l10n for 1.87.x release.
* Rebased l10n.
* Configure unique GUIDs, installer names, and update paths for Brave Origin
* Fix buildflag_header template to support invoker's public_deps
Chromium Issue number: 7486518 (https://chromium-review.googlesource.com/7486518)
The template was forwarding public_deps from the invoker via
forward_variables_from(), but then unconditionally assigning to it.
This is incompatible - you can't forward a variable and also directly
assign to it.
The fix removes public_deps from forward_variables_from and explicitly
checks for invoker.public_deps after initializing the required
//build:buildflag_header_h dependency.
* Update signing helper to support Origin
With Sparkle (what we currently use):
- Lives in each app bundle separately (Brave and Brave Origin separate)
- There is no priviledged helper in use
- SMAuthorizedClients is not used
With Omaha v4 (not yet in use):
The privileged helper is part of the browser app bundle and not the updater.
The privileged helper is the thing that contains the SMAuthorizedClients value.
The privileged helper gets copied to /Library/PrivilegedHelperTools/<helper name>
The Brave updater is BraveUpdater.app and is the same for both products.
When the browser first runs (or during installation), it registers itself with the updater and the updater installs itself to a shared location like
- /Library/Application Support/BraveSoftware/BraveUpdater/ (system)
- ~/Library/Application Support/BraveSoftware/BraveUpdater/ (user)
Each app register with the updater with its own unique app guid (build/config.gni changes in my pr)
The updater maintains a list of registered apps and checks for updates for each.
Uninstalling one product doesn't remove the updater - it still serves the other.
* Use Origin Sparkle feed URL for Brave Origin builds
* Fix branding files for Origin to not have Browser in the name
This also fixes the wrong info for the Release channel.
* Fix wrong number of strings error because of Origin missing Dev channel
../../chrome/installer/util/l10n_string_util.cc(200,3): error: static assertion failed due to requirement 'std::size(kIDS_APP_SHORTCUTS_SUBDIR_NAME_BASEStrings) ==
13:52:59 install_static::NUM_INSTALL_MODES': resource IDS_APP_SHORTCUTS_SUBDIR_NAME_BASE has the wrong number of mode-specific strings.
13:52:59 200 | DO_MODE_STRINGS
13:52:59 | ^~~~~~~~~~~~~~~
* Adjust product path names for Brave Origin
* Update chromium_src/chrome/browser/component_updater/updater_state_win.cc
Co-authored-by: Michael Herrmann <michael@herrmann.io>
* Update chromium_src/chrome/installer/util/google_update_constants.cc
Co-authored-by: Michael Herrmann <michael@herrmann.io>
* Update browser/mac/sparkle_glue.mm
Co-authored-by: Michael Herrmann <michael@herrmann.io>
* Review fixes
---------
Co-authored-by: Michael Herrmann <michael@herrmann.io>
* Update rust tools build process to share intermediate targets.
* Remove unused logic.
* Modernize gn_run_rsp.py.
* Use separate crate target dir for each build_crate target.
* Add release target adjustments to update.py.
* Simplify cargo-audit path.
* Move cargo-audit target back to tools/crates.
- Fixes validation of ICU plural strings. The previous pattern didn't
allow for 'precise' (e.g =1) and 'ends on' (one) clauses to be present
at the same time.
- Fixes bug in adding installer strings when combining override xtb with
the original xtb.
Chromium 142 broke delta updates on Windows. This commit fixes them by
reverting upstream commits 13ca199c and a4d120da with a few patches,
vendored code and chromium_src overrides. The changes should affect the
browser Windows installer only, and not the Omaha update client.
Co-authored-by: Max Karolinskiy <max@brave.com>
Update l10n for 1.85.x (Chromium 143). (#32503)
* Fixes replacement map.
Some languages use non-breaking whitespace intead of regular space in
XTB files, so our map wasn't matching. Replaced spaces to \s in the map
patterns.
* Fixes error printing.
* Adjust ICU strings validation pattern.
* Fixes <br> -> <br/> tags.
* Updated l10n for 1.85.x release.
* Force context menu on Shift + Right Click on elements in pages
This PR introduces a feature that allows users to open the context menu
even if `event.preventDefault()` is called on the `contextmenu` event
when the Shift key is pressed.
This is particularly useful for users who want to access the context
menu on web pages that disable it through JavaScript.
This is achieved by bypassing the `preventDefault` check for
`contextmenu` events when the Shift key is detected as being pressed in
the "EventDispatcher" so that Node's `DefaultEventHandler` is called.
* Exclude rewrite from license checks
extends the transpile_web_ui.py to assert that the source roots provided via imports_from are complete.
The purpose of this is to improve the gn analyze functionality to be able to infer which tests need to run based on filechanges alone.
This happened when the drive letter was lower- instead of upper-case:
Traceback (most recent call last):
File "C:\src\tools\grit\grit.py", line 17, in <module>
sys.exit(grit.grit_runner.Main(sys.argv[1:]))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\src\tools\grit\grit\grit_runner.py", line 307, in Main
toolobject = _GetToolInfo(tool)[_FACTORY]()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\src\tools\grit\grit\grit_runner.py", line 25, in ToolFactoryBuild
import grit.tool.build
File "C:\src\tools\grit\grit\tool\build.py", line 21, in <module>
from grit import grd_reader
File "C:\src\tools\grit\grit\grd_reader.py", line 17, in <module>
from grit.node import mapping
File "C:\src\tools\grit\grit\node\mapping.py", line 12, in <module>
from grit.node import empty
File "C:\src\tools\grit\grit\node\empty.py", line 10, in <module>
from grit.node import include
File "C:\src\tools\grit\grit\node\include.py", line 12, in <module>
import grit.format.html_inline
File "C:\src\tools\grit\grit\format\html_inline.py", line 22, in <module>
from grit.format import minifier
File "C:\src\tools\grit\grit\format\minifier.py", line 35, in <module>
from brave_chromium_utils import inline_chromium_src_override; inline_chromium_src_override(globals(), locals())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\src\brave\script\brave_chromium_utils.py", line 111, in inline_chromium_src_override
chromium_src_override = get_chromium_src_override(orig_file)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "c:\src\brave\script\brave_chromium_utils.py", line 64, in get_chromium_src_override
assert path.startswith(src_dir), (path, src_dir)
^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: ('C:\\src\\tools\\grit\\grit\\format\\minifier.py', 'c:\\src')
We no longer have any OS-dependent excluded paths any longer (confirmed with
security team), so we can drop the checks that relied on `target_os` completely.
Chromium changes:
https://chromium.googlesource.com/chromium/src/+/2b748c6b6a27f01282f16dd87b30850f86987fa9
commit 2b748c6b6a27f01282f16dd87b30850f86987fa9
Author: David Song <wintermelons@google.com>
Date: Wed Sep 24 09:21:26 2025 -0700
[Fuchsia] Remove SwiftShader from the LICENSE file
WebEngine is built with swiftshader enabled since some tests depend on
it, but swiftshader artifacts are excluded from the packages uploaded
to CIPD, so it should be excluded from the LICENSE file as well.
Updated the licenses.py script to add support for --exclude-dir
argument which is used now to exclude SwiftShader license.
Bug: 444526998
Change-Id: Ib38133c6760a4c477f7b0a80aab92dca58b72c8e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6946765
Reviewed-by: Zijie He <zijiehe@google.com>
Reviewed-by: Andrew Grieve <agrieve@chromium.org>
Commit-Queue: David Song <wintermelons@google.com>
Cr-Commit-Position: refs/heads/main@{#1520039}
This change moves `third_party/ios_deps` to `ios/third_party` which matches Chromium and adds `third_party` entries for each dependency added in `brave-ios/Package.swift` so that they are correctly added to the licenses file