Compare commits

..

154 Commits

Author SHA1 Message Date
clavin
5672b4377b Try removing patches too 2025-02-26 15:46:00 -07:00
clavin
53059ae28a build: remove unnecessary spellchecker sources 2025-02-26 14:27:59 -07:00
electron-roller[bot]
6c4b5d81dd chore: bump chromium to 135.0.7037.0 (main) (#45811)
* chore: bump chromium in DEPS to 135.0.7036.0

* chore: bump chromium in DEPS to 135.0.7037.0

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
2025-02-26 17:30:11 +01:00
Charles Kerr
7d045dcddb refactor: remove unused gin_helper::WrappableBase::GetWrapper(v8::Isolate*) (#45793)
refactor: remove unused EventEmitter::GetWrapper(v8::Isolate*)
2025-02-25 19:50:09 -06:00
Charles Kerr
199f6d64db perf: avoid redundant method calls in EventEmitter (#45786)
* refactor: move EventEmitter::EmitWithEvent() into EventEmitter::Emit()

* perf: remove redundant calls to isolate() in EventEmitter::Emit()

* perf: remove redundant calls to GetWrapper() in EventEmitter::EmitEvent()

* perf: remove redundant calls to isolate() in EventEmitter::EmitWithoutEvent()

* perf: remove redundant calls to GetWrapper() in EventEmitter::EmitWithoutEvent()

* refactor: remove unused method EventEmitter::isolate()

* refactor: remove unused method EventEmitter::GetWrapper(v8::Isolate*)

* refactor: remove unused method EventEmitter::GetWrapper()

refactor: make the EventEmitter::Base typedef private

* refactor: remove unused typedef EventEmitter::Base

See "Workarounds" section in
https://isocpp.org/wiki/faq/templates#nondependent-name-lookup-members

* refactor: remove redundant gin_helper:: namespace use
2025-02-25 19:20:33 -06:00
dependabot[bot]
b82e4585cf build(deps): bump github/codeql-action from 3.28.9 to 3.28.10 (#45792)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.9 to 3.28.10.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](9e8d0789d4...b56ba49b26)

---
updated-dependencies:
- dependency-name: github/codeql-action
  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>
2025-02-25 15:25:24 -05:00
electron-roller[bot]
9303a3fae9 chore: bump chromium to 135.0.7035.0 (main) (#45764)
* chore: bump chromium in DEPS to 135.0.7028.0

* chore: bump chromium in DEPS to 135.0.7029.0

* chore: bump chromium in DEPS to 135.0.7031.0

* chore: bump chromium in DEPS to 135.0.7033.0

* Split //component/embedder_support:browser_util into multiple targets

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

* chore: update patches

* build: update filenames.libcxx.gni

* 6275531: Enable Float16Array

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

* chore: bump chromium in DEPS to 135.0.7035.0

* chore: update patches

* Move Service Process Host files to a separate folder

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

* Remove NOTREACHED()s after return statements

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

* Move ServiceProcessTracker and UtilityProcessClient into separate files

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

* chore: update filenames.libcxx.gni

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2025-02-25 15:16:15 -05:00
Keeley Hammond
9b6ba1ced1 fix: re-enable MacWebContentsOcclusion feature flag (#45775) 2025-02-25 09:28:09 -08:00
dependabot[bot]
7870ade07a build(deps): bump ossf/scorecard-action from 2.4.0 to 2.4.1 (#45791)
Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.4.0 to 2.4.1.
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](62b2cac7ed...f49aabe0b5)

---
updated-dependencies:
- dependency-name: ossf/scorecard-action
  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>
2025-02-25 08:13:06 +01:00
dependabot[bot]
9699422cd6 build(deps): bump actions/upload-artifact from 4.6.0 to 4.6.1 (#45790)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.6.0 to 4.6.1.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](65c4c4a1dd...4cec3d8aa0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  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>
2025-02-25 08:13:01 +01:00
Charles Kerr
3ee2ec8e4f build: re-enable unsafe buffer checks (#45770) 2025-02-24 20:06:30 -06:00
Charles Kerr
0de1e8e610 refactor: remove unused v8::Isolate* arg from GlobalShortcut constructor (#45773)
refactor: remove unused isolate arg from GlobalShortcut constructor

has not been used since f1a0d5e811 (#22755)
2025-02-24 19:38:20 -06:00
Shelley Vohr
01554f39a8 revert: drag and drop icons on Windows (#45779)
This reverts commit 698cce6707.
2025-02-24 11:35:29 -06:00
Charles Kerr
69eb076bca refactor: do not use AdaptCallbackForRepeating() in electron_api_url_loader.cc (#45771)
refactor: do not use AdaptCallbackForRepeating in electron_api_url_loader.cc
2025-02-24 11:09:01 -05:00
reito
f3259be73c feat: remove osr framerate limit when use shared texture (#45669)
feat: remove framerate limit, if use shared texture osr.
2025-02-24 10:21:46 -05:00
David Sanders
698cce6707 fix: drag and drop icons on Windows (#45767) 2025-02-24 09:54:08 +01:00
Nilay Arya
3eab549369 docs: added upstream doc links for node, chromium, and v8 in default_app (#45392) 2025-02-22 10:15:36 -06:00
Shelley Vohr
3e51ee516e fix: rework and improve legacyMainResolve patch (#45754)
fix: rework and improve legacyMainResolve patch
2025-02-22 10:06:04 -06:00
Sam Maddock
e3f61b465d refactor: move extension APIs to session.extensions (#45597)
refactor: move extensions to session.extensions
2025-02-21 17:36:51 -06:00
Erick Zhao
a63f6143ea docs: clarify navigationhistory offsets (#45616)
* docs: clarify navigationhistory offsets

* "relative offset"
2025-02-21 17:35:17 -06:00
Charles Kerr
2a383e9ddd refactor: use C++20's contains() method (#45742)
* chore: use std::map<>::contains() instead of count() or find()

* chore: use std::map<>::contains() instead of base::Contains()
2025-02-21 17:33:43 -06:00
electron-roller[bot]
612da3ec47 chore: bump chromium to 135.0.7027.0 (main) (#45677)
* chore: bump chromium in DEPS to 135.0.7021.0

* chore: bump chromium in DEPS to 135.0.7023.0

* chore: update patches

* chore: gen-libc++-filenames.js

* [Extensions] Add a BUILD.gn file for the chrome.system.display API.

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

* chore: bump chromium in DEPS to 135.0.7025.0

* fixup! [Extensions] Add a BUILD.gn file for the chrome.system.display API.

* [DevTools] Add support for automatic workspace folders.

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

* Add UseCounter for potential PNA 2.0 breakage

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

* Remove references to NavigationEntry/Controller in Zoom code.

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

* chore: update patches

* Allow DevTools to record UmaHistogramMediumTimes

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

* chore: update patches

* [gpu] Remove unnecessary media_buildflags include

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

* chore: bump chromium in DEPS to 135.0.7027.0

* chore: update patches

* Remove type alias

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

* [Refactor] Make ExtensionRegistrar a browser keyed service.

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

* Remove unused functions

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

* chore: IWYU

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
2025-02-21 14:46:51 -08:00
Keeley Hammond
6248c2436a fix: re-enable synchronous spellcheck on Windows (#45712)
* fix: re-enable synchronous spellcheck on Windows

* revert: fix: empty suggestions with windows platform checker

---------

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>
2025-02-21 14:45:46 -08:00
Charles Kerr
8d58999135 refactor: use base's map utills in WebFrameMain (#45741)
refactor: use base::FindPtrOrNull() in WebFrameMain::FromFrameTreeNodeId()

refactor: use base::FindPtrOrNull() in WebFrameMain::FromFrameToken()
2025-02-21 15:28:00 -06:00
Shelley Vohr
324fc0f62a fix: crash on getUserMedia with invalid chromeMediaSourceId (#45733)
* fix: crash on getUserMedia with invalid chromeMediaSourceId

* test: add a test
2025-02-21 10:17:52 -06:00
Charles Kerr
f62668e2e3 refactor: use base::as_byte_span() in EncodeToken(). (#45723)
This matches the change in upstream's serial_chooser_context.cc.

https://chromium-review.googlesource.com/c/chromium/src/+/5247305
2025-02-20 20:20:16 -05:00
Charles Kerr
a15fa87558 refactor: use base::as_bytes() in WriteAsciiChunk() (#45724)
refactor: use base::as_bytes() in WriteAsciiChunk()

this avoids a reinterpret_cast and a static_cast
2025-02-20 20:19:48 -05:00
Charles Kerr
ceaa0e26c7 refactor: use base::as_string_view() (#45722)
Use `base::as_string_view()` as a safer alternative to `reinterpret_cast`
in a couple of places.

Xref: https://chromium-review.googlesource.com/c/chromium/src/+/5472408
2025-02-20 18:19:36 -06:00
Shelley Vohr
4867b5dc75 refactor: bluetooth in serial chooser when exclusively wireless serial ports are expected (#45671)
* refactor: bluetooth in serial chooser when exclusively wireless serial ports are expected

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

* chore: review feedback
2025-02-20 16:44:35 -06:00
Shelley Vohr
340fdaf511 feat: allow setting roundedCorners on Windows (#45594)
* feat: allow setting roundedCorners on Windows

* Update docs/api/structures/base-window-options.md

Co-authored-by: Will Anderson <will@itsananderson.com>

---------

Co-authored-by: Will Anderson <will@itsananderson.com>
2025-02-20 15:39:12 -05:00
Sam Maddock
5ea885c87f build: skip chromium git cookie on forks (#45735) 2025-02-20 14:38:20 -05:00
Shelley Vohr
d8baceb08c fix: crash loading about:blank in subframes (#45694)
fix: crash loading about:blank in subframes
2025-02-20 12:07:15 -05:00
Charles Kerr
d6f4982522 fix: possible timing issue in utility-process spec (#45690)
This fixture has been calling process.exit() immediately after writing
to stdout and stderr, which the Node.js docs say is risky behavior:

> Calling process.exit() will force the process to exit as quickly as
> possible even if there are still asynchronous operations pending that
> have not yet completed fully, including I/O operations to
> process.stdout and process.stderr.

This fixture's been around for years without problems (AFAIK).
The writes are very small ('hello\n' and 'world') and finish quickly.
But recently I've been testing on a very slow CI machine. There, I see
this spec flaking when it expects stderr to be 'world' but it gets ''.

This PR changes the fixture to wait for stdout & stderr to flush
before calling process.exit().
2025-02-19 23:28:04 -06:00
Sam Maddock
9d558cec5e fix: action.openPopup function missing (#45697) 2025-02-19 18:05:02 -05:00
Shelley Vohr
159e1a42b3 refactor: track downloads by guid (#45675) 2025-02-19 16:49:34 -06:00
Sam Maddock
b50066f420 fix: extension web workers net request failing (#45698) 2025-02-19 13:08:28 -05:00
Milan Burda
22b7403cd1 chore: remove deprecated systemPreferences.isAeroGlassEnabled() (#45563) 2025-02-18 18:59:00 -06:00
Charles Kerr
670e0ca076 chore: disable 'should lock the keyboard' test on macOS (#45681) 2025-02-18 18:00:01 -06:00
Sam Maddock
ee67bc7dcb fix: dangling speculative frames (#45609)
* fix: dangling speculative frames

* harden lifecycle state checks

* feedback

* add const
2025-02-18 17:52:05 -05:00
John Kleinschmidt
ecd7eb36ac build: remove appveyor bake (#45073) 2025-02-18 12:04:47 -08:00
electron-roller[bot]
47572286f3 chore: bump chromium to 135.0.7015.0 (main) (#45500)
* https://chromium-review.googlesource.com/c/chromium/src/+/6230977

* chore: bump chromium to 135.0.7012.0

* chore: update accelerator.patch

Support parsing Ctrl+Alt shortcuts | https://chromium-review.googlesource.com/c/chromium/src/+/6238137

* 6234236: Reapply bindings: Pass CppHeap on Isolate creation | https://chromium-review.googlesource.com/c/chromium/src/+/6234236

* 6234614: [ios blink] Move to use external begin frame source | https://chromium-review.googlesource.com/c/chromium/src/+/6234614

* chore: update chromium/feat_add_streaming-protocol_registry_to_multibuffer_data_source.patch

no manual changes; patch applied with fuzz

* chore: update chromium/build_libc_as_static_library.patch

no manual changes; patch applied with fuzz

* chore: remove chromium/cherry-pick-dd8e2822e507.patch

landed upstream

* 6188884: Grit: Remove output_all_resource_defines from list of valid attributes. | https://chromium-review.googlesource.com/c/chromium/src/+/6188884

* 6226981: [views-ax] Remove View::GetAccessibleNodeData() method | https://chromium-review.googlesource.com/c/chromum/src/+/6226981

* 6214895: [views-ax] Deprecate View::NotifyAccessibilityEvent | https://chromium-review.googlesource.com/c/chromium/src/+/6214895

* 6196494: Remove ImageView::SetImage() with ImageSkia param | https://chromium-review.googlesource.com/c/chromium/src/+/6196494

* 6236267: [cleanup] Remove unused PrinterBasicInfo fields | https://chromium-review.googlesource.com/c/chromium/src/+/6236267

* refactor: remove status, isDefault properties from PrinterInfo

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

* chore: lint

* fixup: added mas bypass to new file added in https://chromium-review.googlesource.com/c/chromium/src/+/6208630 see slack for more context

* chore: node script/gen-libc++-filenames.js

* chore: e patches all

* fix: duplicate crdtp symbols

* chore: update patches

* fixup! [Media Features] Remove launched features

---------

Co-authored-by: alice <alice@makenotion.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
2025-02-18 11:51:27 -05:00
Sam Maddock
6be1151ffc fix: win.closeFilePreview recreates panel when called twice (#45319)
* fix: close quick look during tests on macOS

* use longer delay 🤷

* fix: sharedPreviewPanel being recreated on close

* test: ensure preview panel gets closed
2025-02-17 17:25:19 -05:00
Sam Maddock
c0422d7cc9 refactor: dispatch IPC messages from Session (#45452)
* refactor: dispatch IPC messages from Session

* refactor: move MessageHost to Session
2025-02-17 16:36:28 -05:00
reito
e9ba5876d1 fix: osr stutter fix backport for electron. (#45572) 2025-02-17 22:13:44 +01:00
Alice Zhao
02be7c1185 feat: add excludeUrls and modify urls in WebRequestFilter for better URL filtering (#44692)
* feat: add excludeUrls to web request filter

* refactor: add deprecated field

* test: update tests

* lint: newline

* docs: improve API doc

* fix: add is filter defined property to match all urls

* refactor: remove includeUrls

* refactor: remove typescript binding

* refactor: all_url

* refactor: remove isDefined methods

* refactor: remove comment

* fix: logic

* docs: add to breaking changes
2025-02-17 12:40:47 -08:00
Shelley Vohr
7dfcec931a build: run source cache clean daily (#45652) 2025-02-17 13:57:22 -05:00
John Kleinschmidt
a329024793 build: make sure chromium cookie is set everywhere (#45631) 2025-02-14 13:19:43 -05:00
Robo
137a552641 fix: support for v8.setHeapSnapshotNearHeapLimit api (#45606)
* fix: support for v8.setHeapSnapshotNearHeapLimit api

* docs: add  support
2025-02-14 10:00:39 -06:00
electron-roller[bot]
a841d6484c chore: bump node to v22.14.0 (main) (#45578)
* chore: bump node in DEPS to v22.14.0

* src: move more crypto impl detail to ncrypto dep

https://github.com/nodejs/node/pull/56421

* test: move crypto related common utilities in common/crypto

https://github.com/nodejs/node/pull/56714

* module: add findPackageJSON util

https://github.com/nodejs/node/pull/55412

* module: mark evaluation rejection in require(esm) as handled

https://github.com/nodejs/node/pull/56122

* chore: fixup patch indices

* deps: move inspector_protocol to deps

https://github.com/nodejs/node/pull/56649

* fixup! src: move more crypto impl detail to ncrypto dep

* fixup! deps: move inspector_protocol to deps

* fixup! src: move more crypto impl detail to ncrypto dep

* crypto: fix checkPrime crash with large buffers

https://github.com/nodejs/node/pull/56559

* tls: fix error stack conversion in cryptoErrorListToException()

https://github.com/nodejs/node/pull/56554

* module: add findPackageJSON util

https://github.com/nodejs/node/pull/55412

Our revert of native legacyMainResolve makes this very difficult to make
work, so disable for now.

* lib: add typescript support to STDIN eval

https://github.com/nodejs/node/pull/56359

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2025-02-14 11:05:01 +01:00
Shelley Vohr
2af57c4b6a fix: osr crash on window close (#45573) 2025-02-14 11:01:00 +01:00
Shelley Vohr
47dbab3856 fix: pointer lock permission after focus loss and regain (#45574) 2025-02-14 10:22:13 +01:00
Charles Kerr
a1e4550c9e chore: disable flaky content tracing tests on Linux (#45612) 2025-02-14 10:18:42 +01:00
Charles Kerr
2b8706bf44 chore: change node test timeout from 20m to 30m (#45611) 2025-02-13 17:27:35 -06:00
Shelley Vohr
3a3595f2af build: remove PDF edited saved files patch (#45604) 2025-02-13 14:52:31 -05:00
Shay Molcho
9a2ee763d0 docs: added missing period for consistency and readability (#45333)
Added missing period for consistency and readability

Added a missing period in a specific part of the text to maintain consistency across the document. This ensures a uniform writing style, improves readability, and aligns with the formatting used throughout the content.
2025-02-13 10:55:43 +01:00
Keeley Hammond
237429bb85 build: set chromium cookie on depot tools requests (#45581)
* build: set chromium cookie on depot tools requests

* build: correct secrets syntax

* build: handle windows cmd
2025-02-12 17:44:43 +01:00
Will Anderson
50d1c803dd chore: remove var declarations from DEPS that no longer have any effect (#45535)
* chore: Remove checkout_google_benchmark var that no longer has any effect

This variable stopped having any effect in https://chromium-review.googlesource.com/c/chromium/src/+/4322306

It was removed from Chromium entirely in https://chromium-review.googlesource.com/c/chromium/src/+/4339138

* chore: remove checkout_oculus_sdk and checkout_libaom from DEPS
2025-02-12 10:51:11 +01:00
John Kleinschmidt
0d3e34d0be test: disable unexpectedly quit dialog on macOS (#45553)
* test: disable unexpectedly quit dialog on macOS

* test: take screenshot before keyboard lock test

* Revert "test: take screenshot before keyboard lock test"

This reverts commit 3ba5c6984f.
2025-02-11 21:08:38 -05:00
Charles Kerr
aa06b065c0 chore: bump chromium to 134.0.6998.10 (main) (#45564)
* chore: bump chromium to 134.0.6992.0

* chore: add BrowserProcessImpl::CreateGlobalFeaturesForTesting() stub

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

Remove GlobalFeatures from TestingBrowserProcess::Init

* chore: bump chromium to 134.0.6994.0

* 6208630: Mac sandbox: don't use protobuf for policy serialization | https://chromium-review.googlesource.com/c/chromium/src/+/6208630

* [PDF] Remove HasUnsupportedFeature Mojo interface

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

* 6217444: Remove scoped_gdi_object.h type aliases. | https://chromium-review.googlesource.com/c/chromium/src/+/6217444

* chore: bump chromium to 134.0.6998.10

* 6221378: Revert [OBC] Exclude Aliasing Cookies in FilterCookiesWithOptions() | https://chromium-review.googlesource.com/c/chromium/src/+/6221378

* Update ExtensionPrefs::GetDisableReasons to return DisableReasonSet

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

change copied from 6218840 extensions/shell/browser/shell_extension_loader.cc

* 6218402: Typemap ui.gfx.DXGIHandle <=> gfx::DXGIHandle | https://chromium-review.googlesource.com/c/chromium/src/+/6218402

* chore: disable flaky contentTracing test

not new to this roll; it is happening in main as well

* fixup! chore: disable flaky contentTracing test

---------

Co-authored-by: alice <alice@makenotion.com>
2025-02-11 17:26:39 -06:00
Felix Rieseberg
9f47c9a051 feat: Restore webContents navigation history and page state (#45433)
* feat: Working navigationHistory.restore with just title/url

* feat: Restore page state, too

* chore: Docs, lint, tests

* Implement feedback

* More magic

* Make _awaitNextLoad truly private

* Implement API group feedback

* One more round of feedback
2025-02-11 15:09:38 -08:00
Will Anderson
6fdfca6e49 build: make gen-libc++-filenames.js produce the same results on Windows (#45556) 2025-02-11 12:56:05 +01:00
dependabot[bot]
196352bf0b build(deps): bump github/codeql-action from 3.28.8 to 3.28.9 (#45561)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.8 to 3.28.9.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](dd746615b3...9e8d0789d4)

---
updated-dependencies:
- dependency-name: github/codeql-action
  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>
2025-02-11 11:39:29 +01:00
Robo
46d316692d fix: asan build on macOS (#45541)
* fix: asan build on macOS

* chore: fix build
2025-02-11 15:04:07 +09:00
Josh Jancourtz
2f288bc7cc docs: fix grammar in preload tutorial summary (#45522) 2025-02-10 16:15:32 -05:00
Calvin
f5025b6246 fix: avoid IPC for renderer webFrame.getZoom... APIs (#45499)
* fix: avoid IPC for renderer `webFrame.getZoom...` APIs

* Remove `DoGetZoomLevel` IPC

* Fix synchronous behavior & nullptr deref

* Use local root
2025-02-10 16:09:11 -05:00
Milan Burda
e055ce7c39 chore: deprecate systemPreferences.isAeroGlassEnabled() (#45434) 2025-02-10 15:17:07 -05:00
John Kleinschmidt
14fe0932f0 test: make sure test window is on top for focus tests (#45435) 2025-02-10 13:40:27 -05:00
dependabot[bot]
3ba85878a5 build(deps): bump github/codeql-action from 3.28.6 to 3.28.8 (#45453)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.6 to 3.28.8.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](17a820bf2e...dd746615b3)

---
updated-dependencies:
- dependency-name: github/codeql-action
  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>
2025-02-10 19:40:01 +01:00
Keeley Hammond
70168c8bdc fix: fix mksnapshot gen/v8 path (#45488)
* fix: fix mksnapshot gen/v8 path

* build: use 7z compression

* build: unzip mksnapshot on Windows and update zip

* chore: escape backslashes

* chore: try another attempt

* chore: remove rmdir for now

---------

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
2025-02-10 10:21:29 -05:00
Sam Maddock
e4cd162433 docs: fix powerMonitor event types (#45518)
* fix: powerMonitor event types

* fix: thermal-state-change missing Returns
2025-02-10 10:13:11 -05:00
Calvin
4085185e2d docs: transactions-updated event type (#45527)
fix: `transactions-updated` event type
2025-02-10 10:12:17 -05:00
Shelley Vohr
a141f68c83 refactor: use node::tracing::Agent() directly (#45489)
refactor: use node::tracing::Agent()
2025-02-09 21:36:42 +01:00
Shelley Vohr
9199d5c610 fix: window maximizing with Mica (#45456)
* fix: window maximizing with Mica

* Fix rounded corners after restore
2025-02-07 15:00:36 -05:00
michal-pichlinski-openfin
96460becf9 fix: Update widget visibility in NativeWindowMac::ShowInactive (#45427)
When using `views::WebView` on macOS `NativeWidgetMacNSWindowHost`
contains a layer and compositor responsible for drawing web contents.
To trigger drawing `NativeWidgetMacNSWindowHost::OnVisibilityChanged`
needs to be called and `[NSWindow orderFrontRegardless]` does not trigger
`[NSWindow orderWindow:relativeTo:]` which can change
`NativeWidgetMacNSWindowHost` visiblity with stack:
```
views::NativeWidgetMacNSWindowHost::OnVisibilityChanged(bool)
remote_cocoa::NativeWidgetNSWindowBridge::OnVisibilityChanged()
-[ViewsNSWindowDelegate onWindowOrderChanged:]
-[NativeWidgetMacNSWindow orderWindow:relativeTo:]
```
`views::Widget` has method for showing inactive window:
`views::Widget::ShowInactive` which triggers
`NativeWidgetMacNSWindowHost::OnVisibilityChanged` with stack:
```
views::NativeWidgetMacNSWindowHost::OnVisibilityChanged(bool)
remote_cocoa::NativeWidgetNSWindowBridge::SetVisibilityState(remote_cocoa::mojom::WindowVisibilityState)
views::NativeWidgetMacNSWindowHost::SetVisibilityState(remote_cocoa::mojom::WindowVisibilityState)
views::NativeWidgetMac::Show(ui::mojom::WindowShowState, gfx::Rect const&)
views::Widget::ShowInactive() + 168
```
However this call seems to be insufficient to bring window to front,
therefore `[NSWindow orderFrontRegardless]` still needs to be called.
Calling `views::Widget::ShowInactive` ensures that all logic related to
showing Chromium widget will be properly executed, but onfortunately it
does not call `[NSWindow orderWindow:relativeTo:]` which is used to
disabling headless mode by the `ElectronNSWindow`, therefore we need to
trigger it manually through exposed `[ElectronNSWindow disableHeadlessMode]`.

Fixes: #45415
2025-02-07 11:31:08 -08:00
Charles Kerr
d7c6fb8250 refactor: follow upstream's suggestions on when to use EmptyGURL() (#45498)
- Prefer GURL() when we want to return a non-reference empty URL.

- In ServiceWorkerMain::GetStorageKey(), use a reference instead
  of instantiating a new temporary GURL.

From url/gurl.h:

> // Returns a reference to a singleton empty GURL. This object is for
> // callers who return references but don't have anything to return in
> // some cases. If you just want an empty URL for normal use, prefer
> // GURL().
2025-02-07 13:58:31 -05:00
Charles Kerr
3db691804b chore: bump chromium 134.0.6990.0 (#45507)
* chore: update feat_add_support_for_missing_dialog_features_to_shell_dialogs.patch

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

Partially upstreamed by @codebytere

* chore: e patches all
2025-02-07 10:25:46 -06:00
David Sanders
4512b2b5c4 chore: remove remaining references to AppVeyor (#45339) 2025-02-07 12:57:36 +01:00
John Kleinschmidt
7bde100a1a build: make sure there is at least 35GB free for source cache (#45501)
build: make sure there is at least 35GB free for cache
2025-02-07 12:03:38 +01:00
Kavindu Udara
d0110d897d docs: remove width and height params (#45331)
remove width and height params
2025-02-07 11:42:16 +01:00
Charles Kerr
ef34892a76 chore: bump chromium 134.0.6989.0 (#45506)
* chore: bump chromium to 134.0.6989.0

* chore: update patches/chromium/cherry-pick-dd8e2822e507.patch

* chore: e patches all
2025-02-07 10:00:09 +01:00
Charles Kerr
67f5ac5bbc fix: RenderFrameHost nullptr dereference (#45487)
* fix: add nullptr tests before using render_frame_

* refactor: extract-method HasRenderFrame()
2025-02-06 22:02:57 -06:00
Milan Burda
517935cd55 refactor: only pass v8::Context to gin_helper::MicrotasksScope constructor (#45484)
refactor: forward v8::Context to v8::MicrotasksScope constructor
2025-02-07 10:44:19 +09:00
Samuel Attard
326957009a chore: cherry-pick dd8e2822e507 from chromium (#45495) 2025-02-06 14:33:42 -08:00
electron-roller[bot]
213165a467 chore: bump chromium to 134.0.6988.0 (main) (#45334)
* chore: bump chromium in DEPS to 134.0.6976.0

* chore: update mas_avoid_private_macos_api_usage.patch.patch
https://chromium-review.googlesource.com/c/chromium/src/+/6171046
process_info_mac.cc -> process_info_mac.mm

* chore: update build_do_not_depend_on_packed_resource_integrity.patch
https://chromium-review.googlesource.com/c/chromium/src/+/6196857

* chore: update feat_add_support_for_missing_dialog_features_to_shell_dialogs.patch
https://chromium-review.googlesource.com/c/chromium/src/+/6182296
https://chromium-review.googlesource.com/c/chromium/src/+/6183404
https://chromium-review.googlesource.com/c/chromium/src/+/6187853

A lot changed in the upstream implementation. There's a good chance I got
this wrong as threading has changed and moved some variables into globals.

* chore: remove build_remove_vr_directx_helpers_dependency.patch
https://chromium-review.googlesource.com/c/chromium/src/+/6186102
This landed upstream

* chore: e patches all

* chore: update net::CookieInclusionStatus::ExclusionReason enum
https://chromium-review.googlesource.com/c/chromium/src/+/6183252
https://chromium-review.googlesource.com/c/chromium/src/+/6185544

* chore: update content::WebAuthenticationDelegate import
https://chromium-review.googlesource.com/c/chromium/src/+/6189769

* Revert "chore: disable focus handling test due to win32/ia32 regression"

This reverts commit 1a57ba5d59.

* chore: bump chromium in DEPS to 134.0.6978.0

* chore: bump chromium in DEPS to 134.0.6980.0

* chore: bump chromium in DEPS to 134.0.6982.0

* chore: bump chromium in DEPS to 134.0.6984.0

* 6196281: Allow direct embedder IsPdfInternalPluginAllowedOrigin() interaction
https://chromium-review.googlesource.com/c/chromium/src/+/6196281

* 6196283: Delete PdfInternalPluginDelegate
https://chromium-review.googlesource.com/c/chromium/src/+/6196283

* chore: update patches

* chore: bump chromium in DEPS to 134.0.6986.0

* chore: update patches

* 6205762: Support option to use window.showSaveFilePicker() in PDF attachment code
https://chromium-review.googlesource.com/c/chromium/src/+/6205762

See also:
* https://issues.chromium.org/issues/373852607
* 5939153: [PDF] Add PdfUseShowSaveFilePicker feature flag | https://chromium-review.googlesource.com/c/chromium/src/+/5939153
* 6205761: Delete spurious Ink-specific code in pdf_viewer.ts | https://chromium-review.googlesource.com/c/chromium/src/+/6205761

* 6209609: Remove WebVector: Automatic changes
https://chromium-review.googlesource.com/c/chromium/src/+/6209609

* 6205488: UI: make QT5 optional
https://chromium-review.googlesource.com/c/chromium/src/+/6205488

* 6178281: Rename pak files from branding strings
https://chromium-review.googlesource.com/c/chromium/src/+/6178281

* fixup! 6209609: Remove WebVector: Automatic changes https://chromium-review.googlesource.com/c/chromium/src/+/6209609

* 6193249: Switch from safe_browsing::EventResult to enterprise_connectors:EventResult
https://chromium-review.googlesource.com/c/chromium/src/+/6193249

* 6197457: Remove Pause/ResumeReadingBodyFromNet IPCs
https://chromium-review.googlesource.com/c/chromium/src/+/6197457

* 6191230: Record total time spent on a picture in picture window
https://chromium-review.googlesource.com/c/chromium/src/+/6191230

* chore: bump chromium in DEPS to 134.0.6988.0

* chore: update patches

* 6215440: Remove base/ranges/.
https://chromium-review.googlesource.com/c/chromium/src/+/6215440

* Disable unsafe buffers error

Not sure what changed, but we're now seeing unsafe buffer errors in Chromium code, at least when using reclient. Will update this comment if we find out the cause.

* 6187853: SelectFileDialogLinuxPortal: Use dbus_xdg::Request and DbusType
https://chromium-review.googlesource.com/c/chromium/src/+/6187853

* fix `setDisplayMediaRequestHandler` test

Given how this test is written, I would expect this assertion to be false. It seems the oppositue was true before, but that was also acknowledged to be suprising. Seems that the underlying implementation is now fixed and works as expected.

* fixup! 6187853: SelectFileDialogLinuxPortal: Use dbus_xdg::Request and DbusType https://chromium-review.googlesource.com/c/chromium/src/+/6187853

* chore: udpate patches

* Multiple PRS: https://chromium-review.googlesource.com/c/chromium/src/+/6185544 | https://chromium-review.googlesource.com/c/chromium/src/+/6183252

* fix: cast enum class to numeric type

* fix: add 1 to MAX_EXCLUSION_REASON because enum values are zero-based, and we want the total count of reasons.

* Reapply "chore: disable focus handling test due to win32/ia32 regression"

This reverts commit 760b1a519b.

* refactor: use ExclusionReasonBitset::kValueCount for size

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>
Co-authored-by: clavin <clavin@electronjs.org>
Co-authored-by: alice <alice@makenotion.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2025-02-06 15:30:54 -05:00
David Sanders
3dad07f338 test: dump Electron process PID to path if environment variable set (#45481) 2025-02-06 09:15:10 -06:00
Anh Le
6adc737a89 docs: use correct headings in tutorial/security.md (#45397) 2025-02-06 11:16:24 +01:00
max54nj
c0282eb9c8 docs: style fixes (#45458)
* docs: fix code field

* docs: add missing space
2025-02-05 15:10:07 -05:00
Maria Alejandra Arias Frontanilla
471b1a873d fix: fix typo in docs why-electron.md (#45437) 2025-02-05 09:26:47 -06:00
Shelley Vohr
aee8ea8b10 fix: WCO not working with some window configurations (#45422) 2025-02-05 12:48:51 +01:00
Shelley Vohr
57cf4fc846 fix: legacyMainResolve respecting permission model (#45421)
fix: legacyMainResolve respecting permission model
2025-02-05 12:48:34 +01:00
Charles Kerr
9fe12cd01b fix: handle exclude aliasing in InclusionStatusToString() (#45454)
* refactor: use MakeFixedFlatMap() in InclusionStatusToString()

* fix: add log message for EXCLUDE_ALIASING

refactor: add static_assert() to ensure our messages stay
in sync with the CookieInclusion reasons in net/cookies/
2025-02-05 12:48:11 +01:00
Shelley Vohr
6486ce8191 build: remove debugger agent timeout patch (#45457) 2025-02-05 12:47:54 +01:00
Robo
bec6ddda70 feat: route deprecated sync clipboard read through permission checks (#45377)
* feat: route deprecated clipboard commands through permission checks

* docs: address review feedback

* fix: enable checks for child windows
2025-02-05 15:13:29 +09:00
Shelley Vohr
e9d5eeb118 build: try removing embedder exception patch (#45429) 2025-02-04 19:39:20 +01:00
Keeley Hammond
c147e4fa81 build: add win toolchain for release builds (#45380)
* build: add win toolchain for release builds

* build: fix installed_software.json script

* chore: run pwsh script within src

* build: fixup uploader arch
2025-02-03 22:06:01 -08:00
Niklas Wenzel
1d27a27813 docs: document deletion of databases directory (#45412) 2025-02-03 16:28:44 -05:00
Niklas Wenzel
d3bead5e0e docs: mention C++20 requirement in breaking changes document (#45413)
* docs: mention C++20 requirement in breaking changes document

* chore: fix linter issue
2025-02-03 13:19:26 -08:00
David Sanders
9f1bb531ba build: always use python3 in script/lib/get-version.js (#45400)
build: always use python3 in script/lib/get-version.js
2025-02-03 16:13:36 -05:00
Shelley Vohr
9971087678 build: remove outdated Node.js serdes patch (#45401)
build: remove outdates Node.js serdes patch
2025-02-03 14:09:02 +01:00
Shelley Vohr
e7fa5c709c fix: incorrect WCO tooltip in RTL (#45405) 2025-02-03 10:50:50 +01:00
Shelley Vohr
7a1d410e0a fix: default path not working on KDE Linux (#45402) 2025-02-03 09:49:48 +01:00
Sam Maddock
e2a7981dd3 feat: view.getVisible() (#44999)
* feat: view.getVisible()

* test: visible apis

* docs: clarify getVisible
2025-01-31 13:27:16 -05:00
Sam Maddock
26da3c5d6e feat: service worker preload scripts for improved extensions support (#44411)
* feat: preload scripts for service workers

* feat: service worker IPC

* test: service worker preload scripts and ipc
2025-01-31 09:32:45 -05:00
Shelley Vohr
bc22ee7897 build: fix slack-github-action for backports (#45388)
build: fix slack-github-action for backports
2025-01-31 10:29:50 +01:00
Shelley Vohr
784201ecee build: try removing Read/WriteBarrier patch (#45393)
build: try removing Read/WriteBarrier patch
2025-01-31 10:29:34 +01:00
Shelley Vohr
6e72cbb5e0 fix: multiple directory selection on Linux (#45373) 2025-01-30 16:34:44 +01:00
Shelley Vohr
233b99a0a8 chore: update chrome.scripting.execute logic (#45369)
chore: update chrome.scripting.execute logic

Refs:
- https://chromium-review.googlesource.com/c/chromium/src/+/6123601
- https://chromium-review.googlesource.com/c/chromium/src/+/6142377
- https://chromium-review.googlesource.com/c/chromium/src/+/6173554
2025-01-30 12:56:44 +01:00
Shelley Vohr
43e328f363 chore: update pdf_viewer_private.idl (#45370)
chore: update pdf_viewer_private.idl

- https://chromium-review.googlesource.com/c/chromium/src/+/6160067
2025-01-30 11:03:27 +01:00
John Kleinschmidt
8543820d98 build: fixup concurrent builds on protected branches (#45355) 2025-01-29 16:47:25 -05:00
electron-roller[bot]
93f4a93e12 chore: bump node to v22.13.1 (main) (#45307)
* chore: bump node in DEPS to v22.13.1

* chore: fixup GN build file

* https://github.com/nodejs/node/pull/55529
* https://github.com/nodejs/node/pull/55798
* https://github.com/nodejs/node/pull/55530

* module: simplify --inspect-brk handling

https://github.com/nodejs/node/pull/55679

* src: fix outdated js2c.cc references

https://github.com/nodejs/node/pull/56133

* crypto: include openssl/rand.h explicitly

https://github.com/nodejs/node/pull/55425

* build: use variable for crypto dep path

https://github.com/nodejs/node/pull/55928

* crypto: fix RSA_PKCS1_PADDING error message

https://github.com/nodejs/node/pull/55629

* build: use variable for simdutf path

https://github.com/nodejs/node/pull/56196

* test,crypto: make crypto tests work with BoringSSL

https://github.com/nodejs/node/pull/55491

* fix: suppress clang -Wdeprecated-declarations in libuv

https://github.com/libuv/libuv/pull/4486

* deps: update libuv to 1.49.1

https://github.com/nodejs/node/pull/55114

* test: make test-node-output-v8-warning more flexible

https://github.com/nodejs/node/pull/55401

* [v22.x] Revert "v8: enable maglev on supported architectures"

https://github.com/nodejs/node/pull/54384

* fix: potential WIN32_LEAN_AND_MEAN redefinition

https://github.com/c-ares/c-ares/pull/869

* deps: update nghttp2 to 1.64.0

https://github.com/nodejs/node/pull/55559

* src: provide workaround for container-overflow

https://github.com/nodejs/node/pull/55591

* build: use variable for simdutf path

https://github.com/nodejs/node/pull/56196

* chore: fixup patch indices

* fixup! module: simplify --inspect-brk handling

* lib: fix fs.readdir recursive async

https://github.com/nodejs/node/pull/56041

* lib: avoid excluding symlinks in recursive fs.readdir with filetypes

https://github.com/nodejs/node/pull/55714/

This doesn't currently play well with ASAR - this should be fixed in a follow up

* test: disable CJS permission test for config.main

This has diverged as a result of our revert of
src,lb: reducing C++ calls of esm legacy main resolve

* fixup! lib: fix fs.readdir recursive async

* deps: update libuv to 1.49.1

https://github.com/nodejs/node/pull/55114

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2025-01-29 15:41:00 -05:00
Robo
ecd5d0a3a4 fix: crash in gin::wrappable::secondweakcallback (#45368) 2025-01-29 10:20:37 -08:00
Niklas Wenzel
8cf2e46c1f docs: reference security guide in ipcRenderer.on docs (#45325) 2025-01-29 12:50:20 +01:00
dependabot[bot]
50387043d1 build(deps): bump github/codeql-action from 3.28.1 to 3.28.6 (#45351)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.1 to 3.28.6.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](b6a472f63d...17a820bf2e)

---
updated-dependencies:
- dependency-name: github/codeql-action
  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>
2025-01-29 07:01:15 +01:00
Keeley Hammond
e715607178 build: use Python311 exe (#45360)
build: yse Python311 exe
2025-01-28 11:59:04 -08:00
Milan Burda
0e388bce3e build: add NSPrefersDisplaySafeAreaCompatibilityMode = false to Info.plist (#45318)
build: add NSPrefersDisplaySafeAreaCompatibilityMode = false to Info.plist
2025-01-28 14:58:48 +01:00
dependabot[bot]
9457a56607 build(deps): bump actions/setup-node from 4.1.0 to 4.2.0 (#45353)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.1.0 to 4.2.0.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](39370e3970...1d0ff469b7)

---
updated-dependencies:
- dependency-name: actions/setup-node
  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>
2025-01-28 14:57:39 +01:00
dependabot[bot]
f9553a35d5 build(deps): bump actions/stale from 9.0.0 to 9.1.0 (#45354)
Bumps [actions/stale](https://github.com/actions/stale) from 9.0.0 to 9.1.0.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](28ca103628...5bef64f19d)

---
updated-dependencies:
- dependency-name: actions/stale
  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>
2025-01-28 14:56:34 +01:00
dependabot[bot]
e2ef160beb build(deps): bump actions/checkout from 4.1.6 to 4.2.2 (#45352)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.6 to 4.2.2.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4.1.6...11bd71901bbe5b1630ceea73d27597364c9af683)

---
updated-dependencies:
- dependency-name: actions/checkout
  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>
2025-01-28 10:48:35 +01:00
David Lönnhager
ae56a03e33 fix: crash parsing CLSID in shell.readShortcutLink() (#45195)
* fix: crash parsing CLSID in shell.readShortcutLink

* fix: ignore clsid if it could not be set
2025-01-27 15:22:56 -05:00
Keeley Hammond
4629e449a9 build: remove generate-sas-token (#45347) 2025-01-27 12:21:53 -08:00
Keeley Hammond
74c6669a8e build: use windows builders for win-publish (#45340) 2025-01-24 14:43:38 -08:00
Niklas Wenzel
5c67cd9150 docs: fix broken code in drag and drop example (#45332) 2025-01-24 13:28:30 -08:00
Niklas Wenzel
f66a0c2acf build: create maintainer issue template and disable blank issues (#45309)
* build: create maintainer task issue template and disable blank issues

* Implement review feedback by @dsanders11

* Rename issue template file
2025-01-24 13:28:05 -08:00
Sam Maddock
a467d0684e feat: ServiceWorkerMain (#45232)
* feat: ServiceWorkerMain

* refactor: disconnect remote

* handle version_info_ nullptr case

* initiate finish request when possible and enumerate errors

* explicit name for test method

* oops

* fix: wait for redundant version to stop before destroying

* docs: clarify when undefined is returned

* chore: remove extra semicolons
2025-01-24 08:33:44 -05:00
electron-roller[bot]
75eac86506 chore: bump chromium to 134.0.6968.0 (main) (#45172)
* chore: bump chromium in DEPS to 134.0.6948.0

* chore: update can_create_window.patch

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

no patch code changes, but had to manually apply due to upstream context shear

* chore: update proxy_config_monitor.patch

no manual changes; patch applied with fuzz 2

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

* chore: update build_add_electron_tracing_category.patch

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

* chore: update adjust_accessibility_ui_for_electron.patch

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

no patch code changes, but had to manually apply due to upstream context shear

* chore: e patches all

* chore: use fully-qualified path for all.gn

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

* chore: do not use a variable when assigning rtc_use_h264

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

* Move GlobalShortcutListenerLinux to //ui/base

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

* [MPArch Guest View] Make WebPreferences queried per frame tree root

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

* [Status Icons] Allow vector resources

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

* [Extensions] Move MatchOriginAsFallbackBehavior to Mojom

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

* Remove StrongAlias::Hasher

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

* Rename text-change and select-change methods and related stuff

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

* [Code Health] Remove stale feature EnableWebUsbOnExtensionServiceWorker

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

* [Extensions Cleanup] Move creation of tab-based ports to factory method

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

* refactor: add StatusIconGtk::SetIcon()

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

copied from chrome/browser/status_icons/status_icon.cc

* refactor: add TrayIconLinux::GetIcon()

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

* chore: update feat_allow_usage_of_sccontentsharingpicker_on_supported_platforms.patch

remove unused filter_ field

* chore: bump chromium in DEPS to 134.0.6950.0

* chore: bump chromium in DEPS to 134.0.6952.0

* chore: bump chromium in DEPS to 134.0.6954.0

* chore: bump chromium in DEPS to 134.0.6956.0

* chore: update Chromium patches

* 6165749: Check scanout support in RenderableGpuMemoryBufferPool | https://chromium-review.googlesource.com/c/chromium/src/+/6165749

* 6106730: [Win] Use DXGI swapchains and DCOMP visuals in software mode | https://chromium-review.googlesource.com/c/chromium/src/+/6106730

* chore: update patches

* chore: bump chromium in DEPS to 134.0.6958.0

* chore: bump chromium in DEPS to 134.0.6960.0

* chore: update chromium patches

* 6168371: Remove extensions GlobalShortcutListener wrapper | https://chromium-review.googlesource.com/c/chromium/src/+/6168371

* chore: update patches

* 6161637: WebUI: Leverage build_webui() in chrome://translate-internals | https://chromium-review.googlesource.com/c/chromium/src/+/6161637

* chore: bump chromium in DEPS to 134.0.6962.0

* 6177329: Remove policy.used_policy_certificates pref on ChromeOS | https://chromium-review.googlesource.com/c/chromium/src/+/6177329

* 6180524: Simplify logic in components/os_crypt/sync/BUILD.gn | https://chromium-review.googlesource.com/c/chromium/src/+/6180524

* 6144831: Enforce --disallow-v8-feature-flag-overrides in the renderer | https://chromium-review.googlesource.com/c/chromium/src/+/6144831

* chore: update patches

* chore: bump chromium in DEPS to 134.0.6964.0

* 6181010: Ensure busy cursor does not show via LaunchWithoutSandbox | https://chromium-review.googlesource.com/c/chromium/src/+/6181010

* chore: update patches

* chore: bump chromium in DEPS to 134.0.6966.0

* 6180598: [api] Remove Reallocate | https://chromium-review.googlesource.com/c/v8/v8/+/6180598

* 6170781: [Refactor] Move UninstallExtension to ExtensionRegistrar. | https://chromium-review.googlesource.com/c/chromium/src/+/6170781

* chore: update filenames.libcxx.gni

* 6168207: cdm: Remove widevine_cdm_version.h | https://chromium-review.googlesource.com/c/chromium/src/+/6168207

* chore: bump chromium in DEPS to 134.0.6968.0

* 6030552: [macOS] Allow using vibrancy with NativeWidgetNSWindowBridge | https://chromium-review.googlesource.com/c/chromium/src/+/6030552

* fix: use explicit copy to replace realloc impl

https://chromium-review.googlesource.com/c/v8/v8/+/6180598
https://issues.chromium.org/issues/331326406

As per recommendation, "File an issue with Node to explicitly copy,because they copy under the hood anyway"

* fixup! 6106730: [Win] Use DXGI swapchains and DCOMP visuals in software mode | https://chromium-review.googlesource.com/c/chromium/src/+/6106730

* fix: undefine win32 StrCat
https://chromium-review.googlesource.com/c/chromium/src/+/6172292

* fix: //device/vr:directx_helpers breaking the build
https://chromium-review.googlesource.com/c/chromium/src/+/6064548

Upstreamed in https://chromium-review.googlesource.com/c/chromium/src/+/6186102

* fix: avoid calling ui::Layer::SetFillsBoundsOpaquely
https://chromium-review.googlesource.com/c/chromium/src/+/6175787

The layer opacity is determined by the background color's alpha value

* fix: build with proprietary_codecs

The explicit setting of rtc_use_h264 is no longer needed since
https://webrtc-review.googlesource.com/c/src/+/62380

* fix: increase empty trace file size threshold

https://chromium-review.googlesource.com/c/chromium/src/+/6176642
Traces now contain a net-constants property to allow them to be converted to a net log.
These contain ~1240 new properties with formatted JSON data.

* fix: node tests missing resource management globals
https://chromium-review.googlesource.com/c/chromium/src/+/6174695

* fixup! fix: use explicit copy to replace realloc impl

* chore: disable focus handling test due to win32/ia32 regression

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: Keeley Hammond <khammond@slack-corp.com>
Co-authored-by: VerteDinde <vertedinde@electronjs.org>
Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>
Co-authored-by: Samuel Maddock <samuelmaddock@electronjs.org>
2025-01-23 23:07:43 -05:00
Sam Maddock
996477152d feat: contextBridge.executeInMainWorld (#45229) 2025-01-23 21:12:46 -05:00
Sam Maddock
e09577b123 feat: redesign preload APIs (#45230)
* feat: redesign preload APIs

* docs: remove service-worker mentions for now

* fix lint

* remove service-worker ipc code

* add filename

* fix: web preferences preload not included

* fix: missing common init

* fix: preload bundle script error
2025-01-23 21:12:23 -05:00
Felix Rieseberg
26d228ccfe docs: Add note about directly exposing Electron APIs in preload (#45241)
* docs: Add note about directly exposing Electron APIs in preload

* Implement feedback
2025-01-23 13:59:00 -08:00
Keeley Hammond
aafb1ba72c build: migrate Windows release builds to GHA (#45137)
* build: migrate release builds to GHA

* build: alter CI jobs release script
2025-01-23 14:10:24 -05:00
Charles Kerr
db7ef90159 chore: better logging if Node initialization fails (#45286)
feat: better logging if Node initialization fails
2025-01-23 08:55:28 -06:00
electron-roller[bot]
863faea542 chore: bump node to v22.11.0 (main) (#44530)
* chore: bump node in DEPS to v22.11.0

* src: move evp stuff to ncrypto

https://github.com/nodejs/node/pull/54911

* crypto: add Date fields for validTo and validFrom

https://github.com/nodejs/node/pull/54159

* module: fix discrepancy between .ts and .js

https://github.com/nodejs/node/pull/54461

* esm: do not interpret "main" as a URL

https://github.com/nodejs/node/pull/55003

* src: modernize likely/unlikely hints

https://github.com/nodejs/node/pull/55155

* chore: update patch indices

* crypto: add validFromDate and validToDate fields to X509Certificate

https://github.com/nodejs/node/pull/54159

* chore: fixup perfetto patch

* fix: clang warning in simdjson

* src: add receiver to fast api callback methods

https://github.com/nodejs/node/pull/54408

* chore: fixup revert patch

* fixup! esm: do not interpret "main" as a URL

* fixup! crypto: add Date fields for validTo and validFrom

* fix: move ArrayBuffer test patch

* src: fixup Error.stackTraceLimit during snapshot building

https://github.com/nodejs/node/pull/55121

* fix: bad rebase

* chore: fixup amaro

* chore: address feedback from review

* src: revert filesystem::path changes

https://github.com/nodejs/node/pull/55015

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2025-01-22 12:16:26 -05:00
Shelley Vohr
5aabb6bec5 fix: potential crash in chrome.tabs.update() (#45276)
fix: potential crash in chrome.tabs.update()
2025-01-22 10:02:29 -06:00
dependabot[bot]
5e05dff949 build(deps): bump actions/upload-artifact from 4.5.0 to 4.6.0 (#45274)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.5.0 to 4.6.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](6f51ac03b9...65c4c4a1dd)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  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>
2025-01-22 12:29:23 +01:00
Maksim Sisov
3ea623364b feat: support global shortcuts via GlobalShortcutsPortal feature with ozone/wayland (#45171)
* fix: backport patch to fix systemd unit activation in Chromium

This backports a patch from Chromium, which fixes systemd unit
activation. That is, a globalShortcuts feature that Chromium has
needs to create a systemd unit and rename it properly. Portal's
global shortcuts uses that name afterwards to map the app with
the shortcuts bound. However, there might be a race between
Chromium binding shortcuts and renaming the unit.

This is a first step to add Portal's globalShortcuts to
Electron.

* feat: Support global shortcuts via GlobalShortcutsPortal feature

Chromium has a new feature called GlobalShortcutsPortal. It
allows clients to use Portal's globalShortcuts to register and
listen to shortcuts.

This patches adds necessary bits, which allows Electron to
use that feature.

In order to make it work, one has to add
--enable-features=GlobalShortcutsPortal

Test: tested manually with a sample app.

* docs: add GlobalShortcutsPortal feature to globalShortcuts docs

Electron supports Portal's globalShortcuts API now via Chromium, and Electron
apps can use that in a Wayland session. Update the docs with the required
feature flag that must be passed to be able to use that implementation.
2025-01-22 11:59:48 +01:00
Erick Zhao
cf67dc8898 docs: add DocCardList component for index doc (#45275) 2025-01-22 10:27:30 +01:00
David Sanders
d7b568a1c0 ci: fix issue workflow failures (#45294) 2025-01-22 09:40:10 +01:00
Charles Kerr
fe9031eb23 refactor: in StopTracing(), use string literals instead of optional<string> (#45270)
refactor: simplify StopTracing() a little by using a string_view instead of an optional<string>

We have compile-time string literals that we're passing to a method
that takes a string_view argument, so we don't need all this extra
optional<string> scaffolding
2025-01-21 17:41:52 -06:00
Charles Kerr
f5eba67f0d refactor: simplify ParseUserScript() (#45269)
refactor: simplify ParseUserScript()

local variable user_script no longer needed after #43205
2025-01-21 15:21:56 -05:00
Charles Kerr
e1762e6e44 fix: consume the file permission callback when used (#45267)
fixes 0e5fe3f regression
2025-01-21 11:59:38 -06:00
Shelley Vohr
9d32b6ddfc fix: webContents.print() with OOP printing (#45266)
* fix: webContents.print() with OOP printing

* Update patches/chromium/printing.patch

Co-authored-by: Robo <hop2deep@gmail.com>

---------

Co-authored-by: Robo <hop2deep@gmail.com>
2025-01-21 11:39:21 -05:00
David Sanders
7a413ff2ad ci: don't fail issue triage workflows if issue not found on project (#45252) 2025-01-21 16:06:24 +01:00
Shelley Vohr
0090d171fd chore: align clipboard blink::web_pref::WebPreferences with upstream (#45277)
chore: align clipboard blink::web_pref::WebPreferences with upstream
2025-01-21 06:50:36 -08:00
dependabot[bot]
980b68e9cc build(deps): bump github/codeql-action from 3.28.0 to 3.28.1 (#45272)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.28.0 to 3.28.1.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](48ab28a6f5...b6a472f63d)

---
updated-dependencies:
- dependency-name: github/codeql-action
  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>
2025-01-21 15:12:42 +01:00
dependabot[bot]
44a630e634 build(deps): bump mikefarah/yq from 4.44.6 to 4.45.1 (#45271)
Bumps [mikefarah/yq](https://github.com/mikefarah/yq) from 4.44.6 to 4.45.1.
- [Release notes](https://github.com/mikefarah/yq/releases)
- [Changelog](https://github.com/mikefarah/yq/blob/master/release_notes.txt)
- [Commits](4839dbbf80...8bf425b4d1)

---
updated-dependencies:
- dependency-name: mikefarah/yq
  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>
2025-01-21 15:12:29 +01:00
Shelley Vohr
81d12fa452 build: fix clang-format duplicate message (#45235) 2025-01-20 11:05:40 +01:00
Shelley Vohr
83666ddc36 fix: page scaling in silent mode printing (#45218) 2025-01-20 11:05:15 +01:00
Shelley Vohr
fa5de40f86 fix: two possible FSA crashes (#45233)
* 5786874: Change Observer: Fix crash when navigating to new page

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

* 5794141: Change Observer: Fix Get*PermissionGrant crash

https://chromium-review.googlesource.com/c/chromium/src/+/5794141
2025-01-20 10:23:57 +01:00
Shelley Vohr
7d05fb2a1b fix: broken OOP window.print() on macOS/Linux (#45214)
fix: broken OOP printing on macOS/Linux
2025-01-20 10:23:44 +01:00
Sam Maddock
51a249f380 chore: skip flaky contentTracing test (#45240) 2025-01-20 09:57:10 +01:00
Sam Maddock
90754e5fd2 test: quit Finder (#45239) 2025-01-20 09:54:26 +01:00
Shelley Vohr
0e5fe3fa60 fix: getAsFileSystemHandle failure when drag-dropping two directories (#45234)
fix: drag-dropping two directories
2025-01-20 09:54:12 +01:00
michal-pichlinski-openfin
6953f5505f refactor: remove InspectableWebContentsViewMac in favor of the Views version (#44628)
* refactor: remove InspectableWebContentsViewMac in favor of the Views version

* cherry-pick: refactor: remove InspectableWebContentsViewMac in favor of the Views version (#41326)

commit e67ab9a93d

Confilcts not resolved, except removal of the files removed
by the original commit.

* resolved conflicts and build issues after cherry-pick

* cherry-picked: fix: add method allowing to disable headless mode in native widget

https://github.com/electron/electron/pull/42996
fixing
https://github.com/electron/electron/issues/42995

* fix: displaying select popup in window created as fullscreen window

`constrainFrameRect:toScreen:` is not being call for windows created
with `fullscreen: true` therefore `headless` mode was not being removed
and `RenderWidgetHostNSViewBridge::DisplayPopupMenu` ignored displaying
popup.

Issue could be fixed by placing additional removal of `headless` mode
in the `toggleFullScreen:`, but `orderWindow:relativeTo:` is called
both for a regular and a fullscreen window, therefore there will be
a single place fixing both cases.

Because `electron::NativeWindowMac` lifetime may be shorter than
`ElectronNSWindow` on which macOS may execute `orderWindow:relativeTo:`
we need to clear `shell_` when `NativeWindow` is being closed.

Fixes #43010.

* fix: Content visibility when using `vibrancy`

We need to put `NSVisualEffectView` before `ViewsCompositorSuperview`
otherwise when using `vibrancy` in `BrowserWindow` `NSVisualEffectView`
will hide content displayed by the compositor.

Fixes #43003
Fixes #42336

In fact main issues reported in these tickets were not present after
cherry-picking original refactor switching to `views::WebView`, so
text could be selected and click event was properly generated. However
both issues testcases were using `vibrancy` and actual content was
invisible, because it was covered by the `NSVisualEffectView`.

* fix: EXCEPTION_ACCESS_VIOLATION crash on BrowserWindow.destroy()

Restored postponed deletion of the `NativeWindow`.

Restoration caused `DCHECK(new_parent_ui_layer->GetCompositor());` failure
in `BrowserCompositorMac::SetParentUiLayer` after the spec test:
`chrome extensions chrome.webRequest does not take precedence over Electron webRequest - http`
with stack:
```
7   Electron Framework 0x000000011fe07830 content::BrowserCompositorMac::SetParentUiLayer(ui::Layer*) + 628
8   Electron Framework 0x000000011fe0c154 content::RenderWidgetHostViewMac::SetParentUiLayer(ui::Layer*) + 220
9   Electron Framework 0x000000011fe226a8 content::WebContentsViewMac::CreateViewForWidget(content::RenderWidgetHost*) + 600
10  Electron Framework 0x000000011fd37e4c content::WebContentsImpl::CreateRenderWidgetHostViewForRenderManager(content::RenderViewHost*) + 164
11  Electron Framework 0x000000011fb32278 content::RenderFrameHostManager::CreateSpeculativeRenderFrame(content::SiteInstanceImpl*, bool, scoped_refptr<content::BrowsingContextState> const&) + 816
12  Electron Framework 0x000000011fb2ab8c content::RenderFrameHostManager::CreateSpeculativeRenderFrameHost(content::SiteInstanceImpl*, content::SiteInstanceImpl*, bool) + 1308
13  Electron Framework 0x000000011fb28598 content::RenderFrameHostManager::GetFrameHostForNavigation(content::NavigationRequest*, content::BrowsingContextGroupSwap*, std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char>>*) + 1796
14  Electron Framework 0x000000011fa78660 content::NavigationRequest::SelectFrameHostForOnRequestFailedInternal(bool, bool, std::__Cr::optional<std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char>>> const&) + 280
15  Electron Framework 0x000000011fa6a994 content::NavigationRequest::OnRequestFailedInternal(network::URLLoaderCompletionStatus const&, bool, std::__Cr::optional<std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char>>> const&, bo
+ 1008
16  Electron Framework 0x000000011fa7772c content::NavigationRequest::OnRequestFailed(network::URLLoaderCompletionStatus const&) + 72
17  Electron Framework 0x000000011f8554ac content::NavigationURLLoaderImpl::NotifyRequestFailed(network::URLLoaderCompletionStatus const&) + 248
```
This was probably the reason of removing `NativeWindow` immediately
in order to cleanup `views_host_` in `WebContentsViewMac` to prevent
using layer without compositor in `WebContentsViewMac::CreateViewForWidget`.

`[ElectronNSWindowDelegate windowWillClose:]` is deleting window host
and the compositor used by the `NativeWindow` therefore detach `NativeWindow`
contents from parent. This will clear `views_host_` and prevent failing
mentioned `DCHECK`.

Fixes #42975

* chore: Applied review suggestions

* refactor: directly cleanup shell

---------

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>
2025-01-17 10:21:10 -05:00
Felix Rieseberg
45f90cd5dd docs: Why Electron? (#45191)
* docs: Why Electron?

* Apply suggestions from code review

Co-authored-by: Sam Maddock <samuel.maddock@gmail.com>
Co-authored-by: Erick Zhao <erick@hotmail.ca>

* Update docs/why-electron.md

---------

Co-authored-by: Sam Maddock <samuel.maddock@gmail.com>
Co-authored-by: Erick Zhao <erick@hotmail.ca>
2025-01-15 18:32:56 -05:00
Anny Yang
8294f44c74 docs: remove quickstart (#45194) 2025-01-15 14:42:53 -08:00
204 changed files with 2134 additions and 2453 deletions

View File

@@ -1,5 +1,4 @@
# These env vars are only necessary for creating Electron releases.
# See docs/development/releasing.md
APPVEYOR_CLOUD_TOKEN=
ELECTRON_GITHUB_TOKEN=

4
.github/CODEOWNERS vendored
View File

@@ -8,13 +8,9 @@
DEPS @electron/wg-upgrades
# Releases WG
/.github/workflows/update_appveyor_image.yml @electron/wg-releases
/docs/breaking-changes.md @electron/wg-releases
/npm/ @electron/wg-releases
/script/release @electron/wg-releases
appveyor.yml @electron/wg-releases
appveyor-bake.yml @electron/wg-releases
appveyor-woa.yml @electron/wg-releases
# Security WG
/lib/browser/devtools.ts @electron/wg-security

View File

@@ -1,3 +1,4 @@
blank_issues_enabled: false
contact_links:
- name: Discord Chat
url: https://discord.gg/APGC3k5yaH

View File

@@ -0,0 +1,14 @@
name: Maintainer Issue (not for public use)
description: Only to be created by Electron maintainers
body:
- type: checkboxes
attributes:
label: Confirmation
options:
- label: I am a [maintainer](https://github.com/orgs/electron/people) of the Electron project. (If not, please create a [different issue type](https://github.com/electron/electron/issues/new/).)
required: true
- type: textarea
attributes:
label: Description
validations:
required: true

View File

@@ -13,7 +13,7 @@ jobs:
with:
fetch-depth: 0
- name: Setup Node.js/npm
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
with:
node-version: 20.11.x
- name: Setting Up Dig Site
@@ -41,7 +41,7 @@ jobs:
sha-file: .dig-old
filename: electron.old.d.ts
- name: Upload artifacts
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b #v4.5.0
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 #v4.6.1
with:
name: artifacts
path: electron/artifacts

View File

@@ -94,7 +94,7 @@ jobs:
}))
- name: Create Release Project Board
if: ${{ steps.check-major-version.outputs.MAJOR }}
uses: dsanders11/project-actions/copy-project@438b25e007c2f4efec324497fadc6402e7cc61a6 # v1.4.0
uses: dsanders11/project-actions/copy-project@9c80cd31f58599941c64f74636bea95ba5d46090 # v1.5.1
id: create-release-board
with:
drafts: true
@@ -114,14 +114,14 @@ jobs:
GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}
- name: Find Previous Release Project Board
if: ${{ steps.check-major-version.outputs.MAJOR }}
uses: dsanders11/project-actions/find-project@438b25e007c2f4efec324497fadc6402e7cc61a6 # v1.4.0
uses: dsanders11/project-actions/find-project@9c80cd31f58599941c64f74636bea95ba5d46090 # v1.5.1
id: find-prev-release-board
with:
title: ${{ steps.generate-project-metadata.outputs.prev-prev-major }}-x-y
token: ${{ steps.generate-token.outputs.token }}
- name: Close Previous Release Project Board
if: ${{ steps.check-major-version.outputs.MAJOR }}
uses: dsanders11/project-actions/close-project@438b25e007c2f4efec324497fadc6402e7cc61a6 # v1.4.0
uses: dsanders11/project-actions/close-project@9c80cd31f58599941c64f74636bea95ba5d46090 # v1.5.1
with:
project-number: ${{ steps.find-prev-release-board.outputs.number }}
token: ${{ steps.generate-token.outputs.token }}

View File

@@ -20,12 +20,13 @@ jobs:
creds: ${{ secrets.ISSUE_TRIAGE_GH_APP_CREDS }}
org: electron
- name: Set status
uses: dsanders11/project-actions/edit-item@438b25e007c2f4efec324497fadc6402e7cc61a6 # v1.4.0
uses: dsanders11/project-actions/edit-item@9c80cd31f58599941c64f74636bea95ba5d46090 # v1.5.1
with:
token: ${{ steps.generate-token.outputs.token }}
project-number: 90
field: Status
field-value: ✅ Triaged
fail-if-item-not-found: false
issue-labeled-blocked:
name: blocked/* label added
if: startsWith(github.event.label.name, 'blocked/')
@@ -38,12 +39,13 @@ jobs:
creds: ${{ secrets.ISSUE_TRIAGE_GH_APP_CREDS }}
org: electron
- name: Set status
uses: dsanders11/project-actions/edit-item@438b25e007c2f4efec324497fadc6402e7cc61a6 # v1.4.0
uses: dsanders11/project-actions/edit-item@9c80cd31f58599941c64f74636bea95ba5d46090 # v1.5.1
with:
token: ${{ steps.generate-token.outputs.token }}
project-number: 90
field: Status
field-value: 🛑 Blocked
fail-if-item-not-found: false
issue-labeled-blocked-need-repro:
name: blocked/need-repro label added
if: github.event.label.name == 'blocked/need-repro'

View File

@@ -19,7 +19,7 @@ jobs:
creds: ${{ secrets.ISSUE_TRIAGE_GH_APP_CREDS }}
org: electron
- name: Add to Issue Triage
uses: dsanders11/project-actions/add-item@438b25e007c2f4efec324497fadc6402e7cc61a6 # v1.4.0
uses: dsanders11/project-actions/add-item@9c80cd31f58599941c64f74636bea95ba5d46090 # v1.5.1
with:
field: Reporter
field-value: ${{ github.event.issue.user.login }}

View File

@@ -10,6 +10,7 @@ jobs:
issue-transferred:
name: Issue Transferred
runs-on: ubuntu-latest
if: ${{ !github.event.changes.new_repository.private }}
steps:
- name: Generate GitHub App token
uses: electron/github-app-auth-action@384fd19694fe7b6dcc9a684746c6976ad78228ae # v1.1.1
@@ -18,7 +19,9 @@ jobs:
creds: ${{ secrets.ISSUE_TRIAGE_GH_APP_CREDS }}
org: electron
- name: Remove from issue triage
uses: dsanders11/project-actions/delete-item@438b25e007c2f4efec324497fadc6402e7cc61a6 # v1.4.0
uses: dsanders11/project-actions/delete-item@9c80cd31f58599941c64f74636bea95ba5d46090 # v1.5.1
with:
token: ${{ steps.generate-token.outputs.token }}
project-number: 90
item: ${{ github.event.changes.new_issue.html_url }}
fail-if-item-not-found: false

View File

@@ -30,9 +30,10 @@ jobs:
org: electron
- name: Set status
if: ${{ steps.check-for-blocked-labels.outputs.NOT_BLOCKED }}
uses: dsanders11/project-actions/edit-item@438b25e007c2f4efec324497fadc6402e7cc61a6 # v1.4.0
uses: dsanders11/project-actions/edit-item@9c80cd31f58599941c64f74636bea95ba5d46090 # v1.5.1
with:
token: ${{ steps.generate-token.outputs.token }}
project-number: 90
field: Status
field-value: 📥 Was Blocked
fail-if-item-not-found: false

View File

@@ -102,7 +102,7 @@ jobs:
run: df -h
- name: Setup Node.js/npm
if: ${{ inputs.target-platform == 'macos' }}
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
with:
node-version: 20.11.x
cache: yarn

View File

@@ -79,7 +79,7 @@ jobs:
cp "C:\Python311\python.exe" "C:\Python311\python3.exe"
- name: Setup Node.js/npm
if: ${{ inputs.target-platform == 'win' }}
uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a
with:
node-version: 20.11.x
- name: Add TCC permissions on macOS
@@ -247,7 +247,7 @@ jobs:
if: always() && !cancelled()
- name: Upload Test Artifacts
if: always() && !cancelled()
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1
with:
name: test_artifacts_${{ env.ARTIFACT_KEY }}_${{ matrix.shard }}
path: src/electron/spec/artifacts

View File

@@ -33,7 +33,7 @@ jobs:
creds: ${{ secrets.RELEASE_BOARD_GH_APP_CREDS }}
org: electron
- name: Set status
uses: dsanders11/project-actions/edit-item@438b25e007c2f4efec324497fadc6402e7cc61a6 # v1.4.0
uses: dsanders11/project-actions/edit-item@9c80cd31f58599941c64f74636bea95ba5d46090 # v1.5.1
with:
token: ${{ steps.generate-token.outputs.token }}
project-number: 94

View File

@@ -28,7 +28,7 @@ jobs:
# This is a pre-submit / pre-release.
- name: "Run analysis"
uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # v2.4.0
uses: ossf/scorecard-action@f49aabe0b5af0936a0987cfb85d86b75731b0186 # v2.4.1
with:
results_file: results.sarif
results_format: sarif
@@ -42,7 +42,7 @@ jobs:
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
uses: actions/upload-artifact@6f51ac03b9356f520e9adb1b1b7802705f340c2b # v4.5.0
uses: actions/upload-artifact@4cec3d8aa04e39d1a68397de0c4cd6fb9dce8ec1 # v4.6.1
with:
name: SARIF file
path: results.sarif
@@ -50,6 +50,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@48ab28a6f5dbc2a99bf1e0131198dd8f1df78169 # v3.28.0
uses: github/codeql-action/upload-sarif@b56ba49b26e50535fa1e7f7db0f4f7b4bf65d80d # v3.28.10
with:
sarif_file: results.sarif

View File

@@ -27,7 +27,7 @@ jobs:
PROJECT_NUMBER=$(gh project list --owner electron --format json | jq -r '.projects | map(select(.title | test("^[0-9]+-x-y$"))) | max_by(.number) | .number')
echo "PROJECT_NUMBER=$PROJECT_NUMBER" >> "$GITHUB_OUTPUT"
- name: Update Completed Stable Prep Items
uses: dsanders11/project-actions/completed-by@438b25e007c2f4efec324497fadc6402e7cc61a6 # v1.4.0
uses: dsanders11/project-actions/completed-by@9c80cd31f58599941c64f74636bea95ba5d46090 # v1.5.1
with:
field: Prep Status
field-value: ✅ Complete

View File

@@ -16,7 +16,7 @@ jobs:
id: generate-token
with:
creds: ${{ secrets.ISSUE_TRIAGE_GH_APP_CREDS }}
- uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # tag: v9.0.0
- uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # tag: v9.1.0
with:
repo-token: ${{ steps.generate-token.outputs.token }}
days-before-stale: 90
@@ -39,7 +39,7 @@ jobs:
id: generate-token
with:
creds: ${{ secrets.ISSUE_TRIAGE_GH_APP_CREDS }}
- uses: actions/stale@28ca1036281a5e5922ead5184a1bbf96e5fc984e # tag: v9.0.0
- uses: actions/stale@5bef64f19d7facfb25b37b414482c7164d639639 # tag: v9.1.0
with:
repo-token: ${{ steps.generate-token.outputs.token }}
days-before-stale: -1

View File

@@ -34,7 +34,7 @@ jobs:
build-image-sha: ${{ inputs.build-image-sha }}
steps:
- name: Checkout Electron
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683
with:
path: src/electron
fetch-depth: 0

View File

@@ -451,7 +451,7 @@ source_set("electron_lib") {
"//components/autofill/core/common:features",
"//components/certificate_transparency",
"//components/compose:buildflags",
"//components/embedder_support:browser_util",
"//components/embedder_support:user_agent",
"//components/input:input",
"//components/language/core/browser",
"//components/net_log",

View File

@@ -71,4 +71,4 @@ See [Coding Style](https://electronjs.org/docs/development/coding-style) for inf
## Further Reading
For more in-depth guides on developing Electron, see
[/docs/development](/docs/development/README.md)
[/docs/development](/docs/development/README.md).

8
DEPS
View File

@@ -2,7 +2,7 @@ gclient_gn_args_from = 'src'
vars = {
'chromium_version':
'134.0.6998.10',
'135.0.7037.0',
'node_version':
'v22.14.0',
'nan_version':
@@ -62,10 +62,6 @@ vars = {
'checkout_nacl':
False,
'checkout_libaom':
True,
'checkout_oculus_sdk':
False,
'checkout_openxr':
False,
'build_with_chromium':
@@ -74,8 +70,6 @@ vars = {
False,
'checkout_android_native_support':
False,
'checkout_google_benchmark':
False,
'checkout_clang_tidy':
True,
}

View File

@@ -1,7 +1,6 @@
[![Electron Logo](https://electronjs.org/images/electron-logo.svg)](https://electronjs.org)
[![GitHub Actions Build Status](https://github.com/electron/electron/actions/workflows/build.yml/badge.svg)](https://github.com/electron/electron/actions/workflows/build.yml)
[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/4lggi9dpjc1qob7k/branch/main?svg=true)](https://ci.appveyor.com/project/electron-bot/electron-ljo26/branch/main)
[![Electron Discord Invite](https://img.shields.io/discord/745037351163527189?color=%237289DA&label=chat&logo=discord&logoColor=white)](https://discord.gg/electronjs)
:memo: Available Translations: 🇨🇳 🇧🇷 🇪🇸 🇯🇵 🇷🇺 🇫🇷 🇺🇸 🇩🇪.

View File

@@ -74,10 +74,4 @@ enterprise_cloud_content_analysis = false
# https://issues.chromium.org/issues/40943039
content_enable_legacy_ipc = true
# Electron has its own unsafe-buffers enforcement directories.
# TODO: clang_unsafe_buffers_paths = "//electron/electron_unsafe_buffers_paths.txt"
#
# Disables unsafe-buffers-usage plugin due to incompatibilities with our reclient implementation
# Ref: https://chromium-review.googlesource.com/c/chromium/src/+/5426599
# Ref: https://github.com/electron/electron/commit/8e20f16ea35eeaeb149ae63bad3703d782665f6a
clang_unsafe_buffers_paths = ""
clang_unsafe_buffers_paths = "//electron/electron_unsafe_buffers_paths.txt"

View File

@@ -434,10 +434,6 @@ source_set("chrome_spellchecker") {
if (enable_builtin_spellchecker) {
sources += [
"//chrome/browser/profiles/profile_keyed_service_factory.cc",
"//chrome/browser/profiles/profile_keyed_service_factory.h",
"//chrome/browser/profiles/profile_selections.cc",
"//chrome/browser/profiles/profile_selections.h",
"//chrome/browser/spellchecker/spell_check_host_chrome_impl.cc",
"//chrome/browser/spellchecker/spell_check_host_chrome_impl.h",
"//chrome/browser/spellchecker/spell_check_initialization_host_impl.cc",

View File

@@ -34,18 +34,25 @@ async function loadSVG (element: HTMLSpanElement) {
async function initialize () {
const electronPath = await ipcRenderer.invoke('bootstrap');
function replaceText (selector: string, text: string) {
function replaceText (selector: string, text: string, link?: string) {
const element = document.querySelector<HTMLElement>(selector);
if (element) {
element.innerText = text;
if (link) {
const anchor = document.createElement('a');
anchor.textContent = text;
anchor.href = link;
anchor.target = '_blank';
element.appendChild(anchor);
} else {
element.innerText = text;
}
}
}
replaceText('.electron-version', `Electron v${process.versions.electron}`);
replaceText('.chrome-version', `Chromium v${process.versions.chrome}`);
replaceText('.node-version', `Node v${process.versions.node}`);
replaceText('.v8-version', `v8 v${process.versions.v8}`);
replaceText('.electron-version', `Electron v${process.versions.electron}`, 'https://electronjs.org/docs');
replaceText('.chrome-version', `Chromium v${process.versions.chrome}`, 'https://developer.chrome.com/docs/chromium');
replaceText('.node-version', `Node v${process.versions.node}`, `https://nodejs.org/docs/v${process.versions.node}/api`);
replaceText('.v8-version', `v8 v${process.versions.v8}`, 'https://v8.dev/docs');
replaceText('.command-example', `${electronPath} path-to-app`);
for (const element of document.querySelectorAll<HTMLSpanElement>('.octicon')) {

124
docs/api/extensions-api.md Normal file
View File

@@ -0,0 +1,124 @@
## Class: Extensions
> Load and interact with extensions.
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
Instances of the `Extensions` class are accessed by using `extensions` property of
a `Session`.
### Instance Events
The following events are available on instances of `Extensions`:
#### Event: 'extension-loaded'
Returns:
* `event` Event
* `extension` [Extension](structures/extension.md)
Emitted after an extension is loaded. This occurs whenever an extension is
added to the "enabled" set of extensions. This includes:
* Extensions being loaded from `Extensions.loadExtension`.
* Extensions being reloaded:
* from a crash.
* if the extension requested it ([`chrome.runtime.reload()`](https://developer.chrome.com/extensions/runtime#method-reload)).
#### Event: 'extension-unloaded'
Returns:
* `event` Event
* `extension` [Extension](structures/extension.md)
Emitted after an extension is unloaded. This occurs when
`Session.removeExtension` is called.
#### Event: 'extension-ready'
Returns:
* `event` Event
* `extension` [Extension](structures/extension.md)
Emitted after an extension is loaded and all necessary browser state is
initialized to support the start of the extension's background page.
### Instance Methods
The following methods are available on instances of `Extensions`:
#### `extensions.loadExtension(path[, options])`
* `path` string - Path to a directory containing an unpacked Chrome extension
* `options` Object (optional)
* `allowFileAccess` boolean - Whether to allow the extension to read local files over `file://`
protocol and inject content scripts into `file://` pages. This is required e.g. for loading
devtools extensions on `file://` URLs. Defaults to false.
Returns `Promise<Extension>` - resolves when the extension is loaded.
This method will raise an exception if the extension could not be loaded. If
there are warnings when installing the extension (e.g. if the extension
requests an API that Electron does not support) then they will be logged to the
console.
Note that Electron does not support the full range of Chrome extensions APIs.
See [Supported Extensions APIs](extensions.md#supported-extensions-apis) for
more details on what is supported.
Note that in previous versions of Electron, extensions that were loaded would
be remembered for future runs of the application. This is no longer the case:
`loadExtension` must be called on every boot of your app if you want the
extension to be loaded.
```js
const { app, session } = require('electron')
const path = require('node:path')
app.whenReady().then(async () => {
await session.defaultSession.extensions.loadExtension(
path.join(__dirname, 'react-devtools'),
// allowFileAccess is required to load the devtools extension on file:// URLs.
{ allowFileAccess: true }
)
// Note that in order to use the React DevTools extension, you'll need to
// download and unzip a copy of the extension.
})
```
This API does not support loading packed (.crx) extensions.
**Note:** This API cannot be called before the `ready` event of the `app` module
is emitted.
**Note:** Loading extensions into in-memory (non-persistent) sessions is not
supported and will throw an error.
#### `extensions.removeExtension(extensionId)`
* `extensionId` string - ID of extension to remove
Unloads an extension.
**Note:** This API cannot be called before the `ready` event of the `app` module
is emitted.
#### `extensions.getExtension(extensionId)`
* `extensionId` string - ID of extension to query
Returns `Extension | null` - The loaded extension with the given ID.
**Note:** This API cannot be called before the `ready` event of the `app` module
is emitted.
#### `extensions.getAllExtensions()`
Returns `Extension[]` - A list of all loaded extensions.
**Note:** This API cannot be called before the `ready` event of the `app` module
is emitted.

View File

@@ -14,7 +14,7 @@ but it also happens to support some other extension capabilities.
Electron only supports loading unpacked extensions (i.e., `.crx` files do not
work). Extensions are installed per-`session`. To load an extension, call
[`ses.loadExtension`](session.md#sesloadextensionpath-options):
[`ses.extensions.loadExtension`](extensions-api.md#extensionsloadextensionpath-options):
```js
const { session } = require('electron')

View File

@@ -12,9 +12,17 @@ shortcuts.
not have the keyboard focus. This module cannot be used before the `ready`
event of the app module is emitted.
Please also note that it is also possible to use Chromium's
`GlobalShortcutsPortal` implementation, which allows apps to bind global
shortcuts when running within a Wayland session.
```js
const { app, globalShortcut } = require('electron')
// Enable usage of Portal's globalShortcuts. This is essential for cases when
// the app runs in a Wayland session.
app.commandLine.appendSwitch('enable-features', 'GlobalShortcutsPortal')
app.whenReady().then(() => {
// Register a 'CommandOrControl+X' shortcut listener.
const ret = globalShortcut.register('CommandOrControl+X', () => {

View File

@@ -1485,7 +1485,7 @@ will not work on non-persistent (in-memory) sessions.
**Note:** On macOS and Windows 10 this word will be removed from the OS custom dictionary as well
#### `ses.loadExtension(path[, options])`
#### `ses.loadExtension(path[, options])` _Deprecated_
* `path` string - Path to a directory containing an unpacked Chrome extension
* `options` Object (optional)
@@ -1532,7 +1532,9 @@ is emitted.
**Note:** Loading extensions into in-memory (non-persistent) sessions is not
supported and will throw an error.
#### `ses.removeExtension(extensionId)`
**Deprecated:** Use the new `ses.extensions.loadExtension` API.
#### `ses.removeExtension(extensionId)` _Deprecated_
* `extensionId` string - ID of extension to remove
@@ -1541,7 +1543,9 @@ Unloads an extension.
**Note:** This API cannot be called before the `ready` event of the `app` module
is emitted.
#### `ses.getExtension(extensionId)`
**Deprecated:** Use the new `ses.extensions.removeExtension` API.
#### `ses.getExtension(extensionId)` _Deprecated_
* `extensionId` string - ID of extension to query
@@ -1550,13 +1554,17 @@ Returns `Extension | null` - The loaded extension with the given ID.
**Note:** This API cannot be called before the `ready` event of the `app` module
is emitted.
#### `ses.getAllExtensions()`
**Deprecated:** Use the new `ses.extensions.getExtension` API.
#### `ses.getAllExtensions()` _Deprecated_
Returns `Extension[]` - A list of all loaded extensions.
**Note:** This API cannot be called before the `ready` event of the `app` module
is emitted.
**Deprecated:** Use the new `ses.extensions.getAllExtensions` API.
#### `ses.getStoragePath()`
Returns `string | null` - The absolute file system path where data for this
@@ -1619,6 +1627,10 @@ session is persisted on disk. For in memory sessions this returns `null`.
A [`Cookies`](cookies.md) object for this session.
#### `ses.extensions` _Readonly_
A [`Extensions`](extensions-api.md) object for this session.
#### `ses.serviceWorkers` _Readonly_
A [`ServiceWorkers`](service-workers.md) object for this session.

View File

@@ -3,8 +3,6 @@
* `name` string - the name of the printer as understood by the OS.
* `displayName` string - the name of the printer as shown in Print Preview.
* `description` string - a longer description of the printer's type.
* `status` number - the current status of the printer.
* `isDefault` boolean - whether or not a given printer is set as the default printer on the OS.
* `options` Object - an object containing a variable number of platform-specific printer information.
The number represented by `status` means different things on different platforms: on Windows its potential values can be found [here](https://learn.microsoft.com/en-us/windows/win32/printdocs/printer-info-2), and on Linux and macOS they can be found [here](https://www.cups.org/doc/cupspm.html).
@@ -19,8 +17,6 @@ may be different on each platform.
name: 'Austin_4th_Floor_Printer___C02XK13BJHD4',
displayName: 'Austin 4th Floor Printer @ C02XK13BJHD4',
description: 'TOSHIBA ColorMFP',
status: 3,
isDefault: false,
options: {
copies: '1',
'device-uri': 'dnssd://Austin%204th%20Floor%20Printer%20%40%20C02XK13BJHD4._ipps._tcp.local./?uuid=71687f1e-1147-3274-6674-22de61b110bd',

View File

@@ -181,16 +181,6 @@ Some popular `key` and `type`s are:
Removes the `key` in `NSUserDefaults`. This can be used to restore the default
or global value of a `key` previously set with `setUserDefault`.
### `systemPreferences.isAeroGlassEnabled()` _Windows_ _Deprecated_
Returns `boolean` - `true` if [DWM composition][dwm-composition] (Aero Glass) is
enabled, and `false` otherwise.
**Deprecated:**
This function has been always returning `true` since Electron 23, which only supports Windows 10+.
[dwm-composition]: https://learn.microsoft.com/en-us/windows/win32/dwm/composition-ovw
### `systemPreferences.getAccentColor()` _Windows_ _macOS_
Returns `string` - The users current system wide accent color preference in RGBA

View File

@@ -12,8 +12,44 @@ This document uses the following convention to categorize breaking changes:
* **Deprecated:** An API was marked as deprecated. The API will continue to function, but will emit a deprecation warning, and will be removed in a future release.
* **Removed:** An API or feature was removed, and is no longer supported by Electron.
## Planned Breaking API Changes (36.0)
### Deprecated: Extension methods and events on `session`
`session.loadExtension`, `session.removeExtension`, `session.getExtension`,
`session.getAllExtensions`, 'extension-loaded' event, 'extension-unloaded'
event, and 'extension-ready' events have all moved to the new
`session.extensions` class.
### Removed: `systemPreferences.isAeroGlassEnabled()`
The `systemPreferences.isAeroGlassEnabled()` function has been removed without replacement.
It has been always returning `true` since Electron 23, which only supports Windows 10+, where DWM composition can no longer be disabled.
https://learn.microsoft.com/en-us/windows/win32/dwm/composition-ovw#disabling-dwm-composition-windows7-and-earlier
## Planned Breaking API Changes (35.0)
### Removed:`isDefault` and `status` properties on `PrinterInfo`
These properties have been removed from the PrinterInfo Object
because they have been removed from upstream Chromium.
### Deprecated: `getFromVersionID` on `session.serviceWorkers`
The `session.serviceWorkers.fromVersionID(versionId)` API has been deprecated
in favor of `session.serviceWorkers.getInfoFromVersionID(versionId)`. This was
changed to make it more clear which object is returned with the introduction
of the `session.serviceWorkers.getWorkerFromVersionID(versionId)` API.
```js
// Deprecated
session.serviceWorkers.fromVersionID(versionId)
// Replace with
session.serviceWorkers.getInfoFromVersionID(versionId)
```
### Deprecated: `setPreloads`, `getPreloads` on `Session`
`registerPreloadScript`, `unregisterPreloadScript`, and `getPreloadScripts` are introduced as a
@@ -33,21 +69,6 @@ session.registerPreloadScript({
})
```
### Deprecated: `getFromVersionID` on `session.serviceWorkers`
The `session.serviceWorkers.fromVersionID(versionId)` API has been deprecated
in favor of `session.serviceWorkers.getInfoFromVersionID(versionId)`. This was
changed to make it more clear which object is returned with the introduction
of the `session.serviceWorkers.getWorkerFromVersionID(versionId)` API.
```js
// Deprecated
session.serviceWorkers.fromVersionID(versionId)
// Replace with
session.serviceWorkers.getInfoFromVersionID(versionId)
```
### Deprecated: `level`, `message`, `line`, and `sourceId` arguments in `console-message` event on `WebContents`
The `console-message` event on `WebContents` has been updated to provide details on the `Event`

View File

@@ -96,9 +96,9 @@ of the extension is not working as expected.
[devtools-extension]: https://developer.chrome.com/extensions/devtools
[session]: ../api/session.md
[react-devtools]: https://chrome.google.com/webstore/detail/react-developer-tools/fmkadmapgofadopljbjfkapdkoienihi
[load-extension]: ../api/session.md#sesloadextensionpath-options
[load-extension]: ../api/extensions-api.md#extensionsloadextensionpath-options
[extension-structure]: ../api/structures/extension.md
[remove-extension]: ../api/session.md#sesremoveextensionextensionid
[remove-extension]: ../api/extensions-api.md#extensionsremoveextensionextensionid
[electron-devtools-installer]: https://github.com/MarshallOfSound/electron-devtools-installer
[supported-extension-apis]: ../api/extensions.md
[issue-tracker]: https://github.com/electron/electron/issues

View File

@@ -14,7 +14,7 @@ _Notes_:
* There are two rendering modes that can be used (see the section below) and only
the dirty area is passed to the `paint` event to be more efficient.
* You can stop/continue the rendering as well as set the frame rate.
* The maximum frame rate is 240 because greater values bring only performance
* When `webPreferences.offscreen.useSharedTexture` is not `true`, the maximum frame rate is 240 because greater values bring only performance
losses with no benefits.
* When nothing is happening on a webpage, no frames are generated.
* An offscreen window is always created as a

View File

@@ -57,10 +57,7 @@ Finally, create a `main.js` file for main process that creates the window.
const { app, BrowserWindow } = require('electron')
const createWindow = () => {
const onlineStatusWindow = new BrowserWindow({
width: 400,
height: 100
})
const onlineStatusWindow = new BrowserWindow()
onlineStatusWindow.loadFile('index.html')
}

View File

@@ -810,7 +810,7 @@ potential error cases, and refer to
You should not directly expose Electron's APIs, especially IPC, to untrusted web content in your
preload scripts.
### Why?
#### Why?
Exposing raw APIs like `ipcRenderer.on` is dangerous because it gives renderer processes direct
access to the entire IPC event system, allowing them to listen for any IPC events, not just the ones
@@ -823,7 +823,7 @@ events, passing the callback directly means the renderer gets access to this eve
In short, we want the untrusted web content to only have access to necessary information and APIs.
### How?
#### How?
```js title='preload'.js'
// Bad

View File

@@ -22,7 +22,7 @@ If you want to focus on building a great product without figuring out how you ca
### Reliability
Web technologies are the most-used foundation for user interfaces on the planet. The have been hardened accordingly. Modern computers have been optimized from the CPU to the operating system to be good at running web technologies. The manufacturers of your users devices—be that an Android phone or the latest MacBook—will ensure that they can visit websites, play videos on YouTube, or display emails. In turn, theyll also ensure that your app has a stable foundation, even if you have just one user.
Web technologies are the most-used foundation for user interfaces on the planet. They have been hardened accordingly. Modern computers have been optimized from the CPU to the operating system to be good at running web technologies. The manufacturers of your users devices—be that an Android phone or the latest MacBook—will ensure that they can visit websites, play videos on YouTube, or display emails. In turn, theyll also ensure that your app has a stable foundation, even if you have just one user.
If you want to focus on building a great product without debugging a weird quirk that nobody has found before, the web is a safe bet.

View File

@@ -2,7 +2,7 @@
<!-- The Resource ids for messages start from 31750 and for includes
it starts from 31950, make sure they don't overlap when the limit
exceeds in //tools/gritsettings/resource_ids -->
<grit latest_public_release="0" current_release="1" output_all_resource_defines="false"
<grit latest_public_release="0" current_release="1"
source_lang_id="en">
<outputs>
<output filename="grit/electron_resources.h" type="rc_header">

View File

@@ -21,6 +21,7 @@ auto_filenames = {
"docs/api/dock.md",
"docs/api/download-item.md",
"docs/api/environment-variables.md",
"docs/api/extensions-api.md",
"docs/api/extensions.md",
"docs/api/global-shortcut.md",
"docs/api/in-app-purchase.md",

View File

@@ -739,6 +739,8 @@ filenames = {
]
lib_sources_extensions = [
"shell/browser/api/electron_api_extensions.cc",
"shell/browser/api/electron_api_extensions.h",
"shell/browser/extensions/api/extension_action/extension_action_api.cc",
"shell/browser/extensions/api/extension_action/extension_action_api.h",
"shell/browser/extensions/api/management/electron_management_api_delegate.cc",
@@ -757,8 +759,6 @@ filenames = {
"shell/browser/extensions/electron_browser_context_keyed_service_factories.h",
"shell/browser/extensions/electron_component_extension_resource_manager.cc",
"shell/browser/extensions/electron_component_extension_resource_manager.h",
"shell/browser/extensions/electron_display_info_provider.cc",
"shell/browser/extensions/electron_display_info_provider.h",
"shell/browser/extensions/electron_extension_host_delegate.cc",
"shell/browser/extensions/electron_extension_host_delegate.h",
"shell/browser/extensions/electron_extension_loader.cc",

View File

@@ -257,6 +257,7 @@ libcxx_headers = [
"//third_party/libc++/src/include/__chrono/exception.h",
"//third_party/libc++/src/include/__chrono/file_clock.h",
"//third_party/libc++/src/include/__chrono/formatter.h",
"//third_party/libc++/src/include/__chrono/gps_clock.h",
"//third_party/libc++/src/include/__chrono/hh_mm_ss.h",
"//third_party/libc++/src/include/__chrono/high_resolution_clock.h",
"//third_party/libc++/src/include/__chrono/leap_second.h",
@@ -271,11 +272,13 @@ libcxx_headers = [
"//third_party/libc++/src/include/__chrono/steady_clock.h",
"//third_party/libc++/src/include/__chrono/sys_info.h",
"//third_party/libc++/src/include/__chrono/system_clock.h",
"//third_party/libc++/src/include/__chrono/tai_clock.h",
"//third_party/libc++/src/include/__chrono/time_point.h",
"//third_party/libc++/src/include/__chrono/time_zone.h",
"//third_party/libc++/src/include/__chrono/time_zone_link.h",
"//third_party/libc++/src/include/__chrono/tzdb.h",
"//third_party/libc++/src/include/__chrono/tzdb_list.h",
"//third_party/libc++/src/include/__chrono/utc_clock.h",
"//third_party/libc++/src/include/__chrono/weekday.h",
"//third_party/libc++/src/include/__chrono/year.h",
"//third_party/libc++/src/include/__chrono/year_month.h",
@@ -1382,8 +1385,11 @@ libcxx_headers = [
"//third_party/libc++/src/include/__filesystem/space_info.h",
"//third_party/libc++/src/include/__filesystem/u8path.h",
"//third_party/libc++/src/include/__flat_map/flat_map.h",
"//third_party/libc++/src/include/__flat_map/flat_multimap.h",
"//third_party/libc++/src/include/__flat_map/key_value_iterator.h",
"//third_party/libc++/src/include/__flat_map/sorted_equivalent.h",
"//third_party/libc++/src/include/__flat_map/sorted_unique.h",
"//third_party/libc++/src/include/__flat_map/utils.h",
"//third_party/libc++/src/include/__format/buffer.h",
"//third_party/libc++/src/include/__format/concepts.h",
"//third_party/libc++/src/include/__format/container_adaptor.h",
@@ -1519,7 +1525,6 @@ libcxx_headers = [
"//third_party/libc++/src/include/__locale",
"//third_party/libc++/src/include/__locale_dir/locale_base_api/android.h",
"//third_party/libc++/src/include/__locale_dir/locale_base_api/bsd_locale_fallbacks.h",
"//third_party/libc++/src/include/__locale_dir/locale_base_api/fuchsia.h",
"//third_party/libc++/src/include/__locale_dir/locale_base_api/ibm.h",
"//third_party/libc++/src/include/__locale_dir/locale_base_api/musl.h",
"//third_party/libc++/src/include/__locale_dir/locale_base_api/openbsd.h",
@@ -1528,6 +1533,10 @@ libcxx_headers = [
"//third_party/libc++/src/include/__locale_dir/support/apple.h",
"//third_party/libc++/src/include/__locale_dir/support/bsd_like.h",
"//third_party/libc++/src/include/__locale_dir/support/freebsd.h",
"//third_party/libc++/src/include/__locale_dir/support/fuchsia.h",
"//third_party/libc++/src/include/__locale_dir/support/linux.h",
"//third_party/libc++/src/include/__locale_dir/support/no_locale/characters.h",
"//third_party/libc++/src/include/__locale_dir/support/no_locale/strtonum.h",
"//third_party/libc++/src/include/__locale_dir/support/windows.h",
"//third_party/libc++/src/include/__math/abs.h",
"//third_party/libc++/src/include/__math/copysign.h",
@@ -1568,16 +1577,17 @@ libcxx_headers = [
"//third_party/libc++/src/include/__memory/array_cookie.h",
"//third_party/libc++/src/include/__memory/assume_aligned.h",
"//third_party/libc++/src/include/__memory/auto_ptr.h",
"//third_party/libc++/src/include/__memory/builtin_new_allocator.h",
"//third_party/libc++/src/include/__memory/compressed_pair.h",
"//third_party/libc++/src/include/__memory/concepts.h",
"//third_party/libc++/src/include/__memory/construct_at.h",
"//third_party/libc++/src/include/__memory/destroy.h",
"//third_party/libc++/src/include/__memory/destruct_n.h",
"//third_party/libc++/src/include/__memory/inout_ptr.h",
"//third_party/libc++/src/include/__memory/noexcept_move_assign_container.h",
"//third_party/libc++/src/include/__memory/out_ptr.h",
"//third_party/libc++/src/include/__memory/pointer_traits.h",
"//third_party/libc++/src/include/__memory/ranges_construct_at.h",
"//third_party/libc++/src/include/__memory/ranges_destroy.h",
"//third_party/libc++/src/include/__memory/ranges_uninitialized_algorithms.h",
"//third_party/libc++/src/include/__memory/raw_storage_iterator.h",
"//third_party/libc++/src/include/__memory/shared_count.h",
@@ -1901,6 +1911,7 @@ libcxx_headers = [
"//third_party/libc++/src/include/__utility/cmp.h",
"//third_party/libc++/src/include/__utility/convert_to_integral.h",
"//third_party/libc++/src/include/__utility/declval.h",
"//third_party/libc++/src/include/__utility/element_count.h",
"//third_party/libc++/src/include/__utility/empty.h",
"//third_party/libc++/src/include/__utility/exception_guard.h",
"//third_party/libc++/src/include/__utility/exchange.h",

View File

@@ -23,7 +23,22 @@ systemPickerVideoSource.name = '';
Object.freeze(systemPickerVideoSource);
Session.prototype._init = function () {
addIpcDispatchListeners(this, this.serviceWorkers);
addIpcDispatchListeners(this);
if (this.extensions) {
const rerouteExtensionEvent = (eventName: string) => {
const warn = deprecate.warnOnce(`${eventName} event`, `session.extensions ${eventName} event`);
this.extensions.on(eventName as any, (...args: any[]) => {
if (this.listenerCount(eventName) !== 0) {
warn();
this.emit(eventName, ...args);
}
});
};
rerouteExtensionEvent('extension-loaded');
rerouteExtensionEvent('extension-unloaded');
rerouteExtensionEvent('extension-ready');
}
};
Session.prototype.fetch = function (input: RequestInfo, init?: RequestInit) {
@@ -67,6 +82,35 @@ Session.prototype.setPreloads = function (preloads) {
});
};
Session.prototype.getAllExtensions = deprecate.moveAPI(
function (this: Electron.Session) {
return this.extensions.getAllExtensions();
},
'session.getAllExtensions',
'session.extensions.getAllExtensions'
);
Session.prototype.getExtension = deprecate.moveAPI(
function (this: Electron.Session, extensionId) {
return this.extensions.getExtension(extensionId);
},
'session.getExtension',
'session.extensions.getExtension'
);
Session.prototype.loadExtension = deprecate.moveAPI(
function (this: Electron.Session, path, options) {
return this.extensions.loadExtension(path, options);
},
'session.loadExtension',
'session.extensions.loadExtension'
);
Session.prototype.removeExtension = deprecate.moveAPI(
function (this: Electron.Session, extensionId) {
return this.extensions.removeExtension(extensionId);
},
'session.removeExtension',
'session.extensions.removeExtension'
);
export default {
fromPartition,
fromPath,

View File

@@ -20,12 +20,4 @@ if ('accessibilityDisplayShouldReduceTransparency' in systemPreferences) {
});
}
if (process.platform === 'win32') {
const isAeroGlassEnabledDeprecated = deprecate.warnOnce('systemPreferences.isAeroGlassEnabled');
systemPreferences.isAeroGlassEnabled = () => {
isAeroGlassEnabledDeprecated();
return true;
};
}
export default systemPreferences;

View File

@@ -1,13 +1,11 @@
import { openGuestWindow, makeWebPreferences, parseContentTypeFormat } from '@electron/internal/browser/guest-window-manager';
import { IpcMainImpl } from '@electron/internal/browser/ipc-main-impl';
import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal';
import * as ipcMainUtils from '@electron/internal/browser/ipc-main-internal-utils';
import { MessagePortMain } from '@electron/internal/browser/message-port-main';
import { parseFeatures } from '@electron/internal/browser/parse-features-string';
import * as deprecate from '@electron/internal/common/deprecate';
import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
import { app, ipcMain, session, webFrameMain, dialog } from 'electron/main';
import { app, session, webFrameMain, dialog } from 'electron/main';
import type { BrowserWindowConstructorOptions, MessageBoxOptions, NavigationEntry } from 'electron/main';
import * as path from 'path';
@@ -18,8 +16,6 @@ import * as url from 'url';
// eslint-disable-next-line no-unused-expressions
session;
const webFrameMainBinding = process._linkedBinding('electron_browser_web_frame_main');
let nextId = 0;
const getNextId = function () {
return ++nextId;
@@ -480,24 +476,6 @@ WebContents.prototype._callWindowOpenHandler = function (event: Electron.Event,
}
};
const addReplyToEvent = (event: Electron.IpcMainEvent) => {
const { processId, frameId } = event;
event.reply = (channel: string, ...args: any[]) => {
event.sender.sendToFrame([processId, frameId], channel, ...args);
};
};
const addSenderToEvent = (event: Electron.IpcMainEvent | Electron.IpcMainInvokeEvent, sender: Electron.WebContents) => {
event.sender = sender;
};
const addReturnValueToEvent = (event: Electron.IpcMainEvent) => {
Object.defineProperty(event, 'returnValue', {
set: (value) => event._replyChannel.sendReply(value),
get: () => {}
});
};
const commandLine = process._linkedBinding('electron_common_command_line');
const environment = process._linkedBinding('electron_common_environment');
@@ -577,28 +555,6 @@ WebContents.prototype._init = function () {
enumerable: true
});
/**
* Cached IPC emitters sorted by dispatch priority.
* Caching is used to avoid frequent array allocations.
*
* 0: WebFrameMain ipc
* 1: WebContents ipc
* 2: ipcMain
*/
const cachedIpcEmitters: (ElectronInternal.IpcMainInternal | undefined)[] = [undefined, ipc, ipcMain];
// Get list of relevant IPC emitters for dispatch.
const getIpcEmittersForEvent = (event: Electron.IpcMainEvent | Electron.IpcMainInvokeEvent): (ElectronInternal.IpcMainInternal | undefined)[] => {
// Lookup by FrameTreeNode ID to ensure IPCs received after a frame swap are
// always received. This occurs when a RenderFrame sends an IPC while it's
// unloading and its internal state is pending deletion.
const { frameTreeNodeId } = event;
const webFrameByFtn = frameTreeNodeId ? webFrameMainBinding._fromFtnIdIfExists(frameTreeNodeId) : undefined;
cachedIpcEmitters[0] = webFrameByFtn?.ipc;
return cachedIpcEmitters;
};
// Add navigationHistory property which handles session history,
// maintaining a list of navigation entries for backward and forward navigation.
Object.defineProperty(this, 'navigationHistory', {
@@ -641,71 +597,6 @@ WebContents.prototype._init = function () {
enumerable: true
});
// Dispatch IPC messages to the ipc module.
this.on('-ipc-message', function (this: Electron.WebContents, event, internal, channel, args) {
addSenderToEvent(event, this);
if (internal) {
ipcMainInternal.emit(channel, event, ...args);
} else {
addReplyToEvent(event);
this.emit('ipc-message', event, channel, ...args);
for (const ipcEmitter of getIpcEmittersForEvent(event)) {
ipcEmitter?.emit(channel, event, ...args);
}
}
});
this.on('-ipc-invoke', async function (this: Electron.WebContents, event, internal, channel, args) {
addSenderToEvent(event, this);
const replyWithResult = (result: any) => event._replyChannel.sendReply({ result });
const replyWithError = (error: Error) => {
console.error(`Error occurred in handler for '${channel}':`, error);
event._replyChannel.sendReply({ error: error.toString() });
};
const targets: (ElectronInternal.IpcMainInternal | undefined)[] = internal ? [ipcMainInternal] : getIpcEmittersForEvent(event);
const target = targets.find(target => (target as any)?._invokeHandlers.has(channel));
if (target) {
const handler = (target as any)._invokeHandlers.get(channel);
try {
replyWithResult(await Promise.resolve(handler(event, ...args)));
} catch (err) {
replyWithError(err as Error);
}
} else {
replyWithError(new Error(`No handler registered for '${channel}'`));
}
});
this.on('-ipc-message-sync', function (this: Electron.WebContents, event, internal, channel, args) {
addSenderToEvent(event, this);
addReturnValueToEvent(event);
if (internal) {
ipcMainInternal.emit(channel, event, ...args);
} else {
addReplyToEvent(event);
const ipcEmitters = getIpcEmittersForEvent(event);
if (
this.listenerCount('ipc-message-sync') === 0 &&
ipcEmitters.every(emitter => !emitter || emitter.listenerCount(channel) === 0)
) {
console.warn(`WebContents #${this.id} called ipcRenderer.sendSync() with '${channel}' channel without listeners.`);
}
this.emit('ipc-message-sync', event, channel, ...args);
for (const ipcEmitter of ipcEmitters) {
ipcEmitter?.emit(channel, event, ...args);
}
}
});
this.on('-ipc-ports', function (this: Electron.WebContents, event: Electron.IpcMainEvent, internal: boolean, channel: string, message: any, ports: any[]) {
addSenderToEvent(event, this);
event.ports = ports.map(p => new MessagePortMain(p));
const ipcEmitters = getIpcEmittersForEvent(event);
for (const ipcEmitter of ipcEmitters) {
ipcEmitter?.emit(channel, event, message);
}
});
this.on('render-process-gone', (event, details) => {
app.emit('render-process-gone', event, this, details);

View File

@@ -155,7 +155,7 @@ const createGuest = function (embedder: Electron.WebContents, embedderFrameId: n
}
// Dispatch guest's IPC messages to embedder.
guest.on('ipc-message-host' as any, function (event: Electron.IpcMainEvent, channel: string, args: any[]) {
guest.on('-ipc-message-host' as any, function (event: Electron.IpcMainEvent, channel: string, args: any[]) {
sendToEmbedder(IPC_MESSAGES.GUEST_VIEW_INTERNAL_DISPATCH_EVENT, 'ipc-message', {
frameId: [event.processId, event.frameId],
channel,

View File

@@ -2,8 +2,17 @@ import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal';
import { MessagePortMain } from '@electron/internal/browser/message-port-main';
import type { ServiceWorkerMain } from 'electron/main';
import { ipcMain } from 'electron/main';
const v8Util = process._linkedBinding('electron_common_v8_util');
const webFrameMainBinding = process._linkedBinding('electron_browser_web_frame_main');
const addReplyToEvent = (event: Electron.IpcMainEvent) => {
const { processId, frameId } = event;
event.reply = (channel: string, ...args: any[]) => {
event.sender.sendToFrame([processId, frameId], channel, ...args);
};
};
const addReturnValueToEvent = (event: Electron.IpcMainEvent | Electron.IpcMainServiceWorkerEvent) => {
Object.defineProperty(event, 'returnValue', {
@@ -12,26 +21,52 @@ const addReturnValueToEvent = (event: Electron.IpcMainEvent | Electron.IpcMainSe
});
};
const getServiceWorkerFromEvent = (event: Electron.IpcMainServiceWorkerEvent | Electron.IpcMainServiceWorkerInvokeEvent): ServiceWorkerMain | undefined => {
return event.session.serviceWorkers._getWorkerFromVersionIDIfExists(event.versionId);
};
const addServiceWorkerPropertyToEvent = (event: Electron.IpcMainServiceWorkerEvent | Electron.IpcMainServiceWorkerInvokeEvent) => {
Object.defineProperty(event, 'serviceWorker', {
get: () => event.session.serviceWorkers.getWorkerFromVersionID(event.versionId)
});
};
/**
* Cached IPC emitters sorted by dispatch priority.
* Caching is used to avoid frequent array allocations.
*/
const cachedIpcEmitters: (ElectronInternal.IpcMainInternal | undefined)[] = [
undefined, // WebFrameMain ipc
undefined, // WebContents ipc
ipcMain
];
// Get list of relevant IPC emitters for dispatch.
const getIpcEmittersForFrameEvent = (event: Electron.IpcMainEvent | Electron.IpcMainInvokeEvent): (ElectronInternal.IpcMainInternal | undefined)[] => {
// Lookup by FrameTreeNode ID to ensure IPCs received after a frame swap are
// always received. This occurs when a RenderFrame sends an IPC while it's
// unloading and its internal state is pending deletion.
const { frameTreeNodeId } = event;
const webFrameByFtn = frameTreeNodeId ? webFrameMainBinding._fromFtnIdIfExists(frameTreeNodeId) : undefined;
cachedIpcEmitters[0] = webFrameByFtn?.ipc;
cachedIpcEmitters[1] = event.sender.ipc;
return cachedIpcEmitters;
};
/**
* Listens for IPC dispatch events on `api`.
*
* NOTE: Currently this only supports dispatching IPCs for ServiceWorkerMain.
*/
export function addIpcDispatchListeners (api: NodeJS.EventEmitter, serviceWorkers: Electron.ServiceWorkers) {
const getServiceWorkerFromEvent = (event: Electron.IpcMainServiceWorkerEvent | Electron.IpcMainServiceWorkerInvokeEvent): ServiceWorkerMain | undefined => {
return serviceWorkers._getWorkerFromVersionIDIfExists(event.versionId);
};
const addServiceWorkerPropertyToEvent = (event: Electron.IpcMainServiceWorkerEvent | Electron.IpcMainServiceWorkerInvokeEvent) => {
Object.defineProperty(event, 'serviceWorker', {
get: () => serviceWorkers.getWorkerFromVersionID(event.versionId)
});
};
export function addIpcDispatchListeners (api: NodeJS.EventEmitter) {
api.on('-ipc-message' as any, function (event: Electron.IpcMainEvent | Electron.IpcMainServiceWorkerEvent, channel: string, args: any[]) {
const internal = v8Util.getHiddenValue<boolean>(event, 'internal');
if (internal) {
ipcMainInternal.emit(channel, event, ...args);
} else if (event.type === 'frame') {
addReplyToEvent(event);
event.sender.emit('ipc-message', event, channel, ...args);
for (const ipcEmitter of getIpcEmittersForFrameEvent(event)) {
ipcEmitter?.emit(channel, event, ...args);
}
} else if (event.type === 'service-worker') {
addServiceWorkerPropertyToEvent(event);
getServiceWorkerFromEvent(event)?.ipc.emit(channel, event, ...args);
@@ -51,6 +86,8 @@ export function addIpcDispatchListeners (api: NodeJS.EventEmitter, serviceWorker
if (internal) {
targets.push(ipcMainInternal);
} else if (event.type === 'frame') {
targets.push(...getIpcEmittersForFrameEvent(event));
} else if (event.type === 'service-worker') {
addServiceWorkerPropertyToEvent(event);
const workerIpc = getServiceWorkerFromEvent(event)?.ipc;
@@ -75,15 +112,38 @@ export function addIpcDispatchListeners (api: NodeJS.EventEmitter, serviceWorker
addReturnValueToEvent(event);
if (internal) {
ipcMainInternal.emit(channel, event, ...args);
} else if (event.type === 'frame') {
addReplyToEvent(event);
const webContents = event.sender;
const ipcEmitters = getIpcEmittersForFrameEvent(event);
if (
webContents.listenerCount('ipc-message-sync') === 0 &&
ipcEmitters.every(emitter => !emitter || emitter.listenerCount(channel) === 0)
) {
console.warn(`WebContents #${webContents.id} called ipcRenderer.sendSync() with '${channel}' channel without listeners.`);
}
webContents.emit('ipc-message-sync', event, channel, ...args);
for (const ipcEmitter of ipcEmitters) {
ipcEmitter?.emit(channel, event, ...args);
}
} else if (event.type === 'service-worker') {
addServiceWorkerPropertyToEvent(event);
getServiceWorkerFromEvent(event)?.ipc.emit(channel, event, ...args);
}
} as any);
api.on('-ipc-message-host', function (event: Electron.IpcMainEvent, channel: string, args: any[]) {
event.sender.emit('-ipc-message-host', event, channel, args);
});
api.on('-ipc-ports' as any, function (event: Electron.IpcMainEvent | Electron.IpcMainServiceWorkerEvent, channel: string, message: any, ports: any[]) {
event.ports = ports.map(p => new MessagePortMain(p));
if (event.type === 'service-worker') {
if (event.type === 'frame') {
const ipcEmitters = getIpcEmittersForFrameEvent(event);
for (const ipcEmitter of ipcEmitters) {
ipcEmitter?.emit(channel, event, message);
}
} if (event.type === 'service-worker') {
addServiceWorkerPropertyToEvent(event);
getServiceWorkerFromEvent(event)?.ipc.emit(channel, event, message);
}

View File

@@ -20,10 +20,10 @@ index 2cdcbc346175eeee69402ecee7f169e61c655199..f7226fe711e4214b216ea2c5173a0212
case ssl_open_record_error:
diff --git a/ssl/ssl_lib.cc b/ssl/ssl_lib.cc
index 98bd21eed9b71d2339c1fbc19a294cc0f00fe43b..87b6a657b4a5a5423299febb703ea5122be0bf9c 100644
index c859ea612ce2e6be80c6351d85fae230ca5bc2dd..5f4ffedb3b19dee4eef62e2033b0000847167111 100644
--- a/ssl/ssl_lib.cc
+++ b/ssl/ssl_lib.cc
@@ -1198,7 +1198,7 @@ int SSL_get_error(const SSL *ssl, int ret_code) {
@@ -1196,7 +1196,7 @@ int SSL_get_error(const SSL *ssl, int ret_code) {
}
if (ret_code == 0) {
@@ -32,7 +32,7 @@ index 98bd21eed9b71d2339c1fbc19a294cc0f00fe43b..87b6a657b4a5a5423299febb703ea512
return SSL_ERROR_ZERO_RETURN;
}
// An EOF was observed which violates the protocol, and the underlying
@@ -2565,13 +2565,7 @@ void *SSL_CTX_get_ex_data(const SSL_CTX *ctx, int idx) {
@@ -2563,13 +2563,7 @@ void *SSL_CTX_get_ex_data(const SSL_CTX *ctx, int idx) {
return CRYPTO_get_ex_data(&ctx->ex_data, idx);
}

View File

@@ -37,7 +37,6 @@ expose_setuseragent_on_networkcontext.patch
feat_add_set_theme_source_to_allow_apps_to.patch
add_webmessageportconverter_entangleandinjectmessageportchannel.patch
ignore_rc_check.patch
remove_usage_of_incognito_apis_in_the_spellchecker.patch
allow_disabling_blink_scheduler_throttling_per_renderview.patch
hack_plugin_response_interceptor_to_point_to_electron.patch
feat_add_support_for_overriding_the_base_spellchecker_download_url.patch
@@ -84,7 +83,6 @@ disable_freezing_flags_after_init_in_node.patch
short-circuit_permissions_checks_in_mediastreamdevicescontroller.patch
chore_add_electron_deps_to_gitignores.patch
chore_allow_chromium_to_handle_synthetic_mouse_events_for_touch.patch
add_maximized_parameter_to_linuxui_getwindowframeprovider.patch
add_electron_deps_to_license_credits_file.patch
fix_crash_loading_non-standard_schemes_in_iframes.patch
create_browser_v8_snapshot_file_name_fuse.patch
@@ -96,7 +94,6 @@ fix_remove_caption-removing_style_call.patch
build_allow_electron_to_use_exec_script.patch
chore_introduce_blocking_api_for_electron.patch
chore_patch_out_partition_attribute_dcheck_for_webviews.patch
chore_patch_out_profile_methods_in_profile_selections_cc.patch
add_gin_converter_support_for_arraybufferview.patch
chore_defer_usb_service_getdevices_request_until_usb_service_is.patch
refactor_expose_hostimportmoduledynamically_and.patch
@@ -137,9 +134,8 @@ refactor_unfilter_unresponsive_events.patch
build_disable_thin_lto_mac.patch
build_add_public_config_simdutf_config.patch
revert_code_health_clean_up_stale_macwebcontentsocclusion.patch
ignore_parse_errors_for_pkey_appusermodel_toastactivatorclsid.patch
feat_add_signals_when_embedder_cleanup_callbacks_run_for.patch
feat_separate_content_settings_callback_for_sync_and_async_clipboard.patch
cherry-pick-dd8e2822e507.patch
fix_osr_stutter_in_both_cpu_and_gpu_capture_when_page_has_animation.patch
ignore_parse_errors_for_pkey_appusermodel_toastactivatorclsid.patch
fix_win32_synchronous_spellcheck.patch
chore_remove_conflicting_allow_unsafe_libc_calls.patch

View File

@@ -10,7 +10,7 @@ This patch makes three changes to Accelerator::GetShortcutText to improve shortc
3. Ctrl-Shift-= and Ctrl-Plus show up as such
diff --git a/ui/base/accelerators/accelerator.cc b/ui/base/accelerators/accelerator.cc
index 1f90103d1ddb04a24797cf1214c3d0c862d77e9f..67eec0d3526349448a56acf9724806aec06104df 100644
index 5590f9d425229d87373c5b53651d2e2d17b779e4..407cbd7e7811e3053e35e26f24e3c049cdd59a46 100644
--- a/ui/base/accelerators/accelerator.cc
+++ b/ui/base/accelerators/accelerator.cc
@@ -12,6 +12,7 @@
@@ -48,20 +48,11 @@ index 1f90103d1ddb04a24797cf1214c3d0c862d77e9f..67eec0d3526349448a56acf9724806ae
const std::u16string& shortcut) const {
std::u16string result = shortcut;
- if (IsShiftDown())
+ if (!shifted_char && IsShiftDown())
- if (IsShiftDown()) {
+ if (!shifted_char && IsShiftDown()) {
result = ApplyModifierToAcceleratorString(result, IDS_APP_SHIFT_KEY);
}
// Note that we use 'else-if' in order to avoid using Ctrl+Alt as a shortcut.
@@ -325,7 +335,7 @@ std::u16string Accelerator::ApplyLongFormModifiers(
// more information.
if (IsCtrlDown())
result = ApplyModifierToAcceleratorString(result, IDS_APP_CTRL_KEY);
- else if (IsAltDown())
+ if (IsAltDown())
result = ApplyModifierToAcceleratorString(result, IDS_APP_ALT_KEY);
if (IsCmdDown()) {
diff --git a/ui/base/accelerators/accelerator.h b/ui/base/accelerators/accelerator.h
index 198c7469f410d3516b8a18493c5e4588d02487c2..e4995824ae2f3bb8045a3841a6213a4b315845a8 100644
--- a/ui/base/accelerators/accelerator.h

View File

@@ -10,10 +10,10 @@ Allows Electron to restore WER when ELECTRON_DEFAULT_ERROR_MODE is set.
This should be upstreamed.
diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc
index 5480d568880a74ab41edfeee98eafdb893889e98..88269b39898481f1dfc2549f4d73040256c0bb43 100644
index 0d8bb93bf146c3058a30693673f0c23fdea90ae8..55f76337a445345c06531ce05e603db30daf759f 100644
--- a/content/gpu/gpu_main.cc
+++ b/content/gpu/gpu_main.cc
@@ -263,6 +263,10 @@ int GpuMain(MainFunctionParams parameters) {
@@ -268,6 +268,10 @@ int GpuMain(MainFunctionParams parameters) {
// to the GpuProcessHost once the GpuServiceImpl has started.
viz::GpuServiceImpl::InstallPreInitializeLogHandler();
@@ -24,7 +24,7 @@ index 5480d568880a74ab41edfeee98eafdb893889e98..88269b39898481f1dfc2549f4d730402
// We are experiencing what appear to be memory-stomp issues in the GPU
// process. These issues seem to be impacting the task executor and listeners
// registered to it. Create the task executor on the heap to guard against
@@ -373,7 +377,6 @@ int GpuMain(MainFunctionParams parameters) {
@@ -378,7 +382,6 @@ int GpuMain(MainFunctionParams parameters) {
#endif
const bool dead_on_arrival = !init_success;

View File

@@ -10,7 +10,7 @@ DidCreateScriptContext is called, not all JS APIs are available in the
context, which can cause some preload scripts to trip.
diff --git a/content/public/renderer/render_frame_observer.h b/content/public/renderer/render_frame_observer.h
index bb4d6c56978469d3c2efb4b2d519a7a69ef538b0..b164e89a394df060f6154ad2acadf15dc1f48fc6 100644
index 44da0544b778d6ff4c14b6f4e8463cb8260d2f0d..8ae8939af4141a684b7a6d50a43e1abb354ea028 100644
--- a/content/public/renderer/render_frame_observer.h
+++ b/content/public/renderer/render_frame_observer.h
@@ -149,6 +149,8 @@ class CONTENT_EXPORT RenderFrameObserver
@@ -23,10 +23,10 @@ index bb4d6c56978469d3c2efb4b2d519a7a69ef538b0..b164e89a394df060f6154ad2acadf15d
int32_t world_id) {}
virtual void DidClearWindowObject() {}
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 256275528ddbdbc22736e73e43d385d9cdfca264..a0884192a3137dade6704f3a26d726105478bf72 100644
index 76ab61d5d388b70a0da0999ff2d2ea97f39f6fc6..0d7e92d25f4ba3b9375b590d8f7dd2955fb1bf78 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -4779,6 +4779,12 @@ void RenderFrameImpl::DidCreateScriptContext(v8::Local<v8::Context> context,
@@ -4786,6 +4786,12 @@ void RenderFrameImpl::DidCreateScriptContext(v8::Local<v8::Context> context,
observer.DidCreateScriptContext(context, world_id);
}
@@ -40,10 +40,10 @@ index 256275528ddbdbc22736e73e43d385d9cdfca264..a0884192a3137dade6704f3a26d72610
int world_id) {
for (auto& observer : observers_)
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index e4ac51a559845b299c10410adad7163a4bb1d80e..9fcc915ebb81d9008db4196560ed382e7aeb1b6e 100644
index add44302103a44dc5d14f79a4087a9b0a11fc239..5705d51eb4edc7a2534682dffe43ca9dc0dfe98b 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -652,6 +652,8 @@ class CONTENT_EXPORT RenderFrameImpl
@@ -653,6 +653,8 @@ class CONTENT_EXPORT RenderFrameImpl
void DidObserveLayoutShift(double score, bool after_input_or_scroll) override;
void DidCreateScriptContext(v8::Local<v8::Context> context,
int world_id) override;
@@ -53,10 +53,10 @@ index e4ac51a559845b299c10410adad7163a4bb1d80e..9fcc915ebb81d9008db4196560ed382e
int world_id) override;
void DidChangeScrollOffset() override;
diff --git a/third_party/blink/public/web/web_local_frame_client.h b/third_party/blink/public/web/web_local_frame_client.h
index e0791aeed4ae6bee2451036682bff355c189c530..8d63259537e5b7a892a065b3c0ad42229284e252 100644
index cfa2a64d94d5d48351ba039a9552b701702c0fec..88bf84d812eda3373c8435a714265d5099270a3f 100644
--- a/third_party/blink/public/web/web_local_frame_client.h
+++ b/third_party/blink/public/web/web_local_frame_client.h
@@ -663,6 +663,9 @@ class BLINK_EXPORT WebLocalFrameClient {
@@ -664,6 +664,9 @@ class BLINK_EXPORT WebLocalFrameClient {
virtual void DidCreateScriptContext(v8::Local<v8::Context>,
int32_t world_id) {}
@@ -79,10 +79,10 @@ index f7e0144c74f879e9b29871d7c372b99e127966bb..c3cd7b77ed282f212a56d151dc3fbec3
if (World().IsMainWorld()) {
probe::DidCreateMainWorldContext(GetFrame());
diff --git a/third_party/blink/renderer/core/frame/local_frame_client.h b/third_party/blink/renderer/core/frame/local_frame_client.h
index cae725c13d9035d44347f679dfeeaae65d3dfdff..0446107a44351c92346151e72e1202cc84b7f556 100644
index 8bb6b0465069529f79aaec21792e8b159535b3e9..f9782531c639d07002dda07732750a0007109468 100644
--- a/third_party/blink/renderer/core/frame/local_frame_client.h
+++ b/third_party/blink/renderer/core/frame/local_frame_client.h
@@ -300,6 +300,8 @@ class CORE_EXPORT LocalFrameClient : public FrameClient {
@@ -299,6 +299,8 @@ class CORE_EXPORT LocalFrameClient : public FrameClient {
virtual void DidCreateScriptContext(v8::Local<v8::Context>,
int32_t world_id) = 0;
@@ -92,7 +92,7 @@ index cae725c13d9035d44347f679dfeeaae65d3dfdff..0446107a44351c92346151e72e1202cc
int32_t world_id) = 0;
virtual bool AllowScriptExtensions() = 0;
diff --git a/third_party/blink/renderer/core/frame/local_frame_client_impl.cc b/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
index fc0114fc50bcc54788462015454644ff91c6d644..27fa62ebf059fa657d38d8b100f431c46c503bef 100644
index cfcabe9a443adae146c816419e0845cb6fc18404..717587c2cfe0b0228ae40adce04139cb54a34d0e 100644
--- a/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
@@ -296,6 +296,13 @@ void LocalFrameClientImpl::DidCreateScriptContext(
@@ -110,10 +110,10 @@ index fc0114fc50bcc54788462015454644ff91c6d644..27fa62ebf059fa657d38d8b100f431c4
v8::Local<v8::Context> context,
int32_t world_id) {
diff --git a/third_party/blink/renderer/core/frame/local_frame_client_impl.h b/third_party/blink/renderer/core/frame/local_frame_client_impl.h
index 4b8bdefc3ae0d70f72bc922009aecebeca88edd7..25d8a758401a5a28429b8c387768fdab467c584c 100644
index 4c7375a27a22f04694e14fecc17d633734d4cccc..ea2a32b151aaf07b5704e463d01714eb41680afb 100644
--- a/third_party/blink/renderer/core/frame/local_frame_client_impl.h
+++ b/third_party/blink/renderer/core/frame/local_frame_client_impl.h
@@ -81,6 +81,8 @@ class CORE_EXPORT LocalFrameClientImpl final : public LocalFrameClient {
@@ -82,6 +82,8 @@ class CORE_EXPORT LocalFrameClientImpl final : public LocalFrameClient {
void DidCreateScriptContext(v8::Local<v8::Context>,
int32_t world_id) override;
@@ -123,7 +123,7 @@ index 4b8bdefc3ae0d70f72bc922009aecebeca88edd7..25d8a758401a5a28429b8c387768fdab
int32_t world_id) override;
diff --git a/third_party/blink/renderer/core/loader/empty_clients.h b/third_party/blink/renderer/core/loader/empty_clients.h
index 2d2e02500d44b1738dae8840f86bd61fbe9b5456..0b4ebb4f86cb2ff1e704495c7b0800d9c63b03f4 100644
index 6b967bd0b430732732ef30fb404e615a55c7c364..6bba885bca8f65744bcd03efcb98725649687856 100644
--- a/third_party/blink/renderer/core/loader/empty_clients.h
+++ b/third_party/blink/renderer/core/loader/empty_clients.h
@@ -415,6 +415,8 @@ class CORE_EXPORT EmptyLocalFrameClient : public LocalFrameClient {

View File

@@ -1,216 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: msizanoen1 <msizanoen@qtmlabs.xyz>
Date: Tue, 19 Jul 2022 05:11:06 +0200
Subject: Add maximized parameter to LinuxUI::GetWindowFrameProvider
This allows ClientFrameViewLinux to instruct the toolkit to draw the window
decorations in maximized mode where needed, preventing empty space caused
by decoration shadows and rounded titlebars around the window while maximized.
diff --git a/ui/gtk/gtk_ui.cc b/ui/gtk/gtk_ui.cc
index 771c253082e2ab1103fd22218d56bf1a8d5ba7ab..d50528171925436a34ddd61ff7a0e7dee998d10c 100644
--- a/ui/gtk/gtk_ui.cc
+++ b/ui/gtk/gtk_ui.cc
@@ -584,11 +584,12 @@ std::unique_ptr<ui::NavButtonProvider> GtkUi::CreateNavButtonProvider() {
}
ui::WindowFrameProvider* GtkUi::GetWindowFrameProvider(bool solid_frame,
- bool tiled) {
- auto& provider = frame_providers_[solid_frame][tiled];
+ bool tiled,
+ bool maximized) {
+ auto& provider = frame_providers_[solid_frame][tiled][maximized];
if (!provider) {
provider =
- std::make_unique<gtk::WindowFrameProviderGtk>(solid_frame, tiled);
+ std::make_unique<gtk::WindowFrameProviderGtk>(solid_frame, tiled, maximized);
}
return provider.get();
}
diff --git a/ui/gtk/gtk_ui.h b/ui/gtk/gtk_ui.h
index 32051374590fc1179e5cfa21ebc34474d2ce0190..09e9399a67d30d4686f4c141050538b8dde9f301 100644
--- a/ui/gtk/gtk_ui.h
+++ b/ui/gtk/gtk_ui.h
@@ -110,7 +110,8 @@ class GtkUi : public ui::LinuxUiAndTheme {
void SetAccentColor(std::optional<SkColor> accent_color) override;
std::unique_ptr<ui::NavButtonProvider> CreateNavButtonProvider() override;
ui::WindowFrameProvider* GetWindowFrameProvider(bool solid_frame,
- bool tiled) override;
+ bool tiled,
+ bool maximized) override;
private:
using TintMap = std::map<int, color_utils::HSL>;
@@ -199,7 +200,7 @@ class GtkUi : public ui::LinuxUiAndTheme {
// while Chrome is running. This 2D array is indexed first by whether the
// frame is translucent (0) or solid(1), then by whether the frame is normal
// (0) or tiled (1).
- std::unique_ptr<ui::WindowFrameProvider> frame_providers_[2][2];
+ std::unique_ptr<ui::WindowFrameProvider> frame_providers_[2][2][2];
// Objects to notify when the window frame button order changes.
base::ObserverList<ui::WindowButtonOrderObserver>::Unchecked
diff --git a/ui/gtk/window_frame_provider_gtk.cc b/ui/gtk/window_frame_provider_gtk.cc
index e24cce85b453ecee9a4854bfdf7b8eeb6814f8c3..d3e3e9b918011c433b4ac6ded245803410ccb5d4 100644
--- a/ui/gtk/window_frame_provider_gtk.cc
+++ b/ui/gtk/window_frame_provider_gtk.cc
@@ -29,20 +29,23 @@ constexpr int kMaxFrameSizeDip = 64;
// will get an incorrect hint as to which pixels are fully opaque.
constexpr int kMaxCornerRadiusDip = 32;
-GtkCssContext WindowContext(bool solid_frame, bool tiled, bool focused) {
+GtkCssContext WindowContext(bool solid_frame, bool tiled, bool maximized, bool focused) {
std::string selector = "window.background.";
selector += solid_frame ? "solid-csd" : "csd";
if (tiled) {
selector += ".tiled";
}
+ if (maximized) {
+ selector += ".maximized";
+ }
if (!focused) {
selector += ":inactive";
}
return AppendCssNodeToStyleContext({}, selector);
}
-GtkCssContext DecorationContext(bool solid_frame, bool tiled, bool focused) {
- auto context = WindowContext(solid_frame, tiled, focused);
+GtkCssContext DecorationContext(bool solid_frame, bool tiled, bool maximized, bool focused) {
+ auto context = WindowContext(solid_frame, tiled, maximized, focused);
// GTK4 renders the decoration directly on the window.
if (!GtkCheckVersion(4)) {
context = AppendCssNodeToStyleContext(context, "decoration");
@@ -61,8 +64,8 @@ GtkCssContext DecorationContext(bool solid_frame, bool tiled, bool focused) {
return context;
}
-GtkCssContext HeaderContext(bool solid_frame, bool tiled, bool focused) {
- auto context = WindowContext(solid_frame, tiled, focused);
+GtkCssContext HeaderContext(bool solid_frame, bool tiled, bool maximized, bool focused) {
+ auto context = WindowContext(solid_frame, tiled, maximized, focused);
context =
AppendCssNodeToStyleContext(context, "headerbar.header-bar.titlebar");
if (!focused) {
@@ -117,8 +120,8 @@ int ComputeTopCornerRadius() {
// need to experimentally determine the corner radius by rendering a sample.
// Additionally, in GTK4, the headerbar corners get clipped by the window
// rather than the headerbar having its own rounded corners.
- auto context = GtkCheckVersion(4) ? DecorationContext(false, false, false)
- : HeaderContext(false, false, false);
+ auto context = GtkCheckVersion(4) ? DecorationContext(false, false, false, false)
+ : HeaderContext(false, false, false, false);
ApplyCssToContext(context, R"(window, headerbar {
background-image: none;
background-color: black;
@@ -152,7 +155,7 @@ int ComputeTopCornerRadius() {
bool HeaderIsTranslucent() {
// The arbitrary square size to render a sample header.
constexpr int kHeaderSize = 32;
- auto context = HeaderContext(false, false, false);
+ auto context = HeaderContext(false, false, false, false);
double opacity = GetOpacityFromContext(context);
if (opacity < 1.0) {
return true;
@@ -186,8 +189,8 @@ WindowFrameProviderGtk::Asset& WindowFrameProviderGtk::Asset::operator=(
WindowFrameProviderGtk::Asset::~Asset() = default;
-WindowFrameProviderGtk::WindowFrameProviderGtk(bool solid_frame, bool tiled)
- : solid_frame_(solid_frame), tiled_(tiled) {
+WindowFrameProviderGtk::WindowFrameProviderGtk(bool solid_frame, bool tiled, bool maximized)
+ : solid_frame_(solid_frame), tiled_(tiled), maximized_(maximized) {
GtkSettings* settings = gtk_settings_get_default();
// Unretained() is safe since WindowFrameProviderGtk will own the signals.
auto callback = base::BindRepeating(&WindowFrameProviderGtk::OnThemeChanged,
@@ -337,7 +340,7 @@ void WindowFrameProviderGtk::PaintWindowFrame(gfx::Canvas* canvas,
auto header =
PaintHeaderbar({client_bounds_px.width(), top_area_height_px},
- HeaderContext(solid_frame_, tiled_, focused), scale);
+ HeaderContext(solid_frame_, tiled_, maximized_, focused), scale);
image = gfx::ImageSkia::CreateFrom1xBitmap(header);
// In GTK4, the headerbar gets clipped by the window.
if (GtkCheckVersion(4)) {
@@ -366,7 +369,7 @@ WindowFrameProviderGtk::Asset& WindowFrameProviderGtk::GetOrCreateAsset(
gfx::Rect frame_bounds_dip(kMaxFrameSizeDip, kMaxFrameSizeDip,
2 * kMaxFrameSizeDip, 2 * kMaxFrameSizeDip);
- auto focused_context = DecorationContext(solid_frame_, tiled_, true);
+ auto focused_context = DecorationContext(solid_frame_, tiled_, maximized_, true);
frame_bounds_dip.Inset(-GtkStyleContextGetPadding(focused_context));
frame_bounds_dip.Inset(-GtkStyleContextGetBorder(focused_context));
gfx::Size bitmap_size(BitmapSizePx(asset), BitmapSizePx(asset));
@@ -374,7 +377,7 @@ WindowFrameProviderGtk::Asset& WindowFrameProviderGtk::GetOrCreateAsset(
focused_context, scale);
asset.unfocused_bitmap =
PaintBitmap(bitmap_size, gfx::RectF(frame_bounds_dip),
- DecorationContext(solid_frame_, tiled_, false), scale);
+ DecorationContext(solid_frame_, tiled_, maximized_, false), scale);
return asset;
}
diff --git a/ui/gtk/window_frame_provider_gtk.h b/ui/gtk/window_frame_provider_gtk.h
index 4faaae32a203bfa57f3e61c391dc6917c4a0bf59..94050a0136b78730f607f42991742e0434948d0e 100644
--- a/ui/gtk/window_frame_provider_gtk.h
+++ b/ui/gtk/window_frame_provider_gtk.h
@@ -20,7 +20,7 @@ namespace gtk {
class WindowFrameProviderGtk : public ui::WindowFrameProvider {
public:
- WindowFrameProviderGtk(bool solid_frame, bool tiled);
+ WindowFrameProviderGtk(bool solid_frame, bool tiled, bool maximized);
WindowFrameProviderGtk(const WindowFrameProviderGtk&) = delete;
WindowFrameProviderGtk& operator=(const WindowFrameProviderGtk&) = delete;
@@ -65,6 +65,8 @@ class WindowFrameProviderGtk : public ui::WindowFrameProvider {
// Input parameters used for drawing.
const bool solid_frame_;
const bool tiled_;
+ // Whether to draw the window decorations as maximized.
+ const bool maximized_;
// Scale-independent metric calculated based on the bitmaps.
std::optional<gfx::Insets> frame_thickness_dip_;
diff --git a/ui/linux/fallback_linux_ui.cc b/ui/linux/fallback_linux_ui.cc
index e4a7f8eb0ef8bacd2d4e4231d0990b4a01021626..3477542587b08691c164941b2c2e3b22050231ca 100644
--- a/ui/linux/fallback_linux_ui.cc
+++ b/ui/linux/fallback_linux_ui.cc
@@ -143,7 +143,8 @@ FallbackLinuxUi::CreateNavButtonProvider() {
ui::WindowFrameProvider* FallbackLinuxUi::GetWindowFrameProvider(
bool solid_frame,
- bool tiled) {
+ bool tiled,
+ bool maximized) {
return nullptr;
}
diff --git a/ui/linux/fallback_linux_ui.h b/ui/linux/fallback_linux_ui.h
index 0800349bc18753e6a41a938c70213dd7dd123d0d..a1553e0cb1fac188fb2c74e10163c52dead02f29 100644
--- a/ui/linux/fallback_linux_ui.h
+++ b/ui/linux/fallback_linux_ui.h
@@ -67,7 +67,8 @@ class FallbackLinuxUi : public LinuxUiAndTheme {
void SetAccentColor(std::optional<SkColor> accent_color) override;
std::unique_ptr<ui::NavButtonProvider> CreateNavButtonProvider() override;
ui::WindowFrameProvider* GetWindowFrameProvider(bool solid_frame,
- bool tiled) override;
+ bool tiled,
+ bool maximized) override;
private:
std::optional<gfx::FontRenderParams> default_font_render_params_;
diff --git a/ui/linux/linux_ui.h b/ui/linux/linux_ui.h
index 1e59679d206462f72495d587740ac48ba0fa30df..090e770ac2f8e5231f2bdd11247cacaceb0c7ef6 100644
--- a/ui/linux/linux_ui.h
+++ b/ui/linux/linux_ui.h
@@ -306,7 +306,8 @@ class COMPONENT_EXPORT(LINUX_UI) LinuxUiTheme {
// The returned object is not owned by the caller and will remain alive until
// the process ends.
virtual WindowFrameProvider* GetWindowFrameProvider(bool solid_frame,
- bool tiled) = 0;
+ bool tiled,
+ bool maximized) = 0;
protected:
LinuxUiTheme();

View File

@@ -8,10 +8,10 @@ was removed as part of the Raw Clipboard API scrubbing.
https://bugs.chromium.org/p/chromium/issues/detail?id=1217643
diff --git a/ui/base/clipboard/scoped_clipboard_writer.cc b/ui/base/clipboard/scoped_clipboard_writer.cc
index 48f0b7a7812a073c31ac1d7af156470efbb1b051..296ee0b51e3bdd68ceb63df4fbe5813a91669b7c 100644
index fd162a607424bd4d0b324ccc7270522eb3b6a991..df1d5564a52ef67b447bbc222ceb1f864eb3dd81 100644
--- a/ui/base/clipboard/scoped_clipboard_writer.cc
+++ b/ui/base/clipboard/scoped_clipboard_writer.cc
@@ -227,6 +227,16 @@ void ScopedClipboardWriter::WriteData(const std::u16string& format,
@@ -230,6 +230,16 @@ void ScopedClipboardWriter::WriteData(std::u16string_view format,
}
}
@@ -29,12 +29,12 @@ index 48f0b7a7812a073c31ac1d7af156470efbb1b051..296ee0b51e3bdd68ceb63df4fbe5813a
objects_.clear();
raw_objects_.clear();
diff --git a/ui/base/clipboard/scoped_clipboard_writer.h b/ui/base/clipboard/scoped_clipboard_writer.h
index e63c08b06c00dc0b1bd9c8339d3c6375e952e4f7..9e35ab7e6512c749fdea75fa863a97318541d350 100644
index d8fd611e88c22f2c1319da769dcd14cc218f9c90..f17304e1e9fd202dc4e1b7724031dc4c333a4baf 100644
--- a/ui/base/clipboard/scoped_clipboard_writer.h
+++ b/ui/base/clipboard/scoped_clipboard_writer.h
@@ -88,6 +88,10 @@ class COMPONENT_EXPORT(UI_BASE_CLIPBOARD) ScopedClipboardWriter {
@@ -87,6 +87,10 @@ class COMPONENT_EXPORT(UI_BASE_CLIPBOARD) ScopedClipboardWriter {
// This is only used to write custom format data.
void WriteData(const std::u16string& format, mojo_base::BigBuffer data);
void WriteData(std::u16string_view format, mojo_base::BigBuffer data);
+ // write raw (non-pickled) data to the clipboard
+ void WriteUnsafeRawData(const std::u16string& format,

View File

@@ -10,10 +10,10 @@ usage of BrowserList and Browser as we subclass related methods and use our
WindowList.
diff --git a/chrome/browser/ui/webui/accessibility/accessibility_ui.cc b/chrome/browser/ui/webui/accessibility/accessibility_ui.cc
index 90d8660e8a109ac547d9ab8feacc641e8a6c5a57..fe176f7b2106d767da8b28864fd574a502a5f48e 100644
index ff25e6eb48deb339ab92152eb09ad856068fd589..4a1f81429f0857e129e31103b026079de13fd826 100644
--- a/chrome/browser/ui/webui/accessibility/accessibility_ui.cc
+++ b/chrome/browser/ui/webui/accessibility/accessibility_ui.cc
@@ -47,6 +47,7 @@
@@ -48,6 +48,7 @@
#include "content/public/browser/web_contents_observer.h"
#include "content/public/browser/web_contents_user_data.h"
#include "content/public/browser/web_ui_data_source.h"
@@ -21,7 +21,7 @@ index 90d8660e8a109ac547d9ab8feacc641e8a6c5a57..fe176f7b2106d767da8b28864fd574a5
#include "ui/accessibility/accessibility_features.h"
#include "ui/accessibility/ax_updates_and_events.h"
#include "ui/accessibility/platform/ax_platform_node.h"
@@ -170,7 +171,7 @@ base::Value::Dict BuildTargetDescriptor(content::RenderViewHost* rvh) {
@@ -171,7 +172,7 @@ base::Value::Dict BuildTargetDescriptor(content::RenderViewHost* rvh) {
rvh->GetRoutingID(), accessibility_mode);
}
@@ -30,7 +30,7 @@ index 90d8660e8a109ac547d9ab8feacc641e8a6c5a57..fe176f7b2106d767da8b28864fd574a5
base::Value::Dict BuildTargetDescriptor(Browser* browser) {
base::Value::Dict target_data;
target_data.Set(kSessionIdField, browser->session_id().id());
@@ -191,7 +192,7 @@ void HandleAccessibilityRequestCallback(
@@ -192,7 +193,7 @@ void HandleAccessibilityRequestCallback(
DCHECK(ShouldHandleAccessibilityRequestCallback(path));
base::Value::Dict data;
@@ -39,7 +39,7 @@ index 90d8660e8a109ac547d9ab8feacc641e8a6c5a57..fe176f7b2106d767da8b28864fd574a5
ui::AXMode mode =
content::BrowserAccessibilityState::GetInstance()->GetAccessibilityMode();
bool is_native_enabled = content::BrowserAccessibilityState::GetInstance()
@@ -220,7 +221,7 @@ void HandleAccessibilityRequestCallback(
@@ -221,7 +222,7 @@ void HandleAccessibilityRequestCallback(
data.Set(kPDFPrinting, pdf_printing ? kOn : kOff);
std::string pref_api_type =
@@ -48,7 +48,7 @@ index 90d8660e8a109ac547d9ab8feacc641e8a6c5a57..fe176f7b2106d767da8b28864fd574a5
bool pref_api_type_supported = false;
std::vector<ui::AXApiType::Type> supported_api_types =
@@ -287,11 +288,11 @@ void HandleAccessibilityRequestCallback(
@@ -288,11 +289,11 @@ void HandleAccessibilityRequestCallback(
data.Set(kPagesField, std::move(page_list));
base::Value::List browser_list;
@@ -62,7 +62,7 @@ index 90d8660e8a109ac547d9ab8feacc641e8a6c5a57..fe176f7b2106d767da8b28864fd574a5
data.Set(kBrowsersField, std::move(browser_list));
std::string json_string;
@@ -761,7 +762,8 @@ void AccessibilityUIMessageHandler::SetGlobalString(
@@ -762,7 +763,8 @@ void AccessibilityUIMessageHandler::SetGlobalString(
const std::string value = CheckJSValue(data.FindString(kValueField));
if (string_name == kApiTypeField) {
@@ -72,7 +72,7 @@ index 90d8660e8a109ac547d9ab8feacc641e8a6c5a57..fe176f7b2106d767da8b28864fd574a5
pref->SetString(prefs::kShownAccessibilityApiType, value);
}
}
@@ -815,7 +817,8 @@ void AccessibilityUIMessageHandler::RequestWebContentsTree(
@@ -816,7 +818,8 @@ void AccessibilityUIMessageHandler::RequestWebContentsTree(
AXPropertyFilter::ALLOW_EMPTY);
AddPropertyFilters(property_filters, deny, AXPropertyFilter::DENY);
@@ -82,7 +82,7 @@ index 90d8660e8a109ac547d9ab8feacc641e8a6c5a57..fe176f7b2106d767da8b28864fd574a5
ui::AXApiType::Type api_type =
ui::AXApiType::From(pref->GetString(prefs::kShownAccessibilityApiType));
std::string accessibility_contents =
@@ -842,6 +845,7 @@ void AccessibilityUIMessageHandler::RequestNativeUITree(
@@ -843,6 +846,7 @@ void AccessibilityUIMessageHandler::RequestNativeUITree(
AXPropertyFilter::ALLOW_EMPTY);
AddPropertyFilters(property_filters, deny, AXPropertyFilter::DENY);
@@ -90,7 +90,7 @@ index 90d8660e8a109ac547d9ab8feacc641e8a6c5a57..fe176f7b2106d767da8b28864fd574a5
for (Browser* browser : *BrowserList::GetInstance()) {
if (browser->session_id().id() == session_id) {
base::Value::Dict result = BuildTargetDescriptor(browser);
@@ -854,6 +858,7 @@ void AccessibilityUIMessageHandler::RequestNativeUITree(
@@ -855,6 +859,7 @@ void AccessibilityUIMessageHandler::RequestNativeUITree(
return;
}
}
@@ -98,7 +98,7 @@ index 90d8660e8a109ac547d9ab8feacc641e8a6c5a57..fe176f7b2106d767da8b28864fd574a5
#endif // !BUILDFLAG(IS_ANDROID)
// No browser with the specified |session_id| was found.
base::Value::Dict result;
@@ -897,11 +902,13 @@ void AccessibilityUIMessageHandler::StopRecording(
@@ -898,11 +903,13 @@ void AccessibilityUIMessageHandler::StopRecording(
}
ui::AXApiType::Type AccessibilityUIMessageHandler::GetRecordingApiType() {
@@ -115,7 +115,7 @@ index 90d8660e8a109ac547d9ab8feacc641e8a6c5a57..fe176f7b2106d767da8b28864fd574a5
// Check to see if it is in the supported types list.
if (std::find(supported_types.begin(), supported_types.end(), api_type) ==
supported_types.end()) {
@@ -971,8 +978,11 @@ void AccessibilityUIMessageHandler::RequestAccessibilityEvents(
@@ -972,8 +979,11 @@ void AccessibilityUIMessageHandler::RequestAccessibilityEvents(
// static
void AccessibilityUIMessageHandler::RegisterProfilePrefs(
user_prefs::PrefRegistrySyncable* registry) {

View File

@@ -23,10 +23,10 @@ index 6c679ef877067297ec3bf1a23af6c03a2af8dcf5..1ac93433189580c13b69cd52ce62681a
return receiver_.BindNewEndpointAndPassDedicatedRemote();
}
diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc
index ac0856149902d266654ed245a5b4933ad7f239d0..26560099f3419247b2d27ccce3538ca1b4b65afd 100644
index a387789fe4270739408a9beb32a5ad1a8e51e5f6..43c108bd6b51d293e0f8b1b5393c76c5d167ccef 100644
--- a/content/browser/renderer_host/render_view_host_impl.cc
+++ b/content/browser/renderer_host/render_view_host_impl.cc
@@ -755,6 +755,11 @@ void RenderViewHostImpl::SetBackgroundOpaque(bool opaque) {
@@ -765,6 +765,11 @@ void RenderViewHostImpl::SetBackgroundOpaque(bool opaque) {
GetWidget()->GetAssociatedFrameWidget()->SetBackgroundOpaque(opaque);
}
@@ -51,7 +51,7 @@ index 5fb8a3dc69dc5fc5bfa08e01d8f03707a23c9274..41774b60b8cb7e0a22cedc597dc07ad1
void SendRendererPreferencesToRenderer(
const blink::RendererPreferences& preferences);
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index c25e9ec643e715f4545f44ca1ed827b5a6cf7d96..ee083e550adf7533531ebf2834e400a84e692c41 100644
index 92085aca6bd0c95a73b98e4173c0128d596b77f4..9503beefcbcfe7d99674582ece10a7e551fae96d 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -579,8 +579,8 @@ void RenderWidgetHostViewAura::ShowImpl(PageVisibilityState page_visibility) {

View File

@@ -49,10 +49,10 @@ index e662d4d61595735a30d5c721147a95698d4da3d9..6a0388aad469422dd1c0c2164f8aa858
// its owning reference back to our owning LocalFrame.
client_->Detached(type);
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
index ac54c9ef09fe7a4a94737e76aa186ce6bd4f1f21..79ec1e2b1274160cca97d14a69c36eac4bc36b0f 100644
index 401679f818e7bba02be454f9aa3424e84d36c4af..4da759d7ab6d6fb6b6d4d1648da0e62d7629ad5c 100644
--- a/third_party/blink/renderer/core/frame/local_frame.cc
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
@@ -748,10 +748,6 @@ bool LocalFrame::DetachImpl(FrameDetachType type) {
@@ -746,10 +746,6 @@ bool LocalFrame::DetachImpl(FrameDetachType type) {
}
DCHECK(!view_ || !view_->IsAttached());
@@ -63,7 +63,7 @@ index ac54c9ef09fe7a4a94737e76aa186ce6bd4f1f21..79ec1e2b1274160cca97d14a69c36eac
if (!Client())
return false;
@@ -805,6 +801,11 @@ bool LocalFrame::DetachImpl(FrameDetachType type) {
@@ -803,6 +799,11 @@ bool LocalFrame::DetachImpl(FrameDetachType type) {
DCHECK(!view_->IsAttached());
Client()->WillBeDetached();

View File

@@ -8,10 +8,10 @@ categories in use are known / declared. This patch is required for us
to introduce a new Electron category for Electron-specific tracing.
diff --git a/base/trace_event/builtin_categories.h b/base/trace_event/builtin_categories.h
index 397fd890b7db6aed6f75ee3d685fe4b7c22e875f..4f5735f7700360b30378b6e7869f3551c5ae7ba2 100644
index c428a5f8d79e826077ab05fb6c56ae8e0e4ff609..c5fd8782fc1343f04f9e2c2c0414245d20696193 100644
--- a/base/trace_event/builtin_categories.h
+++ b/base/trace_event/builtin_categories.h
@@ -92,6 +92,7 @@ PERFETTO_DEFINE_CATEGORIES_IN_NAMESPACE_WITH_ATTRS(
@@ -91,6 +91,7 @@ PERFETTO_DEFINE_CATEGORIES_IN_NAMESPACE_WITH_ATTRS(
perfetto::Category("drm"),
perfetto::Category("drmcursor"),
perfetto::Category("dwrite"),

View File

@@ -10,10 +10,10 @@ Needed for:
2) //electron/shell/common:web_contents_utility
diff --git a/content/public/common/BUILD.gn b/content/public/common/BUILD.gn
index 659f500a47eb0f2d1f753dee2b234bb7bf1027d4..8f6e733b1ae1081f19a090cbdf2372b164e514a8 100644
index dee8a4413f62ac5535f4bce504ff0dc934db743a..064a62b40679f05feac3c81f9d6e6c2c90972727 100644
--- a/content/public/common/BUILD.gn
+++ b/content/public/common/BUILD.gn
@@ -379,6 +379,8 @@ mojom("interfaces") {
@@ -380,6 +380,8 @@ mojom("interfaces") {
"//content/common/*",
"//extensions/common:mojom",
"//extensions/common:mojom_blink",

View File

@@ -11,7 +11,7 @@ if we ever align our .pak file generation with Chrome we can remove this
patch.
diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn
index 1da9a118fedc612dfed638abba54e69b983d9185..f76f04f25307c9d49edf7462c16e0e04f64109aa 100644
index bdf6d5865fb0069f4df368613167069d2fb50c86..93a126365406badf911d938dde2dcd8b140b7f6f 100644
--- a/chrome/BUILD.gn
+++ b/chrome/BUILD.gn
@@ -196,11 +196,16 @@ if (!is_android && !is_mac) {
@@ -33,10 +33,10 @@ index 1da9a118fedc612dfed638abba54e69b983d9185..f76f04f25307c9d49edf7462c16e0e04
"//base",
"//build:branding_buildflags",
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 9f293f4ddd146e183e50ad3a99f464c10d2aaab5..9de2b989244cdf2966004b40118ea1b13d3be7b0 100644
index 95b6d2a684fd6cb2655f7bc3a985f113bd2b23b5..3afb802aa6563cf625709bd1ab0b0c7f86b08760 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -4527,7 +4527,7 @@ static_library("browser") {
@@ -4563,7 +4563,7 @@ static_library("browser") {
[ "//chrome/browser/ui/webui/signin:profile_impl" ]
}
@@ -46,10 +46,10 @@ index 9f293f4ddd146e183e50ad3a99f464c10d2aaab5..9de2b989244cdf2966004b40118ea1b1
# than here in :chrome_dll.
deps += [ "//chrome:packed_resources_integrity_header" ]
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index c3394f059fa284ebcfd3597951343b2e375c72f3..65576f0ba3335f8ede68037bf1a490f64ea495d7 100644
index 4a1bba04faf432da83a8d563217469a861ce14a2..4ca8d943e89703e9fada09395e033b75d93d839c 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -7000,9 +7000,12 @@ test("unit_tests") {
@@ -7030,9 +7030,12 @@ test("unit_tests") {
"//chrome/notification_helper",
]
@@ -63,7 +63,7 @@ index c3394f059fa284ebcfd3597951343b2e375c72f3..65576f0ba3335f8ede68037bf1a490f6
"//chrome//services/util_win:unit_tests",
"//chrome/app:chrome_dll_resources",
"//chrome/app:win_unit_tests",
@@ -7960,6 +7963,10 @@ test("unit_tests") {
@@ -7992,6 +7995,10 @@ test("unit_tests") {
"../browser/performance_manager/policies/background_tab_loading_policy_unittest.cc",
]
@@ -74,7 +74,7 @@ index c3394f059fa284ebcfd3597951343b2e375c72f3..65576f0ba3335f8ede68037bf1a490f6
sources += [
# The importer code is not used on Android.
"../common/importer/firefox_importer_utils_unittest.cc",
@@ -8020,7 +8027,6 @@ test("unit_tests") {
@@ -8047,7 +8054,6 @@ test("unit_tests") {
# Non-android deps for "unit_tests" target.
deps += [
"../browser/screen_ai:screen_ai_install_state",

View File

@@ -7,7 +7,7 @@ These are variables we add to the root BUILDCONFIG so that they're available
everywhere, without having to import("//electron/.../flags.gni").
diff --git a/build/config/BUILDCONFIG.gn b/build/config/BUILDCONFIG.gn
index c01896919e5a4549bd5e1d2d8d54f69fcb2b8aa6..3c032756188714f68828060e693e5db96a4b5bba 100644
index c2212c73c1f54bdfb0510bb94ddf7a58f6e54242..c9780b914f2169488a99932073ea245311bb158c 100644
--- a/build/config/BUILDCONFIG.gn
+++ b/build/config/BUILDCONFIG.gn
@@ -123,6 +123,9 @@ if (current_os == "") {

View File

@@ -7,10 +7,10 @@ Build libc++ as static library to compile and pass
nan tests
diff --git a/buildtools/third_party/libc++/BUILD.gn b/buildtools/third_party/libc++/BUILD.gn
index 5c366d2dded04400a3d9c2cb9c31bdfd286e7246..90902df8843858cd8db547d38ee4f58f0dad722c 100644
index a5471961656af134738ac7388fae70e9544dd4aa..2592fdc2e04683a6d42fa9fad87313d296199857 100644
--- a/buildtools/third_party/libc++/BUILD.gn
+++ b/buildtools/third_party/libc++/BUILD.gn
@@ -48,7 +48,11 @@ config("winver") {
@@ -192,7 +192,11 @@ libcxx_modules("std_wctype_h") {
if (libcxx_is_shared) {
_libcxx_target_type = "shared_library"
} else {
@@ -21,9 +21,9 @@ index 5c366d2dded04400a3d9c2cb9c31bdfd286e7246..90902df8843858cd8db547d38ee4f58f
+ _libcxx_target_type = "static_library"
+ }
}
target(_libcxx_target_type, "libc++") {
# Most things that need to depend on libc++ should do so via the implicit
@@ -56,6 +60,7 @@ target(_libcxx_target_type, "libc++") {
@@ -201,6 +205,7 @@ target(_libcxx_target_type, "libc++") {
# need to explicitly depend on libc++.
visibility = [
"//build/config:common_deps",

View File

@@ -9,10 +9,10 @@ potentially prevent a window from being created.
TODO(loc): this patch is currently broken.
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
index 339bc872c7bb179090cac4391a90f86d6303ce43..a60d567f805ca44dd000527b3bc0c47b163503b7 100644
index 4e3b890ac33148b21d73530878e525f156a4f1fb..9f05eec5ca501d941c9f39b830c32db2d2e4db32 100644
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -9582,6 +9582,7 @@ void RenderFrameHostImpl::CreateNewWindow(
@@ -9613,6 +9613,7 @@ void RenderFrameHostImpl::CreateNewWindow(
last_committed_origin_, params->window_container_type,
params->target_url, params->referrer.To<Referrer>(),
params->frame_name, params->disposition, *params->features,
@@ -21,10 +21,10 @@ index 339bc872c7bb179090cac4391a90f86d6303ce43..a60d567f805ca44dd000527b3bc0c47b
&no_javascript_access);
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 5ff43afce429c2445517b305bc18975a031e52ae..170e5700311f8f03950bd3b5f6eb2c013bdce3c3 100644
index 42d593b47bb720fc9d142876a75a0077dde71ce8..d5011ecc23eeae14f0f901867ee6e736014c5075 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -5003,6 +5003,12 @@ FrameTree* WebContentsImpl::CreateNewWindow(
@@ -5031,6 +5031,12 @@ FrameTree* WebContentsImpl::CreateNewWindow(
SetPartitionedPopinOpenerOnNewWindowIfNeeded(new_contents_impl, params,
opener);
@@ -37,7 +37,7 @@ index 5ff43afce429c2445517b305bc18975a031e52ae..170e5700311f8f03950bd3b5f6eb2c01
// If the new frame has a name, make sure any SiteInstances that can find
// this named frame have proxies for it. Must be called after
// SetSessionStorageNamespace, since this calls CreateRenderView, which uses
@@ -5044,12 +5050,6 @@ FrameTree* WebContentsImpl::CreateNewWindow(
@@ -5072,12 +5078,6 @@ FrameTree* WebContentsImpl::CreateNewWindow(
AddWebContentsDestructionObserver(new_contents_impl);
}
@@ -66,7 +66,7 @@ index 91dcf6c9c4a2d840fb50cb329fe3ef1bba9103c3..cbc887a3034605a93468e73a310e9ca6
// Operation result when the renderer asks the browser to create a new window.
diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
index f07621fc686236a9b009d425b96d2a847ffd07cf..6d7b34575a4831eafca792a5b8ed4720d4ad5957 100644
index 8572c59e4b734f444280f247ef5b615149159dd5..f8037aa47437f03dfd0c67ff57a41f16d43da05a 100644
--- a/content/public/browser/content_browser_client.cc
+++ b/content/public/browser/content_browser_client.cc
@@ -805,6 +805,8 @@ bool ContentBrowserClient::CanCreateWindow(
@@ -79,10 +79,10 @@ index f07621fc686236a9b009d425b96d2a847ffd07cf..6d7b34575a4831eafca792a5b8ed4720
bool opener_suppressed,
bool* no_javascript_access) {
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
index 373e9128eeefb3931059fc67099b00fdc071a52e..045689f947f45e7d4c50850ba760b0861af79798 100644
index 69aaf3146da25e8a30382568af5002a983de2da2..abdac7f78b24392e04c431584a0bae8fca814df6 100644
--- a/content/public/browser/content_browser_client.h
+++ b/content/public/browser/content_browser_client.h
@@ -203,6 +203,7 @@ class NetworkService;
@@ -198,6 +198,7 @@ class NetworkService;
class TrustedURLLoaderHeaderClient;
} // namespace mojom
struct ResourceRequest;
@@ -90,7 +90,7 @@ index 373e9128eeefb3931059fc67099b00fdc071a52e..045689f947f45e7d4c50850ba760b086
} // namespace network
namespace sandbox {
@@ -1361,6 +1362,8 @@ class CONTENT_EXPORT ContentBrowserClient {
@@ -1356,6 +1357,8 @@ class CONTENT_EXPORT ContentBrowserClient {
const std::string& frame_name,
WindowOpenDisposition disposition,
const blink::mojom::WindowFeatures& features,
@@ -100,7 +100,7 @@ index 373e9128eeefb3931059fc67099b00fdc071a52e..045689f947f45e7d4c50850ba760b086
bool opener_suppressed,
bool* no_javascript_access);
diff --git a/content/public/browser/web_contents_delegate.cc b/content/public/browser/web_contents_delegate.cc
index ece9688e5f0a06be4cb6fb2d85e60269d0f66463..a955b37b93ca0887f3fba1ebea4a3c89e62aa6bc 100644
index ac4deeb6acebf79987591756320e2406d74d7a1e..f688e6d1e6c11f0dd80f498e6361fa822e8c2eb8 100644
--- a/content/public/browser/web_contents_delegate.cc
+++ b/content/public/browser/web_contents_delegate.cc
@@ -32,6 +32,17 @@ namespace content {
@@ -122,7 +122,7 @@ index ece9688e5f0a06be4cb6fb2d85e60269d0f66463..a955b37b93ca0887f3fba1ebea4a3c89
WebContents* source,
const OpenURLParams& params,
diff --git a/content/public/browser/web_contents_delegate.h b/content/public/browser/web_contents_delegate.h
index fbd5d3275fb9dfb04bee078b5ef275926fdad926..3938045d8028abff5f44ad347b514e4f823748cd 100644
index ac2e7cdceb13ce07966a908fab3ff8feff969484..96cb58b1a88499cf8f78d748dc5a1cc1c6b6a128 100644
--- a/content/public/browser/web_contents_delegate.h
+++ b/content/public/browser/web_contents_delegate.h
@@ -18,6 +18,7 @@
@@ -133,7 +133,7 @@ index fbd5d3275fb9dfb04bee078b5ef275926fdad926..3938045d8028abff5f44ad347b514e4f
#include "content/public/browser/eye_dropper.h"
#include "content/public/browser/fullscreen_types.h"
#include "content/public/browser/invalidate_type.h"
@@ -366,6 +367,13 @@ class CONTENT_EXPORT WebContentsDelegate {
@@ -375,6 +376,13 @@ class CONTENT_EXPORT WebContentsDelegate {
const StoragePartitionConfig& partition_config,
SessionStorageNamespace* session_storage_namespace);
@@ -148,10 +148,10 @@ index fbd5d3275fb9dfb04bee078b5ef275926fdad926..3938045d8028abff5f44ad347b514e4f
// typically happens when popups are created.
virtual void WebContentsCreated(WebContents* source_contents,
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 25fe6dddeea88878cf17dc945aa245cf3fcdc368..256275528ddbdbc22736e73e43d385d9cdfca264 100644
index 539a274082fda54ea6bf8ed36a1fe21bbb55d73d..76ab61d5d388b70a0da0999ff2d2ea97f39f6fc6 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -6892,6 +6892,10 @@ WebView* RenderFrameImpl::CreateNewWindow(
@@ -6899,6 +6899,10 @@ WebView* RenderFrameImpl::CreateNewWindow(
request.HasUserGesture(), GetWebFrame()->IsAdFrame(),
GetWebFrame()->IsAdScriptInStack());
@@ -163,10 +163,10 @@ index 25fe6dddeea88878cf17dc945aa245cf3fcdc368..256275528ddbdbc22736e73e43d385d9
// moved on send.
bool is_background_tab =
diff --git a/content/web_test/browser/web_test_content_browser_client.cc b/content/web_test/browser/web_test_content_browser_client.cc
index 3735a52cfd6d4fcd19a59507eda7ed4349aa0b38..cc6bf491b88a404e489e445e50d3bbe33c602204 100644
index fa36b9907988ab971c94eae317e6e1dc4d170762..a2cafef6cae2fd78580fdf90dae17ac6586a7312 100644
--- a/content/web_test/browser/web_test_content_browser_client.cc
+++ b/content/web_test/browser/web_test_content_browser_client.cc
@@ -524,6 +524,8 @@ bool WebTestContentBrowserClient::CanCreateWindow(
@@ -534,6 +534,8 @@ bool WebTestContentBrowserClient::CanCreateWindow(
const std::string& frame_name,
WindowOpenDisposition disposition,
const blink::mojom::WindowFeatures& features,
@@ -176,7 +176,7 @@ index 3735a52cfd6d4fcd19a59507eda7ed4349aa0b38..cc6bf491b88a404e489e445e50d3bbe3
bool opener_suppressed,
bool* no_javascript_access) {
diff --git a/content/web_test/browser/web_test_content_browser_client.h b/content/web_test/browser/web_test_content_browser_client.h
index e6212744a71fffa8aec3244e336eca0a38acab8b..537bde0bdd836183f90a8d44e911d508fb5f396d 100644
index 9c6bbdc4f8e4f78fd745ac4e71510d9534925a78..f4a68476f71e8283bb3da3642758416efb98c168 100644
--- a/content/web_test/browser/web_test_content_browser_client.h
+++ b/content/web_test/browser/web_test_content_browser_client.h
@@ -93,6 +93,8 @@ class WebTestContentBrowserClient : public ShellContentBrowserClient {
@@ -210,10 +210,10 @@ index 82e9d3dfb5f7da76d89fe15ae61d379fa46e177d..fd035512099a54dff6cc951a2226c23a
} // namespace blink
diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_party/blink/renderer/core/frame/local_dom_window.cc
index 160c43f32c88cf81fa75ec1047579d5aef6e34c5..25307da79dfaa828971e537d99968132ee04a0f4 100644
index b44f0db98f89befc33430bcf275bffcfae9e7171..66f92d1e975a74720af12662447ea214ac210248 100644
--- a/third_party/blink/renderer/core/frame/local_dom_window.cc
+++ b/third_party/blink/renderer/core/frame/local_dom_window.cc
@@ -2266,6 +2266,8 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate,
@@ -2270,6 +2270,8 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate,
WebWindowFeatures window_features =
GetWindowFeaturesFromString(features, entered_window);

View File

@@ -1,71 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Patrick Meenan <pmeenan@chromium.org>
Date: Thu, 6 Feb 2025 07:41:40 -0800
Subject: Set is_web_secure_context when initializing Service Worker from disk
The value of is_web_secure_context is not serialized to disk when
storing the service worker registration (only a few select policies
are).
When instantiating the policy container for an already-registered
worker, it uses the default value (false) which is wrong.
Since Service Workers are guaranteed to ALWAYS be a web secure
context, this change explicitly sets it to true when restoring a
serialized policy.
See: https://w3c.github.io/webappsec-secure-contexts/#examples-service-workers
Bug: 387258077,383070811
Change-Id: I75efe895662ab4e6d68cacace6d05e004c5dfd33
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6236205
Reviewed-by: Hiroki Nakagawa <nhiroki@chromium.org>
Reviewed-by: Dave Tapuska <dtapuska@chromium.org>
Commit-Queue: Patrick Meenan <pmeenan@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1416795}
diff --git a/content/browser/renderer_host/policy_container_host.cc b/content/browser/renderer_host/policy_container_host.cc
index 5f62b1a274bab7028beb9836f88805e7b5a83e2c..f16f56d8d5f0c4e9bc164c546eee8c28f6856693 100644
--- a/content/browser/renderer_host/policy_container_host.cc
+++ b/content/browser/renderer_host/policy_container_host.cc
@@ -136,9 +136,11 @@ PolicyContainerPolicies::PolicyContainerPolicies(
allow_cross_origin_isolation(allow_cross_origin_isolation) {}
PolicyContainerPolicies::PolicyContainerPolicies(
- const blink::mojom::PolicyContainerPolicies& policies)
+ const blink::mojom::PolicyContainerPolicies& policies,
+ bool is_web_secure_context)
: referrer_policy(policies.referrer_policy),
ip_address_space(policies.ip_address_space),
+ is_web_secure_context(is_web_secure_context),
content_security_policies(
mojo::Clone(policies.content_security_policies)),
cross_origin_embedder_policy(policies.cross_origin_embedder_policy),
diff --git a/content/browser/renderer_host/policy_container_host.h b/content/browser/renderer_host/policy_container_host.h
index 394bd53bb5c1dfea5abe24b9047eb190884c2648..7add42348ef28079196b447feda78210815d1551 100644
--- a/content/browser/renderer_host/policy_container_host.h
+++ b/content/browser/renderer_host/policy_container_host.h
@@ -49,7 +49,8 @@ struct CONTENT_EXPORT PolicyContainerPolicies {
bool allow_cross_origin_isolation);
explicit PolicyContainerPolicies(
- const blink::mojom::PolicyContainerPolicies& policies);
+ const blink::mojom::PolicyContainerPolicies& policies,
+ bool is_web_secure_context);
// Used when loading workers from network schemes.
// WARNING: This does not populate referrer policy.
diff --git a/content/browser/service_worker/service_worker_registry.cc b/content/browser/service_worker/service_worker_registry.cc
index aa1e8fb5d1b3eef93b799f29cc89e15315507d2d..68b5c2ba114aa084c5ad6bc2e4fd12d44393ed77 100644
--- a/content/browser/service_worker/service_worker_registry.cc
+++ b/content/browser/service_worker/service_worker_registry.cc
@@ -1084,7 +1084,8 @@ ServiceWorkerRegistry::GetOrCreateRegistration(
if (data.policy_container_policies) {
version->set_policy_container_host(
base::MakeRefCounted<PolicyContainerHost>(
- PolicyContainerPolicies(*data.policy_container_policies)));
+ PolicyContainerPolicies(*data.policy_container_policies,
+ /*is_web_secure_context=*/true)));
}
if (data.router_rules) {
auto error = version->SetupRouterEvaluator(*data.router_rules);

View File

@@ -6,10 +6,10 @@ Subject: chore: add electron deps to gitignores
Makes things like "git status" quicker when developing electron locally
diff --git a/.gitignore b/.gitignore
index 9056030523807b8023493c0be9c9675da792852e..a1b949528e0a164c1bad98dbfbef282fb152161a 100644
index de216e464df8b332b932ce4e77f8a918ce77e9c2..bc0f7e677ca597b25e7664698117443cc78ffc38 100644
--- a/.gitignore
+++ b/.gitignore
@@ -216,6 +216,7 @@ vs-chromium-project.txt
@@ -217,6 +217,7 @@ vs-chromium-project.txt
/data
/delegate_execute
/device/serial/device_serial_mojo.xml

View File

@@ -7,7 +7,7 @@ This patch comes after Chromium removed the ScopedAllowIO API in favor
of explicitly adding ScopedAllowBlocking calls as friends.
diff --git a/base/threading/thread_restrictions.h b/base/threading/thread_restrictions.h
index ab355bfa81e995e31aa0decf68e1275c9bd69657..eeb7abb38725e06cbd8404653ab792b2f6a5be95 100644
index 56ddbc2d4fa336bcdbe9aaacd4bf8bbaa3573239..7859ce547dc00c2842fe1aa3699cf20e0f597937 100644
--- a/base/threading/thread_restrictions.h
+++ b/base/threading/thread_restrictions.h
@@ -132,6 +132,7 @@ class KeyStorageLinux;
@@ -18,7 +18,7 @@ index ab355bfa81e995e31aa0decf68e1275c9bd69657..eeb7abb38725e06cbd8404653ab792b2
class Profile;
class ProfileImpl;
class ScopedAllowBlockingForProfile;
@@ -281,6 +282,9 @@ class BackendImpl;
@@ -278,6 +279,9 @@ class BackendImpl;
class InFlightIO;
bool CleanupDirectorySync(const base::FilePath&);
} // namespace disk_cache
@@ -28,7 +28,7 @@ index ab355bfa81e995e31aa0decf68e1275c9bd69657..eeb7abb38725e06cbd8404653ab792b2
namespace enterprise_connectors {
class LinuxKeyRotationCommand;
} // namespace enterprise_connectors
@@ -578,6 +582,7 @@ class BASE_EXPORT ScopedAllowBlocking {
@@ -575,6 +579,7 @@ class BASE_EXPORT ScopedAllowBlocking {
friend class ::DesktopNotificationBalloon;
friend class ::FirefoxProfileLock;
friend class ::GaiaConfig;
@@ -36,7 +36,7 @@ index ab355bfa81e995e31aa0decf68e1275c9bd69657..eeb7abb38725e06cbd8404653ab792b2
friend class ::ProfileImpl;
friend class ::ScopedAllowBlockingForProfile;
friend class ::StartupTabProviderImpl;
@@ -619,6 +624,7 @@ class BASE_EXPORT ScopedAllowBlocking {
@@ -615,6 +620,7 @@ class BASE_EXPORT ScopedAllowBlocking {
friend class crypto::ScopedAllowBlockingForNSS; // http://crbug.com/59847
friend class drive::FakeDriveService;
friend class extensions::DesktopAndroidExtensionSystem;

View File

@@ -14,10 +14,10 @@ track down the source of this problem & figure out if we can fix it
by changing something in Electron.
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index e7f78b970f433a232cbcb172904d0ab993c5ac6a..62a4a28afb27c802ce24dd10d941e77cfbca0b02 100644
index 8c805aec2042d7c02ba0a28f544feb6d976a0775..d5e8086df8b15f90acbea43f93706c2b9543a8ef 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -4922,7 +4922,7 @@ FrameTree* WebContentsImpl::CreateNewWindow(
@@ -4950,7 +4950,7 @@ FrameTree* WebContentsImpl::CreateNewWindow(
: IsGuest();
// While some guest types do not have a guest SiteInstance, the ones that
// don't all override WebContents creation above.

View File

@@ -14,10 +14,10 @@ This change patches it out to prevent the DCHECK.
It can be removed once/if we see a better solution to the problem.
diff --git a/content/browser/site_instance_impl.cc b/content/browser/site_instance_impl.cc
index e94348bfb40a6a4fdf67ec92b67bbc86af5fdab0..8e7e8f1841053e8e6f4b419313c78c055891a23a 100644
index d4dd73e7fa1e550d0d13b4c09da0ce6899894494..679a59db98261eca3fbbd7ddb20516ab4f618cfb 100644
--- a/content/browser/site_instance_impl.cc
+++ b/content/browser/site_instance_impl.cc
@@ -228,7 +228,7 @@ scoped_refptr<SiteInstanceImpl> SiteInstanceImpl::CreateForGuest(
@@ -229,7 +229,7 @@ scoped_refptr<SiteInstanceImpl> SiteInstanceImpl::CreateForGuest(
BrowserContext* browser_context,
const StoragePartitionConfig& partition_config) {
DCHECK(browser_context);

View File

@@ -1,30 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Shelley Vohr <shelley.vohr@gmail.com>
Date: Thu, 24 Nov 2022 12:29:41 +0100
Subject: chore: patch out Profile methods in profile_selections.cc
We do not support the concept of Profiles and profile->IsSystemProfile()
is therefore not a method that will compile given we don't include
relevant files.
diff --git a/chrome/browser/profiles/profile_selections.cc b/chrome/browser/profiles/profile_selections.cc
index bc0bad82ebcdceadc505e912ff27202b452fefab..23355e00f9ff99c1b0d981076df97b5d4af355c2 100644
--- a/chrome/browser/profiles/profile_selections.cc
+++ b/chrome/browser/profiles/profile_selections.cc
@@ -13,6 +13,7 @@
#endif // BUILDFLAG(IS_CHROMEOS)
bool AreKeyedServicesDisabledForProfileByDefault(const Profile* profile) {
+#if 0
// By default disable all services for System Profile.
// Even though having no services is also the default value for Guest Profile,
// this is not really the case in practice because a lot of Service Factories
@@ -20,7 +21,7 @@ bool AreKeyedServicesDisabledForProfileByDefault(const Profile* profile) {
if (profile && profile->IsSystemProfile()) {
return true;
}
-
+#endif
return false;
}

View File

@@ -80,10 +80,10 @@ index 4fd8dff1089cd6afa6a66dc185734d7671657281..0a1f4268ea771a3d5d4a2668928c6e5d
content::WebContents* source,
const content::OpenURLParams& params,
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
index 3d0ffcbb38c234b97fe8df33e34eab5386bd59b8..0ac03ba26534494f963238672c1aa253e4a601e8 100644
index 25e6f7807ecedd9df5d1ef91733b6bf47e1ab86b..526bf242dba614faca08d6870ada49ac96d6f7f0 100644
--- a/chrome/browser/ui/browser.cc
+++ b/chrome/browser/ui/browser.cc
@@ -2210,12 +2210,11 @@ bool Browser::IsWebContentsCreationOverridden(
@@ -2221,12 +2221,11 @@ bool Browser::IsWebContentsCreationOverridden(
content::SiteInstance* source_site_instance,
content::mojom::WindowContainerType window_container_type,
const GURL& opener_url,
@@ -99,10 +99,10 @@ index 3d0ffcbb38c234b97fe8df33e34eab5386bd59b8..0ac03ba26534494f963238672c1aa253
WebContents* Browser::CreateCustomWebContents(
diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h
index fa28d4500e08dcd595b6240daca6a902ee924002..e20d787445aa5106ff349f433434622a3210c8e8 100644
index d203f5ae4c5bc7ea2e1cf45271df25223a4f7497..e074ffc6fb9b59b81f55817a80db5df4bc4569b8 100644
--- a/chrome/browser/ui/browser.h
+++ b/chrome/browser/ui/browser.h
@@ -975,8 +975,7 @@ class Browser : public TabStripModelObserver,
@@ -980,8 +980,7 @@ class Browser : public TabStripModelObserver,
content::SiteInstance* source_site_instance,
content::mojom::WindowContainerType window_container_type,
const GURL& opener_url,
@@ -218,10 +218,10 @@ index c6838c83ef971b88769b1f3fba8095025ae25464..2da6a4e08340e72ba7de5d03444c2f17
content::WebContents* AddNewContents(
content::WebContents* source,
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 6befbf14c4a95e37a3423be7743655e2fc365a77..f943c010b449dd5d941da4f61da3a01ba5e49a8b 100644
index 690d589eed3515113ad3c40506872f98c2c44bde..d96da1eb8143a5390bdfbf6fbba82c3f8150b211 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -4885,8 +4885,7 @@ FrameTree* WebContentsImpl::CreateNewWindow(
@@ -4913,8 +4913,7 @@ FrameTree* WebContentsImpl::CreateNewWindow(
// TODO(crbug.com/40202416): Support a way for MPArch guests to support this.
if (delegate_ && delegate_->IsWebContentsCreationOverridden(
source_site_instance, params.window_container_type,
@@ -232,10 +232,10 @@ index 6befbf14c4a95e37a3423be7743655e2fc365a77..f943c010b449dd5d941da4f61da3a01b
static_cast<WebContentsImpl*>(delegate_->CreateCustomWebContents(
opener, source_site_instance, is_new_browsing_instance,
diff --git a/content/public/browser/web_contents_delegate.cc b/content/public/browser/web_contents_delegate.cc
index a955b37b93ca0887f3fba1ebea4a3c89e62aa6bc..7b764a2f9a18a1650c88e2ab22ca4c2e9e73b7d8 100644
index f688e6d1e6c11f0dd80f498e6361fa822e8c2eb8..dc47ebfd61f16901b7f8e0e4c30c79eaf5d0710e 100644
--- a/content/public/browser/web_contents_delegate.cc
+++ b/content/public/browser/web_contents_delegate.cc
@@ -153,8 +153,7 @@ bool WebContentsDelegate::IsWebContentsCreationOverridden(
@@ -159,8 +159,7 @@ bool WebContentsDelegate::IsWebContentsCreationOverridden(
SiteInstance* source_site_instance,
mojom::WindowContainerType window_container_type,
const GURL& opener_url,
@@ -246,10 +246,10 @@ index a955b37b93ca0887f3fba1ebea4a3c89e62aa6bc..7b764a2f9a18a1650c88e2ab22ca4c2e
}
diff --git a/content/public/browser/web_contents_delegate.h b/content/public/browser/web_contents_delegate.h
index 3938045d8028abff5f44ad347b514e4f823748cd..ac40cfdbd35ba560f5363f84122140833315e907 100644
index 96cb58b1a88499cf8f78d748dc5a1cc1c6b6a128..8ff56b56da764c8af14c40babc529ee4cb089c7e 100644
--- a/content/public/browser/web_contents_delegate.h
+++ b/content/public/browser/web_contents_delegate.h
@@ -345,8 +345,7 @@ class CONTENT_EXPORT WebContentsDelegate {
@@ -354,8 +354,7 @@ class CONTENT_EXPORT WebContentsDelegate {
SiteInstance* source_site_instance,
mojom::WindowContainerType window_container_type,
const GURL& opener_url,
@@ -380,10 +380,10 @@ index 1012a909ef1fcae51c218ae519fe7e0db65ab087..127b1ae940bc9313aecb635e2b01bb6f
int opener_render_process_id,
int opener_render_frame_id,
diff --git a/headless/lib/browser/headless_web_contents_impl.cc b/headless/lib/browser/headless_web_contents_impl.cc
index 0101dbe4aa8cfe3103ba6ca9c9ac62ee46cffb2d..87b7cb41635c47a3ff7d19a7b46f63ed576be33d 100644
index 62be493c74423875af45a92c98b2ffceb928189f..ec82d8e47bf0a33f832b8ca242f395fe59a1bbee 100644
--- a/headless/lib/browser/headless_web_contents_impl.cc
+++ b/headless/lib/browser/headless_web_contents_impl.cc
@@ -207,8 +207,7 @@ class HeadlessWebContentsImpl::Delegate : public content::WebContentsDelegate {
@@ -206,8 +206,7 @@ class HeadlessWebContentsImpl::Delegate : public content::WebContentsDelegate {
content::SiteInstance* source_site_instance,
content::mojom::WindowContainerType window_container_type,
const GURL& opener_url,

View File

@@ -0,0 +1,49 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Charles Kerr <charles@charleskerr.com>
Date: Sat, 22 Feb 2025 13:15:39 -0600
Subject: chore: remove conflicting allow_unsafe_libc_calls
We want builds to fail if a buffer warning comes from Electron code but
not from code that we don't maintain (e.g. upstream Chromium code), so
//electron/electron_unsafe_buffer_paths.txt turns off Chromium warnings.
There are some upstream files that generate warnings *and* also have
pragmas that override //electron/electron_unsafe_buffer_paths.txt,
forcing them to be tested. This breaks our build.
Files can be removed from this patch when upstream either removes the
pragma or fixes the other warnings. This patch can be removed when no
files are left.
diff --git a/net/cookies/parsed_cookie.cc b/net/cookies/parsed_cookie.cc
index 7d5d0106a3675b3fa21b0e00a755f5c0ed11c87b..d26c645d70b54b31815c8140954ee6d0a34fa8af 100644
--- a/net/cookies/parsed_cookie.cc
+++ b/net/cookies/parsed_cookie.cc
@@ -2,11 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifdef UNSAFE_BUFFERS_BUILD
-// TODO(crbug.com/390223051): Remove C-library calls to fix the errors.
-#pragma allow_unsafe_libc_calls
-#endif
-
// Portions of this code based on Mozilla:
// (netwerk/cookie/src/nsCookieService.cpp)
/* ***** BEGIN LICENSE BLOCK *****
diff --git a/net/http/http_response_headers.cc b/net/http/http_response_headers.cc
index 34ef2be4415825254c41d5970be33b1195a9a381..4a3462664c22f6d367e02ac03551c22c0db52a4d 100644
--- a/net/http/http_response_headers.cc
+++ b/net/http/http_response_headers.cc
@@ -2,11 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#ifdef UNSAFE_BUFFERS_BUILD
-// TODO(crbug.com/390223051): Remove C-library calls to fix the errors.
-#pragma allow_unsafe_libc_calls
-#endif
-
// The rules for header parsing were borrowed from Firefox:
// http://lxr.mozilla.org/seamonkey/source/netwerk/protocol/http/src/nsHttpResponseHead.cpp
// The rules for parsing content-types were also borrowed from Firefox:

View File

@@ -7,10 +7,10 @@ By default, chromium sets up one v8 snapshot to be used in all v8 contexts. This
to have a dedicated browser process v8 snapshot defined by the file `browser_v8_context_snapshot.bin`.
diff --git a/content/app/content_main_runner_impl.cc b/content/app/content_main_runner_impl.cc
index 7142484a2afd4c3cef4cac613c5f68e3c52e8eab..0fcc5e54df1993d04c060be23815d991b6c51286 100644
index 054f38d683280638c7ac618d2ff8f7aef1a0def0..6e9d8d9a043cf8b67e26f70b3a904abcfc3c1a61 100644
--- a/content/app/content_main_runner_impl.cc
+++ b/content/app/content_main_runner_impl.cc
@@ -269,8 +269,13 @@ void AsanProcessInfoCB(const char*, bool*) {
@@ -271,8 +271,13 @@ void AsanProcessInfoCB(const char*, bool*) {
}
#endif // defined(ADDRESS_SANITIZER)
@@ -25,7 +25,7 @@ index 7142484a2afd4c3cef4cac613c5f68e3c52e8eab..0fcc5e54df1993d04c060be23815d991
#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC)
base::FileDescriptorStore& file_descriptor_store =
base::FileDescriptorStore::GetInstance();
@@ -299,11 +304,12 @@ bool ShouldLoadV8Snapshot(const base::CommandLine& command_line,
@@ -301,11 +306,12 @@ bool ShouldLoadV8Snapshot(const base::CommandLine& command_line,
#endif // V8_USE_EXTERNAL_STARTUP_DATA
@@ -40,7 +40,7 @@ index 7142484a2afd4c3cef4cac613c5f68e3c52e8eab..0fcc5e54df1993d04c060be23815d991
#endif // V8_USE_EXTERNAL_STARTUP_DATA
}
@@ -972,7 +978,7 @@ int ContentMainRunnerImpl::Initialize(ContentMainParams params) {
@@ -978,7 +984,7 @@ int ContentMainRunnerImpl::Initialize(ContentMainParams params) {
return TerminateForFatalInitializationError();
#endif // BUILDFLAG(IS_ANDROID) && (ICU_UTIL_DATA_IMPL == ICU_UTIL_DATA_FILE)
@@ -95,10 +95,10 @@ index 801bfd401ea4a8e72417d88efaa718cc6fb60883..663fec68d0c2855cdf83bb259b85c229
friend class ContentClientCreator;
friend class ContentClientInitializer;
diff --git a/gin/v8_initializer.cc b/gin/v8_initializer.cc
index 59abc24988ab4d194461a3ca4f4b2bb68395bada..9e0b16dda73900210bfc6305a5d32e51a704513e 100644
index 7f7ea9ea6dd9b5f3af436570661fa736f912132e..1eed83656482ec330b51899bc8fbf3d5cbcf34fa 100644
--- a/gin/v8_initializer.cc
+++ b/gin/v8_initializer.cc
@@ -663,8 +663,7 @@ void V8Initializer::GetV8ExternalSnapshotData(const char** snapshot_data_out,
@@ -664,8 +664,7 @@ void V8Initializer::GetV8ExternalSnapshotData(const char** snapshot_data_out,
#if defined(V8_USE_EXTERNAL_STARTUP_DATA)
@@ -108,7 +108,7 @@ index 59abc24988ab4d194461a3ca4f4b2bb68395bada..9e0b16dda73900210bfc6305a5d32e51
if (g_mapped_snapshot) {
// TODO(crbug.com/40558459): Confirm not loading different type of snapshot
// files in a process.
@@ -673,10 +672,17 @@ void V8Initializer::LoadV8Snapshot(V8SnapshotFileType snapshot_file_type) {
@@ -674,10 +673,17 @@ void V8Initializer::LoadV8Snapshot(V8SnapshotFileType snapshot_file_type) {
base::MemoryMappedFile::Region file_region;
base::File file =

View File

@@ -82,19 +82,24 @@ index 786c526588d81b8b5b1b5dd3760719a53e005995..f66b7d0b4dfcbb8ed3dde5a9ff463ae2
const Source& GetSource(int index) const override;
DesktopMediaList::Type GetMediaListType() const override;
diff --git a/chrome/browser/media/webrtc/native_desktop_media_list.cc b/chrome/browser/media/webrtc/native_desktop_media_list.cc
index 0827764fdeb59d339f304a20e53b01bb158104ee..3192a5b087bf88c57b77440455ae8d62edd58137 100644
index bd2b565158f807d872d4c9205012b91fc37c2290..312882d656f9f6b3d3fd98128131cea63f818e0d 100644
--- a/chrome/browser/media/webrtc/native_desktop_media_list.cc
+++ b/chrome/browser/media/webrtc/native_desktop_media_list.cc
@@ -176,7 +176,7 @@ BOOL CALLBACK AllHwndCollector(HWND hwnd, LPARAM param) {
#if BUILDFLAG(IS_MAC)
BASE_FEATURE(kWindowCaptureMacV2,
"WindowCaptureMacV2",
- base::FEATURE_ENABLED_BY_DEFAULT);
+ base::FEATURE_DISABLED_BY_DEFAULT);
@@ -215,9 +215,13 @@ content::DesktopMediaID::Id GetUpdatedWindowId(
}
}
#elif BUILDFLAG(IS_MAC)
+#if 0
+ // Should be re-enabled when addressing
+ // https://github.com/electron/electron/issues/30682
if (remote_cocoa::ScopedCGWindowID::Get(desktop_media_id.id)) {
window_id = desktop_media_id.id;
}
+#endif
#endif
content::DesktopMediaID::Type ConvertToDesktopMediaIDType(
@@ -363,7 +363,7 @@ class NativeDesktopMediaList::Worker
return window_id;
@@ -320,7 +324,7 @@ class NativeDesktopMediaList::Worker
base::WeakPtr<NativeDesktopMediaList> media_list_;
DesktopMediaID::Type source_type_;
@@ -103,7 +108,7 @@ index 0827764fdeb59d339f304a20e53b01bb158104ee..3192a5b087bf88c57b77440455ae8d62
const ThumbnailCapturer::FrameDeliveryMethod frame_delivery_method_;
const bool add_current_process_windows_;
const bool auto_show_delegated_source_list_;
@@ -654,6 +654,12 @@ void NativeDesktopMediaList::Worker::RefreshNextThumbnail() {
@@ -602,6 +606,12 @@ void NativeDesktopMediaList::Worker::RefreshNextThumbnail() {
FROM_HERE,
base::BindOnce(&NativeDesktopMediaList::UpdateNativeThumbnailsFinished,
media_list_));
@@ -116,7 +121,7 @@ index 0827764fdeb59d339f304a20e53b01bb158104ee..3192a5b087bf88c57b77440455ae8d62
}
void NativeDesktopMediaList::Worker::OnCaptureResult(
@@ -1061,6 +1067,11 @@ void NativeDesktopMediaList::RefreshForVizFrameSinkWindows(
@@ -1009,6 +1019,11 @@ void NativeDesktopMediaList::RefreshForVizFrameSinkWindows(
FROM_HERE, base::BindOnce(&Worker::RefreshThumbnails,
base::Unretained(worker_.get()),
std::move(native_ids), thumbnail_size_));

View File

@@ -6,10 +6,10 @@ Subject: fix: disabling compositor recycling
Compositor recycling is useful for Chrome because there can be many tabs and spinning up a compositor for each one would be costly. In practice, Chrome uses the parent compositor code path of browser_compositor_view_mac.mm; the NSView of each tab is detached when it's hidden and attached when it's shown. For Electron, there is no parent compositor, so we're forced into the "own compositor" code path, which seems to be non-optimal and pretty ruthless in terms of the release of resources. Electron has no real concept of multiple tabs per window, so it should be okay to disable this ruthless recycling altogether in Electron.
diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
index 86886e94e9e2c52e297a82175f6071852e792148..bac05714537680f163d1a30a5fe9523a469abe6d 100644
index 943e3b8875c68178e84ae79c241c7a31e9305c6c..6055992c0f61348a95823b64c73574ca6b24904b 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -559,7 +559,11 @@
@@ -560,7 +560,11 @@
return;
host()->WasHidden();

View File

@@ -15,10 +15,10 @@ at some point be an API to "unfreeze" the flags, or we may be able to refactor
node initialization to not update flags after V8 initialization.
diff --git a/content/renderer/render_process_impl.cc b/content/renderer/render_process_impl.cc
index 765de13f8cc30229e1711e2c0a225efdbcc4251f..328c8026c9010e1e704bd0ef146a8ec1128e7241 100644
index eb11068e932b7b94cbf215d6f84ae427ce77fcd5..9744e45974af215bfbe9e5feb2db7274f8efebf0 100644
--- a/content/renderer/render_process_impl.cc
+++ b/content/renderer/render_process_impl.cc
@@ -212,6 +212,9 @@ RenderProcessImpl::RenderProcessImpl()
@@ -208,6 +208,9 @@ RenderProcessImpl::RenderProcessImpl()
v8::V8::SetFlagsFromString(kSABPerContextFlag, sizeof(kSABPerContextFlag));
}

View File

@@ -6,10 +6,10 @@ Subject: disable_hidden.patch
Electron uses this to disable background throttling for hidden windows.
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
index 130fb82767d534988c51b4e60244f7c73b3ba770..88d8676fe67a61dfe4c3bfad0a94225d4cae81d3 100644
index e6d739f62afc1c8fa8c19601f8bc034c5ce7edf1..99d7fe568cecce44b68dfb896f4d2560d75b5556 100644
--- a/content/browser/renderer_host/render_widget_host_impl.cc
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -799,6 +799,10 @@ void RenderWidgetHostImpl::WasHidden() {
@@ -832,6 +832,10 @@ void RenderWidgetHostImpl::WasHidden() {
return;
}
@@ -19,12 +19,12 @@ index 130fb82767d534988c51b4e60244f7c73b3ba770..88d8676fe67a61dfe4c3bfad0a94225d
+
// Cancel pending pointer lock requests, unless there's an open user prompt.
// Prompts should remain open and functional across tab switches.
if (!delegate_->IsWaitingForPointerLockPrompt(this)) {
if (!delegate_ || !delegate_->IsWaitingForPointerLockPrompt(this)) {
diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h
index 286e3d89a6c241b1243908db4b26b66726e197e8..1d617f9c0be6ec770c778d6749ecceb53cac2821 100644
index fe1fdd4d52e8671daf173dbded92af0e95812452..18087692f089fb86def2da7d5ec98acad6e0f3db 100644
--- a/content/browser/renderer_host/render_widget_host_impl.h
+++ b/content/browser/renderer_host/render_widget_host_impl.h
@@ -1009,6 +1009,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl
@@ -1015,6 +1015,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl
// Requests a commit and forced redraw in the renderer compositor.
void ForceRedrawForTesting();
@@ -35,7 +35,7 @@ index 286e3d89a6c241b1243908db4b26b66726e197e8..1d617f9c0be6ec770c778d6749ecceb5
// |routing_id| must not be MSG_ROUTING_NONE.
// If this object outlives |delegate|, DetachDelegate() must be called when
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index 612d67d06d766d7ff2f923175c65f24480b87f42..c25e9ec643e715f4545f44ca1ed827b5a6cf7d96 100644
index 1d08f25b91496dbafc3a164e7fb3e66d1a48557b..92085aca6bd0c95a73b98e4173c0128d596b77f4 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -643,7 +643,7 @@ void RenderWidgetHostViewAura::HideImpl() {

View File

@@ -8,7 +8,7 @@ this but it is not a blocker for releasing Electron. This patch removes
tthe hard fail on dylib resolve failure from dump_syms
diff --git a/components/crash/content/tools/generate_breakpad_symbols.py b/components/crash/content/tools/generate_breakpad_symbols.py
index 1e5ebd243c1f1eeb37d087a9d72afcfd947ec6a0..fe43b91f5c52e3f99dcec9cddb3cacfae1eb4646 100755
index fb1ef0cfd6a78920e5e2831e94330bf8d213107d..cafcf442f79e89da9993536dce808f01221ca8f7 100755
--- a/components/crash/content/tools/generate_breakpad_symbols.py
+++ b/components/crash/content/tools/generate_breakpad_symbols.py
@@ -204,7 +204,7 @@ def GetSharedLibraryDependenciesMac(binary, exe_path):

View File

@@ -33,10 +33,10 @@ index 0ab8187b0db8ae6db46d81738f653a2bc4c566f6..de3d55e85c22317f7f9375eb94d0d5d4
} // namespace net
diff --git a/services/network/network_context.cc b/services/network/network_context.cc
index b7bdda9141ba4ea3c3ab391ec68dff14a4ac717b..3d32e7dcc85abd315bae38f2f0a6504dc0cffe86 100644
index 64dede12549790b8ce9e50b3de2a62154f5acf79..5d39f64bda0a48f1e278686f3ac567fd441afce4 100644
--- a/services/network/network_context.cc
+++ b/services/network/network_context.cc
@@ -1795,6 +1795,13 @@ void NetworkContext::SetNetworkConditions(
@@ -1810,6 +1810,13 @@ void NetworkContext::SetNetworkConditions(
std::move(network_conditions));
}
@@ -51,7 +51,7 @@ index b7bdda9141ba4ea3c3ab391ec68dff14a4ac717b..3d32e7dcc85abd315bae38f2f0a6504d
// This may only be called on NetworkContexts created with the constructor
// that calls MakeURLRequestContext().
diff --git a/services/network/network_context.h b/services/network/network_context.h
index cc94073bc278af202cd6bbb47882b56f48a2ebbe..16f63000f1d7c62430ca762240bbacf4d9d11436 100644
index fe04f634b32e503f6e93ae6f20c8c7f7c85d02be..990df479da79b513cf8797aa2fcacba10c4fbbd9 100644
--- a/services/network/network_context.h
+++ b/services/network/network_context.h
@@ -317,6 +317,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
@@ -63,7 +63,7 @@ index cc94073bc278af202cd6bbb47882b56f48a2ebbe..16f63000f1d7c62430ca762240bbacf4
void SetEnableReferrers(bool enable_referrers) override;
#if BUILDFLAG(IS_CT_SUPPORTED)
diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom
index 029287034d13f7c2bffa60900ecbbaa980330bf4..64688c3a31993dc2ae60f2c187d1fa1db1a40e19 100644
index e928d012d77ccffe16263fd0ee7c2769adfe4bac..1be1b691fa240fa3c5e2c572821977a968841211 100644
--- a/services/network/public/mojom/network_context.mojom
+++ b/services/network/public/mojom/network_context.mojom
@@ -1253,6 +1253,9 @@ interface NetworkContext {
@@ -77,7 +77,7 @@ index 029287034d13f7c2bffa60900ecbbaa980330bf4..64688c3a31993dc2ae60f2c187d1fa1d
SetAcceptLanguage(string new_accept_language);
diff --git a/services/network/test/test_network_context.h b/services/network/test/test_network_context.h
index 6b09b32c3a6206310baf87da0a2b4025d488fd09..6ff591e3adbfa4df938f1044009365d8ac2e7f26 100644
index 97e8f9f145cecad9b0cd8b43a2de4af29cec7778..b9539a731d2252c8301d51ccb7a1bd7b1a23ca53 100644
--- a/services/network/test/test_network_context.h
+++ b/services/network/test/test_network_context.h
@@ -156,6 +156,7 @@ class TestNetworkContext : public mojom::NetworkContext {

View File

@@ -64,10 +64,10 @@ index 31f5b160e4cd755cfb56a62b04261ee1bee80277..4305ba61d2489c5817785077d1ace876
#if BUILDFLAG(IS_WIN)
bool EscapeVirtualization(const base::FilePath& user_data_dir);
diff --git a/chrome/browser/process_singleton_posix.cc b/chrome/browser/process_singleton_posix.cc
index 0e036b178d8ea9bbe5564e8bbdb394b8a0d4cb3d..9b0cb6c19b2785a3950ed70a0cd13a9c6e50fb50 100644
index 08cbe32a258bf478f1da0a07064d3e9ef14c44a5..b9f2a43cb90fac4b031a4b4da38d6435a50990d2 100644
--- a/chrome/browser/process_singleton_posix.cc
+++ b/chrome/browser/process_singleton_posix.cc
@@ -615,6 +615,7 @@ class ProcessSingleton::LinuxWatcher
@@ -614,6 +614,7 @@ class ProcessSingleton::LinuxWatcher
// |reader| is for sending back ACK message.
void HandleMessage(const std::string& current_dir,
const std::vector<std::string>& argv,
@@ -75,7 +75,7 @@ index 0e036b178d8ea9bbe5564e8bbdb394b8a0d4cb3d..9b0cb6c19b2785a3950ed70a0cd13a9c
SocketReader* reader);
// Called when the ProcessSingleton that owns this class is about to be
@@ -674,13 +675,17 @@ void ProcessSingleton::LinuxWatcher::StartListening(int socket) {
@@ -673,13 +674,17 @@ void ProcessSingleton::LinuxWatcher::StartListening(int socket) {
}
void ProcessSingleton::LinuxWatcher::HandleMessage(
@@ -95,7 +95,7 @@ index 0e036b178d8ea9bbe5564e8bbdb394b8a0d4cb3d..9b0cb6c19b2785a3950ed70a0cd13a9c
// Send back "ACK" message to prevent the client process from starting up.
reader->FinishWithACK(kACKToken, std::size(kACKToken) - 1);
} else {
@@ -728,7 +733,8 @@ void ProcessSingleton::LinuxWatcher::SocketReader::
@@ -727,7 +732,8 @@ void ProcessSingleton::LinuxWatcher::SocketReader::
}
}
@@ -105,7 +105,7 @@ index 0e036b178d8ea9bbe5564e8bbdb394b8a0d4cb3d..9b0cb6c19b2785a3950ed70a0cd13a9c
const size_t kMinMessageLength = std::size(kStartToken) + 4;
if (bytes_read_ < kMinMessageLength) {
buf_[bytes_read_] = 0;
@@ -758,10 +764,28 @@ void ProcessSingleton::LinuxWatcher::SocketReader::
@@ -757,10 +763,28 @@ void ProcessSingleton::LinuxWatcher::SocketReader::
tokens.erase(tokens.begin());
tokens.erase(tokens.begin());
@@ -135,7 +135,7 @@ index 0e036b178d8ea9bbe5564e8bbdb394b8a0d4cb3d..9b0cb6c19b2785a3950ed70a0cd13a9c
fd_watch_controller_.reset();
// LinuxWatcher::HandleMessage() is in charge of destroying this SocketReader
@@ -790,8 +814,10 @@ void ProcessSingleton::LinuxWatcher::SocketReader::FinishWithACK(
@@ -789,8 +813,10 @@ void ProcessSingleton::LinuxWatcher::SocketReader::FinishWithACK(
//
ProcessSingleton::ProcessSingleton(
const base::FilePath& user_data_dir,
@@ -146,7 +146,7 @@ index 0e036b178d8ea9bbe5564e8bbdb394b8a0d4cb3d..9b0cb6c19b2785a3950ed70a0cd13a9c
current_pid_(base::GetCurrentProcId()) {
socket_path_ = user_data_dir.Append(chrome::kSingletonSocketFilename);
lock_path_ = user_data_dir.Append(chrome::kSingletonLockFilename);
@@ -912,7 +938,8 @@ ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessWithTimeout(
@@ -911,7 +937,8 @@ ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessWithTimeout(
sizeof(socket_timeout));
// Found another process, prepare our command line
@@ -156,7 +156,7 @@ index 0e036b178d8ea9bbe5564e8bbdb394b8a0d4cb3d..9b0cb6c19b2785a3950ed70a0cd13a9c
std::string to_send(kStartToken);
to_send.push_back(kTokenDelimiter);
@@ -922,11 +949,21 @@ ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessWithTimeout(
@@ -921,11 +948,21 @@ ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessWithTimeout(
to_send.append(current_dir.value());
const std::vector<std::string>& argv = cmd_line.argv();

View File

@@ -25,10 +25,10 @@ Refs https://issues.chromium.org/issues/40210365 which is blocked
on https://issues.chromium.org/issues/42203693
diff --git a/gin/isolate_holder.cc b/gin/isolate_holder.cc
index 2be37976a1305f1deed561b3b829dbb5d7ae85e7..44eb16f17d272125e2b4a590f8962eb8144d9755 100644
index d1b95149ea0d16af2606900f10898a355026ffe1..fe1d866cba3b1a221092e1d6dced027894b3f3af 100644
--- a/gin/isolate_holder.cc
+++ b/gin/isolate_holder.cc
@@ -34,6 +34,8 @@ v8::ArrayBuffer::Allocator* g_array_buffer_allocator = nullptr;
@@ -35,6 +35,8 @@ v8::ArrayBuffer::Allocator* g_array_buffer_allocator = nullptr;
const intptr_t* g_reference_table = nullptr;
v8::FatalErrorCallback g_fatal_error_callback = nullptr;
v8::OOMErrorCallback g_oom_error_callback = nullptr;
@@ -37,7 +37,7 @@ index 2be37976a1305f1deed561b3b829dbb5d7ae85e7..44eb16f17d272125e2b4a590f8962eb8
std::unique_ptr<v8::Isolate::CreateParams> getModifiedIsolateParams(
std::unique_ptr<v8::Isolate::CreateParams> params,
@@ -198,10 +200,26 @@ IsolateHolder::getDefaultIsolateParams() {
@@ -205,10 +207,26 @@ IsolateHolder::getDefaultIsolateParams() {
return params;
}
@@ -65,10 +65,10 @@ index 2be37976a1305f1deed561b3b829dbb5d7ae85e7..44eb16f17d272125e2b4a590f8962eb8
+
} // namespace gin
diff --git a/gin/public/isolate_holder.h b/gin/public/isolate_holder.h
index 52b8c1af58678b9fee684ff75340c98fcc73b552..f79407d741a30298d09efd53589f16dc9b26107f 100644
index dc3a5b0678b9c686e241b492e2c3b5ac833611a3..32a7ba4f557e65d9525d2ca07e8597e7bd070b12 100644
--- a/gin/public/isolate_holder.h
+++ b/gin/public/isolate_holder.h
@@ -131,6 +131,8 @@ class GIN_EXPORT IsolateHolder {
@@ -132,6 +132,8 @@ class GIN_EXPORT IsolateHolder {
// Should only be called after v8::IsolateHolder::Initialize() is invoked.
static std::unique_ptr<v8::Isolate::CreateParams> getDefaultIsolateParams();
@@ -77,7 +77,7 @@ index 52b8c1af58678b9fee684ff75340c98fcc73b552..f79407d741a30298d09efd53589f16dc
v8::Isolate* isolate() { return isolate_; }
// This method returns if v8::Locker is needed to access isolate.
@@ -144,6 +146,9 @@ class GIN_EXPORT IsolateHolder {
@@ -145,6 +147,9 @@ class GIN_EXPORT IsolateHolder {
void EnableIdleTasks(std::unique_ptr<V8IdleTaskRunner> idle_task_runner);

View File

@@ -13,11 +13,11 @@ other protocols to register their streaming behavior. MultibufferDataSource::Ass
then refers to the list so that it can correctly determine the data source's settings.
diff --git a/third_party/blink/renderer/platform/media/multi_buffer_data_source.cc b/third_party/blink/renderer/platform/media/multi_buffer_data_source.cc
index 14b6e02f10cd3c9e666b23507355d42ffffa56f8..4542732d5fe1631d1f4eb519ecf9a0962f8f0565 100644
index c19436994faa21246c8c2e53e96c7ce3fffede4f..31c2efe2acd8c11bb5a861fa42841fe0e76c1141 100644
--- a/third_party/blink/renderer/platform/media/multi_buffer_data_source.cc
+++ b/third_party/blink/renderer/platform/media/multi_buffer_data_source.cc
@@ -13,8 +13,10 @@
#include "base/functional/callback_helpers.h"
@@ -11,8 +11,10 @@
#include "base/containers/adapters.h"
#include "base/location.h"
#include "base/memory/raw_ptr.h"
+#include "base/no_destructor.h"
@@ -27,7 +27,7 @@ index 14b6e02f10cd3c9e666b23507355d42ffffa56f8..4542732d5fe1631d1f4eb519ecf9a096
#include "media/base/media_log.h"
#include "net/base/net_errors.h"
#include "third_party/blink/renderer/platform/media/buffered_data_source_host_impl.h"
@@ -63,8 +65,20 @@ const int kUpdateBufferSizeFrequency = 32;
@@ -67,8 +69,20 @@ const int kUpdateBufferSizeFrequency = 32;
// How long to we delay a seek after a read?
constexpr base::TimeDelta kSeekDelay = base::Milliseconds(20);
@@ -48,7 +48,7 @@ index 14b6e02f10cd3c9e666b23507355d42ffffa56f8..4542732d5fe1631d1f4eb519ecf9a096
class MultiBufferDataSource::ReadOperation {
public:
ReadOperation() = delete;
@@ -156,7 +170,14 @@ bool MultiBufferDataSource::media_has_played() const {
@@ -160,7 +174,14 @@ bool MultiBufferDataSource::media_has_played() const {
bool MultiBufferDataSource::AssumeFullyBuffered() const {
DCHECK(url_data_);

View File

@@ -345,10 +345,10 @@ index 9d45ec49a4fb5e12407b65b83c1ba0c13cd0dfd8..400cce91b020ecd5e48566f125515d2c
+
} // namespace ui
diff --git a/ui/shell_dialogs/select_file_dialog_linux_portal.cc b/ui/shell_dialogs/select_file_dialog_linux_portal.cc
index b6a116654ef6815e3d97dd9302d2a9930877dda8..20ebcdd46bd1570ad671c661e7f866ea0396a49e 100644
index b23d357d4e21f10be82f0ea37b1ec3e959fc2c0b..d29de35ac813cc68b1faa11e803ace9a78df74ba 100644
--- a/ui/shell_dialogs/select_file_dialog_linux_portal.cc
+++ b/ui/shell_dialogs/select_file_dialog_linux_portal.cc
@@ -7,6 +7,7 @@
@@ -12,6 +12,7 @@
#include <string_view>
#include "base/check.h"
@@ -356,7 +356,7 @@ index b6a116654ef6815e3d97dd9302d2a9930877dda8..20ebcdd46bd1570ad671c661e7f866ea
#include "base/files/file_util.h"
#include "base/functional/bind.h"
#include "base/logging.h"
@@ -40,6 +41,8 @@ namespace {
@@ -45,6 +46,8 @@ namespace {
constexpr char kXdgPortalService[] = "org.freedesktop.portal.Desktop";
constexpr char kXdgPortalObject[] = "/org/freedesktop/portal/desktop";
@@ -365,7 +365,7 @@ index b6a116654ef6815e3d97dd9302d2a9930877dda8..20ebcdd46bd1570ad671c661e7f866ea
constexpr int kXdgPortalRequiredVersion = 3;
constexpr char kFileChooserInterfaceName[] =
@@ -61,6 +64,8 @@ constexpr uint32_t kFileChooserFilterKindGlob = 0;
@@ -66,6 +69,8 @@ constexpr uint32_t kFileChooserFilterKindGlob = 0;
constexpr char kFileUriPrefix[] = "file://";
@@ -374,7 +374,7 @@ index b6a116654ef6815e3d97dd9302d2a9930877dda8..20ebcdd46bd1570ad671c661e7f866ea
enum class ServiceAvailability {
kNotStarted,
kInProgress,
@@ -70,6 +75,9 @@ enum class ServiceAvailability {
@@ -75,6 +80,9 @@ enum class ServiceAvailability {
ServiceAvailability g_service_availability = ServiceAvailability::kNotStarted;
@@ -384,7 +384,7 @@ index b6a116654ef6815e3d97dd9302d2a9930877dda8..20ebcdd46bd1570ad671c661e7f866ea
scoped_refptr<base::SequencedTaskRunner>& GetMainTaskRunner() {
static base::NoDestructor<scoped_refptr<base::SequencedTaskRunner>>
main_task_runner;
@@ -89,9 +97,10 @@ void OnGetPropertyReply(dbus::Response* response) {
@@ -94,9 +102,10 @@ void OnGetPropertyReply(dbus::Response* response) {
return;
}
@@ -396,7 +396,7 @@ index b6a116654ef6815e3d97dd9302d2a9930877dda8..20ebcdd46bd1570ad671c661e7f866ea
}
void OnServiceStarted(std::optional<bool> service_started) {
@@ -159,6 +168,12 @@ void SelectFileDialogLinuxPortal::StartAvailabilityTestInBackground() {
@@ -164,6 +173,12 @@ void SelectFileDialogLinuxPortal::StartAvailabilityTestInBackground() {
}
g_service_availability = ServiceAvailability::kInProgress;
@@ -409,7 +409,7 @@ index b6a116654ef6815e3d97dd9302d2a9930877dda8..20ebcdd46bd1570ad671c661e7f866ea
GetMainTaskRunner() = base::SequencedTaskRunner::GetCurrentDefault();
dbus_utils::CheckForServiceAndStart(dbus_thread_linux::GetSharedSessionBus(),
@@ -175,6 +190,11 @@ bool SelectFileDialogLinuxPortal::IsPortalAvailable() {
@@ -180,6 +195,11 @@ bool SelectFileDialogLinuxPortal::IsPortalAvailable() {
return g_service_availability == ServiceAvailability::kAvailable;
}
@@ -421,7 +421,7 @@ index b6a116654ef6815e3d97dd9302d2a9930877dda8..20ebcdd46bd1570ad671c661e7f866ea
bool SelectFileDialogLinuxPortal::IsRunning(
gfx::NativeWindow parent_window) const {
return parent_window && host_ && host_.get() == parent_window->GetHost();
@@ -377,11 +397,14 @@ DbusDictionary SelectFileDialogLinuxPortal::BuildOptionsDictionary(
@@ -382,11 +402,14 @@ DbusDictionary SelectFileDialogLinuxPortal::BuildOptionsDictionary(
const PortalFilterSet& filter_set) {
DbusDictionary dict;
@@ -439,7 +439,7 @@ index b6a116654ef6815e3d97dd9302d2a9930877dda8..20ebcdd46bd1570ad671c661e7f866ea
[[fallthrough]];
case SelectFileDialog::SELECT_FOLDER:
case SelectFileDialog::Type::SELECT_EXISTING_FOLDER:
@@ -394,6 +417,10 @@ DbusDictionary SelectFileDialogLinuxPortal::BuildOptionsDictionary(
@@ -399,6 +422,10 @@ DbusDictionary SelectFileDialogLinuxPortal::BuildOptionsDictionary(
break;
}

View File

@@ -46,7 +46,7 @@ index 8ac12480f663a74dfbdcf7128a582a81b4474d25..db6802a2603e1d3c3039e49737438124
// OnStop is called by StopAndDeAllocate.
virtual void OnStop() = 0;
diff --git a/content/browser/media/capture/screen_capture_kit_device_mac.mm b/content/browser/media/capture/screen_capture_kit_device_mac.mm
index d85a71dde16218bc942245c895666ecf038bcef7..e99684a6b70f5d344cfcd4b1271c4abb349f3797 100644
index 8d5a5d16fa08b9eb4abcf167a0d5acd8351a582c..8749fa47bd841fd5ae57899cb3447378719b14fe 100644
--- a/content/browser/media/capture/screen_capture_kit_device_mac.mm
+++ b/content/browser/media/capture/screen_capture_kit_device_mac.mm
@@ -26,6 +26,61 @@
@@ -111,7 +111,7 @@ index d85a71dde16218bc942245c895666ecf038bcef7..e99684a6b70f5d344cfcd4b1271c4abb
namespace {
API_AVAILABLE(macos(12.3))
@@ -100,18 +155,22 @@ @interface ScreenCaptureKitDeviceHelper
@@ -120,18 +175,22 @@ @interface ScreenCaptureKitDeviceHelper
: NSObject <SCStreamDelegate, SCStreamOutput>
- (instancetype)initWithSampleCallback:(SampleCallback)sampleCallback
@@ -134,7 +134,7 @@ index d85a71dde16218bc942245c895666ecf038bcef7..e99684a6b70f5d344cfcd4b1271c4abb
_errorCallback = errorCallback;
}
return self;
@@ -187,29 +246,53 @@ + (SCStreamConfiguration*)streamConfigurationWithFrameSize:(gfx::Size)frameSize
@@ -207,29 +266,53 @@ + (SCStreamConfiguration*)streamConfigurationWithFrameSize:(gfx::Size)frameSize
class API_AVAILABLE(macos(12.3)) ScreenCaptureKitDeviceMac
: public IOSurfaceCaptureDeviceBase,
@@ -192,7 +192,7 @@ index d85a71dde16218bc942245c895666ecf038bcef7..e99684a6b70f5d344cfcd4b1271c4abb
void OnShareableContentCreated(SCShareableContent* content) {
DCHECK(device_task_runner_->RunsTasksInCurrentSequence());
@@ -277,7 +360,7 @@ void CreateStream(SCContentFilter* filter) {
@@ -297,7 +380,7 @@ void CreateStream(SCContentFilter* filter) {
return;
}
@@ -201,7 +201,7 @@ index d85a71dde16218bc942245c895666ecf038bcef7..e99684a6b70f5d344cfcd4b1271c4abb
// Update the content size. This step is neccessary when used together
// with SCContentSharingPicker. If the Chrome picker is used, it will
// change to retina resolution if applicable.
@@ -286,6 +369,9 @@ void CreateStream(SCContentFilter* filter) {
@@ -306,6 +389,9 @@ void CreateStream(SCContentFilter* filter) {
filter.contentRect.size.height * filter.pointPixelScale);
}
@@ -211,7 +211,7 @@ index d85a71dde16218bc942245c895666ecf038bcef7..e99684a6b70f5d344cfcd4b1271c4abb
gfx::RectF dest_rect_in_frame;
actual_capture_format_ = capture_params().requested_format;
actual_capture_format_.pixel_format = media::PIXEL_FORMAT_NV12;
@@ -299,6 +385,7 @@ void CreateStream(SCContentFilter* filter) {
@@ -319,6 +405,7 @@ void CreateStream(SCContentFilter* filter) {
stream_ = [[SCStream alloc] initWithFilter:filter
configuration:config
delegate:helper_];
@@ -219,7 +219,7 @@ index d85a71dde16218bc942245c895666ecf038bcef7..e99684a6b70f5d344cfcd4b1271c4abb
{
NSError* error = nil;
bool add_stream_output_result =
@@ -452,7 +539,7 @@ void OnStreamError() {
@@ -472,7 +559,7 @@ void OnStreamError() {
if (fullscreen_module_) {
fullscreen_module_->Reset();
}
@@ -228,7 +228,7 @@ index d85a71dde16218bc942245c895666ecf038bcef7..e99684a6b70f5d344cfcd4b1271c4abb
} else {
client()->OnError(media::VideoCaptureError::kScreenCaptureKitStreamError,
FROM_HERE, "Stream delegate called didStopWithError");
@@ -475,23 +562,41 @@ void OnUpdateConfigurationError() {
@@ -495,23 +582,41 @@ void OnUpdateConfigurationError() {
}
// IOSurfaceCaptureDeviceBase:
@@ -285,7 +285,7 @@ index d85a71dde16218bc942245c895666ecf038bcef7..e99684a6b70f5d344cfcd4b1271c4abb
}
void OnStop() override {
DCHECK(device_task_runner_->RunsTasksInCurrentSequence());
@@ -549,8 +654,9 @@ void ResetStreamTo(SCWindow* window) override {
@@ -569,8 +674,9 @@ void ResetStreamTo(SCWindow* window) override {
}
private:
@@ -296,7 +296,7 @@ index d85a71dde16218bc942245c895666ecf038bcef7..e99684a6b70f5d344cfcd4b1271c4abb
const scoped_refptr<base::SingleThreadTaskRunner> device_task_runner_;
// The actual format of the video frames that are sent to `client`.
@@ -566,6 +672,10 @@ void ResetStreamTo(SCWindow* window) override {
@@ -586,6 +692,10 @@ void ResetStreamTo(SCWindow* window) override {
// Helper class that acts as output and delegate for `stream_`.
ScreenCaptureKitDeviceHelper* __strong helper_;
@@ -307,7 +307,7 @@ index d85a71dde16218bc942245c895666ecf038bcef7..e99684a6b70f5d344cfcd4b1271c4abb
// This is used to detect when a captured presentation enters fullscreen mode.
// If this happens, the module will call the ResetStreamTo function.
std::unique_ptr<ScreenCaptureKitFullscreenModule> fullscreen_module_;
@@ -578,6 +688,8 @@ void ResetStreamTo(SCWindow* window) override {
@@ -598,6 +708,8 @@ void ResetStreamTo(SCWindow* window) override {
base::WeakPtrFactory<ScreenCaptureKitDeviceMac> weak_factory_{this};
};
@@ -317,10 +317,10 @@ index d85a71dde16218bc942245c895666ecf038bcef7..e99684a6b70f5d344cfcd4b1271c4abb
// Although ScreenCaptureKit is available in 12.3 there were some bugs that
diff --git a/content/browser/renderer_host/media/in_process_video_capture_device_launcher.cc b/content/browser/renderer_host/media/in_process_video_capture_device_launcher.cc
index fe2bd3b710a5b9de73afa8fee556185bb5b96906..0cd669dd6bfd06d73af51893a35020c4b31632b2 100644
index 0ab684dc8e792359abb90b91917eddae42e6123d..f0f08a834f06c7669da6030640434308a5cbd056 100644
--- a/content/browser/renderer_host/media/in_process_video_capture_device_launcher.cc
+++ b/content/browser/renderer_host/media/in_process_video_capture_device_launcher.cc
@@ -330,8 +330,16 @@ void InProcessVideoCaptureDeviceLauncher::LaunchDeviceAsync(
@@ -316,8 +316,16 @@ void InProcessVideoCaptureDeviceLauncher::LaunchDeviceAsync(
break;
}
@@ -338,7 +338,7 @@ index fe2bd3b710a5b9de73afa8fee556185bb5b96906..0cd669dd6bfd06d73af51893a35020c4
// For the other capturers, when a bug reports the type of capture it's
// easy enough to determine which capturer was used, but it's a little
// fuzzier with window capture.
@@ -347,13 +355,15 @@ void InProcessVideoCaptureDeviceLauncher::LaunchDeviceAsync(
@@ -333,13 +341,15 @@ void InProcessVideoCaptureDeviceLauncher::LaunchDeviceAsync(
}
#endif // defined(USE_AURA) || BUILDFLAG(IS_MAC)

View File

@@ -19,7 +19,7 @@ to STDOUT_FILENO/STD_OUTPUT_HANDLE and STDERR_FILENO/STD_ERROR_HANDLE allowing t
parent process to read from the pipe.
diff --git a/content/browser/child_process_launcher.h b/content/browser/child_process_launcher.h
index 9f9b497aaef2558d2fb02edb115ba5916e1dd578..4e36d3a028d0bb8cdfb100b6424be397915bd7ee 100644
index 6a3645f020d7348f758ebcc93c49ddcbee709937..55994606517a4f52475610db2da26b5560865fab 100644
--- a/content/browser/child_process_launcher.h
+++ b/content/browser/child_process_launcher.h
@@ -33,6 +33,7 @@
@@ -30,7 +30,7 @@ index 9f9b497aaef2558d2fb02edb115ba5916e1dd578..4e36d3a028d0bb8cdfb100b6424be397
#endif
#if BUILDFLAG(IS_POSIX)
@@ -189,7 +190,10 @@ struct ChildProcessLauncherFileData {
@@ -196,7 +197,10 @@ struct ChildProcessLauncherFileData {
delete;
~ChildProcessLauncherFileData();
@@ -42,7 +42,7 @@ index 9f9b497aaef2558d2fb02edb115ba5916e1dd578..4e36d3a028d0bb8cdfb100b6424be397
// Files opened by the browser and passed as corresponding file descriptors
// in the child process. If a FilePath is provided, the file will be opened
// and the descriptor cached for future process launches. If a ScopedFD is
@@ -204,6 +208,15 @@ struct ChildProcessLauncherFileData {
@@ -211,6 +215,15 @@ struct ChildProcessLauncherFileData {
std::map<std::string, absl::variant<base::FilePath, base::ScopedFD>>
files_to_preload;
#endif
@@ -164,11 +164,11 @@ index cb0e7d5c5dc0154c6e88ad08ce097afdce4041f9..09b9cff76d9585297fe60f91970c610a
base::BindOnce(&ChildProcessLauncherHelper::
FinishStartSandboxedProcessOnLauncherThread,
this));
diff --git a/content/browser/service_process_host_impl.cc b/content/browser/service_process_host_impl.cc
index bdd5bec301f5fcff2d3e3d7994ecbc4eae46da36..f6082bada22c5f4e70af60ea6f555b0f363919c5 100644
--- a/content/browser/service_process_host_impl.cc
+++ b/content/browser/service_process_host_impl.cc
@@ -205,6 +205,17 @@ void LaunchServiceProcess(mojo::GenericPendingReceiver receiver,
diff --git a/content/browser/service_host/service_process_host_impl.cc b/content/browser/service_host/service_process_host_impl.cc
index 96c9563aac5847e742de5d9c9236f78bcb6cfd9c..73c9d585579ad5bdc407687b8becd0b7f2d704af 100644
--- a/content/browser/service_host/service_process_host_impl.cc
+++ b/content/browser/service_host/service_process_host_impl.cc
@@ -66,6 +66,17 @@ void LaunchServiceProcess(mojo::GenericPendingReceiver receiver,
options.allow_gpu_client.value()) {
host->SetAllowGpuClient();
}
@@ -186,11 +186,11 @@ index bdd5bec301f5fcff2d3e3d7994ecbc4eae46da36..f6082bada22c5f4e70af60ea6f555b0f
host->Start();
host->GetChildProcess()->BindServiceInterface(std::move(receiver));
}
diff --git a/content/browser/utility_process_host.cc b/content/browser/utility_process_host.cc
index 5521f41ee56e5fb46695e9f828a269a215eeedde..9fe00bd105d237cc411ce2e179a6ba6f91ded89b 100644
--- a/content/browser/utility_process_host.cc
+++ b/content/browser/utility_process_host.cc
@@ -184,11 +184,13 @@ const ChildProcessData& UtilityProcessHost::GetData() {
diff --git a/content/browser/service_host/utility_process_host.cc b/content/browser/service_host/utility_process_host.cc
index 26966d77a2ca88ce62afa16fd0f33cd5815b8c95..b7dfacb25a09b105e982c013119271b8f137e7b9 100644
--- a/content/browser/service_host/utility_process_host.cc
+++ b/content/browser/service_host/utility_process_host.cc
@@ -189,11 +189,13 @@ const ChildProcessData& UtilityProcessHost::GetData() {
return process_->GetData();
}
@@ -206,7 +206,7 @@ index 5521f41ee56e5fb46695e9f828a269a215eeedde..9fe00bd105d237cc411ce2e179a6ba6f
bool UtilityProcessHost::Start() {
return StartProcess();
@@ -235,6 +237,30 @@ void UtilityProcessHost::SetZygoteForTesting(ZygoteCommunication* handle) {
@@ -240,6 +242,30 @@ void UtilityProcessHost::SetZygoteForTesting(ZygoteCommunication* handle) {
}
#endif // BUILDFLAG(USE_ZYGOTE)
@@ -237,7 +237,7 @@ index 5521f41ee56e5fb46695e9f828a269a215eeedde..9fe00bd105d237cc411ce2e179a6ba6f
mojom::ChildProcess* UtilityProcessHost::GetChildProcess() {
return static_cast<ChildProcessHostImpl*>(process_->GetHost())
->child_process();
@@ -442,9 +468,26 @@ bool UtilityProcessHost::StartProcess() {
@@ -454,9 +480,26 @@ bool UtilityProcessHost::StartProcess() {
}
#endif // BUILDFLAG(ENABLE_GPU_CHANNEL_MEDIA_CAPTURE) && !BUILDFLAG(IS_WIN)
@@ -265,10 +265,10 @@ index 5521f41ee56e5fb46695e9f828a269a215eeedde..9fe00bd105d237cc411ce2e179a6ba6f
#if BUILDFLAG(IS_WIN)
if (!preload_libraries_.empty()) {
diff --git a/content/browser/utility_process_host.h b/content/browser/utility_process_host.h
index 26de6bd23cb05ed3789727add5e246806aa56a08..66cbabae31236758eef35bab211d4874f8a5c699 100644
--- a/content/browser/utility_process_host.h
+++ b/content/browser/utility_process_host.h
diff --git a/content/browser/service_host/utility_process_host.h b/content/browser/service_host/utility_process_host.h
index 066939fcbb7bc05e27a6bb4ed122750732629454..ab6b64737245a840a3e2b06d2ab501ef4aaed7a2 100644
--- a/content/browser/service_host/utility_process_host.h
+++ b/content/browser/service_host/utility_process_host.h
@@ -30,6 +30,10 @@
#include "content/public/common/zygote/zygote_handle.h"
#endif // BUILDFLAG(USE_ZYGOTE)
@@ -346,10 +346,10 @@ index 26de6bd23cb05ed3789727add5e246806aa56a08..66cbabae31236758eef35bab211d4874
// Indicates whether the process has been successfully launched yet, or if
// launch failed.
enum class LaunchState {
diff --git a/content/browser/utility_sandbox_delegate.cc b/content/browser/utility_sandbox_delegate.cc
index ab7c6eec5e852b9f6257db60e38c4943ddbda13b..0216c44fe97ee2409c10acb4e585eef5467945e5 100644
--- a/content/browser/utility_sandbox_delegate.cc
+++ b/content/browser/utility_sandbox_delegate.cc
diff --git a/content/browser/service_host/utility_sandbox_delegate.cc b/content/browser/service_host/utility_sandbox_delegate.cc
index 824afc2cfd01a0321d1b01cd370243dafefa1d24..ab77c85595dd5bde9eb9fd21f4914e1f9dfd4433 100644
--- a/content/browser/service_host/utility_sandbox_delegate.cc
+++ b/content/browser/service_host/utility_sandbox_delegate.cc
@@ -38,17 +38,19 @@ UtilitySandboxedProcessLauncherDelegate::
UtilitySandboxedProcessLauncherDelegate(
sandbox::mojom::Sandbox sandbox_type,
@@ -405,10 +405,10 @@ index ab7c6eec5e852b9f6257db60e38c4943ddbda13b..0216c44fe97ee2409c10acb4e585eef5
#if BUILDFLAG(USE_ZYGOTE)
ZygoteCommunication* UtilitySandboxedProcessLauncherDelegate::GetZygote() {
diff --git a/content/browser/utility_sandbox_delegate.h b/content/browser/utility_sandbox_delegate.h
index f3167c642c1f594c29ef7aa2a92a246f1d045344..f1f1dc8082b6039bf119ce10e7e4ca0e941d4cbd 100644
--- a/content/browser/utility_sandbox_delegate.h
+++ b/content/browser/utility_sandbox_delegate.h
diff --git a/content/browser/service_host/utility_sandbox_delegate.h b/content/browser/service_host/utility_sandbox_delegate.h
index cc122cb093ddd340b4e42436e461b27275f80456..ba113809f986dd125c5cdec99ca745c384c2ba83 100644
--- a/content/browser/service_host/utility_sandbox_delegate.h
+++ b/content/browser/service_host/utility_sandbox_delegate.h
@@ -34,7 +34,9 @@ class CONTENT_EXPORT UtilitySandboxedProcessLauncherDelegate
public:
UtilitySandboxedProcessLauncherDelegate(sandbox::mojom::Sandbox sandbox_type,

View File

@@ -90,7 +90,7 @@ index 8af69cac78b7488d28f1f05ccb174793fe5148cd..9f74e511c263d147b5fbe81fe100d217
private:
const HWND hwnd_;
diff --git a/components/viz/service/BUILD.gn b/components/viz/service/BUILD.gn
index 6ac941799bda10ce7f93612691a438018160a9dd..5ee0a80cb435a1aaacbea08614a5fe3b26afbe10 100644
index 610ed4c922705697b27af569af55064daeff5d25..9cb52cb768e648235f89f65e870d853d45268900 100644
--- a/components/viz/service/BUILD.gn
+++ b/components/viz/service/BUILD.gn
@@ -168,6 +168,8 @@ viz_component("service") {
@@ -522,10 +522,10 @@ index 4d6cc977ed5000d93918336a0dd57f60c0e95bbb..54d936e86b60f0538c70c4ee69e109cc
waiting_on_draw_ack_ = true;
diff --git a/components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc b/components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc
index 2707617f5ba99783d604b32abe72b6d7220a58e5..8d0ab7d1d203371ae1f4269ece4e2aab394cb534 100644
index d119eb1e217cf90c85bf752f1530345b1eec01f2..655ed4ee5525a126309f173775a28e183b4dd29a 100644
--- a/components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc
+++ b/components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc
@@ -111,7 +111,8 @@ RootCompositorFrameSinkImpl::Create(
@@ -112,7 +112,8 @@ RootCompositorFrameSinkImpl::Create(
params->gpu_compositing, params->widget);
auto output_surface = output_surface_provider->CreateOutputSurface(
params->widget, params->gpu_compositing, display_client.get(),
@@ -564,7 +564,7 @@ index 399fba1a3d4e601dc2cdd5f1f4def8b7fd7a3011..8bcbe0d26c80323155d536c0d3a177a1
gpu::SyncPointManager* GetSyncPointManager() override;
gpu::Scheduler* GetGpuScheduler() override;
diff --git a/content/browser/compositor/viz_process_transport_factory.cc b/content/browser/compositor/viz_process_transport_factory.cc
index 68ab07c7a6955f363a0e0eb3a6607c95edb521d3..01edb81229bf7a9205e1de54cdbb8e0dd0f4da80 100644
index 378910976c702d81c263973d29e17646c3963494..84553085b75b8cb9296c4af726f9a7bfc0318980 100644
--- a/content/browser/compositor/viz_process_transport_factory.cc
+++ b/content/browser/compositor/viz_process_transport_factory.cc
@@ -441,8 +441,14 @@ void VizProcessTransportFactory::OnEstablishedGpuChannel(
@@ -597,7 +597,7 @@ index 7d19b6be8bb0e0269c381cf6efdf79eaeff1e935..b8ec06ade095df99c024396a601dbf1a
// Sends the created child window to the browser process so that it can be
diff --git a/services/viz/privileged/mojom/compositing/frame_sink_manager.mojom b/services/viz/privileged/mojom/compositing/frame_sink_manager.mojom
index 7c9ea17904d861b1f2284124e43e7250bd60dc0f..935971e7b446ed0fa23eec4b4983750842dd70c9 100644
index 4828bfcb0c221ce9de3f1fe9952849c542e7e3df..4d3667deff36216db4d51ae3f01f732d691f4866 100644
--- a/services/viz/privileged/mojom/compositing/frame_sink_manager.mojom
+++ b/services/viz/privileged/mojom/compositing/frame_sink_manager.mojom
@@ -39,6 +39,7 @@ struct RootCompositorFrameSinkParams {
@@ -620,10 +620,10 @@ index 2f462f0deb5fc8a637457243fb5d5849fc214d14..695869b83cefaa24af93a2e11b39de05
+ Draw(gfx.mojom.Rect damage_rect) => ();
};
diff --git a/ui/compositor/compositor.h b/ui/compositor/compositor.h
index 6db9abcb6d7df1aed6d3b6b89e353cfd64855d94..8e1e8c3eb1c23a6b8dcb006154ab36b91e6bcc04 100644
index 7f71cc6b8812cc112262d3e9153884e428a7e495..8a61b0cc5d45a55ac188babf63b59492cff428e1 100644
--- a/ui/compositor/compositor.h
+++ b/ui/compositor/compositor.h
@@ -90,6 +90,7 @@ class DisplayPrivate;
@@ -92,6 +92,7 @@ class DisplayPrivate;
class ExternalBeginFrameController;
} // namespace mojom
@@ -631,10 +631,10 @@ index 6db9abcb6d7df1aed6d3b6b89e353cfd64855d94..8e1e8c3eb1c23a6b8dcb006154ab36b9
class HostFrameSinkManager;
class LocalSurfaceId;
class RasterContextProvider;
@@ -142,6 +143,16 @@ class COMPOSITOR_EXPORT ContextFactory {
virtual viz::HostFrameSinkManager* GetHostFrameSinkManager() = 0;
@@ -154,6 +155,15 @@ class COMPOSITOR_EXPORT ExternalBeginFrameControllerClientFactory {
viz::mojom::ExternalBeginFrameControllerClient>
CreateExternalBeginFrameControllerClient() = 0;
};
+class COMPOSITOR_EXPORT CompositorDelegate {
+ public:
+ virtual bool IsOffscreen() const = 0;
@@ -644,11 +644,10 @@ index 6db9abcb6d7df1aed6d3b6b89e353cfd64855d94..8e1e8c3eb1c23a6b8dcb006154ab36b9
+ protected:
+ virtual ~CompositorDelegate() {}
+};
+
// Compositor object to take care of GPU painting.
// A Browser compositor object is responsible for generating the final
// displayable form of pixels comprising a single widget's contents. It draws an
@@ -185,6 +196,9 @@ class COMPOSITOR_EXPORT Compositor : public base::PowerSuspendObserver,
@@ -198,6 +208,9 @@ class COMPOSITOR_EXPORT Compositor : public base::PowerSuspendObserver,
// Schedules a redraw of the layer tree associated with this compositor.
void ScheduleDraw();
@@ -658,7 +657,7 @@ index 6db9abcb6d7df1aed6d3b6b89e353cfd64855d94..8e1e8c3eb1c23a6b8dcb006154ab36b9
// Sets the root of the layer tree drawn by this Compositor. The root layer
// must have no parent. The compositor's root layer is reset if the root layer
// is destroyed. NULL can be passed to reset the root layer, in which case the
@@ -589,6 +603,8 @@ class COMPOSITOR_EXPORT Compositor : public base::PowerSuspendObserver,
@@ -620,6 +633,8 @@ class COMPOSITOR_EXPORT Compositor : public base::PowerSuspendObserver,
simple_begin_frame_observers_;
std::unique_ptr<ui::HostBeginFrameObserver> host_begin_frame_observer_;

View File

@@ -10,52 +10,80 @@ exit codes in some crashing scenarios. To mitigate this, we can rely on
ServiceProcessHost::Observer functions, but we need to pass the exit code to
the observer.
diff --git a/content/browser/service_process_host_impl.cc b/content/browser/service_process_host_impl.cc
index f6082bada22c5f4e70af60ea6f555b0f363919c5..f691676a629bf82f81117599ae0bd0a4870c9f61 100644
--- a/content/browser/service_process_host_impl.cc
+++ b/content/browser/service_process_host_impl.cc
@@ -73,12 +73,15 @@ class ServiceProcessTracker {
processes_.erase(iter);
diff --git a/content/browser/service_host/service_process_tracker.cc b/content/browser/service_host/service_process_tracker.cc
index 594629e45acd6cac9deba2d02c682a523c80e2fb..61be7804bbf370df3d2925880804866a631d35fa 100644
--- a/content/browser/service_host/service_process_tracker.cc
+++ b/content/browser/service_host/service_process_tracker.cc
@@ -48,12 +48,14 @@ void ServiceProcessTracker::NotifyTerminated(ServiceProcessId id) {
processes_.erase(iter);
}
-void ServiceProcessTracker::NotifyCrashed(ServiceProcessId id) {
+void ServiceProcessTracker::NotifyCrashed(ServiceProcessId id, int exit_code) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
auto iter = processes_.find(id);
CHECK(iter != processes_.end(), base::NotFatalUntil::M130);
for (auto& observer : observers_) {
- observer.OnServiceProcessCrashed(iter->second.Duplicate());
+ auto params = iter->second.Duplicate();
+ params.set_exit_code(exit_code);
+ observer.OnServiceProcessCrashed(params);
}
processes_.erase(iter);
}
diff --git a/content/browser/service_host/service_process_tracker.h b/content/browser/service_host/service_process_tracker.h
index 8e2b330f59c714db9dac3363df566b6e396fa4ec..47b0b3a944dec09a229fe771813118bbe49b8e28 100644
--- a/content/browser/service_host/service_process_tracker.h
+++ b/content/browser/service_host/service_process_tracker.h
@@ -34,7 +34,7 @@ class ServiceProcessTracker {
void NotifyTerminated(ServiceProcessId id);
- void NotifyCrashed(ServiceProcessId id);
+ void NotifyCrashed(ServiceProcessId id, int exit_code);
void AddObserver(ServiceProcessHost::Observer* observer);
diff --git a/content/browser/service_host/utility_process_client.cc b/content/browser/service_host/utility_process_client.cc
index 530d877ab671296ddd6dfd29a528018b3db1ad6f..a64c11f8838b9dc4704a57c96bd9aa8b98bce212 100644
--- a/content/browser/service_host/utility_process_client.cc
+++ b/content/browser/service_host/utility_process_client.cc
@@ -40,7 +40,7 @@ void UtilityProcessClient::OnProcessTerminatedNormally() {
process_info_->service_process_id());
}
-void UtilityProcessClient::OnProcessCrashed() {
+void UtilityProcessClient::OnProcessCrashed(int exit_code) {
// TODO(crbug.com/40654042): It is unclear how we can observe
// |OnProcessCrashed()| without observing |OnProcessLaunched()| first, but
// it can happen on Android. Ignore the notification in this case.
@@ -48,6 +48,7 @@ void UtilityProcessClient::OnProcessCrashed() {
return;
}
- void NotifyCrashed(ServiceProcessId id) {
+ void NotifyCrashed(ServiceProcessId id, int exit_code) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
auto iter = processes_.find(id);
CHECK(iter != processes_.end(), base::NotFatalUntil::M130);
- for (auto& observer : observers_)
- observer.OnServiceProcessCrashed(iter->second.Duplicate());
+ for (auto& observer : observers_) {
+ auto params = iter->second.Duplicate();
+ params.set_exit_code(exit_code);
+ observer.OnServiceProcessCrashed(params);
+ }
processes_.erase(iter);
}
- GetServiceProcessTracker().NotifyCrashed(process_info_->service_process_id());
+ GetServiceProcessTracker().NotifyCrashed(
+ process_info_->service_process_id(), exit_code);
}
} // namespace content
diff --git a/content/browser/service_host/utility_process_client.h b/content/browser/service_host/utility_process_client.h
index 801db538979ba62facdcf3a472dade56723ca639..7abac9a5b13b393713534ae51664c2e5da3a4c29 100644
--- a/content/browser/service_host/utility_process_client.h
+++ b/content/browser/service_host/utility_process_client.h
@@ -36,7 +36,7 @@ class UtilityProcessClient : public UtilityProcessHost::Client {
@@ -154,7 +157,7 @@ class UtilityProcessClient : public UtilityProcessHost::Client {
process_info_->service_process_id());
}
void OnProcessTerminatedNormally() override;
- void OnProcessCrashed() override {
+ void OnProcessCrashed(int exit_code) override {
// TODO(crbug.com/40654042): It is unclear how we can observe
// |OnProcessCrashed()| without observing |OnProcessLaunched()| first, but
// it can happen on Android. Ignore the notification in this case.
@@ -162,7 +165,7 @@ class UtilityProcessClient : public UtilityProcessHost::Client {
return;
GetServiceProcessTracker().NotifyCrashed(
- process_info_->service_process_id());
+ process_info_->service_process_id(), exit_code);
}
- void OnProcessCrashed() override;
+ void OnProcessCrashed(int exit_code) override;
private:
diff --git a/content/browser/utility_process_host.cc b/content/browser/utility_process_host.cc
index 9fe00bd105d237cc411ce2e179a6ba6f91ded89b..4b49a7e2c2693585b30bf031e32b40976c888e21 100644
--- a/content/browser/utility_process_host.cc
+++ b/content/browser/utility_process_host.cc
@@ -525,7 +525,7 @@ void UtilityProcessHost::OnProcessCrashed(int exit_code) {
const std::string service_interface_name_;
diff --git a/content/browser/service_host/utility_process_host.cc b/content/browser/service_host/utility_process_host.cc
index b7dfacb25a09b105e982c013119271b8f137e7b9..8c351bb09e5110a2c6692acc37e7187c43eec8ff 100644
--- a/content/browser/service_host/utility_process_host.cc
+++ b/content/browser/service_host/utility_process_host.cc
@@ -539,7 +539,7 @@ void UtilityProcessHost::OnProcessCrashed(int exit_code) {
// Take ownership of |client_| so the destructor doesn't notify it of
// termination.
auto client = std::move(client_);
@@ -64,10 +92,10 @@ index 9fe00bd105d237cc411ce2e179a6ba6f91ded89b..4b49a7e2c2693585b30bf031e32b4097
}
std::optional<std::string> UtilityProcessHost::GetServiceName() {
diff --git a/content/browser/utility_process_host.h b/content/browser/utility_process_host.h
index 66cbabae31236758eef35bab211d4874f8a5c699..88515741fa08176ba9e952759c3a52e1ae2104d1 100644
--- a/content/browser/utility_process_host.h
+++ b/content/browser/utility_process_host.h
diff --git a/content/browser/service_host/utility_process_host.h b/content/browser/service_host/utility_process_host.h
index ab6b64737245a840a3e2b06d2ab501ef4aaed7a2..9cf85b5fc97cf797965642d9bae5b3b0abf56e80 100644
--- a/content/browser/service_host/utility_process_host.h
+++ b/content/browser/service_host/utility_process_host.h
@@ -79,7 +79,7 @@ class CONTENT_EXPORT UtilityProcessHost
virtual void OnProcessLaunched(const base::Process& process) {}

View File

@@ -28,7 +28,7 @@ index 23b29fe25bc463ff1d36aa502a27c4222595e7c5..c1ac6172c4cee72f64f42ca64d2db9c0
// Returns the http referrer of original request which initited this load.
diff --git a/third_party/blink/renderer/core/loader/document_loader.h b/third_party/blink/renderer/core/loader/document_loader.h
index 2568658735315720f05c09d7b5324700be8f17bc..4225e8799622e47124efcbeb24a85b22874bb6c3 100644
index 1c6da71f9526f1567fe18d40524818f48e62584a..63b9bdae7f6552e047023be3b503bf05154e7ca9 100644
--- a/third_party/blink/renderer/core/loader/document_loader.h
+++ b/third_party/blink/renderer/core/loader/document_loader.h
@@ -327,7 +327,7 @@ class CORE_EXPORT DocumentLoader : public GarbageCollected<DocumentLoader>,

View File

@@ -37,7 +37,7 @@ index babcf42e01be00da8b853a1207e869614765b2bb..1c051a64d77e3ea8909dced73d93764d
allow_cookies_from_browser == other.allow_cookies_from_browser &&
include_request_cookies_with_response ==
diff --git a/services/network/public/cpp/resource_request.h b/services/network/public/cpp/resource_request.h
index 23762da9e9ff297007685662f45343b68d7aa351..cc4b067095a46ca34e5d409b10f0c91486b399a8 100644
index 3d1e70bd812c18206846f4188b85321e931964bb..cc3aad56c873bd97adb1179b1626d14ef346378c 100644
--- a/services/network/public/cpp/resource_request.h
+++ b/services/network/public/cpp/resource_request.h
@@ -76,6 +76,7 @@ struct COMPONENT_EXPORT(NETWORK_CPP_BASE) ResourceRequest {
@@ -61,7 +61,7 @@ index de0780c4f29026d3cc7d2742d8e80acddc6916ad..76c724151ee12fccecd36d2e9a6b7f26
mojo::PendingRemote<network::mojom::CookieAccessObserver>>();
out->trust_token_observer = data.TakeTrustTokenObserver<
diff --git a/services/network/public/cpp/url_request_mojom_traits.h b/services/network/public/cpp/url_request_mojom_traits.h
index 60feb8454fb3d41e5297a2b10c04baee4a4c01bf..08f82304444f4596a6054b758feb3803dfa3618e 100644
index ebd70d33c9e7df5abd35ed3683f39d0e7fc8b34d..45dd29445589dec900221edb65f8fe566b81ca6e 100644
--- a/services/network/public/cpp/url_request_mojom_traits.h
+++ b/services/network/public/cpp/url_request_mojom_traits.h
@@ -70,6 +70,10 @@ struct COMPONENT_EXPORT(NETWORK_CPP_BASE)
@@ -112,7 +112,7 @@ index 5c4b8a05034f8defacbc13671fe9bc92f76ade5a..e7390e01f113755613f42d592b36108b
string mime_type;
diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc
index d8d746faec7d3251835b8c8d070940bdfb5c4b6a..d5b54e9e4d4969199c4ad7a08bd384009e221743 100644
index 4a55e0381a239294a868b5aece518bed26985e83..7daf3e28f12084a3ba8ca132d846dcf333f5d799 100644
--- a/services/network/url_loader.cc
+++ b/services/network/url_loader.cc
@@ -666,6 +666,9 @@ URLLoader::URLLoader(
@@ -134,7 +134,7 @@ index d8d746faec7d3251835b8c8d070940bdfb5c4b6a..d5b54e9e4d4969199c4ad7a08bd38400
url_request_->SetResponseHeadersCallback(base::BindRepeating(
&URLLoader::SetRawResponseHeaders, base::Unretained(this)));
}
@@ -2036,6 +2039,19 @@ void URLLoader::OnResponseStarted(net::URLRequest* url_request, int net_error) {
@@ -2049,6 +2052,19 @@ void URLLoader::OnResponseStarted(net::URLRequest* url_request, int net_error) {
}
response_ = BuildResponseHead();
@@ -155,7 +155,7 @@ index d8d746faec7d3251835b8c8d070940bdfb5c4b6a..d5b54e9e4d4969199c4ad7a08bd38400
// Parse and remove the Trust Tokens response headers, if any are expected,
diff --git a/services/network/url_loader.h b/services/network/url_loader.h
index 6dc9341df6fcdaff1dcefc8d7d1e2be27f9bd3ce..da41999306bdc47743b74f4e73a7a8ca62b3d907 100644
index 4ce74976a4902914e6f59ea943ef3b5b92d090f6..783e4bd84074530e8ded3af8a1869274bb5ebe0c 100644
--- a/services/network/url_loader.h
+++ b/services/network/url_loader.h
@@ -714,6 +714,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) URLLoader

View File

@@ -7,10 +7,10 @@ Subject: feat: filter out non-shareable windows in the current application in
This patch ensures that windows protected via win.setContentProtection(true) do not appear in full display captures via desktopCapturer. This patch could be upstreamed but as the check is limited to in-process windows it doesn't make a lot of sense for Chromium itself. This patch currently has a limitation that it only function for windows created / protected BEFORE the stream is started. There is theoretical future work we can do via polling / observers to automatically update the SCContentFilter when new windows are made but for now this will solve 99+% of the problem and folks can re-order their logic a bit to get it working for their use cases.
diff --git a/content/browser/media/capture/screen_capture_kit_device_mac.mm b/content/browser/media/capture/screen_capture_kit_device_mac.mm
index 4f81c7854247e6c2ffffe39751ae6ca3377afb66..d85a71dde16218bc942245c895666ecf038bcef7 100644
index 8e7fb47f5f28f40e8e3bd00d2bb1c928112976e4..8d5a5d16fa08b9eb4abcf167a0d5acd8351a582c 100644
--- a/content/browser/media/capture/screen_capture_kit_device_mac.mm
+++ b/content/browser/media/capture/screen_capture_kit_device_mac.mm
@@ -230,8 +230,17 @@ void OnShareableContentCreated(SCShareableContent* content) {
@@ -250,8 +250,17 @@ void OnShareableContentCreated(SCShareableContent* content) {
// fallback. See https://crbug.com/325530044.
if (source_.id == display.displayID ||
source_.id == webrtc::kFullDesktopScreenId) {

View File

@@ -20,7 +20,7 @@ This patch will be removed when the deprecated sync api support is
removed.
diff --git a/components/permissions/permission_util.cc b/components/permissions/permission_util.cc
index ce926b9da23df5dc9b36a447755c9251dac0c95b..97976ff9ce81bf4939a0f638f19be5691ceeab9d 100644
index 20056b1464699cc7d45717bfc710366eb48d85f6..b227ed62991cdf285c3b90f19e09e3718e2800ea 100644
--- a/components/permissions/permission_util.cc
+++ b/components/permissions/permission_util.cc
@@ -384,6 +384,7 @@ ContentSettingsType PermissionUtil::PermissionTypeToContentSettingsTypeSafe(

View File

@@ -12,10 +12,10 @@ ui problems (like dissapearing popup during typing in html's
input list.
diff --git a/ui/views/widget/widget.h b/ui/views/widget/widget.h
index 6dae25a61bfaf26c59f044628629771c36be73f3..2e76f18cf48303462c7489a01d002a3531695b83 100644
index 842ea6f7eb2415170a59e46ca955165d656ba149..1ea926753f65baa8f9671fdd63f98fb94c28ba6c 100644
--- a/ui/views/widget/widget.h
+++ b/ui/views/widget/widget.h
@@ -1201,6 +1201,8 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate,
@@ -1200,6 +1200,8 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate,
// True if widget was created in headless mode.
bool is_headless() const { return is_headless_; }

View File

@@ -28,10 +28,10 @@ The patch should be removed in favor of either:
Upstream bug https://bugs.chromium.org/p/chromium/issues/detail?id=1081397.
diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc
index 84b894ac879b5a0ada509da98294db75eebe7fd7..976b8ee4a6f9529727209a3e3a44524c62d0c798 100644
index 8c4070309b4a1072496e3e55f6f530a52a799451..afd62da2e140da715d9be15eb5c93f0339f59145 100644
--- a/content/browser/renderer_host/navigation_request.cc
+++ b/content/browser/renderer_host/navigation_request.cc
@@ -10947,6 +10947,12 @@ NavigationRequest::GetOriginForURLLoaderFactoryUncheckedWithDebugInfo() {
@@ -11048,6 +11048,12 @@ NavigationRequest::GetOriginForURLLoaderFactoryUncheckedWithDebugInfo() {
"blob");
}
@@ -45,10 +45,10 @@ index 84b894ac879b5a0ada509da98294db75eebe7fd7..976b8ee4a6f9529727209a3e3a44524c
// origin of |common_params.url| and/or |common_params.initiator_origin|.
url::Origin resolved_origin = url::Origin::Resolve(
diff --git a/third_party/blink/renderer/core/loader/document_loader.cc b/third_party/blink/renderer/core/loader/document_loader.cc
index cbf8b2ed5ce03a3b4524f4e7f97bbb7750e5c583..b84bdff826390234f470025edba02abddefff045 100644
index 0c7b5af098a53a8709cdf62d455520ccef222dbb..1b6a7942c1506abc2fbe7d1efe58c0964a4e3be0 100644
--- a/third_party/blink/renderer/core/loader/document_loader.cc
+++ b/third_party/blink/renderer/core/loader/document_loader.cc
@@ -2325,6 +2325,10 @@ Frame* DocumentLoader::CalculateOwnerFrame() {
@@ -2336,6 +2336,10 @@ Frame* DocumentLoader::CalculateOwnerFrame() {
scoped_refptr<SecurityOrigin> DocumentLoader::CalculateOrigin(
Document* owner_document) {
scoped_refptr<SecurityOrigin> origin;
@@ -59,7 +59,7 @@ index cbf8b2ed5ce03a3b4524f4e7f97bbb7750e5c583..b84bdff826390234f470025edba02abd
StringBuilder debug_info_builder;
// Whether the origin is newly created within this call, instead of copied
// from an existing document's origin or from `origin_to_commit_`. If this is
@@ -2378,6 +2382,10 @@ scoped_refptr<SecurityOrigin> DocumentLoader::CalculateOrigin(
@@ -2389,6 +2393,10 @@ scoped_refptr<SecurityOrigin> DocumentLoader::CalculateOrigin(
// the end of this function.
origin = origin_to_commit_;
debug_info_builder.Append("use_origin_to_commit");

View File

@@ -12,10 +12,10 @@ invisible state of the `viz::DisplayScheduler` owned
by the `ui::Compositor`.
diff --git a/ui/compositor/compositor.cc b/ui/compositor/compositor.cc
index 12cf38959be01d05cd43a9635ac87538c4f5e5ad..1a2a1bb5480085432c9575a90fb6959b9d0eac87 100644
index 008df596834faccfa19525dcae0239ffed7b2c3f..aecfa059c6ac53a3377e1f60b3c66bbb594514a3 100644
--- a/ui/compositor/compositor.cc
+++ b/ui/compositor/compositor.cc
@@ -350,7 +350,8 @@ void Compositor::SetLayerTreeFrameSink(
@@ -361,7 +361,8 @@ void Compositor::SetLayerTreeFrameSink(
if (display_private_) {
disabled_swap_until_resize_ = false;
display_private_->Resize(size());
@@ -25,7 +25,7 @@ index 12cf38959be01d05cd43a9635ac87538c4f5e5ad..1a2a1bb5480085432c9575a90fb6959b
display_private_->SetDisplayColorSpaces(display_color_spaces_);
display_private_->SetDisplayColorMatrix(
gfx::SkM44ToTransform(display_color_matrix_));
@@ -570,7 +571,9 @@ void Compositor::SetVisible(bool visible) {
@@ -581,7 +582,9 @@ void Compositor::SetVisible(bool visible) {
// updated then. We need to call this even if the visibility hasn't changed,
// for the same reason.
if (display_private_)
@@ -36,7 +36,7 @@ index 12cf38959be01d05cd43a9635ac87538c4f5e5ad..1a2a1bb5480085432c9575a90fb6959b
if (changed) {
observer_list_.Notify(&CompositorObserver::OnCompositorVisibilityChanged,
@@ -1023,6 +1026,15 @@ void Compositor::MaybeUpdateObserveBeginFrame() {
@@ -1034,6 +1037,15 @@ void Compositor::MaybeUpdateObserveBeginFrame() {
host_begin_frame_observer_->GetBoundRemote());
}
@@ -53,10 +53,10 @@ index 12cf38959be01d05cd43a9635ac87538c4f5e5ad..1a2a1bb5480085432c9575a90fb6959b
void Compositor::SetSeamlessRefreshRates(
const std::vector<float>& seamless_refresh_rates) {
diff --git a/ui/compositor/compositor.h b/ui/compositor/compositor.h
index 8e1e8c3eb1c23a6b8dcb006154ab36b91e6bcc04..962e807c07365015b964c9b6361035d27ec8e4ae 100644
index 8a61b0cc5d45a55ac188babf63b59492cff428e1..07200e5320c999f1a067ce785b7ad5c7952586d7 100644
--- a/ui/compositor/compositor.h
+++ b/ui/compositor/compositor.h
@@ -511,6 +511,10 @@ class COMPOSITOR_EXPORT Compositor : public base::PowerSuspendObserver,
@@ -523,6 +523,10 @@ class COMPOSITOR_EXPORT Compositor : public base::PowerSuspendObserver,
const cc::LayerTreeSettings& GetLayerTreeSettings() const;
@@ -67,7 +67,7 @@ index 8e1e8c3eb1c23a6b8dcb006154ab36b91e6bcc04..962e807c07365015b964c9b6361035d2
size_t saved_events_metrics_count_for_testing() const {
return host_->saved_events_metrics_count_for_testing();
}
@@ -684,6 +688,12 @@ class COMPOSITOR_EXPORT Compositor : public base::PowerSuspendObserver,
@@ -714,6 +718,12 @@ class COMPOSITOR_EXPORT Compositor : public base::PowerSuspendObserver,
// See go/report-ux-metrics-at-painting for details.
bool animation_started_ = false;

View File

@@ -11,7 +11,7 @@ while the renderer is blocked. This Cl takes an approach similar to that taken i
MediaQueryList in order to enable the promise to be resolved.
diff --git a/third_party/blink/renderer/core/css/font_face_set_document.cc b/third_party/blink/renderer/core/css/font_face_set_document.cc
index a477f3364122643cd79305adf86bb3cbbbded37e..479778c0118c7813ab424f4adb4f424f89ce3596 100644
index 79d15ae4d9de6350429b9b907d5136266d02c579..7e26808b3ef4437940ee6745d2651037c1bba9a2 100644
--- a/third_party/blink/renderer/core/css/font_face_set_document.cc
+++ b/third_party/blink/renderer/core/css/font_face_set_document.cc
@@ -27,6 +27,7 @@

View File

@@ -9,10 +9,10 @@ focus node change via TextInputManager.
chromium-bug: https://crbug.com/1369605
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc
index ee083e550adf7533531ebf2834e400a84e692c41..33e73a6bbdf77f776271de6bb05e7d869fe938b5 100644
index 9503beefcbcfe7d99674582ece10a7e551fae96d..32302e3dae2098319ed2d1f1403649fe8db2887e 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -3218,6 +3218,12 @@ void RenderWidgetHostViewAura::OnTextSelectionChanged(
@@ -3229,6 +3229,12 @@ void RenderWidgetHostViewAura::OnTextSelectionChanged(
}
}
@@ -26,10 +26,10 @@ index ee083e550adf7533531ebf2834e400a84e692c41..33e73a6bbdf77f776271de6bb05e7d86
RenderWidgetHostViewAura* popup_child_host_view) {
popup_child_host_view_ = popup_child_host_view;
diff --git a/content/browser/renderer_host/render_widget_host_view_aura.h b/content/browser/renderer_host/render_widget_host_view_aura.h
index 5410c9d207bad1da2f733e153630400f50642617..1696658f38b965f69146c76c7f48d04a15a2cc8d 100644
index 06fc7daf2761ae728f3adf9eb2ef3910a14cf827..8d34f9dfd9a8625a3fab397f7b96c12c87cb8a61 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.h
+++ b/content/browser/renderer_host/render_widget_host_view_aura.h
@@ -651,6 +651,8 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
@@ -653,6 +653,8 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
RenderWidgetHostViewBase* updated_view) override;
void OnTextSelectionChanged(TextInputManager* text_input_mangager,
RenderWidgetHostViewBase* updated_view) override;
@@ -87,10 +87,10 @@ index 51522e60d6dc14f1113cc438558b6b393c3fe73a..153ed02f493a83ef9ca354cc18736f93
// The view with active text input state, i.e., a focused <input> element.
// It will be nullptr if no such view exists. Note that the active view
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 5cf853b42371e044197e998bcf91b5cd2350ee43..e7f78b970f433a232cbcb172904d0ab993c5ac6a 100644
index f5013667355aea93bfb5a926375cb674198d7e2c..8c805aec2042d7c02ba0a28f544feb6d976a0775 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -9701,7 +9701,7 @@ void WebContentsImpl::OnFocusedElementChangedInFrame(
@@ -9733,7 +9733,7 @@ void WebContentsImpl::OnFocusedElementChangedInFrame(
"WebContentsImpl::OnFocusedElementChangedInFrame",
"render_frame_host", frame);
RenderWidgetHostViewBase* root_view =

View File

@@ -1,236 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: reito <cnschwarzer@qq.com>
Date: Wed, 12 Feb 2025 20:42:02 +0800
Subject: fix: osr stutter in both cpu and gpu capture when page has animation.
https://crrev.org/c/6232721
https://crbug.com/391118566
There's bug in VideoCaptureOracle that cause stutter in both cpu and gpu capture when page has animation.
The upstream has a fix, which will be available in Chromium M135.
Backport this fix for Electron versions before that.
diff --git a/media/capture/content/video_capture_oracle.cc b/media/capture/content/video_capture_oracle.cc
index dad9598799a670b3cfb14965bc8a7b4ea3b4f95f..05a82788ae1e5c304ee150a2390f346d7b454630 100644
--- a/media/capture/content/video_capture_oracle.cc
+++ b/media/capture/content/video_capture_oracle.cc
@@ -118,8 +118,9 @@ void VideoCaptureOracle::SetCaptureSizeConstraints(
void VideoCaptureOracle::SetAutoThrottlingEnabled(bool enabled) {
const bool was_enabled =
(capture_size_throttling_mode_ != kThrottlingDisabled);
- if (was_enabled == enabled)
+ if (was_enabled == enabled) {
return;
+ }
capture_size_throttling_mode_ =
enabled ? kThrottlingEnabled : kThrottlingDisabled;
VLOG(1) << "Capture size auto-throttling is now "
@@ -127,19 +128,22 @@ void VideoCaptureOracle::SetAutoThrottlingEnabled(bool enabled) {
// When not auto-throttling, have the CaptureResolutionChooser target the max
// resolution within constraints.
- if (!enabled)
+ if (!enabled) {
resolution_chooser_.SetTargetFrameArea(std::numeric_limits<int>::max());
+ }
- if (next_frame_number_ > 0)
+ if (next_frame_number_ > 0) {
CommitCaptureSizeAndReset(GetFrameTimestamp(next_frame_number_ - 1));
+ }
}
void VideoCaptureOracle::SetSourceSize(const gfx::Size& source_size) {
resolution_chooser_.SetSourceSize(source_size);
// If the |resolution_chooser_| computed a new capture size, that will become
// visible via a future call to ObserveEventAndDecideCapture().
- source_size_change_time_ = (next_frame_number_ == 0) ?
- base::TimeTicks() : GetFrameTimestamp(next_frame_number_ - 1);
+ source_size_change_time_ = (next_frame_number_ == 0)
+ ? base::TimeTicks()
+ : GetFrameTimestamp(next_frame_number_ - 1);
}
bool VideoCaptureOracle::ObserveEventAndDecideCapture(
@@ -172,6 +176,15 @@ bool VideoCaptureOracle::ObserveEventAndDecideCapture(
if (should_sample) {
event_time = content_sampler_.frame_timestamp();
duration_of_next_frame_ = content_sampler_.sampling_period();
+ } else {
+ // https://crbug.com/391118566
+ // The content sampler may not sample the frame, if the
+ // `detected_region_` does not match the `damage_rect`. In this case,
+ // the capture may halt up to kNonAnimatingThreshold (250ms) and cause
+ // the video stutter, until it recovers and do another animation
+ // detection. To avoid this, we should use the smoothing sampler as a
+ // fallback to prevent the bad output.
+ should_sample = smoothing_sampler_.ShouldSample();
}
last_time_animation_was_detected_ = event_time;
} else {
@@ -198,8 +211,9 @@ bool VideoCaptureOracle::ObserveEventAndDecideCapture(
NOTREACHED();
}
- if (!should_sample)
+ if (!should_sample) {
return false;
+ }
// If the exact duration of the next frame has not been determined, estimate
// it using the difference between the current and last frame.
@@ -373,16 +387,18 @@ void VideoCaptureOracle::RecordConsumerFeedback(
// resource_utilization feedback.
- if (capture_size_throttling_mode_ == kThrottlingDisabled)
+ if (capture_size_throttling_mode_ == kThrottlingDisabled) {
return;
+ }
if (!std::isfinite(feedback.resource_utilization)) {
LOG(DFATAL) << "Non-finite utilization provided by consumer for frame #"
<< frame_number << ": " << feedback.resource_utilization;
return;
}
- if (feedback.resource_utilization <= 0.0)
+ if (feedback.resource_utilization <= 0.0) {
return; // Non-positive values are normal, meaning N/A.
+ }
if (capture_size_throttling_mode_ != kThrottlingActive) {
VLOG(1) << "Received consumer feedback at frame #" << frame_number
@@ -553,12 +569,14 @@ int VideoCaptureOracle::AnalyzeForIncreasedArea(base::TimeTicks analyze_time) {
const int current_area = capture_size_.GetArea();
const int increased_area =
resolution_chooser_.FindLargerFrameSize(current_area, 1).GetArea();
- if (increased_area <= current_area)
+ if (increased_area <= current_area) {
return -1;
+ }
// Determine whether the buffer pool could handle an increase in area.
- if (!HasSufficientRecentFeedback(buffer_pool_utilization_, analyze_time))
+ if (!HasSufficientRecentFeedback(buffer_pool_utilization_, analyze_time)) {
return -1;
+ }
if (buffer_pool_utilization_.current() > 0.0) {
const int buffer_capable_area = base::saturated_cast<int>(
current_area / buffer_pool_utilization_.current());
@@ -593,8 +611,9 @@ int VideoCaptureOracle::AnalyzeForIncreasedArea(base::TimeTicks analyze_time) {
// At this point, the system is currently under-utilized. Reset the start
// time if the system was not under-utilized when the last analysis was made.
- if (start_time_of_underutilization_.is_null())
+ if (start_time_of_underutilization_.is_null()) {
start_time_of_underutilization_ = analyze_time;
+ }
// If the under-utilization started soon after the last source size change,
// permit an immediate increase in the capture area. This allows the system
diff --git a/media/capture/content/video_capture_oracle_unittest.cc b/media/capture/content/video_capture_oracle_unittest.cc
index 066676fa998db6782270ddbf42fe176d88eb30d4..6cd7567e91bc8c496846a685aa1506c7548f3a21 100644
--- a/media/capture/content/video_capture_oracle_unittest.cc
+++ b/media/capture/content/video_capture_oracle_unittest.cc
@@ -158,21 +158,26 @@ TEST(VideoCaptureOracleTest, TransitionsSmoothlyBetweenSamplers) {
const bool provide_animated_content_event =
(i % 100) >= 25 && (i % 100) < 75;
- // Only the few events that trigger the lock-out transition should be
- // dropped, because the AnimatedContentSampler doesn't yet realize the
- // animation ended. Otherwise, the oracle should always decide to sample
- // because one of its samplers says to.
- const bool require_oracle_says_sample = (i % 100) < 75 || (i % 100) >= 78;
+ // https://crbug.com/391118566
+ // Previously the AnimatedContentSampler has a bug that cause jank.
+ // The oracle should always use SmoothEventSampler as a fallback. If
+ // AnimatedContentSampler doesn't yet realize the animation ended or
+ // doesn't keep up with the prediction it make, and it will wait for
+ // kNonAnimatingThreshold before it lock-out and hand over to smooth
+ // handler. This will cause the video to stutter and it is unacceptable.
+ // So, when the AnimatedContentSampler goes into wrong state, we now
+ // use SmoothEventSampler's decision as a fallback to prevent jank output
+ // and still has a overall limit on capture frequency.
const bool oracle_says_sample = oracle.ObserveEventAndDecideCapture(
VideoCaptureOracle::kCompositorUpdate,
provide_animated_content_event ? animation_damage_rect : gfx::Rect(),
t);
- if (require_oracle_says_sample)
- ASSERT_TRUE(oracle_says_sample);
- if (!oracle_says_sample) {
- ASSERT_EQ(base::TimeDelta(), oracle.estimated_frame_duration());
- continue;
- }
+
+ // Because we now use SmoothEventSampler as a fallback, oracle should
+ // always say sample. The previous AnimatedContentSampler lock-out
+ // dropped frame are now revived by SmoothEventSampler, since this test's
+ // capture frequency always meets min capture limit requirement.
+ ASSERT_TRUE(oracle_says_sample);
ASSERT_LT(base::TimeDelta(), oracle.estimated_frame_duration());
const int frame_number = oracle.next_frame_number();
@@ -184,12 +189,9 @@ TEST(VideoCaptureOracleTest, TransitionsSmoothlyBetweenSamplers) {
if (!last_frame_timestamp.is_null()) {
const base::TimeDelta delta = frame_timestamp - last_frame_timestamp;
EXPECT_LE(event_increment.InMicroseconds(), delta.InMicroseconds());
- // Right after the AnimatedContentSampler lock-out transition, there were
- // a few frames dropped, so allow a gap in the timestamps. Otherwise, the
- // delta between frame timestamps should never be more than 2X the
+ // The delta between frame timestamps should never be more than 2X the
// |event_increment|.
- const base::TimeDelta max_acceptable_delta =
- (i % 100) == 78 ? event_increment * 5 : event_increment * 2;
+ const base::TimeDelta max_acceptable_delta = event_increment * 2;
EXPECT_GE(max_acceptable_delta.InMicroseconds(), delta.InMicroseconds());
}
last_frame_timestamp = frame_timestamp;
@@ -444,9 +446,9 @@ void RunAutoThrottleTest(bool is_content_animating,
// expect the resolution to remain constant. Repeat.
for (int i = 0; i < 2; ++i) {
const gfx::Size starting_size = oracle.capture_size();
- SCOPED_TRACE(::testing::Message() << "Stepping down from "
- << starting_size.ToString()
- << ", i=" << i);
+ SCOPED_TRACE(::testing::Message()
+ << "Stepping down from " << starting_size.ToString()
+ << ", i=" << i);
gfx::Size stepped_down_size;
end_t = t + base::Seconds(10);
@@ -471,9 +473,10 @@ void RunAutoThrottleTest(bool is_content_animating,
oracle.RecordCapture(with_consumer_feedback ? 0.25 : utilization);
base::TimeTicks ignored;
ASSERT_TRUE(oracle.CompleteCapture(frame_number, true, &ignored));
- if (with_consumer_feedback)
+ if (with_consumer_feedback) {
oracle.RecordConsumerFeedback(frame_number,
media::VideoCaptureFeedback(utilization));
+ }
}
}
@@ -482,9 +485,9 @@ void RunAutoThrottleTest(bool is_content_animating,
// utilization and expect the resolution to remain constant. Repeat.
for (int i = 0; i < 2; ++i) {
const gfx::Size starting_size = oracle.capture_size();
- SCOPED_TRACE(::testing::Message() << "Stepping up from "
- << starting_size.ToString()
- << ", i=" << i);
+ SCOPED_TRACE(::testing::Message()
+ << "Stepping up from " << starting_size.ToString()
+ << ", i=" << i);
gfx::Size stepped_up_size;
end_t = t + base::Seconds(is_content_animating ? 90 : 10);
@@ -513,9 +516,10 @@ void RunAutoThrottleTest(bool is_content_animating,
oracle.RecordCapture(with_consumer_feedback ? 0.25 : utilization);
base::TimeTicks ignored;
ASSERT_TRUE(oracle.CompleteCapture(frame_number, true, &ignored));
- if (with_consumer_feedback)
+ if (with_consumer_feedback) {
oracle.RecordConsumerFeedback(frame_number,
media::VideoCaptureFeedback(utilization));
+ }
}
}
}

View File

@@ -11,10 +11,10 @@ This patch should be upstreamed as a conditional revert of the logic in desktop
vs mobile runtimes. i.e. restore the old logic only on desktop platforms
diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc
index 4d489a14d3f759ca9464c9a594d5800690943119..f3f8fee8c81e19c0dfa5c3649abe274112dbd0fd 100644
index e420ccfd374e1a6be1ab1e16752584413de23c63..7d3d003fee030926e330a02a9f00b1f807940be3 100644
--- a/content/browser/renderer_host/render_widget_host_impl.cc
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -2063,9 +2063,8 @@ RenderWidgetHostImpl::GetWidgetInputHandler() {
@@ -2103,9 +2103,8 @@ RenderWidgetHostImpl::GetWidgetInputHandler() {
void RenderWidgetHostImpl::NotifyScreenInfoChanged() {
// The resize message (which may not happen immediately) will carry with it
// the screen info as well as the new size (if the screen has changed scale

View File

@@ -20,7 +20,7 @@ index fc9cb7e68bdad4c40fab63f70243e09ad005ab80..199fbceda530da31aab9126d78b4bd21
injector_->ExpectsResults(), injector_->ShouldWaitForPromise());
}
diff --git a/third_party/blink/public/web/web_local_frame.h b/third_party/blink/public/web/web_local_frame.h
index 8acbc0ba8f4ab4acd2b55339ba44d0d46087c155..edc0a323ec444c8a4f51ac632f49d27d76537812 100644
index f5ec8d885be87b7f2199092b118524f8fb0cc6bc..e42ffaabae75a7db9fe46a33ce58f430c80d768f 100644
--- a/third_party/blink/public/web/web_local_frame.h
+++ b/third_party/blink/public/web/web_local_frame.h
@@ -459,6 +459,7 @@ class BLINK_EXPORT WebLocalFrame : public WebFrame {
@@ -59,10 +59,10 @@ index cba373664bec3a32abad6fe0396bd67b53b7e67f..a54f1b3351efd2d8f324436f7f35cd43
#endif // THIRD_PARTY_BLINK_PUBLIC_WEB_WEB_SCRIPT_EXECUTION_CALLBACK_H_
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
index 79ec1e2b1274160cca97d14a69c36eac4bc36b0f..74997dd0f11fbfa3dee2e20b9b2ee895bb339b5a 100644
index 4da759d7ab6d6fb6b6d4d1648da0e62d7629ad5c..7e537b54b11220f3bc6619b027677182485b201d 100644
--- a/third_party/blink/renderer/core/frame/local_frame.cc
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
@@ -3136,6 +3136,7 @@ void LocalFrame::RequestExecuteScript(
@@ -3092,6 +3092,7 @@ void LocalFrame::RequestExecuteScript(
mojom::blink::EvaluationTiming evaluation_timing,
mojom::blink::LoadEventBlockingOption blocking_option,
WebScriptExecutionCallback callback,
@@ -70,7 +70,7 @@ index 79ec1e2b1274160cca97d14a69c36eac4bc36b0f..74997dd0f11fbfa3dee2e20b9b2ee895
BackForwardCacheAware back_forward_cache_aware,
mojom::blink::WantResultOption want_result_option,
mojom::blink::PromiseResultOption promise_behavior) {
@@ -3168,7 +3169,7 @@ void LocalFrame::RequestExecuteScript(
@@ -3124,7 +3125,7 @@ void LocalFrame::RequestExecuteScript(
PausableScriptExecutor::CreateAndRun(
script_state, std::move(script_sources), execute_script_policy,
user_gesture, evaluation_timing, blocking_option, want_result_option,
@@ -80,10 +80,10 @@ index 79ec1e2b1274160cca97d14a69c36eac4bc36b0f..74997dd0f11fbfa3dee2e20b9b2ee895
void LocalFrame::SetEvictCachedSessionStorageOnFreezeOrUnload() {
diff --git a/third_party/blink/renderer/core/frame/local_frame.h b/third_party/blink/renderer/core/frame/local_frame.h
index 3feb24ec648ef98dd86d76ed9da55192ced42cb2..98b64770169bda80a10f15ba7cb6f223cf627f37 100644
index b90e58cb52d32c10d5dcabf3de001b510e1a4cc4..c2ba0c05a74fc786684b50093720e509c6f723c3 100644
--- a/third_party/blink/renderer/core/frame/local_frame.h
+++ b/third_party/blink/renderer/core/frame/local_frame.h
@@ -824,6 +824,7 @@ class CORE_EXPORT LocalFrame final
@@ -814,6 +814,7 @@ class CORE_EXPORT LocalFrame final
mojom::blink::EvaluationTiming,
mojom::blink::LoadEventBlockingOption,
WebScriptExecutionCallback,
@@ -92,7 +92,7 @@ index 3feb24ec648ef98dd86d76ed9da55192ced42cb2..98b64770169bda80a10f15ba7cb6f223
mojom::blink::WantResultOption,
mojom::blink::PromiseResultOption);
diff --git a/third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc b/third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc
index 223fe3d3bb6bdb829421b20f70eab803bacfa8f1..2eedd1e9744e687b21d094533e683ce2acf5c1e5 100644
index b77ad041a717ef8f317a9d15edd61af3c465b2aa..e3955c64ff894682b91c4cc3c49c672659e3a3bf 100644
--- a/third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_mojo_handler.cc
@@ -964,6 +964,7 @@ void LocalFrameMojoHandler::JavaScriptExecuteRequestInIsolatedWorld(
@@ -203,10 +203,10 @@ index fa65331f40b90d812b71a489fd560e9359152d2b..390714d631dc88ef92d59ef9618a5706
const mojom::blink::UserActivationOption user_activation_option_;
const mojom::blink::LoadEventBlockingOption blocking_option_;
diff --git a/third_party/blink/renderer/core/frame/web_frame_test.cc b/third_party/blink/renderer/core/frame/web_frame_test.cc
index c7ae64a16dbf0a15bb60276a2e1002d72621f889..28d375a355b31c6f764c3158e59487775a0354d5 100644
index 2e2aa78d308157642cf27941fc22a211f6396a0d..c5bcbe1f933f2e79003f7eb9f6368174426a6f0a 100644
--- a/third_party/blink/renderer/core/frame/web_frame_test.cc
+++ b/third_party/blink/renderer/core/frame/web_frame_test.cc
@@ -297,6 +297,7 @@ void ExecuteScriptsInMainWorld(
@@ -298,6 +298,7 @@ void ExecuteScriptsInMainWorld(
DOMWrapperWorld::kMainWorldId, sources, user_gesture,
mojom::blink::EvaluationTiming::kSynchronous,
mojom::blink::LoadEventBlockingOption::kDoNotBlock, std::move(callback),
@@ -215,7 +215,7 @@ index c7ae64a16dbf0a15bb60276a2e1002d72621f889..28d375a355b31c6f764c3158e5948777
mojom::blink::WantResultOption::kWantResult, wait_for_promise);
}
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
index ef62cdde31f6fce7e021f1efc3d484e6968fb3ea..b8eb13204bdbc7bb9b649aac32463910b34bcb84 100644
index 17dfa9c34625493409a7e1f7a403413d1f4ac940..1b43dc5b302b8ba3c4194b37c7cd45332d329912 100644
--- a/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
+++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.cc
@@ -1097,14 +1097,15 @@ void WebLocalFrameImpl::RequestExecuteScript(
@@ -237,7 +237,7 @@ index ef62cdde31f6fce7e021f1efc3d484e6968fb3ea..b8eb13204bdbc7bb9b649aac32463910
bool WebLocalFrameImpl::IsInspectorConnected() {
diff --git a/third_party/blink/renderer/core/frame/web_local_frame_impl.h b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
index 151a530d610fa47d343994743ce21a2072837626..b254f83e0473de9ab3bebff2fbd968aa126b246c 100644
index 7bc07b1705207447f7727592049c201b011e6b5c..626d0501c0344d7c171f26c96dc78f5e85fb2a81 100644
--- a/third_party/blink/renderer/core/frame/web_local_frame_impl.h
+++ b/third_party/blink/renderer/core/frame/web_local_frame_impl.h
@@ -196,6 +196,7 @@ class CORE_EXPORT WebLocalFrameImpl final

View File

@@ -6,7 +6,7 @@ Subject: fix: select the first menu item when opened via keyboard
This fixes an accessibility issue where the root view is 'focused' to the screen reader instead of the first menu item as with all other native menus. This patch will be upstreamed.
diff --git a/ui/views/controls/menu/menu_controller.cc b/ui/views/controls/menu/menu_controller.cc
index fb9d5cab9629fb58504f6c18082b759c47e31739..399d0b6dd0b4bf3e493570e14ad55a606d23dbf9 100644
index 6337d0d70f247b06c7871fb7faa75c2b0b7d541c..2bd399161329b054dd67961f767ccc4480af413c 100644
--- a/ui/views/controls/menu/menu_controller.cc
+++ b/ui/views/controls/menu/menu_controller.cc
@@ -700,6 +700,14 @@ void MenuController::Run(Widget* parent,
@@ -24,7 +24,7 @@ index fb9d5cab9629fb58504f6c18082b759c47e31739..399d0b6dd0b4bf3e493570e14ad55a60
if (button_controller) {
pressed_lock_ = button_controller->TakeLock(
false, ui::LocatedEvent::FromIfValid(event));
@@ -2399,19 +2407,15 @@ void MenuController::OpenMenuImpl(MenuItemView* item, bool show) {
@@ -2401,19 +2409,15 @@ void MenuController::OpenMenuImpl(MenuItemView* item, bool show) {
}
item->GetSubmenu()->ShowAt(params);

View File

@@ -15,10 +15,10 @@ capturer was window or screen-specific, as the IDs remain valid for
generic capturer as well.
diff --git a/content/browser/media/capture/desktop_capture_device.cc b/content/browser/media/capture/desktop_capture_device.cc
index 56e7c4058bbdd4d13c5ac90eb41972ad63da8abf..f5d78bb1c70f656c91596fd389aa0b70533b6148 100644
index 010deff30b050c1de9324f969588385958bcb14e..b4b1e9ee805a8565a04737e0898ad8e46709c4d8 100644
--- a/content/browser/media/capture/desktop_capture_device.cc
+++ b/content/browser/media/capture/desktop_capture_device.cc
@@ -899,8 +899,14 @@ std::unique_ptr<media::VideoCaptureDevice> DesktopCaptureDevice::Create(
@@ -902,8 +902,14 @@ std::unique_ptr<media::VideoCaptureDevice> DesktopCaptureDevice::Create(
switch (source.type) {
case DesktopMediaID::TYPE_SCREEN: {
@@ -35,7 +35,7 @@ index 56e7c4058bbdd4d13c5ac90eb41972ad63da8abf..f5d78bb1c70f656c91596fd389aa0b70
if (screen_capturer && screen_capturer->SelectSource(source.id)) {
capturer = std::make_unique<webrtc::DesktopAndCursorComposer>(
std::move(screen_capturer), options);
@@ -913,8 +919,14 @@ std::unique_ptr<media::VideoCaptureDevice> DesktopCaptureDevice::Create(
@@ -916,8 +922,14 @@ std::unique_ptr<media::VideoCaptureDevice> DesktopCaptureDevice::Create(
}
case DesktopMediaID::TYPE_WINDOW: {

View File

@@ -6,10 +6,10 @@ Subject: frame_host_manager.patch
Allows embedder to intercept site instances created by chromium.
diff --git a/content/browser/renderer_host/render_frame_host_manager.cc b/content/browser/renderer_host/render_frame_host_manager.cc
index d6c91f23000c5a15d791560f91a5aa235f2701c7..bf0e2979cf1534b9f72bb44c3e51fa5a41e49566 100644
index 7ece2f1a4e55587c37bff9ebeec6d8783625f795..fc5f6cffb6eee6a80728e649ec503d3be10644bc 100644
--- a/content/browser/renderer_host/render_frame_host_manager.cc
+++ b/content/browser/renderer_host/render_frame_host_manager.cc
@@ -4693,6 +4693,9 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
@@ -4728,6 +4728,9 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest(
request->ResetStateForSiteInstanceChange();
}
@@ -20,10 +20,10 @@ index d6c91f23000c5a15d791560f91a5aa235f2701c7..bf0e2979cf1534b9f72bb44c3e51fa5a
}
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
index 045689f947f45e7d4c50850ba760b0861af79798..7be5a91c4f132ce73869e8680db85d43feed6cc0 100644
index abdac7f78b24392e04c431584a0bae8fca814df6..bd284a39c7f23fc56860eb4ad68afefbd1b18801 100644
--- a/content/public/browser/content_browser_client.h
+++ b/content/public/browser/content_browser_client.h
@@ -344,6 +344,11 @@ class CONTENT_EXPORT ContentBrowserClient {
@@ -339,6 +339,11 @@ class CONTENT_EXPORT ContentBrowserClient {
virtual ~ContentBrowserClient() = default;

View File

@@ -7,10 +7,10 @@ We don't use gin to create the V8 platform, because we need to inject Node
things.
diff --git a/gin/isolate_holder.cc b/gin/isolate_holder.cc
index 1ec03c80cfee5fc427fad846a4df41b98698961c..1bed0865ba952b611985d41b742274861926925d 100644
index b3416c90c9071d8d32d30ecf257b64f133b2ae07..8632f1c18b407bb7832900bcebadacb3707224ac 100644
--- a/gin/isolate_holder.cc
+++ b/gin/isolate_holder.cc
@@ -155,11 +155,13 @@ void IsolateHolder::Initialize(ScriptMode mode,
@@ -162,11 +162,13 @@ void IsolateHolder::Initialize(ScriptMode mode,
std::string js_command_line_flags,
bool disallow_v8_feature_flag_overrides,
v8::FatalErrorCallback fatal_error_callback,
@@ -27,10 +27,10 @@ index 1ec03c80cfee5fc427fad846a4df41b98698961c..1bed0865ba952b611985d41b74227486
g_reference_table = reference_table;
g_fatal_error_callback = fatal_error_callback;
diff --git a/gin/public/isolate_holder.h b/gin/public/isolate_holder.h
index cb4517de39b2ca7b32db557c6d3dd0227ba5b4c2..d1d178de28c7d46db1c96ba321070612ef5812e1 100644
index ff42cfbb6a228e902317c7e3ab035d8437d5dd62..e27f177ce27e177abf6cee84cd466e7a8a829ee7 100644
--- a/gin/public/isolate_holder.h
+++ b/gin/public/isolate_holder.h
@@ -118,7 +118,8 @@ class GIN_EXPORT IsolateHolder {
@@ -119,7 +119,8 @@ class GIN_EXPORT IsolateHolder {
std::string js_command_line_flags = {},
bool disallow_v8_feature_flag_overrides = false,
v8::FatalErrorCallback fatal_error_callback = nullptr,
@@ -41,10 +41,10 @@ index cb4517de39b2ca7b32db557c6d3dd0227ba5b4c2..d1d178de28c7d46db1c96ba321070612
// Returns whether `Initialize` has already been invoked in the process.
// Initialization is a one-way operation (i.e., this method cannot return
diff --git a/gin/v8_initializer.cc b/gin/v8_initializer.cc
index b6799720cad84282c5c4586adaf263689fd30bbb..59abc24988ab4d194461a3ca4f4b2bb68395bada 100644
index 93b49420765273ac2d49822ee406c3495aff25d4..7f7ea9ea6dd9b5f3af436570661fa736f912132e 100644
--- a/gin/v8_initializer.cc
+++ b/gin/v8_initializer.cc
@@ -547,7 +547,8 @@ void SetFeatureFlags() {
@@ -548,7 +548,8 @@ void SetFeatureFlags() {
void V8Initializer::Initialize(IsolateHolder::ScriptMode mode,
const std::string& js_command_line_flags,
bool disallow_v8_feature_flag_overrides,
@@ -54,7 +54,7 @@ index b6799720cad84282c5c4586adaf263689fd30bbb..59abc24988ab4d194461a3ca4f4b2bb6
static bool v8_is_initialized = false;
if (v8_is_initialized)
return;
@@ -561,7 +562,8 @@ void V8Initializer::Initialize(IsolateHolder::ScriptMode mode,
@@ -562,7 +563,8 @@ void V8Initializer::Initialize(IsolateHolder::ScriptMode mode,
}
SetFlags(mode, js_command_line_flags);

Some files were not shown because too many files have changed in this diff Show More