Commit Graph

30137 Commits

Author SHA1 Message Date
trop[bot]
49a9efa764 ci: output build cache hit rate as GHA annotation (#50371)
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
2026-03-19 12:03:40 -04:00
trop[bot]
1b080d4097 ci: test linux 64k (#50358)
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <kleinschmidtorama@gmail.com>
2026-03-19 09:31:47 -04:00
trop[bot]
191f673246 fix: always call the original impl in swizzled mousedown impls (#50356)
fix: always call the original implementation in swizzled mousedown implementations

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Noah Gregory <noahmgregory@gmail.com>
v42.0.0-alpha.3
2026-03-18 20:12:01 -07:00
trop[bot]
636e0e26f3 chore: Respect HTTP(S) proxy env variable for Yarn (#50351)
Respect HTTP(S) proxy env variable for Yarn

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Filip Mösner <filip.mosner@seznam.cz>
2026-03-18 19:11:55 -04:00
trop[bot]
a7744df592 fix: ensure WebContents::WasShown runs when window is shown (#50342)
Avoids a freeze when failing to enter fullscreen on macOS.

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: John Beutner <beutner.john@gmail.com>
2026-03-18 17:51:09 -04:00
trop[bot]
b0d5b63477 fix: correctly track BaseWindow::IsActive() on MacOS (#50339)
fix: correctly set IsActive() in BaseWindow on MacOS

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Kyle Cutler <kycutler@microsoft.com>
2026-03-18 14:59:53 -04:00
trop[bot]
0f54cb1d8b chore: bump chromium to 148.0.7738.0 (42-x-y) (#50335)
* chore: bump chromium in DEPS to 148.0.7738.0

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>

* chore: fixup patch indices

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>

* 7664509: Migrate ServiceWorkerInfo to ChildProcessId

https://chromium-review.googlesource.com/c/chromium/src/+/7664509

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2026-03-18 14:21:26 -04:00
trop[bot]
4ed6809aaa docs: fix markdown formatting in fuses.md (#50334)
* docs: fix markdown formatting in fuses.md

* Use bulleted list (was being run together on one line)
* Wrap ASCII diagram in code block

Co-authored-by: Ryan Zimmerman <ryan@exodus.io>

* docs: apply suggestions from code review

Co-authored-by: John Kleinschmidt <kleinschmidtorama@gmail.com>
Co-authored-by: Erick Zhao <erick@hotmail.ca>

Co-authored-by: Ryan Zimmerman <ryan@exodus.io>

* docs: fix misapplied suggestion

Co-authored-by: Ryan Zimmerman <ryan@exodus.io>

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Ryan Zimmerman <ryan@exodus.io>
2026-03-18 11:01:01 -04:00
trop[bot]
44ebbc11ed refactor: replace CHILD_PLUGIN with CHILD_EMBEDDER_FIRST on macOS (#50321)
refactor: replace CHILD_PLUGIN with CHILD_EMBEDDER_FIRST on macOS

Chromium removed upstream support for child plugin processes without
library validation in https://crbug.com/461717105, which we patched
back via feat_restore_macos_child_plugin_process.patch.

Chromium's CHILD_EMBEDDER_FIRST mechanism already provides the right
extensibility point for this: values > CHILD_EMBEDDER_FIRST are reserved
for embedders and resolved via ContentBrowserClient::GetChildProcessSuffix().
Chrome itself uses this pattern for its Alerts helper process.

This commit replaces the Chromium patch with an Electron-native
implementation.

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2026-03-18 10:14:05 +01:00
trop[bot]
d1b5d7c9ed chore: bump chromium to 148.0.7737.0 (42-x-y) (#50319)
* chore: bump chromium in DEPS to 148.0.7734.0

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>

* chore: fixup patch indices

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>

* chore: bump chromium in DEPS to 148.0.7736.0

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>

* chore: fixup patch indices

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>

* chore: bump chromium in DEPS to 148.0.7737.0

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>

* chore: fixup patch indices

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>

* 7666125: Migrate ServiceWorkerContext to ChildProcessId

https://chromium-review.googlesource.com/c/chromium/src/+/7666125

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2026-03-17 16:55:38 -04:00
trop[bot]
d5ac7d3f33 ci: update test timeout to 60 minutes (#50315)
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <kleinschmidtorama@gmail.com>
2026-03-17 12:10:30 -04:00
trop[bot]
17ddcbf01f fix: user resizable transparent windows on win32 (#50299)
test: revert win32 frameless and transparent resizable expectations

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Justin Mayfield <tooker@gmail.com>
2026-03-17 10:05:57 -04:00
trop[bot]
3b3e1e8ef6 feat: add id and groupId options to macOS notifications (#50304)
* feat: add custom `id` property to Notification API (macOS only)

Co-authored-by: Keeley Hammond <khammond@slack-corp.com>

* feat: add `groupId` property to Notification API (macOS). Notifications with the same groupId will be visually grouped together in Notification Center

Co-authored-by: Keeley Hammond <khammond@slack-corp.com>

* fix: move validation to construction time, add empty string check, remove setters

Co-authored-by: Keeley Hammond <khammond@slack-corp.com>

* docs: clarify id/group id properties, make instance properties read-only

Co-authored-by: Keeley Hammond <khammond@slack-corp.com>

* test: update tests to reflect read-only properties

Co-authored-by: Keeley Hammond <khammond@slack-corp.com>

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Keeley Hammond <khammond@slack-corp.com>
v42.0.0-alpha.2
2026-03-16 22:43:27 +00:00
trop[bot]
045516d598 fix: restore sdk_inputs cross-toolchain deps for macOS (#50303)
fix: restore sdk_inputs cross-toolchain deps for macOS

The change in CL:7652975 restricted sdk_inputs public_deps
to iOS only, to avoid setting up Xcode symlinks for the Linux
toolchain when cross-building chrome/linux on Mac. However, this
also broke cross-arch macOS builds (e.g. ffmpeg with target_cpu=x64)
where the mig target in the clang_arm64 toolchain depends on
sdk_inputs from the default clang_x64 toolchain.

Add target_os == \"mac\" alongside the existing iOS check to preserve
the original intent while restoring the cross-toolchain dependency
for macOS builds.

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2026-03-16 22:26:54 +00:00
trop[bot]
1fffaeb481 chore: bump chromium to 148.0.7733.0 (42-x-y) (#50288)
chore: bump chromium to 148.0.7733.0 42-x-y

* chore: bump chromium in DEPS to 147.0.7727.2

* chore: bump chromium in DEPS to 148.0.7728.0

* chore: bump chromium in DEPS to 148.0.7729.0

* chore: bump chromium in DEPS to 148.0.7730.0

* chore: bump chromium in DEPS to 148.0.7732.0

* chore: update WrappablePointerTag patch
Refs https://chromium-review.googlesource.com/c/chromium/src/+/7641766

* chore: update custom protocol patch for removed code
Refs https://chromium-review.googlesource.com/c/chromium/src/+/7653454

* chore: update patches

* fix: cleanup removed CHILD_PLUGIN code
Refs https://chromium-review.googlesource.com/c/chromium/src/+/7653455

* fix: move from int to ChildProcessId
Refs https://chromium-review.googlesource.com/c/chromium/src/+/7621912

* fix: update extensions CreateTab signature
Refs https://chromium-review.googlesource.com/c/chromium/src/+/7644389

* fix: draggable hit region test interface update for mac windows
Refs https://chromium-review.googlesource.com/c/chromium/src/+/7655245

* chore: bump chromium in DEPS to 148.0.7733.0

* feat: restore macos child plugin process
Refs https://chromium-review.googlesource.com/c/chromium/src/+/7653455

* fixup! chore: merge main

* chore: update patches

* fix: replace clipboard IsFormatAvailable with async GetAllAvailableFormats
Refs https://chromium-review.googlesource.com/c/chromium/src/+/7631097

Async API pending RFC https://github.com/electron/rfcs/pull/19

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
2026-03-16 21:14:02 +01:00
trop[bot]
88e666f210 test: fix esm issue in node-spec-runner (#50296)
Chromium added a top-level package.json in CL:7485999 that sets
the type to module and breaks commonjs tests run via
node-spec-runner.js. This commit temporarily changes the type to
commonjs while running the tests, then changes it back to module when done.

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2026-03-16 14:51:18 -04:00
trop[bot]
90f7796adb docs: update the example of webContents.setWindowOpenHandler to cla… (#50292)
docs: reorganize the comments for clarifying `webContents.setWindowOpenHandler` example

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: z0gSh1u <zx.cs@qq.com>
2026-03-16 12:53:31 -04:00
trop[bot]
e6925bef1f build: remove redundant bits of ncrypto node patch (#50281)
build: remove redundant ncrypto node patch

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2026-03-16 11:50:49 -04:00
trop[bot]
6a5e9fe677 fix: add ASAR support to additional copy methods (#50285)
* fix: add ASAR support for additional copy methods

Co-authored-by: Noah Gregory <noahmgregory@gmail.com>

* test: add tests for ASAR support for additional copy messages

Co-authored-by: Noah Gregory <noahmgregory@gmail.com>

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Noah Gregory <noahmgregory@gmail.com>
2026-03-16 11:49:33 -04:00
trop[bot]
270c9e7ce9 fix: prefer browser runtime over node in DevTools HostRuntime detection (#50274)
Upstream DevTools' HostRuntime checks `IS_NODE` before `IS_BROWSER` when
selecting the platform runtime. In Electron, `process` is available in
renderer processes, so `IS_NODE` evaluates to `true` in the DevTools
context. This causes DevTools to dynamically import the Node.js platform
runtime, which uses `node:worker_threads`. DevTools Web Workers running
under the `devtools://` protocol cannot load Node.js built-in modules,
so the import fails and breaks features like the formatter worker.

Fix by swapping the check order to prefer `IS_BROWSER` when both are
true. This is safe because in pure Node.js environments (the only case
where the node runtime is needed), `window` and `self` are both
undefined, so `IS_BROWSER` is always `false` regardless of check order.

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2026-03-16 14:41:51 +01:00
Samuel Attard
f4a50a8fde build: skip archiving patch conflict fix artifact (#50251)
The update-patches artifact is a single .patch file, so zipping it
is unnecessary overhead. With archive: false, gh run download fetches
the raw file directly without requiring a decompression step.

Co-authored-by: Claude <noreply@anthropic.com>
v42.0.0-alpha.1
2026-03-13 21:49:05 +00:00
Erick Zhao
b35ed6346e docs: point pull requests guide to build tools (#50198)
* docs: point pull requests guide to build tools

* update for `--fork`
2026-03-13 16:01:41 -04:00
Samuel Attard
816e5964fb build: add patch conflict resolution workflow with CI artifacts (#50235)
ci: upload patch conflict fix as artifact in apply-patches

When patch-up.js cannot auto-push the 3-way-merged patch diff (e.g. on
fork PRs), the checkout action already writes patches/update-patches.patch
and tells the user to check CI artifacts — but nothing was uploading it.

This adds the missing upload-artifact step to the apply-patches job so
the resolved diff is available for download, and documents in CLAUDE.md
that pulling this artifact and applying it with `git am` is the fast
path for fixing patch conflicts on PR branches without a full local sync.

Co-authored-by: Claude <noreply@anthropic.com>
v42.0.0-nightly.20260313
2026-03-13 01:46:29 +00:00
Michaela Laurencin
3295d0d4b0 build(deps-dev): replace timers-browserify (#50203)
* build(deps-dev): replace timers-browserify

Co-Authored-By: Claude <noreply@anthropic.com>
Generated-By: GitHub Copilot

* update shim from js to ts

Co-Authored-By: Claude <noreply@anthropic.com>
Generated-By: GitHub Copilot

* remove timers-shim.js

* remove refs from package json and yarn lock

* update process in yarn lock

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-03-12 21:26:34 -04:00
John Kleinschmidt
3e72e2e8dd ci: update actions/cache to 5.0.3 (#50222)
chore: update actions/cache to 5.0.3

Needed due to https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/
2026-03-12 20:45:01 -04:00
Erick Zhao
313e501454 feat: add ELECTRON_INSTALL_ env vars (#49981)
* feat: add `ELECTRON_INSTALL_` env vars

* add tip for available arches

* clarify!

* use `arm` instead of `armv7l`
2026-03-12 15:09:48 +01:00
Erick Zhao
1f6dbb0917 docs: add API history (G-I) (#50194) 2026-03-12 14:43:39 +01:00
Niklas Wenzel
378659c535 build: update NMV to 146 (#50214) 2026-03-11 23:32:42 +00:00
Samuel Attard
6be775ad83 fix: preserve staged update dir when pruning orphaned updates on macOS (#50210)
fix: preserve staged update dir when pruning orphaned update dirs on macOS

The previous squirrel.mac patch cleaned up all staged update directories
before starting a new download. This kept disk usage bounded but broke
quitAndInstall() if called while a subsequent checkForUpdates() was in
flight — the already-staged bundle would be deleted out from under it.

This reworks the patch to read ShipItState.plist and preserve the
directory it references, deleting only truly orphaned update.XXXXXXX
directories. Disk footprint stays bounded (at most 2 dirs: staged +
in-progress) and quitAndInstall() remains safe mid-check.

Also adds test coverage for the quitAndInstall/checkForUpdates race and
a triple-stack scenario where 3 updates arrive without a restart.

Refs https://github.com/electron/electron/issues/50200
2026-03-11 15:42:23 -07:00
Mitchell Cohen
11f28ac3ac fix: improved the appearance of shadows and borders on frameless windows on Wayland (#50007)
* remove painting from linux frame layout

* use chromium csd strategy for frameless windows

* Apply suggestions from code review

Remove unneeded virtual methods

Co-authored-by: Charles Kerr <charles@charleskerr.com>

* removed inline destructors

---------

Co-authored-by: Charles Kerr <charles@charleskerr.com>
2026-03-11 15:42:09 -04:00
Erick Zhao
5ec589a1de chore: remove remark-cli from markdown linting (#50165)
* chore: remove stale `.remarkrc` file

* build(deps): remove unused deps

* cleanup again
2026-03-11 15:39:38 -04:00
Charles Kerr
4fe3752fae refactor: move electron::api::Tray to cppgc (#50187)
* refactor: migrate electron::api::tray to cppgc

* chore: add Tray to wrappable_pointer_tags.h patch

* fixup! refactor: migrate electron::api::tray to cppgc

clear keep_alive_ if error is thrown in constructor

* refactor: make Tray::menu_ a cppgc::Member<Menu>
2026-03-11 15:38:08 -04:00
Shelley Vohr
c8dd0b99ee fix: prevent traffic light buttons flashing on deminiaturize (#50183)
* fix: prevent traffic light buttons flashing on deminiaturize

When a window with a custom `trafficLightPosition` is minimized and
restored, macOS re-layouts the title bar container during the
deminiaturize animation, causing the traffic light buttons to briefly
appear at their default position before being repositioned.

Fix this by hiding the buttons container in `windowWillMiniaturize` and
restoring them (with a redraw to the correct position) in
`windowDidDeminiaturize`.

* chore: address feedback from review
2026-03-11 13:02:51 -04:00
John Kleinschmidt
55ebdfb26b ci: add timeout to test step (#50186)
Additionally, take a screenshot on timeout so that we can debug why there is a hang
v42.0.0-nightly.20260311
2026-03-11 09:48:47 +01:00
electron-roller[bot]
d6e0c270d1 chore: bump chromium to 147.0.7727.0 (main) (#50115)
* chore: bump chromium in DEPS to 147.0.7724.0

* chore: bump chromium in DEPS to 147.0.7725.0

* chore: bump chromium in DEPS to 147.0.7727.0

* chore: update patches
Refs https://chromium-review.googlesource.com/c/chromium/src/+/7633903

* fix: pass weak-ptr-bound callback to OnCommandsChanged
Refs https://chromium-review.googlesource.com/c/chromium/src/+/7622614

* fix: add missing option to CSS corner smoothing property
Refs https://chromium-review.googlesource.com/c/chromium/src/+/7646628

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Samuel Maddock <samuelmaddock@electronjs.org>
2026-03-10 23:14:36 -04:00
George Xu
c4c6195341 docs: document Wayland frameless window shadow behaviour (#50193)
docs: update linux frameless window docs to account for hasShadow:false
2026-03-10 18:37:38 -07:00
Noah Gregory
f1705eccf8 fix: don't call TaskDialogIndirect with disabled parent windows (#50078) 2026-03-10 14:51:07 -04:00
Brandon Fowler
44b12fbb7b fix: run webRequest handlers for URLs handled by ElectronURLLoaderFactory (#45915)
* fix: continue to run ProxyingURLLoaderFactory for intercepted protocols

* test: webRequest handlers when loading browser windows

* fix: wrap special URL loaders factories with ProxyingURLLoaderFactory

* test: webRequest handlers when using net.fetch

* refactor: remove redundant intercepted protocol handling

AsarURLLoaderFactory is now intercepted by ProxyingURLLoaderFactory, which already handles when the file:// scheme is intercepted.

* fix: check before using saved headers in OnReceiveResponse

* fix: run webRequest handlers when loading file service workers

* test: handlers when loading file service workers

* refactor: add shared CreateURLLoaderFactoryBuilder method

---------

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2026-03-10 12:27:00 -04:00
dependabot[bot]
3691451c71 build(deps): bump github/codeql-action from 4.32.5 to 4.32.6 (#50179)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 4.32.5 to 4.32.6.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](c793b717bc...0d579ffd05)

---
updated-dependencies:
- dependency-name: github/codeql-action
  dependency-version: 4.32.6
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
v42.0.0-nightly.20260310
2026-03-10 09:52:19 +01:00
dependabot[bot]
b3e4547acd build(deps): bump fast-xml-parser from 4.5.3 to 4.5.4 in the npm_and_yarn group across 1 directory (#50182)
build(deps): bump fast-xml-parser

Bumps the npm_and_yarn group with 1 update in the / directory: [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser).


Updates `fast-xml-parser` from 4.5.3 to 4.5.4
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v4.5.3...v4.5.4)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 4.5.4
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-10 09:51:41 +01:00
dependabot[bot]
bda1becab0 build(deps): bump actions/setup-node from 6.2.0 to 6.3.0 (#50180)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](6044e13b5d...53b83947a5)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: 6.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-10 09:42:58 +01:00
Michaela Laurencin
dda92fd53d ci: add workflow to remove 'needs-signed-commits' label (#50103) 2026-03-09 18:45:49 -07:00
Erick Zhao
d4cbd6cd7d docs: fix ipc highlight lines (#50169)
Co-authored-by: Dilukshan <65407969+dilukshann7@users.noreply.github.com>
2026-03-09 17:16:06 -07:00
Kyle Cutler
2ba4872d2c feat: WebContents.getOrCreateDevToolsTargetId() (#49733)
* Feat: support getDevToolsId() on WebContents

* Rename to `getOrCreateDevToolsTargetId`

* build: use spawn instead of spawnSync for build (#49774)

* Fix build

* formatting

---------

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2026-03-09 16:32:52 -04:00
Shelley Vohr
c264402766 fix: validate protocol scheme names in setAsDefaultProtocolClient (#50141)
fix: validate protocol scheme names in setAsDefaultProtocolClient

On Windows, `app.setAsDefaultProtocolClient(protocol)` directly
concatenates the protocol string into the registry key path with no
validation. A protocol name containing `\` could write to an arbitrary
subkey under `HKCU\Software\Classes\`, potentially hijacking existing
protocol handlers.

To fix this, add `Browser::IsValidProtocolScheme()` which validates that a protocol
name conforms to the RFC 3986 scheme grammar:

  scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )

This rejects backslashes, forward slashes, whitespace, and any other
characters not permitted in URI schemes.
2026-03-09 18:16:34 +00:00
Shelley Vohr
2c6dd1156c fix: use requesting frame origin in permission helper and device choosers (#50052)
* fix: use requesting frame origin instead of top-level URL for permissions

`WebContentsPermissionHelper::RequestPermission` passes
`web_contents_->GetLastCommittedURL()` as the origin to the permission
manager instead of the actual requesting frame's origin. This enables
origin confusion when granting permissions to embedded third-party iframes,
since app permission handlers see the top-level origin instead of the
iframe's. The same pattern exists in the HID, USB, and Serial device
choosers, where grants are keyed to the primary main frame's origin rather
than the requesting frame's.

Fix this by using `requesting_frame->GetLastCommittedOrigin()` in all
affected code paths, renaming `details.requestingUrl` to
`details.requestingOrigin`, and populating it with the serialized
origin only.

* chore: keep requestingUrl name in permission handler details

The previous commit changed the details.requestingUrl field to
details.requestingOrigin in permission request/check handlers. That
field was already populated from the requesting frame's RFH, so the
rename was unnecessary and would break apps that read the existing
property. Revert to requestingUrl to preserve the existing API shape.

The functional changes to use the requesting frame in
WebContentsPermissionHelper and the HID/USB/Serial choosers remain.

---------

Co-authored-by: Samuel Attard <sattard@anthropic.com>
2026-03-09 09:20:22 -07:00
Shelley Vohr
eacec9a47e refactor: use WHATWG URL instead of url.parse (#48674)
refactor: use WHATWG URL instead of url.parse
2026-03-09 11:12:01 -04:00
David Sanders
0d869c2007 ci: calculate dates for release board automation (#50081) v42.0.0-nightly.20260309 2026-03-09 11:35:55 +01:00
Shelley Vohr
ccb2c77c17 fix: InspectorFrontendHost override in embedded windows (#49794)
fix: InspectorFrontendHost override in embedded windows
2026-03-09 10:53:02 +01:00
Samuel Attard
603679cb18 fix: read nodeIntegrationInWorker from per-frame WebPreferences (#50122)
Previously the renderer checked a process-wide command-line switch to
decide whether to create a Node.js environment for dedicated workers.
When a renderer process hosted multiple WebContents with different
nodeIntegrationInWorker values (e.g. via window.open with overridden
webPreferences in setWindowOpenHandler), all workers in the process
used whichever value the first WebContents set on the command line.

Instead, plumb the flag through blink's WorkerSettings at worker
creation time, copying it from the initiating frame's WebPreferences.
The check on the worker thread then reads the per-worker value. Nested
workers inherit the flag from their parent worker via
WorkerSettings::Copy.

The --node-integration-in-worker command-line switch is removed as it
is no longer consumed.
2026-03-09 00:50:01 -07:00