Compare commits

..

192 Commits

Author SHA1 Message Date
electron-roller[bot]
36b7cf341e chore: bump chromium to 131.0.6776.0 (main) (#44137)
* chore: bump chromium in DEPS to 131.0.6763.0

* chore: bump chromium in DEPS to 131.0.6764.0

* update patches

* chore: bump chromium in DEPS to 131.0.6766.0

* chore: update patches

* Use PathInfo in FileSystemAccess code

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

* Modernize image utilities.

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

* [DevTools] move feature flags to the devtools directory

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

* chore: bump chromium in DEPS to 131.0.6768.0

* chore: update patches

* Remove experimental credshelper flags

Refs 4017a6c8b4

* Change gfx::[PNG|JPEG]Codec::Decode to return a SkBitmap

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

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

* chore: bump chromium in DEPS to 131.0.6770.0

* chore: update patches

* chore: bump chromium in DEPS to 131.0.6772.0

* chore: update patches

* [UI] Add alias for mojo version of `MenuSourceType`

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

* Update Background Color for Task Manager Refresh

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

* chore: bump chromium in DEPS to 131.0.6774.0

* chore: bump chromium in DEPS to 131.0.6776.0

* chore: update patches

* chore: update filenames.libcxx.gni

* esm: remove --no-import-harmony-assertions

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

* 5507047: [import-attributes] Remove support for import assertions

 | https://chromium-review.googlesource.com/c/v8/v8/+/5507047

* fixup: Change gfx::[PNG|JPEG]Codec::Decode to return a SkBitmap

* chore: bump chromium in DEPS to 131.0.6778.0

* Revert "chore: bump chromium in DEPS to 131.0.6778.0"

This reverts commit fb9092fc51.

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Jeremy Rose <nornagon@electronjs.org>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-10-15 11:51:11 -04:00
Niklas Wenzel
72802c374b docs: add section on resource management to base-window.md (#43610) 2024-10-15 11:49:54 -04:00
David Sanders
d3e368003b ci: use env variable in branch created workflow (#44240) 2024-10-15 11:16:04 -04:00
dependabot[bot]
0064b23440 build(deps): bump github/codeql-action from 3.26.12 to 3.26.13 (#44239)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.26.12 to 3.26.13.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](c36620d31a...f779452ac5)

---
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>
2024-10-15 10:51:34 +02:00
Shelley Vohr
1cab6bde94 build: update devcontainer sha (#44229) 2024-10-15 10:35:43 +02:00
George Xu
9ecb848c67 docs: update timelines for E34 (#44210)
update dates for e34
2024-10-14 10:52:18 -04:00
John Kleinschmidt
48156aee06 test: run visibility-state-spec.ts first (#44206)
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
2024-10-14 09:40:22 -04:00
Charles Kerr
566c72cd46 fix: -Wunsafe-buffer-usage warning in ChunkedDataPipeReadableStream (#44211)
* chore: rename v8_value_serializer.cc,h to v8_util.cc,h

* feat: add electron::util::as_byte_span(v8::Local<v8::ArrayBuffer>)

* fix: -Wunsafe-buffer-usage warnings in ChunkedDataPipeReadableStream::ReadInternal()

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

* refactor: restore node buffer span util

* refactor: remove redundant span wrapper
2024-10-14 10:46:24 +02:00
Sam Maddock
8b3d70a2a3 feat: add WebFrameMain detached property (#43473)
* feat: add WebFrameMain detached property

fix: throw instead of returning null senderFrame

test: detached frames

fix: ensure IPCs of pending deletion RFHs are dispatched

fix: lookup WFM by FTN ID to dispatch IPCs

feat: add frame.isDestroyed()

return null

fix: return undefined

docs: add null to all frame properties

refactor: option c, return null and emit warning

refactor: add routingId & processId to navigation events

test: null frame property

docs: clarify warning message

better wording

clarify null frame

fix: browserwindow spec

* maybe fix 🤷

* fix: use updated util #43722

* docs: add notice for frame change of behavior

* docs: clarify why frame properties may be null

* lint

* wip

* fix: content::FrameTreeNodeId lookup and converter

* refactor: avoid holey array deoptimization

---------

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-10-11 18:33:53 -04:00
Charles Kerr
527efc01a4 fix: -Wunsafe-buffer-usage warnings when read()ing and write()ing integers (#44185) 2024-10-11 14:29:00 -05:00
dependabot[bot]
6c1b377192 build(deps): bump actions/checkout from 4.1.7 to 4.2.1 (#44140)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.7 to 4.2.1.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](692973e3d9...eef61447b9)

---
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>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-10-11 12:28:45 -05:00
dependabot[bot]
13b39e0eeb build(deps): bump github/codeql-action from 3.26.8 to 3.26.12 (#44139)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.26.8 to 3.26.12.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](294a9d9291...c36620d31a)

---
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>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-10-11 18:32:17 +02:00
Samuel Attard
7402648ee3 build: update ts defs and docs parser (#43985)
* build: update ts defs and docs parser

* build: update dig
2024-10-11 10:44:18 -04:00
Niklas Wenzel
5400c04e43 docs: clarify interplay between utility process events (#44015) 2024-10-11 10:25:25 -04:00
Robo
dd5b36f557 fix: clang variable configuration in generated node headers (#44189)
* fix: clang variable configuration in generated node headers

* chore: restore value in common.gypi
2024-10-11 10:22:56 -04:00
John Kleinschmidt
8201623d92 test: fix visibility-state-spec.ts flaky test (#44037)
* test: refactor visibility-state-spec

* ci: shard tests

* test: update split-tests for use on Windows

* test: run visibility-state-spec.ts first
2024-10-11 10:00:22 -04:00
John Kleinschmidt
d93285dde1 ci: don't call datadog test logging on forks (#44181) 2024-10-11 12:08:51 +02:00
Charles Kerr
3d2f68a9df refactor: spanify image utils (#44127)
* refactor: electron::util::AddImageSkiaRepFromJPEG() takes a span arg

* refactor: electron::util::AddImageSkiaRepFromPNG() takes a span arg

* refactor: electron::util::AddImageSkiaRepFromBuffer() takes a span arg

* feat: add Node-buffer-to-base-span helper function

* refactor: electron::api::NativeImage::CreateFromPNG() now takes a span param

* refactor: electron::api::NativeImage::CreateFromJPEG() now takes a span param

* refactor: use base::as_byte_span()

* fix: -Wunsafe-buffer-usage warning in NativeImage::CreateFromNamedImage()

Warning fixed by this commit:

../../electron/shell/common/api/electron_api_native_image_mac.mm:131:11: error: function introduces unsafe buffer manipulation [-Werror,-Wunsafe-buffer-usage]
  131 |           {reinterpret_cast<const uint8_t*>((char*)[png_data bytes]),
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  132 |            [png_data length]});
      |            ~~~~~~~~~~~~~~~~~~
../../electron/shell/common/api/electron_api_native_image_mac.mm:131:11: note: See //docs/unsafe_buffers.md for help.

* chore: add // SAFETY comment for Node-buffer-to-span func

* chore: add // SAFETY comment for NSData-to-span func
2024-10-10 09:34:55 -04:00
Michaela Laurencin
d51ef7d794 build: update NMV to 132 (#44135)
Node PR: https://github.com/nodejs/node/pull/55306

Do not merge before attached Node PR is merged. This PR updates our NMV to 132 for Electron 34

Please merge this PR before branching 34-x-y
2024-10-09 11:55:59 -07:00
Charles Kerr
78fa477726 fix: -Wunsafe-buffer-usage warning in HasWordCharacters() (#44133) 2024-10-09 13:02:00 -05:00
Charles Kerr
dbbdf55493 fix: -Wunsafe-buffer-usage warning in WriteAsciiChunk() (#44134)
* fix: -Wunsafe-buffer-usage warning in WriteAsciiChunk()

* chore: add // SAFETY comment to explain UNSAFE_BUFFERS() use
2024-10-09 12:18:19 -05:00
Charles Kerr
b5227b4a17 fix: -Wunsafe-buffer-usage warnings in GetNextZoomLevel() (#44149)
fixup e8948397 really fix the warning this time
2024-10-09 09:12:48 -05:00
Keeley Hammond
08d315da14 refactor: revert url::DomainIs() for cookie domains (#44153)
build: revert DomainIs refactor
2024-10-08 18:39:37 -07:00
John Kleinschmidt
ebeae6f301 ci: only upload to datadog when running tests (#44152) 2024-10-08 15:07:17 -04:00
Charles Kerr
4cf69f396f fix: context shear in cli_remove_deprecated_v8_flag.patch (#44148)
fix: patch shear in cli_remove_deprecated_v8_flag.patch
2024-10-08 07:54:33 -07:00
electron-roller[bot]
bcbc8d3bb2 chore: bump chromium to 131.0.6762.0 (main) (#44117)
* chore: bump chromium in DEPS to 131.0.6756.0

* chore: update disable_hidden.patch

no code changes; just handling upstream context shear

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

* chore: update feat_expose_raw_response_headers_from_urlloader.patch

Factor out URLLoader's URLRequest configuration into a helper

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

* chore: update fix_disabling_background_throttling_in_compositor.patch

no manual changes; patch applied with fuzz 1

* chore: e patches all

* 5882129: Fix basic auth issues for sub frame and sub resources | https://chromium-review.googlesource.com/c/chromium/src/+/5882129

- Add `is_request_for_navigation` param to
  ElectronBrowserClient::CreateLoginDelegate().

- Propagate the flag as another undocumented property
  in the app.login Event's authenticationResponseDetails object

- Side cleanup: also in CreateLoginDelegate(), use upstream's name
  for the `is_request_for_main_frame` param, renamed back in
  https://chromium-review.googlesource.com/c/chromium/src/+/3256171

* 5875189: [FSA] Check for DANGEROUS extension types when creating a new file. | https://chromium-review.googlesource.com/c/chromium/src/+/5875189

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

* chore: bump chromium in DEPS to 131.0.6758.0

* chore: bump chromium in DEPS to 131.0.6760.0

* chore: update patches

* [A11y] Remove Accessibility Object Model (AOM)

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

* chore: bump chromium in DEPS to 131.0.6762.0

* [heap] Remove deprecated V8 flag

Refs https://chromium-review.googlesource.com/c/v8/v8/+/5904046

---------

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: deepak1556 <hop2deep@gmail.com>
2024-10-07 18:06:47 -05:00
John Kleinschmidt
aa40e817c8 ci: add datadog test logging (#44094) 2024-10-07 18:51:23 -04:00
electron-roller[bot]
b95ee8964c chore: bump node to v20.18.0 (main) (#44119)
* chore: bump node in DEPS to v20.18.0

* chore: update patches

* src: improve buffer.transcode performance

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

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-10-07 18:51:08 -04:00
electron-roller[bot]
ab1488a1be chore: bump chromium to 131.0.6754.0 (main) (#44110)
* chore: bump chromium in DEPS to 131.0.6754.0

* chore: update gin_enable_disable_v8_platform.patch

fix minor context shear

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

* chore: e patches all

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-10-03 13:35:03 -04:00
Samuel Attard
122685194a build: add import/order eslint rule (#44085)
* build: add import/order eslint rule

* chore: run lint:js --fix
2024-10-02 19:10:44 -07:00
Charles Kerr
684e345f68 fix: deprecated API and -Wunsafe-buffer-usage warnings in AsarFileValidator (#44068)
* refactor: const correctness

* refactor: extract-method AsarFileValidator::EnsureHashExists()

* refactor: replace use of deprecated crypto API

https://crbug.com/364687923

* refactor: use span API in AsarFileValidator::OnRead()

* refactor: replace use of deprecated crypto API

https://crbug.com/364687923

* fixup! refactor: use span API in AsarFileValidator::OnRead()

fix: electron-ia32-testing FTBFS
2024-10-02 16:44:28 -04:00
Charles Kerr
9df092e034 fix: remove use of deprecated API base::Hash() (#44076) 2024-10-02 16:36:06 -04:00
Keeley Hammond
93dd9fc17b build: use node 20.17 on Windows (#44065)
* build: rebake image

* build: use e-131.0.6734.0-node-20.17-0

* build: bump msvs version to 2022
2024-10-02 20:12:41 +02:00
electron-roller[bot]
59a43ef2e3 chore: bump chromium to 131.0.6752.0 (main) (#44093)
* chore: bump chromium in DEPS to 131.0.6752.0

* chore: update refactor_expose_cursor_changes_to_the_webcontentsobserver.patch

adjust to upstream #include shear

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

* chore: e patches all

* Remove the <selectlist> prototype implementation

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

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-10-02 08:35:18 -07:00
electron-roller[bot]
5a97ee26ff chore: bump chromium to 131.0.6751.0 (main) (#44087)
chore: bump chromium in DEPS to 131.0.6751.0

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
2024-10-01 21:30:40 -05:00
Samuel Attard
5b34138db8 build: fix relative file read during npm publish (#44088) 2024-10-01 17:09:57 -07:00
electron-roller[bot]
1fc2064f6a chore: bump chromium to 131.0.6750.0 (main) (#44066)
* chore: bump chromium in DEPS to 131.0.6750.0

* Clean up stale base::Feature "RestrictFileURLNavigation"

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

* chore: update mas_avoid_private_macos_api_usage.patch

Comment out some new private macOS API use.

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

Xref: https://electronhq.slack.com/archives/C5VT8SQ8K/p1727807285899389

* chore: e patches all

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-10-01 19:34:32 -04:00
Samuel Attard
f4ffd018e6 build: cleanup release scripts, separate cli entrypoints from logic (#44058)
* build: cleanup release scripts, separate cli entrypoints from logic

* build: use repo/org constants
2024-10-01 13:51:40 -07:00
Charles Kerr
15c8759ee0 fix: -Wunsafe-buffer-usage warnings in WebFrameRenderer::ExecuteJavaScript() (#44053) 2024-10-01 10:06:02 -07:00
Charles Kerr
06bce8166b fix: -Wunsafe-buffer-usage warnings in ElectronAccessibilityUI ctor (#44055)
fix: -Wunsafe-buffer-usage warnings in ElectronAccessibilityUI constructor
2024-10-01 10:05:46 -07:00
Charles Kerr
6f88f0c795 perf: use ArrayBuffer::Data() instead of GetBackingStore()->Data() (#44067)
perf: use ArrayBuffer::Data() API

Replace our `GetBackingStore()->Data()` calls with this instead.
Explained by the V8 docs, ArrayBuffer.Data() is

> More efficient shortcut for GetBackingStore()->Data(). The
> returned pointer is valid as long as the ArrayBuffer is alive.
2024-10-01 10:04:57 -07:00
Samuel Attard
f828c1da09 build: remove github actions dependabot on release branches (#44054) 2024-10-01 08:50:42 -07:00
Samuel Attard
47cf1e3acd build: use ts-node to spawn the version-bumper (#44057)
Missed this in the tsification, we should probably call this via API instead of spawning a sub-proc?
2024-09-30 21:19:59 -07:00
Samuel Attard
61565465fd build: convert all release scripts to typescript (#44035)
* build: convert all release scripts to typescript

* fix test imports

* build: fix version bumper export

* refactor: use as const

* spec: fix bad type spec
2024-09-30 17:55:27 -07:00
Keeley Hammond
7ebc427bf5 build: update appveyor to node 20.17 (#44026)
* build: update appveyor to node 20.17

* build: bake new images with npm dir

* build: use e-131.0.6734.0-node-20.17-1
2024-09-30 16:14:46 -04:00
electron-roller[bot]
5d9800e176 chore: bump chromium to 131.0.6748.0 (main) (#44027)
* chore: bump chromium in DEPS to 131.0.6748.0

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

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-09-30 13:32:50 -04:00
Charles Kerr
1d4b86cb3e fix: -Wunsafe-buffer-usage warnings in AddComponentResourceEntries() (#44024)
fix: -Wunsafe-buffer-usage warnings in ElectronComponentExtensionResourceManager::AddComponentResourceEntries()

just replace pointer-and-length args with a span
2024-09-30 11:01:24 -05:00
Charles Kerr
77f7ba96ca fix: -Wunsafe-buffer-usage in electron::SetFontDefaults() (#44014)
* refactor: reduce code duplication in WebContentsPreferences::OverrideWebkitPrefs()

* refactor: limit scope of web_preferences temporary in ElectronBrowserClient::OverrideWebkitPrefs()

* chore: savepoint

* chore: savepoint

* chore: savepoint

* chore: savepoint

* chore: remove logging

* fix: unconditionally write

* chore: naming

* chore: add code comments

* chore: more code comments

* chore: remove unrelated changes

* chore: remove redundant static keyword on function in anonymous namespace

* refactor: naming

* refactor: naming

* refactor: naming

* refactor: slightly more explicit typing

* refactor: remove unnecessary utf16 -> utf8 -> utf16 conversion steps

* chore: remove unused #includes
2024-09-30 15:09:36 +02:00
electron-roller[bot]
af58931efa chore: bump chromium to 131.0.6744.0 (main) (#43948)
* chore: bump chromium in DEPS to 131.0.6738.0

* chore: bump chromium in DEPS to 131.0.6740.0

* 5889025: [LaCrOS] Remove LaCrOS screen capturer. | https://chromium-review.googlesource.com/c/chromium/src/+/5889025

* https://boringssl.googlesource.com/boringssl.git/+/40dd94116ba03678226443ba20c5887459c9bf16/crypto/fipsmodule/digest/digests.c.inc

* chore: update patches

* 5878695: Add IsolationInfo for embedders handling external protocols | https://chromium-review.googlesource.com/c/chromium/src/+/5878695

* 5854304: [UI] Remove alias of mojom  | https://chromium-review.googlesource.com/c/chromium/src/+/5854304

* chore: bump chromium in DEPS to 131.0.6742.0

* chore: update patches

* chore: bump chromium in DEPS to 131.0.6744.0

* fixup! 5889025: [LaCrOS] Remove LaCrOS screen capturer. | https://chromium-review.googlesource.com/c/chromium/src/+/5889025

* chore: e patches all

* chore: update chore_provide_iswebcontentscreationoverridden_with_full_params.patch

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

* [UI] Remove alias of mojom 'WindowShowState'

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

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

* chore: partially revert https://chromium-review.googlesource.com/c/chromium/src/+/5894233

see patch commit message for description

* Clean up stale base::Feature "kFileSystemAccessLocalUNCPathBlock"

This feature is always on by default and doesn't have active finch
experiments.

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

* fix: asar integrity test recognizes SIGABRT as a crash

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

ValidateIntegrityOrDie() exits via LOG(FATAL)'s call to
base::ImmediateCrash(). There's been churn there upstream between
5332940 and 5882758 on whether to use SIGTRAP or SIGABRT.  For now,
let's accept both until the churn is done.

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: alice <alice@makenotion.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-09-30 14:54:44 +02:00
Charles Kerr
eb40d2cbfa fix: FTBFS when building with enable_plugins = false (#44003)
* fix: do not build electron_plugin_info_host_impl.cc when plugins are disabled

it fails to build from source with this error:

../../content/public/browser/plugin_service.h:17:2: error: "Plugins should be enabled"
   17 | #error "Plugins should be enabled"

* fix: FTBFS in printing_utils.cc when ENABLE_PDF is false

* fixup! fix: do not build electron_plugin_info_host_impl.cc when plugins are disabled

fix BUILD.gn linting
2024-09-29 17:10:34 -05:00
John Kleinschmidt
27d2a8f9e2 ci: write test logging to console on Windows (#43990)
test: write logging to console on Windows
2024-09-27 15:17:32 -04:00
Shelley Vohr
d4e4cdee6c fix: remove resize listener when BrowserWindow closed (#43972) 2024-09-27 10:34:00 -04:00
Robo
f68184a9f9 feat: add error event for utility process (#43774)
* feat: add error event for utility process

* chore: use public report api

* chore: fix lint

* doc: mark error event as experimental

---------

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2024-09-27 10:17:06 +09:00
Charles Kerr
8397fef3ef chore: remove unused nogncheck includes (#43964) 2024-09-26 17:09:42 -05:00
Charles Kerr
852f9ff329 perf: build g_dgettext domain name at compile time (#43960)
perf: build GettextPackage name at compile time
2024-09-26 13:10:30 -04:00
Charles Kerr
a974b74e82 fix: replace deprecated libnotify API calls (#43962)
notify_notification_set_hint_string() is deprecated, so let's use
notify_notification_set_hint() instead.

Xref: 2fe1748295
2024-09-26 11:21:45 -05:00
Shelley Vohr
da6ab92353 fix: ensure correct WebContents when checking PDFReadyToPrint (#43943)
* fix: ensure correct WebContents when checking PDFReadyToPrint

* test: fix paths on Windows
2024-09-26 10:54:13 -04:00
Charles Kerr
ddd45db6ca fix: -Wunsafe-buffer-usage warnings in GdkPixbufFromSkBitmap() (#43956)
* fix: -Wunsafe-buffer-usage warnings in GdkPixbufFromSkBitmap()

* refactor: don't change previous behavior for 0-height images

Is a 0x0 image even a thing? I'm not sure; but just in case, let's
treat it the same way the previous implementation did.
2024-09-26 08:32:43 -05:00
John Kleinschmidt
40cae71df8 test: re-enable tests that were disabled in chromium rolls (#43968)
* test: fix should support base url for data urls test

Caused by https://chromium-review.googlesource.com/c/chromium/src/+/5802682

* test: fixup extensions can cancel http requests

* chore: document custom protocol handling on Windows change due to Non-Special Scheme URLs shipping

https://chromium-review.googlesource.com/c/chromium/src/+/5802682
2024-09-26 08:53:27 -04:00
electron-appveyor-updater[bot]
b60013fcf1 build: update appveyor image to latest version (#43971)
Co-authored-by: electron-appveyor-updater[bot] <161660339+electron-appveyor-updater[bot]@users.noreply.github.com>
2024-09-26 13:10:34 +02:00
Samuel Attard
74af96da16 build: update some build dependencies (#43882)
* build: update some build dependencies

* build: fix eslint issues after updating

* build: disable ts check on busted js example

* build: update internal types for stricter event handling

* restore url.parse behavior

* fix typing issues

* sigh

* build: update easy deps

* build: skip woa engines check
2024-09-26 00:12:11 -07:00
Fedor Indutny
15db63e26d fix: SCContentSharingPicker crash in iframes (#43905)
When running `getDisplayMedia` from an `iframe` and then destroying that
`iframe`, the destrutcor for ScreenCaptureKitDeviceMac gets run, but it
doesn't clean up the observers for the shared macOS picker.

In this change we remove the observer on cleanup and fix the associated
crash:

    *** Terminating app due to uncaught exception 'NSGenericException', reason: '*** Collection <__NSArrayM: 0x12c024123a0> was mutated while being enumerated.'
     0   CoreFoundation                      0x000000018eda0ec0 __exceptionPreprocess + 176
     1   libobjc.A.dylib                     0x000000018e886cd8 objc_exception_throw + 88
     2   CoreFoundation                      0x000000018ee47f80 -[__NSSingleObjectEnumerator init] + 0
     3   ScreenCaptureKit                    0x000000022971f3e0 -[SCContentSharingPicker contentPickerDidSelectFilter:forStream:] + 436
     4   ReplayKit                           0x00000001d7b879d8 -[RPScreenRecorder contentPickerDidSelectFilter:forStream:] + 84
     5   ReplayKit                           0x00000001d7b95ce0 -[RPDaemonProxy contentPickerDidSelectFilter:forStream:] + 224
     6   CoreFoundation                      0x000000018ed0e8b4 __invoking___ + 148
     7   CoreFoundation                      0x000000018ed0e72c -[NSInvocation invoke] + 428
     8   ReplayKit                           0x00000001d7b91678 -[RPDaemonProxy connection:handleInvocation:isReply:] + 316
     9   Foundation                          0x0000000190899f64 -[NSXPCConnection _decodeAndInvokeMessageWithEvent:reply:flags:] + 1108
     10  Foundation                          0x000000019089b7d0 message_handler_message + 88
     11  Foundation                          0x000000018feb0160 message_handler + 152
     12  libxpc.dylib                        0x000000018e954460 _xpc_connection_call_event_handler + 144
     13  libxpc.dylib                        0x000000018e952bb4 _xpc_connection_mach_event + 1120
     14  libdispatch.dylib                   0x000000018ea94718 _dispatch_client_callout4 + 20
     15  libdispatch.dylib                   0x000000018eab0c00 _dispatch_mach_msg_invoke + 464
     16  libdispatch.dylib                   0x000000018ea9bae8 _dispatch_lane_serial_drain + 368
     17  libdispatch.dylib                   0x000000018eab1954 _dispatch_mach_invoke + 456
     18  libdispatch.dylib                   0x000000018ea9bae8 _dispatch_lane_serial_drain + 368
     19  libdispatch.dylib                   0x000000018ea9c79c _dispatch_lane_invoke + 432
    20  libdispatch.dylib                   0x000000018eaa77e8 _dispatch_root_queue_drain_deferred_wlh + 288
    21  libdispatch.dylib                   0x000000018eaa7034 _dispatch_workloop_worker_thread + 540
    22  libsystem_pthread.dylib             0x000000018ec433d8 _pthread_wqthread + 288
    23  libsystem_pthread.dylib             0x000000018ec420f0 start_wqthread + 8
2024-09-25 16:43:23 -07:00
dependabot[bot]
ff36ff84b7 build(deps-dev): bump eslint-plugin-promise from 4.3.1 to 7.1.0 (#43935)
Bumps [eslint-plugin-promise](https://github.com/eslint-community/eslint-plugin-promise) from 4.3.1 to 7.1.0.
- [Release notes](https://github.com/eslint-community/eslint-plugin-promise/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-promise/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint-community/eslint-plugin-promise/compare/v4.3.1...v7.1.0)

---
updated-dependencies:
- dependency-name: eslint-plugin-promise
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-25 16:49:03 -05:00
dependabot[bot]
846b31b77d build(deps-dev): bump @types/chai-as-promised from 7.1.3 to 8.0.1 (#43936)
Bumps [@types/chai-as-promised](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/chai-as-promised) from 7.1.3 to 8.0.1.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/chai-as-promised)

---
updated-dependencies:
- dependency-name: "@types/chai-as-promised"
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-25 09:06:26 -05:00
John Beutner
c8895d0547 fix: close all open sheets before closing window on macOS (#43706) 2024-09-25 13:23:49 +02:00
Charles Kerr
1d3b1284c4 test: ensure sender-pid hint is set in Linux notifications (#43928)
test: expect a `sender-pid` hint in Linux notifications.

This PR ensures that the `sender-pid` hint is set for new notifications.
It also updates the spec to confirm that DBus receives the hint and that
it has the correct value.

This fixes a spec failure when running libnotify >= 0.7.12 (2022-05-05).
Starting with that version, libnotify started injecting `sender-pid` if
not provided by the client. So our tests received a slightly different
DBus payload depending on what version of libnotify was installed,
causing our deep-equals tests to fail.

By always providing and testing the `sender-pid` hint, our behavior and
tests should be consistent across distros.
2024-09-25 13:20:36 +02:00
electron-roller[bot]
30fbeec036 chore: bump chromium to 131.0.6734.0 (main) (#43769)
* chore: bump chromium in DEPS to 130.0.6723.4

* chore: bump chromium in DEPS to 131.0.6724.0

* chore: update patches

* chore: update libc++ filenames

* 5844369: controlledframe: Disable Web Bluetooth for <webview> & <controlledframe>
https://chromium-review.googlesource.com/c/chromium/src/+/5844369

* (multiple CLs): Use an opaque type for FrameTreeNode IDs

5807683: Use an opaque type for FrameTreeNode IDs, part 1 | https://chromium-review.googlesource.com/c/chromium/src/+/5807683
5829746: Use an opaque type for FrameTreeNode IDs, part 2 | https://chromium-review.googlesource.com/c/chromium/src/+/5829746
5836903: Use an opaque type for FrameTreeNode IDs, part 7 | https://chromium-review.googlesource.com/c/chromium/src/+/5836903
5837249: Use an opaque type for FrameTreeNode IDs, part 8 | https://chromium-review.googlesource.com/c/chromium/src/+/5837249
5836564: Use an opaque type for FrameTreeNode IDs, part 12 | https://chromium-review.googlesource.com/c/chromium/src/+/5836564
5837180: Use an opaque type for FrameTreeNode IDs, part 15 | https://chromium-review.googlesource.com/c/chromium/src/+/5837180

* 5822889: [task] Make GetForegroundTaskRunner non-virtual
https://chromium-review.googlesource.com/c/v8/v8/+/5822889

* 5833297: Remove unused inner WebContents attach params
https://chromium-review.googlesource.com/c/chromium/src/+/5833297

* 5806403: Shift PowerMonitor to non static
https://chromium-review.googlesource.com/c/chromium/src/+/5806403

* 5666874: [3/N] Remove old OnPowerChange in PowerObserver
https://chromium-review.googlesource.com/c/chromium/src/+/5666874

* 5829085: [v8] Differentiate between UserVisible and BestEffort task runners
https://chromium-review.googlesource.com/c/chromium/src/+/5829085

* 5791112: [webrtc] Use `c/b/permissions/system` for system permissions
https://chromium-review.googlesource.com/c/chromium/src/+/5791112

* 5825636: [Extensions] Create WebContentsObservers with ExtensionsBrowserClient
https://chromium-review.googlesource.com/c/chromium/src/+/5825636

* fixup! (multiple CLs): Use an opaque type for FrameTreeNode IDs

* fixup! 5791112: [webrtc] Use `c/b/permissions/system` for system permissions https://chromium-review.googlesource.com/c/chromium/src/+/5791112

* chore: bump chromium in DEPS to 131.0.6726.0

* chore: update patches

* chore: update libc++ filenames

* 5858119: Declutter: Allow opening to a specific feature
https://chromium-review.googlesource.com/c/chromium/src/+/5858119

* fix: macOS SDK 15 error

Not sure exactly what changed in the upgrade to macOS SDK 15, but it triggered a new error:

```
electron/shell/browser/ui/message_box_mac.mm:84:7: error: multiple methods named 'highlight:' found with mismatched result, parameter type or attributes
```

The `highlight:` selector a few lines down was ambiguous because the object type of the `NSArray` was not specified. Specifying `NSButton` as the element type makes the selector unambiguous for type checking.

* 5854143: [File Download Access Prevention] Obfuscate download file for enterprise deep scan
https://chromium-review.googlesource.com/c/chromium/src/+/5854143

* 5854811: Use kNotAllowedError instead of kSecurityError for Web MIDI
https://chromium-review.googlesource.com/c/chromium/src/+/5854811

* chore: bump chromium in DEPS to 131.0.6728.0

* chore: update patches

* disable invalid test

* chore: bump chromium in DEPS to 131.0.6730.0

* chore: update patches

* update build tools target commit for new macOS SDK

* chore: update libc++ file names

* chore: bump chromium in DEPS to 131.0.6732.0

* chore: bump chromium in DEPS to 131.0.6734.0

* 5856527: [UI] Use mojo enum for `WindowShowState` in ui/

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

* chore: update build-tools sha to include macOD 15.0 SDK

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: clavin <clavin@electronjs.org>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: alice <alice@makenotion.com>
2024-09-25 06:19:39 -05:00
Charles Kerr
af54c5a4b6 test: add tests dbus notification images (#43938)
Provide a NativeImage icon in the notification tests and then inspect
the DBus message payload's `image_data` hint to see if it's correct.
This adds test coverage for LibnotifyNotification::Show() and for
GdkPixbufFromSkBitmap().
2024-09-25 13:17:27 +02:00
Shelley Vohr
bcf4095ace fix: crash when focusing WebView webContents (#43921)
fix: crash when focusing WebView
2024-09-24 18:19:04 -05:00
Charles Kerr
500d4f0d05 fix: -Wunsafe-buffer-usage warning in asar_util's ReadFileToString() (#43896) 2024-09-24 15:41:24 -05:00
CezaryKulakowski
e64a66bfd3 fix: detach native view when its removed from parent on macOS (#43627)
Right now DelayedNativeViewHost attaches its underlying native view
when it's being attached to a widget but it doesn't detach it when
it's being detached. It may lead to use-after-free and crash.
2024-09-24 15:28:36 +02:00
dependabot[bot]
7222a9fe1f build(deps-dev): bump null-loader from 4.0.0 to 4.0.1 (#43904)
Bumps [null-loader](https://github.com/webpack-contrib/null-loader) from 4.0.0 to 4.0.1.
- [Release notes](https://github.com/webpack-contrib/null-loader/releases)
- [Changelog](https://github.com/webpack-contrib/null-loader/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack-contrib/null-loader/compare/v4.0.0...v4.0.1)

---
updated-dependencies:
- dependency-name: null-loader
  dependency-type: direct:development
  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>
2024-09-24 10:13:43 +02:00
dependabot[bot]
65e3c336e0 build(deps-dev): bump eslint from 8.41.0 to 8.57.1 (#43903)
Bumps [eslint](https://github.com/eslint/eslint) from 8.41.0 to 8.57.1.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.41.0...v8.57.1)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  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>
2024-09-23 23:31:47 -07:00
Charles Kerr
79627deea3 refactor: add SerialChooserController::web_contents_ (#43823)
Add a `base::WeakPtr<WebContents>` field to SerialChooserController and
stop subclassing from WebContentsObserver. This follows the Observer docs:

> don't create a `WebContentsObserver` just to be able to check
> for a null `WebContentsObserver::web_contents()`.
> Use a `base::WeakPtr<WebContents>` instead.
2024-09-23 22:38:13 -07:00
Charles Kerr
9598d88b7c refactor: remove C-style void arg type for no-arg functions (#43884)
A small cleanup to remove use of the C-style function declaration idiom.
2024-09-23 22:37:32 -07:00
Charles Kerr
01330805cb refactor: prefer member initializers in asar structs (#43883)
prefactor: prefer member initializers in asar::Archive

prefactor: prefer member initializers in asar::Archive::FileInfo

prefactor: prefer member initializers in asar::IntegrityPayload
2024-09-23 22:37:18 -07:00
Charles Kerr
33d7c9ac3e refactor: hide printing impl details in api::WebContents (#43893)
* refactor: move api::WebContents::OnGetDeviceNameToUse() into an anonymous namespace

* refactor: move api::WebContents::OnPDFCreated() into an anonymous namespace

* refactor: remove unused #include
2024-09-23 22:36:55 -07:00
Keeley Hammond
a3af8ea768 build: use Node 20 in Appveyor images (#43897)
* build: update Appveyor to Node 20

* build: update appveyor images

* chore: return bake script to original form
2024-09-23 16:58:46 -07:00
dependabot[bot]
82879d1f43 build(deps-dev): bump webpack-cli from 4.10.0 to 5.1.4 (#43880)
Bumps [webpack-cli](https://github.com/webpack/webpack-cli) from 4.10.0 to 5.1.4.
- [Release notes](https://github.com/webpack/webpack-cli/releases)
- [Changelog](https://github.com/webpack/webpack-cli/blob/master/CHANGELOG.md)
- [Commits](https://github.com/webpack/webpack-cli/compare/webpack-cli@4.10.0...webpack-cli@5.1.4)

---
updated-dependencies:
- dependency-name: webpack-cli
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-23 18:21:43 -05:00
Erick Zhao
fb5baec6d5 docs: add advanced specification for Squirrel updater (#43234)
* docs: add advanced specification for Squirrel updater

* address feedback
2024-09-23 10:20:43 -07:00
Alice Zhao
ceea1225a2 docs: navigation history example (#42980)
* docs: add fiddle example

* docs: add tutorial guide

* refactor: PR review comments

* refactor: add eof

* refactor: render navigation history and make demo better.

* refactor: fix broken links

* refactor: add eof newline

* docs: review feedback :)

* chore: lint add space around list

* doc: transformURL
2024-09-23 10:18:26 -07:00
Samuel Attard
517d04de16 build: add support for fetching github token from sudowoodo (#43808)
* build: add support for fetching github token from sudowoodo

* chore: update release notes cache for tests

* build: support nightlies repo correctly

* build: post token
2024-09-23 09:39:54 -07:00
dependabot[bot]
f0afcaa777 build(deps-dev): bump @types/w3c-web-serial from 1.0.3 to 1.0.7 (#43879)
Bumps [@types/w3c-web-serial](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/w3c-web-serial) from 1.0.3 to 1.0.7.
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/w3c-web-serial)

---
updated-dependencies:
- dependency-name: "@types/w3c-web-serial"
  dependency-type: direct:development
  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>
2024-09-23 08:07:53 -05:00
Samuel Attard
be68d4f336 build: update-check-skip on dependabot backport PRs (#43874) 2024-09-23 11:08:03 +02:00
dependabot[bot]
0fb50c408b build(deps): bump github/codeql-action from 3.26.7 to 3.26.8 (#43826)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.26.7 to 3.26.8.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](8214744c54...294a9d9291)

---
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>
2024-09-23 11:04:21 +02:00
dependabot[bot]
1b52f005ee build(deps): bump actions/setup-node from 4.0.3 to 4.0.4 (#43825)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.0.3 to 4.0.4.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](1e60f620b9...0a44ba7841)

---
updated-dependencies:
- dependency-name: actions/setup-node
  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>
2024-09-22 23:40:30 -07:00
Samuel Attard
da449b00dd build: stop dependabot doing things (#43871) 2024-09-22 23:10:23 -07:00
Samuel Attard
8be458d1a2 build: enable dependabot on supported branches (#43755) 2024-09-22 22:57:23 -07:00
Charles Kerr
e894839709 fix: -Wunsafe-buffer-usage warnings in GetNextZoomLevel() (#43803) 2024-09-21 17:21:02 -05:00
Shelley Vohr
f89bd745d5 fix: createWindow shouldn't load URL for webContents (#43775)
* fix: createWindow shouldn't load URL for webContents

* chore: add non about blank test
2024-09-20 09:56:03 +02:00
Charles Kerr
bcb7362ab9 docs: document Windows pitfall when updating patches (#43787) 2024-09-19 23:35:21 -05:00
Charles Kerr
53e89b565d fix: -Wunsafe-buffer-usage warnings in Clipboard::WriteBuffer() (#43795)
* fix: -Wunsafe-buffer-usage warnings in Clipboard::WriteBuffer()

* chore: add a DCHECK to confirm the BigBuffer is full
2024-09-19 23:10:35 -05:00
Fedor Indutny
6aa6bada79 fix: third time screen sharing on macOS (#43767)
Because we used decrementing negative source ids for fake video id when
instantating a native macOS screen share picker, we eventually hit the
`DesktopMediaID::kFakeId = -3` in Chromium source code which displayed a
test green screen.

In this change we reserve our own fake id of `-4` and decrement the
window id integer for uniqueness instead.

Co-authored-by: Fedor Indutny <238531+indutny@users.noreply.github.com>
2024-09-19 18:28:28 -07:00
Charles Kerr
d100921289 refactor: NotificationPresenter::Create() returns a std::unique_ptr<> (#43794) 2024-09-19 19:02:49 -05:00
BILL SHEN
855f219301 chore: fix compile issue about ambiguous error of multiple methods named 'highlight'. (#43773)
chore: fix ambiguous error of multiple methods named 'highlight'
2024-09-19 13:01:36 +02:00
dependabot[bot]
0ac8ff6439 build(deps): bump path-to-regexp from 1.8.0 to 1.9.0 in /spec in the npm_and_yarn group across 1 directory (#43753)
build(deps): bump path-to-regexp

Bumps the npm_and_yarn group with 1 update in the /spec directory: [path-to-regexp](https://github.com/pillarjs/path-to-regexp).


Updates `path-to-regexp` from 1.8.0 to 1.9.0
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v1.8.0...v1.9.0)

---
updated-dependencies:
- dependency-name: path-to-regexp
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-19 10:34:06 +02:00
Charles Kerr
5904d31264 perf: hold V8FunctionInvoker args in a std::array (#43752)
perf: hold V8FunctionInvoker args in a std::array
2024-09-18 16:23:29 -05:00
Samuel Attard
8cff5a7d20 build: let darwin/mas run concurrently (#43788) 2024-09-18 13:54:58 -07:00
Charles Kerr
d897359b82 perf: hold Emit() arg arrays in a std::array (#43750)
* refactor: CallMethodWithArgs() now takes a span of value handles

* perf: use std::array instead of std::vector to hold Emit arg parameter packs

* chore: remove unused gin_helper::EmitEvent(iso, obj, name, span<Local>)
2024-09-18 09:40:14 -05:00
electron-appveyor-updater[bot]
02fd8bbcc1 build: update appveyor image to latest version (#43772)
Co-authored-by: electron-appveyor-updater[bot] <161660339+electron-appveyor-updater[bot]@users.noreply.github.com>
2024-09-18 09:39:49 -05:00
electron-roller[bot]
4bcbc955dd chore: bump chromium to 130.0.6695.0 (main) (#43454)
* chore: bump chromium in DEPS to 130.0.6673.0

* chore: bump chromium in DEPS to 130.0.6675.0

* chore: bump chromium in DEPS to 130.0.6677.2

* chore: bump chromium in DEPS to 130.0.6679.0

* 5802981: [Partitioned Popins] UKM

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

* 5799275: ash: Create //chrome/browser/ui/ash/web_view

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

* 5791853: [PWA] Allow WebContentsImpl::CreateNewWindow() to use new web contents for loading url

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

* 5805208: Move third_party/jacoco to a cipd/ subdirectory.

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

* chore: fixup patch indices

* 5771091: Introduce InputManager class for handling input in Viz.

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

* 5498921: [Permission] Remove SubscribeToPermissionStatusChange from PermissionManager

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

* 5791853: [PWA] Allow WebContentsImpl::CreateNewWindow() to use new web contents for loading url

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

* 5801311: Don't use int for bindings

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

* 5548827: [Web Install] Define the web-app-installation PermissionPolicy

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

* 5786325: Add Infrastructure for Hand tracking permission

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

* chore: fixup patch indices

* chore: bump chromium in DEPS to 130.0.6681.0

* [Views AX] Move BrowserAccessibility* to //ui/accessibility/platform

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

* chore: e patches all

* Don't have default arguments on virtual functions in render_frame_host.h

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

* test: log if loadURL fails in base url test

* chore: bump chromium in DEPS to 130.0.6683.2

* chore: fix support_mixed_sandbox_with_zygote.patch

content: restore old DisableJit behavior

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

* chore: update patch indices

* chore: bump chromium in DEPS to 130.0.6685.0

* Parallel process launching

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

* chore: update feat_expose_documentloader_setdefersloading_on_webdocumentloader.patch

No manual changes; patch applied with fuzz 1

* chore: e patches all

* chore: bump chromium in DEPS to 130.0.6687.0

* chore: bump chromium in DEPS to 130.0.6689.0

* chore: bump chromium in DEPS to 130.0.6691.0

* chore: bump chromium in DEPS to 130.0.6693.0

* chore: update patches

* chore: bump chromium in DEPS to 130.0.6695.0

* chore: free up macos disk space as soon as possible

* 5824143: Use checked in source lists for third_party/boringssl

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

* chore: update patches

* 5824122: Extensions: Add a new view type enum for developer tools contexts

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

* 5806109: Option for JavaScriptExecuteRequestForTests() to ignore content settings

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

* build: free up disk space on gn check too

* 5799369: [Refactoring] Make allow_http1_for_streaming_upload flags false.

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

* fixup! 5015584: Parallel process launching | https://chromium-review.googlesource.com/c/chromium/src/+/5015584

* Disable failing test for short-term

See: https://github.com/electron/electron/issues/43730

* oops

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: Keeley Hammond <khammond@slack-corp.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: clavin <clavin@electronjs.org>
2024-09-17 18:12:11 -07:00
Samuel Attard
de33cc68f6 build: split darwin/mas macOS publish jobs (#43754) 2024-09-17 15:32:47 -07:00
Samuel Attard
f987f8ad83 build: improve logging on http errors during release process (again, but more) (#43758) 2024-09-17 15:01:02 -07:00
Samuel Attard
cf4ab2186c build: improve logging on http errors during release process (again) (#43757) 2024-09-17 14:49:59 -07:00
Samuel Attard
10ba87a85e build: improve logging on http errors during release process (#43756) 2024-09-17 14:30:51 -07:00
Charles Kerr
233724fe00 chore: iwyu mojom-forward header files (#43741)
* chore: iwyu mojom.h headers

* fixup! chore: iwyu mojom.h headers

make previously-indirect include dependency direct

* fixup! fixup! chore: iwyu mojom.h headers

make previously-indirect include dependency direct
2024-09-17 12:58:56 -07:00
dependabot[bot]
4dc923a327 build(deps): bump the npm_and_yarn group across 2 directories with 5 updates (#43681)
Bumps the npm_and_yarn group with 1 update in the / directory: [express](https://github.com/expressjs/express).
Bumps the npm_and_yarn group with 1 update in the /spec directory: [send](https://github.com/pillarjs/send).


Updates `express` from 4.19.2 to 4.20.0
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.19.2...4.20.0)

Updates `body-parser` from 1.20.2 to 1.20.3
- [Release notes](https://github.com/expressjs/body-parser/releases)
- [Changelog](https://github.com/expressjs/body-parser/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/body-parser/compare/1.20.2...1.20.3)

Updates `path-to-regexp` from 0.1.7 to 0.1.10
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.7...v0.1.10)

Updates `serve-static` from 1.15.0 to 1.16.0
- [Release notes](https://github.com/expressjs/serve-static/releases)
- [Changelog](https://github.com/expressjs/serve-static/blob/master/HISTORY.md)
- [Commits](https://github.com/expressjs/serve-static/compare/v1.15.0...1.16.0)

Updates `send` from 0.16.2 to 0.19.0
- [Release notes](https://github.com/pillarjs/send/releases)
- [Changelog](https://github.com/pillarjs/send/blob/master/HISTORY.md)
- [Commits](https://github.com/pillarjs/send/compare/0.16.2...0.19.0)

---
updated-dependencies:
- dependency-name: express
  dependency-type: direct:development
  dependency-group: npm_and_yarn
- dependency-name: body-parser
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: path-to-regexp
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: serve-static
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: send
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-17 11:27:32 -04:00
Charles Kerr
5a76655fb8 fix: in Emit(), don't leak converted Arg Local<Values> into caller's scope (#43729)
fix: Emit() should not leak converted arg handles into caller's HandleScope
2024-09-17 09:00:52 -05:00
Shelley Vohr
aa719a4066 fix: resizing border on Linux WCO caption buttons (#43724)
Closes https://github.com/electron/electron/issues/43714.

Fixes an issue where the resizing border was not being handled correctly on Linux WCO
caption buttons. This is now taken into account as a part of the NonClientHitTest.
2024-09-17 11:56:43 +02:00
Samuel Attard
c1c8fbfd9a build: make is_mas_build a generated header instead of config (#43737) 2024-09-17 01:38:56 -07:00
dependabot[bot]
b83810982e build(deps): bump github/codeql-action from 3.26.6 to 3.26.7 (#43738)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.26.6 to 3.26.7.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](4dd16135b6...8214744c54)

---
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>
2024-09-16 23:09:24 -05:00
Charles Kerr
b6bf277b6f refactor: reduce code duplication in gin_helper::Promise (#43716)
* refactor: move scope scaffolding into SettletScope

idea stolen from SpellCheckScope

* refactor: move impl of PromiseBase::RejectPromise() to the cc file

* chore: remove unused #include
2024-09-16 23:08:40 -05:00
Charles Kerr
05dfd14913 refactor: add EmitWarning(v8::Isolate*) helper (#43722)
* refactor: add EmitWarning(Isolate*, ...) warning

* chore: remove EmitWarning(node::Environment*, ...)

* chore: add code comments

* fixup! refactor: add EmitWarning(Isolate*, ...) warning

* chore: remove unused node #includes
2024-09-16 15:53:04 -05:00
John Kleinschmidt
7d4f202c1c ci: move Archaeologist to GHA (#43701)
* chore: move Archaeologist to GHA

* chore: test archaelogist changes

* Revert "chore: test archaelogist changes"

This reverts commit a575d6ef3a.

* chore: properly name steps in archaeologist-dig
2024-09-16 15:58:51 -04:00
Niklas Wenzel
f84ffc8fc8 fix: prevent loading spinner when launching utility process on Windows (#43657)
fix: prevent spinning cursor when launching utility process on Windows
2024-09-16 14:20:42 -04:00
Niklas Wenzel
8f0dffea9e docs: document View.removeChildView edge case (#43673) 2024-09-16 11:32:03 +02:00
Charles Kerr
1c3a5ba5d1 refactor: remove use of deprecated API BuildServiceInstanceFor() (#43690)
* refactor: update BadgeManagerFactory

* refactor: update NetworkContextServiceFactory

* refactor: update ElectronExtensionSystemFactory

* refactor: update UsbChooserContextFactory

* refactor: update UsbHidChooserContextFactory

* refactor: update SerialChooserContextFactory

* refactor: update FileSystemAccessPermissionContextFactory
2024-09-12 15:44:14 -05:00
Piotr Płaczek
29c2744e57 feat: hide menu bar on windows fullscreen (#43402)
* feat: hide menu bar on windows fullscreen

* test: state prior to html fullscreen transition

* refactor: restore `#ifdef` for readability

Reference: https://github.com/electron/electron/pull/43402#discussion_r1729356262

* docs: menu bar behavior changed

---------

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-12 20:13:04 +02:00
Charles Kerr
3dd7e46291 refactor: avoid minor code repetition in native_image.cc (#43689)
chore: delegate handle creation in NativeImage::Resize()

chore: delegate handle creation in NativeImage::Crop()

chore: delegate handle creation in NativeImage::CreateEmpty()
2024-09-12 10:56:15 -05:00
Charles Kerr
45bae950d5 chore: remove unused base/ includes (#43688) 2024-09-12 16:05:37 +02:00
Shelley Vohr
3c8321a987 fix: EyeDropper working in devtools (#43685) 2024-09-12 15:40:56 +02:00
Shelley Vohr
74b54278bf fix: native View wrapper crash missing when adding child view (#43638)
fix: native View wrapper crash missing when adding child view
2024-09-12 10:01:05 +02:00
Shelley Vohr
dea6a4e5fb fix: ensure SetPluginCanSave updated in PDFs (#43667)
fix: ensure SetPluginCanSave updated in PDFs
2024-09-11 09:25:05 -04:00
Shelley Vohr
90fbf30491 build: compile Node.js with C++20 support (#43555)
* build: compile with C++20 support

* build: update build-image-sha for gcc 10
2024-09-11 09:01:46 -04:00
dependabot[bot]
5580349c3a build(deps-dev): bump webpack from 5.76.0 to 5.94.0 in the npm_and_yarn group across 1 directory (#43659)
build(deps-dev): bump webpack

Bumps the npm_and_yarn group with 1 update in the / directory: [webpack](https://github.com/webpack/webpack).


Updates `webpack` from 5.76.0 to 5.94.0
- [Release notes](https://github.com/webpack/webpack/releases)
- [Commits](https://github.com/webpack/webpack/compare/v5.76.0...v5.94.0)

---
updated-dependencies:
- dependency-name: webpack
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-11 09:56:03 +02:00
Keeley Hammond
309d5dade3 feat: add support for system picker in setDisplayMediaRequestHandler (#43581)
* tmp

* feat: add support for system picker in setDisplayMediaRequestHandler

* oops

* Apply suggestions from code review

Co-authored-by: Erick Zhao <erick@hotmail.ca>

* stuff

* well...

* seems legit

* chore: update patch to handle screenCapturer

* feat: modify API to use useSystemPicker

* fix: gate ScreenCaptureKitPicker to macos 15 or higher

* fix: don't use native picker with legacy media selection

* chore: code review, boolean set & docs update

* fix: add cancelCallback

* docs: clarify session & desktopCapturer docs

---------

Co-authored-by: Samuel Attard <marshallofsound@electronjs.org>
Co-authored-by: Samuel Attard <sam@electronjs.org>
Co-authored-by: Erick Zhao <erick@hotmail.ca>
2024-09-10 16:05:57 -07:00
Charles Kerr
a3df950281 fix: -Wunsafe-buffer-usage warning in V8Serializer::Serialize() (#43642) 2024-09-10 15:05:05 -05:00
Milan Burda
0cc60500ed fix: restore Chromium default Content-Disposition header parsing (#43611)
* fix: restore Chromium default Content-Disposition header parsing

* Update api-web-request-spec.ts
2024-09-10 15:32:30 +02:00
Charles Kerr
f1019c2c4a fix: -Wunsafe-buffer-usage warnings in asar file IO (#43624)
* fix: -Wunsafe-buffer-usage warnings in ScopedTemporaryFile::InitFromFile()

* fix: -Wunsafe-buffer-usage warnings in Archive::Init()
2024-09-09 16:34:42 -04:00
Charles Kerr
5718ea4e1e fix: out-of-scope Local handle in node::CallbackScope (#43622)
refactor: use an EscapableHandleScope
2024-09-09 12:14:40 -05:00
Charles Kerr
2844e346b9 refactor: use std::optional in MicrotasksScope (#43621)
avoid an unnecessary heap allocation/free
2024-09-09 12:51:42 -04:00
Zorro Liu
e2fe8f50e2 fix: update BrowserView#lastWindowSize after window resize (#43463)
fix: update BrowserView#lastWindowSize after window resize (#43462)
2024-09-09 14:22:30 +02:00
Charles Kerr
8c5e7bbf6b fix: UvHandle move semantics (#43615)
reassign the uv_handle_t of the source
2024-09-09 14:13:39 +02:00
dependabot[bot]
0d4d752c1b build(deps): bump the npm_and_yarn group across 2 directories with 3 updates (#43511)
* build(deps): bump the npm_and_yarn group across 2 directories with 3 updates

Bumps the npm_and_yarn group with 1 update in the / directory: [braces](https://github.com/micromatch/braces).
Bumps the npm_and_yarn group with 3 updates in the /spec directory: [braces](https://github.com/micromatch/braces), [pdfjs-dist](https://github.com/mozilla/pdf.js) and [ws](https://github.com/websockets/ws).


Updates `braces` from 3.0.2 to 3.0.3
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

Updates `braces` from 3.0.2 to 3.0.3
- [Changelog](https://github.com/micromatch/braces/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/braces/compare/3.0.2...3.0.3)

Updates `pdfjs-dist` from 2.16.105 to 4.2.67
- [Release notes](https://github.com/mozilla/pdf.js/releases)
- [Commits](https://github.com/mozilla/pdf.js/compare/v2.16.105...v4.2.67)

Updates `ws` from 7.5.9 to 7.5.10
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.5.9...7.5.10)

---
updated-dependencies:
- dependency-name: braces
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: braces
  dependency-type: indirect
  dependency-group: npm_and_yarn
- dependency-name: pdfjs-dist
  dependency-type: direct:development
  dependency-group: npm_and_yarn
- dependency-name: ws
  dependency-type: direct:development
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: update api-web-contents-spec to us newer version of pdfjs-dist

* test: create fixture to read PDF files for verification

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-09 11:49:43 +02:00
Charles Kerr
0568686340 perf: avoid redundant Promise.GetContext calls (#43609)
refactor: avoid redundant Promise.GetContext calls

Several Promise methods call `GetContext()` multiple times. From looking
at the assembly in obj/electron/electron_lib/promise.o, these redundant
calls are actually being made -- they aren't optmized out.

This PR keeps the return value in a local variable to avoid extra calls.
2024-09-07 23:39:42 -05:00
Charles Kerr
44a4328ea8 refactor: take a uint8_t span in ValidateIntegrityOrDie() (#43592)
refactor: take a uint8_t span in ValidateIntegrityOrDie()

Doing some groundwork for fixing unsafe base::File() APIs:

- Change ValidateIntegrityOrDie() to take a span<const uint8_t> arg.
  We'll need this to migrate asar's base::File API calls away from the
  ones tagged `UNSAFE_BUFFER_USAGE` because the safe counterparts use
  span<uint8_t> too.

- Simplify ValidateIntegrityOrDie()'s implementation by using
  crypto::SHA256Hash() instead of reinventing the wheel.
2024-09-06 20:22:44 -05:00
Charles Kerr
18b1b33adc refactor: NativeWindow::Create() returns a unique_ptr (#43576)
refactor: NativeWindow::Create() returns a unique_ptr
2024-09-06 12:59:32 -04:00
Charles Kerr
fe0d4274e2 fix: confirm a v8::Value is a v8::Object before casting it (#43575)
fix: confirm a v8::Value is a v8::Object before casting it
2024-09-06 11:20:04 -05:00
Charles Kerr
cc5aa65cb4 fix: delete UvTaskRunner's timers only after they're closed (#43561)
* fix: free UvTaskRunner timers only after they are closed

* refactor: UvTaskRunner now holds UvHandles
2024-09-06 07:16:56 -05:00
Shelley Vohr
25f4691e78 fix: ensure version of xdg-dialog-portal with defaultPath support (#43570)
fix: ensure version of xdg-dialog-portal with defaultPath support

Closes https://github.com/electron/electron/issues/43310
2024-09-06 11:12:16 +02:00
Charles Kerr
3fde574db1 fix: -Wunsafe-buffer-usage warnings in url-loader (#43564)
Use v8::ArrayBufferView::CopyContents() instead of doing the pointer
math + memcpy() ourselves. This not only solves the buffer warnings,
but may also avoid some additional overhead:

> Copy the contents of the ArrayBufferView's buffer to an
> embedder defined memory without additional overhead that
> calling ArrayBufferView::Buffer might incur.
2024-09-05 20:22:03 -05:00
Shelley Vohr
eff862b083 build: use proper targets for building (#43550) 2024-09-05 17:03:07 -04:00
Kilian Valkhof
32d5f9e3ef docs: explain ipcRenderer behavior in context-bridge.md (#43455)
* docs: explain ipcRenderer behavior in context-bridge.md

* Update context-bridge.md

* Update context-bridge.md

* Update docs/api/context-bridge.md

Co-authored-by: Erik Moura <erikian@erikian.dev>

* Update context-bridge.md

* Update context-bridge.md

* Update context-bridge.md

* Update docs/api/context-bridge.md

Co-authored-by: Erick Zhao <erick@hotmail.ca>

* Update docs/api/context-bridge.md

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

---------

Co-authored-by: Erik Moura <erikian@erikian.dev>
Co-authored-by: Erick Zhao <erick@hotmail.ca>
Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
2024-09-05 16:48:22 -04:00
Orko Garai
69df09dc90 fix: Launch apps with XDG_ACTIVATION_TOKEN in ozone/wayland (#43480)
* fix: Launch apps with XDG_ACTIVATION_TOKEN in ozone/wayland

Ensure apps are launched with the activation token received from
xdg_activation_v1 protocol.

* add focus_launched_process option
2024-09-05 13:07:10 -05:00
dependabot[bot]
6aae1264dd build(deps): bump slackapi/slack-github-action from 1.26.0 to 1.27.0 (#43530)
Bumps [slackapi/slack-github-action](https://github.com/slackapi/slack-github-action) from 1.26.0 to 1.27.0.
- [Release notes](https://github.com/slackapi/slack-github-action/releases)
- [Commits](70cd7be8e4...37ebaef184)

---
updated-dependencies:
- dependency-name: slackapi/slack-github-action
  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>
2024-09-05 11:26:17 -05:00
dependabot[bot]
4b5a831979 build(deps): bump actions/upload-artifact from 4.3.6 to 4.4.0 (#43528)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.6 to 4.4.0.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](834a144ee9...50769540e7)

---
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>
2024-09-05 12:04:52 +02:00
David Sanders
2c3840af76 ci: remove blocked/need-info label on user comment (#43562) 2024-09-05 10:12:02 +02:00
John Kleinschmidt
73d480d401 build: fix telemetry error when using autoninja (#43563) 2024-09-05 10:08:27 +02:00
Charles Kerr
2d868ecb8d perf: use v8::Local<v8::Object> as the key in ObjectCache (#43519)
* perf: use v8::Object* as direct keys instead of using hash + a linked list

* refactor: use v8::Local<v8::Object> as the key
2024-09-04 22:53:06 -05:00
Charles Kerr
0467790aee chore: migrate to v8::Object::SetPrototypeV2() (#43535)
chore: migrate to v8::Object::SetPrototypeV2().

Xref: https://chromium-review.googlesource.com/c/v8/v8/+/5600627

[api] Mark v8::Object::GetPrototype() for deprecation

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-04 20:30:54 -05:00
Charles Kerr
8ae5aacc8c refactor: declare gin::Wrapper subclasses as final (#43527)
As per the gin docs: "Wrappable<T> explicitly does not support further
subclassing of T. Subclasses of Wrappable<T> should be declared final."
2024-09-04 18:40:02 -05:00
Keeley Hammond
94f2722fa3 build: don't run symbol generation on PS (#43554)
fix: don't run symbol generation on PS
2024-09-04 17:18:57 +01:00
Charles Kerr
054cbcd6eb fix: don't use deprecate-soon class v8::String::Value (#43518)
* fix: remove use of deprecated v8::String::Value

Upstream marked v8::String::Value as `V8_DEPRECATE_SOON` last month,
so let's stop using it.

The replacement code mostly does the same as v8::String::Value();
but since our test only cares about the length and not the contents,
we get a small perf win of not needing to allocate a char array and
not needing to call Local::String::Write().

Upstream V8_DEPRECATE_SOON:
Xref: https://chromium-review.googlesource.com/c/v8/v8/+/5667299kkk

v8::String::Value() implementation:
20226b740b/src/api/api.cc (10883)

History on why we used it:
80c1a9739d
f49ed30f72

* Update shell/common/gin_converters/file_path_converter.h

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

* fixup! Update shell/common/gin_converters/file_path_converter.h

do not return success for all non-Null non-Strings

---------

Co-authored-by: Robo <hop2deep@gmail.com>
2024-09-04 08:56:14 -05:00
dependabot[bot]
4c83016cf3 build(deps): bump github/codeql-action from 3.26.3 to 3.26.6 (#43529)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.26.3 to 3.26.6.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](883d8588e5...4dd16135b6)

---
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>
2024-09-04 09:35:09 -04:00
Orko Garai
53dcda1fe9 fix: Use XDG_ACTIVATION_TOKEN in wayland when launched by other app (#43481)
When an electron app is launched by another app ensure that the
XDG_ACTIVATION_TOKEN env var is read and used for activation using
xdg_activation_v1 protocol.
2024-09-04 12:54:00 +02:00
George Xu
635d421123 fix: systemMediaPermissionDenied should not check camera perms when the request is asking for screen share (#43517)
* fix: systemMediaPermissionDenied: should check for screen capture perms instead of camera

* Revert "fix: systemMediaPermissionDenied: should check for screen capture perms instead of camera"

This reverts commit e9cc672165.

* should only do these checks for audio or video, but not screenshare

* no service

* oops

---------

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-09-04 09:56:26 +01:00
Charles Kerr
b42c0ae00d fix: -Wunsafe-buffer-usage warnings in IsUrlArg() (#43477)
* fix: -Wunsafe-buffer-usage warnings in IsUrlArg()

* chore: improve code comments for CheckCommandLineArguments()

* chore: reduce diffs from main

* refactor: CheckCommandLineArguments takes a StringVector arg

Fixes another buffer warning!
2024-09-03 21:51:39 -04:00
John Kleinschmidt
90ba2df4fa build: free up macos disk space as soon as possible (#43533)
* chore: free up macos disk space as soon as possible

* build: free up disk space on gn check too
2024-09-03 21:32:05 -04:00
John Kleinschmidt
c41a28d7c8 chore: speed up cache only reclient for fork PRs (#43497) 2024-08-29 13:51:06 -04:00
Robo
41b8fdca5c fix: devtools dock state with WCO on linux (#43490) 2024-08-29 09:17:00 +09:00
electron-roller[bot]
38512efd25 chore: bump node to v20.17.0 (main) (#43428)
* chore: bump node in DEPS to v20.17.0

* module: disallow CJS <-> ESM edges in a cycle from require(esm)

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

* src: expose LookupAndCompile with parameters

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

* src: fix -Wshadow warning

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

* lib: convert WeakMaps in cjs loader with symbol properties

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

* src: reduce unnecessary serialization of CLI options in C++

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

* build: ensure v8_pointer_compression_sandbox is enabled on 64bit

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

* lib: improve error message when index not found on cjs

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

* src,lib: expose getCategoryEnabledBuffer to use on node.http

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

* deps: update c-ares to v1.32.2

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

* chore: fixup patch indices

* deps: update V8 to 12.2

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

* stream: Expose DuplexPair API

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

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2024-08-26 15:09:33 -04:00
Charles Kerr
7cea992926 refactor: simplify KeyWeakMap impl (#43461) 2024-08-26 13:19:05 -05:00
Charles Kerr
2390706030 refactor: prefer std::ranges over begin() and end() (#43464) 2024-08-26 10:58:32 -04:00
David Sanders
56829f75c1 chore: cleanup include groupings (#43478) 2024-08-26 10:44:20 -04:00
Charles Kerr
5994b34a5d chore: remove unused WinFrameView::kInactiveTitlebarFeatureAlpha (#43448)
added in Aug 2021 (41646d11, #29600) but never used
2024-08-23 20:59:41 -05:00
electron-appveyor-updater[bot]
e6555ac5e1 build: update appveyor image to latest version (#43451)
Co-authored-by: electron-appveyor-updater[bot] <161660339+electron-appveyor-updater[bot]@users.noreply.github.com>
2024-08-23 18:36:32 -04:00
Charles Kerr
5a1eeea102 perf: prefer GURL string_view getters (#43443)
* chore: avoid double-call to url.scheme() in WebContentsZoomController::SetZoomMode()

* perf: use gurl.scheme_piece() in GetAppInfoHelperForProtocol()

* perf: use gurl.scheme_piece() in Browser::GetApplicationNameForProtocol()

* refactor: add std::less<> to HandlersMap

This lets us search it using string_view keys

* refactor: ProtocolRegistry::FindRegistered() now takes a std::string_view

* perf: use gurl.scheme_piece() in InspectableWebContents::LoadNetworkResource()

* refactor: ProtocolRegistry::FindIntercepted() now takes a std::string_view

* perf: use gurl.scheme_piece() in SimpleURLLoaderWrapper::GetURLLoaderFactoryForURL()

* perf: use gurl.scheme_piece() in ProxyingURLLoaderFactory::CreateLoaderAndStart()

* perf: use gurl.host_piece() in ElectronWebUIControllerFactory::GetWebUIType()

* perf: use gurl.host_piece() in ElectronWebUIControllerFactory::CreateWebUIControllerForURL()
2024-08-23 17:15:45 -05:00
Charles Kerr
7f34b0e6f5 chore: remove unused method asar::ClearArchives() (#43442)
chore: remove unused asar::ClearArchives()

last use removed in Jun 2021 (b1d1ac65, #29293)
2024-08-23 14:53:01 -05:00
John Kleinschmidt
c1eee18e41 test: add -pdf-ready-to-print event to WebContents for testing (#43436) 2024-08-23 12:34:26 -05:00
Charles Kerr
9ce0ca74c3 build: remove fix_disable_scope_reuse_associated_dchecks.patch (#43441)
chore: remove fix_disable_scope_reuse_associated_dchecks.patch
2024-08-23 11:04:20 -04:00
Shelley Vohr
3a5a1ea7bd docs: titleBarOverlay is defined as a BaseWindow ctor option (#43430)
docs: titleBarOverlay is defined as a BaseWindow ctor option
2024-08-23 11:02:43 -04:00
Shelley Vohr
6e4d90fcdb fix: ensure bounds stability in OnWidgetBoundsChanged (#43431)
* fix: ensure bounds stability in OnWidgetBoundsChanged

* Update shell/browser/native_window_views.cc

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

---------

Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-08-23 11:02:05 -04:00
Erick Zhao
fd8d9f06fd chore: mention signed commit requirement (#43406)
chore: mentioned signed commit requirement
2024-08-23 15:52:33 +02:00
Alexander Cyon
ca0837c852 chore: fix typos in 'shell/' folder. (#43373) 2024-08-22 19:48:32 -05:00
reito
1aeca6fd0e feat: GPU shared texture offscreen rendering (#42953)
* feat: GPU shared texture offscreen rendering

* docs: clarify texture infos that passed by the paint event.

* feat: make gpu osr spec test optional

* fix: osr image compare

* fix: remove duplicate test

* fix: update patch file

* fix: code review

* feat: expose more metadata

* feat: use better switch design

* feat: add warning when user forget to release the texture.

* fix: typo

* chore: update patch

* fix: update patch

* fix: update patch description

* fix: update docs

* fix: apply suggestions from code review

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

* fix: apply suggested fixes

---------

Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-08-22 19:23:13 -05:00
electron-roller[bot]
b481966f02 chore: bump chromium to 130.0.6672.0 (main) (#43445)
chore: bump chromium in DEPS to 130.0.6672.0

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
2024-08-22 18:27:25 -05:00
electron-roller[bot]
baf0182a42 chore: bump chromium to 130.0.6671.0 (main) (#43429)
* chore: bump chromium in DEPS to 130.0.6671.0

* 5802591: [Partitioned Popins] (6) Add permissions policy for popin

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

* 5794132: [video pip] Move back to tab button to the header

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

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2024-08-22 13:16:40 -05:00
Shelley Vohr
50ce448556 fix: menu should allow focused BaseWindow where possible (#43404)
fix: menu should allow focused BaseWindow
2024-08-22 14:13:30 -04:00
Shelley Vohr
7391db93e2 build: roll sysroots (#43261) 2024-08-22 16:22:12 +02:00
Alexander Cyon
b27dc7514e fix: documentation spelling errors (#43366)
chore: fix typos in 'docs/' folder.
2024-08-22 15:44:55 +02:00
Alexander Cyon
ae0c8881c3 chore: fix typos in 'spec/' folder (and one in 'lib/' folder) (#43374) 2024-08-22 15:44:15 +02:00
Shelley Vohr
4ae43dcb3b fix: touch bar functionality on BaseWindow (#43353)
* fix: touch bar functionality on BaseWindow

* test: add test for BaseWindow.setTouchBar
2024-08-22 12:48:25 +02:00
electron-appveyor-updater[bot]
46bed807ca build: update appveyor image to latest version (#43369)
Co-authored-by: electron-appveyor-updater[bot] <161660339+electron-appveyor-updater[bot]@users.noreply.github.com>
2024-08-22 10:12:57 +02:00
Shelley Vohr
755c6640fd docs: clarify icon value in Notification (#43377)
* docs: clarify icon value in Notification

* Update docs/api/notification.md

Co-authored-by: Erick Zhao <erick@hotmail.ca>

---------

Co-authored-by: Erick Zhao <erick@hotmail.ca>
2024-08-21 19:38:06 -05:00
Charles Kerr
4fbf18a021 refactor: move impl functions into private namespace (#43372) 2024-08-21 15:26:06 -05:00
electron-roller[bot]
f366caac84 chore: bump chromium to 130.0.6669.0 (main) (#43397)
* chore: bump chromium in DEPS to 130.0.6669.0

* 5789734: Consolidate all the accessibility scale factor utility code into one file

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

* 5798543: [autofill] Don't emit autofill audit reports if inspector not connected

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

* 5797073: [wasm] Spill all loop inputs before entering loop

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

* chore: fixup patch indices

* 5795224: Version 13.0.0

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

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2024-08-21 12:34:18 -04:00
David Sanders
4874233aae chore: set wg-infra as CODEOWNER for GHA build configs (#43223)
* chore: set wg-releases as CODEOWNER for GHA build configs

* chore: change to wg-infra
2024-08-21 10:49:22 +02:00
David Sanders
b7af0537c8 docs: update timelines for E33 (#43389) 2024-08-20 15:47:32 -07:00
Keeley Hammond
7da9c0b2f7 docs: update window customization tutorial (#43388) 2024-08-20 15:29:01 -07:00
Shelley Vohr
46af43db49 chore: cherry-pick 9797576 from v8 (#43376) 2024-08-20 16:49:02 -04:00
Charles Kerr
93a6f3e607 refactor: NodeBindings::Create() returns a unique_ptr (#43361)
* refactor: NodeBindings::Create() returns a unique_ptr

* empty commit
2024-08-20 15:34:59 -04:00
Charles Kerr
a2de94dda1 chore: remove unused ConvertableToTraceFormatWrapper (#43356)
* chore: remove unused ConvertableToTraceFormatWrapper

Last use removed in Apr 2024 (39bf441b, #41880)

* fixup! chore: remove unused ConvertableToTraceFormatWrapper

remove now-unused trace_event.h header, too
2024-08-20 15:21:43 -04:00
337 changed files with 4407 additions and 2885 deletions

View File

@@ -2,7 +2,7 @@ version: '3'
services:
buildtools:
image: ghcr.io/electron/devcontainer:9a43c14f5c19be0359843299f79e736521373adc
image: ghcr.io/electron/devcontainer:77262e58c37631ab082482f42c33cdf68c6c394b
volumes:
- ..:/workspaces/gclient/src/electron:cached

6
.github/CODEOWNERS vendored
View File

@@ -20,3 +20,9 @@ appveyor-woa.yml @electron/wg-releases
/lib/browser/guest-view-manager.ts @electron/wg-security
/lib/browser/rpc-server.ts @electron/wg-security
/lib/renderer/security-warnings.ts @electron/wg-security
# Infra WG
/.github/actions/ @electron/wg-infra
/.github/workflows/*-publish.yml @electron/wg-infra
/.github/workflows/build.yml @electron/wg-infra
/.github/workflows/pipeline-*.yml @electron/wg-infra

View File

@@ -6,6 +6,6 @@ runs:
- name: Install Build Tools
shell: bash
run: |
export BUILD_TOOLS_SHA=d5b87591842be19058e8d75d2c5b7f1fabe9f450
export BUILD_TOOLS_SHA=33dc5186556bfbf7b0121a00cdd89ed3802e47da
npm i -g @electron/build-tools
e auto-update disable

9
.github/config.yml vendored
View File

@@ -2,6 +2,8 @@
newPRWelcomeComment: |
💖 Thanks for opening this pull request! 💖
### Semantic PR titles
We use [semantic commit messages](https://github.com/electron/electron/blob/main/docs/development/pull-requests.md#commit-message-guidelines) to streamline the release process. Before your pull request can be merged, you should **update your pull request title** to start with a semantic prefix.
Examples of commit messages with semantic prefixes:
@@ -10,6 +12,13 @@ newPRWelcomeComment: |
- `feat: add app.isPackaged() method`
- `docs: app.isDefaultProtocolClient is now available on Linux`
### Commit signing
This repo enforces [commit signatures](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits) for all incoming PRs.
To sign your commits, see GitHub's documentation on [Telling Git about your signing key](https://docs.github.com/en/authentication/managing-commit-signature-verification/telling-git-about-your-signing-key).
### PR tips
Things that will help get your PR across the finish line:
- Follow the JavaScript, C++, and Python [coding style](https://github.com/electron/electron/blob/main/docs/development/coding-style.md).

View File

@@ -10,3 +10,59 @@ updates:
labels:
- "no-backport"
- "semver/none"
target-branch: main
- package-ecosystem: npm
directories:
- /
- /spec
- /npm
schedule:
interval: daily
labels:
- "no-backport"
open-pull-requests-limit: 2
target-branch: main
- package-ecosystem: npm
directories:
- /
- /spec
- /npm
schedule:
interval: daily
labels:
- "backport-check-skip"
open-pull-requests-limit: 0
target-branch: 33-x-y
- package-ecosystem: npm
directories:
- /
- /spec
- /npm
schedule:
interval: daily
labels:
- "backport-check-skip"
open-pull-requests-limit: 0
target-branch: 32-x-y
- package-ecosystem: npm
directories:
- /
- /spec
- /npm
schedule:
interval: daily
labels:
- "backport-check-skip"
open-pull-requests-limit: 0
target-branch: 31-x-y
- package-ecosystem: npm
directories:
- /
- /spec
- /npm
schedule:
interval: daily
labels:
- "backport-check-skip"
open-pull-requests-limit: 0
target-branch: 30-x-y

View File

@@ -9,9 +9,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Electron
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 #v4.0.2
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 #v4.0.2
with:
fetch-depth: 0
- name: Setup Node.js/npm
uses: actions/setup-node@0a44ba7841725637a19e28fa30b79a866c81b0a6
with:
node-version: 20.11.x
- name: Setting Up Dig Site
run: |
echo "remote: ${{ github.event.pull_request.head.repo.clone_url }}"

View File

@@ -23,11 +23,13 @@ jobs:
steps:
- name: Determine Major Version
id: check-major-version
env:
BRANCH_NAME: ${{ github.event.inputs.branch-name || github.event.ref }}
run: |
if [[ ${{ github.event.inputs.branch-name || github.event.ref }} =~ ^([0-9]+)-x-y$ ]]; then
if [[ "$BRANCH_NAME" =~ ^([0-9]+)-x-y$ ]]; then
echo "MAJOR=${BASH_REMATCH[1]}" >> "$GITHUB_OUTPUT"
else
echo "Not a release branch: ${{ github.event.inputs.branch-name || github.event.ref }}"
echo "Not a release branch: $BRANCH_NAME"
fi
- name: New Release Branch Tasks
if: ${{ steps.check-major-version.outputs.MAJOR }}

View File

@@ -40,7 +40,7 @@ jobs:
build-image-sha: ${{ steps.set-output.outputs.build-image-sha }}
docs-only: ${{ steps.set-output.outputs.docs-only }}
steps:
- uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 #v4.0.2
- uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 #v4.0.2
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
id: filter
with:
@@ -94,7 +94,7 @@ jobs:
build-image-sha: ${{ needs.setup.outputs.build-image-sha }}
steps:
- name: Checkout Electron
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871
with:
path: src/electron
fetch-depth: 0
@@ -120,7 +120,7 @@ jobs:
build-image-sha: ${{ needs.setup.outputs.build-image-sha}}
steps:
- name: Checkout Electron
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871
with:
path: src/electron
fetch-depth: 0

View File

@@ -9,8 +9,8 @@ permissions: {}
jobs:
issue-commented:
name: Remove blocked/need-repro on comment
if: ${{ contains(github.event.issue.labels.*.name, 'blocked/need-repro') && !contains(fromJSON('["MEMBER", "OWNER"]'), github.event.comment.author_association) && github.event.comment.user.type != 'Bot' }}
name: Remove blocked/{need-info,need-repro} on comment
if: ${{ (contains(github.event.issue.labels.*.name, 'blocked/need-repro') || contains(github.event.issue.labels.*.name, 'blocked/need-info ❌')) && !contains(fromJSON('["MEMBER", "OWNER"]'), github.event.comment.author_association) && github.event.comment.user.type != 'Bot' }}
runs-on: ubuntu-latest
steps:
- name: Generate GitHub App token
@@ -23,4 +23,4 @@ jobs:
GITHUB_TOKEN: ${{ steps.generate-token.outputs.token }}
ISSUE_URL: ${{ github.event.issue.html_url }}
run: |
gh issue edit $ISSUE_URL --remove-label 'blocked/need-repro'
gh issue edit $ISSUE_URL --remove-label 'blocked/need-repro','blocked/need-info ❌'

View File

@@ -30,7 +30,7 @@ jobs:
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
steps:
- name: Checkout Electron
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871
with:
path: src/electron
fetch-depth: 0

View File

@@ -31,7 +31,7 @@ jobs:
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_mac=True --custom-var=host_os=mac'
steps:
- name: Checkout Electron
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871
with:
path: src/electron
fetch-depth: 0

View File

@@ -20,7 +20,7 @@ jobs:
container: ${{ fromJSON(inputs.container) }}
steps:
- name: Checkout Electron
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871
with:
path: src/electron
fetch-depth: 0

View File

@@ -20,7 +20,7 @@ jobs:
container: ${{ fromJSON(inputs.container) }}
steps:
- name: Checkout Electron
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871
with:
path: src/electron
fetch-depth: 0

View File

@@ -83,7 +83,7 @@ jobs:
- name: Create src dir
run: mkdir src
- name: Checkout Electron
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871
with:
path: src/electron
fetch-depth: 0
@@ -156,7 +156,7 @@ jobs:
if: ${{ inputs.target-platform == 'linux' }}
uses: ./src/electron/.github/actions/restore-cache-aks
- name: Checkout Electron
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871
with:
path: src/electron
fetch-depth: 0
@@ -187,8 +187,8 @@ jobs:
HELPER=$(node -p "require('./src/utils/reclient.js').helperPath({})")
$HELPER login
echo 'RBE_service='`node -e "console.log(require('./src/utils/reclient.js').serviceAddress)"` >> $GITHUB_ENV
echo 'RBE_experimental_credentials_helper='`node -e "console.log(require('./src/utils/reclient.js').helperPath({}))"` >> $GITHUB_ENV
echo 'RBE_experimental_credentials_helper_args=print' >> $GITHUB_ENV
echo 'RBE_credentials_helper='`node -e "console.log(require('./src/utils/reclient.js').helperPath({}))"` >> $GITHUB_ENV
echo 'RBE_credentials_helper_args=print' >> $GITHUB_ENV
- name: Free up space (macOS)
if: ${{ inputs.target-platform == 'macos' }}
uses: ./src/electron/.github/actions/free-space-macos

View File

@@ -50,7 +50,7 @@ jobs:
TARGET_ARCH: ${{ inputs.target-arch }}
steps:
- name: Checkout Electron
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871
with:
path: src/electron
fetch-depth: 0
@@ -128,7 +128,7 @@ jobs:
- name: Add CHROMIUM_BUILDTOOLS_PATH to env
run: echo "CHROMIUM_BUILDTOOLS_PATH=$(pwd)/src/buildtools" >> $GITHUB_ENV
- name: Checkout Electron
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871
with:
path: src/electron
fetch-depth: 0

View File

@@ -91,7 +91,7 @@ jobs:
fi
done
- name: Checkout Electron
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871
with:
path: src/electron
fetch-depth: 0
@@ -146,17 +146,21 @@ jobs:
sudo security authorizationdb write com.apple.trust-settings.admin allow
cd src/electron
./script/codesign/generate-identity.sh
- name: Install Datadog CLI
run: |
cd src/electron
node script/yarn global add @datadog/datadog-ci
- name: Run Electron Tests
shell: bash
env:
MOCHA_REPORTER: mocha-multi-reporters
ELECTRON_TEST_RESULTS_DIR: junit
MOCHA_MULTI_REPORTERS: mocha-junit-reporter, tap
ELECTRON_DISABLE_SECURITY_WARNINGS: 1
ELECTRON_SKIP_NATIVE_MODULE_TESTS: true
DISPLAY: ':99.0'
run: |
cd src/electron
export ELECTRON_TEST_RESULTS_DIR=`pwd`/junit
# Get which tests are on this shard
tests_files=$(node script/split-tests ${{ matrix.shard }} ${{ inputs.target-platform == 'macos' && 2 || 3 }})
@@ -185,6 +189,18 @@ jobs:
runuser -u builduser -- xvfb-run script/actions/run-tests.sh script/yarn test --runners=main --trace-uncaught --enable-logging --files $tests_files
fi
fi
- name: Upload Test results to Datadog
env:
DD_ENV: ci
DD_SERVICE: electron
DD_API_KEY: ${{ secrets.DD_API_KEY }}
DD_CIVISIBILITY_LOGS_ENABLED: true
DD_TAGS: "os.architecture:${{ inputs.target-arch }},os.family:${{ inputs.target-platform }},os.platform:${{ inputs.target-platform }},asan:${{ inputs.is-asan }}"
run: |
if ! [ -z $DD_API_KEY ]; then
datadog-ci junit upload src/electron/junit/test-results-main.xml
fi
if: always() && !cancelled()
- name: Upload Test Artifacts
if: always() && !cancelled()
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874

View File

@@ -45,7 +45,7 @@ jobs:
container: ${{ fromJSON(inputs.test-container) }}
steps:
- name: Checkout Electron
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871
with:
path: src/electron
fetch-depth: 0
@@ -108,7 +108,7 @@ jobs:
container: ${{ fromJSON(inputs.test-container) }}
steps:
- name: Checkout Electron
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871
with:
path: src/electron
fetch-depth: 0

View File

@@ -22,7 +22,7 @@ jobs:
steps:
- name: "Checkout code"
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
persist-credentials: false
@@ -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@e2b3eafc8d227b0241d48be5f425d47c2d750a13 # v3.26.10
uses: github/codeql-action/upload-sarif@f779452ac5af1c261dce0346a8f964149f49322b # v3.26.13
with:
sarif_file: results.sarif

View File

@@ -19,7 +19,7 @@ jobs:
with:
creds: ${{ secrets.APPVEYOR_UPDATER_GH_APP_CREDS }}
- name: Checkout
uses: actions/checkout@d632683dd7b4114ad314bca15554477dd762a938 # v4.2.0
uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 # v4.2.1
with:
fetch-depth: 0
token: ${{ steps.generate-token.outputs.token }}

View File

@@ -532,7 +532,7 @@ source_set("electron_lib") {
]
}
configs += [ "//electron/build/config:mas_build" ]
deps += [ "//electron/build/config:generate_mas_config" ]
sources = filenames.lib_sources
if (is_win) {
@@ -908,12 +908,14 @@ if (is_mac) {
assert(defined(invoker.helper_name_suffix))
output_name = electron_helper_name + invoker.helper_name_suffix
deps = [ ":electron_framework+link" ]
deps = [
":electron_framework+link",
"//electron/build/config:generate_mas_config",
]
if (!is_mas_build) {
deps += [ "//sandbox/mac:seatbelt" ]
}
defines = [ "HELPER_EXECUTABLE" ]
configs += [ "//electron/build/config:mas_build" ]
sources = [
"shell/app/electron_main_mac.cc",
"shell/app/uv_stdio_fix.cc",
@@ -1069,6 +1071,7 @@ if (is_mac) {
":electron_app_plist",
":electron_app_resources",
":electron_fuses",
"//electron/build/config:generate_mas_config",
"//electron/buildflags",
]
if (is_mas_build) {
@@ -1083,7 +1086,6 @@ if (is_mac) {
"-rpath",
"@executable_path/../Frameworks",
]
configs += [ "//electron/build/config:mas_build" ]
}
if (enable_dsyms) {

4
DEPS
View File

@@ -2,9 +2,9 @@ gclient_gn_args_from = 'src'
vars = {
'chromium_version':
'130.0.6723.31',
'131.0.6776.0',
'node_version':
'v20.17.0',
'v20.18.0',
'nan_version':
'e14bdcd1f72d62bca1d541b66da43130384ec213',
'squirrel.mac_version':

View File

@@ -68,7 +68,7 @@ build_script:
- ps: $env:PATH="$pwd\depot_tools;$env:PATH"
- update_depot_tools.bat
# Uncomment the following line if windows deps change
# - src\electron\script\setup-win-for-dev.bat
- src\electron\script\setup-win-for-dev.bat
- >-
gclient config
--name "src\electron"

View File

@@ -29,14 +29,14 @@
version: 1.0.{build}
build_cloud: electronhq-16-core
image: e-130.0.6695.0-node-20
image: e-131.0.6734.0-node-20.17-0
environment:
GIT_CACHE_PATH: C:\Users\appveyor\libcc_cache
ELECTRON_OUT_DIR: Default
ELECTRON_ENABLE_STACK_DUMPING: 1
ELECTRON_ALSO_LOG_TO_STDERR: 1
MOCHA_REPORTER: mocha-multi-reporters
MOCHA_MULTI_REPORTERS: "@marshallofsound/mocha-appveyor-reporter, tap"
MOCHA_MULTI_REPORTERS: "@marshallofsound/mocha-appveyor-reporter, mocha-junit-reporter, tap"
DEPOT_TOOLS_WIN_TOOLCHAIN: 1
DEPOT_TOOLS_WIN_TOOLCHAIN_BASE_URL: "https://dev-cdn.electronjs.org/windows-toolchains/_"
GYP_MSVS_HASH_7393122652: 3ba76c5c20
@@ -45,10 +45,16 @@ environment:
matrix:
- job_name: Build Arm on X64 Windows
- job_name: Test On Windows On Arm Hardware
- job_name: Test On Windows On Arm Hardware 1
job_depends_on: Build Arm on X64 Windows
APPVEYOR_BUILD_WORKER_IMAGE: base-woa
APPVEYOR_BUILD_WORKER_CLOUD: electronhq-woa
shard: 1
- job_name: Test On Windows On Arm Hardware 2
job_depends_on: Build Arm on X64 Windows
APPVEYOR_BUILD_WORKER_IMAGE: base-woa
APPVEYOR_BUILD_WORKER_CLOUD: electronhq-woa
shard: 2
clone_script:
- ps: git clone -q $("--branch=" + $Env:APPVEYOR_REPO_BRANCH) $("https://github.com/" + $Env:APPVEYOR_REPO_NAME + ".git") $Env:APPVEYOR_BUILD_FOLDER
@@ -115,9 +121,9 @@ for:
- ps: >-
$env:RBE_service = node -e "console.log(require('./src/utils/reclient.js').serviceAddress)"
- ps: >-
$env:RBE_experimental_credentials_helper = $env:RECLIENT_HELPER
$env:RBE_credentials_helper = $env:RECLIENT_HELPER
- ps: >-
$env:RBE_experimental_credentials_helper_args = "print"
$env:RBE_credentials_helper_args = "print"
- ps: >-
if ($env:ELECTRON_RBE_JWT -eq '') {
$env:RBE_fail_early_min_action_count = "0"
@@ -254,14 +260,19 @@ for:
}
- matrix:
only:
- job_name: Test On Windows On Arm Hardware
- job_name: Test On Windows On Arm Hardware 1
- job_name: Test On Windows On Arm Hardware 2
environment:
IGNORE_YARN_INSTALL_ERROR: 1
ELECTRON_TEST_RESULTS_DIR: junit
MOCHA_MULTI_REPORTERS: 'mocha-junit-reporter, tap'
ELECTRON_TEST_RESULTS_DIR: C:\projects\src\electron\junit
MOCHA_MULTI_REPORTERS: "@marshallofsound/mocha-appveyor-reporter, mocha-junit-reporter, tap"
MOCHA_REPORTER: mocha-multi-reporters
ELECTRON_SKIP_NATIVE_MODULE_TESTS: true
DD_ENV: ci
DD_SERVICE: electron
DD_CIVISIBILITY_LOGS_ENABLED: true
DD_GIT_REPOSITORY_URL: "https://github.com/electron/electron.git"
build_script:
- ps: |
@@ -273,6 +284,7 @@ for:
} else {
$global:LASTEXITCODE = 0
}
- ps: Invoke-WebRequest -Uri "https://github.com/DataDog/datadog-ci/releases/latest/download/datadog-ci_win-x64" -OutFile "C:\projects\src\electron\datadog-ci.exe"
- cd ..
- mkdir out\Default
- cd ..
@@ -321,10 +333,22 @@ for:
if ($env:TARGET_ARCH -eq 'ia32') {
$env:npm_config_arch = "ia32"
}
- echo Running main test suite & node script/yarn test --runners=main --enable-logging --disable-features=CalculateNativeWinOcclusion
- ps: $env:tests_files=node script\split-tests $env:shard 2
- echo "Running shard %shard% specs %tests_files%"
- echo Running main test suite & node script/yarn test --runners=main --enable-logging --disable-features=CalculateNativeWinOcclusion --files %tests_files%
- cd ..
- echo Verifying non proprietary ffmpeg & python electron\script\verify-ffmpeg.py --build-dir out\Default --source-root %cd% --ffmpeg-path out\ffmpeg
on_finish:
# Uncomment these lines to enable RDP
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
- if exist electron\junit\test-results-main.xml ( appveyor-retry appveyor PushArtifact electron\junit\test-results-main.xml )
- ps: |
if ($env:DD_API_KEY) {
$env:DD_GIT_COMMIT_SHA = $env:APPVEYOR_REPO_COMMIT
$env:DD_GIT_BRANCH = $env:APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH
$env:DD_TAGS = "os.architecture:$env:TARGET_ARCH,os.family:windows,os.platform:win32"
if (Test-Path -Path "C:\projects\src\electron\junit\test-results-main.xml") {
C:\projects\src\electron\datadog-ci.exe junit upload --verbose C:\projects\src\electron\junit\test-results-main.xml
}
}

View File

@@ -29,14 +29,14 @@
version: 1.0.{build}
build_cloud: electronhq-16-core
image: e-130.0.6695.0-node-20
image: e-131.0.6734.0-node-20.17-0
environment:
GIT_CACHE_PATH: C:\Users\appveyor\libcc_cache
ELECTRON_OUT_DIR: Default
ELECTRON_ENABLE_STACK_DUMPING: 1
ELECTRON_ALSO_LOG_TO_STDERR: 1
MOCHA_REPORTER: mocha-multi-reporters
MOCHA_MULTI_REPORTERS: "@marshallofsound/mocha-appveyor-reporter, tap"
MOCHA_MULTI_REPORTERS: "@marshallofsound/mocha-appveyor-reporter, mocha-junit-reporter, tap"
DEPOT_TOOLS_WIN_TOOLCHAIN: 1
DEPOT_TOOLS_WIN_TOOLCHAIN_BASE_URL: "https://dev-cdn.electronjs.org/windows-toolchains/_"
GYP_MSVS_HASH_7393122652: 3ba76c5c20
@@ -45,8 +45,12 @@ environment:
matrix:
- job_name: Build
- job_name: Test
- job_name: Test 1
job_depends_on: Build
shard: 1
- job_name: Test 2
job_depends_on: Build
shard: 2
clone_script:
- ps: git clone -q $("--branch=" + $Env:APPVEYOR_REPO_BRANCH) $("https://github.com/" + $Env:APPVEYOR_REPO_NAME + ".git") $Env:APPVEYOR_BUILD_FOLDER
@@ -112,9 +116,9 @@ for:
- ps: >-
$env:RBE_service = node -e "console.log(require('./src/utils/reclient.js').serviceAddress)"
- ps: >-
$env:RBE_experimental_credentials_helper = $env:RECLIENT_HELPER
$env:RBE_credentials_helper = $env:RECLIENT_HELPER
- ps: >-
$env:RBE_experimental_credentials_helper_args = "print"
$env:RBE_credentials_helper_args = "print"
- ps: >-
if ($env:ELECTRON_RBE_JWT -eq '') {
$env:RBE_fail_early_min_action_count = "0"
@@ -246,7 +250,15 @@ for:
}
- matrix:
only:
- job_name: Test
- job_name: Test 1
- job_name: Test 2
environment:
DD_ENV: ci
DD_SERVICE: electron
DD_CIVISIBILITY_LOGS_ENABLED: true
DD_GIT_REPOSITORY_URL: "https://github.com/electron/electron.git"
ELECTRON_TEST_RESULTS_DIR: C:\projects\src\electron\junit
init:
- ps: |
@@ -263,6 +275,7 @@ for:
} else {
$global:LASTEXITCODE = 0
}
- npm install -g @datadog/datadog-ci
- cd ..
- mkdir out\Default
- cd ..
@@ -308,7 +321,9 @@ for:
if ($env:TARGET_ARCH -eq 'ia32') {
$env:npm_config_arch = "ia32"
}
- echo Running main test suite & node script/yarn test -- --trace-uncaught --runners=main --enable-logging
- ps: $env:tests_files=node script\split-tests $env:shard 2
- echo "Running shard %shard% specs %tests_files%"
- echo Running main test suite & node script/yarn test -- --trace-uncaught --runners=main --enable-logging --files %tests_files%
- cd ..
- echo Verifying non proprietary ffmpeg & python electron\script\verify-ffmpeg.py --build-dir out\Default --source-root %cd% --ffmpeg-path out\ffmpeg
- echo "About to verify mksnapshot"
@@ -320,3 +335,13 @@ for:
on_finish:
# Uncomment these lines to enable RDP
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
- if exist electron\junit\test-results-main.xml ( appveyor-retry appveyor PushArtifact electron\junit\test-results-main.xml )
- ps: |
if ($env:RUN_TESTS -eq 'true' -And $env:DD_API_KEY) {
$env:DD_GIT_COMMIT_SHA = $env:APPVEYOR_REPO_COMMIT
$env:DD_GIT_BRANCH = $env:APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH
$env:DD_TAGS = "os.architecture:$env:TARGET_ARCH,os.family:windows,os.platform:win32"
if (Test-Path -Path "C:\projects\src\electron\junit\test-results-main.xml") {
C:\Users\appveyor\AppData\Roaming\npm\datadog-ci.ps1 junit upload --verbose C:\projects\src\electron\junit\test-results-main.xml
}
}

View File

@@ -2,7 +2,7 @@ is_electron_build = true
root_extra_deps = [ "//electron" ]
# Registry of NMVs --> https://github.com/nodejs/node/blob/main/doc/abi_version_registry.json
node_module_version = 130
node_module_version = 132
v8_promise_internal_field_count = 1
v8_embedder_string = "-electron.0"

View File

@@ -1,8 +1,11 @@
# For MAS build, we force defining "MAS_BUILD".
config("mas_build") {
action("generate_mas_config") {
outputs = [ "$target_gen_dir/../../mas.h" ]
script = "../../script/generate-mas-config.py"
if (is_mas_build) {
defines = [ "IS_MAS_BUILD()=1" ]
args = [ "true" ]
} else {
defines = [ "IS_MAS_BUILD()=0" ]
args = [ "false" ]
}
args += rebase_path(outputs)
}

View File

@@ -36,7 +36,6 @@ TEMPLATE_CC = """
#if DCHECK_IS_ON()
#include "base/command_line.h"
#include "base/strings/string_util.h"
#include <string>
#endif

View File

@@ -30,6 +30,8 @@ static_library("chrome") {
"//chrome/browser/devtools/devtools_file_system_indexer.cc",
"//chrome/browser/devtools/devtools_file_system_indexer.h",
"//chrome/browser/devtools/devtools_settings.h",
"//chrome/browser/devtools/features.cc",
"//chrome/browser/devtools/features.h",
"//chrome/browser/devtools/visual_logging.cc",
"//chrome/browser/devtools/visual_logging.h",
"//chrome/browser/extensions/global_shortcut_listener.cc",
@@ -195,9 +197,12 @@ static_library("chrome") {
"//chrome/app/vector_icons",
"//chrome/browser:resource_prefetch_predictor_proto",
"//chrome/browser/resource_coordinator:mojo_bindings",
"//chrome/browser/task_manager/common:impl",
"//chrome/browser/ui/webui/tab_search:mojo_bindings",
"//chrome/browser/web_applications/mojom:mojom_web_apps_enum",
"//components/enterprise/buildflags",
"//components/enterprise/common/proto:connectors_proto",
"//components/enterprise/obfuscation/core:enterprise_obfuscation",
"//components/safe_browsing/core/browser/db:safebrowsing_proto",
"//components/vector_icons:vector_icons",
"//ui/snapshot",

View File

@@ -93,9 +93,7 @@ async function loadApplicationPackage (packagePath: string) {
try {
process.emitWarning = () => {};
packageJson = (await import(url.pathToFileURL(packageJsonPath).toString(), {
assert: {
type: 'json'
}
with: { type: 'json' }
})).default;
} catch (e) {
showErrorMessage(`Unable to parse ${packageJsonPath}\n\n${(e as Error).message}`);

View File

@@ -64,6 +64,31 @@ const child = new BaseWindow({ parent, modal: true })
* On Linux the type of modal windows will be changed to `dialog`.
* On Linux many desktop environments do not support hiding a modal window.
## Resource management
When you add a [`WebContentsView`](web-contents-view.md) to a `BaseWindow` and the `BaseWindow`
is closed, the [`webContents`](web-contents.md) of the `WebContentsView` are not destroyed
automatically.
It is your responsibility to close the `webContents` when you no longer need them, e.g. when
the `BaseWindow` is closed:
```js
const { BaseWindow, WebContentsView } = require('electron')
const win = new BaseWindow({ width: 800, height: 600 })
const view = new WebContentsView()
win.contentView.addChildView(view)
win.on('closed', () => {
view.webContents.close()
})
```
Unlike with a [`BrowserWindow`](browser-window.md), if you don't explicitly close the
`webContents`, you'll encounter memory leaks.
## Class: BaseWindow
> Create and control windows.

View File

@@ -74,7 +74,7 @@ The following methods are available on instances of `Cookies`:
`url`. Empty implies retrieving cookies of all URLs.
* `name` string (optional) - Filters cookies by name.
* `domain` string (optional) - Retrieves cookies whose domains match or are
subdomains of `domain`.
subdomains of `domains`.
* `path` string (optional) - Retrieves cookies whose path matches `path`.
* `secure` boolean (optional) - Filters cookies by their Secure property.
* `session` boolean (optional) - Filters out session or persistent cookies.

View File

@@ -268,7 +268,8 @@ Returns:
* `event` Event
* `details` Object
* `deviceList` [HIDDevice[]](structures/hid-device.md)
* `frame` [WebFrameMain](web-frame-main.md)
* `frame` [WebFrameMain](web-frame-main.md) | null - The frame initiating this event.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `callback` Function
* `deviceId` string | null (optional)
@@ -332,7 +333,8 @@ Returns:
* `event` Event
* `details` Object
* `device` [HIDDevice](structures/hid-device.md)
* `frame` [WebFrameMain](web-frame-main.md)
* `frame` [WebFrameMain](web-frame-main.md) | null - The frame initiating this event.
May be `null` if accessed after the frame has either navigated or been destroyed.
Emitted after `navigator.hid.requestDevice` has been called and
`select-hid-device` has fired if a new device becomes available before
@@ -347,7 +349,8 @@ Returns:
* `event` Event
* `details` Object
* `device` [HIDDevice](structures/hid-device.md)
* `frame` [WebFrameMain](web-frame-main.md)
* `frame` [WebFrameMain](web-frame-main.md) | null - The frame initiating this event.
May be `null` if accessed after the frame has either navigated or been destroyed.
Emitted after `navigator.hid.requestDevice` has been called and
`select-hid-device` has fired if a device has been removed before the callback
@@ -473,7 +476,8 @@ Returns:
* `event` Event
* `details` Object
* `port` [SerialPort](structures/serial-port.md)
* `frame` [WebFrameMain](web-frame-main.md)
* `frame` [WebFrameMain](web-frame-main.md) | null - The frame initiating this event.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `origin` string - The origin that the device has been revoked from.
Emitted after `SerialPort.forget()` has been called. This event can be used
@@ -517,7 +521,8 @@ Returns:
* `event` Event
* `details` Object
* `deviceList` [USBDevice[]](structures/usb-device.md)
* `frame` [WebFrameMain](web-frame-main.md)
* `frame` [WebFrameMain](web-frame-main.md) | null - The frame initiating this event.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `callback` Function
* `deviceId` string (optional)
@@ -957,7 +962,8 @@ session.fromPartition('some-partition').setPermissionCheckHandler((webContents,
* `handler` Function | null
* `request` Object
* `frame` [WebFrameMain](web-frame-main.md) - Frame that is requesting access to media.
* `frame` [WebFrameMain](web-frame-main.md) | null - Frame that is requesting access to media.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `securityOrigin` String - Origin of the page making the request.
* `videoRequested` Boolean - true if the web content requested a video stream.
* `audioRequested` Boolean - true if the web content requested an audio stream.
@@ -1158,7 +1164,8 @@ app.whenReady().then(() => {
pin displayed on the device.
* `providePin`
This prompt is requesting that a pin be provided for the device.
* `frame` [WebFrameMain](web-frame-main.md)
* `frame` [WebFrameMain](web-frame-main.md) | null - The frame initiating this handler.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `pin` string (optional) - The pin value to verify if `pairingKind` is `confirmPin`.
* `callback` Function
* `response` Object

View File

@@ -4,7 +4,7 @@
* `frameId` Integer - The ID of the renderer frame that sent this message
* `returnValue` any - Set this to the value to be returned in a synchronous message
* `sender` [WebContents](../web-contents.md) - Returns the `webContents` that sent the message
* `senderFrame` [WebFrameMain](../web-frame-main.md) _Readonly_ - The frame that sent this message
* `senderFrame` [WebFrameMain](../web-frame-main.md) | null _Readonly_ - The frame that sent this message. May be `null` if accessed after the frame has either navigated or been destroyed.
* `ports` [MessagePortMain](../message-port-main.md)[] - A list of MessagePorts that were transferred with this message
* `reply` Function - A function that will send an IPC message to the renderer frame that sent the original message that you are currently handling. You should use this method to "reply" to the sent message in order to guarantee the reply will go to the correct process and frame.
* `channel` string

View File

@@ -3,4 +3,4 @@
* `processId` Integer - The internal ID of the renderer process that sent this message
* `frameId` Integer - The ID of the renderer frame that sent this message
* `sender` [WebContents](../web-contents.md) - Returns the `webContents` that sent the message
* `senderFrame` [WebFrameMain](../web-frame-main.md) _Readonly_ - The frame that sent this message
* `senderFrame` [WebFrameMain](../web-frame-main.md) | null _Readonly_ - The frame that sent this message. May be `null` if accessed after the frame has either navigated or been destroyed.

View File

@@ -0,0 +1,24 @@
# OffscreenSharedTexture Object
* `textureInfo` Object - The shared texture info.
* `widgetType` string - The widget type of the texture. Can be `popup` or `frame`.
* `pixelFormat` string - The pixel format of the texture. Can be `rgba` or `bgra`.
* `codedSize` [Size](size.md) - The full dimensions of the video frame.
* `visibleRect` [Rectangle](rectangle.md) - A subsection of [0, 0, codedSize.width(), codedSize.height()]. In OSR case, it is expected to have the full section area.
* `contentRect` [Rectangle](rectangle.md) - The region of the video frame that capturer would like to populate. In OSR case, it is the same with `dirtyRect` that needs to be painted.
* `timestamp` number - The time in microseconds since the capture start.
* `metadata` Object - Extra metadata. See comments in src\media\base\video_frame_metadata.h for accurate details.
* `captureUpdateRect` [Rectangle](rectangle.md) (optional) - Updated area of frame, can be considered as the `dirty` area.
* `regionCaptureRect` [Rectangle](rectangle.md) (optional) - May reflect the frame's contents origin if region capture is used internally.
* `sourceSize` [Rectangle](rectangle.md) (optional) - Full size of the source frame.
* `frameCount` number (optional) - The increasing count of captured frame. May contain gaps if frames are dropped between two consecutively received frames.
* `sharedTextureHandle` Buffer _Windows_ _macOS_ - The handle to the shared texture.
* `planes` Object[] _Linux_ - Each plane's info of the shared texture.
* `stride` number - The strides and offsets in bytes to be used when accessing the buffers via a memory mapping. One per plane per entry.
* `offset` number - The strides and offsets in bytes to be used when accessing the buffers via a memory mapping. One per plane per entry.
* `size` number - Size in bytes of the plane. This is necessary to map the buffers.
* `fd` number - File descriptor for the underlying memory object (usually dmabuf).
* `modifier` string _Linux_ - The modifier is retrieved from GBM library and passed to EGL driver.
* `release` Function - Release the resources. The `texture` cannot be directly passed to another process, users need to maintain texture lifecycles in
main process, but it is safe to pass the `textureInfo` to another process. Only a limited number of textures can exist at the same time, so it's important
that you call `texture.release()` as soon as you're done with the texture.

View File

@@ -79,10 +79,14 @@
[browserWindow](../browser-window.md) has disabled `backgroundThrottling` then
frames will be drawn and swapped for the whole window and other
[webContents](../web-contents.md) displayed by it. Defaults to `true`.
* `offscreen` boolean (optional) - Whether to enable offscreen rendering for the browser
* `offscreen` Object | boolean (optional) - Whether to enable offscreen rendering for the browser
window. Defaults to `false`. See the
[offscreen rendering tutorial](../../tutorial/offscreen-rendering.md) for
more details.
* `useSharedTexture` boolean (optional) _Experimental_ - Whether to use GPU shared texture for accelerated
paint event. Defaults to `false`. See the
[offscreen rendering tutorial](../../tutorial/offscreen-rendering.md) for
more details.
* `contextIsolation` boolean (optional) - Whether to run Electron APIs and
the specified `preload` script in a separate JavaScript context. Defaults
to `true`. The context that the `preload` script runs in will only have

View File

@@ -127,6 +127,9 @@ Returns:
Emitted when the child process needs to terminate due to non continuable error from V8.
No matter if you listen to the `error` event, the `exit` event will be emitted after the
child process terminates.
#### Event: 'exit'
Returns:

View File

@@ -242,8 +242,9 @@ Returns:
* `isSameDocument` boolean - This event does not fire for same document navigations using window.history api and reference fragment navigations.
This property is always set to `false` for this event.
* `isMainFrame` boolean - True if the navigation is taking place in a main frame.
* `frame` WebFrameMain - The frame to be navigated.
* `initiator` WebFrameMain (optional) - The frame which initiated the
* `frame` WebFrameMain | null - The frame to be navigated.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `initiator` WebFrameMain | null (optional) - The frame which initiated the
navigation, which can be a parent frame (e.g. via `window.open` with a
frame's name), or null if the navigation was not initiated by a frame. This
can also be null if the initiating frame was deleted before the event was
@@ -275,8 +276,9 @@ Returns:
* `isSameDocument` boolean - This event does not fire for same document navigations using window.history api and reference fragment navigations.
This property is always set to `false` for this event.
* `isMainFrame` boolean - True if the navigation is taking place in a main frame.
* `frame` WebFrameMain - The frame to be navigated.
* `initiator` WebFrameMain (optional) - The frame which initiated the
* `frame` WebFrameMain | null - The frame to be navigated.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `initiator` WebFrameMain | null (optional) - The frame which initiated the
navigation, which can be a parent frame (e.g. via `window.open` with a
frame's name), or null if the navigation was not initiated by a frame. This
can also be null if the initiating frame was deleted before the event was
@@ -306,8 +308,9 @@ Returns:
document. Examples of same document navigations are reference fragment
navigations, pushState/replaceState, and same page history navigation.
* `isMainFrame` boolean - True if the navigation is taking place in a main frame.
* `frame` WebFrameMain - The frame to be navigated.
* `initiator` WebFrameMain (optional) - The frame which initiated the
* `frame` WebFrameMain | null - The frame to be navigated.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `initiator` WebFrameMain | null (optional) - The frame which initiated the
navigation, which can be a parent frame (e.g. via `window.open` with a
frame's name), or null if the navigation was not initiated by a frame. This
can also be null if the initiating frame was deleted before the event was
@@ -330,8 +333,9 @@ Returns:
document. Examples of same document navigations are reference fragment
navigations, pushState/replaceState, and same page history navigation.
* `isMainFrame` boolean - True if the navigation is taking place in a main frame.
* `frame` WebFrameMain - The frame to be navigated.
* `initiator` WebFrameMain (optional) - The frame which initiated the
* `frame` WebFrameMain | null - The frame to be navigated.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `initiator` WebFrameMain | null (optional) - The frame which initiated the
navigation, which can be a parent frame (e.g. via `window.open` with a
frame's name), or null if the navigation was not initiated by a frame. This
can also be null if the initiating frame was deleted before the event was
@@ -361,8 +365,9 @@ Returns:
document. Examples of same document navigations are reference fragment
navigations, pushState/replaceState, and same page history navigation.
* `isMainFrame` boolean - True if the navigation is taking place in a main frame.
* `frame` WebFrameMain - The frame to be navigated.
* `initiator` WebFrameMain (optional) - The frame which initiated the
* `frame` WebFrameMain | null - The frame to be navigated.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `initiator` WebFrameMain | null (optional) - The frame which initiated the
navigation, which can be a parent frame (e.g. via `window.open` with a
frame's name), or null if the navigation was not initiated by a frame. This
can also be null if the initiating frame was deleted before the event was
@@ -743,7 +748,8 @@ Returns:
* `params` Object
* `x` Integer - x coordinate.
* `y` Integer - y coordinate.
* `frame` WebFrameMain - Frame from which the context menu was invoked.
* `frame` WebFrameMain | null - Frame from which the context menu was invoked.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `linkURL` string - URL of the link that encloses the node the context menu
was invoked on.
* `linkText` string - Text associated with the link. May be an empty
@@ -869,12 +875,12 @@ app.whenReady().then(() => {
Returns:
* `event` Event
* `details` Event\<\>
* `texture` [OffscreenSharedTexture](structures/offscreen-shared-texture.md) (optional) _Experimental_ - The GPU shared texture of the frame, when `webPreferences.offscreen.useSharedTexture` is `true`.
* `dirtyRect` [Rectangle](structures/rectangle.md)
* `image` [NativeImage](native-image.md) - The image data of the whole frame.
Emitted when a new frame is generated. Only the dirty area is passed in the
buffer.
Emitted when a new frame is generated. Only the dirty area is passed in the buffer.
```js
const { BrowserWindow } = require('electron')
@@ -886,6 +892,33 @@ win.webContents.on('paint', (event, dirty, image) => {
win.loadURL('https://github.com')
```
When using shared texture (set `webPreferences.offscreen.useSharedTexture` to `true`) feature, you can pass the texture handle to external rendering pipeline without the overhead of
copying data between CPU and GPU memory, with Chromium's hardware acceleration support. This feature is helpful for high-performance rendering scenarios.
Only a limited number of textures can exist at the same time, so it's important that you call `texture.release()` as soon as you're done with the texture.
By managing the texture lifecycle by yourself, you can safely pass the `texture.textureInfo` to other processes through IPC.
```js
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({ webPreferences: { offscreen: { useSharedTexture: true } } })
win.webContents.on('paint', async (e, dirty, image) => {
if (e.texture) {
// By managing lifecycle yourself, you can handle the event in async handler or pass the `e.texture.textureInfo`
// to other processes (not `e.texture`, the `e.texture.release` function is not passable through IPC).
await new Promise(resolve => setTimeout(resolve, 50))
// You can send the native texture handle to native code for importing into your rendering pipeline.
// For example: https://github.com/electron/electron/tree/main/spec/fixtures/native-addon/osr-gpu
// importTextureHandle(dirty, e.texture.textureInfo)
// You must call `e.texture.release()` as soon as possible, before the underlying frame pool is drained.
e.texture.release()
}
})
win.loadURL('https://github.com')
```
#### Event: 'devtools-reload-page'
Emitted when the devtools window instructs the webContents to reload
@@ -983,7 +1016,8 @@ Returns:
* `event` Event
* `details` Object
* `frame` WebFrameMain
* `frame` WebFrameMain | null - The created frame.
May be `null` if accessed after the frame has either navigated or been destroyed.
Emitted when the [mainFrame](web-contents.md#contentsmainframe-readonly), an `<iframe>`, or a nested `<iframe>` is loaded within the page.

View File

@@ -97,6 +97,10 @@ this limitation.
Returns `boolean` - Whether the reload was initiated successfully. Only results in `false` when the frame has no history.
#### `frame.isDestroyed()`
Returns `boolean` - Whether the frame is destroyed.
#### `frame.send(channel, ...args)`
* `channel` string
@@ -231,6 +235,13 @@ A `string` representing the [visibility state](https://developer.mozilla.org/en-
See also how the [Page Visibility API](browser-window.md#page-visibility) is affected by other Electron APIs.
#### `frame.detached` _Readonly_
A `Boolean` representing whether the frame is detached from the frame tree. If a frame is accessed
while the corresponding page is running any [unload][] listeners, it may become detached as the
newly navigated page replaced it in the frame tree.
[SCA]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm
[`postMessage`]: https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
[`MessagePortMain`]: message-port-main.md
[unload]: https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event

View File

@@ -51,7 +51,8 @@ The following methods are available on instances of `WebRequest`:
* `method` string
* `webContentsId` Integer (optional)
* `webContents` WebContents (optional)
* `frame` WebFrameMain (optional)
* `frame` WebFrameMain | null (optional) - Requesting frame.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `resourceType` string - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
* `referrer` string
* `timestamp` Double
@@ -94,7 +95,8 @@ Some examples of valid `urls`:
* `method` string
* `webContentsId` Integer (optional)
* `webContents` WebContents (optional)
* `frame` WebFrameMain (optional)
* `frame` WebFrameMain | null (optional) - Requesting frame.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `resourceType` string - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
* `referrer` string
* `timestamp` Double
@@ -122,7 +124,8 @@ The `callback` has to be called with a `response` object.
* `method` string
* `webContentsId` Integer (optional)
* `webContents` WebContents (optional)
* `frame` WebFrameMain (optional)
* `frame` WebFrameMain | null (optional) - Requesting frame.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `resourceType` string - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
* `referrer` string
* `timestamp` Double
@@ -142,7 +145,8 @@ response are visible by the time this listener is fired.
* `method` string
* `webContentsId` Integer (optional)
* `webContents` WebContents (optional)
* `frame` WebFrameMain (optional)
* `frame` WebFrameMain | null (optional) - Requesting frame.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `resourceType` string - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
* `referrer` string
* `timestamp` Double
@@ -173,7 +177,8 @@ The `callback` has to be called with a `response` object.
* `method` string
* `webContentsId` Integer (optional)
* `webContents` WebContents (optional)
* `frame` WebFrameMain (optional)
* `frame` WebFrameMain | null (optional) - Requesting frame.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `resourceType` string - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
* `referrer` string
* `timestamp` Double
@@ -197,7 +202,8 @@ and response headers are available.
* `method` string
* `webContentsId` Integer (optional)
* `webContents` WebContents (optional)
* `frame` WebFrameMain (optional)
* `frame` WebFrameMain | null (optional) - Requesting frame.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `resourceType` string - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
* `referrer` string
* `timestamp` Double
@@ -222,7 +228,8 @@ redirect is about to occur.
* `method` string
* `webContentsId` Integer (optional)
* `webContents` WebContents (optional)
* `frame` WebFrameMain (optional)
* `frame` WebFrameMain | null (optional) - Requesting frame.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `resourceType` string - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
* `referrer` string
* `timestamp` Double
@@ -245,7 +252,8 @@ completed.
* `method` string
* `webContentsId` Integer (optional)
* `webContents` WebContents (optional)
* `frame` WebFrameMain (optional)
* `frame` WebFrameMain | null (optional) - Requesting frame.
May be `null` if accessed after the frame has either navigated or been destroyed.
* `resourceType` string - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
* `referrer` string
* `timestamp` Double

View File

@@ -14,6 +14,34 @@ This document uses the following convention to categorize breaking changes:
## Planned Breaking API Changes (33.0)
### Behavior Changed: frame properties may retrieve detached WebFrameMain instances or none at all
APIs which provide access to a `WebFrameMain` instance may return an instance
with `frame.detached` set to `true`, or possibly return `null`.
When a frame performs a cross-origin navigation, it enters into a detached state
in which it's no longer attached to the page. In this state, it may be running
[unload](https://developer.mozilla.org/en-US/docs/Web/API/Window/unload_event)
handlers prior to being deleted. In the event of an IPC sent during this state,
`frame.detached` will be set to `true` with the frame being destroyed shortly
thereafter.
When receiving an event, it's important to access WebFrameMain properties
immediately upon being received. Otherwise, it's not guaranteed to point to the
same webpage as when received. To avoid misaligned expectations, Electron will
return `null` in the case of late access where the webpage has changed.
```ts
ipcMain.on('unload-event', (event) => {
event.senderFrame; // ✅ accessed immediately
});
ipcMain.on('unload-event', async (event) => {
await crossOriginNavigationPromise;
event.senderFrame; // ❌ returns `null` due to late access
});
```
### Behavior Changed: custom protocol URL handling on Windows
Due to changes made in Chromium to support [Non-Special Scheme URLs](http://bit.ly/url-non-special), custom protocol URLs that use Windows file paths will no longer work correctly with the deprecated `protocol.registerFileProtocol` and the `baseURLForDataURL` property on `BrowserWindow.loadURL`, `WebContents.loadURL`, and `<webview>.loadURL`. `protocol.handle` will also not work with these types of URLs but this is not a change since it has always worked that way.
@@ -41,6 +69,10 @@ mainWindow.loadURL('data:text/html,<script src="loaded-from-dataurl.js"></script
mainWindow.loadURL('other://index.html')
```
### Behavior Changed: menu bar will be hidden during fullscreen on Windows
This brings the behavior to parity with Linux. Prior behavior: Menu bar is still visible during fullscreen on Windows. New behavior: Menu bar is hidden during fullscreen on Windows.
### Behavior Changed: `webContents` property on `login` on `app`
The `webContents` property in the `login` event from `app` will be `null`

View File

@@ -9,10 +9,11 @@ check out our [Electron Versioning](./electron-versioning.md) doc.
| Electron | Alpha | Beta | Stable | EOL | Chrome | Node | Supported |
| ------- | ----- | ------- | ------ | ------ | ---- | ---- | ---- |
| 33.0.0 | 2024-Aug-22 | 2024-Sep-18 | 2024-Oct-15 | 2025-Apr-29 | M130 | TBD | ✅ |
| 34.0.0 | 2024-Oct-17 | 2024-Nov-13 | 2024-Jan-07 | 2025-Jun-24 | M132 | TBD | ✅ |
| 33.0.0 | 2024-Aug-22 | 2024-Sep-18 | 2024-Oct-15 | 2025-Apr-29 | M130 | v20.18 | ✅ |
| 32.0.0 | 2024-Jun-14 | 2024-Jul-24 | 2024-Aug-20 | 2025-Mar-04 | M128 | v20.16 | ✅ |
| 31.0.0 | 2024-Apr-18 | 2024-May-15 | 2024-Jun-11 | 2025-Jan-07 | M126 | v20.14 | ✅ |
| 30.0.0 | 2024-Feb-22 | 2024-Mar-20 | 2024-Apr-16 | 2024-Oct-15 | M124 | v20.11 | |
| 30.0.0 | 2024-Feb-22 | 2024-Mar-20 | 2024-Apr-16 | 2024-Oct-15 | M124 | v20.11 | 🚫 |
| 29.0.0 | 2023-Dec-07 | 2024-Jan-24 | 2024-Feb-20 | 2024-Aug-20 | M122 | v20.9 | 🚫 |
| 28.0.0 | 2023-Oct-11 | 2023-Nov-06 | 2023-Dec-05 | 2024-Jun-11 | M120 | v18.18 | 🚫 |
| 27.0.0 | 2023-Aug-17 | 2023-Sep-13 | 2023-Oct-10 | 2024-Apr-16 | M118 | v18.17 | 🚫 |

View File

@@ -3,7 +3,8 @@
## Overview
Offscreen rendering lets you obtain the content of a `BrowserWindow` in a
bitmap, so it can be rendered anywhere, for example, on texture in a 3D scene.
bitmap or a shared GPU texture, so it can be rendered anywhere, for example,
on texture in a 3D scene.
The offscreen rendering in Electron uses a similar approach to that of the
[Chromium Embedded Framework](https://bitbucket.org/chromiumembedded/cef)
project.
@@ -17,22 +18,39 @@ the dirty area is passed to the `paint` event to be more efficient.
losses with no benefits.
* When nothing is happening on a webpage, no frames are generated.
* An offscreen window is always created as a
[Frameless Window](../tutorial/window-customization.md)..
[Frameless Window](../tutorial/window-customization.md).
### Rendering Modes
#### GPU accelerated
GPU accelerated rendering means that the GPU is used for composition. Because of
that, the frame has to be copied from the GPU which requires more resources,
thus this mode is slower than the Software output device. The benefit of this
mode is that WebGL and 3D CSS animations are supported.
GPU accelerated rendering means that the GPU is used for composition. The benefit
of this mode is that WebGL and 3D CSS animations are supported. There are two
different approaches depending on the `webPreferences.offscreen.useSharedTexture`
setting.
1. Use GPU shared texture
Used when `webPreferences.offscreen.useSharedTexture` is set to `true`.
This is an advanced feature requiring a native node module to work with your own code.
The frames are directly copied in GPU textures, thus this mode is very fast because
there's no CPU-GPU memory copies overhead, and you can directly import the shared
texture to your own rendering program.
2. Use CPU shared memory bitmap
Used when `webPreferences.offscreen.useSharedTexture` is set to `false` (default behavior).
The texture is accessible using the `NativeImage` API at the cost of performance.
The frame has to be copied from the GPU to the CPU bitmap which requires more system
resources, thus this mode is slower than the Software output device mode. But it supports
GPU related functionalities.
#### Software output device
This mode uses a software output device for rendering in the CPU, so the frame
generation is much faster. As a result, this mode is preferred over the GPU
accelerated one.
generation is faster than shared memory bitmap GPU accelerated mode.
To enable this mode, GPU acceleration has to be disabled by calling the
[`app.disableHardwareAcceleration()`][disablehardwareacceleration] API.

View File

@@ -108,6 +108,7 @@ auto_filenames = {
"docs/api/structures/navigation-entry.md",
"docs/api/structures/notification-action.md",
"docs/api/structures/notification-response.md",
"docs/api/structures/offscreen-shared-texture.md",
"docs/api/structures/open-external-permission-request.md",
"docs/api/structures/payment-discount.md",
"docs/api/structures/permission-request.md",

View File

@@ -468,6 +468,8 @@ filenames = {
"shell/browser/notifications/platform_notification_service.h",
"shell/browser/osr/osr_host_display_client.cc",
"shell/browser/osr/osr_host_display_client.h",
"shell/browser/osr/osr_paint_event.cc",
"shell/browser/osr/osr_paint_event.h",
"shell/browser/osr/osr_render_widget_host_view.cc",
"shell/browser/osr/osr_render_widget_host_view.h",
"shell/browser/osr/osr_video_consumer.cc",
@@ -611,6 +613,8 @@ filenames = {
"shell/common/gin_converters/net_converter.cc",
"shell/common/gin_converters/net_converter.h",
"shell/common/gin_converters/optional_converter.h",
"shell/common/gin_converters/osr_converter.cc",
"shell/common/gin_converters/osr_converter.h",
"shell/common/gin_converters/serial_port_info_converter.h",
"shell/common/gin_converters/std_converter.h",
"shell/common/gin_converters/time_converter.cc",
@@ -680,8 +684,8 @@ filenames = {
"shell/common/skia_util.cc",
"shell/common/skia_util.h",
"shell/common/thread_restrictions.h",
"shell/common/v8_value_serializer.cc",
"shell/common/v8_value_serializer.h",
"shell/common/v8_util.cc",
"shell/common/v8_util.h",
"shell/common/world_ids.h",
"shell/renderer/api/context_bridge/object_cache.cc",
"shell/renderer/api/context_bridge/object_cache.h",

View File

@@ -24,7 +24,6 @@ libcxx_headers = [
"//third_party/libc++/src/include/__algorithm/find_if.h",
"//third_party/libc++/src/include/__algorithm/find_if_not.h",
"//third_party/libc++/src/include/__algorithm/find_segment_if.h",
"//third_party/libc++/src/include/__algorithm/fold.h",
"//third_party/libc++/src/include/__algorithm/for_each.h",
"//third_party/libc++/src/include/__algorithm/for_each_n.h",
"//third_party/libc++/src/include/__algorithm/for_each_segment.h",
@@ -99,6 +98,7 @@ libcxx_headers = [
"//third_party/libc++/src/include/__algorithm/ranges_find_if.h",
"//third_party/libc++/src/include/__algorithm/ranges_find_if_not.h",
"//third_party/libc++/src/include/__algorithm/ranges_find_last.h",
"//third_party/libc++/src/include/__algorithm/ranges_fold.h",
"//third_party/libc++/src/include/__algorithm/ranges_for_each.h",
"//third_party/libc++/src/include/__algorithm/ranges_for_each_n.h",
"//third_party/libc++/src/include/__algorithm/ranges_generate.h",
@@ -538,6 +538,7 @@ libcxx_headers = [
"//third_party/libc++/src/include/__memory/allocator_arg_t.h",
"//third_party/libc++/src/include/__memory/allocator_destructor.h",
"//third_party/libc++/src/include/__memory/allocator_traits.h",
"//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",
@@ -558,9 +559,9 @@ libcxx_headers = [
"//third_party/libc++/src/include/__memory/temporary_buffer.h",
"//third_party/libc++/src/include/__memory/uninitialized_algorithms.h",
"//third_party/libc++/src/include/__memory/unique_ptr.h",
"//third_party/libc++/src/include/__memory/unique_temporary_buffer.h",
"//third_party/libc++/src/include/__memory/uses_allocator.h",
"//third_party/libc++/src/include/__memory/uses_allocator_construction.h",
"//third_party/libc++/src/include/__memory/voidify.h",
"//third_party/libc++/src/include/__memory_resource/memory_resource.h",
"//third_party/libc++/src/include/__memory_resource/monotonic_buffer_resource.h",
"//third_party/libc++/src/include/__memory_resource/polymorphic_allocator.h",
@@ -688,7 +689,6 @@ libcxx_headers = [
"//third_party/libc++/src/include/__ranges/views.h",
"//third_party/libc++/src/include/__ranges/zip_view.h",
"//third_party/libc++/src/include/__split_buffer",
"//third_party/libc++/src/include/__std_clang_module",
"//third_party/libc++/src/include/__std_mbstate_t.h",
"//third_party/libc++/src/include/__stop_token/atomic_unique_lock.h",
"//third_party/libc++/src/include/__stop_token/intrusive_list_view.h",
@@ -749,6 +749,7 @@ libcxx_headers = [
"//third_party/libc++/src/include/__type_traits/common_type.h",
"//third_party/libc++/src/include/__type_traits/conditional.h",
"//third_party/libc++/src/include/__type_traits/conjunction.h",
"//third_party/libc++/src/include/__type_traits/container_traits.h",
"//third_party/libc++/src/include/__type_traits/copy_cv.h",
"//third_party/libc++/src/include/__type_traits/copy_cvref.h",
"//third_party/libc++/src/include/__type_traits/datasizeof.h",
@@ -789,6 +790,7 @@ libcxx_headers = [
"//third_party/libc++/src/include/__type_traits/is_floating_point.h",
"//third_party/libc++/src/include/__type_traits/is_function.h",
"//third_party/libc++/src/include/__type_traits/is_fundamental.h",
"//third_party/libc++/src/include/__type_traits/is_implicit_lifetime.h",
"//third_party/libc++/src/include/__type_traits/is_implicitly_default_constructible.h",
"//third_party/libc++/src/include/__type_traits/is_integral.h",
"//third_party/libc++/src/include/__type_traits/is_literal_type.h",

View File

@@ -485,10 +485,6 @@ const addReplyToEvent = (event: Electron.IpcMainEvent) => {
const addSenderToEvent = (event: Electron.IpcMainEvent | Electron.IpcMainInvokeEvent, sender: Electron.WebContents) => {
event.sender = sender;
const { processId, frameId } = event;
Object.defineProperty(event, 'senderFrame', {
get: () => webFrameMain.fromId(processId, frameId)
});
};
const addReturnValueToEvent = (event: Electron.IpcMainEvent) => {
@@ -498,11 +494,6 @@ const addReturnValueToEvent = (event: Electron.IpcMainEvent) => {
});
};
const getWebFrameForEvent = (event: Electron.IpcMainEvent | Electron.IpcMainInvokeEvent) => {
if (!event.processId || !event.frameId) return null;
return webFrameMainBinding.fromIdOrNull(event.processId, event.frameId);
};
const commandLine = process._linkedBinding('electron_common_command_line');
const environment = process._linkedBinding('electron_common_environment');
@@ -580,6 +571,28 @@ 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', {
@@ -610,10 +623,9 @@ WebContents.prototype._init = function () {
} else {
addReplyToEvent(event);
this.emit('ipc-message', event, channel, ...args);
const maybeWebFrame = getWebFrameForEvent(event);
maybeWebFrame && maybeWebFrame.ipc.emit(channel, event, ...args);
ipc.emit(channel, event, ...args);
ipcMain.emit(channel, event, ...args);
for (const ipcEmitter of getIpcEmittersForEvent(event)) {
ipcEmitter?.emit(channel, event, ...args);
}
}
});
@@ -624,9 +636,8 @@ WebContents.prototype._init = function () {
console.error(`Error occurred in handler for '${channel}':`, error);
event._replyChannel.sendReply({ error: error.toString() });
};
const maybeWebFrame = getWebFrameForEvent(event);
const targets: (ElectronInternal.IpcMainInternal| undefined)[] = internal ? [ipcMainInternal] : [maybeWebFrame?.ipc, ipc, ipcMain];
const target = targets.find(target => target && (target as any)._invokeHandlers.has(channel));
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 {
@@ -646,24 +657,27 @@ WebContents.prototype._init = function () {
ipcMainInternal.emit(channel, event, ...args);
} else {
addReplyToEvent(event);
const maybeWebFrame = getWebFrameForEvent(event);
if (this.listenerCount('ipc-message-sync') === 0 && ipc.listenerCount(channel) === 0 && ipcMain.listenerCount(channel) === 0 && (!maybeWebFrame || maybeWebFrame.ipc.listenerCount(channel) === 0)) {
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);
maybeWebFrame && maybeWebFrame.ipc.emit(channel, event, ...args);
ipc.emit(channel, event, ...args);
ipcMain.emit(channel, event, ...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 maybeWebFrame = getWebFrameForEvent(event);
maybeWebFrame && maybeWebFrame.ipc.emit(channel, event, message);
ipc.emit(channel, event, message);
ipcMain.emit(channel, event, message);
const ipcEmitters = getIpcEmittersForEvent(event);
for (const ipcEmitter of ipcEmitters) {
ipcEmitter?.emit(channel, event, message);
}
});
this.on('render-process-gone', (event, details) => {

View File

@@ -168,8 +168,8 @@ const createGuest = function (embedder: Electron.WebContents, embedderFrameId: n
sendToEmbedder(IPC_MESSAGES.GUEST_VIEW_INTERNAL_DISPATCH_EVENT, 'will-frame-navigate', {
url: event.url,
isMainFrame: event.isMainFrame,
frameProcessId: event.frame.processId,
frameRoutingId: event.frame.routingId
frameProcessId: event.processId,
frameRoutingId: event.routingId
});
});

View File

@@ -6,11 +6,11 @@
"devDependencies": {
"@azure/storage-blob": "^12.25.0",
"@electron/asar": "^3.2.13",
"@electron/docs-parser": "^1.2.3",
"@electron/docs-parser": "^2.0.0",
"@electron/fiddle-core": "^1.3.4",
"@electron/github-app-auth": "^2.2.1",
"@electron/lint-roller": "^2.4.0",
"@electron/typescript-definitions": "^8.15.8",
"@electron/typescript-definitions": "^9.0.0",
"@octokit/rest": "^20.0.2",
"@primer/octicons": "^10.0.0",
"@types/minimist": "^1.2.5",
@@ -25,7 +25,6 @@
"buffer": "^6.0.3",
"chalk": "^4.1.0",
"check-for-leaks": "^1.2.1",
"dotenv-safe": "^4.0.4",
"dugite": "^2.7.1",
"eslint": "^8.57.1",
"eslint-config-standard": "^17.1.0",
@@ -82,7 +81,7 @@
"lint:ts-check-js-in-markdown": "lint-roller-markdown-ts-check --root docs \"**/*.md\" --ignore \"breaking-changes.md\"",
"lint:js-in-markdown": "lint-roller-markdown-standard --root docs \"**/*.md\"",
"lint:api-history": "lint-roller-markdown-api-history --root \"./docs/api/\" --schema \"./docs/api-history.schema.json\" --breaking-changes-file \"./docs/breaking-changes.md\" --check-placement --check-strings \"*.md\"",
"create-api-json": "node script/create-api-json.js",
"create-api-json": "node script/create-api-json.mjs",
"create-typescript-definitions": "npm run create-api-json && electron-typescript-definitions --api=electron-api.json && node spec/ts-smoke/runner.js",
"gn-typescript-definitions": "npm run create-typescript-definitions && shx cp electron.d.ts",
"pre-flight": "pre-flight",

View File

@@ -22,18 +22,18 @@ index 7033d9c9cc2a2e11c5d6b4bc8575b1f6d271170c..97107c022f6997c56581317feee230bd
// hash function when given a signature OID. To avoid unintended lax parsing
// of hash OIDs, this is no longer supported for lookup by OID or NID.
diff --git a/crypto/fipsmodule/digest/digests.c.inc b/crypto/fipsmodule/digest/digests.c.inc
index 216af52f7e7bb8df3bb3e9072b15a3edc15eaaf5..154aec02f93279a7a5dcb49b5410dfee9d4f0656 100644
index 9ead2c65c43f6f4899fa84d095c025b2b7c0bedc..1644bba5c1b87037b681372db89d93c2e637ebf2 100644
--- a/crypto/fipsmodule/digest/digests.c.inc
+++ b/crypto/fipsmodule/digest/digests.c.inc
@@ -61,6 +61,7 @@
@@ -60,6 +60,7 @@
#include <string.h>
#include <openssl/nid.h>
#include <openssl/sha.h>
+#include <openssl/ripemd.h>
#include "internal.h"
#include "../delocate.h"
@@ -216,4 +217,27 @@ DEFINE_METHOD_FUNCTION(EVP_MD, EVP_sha512_256) {
@@ -215,4 +216,27 @@ DEFINE_METHOD_FUNCTION(EVP_MD, EVP_sha512_256) {
out->ctx_size = sizeof(SHA512_CTX);
}

View File

@@ -20,10 +20,10 @@ index 7de8923518dbfb69fef62d7781f906b30cf62155..7a4310d6d8e85f07f0ae6c97726d909c
case ssl_open_record_error:
diff --git a/ssl/ssl_lib.cc b/ssl/ssl_lib.cc
index 2e7859994430054cbba3b8a0e452ee6027b419a2..7be28a2af48c71b63f9311ac7c9fd69b5a247317 100644
index c84c50710475f5e0ac8633bb97abafdca7fb324f..724d854540ced9b57a7fc804f61fff89f6f9fadf 100644
--- a/ssl/ssl_lib.cc
+++ b/ssl/ssl_lib.cc
@@ -1336,7 +1336,7 @@ int SSL_get_error(const SSL *ssl, int ret_code) {
@@ -1335,7 +1335,7 @@ int SSL_get_error(const SSL *ssl, int ret_code) {
}
if (ret_code == 0) {
@@ -32,7 +32,7 @@ index 2e7859994430054cbba3b8a0e452ee6027b419a2..7be28a2af48c71b63f9311ac7c9fd69b
return SSL_ERROR_ZERO_RETURN;
}
// An EOF was observed which violates the protocol, and the underlying
@@ -2718,13 +2718,7 @@ void *SSL_CTX_get_ex_data(const SSL_CTX *ctx, int idx) {
@@ -2707,13 +2707,7 @@ void *SSL_CTX_get_ex_data(const SSL_CTX *ctx, int idx) {
return CRYPTO_get_ex_data(&ctx->ex_data, idx);
}

View File

@@ -129,5 +129,6 @@ feat_enable_passing_exit_code_on_service_process_crash.patch
chore_remove_reference_to_chrome_browser_themes.patch
feat_enable_customizing_symbol_color_in_framecaptionbutton.patch
build_expose_webplugininfo_interface_to_electron.patch
osr_shared_texture_remove_keyed_mutex_on_win_dxgi.patch
feat_allow_usage_of_sccontentsharingpicker_on_supported_platforms.patch
feat_allow_-4_as_a_macos_screen_share_id.patch
chore_partial_revert_of.patch

View File

@@ -10,7 +10,7 @@ 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 d2be94d0d77ef798c888177cd4b882521335059b..8ed6f393da68f6d4ccb951f4d2c951e66e791b8f 100644
index 59ab3b746782c71f7d9401c13a7c866e6e7a823d..f95842da98d3a1d853633b53c745be9c394b25d5 100644
--- a/content/gpu/gpu_main.cc
+++ b/content/gpu/gpu_main.cc
@@ -258,6 +258,10 @@ int GpuMain(MainFunctionParams parameters) {
@@ -24,7 +24,7 @@ index d2be94d0d77ef798c888177cd4b882521335059b..8ed6f393da68f6d4ccb951f4d2c951e6
// 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
@@ -358,7 +362,6 @@ int GpuMain(MainFunctionParams parameters) {
@@ -368,7 +372,6 @@ int GpuMain(MainFunctionParams parameters) {
#endif
const bool dead_on_arrival = !init_success;

View File

@@ -23,10 +23,10 @@ index ad0092ef2e13853e4bb8b923481559a043b00ab7..1c2dfd23f18733e21312992877ae1499
int32_t world_id) {}
virtual void DidClearWindowObject() {}
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 724818204a4fa1578102c2fe1a8877735323595a..954fdbbdd4d07c32d6fe78632ca95efc29fadc3c 100644
index 21ecced6578552e30c1a01841053f679355b7729..288f7d591426e970bddd76bc8c4c4610ba36cd02 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -4791,6 +4791,12 @@ void RenderFrameImpl::DidCreateScriptContext(v8::Local<v8::Context> context,
@@ -4800,6 +4800,12 @@ void RenderFrameImpl::DidCreateScriptContext(v8::Local<v8::Context> context,
observer.DidCreateScriptContext(context, world_id);
}
@@ -40,10 +40,10 @@ index 724818204a4fa1578102c2fe1a8877735323595a..954fdbbdd4d07c32d6fe78632ca95efc
int world_id) {
for (auto& observer : observers_)
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index a62e8a85a38d2f131685693f83794a0e0a8ebce9..6260aaa6049bed6f23f83f31b833ec1b311a5a2a 100644
index 7cbbc9c3924f5c37e4d0665b2e3dd961aff227cb..f6bcf5b1dcace172256a49b4745b26cd8354427d 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -648,6 +648,8 @@ class CONTENT_EXPORT RenderFrameImpl
@@ -651,6 +651,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 a62e8a85a38d2f131685693f83794a0e0a8ebce9..6260aaa6049bed6f23f83f31b833ec1b
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 a8e13d160c1ec6944385d6272b7d44dc9f2f7c43..16a5fb0786f1a349f13428aedd1dc1a7bd983f7f 100644
index 26c92021ceb5dc5cead46f9dcb8c73dc502bcc8b..9a6984cffc8ff24e9c5caf9dae2b1b65595edb94 100644
--- a/third_party/blink/public/web/web_local_frame_client.h
+++ b/third_party/blink/public/web/web_local_frame_client.h
@@ -664,6 +664,9 @@ class BLINK_EXPORT WebLocalFrameClient {
@@ -665,6 +665,9 @@ class BLINK_EXPORT WebLocalFrameClient {
virtual void DidCreateScriptContext(v8::Local<v8::Context>,
int32_t world_id) {}
@@ -123,10 +123,10 @@ index b9aff56f283b10e899c2291f90615cbd3795454c..59f040cead445b02442404c787c1015c
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 821447d9510b7bffce71bb9cb797c95e526fe890..b1f4f8abdd2b4d1a669274f55588d6d936f0c691 100644
index 3756c89c0ae70a802506aeac66ea26093831d88f..0d65071421e21edd77de0d2463061e6a05049121 100644
--- a/third_party/blink/renderer/core/loader/empty_clients.h
+++ b/third_party/blink/renderer/core/loader/empty_clients.h
@@ -416,6 +416,8 @@ class CORE_EXPORT EmptyLocalFrameClient : public LocalFrameClient {
@@ -415,6 +415,8 @@ class CORE_EXPORT EmptyLocalFrameClient : public LocalFrameClient {
void DidCreateScriptContext(v8::Local<v8::Context>,
int32_t world_id) override {}

View File

@@ -39,7 +39,7 @@ index 62209cadaec7314d2d4ec3e63e1bc88394afa4a9..b035bfe1fd16fb6ca8be33bf446ff857
Local<External> val) {
return val.As<Value>();
diff --git a/gin/converter.h b/gin/converter.h
index 37b528f24785ee330b507e33bcdfaeb09a3ed594..76802f6d06b551f9fad0196fadae2aaf748a32cc 100644
index 828e59f4640e84ae9e4517b9ed9bc13b154fa9f2..c3d97c4e46fe47076299e475be7eec74cbc5783c 100644
--- a/gin/converter.h
+++ b/gin/converter.h
@@ -190,6 +190,15 @@ struct GIN_EXPORT Converter<v8::Local<v8::ArrayBuffer> > {

View File

@@ -8,10 +8,10 @@ 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 d215ab072131dcc6ec27e91410d5ac6dda054764..7684edaaf4e6798d18be9bb7e2349961e16c217d 100644
index 69fdf309dbb71e1d2a2d258d15df1ffde3b14841..57052ded8b7d52932b1a217c2f6cb97abd65c2a5 100644
--- a/ui/gtk/gtk_ui.cc
+++ b/ui/gtk/gtk_ui.cc
@@ -582,11 +582,12 @@ std::unique_ptr<ui::NavButtonProvider> GtkUi::CreateNavButtonProvider() {
@@ -584,11 +584,12 @@ std::unique_ptr<ui::NavButtonProvider> GtkUi::CreateNavButtonProvider() {
}
ui::WindowFrameProvider* GtkUi::GetWindowFrameProvider(bool solid_frame,
@@ -201,10 +201,10 @@ index 0800349bc18753e6a41a938c70213dd7dd123d0d..a1553e0cb1fac188fb2c74e10163c52d
private:
std::optional<gfx::FontRenderParams> default_font_render_params_;
diff --git a/ui/linux/linux_ui.h b/ui/linux/linux_ui.h
index 0a4c394b07a682d55639f37414331d68f175841c..45db96c165d61f551b344c7c852c083546508325 100644
index 1e59679d206462f72495d587740ac48ba0fa30df..090e770ac2f8e5231f2bdd11247cacaceb0c7ef6 100644
--- a/ui/linux/linux_ui.h
+++ b/ui/linux/linux_ui.h
@@ -307,7 +307,8 @@ class COMPONENT_EXPORT(LINUX_UI) LinuxUiTheme {
@@ -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,

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 2edb0b7c59bbe65d543c65738db0dd5a5b487c23..76d74f86ebdb2b7498cceba0d52728c05e0d9385 100644
index 28df49366e87d17c831b8f941e30faa19cf36626..d68c58edeb6abec865f6ad051e5da2c0bdc7981d 100644
--- a/ui/base/clipboard/scoped_clipboard_writer.cc
+++ b/ui/base/clipboard/scoped_clipboard_writer.cc
@@ -234,6 +234,16 @@ void ScopedClipboardWriter::WriteEncodedDataTransferEndpointForTesting(
@@ -237,6 +237,16 @@ void ScopedClipboardWriter::WriteEncodedDataTransferEndpointForTesting(
}
#endif // BUILDFLAG(IS_CHROMEOS_ASH)

View File

@@ -23,10 +23,10 @@ index e392efaf2e1ac3cfbef2d787ba40f0491b67f3cc..d45c7570484a7c1bfca25c860a1ddd2d
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 f130879c92319b525f5a521c3a083f479b485d2e..af42b58b78beff2349deadf68c51a3d4a310ac58 100644
index 52ce9d2c8c5e29b8dce26116c04dac087b83571d..1c9573708b1b27cffaac175740e1ed826c8115ec 100644
--- a/content/browser/renderer_host/render_view_host_impl.cc
+++ b/content/browser/renderer_host/render_view_host_impl.cc
@@ -753,6 +753,11 @@ void RenderViewHostImpl::SetBackgroundOpaque(bool opaque) {
@@ -746,6 +746,11 @@ void RenderViewHostImpl::SetBackgroundOpaque(bool opaque) {
GetWidget()->GetAssociatedFrameWidget()->SetBackgroundOpaque(opaque);
}
@@ -39,10 +39,10 @@ index f130879c92319b525f5a521c3a083f479b485d2e..af42b58b78beff2349deadf68c51a3d4
return is_active();
}
diff --git a/content/browser/renderer_host/render_view_host_impl.h b/content/browser/renderer_host/render_view_host_impl.h
index fe60e694fa35e5c46ce49dd9617ad33d73708912..df13884877ac87e414749dfec5db8ff83c1640ba 100644
index 961e55732d9c3aa5437e9cc6eca7a2c8d06bd335..f0fc8d303dc9de2419d5f5d769657faf98caa22a 100644
--- a/content/browser/renderer_host/render_view_host_impl.h
+++ b/content/browser/renderer_host/render_view_host_impl.h
@@ -139,6 +139,7 @@ class CONTENT_EXPORT RenderViewHostImpl
@@ -135,6 +135,7 @@ class CONTENT_EXPORT RenderViewHostImpl
void EnablePreferredSizeMode() override;
void WriteIntoTrace(perfetto::TracedProto<TraceProto> context) const override;
@@ -51,7 +51,7 @@ index fe60e694fa35e5c46ce49dd9617ad33d73708912..df13884877ac87e414749dfec5db8ff8
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 7d98ecd39b39378fb4f16a9abbdd18ad31f69610..c0b63ab4a860d995f2d000d3cbe46f768329e040 100644
index 5de852d1bab55804b521e128c48f3013281872f2..e8a74b48864e71597996ef13463a358acecb5b7e 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -585,8 +585,8 @@ void RenderWidgetHostViewAura::ShowImpl(PageVisibilityState page_visibility) {
@@ -116,10 +116,10 @@ index 746af7113a66d26de389237ebd90ec9e6a569cc3..f2f14184eafc919a303da6679a516bdd
// Visibility -----------------------------------------------------------
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc
index 8f3603538170a4e66a3f832b1882ed587383cfcc..3f3945f8aa35513050060df8d65059b89f9b3933 100644
index b5281ba47164159d10ca16b7641cfdc8a4bfbbef..734c055e1828d790f2abb80243bc10fa1f4d6e5e 100644
--- a/third_party/blink/renderer/core/exported/web_view_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_view_impl.cc
@@ -2449,6 +2449,10 @@ void WebViewImpl::SetPageLifecycleStateInternal(
@@ -2447,6 +2447,10 @@ void WebViewImpl::SetPageLifecycleStateInternal(
TRACE_EVENT2("navigation", "WebViewImpl::SetPageLifecycleStateInternal",
"old_state", old_state, "new_state", new_state);
@@ -130,7 +130,7 @@ index 8f3603538170a4e66a3f832b1882ed587383cfcc..3f3945f8aa35513050060df8d65059b8
bool storing_in_bfcache = new_state->is_in_back_forward_cache &&
!old_state->is_in_back_forward_cache;
bool restoring_from_bfcache = !new_state->is_in_back_forward_cache &&
@@ -3971,10 +3975,23 @@ PageScheduler* WebViewImpl::Scheduler() const {
@@ -3969,10 +3973,23 @@ PageScheduler* WebViewImpl::Scheduler() const {
return GetPage()->GetPageScheduler();
}
@@ -155,7 +155,7 @@ index 8f3603538170a4e66a3f832b1882ed587383cfcc..3f3945f8aa35513050060df8d65059b8
// Do not throttle if the page should be painting.
bool is_visible =
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.h b/third_party/blink/renderer/core/exported/web_view_impl.h
index 69318d9676ed633de315c8b2167679439a3874c1..8b9593d8bcaeed498257bd11eb1027fc78ba14bd 100644
index e85443e4492d31f043b50e4d6e51b1b36ee2c11e..cadc45e27f3d45fbf7a2edc713e1e1f5a714d01e 100644
--- a/third_party/blink/renderer/core/exported/web_view_impl.h
+++ b/third_party/blink/renderer/core/exported/web_view_impl.h
@@ -448,6 +448,7 @@ class CORE_EXPORT WebViewImpl final : public WebView,

View File

@@ -15,10 +15,10 @@ Refs changes in:
This patch reverts the changes to fix associated crashes in Electron.
diff --git a/third_party/blink/renderer/core/frame/frame.cc b/third_party/blink/renderer/core/frame/frame.cc
index 6210eae2b7c25dae24ad7087d3e0ac494dada375..934ee55c89c526ca8fa390a13c4dd79b1c85882f 100644
index 2f33ec660a975522c473ecd50e633b5edaca707f..65221a51927d9f44bd6adbad88fa1144f2db3add 100644
--- a/third_party/blink/renderer/core/frame/frame.cc
+++ b/third_party/blink/renderer/core/frame/frame.cc
@@ -131,14 +131,6 @@ bool Frame::Detach(FrameDetachType type) {
@@ -135,14 +135,6 @@ bool Frame::Detach(FrameDetachType type) {
DCHECK(!IsDetached());
@@ -33,7 +33,7 @@ index 6210eae2b7c25dae24ad7087d3e0ac494dada375..934ee55c89c526ca8fa390a13c4dd79b
if (type == FrameDetachType::kRemove) {
if (provisional_frame_) {
provisional_frame_->Detach(FrameDetachType::kRemove);
@@ -162,6 +154,14 @@ bool Frame::Detach(FrameDetachType type) {
@@ -166,6 +158,14 @@ bool Frame::Detach(FrameDetachType type) {
GetWindowProxyManager()->ClearForSwap();
}

View File

@@ -8,7 +8,7 @@ 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 5bbe83c8948a2db7b3ce558e010ff38632da25cb..2431cf4f9b34172758442d4c946e36883f414269 100644
index 5ba3046b83e881574470dc551745b855c785e05c..8d417c70a6e1b959353563d25ec6ff532ae34573 100644
--- a/base/trace_event/builtin_categories.h
+++ b/base/trace_event/builtin_categories.h
@@ -88,6 +88,7 @@

View File

@@ -11,10 +11,10 @@ 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 ad7aef003b233245201937c58be12fa3acb6b1a4..275eb74983e684310753dabcd453e5a244267ef6 100644
index f40c70d840845fdb6171ab6ba4cdcf92dbfd9965..7d762b40f44d8dc3cd1cb63c56a188f9bdced1fe 100644
--- a/chrome/BUILD.gn
+++ b/chrome/BUILD.gn
@@ -204,11 +204,16 @@ if (!is_android && !is_mac) {
@@ -200,11 +200,16 @@ if (!is_android && !is_mac) {
"common/crash_keys.h",
]
@@ -33,10 +33,10 @@ index ad7aef003b233245201937c58be12fa3acb6b1a4..275eb74983e684310753dabcd453e5a2
"//base",
"//build:branding_buildflags",
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index dd5c9db43d693fb9df7b5a0d661b4e8999956c49..2ea0ea1dd6f30e4e3c88ad803314bc5239545c1f 100644
index 46219ca4fbc09900414526a1e3b8980be79cd29c..bc4a61474cfd88f95485dcd80185b3be3db2b855 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -4488,7 +4488,7 @@ static_library("browser") {
@@ -4532,7 +4532,7 @@ static_library("browser") {
]
}
@@ -46,10 +46,10 @@ index dd5c9db43d693fb9df7b5a0d661b4e8999956c49..2ea0ea1dd6f30e4e3c88ad803314bc52
# than here in :chrome_dll.
deps += [ "//chrome:packed_resources_integrity_header" ]
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index c79b93b972e244cc3f7bcce039e24bbfe363ed04..2a3b25d5f2dcf80d2e4c462d6cba00583785ca8e 100644
index 04996332eac1c4a30db285ff875ebbec982b9055..353a5c6e4d9a7bdee57a3f2f6d0c563a34a66fa1 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -7173,9 +7173,12 @@ test("unit_tests") {
@@ -6723,9 +6723,12 @@ test("unit_tests") {
"//chrome/notification_helper",
]
@@ -63,7 +63,7 @@ index c79b93b972e244cc3f7bcce039e24bbfe363ed04..2a3b25d5f2dcf80d2e4c462d6cba0058
"//chrome//services/util_win:unit_tests",
"//chrome/app:chrome_dll_resources",
"//chrome/app:win_unit_tests",
@@ -8180,6 +8183,10 @@ test("unit_tests") {
@@ -7682,6 +7685,10 @@ test("unit_tests") {
"../browser/performance_manager/policies/background_tab_loading_policy_unittest.cc",
]
@@ -74,7 +74,7 @@ index c79b93b972e244cc3f7bcce039e24bbfe363ed04..2a3b25d5f2dcf80d2e4c462d6cba0058
sources += [
# The importer code is not used on Android.
"../common/importer/firefox_importer_utils_unittest.cc",
@@ -8236,7 +8243,6 @@ test("unit_tests") {
@@ -7734,7 +7741,6 @@ test("unit_tests") {
# Non-android deps for "unit_tests" target.
deps += [
"../browser/screen_ai:screen_ai_install_state",

View File

@@ -6,7 +6,7 @@ Subject: build: make libcxx_abi_unstable false for electron
https://nornagon.medium.com/a-libc-odyssey-973e51649063
diff --git a/buildtools/third_party/libc++/__config_site b/buildtools/third_party/libc++/__config_site
index 39cc404dda7ba408438deeaa5b65a01cdd696dcb..355a774a08fb6eb6fa435c4704e8ff9cb5a9f5bd 100644
index 260a4a9772a625ff02d66faffdd6937215402261..6e485725c967ca27d8ffe6b52c47dddd0d82bd7e 100644
--- a/buildtools/third_party/libc++/__config_site
+++ b/buildtools/third_party/libc++/__config_site
@@ -18,7 +18,9 @@

View File

@@ -20,7 +20,7 @@ index 17103061c4752e6fcac07413dbf574e0c6fd6d39..848be71fa6dc81a64b7274b31d461f9d
/win-cross/
reproxy.cfg
diff --git a/buildtools/reclient_cfgs/configure_reclient_cfgs.py b/buildtools/reclient_cfgs/configure_reclient_cfgs.py
index ba44640480e758d4ed8c9115497a2c09074918b4..837158cbbeb9120b7456aefc516eb3db6a38558c 100755
index e367bf89e2ebabe731dcf8714ea7a0fa3b15d50d..f5cf97c51b7cc1d07ca4effb04aa6d9a3ee52845 100755
--- a/buildtools/reclient_cfgs/configure_reclient_cfgs.py
+++ b/buildtools/reclient_cfgs/configure_reclient_cfgs.py
@@ -344,4 +344,13 @@ def main():

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 2fd13bfb778f31eff97ced7d5e41de30398b0a74..99a54798649942244c2ee51d1d10da8a8a637bfa 100644
index 98c865765c57d3387c9193df0fab73bae678983a..f737902ba9a5ff5b98940eca4a8e7c057c64b3bd 100644
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -8945,6 +8945,7 @@ void RenderFrameHostImpl::CreateNewWindow(
@@ -9115,6 +9115,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 2fd13bfb778f31eff97ced7d5e41de30398b0a74..99a54798649942244c2ee51d1d10da8a
&no_javascript_access);
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index c92c7744be6916e2baea1a882ff2a55fd155b580..ce228b4b4821feb71f0aaf66b8f356c5f8c5e9bb 100644
index f25b2cc6c138a4e201b6ec9f74f9cb5734195f24..c67be0c23f8b8d6f49ee82e1617c0f3cfee5c9ab 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -4793,6 +4793,12 @@ FrameTree* WebContentsImpl::CreateNewWindow(
@@ -4781,6 +4781,12 @@ FrameTree* WebContentsImpl::CreateNewWindow(
SetPartitionedPopinOpenerOnNewWindowIfNeeded(new_contents_impl, params,
opener);
@@ -37,7 +37,7 @@ index c92c7744be6916e2baea1a882ff2a55fd155b580..ce228b4b4821feb71f0aaf66b8f356c5
// 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
@@ -4834,12 +4840,6 @@ FrameTree* WebContentsImpl::CreateNewWindow(
@@ -4822,12 +4828,6 @@ FrameTree* WebContentsImpl::CreateNewWindow(
AddWebContentsDestructionObserver(new_contents_impl);
}
@@ -66,10 +66,10 @@ index 61ee456a1bfb842aefd8b644ff0ae630a698ef7c..cbf4276337139a81d46fb263bce8f5ee
// 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 49ae7aa8bb754b254b68518e4659ca07969573db..3e3f09049ae5e619e1be1aa0100698d920d01ce2 100644
index 21967547790cacc162d9b125e60ca24919b6b485..af7126cec088e5ece113dfbea19674421182abaa 100644
--- a/content/public/browser/content_browser_client.cc
+++ b/content/public/browser/content_browser_client.cc
@@ -754,6 +754,8 @@ bool ContentBrowserClient::CanCreateWindow(
@@ -765,6 +765,8 @@ bool ContentBrowserClient::CanCreateWindow(
const std::string& frame_name,
WindowOpenDisposition disposition,
const blink::mojom::WindowFeatures& features,
@@ -79,10 +79,10 @@ index 49ae7aa8bb754b254b68518e4659ca07969573db..3e3f09049ae5e619e1be1aa0100698d9
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 d99cccb1f99a8939b26b78b5e0f4449ff7cf314b..1005749408aaabfa2f2061e6af6112f74224a13a 100644
index 0f6781dc459e1072e1f538b2c60c21699b175852..ad94803577af27c84e247ace2137995a9ca886e0 100644
--- a/content/public/browser/content_browser_client.h
+++ b/content/public/browser/content_browser_client.h
@@ -194,6 +194,7 @@ class NetworkService;
@@ -196,6 +196,7 @@ class NetworkService;
class TrustedURLLoaderHeaderClient;
} // namespace mojom
struct ResourceRequest;
@@ -90,7 +90,7 @@ index d99cccb1f99a8939b26b78b5e0f4449ff7cf314b..1005749408aaabfa2f2061e6af6112f7
} // namespace network
namespace sandbox {
@@ -1301,6 +1302,8 @@ class CONTENT_EXPORT ContentBrowserClient {
@@ -1325,6 +1326,8 @@ class CONTENT_EXPORT ContentBrowserClient {
const std::string& frame_name,
WindowOpenDisposition disposition,
const blink::mojom::WindowFeatures& features,
@@ -100,7 +100,7 @@ index d99cccb1f99a8939b26b78b5e0f4449ff7cf314b..1005749408aaabfa2f2061e6af6112f7
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 d9af18d041a9726862b0b00285ccb55e0756daf0..dfb3c2401074c95c129290ec68149e1aab81d1cb 100644
index 784103345ed40cce8823048bcd6a48c722866f15..94202a07c8774a9ad62938506b22ea3f72916372 100644
--- a/content/public/browser/web_contents_delegate.cc
+++ b/content/public/browser/web_contents_delegate.cc
@@ -31,6 +31,17 @@ namespace content {
@@ -122,7 +122,7 @@ index d9af18d041a9726862b0b00285ccb55e0756daf0..dfb3c2401074c95c129290ec68149e1a
WebContents* source,
const OpenURLParams& params,
diff --git a/content/public/browser/web_contents_delegate.h b/content/public/browser/web_contents_delegate.h
index a080fb57f00c712eb8a3a9be669413e1082ce3b3..4826eea9747c4860d7f5b4b8d478e62cb48a675b 100644
index 19dff7ea3f62e5095ee03335978dac5d58cc1465..cbec82fe1fbc43c188ac9c0cf318ee49aa83c503 100644
--- a/content/public/browser/web_contents_delegate.h
+++ b/content/public/browser/web_contents_delegate.h
@@ -17,6 +17,7 @@
@@ -148,10 +148,10 @@ index a080fb57f00c712eb8a3a9be669413e1082ce3b3..4826eea9747c4860d7f5b4b8d478e62c
// 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 d5e16b9e780efac46e088b3ef226e4418a90aeaf..724818204a4fa1578102c2fe1a8877735323595a 100644
index 1fd3487243760d5a64bcd27f7022d8d0326bab65..21ecced6578552e30c1a01841053f679355b7729 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -6834,6 +6834,10 @@ WebView* RenderFrameImpl::CreateNewWindow(
@@ -6858,6 +6858,10 @@ WebView* RenderFrameImpl::CreateNewWindow(
request.HasUserGesture(), GetWebFrame()->IsAdFrame(),
GetWebFrame()->IsAdScriptInStack());
@@ -163,7 +163,7 @@ index d5e16b9e780efac46e088b3ef226e4418a90aeaf..724818204a4fa1578102c2fe1a887773
// 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 207c7298ffb187354d4a50dad421fe78f9bc066d..10bae4861c9cac9d2c9cedae8beca16f2c4c5f5a 100644
index b181f3d7429cdccfede3803b0659fc877d68e884..874753add7c176871fee299d32199ebfd9526c68 100644
--- a/content/web_test/browser/web_test_content_browser_client.cc
+++ b/content/web_test/browser/web_test_content_browser_client.cc
@@ -520,6 +520,8 @@ bool WebTestContentBrowserClient::CanCreateWindow(
@@ -176,7 +176,7 @@ index 207c7298ffb187354d4a50dad421fe78f9bc066d..10bae4861c9cac9d2c9cedae8beca16f
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 115b75966f53ee16f7886fc4152741727c7825c8..a1944f7de539f04f85fdb238ccf67e091f413ad3 100644
index 126fe65469971b91e763a5e7640649dff1a096c4..398feea2aec7ece17d62259320db9035edabeccd 100644
--- a/content/web_test/browser/web_test_content_browser_client.h
+++ b/content/web_test/browser/web_test_content_browser_client.h
@@ -92,6 +92,8 @@ class WebTestContentBrowserClient : public ShellContentBrowserClient {
@@ -210,10 +210,10 @@ index c576ace24e81cc877aa2595d40e0a13a7af9f6a2..210fb97d44c19c29af424cc7b9cb3169
} // 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 7b8158aff39c247e1729edb032833cdebf949acf..7d77f26106950deb1bae43ca7dcd7e0cde0ac6b5 100644
index de0c2fab54859901352196a2e8de48d4b49e5056..ff6abde24c6bc863f721902bb90f47288ff4b543 100644
--- a/third_party/blink/renderer/core/frame/local_dom_window.cc
+++ b/third_party/blink/renderer/core/frame/local_dom_window.cc
@@ -2248,6 +2248,8 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate,
@@ -2237,6 +2237,8 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate,
WebWindowFeatures window_features =
GetWindowFeaturesFromString(features, entered_window);

View File

@@ -18,7 +18,7 @@ index 9056030523807b8023493c0be9c9675da792852e..a1b949528e0a164c1bad98dbfbef282f
/googleurl
/gpu/gles2_conform_test
diff --git a/third_party/.gitignore b/third_party/.gitignore
index 138e8df6fbf1a35a7031006317765e45c03a2465..a84569622d6e5dee1f3466f5ee914df44a6fb8cc 100644
index 826765cd63fb17ff65f5603d013afddfbfea876b..dd68f82ef3513e6e76d627c627886bcd865938fa 100644
--- a/third_party/.gitignore
+++ b/third_party/.gitignore
@@ -45,7 +45,9 @@
@@ -31,7 +31,7 @@ index 138e8df6fbf1a35a7031006317765e45c03a2465..a84569622d6e5dee1f3466f5ee914df4
/espresso/lib/
/eyesfree/src
/fast_float/src
@@ -93,6 +95,7 @@
@@ -95,6 +97,7 @@
/mocha
/mockito/src
/nacl_sdk_binaries/
@@ -39,7 +39,7 @@ index 138e8df6fbf1a35a7031006317765e45c03a2465..a84569622d6e5dee1f3466f5ee914df4
/ninja
/node/*.tar.gz
/node/linux/
@@ -137,7 +140,7 @@
@@ -139,7 +142,7 @@
/spirv-cross/src
/spirv-headers/src
/spirv-tools/src

View File

@@ -7,10 +7,10 @@ With WCO, allow chromium to handle synthetic mouse events generated for touch
actions in the non-client caption area.
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
index 94366475b7f9d128d8208de44d4d8a11096b146b..5867a8ae7e416ddc29a8a251dc6271009f3409db 100644
index e2146f0a06fb70d16c48fe6e06d0615caf7d4619..f7d38f5d308eadc1dc27fd1dde706259b9197ad9 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
@@ -1281,6 +1281,10 @@ void DesktopWindowTreeHostWin::HandleHeadlessWindowBoundsChanged(
@@ -1282,6 +1282,10 @@ void DesktopWindowTreeHostWin::HandleHeadlessWindowBoundsChanged(
window()->SetProperty(aura::client::kHeadlessBoundsKey, bounds);
}
@@ -22,10 +22,10 @@ index 94366475b7f9d128d8208de44d4d8a11096b146b..5867a8ae7e416ddc29a8a251dc627100
DesktopWindowTreeHostWin::GetSingletonDesktopNativeCursorManager() {
return new DesktopNativeCursorManagerWin();
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h
index 286fcdf651131d231b07a52a53a1945c144c79ea..73d0729784e339b9abc20f7f22bccee1e0393c1c 100644
index 1e2c5bb35cc314d44dba85a9bafc5e55bf2b5f14..d110d0a2f005888c4450262fc1887cbf036b126d 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.h
@@ -264,6 +264,7 @@ class VIEWS_EXPORT DesktopWindowTreeHostWin
@@ -266,6 +266,7 @@ class VIEWS_EXPORT DesktopWindowTreeHostWin
void HandleWindowSizeUnchanged() override;
void HandleWindowScaleFactorChanged(float window_scale_factor) override;
void HandleHeadlessWindowBoundsChanged(const gfx::Rect& bounds) override;
@@ -34,10 +34,10 @@ index 286fcdf651131d231b07a52a53a1945c144c79ea..73d0729784e339b9abc20f7f22bccee1
Widget* GetWidget();
const Widget* GetWidget() const;
diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
index d29cdda6208576f1be3f5a6857fc068bb1397b23..24212831633eb3190db9a344f0fcbd5f25a959b4 100644
index de8284b0b75511d11dc3afed60efc75788d0a7d0..1d47f744b21b23afa48687e1bcc3a0f02f042a87 100644
--- a/ui/views/win/hwnd_message_handler.cc
+++ b/ui/views/win/hwnd_message_handler.cc
@@ -3123,15 +3123,19 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message,
@@ -3135,15 +3135,19 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message,
SetMsgHandled(FALSE);
// We must let Windows handle the caption buttons if it's drawing them, or
// they won't work.
@@ -60,7 +60,7 @@ index d29cdda6208576f1be3f5a6857fc068bb1397b23..24212831633eb3190db9a344f0fcbd5f
}
diff --git a/ui/views/win/hwnd_message_handler_delegate.h b/ui/views/win/hwnd_message_handler_delegate.h
index fde18715e33ee67f64740ebda7c641954360483c..cf1ea75f8e9dd1d95045736959c4f3ca1a27a1ab 100644
index 04dea68d74ea4f559db60f716c919e555db9ec80..2f8bd1a3c156bb6c04663c74b7279bb59926fc3d 100644
--- a/ui/views/win/hwnd_message_handler_delegate.h
+++ b/ui/views/win/hwnd_message_handler_delegate.h
@@ -255,6 +255,10 @@ class VIEWS_EXPORT HWNDMessageHandlerDelegate {

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 0de909d74fffc91b9e3afead3204f9c8234fa131..0eca9f62f2bda366c93fa1c57f30e707f228f2a5 100644
index 149838be725f2e09274421d087ce4494ecf4bc1d..17bdae284536b0445bf539651bd6e152a0cb5c6b 100644
--- a/base/threading/thread_restrictions.h
+++ b/base/threading/thread_restrictions.h
@@ -132,6 +132,7 @@ class KeyStorageLinux;
@@ -18,7 +18,7 @@ index 0de909d74fffc91b9e3afead3204f9c8234fa131..0eca9f62f2bda366c93fa1c57f30e707
class Profile;
class ProfileImpl;
class ScopedAllowBlockingForProfile;
@@ -282,6 +283,9 @@ class BackendImpl;
@@ -283,6 +284,9 @@ class BackendImpl;
class InFlightIO;
bool CleanupDirectorySync(const base::FilePath&);
} // namespace disk_cache
@@ -28,7 +28,7 @@ index 0de909d74fffc91b9e3afead3204f9c8234fa131..0eca9f62f2bda366c93fa1c57f30e707
namespace enterprise_connectors {
class LinuxKeyRotationCommand;
} // namespace enterprise_connectors
@@ -579,6 +583,7 @@ class BASE_EXPORT ScopedAllowBlocking {
@@ -583,6 +587,7 @@ class BASE_EXPORT ScopedAllowBlocking {
friend class ::DesktopNotificationBalloon;
friend class ::FirefoxProfileLock;
friend class ::GaiaConfig;
@@ -36,7 +36,7 @@ index 0de909d74fffc91b9e3afead3204f9c8234fa131..0eca9f62f2bda366c93fa1c57f30e707
friend class ::ProfileImpl;
friend class ::ScopedAllowBlockingForProfile;
friend class ::StartupTabProviderImpl;
@@ -619,6 +624,7 @@ class BASE_EXPORT ScopedAllowBlocking {
@@ -623,6 +628,7 @@ class BASE_EXPORT ScopedAllowBlocking {
friend class crosapi::LacrosThreadTypeDelegate;
friend class crypto::ScopedAllowBlockingForNSS; // http://crbug.com/59847
friend class drive::FakeDriveService;

View File

@@ -0,0 +1,29 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Charles Kerr <charles@charleskerr.com>
Date: Sat, 28 Sep 2024 17:33:51 -0500
Subject: chore: partial revert of
https://chromium-review.googlesource.com/c/chromium/src/+/5894233
The `CHECK_EQ()` being removed here is failing in the Chromium roll.
I experimented with backporting the `CHECK_EQ()` to `main` and it's
failing there as well, so some pre-existing behavior in Electron is
incompatible with this assertion.
I will file an upgrades-followup-task issue in Electron and try to
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 c1e2bf39aa70776b7e3b26ac78c82995cd376c58..c26d53d7555cbdaae5c167aabf49135afb667259 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -4707,9 +4707,6 @@ FrameTree* WebContentsImpl::CreateNewWindow(
bool renderer_started_hidden =
params.disposition == WindowOpenDisposition::NEW_BACKGROUND_TAB;
- // While some guest types do not have a guest SiteInstance, the ones that
- // don't all override WebContents creation above.
- CHECK_EQ(source_site_instance->IsGuest(), IsGuest());
bool is_guest = IsGuest();
// We usually create the new window in the same BrowsingInstance (group of

View File

@@ -14,7 +14,7 @@ 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 05814643c905cf14068de87d47914b5fd315264e..9af1584d933af2c72fc5f63fcca86cc001a81aad 100644
index ebe21d861ba3c7725f22d8c59738e49856c030ca..c2fc12ea2d5a4f7e6b33546d2a5e0bcbbe4e4c9d 100644
--- a/content/browser/site_instance_impl.cc
+++ b/content/browser/site_instance_impl.cc
@@ -210,7 +210,7 @@ scoped_refptr<SiteInstanceImpl> SiteInstanceImpl::CreateForGuest(

View File

@@ -9,7 +9,7 @@ Electron does not support Profiles, so this Profile::FromBrowserContext()
call is not needed and will not link. This change patches it out.
diff --git a/chrome/browser/pdf/chrome_pdf_stream_delegate.cc b/chrome/browser/pdf/chrome_pdf_stream_delegate.cc
index fd14a56bd5c09a76d5158a88a6b8bd3a1dd2fd8a..35ed7b0d20334856b1a76daafdf48e038eac5470 100644
index cb5777c6bbc9898eb8ab83437ba10c1e27dd935a..8659e167e934ae641e8b6500692a4c3e31e1cea2 100644
--- a/chrome/browser/pdf/chrome_pdf_stream_delegate.cc
+++ b/chrome/browser/pdf/chrome_pdf_stream_delegate.cc
@@ -45,6 +45,7 @@ namespace {

View File

@@ -8,11 +8,11 @@ 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 8444b1666261e46d1509e1941a6ba5cb10c91edd..48165243dfa7adc8d1d1a23ac339dcfd9e394e60 100644
index 17a24969e3d29080342eff6c288d8e840935b6c0..b703e7069956f8a50f106064c08cb865f676c9a8 100644
--- a/chrome/browser/profiles/profile_selections.cc
+++ b/chrome/browser/profiles/profile_selections.cc
@@ -13,6 +13,7 @@
#endif // BUILDFLAG(IS_CHROMEOS_ASH)
#endif // BUILDFLAG(IS_CHROMEOS)
bool AreKeyedServicesDisabledForProfileByDefault(const Profile* profile) {
+#if 0

View File

@@ -80,10 +80,10 @@ index b078a4a06c7b3f767e2e01f0bef2ba440f729620..0459568581a3073333ae6afabd3680f2
content::WebContents* source,
const content::OpenURLParams& params,
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
index e1ebde9b491c38cdf0bc6f574e78ac72aa997c66..368ea00086f77be69780b031b4c1ae1b982c2a55 100644
index e87612be406274364fd125e7e89e803aa21702d8..0964949aaaec52cbc4db124e345db458df57c040 100644
--- a/chrome/browser/ui/browser.cc
+++ b/chrome/browser/ui/browser.cc
@@ -2086,12 +2086,11 @@ bool Browser::IsWebContentsCreationOverridden(
@@ -2110,12 +2110,11 @@ bool Browser::IsWebContentsCreationOverridden(
content::SiteInstance* source_site_instance,
content::mojom::WindowContainerType window_container_type,
const GURL& opener_url,
@@ -99,10 +99,10 @@ index e1ebde9b491c38cdf0bc6f574e78ac72aa997c66..368ea00086f77be69780b031b4c1ae1b
WebContents* Browser::CreateCustomWebContents(
diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h
index 85b6845aa871c2e7ae553f245774006a7d9b9085..d78ba2797e5c532c2c54c476973e954cd1d4afa2 100644
index 86ea151056ca1e565f2c636aeb23fdff269e8e9a..244cabf50f63d061cba99cfefc2cf992e365b433 100644
--- a/chrome/browser/ui/browser.h
+++ b/chrome/browser/ui/browser.h
@@ -961,8 +961,7 @@ class Browser : public TabStripModelObserver,
@@ -970,8 +970,7 @@ class Browser : public TabStripModelObserver,
content::SiteInstance* source_site_instance,
content::mojom::WindowContainerType window_container_type,
const GURL& opener_url,
@@ -155,7 +155,7 @@ index 520674b0a5061057fa4b769ba5db93da81531d3f..b364e20f7bba27f3f167aa201e26c916
}
content::WebContents* CreateCustomWebContents(
diff --git a/components/embedder_support/android/delegate/web_contents_delegate_android.cc b/components/embedder_support/android/delegate/web_contents_delegate_android.cc
index e0f1e382cac773b9ad10bac1166eeea29aa57ffc..d54b9d27802a0f2f6fe269a0c8184b846b01df0d 100644
index bcc4841d7f953805f615b3fe5dd252216aa5e482..76a88284aa409b1458ce5f723a1445bd4b184573 100644
--- a/components/embedder_support/android/delegate/web_contents_delegate_android.cc
+++ b/components/embedder_support/android/delegate/web_contents_delegate_android.cc
@@ -183,14 +183,13 @@ bool WebContentsDelegateAndroid::IsWebContentsCreationOverridden(
@@ -176,7 +176,7 @@ index e0f1e382cac773b9ad10bac1166eeea29aa57ffc..d54b9d27802a0f2f6fe269a0c8184b84
java_gurl);
}
diff --git a/components/embedder_support/android/delegate/web_contents_delegate_android.h b/components/embedder_support/android/delegate/web_contents_delegate_android.h
index 704317b01ca869211b3da5e148b7445a39c10384..06f81b78911d8f3176bf0bede20bd287a8bed7a4 100644
index 6c89a03712b9449e1a7b0e38ed9d019b30029c15..50b324ef3f1163e462ad145e58b42bf3fd053a0a 100644
--- a/components/embedder_support/android/delegate/web_contents_delegate_android.h
+++ b/components/embedder_support/android/delegate/web_contents_delegate_android.h
@@ -82,8 +82,7 @@ class WebContentsDelegateAndroid : public content::WebContentsDelegate {
@@ -190,7 +190,7 @@ index 704317b01ca869211b3da5e148b7445a39c10384..06f81b78911d8f3176bf0bede20bd287
void SetContentsBounds(content::WebContents* source,
const gfx::Rect& bounds) override;
diff --git a/components/offline_pages/content/background_loader/background_loader_contents.cc b/components/offline_pages/content/background_loader/background_loader_contents.cc
index 9a9189517762d3fe1273dd49a9fbf66be7bce61b..b5015fa8de8dd3cbf8e366326575c7e8268e384c 100644
index 072e7d0dde701a8f2d1de2704c8a056363324390..9e5ace2b1f32d5e5c542439f5365f9d9458cbf37 100644
--- a/components/offline_pages/content/background_loader/background_loader_contents.cc
+++ b/components/offline_pages/content/background_loader/background_loader_contents.cc
@@ -85,8 +85,7 @@ bool BackgroundLoaderContents::IsWebContentsCreationOverridden(
@@ -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 ee02405b140ca863f4f0193d9fd5536db2bfead9..34b1e3d0ffe718cad54e03b69d0ed834ddf51695 100644
index 76d396192337ad3b3046c6eb80c14a7d4a54ac8c..cc2e4302ad121d658bb43af1014b6af42a62d47a 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -4691,8 +4691,7 @@ FrameTree* WebContentsImpl::CreateNewWindow(
@@ -4676,8 +4676,7 @@ FrameTree* WebContentsImpl::CreateNewWindow(
if (delegate_ && delegate_->IsWebContentsCreationOverridden(
source_site_instance, params.window_container_type,
@@ -232,7 +232,7 @@ index ee02405b140ca863f4f0193d9fd5536db2bfead9..34b1e3d0ffe718cad54e03b69d0ed834
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 dfb3c2401074c95c129290ec68149e1aab81d1cb..f843b336189849bf1a1dbe9b79afeb20cd21b5a6 100644
index 94202a07c8774a9ad62938506b22ea3f72916372..3069d732ed336fdaf8fed231bdd0407d0a1b2f75 100644
--- a/content/public/browser/web_contents_delegate.cc
+++ b/content/public/browser/web_contents_delegate.cc
@@ -152,8 +152,7 @@ bool WebContentsDelegate::IsWebContentsCreationOverridden(
@@ -246,7 +246,7 @@ index dfb3c2401074c95c129290ec68149e1aab81d1cb..f843b336189849bf1a1dbe9b79afeb20
}
diff --git a/content/public/browser/web_contents_delegate.h b/content/public/browser/web_contents_delegate.h
index 4826eea9747c4860d7f5b4b8d478e62cb48a675b..4bd15ce68cbf3c393b2b51883f19835f40a6e285 100644
index cbec82fe1fbc43c188ac9c0cf318ee49aa83c503..9daed06017f4a586e34f1e47dc85b9e6e5136097 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 {
@@ -259,11 +259,47 @@ index 4826eea9747c4860d7f5b4b8d478e62cb48a675b..4bd15ce68cbf3c393b2b51883f19835f
// Allow delegate to creates a custom WebContents when
// WebContents::CreateNewWindow() is called. This function is only called
diff --git a/extensions/browser/guest_view/app_view/app_view_guest.cc b/extensions/browser/guest_view/app_view/app_view_guest.cc
index 7168904a792aedeea0249a1bc38718da06a43c04..f69143c9554f74709edbb5ac80c50083860e8856 100644
--- a/extensions/browser/guest_view/app_view/app_view_guest.cc
+++ b/extensions/browser/guest_view/app_view/app_view_guest.cc
@@ -142,8 +142,7 @@ bool AppViewGuest::IsWebContentsCreationOverridden(
content::SiteInstance* source_site_instance,
content::mojom::WindowContainerType window_container_type,
const GURL& opener_url,
- const std::string& frame_name,
- const GURL& target_url) {
+ const content::mojom::CreateNewWindowParams& params) {
return true;
}
diff --git a/extensions/browser/guest_view/app_view/app_view_guest.h b/extensions/browser/guest_view/app_view/app_view_guest.h
index cb4241744b7c8ee4803de5ff5ccdefcae61cb02f..390ff1e3840f245b302aad460fc00cb4ea3e68b2 100644
--- a/extensions/browser/guest_view/app_view/app_view_guest.h
+++ b/extensions/browser/guest_view/app_view/app_view_guest.h
@@ -10,6 +10,7 @@
#include "base/containers/id_map.h"
#include "base/values.h"
#include "components/guest_view/browser/guest_view.h"
+#include "content/common/frame.mojom-shared.h"
#include "extensions/browser/guest_view/app_view/app_view_guest_delegate.h"
#include "extensions/browser/lazy_context_task_queue.h"
@@ -73,8 +74,7 @@ class AppViewGuest : public guest_view::GuestView<AppViewGuest> {
content::SiteInstance* source_site_instance,
content::mojom::WindowContainerType window_container_type,
const GURL& opener_url,
- const std::string& frame_name,
- const GURL& target_url) final;
+ const content::mojom::CreateNewWindowParams& params) final;
content::WebContents* CreateCustomWebContents(
content::RenderFrameHost* opener,
content::SiteInstance* source_site_instance,
diff --git a/extensions/browser/guest_view/extension_options/extension_options_guest.cc b/extensions/browser/guest_view/extension_options/extension_options_guest.cc
index cd248085caf2fd155a812f9500612feb2f97a810..4794dd8b3da398a476949367e1e70be00c9c37f0 100644
index 0eb1b7b778c139971601a14cef729be6fdf5c247..3491662f5eb6131e6d4a6cd525e6ba951ac91e00 100644
--- a/extensions/browser/guest_view/extension_options/extension_options_guest.cc
+++ b/extensions/browser/guest_view/extension_options/extension_options_guest.cc
@@ -219,8 +219,7 @@ bool ExtensionOptionsGuest::IsWebContentsCreationOverridden(
@@ -221,8 +221,7 @@ bool ExtensionOptionsGuest::IsWebContentsCreationOverridden(
content::SiteInstance* source_site_instance,
content::mojom::WindowContainerType window_container_type,
const GURL& opener_url,
@@ -288,7 +324,7 @@ index 2ee922084c82edb7e49ec1c894b517b88f56f54d..9c12c8e9bab2ac59b16cb4a638e099ca
content::RenderFrameHost* opener,
content::SiteInstance* source_site_instance,
diff --git a/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc b/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc
index fad08e33e16e4408a295c3c0b755e9e050f4b48f..23fb05dac66b271ad465d548167fbd6b0bf355d9 100644
index 6c8040666b5203f9d2cd1f87cb730680483942c3..5a48581859f36a2c2a3925d44fcae0b07096bae4 100644
--- a/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc
+++ b/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc
@@ -389,8 +389,7 @@ bool MimeHandlerViewGuest::IsWebContentsCreationOverridden(
@@ -316,7 +352,7 @@ index f0b71aba6dfb4682ce2e5b4c834b2526dcacb75c..d4b1857ca468ff97914d91d0c31298b7
content::RenderFrameHost* opener,
content::SiteInstance* source_site_instance,
diff --git a/fuchsia_web/webengine/browser/frame_impl.cc b/fuchsia_web/webengine/browser/frame_impl.cc
index c1554b5718dad223a1e226a8dba280fda2e4bbbb..9fda93477a09adb12a3cd2b53f21e3ffc96930de 100644
index 2052ea2d325cf7b6c4c831d92fc493528746d343..04949a2c52feef18f21e10e8f4c5dcea38042b5e 100644
--- a/fuchsia_web/webengine/browser/frame_impl.cc
+++ b/fuchsia_web/webengine/browser/frame_impl.cc
@@ -574,8 +574,7 @@ bool FrameImpl::IsWebContentsCreationOverridden(

View File

@@ -11,10 +11,10 @@ not need this dependency.
refs https://chromium-review.googlesource.com/c/chromium/src/+/5573603
diff --git a/chrome/browser/ui/color/BUILD.gn b/chrome/browser/ui/color/BUILD.gn
index aa06f30703313055734cbd8e73be651a493aeae1..0cdeec06800d043ac2da933420f22d6d750691d3 100644
index 02d3457d65c4edf2cdbb3c37d90813b496f7945b..ce9e3a87ad650ad99808dea6e292f340fb58aa36 100644
--- a/chrome/browser/ui/color/BUILD.gn
+++ b/chrome/browser/ui/color/BUILD.gn
@@ -86,9 +86,6 @@ source_set("mixers") {
@@ -87,9 +87,6 @@ source_set("mixers") {
]
}

View File

@@ -9,7 +9,7 @@ rate-limiting, compression and global annotations.
This should be upstreamed.
diff --git a/components/crash/core/app/crash_reporter_client.cc b/components/crash/core/app/crash_reporter_client.cc
index 0e9fe8892af82d77f8530ead358e820d9b6b3912..43465dd285a99c40f3bc4dca19945fb08060160b 100644
index 4abce141b758eabd8a16f1cccb0016d5f10c0cae..048a97c807b4249479653cfb70942ec16264d0ee 100644
--- a/components/crash/core/app/crash_reporter_client.cc
+++ b/components/crash/core/app/crash_reporter_client.cc
@@ -145,6 +145,17 @@ bool CrashReporterClient::ReportingIsEnforcedByPolicy(bool* breakpad_enabled) {

View File

@@ -95,10 +95,10 @@ index f482ce44b4339e0cf2a57a6a4f9db4d1be5fa178..49604d211b4d406fd59e7da3c4a648dd
friend class ContentClientCreator;
friend class ContentClientInitializer;
diff --git a/gin/v8_initializer.cc b/gin/v8_initializer.cc
index 3ce0a1b3072ac202687e37632217bae97fee9f68..cba2893cf771b2b77c19d8f644680cb8750abb27 100644
index 4805f361cafb7854bd9b4f1c29a15417c88665e4..eb4382c022eb02ee6d73a2712c1b92a66940d593 100644
--- a/gin/v8_initializer.cc
+++ b/gin/v8_initializer.cc
@@ -603,8 +603,7 @@ void V8Initializer::GetV8ExternalSnapshotData(const char** snapshot_data_out,
@@ -662,8 +662,7 @@ void V8Initializer::GetV8ExternalSnapshotData(const char** snapshot_data_out,
#if defined(V8_USE_EXTERNAL_STARTUP_DATA)
@@ -108,7 +108,7 @@ index 3ce0a1b3072ac202687e37632217bae97fee9f68..cba2893cf771b2b77c19d8f644680cb8
if (g_mapped_snapshot) {
// TODO(crbug.com/40558459): Confirm not loading different type of snapshot
// files in a process.
@@ -613,10 +612,17 @@ void V8Initializer::LoadV8Snapshot(V8SnapshotFileType snapshot_file_type) {
@@ -672,10 +671,17 @@ void V8Initializer::LoadV8Snapshot(V8SnapshotFileType snapshot_file_type) {
base::MemoryMappedFile::Region file_region;
base::File file =
@@ -128,7 +128,7 @@ index 3ce0a1b3072ac202687e37632217bae97fee9f68..cba2893cf771b2b77c19d8f644680cb8
void V8Initializer::LoadV8SnapshotFromFile(
base::File snapshot_file,
diff --git a/gin/v8_initializer.h b/gin/v8_initializer.h
index dd9899c3e0dbadfc0074ffce87d51193e1c963cb..cd4bfbbb3b01603220b67dd3201704c5a33d381e 100644
index cd7b010978f3f595263761e0692945667b9b3f89..328315aaa34fdd24d7b3dfe5373ec366cceaa124 100644
--- a/gin/v8_initializer.h
+++ b/gin/v8_initializer.h
@@ -7,6 +7,8 @@

View File

@@ -8,10 +8,10 @@ Allow registering custom protocols to handle service worker main script fetching
Refs https://bugs.chromium.org/p/chromium/issues/detail?id=996511
diff --git a/content/browser/service_worker/service_worker_context_wrapper.cc b/content/browser/service_worker/service_worker_context_wrapper.cc
index 5b9d98641157e6e624fd08dd1ebafe06636856bc..cca0b314bf6555aaede788b275e44ee78b41cca6 100644
index 8127b7951b2070d49ee99cd93199454355ab925d..2056a3408e6449920d77a9c1659d2732e736e429 100644
--- a/content/browser/service_worker/service_worker_context_wrapper.cc
+++ b/content/browser/service_worker/service_worker_context_wrapper.cc
@@ -1976,6 +1976,26 @@ ServiceWorkerContextWrapper::GetLoaderFactoryForBrowserInitiatedRequest(
@@ -1959,6 +1959,26 @@ ServiceWorkerContextWrapper::GetLoaderFactoryForBrowserInitiatedRequest(
loader_factory_bundle_info =
context()->loader_factory_bundle_for_update_check()->Clone();
@@ -38,7 +38,7 @@ index 5b9d98641157e6e624fd08dd1ebafe06636856bc..cca0b314bf6555aaede788b275e44ee7
if (auto* config = content::WebUIConfigMap::GetInstance().GetConfig(
browser_context(), scope)) {
// If this is a Service Worker for a WebUI, the WebUI's URLDataSource
@@ -1995,9 +2015,7 @@ ServiceWorkerContextWrapper::GetLoaderFactoryForBrowserInitiatedRequest(
@@ -1978,9 +1998,7 @@ ServiceWorkerContextWrapper::GetLoaderFactoryForBrowserInitiatedRequest(
features::kEnableServiceWorkersForChromeScheme) &&
scope.scheme_piece() == kChromeUIScheme) {
config->RegisterURLDataSource(browser_context());
@@ -49,7 +49,7 @@ index 5b9d98641157e6e624fd08dd1ebafe06636856bc..cca0b314bf6555aaede788b275e44ee7
.emplace(kChromeUIScheme, CreateWebUIServiceWorkerLoaderFactory(
browser_context(), kChromeUIScheme,
base::flat_set<std::string>()));
@@ -2005,9 +2023,7 @@ ServiceWorkerContextWrapper::GetLoaderFactoryForBrowserInitiatedRequest(
@@ -1988,9 +2006,7 @@ ServiceWorkerContextWrapper::GetLoaderFactoryForBrowserInitiatedRequest(
features::kEnableServiceWorkersForChromeUntrusted) &&
scope.scheme_piece() == kChromeUIUntrustedScheme) {
config->RegisterURLDataSource(browser_context());

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 803a812ca36a45647bb4379a323adf395cc5bb38..3b7ea3b8fb245b37496d5ab9720ee488026dd39c 100644
index 69eb2ad17a15a17ca274a3a3128de9b841061a95..8eb231302c35ac6de1bfdfd53019287723cf40ed 100644
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
@@ -558,7 +558,11 @@
@@ -559,7 +559,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 862b92324440bc77ce19b95bc16d4d3e4a24fe0f..bcff571010a7399dbfd74d484edd7db437b3e747 100644
index dea5f16df0264348d6762aa41605e7f3c22e3f84..a311ddb37031c5cba1859bb31683531de0fcd4af 100644
--- a/content/renderer/render_process_impl.cc
+++ b/content/renderer/render_process_impl.cc
@@ -209,6 +209,9 @@ RenderProcessImpl::RenderProcessImpl()
@@ -200,6 +200,9 @@ RenderProcessImpl::RenderProcessImpl()
v8::V8::SetFlagsFromString(kSABPerContextFlag, sizeof(kSABPerContextFlag));
}

View File

@@ -6,24 +6,25 @@ 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 5754c2bd330537ac0dde9fe71e263c1ee6f06e53..bf2dd48ecc9f246330a42d21d2450df7aa20928b 100644
index 5a521aa5a61172954ad09a49c44a22633b1471ac..ce714ed077d9e5a22b5de926408fbe6d35cc04d6 100644
--- a/content/browser/renderer_host/render_widget_host_impl.cc
+++ b/content/browser/renderer_host/render_widget_host_impl.cc
@@ -789,6 +789,9 @@ void RenderWidgetHostImpl::WasHidden() {
@@ -789,6 +789,10 @@ void RenderWidgetHostImpl::WasHidden() {
return;
}
+ if (disable_hidden_)
+ if (disable_hidden_) {
+ return;
+ }
+
RejectPointerLockOrUnlockIfNecessary(
blink::mojom::PointerLockResult::kWrongDocument);
// 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)) {
diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h
index 3d03709303e22489edf7c8cf61a611c0832ea26e..469b91d7bd3f46fb23645a9d5a0f1f9e5519ba59 100644
index b8dadc4cca4621e991cdc874e0663cedd3f48d74..34ceb4c605a767e1eaf5434a68132f98b0a4056c 100644
--- a/content/browser/renderer_host/render_widget_host_impl.h
+++ b/content/browser/renderer_host/render_widget_host_impl.h
@@ -1008,6 +1008,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl
@@ -1018,6 +1018,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl
// Requests a commit and forced redraw in the renderer compositor.
void ForceRedrawForTesting();
@@ -34,7 +35,7 @@ index 3d03709303e22489edf7c8cf61a611c0832ea26e..469b91d7bd3f46fb23645a9d5a0f1f9e
// |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 8d972bcdd27ee4f2c58e7c2afa48d09b17834484..7d98ecd39b39378fb4f16a9abbdd18ad31f69610 100644
index 55548735a1d1072a4d5d3c463a759c0ebf243af9..5de852d1bab55804b521e128c48f3013281872f2 100644
--- a/content/browser/renderer_host/render_widget_host_view_aura.cc
+++ b/content/browser/renderer_host/render_widget_host_view_aura.cc
@@ -649,7 +649,7 @@ void RenderWidgetHostViewAura::HideImpl() {

View File

@@ -24,10 +24,10 @@ This patch temporarily disables the metrics so we can have green CI, and we
should continue seeking for a real fix.
diff --git a/content/browser/renderer_host/navigator.cc b/content/browser/renderer_host/navigator.cc
index d52afd26b89e97c8324c3692be94c4643bb8d4a6..67525a7fc62e234621eca62f5df49d5d817482e9 100644
index 2155c1e758d8a7aa0722e2608d62d91b20d1a280..e85bdfe6448d52502d331e93a86d285e33bbf819 100644
--- a/content/browser/renderer_host/navigator.cc
+++ b/content/browser/renderer_host/navigator.cc
@@ -1395,6 +1395,7 @@ void Navigator::RecordNavigationMetrics(
@@ -1422,6 +1422,7 @@ void Navigator::RecordNavigationMetrics(
.InMilliseconds());
}
@@ -35,7 +35,7 @@ index d52afd26b89e97c8324c3692be94c4643bb8d4a6..67525a7fc62e234621eca62f5df49d5d
// If this is a same-process navigation and we have timestamps for unload
// durations, fill those metrics out as well.
if (params.unload_start && params.unload_end &&
@@ -1444,6 +1445,7 @@ void Navigator::RecordNavigationMetrics(
@@ -1471,6 +1472,7 @@ void Navigator::RecordNavigationMetrics(
first_before_unload_start_time)
.InMilliseconds());
}

View File

@@ -6,10 +6,10 @@ Subject: feat: enable setting aspect ratio to 0
Make SetAspectRatio accept 0 as valid input, which would reset to null.
diff --git a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
index 66e1c0fa5058166d4697589c6099a1717cfb7f32..94366475b7f9d128d8208de44d4d8a11096b146b 100644
index 6cd2eace306cb6b3b8d39d968f898c6468d00eea..e2146f0a06fb70d16c48fe6e06d0615caf7d4619 100644
--- a/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
+++ b/ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc
@@ -582,7 +582,7 @@ void DesktopWindowTreeHostWin::SetOpacity(float opacity) {
@@ -583,7 +583,7 @@ void DesktopWindowTreeHostWin::SetOpacity(float opacity) {
void DesktopWindowTreeHostWin::SetAspectRatio(
const gfx::SizeF& aspect_ratio,
const gfx::Size& excluded_margin) {
@@ -19,10 +19,10 @@ index 66e1c0fa5058166d4697589c6099a1717cfb7f32..94366475b7f9d128d8208de44d4d8a11
excluded_margin);
}
diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
index cc7e087c50ea19e42f745c6b279915777c0283dc..9d5b88a7e9660e1c63b8d5751567194a10fcdf53 100644
index 328cf96499fa2ec23259339cffce467de142acc6..466738cc252dceae3fcaa7c44aaa29ff945386ef 100644
--- a/ui/views/win/hwnd_message_handler.cc
+++ b/ui/views/win/hwnd_message_handler.cc
@@ -960,8 +960,11 @@ void HWNDMessageHandler::SetFullscreen(bool fullscreen,
@@ -962,8 +962,11 @@ void HWNDMessageHandler::SetFullscreen(bool fullscreen,
void HWNDMessageHandler::SetAspectRatio(float aspect_ratio,
const gfx::Size& excluded_margin) {

View File

@@ -21,7 +21,7 @@ index c34f34146d0aab681318b64ac33081bdc21ce7d6..11cdf6c34d8f79fcf293f59785e586dc
ThreadIsolatedAllocator* GetThreadIsolatedAllocator() override;
#endif
diff --git a/gin/v8_platform.cc b/gin/v8_platform.cc
index 6951129e12ec4d9d6be55e5e4b69b900b8c82b84..6e99a4fe5b2924a62dbf7482ae3f222f0511c362 100644
index fa799a4cc32950ce03c154bc7791341d96a17f67..b8ec81b79b6129a7e26a2ffecf535fdedea8ed6c 100644
--- a/gin/v8_platform.cc
+++ b/gin/v8_platform.cc
@@ -204,6 +204,10 @@ ThreadIsolatedAllocator* V8Platform::GetThreadIsolatedAllocator() {

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 0a3b1be5b1b59aada004cc9754efd28ddb414e08..952f8fb5443df6b9c5f88b1375f8888772e2f457 100644
index 43fe136e619f0fd4473f44bfb48247d532550b11..a121455608abc4fa6405d61fe0fa90081432cde2 100644
--- a/services/network/network_context.cc
+++ b/services/network/network_context.cc
@@ -1745,6 +1745,13 @@ void NetworkContext::SetNetworkConditions(
@@ -1746,6 +1746,13 @@ void NetworkContext::SetNetworkConditions(
std::move(network_conditions));
}
@@ -51,10 +51,10 @@ index 0a3b1be5b1b59aada004cc9754efd28ddb414e08..952f8fb5443df6b9c5f88b1375f88887
// 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 78a76afc774a1a4c61d3010d6b03fd2879ccd39a..860b979e1bb89f7834344159cbe2be5b31186ff7 100644
index a898e09ac0c989952fe2032ca4ea6ddfdacc59e6..46f3936d93277293f2b876759cb1e3a2661e4c44 100644
--- a/services/network/network_context.h
+++ b/services/network/network_context.h
@@ -317,6 +317,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
@@ -316,6 +316,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
void CloseIdleConnections(CloseIdleConnectionsCallback callback) override;
void SetNetworkConditions(const base::UnguessableToken& throttling_profile_id,
mojom::NetworkConditionsPtr conditions) override;
@@ -63,10 +63,10 @@ index 78a76afc774a1a4c61d3010d6b03fd2879ccd39a..860b979e1bb89f7834344159cbe2be5b
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 c399fad53c56619d415f1ee36765953de5f1c84a..57f472dd92ac29a487e8f7894981425148671b12 100644
index 362d2c79a4f8bda162f87841ba0629e88347bf14..1d26180ac8bd6bfff98d4dddabd44f50911073e1 100644
--- a/services/network/public/mojom/network_context.mojom
+++ b/services/network/public/mojom/network_context.mojom
@@ -1304,6 +1304,9 @@ interface NetworkContext {
@@ -1287,6 +1287,9 @@ interface NetworkContext {
SetNetworkConditions(mojo_base.mojom.UnguessableToken throttling_profile_id,
NetworkConditions? conditions);

View File

@@ -12,7 +12,7 @@ Ideally we could add an embedder observer pattern here but that can be
done in future work.
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc
index 3f3945f8aa35513050060df8d65059b89f9b3933..282ae9ec41d68e8f0fad2bb735475241d3515ea4 100644
index 734c055e1828d790f2abb80243bc10fa1f4d6e5e..0aa8550641a1e914bf4b6e377267888db8aac796 100644
--- a/third_party/blink/renderer/core/exported/web_view_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_view_impl.cc
@@ -169,6 +169,7 @@
@@ -23,7 +23,7 @@ index 3f3945f8aa35513050060df8d65059b89f9b3933..282ae9ec41d68e8f0fad2bb735475241
#include "third_party/blink/renderer/platform/graphics/image.h"
#include "third_party/blink/renderer/platform/graphics/paint/cull_rect.h"
#include "third_party/blink/renderer/platform/graphics/paint/paint_record_builder.h"
@@ -1847,6 +1848,7 @@ void WebView::ApplyWebPreferences(const web_pref::WebPreferences& prefs,
@@ -1845,6 +1846,7 @@ void WebView::ApplyWebPreferences(const web_pref::WebPreferences& prefs,
#if BUILDFLAG(IS_MAC)
web_view_impl->SetMaximumLegibleScale(
prefs.default_maximum_page_scale_factor);

View File

@@ -63,7 +63,7 @@ index 31f5b160e4cd755cfb56a62b04261ee1bee80277..8dbc5ac458481d2f805f90101069f02a
#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 f8cf2fb4ab66dae92b80c17cdda8b984fe4807c7..1a5d5323c0b37171b61f1fb2445dc18e1738f4ba 100644
index 72cdfe2c4a0258dbd575f536ca42fa1d53f44988..092f60adb1080bea16ac24c53d57539d1c308b3a 100644
--- a/chrome/browser/process_singleton_posix.cc
+++ b/chrome/browser/process_singleton_posix.cc
@@ -615,6 +615,7 @@ class ProcessSingleton::LinuxWatcher
@@ -178,7 +178,7 @@ index f8cf2fb4ab66dae92b80c17cdda8b984fe4807c7..1a5d5323c0b37171b61f1fb2445dc18e
if (!WriteToSocket(socket.fd(), to_send.data(), to_send.length())) {
// Try to kill the other process, because it might have been dead.
diff --git a/chrome/browser/process_singleton_win.cc b/chrome/browser/process_singleton_win.cc
index a0ef81d42bd9a58786b00a1601625e6822bc26f6..27da17eed8fcd69b32dd1f409f6a2efd46a40d88 100644
index 27216805188c77aa45b478e66b04a2d45f92fba6..9646e314af0de3d4a7ccf1c54a339b703be125c2 100644
--- a/chrome/browser/process_singleton_win.cc
+++ b/chrome/browser/process_singleton_win.cc
@@ -81,10 +81,12 @@ BOOL CALLBACK BrowserWindowEnumeration(HWND window, LPARAM param) {

View File

@@ -13,10 +13,10 @@ uses internally for things like menus and devtools.
We can remove this patch once it has in some shape been upstreamed.
diff --git a/ui/native_theme/native_theme.cc b/ui/native_theme/native_theme.cc
index 9d108fe375fa68811c5aba9b2d3b5622b7293b49..3080f77e125e1792f37b402ceeb3dbf730af45eb 100644
index 09aeff0a2303ab5e3629677585c8bbb9313acc1f..c28593e409784e8de770eec4cb9b4e30e6de0dbf 100644
--- a/ui/native_theme/native_theme.cc
+++ b/ui/native_theme/native_theme.cc
@@ -209,6 +209,8 @@ NativeTheme::NativeTheme(bool should_use_dark_colors,
@@ -208,6 +208,8 @@ NativeTheme::NativeTheme(bool should_use_dark_colors,
NativeTheme::~NativeTheme() = default;
bool NativeTheme::ShouldUseDarkColors() const {
@@ -26,10 +26,10 @@ index 9d108fe375fa68811c5aba9b2d3b5622b7293b49..3080f77e125e1792f37b402ceeb3dbf7
}
diff --git a/ui/native_theme/native_theme.h b/ui/native_theme/native_theme.h
index 0ba23d2d8ea58024b48d1dd3b0a411bc53d6e26e..128cb008aeef4a75ef1569a37a308e295408f77c 100644
index c8e200ba27bd5e9307469ea8fb4e3f8e8466877d..7add0446eaa276bbfbbb7bf4eb90f8b6684da61d 100644
--- a/ui/native_theme/native_theme.h
+++ b/ui/native_theme/native_theme.h
@@ -449,6 +449,23 @@ class NATIVE_THEME_EXPORT NativeTheme {
@@ -445,6 +445,23 @@ class NATIVE_THEME_EXPORT NativeTheme {
scoped_refptr<ColorProviderKey::ThemeInitializerSupplier> custom_theme,
bool use_custom_frame = true) const;
@@ -53,7 +53,7 @@ index 0ba23d2d8ea58024b48d1dd3b0a411bc53d6e26e..128cb008aeef4a75ef1569a37a308e29
// Returns a shared instance of the native theme that should be used for web
// rendering. Do not use it in a normal application context (i.e. browser).
// The returned object should not be deleted by the caller. This function is
@@ -677,6 +694,7 @@ class NATIVE_THEME_EXPORT NativeTheme {
@@ -673,6 +690,7 @@ class NATIVE_THEME_EXPORT NativeTheme {
PreferredColorScheme preferred_color_scheme_ = PreferredColorScheme::kLight;
PreferredContrast preferred_contrast_ = PreferredContrast::kNoPreference;
std::optional<base::TimeDelta> caret_blink_interval_;

View File

@@ -199,7 +199,7 @@ index 58985ce62dc569256bad5e94de9c0d125fc470d0..33436784b691c860d58f8b4dfcc6718e
&SelectFileDialogLinuxKde::OnSelectSingleFolderDialogResponse, this,
parent));
diff --git a/ui/shell_dialogs/select_file_dialog_linux_portal.cc b/ui/shell_dialogs/select_file_dialog_linux_portal.cc
index 61ddcbf7bf57e423099c7d392a19b3ec79b5d03f..920d0610943091f850e44e3e0481abd7fe08f881 100644
index 1495d07341d8991cf167fd7018c0ef52decc3554..4ee2cab4de9da4e9ae8f64f3b23c9db489b21cd2 100644
--- a/ui/shell_dialogs/select_file_dialog_linux_portal.cc
+++ b/ui/shell_dialogs/select_file_dialog_linux_portal.cc
@@ -44,7 +44,9 @@ constexpr char kMethodStartServiceByName[] = "StartServiceByName";
@@ -222,7 +222,7 @@ index 61ddcbf7bf57e423099c7d392a19b3ec79b5d03f..920d0610943091f850e44e3e0481abd7
if (owning_window) {
if (auto* root = owning_window->GetRootWindow()) {
@@ -557,7 +561,9 @@ void SelectFileDialogLinuxPortal::DialogInfo::AppendOptions(
@@ -550,7 +554,9 @@ void SelectFileDialogLinuxPortal::DialogInfo::AppendOptions(
response_handle_token);
if (type == SelectFileDialog::Type::SELECT_UPLOAD_FOLDER) {
@@ -233,7 +233,7 @@ index 61ddcbf7bf57e423099c7d392a19b3ec79b5d03f..920d0610943091f850e44e3e0481abd7
l10n_util::GetStringUTF8(
IDS_SELECT_UPLOAD_FOLDER_DIALOG_UPLOAD_BUTTON));
}
@@ -566,6 +572,8 @@ void SelectFileDialogLinuxPortal::DialogInfo::AppendOptions(
@@ -559,6 +565,8 @@ void SelectFileDialogLinuxPortal::DialogInfo::AppendOptions(
type == SelectFileDialog::Type::SELECT_UPLOAD_FOLDER ||
type == SelectFileDialog::Type::SELECT_EXISTING_FOLDER) {
AppendBoolOption(&options_writer, kFileChooserOptionDirectory, true);

View File

@@ -1,63 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Fedor Indutny <indutny@signal.org>
Date: Tue, 17 Sep 2024 17:51:46 -0700
Subject: feat: allow -4 as a macos screen share id
We use fake video source ids for native macOS screen share window picker
of the following form:
window:-4:-1
Where the last digit represents the window id and decrements with each
requested screen share.
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 1c2d0c6dd4101fe0bac69e3018bbbedadce224cc..e407382a3463374fd57a83d70c5f96dca5825faf 100644
--- a/content/browser/media/capture/screen_capture_kit_device_mac.mm
+++ b/content/browser/media/capture/screen_capture_kit_device_mac.mm
@@ -510,7 +510,9 @@ void OnStart(std::optional<bool> use_native_picker) override {
if (@available(macOS 15.0, *)) {
constexpr bool DefaultUseNativePicker = true;
- if (use_native_picker.value_or(DefaultUseNativePicker) && source_.id < 0 && source_.window_id == 0) {
+ if (use_native_picker.value_or(DefaultUseNativePicker) &&
+ source_.id == DesktopMediaID::kMacOsNativePickerId &&
+ source_.window_id < 0) {
auto* picker = [SCContentSharingPicker sharedPicker];
ScreenCaptureKitDeviceMac::active_streams_++;
picker.maximumStreamCount = @(ScreenCaptureKitDeviceMac::active_streams_);
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 d162612dc70a2b57190aaf558aca8f46cbdedcad..bab2f0282b191a4263fc964125e199e52c62554b 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
@@ -332,8 +332,16 @@ void InProcessVideoCaptureDeviceLauncher::LaunchDeviceAsync(
break;
}
+#if defined(USE_AURA)
+ bool allow_window_id = false;
+#elif BUILDFLAG(IS_MAC)
+ bool allow_window_id =
+ desktop_id.id == DesktopMediaID::kMacOsNativePickerId;
+#endif
+
#if defined(USE_AURA) || BUILDFLAG(IS_MAC)
- if (desktop_id.window_id != DesktopMediaID::kNullId) {
+ if (!allow_window_id &&
+ desktop_id.window_id != DesktopMediaID::kNullId) {
// 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.
diff --git a/content/public/browser/desktop_media_id.h b/content/public/browser/desktop_media_id.h
index 415156d403a59bf426cf4561a9d58ecdb27524b4..78aa7b2359c684d5305bf6352751dfbb7ca00d29 100644
--- a/content/public/browser/desktop_media_id.h
+++ b/content/public/browser/desktop_media_id.h
@@ -27,6 +27,8 @@ struct CONTENT_EXPORT DesktopMediaID {
static constexpr Id kNullId = 0;
// Represents a fake id to create a dummy capturer for autotests.
static constexpr Id kFakeId = -3;
+ // Represents an id to use native macOS picker for screenshare
+ static constexpr Id kMacOsNativePickerId = -4;
#if defined(USE_AURA) || BUILDFLAG(IS_MAC)
// Assigns integer identifier to the |window| and returns its DesktopMediaID.

View File

@@ -7,7 +7,7 @@ Subject: feat: allow embedders to add observers on created hunspell
This patch is used by Electron to implement spellchecker events.
diff --git a/chrome/browser/spellchecker/spellcheck_service.cc b/chrome/browser/spellchecker/spellcheck_service.cc
index 1018f1871490d8681f3f5769a3d7f53b8b095b30..073dbf4e3a71102ba67ad6ee34f6191207e62e7f 100644
index 5ce35c30bfedd76795885a5c3a17843674452d07..b8d19927b6fe007f1db2413a2574e39b6d6c3500 100644
--- a/chrome/browser/spellchecker/spellcheck_service.cc
+++ b/chrome/browser/spellchecker/spellcheck_service.cc
@@ -478,6 +478,8 @@ void SpellcheckService::LoadDictionaries() {

View File

@@ -46,12 +46,12 @@ 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 b6129282c6807702cf88e0a3e2ba233e41a20960..1c2d0c6dd4101fe0bac69e3018bbbedadce224cc 100644
index 128bca8bb64113418551a20164f67ef5e5a88253..93f86ec79364db1f46c5d2eb015a11cf241d587a 100644
--- a/content/browser/media/capture/screen_capture_kit_device_mac.mm
+++ b/content/browser/media/capture/screen_capture_kit_device_mac.mm
@@ -24,24 +24,83 @@
std::optional<gfx::Size>,
std::optional<gfx::Rect>)>;
@@ -26,6 +26,61 @@
std::optional<gfx::Rect>,
bool)>;
using ErrorCallback = base::RepeatingClosure;
+using CancelCallback = base::RepeatingClosure;
+
@@ -109,8 +109,9 @@ index b6129282c6807702cf88e0a3e2ba233e41a20960..1c2d0c6dd4101fe0bac69e3018bbbeda
+
+@end
namespace {
API_AVAILABLE(macos(12.3))
@interface ScreenCaptureKitDeviceHelper
@@ -100,18 +155,22 @@ @interface ScreenCaptureKitDeviceHelper
: NSObject <SCStreamDelegate, SCStreamOutput>
- (instancetype)initWithSampleCallback:(SampleCallback)sampleCallback
@@ -133,7 +134,7 @@ index b6129282c6807702cf88e0a3e2ba233e41a20960..1c2d0c6dd4101fe0bac69e3018bbbeda
_errorCallback = errorCallback;
}
return self;
@@ -141,7 +200,8 @@ + (SCStreamConfiguration*)streamConfigurationWithFrameSize:(gfx::Size)frameSize
@@ -187,7 +246,8 @@ + (SCStreamConfiguration*)streamConfigurationWithFrameSize:(gfx::Size)frameSize
class API_AVAILABLE(macos(12.3)) ScreenCaptureKitDeviceMac
: public IOSurfaceCaptureDeviceBase,
@@ -143,7 +144,7 @@ index b6129282c6807702cf88e0a3e2ba233e41a20960..1c2d0c6dd4101fe0bac69e3018bbbeda
public:
explicit ScreenCaptureKitDeviceMac(const DesktopMediaID& source,
SCContentFilter* filter)
@@ -152,18 +212,41 @@ explicit ScreenCaptureKitDeviceMac(const DesktopMediaID& source,
@@ -198,18 +258,42 @@ explicit ScreenCaptureKitDeviceMac(const DesktopMediaID& source,
device_task_runner_,
base::BindRepeating(&ScreenCaptureKitDeviceMac::OnStreamSample,
weak_factory_.GetWeakPtr()));
@@ -165,8 +166,8 @@ index b6129282c6807702cf88e0a3e2ba233e41a20960..1c2d0c6dd4101fe0bac69e3018bbbeda
+ device_task_runner_,
+ base::BindRepeating(&ScreenCaptureKitDeviceMac::OnContentFilterReady, weak_factory_.GetWeakPtr())
+ );
+ auto* picker_observer = [[ScreenCaptureKitPickerHelper alloc] initWithStreamPickCallback:picker_callback cancelCallback:cancel_callback errorCallback:error_callback];
+ [[SCContentSharingPicker sharedPicker] addObserver:picker_observer];
+ picker_helper_ = [[ScreenCaptureKitPickerHelper alloc] initWithStreamPickCallback:picker_callback cancelCallback:cancel_callback errorCallback:error_callback];
+ [[SCContentSharingPicker sharedPicker] addObserver:picker_helper_];
+ }
}
ScreenCaptureKitDeviceMac(const ScreenCaptureKitDeviceMac&) = delete;
@@ -180,13 +181,14 @@ index b6129282c6807702cf88e0a3e2ba233e41a20960..1c2d0c6dd4101fe0bac69e3018bbbeda
+ picker.maximumStreamCount = @(ScreenCaptureKitDeviceMac::active_streams_);
+ if (ScreenCaptureKitDeviceMac::active_streams_ == 0 && picker.active) {
+ picker.active = false;
+ [[SCContentSharingPicker sharedPicker] removeObserver:picker_helper_];
+ }
+ }
+ }
void OnShareableContentCreated(SCShareableContent* content) {
DCHECK(device_task_runner_->RunsTasksInCurrentSequence());
@@ -232,7 +315,7 @@ void CreateStream(SCContentFilter* filter) {
@@ -278,7 +362,7 @@ void CreateStream(SCContentFilter* filter) {
return;
}
@@ -195,7 +197,7 @@ index b6129282c6807702cf88e0a3e2ba233e41a20960..1c2d0c6dd4101fe0bac69e3018bbbeda
// 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.
@@ -241,6 +324,9 @@ void CreateStream(SCContentFilter* filter) {
@@ -287,6 +371,9 @@ void CreateStream(SCContentFilter* filter) {
filter.contentRect.size.height * filter.pointPixelScale);
}
@@ -205,7 +207,7 @@ index b6129282c6807702cf88e0a3e2ba233e41a20960..1c2d0c6dd4101fe0bac69e3018bbbeda
gfx::RectF dest_rect_in_frame;
actual_capture_format_ = capture_params().requested_format;
actual_capture_format_.pixel_format = media::PIXEL_FORMAT_NV12;
@@ -254,6 +340,7 @@ void CreateStream(SCContentFilter* filter) {
@@ -300,6 +387,7 @@ void CreateStream(SCContentFilter* filter) {
stream_ = [[SCStream alloc] initWithFilter:filter
configuration:config
delegate:helper_];
@@ -213,7 +215,7 @@ index b6129282c6807702cf88e0a3e2ba233e41a20960..1c2d0c6dd4101fe0bac69e3018bbbeda
{
NSError* error = nil;
bool add_stream_output_result =
@@ -395,7 +482,7 @@ void OnStreamError() {
@@ -453,7 +541,7 @@ void OnStreamError() {
if (fullscreen_module_) {
fullscreen_module_->Reset();
}
@@ -222,7 +224,7 @@ index b6129282c6807702cf88e0a3e2ba233e41a20960..1c2d0c6dd4101fe0bac69e3018bbbeda
} else {
client()->OnError(media::VideoCaptureError::kScreenCaptureKitStreamError,
FROM_HERE, "Stream delegate called didStopWithError");
@@ -418,23 +505,39 @@ void OnUpdateConfigurationError() {
@@ -476,23 +564,41 @@ void OnUpdateConfigurationError() {
}
// IOSurfaceCaptureDeviceBase:
@@ -246,7 +248,9 @@ index b6129282c6807702cf88e0a3e2ba233e41a20960..1c2d0c6dd4101fe0bac69e3018bbbeda
+
+ if (@available(macOS 15.0, *)) {
+ constexpr bool DefaultUseNativePicker = true;
+ if (use_native_picker.value_or(DefaultUseNativePicker) && source_.id < 0 && source_.window_id == 0) {
+ if (use_native_picker.value_or(DefaultUseNativePicker) &&
+ source_.id == DesktopMediaID::kMacOsNativePickerId &&
+ source_.window_id < 0) {
+ auto* picker = [SCContentSharingPicker sharedPicker];
+ ScreenCaptureKitDeviceMac::active_streams_++;
+ picker.maximumStreamCount = @(ScreenCaptureKitDeviceMac::active_streams_);
@@ -277,7 +281,7 @@ index b6129282c6807702cf88e0a3e2ba233e41a20960..1c2d0c6dd4101fe0bac69e3018bbbeda
}
void OnStop() override {
DCHECK(device_task_runner_->RunsTasksInCurrentSequence());
@@ -492,6 +595,8 @@ void ResetStreamTo(SCWindow* window) override {
@@ -550,6 +656,8 @@ void ResetStreamTo(SCWindow* window) override {
}
private:
@@ -286,7 +290,18 @@ index b6129282c6807702cf88e0a3e2ba233e41a20960..1c2d0c6dd4101fe0bac69e3018bbbeda
const DesktopMediaID source_;
SCContentFilter* const filter_;
const scoped_refptr<base::SingleThreadTaskRunner> device_task_runner_;
@@ -521,6 +626,8 @@ void ResetStreamTo(SCWindow* window) override {
@@ -567,6 +675,10 @@ void ResetStreamTo(SCWindow* window) override {
// Helper class that acts as output and delegate for `stream_`.
ScreenCaptureKitDeviceHelper* __strong helper_;
+ // Helper class that acts as an observer for SCContentSharingPicker
+ API_AVAILABLE(macos(15.0))
+ ScreenCaptureKitPickerHelper* __strong picker_helper_;
+
// 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_;
@@ -579,6 +691,8 @@ void ResetStreamTo(SCWindow* window) override {
base::WeakPtrFactory<ScreenCaptureKitDeviceMac> weak_factory_{this};
};
@@ -296,13 +311,31 @@ index b6129282c6807702cf88e0a3e2ba233e41a20960..1c2d0c6dd4101fe0bac69e3018bbbeda
// 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 7adf8264cfa9980c4a8414bf0f8bfa9ad70ec0b3..d162612dc70a2b57190aaf558aca8f46cbdedcad 100644
index 5b76ef79789414fd1f18b0629873e7722c9fbd1c..fff10d51944ba27556b97abc3222308e440645cd 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
@@ -360,13 +360,15 @@ void InProcessVideoCaptureDeviceLauncher::LaunchDeviceAsync(
std::move(after_start_capture_callback));
break;
#else
@@ -329,8 +329,16 @@ void InProcessVideoCaptureDeviceLauncher::LaunchDeviceAsync(
break;
}
+#if defined(USE_AURA)
+ bool allow_window_id = false;
+#elif BUILDFLAG(IS_MAC)
+ bool allow_window_id =
+ desktop_id.id == DesktopMediaID::kMacOsNativePickerId;
+#endif
+
#if defined(USE_AURA) || BUILDFLAG(IS_MAC)
- if (desktop_id.window_id != DesktopMediaID::kNullId) {
+ if (!allow_window_id &&
+ desktop_id.window_id != DesktopMediaID::kNullId) {
// 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.
@@ -346,13 +354,15 @@ void InProcessVideoCaptureDeviceLauncher::LaunchDeviceAsync(
}
#endif // defined(USE_AURA) || BUILDFLAG(IS_MAC)
+ media::VideoCaptureParams updated_params = params;
+ updated_params.use_native_picker = stream_type != blink::mojom::MediaStreamType::GUM_DESKTOP_VIDEO_CAPTURE;
// All cases other than tab capture or Aura desktop/window capture.
@@ -316,8 +349,21 @@ index 7adf8264cfa9980c4a8414bf0f8bfa9ad70ec0b3..d162612dc70a2b57190aaf558aca8f46
CreateDeviceClient(media::VideoCaptureBufferType::kSharedMemory,
kMaxNumberOfBuffers, std::move(receiver),
std::move(receiver_on_io_thread)),
diff --git a/content/public/browser/desktop_media_id.h b/content/public/browser/desktop_media_id.h
index 415156d403a59bf426cf4561a9d58ecdb27524b4..78aa7b2359c684d5305bf6352751dfbb7ca00d29 100644
--- a/content/public/browser/desktop_media_id.h
+++ b/content/public/browser/desktop_media_id.h
@@ -27,6 +27,8 @@ struct CONTENT_EXPORT DesktopMediaID {
static constexpr Id kNullId = 0;
// Represents a fake id to create a dummy capturer for autotests.
static constexpr Id kFakeId = -3;
+ // Represents an id to use native macOS picker for screenshare
+ static constexpr Id kMacOsNativePickerId = -4;
#if defined(USE_AURA) || BUILDFLAG(IS_MAC)
// Assigns integer identifier to the |window| and returns its DesktopMediaID.
diff --git a/media/capture/video_capture_types.h b/media/capture/video_capture_types.h
index f2b75f5b2f547ad135c1288bf3639b26dedc8053..ef18724d9f2ea68a47b66fc3981f58a73ac1b51d 100644
index 53e8077c9c0b635df0abdeca43fa9a6373c68252..2805e36cc42190d8197d83f5df235094570e3d5d 100644
--- a/media/capture/video_capture_types.h
+++ b/media/capture/video_capture_types.h
@@ -355,6 +355,8 @@ struct CAPTURE_EXPORT VideoCaptureParams {

View File

@@ -85,7 +85,7 @@ index 31a2a14a95540477297943df9b09b1e4659a884d..c02a81b1bd14a300dbbb47ad7aac2d2d
DCHECK(GetZygoteForLaunch());
// Environment variables could be supported in the future, but are not
diff --git a/content/browser/child_process_launcher_helper_mac.cc b/content/browser/child_process_launcher_helper_mac.cc
index f1a415f7bd56ece5ab07d2408dbfddf658b45ff3..49bf8f75583cc7b2de415f4ebb42757366a7b51d 100644
index bbea8fff37040029996d1e91e592f6cb5bf8fbc2..13bbd8486279bf575010ab5ad62ba24a0d4cb24f 100644
--- a/content/browser/child_process_launcher_helper_mac.cc
+++ b/content/browser/child_process_launcher_helper_mac.cc
@@ -110,7 +110,8 @@ bool ChildProcessLauncherHelper::BeforeLaunchOnLauncherThread(
@@ -111,7 +111,7 @@ index f1a415f7bd56ece5ab07d2408dbfddf658b45ff3..49bf8f75583cc7b2de415f4ebb427573
}
diff --git a/content/browser/child_process_launcher_helper_win.cc b/content/browser/child_process_launcher_helper_win.cc
index 2a01487c8ff837357f6d62dba80115b0ec64c343..74343f6a3bfb1eab2aaf1c0b5fba6ceaf9399ef6 100644
index cb0e7d5c5dc0154c6e88ad08ce097afdce4041f9..09b9cff76d9585297fe60f91970c610ac445f06a 100644
--- a/content/browser/child_process_launcher_helper_win.cc
+++ b/content/browser/child_process_launcher_helper_win.cc
@@ -24,6 +24,8 @@
@@ -155,15 +155,15 @@ index 2a01487c8ff837357f6d62dba80115b0ec64c343..74343f6a3bfb1eab2aaf1c0b5fba6cea
return true;
}
@@ -159,7 +186,7 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThread(
ChildProcessLauncherHelper::Process process;
*launch_result =
StartSandboxedProcess(delegate_.get(), *command_line(),
- options->handles_to_inherit, &process.process);
+ options, &process.process);
return process;
}
@@ -158,7 +185,7 @@ ChildProcessLauncherHelper::LaunchProcessOnLauncherThread(
}
*is_synchronous_launch = false;
*launch_result = StartSandboxedProcess(
- delegate_.get(), *command_line(), options->handles_to_inherit,
+ delegate_.get(), *command_line(), options,
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
@@ -187,10 +187,10 @@ index bdd5bec301f5fcff2d3e3d7994ecbc4eae46da36..f6082bada22c5f4e70af60ea6f555b0f
host->GetChildProcess()->BindServiceInterface(std::move(receiver));
}
diff --git a/content/browser/utility_process_host.cc b/content/browser/utility_process_host.cc
index d63bb20c8a4dc09e3df70cf8fe5b454d593ea360..918d1f92476277cd8f463a7aa1ceda008815c1d7 100644
index 2fc9fabe67dc4d8c209247e46b57d27ec1a0fb90..ce73ed7f7070ee276511da674599364a468a2c8f 100644
--- a/content/browser/utility_process_host.cc
+++ b/content/browser/utility_process_host.cc
@@ -179,11 +179,13 @@ const ChildProcessData& UtilityProcessHost::GetData() {
@@ -181,11 +181,13 @@ const ChildProcessData& UtilityProcessHost::GetData() {
return process_->GetData();
}
@@ -206,7 +206,7 @@ index d63bb20c8a4dc09e3df70cf8fe5b454d593ea360..918d1f92476277cd8f463a7aa1ceda00
bool UtilityProcessHost::Start() {
return StartProcess();
@@ -230,6 +232,30 @@ void UtilityProcessHost::SetZygoteForTesting(ZygoteCommunication* handle) {
@@ -233,6 +235,30 @@ void UtilityProcessHost::SetZygoteForTesting(ZygoteCommunication* handle) {
}
#endif // BUILDFLAG(USE_ZYGOTE)
@@ -237,9 +237,9 @@ index d63bb20c8a4dc09e3df70cf8fe5b454d593ea360..918d1f92476277cd8f463a7aa1ceda00
mojom::ChildProcess* UtilityProcessHost::GetChildProcess() {
return static_cast<ChildProcessHostImpl*>(process_->GetHost())
->child_process();
@@ -435,9 +461,26 @@ bool UtilityProcessHost::StartProcess() {
}
#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH)
@@ -440,9 +466,26 @@ bool UtilityProcessHost::StartProcess() {
#endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS_ASH) ||
// BUILDFLAG(IS_MAC)
+#if BUILDFLAG(IS_WIN)
+ file_data_->stdout_handle = std::move(stdout_handle_);
@@ -266,7 +266,7 @@ index d63bb20c8a4dc09e3df70cf8fe5b454d593ea360..918d1f92476277cd8f463a7aa1ceda00
#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 9791ae2f761043b9eecd9064a6fd39a6e2339af4..c1809298c830b814f886859c2626d6bce7b9ac8c 100644
index faa41e5f2571f7a8aa4eef927eca003801d787f6..16d5efc5f9191020aa2180d665cf520748a62a8f 100644
--- a/content/browser/utility_process_host.h
+++ b/content/browser/utility_process_host.h
@@ -29,6 +29,10 @@
@@ -280,7 +280,7 @@ index 9791ae2f761043b9eecd9064a6fd39a6e2339af4..c1809298c830b814f886859c2626d6bc
namespace base {
class Thread;
} // namespace base
@@ -98,9 +102,13 @@ class CONTENT_EXPORT UtilityProcessHost
@@ -99,9 +103,13 @@ class CONTENT_EXPORT UtilityProcessHost
// Returns information about the utility child process.
const ChildProcessData& GetData();
@@ -296,7 +296,7 @@ index 9791ae2f761043b9eecd9064a6fd39a6e2339af4..c1809298c830b814f886859c2626d6bc
// Starts the utility process.
bool Start();
@@ -138,6 +146,21 @@ class CONTENT_EXPORT UtilityProcessHost
@@ -139,6 +147,21 @@ class CONTENT_EXPORT UtilityProcessHost
void SetZygoteForTesting(ZygoteCommunication* handle);
#endif // BUILDFLAG(USE_ZYGOTE)
@@ -318,7 +318,7 @@ index 9791ae2f761043b9eecd9064a6fd39a6e2339af4..c1809298c830b814f886859c2626d6bc
// Returns a control interface for the running child process.
mojom::ChildProcess* GetChildProcess();
@@ -191,6 +214,27 @@ class CONTENT_EXPORT UtilityProcessHost
@@ -192,6 +215,27 @@ class CONTENT_EXPORT UtilityProcessHost
std::optional<raw_ptr<ZygoteCommunication>> zygote_for_testing_;
#endif // BUILDFLAG(USE_ZYGOTE)
@@ -347,7 +347,7 @@ index 9791ae2f761043b9eecd9064a6fd39a6e2339af4..c1809298c830b814f886859c2626d6bc
// launch failed.
enum class LaunchState {
diff --git a/content/browser/utility_sandbox_delegate.cc b/content/browser/utility_sandbox_delegate.cc
index a22e4ed0a2e63732bdfe84482191cabb3db93b83..66f3c581d7bc499a7057b77b4d1d43dd013c1f58 100644
index 6285d8eb5d05f7afbe45a314f423786d5ae01f53..5954f509ee80460ab73042ed39e236067e6f0d9b 100644
--- a/content/browser/utility_sandbox_delegate.cc
+++ b/content/browser/utility_sandbox_delegate.cc
@@ -34,17 +34,19 @@ UtilitySandboxedProcessLauncherDelegate::
@@ -374,7 +374,7 @@ index a22e4ed0a2e63732bdfe84482191cabb3db93b83..66f3c581d7bc499a7057b77b4d1d43dd
#if DCHECK_IS_ON()
bool supported_sandbox_type =
sandbox_type_ == sandbox::mojom::Sandbox::kNoSandbox ||
@@ -108,11 +110,28 @@ UtilitySandboxedProcessLauncherDelegate::GetSandboxType() {
@@ -113,11 +115,28 @@ UtilitySandboxedProcessLauncherDelegate::GetSandboxType() {
return sandbox_type_;
}
@@ -465,7 +465,7 @@ index 27cef06ded34680c6bfa3e954924de645a1b8217..7c114956a77da7b60526dd93593d8462
} // namespace content
diff --git a/content/common/sandbox_init_win.cc b/content/common/sandbox_init_win.cc
index b96d6a879e8b6664559bac69f726321fdb02b40f..bfeec6ddb98d4127c1dcfe5999894f1cdebdc087 100644
index 38733269e53b9874305942809373004f305ffdec..9f4f5f7dd7f2704e363f43c31ac930aeaabc2b45 100644
--- a/content/common/sandbox_init_win.cc
+++ b/content/common/sandbox_init_win.cc
@@ -23,7 +23,7 @@ namespace content {
@@ -474,20 +474,20 @@ index b96d6a879e8b6664559bac69f726321fdb02b40f..bfeec6ddb98d4127c1dcfe5999894f1c
const base::CommandLine& target_command_line,
- const base::HandlesToInheritVector& handles_to_inherit,
+ const base::LaunchOptions* options,
base::Process* process) {
sandbox::StartSandboxedProcessCallback result_callback) {
std::string type_str =
target_command_line.GetSwitchValueASCII(switches::kProcessType);
@@ -45,7 +45,7 @@ sandbox::ResultCode StartSandboxedProcess(
}
return sandbox::policy::SandboxWin::StartSandboxedProcess(
- full_command_line, handles_to_inherit, delegate, process);
+ full_command_line, options, delegate, process);
- full_command_line, handles_to_inherit, delegate,
+ full_command_line, options, delegate,
std::move(result_callback));
}
} // namespace content
diff --git a/content/public/browser/service_process_host.cc b/content/public/browser/service_process_host.cc
index 8defae52a201a97c402e304216ce772a717a9f7e..4aee78366398c018e315ef15e631d0792ee79c47 100644
index 518d1413705f94bc03eadc4331a6b0f13825265f..3fa4c69377e253e0ed8262b7e77f8fb5c154d274 100644
--- a/content/public/browser/service_process_host.cc
+++ b/content/public/browser/service_process_host.cc
@@ -52,12 +52,53 @@ ServiceProcessHost::Options::WithExtraCommandLineSwitches(
@@ -628,7 +628,7 @@ index 0062d2cb6634b8b29977a0312516b1b13936b40a..611a52e908f4cb70fbe5628e220a082e
// An interface which can be implemented and registered/unregistered with
diff --git a/content/public/common/sandbox_init_win.h b/content/public/common/sandbox_init_win.h
index 9bb4b30ba0f5d37ec2b28f0848d94f34c24f9423..b614fef01ee5cdf81b7112be721b851c454756a2 100644
index 5c24090e3311a89dc2a9162045feaacda574bb99..b772a2a054e9d19025ebd2909acf1b920d389a95 100644
--- a/content/public/common/sandbox_init_win.h
+++ b/content/public/common/sandbox_init_win.h
@@ -29,7 +29,7 @@ class SandboxedProcessLauncherDelegate;
@@ -637,14 +637,14 @@ index 9bb4b30ba0f5d37ec2b28f0848d94f34c24f9423..b614fef01ee5cdf81b7112be721b851c
const base::CommandLine& target_command_line,
- const base::HandlesToInheritVector& handles_to_inherit,
+ const base::LaunchOptions* options,
base::Process* process);
sandbox::StartSandboxedProcessCallback result_callback);
} // namespace content
diff --git a/content/public/common/sandboxed_process_launcher_delegate.cc b/content/public/common/sandboxed_process_launcher_delegate.cc
index 9c1aa450f32b6812d4a87cd0b9ee0dfb1a9557f4..c281fc33709376dbd50af281c219f3f5bda5635b 100644
index 8656215a709012eef80532e7aac197818ac292df..74ad339d8f8fcc62628006171e0a7ad265143625 100644
--- a/content/public/common/sandboxed_process_launcher_delegate.cc
+++ b/content/public/common/sandboxed_process_launcher_delegate.cc
@@ -68,11 +68,23 @@ ZygoteCommunication* SandboxedProcessLauncherDelegate::GetZygote() {
@@ -64,11 +64,23 @@ ZygoteCommunication* SandboxedProcessLauncherDelegate::GetZygote() {
}
#endif // BUILDFLAG(USE_ZYGOTE)
@@ -671,7 +671,7 @@ index 9c1aa450f32b6812d4a87cd0b9ee0dfb1a9557f4..c281fc33709376dbd50af281c219f3f5
#if BUILDFLAG(IS_MAC)
diff --git a/content/public/common/sandboxed_process_launcher_delegate.h b/content/public/common/sandboxed_process_launcher_delegate.h
index cb43aa14c9742f3788ae58c3e49b890cd532f327..276b2a06fabba559eb1caaaa9129b9f78058aa9f 100644
index 4b2ea0e2680c552b853fcbe4f5e4765a908f8915..6e8af760d986911ed6030b24244e9b21eeba865c 100644
--- a/content/public/common/sandboxed_process_launcher_delegate.h
+++ b/content/public/common/sandboxed_process_launcher_delegate.h
@@ -6,6 +6,7 @@
@@ -682,7 +682,7 @@ index cb43aa14c9742f3788ae58c3e49b890cd532f327..276b2a06fabba559eb1caaaa9129b9f7
#include "base/files/scoped_file.h"
#include "base/process/process.h"
#include "build/build_config.h"
@@ -57,10 +58,19 @@ class CONTENT_EXPORT SandboxedProcessLauncherDelegate
@@ -56,10 +57,19 @@ class CONTENT_EXPORT SandboxedProcessLauncherDelegate
virtual ZygoteCommunication* GetZygote();
#endif // BUILDFLAG(USE_ZYGOTE)
@@ -705,10 +705,10 @@ index cb43aa14c9742f3788ae58c3e49b890cd532f327..276b2a06fabba559eb1caaaa9129b9f7
#if BUILDFLAG(IS_MAC)
// Whether or not to disclaim TCC responsibility for the process, defaults to
diff --git a/sandbox/policy/win/sandbox_win.cc b/sandbox/policy/win/sandbox_win.cc
index e6a3cd1e84b3b28c3ba9ef221257dd868f750558..a04a23e7955d6c497801a730b04f4ca0a7888686 100644
index b550651a8a98132104d38df083717e1cb58567e4..52b9eddefcc6a2240babcac824058cd853d3058f 100644
--- a/sandbox/policy/win/sandbox_win.cc
+++ b/sandbox/policy/win/sandbox_win.cc
@@ -704,11 +704,9 @@ base::win::ScopedHandle CreateUnsandboxedJob() {
@@ -619,11 +619,9 @@ base::win::ScopedHandle CreateUnsandboxedJob() {
// command line flag.
ResultCode LaunchWithoutSandbox(
const base::CommandLine& cmd_line,
@@ -721,7 +721,7 @@ index e6a3cd1e84b3b28c3ba9ef221257dd868f750558..a04a23e7955d6c497801a730b04f4ca0
// Network process runs in a job even when unsandboxed. This is to ensure it
// does not outlive the browser, which could happen if there is a lot of I/O
// on process shutdown, in which case TerminateProcess can fail. See
@@ -938,7 +936,7 @@ bool SandboxWin::InitTargetServices(TargetServices* target_services) {
@@ -920,7 +918,7 @@ bool SandboxWin::InitTargetServices(TargetServices* target_services) {
// static
ResultCode SandboxWin::GeneratePolicyForSandboxedProcess(
const base::CommandLine& cmd_line,
@@ -730,7 +730,7 @@ index e6a3cd1e84b3b28c3ba9ef221257dd868f750558..a04a23e7955d6c497801a730b04f4ca0
SandboxDelegate* delegate,
TargetPolicy* policy) {
const base::CommandLine& launcher_process_command_line =
@@ -952,7 +950,7 @@ ResultCode SandboxWin::GeneratePolicyForSandboxedProcess(
@@ -934,7 +932,7 @@ ResultCode SandboxWin::GeneratePolicyForSandboxedProcess(
}
// Add any handles to be inherited to the policy.
@@ -739,7 +739,7 @@ index e6a3cd1e84b3b28c3ba9ef221257dd868f750558..a04a23e7955d6c497801a730b04f4ca0
policy->AddHandleToShare(handle);
if (!policy->GetConfig()->IsConfigured()) {
@@ -967,6 +965,13 @@ ResultCode SandboxWin::GeneratePolicyForSandboxedProcess(
@@ -949,6 +947,13 @@ ResultCode SandboxWin::GeneratePolicyForSandboxedProcess(
// have no effect. These calls can fail with SBOX_ERROR_BAD_PARAMS.
policy->SetStdoutHandle(GetStdHandle(STD_OUTPUT_HANDLE));
policy->SetStderrHandle(GetStdHandle(STD_ERROR_HANDLE));
@@ -753,47 +753,47 @@ index e6a3cd1e84b3b28c3ba9ef221257dd868f750558..a04a23e7955d6c497801a730b04f4ca0
#endif
if (!delegate->PreSpawnTarget(policy))
@@ -978,7 +983,7 @@ ResultCode SandboxWin::GeneratePolicyForSandboxedProcess(
@@ -960,7 +965,7 @@ ResultCode SandboxWin::GeneratePolicyForSandboxedProcess(
// static
ResultCode SandboxWin::StartSandboxedProcess(
const base::CommandLine& cmd_line,
- const base::HandlesToInheritVector& handles_to_inherit,
+ const base::LaunchOptions* options,
SandboxDelegate* delegate,
base::Process* process) {
StartSandboxedProcessCallback result_callback) {
SandboxLaunchTimer timer;
@@ -986,7 +991,7 @@ ResultCode SandboxWin::StartSandboxedProcess(
// Avoid making a policy if we won't use it.
if (IsUnsandboxedProcess(delegate->GetSandboxType(), cmd_line,
@@ -970,7 +975,7 @@ ResultCode SandboxWin::StartSandboxedProcess(
*base::CommandLine::ForCurrentProcess())) {
- return LaunchWithoutSandbox(cmd_line, handles_to_inherit, delegate,
+ return LaunchWithoutSandbox(cmd_line, *options, delegate,
process);
}
@@ -994,7 +999,7 @@ ResultCode SandboxWin::StartSandboxedProcess(
base::Process process;
ResultCode result =
- LaunchWithoutSandbox(cmd_line, handles_to_inherit, delegate, &process);
+ LaunchWithoutSandbox(cmd_line, *options, delegate, &process);
DWORD last_error = GetLastError();
std::move(result_callback).Run(std::move(process), last_error, result);
return SBOX_ALL_OK;
@@ -980,7 +985,7 @@ ResultCode SandboxWin::StartSandboxedProcess(
timer.OnPolicyCreated();
ResultCode result = GeneratePolicyForSandboxedProcess(
- cmd_line, handles_to_inherit, delegate, policy.get());
+ cmd_line, options, delegate, policy.get());
if (SBOX_ALL_OK != result)
return result;
timer.OnPolicyGenerated();
if (SBOX_ALL_OK != result) {
DWORD last_error = GetLastError();
std::move(result_callback).Run(base::Process(), last_error, result);
diff --git a/sandbox/policy/win/sandbox_win.h b/sandbox/policy/win/sandbox_win.h
index 271e80f52b15484ecc8b31b12b012eac39b3d333..cd3d803f52972c4ae8af6a0411b5be0e0a5bc782 100644
index ede8bb552b2602fb06a6317399eb910e24a54216..c86744af9de2c366951d659851aaa9cac74b96de 100644
--- a/sandbox/policy/win/sandbox_win.h
+++ b/sandbox/policy/win/sandbox_win.h
@@ -52,7 +52,7 @@ class SANDBOX_POLICY_EXPORT SandboxWin {
// Otherwise, returns one of sandbox::ResultCode for any other error.
@@ -92,7 +92,7 @@ class SANDBOX_POLICY_EXPORT SandboxWin {
// any other error.
static ResultCode StartSandboxedProcess(
const base::CommandLine& cmd_line,
- const base::HandlesToInheritVector& handles_to_inherit,
+ const base::LaunchOptions* options,
SandboxDelegate* delegate,
base::Process* process);
StartSandboxedProcessCallback result_callback);
@@ -65,7 +65,7 @@ class SANDBOX_POLICY_EXPORT SandboxWin {
@@ -105,7 +105,7 @@ class SANDBOX_POLICY_EXPORT SandboxWin {
// of sandbox::ResultCode for any other error while constructing the policy.
static ResultCode GeneratePolicyForSandboxedProcess(
const base::CommandLine& cmd_line,

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 8d048719e1b062b3115d185a47cd4c92e318a145..7f33776c64a27282511065199edda760845c82d7 100644
index c72cff69afab53000392220abc7decde1236e178..a94783f6dee223294d1ac0d332067b490303bc98 100644
--- a/components/viz/service/BUILD.gn
+++ b/components/viz/service/BUILD.gn
@@ -172,6 +172,8 @@ viz_component("service") {
@@ -103,7 +103,7 @@ index 8d048719e1b062b3115d185a47cd4c92e318a145..7f33776c64a27282511065199edda760
"display_embedder/software_output_surface.h",
"display_embedder/vsync_parameter_listener.cc",
diff --git a/components/viz/service/display_embedder/output_surface_provider.h b/components/viz/service/display_embedder/output_surface_provider.h
index 524df4c2a1382e6d009ab1165305a79894dca15e..a21da0785be3884e5e299643d306d25e6e97c841 100644
index 7fbb05e606fc26364c674c6330b8a5eb9c016fb3..a190a42c2127011ab54aae937a3cab36880ce229 100644
--- a/components/viz/service/display_embedder/output_surface_provider.h
+++ b/components/viz/service/display_embedder/output_surface_provider.h
@@ -42,7 +42,8 @@ class OutputSurfaceProvider {
@@ -117,7 +117,7 @@ index 524df4c2a1382e6d009ab1165305a79894dca15e..a21da0785be3884e5e299643d306d25e
virtual gpu::SharedImageManager* GetSharedImageManager() = 0;
virtual gpu::SyncPointManager* GetSyncPointManager() = 0;
diff --git a/components/viz/service/display_embedder/output_surface_provider_impl.cc b/components/viz/service/display_embedder/output_surface_provider_impl.cc
index bddaacb09fcf9f94594b55bd82b903804c2d6970..3aa4753e4d2dd7b391a1dc4057fce7162ba63110 100644
index 87722045daafa87f7111df943217ceaa8518e55c..badf8c3dc5fb768388a19814d8428a46d3c5648b 100644
--- a/components/viz/service/display_embedder/output_surface_provider_impl.cc
+++ b/components/viz/service/display_embedder/output_surface_provider_impl.cc
@@ -25,6 +25,7 @@
@@ -204,7 +204,7 @@ index e4b46a79560e7698a6400b2ab8a57f38205a8718..3cb2518c6644cf0618f625d981befd46
const raw_ptr<GpuServiceImpl> gpu_service_impl_;
diff --git a/components/viz/service/display_embedder/software_output_device_mac.cc b/components/viz/service/display_embedder/software_output_device_mac.cc
index 7d58c00ddee8b8e14f89b9ba0f82f734294a4828..b9f7c11f28a7fd61cac594cac862d6524b83296d 100644
index 446229f7dea794a0148543d112c63b8c38183262..15d097a5761a07cfbc763d6fc739ca35cf3c8660 100644
--- a/components/viz/service/display_embedder/software_output_device_mac.cc
+++ b/components/viz/service/display_embedder/software_output_device_mac.cc
@@ -111,6 +111,8 @@ void SoftwareOutputDeviceMac::UpdateAndCopyBufferDamage(
@@ -521,7 +521,7 @@ index 796ae2688436eb07f19909641d1620dd02f10cdb..c9e0eee0b329caf46669b419b1cd10cf
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 463a0f71f75884b78ff33fc459891fbf31a44422..96a74c4b8be58fa7cc5b5066e22c836423ac2a41 100644
index 5243e23874994b543f14dd26fc1b45dafea97c67..20ce7d15f56f54afc6c24e2df8e9808243ea49ca 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
@@ -102,7 +102,8 @@ RootCompositorFrameSinkImpl::Create(
@@ -563,10 +563,10 @@ 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 0a7aff6ee5b1cb330b14de2da5befe71ed034e64..7619035b6b88507e5e4157e2871747a0d12efb10 100644
index 6ad03ff41c8ae01ed2b48025e82f522f3d509caf..0cc490be82aa051602010001131d040a6b94ccc3 100644
--- a/content/browser/compositor/viz_process_transport_factory.cc
+++ b/content/browser/compositor/viz_process_transport_factory.cc
@@ -396,8 +396,14 @@ void VizProcessTransportFactory::OnEstablishedGpuChannel(
@@ -387,8 +387,14 @@ void VizProcessTransportFactory::OnEstablishedGpuChannel(
mojo::AssociatedRemote<viz::mojom::DisplayPrivate> display_private;
root_params->display_private =
display_private.BindNewEndpointAndPassReceiver();

View File

@@ -76,10 +76,10 @@ index f6082bada22c5f4e70af60ea6f555b0f363919c5..228f947edbe04bce242df62080052d9c
void ServiceProcessHost::RemoveObserver(Observer* observer) {
GetServiceProcessTracker().RemoveObserver(observer);
diff --git a/content/browser/utility_process_host.cc b/content/browser/utility_process_host.cc
index 918d1f92476277cd8f463a7aa1ceda008815c1d7..cdebe04babbd9682f97923149261bbe23c9d9701 100644
index ce73ed7f7070ee276511da674599364a468a2c8f..3af02ceeddc8eb5c585fb04baa4bb20574a2df1b 100644
--- a/content/browser/utility_process_host.cc
+++ b/content/browser/utility_process_host.cc
@@ -518,7 +518,7 @@ void UtilityProcessHost::OnProcessCrashed(int exit_code) {
@@ -523,7 +523,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_);
@@ -89,10 +89,10 @@ index 918d1f92476277cd8f463a7aa1ceda008815c1d7..cdebe04babbd9682f97923149261bbe2
std::optional<std::string> UtilityProcessHost::GetServiceName() {
diff --git a/content/browser/utility_process_host.h b/content/browser/utility_process_host.h
index c1809298c830b814f886859c2626d6bce7b9ac8c..8d202e7e47c08c33394eb49e87b48225f72af445 100644
index 16d5efc5f9191020aa2180d665cf520748a62a8f..54eab3d0f1625f9cbdd38eb89d11732fa0bfdaf9 100644
--- a/content/browser/utility_process_host.h
+++ b/content/browser/utility_process_host.h
@@ -78,7 +78,7 @@ class CONTENT_EXPORT UtilityProcessHost
@@ -79,7 +79,7 @@ class CONTENT_EXPORT UtilityProcessHost
virtual void OnProcessLaunched(const base::Process& process) {}
virtual void OnProcessTerminatedNormally() {}

View File

@@ -12,10 +12,10 @@ We attempt to migrate the safe storage key from the old account, if that migrati
Existing apps that aren't built for the app store should be unimpacted, there is one edge case where a user uses BOTH an AppStore and a darwin build of the same app only one will keep it's access to the safestorage key as during the migration we delete the old account. This is an acceptable edge case as no one should be actively using two versions of the same app.
diff --git a/components/os_crypt/sync/keychain_password_mac.mm b/components/os_crypt/sync/keychain_password_mac.mm
index e7a65e97b51d93bff864889813317fb7c6ffc846..2b93da301b664f90720d2d2b5407be0985d7f334 100644
index bb1fc0c99164ae4bdaaaa78e87c30e88932a928c..82d235709b79b1b3689b28ec8bfa02663ba219d6 100644
--- a/components/os_crypt/sync/keychain_password_mac.mm
+++ b/components/os_crypt/sync/keychain_password_mac.mm
@@ -22,6 +22,12 @@
@@ -23,6 +23,12 @@
using KeychainNameContainerType = const base::NoDestructor<std::string>;
#endif
@@ -28,7 +28,7 @@ index e7a65e97b51d93bff864889813317fb7c6ffc846..2b93da301b664f90720d2d2b5407be09
namespace {
// These two strings ARE indeed user facing. But they are used to access
@@ -81,11 +87,18 @@
@@ -82,11 +88,18 @@
std::string KeychainPassword::GetPassword() const {
UInt32 password_length = 0;
void* password_data = nullptr;
@@ -49,7 +49,7 @@ index e7a65e97b51d93bff864889813317fb7c6ffc846..2b93da301b664f90720d2d2b5407be09
if (error == noErr) {
std::string password =
std::string(static_cast<char*>(password_data), password_length);
@@ -93,6 +106,49 @@
@@ -94,6 +107,49 @@
return password;
}

View File

@@ -112,18 +112,20 @@ index 3450c15835d8b792f37764f6edc4a4560be435ef..b1034aa141d6121f8e1524fb34a28a04
string mime_type;
diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc
index 84043fea7be3dc13677ff78d262ce0dc0e531963..512f64f44c5edfacdab094db22f0fca0354a99ca 100644
index 07142dacbb70d8610604d80328a1176efc1cf2c0..aa1bd9c89083c20a7455a97dd5b2d6e5ce1dc123 100644
--- a/services/network/url_loader.cc
+++ b/services/network/url_loader.cc
@@ -721,6 +721,7 @@ URLLoader::URLLoader(
request.trusted_params->allow_cookies_from_browser;
include_request_cookies_with_response_ =
request.trusted_params->include_request_cookies_with_response;
+ report_raw_headers_ = request.trusted_params->report_raw_headers;
}
// Store any cookies passed from the browser process to later attach them to
@@ -759,7 +760,7 @@ URLLoader::URLLoader(
@@ -598,6 +598,9 @@ URLLoader::URLLoader(
mojo::SimpleWatcher::ArmingPolicy::MANUAL,
base::SequencedTaskRunner::GetCurrentDefault()),
per_factory_orb_state_(context.GetMutableOrbState()),
+ report_raw_headers_(
+ request.trusted_params &&
+ request.trusted_params->report_raw_headers),
devtools_request_id_(request.devtools_request_id),
request_mode_(request.mode),
request_credentials_mode_(request.credentials_mode),
@@ -869,7 +872,7 @@ void URLLoader::ConfigureRequest(
&URLLoader::IsSharedDictionaryReadAllowed, base::Unretained(this)));
}
@@ -132,7 +134,7 @@ index 84043fea7be3dc13677ff78d262ce0dc0e531963..512f64f44c5edfacdab094db22f0fca0
url_request_->SetResponseHeadersCallback(base::BindRepeating(
&URLLoader::SetRawResponseHeaders, base::Unretained(this)));
}
@@ -1726,6 +1727,19 @@ void URLLoader::OnResponseStarted(net::URLRequest* url_request, int net_error) {
@@ -1838,6 +1841,19 @@ void URLLoader::OnResponseStarted(net::URLRequest* url_request, int net_error) {
}
response_ = BuildResponseHead();
@@ -153,10 +155,10 @@ index 84043fea7be3dc13677ff78d262ce0dc0e531963..512f64f44c5edfacdab094db22f0fca0
// 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 4604794bc6f71672a60ebbd8c601828c3f63f1fe..e3409b9a56cbd1f57cbc77f0a951e66c05f22d0e 100644
index e29f1180083d13cb4642457cfd756d93a79c5f01..eb238a5d31c5df1b073d08b8b01f7df0e6119b8e 100644
--- a/services/network/url_loader.h
+++ b/services/network/url_loader.h
@@ -673,6 +673,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) URLLoader
@@ -706,6 +706,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) URLLoader
std::unique_ptr<ResourceScheduler::ScheduledResourceRequest>
resource_scheduler_request_handle_;

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 18e148022754a1f1de8fd8d866280ec3c9aa69c8..b6129282c6807702cf88e0a3e2ba233e41a20960 100644
index 9f6e8284ef91b05bbd38426b979f6f3cc91e98df..128bca8bb64113418551a20164f67ef5e5a88253 100644
--- a/content/browser/media/capture/screen_capture_kit_device_mac.mm
+++ b/content/browser/media/capture/screen_capture_kit_device_mac.mm
@@ -184,8 +184,17 @@ void OnShareableContentCreated(SCShareableContent* content) {
@@ -230,8 +230,17 @@ void OnShareableContentCreated(SCShareableContent* content) {
// fallback. See https://crbug.com/325530044.
if (source_.id == display.displayID ||
source_.id == webrtc::kFullDesktopScreenId) {

View File

@@ -14,10 +14,10 @@ This patch likely can't be upstreamed as-is, as Chromium doesn't have
this use case in mind currently.
diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
index 72fa8b61c41e54b06b87f2b6750021fb99e65fea..b6c9210890d88d21b1aeb5ee2b513d1efd29b4b3 100644
index ae24de9ce9d3a2d6c9d7612104e1ef13bbd84f9f..c7ce5bc2aaa8bd29c41c253bd9b6fc9e713ff5a5 100644
--- a/ui/views/win/hwnd_message_handler.cc
+++ b/ui/views/win/hwnd_message_handler.cc
@@ -907,13 +907,13 @@ void HWNDMessageHandler::FrameTypeChanged() {
@@ -909,13 +909,13 @@ void HWNDMessageHandler::FrameTypeChanged() {
void HWNDMessageHandler::PaintAsActiveChanged() {
if (!delegate_->HasNonClientView() || !delegate_->CanActivate() ||
@@ -33,7 +33,7 @@ index 72fa8b61c41e54b06b87f2b6750021fb99e65fea..b6c9210890d88d21b1aeb5ee2b513d1e
}
void HWNDMessageHandler::SetWindowIcons(const gfx::ImageSkia& window_icon,
@@ -2252,17 +2252,18 @@ LRESULT HWNDMessageHandler::OnNCActivate(UINT message,
@@ -2264,17 +2264,18 @@ LRESULT HWNDMessageHandler::OnNCActivate(UINT message,
if (IsVisible())
delegate_->SchedulePaint();

View File

@@ -16,7 +16,7 @@ Linux or Windows to un-fullscreen in some circumstances without this
change.
diff --git a/chrome/browser/ui/exclusive_access/fullscreen_controller.cc b/chrome/browser/ui/exclusive_access/fullscreen_controller.cc
index 7a3a13681139f03a38b82082f4a47fe2670962a2..5bd3bab17e3556b9b11a03160cdb31a6f5d98d82 100644
index 176f02f0abb4220564caa1d794faabc5b22bd8bc..4b08918cef83a84076e452b41302588efdfb0619 100644
--- a/chrome/browser/ui/exclusive_access/fullscreen_controller.cc
+++ b/chrome/browser/ui/exclusive_access/fullscreen_controller.cc
@@ -21,12 +21,16 @@
@@ -36,7 +36,7 @@ index 7a3a13681139f03a38b82082f4a47fe2670962a2..5bd3bab17e3556b9b11a03160cdb31a6
#include "chrome/common/chrome_switches.h"
#include "components/history/core/browser/history_service.h"
#include "components/history/core/browser/history_types.h"
@@ -256,10 +260,12 @@ void FullscreenController::EnterFullscreenModeForTab(
@@ -259,10 +263,12 @@ void FullscreenController::EnterFullscreenModeForTab(
return;
}
@@ -49,7 +49,7 @@ index 7a3a13681139f03a38b82082f4a47fe2670962a2..5bd3bab17e3556b9b11a03160cdb31a6
// Keep the current state. |SetTabWithExclusiveAccess| may change the return
// value of |IsWindowFullscreenForTabOrPending|.
@@ -371,12 +377,14 @@ void FullscreenController::ExitFullscreenModeForTab(WebContents* web_contents) {
@@ -374,12 +380,14 @@ void FullscreenController::ExitFullscreenModeForTab(WebContents* web_contents) {
void FullscreenController::FullscreenTabOpeningPopup(
content::WebContents* opener,
content::WebContents* popup) {
@@ -64,7 +64,7 @@ index 7a3a13681139f03a38b82082f4a47fe2670962a2..5bd3bab17e3556b9b11a03160cdb31a6
}
void FullscreenController::OnTabDeactivated(
@@ -462,10 +470,12 @@ void FullscreenController::FullscreenTransitionCompleted() {
@@ -465,10 +473,12 @@ void FullscreenController::FullscreenTransitionCompleted() {
#endif // DCHECK_IS_ON()
tab_fullscreen_target_display_id_ = display::kInvalidDisplayId;
started_fullscreen_transition_ = false;
@@ -77,7 +77,7 @@ index 7a3a13681139f03a38b82082f4a47fe2670962a2..5bd3bab17e3556b9b11a03160cdb31a6
}
void FullscreenController::RunOrDeferUntilTransitionIsComplete(
@@ -573,18 +583,17 @@ void FullscreenController::EnterFullscreenModeInternal(
@@ -576,18 +586,17 @@ void FullscreenController::EnterFullscreenModeInternal(
// Do not enter fullscreen mode if disallowed by pref. This prevents the user
// from manually entering fullscreen mode and also disables kiosk mode on
// desktop platforms.
@@ -101,7 +101,7 @@ index 7a3a13681139f03a38b82082f4a47fe2670962a2..5bd3bab17e3556b9b11a03160cdb31a6
if (option == TAB) {
url = GetRequestingOrigin();
tab_fullscreen_ = true;
@@ -617,6 +626,7 @@ void FullscreenController::EnterFullscreenModeInternal(
@@ -620,6 +629,7 @@ void FullscreenController::EnterFullscreenModeInternal(
if (!extension_caused_fullscreen_.is_empty())
url = extension_caused_fullscreen_;
}
@@ -109,7 +109,7 @@ index 7a3a13681139f03a38b82082f4a47fe2670962a2..5bd3bab17e3556b9b11a03160cdb31a6
fullscreen_start_time_ = base::TimeTicks::Now();
if (option == BROWSER)
@@ -637,6 +647,7 @@ void FullscreenController::ExitFullscreenModeInternal() {
@@ -640,6 +650,7 @@ void FullscreenController::ExitFullscreenModeInternal() {
return;
}
@@ -117,7 +117,7 @@ index 7a3a13681139f03a38b82082f4a47fe2670962a2..5bd3bab17e3556b9b11a03160cdb31a6
// `fullscreen_start_time_` is null if a fullscreen tab moves to a new window.
if (fullscreen_start_time_ && exclusive_access_tab()) {
ukm::SourceId source_id =
@@ -648,15 +659,16 @@ void FullscreenController::ExitFullscreenModeInternal() {
@@ -651,15 +662,16 @@ void FullscreenController::ExitFullscreenModeInternal() {
.Record(ukm::UkmRecorder::Get());
fullscreen_start_time_.reset();
}
@@ -137,7 +137,7 @@ index 7a3a13681139f03a38b82082f4a47fe2670962a2..5bd3bab17e3556b9b11a03160cdb31a6
exclusive_access_manager()->context()->ExitFullscreen();
extension_caused_fullscreen_ = GURL();
exclusive_access_manager()->UpdateBubble(base::NullCallback());
@@ -718,8 +730,12 @@ GURL FullscreenController::GetEmbeddingOrigin() const {
@@ -721,8 +733,12 @@ GURL FullscreenController::GetEmbeddingOrigin() const {
void FullscreenController::RecordMetricsOnFullscreenApiRequested(
content::RenderFrameHost* requesting_frame) {
history::HistoryService* service =

View File

@@ -11,10 +11,10 @@ enlarge window above dimensions set during creation of the
BrowserWindow.
diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc
index 9d5b88a7e9660e1c63b8d5751567194a10fcdf53..d29cdda6208576f1be3f5a6857fc068bb1397b23 100644
index 466738cc252dceae3fcaa7c44aaa29ff945386ef..de8284b0b75511d11dc3afed60efc75788d0a7d0 100644
--- a/ui/views/win/hwnd_message_handler.cc
+++ b/ui/views/win/hwnd_message_handler.cc
@@ -3677,14 +3677,29 @@ void HWNDMessageHandler::SizeWindowToAspectRatio(UINT param,
@@ -3689,14 +3689,29 @@ void HWNDMessageHandler::SizeWindowToAspectRatio(UINT param,
delegate_->GetMinMaxSize(&min_window_size, &max_window_size);
min_window_size = delegate_->DIPToScreenSize(min_window_size);
max_window_size = delegate_->DIPToScreenSize(max_window_size);

View File

@@ -23,10 +23,10 @@ Upstream bug https://bugs.chromium.org/p/chromium/issues/detail?id=1081397.
Upstreamed at https://chromium-review.googlesource.com/c/chromium/src/+/3856266.
diff --git a/content/browser/renderer_host/navigation_request.cc b/content/browser/renderer_host/navigation_request.cc
index 22bb23e6a84d3b6686461f87e846125ad7484742..198403ec544e71f50c8555d131015b805124ce7a 100644
index 53bba48293111e74daba50dde617fb78f1bcc7ee..67083fb13db2020f432ec488a784bcfb9570d737 100644
--- a/content/browser/renderer_host/navigation_request.cc
+++ b/content/browser/renderer_host/navigation_request.cc
@@ -10757,6 +10757,12 @@ NavigationRequest::GetOriginForURLLoaderFactoryUncheckedWithDebugInfo() {
@@ -10788,6 +10788,12 @@ NavigationRequest::GetOriginForURLLoaderFactoryUncheckedWithDebugInfo() {
"blob");
}
@@ -40,10 +40,10 @@ index 22bb23e6a84d3b6686461f87e846125ad7484742..198403ec544e71f50c8555d131015b80
// 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 0fb02ada85ed3d4cc113ac7ce18d6efdb7065627..9e78c486fdc9b931dfcbcf40145076a22f221e35 100644
index 547a483db71e2980cc040fe853775fbc07723979..85c6d240a68e52b9d59fae7bbe36603e627b2893 100644
--- a/third_party/blink/renderer/core/loader/document_loader.cc
+++ b/third_party/blink/renderer/core/loader/document_loader.cc
@@ -2261,6 +2261,10 @@ Frame* DocumentLoader::CalculateOwnerFrame() {
@@ -2264,6 +2264,10 @@ Frame* DocumentLoader::CalculateOwnerFrame() {
scoped_refptr<SecurityOrigin> DocumentLoader::CalculateOrigin(
Document* owner_document) {
scoped_refptr<SecurityOrigin> origin;
@@ -54,10 +54,10 @@ index 0fb02ada85ed3d4cc113ac7ce18d6efdb7065627..9e78c486fdc9b931dfcbcf40145076a2
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
@@ -2313,6 +2317,10 @@ scoped_refptr<SecurityOrigin> DocumentLoader::CalculateOrigin(
debug_info_builder.Append(", url=");
debug_info_builder.Append(owner_document->Url().BaseAsString());
debug_info_builder.Append(")");
@@ -2317,6 +2321,10 @@ scoped_refptr<SecurityOrigin> DocumentLoader::CalculateOrigin(
// the end of this function.
origin = origin_to_commit_;
debug_info_builder.Append("use_origin_to_commit");
+ } else if (!SecurityOrigin::ShouldUseInnerURL(url_) &&
+ !is_standard) {
+ debug_info_builder.Append("use_url_with_non_standard_scheme");

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