Commit Graph

1311 Commits

Author SHA1 Message Date
trop[bot]
be53e0a470 fix: propagate requesting frame through sync permission checks (#50686)
WebContentsPermissionHelper::CheckPermission was hardcoding
GetPrimaryMainFrame() and deriving the requesting origin from
web_contents_->GetLastCommittedURL(), so the setPermissionCheckHandler
callback always received the top frame's origin and
details.isMainFrame/details.requestingUrl always reflected the main
frame, even when a cross-origin subframe with allow="serial" or
allow="camera; microphone" triggered the check.

Thread the requesting RenderFrameHost through CheckPermission,
CheckSerialAccessPermission, and CheckMediaAccessPermission so the
permission manager receives the real requesting frame. Update the
serial delegate and WebContents::CheckMediaAccessPermission callers to
pass the frame they already have.

Adds a regression test that loads a cross-origin iframe with
allow="camera; microphone", calls enumerateDevices() from within the
iframe, and asserts the permission check handler receives the iframe
origin for requestingOrigin, isMainFrame, and requestingUrl.

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Sam Attard <sattard@anthropic.com>
2026-04-05 00:43:42 +00:00
trop[bot]
5b6b1c1641 refactor: remove unused field ServiceWorkerMain.start_worker_promise_ (#50685)
added in a467d068 but never used.

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2026-04-04 18:46:15 -05:00
trop[bot]
1686aa37f2 refactor: remove use of deprecated API base::GetProc() (#50675)
* refactor: replace deprecated API base::GetProcId() in web_frame_main

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

* refactor: replace deprecated API base::GetProcId() in web_contents

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

* refactor: replace deprecated API base::GetProcId() in a11y ui

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

* refactor: frame.osProcessId now returns 0 instead of -1 for invalid processes.

This is consistent with WebContents.getOSProcessId

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

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2026-04-04 11:19:40 -05:00
trop[bot]
964cf07e19 refactor: remove never-used JS API (#50673)
* chore: do not expose v8Util.getObjectHash() to JS

Not used, documented, or typed. Added in ddad3e4846.

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

* chore: do not expose DownloadItem.isDone() to JS

Not used, documented, or typed. Added in dcad25c98c.

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

* chore: do not expose BrowserWindow.isWebViewFocused() to JS

Not used, documented, or typed. Added in a949e9542d.

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

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2026-04-03 15:47:46 -05:00
trop[bot]
efb7477305 chore: stop exposing unused menu methods to JS (#50660)
* chore: remove unused undocumented API `menu.worksWhenHiddenAt()`.

Not used, documented, or typed. Added by 544d8a423c.

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

* chore: remove unused undocumented API `menu.getCommandIdAt()

Not used, documented, or typed. Added by dae98fa43f.

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

* chore: do not expose `menu.getIndexOfCommandId()` to JS

Added by dae98fa43f but not documented, typed, or used by JS code.

The C++ method is used by other shell code, but not in JS.

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

* chore: remove unused undocumented API `menu.getLabelAt()`

Not used, documented, or typed. Added by dae98fa43f.

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

* chore: remove unused undocumented API `menu.getToolTipAt()`

Not used, documented, or typed. Added by 06d48514c6.

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

* chore: remove unused undocumented API `menu.getSubLabelAt()`

Not used, documented, or typed. Added by dae98fa43f.

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

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2026-04-03 08:22:17 -05:00
trop[bot]
4323fa4b06 feat: make Chrome extensions work on custom protocols (#50530)
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Niklas Wenzel <dev@nikwen.de>
2026-04-02 20:09:59 -07:00
trop[bot]
5c61e826c8 refactor: remove unused internal method WebContents.equal() (#50651)
refactor: remove unused internal method WebContents.equal()

last use removed in Feb 2021 @ 51bb0ad36d

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2026-04-02 17:17:52 -05:00
trop[bot]
7356c75ca3 refactor: remove unused internal method contents.canGoToIndex() (#50631)
refactor: remove unused internal method contents.canGoToIndex()

refactor: make WebContents::CanGoToIndex() private

The JS binding has been unused since 2021-04-27 #28839 0a1b26b1

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2026-04-01 17:52:16 -05:00
trop[bot]
7f8e35c8c8 fix: add missing HandleScope in contentTracing.getTraceBufferUsage() (#50592)
The `OnTraceBufferUsageAvailable` callback creates V8 handles via
`Dictionary::CreateEmpty()` before `promise.Resolve()` enters its
`SettleScope` (which provides a `HandleScope`). When the callback
fires asynchronously from a Mojo response (i.e. when a trace session
is active), there is no `HandleScope` on the stack, causing a fatal
V8 error: "Cannot create a handle without a HandleScope".

Add an explicit `v8::HandleScope` at the top of the callback, matching
the pattern used by the other contentTracing APIs which resolve their
promises through `SettleScope` or the static `ResolvePromise` helper.

Made-with: Cursor

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Alexey Kozy <alexey@anysphere.co>
2026-03-31 12:15:18 +02:00
electron-roller[bot]
ad4dc5045f chore: bump chromium to 148.0.7751.0 (42-x-y) (#50429)
* chore: bump chromium in DEPS to 148.0.7749.1

* chore: bump chromium in DEPS to 148.0.7751.1

* chore: bump chromium in DEPS to 148.0.7753.1

* chore: bump chromium in DEPS to 148.0.7755.1

* chore: bump chromium to 148.0.7751.0 (main) (#50427)

* chore: bump chromium in DEPS to 148.0.7749.0

* chore: bump chromium in DEPS to 148.0.7751.0

* chore: update patches

* 7681299: Introduce OccludedWidgetInputProtector to track always-on-top widgets

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

* 7685453: chrome://accessibility: Don't AllowJavascript() in async calls

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

* 7665878: Prefer browser runtime over Node.js in HostRuntime detection

Refs https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/7665878

* 7674037: Rename the bookmark-related interfaces of the Clipboard class to URL.

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

* 7621713: Migrate ServiceWorker framework to ChildProcessId

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

* 7680500: Migrate ServiceWorkerHost to ChildProcessId

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

* chore: update roller commit message lint script to handle devtools CLs

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
(cherry picked from commit c44d60cfe4)

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
2026-03-26 17:02:22 -04:00
trop[bot]
e48835e4e0 feat: add accessibilityDisplayShouldDifferentiateWithoutColor on macOS (#50409)
feat: add nativeTheme.shouldDifferentiateWithoutColor on macOS

Adds nativeTheme.shouldDifferentiateWithoutColor on macOS that maps to
NSWorkspace.accessibilityDisplayShouldDifferentiateWithoutColor. If true,
the user has indicated that they prefer UI that differentiates items with
something other than color alone. This is useful for users with color
vision deficiency.

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Robert Böhnke <robb@robb.is>
2026-03-25 15:50:57 -04:00
trop[bot]
0d0a58cbd4 fix: correct utility process exit code on Windows (#50385)
* fix: correct utility process exit code on Windows

On Windows, process exit codes are 32-bit unsigned integers (DWORD).
When passed from Chromium to Electron as a signed int and then
implicitly converted to uint64_t, values with the high bit set
(e.g., NTSTATUS codes) undergo sign extension, producing incorrect
values.

Cast the exit code to uint32_t before widening to uint64_t to
prevent sign extension and preserve the original Windows exit code.

Fixes #49455

Co-authored-by: João Silva <joaomrsilva@tecnico.ulisboa.pt>

* fix: narrow HandleTermination and Shutdown to uint32_t, add tests

Co-authored-by: João Silva <joaomrsilva@tecnico.ulisboa.pt>

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: João Silva <joaomrsilva@tecnico.ulisboa.pt>
2026-03-19 18:47:59 -07: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]
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]
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>
2026-03-16 22:43:27 +00: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
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
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
electron-roller[bot]
9f80b64617 chore: bump chromium to 147.0.7719.0 (main) (#50061)
* chore: bump chromium in DEPS to 147.0.7716.0

* chore: bump chromium in DEPS to 147.0.7717.0

* chore: bump chromium in DEPS to 147.0.7719.0

* chore: update patches

Refs https://chromium-review.googlesource.com/c/chromium/src/+/7618634
Refs https://chromium-review.googlesource.com/c/chromium/src/+/7622595

* [Extensions] Track service worker lifecycle more precisely

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

* Make Clipboard::ReadAsciiText|ReadData|ReadText|ReadAvailableTypes asynchronous

Refs
https://chromium-review.googlesource.com/c/chromium/src/+/7609958
https://chromium-review.googlesource.com/c/chromium/src/+/7600360
https://chromium-review.googlesource.com/c/chromium/src/+/7595942
https://chromium-review.googlesource.com/c/chromium/src/+/7594881

* fixup! Make Clipboard::ReadAsciiText|ReadData|ReadText|ReadAvailableTypes asynchronous

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
2026-03-08 06:22:11 +09:00
Charles Kerr
dc4ad2e932 fix: screen.getCursorScreenPoint() crash on Wayland (#50092)
* docs: document that getCursorScreenPoint() needs a Window on Wayland

* feat: add IsWayland() helper

* fix: Wayland crash in GetCursorScreenPoint()

fix: support Screen::GetCursorScreenPoint() on X11
2026-03-06 15:24:33 -05:00
Jan Hannemann
ddefb54c8f feat: implements cold COM activation (#49919)
* fix: implements cold COM activation

* fix: code review feedack
2026-03-05 17:30:04 -05:00
Shelley Vohr
7c0cb61b3c fix: prevent use-after-free in PowerMonitor via dangling OS callbacks (#50045)
PowerMonitor registered OS-level callbacks (HWND UserData and
WTS/suspend notifications on Windows, shutdown handler and lock-screen
observer on macOS) but never cleaned them up in its destructor. The JS
layer also only held the native object in a closure-local variable,
allowing GC to reclaim it while those registrations still referenced
freed memory.

Retain the native PowerMonitor at module level in power-monitor.ts so
it cannot be garbage-collected. Add DestroyPlatformSpecificMonitors()
to properly tear down OS registrations on destruction: on Windows,
unregister WTS and suspend notifications, clear GWLP_USERDATA, and
destroy the HWND; on macOS, remove the emitter from the global
MacLockMonitor and reset the Browser shutdown handler.
2026-03-05 09:00:37 -06:00
ANANYA542
9b15976136 fix: avoid redundant page-favicon-updated events on setBounds (#49464)
* fix: avoid duplicate calls in electron_api_web_contents

* Style: fix lint errors

* fix: prevent duplicate page-favicon-updated events and add regression test
2026-03-05 11:30:46 +01:00
Charles Kerr
d18b017cb0 fix: FTBFS when printing is disabled (#50056)
these variables hit with-Werror,-Wunused when printing is disabled
2026-03-04 13:14:02 -06:00
Robo
5eb1e1bf89 fix: uaf in non-client hittest during view teardown (#50042)
* fix: uaf in non-client hittest during view teardown

* chore: update crash spec
2026-03-04 00:29:49 +09:00
Mitchell Cohen
2f13d85785 fix: better shortcut registration and app icon matching on Wayland (#49988)
* fix: set default desktop name that matches exec name on linux

* chromium patches for global shortcuts

* use app name for shortcut description
2026-03-03 15:37:54 +01:00
electron-roller[bot]
238699221e chore: bump chromium to 147.0.7713.0 (main) (#49975)
* chore: bump chromium in DEPS to 147.0.7708.0

* chore: update patches

* chore: bump chromium in DEPS to 147.0.7709.0

* chore: bump chromium in DEPS to 147.0.7710.0

* chore: bump chromium in DEPS to 147.0.7713.0

* 7603876: Remove OriginatingProcess and RendererProcess overloads

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

Co-Authored-By: Claude (claude-opus-4-20250514)

* 7596126: Clean up StoragePartitionImpl bucket data deletion.

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

* fix(patch): ENABLE_GLIC guard removed upstream

Upstream removed the #if BUILDFLAG(ENABLE_GLIC) guard around
ShouldShowGlicSummarizeButton, making the code unconditional.
Restructured the patch to use #if 0 / #else / #endif instead.

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

Co-Authored-By: Claude (Anthropic)

* fix(patch): Win32 API :: scope qualifiers

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

Co-Authored-By: Claude (Anthropic)

* chore: update patches (trivial only)

* docs: add skip-and-recreate warning to chromium upgrade skill

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <kleinschmidtorama@gmail.com>
2026-03-03 13:54:44 +09:00
Shelley Vohr
9f9a5b8b9b fix: prevent use-after-free in permission request callbacks (#50032)
EnterFullscreenModeForTab, RequestPointerLock, and RequestKeyboardLock
bind callbacks with base::Unretained(this); fullscreen also captures a
raw RenderFrameHost*. These callbacks may be invoked by the app's JS
permission handler after the WebContents or RenderFrameHost is destroyed.

Use GetWeakPtr() in all three call sites, and capture a
GlobalRenderFrameHostToken instead of the raw RenderFrameHost* for
fullscreen so the pointer is resolved and null-checked only when the
callback fires. Cancel in-flight permission requests from ~WebContents()
via a new ElectronPermissionManager::CancelPendingRequests()` so stale
callbacks are never handed back to JS.
2026-03-02 19:01:24 -05:00
Zach Waugh
89483e7e89 feat: add macOS-only api to determine if app is currently active (#49622)
* feat: add macOS-only api to determine if app is currently active

You can `focus()` the app and get events for `did-become-active`, but there's currently not a way to directly check if your app is the active (foreground) application.

* test: add unit test for app.isActive api

* fix: ensure we hide app after showing in test

If the app is still active, it may affect other tests like dock.bounce
that behave differently depending on whether the app is active

* docs: simplify isActive api description
2026-03-02 11:47:37 -05:00
Shelley Vohr
4c3565fb88 feat: show toast dismissal reason on Windows (#49913)
* feat: show toast dismissal reason on Windows

* Update docs/api/notification.md

Co-authored-by: David Sanders <dsanders11@ucsbalum.com>

---------

Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
2026-03-02 11:38:51 -05:00
Shelley Vohr
222c989f13 fix: bind offscreen paint callback to child WebContents (#49998)
fix: bind offscreen paint callback to child WebContents

Previously, MaybeOverrideCreateParamsForNewWindow bound the
OffScreenWebContentsView's paint callback to the parent WebContents
using base::Unretained(this). This was both unsafe (dangling pointer
risk if the parent is destroyed before the child) and semantically
incorrect — paint events belong to the child window, not the opener.

Replace the callback in MaybeOverrideCreateParamsForNewWindow with
base::DoNothing(), then rebind it to the child WebContents in
AddNewContents via a new SetCallback method on OffScreenWebContentsView.
2026-03-02 11:24:48 -05:00
Shelley Vohr
3d1cc3970b fix: update label/sublabel/icon in MenuItems on open (#49678)
fix: update label/sublabel/icon in macOS item on open
2026-02-27 12:47:05 -05:00
Charles Kerr
e3d8c9fcdf refactor: replace std::to_string() with base::NumberToString() (#49949) 2026-02-26 14:57:54 -05:00
Jarek Radosz
55d9e48c35 fix: menu close event missing after opening a submenu (#49783)
* fix: menu close event missing after opening a submenu

* add a unit-like test
2026-02-26 10:40:29 -05:00
Charles Kerr
aee0661046 refactor: simplify BaseWindow parent<->child association code (#49537)
* refactor: simplify BaseWindow parent<->child association code

* refactor: remove unnecessary local variable from BaseWindow::GetParentWindow()
2026-02-26 09:22:42 -06:00
Shelley Vohr
94aa90bb64 fix: recover network requests after Network Service restart (#49887)
* fix: recover network requests after Network Service restart

* chore: reuse implementation

* chore: make linter happy

* chore: fix lint

---------

Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2026-02-25 12:53:06 -05:00
electron-roller[bot]
e5d3fbf6dc chore: bump chromium to 147.0.7699.0 (main) (#49831)
* chore: bump chromium in DEPS to 147.0.7693.0

* chore: bump chromium in DEPS to 147.0.7694.0

* chore: bump chromium in DEPS to 147.0.7695.0

* chore: bump chromium in DEPS to 147.0.7697.0

* chore: bump chromium in DEPS to 147.0.7698.0

* fix(patch): IsGuest moved to SecurityPrincipal

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

Co-Authored-By: Claude (claude-opus-4-6)

* chore: update patches (trivial only)

* fix(patch): v8::External API now requires ExternalPointerTypeTag

Ref: https://chromium-review.googlesource.com/c/v8/v8/+/7562476

Co-Authored-By: Claude (claude-opus-4-6)

* fix: update CreateCustomWebContents signature

Upstream added disposition and window_features parameters.

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

Co-Authored-By: Claude (claude-opus-4-6)

* fix: OriginatingProcess renamed to OriginatingProcessId

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

Co-Authored-By: Claude (claude-opus-4-6)

* fix: kLogNetLog moved from network::switches to net::switches

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

Co-Authored-By: Claude (claude-opus-4-6)

* fix(patch): patch out glic and save-to-drive Profile usage in PDF

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

Co-Authored-By: Claude (claude-opus-4-6)

* chore: bump chromium in DEPS to 147.0.7699.0

* chore: remove upstreamed pseudonymization salt descriptor code

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

Co-Authored-By: Claude (claude-opus-4-6)

* chore: update patches (trivial only)

* chore: update reclient patch format (copy-from to new-file)

Co-Authored-By: Claude (claude-opus-4-6)

* chore: remove upstreamed patch and update stale patches

Co-Authored-By: Claude (claude-opus-4-6)

* fix: expose GetLibGdk3 and guard glic function body

GetLibGdk3 needs to be public for Electron's gdk_display_beep usage.
ShouldShowGlicSummarizeButton body must be guarded, not just call site.

Co-Authored-By: Claude (claude-opus-4-6)

* fix(patch): v8::External API in nan requires ExternalPointerTypeTag

Ref: https://chromium-review.googlesource.com/c/v8/v8/+/7562476

Co-Authored-By: Claude (claude-opus-4-6)

* fixup fix(patch): v8::External API in nan requires ExternalPointerTypeTag

* fixup: remove extraneous changes to patches

Caused by
debb371681
6e51034728

* fixup: revert fix: expose GetLibGdk3 and guard glic function body

Reverts 6e51034728 as this was an unneeded changed caused by the incorrect changes made in debb371681

* 7586673: Update logic for showing pdf summarize button

7586673: Update logic for showing pdf summarize button | https://chromium-review.googlesource.com/c/chromium/src/+/7586673

Also 7454131: set enable_glic=true | https://chromium-review.googlesource.com/c/chromium/src/+/7454131 (landed in previous roll)

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Alice Zhao <alicelovescake@anthropic.com>
Co-authored-by: John Kleinschmidt <kleinschmidtorama@gmail.com>
2026-02-24 16:42:05 -05:00
Mitchell Cohen
acd01e15e2 fix: prevent crash on Windows when closing child windows (#49901)
* guard against window destruction in min/max size checks

* use weakptr to prevent hit test crash on teardown

* revove web contents views during teardown

* fix test failure

* fix other tests
2026-02-24 15:48:04 +01:00
Shelley Vohr
9d0a0a5459 fix: apply zoomFactor from setWindowOpenHandler to window.open() windows (#49886)
fix: apply zoomFactor from setWindowOpenHandler to window.open() windows
2026-02-23 09:02:48 +01:00
reito
1e437c9a18 feat: use 1.0f as default for offscreen scale factor. (#49683) 2026-02-19 09:58:29 +01:00
Shelley Vohr
dfdf04976e fix: draggable region position with docked DevTools (#49822) 2026-02-18 11:49:18 -05:00
electron-roller[bot]
c98cf69f40 chore: bump chromium to 147.0.7687.0 (main) (#49782)
* chore: bump chromium in DEPS to 147.0.7683.0

* fix(patch): constant moved to header

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

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix(patch): occlusion simplification upstream

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

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: remove upstreamed patches

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: update patches (trivial only)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: bump chromium in DEPS to 147.0.7685.0

* fix(patch): V1 Keychain removal

Upstream deleted the V1 Keychain API. Removed V1 hunks and adapted

keychain_password_mac.mm to use KeychainV2 APIs.

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

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: update patches (trivial only)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* 7535923: Rename ozone buildflags

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

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* 7528398: [LNA] Rename PNA-named files to LNA-named files

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

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* 7534194: Convert some functions in ui::Clipboard to async

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

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* 7544580: [DevTools] Add command to restart Chrome to DevTools UI bindings

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

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: bump chromium in DEPS to 147.0.7687.0

* chore: update patches (trivial only)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* chore: incorporate learnings into claude skill

I asked Claude to reflect on our upgrade session, consider what it learned and should know in the future, and to update its skill documents.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: clavin <clavin@electronjs.org>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-17 14:25:21 -05:00
Shelley Vohr
eb29568e45 feat: introduce os_crypt_async in safeStorage (#49054)
* feat: support Freedesktop Secret Service OSCrypt client

Refs https://issues.chromium.org/issues/40086962
Refs https://issues.chromium.org/issues/447372315

* chore: rework to async interface

* refactor: allow customizing freedesktop config

* docs: add more async impl info

* refactor: reject when temporarily unavailable

* chore: feedback from review

* chore: push_back => emplace_back
2026-02-15 19:54:50 +01:00
Shelley Vohr
dcdbb0397e feat: allow defaulting to printer default page size (#49523)
Co-authored-by: Edvan de Matos <edvan.santos@querodelivery.com>
2026-02-13 07:40:14 -05:00
Shelley Vohr
74fd10450f feat: improve Windows Toast actions support (#48132)
* feat: improve Windows Toast actions support

* fix: ensure MSIX compatibility

* test: add bad clsid format test
2026-02-12 17:25:20 -05:00
electron-roller[bot]
a65cfed500 chore: bump chromium to 146.0.7666.0 (main) (#49528)
* chore: bump chromium in DEPS to 146.0.7652.0

* fix(patch-conflict): update mas_avoid_private_macos_api_usage context for constrainFrameRect method

The upstream CL added a new constrainFrameRect:toScreen: method override to
NativeWidgetMacNSWindow as part of headless mode window zoom implementation.
The MAS patch's #endif for frameViewClassForStyleMask now correctly appears
after that method, since constrainFrameRect is a public API override that
doesn't need to be guarded.

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

* fix(patch-conflict): update printing.patch for base::DictValue rename

Updated printing.patch to use the new base::DictValue type name instead of
base::Value::Dict following Chromium's type renaming change. This affects
CompleteUpdatePrintSettings() signature and related code.

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

* fix(patch-conflict): update accessibility_ui patch for base::DictValue/ListValue rename

Updated adjust_accessibility_ui_for_electron.patch to use the new
base::DictValue and base::ListValue type names instead of base::Value::Dict
and base::Value::List following Chromium's type renaming change.

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

* chore: update patches

* 6625736: Rename DURABLE_STORAGE to PERSISTENT_STORAGE for consistency | https://chromium-review.googlesource.com/c/chromium/src/+/6625736

* chore: bump chromium in DEPS to 146.0.7653.0

* chore: update patches

* 7000847: add type tag to v8::External for gin_helper function templates

The upstream gin function templates now use v8::ExternalPointerTypeTag
for type safety when using v8::External. Updated Electron's forked
gin_helper function template to use the same kGinInternalCallbackHolderBaseTag
that Chromium's gin uses.

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

* fix(patch-update): extend V8 Object API deprecation patch for Node.js

Extended the existing patch to cover additional files that use
GetAlignedPointerFromInternalField and SetAlignedPointerInInternalField:
- src/stream_base-inl.h
- src/udp_wrap.cc
- src/js_udp_wrap.cc
- src/node_process_methods.cc
- src/node_snapshotable.cc
- src/base_object.cc

These APIs now require an EmbedderDataTypeTag parameter.

Ref: https://chromium-review.googlesource.com/c/v8/v8/+/7087956

* 7000847: add type tag to v8::External calls in shared_texture

Updated v8::External::New and v8::External::Value calls to use the
kExternalPointerTypeTagDefault tag as required by the V8 API change
that deprecates the tagless versions.

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

* 7508687: use ChildProcessId for file permission APIs

The ChildProcessSecurityPolicy::CanReadFile and GrantReadFile APIs
now require ChildProcessId instead of int. Updated to use GetID()
instead of GetDeprecatedID() for these specific calls.

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

* 7000847: add type tag to v8::External calls in callback and osr_converter

The v8::External API now requires an EmbedderPointerTypeTag parameter
for both New() and Value() methods to improve V8 sandbox type safety.

Updated calls in:
- callback.cc: TranslatorHolder constructor and CallTranslator
- osr_converter.cc: OffscreenSharedTextureValue converter

Ref: https://chromium-review.googlesource.com/c/v8/v8/+/7000847

* fixup! 7087956: [api] Promote deprecation of v8::Context and v8::Object API methods

Extended the Node.js patch to cover histogram.cc which also uses
SetAlignedPointerInInternalField and GetAlignedPointerFromInternalField
APIs that now require the EmbedderDataTypeTag parameter.

Ref: https://chromium-review.googlesource.com/c/v8/v8/+/7087956

* chore: bump chromium in DEPS to 146.0.7655.0

* chore: update patches

* 7509043: update WebSpellingMarker type for API change

The upstream Chromium API changed - WebSpellingMarker was moved from a
nested type within WebTextCheckClient to a standalone type in the blink
namespace.

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

* 7498491: update process_id to use OriginatingProcess type

The upstream Chromium API changed - URLLoaderFactoryParams::process_id
was changed from an integer to a union type network::OriginatingProcess
that distinguishes between browser and renderer processes.

- For browser process requests, use OriginatingProcess::browser()
- For renderer process lookups, check !is_browser() and use
  renderer_process().value() to get the child_id

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

* 5710330: Add crash keys to debug NativeWidgetMacNSWindowBorderlessFrame exception | https://chromium-review.googlesource.com/c/chromium/src/+/5710330

5710330 added a new NSNextStepFrame interface extension and
implementations for NativeWidgetMacNSWindowTitledFrame and
NativeWidgetMacNSWindowBorderlessFrame. These use private macOS APIs
that are not available in Mac App Store builds.

* chore: update patches

* chore: bump chromium in DEPS to 146.0.7661.0

* chore: bump chromium in DEPS to 146.0.7663.0

* fix(patch-conflict): update accessibility_ui for string_view API change

Upstream removed redundant std::string(default_api_type) conversion as part
of a string_view optimization cleanup. Updated patch context to match.

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

* fix(patch-conflict): update service process launch options for sandbox API refactor

Upstream removed content/common/sandbox_init_win.cc and
content/public/common/sandbox_init_win.h, moving the functionality directly
into ChildProcessLauncherHelper. Updated patch to call
sandbox::policy::SandboxWin::StartSandboxedProcess directly with the
LaunchOptions pointer instead of going through the removed helper.

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

* fix(patch-conflict): update MAS safestorage for keychain API refactor

Upstream refactored KeychainPassword::GetPassword() to use a new
GetPasswordImpl() helper function with improved error tracking via
base::expected<std::string, OSStatus>. Adapted patch to use the new
GetPasswordImpl with the suffixed account name and handle migration
from legacy accounts through the new API.

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

* chore: update patches

* chore: bump chromium in DEPS to 146.0.7663.0

* fix: base::Value::Dict -> base::DictValue
https://chromium-review.googlesource.com/c/chromium/src/+/7513889

* fix: include new cookie exclusion reason
https://chromium-review.googlesource.com/c/chromium/src/+/7486527

* fix: enable libc++ ABI flag for trivially copyable std::vector<bool>

Required for changes introduced in the following CL
https://chromium-review.googlesource.com/c/chromium/src/+/7513653

* fixup! fix: base::Value::Dict -> base::DictValue https://chromium-review.googlesource.com/c/chromium/src/+/7513889

* fix: spellcheck not working in tests
https://chromium-review.googlesource.com/c/chromium/src/+/7452579

* fix: cookie test failing due to multiple rejection reasons
https://chromium-review.googlesource.com/c/chromium/src/+/7506629

* fix: macos sizing unmaximized window incorrectly
https://chromium-review.googlesource.com/c/chromium/src/+/7487666

Changes to headless mode caused the unmaximized window to subtract
the height of the menubar.

* fix: skip tests for incompatible BoringSSL ML-DSA crypto
https://boringssl-review.googlesource.com/c/boringssl/+/84929

* test: fix pseudonymization registration in utility process on Linux

Ref: 7486913: Pass pseudonymization salt via shared memory at process launch | https://chromium-review.googlesource.com/c/chromium/src/+/7486913

* fix: restore MAS patch-outs

Restores some `#if !IS_MAS_BUILD()` gates dropped in 773054ad59

* fixup! 7508687: use ChildProcessId for file permission APIs

* fixup! fix(patch-conflict): update MAS safestorage for keychain API refactor

* chore: add note about parallel upstream change

* fixup! Merge remote-tracking branch 'origin/main' into roller/chromium/main

* Revert "fixup! 7508687: use ChildProcessId for file permission APIs"

This reverts commit 05c43e4e5d.

The _impl version has the signature, but not the public interface. :oof:

* fixup! fix(patch-conflict): update MAS safestorage for keychain API refactor

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Keeley Hammond <khammond@slack-corp.com>
Co-authored-by: Samuel Maddock <samuelmaddock@electronjs.org>
Co-authored-by: clavin <clavin@electronjs.org>
2026-02-12 12:37:56 -05:00
Samuel Attard
60d35bbaf4 feat: add support for disclaiming utility processes (#49128)
* feat: add support for disclaiming utility processes

* chore: update patches

---------

Co-authored-by: Keeley Hammond <vertedinde@electronjs.org>
2026-02-05 14:37:24 -08:00
Keeley Hammond
59e434a27f refactor: use ComPtr pattern for MSIX to avoid exception handling (#49645)
* Revert "fix: fix Windows MSIX release build errors (#49613)"

This reverts commit 4b5d5f9dd5.

* refactor: use WRL ComPtr pattern for MSIX to avoid exception handling

The MSIX auto-updater code was using C++/WinRT (winrt::* namespace), which requires exception handling (/EHsc). Mixing exception and non-exception handling code in the same binary is problematic at runtime. This commit refactors electron_api_msix_updater.cc to use an upstream Chromium pattern and eliminates the need for special exception handling build flags

* build: import correct packages

* build: consolidate IPackage declarations

* refactor: use IPackageManager/IPackageManager5/IPackageManager9 and
IPackage/IPackage2/IPackage4/IPackage6 interfaces as needed for
different API methods.

Also consolidates duplicate completion handler logic, fixes a bug in
RegisterRestartOnUpdate where the command line string could go out of
scope, and removes unused includes.
2026-02-05 10:42:28 -08:00