Upstream added PipScreenCaptureCoordinatorProxy to ScreenCaptureKitDeviceMac
for Picture-in-Picture window exclusion. Merged this with our existing
non-shareable window filtering logic, combining both excluded window lists
and preserving both features.
Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7153177
Upstream spanification changed kStartToken from a char array to
std::string_view, so now use .length() instead of std::size().
Updated comment to match while preserving our additional data
documentation.
Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7142359
Upstream added `printing/printing_features.h` include for the new PDF
print scaling alignment feature. Updated patch to include both
print_settings.h (Electron's addition) and printing_features.h
(upstream's addition).
Ref: https://chromium-review.googlesource.com/c/chromium/src/+/6703647
Upstream added a new helper function HideLiveCaptionDialogForGestureIfNecessary
as part of gesture handling refactor. This function accesses live_caption_dialog_
which is an incomplete type since Electron disables the live caption feature
by wrapping its include in #if 0.
Wrapped the new function declaration in header and implementation in #if 0
guards to match existing pattern for disabled live caption functionality.
Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7106405
Upstream renamed PluginService methods:
- GetPlugins() -> GetPluginsAsync() (async version takes callback)
- GetPluginsSynchronous() -> GetPlugins() (sync version returns directly)
Electron uses the async version, so updated the call from GetPlugins()
to GetPluginsAsync().
Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7139361
Upstream relaxed the DCHECK(ph_registry) to handle tests using dummy profiles
that lack the required testing factory. Changed to early return with CHECK_IS_TEST().
Our patch already had an early return but updated comment context to match
upstream changes while preserving our behavior (removing CHECK_IS_TEST).
Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7116098
Upstream refactored video picture-in-picture gesture handling to fix issues
caused by multiple sibling layers preventing default gesture event handling.
The OnGestureEvent method was simplified to use HideLiveCaptionDialogForGestureIfNecessary
helper and call views::Widget::OnGestureEvent for default handling.
Updated patch context and preserved #if 0 blocks around live caption code
that Electron disables.
Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7106405
refactor: use std::map::extract() in api::WebRequest
Small readability refactor to api::WebRequest::blocked_requests_:
use extract() when we want to pull a BlockedRequest from the map
and then process it.
In 6399527761 we changed the path strings
that `node_modules.cc` operates on from single-byte to wide strings.
Unfortunately this means that `generic_path()` that the
"fix: ensure TraverseParent bails on resource path exit" patch was
calling was no longer a safe method to call on Windows if the underlying
string has unicode characters in it.
Here we fix it by using `ConvertGenericPathToUTF8` from the Node.js
internal utilities.
* feat(macos): add --disable-geolocation-mac command-line flag
* internally deny geolocation requests if flag set
e
* wrap PermissionRequestHandler instead
* wrap custom handler and deny regardless of response
* Update docs/api/command-line-switches.md
Co-authored-by: Will Anderson <will@itsananderson.com>
* resolving conflicts during rebase
* tests added
* tests added: minor changes
* move IsGeolocationDisabledViaCommandLine inside ElectronPermissionManager as a static member
* test: inject fixturesPath via --boot-eval
* Update shell/browser/electron_permission_manager.cc
Co-authored-by: Robo <hop2deep@gmail.com>
* chore: Fixup after merge
* fixup after merge
---------
Co-authored-by: Will Anderson <will@itsananderson.com>
Co-authored-by: Robo <hop2deep@gmail.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* refactor: make api::WebRequest inherit from gin::Wrappable
refactor: remove unused v8::Isolate* arg from WebRequest ctor
refactor: make electron::api::Session::web_request_ a cppgc::Member<api::WebRequest>
refactor: allocate api::WebRequest on cpp heap
refactor: modify Create(), Find(), and FindOrCreate() to return a WebRequest*
* refactor: ProxyingURLLoaderFactory takes a concrete api::WebRequest instead of a WebRequestAPI
Experimental commit to ensure `ProxyingURLLoaderFactory::web_request_api_`
won't be a dangling pointer.
* chore: fix doc shear
* refactor: use cppgc::WeakPersistent<> in ProxyingURLLoaderFactory
* refactor: make ProxyingURLLoaderFactory::web_request_ const
* refactor: make ProxyingWebSocket::web_request_ a cppgc::WeakPersistent<>
* add a gin::WeakCellFactory to api::WebRequest
* refactor: use a gin::WeakCell for the bound WebRequest argument in HandleOnBeforeRequestResponseEvent()
* chore: update patches
* docs(timelines): Correct v40.0.0 stable release date
On the Electron Timelines tutorial page (/docs/latest/tutorial/electron-timelines), there is a clear typo in the release schedule for v40.0.0.
The table currently lists the dates as:
* Alpha: 2025-Oct-30
* Beta: 2025-Dec-03
* **Stable: 2025-Oct-28**
This is logically incorrect, as the 'Stable' release date (Oct 28) is listed *before* both the 'Alpha' (Oct 30) and 'Beta' (Dec 03) dates for the same version.
This appears to be a copy-paste error, as the 'Stable' date (2025-Oct-28) is identical to the 'Stable' date for the v39.0.0 release in the preceding row.
This commit updates the 'Stable' date for v40.0.0 to its correct value, ensuring the timeline is accurate and logical.
* docs: Update v40.0.0 stable date to 2026-Jan-13 based on Chromium schedule