Compare commits

..

256 Commits

Author SHA1 Message Date
Keeley Hammond
d1671d3112 feat: add getNativePickerSource() API option 2024-08-27 11:37:44 -04:00
Keeley Hammond
2ff8439001 fix: make capturer work on both screens and windows 2024-08-27 11:36:43 -04:00
Keeley Hammond
d525cd5c19 fix: make window capturer work, still issue with first refresh 2024-08-26 11:33:47 -07:00
Keeley Hammond
7e33202df7 feat: use upstream MacOS SCContentSharingPicker implementation pt. 1 2024-08-21 19:00:33 -07:00
Keeley Hammond
d8d9c2cd21 feat: partially implement IsDisplayMediaSystemPickerAvailable 2024-08-21 18:44:25 -07: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
electron-roller[bot]
2cc14c6e8f chore: bump chromium to 129.0.6668.0 (main) (#43368)
* chore: bump chromium in DEPS to 129.0.6668.0

* 5787687: [Extensions] Remove EventRouterForwarder from BrowserProcess

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

* 5788808: Resolve Blob URL's origin using info from browser process

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

* chore: fixup patch indices

* 5786747: Remove "int WriteFile"

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

---------

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-20 16:54:27 +02:00
dependabot[bot]
945aabfaee build(deps): bump github/codeql-action from 3.26.0 to 3.26.3 (#43365)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.26.0 to 3.26.3.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](eb055d739a...883d8588e5)

---
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-08-20 13:11:50 +02:00
Charles Kerr
3186c2f0ef refactor: remove unused SetWMSpecState (#43347)
last use removed in Aug 2022 by 53cd2315 #35179
2024-08-19 17:15:19 -04:00
Charles Kerr
44e4e4521c chore: remove unused method Erase() (#43348)
Last use removed in Mar 2018 by 4b39d17e
2024-08-19 17:14:57 -04:00
Vít Černý
189675575c feat: extend navigationHistory API (#42014)
* feat: extend navigationHistory API

* refactor: simplify index checking

* refactor: rename 'getHistory' and 'replaceHistory' methods of navigationHistory

* refactor: rename delete*() methods to remove*()

* feat: remove navigationHistory.replaceHistory()

* tests: add tests for removeEntryAtIndex and getAllEntries
2024-08-19 15:46:04 -04:00
electron-roller[bot]
4c3014944c chore: bump chromium to 129.0.6664.0 (main) (#43329)
* chore: bump chromium in DEPS to 129.0.6657.0

* chore: update patches

* chore: bump chromium in DEPS to 129.0.6658.0

* chore: update patches

* 5743786: [ServiceWorker] Populate service worker start token to WorkerId.

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

* 5784424: [Extensions] Move ownership of Dispatcher to ExtensionsRendererClient

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

* chore: bump chromium in DEPS to 129.0.6659.0

* chore: bump chromium in DEPS to 129.0.6660.0

* chore: update patches

* chore: bump chromium in DEPS to 129.0.6662.0

* chore: bump chromium in DEPS to 129.0.6664.0

* 5789627: [Partitioned Popins] (3) `popin` feature triggers third-party storage partitioning

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

* 5791367: Remove some chrome:: namespace from chrome/browser/app_mode/*

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

* 5791522: [SCK] Skip redundant getShareableContentWithCompletionHandler

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

* 5761330: Send refresh rate prefs b/w RefreshRateController and DisplayPrivate

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

* chore: fixup patch indices

* 5793591: Remove unused GetHeader overload

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

* 5787624: [Extensions] Simplify ExtensionsRendererClient::RenderThreadStarted()

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

* 5721709: Fix Incorrect last_accessed_time Tracking for Tabs

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

* 5789215: [Extensions] Add a //chrome/common/extensions build target

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

* Roll V8 from 48f669a0758c to eee3eb91d01c

48f669a075..eee3eb91d0

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2024-08-19 14:52:53 -04:00
Shelley Vohr
cc16de7032 fix: printing occasionally showing failed when cancelled (#43337)
Closes https://github.com/electron/electron/issues/36084
2024-08-19 14:25:14 -04:00
Piotr Płaczek
4d51edc504 docs: api history (#42982)
* feat(api-history): api history schema

Reference: f36e0a8483/text/0004-api-history-schema.md

* feat(api-history): add `lint:api-history` to `package.json`

* docs(api-history): add api history to `styleguide.md`

* docs(api-history): `win.flashFrame(flag)`

* docs(api-history): `new WebContentsView([options])`

* docs(api-history): non-navigation APIs on `WebContents`

* docs(api-history): `nativeImage.toDataURL`

* docs(api-history): `window.flashFrame(bool)`

* docs(api-history): `browser-view.md`

* docs(api-history): `ipcRenderer`

* docs(api-history): `protocol.*Protocol`

* revert: `new WebContentsView([options])`

This reverts commit 0a11efcf57.

* Apply suggestions from code review

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

* fix(api-history): remove incorrect `pr-url`

Reference: https://github.com/electron/electron/pull/42982/files#r1692532877

* docs(api-history): schema word choice

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

Reference: 0b1b6a7cc0

* docs(api-history): nicer format example in `styleguide.md`

Reference: https://github.com/electron/electron/pull/42982#discussion_r1692539906

* docs(api-history): Always use double quotes for descriptions

* docs(api-history): `styleguide.md` improvements

* docs(api-history): copy `ipc-renderer.md` change to `context-bridge.md`

* docs(api-history): `styleguide.md` placement

* docs(api-history): add migration guide

* docs(api-history): remove confusing `breaking-changes-header` in `browser-view.md`

Reference: 7b03c0703d (r1703444772)

* docs(api-history): move migration guide

Reference: https://github.com/electron/electron/pull/42982#discussion_r1703441001

* docs(api-history): update `breaking-changer-header`

Reference: https://github.com/electron/electron/pull/43217

* docs(api-history): deprecate `browser-view.md`

---------

Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
2024-08-19 11:17:10 -07:00
Calvin
8474bbe689 build: update NMV to 130 for Electron 33 (#43325) 2024-08-19 12:47:40 -04:00
Shelley Vohr
3f71ed7355 build: fix valid versions in issue version parsing (#43346) 2024-08-19 11:04:30 +02:00
Shelley Vohr
d7689bb9b5 docs: expand dialog window to BaseWindow (#43334)
docs: expand dialog window to BaseWindow
2024-08-16 10:49:10 -04:00
Shelley Vohr
b497700e36 test: fixup Node.js snapshot tests to run correctly (#43332) 2024-08-16 11:17:42 +02:00
electron-appveyor-updater[bot]
1c991ff765 build: update appveyor image to latest version (#43331)
Co-authored-by: electron-appveyor-updater[bot] <161660339+electron-appveyor-updater[bot]@users.noreply.github.com>
2024-08-15 16:09:47 -04:00
Shelley Vohr
4801a54d08 refactor: migrate deprecated platform_util_mac calls (#43161)
refactor: migrate deprecated platform_util_mac calls
2024-08-15 10:53:38 -04:00
electron-roller[bot]
a7c52f1fb2 chore: bump chromium to 129.0.6656.0 (main) (#43323)
* chore: bump chromium in DEPS to 129.0.6656.0

* chore: update patches

* 5750664: Introduce Signin.NumberOfActiveAccounts.* metrics

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

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-08-14 16:47:37 -04:00
Shelley Vohr
286384258b fix: blank page when printing pdf (#43309) 2024-08-14 15:47:47 -04:00
Shelley Vohr
f6bae51025 build: remove upstreamed DraggableRegions patch (#43311)
build: remove upstreamed patch
2024-08-14 10:11:02 -04:00
electron-appveyor-updater[bot]
ffcbc32031 build: update appveyor image to latest version (#43318)
Co-authored-by: electron-appveyor-updater[bot] <161660339+electron-appveyor-updater[bot]@users.noreply.github.com>
2024-08-14 10:10:33 -04:00
Robo
9b166b3ed4 feat: support app#login event for utility process net requests (#42631)
* feat: support app#login event for utility process net requests

* chore: address review feedback

* GlobalRequestID: Avoid unwanted inlining and narrowing int conversions

Refs https://chromium-review.googlesource.com/c/chromium/src/+/5702737
2024-08-14 11:36:47 +09:00
David Sanders
62406708cd docs: fix formatting in fuses tutorial (#43303) 2024-08-13 15:27:44 -04:00
electron-roller[bot]
d004329f6f chore: bump chromium to 129.0.6654.0 (main) (#43312)
* chore: bump chromium in DEPS to 129.0.6654.0

* chore: update patches

* 5766075: Chromium UI for integration with the MacOS SCContentSharingPicker

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

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-08-13 15:04:43 -04:00
electron-appveyor-updater[bot]
275b6a13b7 build: update appveyor image to latest version (#43308)
Co-authored-by: electron-appveyor-updater[bot] <161660339+electron-appveyor-updater[bot]@users.noreply.github.com>
2024-08-13 11:25:05 -04:00
dependabot[bot]
a9e56f2c36 build(deps): bump dsanders11/github-app-commit-action from 1.4.0 to 1.5.0 (#43305)
build(deps): bump dsanders11/github-app-commit-action

Bumps [dsanders11/github-app-commit-action](https://github.com/dsanders11/github-app-commit-action) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/dsanders11/github-app-commit-action/releases)
- [Changelog](https://github.com/dsanders11/github-app-commit-action/blob/main/.releaserc.json)
- [Commits](48d2ff8c1a...43de6da2f4)

---
updated-dependencies:
- dependency-name: dsanders11/github-app-commit-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-08-13 15:13:55 +02:00
electron-roller[bot]
bc2628ad7e chore: bump chromium to 129.0.6652.0 (main) (#43298)
* chore: bump chromium in DEPS to 129.0.6652.0

* chore: update patches

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-08-12 13:47:27 -04:00
Charles Kerr
bba31189a0 feat: accept-encoding zstd (#43150)
* fix: accept-encoding zstd

* Update shell/browser/net/system_network_context_manager.cc

Co-authored-by: Sam Maddock <smaddock@slack-corp.com>

* chore: make lint happy

---------

Co-authored-by: Sam Maddock <smaddock@slack-corp.com>
2024-08-12 10:00:04 -04:00
electron-appveyor-updater[bot]
0f55b45282 build: update appveyor image to latest version (#43268)
Co-authored-by: electron-appveyor-updater[bot] <161660339+electron-appveyor-updater[bot]@users.noreply.github.com>
2024-08-12 09:32:52 -04:00
Shelley Vohr
d294871980 chore: deprecate textured BrowserWindow type option on macOS (#43133) 2024-08-12 10:32:35 +02:00
electron-roller[bot]
c9b7806418 chore: bump chromium to 129.0.6650.0 (main) (#43266)
* chore: bump chromium in DEPS to 129.0.6645.0

* chore: update patches

* chore: bump chromium in DEPS to 129.0.6646.0

* refactor: remove ppapi dependency

PPAPI removal - https://issues.chromium.org/issues/40511450
PDF viewer migration - https://issues.chromium.org/issues/40511452

* chore: update patches

* chore: enable `content_enable_legacy_ipc`

We were indirectly relying on this via `enable_ppapi=true`, with
633a57d9b6 ppapi is now disabled and
this commit makes the dependency explicit.

* fix: gn check

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
2024-08-12 10:28:33 +02:00
Charles Kerr
23bcca3ffc refactor: put empty virtual function definitions in header (#43285)
* refactor: in FramelessView, move empty function decls to header

* refactor: in electron::api::WebContents, move empty function decls to header

* refactor: in electron::api::NativeWindow, move empty function decls to header

* refactor: in electron::OffScreenWebContentsView, move empty function decls to header

* refactor: in electron::OffScreenRenderWidgetHostView, move empty function decls to header

* refactor: in auto_updater::AutoUpdater, move empty function decls to header

* refactor: in electorn::api::FrameSubscriber, move empty function decls to header

* refactor: in electorn::api::SimpleURLLoaderWrapper, move empty function decls to header

* refactor: in electorn::InspectableWebContents, move empty function decls to header

* refactor: in electorn::OffScreenVideoConsumer, move empty function decls to header

* refactor: in electron::OffScreenWebContentsView, move empty function decls to header

* refactor: in electron::TrayIcon, move empty function decls to header

* refactor: in electron::ViewsDelegate, move empty function decls to header

* refactor: in electron::MediaCaptureDevicesDispatcher, move empty function decls to header

* refactor: in electron::UsbChooserContext::DeviceObserver, move empty function decls to header

* refactor: in electron::ProxyingWebSocket, move empty function decls to header

* refactor: in electron::Notification, move empty function decls to header

* refactor: in electron::PlatformNotificationService, move empty function decls to header

* Revert "refactor: in electron::PlatformNotificationService, move empty function decls to header"

This reverts commit 9103750d03b9ba1ceccba43d11dfdc2404ff6191.

* refactor: in electron::ElectronPDFDocumentHelperClient, move empty function decls to header

* refactor: in electron::api::SpellCheckClient, move empty function decls to header

* refactor: in electron::ElectronExtensionHostDelegate, move empty function decls to header

* refactor: in electron::PlatformNotificationService, move empty function decls to header

* refactor: in electron::NativeWindowViews, move empty function decls to header

* chore: move SetTouchBar() back to cc

* Revert "refactor: in auto_updater::AutoUpdater, move empty function decls to header"

This reverts commit c43d6862d3.
2024-08-12 09:56:51 +02:00
Charles Kerr
bff298987f chore: remove unused Notification fields icon_path_, has_icon_ (#43286)
Last use of `icon_path_` was removed on May 29, 2017 (c741b584)
Last use of `has_icon_` was removed on May 30, 2017 (5048425e)
2024-08-12 09:55:54 +02:00
Shelley Vohr
6d13c503c5 refactor: update chrome.scripting extensions api impls (#43205) 2024-08-11 21:31:37 +02:00
Charles Kerr
7721fdf886 chore: remove unused method ElectronDesktopWindowTreeHostLinux::UpdateClientDecorationHints() (#43283)
Xref: dff980c9c2

Removed in #41868
2024-08-10 18:55:10 -05:00
Charles Kerr
c35739d60d refactor: use url::DomainIs() to check cookie domains (#43262)
* test: add tests to exercise pre-exsiting cookie domain matching behavior

* refactor: use url::DomainIs() to match cookie domains

* docs: fix typo
2024-08-09 18:35:18 -05:00
Charles Kerr
c4dfff9844 fix: accidental handle copying in a range loop (#43260)
fix: accidental handle copying

Xref: https://github.com/electron/electron/pull/37857
2024-08-09 13:38:03 -05:00
Shelley Vohr
346244ef9e build: add nacl back to buildtools gitignore (#43238) 2024-08-09 19:09:01 +02:00
dependabot[bot]
4edc7a4372 build(deps): bump actions/upload-artifact from 4.3.4 to 4.3.6 (#43245)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.4 to 4.3.6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](0b2256b8c0...834a144ee9)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-09 10:43:51 +02:00
Shelley Vohr
f49f6ff68b fix: check screen capture permissions in desktopCapturer (#43080)
fix: check screen capture permissions in desktopCapturer
2024-08-09 10:08:49 +02:00
Shelley Vohr
0718c2b9ee fix: system-context-menu with frameless BrowserWindows (#43243) 2024-08-09 10:08:01 +02:00
electron-roller[bot]
1a6563fb66 chore: bump chromium to 129.0.6644.0 (main) (#43224)
* chore: bump chromium in DEPS to 129.0.6640.0

* chore: update patches

* Reland "DEPS: update ninja to 1.12.1"

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

* chore: bump chromium in DEPS to 129.0.6642.0

* chore: update patches

* chore: bump chromium in DEPS to 129.0.6644.0

* chore: update patches

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
2024-08-08 17:16:59 -05:00
electron-appveyor-updater[bot]
11fdc6f78e build: update appveyor image to latest version (#43237)
Co-authored-by: electron-appveyor-updater[bot] <161660339+electron-appveyor-updater[bot]@users.noreply.github.com>
2024-08-08 16:10:16 +02:00
dependabot[bot]
0fcc18359f build(deps): bump github/codeql-action from 3.25.15 to 3.26.0 (#43246)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.15 to 3.26.0.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](afb54ba388...eb055d739a)

---
updated-dependencies:
- dependency-name: github/codeql-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-08-08 16:09:14 +02:00
Shelley Vohr
70dda694e2 build: fix build when enable_pdf_viewer and enable_electron_extensions disabled (#43206)
build: fix build when enable_pdf_viewer and enable_electron_extensions disabled
2024-08-07 14:51:38 +02:00
David Sanders
aa19087bed ci: set labels on Dependabot PRs for GitHub Actions deps (#43222) 2024-08-07 11:57:40 +02:00
Felix Rieseberg
3fabf7837e docs: Document ideal iconPath size (#43149) 2024-08-07 11:43:05 +02:00
dependabot[bot]
8d5ad8afe1 build(deps): bump mikefarah/yq from 4.44.2 to 4.44.3 (#43220)
Bumps [mikefarah/yq](https://github.com/mikefarah/yq) from 4.44.2 to 4.44.3.
- [Release notes](https://github.com/mikefarah/yq/releases)
- [Changelog](https://github.com/mikefarah/yq/blob/master/release_notes.txt)
- [Commits](f15500b20a...bbdd97482f)

---
updated-dependencies:
- dependency-name: mikefarah/yq
  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-08-07 10:02:31 +02:00
Shelley Vohr
45891aa75b build: fix patchup logic only running on one platform (#43139) 2024-08-07 10:01:59 +02:00
Charles Kerr
6293bbced0 perf: avoid redundant calls to GetView() (#43216)
* perf: avoid double-calls to GetView()

There are a lot of places where we call the virtual method GetView()
twice in succession: the first to check if the view exists, and the
second to use. This PR holds the view in a temp variable instead, e.g.:

if (auto* view = foo->GetView())
  view->DoSomething();

* perf: avoid discarded GetView() call
2024-08-06 11:25:59 -05:00
Piotr Płaczek
f42331f277 docs: add missing deprecations to breaking-changes.md (#43217)
* docs: deprecate `BrowserView`

Reference: https://github.com/electron/electron/pull/35658

* docs: deprecate `webContents.goToIndex(index)`

Reference: https://github.com/electron/electron/pull/41752/files#diff-18ed6a5b5a9084c976509502962b7f05989a8bd13a2ba3dc02868056938c03b6R1165-R1167

* docs: deprecate some protocol methods

Reference: https://github.com/electron/electron/pull/36674/files#diff-74861ecada868821b139e79f244ea32b840a93f60de572d585117a0ff8d165c8R380
2024-08-06 09:07:36 -07:00
electron-roller[bot]
29fd2d343b chore: bump chromium to 129.0.6638.0 (main) (#43207)
* chore: bump chromium in DEPS to 129.0.6638.0

* chore: update patches

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
2024-08-06 17:43:48 +09:00
electron-appveyor-updater[bot]
c70f86fe03 build: update appveyor image to latest version (#43204)
Co-authored-by: electron-appveyor-updater[bot] <161660339+electron-appveyor-updater[bot]@users.noreply.github.com>
2024-08-05 16:41:40 -04:00
Samuel Attard
701a09d44f build: use smaller instances for gn-check (#43187) 2024-08-05 15:42:41 -04:00
John Kleinschmidt
a4dcb0fb32 build: fixup patches in main (#43218)
chore: fixup patches in main
2024-08-05 13:51:17 -04:00
David Sanders
acd39bd077 ci: auto label bug issues with platform (#43198) 2024-08-05 09:52:49 -04:00
Charles Kerr
3d766e9ccb perf: don't build unused vectors in HidChooserContext (#43192)
* refactor: remove unused code in HidChooserContext::DeviceRemoved()

* refactor: remove unused code in HidChooserContext::OnHidManagerConnectionError()

* refactor: use structured bindings for readability
2024-08-05 15:31:58 +02:00
Charles Kerr
6877671390 fix: gin_helper::MicrotasksScope instantiation (#43185) 2024-08-05 08:24:27 -05:00
Shelley Vohr
e64302cc91 refactor: simplify window moveAbove/moveTop impl on macOS (#43157)
refactor: simplify window moveAbove/moveTop impl on macOS
2024-08-05 09:57:16 +02:00
Shelley Vohr
2a613cabaa refactor: migrate electron_login_helper to non-deprecated API (#43182)
refactor: migrate electron_login_helper to non-deprecated API
2024-08-05 09:56:18 +02:00
Shelley Vohr
78995b956e fix: potential draggable regions crash in DevTools (#43179) 2024-08-05 09:56:08 +02:00
electron-roller[bot]
f508f6b6b5 chore: bump chromium to 129.0.6636.0 (main) (#43194)
* chore: bump chromium in DEPS to 129.0.6636.0

* chore: e patches all

to make GH actions happy

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-08-04 11:36:40 -05:00
electron-roller[bot]
20e77afe0f chore: bump chromium to 129.0.6634.0 (main) (#43189)
* chore: bump chromium in DEPS to 129.0.6634.0

* chore: update chore_add_electron_deps_to_gitignores.patch

no manual changes. patch applied with fuzz 1.

* chore: e patches all

* chore: update call to gfx::Image::CreateFrom1xPNGBytes()

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

The call now takes a base::span

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-08-04 07:31:31 -05:00
Charles Kerr
5a809a6694 refactor: prefer std::ranges over base::ranges (#43172)
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/5668999

Xref: https://groups.google.com/a/chromium.org/g/cxx/c/ZnIbkfJ0Glw
2024-08-02 21:21:59 -05:00
Charles Kerr
305b28e9c7 chore: bump chromium to 129.0.6632.0 (#43184)
* chore: bump chromium in DEPS to 129.0.6632.0

* chore: update build_do_not_depend_on_packed_resource_integrity.patch

apply patch manually due to context shear

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

* chore: e patches all
2024-08-02 13:58:13 -05:00
Charles Kerr
5b18cc46bc chore: bump chromium to 129.0.6630.0 (main) (#43087)
* chore: bump chromium in DEPS to 129.0.6623.0

* chore: update mas_avoid_private_macos_api_usage.patch.patch

remove the changes to media/audio/mac/audio_manager_mac.cc,
since upstream has also made this change now.

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

* chore: update fix_disable_scope_reuse_associated_dchecks.patch

We had been removing a couple of `DCHECK`. Upstream changed their
code to limit when these `DCHECK`s get called, so let's see if our
change is still needed.

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

* chore: e patches all

* Bump the Chrome macOS deployment target to 11.0

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

BREAKING CHANGE: Bump the Chrome macOS deployment target to 11.0

* src: stop using deprecated fields of `v8::FastApiCallbackOptions`

Xref: d0000b118d
Xref: https://chromium-review.googlesource.com/c/v8/v8/+/5741336
Xref: https://chromium-review.googlesource.com/c/v8/v8/+/5741199

* fixup! chore: update fix_disable_scope_reuse_associated_dchecks.patch

chore: re-disable DCHECKs

yep, it is still needed

* refactor use non-deprecated variant of openApplicationAtURL

old version is deprecated now in macOS 11

Xref: https://developer.apple.com/documentation/appkit/nsworkspace/1534810-launchapplicationaturl

Xref: https://developer.apple.com/documentation/appkit/nsworkspace/3172700-openapplicationaturl

* chore: bump chromium in DEPS to 129.0.6626.0

* chore: e patches all

* chore: disable NSUserNotification deprecation errors

* chore: disable NSWindowStyleMaskTexturedBackground deprecation errors

Xref: https://github.com/electron/electron/issues/43125

* chore: disable deprecation errors in platform_util_mac.mm

* chore: disable launchApplication deprecation errors

* chore: bump chromium in DEPS to 129.0.6630.0

* chore: update refactor_expose_file_system_access_blocklist.patch

apply patch manually due to context shear

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

* chore: update deps_add_v8_object_setinternalfieldfornodecore.patch

no manual changes. patch applied with fuzz 1 (offset -5 lines)

* chore: e patches all

* fix: add clang_x64_v8_arm64/snapshot_blob.bin to the zip manifest

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

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
2024-08-02 09:02:11 -05:00
Tingsong (Terrence) Ou
7c79221a54 docs: fixed broken electron-fiddle links in the "Tutorial - Publishing and Updating" doc (#43129)
fixed electron-fiddle build and config links
2024-08-01 20:28:50 -05:00
Charles Kerr
e7ca92a574 chore: remove unused internal env.unSetVar() (#43148)
chore: remove unused unSetVar JS binding

Added in Oct 2020 (b33f2260, #25623) but never used
2024-08-01 18:41:41 -05:00
Shelley Vohr
3a07bd8821 fix: take bluetooth serial ports into account in serial.getPorts() (#43101)
* fix: take bluetooth serial ports into account in serial.getPorts()

* chore: remove port.path.LossyDisplayName()
2024-08-01 11:13:31 -05:00
dependabot[bot]
cc956420ef build(deps): bump ossf/scorecard-action from 2.3.3 to 2.4.0 (#43094)
Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.3.3 to 2.4.0.
- [Release notes](https://github.com/ossf/scorecard-action/releases)
- [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md)
- [Commits](dc50aa9510...62b2cac7ed)

---
updated-dependencies:
- dependency-name: ossf/scorecard-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-08-01 12:47:56 +02:00
cptpcrd
2337d8676d fix: handle failing to enter fullscreen on macOS (#43112)
* fix: handle failing to enter/exit fullscreen on macOS

On macOS, failing to enter/exit fullscreen can fail. If this happens,
properly restore the original window state.

* refactor: remove fail to exit fullscreen handlers

Seem to be unnecessary since the window exits fullscreen anyway.
2024-08-01 12:13:13 +02:00
Charles Kerr
45e5ccc55e chore: remove unused KeyWeakMap JS bindings (#43111)
The last three pieces of code that used it were removed in:

- Oct 2020 (8df4faa8 #25711)
- Jun 2020 (e1e73fa5 #24115)
- Jun 2020 (c0182bca #24116).
2024-07-31 16:37:04 -05:00
Charles Kerr
a68a33f036 docs: fix broken link in bug report template (#43105)
chore: fix broken link in bug report template
2024-07-31 11:45:07 -04:00
Shelley Vohr
791e6df82a docs: update Node.js stable release policy (#43100)
* docs: update Node.js stable release policy

* Update docs/tutorial/electron-timelines.md

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

---------

Co-authored-by: Erick Zhao <erick@hotmail.ca>
2024-07-31 16:33:58 +02:00
dependabot[bot]
283810dbfc build(deps): bump github/codeql-action from 3.25.13 to 3.25.15 (#43095)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.13 to 3.25.15.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](2d790406f5...afb54ba388)

---
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-07-31 10:00:39 +02:00
Shelley Vohr
ed3242adc1 fix: vibrant view is inserted into Views API hierarchy (#43078)
* fix: vibrant view is inserted into Views API hierarchy (#42263)

* Update shell/browser/native_window_mac.mm

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

---------

Co-authored-by: Hans Halverson <hans_halverson@alumni.brown.edu>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2024-07-30 18:21:20 -05:00
John Kleinschmidt
87fb2ad70c build: fixup ffmpeg release on x64 macOS (#43093)
chore: fixup arch on x64 macOS ffmpeg
2024-07-30 16:35:11 -04:00
Charles Kerr
1bcc566ad8 chore: remove unused & undocumented function v8Util.deleteHiddenValue() (#43090)
chore: remove unused v8Util.deleteHiddenValue()

Its last use was removed in Nov 2020 by c8d77cae4a (#26659)
2024-07-30 15:25:37 -05:00
electron-appveyor-updater[bot]
60bb4a2617 build: update appveyor image to latest version (#43098)
Co-authored-by: electron-appveyor-updater[bot] <161660339+electron-appveyor-updater[bot]@users.noreply.github.com>
2024-07-30 11:44:18 -04:00
Charles Kerr
47dde3b6e2 chore: remove unused class electron::ObjectLifeMonitor (#43089)
* chore: remove unused electron::ObjectLifeMonitor

The last users were removed in June 2020 e1e73fa5f (#24115)
and May 2020 9d7ba982 (#23592).

* fixup! chore: remove unused electron::ObjectLifeMonitor

fix: oops
2024-07-30 08:25:28 -05:00
John Kleinschmidt
1a6e651844 test: fixup flaky visibility test (#43064) 2024-07-30 09:14:45 -04:00
Shelley Vohr
d09a2e513c fix: showInactive window not showing (#43079)
fix: showInactive window not showing

Refs https://github.com/electron/electron/pull/42226 and https://github.com/electron/electron/pull/43033
2024-07-30 12:37:27 +02:00
Charles Kerr
7e9eb9e3f1 perf: avoid duplicate calculations in gin_helper::Dictionary getters (#43073)
* perf: cache the dictionary handle

* refactor: prefer result.IsJust() over !result.IsNothing()

for consistency

* refactor: prefer maybe.FromMaybe() over maybe.IsJust() && maybe.FromJust()

the inlined code is simpler

* refactor: simplify Get() impl

* refactor: add private helper Dictionary::MakeKey()

refactor: add private helper Dictionary::MakeHiddenKey()
2024-07-29 12:43:28 -05:00
Charles Kerr
e70ce89235 chore: more iwyu (#43063)
* chore: iwyu shell/browser/electron_pdf_document_helper_client.h

* chore: iwyu shell/browser/hid/electron_hid_delegate.h

* chore: iwyu content/public/browser/web_contents.h

* chore: iwyu shell/browser/usb/electron_usb_delegate.h

* chore: iwyu shell/browser/browser_observer.h

* chore: iwyu shell/browser/bluetooth/electron_bluetooth_delegate.h

* chore: iwyu shell/browser/serial/electron_serial_delegate.h

* chore: iwyu shell/browser/api/frame_subscriber.h

* chore: iwyu mojo/public/cpp/bindings/

* chore: iwyu components/

* chore: iwyu extensions/

* chore: iwyu shell/common/gin_helper/

* chore: iwyu v8/

* chore: iwyu base/containers/linked_list.h

* chore: iwyu shell/browser/native_window.h

* chore: iwyu shell/browser/api/electron_api_base_window.h

* chore: iwyu shell/common/node_includes.h

* chore: iwyu gin/handle.h

* chore: iwyu base/functional/callback.h

* chore: iwyu ui/gfx/

* chore: iwyu content/public/browser/render_frame_host.h

* fix: mac

* fix: mac

* fix: win

* chore: iwyu base/files/file_path.h

* chore: iwyu base/unguessable_token.h

* chore: iwyu ui/display/screen.h

* chore: iwyu chrome/browser/predictors/preconnect_manager.h

* chore: iwyu base/observer_list_types.h

* chore: iwyu content/public/browser/web_contents.h

* chore: iwyu chrome/browser/devtools/devtools_eye_dropper.h

* chore: iwyu shell/browser/ui/inspectable_web_contents.h

* chore: iwyu content/public/browser/keyboard_event_processing_result.h

* chore: iwyu net/cookies/canonical_cookie.h

* chore: iwyu net/base/address_list.h

* chore: iwyu net/cert/x509_certificate.h

* chore: iwyu net/cookies/cookie_change_dispatcher.h

* chore: iwyu net/dns/public/host_resolver_results.h

* fix: mac

* Revert "chore: iwyu net/cert/x509_certificate.h"

This reverts commit 002896f71146e90f1e29e090a1d6eede48cee11e.
2024-07-29 12:42:57 -05:00
electron-roller[bot]
92496c1930 chore: bump chromium to 129.0.6616.0 (main) (#43012)
* chore: bump chromium in DEPS to 128.0.6613.0

* chore: 5725076: Update EventType names | https://chromium-review.googlesource.com/c/chromium/src/+/5725076

* chore: export patches

* chore: 5725076: Update EventType names | https://chromium-review.googlesource.com/c/chromium/src/+/5725076 for windows

* chore: bump chromium in DEPS to 129.0.6614.0

* 5725672: Add a feature to limit the number of preconnect in LoadingPredictor | https://chromium-review.googlesource.com/c/chromium/src/+/5725672

* chore: bump chromium in DEPS to 129.0.6616.0

* chore: e patches all and resolve conflict in  patches/v8/fix_disable_scope_reuse_associated_dchecks.patch

* 5730656: Show an error dialog when UpdatePrintSettings() fails | https://chromium-review.googlesource.com/c/chromium/src/+/5730656

* chore: gen-libc++-filenames

* 5729956: Finally remove string_piece.h | https://chromium-review.googlesource.com/c/chromium/src/+/5729956

* chore: replace all references of base::StringPiece with std::string_view

* chore: remove more references of stringPiece in favor of string_view

* chore: rename string_piece variables to string_view

* 5508795: Remove the NotificationService | https://chromium-review.googlesource.com/c/chromium/src/+/5508795

* 5734053: Revert Rename GlobalFeatures to GlobalDesktopFeatures. | https://chromium-review.googlesource.com/c/chromium/src/+/5734053

* chore: resolve conflict with main without merge

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Alice Zhao <alice@makenotion.com>
2024-07-29 09:37:35 -04:00
Alice Zhao
4286234721 fix: redirect webview navigation methods (#42981) 2024-07-29 13:00:51 +02:00
Fedor Indutny
55e7a47d70 fix: always terminate active Node Streams (#43056)
`.destroy()` is an important method in the lifecycle of a Node.js
Readable stream. It is typically called to reclaim the resources
(e.g., close file descriptor). The only situations where calling
it manually isn't necessary are when the following events are
emitted first:

- `end`: natural end of a stream
- `error`: stream terminated due to a failure

Prior to this commit the ended state was incorrectly tracked together
with a pending internal error. It led to situations where the request
could get aborted during a read and then get marked as ended (having
pending error).

With this change we disentangle pending "error" and "destroyed" cases to
always properly terminate an active Node.js Readable stream.

Co-authored-by: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com>
2024-07-27 12:25:43 -05:00
Keeley Hammond
8db1563d73 fix: remove InspectableWebContentsViewMac (#43033)
* Revert "refactor: remove InspectableWebContentsViewMac in favor of the Views version (#41326)"

This reverts commit e67ab9a93d.

* build: fix gn check

* chore: implement setCornerRadii in inspectable_web_contents_view_mac

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

* fix: pass in cornerRadii value in setCornerRadii

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

* fix: forward declaration

* 5578714: Remove 0-arg (default) constructor for views::Widget::InitParams.

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

* fix: contents_web_view_ -> contents_view_

* chore: remove extraneous includes

---------

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2024-07-27 11:44:22 -05:00
electron-roller[bot]
b3d52c01e8 chore: bump node to v20.16.0 (main) (#43029)
* chore: bump node in DEPS to v20.16.0

* test: skip unstable shadow realm gc tests

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

* test: extend env for `test-node-output-errors`

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

* src: fix typo in env.cc

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

* src: reset `process.versions` during pre-execution

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

* chore: fixup patch indices

* src,permission: --allow-wasi & prevent WASI exec

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

* tls: use SSL_get_peer_tmp_key

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

* deps: update c-ares to 1.29.0

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

* src: account for OpenSSL unexpected version

* crypto: fix propagation of "memory limit exceeded"

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

* process: add process.getBuiltinModule(id)

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

* windows 32bit: config change callback needs to be stdcall

8f265c9d51

* fix: building with UNICODE

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

---------

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: Keeley Hammond <khammond@slack-corp.com>
2024-07-26 12:52:05 -04:00
BILL SHEN
77ba40bc01 chore: avoid crash while notification removal (#43040)
* avoid crash of operation on an invalid entry while erase set iterator.

* fix notification removal crash due to the nullptr presenter

---------

Co-authored-by: bill.shen <shenyb32768@gmail.com>
2024-07-26 15:34:40 +02:00
Keeley Hammond
2fd04a78a1 fix: revert BrowserWindow unresponsive handling refactor (#43034)
* Revert "refactor: JSify BrowserWindow unresponsive handling (#37902)"

This reverts commit 67ba30402b.

* chore: remove BrowserWindow::SetTitleBarOverlay

---------

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2024-07-25 13:02:02 -07:00
electron-appveyor-updater[bot]
0886d2f50f build: update appveyor image to latest version (#43021)
Co-authored-by: electron-appveyor-updater[bot] <161660339+electron-appveyor-updater[bot]@users.noreply.github.com>
2024-07-25 15:21:02 -04:00
Charles Kerr
660872c048 refactor: move safe_storage functions into anonymous namespace (#43032) 2024-07-25 13:18:13 -05:00
Shelley Vohr
976f5d1b75 fix: File System API permissions should reset on WebContents destruction (#43009)
fix: active File System API permissions should reset on WebContents destruction
2024-07-25 09:53:30 -04:00
Charles Kerr
aa23198ad8 chore: remove more unused #include calls (#43000)
* chore: in shell/renderer/renderer_client_base.h, remove include media/base/key_systems_support_registration.h

last use removed in c670e38b (##41610)

* chore: iwyu electron/fuses.h

* chore: iwyu media/base/video_frame.h

* chore: iwyu base/functional/callback.h

* chore: iwyu base/task/cancelable_task_tracker.h

* chore: iwyu shell/browser/draggable_region_provider.h

* chore: iwyu shell/browser/ui/inspectable_web_contents_view.h

* chore: iwyu ui/aura/window.h

* chore: iwyu ui/base/win/shell.h

* chore: iwyu ui/display/win/screen_win.h

* chore: iwyu ui/gfx/geometry/insets.h

* chore: iwyu ui/display/display.h

* chore: iwyu ui/gfx/geometry/skia_conversions.h

* chore: iwyu ui/gfx/geometry/rect_conversions.h

* chore: iwyu ui/gfx/geometry/point.h

* chore: iwyu ui/gfx/scoped_canvas.h

* chore: iwyu ui/gfx/image/image.h

* chore: iwyu ui/accessibility/ax_node_data.h

* chore: iwyu ui/views/animation/ink_drop_highlight.h

* chore: iwyu ui/gfx/font_list.h

* chore: iwyu ui/linux/nav_button_provider.h

* chore: iwyu shell/browser/ui/views/frameless_view.h

* chore: iwyu services/metrics/public/cpp/ukm_source_id.h

* chore: iwyu net/http/http_util.h

* chore: iwyu net/base/mime_util.h

* chore: iwyu content/public/common/content_client.h

* chore: iwyu <list>

* chore: iwyu <optional>

* chore: iwyu <memory>

* chore: iwyu base/files/file_path.h

* chore: iwyu ui/base/cursor/cursor.h

* chore: iwyu build/build_config.h

* chore: iwyu content/public/browser/web_contents.h

* chore: iwyu shell/browser/hid/hid_chooser_context.h

* chore: iwyu shell/common/platform_util.h

* chore: iwyu base/task/single_thread_task_runner.h

* chore: iwyu content/browser/renderer_host/render_widget_host_impl.h

* chore: iwyu content/public/browser/render_widget_host.h

* chore: iwyu shell/browser/electron_browser_context.h

* chore: iwyu content/public/browser/web_contents_observer.h

* chore: iwyu content/public/browser/render_frame_host.h

* chore: iwyu content/public/browser/media_stream_request.h

* chore: iwyu chrome/common/chrome_paths.h

* chore: iwyu chrome/browser/icon_manager.h

* chore: iwyu printing/print_settings.h

* chore: iwyu renderer/pepper_helper.h

* chore: iwyu shell/browser/api/process_metric.h

* chore: iwyu shell/browser/electron_browser_client.h

* chore: iwyu shell/browser/electron_browser_context.h

* chore: iwyu shell/browser/api/electron_api_session.h

* chore: iwyu shell/browser/api/electron_api_app.h

* chore: iwyu shell/browser/ui/views/client_frame_view_linux.h

* chore: iwyu shell/browser/native_window_views.h

* chore: iwyu base/win/windows_version.h

* chore: iwyu shell/common/electron_paths.h

* chore: iwyu content/public/common/content_switches.h

* chore: iwyu third_party/skia/include/core/SkRRect.h

* chore: iwyu third_party/skia/include/core/SkBitmap.h

* chore: iwyu third_party/skia

* chore: iwyu shell/browser/osr/osr_host_display_client.h

* chore: iwyu shell/browser/login_handler.h

* chore: iwyu shell/browser/javascript_environment.h

* chore: iwyu shell/browser/event_emitter_mixin.h

* fix: mac

* fix: mac

* chore: iwyu base/nix/xdg_util.h

* fix: win

* fix: win

* fix: win

* fix: win
2024-07-25 11:25:45 +02:00
Shelley Vohr
cfdcf48e1b fix: desktopCapturer breaks BrowserWindow resizable on macOS (#43013)
* fix: desktopCapturer breaks BrowserWindow resizable on macOS

* test: oops fix showing
2024-07-25 11:17:37 +02:00
David Sanders
c2c079dc82 build: update docs-parser and typescript-definitions packages (#43038)
build: update docs-parser and typescript-definitions pacakges
2024-07-25 11:00:32 +02:00
David Sanders
f979d4c742 test: add test for nodeCliInspect fuse (#43035) 2024-07-25 11:00:02 +02:00
Charles Kerr
df524c6eca chore: use v8::Local<>, not v8::Handle<> (#43019)
v8::Handle is an alias for v8::Local that "is kept around for historical
reasons" and is disabled when V8_IMMINENT_DEPRECATION_WARNING is defined
2024-07-24 18:24:07 -05:00
Shelley Vohr
5669a40d5c feat: add transparency checking to nativeTheme (#42862)
* feat: add transparency checking to nativeTheme

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

* chore: deprecate previous function

* chore: fix lint
2024-07-24 14:38:22 +02:00
Shelley Vohr
9fc760bc4c docs: note macOS fullscreen events in fullscreen query (#42997)
docs: note macOS fullscreen events in fs query
2024-07-23 16:40:59 -04:00
electron-roller[bot]
3e22f992b0 chore: bump chromium to 128.0.6611.0 (main) (#42779)
* chore: bump chromium in DEPS to 128.0.6577.0

* chore: bump chromium in DEPS to 128.0.6579.0

* 5675706: Reland "Reland "Reland "Reland "Add toolchains without PartitionAlloc-Everywhere for dump_syms et al""""

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

* 5668597: [PDF Ink Signatures] Prompt download menu on save when there are edits

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

* 5677014: Reland "Pull data_sharing_sdk from CIPD"

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

* chore: fixup patch indices

* chore: bump chromium in DEPS to 128.0.6581.0

* chore: bump chromium in DEPS to 128.0.6583.0

* update patches

* 5455480: [Extensions] Allow service worker requests to continue without a cert

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

* try to get some debugging output from script/push-patch.js

* chore: bump chromium in DEPS to 128.0.6585.0

* chore: bump chromium in DEPS to 128.0.6587.0

* update patches

* chore: bump chromium in DEPS to 128.0.6589.0

* more patch work

* maybe over here?

* chore: update patches

* 5673207: [HTTPS Upgrades] Disable in captive portal login webview

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

* 5636785: Extensions: WAR: manifest.json's use_dynamic_url requires a dynamic url

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

* chore: bump chromium in DEPS to 128.0.6591.0

* 5665458: Trigger WN2 page when feature is enabled

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

* update patches

* chore: bump chromium in DEPS to 128.0.6593.0

* chore: bump chromium in DEPS to 128.0.6595.0

* chore: bump chromium in DEPS to 128.0.6597.0

* (patch update) 5694586: [compile hints] Remove the usage of v8::Isolate::SetJavaScriptCompileHintsMagicEnabledCallback API
https://chromium-review.googlesource.com/c/chromium/src/+/5694586

* update patches

* 5691287: Reland "Change blink::WebKeyboardEvent to use std::array in is members"
https://chromium-review.googlesource.com/c/chromium/src/+/5691287

The code changed here is modeled after code in `content/renderer/pepper/event_conversion.cc` that was also modified in this CL, so I took the same approach.

* 5529018: Cleanup EnableWebHidOnExtensionServiceWorker flag
https://chromium-review.googlesource.com/c/chromium/src/+/5529018

* 5526324: [Code Health] Add deprecation comment for base::SupportsWeakPtr.
https://chromium-review.googlesource.com/c/chromium/src/+/5526324

Note that this CL actually does make `SupportsWeakPtr` strictly restricted to existing implementations, no new ones. We could add a patch to add ourselves to this list, but it looks like we'll have to refactor this anyways in the near future. Since the refactor seems straightforward, let's try that first.

* chore: bump chromium in DEPS to 128.0.6598.0

* chore: update patches

* 5704737: Rename ExclusiveAccessContext::GetActiveWebContents to avoid conflict
https://chromium-review.googlesource.com/c/chromium/src/+/5704737

* chore: bump chromium in DEPS to 128.0.6601.0

* chore: update patches

* Add `base::StringPiece` header includes

Chromium is working on replacing `base::StringPiece` with `std::string_view`. (See the Chromium Bug below.) They're currently running mass codemods (across many multiple changes) to replace uses of `StringPiece` with `string_view`, including removing the header include for `StringPiece` in those files. This cascades down to our files that were implicitly depending on those includes through some other include.

They're on track to eventually deprecate and remove `StringPiece` so our code should be converted, but that can be done as an upgrade follow-up task. For now, adding the header back to files that need it should suffice for minimal upgrade changes.

Chromium Bug: https://issues.chromium.org/issues/40506050

* 5702737: GlobalRequestID: Avoid unwanted inlining and narrowing int conversions
https://chromium-review.googlesource.com/c/chromium/src/+/5702737

contender for smallest commit 2024

* 5706534: Rename GlobalFeatures to GlobalDesktopFeatures.
https://chromium-review.googlesource.com/c/chromium/src/+/5706534

* 5691321: ui: remove params variants of SelectFile listener functions
https://chromium-review.googlesource.com/c/chromium/src/+/5691321

* 5714949: [Extensions] Display re-enable dialog for MV2 disabled stage
https://chromium-review.googlesource.com/c/chromium/src/+/5714949

* chore: update libc++ filenames

* patch: disable scope reuse & associated dchecks in v8 (hopefully temp, upgrade follow-up)

* fixup! Add `base::StringPiece` header includes

* update MAS patch

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

* chore: bump chromium in DEPS to 128.0.6603.0

* chore: update patches

* 5713258: Reland "Preparation for decoupling creation/initialization of context"
https://chromium-review.googlesource.com/c/chromium/src/+/5713258

When destroying a context, it must already be shutdown, and this change enforces it with a new CHECK.

We were overriding `BrowserContextKeyedServiceFactory::BrowserContextShutdown` with an empty implementation, which differed from the default implementation that notifies the `KeyedServiceFactory` that the context has shutdown. Since we were missing this notification, the CHECK would later trip when the service was being destoryed because it was not registered as shutdown when it was shutdown.

* chore: bump chromium in DEPS to 128.0.6605.2

* chore: update patches

* refactor: linux open/save dialog patch

Our existing implementation was relying on an opaque `void* params` parameter that was passed through `ui::SelectFileDialog`.

Recently, that parameter has been getting removed:
- 5691321: ui: remove params variants of SelectFile listener functions | https://chromium-review.googlesource.com/c/chromium/src/+/5691321
- 5709097: ui: remove SelectFileDialog impl params | https://chromium-review.googlesource.com/c/chromium/src/+/5709097
- https://issues.chromium.org/issues/340178601 "reconsider SelectFileDialog"

This restructures the patch to work with mostly the same mechanics, but directly on the `ui::SelectFileDialog` object. This nets us some wins in terms of a smaller patch.

* 5713262: DevTools UI binding AIDA client event returns response
https://chromium-review.googlesource.com/c/chromium/src/+/5713262

* fixup! refactor: linux open/save dialog patch

* chore: bump chromium in DEPS to 128.0.6606.0

* chore: update patches

* fixup! refactor: linux open/save dialog patch

* chore: bump chromium in DEPS to 128.0.6607.0

* chore: update printing.patch

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

* fix: pwd error in electron-test, nan-test

fix: unshallow depot_tools before 3-way apply

* chore: e patches all

* fixup! fix: pwd error in electron-test, nan-test

* chore: bump chromium in DEPS to 128.0.6609.0

* chore: bump chromium in DEPS to 128.0.6611.0

* chore: update patches

* chore: update libcxx filenames

---------

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: Jeremy Rose <nornagon@nornagon.net>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: clavin <clavin@electronjs.org>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: Alice Zhao <alice@makenotion.com>
2024-07-23 08:59:44 -07:00
dependabot[bot]
364631ee0b build(deps): bump github/codeql-action from 3.25.12 to 3.25.13 (#42999)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.12 to 3.25.13.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](4fa2a79536...2d790406f5)

---
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-07-23 12:38:02 +02:00
Shelley Vohr
3c9d4452c6 docs: improve desktop capture example (#42957) 2024-07-23 11:55:23 +02:00
dependabot[bot]
daa8244cdf build(deps): bump actions/upload-artifact from 4.3.3 to 4.3.4 (#42998)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.3 to 4.3.4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v4.3.3...0b2256b8c012f0828dc542b3febcab082c67f72b)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-23 10:18:36 +02:00
Shelley Vohr
8454f4e49f feat: emit an event when accessing restricted path in File System Access API (#42561)
* fix: show a dialog when accessing restricted path in File System Access API

* fix: allow overriding initial blocked paths

* docs: fix doc

* Update docs/api/session.md

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

* fix: change block to deny for consistency

---------

Co-authored-by: Erick Zhao <erick@hotmail.ca>
2024-07-22 12:18:15 +02:00
Charles Kerr
60c4c9fec6 chore: remove unused #includes (#42971)
* chore: iwyu buildflags.h

* chore: iwyu dictionary.h

* chore: iwyu arguments.h

* chore: iwyu values.h

* chore: iwyu compiler_specific.h

* chore: iwyu binder_map.h

* chore: iwyu <vector>

* chore: iwyu <set>

* chore: iwyu raw_ptr

* chore: iwyu gfx/canvas.h

* chore: iwyu gfx/color_utils.h

* chore: iwyu base/strings/stringprintf.h

* chore: iwyu base/task/thread_pool.h

* chore: iwyu base/no_destructor.h

* chore: iwyu base/path_service.h

* chore: iwyu base/files/file_pathh

* chore: iwyu base/strings/sys_string_conversions.h

* chore: iwyu base/logging.h

* chore: iwyu base/command_line.h

* chore: iwyu base/files/file_util.h

* chore: iwyu base/files/scoped_file.h

* chore: iwyu base/strings/utf_string_conversions.h

* chore: iwyu base/environment.h

* chore: iwyu base/scoped_observation.h

* chore: iwyu base/strings/string_split.h

* chore: iwyu base/strings/pattern.h

* chore: iwyu base/json/string_escape.h

* chore: iwyu base/json/json_reader.h

* chore: iwyu base/memory/singleton.h

* chore: iwyu base/observer_list.h

* chore: iwyu base/timer/timer.h

* fixup! chore: iwyu values.h

* chore: iwyu shell/browser/browser.h

* chore: iwyu base/stl_util.h

* chore: iwyu base/strings/string_util.h

* chore: iwyu shell/browser/javascript_environment.h

* chore: iwyu base/memory/ref_counted.h

* chore: iwyu base/environment.h

* chore: iwyu content/public/browser/browser_thread.h

* chore: remove unused typedef gin_helper::EventEmitter::ValueArray

* chore: iwyu gin/wrappable.h

* chore: iwyu shell/common/gin_helper/function_template_extensions.h

* chore: iwyu shell/common/gin_converters/login_item_settings_converter.h

* chore: iwyu shell/common/gin_helper/arguments.h

* chore: iwyu ui/gfx/skia_util.h

* chore: iwyu ui/gfx/geometry/rect.h

* chore: iwyu ui/gfx/image/image.h

* chore: iwyu base/strings/strcat.h

* chore: iwyu ui/native_theme/native_theme.h

* fixup! chore: iwyu shell/browser/javascript_environment.h

* fixup! chore: iwyu gfx/canvas.h

* fixup! chore: iwyu content/public/browser/browser_thread.h

* fixup! chore: iwyu ui/native_theme/native_theme.h

* fixup! chore: iwyu ui/native_theme/native_theme.h
2024-07-22 11:31:32 +02:00
David Sanders
296a558c32 build: update @electron/lint-roller to 2.3.0 (#42950) 2024-07-22 10:45:49 +02:00
Charles Kerr
780677e00f chore: remove unused BaseWindow::GetWeakPtr() (#42973)
last caller removed in 67ba3040 (#37902)
2024-07-22 10:44:34 +02:00
Charles Kerr
8c8a7709e6 chore: remove unused WrappableBase::AfterInit() (#42974)
last caller removed in 6159066c (#22916)
2024-07-22 10:44:21 +02:00
Charles Kerr
c72a714dd5 refactor: remove WindowListObserver::OnWindowAdded() (#42979)
refactor: remove WindowListObserver::OnWindowRemove()

these have never been used
2024-07-22 10:44:08 +02:00
Charles Kerr
7a101a1c4b refactor: remove unused web contents preferences methods (#42947)
* chore: remove unused WebContentsPreferences::ShouldDisableDialogs()

* chore: remove unused WebContentsPreferences::ShouldUseSafeDialogs()

caller removed in 85bc005c

* chore: remove unused WebContentsPreferences::GetSafeDialogsMessage()

caller removed in 85bc005c

* refactor: WebContentsPreferences::GetPreloadPath() now returns a std::optional<base::FilePath>

* refactor: make WebContentsPreferences::last_preference() const
2024-07-19 12:26:57 -05:00
Charles Kerr
5b7ed6097e chore: remove unused typedef CreateDownloadPathCallback (#42949)
chore: remove unused typedef ElectronDownloadManagerDelegate::CreateDownloadPathCallback

use was removed in e3c580e9
2024-07-19 11:49:58 -05:00
Charles Kerr
32a74b0942 chore: remove unused field ElectronBrowserClient::browser_main_parts_ (#42956)
chore: remove unused field ElectronBrowserClient::browser_main_parts_

caller removed in 48d0b09a
2024-07-19 11:48:52 -05:00
Charles Kerr
5773a2dce6 fix: dangling raw_ptr NodeBindings::uv_env_ (#42933) 2024-07-17 23:30:09 -05:00
Charles Kerr
bc345db351 fix: dangling raw_ptr<views::View> in api::View (#42929) 2024-07-17 21:31:48 -05:00
David Sanders
ce45450c28 ci: refactor non-maintainer lockfile change check to request changes (#42855) 2024-07-17 12:28:08 -07:00
arno renevier
81bdba67ec feat: Implement password delegate for NSS (#41205)
* feat: Implement password delegate for NSS (#41188)

Introduce an app event client-certificate-request-password. It allows
the user to display a UI to prompt for the password.

An alternative would have been to implement a class similar to
CryptoModulePasswordDialogView, to provide the UI. This might have been
simpler for the user, comparing to letting them implement the UI. But it
seems like electron does not have an i18n framework, so it's not
possible to provide a locale aware UI.

* fix lint:markdown error

* address review comments

* use a trampoline handler in JS. The api exposed is now app.setClientCertRequestPasswordHandler
* use properties on the Event object instead of positional parameters
* remove ChromeNSSCryptoModuleDelegate::OnPassword in favor of args->GetNext(&password_)

* address review comments second round

- backslash escape parametrized TypeScript
- rename hostName param to hostname
- use base::ScopedAllowBaseSyncPrimitivesForTesting
- and then, rename ChromeNSSCryptoModuleDelegate to ElectronNSSCryptoModuleDelegate

* Update docs/api/app.md

Co-authored-by: Sam Maddock <samuel.maddock@gmail.com>

* Update docs/api/app.md

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

---------

Co-authored-by: Arno Renevier <arnaud@switchboard.app>
Co-authored-by: Sam Maddock <samuel.maddock@gmail.com>
Co-authored-by: Erick Zhao <erick@hotmail.ca>
2024-07-17 09:48:03 -04:00
dependabot[bot]
c210ae9b33 build(deps): bump actions/download-artifact from 4.1.7 to 4.1.8 (#42831)
Bumps [actions/download-artifact](https://github.com/actions/download-artifact) from 4.1.7 to 4.1.8.
- [Release notes](https://github.com/actions/download-artifact/releases)
- [Commits](65a9edc588...fa0a91b85d)

---
updated-dependencies:
- dependency-name: actions/download-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-17 15:18:41 +02:00
dependabot[bot]
734ba50ee1 build(deps): bump amannn/action-semantic-pull-request from 5.5.2 to 5.5.3 (#42834)
build(deps): bump amannn/action-semantic-pull-request

Bumps [amannn/action-semantic-pull-request](https://github.com/amannn/action-semantic-pull-request) from 5.5.2 to 5.5.3.
- [Release notes](https://github.com/amannn/action-semantic-pull-request/releases)
- [Changelog](https://github.com/amannn/action-semantic-pull-request/blob/main/CHANGELOG.md)
- [Commits](cfb60706e1...0723387faa)

---
updated-dependencies:
- dependency-name: amannn/action-semantic-pull-request
  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-07-17 15:18:33 +02:00
wujinli
9023707b9b fix: crash with creating OffScreenWebContentsView (#42920)
On the Mac platform, OffScreenWebContentsView uses Automatic Reference
Counting (ARC) to handle the lifecycle of offScreenView_. However, this
private member variable is not initialized and its value is undefined.
In some cases, it is initialized to a garbage value, which may cause ARC
to release the value incorrectly, resulting in a crash.
2024-07-17 13:09:32 +02:00
dependabot[bot]
2875fab452 build(deps): bump actions/setup-node from 4.0.2 to 4.0.3 (#42917)
Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4.0.2 to 4.0.3.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](60edb5dd54...1e60f620b9)

---
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-07-17 11:36:52 +02:00
Shelley Vohr
fd907bc0a3 fix: getUserMedia needs macOS system permissions check (#42899)
fix: getUserMedia needs macOS system permissions check

Closes https://github.com/electron/electron/issues/42714
Closes https://github.com/electron/electron/issues/29861
2024-07-17 11:30:05 +02:00
Sam Maddock
c7709747d0 ci: upload test artifacts (#42925)
* Upload test-artifacts directory

* Rename test artifacts directory to avoid conflicts

* Update .gitignore

* Upload test artifacts

* Update .gitignore

* Update move-artifacts.sh

* Update artifacts.ts

* Update pipeline-segment-electron-test.yml

* Make output less noisy

* reduce artifact image size
2024-07-16 22:56:56 -07:00
Sam Maddock
778d3098a0 feat: customize border radius of Views (#42320)
* feat: add View#setBorderRadius

test: initial setBorderRadius tests

fix: robustly set border radius

chore: add PAUSE_CAPTURE_TESTS for easier screencap dev

feat: add view border radius support

test: view border radius

refactor: cleanup view code

* maybe delay capture to fix tests?

* refactor: retry screen captures in an attempt to fix flakiness

* refactor: ScreenCapture constructor no longer async

* increase screen capture timeout, feels a little short

* refactor: move rounded rect util into chromium_src

* skip some capture tests on mas
2024-07-16 20:16:25 -04:00
Shelley Vohr
cbd11bb605 fix: BrowserWindow.setBackgroundColor should work with transparency (#42824)
fix: BrowserWindow.setBackgroundColor should work with transparency
2024-07-16 20:11:49 +02:00
Calvin
81351dd1a9 build: fix clang format location helper (again) (#42911) 2024-07-16 11:21:18 -04:00
dependabot[bot]
f575e52586 build(deps): bump github/codeql-action from 3.25.11 to 3.25.12 (#42916)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.11 to 3.25.12.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](b611370bb5...4fa2a79536)

---
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-07-16 11:25:42 +02:00
Theo Gravity
bab3fcc9ab feat: add getPercentComplete / getCurrentBytesPerSecond / getEndTime to DownloadItem (#42805)
feat: getCurrentSpeed / getPercentComplete / getEndTime on DownloadItem
2024-07-15 19:32:44 -04:00
David Sanders
0fddfd1b28 ci: auto comment on new issues for unsupported majors (#42856) 2024-07-15 15:25:47 -04:00
Keeley Hammond
c006e129b3 build: remove CircleCI (#42844)
* build: remove CircleCI

* chore: remove remaining CircleCI references
2024-07-15 14:26:41 -04:00
reito
f173a0637a chore: fix npm run lint not working on Windows (#42281)
* fix: fixed the `npm run lint` not working on Windows.

* chore: more fixes for lint on Windows

* chore: revert change to patch linting

---------

Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
2024-07-15 18:08:33 +02:00
Shelley Vohr
ae1a684d10 fix: iteration issues in hid RevokeEphemeralDevicePermission (#42851)
fix: iteration issues in hid RevokeEphemeralDevicePermission
2024-07-15 10:41:38 -04:00
Robo
1e1dc22e16 fix: crash when resolving proxy due to network service restart (#42878) 2024-07-15 17:46:24 +09:00
Shelley Vohr
bbd7f4a5ad fix: File System Access API should remember last picked directory (#42850) 2024-07-14 18:43:37 +02:00
Calvin
493bc3ac9d fix: desktopCapturer and screen display ids should match (#42883)
* fix: `desktopCapturer` and `screen` display IDs should match

* simplify wide-to-utf8 conversion

* remove unnecessary include
2024-07-14 09:51:57 +02:00
John Kleinschmidt
3a6a201534 build: fixup GHA running on fork PRs (#42880)
* chore: update build-tools for GHA

* chore: don't rely on environment variables for source cache location
2024-07-13 13:38:03 -04:00
Samuel Attard
53d7cca7a2 build: use new arc runner names (#42881) 2024-07-12 22:22:49 -07:00
David Sanders
7dd6d7697d chore: allow multiple OS selection on bug reports (#42854) 2024-07-11 13:23:43 -07:00
John Kleinschmidt
514e9bbb04 build: update build-tools for GHA (#42870)
chore: update build-tools for GHA
2024-07-11 16:18:26 -04:00
Shelley Vohr
dab006b1cf ci: fix Nan test failure on Linux (#42863)
ci: Nan test failure on Linux
2024-07-11 10:47:02 -04:00
Shelley Vohr
4e10eeb87e fix: desktopCapturer and screen source ids should match screen ids (#42781)
* fix: desktopCapturer screen source ids should match screen ids

* test: add a regression test
2024-07-10 16:32:29 -07:00
Shelley Vohr
fa6ce4f0f8 fix: High Contrast mode not working on Windows (#42853)
Closes https://github.com/electron/electron/issues/42609
Refs https://chromium-review.googlesource.com/c/chromium/src/+/5324688
Refs https://chromium-review.googlesource.com/c/chromium/src/+/5368321
2024-07-10 15:14:02 -07:00
Charles Kerr
f9d94211bb refactor: do not subclass ElectronSpeechRecognitionManagerDelegate from SpeechRecognitionEventListener (#42806)
All the listener functions are empty stubs (and have been since d4e3c39)
so it doesn't seem like we need a listener?

SpeechRecognitionManagerDelegate declares this method:

> // Checks whether the delegate is interested (returning a non nullptr
> // ptr) or not (returning nullptr) in receiving a copy of all sessions
> // events. This is called on the IO thread.
> virtual SpeechRecognitionEventListener* GetEventListener() = 0;

This PR has ElectronSpeechRecognitionManagerDelegate stop subclassing
from the Listener and changes GetEventListener() to return nullptr.
2024-07-10 15:32:50 +02:00
electron-roller[bot]
48fc352bcf chore: bump node to v20.15.1 (main) (#42841)
* chore: bump node in DEPS to v20.15.1

* chore: update patches

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
2024-07-10 14:52:06 +02:00
John Kleinschmidt
1a9f99b3ed chore: speed up azcopy on src cache (#42742) 2024-07-09 16:20:18 -04:00
dependabot[bot]
34e7648478 build(deps): bump github/codeql-action from 3.25.10 to 3.25.11 (#42832)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.10 to 3.25.11.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](23acc5c183...b611370bb5)

---
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-07-09 11:27:37 +02:00
dependabot[bot]
c2ea3881fc build(deps): bump actions/upload-artifact from 4.3.3 to 4.3.4 (#42833)
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.3 to 4.3.4.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](65462800fd...0b2256b8c0)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-09 11:25:07 +02:00
David Sanders
170b72ccfa ci: fix CircleCI config (#42829)
* ci: fix CircleCI config

* ci: fix syntax error
2024-07-08 21:38:05 -04:00
Shelley Vohr
e54ffdf7ed build: clean up BoringSSL patch (#42730) 2024-07-08 16:35:54 -04:00
Charles Kerr
e9db02948e fix: multiple move() calls on the same unique_ptr (#42788) 2024-07-08 11:04:35 -04:00
Charles Kerr
27e3273f0a refactor: minor electron browser context cleanup (#42789)
* refactor: make DevicePermissionMap private to electron::ElectronBrowserContext

refactor: make PartitionPath private to electron::ElectronBrowserContext

* refactor: remove unused forward declarations of v8 classes

* chore: forward declare gin::Arguments

* refactor: use unique_ptr operator bool
2024-07-08 16:49:41 +02:00
electron-appveyor-updater[bot]
e99e554655 build: update appveyor image to latest version (#42771)
Co-authored-by: electron-appveyor-updater[bot] <161660339+electron-appveyor-updater[bot]@users.noreply.github.com>
2024-07-08 12:56:52 +02:00
Charles Kerr
5ff91159cd fix: dangling raw_ptr ElectronBrowserContext::extension_system_ (#42785)
The extension system is freed by the DestroyBrowserContextServices()
call in the destructor, so we need to zero out the pointer to avoid
a dangling raw_ptr error.
2024-07-08 12:56:03 +02:00
Charles Kerr
e89da2bad2 fix: dangling raw_ptr<Session> in UserDataLink (#42786)
* fix: dangling raw_ptr<Session> in UserDataLink

* chore: make linter happy
2024-07-08 12:55:48 +02:00
Shelley Vohr
cb2e7f130b fix: potentially closed webContents in BrowserView (#42633) 2024-07-08 12:13:53 +02:00
Shelley Vohr
2f4a46f47a fix: video and audio capture should be separate (#42775) 2024-07-08 10:11:40 +02:00
Shelley Vohr
ac074a5548 refactor: run Windows SelectFileDialog out of process (#42758)
* refactor: run Windows SelectFileDialog out of process

* fix: add missing IS_WIN guard

* refactor: use upstream SelectFileDialogFactory

* fix: build chrome/services/util_win/public/mojom target
2024-07-05 11:36:44 +02:00
electron-roller[bot]
19e030a6e8 chore: bump chromium to 128.0.6573.0 (main) (#42766)
* chore: bump chromium in DEPS to 128.0.6573.0

* chore: update patches

* 5665092: Remove default arguments on virtual functions in WebContents

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

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2024-07-05 09:51:21 +02:00
Shelley Vohr
5bff883c40 chore: clean up outdated goma references (#42762) 2024-07-05 09:44:34 +02:00
Shelley Vohr
25eb1bd4b2 build: remove all publish & build on macOS (#42763) 2024-07-03 15:17:17 -04:00
electron-roller[bot]
07e6b34a07 chore: bump chromium to 128.0.6571.0 (main) (#42749)
* chore: bump chromium in DEPS to 128.0.6571.0

* 5636652: [4/n] Introduce RenderInputRouterClient and move InputRouterClient implementation to RenderInputRouter.

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

* 5655811: Revert "Reland "Reland "Add toolchains without PartitionAlloc-Everywhere for dump_syms et al"""

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

* 5581006: [tracing] Forward startup tracing config as shmem

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

* chore: fixup patch indices

* 5608450: [Views AX] Move Image Auto Captioning strings to ui/

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

* 5648900: [Extensions] Move ExtensionAPIEnabledForServiceWorkerScript()

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

* 5651681: Remove Web Speech API profanity masking

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

* 5651361: `content::RenderFrame::GetBrowserInterfaceBroker`: return a const-ref.

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

* 5604943: Start capture of toolbar after gesture end events are received

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

* 5624392: [BRP] Enforce raw_ptr/ref in Renderer code

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

* 5659259: Portals: Remove WebContentsView::TransferDragSecurityInfo

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

* 5230721: Move ComposeStatus to components/compose

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

* 5647894: [api] Cleanup usages of v8::ReturnValue<void>::Set[NonEmpty](..)

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

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2024-07-03 11:15:35 -04:00
Charles Kerr
cf5fb4505e refactor: make session::browser_context_ a const raw_ref (#42728)
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-07-02 17:53:36 -04:00
Erick Zhao
0a8eae9019 docs(autoUpdater): document static storage strategy (#42690)
* docs: `autoUpdater` static storage strategy

* summary must be followed by newline

* lint: fix whitespace for code blocks

* lint: `js` -> `javascript`

* bump

* `javascript` -> `js`

* bump
2024-07-02 19:06:38 +02:00
Erick Zhao
6cca75ac76 docs(autoUpdater): signing is only a pre-req on macOS (#42709)
docs: correctly state that signing is a pre-req for autoUpdater only on macOS
2024-07-02 19:06:25 +02:00
electron-appveyor-updater[bot]
67d7944271 build: update appveyor image to latest version (#42748)
Co-authored-by: electron-appveyor-updater[bot] <161660339+electron-appveyor-updater[bot]@users.noreply.github.com>
2024-07-02 10:38:43 -04:00
Shelley Vohr
1729a9868c fix: use BlockedRequest struct to handle webRequest data (#42647)
Fixes an issue where Chromium could crash on a dangling unretained pointer in one of several webRequest functions. This was happening as a result of the fact that we had outstanding blocking requests continue to reference state owned by ProxyingWebsocket and ProxyingURLLoaderFactory after the requests were destroyed.

This had been going on for a few years, and was likely leading to some ongoing memory issues. To fix this, we need to ensure that all state is cleaned up in OnRequestWillBeDestroyed. I chose to create a new BlockedRequest struct to do so, which approximates the approach that upstream takes. The complexities of doing so also made our templated approach more trouble than it felt worth, so i pried that apart into separate handlers.
2024-07-02 14:02:49 +02:00
electron-roller[bot]
8a8241163d chore: bump chromium to 128.0.6558.0 (main) (#42413)
* chore: bump chromium in DEPS to 127.0.6526.0

* chore: update network_service_allow_remote_certificate_verification_logic.patch

manually apply patch due to minor upstream shear

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

* chore: update fix_move_autopipsettingshelper_behind_branding_buildflag.patch

No manual changes; patch applied with fuzz 1

* chore: update refactor_expose_file_system_access_blocklist.patch

No manual changes; patch applied with fuzz 2

* chore: update revert_heap_add_checks_position_info.patch

No manual changes; patch applied with fuzz 1

* chore: e patches all

* chore: bump chromium in DEPS to 127.0.6527.0

* chore: update patches

* chore: bump chromium in DEPS to 127.0.6529.0

* chore: bump chromium in DEPS to 127.0.6531.0

* chore: update patches

* 5596349: Remove PDF OCR toggle from settings.

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

* 5585932: [video-pip] Add minimize button to video picture-in-picture window

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

* 5604487: Reland "[api] Deprecate v8::FunctionCallbackInfo::Holder() for real"

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

* 5581721: [DEPS] Update clang-format location

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

* 5597904: [Windows] Remove ConvertToLongPath from Sandbox Utilities.

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

ResolveNTFunctionPtr was removed in this CL.

* fix: visibility state specs on macOS

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

* Revert "fix: visibility state specs on macOS"

This reverts commit 1eee30a33d.

* temp: disable occlusion checker on macOS

* chore: bump chromium in DEPS to 128.0.6535.0

* chore: update patches

* [Extensions] Move some scriptings files out of the API directory.

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

* fix[node]: do not use soon-to-be-deprecated V8 API

* fix: update api_remove_allcan_read_write.patch

* chore: update patches

* chore: update patches

* chore: fix lf mismatch in api_remove_allcan_read_write.patch

* chore: update patches

* chore: bump chromium in DEPS to 128.0.6538.0

* chore: update v8 patches

* chore: update patches

* ui/gl/features.gni: Set use_egl=true unconditionally.

Refs https://chromium-review.googlesource.com/c/chromium/src/+/5569748
Refs https://issues.chromium.org/issues/344606399

* chore: bump chromium in DEPS to 128.0.6540.0

* chore: bump chromium in DEPS to 128.0.6541.0

* chore: update patches

* chore: fix nan read/write patch

* chore: bump chromium in DEPS to 128.0.6543.0

* 5626254: Use sandbox_type instead of process_type | https://chromium-review.googlesource.com/c/chromium/src/+/5626254

* chore: update patches

* rework nan patches

* 5621488: Apply consistent naming conventions to zoom values | https://chromium-review.googlesource.com/c/chromium/src/+/5621488

* chore: bump chromium in DEPS to 128.0.6544.0

* 5605693: Remove files from third_party/ninja | https://chromium-review.googlesource.com/c/chromium/src/+/5605693

* chore: update patches

* chore: maybe fix nan patch, part 3

* chore: delete nan patch

* chore: re-add nan patch (attempt 2)

* chore: add test patch

* fixup! add test patch

* chore: bump chromium in DEPS to 128.0.6549.0

* chore: bump chromium in DEPS to 128.0.6551.0

* 5637699: Add command line to ASAN Additional Info section | https://chromium-review.googlesource.com/c/chromium/src/+/5637699

* chore: update patches

* chore: bump chromium in DEPS to 128.0.6553.0

* chore: bump chromium in DEPS to 128.0.6555.0

* fix: add property query interceptors

* chore: bump chromium in DEPS to 128.0.6557.0

* 5583182: Automatic Fullscreen: Prototype Permissions API query support | https://chromium-review.googlesource.com/c/chromium/src/+/5583182

* 5613297: Move render input router and related dependencies to //components/input | https://chromium-review.googlesource.com/c/chromium/src/+/5613297

* chore: update patches

* test: skip methodswithdata-test.js nan test

* chore: bump chromium in DEPS to 128.0.6558.0

* chore: update patches

* build: reference correct ninja cipd ref

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

* update libcxx filenames

* refactor: CursorManager moved to //components/input

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

* refactor: spanify mojo Read/WriteData methods

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

* refactor: remove constexpr from KeyboardCodeFromKeyIdentifier

Ref: unknown

Added TODO to investigate after

* chore: update patches

* refactor: improve type safety of a11y ids

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

* chore: disable tls node tests that don't apply given boringssl tls configuration

Ref: https://boringssl-review.googlesource.com/c/boringssl/+/68487

* chore: add patch to fix nan v8 incompat with NamedPropertyHandlerConfiguration and IndexedPropertyHandlerConfiguration

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

* fix: limit subspan length per feedback

* Fix incorrect CalculateInsetsInDIP check

* 5645742: Reland "Reland "Add toolchains without PartitionAlloc-Everywhere for dump_syms et al""

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

* chore: more Windows logging

* 5617471: Add NPU blocking to chromium blocklist

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

---------

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: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: Keeley Hammond <khammond@slack-corp.com>
Co-authored-by: Alice Zhao <alice@makenotion.com>
Co-authored-by: Samuel Attard <marshallofsound@electronjs.org>
Co-authored-by: VerteDinde <vertedinde@electronjs.org>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2024-07-02 09:51:33 +02:00
Anny Yang
14303a0a71 docs: grammar fix in isBeingCaptured docs (#42692) 2024-07-01 15:01:27 -04:00
Chris Stringer
2b5342cb49 docs - Update net.md (#42691)
Update net.md

Changes heading level for net.resolveHost() entry to H3
2024-07-01 14:45:49 -04:00
Alice Zhao
e9a93a8c5c fix: setTopBrowserView focus issue with reordering (#42653)
* fix: reorder top browser view instead of adding/removing

* fix: update browserViews order

* test: add a test for setTopBrowserView
2024-07-01 11:36:04 +02:00
Keeley Hammond
efff369639 build: remove MacOS x64 from CircleCI (#42718) 2024-07-01 11:34:37 +02:00
Keeley Hammond
3ac57e17d5 build: fix clang format/lint (#42715)
* build: fix clang format path

* fix: use gclient sync instead of gclient runhooks

Refs https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/5659261

* fix: use gclient sync instead of gclient runhooks in GHA

---------

Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
2024-06-28 13:30:07 -07:00
Shelley Vohr
398dde9dfb build: use inputs for target_arch in build (#42684) 2024-06-27 08:11:10 -07:00
Shelley Vohr
32e5012017 feat: enable Windows Control Overlay on Linux (#41769) 2024-06-27 14:56:36 +02:00
David Sanders
1d4b00692d build: bump version in .nvmrc to 20 (#42668) 2024-06-27 13:46:11 +02:00
electron-roller[bot]
ec24b51808 chore: bump node to v20.15.0 (main) (#42616)
* chore: bump node in DEPS to v20.15.0

* doc: Add OpenSSL errors to API docs

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

* test: crypto-rsa-dsa testing for dynamic openssl

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

* src: allow preventing debug signal handler start

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

* cli: allow running wasm in limited vmemory with --disable-wasm-trap-handler

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

* chore: fixup indices

---------

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2024-06-27 13:34:39 +02:00
Shelley Vohr
c628de52d9 fix: defaultPath should apply on all dialog types in Linux Portal (#42655)
fix: defaultPath should apply on all dialog types in Linux Portal dialogs
2024-06-27 11:07:26 +02:00
Shelley Vohr
2b31d8459d fix: param passed to showSaveDialogSync on Linux (#42652)
fix: pass correct param to sync functions on Linux
2024-06-27 10:23:18 +02:00
Keeley Hammond
912706b23a build: strip linux release binaries (#42675) 2024-06-26 17:41:36 -07:00
Samuel Attard
b31acfb706 docs: clarify security semantics of safeStorage (#42666)
* docs: clarify security semantics of safeStorage

* Apply suggestions from code review

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

* Update safe-storage.md

* Update safe-storage.md

---------

Co-authored-by: Erick Zhao <erick@hotmail.ca>
2024-06-26 13:24:06 -07:00
Shelley Vohr
607b9b8f11 build: clean up upload-index-json error handling (#42657) 2024-06-26 09:25:58 -07:00
Keeley Hammond
a8baa6f1ad build: remove CircleCI from release pipeline (#42651)
* build: remove CircleCI from release pipeline

* build: remove IS_GHA_RELEASE and CHECK_DIST_MANIFEST
2024-06-25 14:25:04 -07:00
Shelley Vohr
3534923bd2 build: account for subjectAndDescription null in patch linting (#42636)
fix: account for subjectAndDescription null in patch linting
2024-06-24 22:32:43 -07:00
Keeley Hammond
66b8b79229 build: turn on GitHub Actions by default for all branches and pull requests (#42623)
* build: turn GitHub Actions on by default for push and pull_request

* build: try env var build-image-sha

* build: use ternery for input vs default

* build: pain

* build: modify setup to cascade build-image-sha

* build: move outputs into setup step

* build: add SAS key generation on re-run

* build: only build on push, not pull_request

* build: only build on push for main & release branches, build on PR for everything else

* build: rebase with main, handle asan build

* build: add exit 1, sha value
2024-06-24 12:06:13 +02:00
Corbin Crutchley
243be0a638 docs: fix typo in ASAR integrity docs (#42538)
Fix typo in ASAR integrity docs
2024-06-22 20:26:23 +02:00
Charles Kerr
24d6c28b5a chore: remove walkdir dev dependency (#42591) 2024-06-21 10:31:10 -04:00
George Xu
ba8ad4716b feat: expose system preferences to utility process (#42203)
* chore: expose  system preferences to utility process

* chore: add tests, doc changes and module-list update

* relative link

* use @

* fix test

* chore: disable linux test

* kick

* noop on windows utility process
2024-06-20 11:15:57 -04:00
Shelley Vohr
37608933ae fix: fetch-dependent interfaces in Web Workers (#42579) 2024-06-20 11:01:50 -04:00
Keeley Hammond
edb939ae80 build: Add ASan Linux build to Actions build/test (#42545)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2024-06-20 12:11:53 +02:00
Milan Burda
003c32331d chore: add/fix interface comments for sections of methods (#42566) 2024-06-20 10:49:07 +02:00
Shelley Vohr
18abeb3add build: re-enable self-cert codesigning on x64 macOS (#42576)
build: re-enable self-cert codesigning
2024-06-19 10:28:07 -04:00
Charles Kerr
dad6e130f5 build: remove fs-extra devdep (#42533)
* build: remove fs-extra dependency from script/gen-filenames.ts

* build: remove fs-extra dependency from script/spec-runner.js

* build: remove fs-extra dependency from script/gn-asar.js

* build: remove fs-extra dependency from spec/api-autoupdater-darwin-spec.ts

* build: remove fs-extra dependency from spec/api-safe-storage-spec.ts

* build: remove fs-extra dependency from spec/lib/codesign-helpers.ts

* build: remove fs-extra dependency from spec/api-app-spec.ts

* build: remove fs-extra dependency from spec/esm-spec.ts

* build: remove fs-extra dependency from spec/lib/fs-helpers.ts

* build: remove fs-extra dependency from spec/lib/api-shell-spec.ts

* build: remove fs-extra dependency from spec/api-context-bridge-spec.ts

* build: remove fs-extra dependency from spec/asar-integrity-spec.ts

* build: remove fs-extra dependency from spec/node-spec.ts

* build: remove fs-extra devdiv

* fixup! build: remove fs-extra dependency from spec/api-context-bridge-spec.ts

* fix: use force: true when removing directories

* chore: reduce diffs to main
2024-06-19 10:10:16 -04:00
Shelley Vohr
8e8ea3ee8b fix: MessagePort closing unexpectedly with non-cloneable objects (#42535)
* fix: MessagePort closing unexpectedly with non-cloneable objects

* fix: handle serialization failure in parentPort
2024-06-19 11:27:07 +02:00
Keeley Hammond
6d2c72b14e build: correct GCLIENT_EXTRA_ARGS in linux-publish (#42575) 2024-06-18 21:54:20 -07:00
Charles Kerr
980e884fa5 build: remove klaw dependency (#42529)
* refactor: remove klaw dependency

Node 20 added recursive readdir() so klaw is not needed

* fixup! refactor: remove klaw dependency

findMatchingFiles returns a Promise<string[]>
2024-06-18 18:54:26 -04:00
Keeley Hammond
71338140a4 build: add symbol_level=1 to GN_BUILDFLAG_ARGS on release (#42571)
* build: add symbol_level=1 to GN_BUILDFLAG_ARGS on release

* build: move to GN_EXTRA_ARGS, remove GN_BUILDFLAG_ARGS
2024-06-18 14:03:53 -07:00
David Sanders
2e4857fbcb ci: auto close non-maintainer PRs that touch lockfiles (#42534) 2024-06-18 15:30:08 -04:00
Robo
29b8fbf419 chore: cherry-pick f8010390 from chromium (#42559) 2024-06-19 01:28:51 +09:00
dependabot[bot]
540a42fb96 build(deps): bump github/codeql-action from 3.25.7 to 3.25.10 (#42540)
Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.7 to 3.25.10.
- [Release notes](https://github.com/github/codeql-action/releases)
- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)
- [Commits](f079b84933...23acc5c183)

---
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-06-18 12:14:56 +02:00
dependabot[bot]
b8512a0cd9 build(deps): bump actions/checkout from 4.1.6 to 4.1.7 (#42539)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.6 to 4.1.7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](a5ac7e51b4...692973e3d9)

---
updated-dependencies:
- dependency-name: actions/checkout
  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-06-18 12:14:15 +02:00
Shelley Vohr
86cf60c3f1 chore: improve error message on failed SMApp register/unregister (#42526) 2024-06-18 10:51:37 +02:00
Samuel Attard
e217b063a5 build: fix nan/node tests on GHA (#42548) 2024-06-18 10:49:39 +02:00
John Kleinschmidt
ae88e64c88 test: use longer timeout on contentTracing tests on WOA (#42537) 2024-06-18 10:37:18 +02:00
David Sanders
6d4c2057e4 docs: add backticks around example URL (#42536) 2024-06-17 16:35:26 -07:00
dependabot[bot]
db9742a1ff build(deps): bump mikefarah/yq from 4.44.1 to 4.44.2 (#42541)
Bumps [mikefarah/yq](https://github.com/mikefarah/yq) from 4.44.1 to 4.44.2.
- [Release notes](https://github.com/mikefarah/yq/releases)
- [Changelog](https://github.com/mikefarah/yq/blob/master/release_notes.txt)
- [Commits](557dcb87b8...f15500b20a)

---
updated-dependencies:
- dependency-name: mikefarah/yq
  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-06-17 16:34:32 -07:00
Samuel Attard
a0a13ad623 build: fix macOS tests on GHA (#42524)
* build: use --frozen-lockfile

* build: don't include src/electron in src artifacts

* Use mac intel runner for mac-x64 tests

* test: debug mac tests not exiting

* skip navigator.serial tests on GHA

* TCC magic

* Fix release notes tests needing ELECTRON_GITHUB_TOKEN

* Add Azure env vars to gn check pipeline segment

* use RO token for tests

* temporarily disable codesign tests

* test: disable LoginItemSettings on x64 macOS

* test: bump up time on protocol test for slower machines

* fixup: use RO token for tests

---------

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-06-17 16:33:44 -07:00
Shelley Vohr
b35adaee2d build: fix clang format location helper (#42527) 2024-06-17 19:47:59 +02:00
Shelley Vohr
1a4d58a9fb build: run GN Check everywhere (#42515)
* build: run GN Check everywhere

* build: remove gn check matrix

---------

Co-authored-by: Samuel Attard <sam@electronjs.org>
2024-06-17 08:58:29 -07:00
Samuel Attard
2b259bd69e build: de-dupe load build tools into composite action (#42518) 2024-06-17 11:26:18 +02:00
Samuel Attard
a371c2cd54 build: fix GHA arm tests (#42514) 2024-06-16 10:59:51 -07:00
Shelley Vohr
6bf83b389b build: add GN check step (#42508)
* build: add GN check step

* Remove extra loggin

* Fix BUILD_TOOLS_SHA

* Fix concurrency group naming
2024-06-14 15:29:11 -05:00
Samuel Attard
2c985366c8 build: fix dubious ownership error in version bumper spec (#42509) 2024-06-14 13:47:58 -05:00
Keeley Hammond
429d50bb18 build: add production-release environment to publish jobs (#42483)
* build: move publish workflows to use production environment

* build: pass in target_cpu to GN_EXTRA_ARGS on Linux
2024-06-14 11:14:38 -05:00
Keeley Hammond
5b98be3ccb build: add docs-only path gating to GHA (#42499)
* build: add docs only workflow

* build: add path filtering action

* build: add actions/checkout

* build: explicitly set shell to bash -_-

* build: why regex when you could do something much dumber

* build: correct conditionals

* test: (do not merge) add base for testing

* test: remove git base (used for testing)
2024-06-14 11:08:41 -05:00
John Kleinschmidt
5397560ab3 build: adjust concurrency for release branches (#42507)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2024-06-14 11:08:21 -05:00
Samuel Attard
c2c3673e8a build: fix linux tests (#42496)
* build: use runuser for electron spec runner

* chown

* run tests in priv

* fixed

* build: setup testing on arm for GHA

* no build-tools for test

* start xvfb for the right user

* no more gn-build-type

* debug env

* ue xvfb-run

* use 8 core for node tests

* build: do test sharding on linux

* fix: disable hung node test

* build: index splits are hard

* build: use --init to reap children

* allow write junit

* use custom xvfb wrapper

* pipefail

* dont kill xvfb, its already dead

---------

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2024-06-14 10:57:28 -05:00
Shelley Vohr
c1094013eb build: allow running only mac, lint, or linux (#42504)
build: allow running only mac or linux
2024-06-14 10:08:04 -05:00
Keeley Hammond
8650682c5b build: revert removal of CIPD patch from depot tools (#42500)
Revert "build: remove the CIPD patch from depot tools (#42484)"

This reverts commit a0a8bd2222.
2024-06-14 09:11:30 -05:00
Shelley Vohr
422511753f build: use BUILD_TYPE from env (#42498)
build: use BUILD_TYPE from env
2024-06-14 06:47:18 -05:00
Samuel Attard
9f862af743 build: add lint GHA job (#42494) 2024-06-13 22:14:49 -05:00
John Kleinschmidt
16b2a09787 build: only load SDK for mac builds (#42485) 2024-06-13 17:49:38 -05:00
Keeley Hammond
ad8e89de01 build: fix v8 toolchain for macOS x64 (#42492)
build: do better
2024-06-13 17:14:57 -05:00
Samuel Attard
b7aad14e8d build: run gha on tag not branch (#42490) 2024-06-13 17:14:45 -05:00
Keeley Hammond
c41ded2e89 build: remove gclient-extra-args from publish jobs (#42491)
build: remove gclient-extra-args from publish ymls
2024-06-13 17:11:47 -05:00
Keeley Hammond
4701795dc0 build: fix datetime module for Linux Publish (#42489) 2024-06-13 16:36:45 -05:00
Samuel Attard
cfdc623c4d build: pin and dedupe build image sha (#42488) 2024-06-13 16:35:47 -05:00
Keeley Hammond
9e066e7b74 build: add v8_toolchain to darwin/x64 (#42487)
build: add v8_toolchain to darwin/x64
2024-06-13 16:35:20 -05:00
Shelley Vohr
9fe1b05025 build: upload separate artifact for src files (#42486) 2024-06-13 16:35:13 -05:00
Keeley Hammond
a0a8bd2222 build: remove the CIPD patch from depot tools (#42484)
* build: try to remove the CIPD patch from depot tools

* build: remove cipd patch from GHA
2024-06-13 16:06:16 -05:00
Samuel Attard
b92a4023c1 build: unify pipelines (#42482) 2024-06-13 16:02:38 -05:00
Tomáš Hübelbauer
15c404a3c8 docs: fix the Apple HIG link for Dock context menu (#42450)
Fix the Apple human interface guidelines link for Dock context menu

The link seems to have changed. This is the up to date link.
2024-06-13 15:24:05 -05:00
Shelley Vohr
0affad3be6 build: add several missing test steps for GHA (#42479) 2024-06-13 14:26:20 -05:00
Shelley Vohr
30885e5f9f build: add Linux GHA test step (#42460)
* build: add Linux GHA test step

* Switch to medium AKS runners

* Add missing BUILD_TYPE to restore-artifact

* Fix untar to current dir

* Remove known hosts logic

* Add missing Node.js headers step

* Fix for active SSH sessions

* Fix storing artifacts

* Build on x64 for test
2024-06-13 14:14:33 -05:00
Keeley Hammond
75d0e725be build: fix conditional for sas token (#42481) 2024-06-13 09:43:06 -05:00
Keeley Hammond
42266546eb build: move hunspell generation to Linux (#42480) 2024-06-13 09:37:36 -05:00
Samuel Attard
f72096194f build: reuse checkout steps across mac and linux (#42475) 2024-06-13 09:09:35 -05:00
Samuel Attard
1e219e457b build: generate deps hash quietly (#42476) 2024-06-13 01:43:33 -05:00
Keeley Hammond
a4f201a5f3 build: add needed steps/tweaks to Linux publish job (#42477)
* build: add libcxx to Linux publish

* build: temp change ref to branch

* build: remove hunspell dictionaries

* build: modify release build script for linux

* build: switch back to main
2024-06-12 23:13:17 -05:00
Shelley Vohr
5abefc5dc3 build: use GN_EXTRA_ARGS on macOS (#42473)
* build: use GN_EXTRA_ARGS on macOS

* Switch back to main
2024-06-12 22:12:30 -05:00
Keeley Hammond
9d6c894e89 build: save/restore cache on Linux builds (#42472)
* build: update checkout and cache restore for Linux

* build: clean up variables

* build: temporarily set ref to branch

* build: actually check if cache exists or not and correctly store it

* build: correct cache paths

* build: restore electron_node/deps/v8

* build: restore sha to @main, not branch

* build: remove cache_key and use $DEPSHASH

* build: remove sas, backup_cache logic

* build: revert openssl deletion
2024-06-12 17:41:07 -05:00
Samuel Attard
08bd588e71 build: use dynamic RO sas token provided by sas-sidecar (#42470) 2024-06-12 16:04:28 -05:00
Shelley Vohr
2afe657873 build: cleanup to macos pipeline (#42445)
* build: cleanup to macos pipeline

* Fix generated artifact key finding

* Fix cache restore key

* Switch ref to main

* Use artifacts for build artifact persisting

* Fix TARGET_ARCH env var in test

* Remove npm install
2024-06-12 14:58:47 -05:00
Mark Lee
1d2f2eb113 docs(web-embeds): replace BrowserView ref with WebContentsView (#42416) 2024-06-12 14:55:06 -05:00
Keeley Hammond
f6a9c55907 build: remove unneeded installs/secrets (#42467)
build: remove unneeded azure installs/secrets
2024-06-12 14:53:18 -05:00
Keeley Hammond
1cb63b4d77 build: use the linux aks for macos checkout/cache (#42447)
* build: use the linux aks for checkout/cache

* build: use latest container sha

* build: persist the AKS cache (first try)

* build (do not merge): use current branch for workflows

* build: do not check for existing cache

* build: try to move src into /var/portal

* build: add AZURE_AKS_CACHE_SHARE_NAME & AZURE_AKS_CACHE_STORAGE_ACCOUNT

* build: add volumes: /mnt/cross-instance-cache

* build: temporarily skip cache exists checks

* build: reset to aks-linux-large, upload/download tar

* build: pass detailed credentials into download

* build: be better

* build: add skip if cache exists, declare env vars earlier

* build: add quotes

* build: change to connection-string

* build: remove connection string

* build: migrate to azcopy

* build: lol

* build: revert ref to @main
2024-06-12 14:21:19 -05:00
Shelley Vohr
ffe1d70f1d build: add Linux GHA build step (#42432)
Co-authored-by: Keeley Hammond <khammond@slack-corp.com>
2024-06-12 14:16:49 -05:00
768 changed files with 8415 additions and 7047 deletions

View File

@@ -1 +0,0 @@
config-staging

View File

@@ -1,57 +0,0 @@
version: 2.1
# Required for dynamic configuration
setup: true
# Orbs
orbs:
path-filtering: circleci/path-filtering@0.1.0
continuation: circleci/continuation@0.2.0
# All input parameters to pass to build config
parameters:
run-docs-only:
type: boolean
default: false
upload-to-storage:
type: string
default: '1'
run-build-linux:
type: boolean
default: false
jobs:
generate-config:
docker:
- image: cimg/node:16.14
steps:
- checkout
- path-filtering/set-parameters:
base-revision: main
mapping: |
^((?!docs/).)*$ run-build-mac true
^((?!docs/).)*$ run-build-linux true
docs/.* run-docs-only true
^((?!docs/).)*$ run-docs-only false
- run:
command: |
cd .circleci/config
yarn
export CIRCLECI_BINARY="$HOME/circleci"
curl -fLSs https://raw.githubusercontent.com/CircleCI-Public/circleci-cli/main/install.sh | DESTDIR=$CIRCLECI_BINARY bash
node build.js
name: Pack config.yml
- run:
name: Set params
command: node .circleci/config/params.js
- continuation/continue:
configuration_path: .circleci/config-staging/built.yml
parameters: /tmp/pipeline-parameters.json
# Initial setup workflow
workflows:
setup:
jobs:
- generate-config

File diff suppressed because it is too large Load Diff

View File

@@ -1,34 +0,0 @@
const cp = require('child_process');
const fs = require('fs-extra');
const path = require('path');
const yaml = require('js-yaml');
const STAGING_DIR = path.resolve(__dirname, '..', 'config-staging');
function copyAndExpand(dir = './') {
const absDir = path.resolve(__dirname, dir);
const targetDir = path.resolve(STAGING_DIR, dir);
if (!fs.existsSync(targetDir)) {
fs.mkdirSync(targetDir);
}
for (const file of fs.readdirSync(absDir)) {
if (!file.endsWith('.yml')) {
if (fs.statSync(path.resolve(absDir, file)).isDirectory()) {
copyAndExpand(path.join(dir, file));
}
continue;
}
fs.writeFileSync(path.resolve(targetDir, file), yaml.dump(yaml.load(fs.readFileSync(path.resolve(absDir, file), 'utf8')), {
noRefs: true,
}));
}
}
if (fs.pathExists(STAGING_DIR)) fs.removeSync(STAGING_DIR);
copyAndExpand();
const output = cp.spawnSync(process.env.CIRCLECI_BINARY || 'circleci', ['config', 'pack', STAGING_DIR]);
fs.writeFileSync(path.resolve(STAGING_DIR, 'built.yml'), output.stdout.toString());

View File

@@ -1,51 +0,0 @@
executor:
name: linux-docker
size: medium
steps:
- checkout:
path: src/electron
- run:
name: Setup third_party Depot Tools
command: |
# "depot_tools" has to be checkout into "//third_party/depot_tools" so pylint.py can a "pylintrc" file.
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git src/third_party/depot_tools
echo 'export PATH="$PATH:'"$PWD"'/src/third_party/depot_tools"' >> $BASH_ENV
- run:
name: Download GN Binary
command: |
chromium_revision="$(grep -A1 chromium_version src/electron/DEPS | tr -d '\n' | cut -d\' -f4)"
gn_version="$(curl -sL "https://chromium.googlesource.com/chromium/src/+/${chromium_revision}/DEPS?format=TEXT" | base64 -d | grep gn_version | head -n1 | cut -d\' -f4)"
cipd ensure -ensure-file - -root . \<<-CIPD
\$ServiceURL https://chrome-infra-packages.appspot.com/
@Subdir src/buildtools/linux64
gn/gn/linux-amd64 $gn_version
CIPD
echo 'export CHROMIUM_BUILDTOOLS_PATH="'"$PWD"'/src/buildtools"' >> $BASH_ENV
- run:
name: Download clang-format Binary
command: |
chromium_revision="$(grep -A1 chromium_version src/electron/DEPS | tr -d '\n' | cut -d\' -f4)"
mkdir -p src/buildtools
curl -sL "https://chromium.googlesource.com/chromium/src/+/${chromium_revision}/buildtools/DEPS?format=TEXT" | base64 -d > src/buildtools/DEPS
gclient sync --spec="solutions=[{'name':'src/buildtools','url':None,'deps_file':'DEPS','custom_vars':{'process_deps':True},'managed':False}]"
- run:
name: Run Lint
command: |
# gn.py tries to find a gclient root folder starting from the current dir.
# When it fails and returns "None" path, the whole script fails. Let's "fix" it.
touch .gclient
# Another option would be to checkout "buildtools" inside the Electron checkout,
# but then we would lint its contents (at least gn format), and it doesn't pass it.
cd src/electron
node script/yarn install --frozen-lockfile
node script/yarn lint
- run:
name: Run Script Typechecker
command: |
cd src/electron
node script/yarn tsc -p tsconfig.script.json

View File

@@ -1,10 +0,0 @@
{
"name": "@electron/circleci-config",
"version": "0.0.0",
"private": true,
"license": "MIT",
"dependencies": {
"fs-extra": "^10.1.0",
"js-yaml": "^4.1.0"
}
}

View File

@@ -1,12 +0,0 @@
const fs = require('fs');
const PARAMS_PATH = '/tmp/pipeline-parameters.json';
const content = JSON.parse(fs.readFileSync(PARAMS_PATH, 'utf-8'));
// Choose resource class for linux hosts
const currentBranch = process.env.CIRCLE_BRANCH || '';
content['large-linux-executor'] = /^pull\/[0-9-]+$/.test(currentBranch) ? '2xlarge' : 'electronjs/aks-linux-large';
content['medium-linux-executor'] = /^pull\/[0-9-]+$/.test(currentBranch) ? 'medium' : 'electronjs/aks-linux-medium';
fs.writeFileSync(PARAMS_PATH, JSON.stringify(content));

View File

@@ -1,43 +0,0 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
argparse@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
fs-extra@^10.1.0:
version "10.1.0"
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
dependencies:
graceful-fs "^4.2.0"
jsonfile "^6.0.1"
universalify "^2.0.0"
graceful-fs@^4.1.6, graceful-fs@^4.2.0:
version "4.2.10"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
js-yaml@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602"
integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
dependencies:
argparse "^2.0.1"
jsonfile@^6.0.1:
version "6.1.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.1.0.tgz#bc55b2634793c679ec6403094eb13698a6ec0aae"
integrity sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==
dependencies:
universalify "^2.0.0"
optionalDependencies:
graceful-fs "^4.1.6"
universalify@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==

View File

@@ -1,8 +0,0 @@
#!/bin/bash
set -e
mkdir -p ~/.ssh
echo "github.com ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl
github.com ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBEmKSENjQEezOmxkZMy7opKgwFB9nkt5YRrYMjNuG5N87uRgg6CLrbo5wAdT/y6v0mKV0U2w0WZ2YB/++Tpockg=
github.com ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCj7ndNxQowgcQnjshcLrqPEiiphnt+VTTvDP6mHBL9j1aNUkY4Ue1gvwnGLVlOhGeYrnZaMgRK6+PKCUXaDbC7qtbW8gIkhL7aGCsOr/C56SJMy/BCZfxd1nWzAOxSDPgVsmerOBYfNqltV9/hWCqBywINIR+5dIg6JTJ72pcEpEjcYgXkE2YEFXV1JHnsKgbLWNlhScqb2UmyRkQyytRLtL+38TGxkxCflmO+5Z8CSSNY7GidjMIZ7Q4zMjA2n1nGrlTDkzwDCsw+wqFPGQA179cnfGWOWRVruj16z6XyvxvjJwbz0wQZ75XK5tKSb7FNyeIEs4TT4jk+S4dhPeAUC5y+bDYirYgM4GC7uEnztnZyaVWQ7B381AK4Qdrwt51ZqExKbQpTUNn+EjqoTwvqNj4kqx5QUCI0ThS/YkOxJCXmPUWZbhjpCg56i+2aB6CmK2JGhn57K5mj0MNdBXA4/WnwH6XoPWJzK5Nyu2zB3nAZp+S5hpQs+p1vN1/wsjk=" >> ~/.ssh/known_hosts

View File

@@ -25,9 +25,19 @@ Codespaces doesn't lean very well into gclient based checkouts, the directory st
/workspaces/electron
```
## Goma
## Reclient
If you are a maintainer [with Goma access](../docs/development/goma.md) it should be automatically configured and authenticated when you spin up a new codespaces instance. You can validate this by checking `e d goma_auth info` or by checking that your build-tools configuration has a goma mode of `cluster`.
If you are a maintainer [with Reclient access](../docs/development/reclient.md) you'll need to ensure you're authenticated when you spin up a new codespaces instance. You can validate this by checking `e d rbe info` - your build-tools configuration should have `Access` type `Cache & Execute`:
```console
Authentication Status: Authenticated
Since: 2024-05-28 10:29:33 +0200 CEST
Expires: 2024-08-26 10:29:33 +0200 CEST
...
Access: Cache & Execute
```
To authenticate if you're not logged in, run `e d rbe login` and follow the link to authenticate.
## Running Electron

View File

@@ -36,7 +36,6 @@
"dbaeumer.vscode-eslint",
"shakram02.bash-beautify",
"marshallofsound.gnls-electron",
"CircleCI.circleci"
],
"settings": {
"editor.tabSize": 2,

View File

@@ -59,7 +59,6 @@ if [ ! -f $buildtools/configs/evm.testing.json ]; then
\"\$schema\": \"file:///home/builduser/.electron_build_tools/evm-config.schema.json\",
\"configValidationLevel\": \"strict\",
\"reclient\": \"$1\",
\"goma\": \"none\",
\"preserveXcode\": 5
}
" >$buildtools/configs/evm.testing.json

View File

@@ -2,5 +2,4 @@
# See docs/development/releasing.md
APPVEYOR_CLOUD_TOKEN=
CIRCLE_TOKEN=
ELECTRON_GITHUB_TOKEN=

1
.gitattributes vendored
View File

@@ -22,6 +22,7 @@ patches/**/.patches merge=union
*.md text eol=lf
*.mm text eol=lf
*.mojom text eol=lf
*.patches text eol=lf
*.proto text eol=lf
*.py text eol=lf
*.ps1 text eol=lf

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

@@ -20,13 +20,14 @@ body:
description: |
What version of Electron are you using?
Note: Please only report issues for [currently supported versions of Electron](https://www.electronjs.org/docs/latest/tutorial/support#currently-supported-versions).
placeholder: 17.0.0
Note: Please only report issues for [currently supported versions of Electron](https://www.electronjs.org/docs/latest/tutorial/electron-timelines#timeline).
placeholder: 32.0.0
validations:
required: true
- type: dropdown
attributes:
label: What operating system are you using?
label: What operating system(s) are you using?
multiple: true
options:
- Windows
- macOS

View File

@@ -36,7 +36,7 @@ runs:
shell: bash
if: ${{ inputs.target-arch == 'x64' && inputs.target-platform == 'macos' }}
run: |
GN_APPENDED_ARGS="$GN_EXTRA_ARGS v8_snapshot_toolchain=\"//build/toolchain/mac:clang_x64\""
GN_APPENDED_ARGS="$GN_EXTRA_ARGS target_cpu=\"x64\" v8_snapshot_toolchain=\"//build/toolchain/mac:clang_x64\""
echo "GN_EXTRA_ARGS=$GN_APPENDED_ARGS" >> $GITHUB_ENV
- name: Build Electron ${{ inputs.step-suffix }}
shell: bash
@@ -90,7 +90,6 @@ runs:
fi
sed $SEDOPTION '/.*builtins-pgo/d' out/Default/mksnapshot_args
sed $SEDOPTION '/--turbo-profiling-input/d' out/Default/mksnapshot_args
sed $SEDOPTION '/The gn arg use_goma=true .*/d' out/Default/mksnapshot_args
if [ "`uname`" = "Linux" ]; then
if [ "${{ inputs.target-arch }}" = "arm" ]; then
@@ -217,4 +216,4 @@ runs:
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808
with:
name: src_artifacts_${{ env.ARTIFACT_KEY }}
path: ./src_artifacts_${{ inputs.artifact-platform }}_${{ inputs.target-arch }}
path: ./src_artifacts_${{ inputs.artifact-platform }}_${{ inputs.target-arch }}

View File

@@ -75,7 +75,7 @@ runs:
"$GITHUB_SERVER_URL/$GITHUB_REPOSITORY"
ELECTRON_USE_THREE_WAY_MERGE_FOR_PATCHES=1 gclient sync --with_branch_heads --with_tags -vvvvv
if [ "${{ inputs.is-release }}" != "true" ]; then
if [ "${{ inputs.is-release }}" != "true" && -n "${{ env.PATCH_UP_APP_CREDS }}" ]; then
# Re-export all the patches to check if there were changes.
python3 src/electron/script/export_all_patches.py src/electron/patches/config.json
cd src/electron
@@ -87,7 +87,7 @@ runs:
# Export it
mkdir -p ../../patches
git format-patch -1 --stdout --keep-subject --no-stat --full-index > ../../patches/update-patches.patch
if (node ./script/push-patch.js 2> /dev/null > /dev/null); then
if node ./script/push-patch.js; then
echo
echo "======================================================================"
echo "Changes to the patches when applying, we have auto-pushed the diff to the current branch"
@@ -100,6 +100,8 @@ runs:
echo "There were changes to the patches when applying."
echo "Check the CI artifacts for a patch you can apply to fix it."
echo "======================================================================"
echo
cat ../../patches/update-patches.patch
exit 1
fi
fi
@@ -151,4 +153,4 @@ runs:
exit 1
else
echo "Cache key persisted in $final_cache_path"
fi
fi

View File

@@ -46,7 +46,7 @@ runs:
fi
python3 src/third_party/depot_tools/download_from_google_storage.py --no_resume --no_auth --bucket chromium-browser-clang -s $DSYM_SHA_FILE -o src/tools/clang/dsymutil/bin/dsymutil
echo 'infra/3pp/build_support/ninja-1_11_1/${platform}' `gclient getdep --deps-file=src/DEPS -r 'src/third_party/ninja:infra/3pp/build_support/ninja-1_11_1/${platform}'` > ninja_ensure_file
echo 'infra/3pp/tools/ninja/${platform}' `gclient getdep --deps-file=src/DEPS -r 'src/third_party/ninja:infra/3pp/tools/ninja/${platform}'` > ninja_ensure_file
sed $SEDOPTION "s/Updating depot_tools... //g" ninja_ensure_file
cipd ensure --root src/third_party/ninja -ensure-file ninja_ensure_file
@@ -58,4 +58,4 @@ runs:
cp .git/config .git/config.backup
git remote remove origin
mv .git/config.backup .git/config
git fetch
git fetch

View File

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

View File

@@ -33,4 +33,4 @@ runs:
fi
echo "Wiping Electron Directory"
rm -rf src/electron
rm -rf src/electron

View File

@@ -23,7 +23,7 @@ runs:
# or it was uploaded in the checkout job for a previous commit.
uses: nick-fields/retry@7152eba30c6575329ac0576536151aca5a72780e # v3.0.0
with:
timeout_minutes: 20
timeout_minutes: 30
max_attempts: 3
retry_on: error
command: |
@@ -32,8 +32,11 @@ runs:
echo "SAS Token not found; exiting src cache download early..."
exit 1
fi
azcopy copy \
azcopy copy --log-level=ERROR \
"https://${{ env.AZURE_AKS_CACHE_STORAGE_ACCOUNT }}.file.core.windows.net/${{ env.AZURE_AKS_CACHE_SHARE_NAME }}/${{ env.CACHE_PATH }}?$sas_token" $DEPSHASH.tar
env:
AZURE_AKS_CACHE_STORAGE_ACCOUNT: f723719aa87a34622b5f7f3
AZURE_AKS_CACHE_SHARE_NAME: pvc-f6a4089f-b082-4bee-a3f9-c3e1c0c02d8f
- name: Clean SAS Key
shell: bash
run: rm -f sas-token

View File

@@ -7,3 +7,6 @@ updates:
directory: /
schedule:
interval: weekly
labels:
- "no-backport"
- "semver/none"

View File

@@ -81,7 +81,7 @@ jobs:
checkout-macos:
needs: setup
if: ${{ needs.setup.outputs.src == 'true' && !inputs.skip-macos}}
runs-on: aks-linux-large
runs-on: electron-arc-linux-amd64-32core
container:
image: ghcr.io/electron/build:${{ needs.setup.outputs.build-image-sha }}
options: --user root
@@ -106,7 +106,7 @@ jobs:
checkout-linux:
needs: setup
if: ${{ needs.setup.outputs.src == 'true' && !inputs.skip-linux}}
runs-on: aks-linux-large
runs-on: electron-arc-linux-amd64-32core
container:
image: ghcr.io/electron/build:${{ needs.setup.outputs.build-image-sha }}
options: --user root
@@ -115,6 +115,7 @@ jobs:
- /var/run/sas:/var/run/sas
env:
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
PATCH_UP_APP_CREDS: ${{ secrets.PATCH_UP_APP_CREDS }}
outputs:
build-image-sha: ${{ needs.setup.outputs.build-image-sha}}
steps:
@@ -136,6 +137,7 @@ jobs:
needs: checkout-macos
with:
build-runs-on: macos-14-xlarge
check-runs-on: macos-14
test-runs-on: macos-13
target-platform: macos
target-arch: x64
@@ -154,6 +156,7 @@ jobs:
needs: checkout-macos
with:
build-runs-on: macos-14-xlarge
check-runs-on: macos-14
test-runs-on: macos-14
target-platform: macos
target-arch: arm64
@@ -171,8 +174,9 @@ jobs:
uses: ./.github/workflows/pipeline-electron-build-and-test-and-nan.yml
needs: checkout-linux
with:
build-runs-on: aks-linux-large
test-runs-on: aks-linux-medium
build-runs-on: electron-arc-linux-amd64-32core
check-runs-on: electron-arc-linux-amd64-8core
test-runs-on: electron-arc-linux-amd64-4core
build-container: '{"image":"ghcr.io/electron/build:${{ needs.checkout-linux.outputs.build-image-sha }}","options":"--user root","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}'
test-container: '{"image":"ghcr.io/electron/build:${{ needs.checkout-linux.outputs.build-image-sha }}","options":"--user root --privileged --init"}'
target-platform: linux
@@ -191,8 +195,9 @@ jobs:
uses: ./.github/workflows/pipeline-electron-build-and-test.yml
needs: checkout-linux
with:
build-runs-on: aks-linux-large
test-runs-on: aks-linux-medium
build-runs-on: electron-arc-linux-amd64-32core
check-runs-on: electron-arc-linux-amd64-8core
test-runs-on: electron-arc-linux-amd64-4core
build-container: '{"image":"ghcr.io/electron/build:${{ needs.checkout-linux.outputs.build-image-sha }}","options":"--user root","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}'
test-container: '{"image":"ghcr.io/electron/build:${{ needs.checkout-linux.outputs.build-image-sha }}","options":"--user root --privileged --init"}'
target-platform: linux
@@ -212,8 +217,9 @@ jobs:
uses: ./.github/workflows/pipeline-electron-build-and-test.yml
needs: checkout-linux
with:
build-runs-on: aks-linux-large
test-runs-on: aks-linux-arm-medium
build-runs-on: electron-arc-linux-amd64-32core
check-runs-on: electron-arc-linux-amd64-8core
test-runs-on: electron-arc-linux-arm64-4core
build-container: '{"image":"ghcr.io/electron/build:${{ needs.checkout-linux.outputs.build-image-sha }}","options":"--user root","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}'
test-container: '{"image":"ghcr.io/electron/test:arm32v7-${{ needs.checkout-linux.outputs.build-image-sha }}","options":"--user root --privileged --init","volumes":["/home/runner/externals:/mnt/runner-externals"]}'
target-platform: linux
@@ -232,8 +238,9 @@ jobs:
uses: ./.github/workflows/pipeline-electron-build-and-test.yml
needs: checkout-linux
with:
build-runs-on: aks-linux-large
test-runs-on: aks-linux-arm-medium
build-runs-on: electron-arc-linux-amd64-32core
check-runs-on: electron-arc-linux-amd64-8core
test-runs-on: electron-arc-linux-arm64-4core
build-container: '{"image":"ghcr.io/electron/build:${{ needs.checkout-linux.outputs.build-image-sha }}","options":"--user root","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}'
test-container: '{"image":"ghcr.io/electron/test:arm64v8-${{ needs.checkout-linux.outputs.build-image-sha }}","options":"--user root --privileged --init"}'
target-platform: linux
@@ -242,4 +249,4 @@ jobs:
gn-build-type: testing
generate-symbols: false
upload-to-storage: '0'
secrets: inherit
secrets: inherit

View File

@@ -35,9 +35,10 @@ jobs:
with:
creds: ${{ secrets.ISSUE_TRIAGE_GH_APP_CREDS }}
org: electron
- run: npm install mdast-util-from-markdown@2.0.0 unist-util-select@5.1.0 semver@7.6.0
- run: npm install @electron/fiddle-core@1.3.3 mdast-util-from-markdown@2.0.0 unist-util-select@5.1.0 semver@7.6.0
- name: Add labels
uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1
id: add-labels
env:
ISSUE_BODY: ${{ github.event.issue.body }}
with:
@@ -71,11 +72,44 @@ jobs:
} catch {}
if (labelExists) {
// Check if it's an unsupported major
const { ElectronVersions } = await import('${{ github.workspace }}/node_modules/@electron/fiddle-core/dist/index.js');
const versions = await ElectronVersions.create(undefined, { ignoreCache: true });
const validVersions = [...versions.supportedMajors, ...versions.prereleaseMajors];
if (!validVersions.includes(major)) {
core.setOutput('unsupportedMajor', true);
labels.push('blocked/need-info ❌');
}
labels.push(versionLabel);
}
}
}
const operatingSystems = select('heading:has(> text[value="What operating system(s) are you using?"]) + paragraph > text', tree)?.value.trim().split(', ');
const platformLabels = new Set();
for (const operatingSystem of (operatingSystems ?? [])) {
switch (operatingSystem) {
case 'Windows':
platformLabels.add('platform/windows');
break;
case 'macOS':
platformLabels.add('platform/macOS');
break;
case 'Ubuntu':
case 'Other Linux':
platformLabels.add('platform/linux');
break;
}
}
if (platformLabels.size === 3) {
labels.push('platform/all');
} else {
labels.push(...platformLabels);
}
const gistUrl = select('heading:has(> text[value="Testcase Gist URL"]) + paragraph > text', tree)?.value.trim();
if (gistUrl !== undefined && gistUrl.startsWith('https://gist.github.com/')) {
labels.push('has-repro-gist');
@@ -89,3 +123,17 @@ jobs:
labels,
});
}
- name: Create unsupported major comment
if: ${{ steps.add-labels.outputs.unsupportedMajor }}
uses: actions-cool/issues-helper@a610082f8ac0cf03e357eb8dd0d5e2ba075e017e # v3.6.0
with:
actions: 'create-comment'
token: ${{ steps.generate-token.outputs.token }}
body: |
<!-- end-of-life -->
Hello @${{ github.event.issue.user.login }}. Thanks for reporting this and helping to make Electron better!
The version of Electron reported in this issue has reached end-of-life and is [no longer supported](https://www.electronjs.org/docs/latest/tutorial/electron-timelines#timeline). If you're still experiencing this issue on a [supported version](https://www.electronjs.org/releases/stable) of Electron, please update this issue to reflect that version of Electron.
Now adding the https://github.com/electron/electron/labels/blocked%2Fneed-info%20%E2%9D%8C label for this reason. This issue will be closed in 10 days if the above is not addressed.

View File

@@ -19,7 +19,7 @@ on:
jobs:
checkout-linux:
runs-on: aks-linux-large
runs-on: electron-arc-linux-amd64-32core
container:
image: ghcr.io/electron/build:${{ inputs.build-image-sha }}
options: --user root
@@ -42,7 +42,7 @@ jobs:
needs: checkout-linux
with:
environment: production-release
build-runs-on: aks-linux-large
build-runs-on: electron-arc-linux-amd64-32core
build-container: '{"image":"ghcr.io/electron/build:${{ inputs.build-image-sha }}","options":"--user root","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}'
target-platform: linux
target-arch: x64
@@ -58,7 +58,7 @@ jobs:
needs: checkout-linux
with:
environment: production-release
build-runs-on: aks-linux-large
build-runs-on: electron-arc-linux-amd64-32core
build-container: '{"image":"ghcr.io/electron/build:${{ inputs.build-image-sha }}","options":"--user root","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}'
target-platform: linux
target-arch: arm
@@ -74,7 +74,7 @@ jobs:
needs: checkout-linux
with:
environment: production-release
build-runs-on: aks-linux-large
build-runs-on: electron-arc-linux-amd64-32core
build-container: '{"image":"ghcr.io/electron/build:${{ inputs.build-image-sha }}","options":"--user root","volumes":["/mnt/cross-instance-cache:/mnt/cross-instance-cache"]}'
target-platform: linux
target-arch: arm64
@@ -83,4 +83,4 @@ jobs:
generate-symbols: true
strip-binaries: true
upload-to-storage: ${{ inputs.upload-to-storage }}
secrets: inherit
secrets: inherit

View File

@@ -20,7 +20,7 @@ on:
jobs:
checkout-macos:
runs-on: aks-linux-large
runs-on: electron-arc-linux-amd64-32core
container:
image: ghcr.io/electron/build:${{ inputs.build-image-sha }}
options: --user root
@@ -66,4 +66,4 @@ jobs:
gn-build-type: release
generate-symbols: true
upload-to-storage: ${{ inputs.upload-to-storage }}
secrets: inherit
secrets: inherit

View File

@@ -0,0 +1,37 @@
name: Check for Non-Maintainer Dependency Change
on:
pull_request_target:
paths:
- 'yarn.lock'
- 'spec/yarn.lock'
permissions: {}
jobs:
check-for-non-maintainer-dependency-change:
name: Check for non-maintainer dependency change
if: ${{ !contains(fromJSON('["MEMBER", "OWNER"]'), github.event.pull_request.author_association) && github.event.pull_request.user.type != 'Bot' && !github.event.pull_request.draft }}
permissions:
contents: read
pull-requests: write
runs-on: ubuntu-latest
steps:
- name: Check for existing review
id: check-for-review
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_URL: ${{ github.event.pull_request.html_url }}
run: |
set -eo pipefail
REVIEW_COUNT=$(gh pr view $PR_URL --json reviews | jq '[ .reviews[] | select(.author.login == "github-actions") | select(.body | startswith("<!-- no-dependency-change -->")) ] | length')
if [[ $REVIEW_COUNT -eq 0 ]]; then
echo "SHOULD_REVIEW=1" >> "$GITHUB_OUTPUT"
fi
- name: Request changes
if: ${{ steps.check-for-review.outputs.SHOULD_REVIEW }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PR_URL: ${{ github.event.pull_request.html_url }}
run: |
printf "<!-- no-dependency-change -->\n\nHello @${{ github.event.pull_request.user.login }}! It looks like this pull request touches one of our dependency files, and per [our contribution policy](https://github.com/electron/electron/blob/main/CONTRIBUTING.md#dependencies-upgrades-policy) we do not accept these types of changes in PRs." | gh pr review $PR_URL -r --body-file=-

View File

@@ -15,6 +15,10 @@ on:
type: string
description: 'What host to run the build'
required: true
check-runs-on:
type: string
description: 'What host to run the gn-check'
required: true
test-runs-on:
type: string
description: 'What host to run the tests on'
@@ -77,7 +81,7 @@ jobs:
with:
target-platform: ${{ inputs.target-platform }}
target-arch: ${{ inputs.target-arch }}
check-runs-on: ${{ inputs.build-runs-on }}
check-runs-on: ${{ inputs.check-runs-on }}
check-container: ${{ inputs.build-container }}
gn-build-type: ${{ inputs.gn-build-type }}
is-asan: ${{ inputs.is-asan }}
@@ -100,4 +104,4 @@ jobs:
test-runs-on: ${{ inputs.test-runs-on }}
test-container: ${{ inputs.test-container }}
gn-build-type: ${{ inputs.gn-build-type }}
secrets: inherit
secrets: inherit

View File

@@ -15,6 +15,10 @@ on:
type: string
description: 'What host to run the build'
required: true
check-runs-on:
type: string
description: 'What host to run the gn-check'
required: true
test-runs-on:
type: string
description: 'What host to run the tests on'
@@ -83,7 +87,7 @@ jobs:
with:
target-platform: ${{ inputs.target-platform }}
target-arch: ${{ inputs.target-arch }}
check-runs-on: ${{ inputs.build-runs-on }}
check-runs-on: ${{ inputs.check-runs-on }}
check-container: ${{ inputs.build-container }}
gn-build-type: ${{ inputs.gn-build-type }}
is-asan: ${{ inputs.is-asan }}
@@ -97,4 +101,4 @@ jobs:
test-runs-on: ${{ inputs.test-runs-on }}
test-container: ${{ inputs.test-container }}
is-asan: ${{ inputs.is-asan}}
secrets: inherit
secrets: inherit

View File

@@ -15,7 +15,7 @@ concurrency:
jobs:
docs-only:
name: Docs Only Compile
runs-on: aks-linux-medium
runs-on: electron-arc-linux-amd64-4core
timeout-minutes: 20
container: ${{ fromJSON(inputs.container) }}
steps:
@@ -40,4 +40,4 @@ jobs:
if [ "$out" != "base.js" ]; then
node script/yarn webpack --config $f --output-filename=$out --output-path=./.tmp --env mode=development
fi
done
done

View File

@@ -15,7 +15,7 @@ concurrency:
jobs:
lint:
name: Lint
runs-on: aks-linux-medium
runs-on: electron-arc-linux-amd64-4core
timeout-minutes: 20
container: ${{ fromJSON(inputs.container) }}
steps:
@@ -32,7 +32,7 @@ jobs:
shell: bash
run: |
# "depot_tools" has to be checkout into "//third_party/depot_tools" so pylint.py can a "pylintrc" file.
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git src/third_party/depot_tools
git clone --filter=tree:0 https://chromium.googlesource.com/chromium/tools/depot_tools.git src/third_party/depot_tools
echo "$(pwd)/src/third_party/depot_tools" >> $GITHUB_PATH
- name: Download GN Binary
shell: bash
@@ -74,4 +74,4 @@ jobs:
run: |
cd src/electron
node script/yarn tsc -p tsconfig.script.json

View File

@@ -61,8 +61,6 @@ concurrency:
cancel-in-progress: ${{ github.ref != 'refs/heads/main' && !endsWith(github.ref, '-x-y') }}
env:
AZURE_AKS_CACHE_STORAGE_ACCOUNT: ${{ secrets.AZURE_AKS_CACHE_STORAGE_ACCOUNT }}
AZURE_AKS_CACHE_SHARE_NAME: ${{ secrets.AZURE_AKS_CACHE_SHARE_NAME }}
ELECTRON_ARTIFACTS_BLOB_STORAGE: ${{ secrets.ELECTRON_ARTIFACTS_BLOB_STORAGE }}
ELECTRON_RBE_JWT: ${{ secrets.ELECTRON_RBE_JWT }}
ELECTRON_GITHUB_TOKEN: ${{ secrets.ELECTRON_GITHUB_TOKEN }}
@@ -86,7 +84,7 @@ jobs:
fetch-depth: 0
- name: Setup Node.js/npm
if: ${{ inputs.target-platform == 'macos' }}
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8
uses: actions/setup-node@1e60f620b9541d16bece96c5465dc8ee9832be0b
with:
node-version: 20.11.x
cache: yarn
@@ -116,7 +114,7 @@ jobs:
- name: Get Depot Tools
timeout-minutes: 5
run: |
git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
git clone --filter=tree:0 https://chromium.googlesource.com/chromium/tools/depot_tools.git
SEDOPTION="-i"
if [ "`uname`" = "Darwin" ]; then
@@ -210,4 +208,4 @@ jobs:
is-release: '${{ inputs.is-release }}'
generate-symbols: '${{ inputs.generate-symbols }}'
upload-to-storage: '${{ inputs.upload-to-storage }}'
step-suffix: '(mas)'
step-suffix: '(mas)'

View File

@@ -36,8 +36,6 @@ concurrency:
cancel-in-progress: true
env:
AZURE_AKS_CACHE_STORAGE_ACCOUNT: ${{ secrets.AZURE_AKS_CACHE_STORAGE_ACCOUNT }}
AZURE_AKS_CACHE_SHARE_NAME: ${{ secrets.AZURE_AKS_CACHE_SHARE_NAME }}
ELECTRON_RBE_JWT: ${{ secrets.ELECTRON_RBE_JWT }}
GCLIENT_EXTRA_ARGS: ${{ inputs.target-platform == 'macos' && '--custom-var=checkout_mac=True --custom-var=host_os=mac' || '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True' }}
ELECTRON_OUT_DIR: Default
@@ -64,7 +62,7 @@ jobs:
- name: Get Depot Tools
timeout-minutes: 5
run: |
git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
git clone --filter=tree:0 https://chromium.googlesource.com/chromium/tools/depot_tools.git
SEDOPTION="-i"
if [ "`uname`" = "Darwin" ]; then
@@ -129,7 +127,8 @@ jobs:
cd src
gn check out/Default //electron:electron_lib
gn check out/Default //electron:electron_app
gn check out/Default //electron/shell/common/api:mojo
gn check out/Default //electron/shell/common:mojo
gn check out/Default //electron/shell/common:plugin
# Check the hunspell filenames
node electron/script/gen-hunspell-filenames.js --check
@@ -140,4 +139,4 @@ jobs:
while [ -f /var/.ssh-lock ]
do
sleep 60
done
done

View File

@@ -103,18 +103,17 @@ jobs:
- name: Get Depot Tools
timeout-minutes: 5
run: |
git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
if [ "`uname`" = "Darwin" ]; then
# remove ninjalog_uploader_wrapper.py from autoninja since we don't use it and it causes problems
sed -i '' '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
else
sed -i '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
# Remove swift-format dep from cipd on macOS until we send a patch upstream.
cd depot_tools
git apply --3way ../src/electron/.github/workflows/config/gclient.diff
fi
git clone --filter=tree:0 https://chromium.googlesource.com/chromium/tools/depot_tools.git
# Ensure depot_tools does not update.
test -d depot_tools && cd depot_tools
if [ "`uname`" = "Darwin" ]; then
# remove ninjalog_uploader_wrapper.py from autoninja since we don't use it and it causes problems
sed -i '' '/ninjalog_uploader_wrapper.py/d' ./autoninja
else
sed -i '/ninjalog_uploader_wrapper.py/d' ./autoninja
# Remove swift-format dep from cipd on macOS until we send a patch upstream.
git apply --3way ../src/electron/.github/workflows/config/gclient.diff
fi
touch .disable_auto_update
- name: Add Depot Tools to PATH
run: echo "$(pwd)/depot_tools" >> $GITHUB_PATH
@@ -125,12 +124,12 @@ jobs:
echo "DISABLE_CRASH_REPORTER_TESTS=true" >> $GITHUB_ENV
echo "IS_ASAN=true" >> $GITHUB_ENV
- name: Download Generated Artifacts
uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16
with:
name: generated_artifacts_${{ env.ARTIFACT_KEY }}
path: ./generated_artifacts_${{ matrix.build-type }}_${{ inputs.target-arch }}
- name: Download Src Artifacts
uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16
with:
name: src_artifacts_${{ env.ARTIFACT_KEY }}
path: ./src_artifacts_${{ matrix.build-type }}_${{ inputs.target-arch }}
@@ -187,10 +186,17 @@ 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 Artifacts
if: always() && !cancelled()
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a
with:
name: test_artifacts_${{ env.ARTIFACT_KEY }}
path: src/electron/spec/artifacts
if-no-files-found: ignore
- name: Wait for active SSH sessions
if: always() && !cancelled()
run: |
while [ -f /var/.ssh-lock ]
do
sleep 60
done
done

View File

@@ -37,7 +37,7 @@ env:
jobs:
node-tests:
name: Run Node.js Tests
runs-on: aks-linux-medium-plus
runs-on: electron-arc-linux-amd64-8core
timeout-minutes: 20
env:
TARGET_ARCH: ${{ inputs.target-arch }}
@@ -61,22 +61,21 @@ jobs:
- name: Get Depot Tools
timeout-minutes: 5
run: |
git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
git clone --filter=tree:0 https://chromium.googlesource.com/chromium/tools/depot_tools.git
sed -i '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
cd depot_tools
git apply --3way ../src/electron/.github/workflows/config/gclient.diff
# Ensure depot_tools does not update.
test -d depot_tools && cd depot_tools
git apply --3way ../src/electron/.github/workflows/config/gclient.diff
touch .disable_auto_update
- name: Add Depot Tools to PATH
run: echo "$(pwd)/depot_tools" >> $GITHUB_PATH
- name: Download Generated Artifacts
uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16
with:
name: generated_artifacts_${{ env.BUILD_TYPE }}_${{ env.TARGET_ARCH }}
path: ./generated_artifacts_${{ env.BUILD_TYPE }}_${{ env.TARGET_ARCH }}
- name: Download Src Artifacts
uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16
with:
name: src_artifacts_linux_${{ env.TARGET_ARCH }}
path: ./src_artifacts_linux_${{ env.TARGET_ARCH }}
@@ -101,7 +100,7 @@ jobs:
done
nan-tests:
name: Run Nan Tests
runs-on: aks-linux-medium
runs-on: electron-arc-linux-amd64-4core
timeout-minutes: 20
env:
TARGET_ARCH: ${{ inputs.target-arch }}
@@ -125,22 +124,21 @@ jobs:
- name: Get Depot Tools
timeout-minutes: 5
run: |
git clone --depth=1 https://chromium.googlesource.com/chromium/tools/depot_tools.git
git clone --filter=tree:0 https://chromium.googlesource.com/chromium/tools/depot_tools.git
sed -i '/ninjalog_uploader_wrapper.py/d' ./depot_tools/autoninja
cd depot_tools
git apply --3way ../src/electron/.github/workflows/config/gclient.diff
# Ensure depot_tools does not update.
test -d depot_tools && cd depot_tools
git apply --3way ../src/electron/.github/workflows/config/gclient.diff
touch .disable_auto_update
- name: Add Depot Tools to PATH
run: echo "$(pwd)/depot_tools" >> $GITHUB_PATH
- name: Download Generated Artifacts
uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16
with:
name: generated_artifacts_${{ env.BUILD_TYPE }}_${{ env.TARGET_ARCH }}
path: ./generated_artifacts_${{ env.BUILD_TYPE }}_${{ env.TARGET_ARCH }}
- name: Download Src Artifacts
uses: actions/download-artifact@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16
with:
name: src_artifacts_linux_${{ env.TARGET_ARCH }}
path: ./src_artifacts_linux_${{ env.TARGET_ARCH }}
@@ -152,7 +150,7 @@ jobs:
unzip -:o dist.zip
- name: Setup Linux for Headless Testing
run: sh -e /etc/init.d/xvfb start
- name: Run Node.js Tests
- name: Run Nan Tests
run: |
cd src
node electron/script/nan-spec-runner.js
@@ -162,4 +160,4 @@ jobs:
while [ -f /var/.ssh-lock ]
do
sleep 60
done
done

View File

@@ -22,13 +22,13 @@ jobs:
steps:
- name: "Checkout code"
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
persist-credentials: false
# This is a pre-submit / pre-release.
- name: "Run analysis"
uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3
uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # v2.4.0
with:
results_file: results.sarif
results_format: sarif
@@ -42,7 +42,7 @@ jobs:
# Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF
# format to the repository Actions tab.
- name: "Upload artifact"
uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3
uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6
with:
name: SARIF file
path: results.sarif
@@ -50,6 +50,6 @@ jobs:
# Upload the results to GitHub's code scanning dashboard.
- name: "Upload to code-scanning"
uses: github/codeql-action/upload-sarif@f079b8493333aace61c81488f8bd40919487bd9f # v3.25.7
uses: github/codeql-action/upload-sarif@883d8588e56d1753a8a58c1c86e88976f0c23449 # v3.26.3
with:
sarif_file: results.sarif

View File

@@ -19,7 +19,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: semantic-pull-request
uses: amannn/action-semantic-pull-request@cfb60706e18bc85e8aec535e3c577abe8f70378e # v5.5.2
uses: amannn/action-semantic-pull-request@0723387faaf9b38adef4775cd42cfd5155ed6017 # v5.5.3
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:

View File

@@ -19,7 +19,7 @@ jobs:
with:
creds: ${{ secrets.APPVEYOR_UPDATER_GH_APP_CREDS }}
- name: Checkout
uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7
with:
fetch-depth: 0
token: ${{ steps.generate-token.outputs.token }}
@@ -39,7 +39,7 @@ jobs:
fi
- name: (Optionally) Update Appveyor Image
if: ${{ env.APPVEYOR_IMAGE_VERSION }}
uses: mikefarah/yq@557dcb87b8efe786f89a12c09e9046b4753ab72e # v4.44.1
uses: mikefarah/yq@bbdd97482f2d439126582a59689eb1c855944955 # v4.44.3
with:
cmd: |
yq '.image = "${{ env.APPVEYOR_IMAGE_VERSION }}"' "appveyor.yml" > "appveyor2.yml"
@@ -60,7 +60,7 @@ jobs:
git add appveyor-woa.yml
- name: (Optionally) Commit to Branch
if: ${{ env.APPVEYOR_IMAGE_VERSION }}
uses: dsanders11/github-app-commit-action@48d2ff8c1a855eb15d16afa97ae12616456d7cbc # v1.4.0
uses: dsanders11/github-app-commit-action@43de6da2f4d927e997c0784c7a0b61bd19ad6aac # v1.5.0
with:
message: 'build: update appveyor image to latest version'
ref: bump-appveyor-image

2
.nvmrc
View File

@@ -1 +1 @@
16
20

View File

@@ -38,7 +38,7 @@ if (is_mac) {
import("build/rules.gni")
assert(
mac_deployment_target == "10.15",
mac_deployment_target == "11.0",
"Chromium has updated the mac_deployment_target, please update this assert, update the supported versions documentation (docs/tutorial/support.md) and flag this as a breaking change")
}
@@ -425,7 +425,8 @@ source_set("electron_lib") {
"buildflags",
"chromium_src:chrome",
"chromium_src:chrome_spellchecker",
"shell/common/api:mojo",
"shell/common:mojo",
"shell/common:plugin",
"shell/services/node/public/mojom",
"//base:base_static",
"//base/allocator:buildflags",
@@ -672,22 +673,9 @@ source_set("electron_lib") {
}
if (enable_plugins) {
deps += [ "chromium_src:plugins" ]
sources += [
"shell/common/plugin_info.cc",
"shell/common/plugin_info.h",
"shell/renderer/electron_renderer_pepper_host_factory.cc",
"shell/renderer/electron_renderer_pepper_host_factory.h",
"shell/renderer/pepper_helper.cc",
"shell/renderer/pepper_helper.h",
]
}
if (enable_ppapi) {
deps += [
"//ppapi/host",
"//ppapi/proxy",
"//ppapi/shared_impl",
]
}

4
DEPS
View File

@@ -2,9 +2,9 @@ gclient_gn_args_from = 'src'
vars = {
'chromium_version':
'128.0.6571.0',
'130.0.6669.0',
'node_version':
'v20.15.0',
'v20.16.0',
'nan_version':
'e14bdcd1f72d62bca1d541b66da43130384ec213',
'squirrel.mac_version':

View File

@@ -1,6 +1,6 @@
[![Electron Logo](https://electronjs.org/images/electron-logo.svg)](https://electronjs.org)
[![CircleCI Build Status](https://circleci.com/gh/electron/electron/tree/main.svg?style=shield)](https://circleci.com/gh/electron/electron/tree/main)
[![GitHub Actions Build Status](https://github.com/electron/electron/actions/workflows/build.yml/badge.svg)](https://github.com/electron/electron/actions/workflows/build.yml)
[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/4lggi9dpjc1qob7k/branch/main?svg=true)](https://ci.appveyor.com/project/electron-bot/electron-ljo26/branch/main)
[![Electron Discord Invite](https://img.shields.io/discord/745037351163527189?color=%237289DA&label=chat&logo=discord&logoColor=white)](https://discord.gg/electronjs)
@@ -38,7 +38,7 @@ For more installation options and troubleshooting tips, see
Each Electron release provides binaries for macOS, Windows, and Linux.
* macOS (Catalina and up): Electron provides 64-bit Intel and ARM binaries for macOS. Apple Silicon support was added in Electron 11.
* macOS (Big Sur and up): Electron provides 64-bit Intel and Apple Silicon / ARM binaries for macOS.
* Windows (Windows 10 and up): Electron provides `ia32` (`x86`), `x64` (`amd64`), and `arm64` binaries for Windows. Windows on ARM support was added in Electron 5.0.8. Support for Windows 7, 8 and 8.1 was [removed in Electron 23, in line with Chromium's Windows deprecation policy](https://www.electronjs.org/blog/windows-7-to-8-1-deprecation-notice).
* Linux: The prebuilt binaries of Electron are built on Ubuntu 20.04. They have also been verified to work on:
* Ubuntu 18.04 and newer

View File

@@ -29,7 +29,7 @@
version: 1.0.{build}
build_cloud: electronhq-16-core
image: e-128.0.6558.0
image: e-129.0.6656.0
environment:
GIT_CACHE_PATH: C:\Users\appveyor\libcc_cache
ELECTRON_OUT_DIR: Default
@@ -140,7 +140,8 @@ for:
- gn gen out/Default "--args=import(\"%BUILD_CONFIG_PATH%\") use_remoteexec=true %GN_EXTRA_ARGS% "
- gn check out/Default //electron:electron_lib
- gn check out/Default //electron:electron_app
- gn check out/Default //electron/shell/common/api:mojo
- gn check out/Default //electron/shell/common:mojo
- gn check out/Default //electron/shell/common:plugin
- if DEFINED ELECTRON_RBE_JWT (autoninja -j 300 -C out/Default electron:electron_app) else (autoninja -C out/Default electron:electron_app)
- if "%GN_CONFIG%"=="testing" ( python C:\depot_tools\post_build_ninja_summary.py -C out\Default )
- gn gen out/ffmpeg "--args=import(\"//electron/build/args/ffmpeg.gn\") use_remoteexec=true %GN_EXTRA_ARGS%"
@@ -149,7 +150,7 @@ for:
- gn desc out/Default v8:run_mksnapshot_default args > out/Default/default_mksnapshot_args
# Remove unused args from mksnapshot_args
- ps: >-
Get-Content out/Default/default_mksnapshot_args | Where-Object { -not $_.Contains('--turbo-profiling-input') -And -not $_.Contains('builtins-pgo') -And -not $_.Contains('The gn arg use_goma=true') } | Set-Content out/Default/mksnapshot_args
Get-Content out/Default/default_mksnapshot_args | Where-Object { -not $_.Contains('--turbo-profiling-input') -And -not $_.Contains('builtins-pgo') } | Set-Content out/Default/mksnapshot_args
- autoninja -C out/Default electron:electron_mksnapshot_zip
- cd out\Default
- 7z a mksnapshot.zip mksnapshot_args gen\v8\embedded.S

View File

@@ -29,7 +29,7 @@
version: 1.0.{build}
build_cloud: electronhq-16-core
image: e-128.0.6558.0
image: e-129.0.6656.0
environment:
GIT_CACHE_PATH: C:\Users\appveyor\libcc_cache
ELECTRON_OUT_DIR: Default
@@ -138,7 +138,8 @@ for:
- gn gen out/Default "--args=import(\"%BUILD_CONFIG_PATH%\") use_remoteexec=true %GN_EXTRA_ARGS% "
- gn check out/Default //electron:electron_lib
- gn check out/Default //electron:electron_app
- gn check out/Default //electron/shell/common/api:mojo
- gn check out/Default //electron/shell/common:mojo
- gn check out/Default //electron/shell/common:plugin
- if DEFINED ELECTRON_RBE_JWT (autoninja -j 300 -C out/Default electron:electron_app) else (autoninja -C out/Default electron:electron_app)
- if "%GN_CONFIG%"=="testing" ( python C:\depot_tools\post_build_ninja_summary.py -C out\Default )
- gn gen out/ffmpeg "--args=import(\"//electron/build/args/ffmpeg.gn\") use_remoteexec=true %GN_EXTRA_ARGS%"
@@ -147,7 +148,7 @@ for:
- gn desc out/Default v8:run_mksnapshot_default args > out/Default/default_mksnapshot_args
# Remove unused args from mksnapshot_args
- ps: >-
Get-Content out/Default/default_mksnapshot_args | Where-Object { -not $_.Contains('--turbo-profiling-input') -And -not $_.Contains('builtins-pgo') -And -not $_.Contains('The gn arg use_goma=true') } | Set-Content out/Default/mksnapshot_args
Get-Content out/Default/default_mksnapshot_args | Where-Object { -not $_.Contains('--turbo-profiling-input') -And -not $_.Contains('builtins-pgo') } | Set-Content out/Default/mksnapshot_args
- autoninja -C out/Default electron:electron_mksnapshot_zip
- cd out\Default
- 7z a mksnapshot.zip mksnapshot_args gen\v8\embedded.S

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 = 128
node_module_version = 130
v8_promise_internal_field_count = 1
v8_embedder_string = "-electron.0"
@@ -73,3 +73,7 @@ clang_unsafe_buffers_paths = ""
# Disable snapshotting a page when printing for its content to be analyzed for
# sensitive content by enterprise users.
enterprise_cloud_content_analysis = false
# TODO: remove dependency on legacy ipc
# https://issues.chromium.org/issues/40943039
content_enable_legacy_ipc = true

View File

@@ -24,11 +24,8 @@ template("extract_symbols") {
assert(defined(invoker.binary), "Need binary to dump")
assert(defined(invoker.symbol_dir), "Need directory for symbol output")
if (host_os == "win" && target_cpu == "x86") {
dump_syms_label = "//third_party/breakpad:dump_syms(//build/toolchain/win:win_clang_x64)"
} else {
dump_syms_label = "//third_party/breakpad:dump_syms($host_toolchain)"
}
dump_syms_label =
"//third_party/breakpad:dump_syms($host_system_allocator_toolchain)"
dump_syms_binary = get_label_info(dump_syms_label, "root_out_dir") +
"/dump_syms$_host_executable_suffix"

View File

@@ -6,7 +6,6 @@ import("//build/config/ozone.gni")
import("//build/config/ui.gni")
import("//components/spellcheck/spellcheck_build_features.gni")
import("//electron/buildflags/buildflags.gni")
import("//ppapi/buildflags/buildflags.gni")
import("//printing/buildflags/buildflags.gni")
import("//third_party/widevine/cdm/widevine.gni")
@@ -14,6 +13,8 @@ import("//third_party/widevine/cdm/widevine.gni")
static_library("chrome") {
visibility = [ "//electron:electron_lib" ]
sources = [
"//ash/style/rounded_rect_cutout_path_builder.cc",
"//ash/style/rounded_rect_cutout_path_builder.h",
"//chrome/browser/app_mode/app_mode_utils.cc",
"//chrome/browser/app_mode/app_mode_utils.h",
"//chrome/browser/browser_features.cc",
@@ -39,6 +40,8 @@ static_library("chrome") {
"//chrome/browser/icon_loader.h",
"//chrome/browser/icon_manager.cc",
"//chrome/browser/icon_manager.h",
"//chrome/browser/media/webrtc/delegated_source_list_capturer.cc",
"//chrome/browser/media/webrtc/delegated_source_list_capturer.h",
"//chrome/browser/media/webrtc/desktop_capturer_wrapper.cc",
"//chrome/browser/media/webrtc/desktop_capturer_wrapper.h",
"//chrome/browser/media/webrtc/desktop_media_list.cc",
@@ -419,46 +422,6 @@ static_library("chrome") {
}
}
source_set("plugins") {
sources = []
deps = []
frameworks = []
# browser side
sources += [
"//chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.cc",
"//chrome/browser/renderer_host/pepper/chrome_browser_pepper_host_factory.h",
"//chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.cc",
"//chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h",
]
# renderer side
sources += [
"//chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc",
"//chrome/renderer/pepper/chrome_renderer_pepper_host_factory.h",
"//chrome/renderer/pepper/pepper_shared_memory_message_filter.cc",
"//chrome/renderer/pepper/pepper_shared_memory_message_filter.h",
]
deps += [
"//components/strings",
"//media:media_buildflags",
"//services/device/public/mojom",
"//skia",
"//storage/browser",
]
if (enable_ppapi) {
deps += [
"//ppapi/buildflags",
"//ppapi/host",
"//ppapi/proxy",
"//ppapi/proxy:ipc",
"//ppapi/shared_impl",
]
}
}
# This source set is just so we don't have to depend on all of //chrome/browser
# You may have to add new files here during the upgrade if //chrome/browser/spellchecker
# gets more files

View File

@@ -0,0 +1,47 @@
{
"title": "JSON schema for API history blocks in Electron documentation",
"$schema": "http://json-schema.org/draft-07/schema#",
"$comment": "If you change this schema, remember to edit the TypeScript interfaces in the linting script.",
"definitions": {
"baseChangeSchema": {
"type": "object",
"properties": {
"pr-url": {
"description": "URL to the 'main' GitHub Pull Request for the change (i.e. not a backport PR)",
"type": "string", "pattern": "^https://github.com/electron/electron/pull/\\d+$",
"examples": [ "https://github.com/electron/electron/pull/26789" ]
},
"breaking-changes-header": {
"description": "Heading ID for the change in `electron/docs/breaking-changes.md`",
"type": "string", "minLength": 3,
"examples": [ "deprecated-browserwindowsettrafficlightpositionposition" ]
},
"description": {
"description": "Short description of the change",
"type": "string", "minLength": 3, "maxLength": 120,
"examples": [ "Made `trafficLightPosition` option work for `customButtonOnHover`." ]
}
},
"required": [ "pr-url" ],
"additionalProperties": false
},
"addedChangeSchema": {
"allOf": [ { "$ref": "#/definitions/baseChangeSchema" } ]
},
"deprecatedChangeSchema": {
"$comment": "TODO: Make 'breaking-changes-header' required in the future.",
"allOf": [ { "$ref": "#/definitions/baseChangeSchema" } ]
},
"changesChangeSchema": {
"$comment": "Unlike RFC, added `'type': 'object'` to appease AJV strict mode",
"allOf": [ { "$ref": "#/definitions/baseChangeSchema" }, { "type": "object", "required": [ "description" ] } ]
}
},
"type": "object",
"properties": {
"added": { "type": "array", "minItems": 1, "maxItems": 1, "items": { "$ref": "#/definitions/addedChangeSchema" } },
"deprecated": { "type": "array", "minItems": 1, "maxItems": 1, "items": { "$ref": "#/definitions/deprecatedChangeSchema" } },
"changes": { "type": "array", "minItems": 1, "items": { "$ref": "#/definitions/changesChangeSchema" } }
},
"additionalProperties": false
}

View File

@@ -345,9 +345,10 @@ app.on('select-client-certificate', (event, webContents, url, list, callback) =>
Returns:
* `event` Event
* `webContents` [WebContents](web-contents.md)
* `webContents` [WebContents](web-contents.md) (optional)
* `authenticationResponseDetails` Object
* `url` URL
* `pid` number
* `authInfo` Object
* `isProxy` boolean
* `scheme` string
@@ -358,7 +359,7 @@ Returns:
* `username` string (optional)
* `password` string (optional)
Emitted when `webContents` wants to do basic auth.
Emitted when `webContents` or [Utility process](../glossary.md#utility-process) wants to do basic auth.
The default behavior is to cancel all authentications. To override this you
should prevent the default behavior with `event.preventDefault()` and call
@@ -1357,7 +1358,7 @@ Show the app's about panel options. These options can be overridden with `app.se
* `credits` string (optional) _macOS_ _Windows_ - Credit information.
* `authors` string[] (optional) _Linux_ - List of app authors.
* `website` string (optional) _Linux_ - The app's website.
* `iconPath` string (optional) _Linux_ _Windows_ - Path to the app's icon in a JPEG or PNG file format. On Linux, will be shown as 64x64 pixels while retaining aspect ratio.
* `iconPath` string (optional) _Linux_ _Windows_ - Path to the app's icon in a JPEG or PNG file format. On Linux, will be shown as 64x64 pixels while retaining aspect ratio. On Windows, a 48x48 PNG will result in the best visual quality.
Set the about panel options. This will override the values defined in the app's `.plist` file on macOS. See the [Apple docs][about-panel-options] for more details. On Linux, values must be set in order to be shown; there are no defaults.
@@ -1489,6 +1490,38 @@ This method can only be called after app is ready.
Returns `Promise<string>` - Resolves with the proxy information for `url` that will be used when attempting to make requests using [Net](net.md) in the [utility process](../glossary.md#utility-process).
### `app.setClientCertRequestPasswordHandler(handler)` _Linux_
* `handler` Function\<Promise\<string\>\>
* `clientCertRequestParams` Object
* `hostname` string - the hostname of the site requiring a client certificate
* `tokenName` string - the token (or slot) name of the cryptographic device
* `isRetry` boolean - whether there have been previous failed attempts at prompting the password
Returns `Promise<string>` - Resolves with the password
The handler is called when a password is needed to unlock a client certificate for
`hostname`.
```js
const { app } = require('electron')
async function passwordPromptUI (text) {
return new Promise((resolve, reject) => {
// display UI to prompt user for password
// ...
// ...
resolve('the password')
})
}
app.setClientCertRequestPasswordHandler(async ({ hostname, tokenName, isRetry }) => {
const text = `Please sign in to ${tokenName} to authenticate to ${hostname} with your certificate`
const password = await passwordPromptUI(text)
return password
})
```
## Properties
### `app.accessibilitySupportEnabled` _macOS_ _Windows_

View File

@@ -926,6 +926,17 @@ win.setSheetOffset(toolbarRect.height)
#### `win.flashFrame(flag)`
<!--
```YAML history
added:
- pr-url: https://github.com/electron/electron/pull/35658
changes:
- pr-url: https://github.com/electron/electron/pull/41391
description: "`window.flashFrame(bool)` will flash dock icon continuously on macOS"
breaking-changes-header: behavior-changed-windowflashframebool-will-flash-dock-icon-continuously-on-macos
```
-->
* `flag` boolean
Starts or stops flashing the window to attract user's attention.

View File

@@ -1,5 +1,13 @@
# BrowserView
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/35658
breaking-changes-header: deprecated-browserview
```
-->
> **Note**
> The `BrowserView` class is deprecated, and replaced by the new
> [`WebContentsView`](web-contents-view.md) class.
@@ -11,6 +19,14 @@ relative to its owning window. It is meant to be an alternative to the
## Class: BrowserView
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/35658
breaking-changes-header: deprecated-browserview
```
-->
> Create and control views.
> **Note**
@@ -40,6 +56,14 @@ app.whenReady().then(() => {
### `new BrowserView([options])` _Experimental_ _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/35658
breaking-changes-header: deprecated-browserview
```
-->
* `options` Object (optional)
* `webPreferences` [WebPreferences](structures/web-preferences.md?inline) (optional) - Settings of web page's features.
@@ -49,6 +73,14 @@ Objects created with `new BrowserView` have the following properties:
#### `view.webContents` _Experimental_ _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/35658
breaking-changes-header: deprecated-browserview
```
-->
A [`WebContents`](web-contents.md) object owned by this view.
### Instance Methods
@@ -57,6 +89,18 @@ Objects created with `new BrowserView` have the following instance methods:
#### `view.setAutoResize(options)` _Experimental_ _Deprecated_
<!--
```YAML history
changes:
- pr-url: https://github.com/electron/electron/pull/35658
description: "Standardized auto-resizing behavior across all platforms"
breaking-changes-header: behavior-changed-browserviewsetautoresize-behavior-on-macos
deprecated:
- pr-url: https://github.com/electron/electron/pull/35658
breaking-changes-header: deprecated-browserview
```
-->
* `options` Object
* `width` boolean (optional) - If `true`, the view's width will grow and shrink together
with the window. `false` by default.
@@ -69,18 +113,42 @@ Objects created with `new BrowserView` have the following instance methods:
#### `view.setBounds(bounds)` _Experimental_ _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/35658
breaking-changes-header: deprecated-browserview
```
-->
* `bounds` [Rectangle](structures/rectangle.md)
Resizes and moves the view to the supplied bounds relative to the window.
#### `view.getBounds()` _Experimental_ _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/35658
breaking-changes-header: deprecated-browserview
```
-->
Returns [`Rectangle`](structures/rectangle.md)
The `bounds` of this BrowserView instance as `Object`.
#### `view.setBackgroundColor(color)` _Experimental_ _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/35658
breaking-changes-header: deprecated-browserview
```
-->
* `color` string - Color in Hex, RGB, ARGB, HSL, HSLA or named CSS color format. The alpha channel is
optional for the hex type.

View File

@@ -690,6 +690,8 @@ Sets whether the window should be in fullscreen mode.
Returns `boolean` - Whether the window is in fullscreen mode.
**Note:** On macOS, fullscreen transitions take place asynchronously. When querying for a BrowserWindow's fullscreen status, you should ensure that either the ['enter-full-screen'](browser-window.md#event-enter-full-screen) or ['leave-full-screen'](browser-window.md#event-leave-full-screen) events have been emitted.
#### `win.setSimpleFullScreen(flag)` _macOS_
* `flag` boolean
@@ -1049,6 +1051,15 @@ win.setSheetOffset(toolbarRect.height)
#### `win.flashFrame(flag)`
<!--
```YAML history
changes:
- pr-url: https://github.com/electron/electron/pull/41391
description: "`window.flashFrame(bool)` will flash dock icon continuously on macOS"
breaking-changes-header: behavior-changed-windowflashframebool-will-flash-dock-icon-continuously-on-macos
```
-->
* `flag` boolean
Starts or stops flashing the window to attract user's attention.

View File

@@ -1,5 +1,14 @@
# contextBridge
<!--
```YAML history
changes:
- pr-url: https://github.com/electron/electron/pull/40330
description: "`ipcRenderer` can no longer be sent over the `contextBridge`"
breaking-changes-header: behavior-changed-ipcrenderer-can-no-longer-be-sent-over-the-contextbridge
```
-->
> Create a safe, bi-directional, synchronous bridge across isolated contexts
Process: [Renderer](../glossary.md#renderer-process)

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 `domains`.
subdomains of `domain`.
* `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

@@ -9,80 +9,66 @@ The following example shows how to capture video from a desktop window whose
title is `Electron`:
```js
// In the main process.
const { BrowserWindow, desktopCapturer } = require('electron')
// main.js
const { app, BrowserWindow, desktopCapturer, session } = require('electron')
const mainWindow = new BrowserWindow()
app.whenReady().then(() => {
const mainWindow = new BrowserWindow()
desktopCapturer.getSources({ types: ['window', 'screen'] }).then(async sources => {
for (const source of sources) {
if (source.name === 'Electron') {
mainWindow.webContents.send('SET_SOURCE', source.id)
return
}
}
})
```
```js @ts-nocheck
// In the preload script.
const { ipcRenderer } = require('electron')
ipcRenderer.on('SET_SOURCE', async (event, sourceId) => {
try {
const stream = await navigator.mediaDevices.getUserMedia({
audio: false,
video: {
mandatory: {
chromeMediaSource: 'desktop',
chromeMediaSourceId: sourceId,
minWidth: 1280,
maxWidth: 1280,
minHeight: 720,
maxHeight: 720
}
}
session.defaultSession.setDisplayMediaRequestHandler((request, callback) => {
desktopCapturer.getSources({ types: ['screen'] }).then((sources) => {
// Grant access to the first screen found.
callback({ video: sources[0], audio: 'loopback' })
})
handleStream(stream)
} catch (e) {
handleError(e)
}
})
mainWindow.loadFile('index.html')
})
function handleStream (stream) {
const video = document.querySelector('video')
video.srcObject = stream
video.onloadedmetadata = (e) => video.play()
}
function handleError (e) {
console.log(e)
}
```
To capture video from a source provided by `desktopCapturer` the constraints
passed to [`navigator.mediaDevices.getUserMedia`][] must include
`chromeMediaSource: 'desktop'`, and `audio: false`.
To capture both audio and video from the entire desktop the constraints passed
to [`navigator.mediaDevices.getUserMedia`][] must include `chromeMediaSource: 'desktop'`,
for both `audio` and `video`, but should not include a `chromeMediaSourceId` constraint.
```js
const constraints = {
audio: {
mandatory: {
chromeMediaSource: 'desktop'
// renderer.js
const startButton = document.getElementById('startButton')
const stopButton = document.getElementById('stopButton')
const video = document.querySelector('video')
startButton.addEventListener('click', () => {
navigator.mediaDevices.getDisplayMedia({
audio: true,
video: {
width: 320,
height: 240,
frameRate: 30
}
},
video: {
mandatory: {
chromeMediaSource: 'desktop'
}
}
}
}).then(stream => {
video.srcObject = stream
video.onloadedmetadata = (e) => video.play()
}).catch(e => console.log(e))
})
stopButton.addEventListener('click', () => {
video.pause()
})
```
```html
<!-- index.html -->
<html>
<meta http-equiv="content-security-policy" content="script-src 'self' 'unsafe-inline'" />
<body>
<button id="startButton" class="button">Start</button>
<button id="stopButton" class="button">Stop</button>
<video width="320" height="240" autoplay></video>
<script src="renderer.js"></script>
</body>
</html>
```
See [`navigator.mediaDevices.getDisplayMedia`](https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices/getDisplayMedia) for more information.
**Note:** `navigator.mediaDevices.getDisplayMedia` does not permit the use of `deviceId` for
selection of a source - see [specification](https://w3c.github.io/mediacapture-screen-share/#constraints).
## Methods
The `desktopCapturer` module has the following methods:

View File

@@ -15,9 +15,9 @@ console.log(dialog.showOpenDialog({ properties: ['openFile', 'multiSelections']
The `dialog` module has the following methods:
### `dialog.showOpenDialogSync([browserWindow, ]options)`
### `dialog.showOpenDialogSync([window, ]options)`
* `browserWindow` [BrowserWindow](browser-window.md) (optional)
* `window` [BaseWindow](base-window.md) (optional)
* `options` Object
* `title` string (optional)
* `defaultPath` string (optional)
@@ -47,7 +47,7 @@ The `dialog` module has the following methods:
Returns `string[] | undefined`, the file paths chosen by the user; if the dialog is cancelled it returns `undefined`.
The `browserWindow` argument allows the dialog to attach itself to a parent window, making it modal.
The `window` argument allows the dialog to attach itself to a parent window, making it modal.
The `filters` specifies an array of file types that can be displayed or
selected when you want to limit the user to a specific type. For example:
@@ -72,15 +72,15 @@ and a directory selector, so if you set `properties` to
`['openFile', 'openDirectory']` on these platforms, a directory selector will be
shown.
```js @ts-type={mainWindow:Electron.BrowserWindow}
```js @ts-type={mainWindow:Electron.BaseWindow}
dialog.showOpenDialogSync(mainWindow, {
properties: ['openFile', 'openDirectory']
})
```
### `dialog.showOpenDialog([browserWindow, ]options)`
### `dialog.showOpenDialog([window, ]options)`
* `browserWindow` [BrowserWindow](browser-window.md) (optional)
* `window` [BaseWindow](base-window.md) (optional)
* `options` Object
* `title` string (optional)
* `defaultPath` string (optional)
@@ -114,7 +114,7 @@ Returns `Promise<Object>` - Resolve with an object containing the following:
* `filePaths` string[] - An array of file paths chosen by the user. If the dialog is cancelled this will be an empty array.
* `bookmarks` string[]&#32;(optional) _macOS_ _mas_ - An array matching the `filePaths` array of base64 encoded strings which contains security scoped bookmark data. `securityScopedBookmarks` must be enabled for this to be populated. (For return values, see [table here](#bookmarks-array).)
The `browserWindow` argument allows the dialog to attach itself to a parent window, making it modal.
The `window` argument allows the dialog to attach itself to a parent window, making it modal.
The `filters` specifies an array of file types that can be displayed or
selected when you want to limit the user to a specific type. For example:
@@ -139,7 +139,7 @@ and a directory selector, so if you set `properties` to
`['openFile', 'openDirectory']` on these platforms, a directory selector will be
shown.
```js @ts-type={mainWindow:Electron.BrowserWindow}
```js @ts-type={mainWindow:Electron.BaseWindow}
dialog.showOpenDialog(mainWindow, {
properties: ['openFile', 'openDirectory']
}).then(result => {
@@ -150,9 +150,9 @@ dialog.showOpenDialog(mainWindow, {
})
```
### `dialog.showSaveDialogSync([browserWindow, ]options)`
### `dialog.showSaveDialogSync([window, ]options)`
* `browserWindow` [BrowserWindow](browser-window.md) (optional)
* `window` [BaseWindow](base-window.md) (optional)
* `options` Object
* `title` string (optional) - The dialog title. Cannot be displayed on some _Linux_ desktop environments.
* `defaultPath` string (optional) - Absolute directory path, absolute file
@@ -176,14 +176,14 @@ dialog.showOpenDialog(mainWindow, {
Returns `string`, the path of the file chosen by the user; if the dialog is cancelled it returns an empty string.
The `browserWindow` argument allows the dialog to attach itself to a parent window, making it modal.
The `window` argument allows the dialog to attach itself to a parent window, making it modal.
The `filters` specifies an array of file types that can be displayed, see
`dialog.showOpenDialog` for an example.
### `dialog.showSaveDialog([browserWindow, ]options)`
### `dialog.showSaveDialog([window, ]options)`
* `browserWindow` [BrowserWindow](browser-window.md) (optional)
* `window` [BaseWindow](base-window.md) (optional)
* `options` Object
* `title` string (optional) - The dialog title. Cannot be displayed on some _Linux_ desktop environments.
* `defaultPath` string (optional) - Absolute directory path, absolute file
@@ -210,7 +210,7 @@ Returns `Promise<Object>` - Resolve with an object containing the following:
* `filePath` string - If the dialog is canceled, this will be an empty string.
* `bookmark` string (optional) _macOS_ _mas_ - Base64 encoded string which contains the security scoped bookmark data for the saved file. `securityScopedBookmarks` must be enabled for this to be present. (For return values, see [table here](#bookmarks-array).)
The `browserWindow` argument allows the dialog to attach itself to a parent window, making it modal.
The `window` argument allows the dialog to attach itself to a parent window, making it modal.
The `filters` specifies an array of file types that can be displayed, see
`dialog.showOpenDialog` for an example.
@@ -218,9 +218,9 @@ The `filters` specifies an array of file types that can be displayed, see
**Note:** On macOS, using the asynchronous version is recommended to avoid issues when
expanding and collapsing the dialog.
### `dialog.showMessageBoxSync([browserWindow, ]options)`
### `dialog.showMessageBoxSync([wndow, ]options)`
* `browserWindow` [BrowserWindow](browser-window.md) (optional)
* `window` [BaseWindow](base-window.md) (optional)
* `options` Object
* `message` string - Content of the message box.
* `type` string (optional) - Can be `none`, `info`, `error`, `question` or
@@ -258,12 +258,12 @@ Returns `Integer` - the index of the clicked button.
Shows a message box, it will block the process until the message box is closed.
It returns the index of the clicked button.
The `browserWindow` argument allows the dialog to attach itself to a parent window, making it modal.
If `browserWindow` is not shown dialog will not be attached to it. In such case it will be displayed as an independent window.
The `window` argument allows the dialog to attach itself to a parent window, making it modal.
If `window` is not shown dialog will not be attached to it. In such case it will be displayed as an independent window.
### `dialog.showMessageBox([browserWindow, ]options)`
### `dialog.showMessageBox([window, ]options)`
* `browserWindow` [BrowserWindow](browser-window.md) (optional)
* `window` [BaseWindow](base-window.md) (optional)
* `options` Object
* `message` string - Content of the message box.
* `type` string (optional) - Can be `none`, `info`, `error`, `question` or
@@ -313,7 +313,7 @@ Returns `Promise<Object>` - resolves with a promise containing the following pro
Shows a message box.
The `browserWindow` argument allows the dialog to attach itself to a parent window, making it modal.
The `window` argument allows the dialog to attach itself to a parent window, making it modal.
### `dialog.showErrorBox(title, content)`
@@ -327,9 +327,9 @@ it is usually used to report errors in early stage of startup. If called
before the app `ready`event on Linux, the message will be emitted to stderr,
and no GUI dialog will appear.
### `dialog.showCertificateTrustDialog([browserWindow, ]options)` _macOS_ _Windows_
### `dialog.showCertificateTrustDialog([window, ]options)` _macOS_ _Windows_
* `browserWindow` [BrowserWindow](browser-window.md) (optional)
* `window` [BaseWindow](base-window.md) (optional)
* `options` Object
* `certificate` [Certificate](structures/certificate.md) - The certificate to trust/import.
* `message` string - The message to display to the user.
@@ -338,14 +338,14 @@ Returns `Promise<void>` - resolves when the certificate trust dialog is shown.
On macOS, this displays a modal dialog that shows a message and certificate
information, and gives the user the option of trusting/importing the
certificate. If you provide a `browserWindow` argument the dialog will be
certificate. If you provide a `window` argument the dialog will be
attached to the parent window, making it modal.
On Windows the options are more limited, due to the Win32 APIs used:
* The `message` argument is not used, as the OS provides its own confirmation
dialog.
* The `browserWindow` argument is ignored since it is not possible to make
* The `window` argument is ignored since it is not possible to make
this confirmation dialog modal.
## Bookmarks array
@@ -362,10 +362,10 @@ On Windows the options are more limited, due to the Win32 APIs used:
## Sheets
On macOS, dialogs are presented as sheets attached to a window if you provide
a [`BrowserWindow`](browser-window.md) reference in the `browserWindow` parameter, or modals if no
a [`BaseWindow`](base-window.md) reference in the `window` parameter, or modals if no
window is provided.
You can call `BrowserWindow.getCurrentWindow().setSheetOffset(offset)` to change
You can call `BaseWindow.getCurrentWindow().setSheetOffset(offset)` to change
the offset from the window frame where sheets are attached.
[AbortSignal]: https://nodejs.org/api/globals.html#globals_class_abortsignal

View File

@@ -80,4 +80,4 @@ Returns `Menu | null` - The application's [dock menu][dock-menu].
Sets the `image` associated with this dock icon.
[dock-menu]: https://developer.apple.com/macos/human-interface-guidelines/menus/dock-menus/
[dock-menu]: https://developer.apple.com/design/human-interface-guidelines/dock-menus

View File

@@ -145,6 +145,10 @@ Returns `string` - The file name of the download item.
disk. If user changes the file name in a prompted download saving dialog, the
actual name of saved file will be different.
#### `downloadItem.getCurrentBytesPerSecond()`
Returns `Integer` - The current download speed in bytes per second.
#### `downloadItem.getTotalBytes()`
Returns `Integer` - The total size in bytes of the download item.
@@ -155,6 +159,10 @@ If the size is unknown, it returns 0.
Returns `Integer` - The received bytes of the download item.
#### `downloadItem.getPercentComplete()`
Returns `Integer` - The download completion in percent.
#### `downloadItem.getContentDisposition()`
Returns `string` - The Content-Disposition field from the response
@@ -184,6 +192,10 @@ Returns `string` - ETag header value.
Returns `Double` - Number of seconds since the UNIX epoch when the download was
started.
#### `downloadItem.getEndTime()`
Returns `Double` - Number of seconds since the UNIX epoch when the download ended.
### Instance Properties
#### `downloadItem.savePath`

View File

@@ -7,6 +7,15 @@ hide_title: false
# ipcRenderer
<!--
```YAML history
changes:
- pr-url: https://github.com/electron/electron/pull/40330
description: "`ipcRenderer` can no longer be sent over the `contextBridge`"
breaking-changes-header: behavior-changed-ipcrenderer-can-no-longer-be-sent-over-the-contextbridge
```
-->
> Communicate asynchronously from a renderer process to the main process.
Process: [Renderer](../glossary.md#renderer-process)

View File

@@ -257,6 +257,15 @@ data.
#### `image.toDataURL([options])`
<!--
```YAML history
changes:
- pr-url: https://github.com/electron/electron/pull/41752
description: "`nativeImage.toDataURL` will preserve PNG colorspace"
breaking-changes-header: behavior-changed-nativeimagetodataurl-will-preserve-png-colorspace
```
-->
* `options` Object (optional)
* `scaleFactor` Number (optional) - Defaults to 1.0.

View File

@@ -72,3 +72,7 @@ or is being instructed to use an inverted color scheme.
A `boolean` indicating whether Chromium is in forced colors mode, controlled by system accessibility settings.
Currently, Windows high contrast is the only system setting that triggers forced colors mode.
### `nativeTheme.prefersReducedTransparency` _Readonly_
A `boolean` that indicates the whether the user has chosen via system accessibility settings to reduce transparency at the OS level.

View File

@@ -35,10 +35,7 @@ Returns `Integer` - The index of the current page, from which we would go back/f
* `index` Integer
Returns `Object`:
* `url` string - The URL of the navigation entry at the given index.
* `title` string - The page title of the navigation entry at the given index.
Returns [`NavigationEntry`](structures/navigation-entry.md) - Navigation entry at the given index.
If index is out of bounds (greater than history length or less than 0), null will be returned.
@@ -65,3 +62,15 @@ Navigates to the specified offset from the current entry.
#### `navigationHistory.length()`
Returns `Integer` - History length.
#### `navigationHistory.removeEntryAtIndex(index)`
* `index` Integer
Removes the navigation entry at the given index. Can't remove entry at the "current active index".
Returns `boolean` - Whether the navigation entry was removed from the webContents history.
#### `navigationHistory.getAllEntries()`
Returns [`NavigationEntry[]`](structures/navigation-entry.md) - WebContents complete history.

View File

@@ -130,7 +130,7 @@ won't be able to connect to remote sites. However, a return value of
whether a particular connection attempt to a particular remote site
will be successful.
#### `net.resolveHost(host, [options])`
### `net.resolveHost(host, [options])`
* `host` string - Hostname to resolve.
* `options` Object (optional)

View File

@@ -189,6 +189,15 @@ Returns `boolean` - Whether `scheme` is already handled.
### `protocol.registerFileProtocol(scheme, handler)` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/36674
description: "`protocol.register*Protocol` and `protocol.intercept*Protocol` methods have been replaced with `protocol.handle`"
breaking-changes-header: deprecated-protocolunregisterinterceptbufferstringstreamfilehttpprotocol-and-protocolisprotocolregisteredintercepted
```
-->
* `scheme` string
* `handler` Function
* `request` [ProtocolRequest](structures/protocol-request.md)
@@ -210,6 +219,15 @@ from protocols that follow the "generic URI syntax" like `file:`.
### `protocol.registerBufferProtocol(scheme, handler)` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/36674
description: "`protocol.register*Protocol` and `protocol.intercept*Protocol` methods have been replaced with `protocol.handle`"
breaking-changes-header: deprecated-protocolunregisterinterceptbufferstringstreamfilehttpprotocol-and-protocolisprotocolregisteredintercepted
```
-->
* `scheme` string
* `handler` Function
* `request` [ProtocolRequest](structures/protocol-request.md)
@@ -234,6 +252,15 @@ protocol.registerBufferProtocol('atom', (request, callback) => {
### `protocol.registerStringProtocol(scheme, handler)` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/36674
description: "`protocol.register*Protocol` and `protocol.intercept*Protocol` methods have been replaced with `protocol.handle`"
breaking-changes-header: deprecated-protocolunregisterinterceptbufferstringstreamfilehttpprotocol-and-protocolisprotocolregisteredintercepted
```
-->
* `scheme` string
* `handler` Function
* `request` [ProtocolRequest](structures/protocol-request.md)
@@ -250,6 +277,15 @@ property.
### `protocol.registerHttpProtocol(scheme, handler)` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/36674
description: "`protocol.register*Protocol` and `protocol.intercept*Protocol` methods have been replaced with `protocol.handle`"
breaking-changes-header: deprecated-protocolunregisterinterceptbufferstringstreamfilehttpprotocol-and-protocolisprotocolregisteredintercepted
```
-->
* `scheme` string
* `handler` Function
* `request` [ProtocolRequest](structures/protocol-request.md)
@@ -265,6 +301,15 @@ should be called with an object that has the `url` property.
### `protocol.registerStreamProtocol(scheme, handler)` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/36674
description: "`protocol.register*Protocol` and `protocol.intercept*Protocol` methods have been replaced with `protocol.handle`"
breaking-changes-header: deprecated-protocolunregisterinterceptbufferstringstreamfilehttpprotocol-and-protocolisprotocolregisteredintercepted
```
-->
* `scheme` string
* `handler` Function
* `request` [ProtocolRequest](structures/protocol-request.md)
@@ -314,6 +359,15 @@ protocol.registerStreamProtocol('atom', (request, callback) => {
### `protocol.unregisterProtocol(scheme)` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/36674
description: "`protocol.register*Protocol` and `protocol.intercept*Protocol` methods have been replaced with `protocol.handle`"
breaking-changes-header: deprecated-protocolunregisterinterceptbufferstringstreamfilehttpprotocol-and-protocolisprotocolregisteredintercepted
```
-->
* `scheme` string
Returns `boolean` - Whether the protocol was successfully unregistered
@@ -322,12 +376,30 @@ Unregisters the custom protocol of `scheme`.
### `protocol.isProtocolRegistered(scheme)` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/36674
description: "`protocol.register*Protocol` and `protocol.intercept*Protocol` methods have been replaced with `protocol.handle`"
breaking-changes-header: deprecated-protocolunregisterinterceptbufferstringstreamfilehttpprotocol-and-protocolisprotocolregisteredintercepted
```
-->
* `scheme` string
Returns `boolean` - Whether `scheme` is already registered.
### `protocol.interceptFileProtocol(scheme, handler)` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/36674
description: "`protocol.register*Protocol` and `protocol.intercept*Protocol` methods have been replaced with `protocol.handle`"
breaking-changes-header: deprecated-protocolunregisterinterceptbufferstringstreamfilehttpprotocol-and-protocolisprotocolregisteredintercepted
```
-->
* `scheme` string
* `handler` Function
* `request` [ProtocolRequest](structures/protocol-request.md)
@@ -341,6 +413,15 @@ which sends a file as a response.
### `protocol.interceptStringProtocol(scheme, handler)` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/36674
description: "`protocol.register*Protocol` and `protocol.intercept*Protocol` methods have been replaced with `protocol.handle`"
breaking-changes-header: deprecated-protocolunregisterinterceptbufferstringstreamfilehttpprotocol-and-protocolisprotocolregisteredintercepted
```
-->
* `scheme` string
* `handler` Function
* `request` [ProtocolRequest](structures/protocol-request.md)
@@ -354,6 +435,15 @@ which sends a `string` as a response.
### `protocol.interceptBufferProtocol(scheme, handler)` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/36674
description: "`protocol.register*Protocol` and `protocol.intercept*Protocol` methods have been replaced with `protocol.handle`"
breaking-changes-header: deprecated-protocolunregisterinterceptbufferstringstreamfilehttpprotocol-and-protocolisprotocolregisteredintercepted
```
-->
* `scheme` string
* `handler` Function
* `request` [ProtocolRequest](structures/protocol-request.md)
@@ -367,6 +457,15 @@ which sends a `Buffer` as a response.
### `protocol.interceptHttpProtocol(scheme, handler)` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/36674
description: "`protocol.register*Protocol` and `protocol.intercept*Protocol` methods have been replaced with `protocol.handle`"
breaking-changes-header: deprecated-protocolunregisterinterceptbufferstringstreamfilehttpprotocol-and-protocolisprotocolregisteredintercepted
```
-->
* `scheme` string
* `handler` Function
* `request` [ProtocolRequest](structures/protocol-request.md)
@@ -380,6 +479,15 @@ which sends a new HTTP request as a response.
### `protocol.interceptStreamProtocol(scheme, handler)` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/36674
description: "`protocol.register*Protocol` and `protocol.intercept*Protocol` methods have been replaced with `protocol.handle`"
breaking-changes-header: deprecated-protocolunregisterinterceptbufferstringstreamfilehttpprotocol-and-protocolisprotocolregisteredintercepted
```
-->
* `scheme` string
* `handler` Function
* `request` [ProtocolRequest](structures/protocol-request.md)
@@ -393,6 +501,15 @@ protocol handler.
### `protocol.uninterceptProtocol(scheme)` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/36674
description: "`protocol.register*Protocol` and `protocol.intercept*Protocol` methods have been replaced with `protocol.handle`"
breaking-changes-header: deprecated-protocolunregisterinterceptbufferstringstreamfilehttpprotocol-and-protocolisprotocolregisteredintercepted
```
-->
* `scheme` string
Returns `boolean` - Whether the protocol was successfully unintercepted
@@ -401,6 +518,15 @@ Remove the interceptor installed for `scheme` and restore its original handler.
### `protocol.isProtocolIntercepted(scheme)` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/36674
description: "`protocol.register*Protocol` and `protocol.intercept*Protocol` methods have been replaced with `protocol.handle`"
breaking-changes-header: deprecated-protocolunregisterinterceptbufferstringstreamfilehttpprotocol-and-protocolisprotocolregisteredintercepted
```
-->
* `scheme` string
Returns `boolean` - Whether `scheme` is already intercepted.

View File

@@ -143,6 +143,71 @@ Returns:
Emitted after an extension is loaded and all necessary browser state is
initialized to support the start of the extension's background page.
#### Event: 'file-system-access-restricted'
Returns:
* `event` Event
* `details` Object
* `origin` string - The origin that initiated access to the blocked path.
* `isDirectory` boolean - Whether or not the path is a directory.
* `path` string - The blocked path attempting to be accessed.
* `callback` Function
* `action` string - The action to take as a result of the restricted path access attempt.
* `allow` - This will allow `path` to be accessed despite restricted status.
* `deny` - This will block the access request and trigger an [`AbortError`](https://developer.mozilla.org/en-US/docs/Web/API/AbortController/abort).
* `tryAgain` - This will open a new file picker and allow the user to choose another path.
```js
const { app, dialog, BrowserWindow, session } = require('electron')
async function createWindow () {
const mainWindow = new BrowserWindow()
await mainWindow.loadURL('https://buzzfeed.com')
session.defaultSession.on('file-system-access-restricted', async (e, details, callback) => {
const { origin, path } = details
const { response } = await dialog.showMessageBox({
message: `Are you sure you want ${origin} to open restricted path ${path}?`,
title: 'File System Access Restricted',
buttons: ['Choose a different folder', 'Allow', 'Cancel'],
cancelId: 2
})
if (response === 0) {
callback('tryAgain')
} else if (response === 1) {
callback('allow')
} else {
callback('deny')
}
})
mainWindow.webContents.executeJavaScript(`
window.showDirectoryPicker({
id: 'electron-demo',
mode: 'readwrite',
startIn: 'downloads',
}).catch(e => {
console.log(e)
})`, true
)
}
app.whenReady().then(() => {
createWindow()
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) createWindow()
})
})
app.on('window-all-closed', function () {
if (process.platform !== 'darwin') app.quit()
})
```
#### Event: 'preconnect'
Returns:

View File

@@ -139,8 +139,7 @@ Possible values are:
-webkit-app-region: drag. This type is commonly used for splash screens.
* The `notification` type creates a window that behaves like a system notification.
* On macOS, possible types are `desktop`, `textured`, `panel`.
* The `textured` type adds metal gradient appearance
(`NSWindowStyleMaskTexturedBackground`).
* The `textured` type adds metal gradient appearance. This option is **deprecated**.
* The `desktop` type places the window at the desktop background window level
(`kCGDesktopWindowLevel - 1`). Note that desktop window will not receive
focus, keyboard or mouse events, but you can use `globalShortcut` to receive

View File

@@ -0,0 +1,4 @@
# NavigationEntry Object
* `url` string
* `title` string

View File

@@ -401,10 +401,12 @@ Returns an object with system animation settings.
## Properties
### `systemPreferences.accessibilityDisplayShouldReduceTransparency()` _macOS_
### `systemPreferences.accessibilityDisplayShouldReduceTransparency` _macOS_ _Deprecated_
A `boolean` property which determines whether the app avoids using semitransparent backgrounds. This maps to [NSWorkspace.accessibilityDisplayShouldReduceTransparency](https://developer.apple.com/documentation/appkit/nsworkspace/1533006-accessibilitydisplayshouldreduce)
**Deprecated:** Use the new [`nativeTheme.prefersReducedTransparency`](native-theme.md#nativethemeprefersreducedtransparency-readonly) API.
### `systemPreferences.effectiveAppearance` _macOS_ _Readonly_
A `string` property that can be `dark`, `light` or `unknown`.

View File

@@ -36,6 +36,8 @@ Process: [Main](../glossary.md#main-process)<br />
`com.apple.security.cs.allow-unsigned-executable-memory` entitlements. This will allow the utility process
to load unsigned libraries. Unless you specifically need this capability, it is best to leave this disabled.
Default is `false`.
* `respondToAuthRequestsFromMainProcess` boolean (optional) - With this flag, all HTTP 401 and 407 network
requests created via the [net module](net.md) will allow responding to them via the [`app#login`](app.md#event-login) event in the main process instead of the default [`login`](client-request.md#event-login) event on the [`ClientRequest`](client-request.md) object.
Returns [`UtilityProcess`](utility-process.md#class-utilityprocess)

View File

@@ -94,6 +94,12 @@ Examples of valid `color` values:
**Note:** Hex format with alpha takes `AARRGGBB` or `ARGB`, _not_ `RRGGBBAA` or `RGB`.
#### `view.setBorderRadius(radius)`
* `radius` Integer - Border radius size in pixels.
**Note:** The area cutout of the view's border still captures clicks.
#### `view.setVisible(visible)`
* `visible` boolean - If false, the view will be hidden from display.

View File

@@ -1126,18 +1126,42 @@ Reloads current page and ignores cache.
#### `contents.canGoBack()` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/41752
breaking-changes-header: deprecated-clearhistory-cangoback-goback-cangoforward-goforward-gotoindex-cangotooffset-gotooffset-on-webcontents
```
-->
Returns `boolean` - Whether the browser can go back to previous web page.
**Deprecated:** Should use the new [`contents.navigationHistory.canGoBack`](navigation-history.md#navigationhistorycangoback) API.
#### `contents.canGoForward()` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/41752
breaking-changes-header: deprecated-clearhistory-cangoback-goback-cangoforward-goforward-gotoindex-cangotooffset-gotooffset-on-webcontents
```
-->
Returns `boolean` - Whether the browser can go forward to next web page.
**Deprecated:** Should use the new [`contents.navigationHistory.canGoForward`](navigation-history.md#navigationhistorycangoforward) API.
#### `contents.canGoToOffset(offset)` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/41752
breaking-changes-header: deprecated-clearhistory-cangoback-goback-cangoforward-goforward-gotoindex-cangotooffset-gotooffset-on-webcontents
```
-->
* `offset` Integer
Returns `boolean` - Whether the web page can go to `offset`.
@@ -1146,24 +1170,56 @@ Returns `boolean` - Whether the web page can go to `offset`.
#### `contents.clearHistory()` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/41752
breaking-changes-header: deprecated-clearhistory-cangoback-goback-cangoforward-goforward-gotoindex-cangotooffset-gotooffset-on-webcontents
```
-->
Clears the navigation history.
**Deprecated:** Should use the new [`contents.navigationHistory.clear`](navigation-history.md#navigationhistoryclear) API.
#### `contents.goBack()` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/41752
breaking-changes-header: deprecated-clearhistory-cangoback-goback-cangoforward-goforward-gotoindex-cangotooffset-gotooffset-on-webcontents
```
-->
Makes the browser go back a web page.
**Deprecated:** Should use the new [`contents.navigationHistory.goBack`](navigation-history.md#navigationhistorygoback) API.
#### `contents.goForward()` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/41752
breaking-changes-header: deprecated-clearhistory-cangoback-goback-cangoforward-goforward-gotoindex-cangotooffset-gotooffset-on-webcontents
```
-->
Makes the browser go forward a web page.
**Deprecated:** Should use the new [`contents.navigationHistory.goForward`](navigation-history.md#navigationhistorygoforward) API.
#### `contents.goToIndex(index)` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/41752
breaking-changes-header: deprecated-clearhistory-cangoback-goback-cangoforward-goforward-gotoindex-cangotooffset-gotooffset-on-webcontents
```
-->
* `index` Integer
Navigates browser to the specified absolute web page index.
@@ -1172,6 +1228,14 @@ Navigates browser to the specified absolute web page index.
#### `contents.goToOffset(offset)` _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/41752
breaking-changes-header: deprecated-clearhistory-cangoback-goback-cangoforward-goforward-gotoindex-cangotooffset-gotooffset-on-webcontents
```
-->
* `offset` Integer
Navigates to the specified offset from the "current entry".
@@ -1566,7 +1630,7 @@ If you would like the page to stay hidden, you should ensure that `stayHidden` i
#### `contents.isBeingCaptured()`
Returns `boolean` - Whether this page is being captured. It returns true when the capturer count
is large then 0.
is greater than 0.
#### `contents.getPrintersAsync()`
@@ -2148,6 +2212,15 @@ when the page becomes backgrounded. This also affects the Page Visibility API.
#### `contents.setBackgroundThrottling(allowed)`
<!--
```YAML history
changes:
- pr-url: https://github.com/electron/electron/pull/38924
description: "`WebContents.backgroundThrottling` set to false affects all `WebContents` in the host `BrowserWindow`"
breaking-changes-header: behavior-changed-webcontentsbackgroundthrottling-set-to-false-affects-all-webcontents-in-the-host-browserwindow
```
-->
* `allowed` boolean
Controls whether or not this WebContents will throttle animations and timers
@@ -2258,6 +2331,15 @@ A [`Debugger`](debugger.md) instance for this webContents.
#### `contents.backgroundThrottling`
<!--
```YAML history
changes:
- pr-url: https://github.com/electron/electron/pull/38924
description: "`WebContents.backgroundThrottling` set to false affects all `WebContents` in the host `BrowserWindow`"
breaking-changes-header: behavior-changed-webcontentsbackgroundthrottling-set-to-false-affects-all-webcontents-in-the-host-browserwindow
```
-->
A `boolean` property that determines whether or not this WebContents will throttle animations and timers
when the page becomes backgrounded. This also affects the Page Visibility API.

View File

@@ -12,6 +12,37 @@ This document uses the following convention to categorize breaking changes:
* **Deprecated:** An API was marked as deprecated. The API will continue to function, but will emit a deprecation warning, and will be removed in a future release.
* **Removed:** An API or feature was removed, and is no longer supported by Electron.
## Planned Breaking API Changes (33.0)
### Behavior Changed: `webContents` property on `login` on `app`
The `webContents` property in the `login` event from `app` will be `null`
when the event is triggered for requests from the [utility process](api/utility-process.md)
created with `respondToAuthRequestsFromMainProcess` option.
### Deprecated: `textured` option in `BrowserWindowConstructorOption.type`
The `textured` option of `type` in `BrowserWindowConstructorOptions` has been deprecated with no replacement. This option relied on the [`NSWindowStyleMaskTexturedBackground`](https://developer.apple.com/documentation/appkit/nswindowstylemask/nswindowstylemasktexturedbackground) style mask on macOS, which has been deprecated with no alternative.
### Removed: macOS 10.15 support
macOS 10.15 (Catalina) is no longer supported by [Chromium](https://chromium-review.googlesource.com/c/chromium/src/+/5734361).
Older versions of Electron will continue to run on Catalina, but macOS 11 (Big Sur)
or later will be required to run Electron v33.0.0 and higher.
### Deprecated: `systemPreferences.accessibilityDisplayShouldReduceTransparency`
The `systemPreferences.accessibilityDisplayShouldReduceTransparency` property is now deprecated in favor of the new `nativeTheme.prefersReducedTransparency`, which provides identical information and works cross-platform.
```js
// Deprecated
const shouldReduceTransparency = systemPreferences.accessibilityDisplayShouldReduceTransparency
// Replace with:
const prefersReducedTransparency = nativeTheme.prefersReducedTransparency
```
## Planned Breaking API Changes (32.0)
### Removed: `File.path`
@@ -44,7 +75,7 @@ contextBridge.exposeInMainWorld('electron', {
})
```
### Deprecated: `clearHistory`, `canGoBack`, `goBack`, `canGoForward`, `goForward`, `canGoToOffset`, `goToOffset` on `WebContents`
### Deprecated: `clearHistory`, `canGoBack`, `goBack`, `canGoForward`, `goForward`, `goToIndex`, `canGoToOffset`, `goToOffset` on `WebContents`
The navigation-related APIs are now deprecated.
@@ -57,6 +88,7 @@ win.webContents.canGoBack()
win.webContents.goBack()
win.webContents.canGoForward()
win.webContents.goForward()
win.webContents.goToIndex(index)
win.webContents.canGoToOffset()
win.webContents.goToOffset(index)
@@ -115,6 +147,24 @@ The autoresizing behavior is now standardized across all platforms.
If your app uses `BrowserView.setAutoResize` to do anything more complex than making a BrowserView fill the entire window, it's likely you already had custom logic in place to handle this difference in behavior on macOS.
If so, that logic will no longer be needed in Electron 30 as autoresizing behavior is consistent.
### Deprecated: `BrowserView`
The [`BrowserView`](./api/browser-view.md) class has been deprecated and
replaced by the new [`WebContentsView`](./api/web-contents-view.md) class.
`BrowserView` related methods in [`BrowserWindow`](./api/browser-window.md) have
also been deprecated:
```js
BrowserWindow.fromBrowserView(browserView)
win.setBrowserView(browserView)
win.getBrowserView()
win.addBrowserView(browserView)
win.removeBrowserView(browserView)
win.setTopBrowserView(browserView)
win.getBrowserViews()
```
### Removed: `params.inputFormType` property on `context-menu` on `WebContents`
The `inputFormType` property of the params object in the `context-menu`
@@ -442,7 +492,7 @@ systemPreferences.getColor('selected-content-background')
## Planned Breaking API Changes (25.0)
### Deprecated: `protocol.{register,intercept}{Buffer,String,Stream,File,Http}Protocol`
### Deprecated: `protocol.{un,}{register,intercept}{Buffer,String,Stream,File,Http}Protocol` and `protocol.isProtocol{Registered,Intercepted}`
The `protocol.register*Protocol` and `protocol.intercept*Protocol` methods have
been replaced with [`protocol.handle`](api/protocol.md#protocolhandlescheme-handler).
@@ -1777,7 +1827,7 @@ In Electron 7, this now returns a `FileList` with a `File` object for:
Note that `webkitdirectory` no longer exposes the path to the selected folder.
If you require the path to the selected folder rather than the folder contents,
see the `dialog.showOpenDialog` API ([link](api/dialog.md#dialogshowopendialogbrowserwindow-options)).
see the `dialog.showOpenDialog` API ([link](api/dialog.md#dialogshowopendialogwindow-options)).
### API Changed: Callback-based versions of promisified APIs

View File

@@ -0,0 +1,190 @@
# Electron API History Migration Guide
This document demonstrates how to add API History blocks to existing APIs.
## API history information
Here are some resources you can use to find information on the history of an API:
### Breaking Changes
* [`breaking-changes.md`](../breaking-changes.md)
### Additions
* `git blame`
* [Release notes](https://github.com/electron/electron/releases/)
* [`electron-api-historian`](https://github.com/electron/electron-api-historian)
## Example
> [!NOTE]
> The associated API is already removed, we will ignore that for the purpose of
> this example.
If we search through [`breaking-changes.md`](../breaking-changes.md) we can find
[a function that was deprecated in Electron `25.0`](../breaking-changes.md#deprecated-browserwindowsettrafficlightpositionposition).
```markdown
<!-- docs/breaking-changes.md -->
### Deprecated: `BrowserWindow.getTrafficLightPosition()`
`BrowserWindow.getTrafficLightPosition()` has been deprecated, the
`BrowserWindow.getWindowButtonPosition()` API should be used instead
which returns `null` instead of `{ x: 0, y: 0 }` when there is no custom
position.
<!-- docs/api/browser-window.md -->
#### `win.getTrafficLightPosition()` _macOS_ _Deprecated_
Returns `Point` - The custom position for the traffic light buttons in
frameless window, `{ x: 0, y: 0 }` will be returned when there is no custom
position.
```
We can then use `git blame` to find the Pull Request associated with that entry:
```bash
$ grep -n "BrowserWindow.getTrafficLightPosition" docs/breaking-changes.md
523:### Deprecated: `BrowserWindow.getTrafficLightPosition()`
525:`BrowserWindow.getTrafficLightPosition()` has been deprecated, the
$ git blame -L523,524 -- docs/breaking-changes.md
1e206deec3e (Keeley Hammond 2023-04-06 21:23:29 -0700 523) ### Deprecated: `BrowserWindow.getTrafficLightPosition()`
1e206deec3e (Keeley Hammond 2023-04-06 21:23:29 -0700 524)
$ git log -1 1e206deec3e
commit 1e206deec3ef142460c780307752a84782f9baed (tag: v26.0.0-nightly.20230407)
Author: Keeley Hammond <vertedinde@electronjs.org>
Date: Thu Apr 6 21:23:29 2023 -0700
docs: update E24/E25 breaking changes (#37878) <-- This is the associated Pull Request
```
Verify that the Pull Request is correct and make a corresponding entry in the
API History:
> [!NOTE]
> Refer to the [API History section of `styleguide.md`](../styleguide.md#api-history)
for information on how to create API History blocks.
`````markdown
#### `win.getTrafficLightPosition()` _macOS_ _Deprecated_
<!--
```YAML history
deprecated:
- pr-url: https://github.com/electron/electron/pull/37878
breaking-changes-header: deprecated-browserwindowgettrafficlightposition
```
-->
Returns `Point` - The custom position for the traffic light buttons in
frameless window, `{ x: 0, y: 0 }` will be returned when there is no custom
position.
`````
You can keep looking through `breaking-changes.md` to find other breaking changes
and add those in.
You can also use [`git log -L :<funcname>:<file>`](https://git-scm.com/docs/git-log#Documentation/git-log.txt--Lltfuncnamegtltfilegt):
```bash
$ git log --reverse -L :GetTrafficLightPosition:shell/browser/native_window_mac.mm
commit e01b1831d96d5d68f54af879b00c617358df5372
Author: Cheng Zhao <zcbenz@gmail.com>
Date: Wed Dec 16 14:30:39 2020 +0900
feat: make trafficLightPosition work for customButtonOnHover (#26789)
```
Verify that the Pull Request is correct and make a corresponding entry in the
API History:
`````markdown
#### `win.getTrafficLightPosition()` _macOS_ _Deprecated_
<!--
```YAML history
added:
- pr-url: https://github.com/electron/electron/pull/22533
changes:
- pr-url: https://github.com/electron/electron/pull/26789
description: "Made `trafficLightPosition` option work for `customButtonOnHover` window."
breaking-changes-header: behavior-changed-draggable-regions-on-macos
```
-->
Returns `Point` - The custom position for the traffic light buttons in
frameless window, `{ x: 0, y: 0 }` will be returned when there is no custom
position.
`````
We will then look for when the API was originally added:
```bash
$ git log --reverse -L :GetTrafficLightPosition:shell/browser/native_window_mac.mm
commit 3e2cec83d927b991855e21cc311ca9046e332601
Author: Samuel Attard <sattard@slack-corp.com>
Date: Thu Mar 5 14:22:12 2020 -0800
feat: programmatically modify traffic light positioning (#22533)
```
Alternatively, you can use `git blame`:
```bash
$ git checkout 1e206deec3e^
HEAD is now at e8c87859c4 fix: showAboutPanel also on linux (#37828)
$ grep -n "getTrafficLightPosition" docs/api/browser-window.md
1867:#### `win.getTrafficLightPosition()` _macOS_ _Deprecated_
$ git blame -L1867,1868 -- docs/api/browser-window.md
0de1012280e (Cheng Zhao 2023-02-17 19:06:32 +0900 1867) #### `win.getTrafficLightPosition()` _macOS_ _Deprecated_
3e2cec83d92 (Samuel Attard 2020-03-05 14:22:12 -0800 1868)
$ git checkout 0de1012280e^
HEAD is now at 0a5e634736 test: rename & split internal module tests (#37318)
$ grep -n "getTrafficLightPosition" docs/api/browser-window.md
1851:#### `win.getTrafficLightPosition()` _macOS_
$ git blame -L1851,1852 -- docs/api/browser-window.md
3e2cec83d92 (Samuel Attard 2020-03-05 14:22:12 -0800 1851) #### `win.getTrafficLightPosition()` _macOS_
3e2cec83d92 (Samuel Attard 2020-03-05 14:22:12 -0800 1852)
$ git checkout 3e2cec83d92^
HEAD is now at 1811751c6c docs: clean up dark mode related docs (#22489)
$ grep -n "getTrafficLightPosition" docs/api/browser-window.md
(Nothing)
$ git checkout 3e2cec83d92
HEAD is now at 3e2cec83d9 feat: programmatically modify traffic light positioning (#22533)
```
Verify that the Pull Request is correct and make a corresponding entry in the
API History:
`````markdown
#### `win.getTrafficLightPosition()` _macOS_ _Deprecated_
<!--
```YAML history
added:
- pr-url: https://github.com/electron/electron/pull/22533
changes:
- pr-url: https://github.com/electron/electron/pull/26789
description: "Made `trafficLightPosition` option work for `customButtonOnHover` window."
breaking-changes-header: behavior-changed-draggable-regions-on-macos
deprecated:
- pr-url: https://github.com/electron/electron/pull/37878
breaking-changes-header: deprecated-browserwindowgettrafficlightposition
```
-->
Returns `Point` - The custom position for the traffic light buttons in
frameless window, `{ x: 0, y: 0 }` will be returned when there is no custom
position.
`````

View File

@@ -1,6 +0,0 @@
# Goma
> Goma is a distributed compiler service for open-source projects such as
> Chromium and Android.
Electron's deployment of Goma is deprecated and we are gradually shifting all usage to the [reclient](reclient.md) system. At some point in 2024 the Goma backend will be shutdown.

View File

@@ -78,8 +78,7 @@ Electron
## Structure of Other Directories
* **.circleci** - Config file for CI with CircleCI.
* **.github** - GitHub-specific config files including issues templates and CODEOWNERS.
* **.github** - GitHub-specific config files including issues templates, CI with GitHub Actions and CODEOWNERS.
* **dist** - Temporary directory created by `script/create-dist.py` script
when creating a distribution.
* **node_modules** - Third party node modules used for building.

View File

@@ -250,6 +250,157 @@ The properties chapter must be in following form:
The heading can be `###` or `####`-levels depending on whether the property
belongs to a module or a class.
## API History
An "API History" block is a YAML code block encapsulated by an HTML comment that
should be placed directly after the Markdown header for a class or method, like so:
`````markdown
#### `win.setTrafficLightPosition(position)` _macOS_
<!--
```YAML history
added:
- pr-url: https://github.com/electron/electron/pull/22533
changes:
- pr-url: https://github.com/electron/electron/pull/26789
description: "Made `trafficLightPosition` option work for `customButtonOnHover` window."
deprecated:
- pr-url: https://github.com/electron/electron/pull/37094
breaking-changes-header: deprecated-browserwindowsettrafficlightpositionposition
```
-->
* `position` [Point](structures/point.md)
Set a custom position for the traffic light buttons. Can only be used with `titleBarStyle` set to `hidden`.
`````
It should adhere to the API History [JSON Schema](https://json-schema.org/)
(`api-history.schema.json`) which you can find in the `docs` folder.
The [API History Schema RFC][api-history-schema-rfc] includes example usage and detailed
explanations for each aspect of the schema.
The purpose of the API History block is to describe when/where/how/why an API was:
* Added
* Changed (usually breaking changes)
* Deprecated
Each API change listed in the block should include a link to the
PR where that change was made along with an optional short description of the
change. If applicable, include the [heading id](https://gist.github.com/asabaylus/3071099)
for that change from the [breaking changes documentation](./breaking-changes.md).
The [API History linting script][api-history-linting-script] (`lint:api-history`)
validates API History blocks in the Electron documentation against the schema and
performs some other checks. You can look at its [tests][api-history-tests] for more
details.
There are a few style guidelines that aren't covered by the linting script:
### Format
Always adhere to this format:
```markdown
API HEADER | #### `win.flashFrame(flag)`
BLANK LINE |
HTML COMMENT OPENING TAG | <!--
API HISTORY OPENING TAG | ```YAML history
API HISTORY | added:
| - pr-url: https://github.com/electron/electron/pull/22533
API HISTORY CLOSING TAG | ```
HTML COMMENT CLOSING TAG | -->
BLANK LINE |
```
### YAML
* Use two spaces for indentation.
* Do not use comments.
### Descriptions
* Always wrap descriptions with double quotation marks (i.e. "example").
* [Certain special characters (e.g. `[`, `]`) can break YAML parsing](https:/stackoverflow.com/a/37015689/19020549).
* Describe the change in a way relevant to app developers and make it
capitalized, punctuated, and past tense.
* Refer to [Clerk](https://github.com/electron/clerk/blob/main/README.md#examples)
for examples.
* Keep descriptions concise.
* Ideally, a description will match its corresponding header in the
breaking changes document.
* Favor using the release notes from the associated PR whenever possible.
* Developers can always view the breaking changes document or linked
pull request for more details.
### Placement
Generally, you should place the API History block directly after the Markdown header
for a class or method that was changed. However, there are some instances where this
is ambiguous:
#### Chromium bump
* [chore: bump chromium to 122.0.6194.0 (main)](https://github.com/electron/electron/pull/40750)
* [Behavior Changed: cross-origin iframes now use Permission Policy to access features][api-history-cross-origin]
Sometimes a breaking change doesn't relate to any of the existing APIs. In this
case, it is ok not to add API History anywhere.
#### Change affecting multiple APIs
* [refactor: ensure IpcRenderer is not bridgable](https://github.com/electron/electron/pull/40330)
* [Behavior Changed: ipcRenderer can no longer be sent over the contextBridge][api-history-ipc-renderer]
Sometimes a breaking change involves multiple APIs. In this case, place the
API History block under the top-level Markdown header for each of the
involved APIs.
`````markdown
# contextBridge
<!--
```YAML history
changes:
- pr-url: https://github.com/electron/electron/pull/40330
description: "`ipcRenderer` can no longer be sent over the `contextBridge`"
breaking-changes-header: behavior-changed-ipcrenderer-can-no-longer-be-sent-over-the-contextbridge
```
-->
> Create a safe, bi-directional, synchronous bridge across isolated contexts
`````
`````markdown
# ipcRenderer
<!--
```YAML history
changes:
- pr-url: https://github.com/electron/electron/pull/40330
description: "`ipcRenderer` can no longer be sent over the `contextBridge`"
breaking-changes-header: behavior-changed-ipcrenderer-can-no-longer-be-sent-over-the-contextbridge
```
-->
Process: [Renderer](../glossary.md#renderer-process)
`````
Notice how an API History block wasn't added under:
* `contextBridge.exposeInMainWorld(apiKey, api)`
since that function wasn't changed, only how it may be used:
```patch
contextBridge.exposeInMainWorld('app', {
- ipcRenderer,
+ onEvent: (cb) => ipcRenderer.on('foo', (e, ...args) => cb(args))
})
```
## Documentation translations
See [electron/i18n](https://github.com/electron/i18n#readme)
@@ -257,3 +408,8 @@ See [electron/i18n](https://github.com/electron/i18n#readme)
[title-case]: https://apastyle.apa.org/style-grammar-guidelines/capitalization/title-case
[sentence-case]: https://apastyle.apa.org/style-grammar-guidelines/capitalization/sentence-case
[markdownlint]: https://github.com/DavidAnson/markdownlint
[api-history-schema-rfc]: https://github.com/electron/rfcs/blob/f36e0a8483e1ea844710890a8a7a1bd58ecbac05/text/0004-api-history-schema.md
[api-history-linting-script]: https://github.com/electron/lint-roller/blob/3030970136ec6b41028ef973f944d3e5cad68e1c/bin/lint-markdown-api-history.ts
[api-history-tests]: https://github.com/electron/lint-roller/blob/main/tests/lint-roller-markdown-api-history.spec.ts
[api-history-cross-origin]: https://github.com/electron/electron/blob/f508f6b6b570481a2b61d8c4f8c1951f492e4309/docs/breaking-changes.md#behavior-changed-cross-origin-iframes-now-use-permission-policy-to-access-features
[api-history-ipc-renderer]: https://github.com/electron/electron/blob/f508f6b6b570481a2b61d8c4f8c1951f492e4309/docs/breaking-changes.md#behavior-changed-ipcrenderer-can-no-longer-be-sent-over-the-contextbridge

View File

@@ -9,10 +9,11 @@ check out our [Electron Versioning](./electron-versioning.md) doc.
| Electron | Alpha | Beta | Stable | EOL | Chrome | Node | Supported |
| ------- | ----- | ------- | ------ | ------ | ---- | ---- | ---- |
| 32.0.0 | 2024-Jun-14 | 2024-Jul-24 | 2024-Aug-20 | 2025-Mar-04 | M128 | TBD | ✅ |
| 33.0.0 | 2024-Aug-22 | 2024-Sep-18 | 2024-Oct-15 | 2025-Apr-29 | M130 | TBD | ✅ |
| 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 | ✅ |
| 29.0.0 | 2023-Dec-07 | 2024-Jan-24 | 2024-Feb-20 | 2024-Aug-20 | M122 | v20.9 | |
| 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 | 🚫 |
| 26.0.0 | 2023-Jun-01 | 2023-Jun-27 | 2023-Aug-15 | 2024-Feb-20 | M116 | v18.16 | 🚫 |
@@ -98,19 +99,12 @@ is as follows:
<img src="https://raw.githubusercontent.com/nodejs/Release/main/schedule.svg?sanitize=true" alt="Releases">
As a rule, stable branches of Electron do not receive Node.js upgrades after they have been cut.
If Electron has recently updated its `main` branch to a new major version of Node.js, the next stable
branch to be cut will be released with the new version.
Patch upgrades of Node that contain significant security or bug fixes, and are submitted
more than 2 weeks prior to a stable release date, will be accepted into an Electron alpha
or beta release branch.
Minor upgrades of Node that contain significant security or bug fixes, and are submitted
more than 2 weeks prior to a stable release date may be accepted into an Electron alpha or
beta release branch on a case-by-case basis. These requests will be reviewed and voted on
by the [Releases Working Group](https://github.com/electron/governance/tree/main/wg-releases),
to ensure minimal disruption for developers who may be consuming alpha or beta releases.
Stable release lines of Electron will receive minor and patch bumps of Node.js after they are released.
Patch bumps to Node.js will be released in patch releases of Electron, and minor bumps to Node.js will result in a minor release of Electron.
Security-only release branches will receive security-related changes from Node.js releases, but not the full release.
### Breaking API changes

View File

@@ -13,6 +13,7 @@ Fuses are the solution to this problem, at a high level they are "magic bits" in
### `runAsNode`
**Default:** Enabled
**@electron/fuses:** `FuseV1Options.RunAsNode`
The runAsNode fuse toggles whether the `ELECTRON_RUN_AS_NODE` environment variable is respected or not. Please note that if this fuse is disabled then `process.fork` in the main process will not function as expected as it depends on this environment variable to function. Instead, we recommend that you use [Utility Processes](../api/utility-process.md), which work for many use cases where you need a standalone Node.js process (like a Sqlite server process or similar scenarios).
@@ -20,6 +21,7 @@ The runAsNode fuse toggles whether the `ELECTRON_RUN_AS_NODE` environment variab
### `cookieEncryption`
**Default:** Disabled
**@electron/fuses:** `FuseV1Options.EnableCookieEncryption`
The cookieEncryption fuse toggles whether the cookie store on disk is encrypted using OS level cryptography keys. By default the sqlite database that Chromium uses to store cookies stores the values in plaintext. If you wish to ensure your apps cookies are encrypted in the same way Chrome does then you should enable this fuse. Please note it is a one-way transition, if you enable this fuse existing unencrypted cookies will be encrypted-on-write but if you then disable the fuse again your cookie store will effectively be corrupt and useless. Most apps can safely enable this fuse.
@@ -27,6 +29,7 @@ The cookieEncryption fuse toggles whether the cookie store on disk is encrypted
### `nodeOptions`
**Default:** Enabled
**@electron/fuses:** `FuseV1Options.EnableNodeOptionsEnvironmentVariable`
The nodeOptions fuse toggles whether the [`NODE_OPTIONS`](https://nodejs.org/api/cli.html#node_optionsoptions) and [`NODE_EXTRA_CA_CERTS`](https://github.com/nodejs/node/blob/main/doc/api/cli.md#node_extra_ca_certsfile) environment variables are respected. The `NODE_OPTIONS` environment variable can be used to pass all kinds of custom options to the Node.js runtime and isn't typically used by apps in production. Most apps can safely disable this fuse.
@@ -34,6 +37,7 @@ The nodeOptions fuse toggles whether the [`NODE_OPTIONS`](https://nodejs.org/api
### `nodeCliInspect`
**Default:** Enabled
**@electron/fuses:** `FuseV1Options.EnableNodeCliInspectArguments`
The nodeCliInspect fuse toggles whether the `--inspect`, `--inspect-brk`, etc. flags are respected or not. When disabled it also ensures that `SIGUSR1` signal does not initialize the main process inspector. Most apps can safely disable this fuse.
@@ -41,6 +45,7 @@ The nodeCliInspect fuse toggles whether the `--inspect`, `--inspect-brk`, etc. f
### `embeddedAsarIntegrityValidation`
**Default:** Disabled
**@electron/fuses:** `FuseV1Options.EnableEmbeddedAsarIntegrityValidation`
The embeddedAsarIntegrityValidation fuse toggles an experimental feature on macOS that validates the content of the `app.asar` file when it is loaded. This feature is designed to have a minimal performance impact but may marginally slow down file reads from inside the `app.asar` archive.
@@ -50,6 +55,7 @@ For more information on how to use asar integrity validation please read the [As
### `onlyLoadAppFromAsar`
**Default:** Disabled
**@electron/fuses:** `FuseV1Options.OnlyLoadAppFromAsar`
The onlyLoadAppFromAsar fuse changes the search system that Electron uses to locate your app code. By default Electron will search in the following order `app.asar` -> `app` -> `default_app.asar`. When this fuse is enabled the search order becomes a single entry `app.asar` thus ensuring that when combined with the `embeddedAsarIntegrityValidation` fuse it is impossible to load non-validated code.
@@ -57,6 +63,7 @@ The onlyLoadAppFromAsar fuse changes the search system that Electron uses to loc
### `loadBrowserProcessSpecificV8Snapshot`
**Default:** Disabled
**@electron/fuses:** `FuseV1Options.LoadBrowserProcessSpecificV8Snapshot`
The loadBrowserProcessSpecificV8Snapshot fuse changes which V8 snapshot file is used for the browser process. By default Electron's processes will all use the same V8 snapshot file. When this fuse is enabled the browser process uses the file called `browser_v8_context_snapshot.bin` for its V8 snapshot. The other processes will use the V8 snapshot file that they normally do.
@@ -64,6 +71,7 @@ The loadBrowserProcessSpecificV8Snapshot fuse changes which V8 snapshot file is
### `grantFileProtocolExtraPrivileges`
**Default:** Enabled
**@electron/fuses:** `FuseV1Options.GrantFileProtocolExtraPrivileges`
The grantFileProtocolExtraPrivileges fuse changes whether pages loaded from the `file://` protocol are given privileges beyond what they would receive in a traditional web browser. This behavior was core to Electron apps in original versions of Electron but is no longer required as apps should be [serving local files from custom protocols](./security.md#18-avoid-usage-of-the-file-protocol-and-prefer-usage-of-custom-protocols) now instead. If you aren't serving pages from `file://` you should disable this fuse.

View File

@@ -222,8 +222,8 @@ rest of our docs and happy developing! If you have questions, please stop by our
[code-signed]: ./code-signing.md
[discord server]: https://discord.gg/electronjs
[electron fiddle]: https://www.electronjs.org/fiddle
[fiddle-build]: https://github.com/electron/fiddle/blob/main/.github/workflows/build.yaml
[fiddle-forge-config]: https://github.com/electron/fiddle/blob/main/forge.config.js
[fiddle-build]: https://github.com/electron/fiddle/blob/main/.circleci/config.yml
[fiddle-forge-config]: https://github.com/electron/fiddle/blob/main/forge.config.ts
[github actions]: https://github.com/features/actions
[github publisher]: https://www.electronforge.io/config/publishers/github
[github releases]: https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository

View File

@@ -97,7 +97,7 @@ The [Window Controls Overlay API][] is a web standard that gives web apps the ab
customize their title bar region when installed on desktop. Electron exposes this API
through the `BrowserWindow` constructor option `titleBarOverlay`.
This option only works whenever a custom `titlebarStyle` is applied on macOS or Windows.
This option only works whenever a custom `titlebarStyle` is applied.
When `titleBarOverlay` is enabled, the window controls become exposed in their default
position, and DOM elements cannot use the area underneath this region.
@@ -107,7 +107,6 @@ Specifying `true` on either platform will result in an overlay region with defau
system colors:
```js title='main.js'
// on macOS or Windows
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({
titleBarStyle: 'hidden',

View File

@@ -105,6 +105,7 @@ auto_filenames = {
"docs/api/structures/mime-typed-buffer.md",
"docs/api/structures/mouse-input-event.md",
"docs/api/structures/mouse-wheel-input-event.md",
"docs/api/structures/navigation-entry.md",
"docs/api/structures/notification-action.md",
"docs/api/structures/notification-response.md",
"docs/api/structures/open-external-permission-request.md",
@@ -354,6 +355,7 @@ auto_filenames = {
"lib/browser/message-port-main.ts",
"lib/common/api/net-client-request.ts",
"lib/common/define-properties.ts",
"lib/common/deprecate.ts",
"lib/common/init.ts",
"lib/common/webpack-globals-provider.ts",
"lib/utility/api/exports/electron.ts",

View File

@@ -159,8 +159,12 @@ filenames = {
"shell/browser/osr/osr_web_contents_view_mac.mm",
"shell/browser/relauncher_mac.cc",
"shell/browser/ui/certificate_trust_mac.mm",
"shell/browser/ui/cocoa/delayed_native_view_host.h",
"shell/browser/ui/cocoa/delayed_native_view_host.mm",
"shell/browser/ui/cocoa/electron_bundle_mover.h",
"shell/browser/ui/cocoa/electron_bundle_mover.mm",
"shell/browser/ui/cocoa/electron_inspectable_web_contents_view.h",
"shell/browser/ui/cocoa/electron_inspectable_web_contents_view.mm",
"shell/browser/ui/cocoa/electron_menu_controller.h",
"shell/browser/ui/cocoa/electron_menu_controller.mm",
"shell/browser/ui/cocoa/electron_native_widget_mac.h",
@@ -187,6 +191,8 @@ filenames = {
"shell/browser/ui/cocoa/window_buttons_proxy.mm",
"shell/browser/ui/drag_util_mac.mm",
"shell/browser/ui/file_dialog_mac.mm",
"shell/browser/ui/inspectable_web_contents_view_mac.h",
"shell/browser/ui/inspectable_web_contents_view_mac.mm",
"shell/browser/ui/message_box_mac.mm",
"shell/browser/ui/tray_icon_cocoa.h",
"shell/browser/ui/tray_icon_cocoa.mm",
@@ -202,7 +208,6 @@ filenames = {
"shell/common/node_bindings_mac.cc",
"shell/common/node_bindings_mac.h",
"shell/common/platform_util_mac.mm",
"shell/browser/ui/views/inspectable_web_contents_view_mac.mm",
]
lib_sources_views = [
@@ -217,6 +222,8 @@ filenames = {
"shell/browser/ui/views/electron_views_delegate.h",
"shell/browser/ui/views/frameless_view.cc",
"shell/browser/ui/views/frameless_view.h",
"shell/browser/ui/views/inspectable_web_contents_view_views.cc",
"shell/browser/ui/views/inspectable_web_contents_view_views.h",
"shell/browser/ui/views/menu_bar.cc",
"shell/browser/ui/views/menu_bar.h",
"shell/browser/ui/views/menu_delegate.cc",
@@ -263,6 +270,7 @@ filenames = {
"shell/browser/api/electron_api_debugger.h",
"shell/browser/api/electron_api_desktop_capturer.cc",
"shell/browser/api/electron_api_desktop_capturer.h",
"shell/browser/api/electron_api_desktop_capturer_mac.mm",
"shell/browser/api/electron_api_dialog.cc",
"shell/browser/api/electron_api_download_item.cc",
"shell/browser/api/electron_api_download_item.h",
@@ -290,7 +298,6 @@ filenames = {
"shell/browser/api/electron_api_push_notifications.cc",
"shell/browser/api/electron_api_push_notifications.h",
"shell/browser/api/electron_api_safe_storage.cc",
"shell/browser/api/electron_api_safe_storage.h",
"shell/browser/api/electron_api_screen.cc",
"shell/browser/api/electron_api_screen.h",
"shell/browser/api/electron_api_service_worker_context.cc",
@@ -362,6 +369,8 @@ filenames = {
"shell/browser/electron_browser_context.h",
"shell/browser/electron_browser_main_parts.cc",
"shell/browser/electron_browser_main_parts.h",
"shell/browser/electron_crypto_module_delegate_nss.cc",
"shell/browser/electron_crypto_module_delegate_nss.h",
"shell/browser/electron_download_manager_delegate.cc",
"shell/browser/electron_download_manager_delegate.h",
"shell/browser/electron_gpu_client.cc",
@@ -370,6 +379,8 @@ filenames = {
"shell/browser/electron_navigation_throttle.h",
"shell/browser/electron_permission_manager.cc",
"shell/browser/electron_permission_manager.h",
"shell/browser/electron_plugin_info_host_impl.cc",
"shell/browser/electron_plugin_info_host_impl.h",
"shell/browser/electron_speech_recognition_manager_delegate.cc",
"shell/browser/electron_speech_recognition_manager_delegate.h",
"shell/browser/electron_web_contents_utility_handler_impl.cc",
@@ -388,6 +399,8 @@ filenames = {
"shell/browser/file_system_access/file_system_access_permission_context.h",
"shell/browser/file_system_access/file_system_access_permission_context_factory.cc",
"shell/browser/file_system_access/file_system_access_permission_context_factory.h",
"shell/browser/file_system_access/file_system_access_web_contents_helper.cc",
"shell/browser/file_system_access/file_system_access_web_contents_helper.h",
"shell/browser/font_defaults.cc",
"shell/browser/font_defaults.h",
"shell/browser/hid/electron_hid_delegate.cc",
@@ -441,6 +454,8 @@ filenames = {
"shell/browser/net/resolve_proxy_helper.h",
"shell/browser/net/system_network_context_manager.cc",
"shell/browser/net/system_network_context_manager.h",
"shell/browser/net/url_loader_network_observer.cc",
"shell/browser/net/url_loader_network_observer.h",
"shell/browser/net/url_pipe_loader.cc",
"shell/browser/net/url_pipe_loader.h",
"shell/browser/net/web_request_api_interface.h",
@@ -540,7 +555,6 @@ filenames = {
"shell/common/api/electron_api_clipboard.h",
"shell/common/api/electron_api_command_line.cc",
"shell/common/api/electron_api_environment.cc",
"shell/common/api/electron_api_key_weak_map.h",
"shell/common/api/electron_api_native_image.cc",
"shell/common/api/electron_api_native_image.h",
"shell/common/api/electron_api_net.cc",
@@ -552,8 +566,6 @@ filenames = {
"shell/common/api/electron_bindings.cc",
"shell/common/api/electron_bindings.h",
"shell/common/api/features.cc",
"shell/common/api/object_life_monitor.cc",
"shell/common/api/object_life_monitor.h",
"shell/common/application_info.cc",
"shell/common/application_info.h",
"shell/common/asar/archive.cc",

View File

@@ -98,6 +98,7 @@ libcxx_headers = [
"//third_party/libc++/src/include/__algorithm/ranges_find_first_of.h",
"//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_for_each.h",
"//third_party/libc++/src/include/__algorithm/ranges_for_each_n.h",
"//third_party/libc++/src/include/__algorithm/ranges_generate.h",
@@ -510,6 +511,7 @@ libcxx_headers = [
"//third_party/libc++/src/include/__math/remainder.h",
"//third_party/libc++/src/include/__math/roots.h",
"//third_party/libc++/src/include/__math/rounding_functions.h",
"//third_party/libc++/src/include/__math/special_functions.h",
"//third_party/libc++/src/include/__math/traits.h",
"//third_party/libc++/src/include/__math/trigonometric_functions.h",
"//third_party/libc++/src/include/__mbstate_t.h",
@@ -535,6 +537,8 @@ libcxx_headers = [
"//third_party/libc++/src/include/__memory/concepts.h",
"//third_party/libc++/src/include/__memory/construct_at.h",
"//third_party/libc++/src/include/__memory/destruct_n.h",
"//third_party/libc++/src/include/__memory/inout_ptr.h",
"//third_party/libc++/src/include/__memory/out_ptr.h",
"//third_party/libc++/src/include/__memory/pointer_traits.h",
"//third_party/libc++/src/include/__memory/ranges_construct_at.h",
"//third_party/libc++/src/include/__memory/ranges_uninitialized_algorithms.h",
@@ -712,6 +716,7 @@ libcxx_headers = [
"//third_party/libc++/src/include/__thread/timed_backoff_policy.h",
"//third_party/libc++/src/include/__tree",
"//third_party/libc++/src/include/__tuple/find_index.h",
"//third_party/libc++/src/include/__tuple/ignore.h",
"//third_party/libc++/src/include/__tuple/make_tuple_types.h",
"//third_party/libc++/src/include/__tuple/sfinae_helpers.h",
"//third_party/libc++/src/include/__tuple/tuple_element.h",
@@ -778,8 +783,6 @@ libcxx_headers = [
"//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",
"//third_party/libc++/src/include/__type_traits/is_member_function_pointer.h",
"//third_party/libc++/src/include/__type_traits/is_member_object_pointer.h",
"//third_party/libc++/src/include/__type_traits/is_member_pointer.h",
"//third_party/libc++/src/include/__type_traits/is_nothrow_assignable.h",
"//third_party/libc++/src/include/__type_traits/is_nothrow_constructible.h",
@@ -796,7 +799,6 @@ libcxx_headers = [
"//third_party/libc++/src/include/__type_traits/is_referenceable.h",
"//third_party/libc++/src/include/__type_traits/is_same.h",
"//third_party/libc++/src/include/__type_traits/is_scalar.h",
"//third_party/libc++/src/include/__type_traits/is_scoped_enum.h",
"//third_party/libc++/src/include/__type_traits/is_signed.h",
"//third_party/libc++/src/include/__type_traits/is_signed_integer.h",
"//third_party/libc++/src/include/__type_traits/is_specialization.h",

View File

@@ -111,3 +111,19 @@ for (const name of events) {
webContents.emit(name, event, ...args);
});
}
app._clientCertRequestPasswordHandler = null;
app.setClientCertRequestPasswordHandler = function (handler: (params: Electron.ClientCertRequestParams) => Promise<string>) {
app._clientCertRequestPasswordHandler = handler;
};
app.on('-client-certificate-request-password', async (event: Electron.Event<Electron.ClientCertRequestParams>, callback: (password: string) => void) => {
event.preventDefault();
const { hostname, tokenName, isRetry } = event;
if (!app._clientCertRequestPasswordHandler) {
callback('');
return;
}
const password = await app._clientCertRequestPasswordHandler({ hostname, tokenName, isRetry });
callback(password);
});

View File

@@ -4,6 +4,9 @@ const v8Util = process._linkedBinding('electron_common_v8_util');
export default class BrowserView {
#webContentsView: WebContentsView;
#ownerWindow: BrowserWindow | null = null;
#destroyListener: ((e: any) => void) | null = null;
// AutoResize state
#resizeListener: ((...args: any[]) => void) | null = null;
@@ -17,6 +20,9 @@ export default class BrowserView {
}
webPreferences.type = 'browserView';
this.#webContentsView = new WebContentsView({ webPreferences });
this.#destroyListener = this.#onDestroy.bind(this);
this.#webContentsView.webContents.once('destroyed', this.#destroyListener);
}
get webContents () {
@@ -55,23 +61,39 @@ export default class BrowserView {
// Internal methods
get ownerWindow (): BrowserWindow | null {
return !this.webContents.isDestroyed() ? this.webContents.getOwnerBrowserWindow() : null;
return this.#ownerWindow;
}
// We can't rely solely on the webContents' owner window because
// a webContents can be closed by the user while the BrowserView
// remains alive and attached to a BrowserWindow.
set ownerWindow (w: BrowserWindow | null) {
if (this.webContents.isDestroyed()) return;
const oldWindow = this.webContents.getOwnerBrowserWindow();
if (oldWindow && this.#resizeListener) {
oldWindow.off('resize', this.#resizeListener);
if (this.#ownerWindow && this.#resizeListener) {
this.#ownerWindow.off('resize', this.#resizeListener);
this.#resizeListener = null;
}
this.webContents._setOwnerWindow(w);
if (this.webContents && !this.webContents.isDestroyed()) {
this.webContents._setOwnerWindow(w);
}
this.#ownerWindow = w;
if (w) {
this.#lastWindowSize = w.getBounds();
w.on('resize', this.#resizeListener = this.#autoResize.bind(this));
w.on('closed', () => {
this.#ownerWindow = null;
this.#destroyListener = null;
});
}
}
#onDestroy () {
// Ensure that if #webContentsView's webContents is destroyed,
// the WebContentsView is removed from the view hierarchy.
this.#ownerWindow?.contentView.removeChildView(this.webContentsView);
}
#autoHorizontalProportion: {width: number, left: number} | null = null;
#autoVerticalProportion: {height: number, top: number} | null = null;
#autoResize () {

View File

@@ -36,29 +36,6 @@ BrowserWindow.prototype._init = function (this: BWT) {
app.emit('browser-window-focus', event, this);
});
let unresponsiveEvent: NodeJS.Timeout | null = null;
const emitUnresponsiveEvent = () => {
unresponsiveEvent = null;
if (!this.isDestroyed() && this.isEnabled()) { this.emit('unresponsive'); }
};
this.webContents.on('unresponsive', () => {
if (!unresponsiveEvent) { unresponsiveEvent = setTimeout(emitUnresponsiveEvent, 50); }
});
this.webContents.on('responsive', () => {
if (unresponsiveEvent) {
clearTimeout(unresponsiveEvent);
unresponsiveEvent = null;
}
this.emit('responsive');
});
this.on('close', () => {
if (!unresponsiveEvent) { unresponsiveEvent = setTimeout(emitUnresponsiveEvent, 5000); }
});
this.webContents.on('destroyed', () => {
if (unresponsiveEvent) clearTimeout(unresponsiveEvent);
unresponsiveEvent = null;
});
// Subscribe to visibilityState changes and pass to renderer process.
let isVisible = this.isVisible() && !this.isMinimized();
const visibilityChanged = () => {
@@ -222,7 +199,9 @@ BrowserWindow.prototype.removeBrowserView = function (browserView: BrowserView)
};
BrowserWindow.prototype.getBrowserView = function () {
if (this._browserViews.length > 1) { throw new Error('This BrowserWindow has multiple BrowserViews, use getBrowserViews() instead'); }
if (this._browserViews.length > 1) {
throw new Error('This BrowserWindow has multiple BrowserViews - use getBrowserViews() instead');
}
return this._browserViews[0] ?? null;
};
@@ -231,7 +210,9 @@ BrowserWindow.prototype.getBrowserViews = function () {
};
BrowserWindow.prototype.setTopBrowserView = function (browserView: BrowserView) {
if (browserView.ownerWindow !== this) { throw new Error('Given BrowserView is not attached to the window'); }
if (browserView.ownerWindow !== this) {
throw new Error('Given BrowserView is not attached to the window');
}
const idx = this._browserViews.indexOf(browserView);
if (idx >= 0) {
this.contentView.addChildView(browserView.webContentsView);

View File

@@ -1,4 +1,5 @@
const { createDesktopCapturer } = process._linkedBinding('electron_browser_desktop_capturer');
import { BrowserWindow } from 'electron/main';
const { createDesktopCapturer, isDisplayMediaSystemPickerAvailable } = process._linkedBinding('electron_browser_desktop_capturer');
const deepEqual = (a: ElectronInternal.GetSourcesOptions, b: ElectronInternal.GetSourcesOptions) => JSON.stringify(a) === JSON.stringify(b);
@@ -12,9 +13,42 @@ function isValid (options: Electron.SourcesOptions) {
return Array.isArray(options?.types);
}
export { isDisplayMediaSystemPickerAvailable };
export async function getNativePickerSource () {
if (process.platform !== 'darwin') {
console.error('Native system picker option is currently only supported on MacOS');
}
if (!isDisplayMediaSystemPickerAvailable) {
console.error(`Native system picker unavailable.
Note: This is an experimental API; please check the API documentation for updated restrictions`);
}
// Pass in the needed options for a more native experience
// screen & windows by default, no thumbnails, since the native picker doesn't return them
const options: Electron.SourcesOptions = {
types: ['screen', 'window'],
thumbnailSize: { width: 0, height: 0 },
fetchWindowIcons: false
};
return await getSources(options);
}
export async function getSources (args: Electron.SourcesOptions) {
if (!isValid(args)) throw new Error('Invalid options');
const resizableValues = new Map();
if (process.platform === 'darwin') {
// Fix for bug in ScreenCaptureKit that modifies a window's styleMask the first time
// it captures a non-resizable window. We record each non-resizable window's styleMask,
// and we restore modified styleMasks later, after the screen capture.
for (const win of BrowserWindow.getAllWindows()) {
resizableValues.set([win.id], win.resizable);
}
}
const captureWindow = args.types.includes('window');
const captureScreen = args.types.includes('screen');
@@ -44,6 +78,14 @@ export async function getSources (args: Electron.SourcesOptions) {
delete capturer._onerror;
delete capturer._onfinished;
capturer = null;
if (process.platform === 'darwin') {
for (const win of BrowserWindow.getAllWindows()) {
if (resizableValues.has(win.id)) {
win.resizable = resizableValues.get(win.id);
}
};
}
}
// Remove from currentlyRunning once we resolve or reject
currentlyRunning = currentlyRunning.filter(running => running.options !== options);

View File

@@ -1,3 +1,4 @@
import * as deprecate from '@electron/internal/common/deprecate';
const { systemPreferences } = process._linkedBinding('electron_browser_system_preferences');
if ('getEffectiveAppearance' in systemPreferences) {
@@ -7,4 +8,15 @@ if ('getEffectiveAppearance' in systemPreferences) {
});
}
if ('accessibilityDisplayShouldReduceTransparency' in systemPreferences) {
const reduceTransparencyDeprecated = deprecate.warnOnce('systemPreferences.accessibilityDisplayShouldReduceTransparency', 'nativeTheme.prefersReducedTransparency');
const nativeReduceTransparency = systemPreferences.accessibilityDisplayShouldReduceTransparency;
Object.defineProperty(systemPreferences, 'accessibilityDisplayShouldReduceTransparency', {
get: () => {
reduceTransparencyDeprecated();
return nativeReduceTransparency;
}
});
}
export default systemPreferences;

View File

@@ -595,7 +595,9 @@ WebContents.prototype._init = function () {
goToOffset: this._goToOffset.bind(this),
getActiveIndex: this._getActiveIndex.bind(this),
length: this._historyLength.bind(this),
getEntryAtIndex: this._getNavigationEntryAtIndex.bind(this)
getEntryAtIndex: this._getNavigationEntryAtIndex.bind(this),
removeEntryAtIndex: this._removeNavigationEntryAtIndex.bind(this),
getAllEntries: this._getHistory.bind(this)
},
writable: false,
enumerable: true

View File

@@ -2,7 +2,7 @@ import { webContents } from 'electron/main';
import { ipcMainInternal } from '@electron/internal/browser/ipc-main-internal';
import * as ipcMainUtils from '@electron/internal/browser/ipc-main-internal-utils';
import { parseWebViewWebPreferences } from '@electron/internal/browser/parse-features-string';
import { syncMethods, asyncMethods, properties } from '@electron/internal/common/web-view-methods';
import { syncMethods, asyncMethods, properties, navigationHistorySyncMethods } from '@electron/internal/common/web-view-methods';
import { webViewEvents } from '@electron/internal/browser/web-view-events';
import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';
@@ -311,6 +311,14 @@ handleMessageSync(IPC_MESSAGES.GUEST_VIEW_MANAGER_CALL, function (event, guestIn
if (!syncMethods.has(method)) {
throw new Error(`Invalid method: ${method}`);
}
// Redirect history methods to updated navigationHistory property on webContents. See issue #42879.
if (navigationHistorySyncMethods.has(method)) {
let navigationMethod = method;
if (method === 'clearHistory') {
navigationMethod = 'clear';
}
return (guest as any).navigationHistory[navigationMethod](...args);
}
return (guest as any)[method](...args);
});

View File

@@ -1,3 +1,14 @@
export const navigationHistorySyncMethods = new Set([
'canGoBack',
'canGoForward',
'canGoToOffset',
'clearHistory',
'goBack',
'goForward',
'goToIndex',
'goToOffset'
]);
// Public-facing API methods.
export const syncMethods = new Set([
'getURL',
@@ -8,14 +19,6 @@ export const syncMethods = new Set([
'stop',
'reload',
'reloadIgnoringCache',
'canGoBack',
'canGoForward',
'canGoToOffset',
'clearHistory',
'goBack',
'goForward',
'goToIndex',
'goToOffset',
'isCrashed',
'setUserAgent',
'getUserAgent',
@@ -51,7 +54,8 @@ export const syncMethods = new Set([
'getZoomFactor',
'getZoomLevel',
'setZoomFactor',
'setZoomLevel'
'setZoomLevel',
...navigationHistorySyncMethods
]);
export const properties = new Set([

View File

@@ -6,10 +6,10 @@
"devDependencies": {
"@azure/storage-blob": "^12.9.0",
"@electron/asar": "^3.2.1",
"@electron/docs-parser": "^1.2.0",
"@electron/docs-parser": "^1.2.1",
"@electron/fiddle-core": "^1.0.4",
"@electron/github-app-auth": "^2.0.0",
"@electron/lint-roller": "^2.2.0",
"@electron/lint-roller": "^2.3.0",
"@electron/typescript-definitions": "^8.15.2",
"@octokit/rest": "^19.0.7",
"@primer/octicons": "^10.0.0",
@@ -86,12 +86,13 @@
"lint:objc": "node ./script/lint.js --objc",
"lint:py": "node ./script/lint.js --py",
"lint:gn": "node ./script/lint.js --gn",
"lint:docs": "remark docs -qf && npm run lint:js-in-markdown && npm run create-typescript-definitions && npm run lint:ts-check-js-in-markdown && npm run lint:docs-fiddles && npm run lint:docs-relative-links && npm run lint:markdown",
"lint:docs": "remark docs -qf && npm run lint:js-in-markdown && npm run create-typescript-definitions && npm run lint:ts-check-js-in-markdown && npm run lint:docs-fiddles && npm run lint:docs-relative-links && npm run lint:markdown && npm run lint:api-history",
"lint:docs-fiddles": "standard \"docs/fiddles/**/*.js\"",
"lint:docs-relative-links": "lint-roller-markdown-links --root docs \"**/*.md\"",
"lint:markdown": "node ./script/lint.js --md",
"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-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",

View File

@@ -8,10 +8,10 @@ This reverts commit ebd8b8965c74ab06bb91f7a00b23822e1f1f26ca.
It is causing significant TLS failures in Node.js.
diff --git a/ssl/ssl_buffer.cc b/ssl/ssl_buffer.cc
index 2ca14efae5ea478f43794a81883b00dfdb1a37b0..d73055fbf39334925ef4b4804bbaca57c4a4d5d3 100644
index 7de8923518dbfb69fef62d7781f906b30cf62155..7a4310d6d8e85f07f0ae6c97726d909c4503bce9 100644
--- a/ssl/ssl_buffer.cc
+++ b/ssl/ssl_buffer.cc
@@ -232,7 +232,6 @@ int ssl_handle_open_record(SSL *ssl, bool *out_retry, ssl_open_record_t ret,
@@ -235,7 +235,6 @@ int ssl_handle_open_record(SSL *ssl, bool *out_retry, ssl_open_record_t ret,
return 1;
case ssl_open_record_close_notify:
@@ -20,7 +20,7 @@ index 2ca14efae5ea478f43794a81883b00dfdb1a37b0..d73055fbf39334925ef4b4804bbaca57
case ssl_open_record_error:
diff --git a/ssl/ssl_lib.cc b/ssl/ssl_lib.cc
index 206a01640d31b61752795325b70bc5f1640cd3a1..0d6519f604cd363f4065fa52a87d29bca451f05c 100644
index 2e7859994430054cbba3b8a0e452ee6027b419a2..7be28a2af48c71b63f9311ac7c9fd69b5a247317 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) {

View File

@@ -10,7 +10,6 @@ webview_cross_drag.patch
gin_enable_disable_v8_platform.patch
enable_reset_aspect_ratio.patch
boringssl_build_gn.patch
pepper_plugin_support.patch
gtk_visibility.patch
resource_file_conflict.patch
scroll_bounce_flag.patch
@@ -25,7 +24,6 @@ dump_syms.patch
command-ismediakey.patch
printing.patch
support_mixed_sandbox_with_zygote.patch
unsandboxed_ppapi_processes_skip_zygote.patch
build_add_electron_tracing_category.patch
worker_context_will_destroy.patch
frame_host_manager.patch
@@ -130,3 +128,5 @@ fix_font_face_resolution_when_renderer_is_blocked.patch
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
feat_make_macos_sccontentsharingpicker_work_in_electron.patch

View File

@@ -10,7 +10,7 @@ This patch makes three changes to Accelerator::GetShortcutText to improve shortc
3. Ctrl-Shift-= and Ctrl-Plus show up as such
diff --git a/ui/base/accelerators/accelerator.cc b/ui/base/accelerators/accelerator.cc
index e260f801eaf3ab3c2e3bbf09c94ee8a055bc8378..226338e7cfbfd002212302ba9b067551eb7b5d56 100644
index dc4bea32e76b41521240ad14e313aa2492539e30..32a3fc0843656eaa87b85dd63ac1ade6d83b6e5b 100644
--- a/ui/base/accelerators/accelerator.cc
+++ b/ui/base/accelerators/accelerator.cc
@@ -12,6 +12,7 @@
@@ -21,7 +21,7 @@ index e260f801eaf3ab3c2e3bbf09c94ee8a055bc8378..226338e7cfbfd002212302ba9b067551
#include "base/strings/utf_string_conversions.h"
#include "build/build_config.h"
#include "build/chromeos_buildflags.h"
@@ -183,6 +184,11 @@ std::u16string Accelerator::GetShortcutText() const {
@@ -184,6 +185,11 @@ std::u16string Accelerator::GetShortcutText() const {
#endif
if (shortcut.empty()) {
@@ -33,7 +33,7 @@ index e260f801eaf3ab3c2e3bbf09c94ee8a055bc8378..226338e7cfbfd002212302ba9b067551
#if BUILDFLAG(IS_WIN)
// Our fallback is to try translate the key code to a regular character
// unless it is one of digits (VK_0 to VK_9). Some keyboard
@@ -206,6 +212,10 @@ std::u16string Accelerator::GetShortcutText() const {
@@ -207,6 +213,10 @@ std::u16string Accelerator::GetShortcutText() const {
shortcut +=
static_cast<std::u16string::value_type>(base::ToUpperASCII(c));
#endif
@@ -44,7 +44,7 @@ index e260f801eaf3ab3c2e3bbf09c94ee8a055bc8378..226338e7cfbfd002212302ba9b067551
}
#if BUILDFLAG(IS_MAC)
@@ -390,7 +400,7 @@ std::u16string Accelerator::ApplyLongFormModifiers(
@@ -391,7 +401,7 @@ std::u16string Accelerator::ApplyLongFormModifiers(
const std::u16string& shortcut) const {
std::u16string result = shortcut;
@@ -53,7 +53,7 @@ index e260f801eaf3ab3c2e3bbf09c94ee8a055bc8378..226338e7cfbfd002212302ba9b067551
result = ApplyModifierToAcceleratorString(result, IDS_APP_SHIFT_KEY);
// Note that we use 'else-if' in order to avoid using Ctrl+Alt as a shortcut.
@@ -398,7 +408,7 @@ std::u16string Accelerator::ApplyLongFormModifiers(
@@ -399,7 +409,7 @@ std::u16string Accelerator::ApplyLongFormModifiers(
// more information.
if (IsCtrlDown())
result = ApplyModifierToAcceleratorString(result, IDS_APP_CTRL_KEY);

View File

@@ -10,10 +10,10 @@ Allows Electron to restore WER when ELECTRON_DEFAULT_ERROR_MODE is set.
This should be upstreamed.
diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc
index 3ef2255d2f9758a7ab497021ad4429aa6960504d..3de73ebf606d40cdd4d88b84d955923a8ebc7a0c 100644
index abe3efcde9def9144804ec2a7f3b5ebfa308bcb7..70da55386d842a9f4ff6e84b13b9f1d99244516e 100644
--- a/content/gpu/gpu_main.cc
+++ b/content/gpu/gpu_main.cc
@@ -256,6 +256,10 @@ int GpuMain(MainFunctionParams parameters) {
@@ -258,6 +258,10 @@ int GpuMain(MainFunctionParams parameters) {
// to the GpuProcessHost once the GpuServiceImpl has started.
viz::GpuServiceImpl::InstallPreInitializeLogHandler();
@@ -24,7 +24,7 @@ index 3ef2255d2f9758a7ab497021ad4429aa6960504d..3de73ebf606d40cdd4d88b84d955923a
// 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
@@ -354,7 +358,6 @@ int GpuMain(MainFunctionParams parameters) {
@@ -357,7 +361,6 @@ int GpuMain(MainFunctionParams parameters) {
#endif
const bool dead_on_arrival = !init_success;

View File

@@ -10,10 +10,10 @@ DidCreateScriptContext is called, not all JS APIs are available in the
context, which can cause some preload scripts to trip.
diff --git a/content/public/renderer/render_frame_observer.h b/content/public/renderer/render_frame_observer.h
index c313c0342f0e470db13a4c95473decbc8dbdcbd3..10c6596a8cd06aebf19b4302a60eb78eb09f29de 100644
index ad0092ef2e13853e4bb8b923481559a043b00ab7..1c2dfd23f18733e21312992877ae1499634d3849 100644
--- a/content/public/renderer/render_frame_observer.h
+++ b/content/public/renderer/render_frame_observer.h
@@ -145,6 +145,8 @@ class CONTENT_EXPORT RenderFrameObserver
@@ -150,6 +150,8 @@ class CONTENT_EXPORT RenderFrameObserver
virtual void DidHandleOnloadEvents() {}
virtual void DidCreateScriptContext(v8::Local<v8::Context> context,
int32_t world_id) {}
@@ -23,10 +23,10 @@ index c313c0342f0e470db13a4c95473decbc8dbdcbd3..10c6596a8cd06aebf19b4302a60eb78e
int32_t world_id) {}
virtual void DidClearWindowObject() {}
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index e5c8967a41c7cd645dfc5d6589a540e2027024df..7810c2e1b50f31b497c6a5eaf0a66b61d22f2760 100644
index 498cec822e5f1b36f4864bcf8bb8f31f11e96456..f1fef17fba419e26dfe82c4449621447b0f2f2a0 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -4694,6 +4694,12 @@ void RenderFrameImpl::DidCreateScriptContext(v8::Local<v8::Context> context,
@@ -4722,6 +4722,12 @@ void RenderFrameImpl::DidCreateScriptContext(v8::Local<v8::Context> context,
observer.DidCreateScriptContext(context, world_id);
}
@@ -40,10 +40,10 @@ index e5c8967a41c7cd645dfc5d6589a540e2027024df..7810c2e1b50f31b497c6a5eaf0a66b61
int world_id) {
for (auto& observer : observers_)
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 74f337007151e491c02ae23ba4ca6f34f17bc65d..ff860ad1fb68dc5c1c7831f74b330be0c57c727a 100644
index b47f9d4e51e64888301061f081a0515ae4f254d0..3d45f8a9de9a726f011791f3f61d79af98fb740d 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -645,6 +645,8 @@ class CONTENT_EXPORT RenderFrameImpl
@@ -643,6 +643,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 74f337007151e491c02ae23ba4ca6f34f17bc65d..ff860ad1fb68dc5c1c7831f74b330be0
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 7219fbabf0f7286af48dede7738a9dcd5125cc1a..9e962391ebd2cfc84837502c5babcbbff385408b 100644
index 85cd5b277088c61a6bf83589a2698d279771ab18..f774939483b91875f012cb74d5a58d35fdfe3866 100644
--- a/third_party/blink/public/web/web_local_frame_client.h
+++ b/third_party/blink/public/web/web_local_frame_client.h
@@ -646,6 +646,9 @@ class BLINK_EXPORT WebLocalFrameClient {
@@ -647,6 +647,9 @@ class BLINK_EXPORT WebLocalFrameClient {
virtual void DidCreateScriptContext(v8::Local<v8::Context>,
int32_t world_id) {}
@@ -79,10 +79,10 @@ index f7e0144c74f879e9b29871d7c372b99e127966bb..c3cd7b77ed282f212a56d151dc3fbec3
if (World().IsMainWorld()) {
probe::DidCreateMainWorldContext(GetFrame());
diff --git a/third_party/blink/renderer/core/frame/local_frame_client.h b/third_party/blink/renderer/core/frame/local_frame_client.h
index 1cf963689a08009fa137e49eacd909495d6517d1..4860e3b627160e544c3108b7dfdc4e03946ac865 100644
index 5c5b1d8307b541081967d6554d3aa4045322b7df..5079c2b6fdbf9d26738fea82319020783cfc5779 100644
--- a/third_party/blink/renderer/core/frame/local_frame_client.h
+++ b/third_party/blink/renderer/core/frame/local_frame_client.h
@@ -301,6 +301,8 @@ class CORE_EXPORT LocalFrameClient : public FrameClient {
@@ -295,6 +295,8 @@ class CORE_EXPORT LocalFrameClient : public FrameClient {
virtual void DidCreateScriptContext(v8::Local<v8::Context>,
int32_t world_id) = 0;
@@ -92,10 +92,10 @@ index 1cf963689a08009fa137e49eacd909495d6517d1..4860e3b627160e544c3108b7dfdc4e03
int32_t world_id) = 0;
virtual bool AllowScriptExtensions() = 0;
diff --git a/third_party/blink/renderer/core/frame/local_frame_client_impl.cc b/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
index b91c2be322f9c66a07bded75afebde935f28cbe0..acb8d1c364a8b077eca88af9c4bf0e8bb46f9ee5 100644
index 1f99493c7e50fe44a58c9e4db34cb99780863c86..4a65887071650678efea4adb3d1e55c132d454d8 100644
--- a/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
@@ -293,6 +293,13 @@ void LocalFrameClientImpl::DidCreateScriptContext(
@@ -294,6 +294,13 @@ void LocalFrameClientImpl::DidCreateScriptContext(
web_frame_->Client()->DidCreateScriptContext(context, world_id);
}
@@ -110,10 +110,10 @@ index b91c2be322f9c66a07bded75afebde935f28cbe0..acb8d1c364a8b077eca88af9c4bf0e8b
v8::Local<v8::Context> context,
int32_t world_id) {
diff --git a/third_party/blink/renderer/core/frame/local_frame_client_impl.h b/third_party/blink/renderer/core/frame/local_frame_client_impl.h
index 7bbdf577711526a1bc60820d5737cdd28ebf60f5..4df922e030d17a852b8cc7862a4ce8ec57425bfa 100644
index a3661daf705b0b161da88433b46d410dfa96227d..bbd905415520bb4507580817e78134b09ce01631 100644
--- a/third_party/blink/renderer/core/frame/local_frame_client_impl.h
+++ b/third_party/blink/renderer/core/frame/local_frame_client_impl.h
@@ -84,6 +84,8 @@ class CORE_EXPORT LocalFrameClientImpl final : public LocalFrameClient {
@@ -83,6 +83,8 @@ class CORE_EXPORT LocalFrameClientImpl final : public LocalFrameClient {
void DidCreateScriptContext(v8::Local<v8::Context>,
int32_t world_id) override;
@@ -123,10 +123,10 @@ index 7bbdf577711526a1bc60820d5737cdd28ebf60f5..4df922e030d17a852b8cc7862a4ce8ec
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 da8f597a8eb45a5e0135a5f04b074b3756dd4921..c0f1a83db3171891b115eeb533f5bf1dcbad2c63 100644
index f3a081d7230c10d12f7e14311930efc3df1ad870..7e8b97c7e901a2ba5ca32037a938749806243dac 100644
--- a/third_party/blink/renderer/core/loader/empty_clients.h
+++ b/third_party/blink/renderer/core/loader/empty_clients.h
@@ -412,6 +412,8 @@ class CORE_EXPORT EmptyLocalFrameClient : public LocalFrameClient {
@@ -408,6 +408,8 @@ class CORE_EXPORT EmptyLocalFrameClient : public LocalFrameClient {
void DidCreateScriptContext(v8::Local<v8::Context>,
int32_t world_id) override {}

View File

@@ -7,7 +7,7 @@ Ensure that licenses for the dependencies introduced by Electron
are included in `LICENSES.chromium.html`
diff --git a/tools/licenses/licenses.py b/tools/licenses/licenses.py
index 79b1e0f5d43caea6a5fcd03e5c7aa7a9dca7e9fd..341a1800abb18a96380ecfd521b9d94de0bb89d5 100755
index 07b33f9c3e909216d9282954ebaaef7c56c2dbac..916e6ed19c857c6ed549e98f1b989108e5748776 100755
--- a/tools/licenses/licenses.py
+++ b/tools/licenses/licenses.py
@@ -335,6 +335,31 @@ SPECIAL_CASES = {

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 668c90b2102448a9fe215a70b727dc82d10c78fe..a6a41271bacf89e86ab64422ce0a77ae671c541c 100644
index 3ad76e316d4dc2009f0637618b39f16c24c64809..853edba64e5c7473d32889425223cd07b7975a72 100644
--- a/ui/gtk/gtk_ui.cc
+++ b/ui/gtk/gtk_ui.cc
@@ -567,11 +567,12 @@ std::unique_ptr<ui::NavButtonProvider> GtkUi::CreateNavButtonProvider() {
@@ -582,11 +582,12 @@ std::unique_ptr<ui::NavButtonProvider> GtkUi::CreateNavButtonProvider() {
}
ui::WindowFrameProvider* GtkUi::GetWindowFrameProvider(bool solid_frame,
@@ -28,11 +28,11 @@ index 668c90b2102448a9fe215a70b727dc82d10c78fe..a6a41271bacf89e86ab64422ce0a77ae
return provider.get();
}
diff --git a/ui/gtk/gtk_ui.h b/ui/gtk/gtk_ui.h
index 0432ea4f5906502a4f6def46ab064292a6628218..e3cbfa3a1ac8c169c429e29c1262d0dd2a05a4b6 100644
index 32051374590fc1179e5cfa21ebc34474d2ce0190..09e9399a67d30d4686f4c141050538b8dde9f301 100644
--- a/ui/gtk/gtk_ui.h
+++ b/ui/gtk/gtk_ui.h
@@ -107,7 +107,8 @@ class GtkUi : public ui::LinuxUiAndTheme {
void SetDarkTheme(bool dark) override;
@@ -110,7 +110,8 @@ class GtkUi : public ui::LinuxUiAndTheme {
void SetAccentColor(std::optional<SkColor> accent_color) override;
std::unique_ptr<ui::NavButtonProvider> CreateNavButtonProvider() override;
ui::WindowFrameProvider* GetWindowFrameProvider(bool solid_frame,
- bool tiled) override;
@@ -41,7 +41,7 @@ index 0432ea4f5906502a4f6def46ab064292a6628218..e3cbfa3a1ac8c169c429e29c1262d0dd
private:
using TintMap = std::map<int, color_utils::HSL>;
@@ -191,7 +192,7 @@ class GtkUi : public ui::LinuxUiAndTheme {
@@ -199,7 +200,7 @@ class GtkUi : public ui::LinuxUiAndTheme {
// while Chrome is running. This 2D array is indexed first by whether the
// frame is translucent (0) or solid(1), then by whether the frame is normal
// (0) or tiled (1).
@@ -173,10 +173,10 @@ index 4faaae32a203bfa57f3e61c391dc6917c4a0bf59..94050a0136b78730f607f42991742e04
// Scale-independent metric calculated based on the bitmaps.
std::optional<gfx::Insets> frame_thickness_dip_;
diff --git a/ui/linux/fallback_linux_ui.cc b/ui/linux/fallback_linux_ui.cc
index 8903f9ba950e7878fbd1bfa0cf2a42e0cc9daa21..7d13381eb1d16193bad0be1318e8ed199c6fb845 100644
index e4a7f8eb0ef8bacd2d4e4231d0990b4a01021626..3477542587b08691c164941b2c2e3b22050231ca 100644
--- a/ui/linux/fallback_linux_ui.cc
+++ b/ui/linux/fallback_linux_ui.cc
@@ -141,7 +141,8 @@ FallbackLinuxUi::CreateNavButtonProvider() {
@@ -143,7 +143,8 @@ FallbackLinuxUi::CreateNavButtonProvider() {
ui::WindowFrameProvider* FallbackLinuxUi::GetWindowFrameProvider(
bool solid_frame,
@@ -187,11 +187,11 @@ index 8903f9ba950e7878fbd1bfa0cf2a42e0cc9daa21..7d13381eb1d16193bad0be1318e8ed19
}
diff --git a/ui/linux/fallback_linux_ui.h b/ui/linux/fallback_linux_ui.h
index 2612cb68984a8435c84f0b0592eda8a5df6dd91e..282b48038f83d4a6dafe734f639d994c245c67ac 100644
index 0800349bc18753e6a41a938c70213dd7dd123d0d..a1553e0cb1fac188fb2c74e10163c52dead02f29 100644
--- a/ui/linux/fallback_linux_ui.h
+++ b/ui/linux/fallback_linux_ui.h
@@ -66,7 +66,8 @@ class FallbackLinuxUi : public LinuxUiAndTheme {
void SetDarkTheme(bool dark) override;
@@ -67,7 +67,8 @@ class FallbackLinuxUi : public LinuxUiAndTheme {
void SetAccentColor(std::optional<SkColor> accent_color) override;
std::unique_ptr<ui::NavButtonProvider> CreateNavButtonProvider() override;
ui::WindowFrameProvider* GetWindowFrameProvider(bool solid_frame,
- bool tiled) override;
@@ -201,10 +201,10 @@ index 2612cb68984a8435c84f0b0592eda8a5df6dd91e..282b48038f83d4a6dafe734f639d994c
private:
std::optional<gfx::FontRenderParams> default_font_render_params_;
diff --git a/ui/linux/linux_ui.h b/ui/linux/linux_ui.h
index b940382678ba70debaf7f33698c0b8bd02c42c4e..4477a1012fef5ad6dd365d70d28eadd3db136ceb 100644
index 0a4c394b07a682d55639f37414331d68f175841c..45db96c165d61f551b344c7c852c083546508325 100644
--- a/ui/linux/linux_ui.h
+++ b/ui/linux/linux_ui.h
@@ -304,7 +304,8 @@ class COMPONENT_EXPORT(LINUX_UI) LinuxUiTheme {
@@ -307,7 +307,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,

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