Compare commits

...

564 Commits

Author SHA1 Message Date
Sudowoodo Release Bot
2415813313 Bump v16.0.0-beta.8 2021-11-08 05:31:29 -08:00
trop[bot]
136c539836 refactor: move certificate_manager_model to shell (#31740)
Co-authored-by: Milan Burda <milan.burda@gmail.com>
2021-11-08 11:03:25 +01:00
trop[bot]
a76f2a07a9 fix: crash dump location on Linux (#31711)
* fix: crash dump location on Linux

* fix: ignore client_id for Zygote process

* chore: update comment

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
2021-11-07 21:13:17 -08:00
trop[bot]
8b6aecc6f0 fix: <webview> background transparency (#31728)
Co-authored-by: Milan Burda <milan.burda@gmail.com>
2021-11-07 18:11:34 -08:00
trop[bot]
3186a246a5 test: deflake <webview> tag loads devtools extensions on WOA (#31715)
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2021-11-04 19:46:23 -04:00
trop[bot]
15ff515437 fix: clipboard.writeBuffer raw format access (#31116) (#31719)
* fix: clipboard.writeBuffer raw format access

* test: clipboard.writeBuffer raw format access

* test: clipboard win32 test skip

* fixup spec

* cleanup patch

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>

Co-authored-by: henrit <henrit@gmail.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2021-11-04 17:41:42 -04:00
electron-roller[bot]
d3a24c24af chore: bump chromium to 96.0.4664.35 (16-x-y) (#31709)
* chore: bump chromium in DEPS to 96.0.4664.35

* 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>
2021-11-04 12:59:30 -04:00
Sudowoodo Release Bot
f4a51e2adc Bump v16.0.0-beta.7 2021-11-04 06:36:00 -07:00
trop[bot]
cdc897c745 fix: second-instance additionalData parameter (#31708)
* test: second-instance additionalData parameter

* Fix posix implementation

Co-authored-by: Raymond Zhao <raymondzhao@microsoft.com>
2021-11-04 19:59:51 +09:00
trop[bot]
8c842552b0 fix: incorrect Content-Disposition serialization (#31694)
* fix: incorrect Content-Disposition serialization

* test: fixup test

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-11-04 09:59:47 +09:00
trop[bot]
e918fe6030 fix: apply transparency settings to WebContentsPreferences (#31700)
* fix: add transparency to web_contents_preferences

* fix: correctly apply transparency settings to new webContents from webPreferences

Co-authored-by: VerteDinde <khammond@slack-corp.com>
2021-11-03 12:50:57 -07:00
trop[bot]
d9e0025429 fix: do not run dialog callback inside transaction commit (#31657)
Co-authored-by: Cheng Zhao <zcbenz@gmail.com>
2021-11-02 14:55:52 +01:00
trop[bot]
5fc4a4768e test: fix test-datetime-change-notify after daylight change (#31656)
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2021-11-01 20:23:37 -04:00
Milan Burda
cf54123ec6 chore: update chore_add_context_to_context_aware_module_prevention.patch (#31579) (#31629) 2021-11-01 15:53:37 -04:00
trop[bot]
948aa12af0 fix: clipboard.read() to recognize custom types (#31652)
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2021-11-01 14:31:20 -04:00
trop[bot]
5fdf37eac9 fix: use disable-hid-blocklist to allow FIDO (#31650)
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2021-11-01 14:23:07 -04:00
trop[bot]
1dcf237c8d fix: crash on close window when webContents destroyed (#31646)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-11-01 13:57:22 -04:00
Sudowoodo Release Bot
8285172412 Bump v16.0.0-beta.6 2021-11-01 06:35:12 -07:00
trop[bot]
5735cb3cb0 fix: navigator.keyboard.lock() not working (#31621)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-10-28 19:41:01 +02:00
Shelley Vohr
1adea9e34e fix: silent print settings (#31615) 2021-10-28 12:04:35 -04:00
electron-roller[bot]
0cb6a2ea8a chore: bump chromium to 96.0.4664.27 (16-x-y) (#31619)
* chore: bump chromium in DEPS to 96.0.4664.27

* 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>
2021-10-28 12:04:02 -04:00
Sudowoodo Release Bot
48e9e34acd Bump v16.0.0-beta.5 2021-10-28 06:33:05 -07:00
trop[bot]
1433180472 docs: update test automation doc (#31613)
* Update WebdriverIO documentation

* Update docs/tutorial/using-selenium-and-webdriver.md

Co-authored-by: Jeremy Rose <nornagon@nornagon.net>

* Update docs/tutorial/using-selenium-and-webdriver.md

Co-authored-by: Jeremy Rose <nornagon@nornagon.net>

* docs: update automated testing docs

* lint

* update

* Update docs/tutorial/automated-testing.md

Co-authored-by: Christian Bromann <github@christian-bromann.com>

* fixes

Co-authored-by: Christian Bromann <github@christian-bromann.com>
Co-authored-by: Jeremy Rose <nornagon@nornagon.net>
Co-authored-by: Erick Zhao <erick@hotmail.ca>
2021-10-28 16:24:41 +09:00
trop[bot]
48a1117cbf docs: link to Apple developer docs for app.ready event (#31600)
Changes some links around. There was no link for `NSUserNotification`, and
`UNNotificationResponse` incorrectly linked to our own `NotificationResponse`
API structure doc.

Co-authored-by: Erick Zhao <erick@hotmail.ca>
2021-10-28 11:16:57 +09:00
Sudowoodo Release Bot
b213c345bf Bump v16.0.0-beta.4 2021-10-27 14:24:52 -07:00
trop[bot]
46b8dcfb03 fix: use shorter paths for creating singleton sockets (#31612)
Co-authored-by: deepak1556 <hop2deep@gmail.com>
2021-10-27 14:23:34 -07:00
trop[bot]
5c48a94b48 fix: clipboard.read() crash (#31592)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-10-26 18:56:08 -04:00
electron-roller[bot]
22df8eadbf chore: bump chromium to 96.0.4664.18 (16-x-y) (#31593)
* chore: bump chromium in DEPS to 96.0.4664.18

* 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>
2021-10-26 17:23:41 -04:00
trop[bot]
8520fa8e6f fix: do not trigger CSP violations when checking eval (#31589)
* fix: do not trigger CSP violations when checking eval

* Update shell/renderer/api/electron_api_web_frame.cc

Co-authored-by: Cheng Zhao <zcbenz@gmail.com>

Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
Co-authored-by: Samuel Attard <sam@electronjs.org>
Co-authored-by: Cheng Zhao <zcbenz@gmail.com>
2021-10-26 16:57:50 -04:00
trop[bot]
517493a1f3 chore: import base/macros.h into asar archive.h (#31597)
Co-authored-by: VerteDinde <khammond@slack-corp.com>
2021-10-26 11:54:28 -07:00
trop[bot]
c10c449258 build: retry hasher function if it fails first time (#31581)
* build: retry hasher function if it fails first time

* Update script/release/get-url-hash.js

Co-authored-by: Cheng Zhao <zcbenz@gmail.com>

Co-authored-by: Samuel Attard <sattard@slack-corp.com>
Co-authored-by: Samuel Attard <sam@electronjs.org>
Co-authored-by: Cheng Zhao <zcbenz@gmail.com>
2021-10-26 17:41:14 +09:00
trop[bot]
5026e7823e docs: win.getParentWindow() returns BrowserWindow | null (#31577)
Co-authored-by: Milan Burda <milan.burda@gmail.com>
2021-10-26 17:37:51 +09:00
trop[bot]
c063a2d9fe chore: fix malformed mojom::CreateNewWindowParams patch (#31584)
* chore: fix malformed mojom::CreateNewWindowParams patch

* chore: update patches

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-10-26 09:36:17 +02:00
trop[bot]
c46620d4ba chore: bump chromium to 96.0.4664.4 (16-x-y) (#31529)
* chore: bump chromium in DEPS to 96.0.4662.0

* chore: bump chromium in DEPS to 96.0.4663.0

* chore: update patches

* Remove RuntimeData entirely

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

* Make helper macros behave consistently for //content/public UserData types

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

* Enabling sandboxing for the speech recognition service browser tests

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

* Add 'RegisterPreference' host binding

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

* Add persistAcrossSessions flag (scripting API)

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

* Add Passkey prompt dialog for bonding.

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

* Clipboard: Remove ReadImage path in browser

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

* Split printing metafile code into its own target.

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

* Cleanup unused DesktopMediaListObserver params

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

* Remove base::DictionaryValue::GetBinary

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

* Window Placement: change RWHV::GetDisplayList to GetScreenInfos

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

* Add a preview to the Tab Capture picker dialog

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

* Add service-based usage to update print settings

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

* chore: bump chromium in DEPS to 96.0.4664.2

* chore: update patches

* chore: bump chromium in DEPS to 96.0.4664.4

* chore: update patches

* chore: bump chromium in DEPS to 97.0.4666.0

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

This reverts commit d73caae8ba4b39efc9b3ea4de52685b9c92ef3d0.

* Reland "Block external protocol handler with sandbox."

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

* fixup for lint

* Add CookiePartitionKeychain parameter to CookeManager.GetCookieList.

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

* Move ui/gfx/transform*,rrect*,mask_filter_info* into ui/gfx/geometry

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

* fixup Move ui/gfx/transform*,rrect*,mask_filter_info* into ui/gfx/geometry

* ozone: //chrome/browser clean up from USE_X11

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

* content: don't load v8 snapshot in browser process

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

* Add 'RegisterPreference' host binding

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

* 3186491: Add 'devtools.sync_preferences' preference

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

* 2951147: DCHECK accessible names for focusable Views

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

* 3201014: Use real font size for calculation of SmallTextRatio

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

* fixup Clipboard: Remove ReadImage path in browser

* chore: update patches

* fix: disable PlzServiceWorker to fix custom protocol SW script loading

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

* 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>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2021-10-25 13:33:33 -04:00
Sudowoodo Release Bot
92f20955bd Bump v16.0.0-beta.3 2021-10-25 06:33:46 -07:00
trop[bot]
762ecfef24 fix: vibrant window should have transparent background (#31537)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-10-25 09:48:13 +09:00
trop[bot]
ea96f4c176 fix: MediaMetadata not working properly (#31535)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-10-22 21:17:24 +09:00
Erick Zhao
d085de4787 docs: add window customization guide (#31054) (#31508)
* docs: add window customization guide

* fixes

* Update docs/api/browser-window.md

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

* Update docs/api/browser-window.md

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

* Update docs/fiddles/windows/manage-windows/frameless-window/index.html

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

* Update docs/tutorial/window-customization.md

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

* Update docs/tutorial/window-customization.md

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

* Update docs/tutorial/window-customization.md

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

* Update docs/tutorial/window-customization.md

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

* Update docs/tutorial/window-customization.md

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

* Update docs/tutorial/window-customization.md

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

* Update docs/tutorial/window-customization.md

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

* Update docs/tutorial/window-customization.md

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

* Update docs/tutorial/window-customization.md

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

* Update docs/tutorial/window-customization.md

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

* Update docs/tutorial/window-customization.md

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

* fix code fence

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

Co-authored-by: Mark Lee <malept@users.noreply.github.com>
2021-10-22 21:15:57 +09:00
trop[bot]
dd7a8da6be fix: event with invalid timestamp in trace log (#31423)
* fix: event with invalid timestamp in trace log

When node is started within Electron's environment it doesn't
initialize v8 and time of v8's start is never set. As a result
we log v8's start time as 0 and it breaks timestamps in the
trace log. With this change we log v8's start time only when
it was initialized by node.

* update patches for 16-x-y

Co-authored-by: Cezary Kulakowski <cezary@openfin.co>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2021-10-21 13:55:02 -04:00
Sudowoodo Release Bot
a4ded39e61 Bump v16.0.0-beta.2 2021-10-21 06:33:22 -07:00
trop[bot]
d3ff2033ed feat: Add data parameter to app.requestSingleInstanceLock() (#31444)
* WIP

* Use serialization

* Rebase windows impl of new app requestSingleInstanceLock parameter

* Fix test

* Implement posix side

* Add backwards compatibility test

* Apply PR feedback Windows

* Fix posix impl

* Switch mac impl back to vector

* Refactor Windows impl

* Use vectors, inline make_span

* Use blink converter

* fix: ownership across sequences

* Fix upstream merge from Chromium

Co-authored-by: Raymond Zhao <raymondzhao@microsoft.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: Cheng Zhao <zcbenz@gmail.com>
2021-10-21 21:52:15 +09:00
trop[bot]
005b193307 feat: warn when ipcRenderer.sendSync() called with no listeners for channel (#31435)
Co-authored-by: Milan Burda <milan.burda@gmail.com>
2021-10-21 09:08:47 +09:00
trop[bot]
369269c475 fix: remove 'NOTREACHED()' from 'GetWindowResizeEdge' (#31479)
Co-authored-by: mlaurencin <mlaurencin@electronjs.org>
2021-10-21 09:05:33 +09:00
Sudowoodo Release Bot
339eccfc42 Bump v16.0.0-beta.1 2021-10-20 07:57:25 -07:00
trop[bot]
65c8415bac fix: don't use private enterprise APIs in MAS build (#31488)
* fix: don't use private enterprise APIs in MAS build

* Update .patches

Co-authored-by: VerteDinde <khammond@slack-corp.com>
Co-authored-by: Samuel Attard <sam@electronjs.org>
2021-10-20 07:50:32 -07:00
trop[bot]
30be3150ff fix: ensure TracingAgent in place for SWs (#31477)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-10-19 11:43:23 -04:00
trop[bot]
7d9ce1379f fix: link to image windows progress bar image was linked with square brackets [] insted of parenthesis () and to github asset storage instead of local image directory. (#31473)
Co-authored-by: Daniel Ramp <12480131+DanielRamp@users.noreply.github.com>
2021-10-19 20:39:45 +09:00
trop[bot]
27d1f6a360 Avoid Undefined Variable In printToPdf Example (#31466)
Co-authored-by: universalstrapping <90921972+universalstrapping@users.noreply.github.com>
2021-10-19 17:41:05 +09:00
trop[bot]
be46387f22 fix: add isDestroyed check (#31469)
* Added isDestroyed check

fix: https://github.com/electron/electron/issues/31196

* fix: unregister frame name

Unregister the frame name so that we do not accidentally unregister the wrong window later on in case there is a timing issue with the events

* fix; check if webContents is destroyed

* fix: check if window/webContents is destroyed

Co-authored-by: Cheng Zhao <github@zcbenz.com>

Co-authored-by: t57ser <seve@live.at>
Co-authored-by: Cheng Zhao <github@zcbenz.com>
2021-10-19 17:39:33 +09:00
Cheng Zhao
fe160165b6 fix: generate valid config.gypi (#31441) 2021-10-18 10:35:07 -05:00
Sudowoodo Release Bot
be1c18096b Bump v16.0.0-alpha.9 2021-10-18 08:30:43 -07:00
trop[bot]
2e3b05bcad fix: also pass securityOrigin to media permissions request handler (#31416)
Co-authored-by: Maxime Serrano <mserrano@alumni.cmu.edu>
2021-10-15 13:32:01 +09:00
trop[bot]
54657fb667 fix: mac window crash native theme update (#31430)
Co-authored-by: Samuel Maddock <samuel.maddock@gmail.com>
2021-10-15 09:05:53 +09:00
Sudowoodo Release Bot
c83d65eab0 Bump v16.0.0-alpha.8 2021-10-14 11:22:30 -07:00
trop[bot]
3daad4fd40 fix: reset render_frame_disposed_ after render frame host change (#31427)
* fix: reset render_frame_disposed_ after hang

* fix: handle exception in webContents.send

Co-authored-by: VerteDinde <keeleymhammond@gmail.com>
Co-authored-by: VerteDinde <khammond@slack-corp.com>
2021-10-14 11:21:31 -07:00
trop[bot]
b4a79672cf test: fix flaky contentTracing.startRecording spec (#31411)
Co-authored-by: Cheng Zhao <zcbenz@gmail.com>
2021-10-13 16:52:19 -04:00
trop[bot]
a71c610747 docs: update Versioning doc (#31389)
* fix information

* move historical section to bottom

* Update docs/tutorial/electron-versioning.md

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

Co-authored-by: Erick Zhao <erick@hotmail.ca>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2021-10-13 11:24:30 +09:00
trop[bot]
b1366421d1 chore: bump chromium to 96.0.4647.0 (main) (#31302)
* chore: bump chromium in DEPS to 95.0.4630.0

* 3133701: Fix chrome root store codegen for cross-compile builds.

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

* 49125: Include SHA512-256 in EVP_get_digestbyname and EVP_MD_do_all.

https://boringssl-review.googlesource.com/c/boringssl/+/49125

* chore: fixup patch indices

* 3131662: [Code Health] Remove ListValue::Append(Integer|Boolean)

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

* chore: bump chromium in DEPS to 95.0.4631.0

* chore: update patches

* chore: bump chromium in DEPS to 95.0.4635.0

* chore: update patches

* chore: bump chromium in DEPS to 95.0.4636.0

* chore: bump chromium in DEPS to 95.0.4637.0

* chore: update patches

* refactor: move PlatformNotificationService into BrowserContext

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

* refactor: ListValue::GetSize and ListValue::AppendString were removed

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

* chore: bump chromium in DEPS to 95.0.4638.0

* chore: bump chromium in DEPS to 95.0.4638.4

* chore: bump chromium in DEPS to 96.0.4640.0

* chore: bump chromium in DEPS to 96.0.4641.0

* chore: bump chromium in DEPS to 96.0.4642.0

* chore: update patches

Co-authored-by: Michaela Laurencin <mlaurencin@electronjs.org>

* 3134756: Move extensions/browser/value_store to components/value_store.

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

* 3150092: [Autofill] Allow aligning Autofill suggestions to the field's center

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

* chore: bump chromium in DEPS to 96.0.4643.0

* chore: update patches

* chore: bump chromium in DEPS to 96.0.4644.0

* chore: update patches

* chore: bump chromium in DEPS to 96.0.4645.0

* chore: update patches

* chore: bump chromium in DEPS to 96.0.4646.0

* chore: bump chromium in DEPS to 96.0.4647.0

* chore: update patches

Ref (for chromium): https://chromium-review.googlesource.com/c/chromium/src/+/3165772

* 3162087: Reland "Ensure Branch Target Identification is enabled for executable pages."

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

* chore: update evert_add_inline_and_inline_origin_records_to_symbol_file.patch

Xref: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3166678

Xref: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3166674

* chore: update Allocator construction

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

Change RefCount::kAllowed/Disallowed semantics into BackupRefPtr::kEnabled/Disabled

* chore: add UseConfigurablePool to v8::ArrayBuffer::Allocator invocation

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

* chore: do not set network_context_params.context_name

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

Remove name field from mojom::NetworkContext

* fix: use ForEachRenderFrameHost to iterate frames.

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

New implementation partially cribbed from
https://source.chromium.org/chromium/chromium/src/+/main:extensions/browser/script_executor.cc;drc=f894f106c6d5fac8e0b75158f622256e0f34f593;l=109

* Remove WebLocalFrame::RequestExecuteScriptAndReturnValue()

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

ExecuteJavaScript's RequestExecuteScript() new params are cribbed from
https://chromium-review.googlesource.com/c/chromium/src/+/3149699/4/third_party/blink/renderer/core/frame/web_local_frame_impl.cc

* Remove IsDescendantOf API on RenderFrameHost.

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

function is trivial to implement, so make a local copy in anon namespace

* Rewrite IsDescendantOf check to check GetParentOrOuterDocument.

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

* Remove GetFramesInSubtree from RenderFrameHost

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

* fix: dump_syms for macOS

* chore: update patches

* Remove ListValue::AppendString and ListValue::GetSize

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

* fix: gn check

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

* fix: crash with Isolate::GetHeapCodeAndMetadataStatistics

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

* chore: update patches

* chore: fix windows build

* Add kPrintWithPostScriptType42Fonts feature.

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

* chore: update patches

* chore: fix tests

* ozone/x11: fix VA-API.

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

* Revert "ozone/x11: fix VA-API."

This reverts commit 23e742acb1.

* Reland "Make Ozone/X11 default."

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

* fixup Reland "Make Ozone/X11 default."

* fixup Reland "Make Ozone/X11 default." for clipboard

* test: unflake contentTracing test

* Revert "test: unflake contentTracing test"

This reverts commit 62a6525235.

* chore: debug large contentTracing file

* fixup debug patch

* Revert "fixup debug patch"

* Roll Perfetto Trace Processor Linux from b852166f90d5 to e90b9fb93385

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

* update patch after merge

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: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
Co-authored-by: VerteDinde <khammond@slack-corp.com>
Co-authored-by: Michaela Laurencin <mlaurencin@electronjs.org>
Co-authored-by: VerteDinde <keeleymhammond@gmail.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
2021-10-12 13:56:37 -04:00
trop[bot]
f2696fb431 chore: refactor persisting permission granted to serial ports (#31324)
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2021-10-12 09:19:07 +09:00
trop[bot]
25c536d355 fix: black window on screen capture when content protection is enabled (#31386)
Co-authored-by: Micha Hanselmann <mhanselmann@microsoft.com>
2021-10-12 09:07:27 +09:00
trop[bot]
6530067b85 feat: add commandLine.removeSwitch (#31327)
* feat: add commandLine.removeSwitch

In some cases apps may want to remove Chromium command line switches to avoid certain Chromium behaviors being used, E.g. remote-debugging-port or gpu-launcher

* fix: add missing removeSwitch to app.ts

Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
Co-authored-by: Milan Burda <milan.burda@gmail.com>
2021-10-12 09:06:16 +09:00
Sudowoodo Release Bot
8626aa29d1 Bump v16.0.0-alpha.7 2021-10-11 07:57:39 -07:00
Keeley Hammond
9e0a182821 chore: cherry-pick ec42dfd3545f from chromium (#31331)
* chore: cherry-pick ec42dfd3545f from chromium

* chore: cherry-pick 39090918efac from chromium

* chore: reconcile FPS patch differences

Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2021-10-11 13:03:53 +02:00
trop[bot]
2d8fa4d225 fix: correctly notify WebViewGuestDelegate when webview is detached (#31375)
Co-authored-by: Cheng Zhao <zcbenz@gmail.com>
2021-10-11 14:35:56 +09:00
trop[bot]
5a7ba8ba8c chore: add logging for print_backend failures (#31288)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-10-11 14:32:46 +09:00
trop[bot]
ede6b45bc1 test: add missing context-menu event spec for <webview> (#31307)
Co-authored-by: Milan Burda <milan.burda@gmail.com>
2021-10-11 14:29:40 +09:00
trop[bot]
1000ddfcab docs: add missing 'context-menu' event to webview-tag.md (#31311)
Co-authored-by: Milan Burda <milan.burda@gmail.com>
2021-10-11 14:28:17 +09:00
trop[bot]
63110a7159 fix: crash on missing render frame (#31336)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-10-11 09:33:59 +09:00
trop[bot]
308ef699e6 docs: nativeWindowOpen default was changed in Electron 15 (#31356)
Co-authored-by: Milan Burda <milan.burda@gmail.com>
2021-10-10 15:50:20 -07:00
Sudowoodo Release Bot
764b2a6041 Bump v16.0.0-alpha.6 2021-10-07 08:16:39 -07:00
trop[bot]
5009694dc9 refactor: only access memory coordinator interface from browser process (#31301)
Refs https://chromium-review.googlesource.com/c/chromium/src/+/3174305

Co-authored-by: deepak1556 <hop2deep@gmail.com>
2021-10-05 19:19:11 -07:00
trop[bot]
c07016e1d1 fix: return HTNOWHERE in resize hit test to allow draggable regions to kick in when required (#31300)
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2021-10-06 09:22:06 +09:00
Sudowoodo Release Bot
7c5a346464 Bump v16.0.0-alpha.5 2021-10-04 12:44:25 -07:00
trop[bot]
4f54cc0d18 fix: "Failed to serialize arguments" when emitting 'context-menu' for webview (#31278)
* fix: sanitize params for 'context-menu' event sent over IPC for webview

* Revert "fix: sanitize params for 'context-menu' event sent over IPC for webview"

This reverts commit 7fee455138.

* fix: make frame property non-enumerable in params for 'context-menu' event

Co-authored-by: Milan Burda <milan.burda@gmail.com>
2021-10-04 15:43:11 -04:00
Sudowoodo Release Bot
520e7077d4 Bump v16.0.0-alpha.4 2021-10-04 04:48:37 -07:00
trop[bot]
eb41f5b70e fix: dialog is not defined (#31270)
Corrects the following error in Electron Fiddle:

```
Uncaught Exception:
ReferenceError: dialog is not defined
...
```

Co-authored-by: Ryan Johnson <CITguy@users.noreply.github.com>
2021-10-04 12:14:36 +09:00
trop[bot]
23afedcea8 fix: fix typo in description of secureDnsMode (#31268)
Co-authored-by: Tobias Nießen <tniessen@users.noreply.github.com>
2021-10-04 12:13:45 +09:00
Alexey Kuzmin
9bc6e1a584 chore: fix pylint (#31201)
* chore: fix pylint

* chore: fix linter errors
2021-09-30 17:19:54 -04:00
Sudowoodo Release Bot
89b08817a9 Bump v16.0.0-alpha.3 2021-09-30 13:55:43 -07:00
trop[bot]
cb6a22a7a4 fix: Enable X509_V_FLAG_TRUSTED_FIRST flag in BoringSSL (#31217)
Fixes: https://github.com/electron/electron/issues/31212
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>

Co-authored-by: Juan Cruz Viotti <jv@jviotti.com>
2021-09-30 16:30:32 -04:00
trop[bot]
74c53ad0c3 fix: draggable regions in BrowserViews are independent (#31199)
* fix: draggable regions in BrowserViews are independent

* Trigger Build

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2021-09-30 11:14:40 -04:00
trop[bot]
88235cb2bc fix: crash creating private key with unsupported algorithm (#31136)
* fix: crash creating private key with unsupported algorithm

* test: add regression test

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-09-30 10:11:32 -04:00
Sudowoodo Release Bot
f8b4dc98b9 Bump v16.0.0-alpha.2 2021-09-30 07:08:25 -07:00
trop[bot]
79108c7acd fix: running tests with release build (#31141)
* fix: running tests with release build

* Update electron_api_v8_util.cc

Co-authored-by: Milan Burda <milan.burda@gmail.com>
2021-09-29 15:31:54 -04:00
trop[bot]
b0273b96c1 feat: add support for WebHID (#30213) (#31090)
* feat: add support for WebHID

* Apply suggestions from code review

Co-authored-by: Jeremy Rose <jeremya@chromium.org>

* Address review feedback

* Address review feedback

* chore: clear granted_devices on navigation

Also added test to verify devices get cleared

* fixup testing for device clear

* make sure navigator.hid.getDevices is run on correct frame

* clear granted devices on RenderFrameHost deletion/change

* manage device permissions per RenderFrameHost

This change makes sure we don't clear device permission prematurely due to child frame navigation

* Update shell/browser/api/electron_api_web_contents.cc

Co-authored-by: Jeremy Rose <jeremya@chromium.org>

* apply review feedback from @zcbenz

* Match upstream ObjectMap

This change matches what ObjectPermissionContextBase uses to cache object permissions: https://source.chromium.org/chromium/chromium/src/+/main:components/permissions/object_permission_context_base.h;l=52;drc=8f95b5eab2797a3e26bba299f3b0df85bfc98bf5;bpv=1;bpt=0

The main reason for this was to resolve this crash on Win x64:
ok 2 WebContentsView doesn't crash when GCed during allocation
Received fatal exception EXCEPTION_ACCESS_VIOLATION
Backtrace:
        gin::WrappableBase::SecondWeakCallback [0x00007FF6F2AFA005+133] (o:\gin\wrappable.cc:53)
        v8::internal::GlobalHandles::InvokeSecondPassPhantomCallbacks [0x00007FF6F028F9AB+171] (o:\v8\src\handles\global-handles.cc:1400)
        v8::internal::GlobalHandles::InvokeSecondPassPhantomCallbacksFromTask [0x00007FF6F028F867+391] (o:\v8\src\handles\global-handles.cc:1387)
        node::PerIsolatePlatformData::RunForegroundTask [0x00007FF6F3B4D065+317] (o:\third_party\electron_node\src\node_platform.cc:415)
        node::PerIsolatePlatformData::FlushForegroundTasksInternal [0x00007FF6F3B4C424+776] (o:\third_party\electron_node\src\node_platform.cc:479)
        uv_run [0x00007FF6F2DDD07C+492] (o:\third_party\electron_node\deps\uv\src\win\core.c:609)
        electron::NodeBindings::UvRunOnce [0x00007FF6EEE1E036+294] (o:\electron\shell\common\node_bindings.cc:631)
        base::TaskAnnotator::RunTask [0x00007FF6F2318A19+457] (o:\base\task\common\task_annotator.cc:178)
        base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl [0x00007FF6F2E6F553+963] (o:\base\task\sequence_manager\thread_controller_with_message_pump_impl.cc:361)
        base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork [0x00007FF6F2E6EC69+137] (o:\base\task\sequence_manager\thread_controller_with_message_pump_impl.cc:266)
        base::MessagePumpForUI::DoRunLoop [0x00007FF6F235AA58+216] (o:\base\message_loop\message_pump_win.cc:221)
        base::MessagePumpWin::Run [0x00007FF6F235A01A+106] (o:\base\message_loop\message_pump_win.cc:79)
        base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run [0x00007FF6F2E702DA+682] (o:\base\task\sequence_manager\thread_controller_with_message_pump_impl.cc:470)
        base::RunLoop::Run [0x00007FF6F22F95BA+842] (o:\base\run_loop.cc:136)
        content::BrowserMainLoop::RunMainMessageLoop [0x00007FF6F14423CC+208] (o:\content\browser\browser_main_loop.cc:990)
        content::BrowserMainRunnerImpl::Run [0x00007FF6F144402F+143] (o:\content\browser\browser_main_runner_impl.cc:153)
        content::BrowserMain [0x00007FF6F143F911+257] (o:\content\browser\browser_main.cc:49)
        content::RunBrowserProcessMain [0x00007FF6EFFA7D18+112] (o:\content\app\content_main_runner_impl.cc:608)
        content::ContentMainRunnerImpl::RunBrowser [0x00007FF6EFFA8CF4+1220] (o:\content\app\content_main_runner_impl.cc:1104)
        content::ContentMainRunnerImpl::Run [0x00007FF6EFFA87C9+393] (o:\content\app\content_main_runner_impl.cc:971)
        content::RunContentProcess [0x00007FF6EFFA73BD+733] (o:\content\app\content_main.cc:394)
        content::ContentMain [0x00007FF6EFFA79E1+54] (o:\content\app\content_main.cc:422)
        wWinMain [0x00007FF6EECA1535+889] (o:\electron\shell\app\electron_main.cc:291)
        __scrt_common_main_seh [0x00007FF6F6F88482+262] (d:\A01\_work\6\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
        BaseThreadInitThunk [0x00007FFEC0087034+20]
        RtlUserThreadStart [0x00007FFEC1F02651+33]
✗ Electron tests failed with code 0xc0000005.

Co-authored-by: Jeremy Rose <jeremya@chromium.org>

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
2021-09-29 13:05:46 -04:00
trop[bot]
f7dd18466b fix: BrowserView drag now delegates to the OS when possible (#31178)
Co-authored-by: @anulman <@anulman>
2021-09-29 12:24:01 +02:00
trop[bot]
80175c5828 refactor: use native WeakRef instead of v8util.weaklyTrackValue() (#31166)
Co-authored-by: Milan Burda <milan.burda@gmail.com>
2021-09-28 10:16:01 +02:00
trop[bot]
2a36199b35 fix: .lldbinit config stale (unavailable) (#31161)
Co-authored-by: Black-Hole1 <158blackhole@gmail.com>
2021-09-28 09:54:25 +02:00
trop[bot]
f5c2bab02b docs: update branch name (#31150) 2021-09-28 09:52:19 +02:00
trop[bot]
acca212814 fix: avoid double free when destroying WebContents (#31132)
Co-authored-by: Cheng Zhao <zcbenz@gmail.com>
2021-09-28 09:48:33 +02:00
trop[bot]
ebbaa3b352 fix: crash in v8 due to regexp reentrancy (#31145)
* fix: crash in v8 due to regexp reentrancy

Check failed: !regexp_stack_->is_in_use()

Refs https://bugs.chromium.org/p/chromium/issues/detail?id=1250646
Refs https://bugs.chromium.org/p/v8/issues/detail?id=11382

* chore: update patches

Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
2021-09-27 16:53:39 -07:00
trop[bot]
c42ed97535 fix: first mouse not dragging BrowserView (#31101)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-09-27 09:38:57 +02:00
trop[bot]
cec707ce67 chore: remove gin::Wrappable crash keys (#31105)
* chore: remove gin wrappable crash keys

* chore: remove class headers from crash keys

Co-authored-by: VerteDinde <khammond@slack-corp.com>
2021-09-24 10:15:59 -07:00
trop[bot]
0080a61c1d feat: add width option to dialog.showMessageBox() (#31089)
Co-authored-by: Milan Burda <milan.burda@gmail.com>
2021-09-23 17:34:51 -04:00
trop[bot]
2f543c3fd4 fix: startDrag params type incorrect (#31084)
Co-authored-by: Black-Hole1 <158blackhole@gmail.com>
2021-09-23 19:49:49 +09:00
trop[bot]
f6da3b43c2 fix: update Windows' cache after changing window's style (#31080)
To enable/disable window resizing we set/unset WS_THICKFRAME style
flag on the window. Window's frame styles are cached so we need to
call SetWindowPos with the SWP_FRAMECHANGED flag set to update
cache properly.

Co-authored-by: Cezary Kulakowski <cezary@openfin.co>
2021-09-23 19:48:42 +09:00
trop[bot]
6029315e1a chore: clarify new-window fix comment (#31072)
Co-authored-by: VerteDinde <khammond@slack-corp.com>
2021-09-22 17:26:22 -07:00
Sudowoodo Release Bot
f6748f9795 Bump v16.0.0-alpha.1 2021-09-22 12:49:14 -07:00
trop[bot]
6500bcbb32 fix: proper localization when using GtkFileChooserNative (#31067)
* fix: proper localization when using GtkFileChooserNative

* fix: iwyu

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-09-22 15:48:19 -04:00
Sudowoodo Release Bot
a75617bff1 Bump v16.0.0-nightly.20210922 2021-09-22 06:01:20 -07:00
dependabot[bot]
3ef74abfe4 build(deps): bump tar from 4.4.15 to 4.4.19 (#30776)
Bumps [tar](https://github.com/npm/node-tar) from 4.4.15 to 4.4.19.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-tar/compare/v4.4.15...v4.4.19)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-22 08:54:39 +09:00
Samuel Maddock
70c534fd14 feat: add frame to context-menu event params (#30831)
* feat: add frame to context-menu event params

* doc: rephrase frame description
2021-09-22 08:52:49 +09:00
Erick Zhao
52bacd38a9 docs: update glossary (#30874)
* docs: update glossary

* remove nsis entry
2021-09-22 08:52:24 +09:00
Sofia Nguy
dbd18d8562 docs: update public timeline for E16 (#31000) 2021-09-21 11:31:41 -07:00
Keeley Hammond
4fcc0884f8 fix: propagate window.open settings to child window (#31031) 2021-09-21 09:06:20 -07:00
Sudowoodo Release Bot
ee19e5ee48 Bump v16.0.0-nightly.20210921 2021-09-21 06:00:36 -07:00
Shelley Vohr
629d8913f6 fix: maximized state calculation for non-resizable windows (#30989) 2021-09-21 12:04:32 +02:00
Milan Burda
92bff00d43 feat: add isMainFrame argument to 'certificate-error' event (#30879) 2021-09-21 15:49:15 +09:00
Jeremy Rose
e38a0a67c6 fix: suppress insecure resource warning for more local hostnames (#30885)
* fix: suppress insecure resource warning for more local hostnames

* fix tests
2021-09-21 15:47:54 +09:00
Jeremy Rose
82da4b0090 fix: transparency on child windows being lost (#31003)
* fix: transparency on child windows being lost

* fix crash

* fix a different crash

* fix more crash
2021-09-21 09:20:54 +09:00
Milan Burda
6dd33b75b2 chore: add wg-security as required reviewer for security-warnings.ts (#30987) 2021-09-21 08:52:44 +09:00
Sudowoodo Release Bot
a96f42ce86 Bump v16.0.0-nightly.20210920 2021-09-20 06:01:27 -07:00
Darshan Sen
efa70131e2 refactor: make InitWithWebContents and InspectableWebContents take a unique_ptr (#30920)
* refactor: make InitWithWebContents take a unique_ptr

Signed-off-by: Darshan Sen <darshan.sen@postman.com>

* refactor: make InspectableWebContents take a unique_ptr

Signed-off-by: Darshan Sen <darshan.sen@postman.com>
2021-09-20 09:34:11 +09:00
Shelley Vohr
6fdf350bea fix: disabling and enabling resizability on macOS (#30999) 2021-09-17 15:54:15 +02:00
Sudowoodo Release Bot
8d8fcd88f5 Bump v16.0.0-nightly.20210917 2021-09-17 06:01:05 -07:00
祈緒ちゃん - Kiochan
ad98f4707f chore: update links of documentation of chromes (#30959)
chrome now use developer.chrome.com/docs/extensions/* instead of developer.chrome.com/extensions/*
2021-09-17 10:53:28 +09:00
Antón Molleda
4576d9d23e fix: links to images (#30990)
Images that used the inline link format do not show up on Docusaurus or
the old website infrastructure. There are only 2 guides using it so it
is faster to change the format rather than figuring out why the parsin
logic does not work.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Ref: https://github.com/electron/electronjs.org-new/issues/84
2021-09-16 18:42:58 -04:00
Sudowoodo Release Bot
64c70c420f Bump v16.0.0-nightly.20210916 2021-09-16 06:00:56 -07:00
Michaela Laurencin
b491a4c82f fix: add casing for WCO edge (#30938) 2021-09-16 09:34:51 +09:00
Keeley Hammond
c5b517d89f chore: update E16 node module version (#30774)
Ref: https://github.com/nodejs/node/pull/39950/files
2021-09-15 16:11:10 -07:00
Tierney Cyren
9c4e3b67fb docs: add link to @electron/fuses (#30978) 2021-09-15 12:14:33 -07:00
electron-roller[bot]
93068cfab5 chore: bump node to v16.9.1 (main) (#30919)
* chore: bump node in DEPS to v16.9.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>
2021-09-15 10:25:26 -04:00
Shelley Vohr
c8e4cc29c0 fix: prevent navigator.fonts.query() from crashing (#30930)
* fix: prevent navigator.fonts.query() from crashing

* refactor: use base::PostTask instead
2021-09-15 09:56:38 -04:00
Sudowoodo Release Bot
9eaa9de3b4 Bump v16.0.0-nightly.20210915 2021-09-15 06:01:48 -07:00
Erick Zhao
664a452fb6 docs: update context isolation doc (#30898)
* docs: update context isolation doc

* Apply suggestions from code review

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

Co-authored-by: Cheng Zhao <github@zcbenz.com>
Co-authored-by: Mark Lee <malept@users.noreply.github.com>
2021-09-15 10:50:02 +09:00
Erick Zhao
54b44584fa chore: correct hierarchy of BrowserWindow headings (#30905)
* chore: correct hierarchy of BrowserWindow headings

* Update docs/api/browser-window.md

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

* Update docs/api/browser-window.md

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

* Update docs/api/browser-window.md

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

Co-authored-by: Mark Lee <malept@users.noreply.github.com>
2021-09-15 09:41:37 +09:00
Raymond Zhao
1295ba0ffc fix: Building on macOS with is_debug true (#30913)
* fix: Building on macOS with is_debug true

* Change to no-op impl
2021-09-15 09:40:36 +09:00
Micha Hanselmann
02ac33c4cd fix: always include pepper flash font file (#30928) 2021-09-15 09:39:01 +09:00
Sudowoodo Release Bot
87050d75b8 Bump v16.0.0-nightly.20210914 2021-09-14 06:01:52 -07:00
Shelley Vohr
00d0265782 refactor: reuse upstream //shell_dialogs (#30663) 2021-09-14 12:16:34 +02:00
Keeley Hammond
c74b9ff312 fix: remove conflicting RunFileChooserEnd for Mac (#30935) 2021-09-13 15:10:28 -07:00
Keeley Hammond
b6a12a53e3 fix: delete rfh after open/save dialog done (#30916) 2021-09-13 06:25:13 -07:00
Sudowoodo Release Bot
06b3b49214 Bump v16.0.0-nightly.20210913 2021-09-13 06:02:34 -07:00
Sudowoodo Release Bot
c556ccac08 Bump v16.0.0-nightly.20210910 2021-09-10 06:02:10 -07:00
Samuel Attard
fb539f15d0 chore: fix compile errors (#30903) 2021-09-09 19:52:23 -07:00
Samuel Attard
57d088517c feat: add support for validating asar archives on macOS (#30667)
* feat: add support for validating asar archives on macOS

* chore: fix lint

* chore: update as per feedback

* feat: switch implementation to asar integrity hash checks

* feat: make ranged requests work with the asar file validator DataSourceFilter

* chore: fix lint

* chore: fix missing log include on non-darwin

* fix: do not pull block size out of missing optional

* fix: match ValidateOrDie symbol on non-darwin

* chore: fix up asar specs by repacking archives

* fix: maintain integrity chain, do not load file integrity if header integrity was not loaded

* debug test

* Update node-spec.ts

* fix: initialize header_validated_

* chore: update PR per feedback

* chore: update per feedback

* build: use final asar module

* Update fuses.json5
2021-09-09 14:49:01 -07:00
Sudowoodo Release Bot
fcad531f2e Bump v16.0.0-nightly.20210909 2021-09-09 06:01:36 -07:00
electron-roller[bot]
eb955af459 chore: bump node to v16.9.0 (main) (#30867)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-09-08 18:55:06 +02:00
Sudowoodo Release Bot
9dee1183f9 Bump v16.0.0-nightly.20210908 2021-09-08 06:02:30 -07:00
Shelley Vohr
9891ff14a7 refactor: remove dead code in NeedsCompleteGpuInfoCollection (#30855)
Refs https://chromium-review.googlesource.com/c/chromium/src/+/1208362
2021-09-08 08:42:03 +09:00
Mark Lee
22abbf76fb docs(protocols): simplify packaging section & cleanup (#30832)
* docs(protocols): simplify packaging section & cleanup

* docs(protocol): add basic instructions for Linux support

* Fix typo

Co-authored-by: Cheng Zhao <github@zcbenz.com>

Co-authored-by: Cheng Zhao <github@zcbenz.com>
2021-09-08 08:24:45 +09:00
Darshan Sen
90a3e7f927 feat: warn when crash key name is longer than 39 bytes (#30742)
Signed-off-by: Darshan Sen <darshan.sen@postman.com>
2021-09-07 11:09:48 -07:00
Jeremy Rose
55c57808fb feat: serialize NativeImage over ipc (#30729) 2021-09-07 10:37:45 -07:00
Christian Engel
ee33374675 Fix wrong code example for preload property (#30555)
The text mentions that `preload` should be a property of `webPreferences`, but the code example shows something else.
2021-09-07 17:04:08 +02:00
Finn Behrens
6a1726576d docs: Update windows info for auto-updater (#30538)
Squirrel.Mac can be served from a static host as well.
2021-09-07 17:03:56 +02:00
Sudowoodo Release Bot
64e33002f8 Bump v16.0.0-nightly.20210907 2021-09-07 06:02:06 -07:00
Samuel Maddock
fb40065c1e fix: show maximized frameless window (#30804) 2021-09-07 10:18:43 +02:00
Sudowoodo Release Bot
ce6a71e936 Bump v16.0.0-nightly.20210906 2021-09-06 19:02:56 -07:00
Sudowoodo Release Bot
57e3c25378 Revert "Bump v16.0.0-nightly.20210906"
This reverts commit f39ba9281c.
2021-09-06 18:48:49 -07:00
Samuel Maddock
1546cb6e6c refactor: use getter for frame in webrequest details (#30830) 2021-09-07 09:13:16 +09:00
Sudowoodo Release Bot
f39ba9281c Bump v16.0.0-nightly.20210906 2021-09-06 06:02:05 -07:00
Milan Burda
8b7631228f chore: move native-image.ts back into common (#30838) 2021-09-06 11:06:27 +02:00
Isaac Taylor
4a2f41ee58 docs: updated webview tag documentation to accurately reflect preload behavior with asar archives (#30768) 2021-09-06 17:00:17 +09:00
Samuel Maddock
7379e5eb36 fix: BrowserWindow backgroundColor (#30778)
* fix: BrowserWindow backgroundColor

* refactor: propagate transparency via backgroundColor
2021-09-06 16:59:09 +09:00
Shelley Vohr
26f981fa3e fix: devtools not resizable on Windows (#30823) 2021-09-06 16:54:47 +09:00
Robo
99c0a723fd chore: follow-up to roll 95.0.4612.5 (#30835)
* chore: enable v8 oilpan

* chore: update patches

* fix: network isolation key for preconnect requests

* chore: update feat_expose_raw_response_headers_from_urlloader.patch
2021-09-06 09:33:10 +02:00
Milan Burda
94ca57e296 chore: move global_menu_bar_registrar_x11 out of chromium_src (#30837) 2021-09-06 09:03:07 +02:00
Jeremy Rose
1dcb8a370e refactor: simplify desktop_capturer patch (#30685) 2021-09-03 16:37:36 -07:00
Raymond Zhao
e6f781f403 refactor: Convert ProcessSingleton changes to patch (#30594)
* Convert ProcessSingleton changes to patch

* Update patch

* Polish

* Add sandbox check to patch

* Add missing includes

* Fix linking error

* Fix compile error

* Apply PR feedback

* Fix compile fails

* Fix tests

* Remove extra patch

* Update test
2021-09-03 14:16:33 -07:00
Erick Zhao
b8372f20a0 docs: move module creation guide to /development (#30826) 2021-09-03 13:46:53 -07:00
Sudowoodo Release Bot
92222c874f Bump v16.0.0-nightly.20210903 2021-09-03 06:02:32 -07:00
Sudowoodo Release Bot
c30303207a Bump v16.0.0-nightly.20210902 2021-09-02 16:35:36 -07:00
Samuel Attard
873872a32b build: temporarily revert broken dump_syms changes in breakpad (#30825) 2021-09-02 16:34:31 -07:00
Sudowoodo Release Bot
5554de0237 Revert "Bump v16.0.0-nightly.20210902"
This reverts commit 6d4995ec17.
2021-09-02 14:40:45 -07:00
Jeremy Rose
ee0e15a52e feat: deprecate desktopCapturer.getSources in the renderer (#30721) 2021-09-02 11:31:47 -07:00
Sudowoodo Release Bot
6d4995ec17 Bump v16.0.0-nightly.20210902 2021-09-02 06:01:22 -07:00
Jeremy Rose
8d86d84ff5 ci: fix setCertificateVerifyProc tests (#30799) 2021-09-01 18:58:29 -04:00
Black-Hole
fd8eb3de1b fix: remove extension warning that do not have any impact (#29695) 2021-09-01 15:36:21 -07:00
Samuel Maddock
4d89174b41 feat: add 'dom-ready' event to WebFrameMain (#29290) 2021-09-01 15:21:15 -07:00
electron-roller[bot]
49e62f1261 chore: bump chromium to 95.0.4629.0 (main) (#30676)
* chore: bump chromium in DEPS to 95.0.4620.0

* chore: update patches

* 3076261: Move args_ to private in ExtensionFunction

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

* [GURL -> SiteForCookies] content/public/browser/content_browser_client.h

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

* chore: fix -Wunreachable-code-return in node

* Tracing to diagnose ContentScriptTracker-related bad message reports

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

* chore: bump chromium in DEPS to 95.0.4621.0

* chore: update patches

* Remove title from the URL format on Windows.

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

* chore: bump chromium in DEPS to 95.0.4623.0

* Revert "chore: disable v8 oilpan"

This reverts commit 5d255cf1d8e8efbb906047937a713279e5f800d0.

(cherry picked from commit ba5cde4da2)

* Change file paths in network context params to be relative.

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

* Code Health: Rename/replace content::WebUI::RegisterMessageCallback().

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

* Migrate CanExecuteContentScriptSync to Mojo

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

* chore: update patches

* remove unreachable code

* Revert "Revert "chore: disable v8 oilpan""

This reverts commit fef495c0294e21760df51bddb5f7bf1ec9ed5f1e.

* fixup mas patch

* Reland "[include] Split out v8.h"

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

* chore: bump chromium in DEPS to 95.0.4624.0

* chore: bump chromium in DEPS to 95.0.4625.0

* chore: bump chromium in DEPS to 95.0.4626.0

* 3033504: Pass NavigationDownloadPolicy in CreateNewWindowParams

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

* 3058038: Introduce TestPrintingContext & test UpdatePrintSettings

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

* 3114943: [Conditional Focus][#4] Add tests and remove flag gating

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

* chore: update patch indices

* chore: bump chromium in DEPS to 95.0.4627.0

* chore: update patches

* 3093591: ozone: webpagepopups: calculate anchor for menu bounds. 4/*

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

* 3110414: [PA] Remove the leading cookie

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

* chore: update patches

* 3076261: Move args_ to private in ExtensionFunction

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

* 3113629: Reland "[include] Split out v8.h"

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

* chore: bump chromium in DEPS to 95.0.4628.0

* chore: update patches

* chore: bump chromium in DEPS to 95.0.4629.0

* chore: update patches

* Fix chrome root store codegen for cross-compile builds.

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

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: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-09-01 15:55:07 -04:00
John Kleinschmidt
e6802bf935 ci: ignore pdb download failure (#30785) 2021-09-01 10:26:12 -04:00
Sudowoodo Release Bot
ad776d6113 Bump v16.0.0-nightly.20210901 2021-09-01 06:01:17 -07:00
jiang kun
f533c44912 docs: fix code example in process-model.md (#30690)
* Update process-model.md

the demo have two error: 
- at macos, close all window, the app will not quite, unless press cmd + q
- attach preload.js, use preload prop that is member of `webPreferences` property of `BrowserWindow` controller argument

* Update docs/tutorial/process-model.md

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

Co-authored-by: Cheng Zhao <github@zcbenz.com>
Co-authored-by: Erick Zhao <erick@hotmail.ca>
2021-09-01 20:46:32 +09:00
Shelley Vohr
63b35403ef fix(linux): OpenURI portal support for shell.showItemInFolder() (#30716) 2021-09-01 10:04:28 +09:00
ComplexSpaces
399032252f docs: improve documentation about macOS entitlement usage security (#30740) 2021-09-01 10:02:42 +09:00
Jeremy Rose
dd7aeda6fb feat: add app.configureHostResolver (#30576) 2021-08-31 11:55:30 -07:00
Keeley Hammond
3b2db5f168 docs: add remote removal to E14 breaking changes (#30769) 2021-08-31 11:14:46 -07:00
electron-roller[bot]
c1075debf3 chore: bump node to v16.8.0 (main) (#30714)
* chore: bump node in DEPS to v16.8.0

* build: add option to hide console window

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

* chore: fixup patch indices

* stream: duplexify

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

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-08-31 10:36:04 -04:00
Sudowoodo Release Bot
88ff3a6a9a Bump v16.0.0-nightly.20210831 2021-08-31 06:00:47 -07:00
Samuel Attard
8007d01874 feat: add support for the U2F Web API (#30438)
* feat: add support for the U2F Web API

* chore: fix lint

* chore: fix tests

* build: disable src caching

* Revert "build: disable src caching"

This reverts commit c4c8a60fc435a10788475ec171399a55ac2dd674.

* chore: update per feedback

* chore: consistent code removal
2021-08-30 11:22:46 -07:00
Sudowoodo Release Bot
c2da4ec2bc Bump v16.0.0-nightly.20210830 2021-08-30 06:01:39 -07:00
Jeremy Rose
aa9da78edb fix: remove ipc wrapper for nativeImage.createThumbnailFromPath (#30728) 2021-08-27 14:21:36 -07:00
Samuel Maddock
352ac21413 feat: add webContents.fromDevToolsTargetId() (#29399)
* feat: add webContents.fromDevToolsTargetId()

* refactor: avoid using FromOrCreate
2021-08-27 14:01:24 -07:00
Sudowoodo Release Bot
96131af5d3 Bump v16.0.0-nightly.20210827 2021-08-27 06:01:16 -07:00
Sudowoodo Release Bot
f9c6f9af83 Bump v16.0.0-nightly.20210826 2021-08-26 06:01:35 -07:00
Cheng Zhao
00d65eb9ac fix: titlebar and buttons state under simple fullscreen (#30671) 2021-08-26 08:29:34 +09:00
Jeremy Rose
a9983c1d06 docs: feature_request additional information not required (#30684) 2021-08-25 10:11:52 -07:00
Sudowoodo Release Bot
c2c1b22a31 Bump v16.0.0-nightly.20210825 2021-08-25 06:03:14 -07:00
Milan Burda
501ac15b1d feat: add <webview>.sendToFrame() / frameId to 'ipc-message' event (#30451) 2021-08-25 09:46:46 +02:00
Samuel Attard
be43996d35 docs: explain the null webContents case in permission checks (#30645)
* docs: explain the null webContents case in permission checks

* Update docs/api/session.md

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

Co-authored-by: Erick Zhao <erick@hotmail.ca>
2021-08-25 09:41:56 +09:00
Shelley Vohr
32194f0f71 fix: crash when using TouchBarScrubber arrow button (#30661) 2021-08-24 18:28:57 +02:00
Sudowoodo Release Bot
e43a25724c Bump v16.0.0-nightly.20210824 2021-08-24 06:01:17 -07:00
electron-roller[bot]
5513e66982 chore: bump chromium to 95.0.4612.5 (main) (#30503)
* chore: bump chromium in DEPS to 94.0.4604.0

* build: 3-way merge of chromium patches

* chore: bump chromium in DEPS to 94.0.4605.0

* build: 3-way merge of chromium patches

* 3076040: Reland Remove delete_children RemoveAllChildViews arg

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

* 3069287: Remove the remaining uses and delete the deprecated API

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

* 2297212: Replace RemoveWithoutPathExpansion(.*, nullptr) with Value::RemoveKey()

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

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

* 3082756: Change transport_security_persister_path param to be a path to a file.

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

> this CL intentionally changes the name of the parameter
> in the network context parameters and the order of the constructor
> parameters to ensure all callers update their code to pass a full
> file path rather than a path to a directory.

The 'path' in this diff is already an absolute path, coming from
`CHECK(base::PathService::Get(chrome::DIR_USER_DATA, &path_));` at
08ff1c2cbf/shell/browser/electron_browser_context.cc (L126)

* iwyu: network::mojom::HttpRawHeaderPair

* fixup! 3076040: Reland Remove delete_children RemoveAllChildViews arg

Missed one.

* 2999884: CodeHealth: Remove DictionaryValue::GetStringWithoutPathExpansion

Refs: https://chromium-review.googlesource.com/c/chromium/src/+/2999884
(example of replacing GetStringWithoutPathExpansion() w/FindStringKey())

Also: https://chromium-review.googlesource.com/c/chromium/src/+/3060296
(removal of DictionaryValue::GetStringWithoutPathExpansion)

* 3059260: Remove kSameSiteByDefaultCookies and kCookiesWithoutSameSiteMustBeSecure

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

We had both of these in a 'disable_features' list. Since these feature have
been removed upstream, remove them from our disable list, too.

IMPORTANT: this commit should not be backported to older branches that
still have these features, because doing so would un-disable them.

* 2920890: Load reroute_info from download in-progress and history db back into DownloadItem.

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

* 3039323: [Clipboard API] Clipboard Custom Formats implementation Part 5.

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

* chore: bump chromium in DEPS to 94.0.4606.0

* 3084502: Add a new PrintRasterizePdfDpi policy.

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

* chore: update patches

* chore: bump chromium in DEPS to 94.0.4606.3

* chore: bump chromium in DEPS to 95.0.4608.0

* chore: bump chromium in DEPS to 95.0.4609.0

* [DevTools] Remove report_raw_headers from network::ResourceRequest

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

* Remove content::WebContentsObserver::OnInterfaceRequestFromFrame

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

* Disable kDesktopCaptureMacV2

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

* Add a new PrintRasterizePdfDpi policy.

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

* chore: update patches

* chore: bump chromium in DEPS to 95.0.4609.3

* disable `use_lld` for macos

* chore: update patches

* Linux: use chrome_crashpad_handler instead of crashpad_handler

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

* chore: fix lint

* Revert "[DevTools] Remove report_raw_headers from network::ResourceRequest"

This reverts commit 28f4da1582d046e96cb58f3cbb590503e89dfd0d.

* [DevTools] Remove report_raw_headers from network::ResourceRequest (Attempt #2)

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

* DCHECK that predictor always has a non-empty NetworkIsolationKey.

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

* Remove --no-untrusted-code-mitigations from //content and //gin

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

* fixup! Remove kSameSiteByDefaultCookies and kCookiesWithoutSameSiteMustBeSecure

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

* fixup! Remove kSameSiteByDefaultCookies and kCookiesWithoutSameSiteMustBeSecure

* Convert PrintManager to RenderFrameHostReceiverSet.

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

* chore: bump chromium in DEPS to 95.0.4612.5

* chore: disable v8 oilpan

* [Compiler] Remove untrusted code mitigations.

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

* Remove most FTP logic from services/network.

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

* Rename scale_factor.h -> resource_scale_factor.h

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

* [GURL -> SiteForCookies] extensions/

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

* breadcrumbs: add desktop entry point

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

* Move args_ to private in ExtensionFunction

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

* chore: iwyu

* fixup! Remove kSameSiteByDefaultCookies and kCookiesWithoutSameSiteMustBeSecure

* Disable kDesktopCaptureMacV2

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

* fixup! [Compiler] Remove untrusted code mitigations.

* fixup! Disable kDesktopCaptureMacV2

* Revert "chore: disable v8 oilpan"

This reverts commit 5d255cf1d8e8efbb906047937a713279e5f800d0.

* Reland "chore: disable v8 oilpan"

This reverts commit 1c252765b07a205560e7b5eed06de2605336e2d8.

The previous revert was to test on which platforms did the
heapsnapshot test actually fail.

* [Clipboard API] Clipboard Custom Formats implementation Part 5.

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

* Convert ExtensionFrameHost to RenderFrameHostReceiverSet.

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

* Convert PDFWebContentsHelper to RenderFrameHostReceiverSet.

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

* [Underscore Migration] Migrate ui/legacy

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

* chore: remove unknown permission error

* chore: fix lint

* chore: ignore -Wunreachable-code-return for node deps/

* fixup! chore: ignore -Wunreachable-code-return for node deps/

* fix: windows build

* fix: build dependency

Dependency was missed in cbeae20438

* 3108669: arm,dsp: Fix 8bpp Dct64_NEON().

https://chromium-review.googlesource.com/c/codecs/libgav1/+/3108669

* chore: revert libgav1 roll

* Revert "3108669: arm,dsp: Fix 8bpp Dct64_NEON()."

This reverts commit 7ed3132312.

* Revert "chore: revert libgav1 roll"

This reverts commit 084a490d29.

* chore: revert clang roll

* chore:  Fix -Wunreachable-code-aggressive warnings in arm and arm64 code

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: mlaurencin <mlaurencin@electronjs.org>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2021-08-23 20:52:17 -04:00
Jeremy Rose
10c4931477 docs: remove link to outdated examples from README (#30648) 2021-08-23 09:19:16 -07:00
Milan Burda
aad1c0d493 feat: add <webview> 'did-redirect-navigation' event (#30457) 2021-08-23 10:26:00 -04:00
Sudowoodo Release Bot
34f1bc0e82 Bump v16.0.0-nightly.20210823 2021-08-23 06:01:59 -07:00
electron-roller[bot]
fb990ba1eb chore: bump node to v16.7.0 (main) (#30350)
* chore: bump node in DEPS to v16.6.0

* chore: bump node in DEPS to v16.6.1

* crypto: fix generateKeyPair with encoding 'jwk'

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

* build: add library_files to gyp variables

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

* debugger: rename internal module

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

* chore: fixup patch indices

* deps: extract gtest source files to deps/googletest

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

* crypto: fix generateKeyPair with encoding 'jwk'

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

* deps: bump HdrHistogram_C to 0.11.2

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

* fixup! deps: extract gtest source files to deps/googletest

* chore: bump node in DEPS to v16.6.2

* chore: update patches

* deps: reflect c-ares source tree

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

* deps: update c-ares to 1.17.2

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

* fix: _ReadBarrier undefined symbol error on WOA arm64

* chore: update patches

* chore: bump node in DEPS to v16.7.0

* deps: upgrade to libuv 1.42.0

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

* chore: update filenames

* src: remove extra semicolons outside fns

* chore: fixup patch filenames

* chore: sort and alphabetize disabled tests

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: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
2021-08-20 19:25:50 +02:00
Sudowoodo Release Bot
517b174c3c Bump v16.0.0-nightly.20210820 2021-08-20 06:01:13 -07:00
Samuel Attard
c83de755c1 Revert "fix: DCHECK on reload when forcefullyCrashRenderer() is called (#30544)" (#30646)
This reverts commit 90b5ba3bed.
2021-08-19 12:07:48 -07:00
Samuel Attard
aab5ea5f9d build: embed binary checksums in the npm package (#30611)
* build: embed binary checksums in the npm package

* Update docs/tutorial/installation.md

Co-authored-by: Jeremy Rose <jeremya@chromium.org>

* refactor: replace reduce with loop

Co-authored-by: Jeremy Rose <jeremya@chromium.org>
2021-08-19 11:26:17 -07:00
Samuel Attard
7093cd75cb build: add nvmrc file (#30612) 2021-08-19 11:12:17 -07:00
Jeremy Rose
2a28ca226f ci: drop with_tags with_branch_heads from sync on appveyor (#30601) 2021-08-19 09:23:34 -07:00
Sudowoodo Release Bot
4820dee980 Bump v16.0.0-nightly.20210819 2021-08-19 06:00:58 -07:00
Samuel Maddock
cb7c16cb2d fix: WebFrameMain mojo pipe not reset (#30629) 2021-08-19 15:10:11 +09:00
Larry Kluger
11de995d38 docs: typo in launch-app-from-url-in-another-app.md (#30566)
* Typo in launch-app-from-url-in-another-app.md

Code snippet for the info.plist example had html formatting. Removed.

* Fix paddings

Co-authored-by: Cheng Zhao <github@zcbenz.com>
2021-08-19 10:38:30 +09:00
Erick Zhao
ea889b423d docs: update Hazel information (#30517) 2021-08-19 08:42:12 +09:00
Erick Zhao
655b614ecd docs: remove unused Desktop Environment Integration doc (#30577)
* docs: remove unused Desktop Environment Integration doc

* Update docs/api/app.md

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

* Update docs/api/app.md

Co-authored-by: Mark Lee <malept@users.noreply.github.com>

Co-authored-by: Mark Lee <malept@users.noreply.github.com>
2021-08-19 08:34:34 +09:00
Keeley Hammond
cbeae20438 fix: change gin_wrappable to scoped crash key (#30578) 2021-08-18 13:51:40 -07:00
Cheng Zhao
8699124397 refactor: dynamically search defines from node (#30563) 2021-08-18 13:34:15 -07:00
Shelley Vohr
ec13a0b0e6 fix: documentEdited with non-default titlebarStyle (#30565) 2021-08-18 12:09:57 -07:00
Shelley Vohr
e92d92d7eb build: remove redundant --ignore_locks from appveyor (#30591) 2021-08-18 12:08:02 -07:00
Samuel Maddock
dd16d68e96 fix: cross-origin navigation disposing WebFrameMain instances (#30076) 2021-08-18 11:23:41 -07:00
Shelley Vohr
90b5ba3bed fix: DCHECK on reload when forcefullyCrashRenderer() is called (#30544) 2021-08-18 11:23:06 -07:00
Jeremy Rose
29749f3dc6 chore: delete unused content_tracing.idl (#30554) 2021-08-18 09:54:40 -07:00
Sudowoodo Release Bot
f797159fbe Bump v16.0.0-nightly.20210818 2021-08-18 06:00:48 -07:00
Samuel Attard
b62bbfda4e fix: ensure web_contents() is alive before grabbing view (#30571) 2021-08-17 14:00:49 -07:00
Shelley Vohr
db8644ee7a fix: media key globalShortcuts on macOS (#30552) 2021-08-17 13:44:17 -04:00
Milan Burda
04aafcc5ef refactor: simplify <webview> event dispatch (#30458)
* refactor: simplify <webview> event dispatch

* Update lib/browser/guest-view-manager.ts

Co-authored-by: Jeremy Rose <jeremya@chromium.org>

* remove undocumented new-window event properties

Co-authored-by: Jeremy Rose <jeremya@chromium.org>
2021-08-17 12:10:27 -04:00
Sudowoodo Release Bot
ff128a32d9 Bump v16.0.0-nightly.20210817 2021-08-17 06:00:38 -07:00
Shelley Vohr
a9a90fa1b6 fix: {exit|enter}-html-fullscreen emitted after esc in webview (#30537) 2021-08-17 09:03:45 +02:00
Samuel Attard
7cdd132d18 fix: handle nullish WebContentsView in UpdateDraggableRegions (#30556)
* fix: handle nullish WebContentsView in UpdateDraggableRegions

* build: nogncheck on webcontentsimpl include
2021-08-16 23:29:49 -07:00
Samuel Attard
93d7968d64 build: fix gclient config file 2021-08-16 10:56:29 -07:00
Samuel Attard
cd09a54365 build: add basic codespaces configuration (#30528)
* build: @jasonetco said that this will make codespaces work

* tmp

* Codespaces

* Update docker-compose.yml

* Update docker-compose.yml

* tada?

* e use

* do not use pizza...

* point at correct goma file

* use ghcr for codespaces

* pass --yes to npx

* build: use auth.notgoma codespace token auth to auto-auth goma

* build: move build-tools set up to Dockerfile

* build: provide default extensions list

* Fix locale tests

* add vnc support

* use prebuilt devcontainer image

* update docker images

* update docker images

* update docker images

* add docs for codespaces

* chore: update docker images

* build: do not overwrite modified buildtools configs on container rebuilds

* use gn language server

* update docker images

* update docker images

* fill in missing links

Co-authored-by: Codespaces <codespaces@github.com>
2021-08-16 10:33:49 -07:00
Sudowoodo Release Bot
eaa5d372fb Bump v16.0.0-nightly.20210816 2021-08-16 06:01:11 -07:00
Erick Zhao
6669abf38d docs: clarify platform-specific usage of the acceptFirstMouse option (#30522) 2021-08-16 14:13:02 +02:00
Erick Zhao
740dcc5c16 docs: uniformize tutorial titles (#30527) 2021-08-16 14:12:34 +02:00
Shelley Vohr
fcce2b16d5 fix: persist BrowserView background color when bounds offscreen (#30510) 2021-08-16 12:26:58 +02:00
John Kleinschmidt
94111c9d5c ci: update git on CI machines (#30526) 2021-08-14 16:00:40 -07:00
Samuel Attard
8b9d0092cb build: manually pull 64bit dugite for 32bit tests (#30531) 2021-08-14 15:44:43 -07:00
Samuel Attard
0c1f762119 build: fix publish-to-npm script post requests migration 2021-08-13 13:26:38 -07:00
Keeley Hammond
a11a234eac fix: disable kWindowCaptureMacV2 for desktopCapturer (#30507) 2021-08-13 13:23:56 -07:00
Samuel Attard
fc9a197f6c build: do not excessively log response bodies 2021-08-13 13:15:39 -07:00
Samuel Attard
61117a11a1 build: ensure getAssetContents is called in a async wrapper fn 2021-08-13 13:07:17 -07:00
Sudowoodo Release Bot
7132f36ddd Bump v16.0.0-nightly.20210813 2021-08-13 10:41:03 -07:00
Samuel Attard
d1bd9afbbf build: use basic auth to trigger CI if either a username OR password is provided 2021-08-13 10:40:26 -07:00
Sudowoodo Release Bot
1e983e2a6e Revert "Bump v16.0.0-nightly.20210813"
This reverts commit c5db7a9013.
2021-08-13 10:39:45 -07:00
Sudowoodo Release Bot
c5db7a9013 Bump v16.0.0-nightly.20210813 2021-08-13 10:38:06 -07:00
Samuel Attard
a48968c1ce build: do not pass undefined to Auth header in CI scripts 2021-08-13 10:37:30 -07:00
Sudowoodo Release Bot
d313ddbd3d Revert "Bump v16.0.0-nightly.20210813"
This reverts commit 6ad47322fa.
2021-08-13 10:30:22 -07:00
Sudowoodo Release Bot
6ad47322fa Bump v16.0.0-nightly.20210813 2021-08-13 10:27:52 -07:00
Samuel Attard
93b1d2d932 build: fix release CI jobs start script (#30521)
This broke in #30492, we weren't handled 20X status codes and weren't authing to appveyor correctly.
2021-08-13 10:25:17 -07:00
Sudowoodo Release Bot
17615654e8 Revert "Bump v16.0.0-nightly.20210813"
This reverts commit c6267d9fb0.
2021-08-13 10:23:49 -07:00
Sudowoodo Release Bot
c6267d9fb0 Bump v16.0.0-nightly.20210813 2021-08-13 09:30:30 -07:00
Sudowoodo Release Bot
52890e9efd Revert "Bump v16.0.0-nightly.20210813"
This reverts commit 7668507c9d.
2021-08-13 08:10:10 -07:00
Sudowoodo Release Bot
7668507c9d Bump v16.0.0-nightly.20210813 2021-08-13 06:01:58 -07:00
Samuel Attard
439e83de6c refactor: remove all usages of the legacy request module (#30492)
* Replaces request with got
* Replaces nugget with got streams
* Replaces request in docs with got
* Upgrades dugite to drop requests dependency
2021-08-12 10:34:49 -07:00
Sudowoodo Release Bot
08ff1c2cbf Bump v16.0.0-nightly.20210812 2021-08-12 06:01:50 -07:00
electron-roller[bot]
81c143318b chore: bump chromium to 94.0.4590.2 (main) (#30274)
* chore: bump chromium in DEPS to 94.0.4587.0

* chore: update patches

* 2823155: fix GPU video decoding capabilities enumeration

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

* 3041383: Reduce includes in url_request_mojom_traits.h

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

* chore: bump chromium in DEPS to 94.0.4588.0

* chore: update patches

* chore: bump chromium in DEPS to 94.0.4589.0

* chore: update patches

* 3050633: Rename ScaleFactor to ResourceScaleFactor

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

* 3048296: Create new mojo target to prevent traits header spreading

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

* 3046186: Rename base::ClampToRange

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

* chore: update picture-in-picture patch

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

* chore: bump chromium in DEPS to 94.0.4590.0

* chore: update patches

* 3057495: Fix base::NoDestructor usage in Mac KeychainPassword

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

* 3056134: Remove NetworkIsolationKey unused methods

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

* 3035091: [rab/gsab] Fix gsab maxByteLength after transferring to worker

Adds a patch to v8 to disable a DCHECK that is also firing on node streams
in child processes.

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

* chore: bump chromium in DEPS to 94.0.4590.2

* chore: fix mas_no_private_api.patch

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

* 3049555: [views] Add CHECK to prevent fallthrough to global NativeTheme

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

* chore: empty commit

* chore: fix whitespace for lint

* chore: cherry-pick chromium woa fix

* Revert "chore: cherry-pick chromium woa fix"

This reverts commit 64f3082e2d.

* chore: fix the build on Windows on ARM

* chore: remove commented code in printing.patch

* fixup! chore: remove commented code in printing.patch

do not remove the new weak_ptr check

* build: sync disable_use_lld_for_macos.patch

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: VerteDinde <khammond@slack-corp.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: VerteDinde <keeleymhammond@gmail.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2021-08-11 17:04:56 -04:00
John Kleinschmidt
c8f3324610 ci: make arm64 macos test cleanup more resilient (#30495) 2021-08-11 16:23:47 -04:00
Keeley Hammond
60650abf09 fix: explicitly define REFGUID from ::GUID&, not base::GUID (#30442)
* fix: explicitly define REFGUID from ::GUID&

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

* fix: duplicate GUID_NULL symbol, add comment
2021-08-11 12:43:33 -07:00
Samuel Attard
e11953b0e6 build: update remark (#30493) 2021-08-11 11:13:33 -07:00
Michaela Laurencin
41646d1168 feat: enable windows control overlay on Windows (#29600)
* rebase "feat: enable windows control overlay on Windows"

* correct compilation error

* fix linting errors

* modify includes and build file

* change `hidden` option to `overlay`

* add patch to fix visual layout

* add button background color parameter

* add button text color parameter

* modify `overlay` in docs and modify button hover/press transition color

* change `text` to `symbol`

* remove todo and fix `text` replacement

* add new titleBarOverlay property and remove titleBarStyle `overlay`

* update browser and frameless window docs

* remove chromium patches

* chore: update patches

* change button hover color, update trailing `_`, update test file

* add dchecks, update title bar drawing checks, update test file

* modify for mac and linux builds

* update docs with overlayColor and overlaySymbolColor

* add corner and side hit test info

* modify docs and copyright info

* modify `titlebar_overlay_` as boolean or object

* move `title_bar_style_ to `NativeWindow`

* update docs with boolean and object titlebar_overlay_

* add `IsEmpty` checks

* move get options for boolean and object checks

* fix linting error

* disable `use_lld` for macos

* Update docs/api/frameless-window.md

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>

* Update docs/api/frameless-window.md

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>

* Update docs/api/frameless-window.md

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>

* Apply docs suggestions from code review

Co-authored-by: Jeremy Rose <jeremya@chromium.org>

* modify `true` option description `titleBarOverlay`

* ci: cleanup keychain after tests on arm64 mac (#30472)

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
2021-08-11 14:07:36 -04:00
Sudowoodo Release Bot
42936b07fe Bump v16.0.0-nightly.20210811 2021-08-11 06:01:26 -07:00
dependabot[bot]
985f1b5c04 build(deps): bump path-parse from 1.0.6 to 1.0.7 (#30480)
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-11 02:04:43 -07:00
Shelley Vohr
ac49e6af4a repl: fix crash when SharedArrayBuffer disabled (#30456) 2021-08-11 09:42:15 +09:00
John Kleinschmidt
69f1c1b083 ci: cleanup keychain after tests on arm64 mac (#30472) 2021-08-10 16:15:30 -04:00
Sudowoodo Release Bot
f17e6ae318 Bump v16.0.0-nightly.20210810 2021-08-10 06:01:37 -07:00
Milan Burda
4f739d7837 docs: add missing <webview> event documentation (#30450) 2021-08-10 10:12:54 +09:00
nibbleswap
590858a38d docs: fix camelcase in menu example (#30341)
* docs: fix camelcase in menu example and add hint to deal with TS error

hideothers -> hideOthers (the TS compiler caught this)
The TypeScript compiler also did not like the pattern used to
switch between platforms for submenus was loosing the type information
of the literal constants and generalized them as strings which
conflicts with the type definition of MenuItemConstructorOptions.

* docs: Fix spelling, added hint to TypeScript

Without explicitly stating the type for the const template TypeScript does not create a
with the correct shape due to generalization to strings.

* remove ts hints

Co-authored-by: a <a@b>
Co-authored-by: Cheng Zhao <github@zcbenz.com>
2021-08-10 10:01:39 +09:00
Charles Kerr
edb7413bae fix: mouse doesn't work on frameless browserwindows (#30447) 2021-08-10 10:01:20 +09:00
Jeremy Rose
e223b4db94 fix: respect image animation policy pref (#30403) 2021-08-09 09:58:03 -07:00
Electron Bot
08e9aea940 Bump v16.0.0-nightly.20210809 2021-08-09 06:02:07 -07:00
Electron Bot
66c458a353 Bump v16.0.0-nightly.20210806 2021-08-06 14:06:30 -07:00
Keeley Hammond
6a9cada98c fix: build SetCrashKeyGW without tray on Windows (#30437) 2021-08-06 14:04:19 -07:00
Electron Bot
d783e944d3 Revert "Bump v16.0.0-nightly.20210806"
This reverts commit 641260bc32.
2021-08-06 12:58:53 -07:00
Electron Bot
641260bc32 Bump v16.0.0-nightly.20210806 2021-08-06 06:01:19 -07:00
George Xu
bc508c6113 feat: add electron.safeStorage encryption API (#30020)
* feat: add SafeStorage api; first commit

* chore: rename files to fit semantically

* chore: add linkedBindings

* chore: fix function signatures

* chore: refactor eisCookieEncryptionEnabled() fuse

* chore: create test file

* chore: add tests and documentation

* chore: add copyright and lint

* chore: add additional tests

* chore: fix constructor

* chore: commit for pair programming

* wip: commit for keeley pairing

* chore: docs change and code cleanup

* chore: add linux import

* chore: add description to documentation

* chore: fixing tests

* chore: modify behaviour to not allow unencrypted strings as decyption input

* fix add patch for enabling default v11 encryption on Linux

* chore: remove file after each test

* chore: fix patch

* chore: remove chromium patch

* chore: add linux specific tests

* chore: fix path

* chore: add checker for linuux file deletion

* chore: add dcheck back

* chore: remove reference to headless mode

* chore: remove tests for linux

* chore: edit commit message

* chore: refactor safeStorage to not be a class

* chore: remove static variable from header

* chore:  spec file remove settimeout

Co-authored-by: VerteDinde <keeleymhammond@gmail.com>
2021-08-05 15:12:54 -07:00
Jeremy Rose
ec6cd0053e chore: more crash-keys for gin::Wrappable debugging (#30404) 2021-08-05 11:39:07 -07:00
Darshan Sen
8e1160fde4 build: use fully qualified path names for deps (#30414)
This aligns the code with the GN Style Guide: https://gn.googlesource.com/gn/+/refs/heads/main/docs/style_guide.md#deps

Signed-off-by: Darshan Sen <darshan.sen@postman.com>
2021-08-05 11:03:50 -07:00
Samuel Attard
320bea4c28 feat: add fuses for NODE_OPTIONS and --inspect (#30190)
* feat: add fuses for NODE_OPTIONS and --inspect

* chore: add node patch to ensure NODE_OPTIONS are never parsed when fuse is disabledd

* chore: fix lint

* chore: flip boolean logic

* chore: update patches

* chore: add trailing _ to static member

* Update add_should_read_node_options_from_env_option_to_disable_node_options.patch

* chore: update patches

Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
2021-08-05 10:50:11 -07:00
Samuel Attard
59ab79417d build: rebase release branch before reverting bump (#30400) 2021-08-05 10:49:12 -07:00
Electron Bot
423172775e Bump v16.0.0-nightly.20210805 2021-08-05 06:01:09 -07:00
Samuel Attard
4703dc0a1d build: bust the deps cache on windows (#30401) 2021-08-04 15:31:17 -07:00
Jeremy Rose
481b774fd7 docs: crashpad on linux lands in 16, not 15. (#30387) 2021-08-04 10:16:05 -07:00
Electron Bot
acbd643e2a Bump v16.0.0-nightly.20210804 2021-08-04 06:00:53 -07:00
Cheng Zhao
97929eab5f fix: move window buttons in-place on macOS (#30322) 2021-08-04 09:31:12 +09:00
Milan Burda
1c29734c91 build: fix building with enable_desktop_capturer = false (#30372) 2021-08-03 15:12:46 -07:00
Jeremy Rose
8179349625 feat: enable sandbox by default in limited circumstances (#30197) 2021-08-03 15:07:03 -07:00
Jeremy Rose
a17e48061a fix: console window popping up when --enable-logging passed on windows (#30375) 2021-08-03 14:09:02 -07:00
Jeremy Rose
40e76dca07 feat: switch to crashpad on linux (#30278) 2021-08-03 14:01:12 -07:00
Milan Burda
6e43b0bcbf refactor: only create webContents after 'will-attach-webview' (#30311) 2021-08-03 10:08:49 -07:00
Electron Bot
4519bc3cd1 Bump v16.0.0-nightly.20210803 2021-08-03 06:01:40 -07:00
Robo
2b897c8ad8 fix: crash due to race between attach and destruction of webview (#24344) 2021-08-02 08:35:57 -07:00
Electron Bot
0cabff0a21 Bump v16.0.0-nightly.20210802 2021-08-02 06:01:52 -07:00
Jeremy Rose
888ac65c72 fix: toggleDevTools menu role closes devtools window (#29922) 2021-08-02 10:58:28 +09:00
Matthew Shen
c0e72bd335 docs: update to the use of arrow functions in line with the style guide (#30194)
* docs: Update to the use of arrow functions in line with the style guide

* docs: Fixed unmatched bracket typo in previous commit 9ebe3e58f7948c6636d77f3c58a2693683b69691

* fix linting

Co-authored-by: Cheng Zhao <zcbenz@gmail.com>
2021-08-02 10:57:37 +09:00
Biru Mohanathas
ced2e8779f feat: Allow detection of MITM HTTPS proxies like ZScaler (#30174)
* feat: Allow detection of MITM HTTPS proxies like ZScaler

For security purposes, Figma heavily restrics the origins that are
allowed to load within our Electron app. Unfortunately some corporate
environments use MITM proxies like ZScaler, which intercepts our
connection to `https://www.figma.com` and serves a redirect to e.g.
`https://gateway.zscloud.net` before finally redirecting back to
`https://www.figma.com`.

In order to detect this situation and handle it gracefully, we need to
be able to know whether or not the certificate for our own origin
(`https://www.figma.com`) is chained to a known root. We do this by
exposesing `CertVerifyResult::is_issued_by_known_root`.

If the certification verification passed without the certificate being
tied to a known root, we can safely assume that we are dealing with a
MITM proxy that has its root CA installed locally on the machine. This
means that HTTPS can't be trusted so we might as well make life easier
for corporate users by loosening our origin restrictions without any
manual steps.

* Tweak docs wording
2021-08-02 10:24:58 +09:00
Samuel Attard
9693fb9a37 build: update build images to update npm and node (#30359) 2021-08-02 10:01:59 +09:00
Jeremy Rose
9a63d96e83 fix: respect LogJsConsoleMessages feature in InspectableWebContents::DidAddMessageToConsole (#30312) 2021-07-30 10:18:49 -07:00
Electron Bot
7b5deb2f3a Bump v16.0.0-nightly.20210730 2021-07-30 06:01:04 -07:00
Samuel Attard
8651c5d02d chore: update deps (#30339) 2021-07-30 02:21:54 -07:00
Shelley Vohr
639f03977f fix: BrowserViews not painting their WebContents (#29919) 2021-07-30 08:59:24 +09:00
John Kleinschmidt
9cc1b55663 chore: remove experimental from navigator.serial implementation (#30237) 2021-07-30 08:57:22 +09:00
Shelley Vohr
3ee6326b93 fix: use contentAspectRatio not aspectRatio (#30305) 2021-07-29 23:27:21 +02:00
Shelley Vohr
39c3ff5292 fix: guard against missing native view (#30304) 2021-07-29 23:27:02 +02:00
Electron Bot
4aa9455613 Bump v16.0.0-nightly.20210729 2021-07-29 06:02:12 -07:00
Milan Burda
c5ad7ed0cd refactor: remove guestInstanceId from WebPreferences (#30280)
* refactor: remove guestInstanceId from WebPreferences

* refactor: remove WebViewManager::GetEmbedder
2021-07-28 15:32:53 -07:00
Samuel Attard
c3abbdefdd build: set the export goma auth fallback flag for the control process (#30313) 2021-07-28 14:02:50 -07:00
George Xu
bd85b1d028 docs: create documentation for browser api (#30071)
* docs: create documentation for browser api

* docs: add cpp theme
2021-07-28 12:37:45 -07:00
Jeremy Rose
fa464286ee test: deflake crashReporter.getLastCrashReport test (#30276) 2021-07-28 08:56:15 -07:00
Electron Bot
d63980edeb Bump v16.0.0-nightly.20210728 2021-07-28 06:01:28 -07:00
Anders Kaseorg
1c95d30c0f fix: Add missing items to menuItem.role documentation (#30217) 2021-07-28 08:45:06 +02:00
Milan Burda
fc7ea75009 refactor: move related code to makeWebPreferences in guest-view-manager.ts (#30272) 2021-07-27 16:12:49 -07:00
Jeremy Rose
ceebae170e feat: partially support chrome.tabs.update (#30069) 2021-07-27 13:36:22 -07:00
John Kleinschmidt
cce27a0961 chore: update publish to npm to use GitHub token (#30275)
ensures that we don't get hit with a rate limit while trying to publish a release.
2021-07-27 09:52:18 -04:00
Electron Bot
10424c0149 Bump v16.0.0-nightly.20210727 2021-07-27 06:00:51 -07:00
Milan Burda
a545cd3790 fix: type internal APIs that can return null properly (#29852) 2021-07-27 14:48:12 +09:00
John Kleinschmidt
461db8f1ab fix: persist permission granted to serial ports (#30209) 2021-07-26 13:10:57 -04:00
Cheng Zhao
d2989de5d9 fix: update traffic lights position for macOS 11 (#30263) 2021-07-26 09:22:21 -07:00
Jeremy Rose
385d0f590f refactor: remove base::Value from WebContentsPreferences (#30193) 2021-07-26 09:04:09 -07:00
electron-roller[bot]
64ba8feb93 chore: bump chromium to 94.0.4584.0 (main) (#30030)
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: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
2021-07-26 09:02:16 -07:00
Electron Bot
a6ab702ae4 Bump v16.0.0-nightly.20210726 2021-07-26 06:01:26 -07:00
Antón Molleda
62711e23ad docs: update title of guide (#30205) 2021-07-26 17:42:55 +09:00
Electron Bot
3cb06457c4 Bump v16.0.0-nightly.20210723 2021-07-23 06:01:58 -07:00
stephen9357
e3fe80e0e8 fix: increase stack size on windows x86 (#29474)
* fix: increace main thread stack size on windows x86

* chore: improve quit-on-crashed-event spec

* chore: add debug logs

* Revert "chore: add debug logs"

This reverts commit 0be81ae07c.

* chore: use a reliable crash endpoint

Co-authored-by: Stephen Wang <wangwenqiang.wwq@bytedance.com>
Co-authored-by: Deepak Mohan <hop2deep@gmail.com>
2021-07-22 12:49:21 -07:00
Shelley Vohr
b24cfe17bc fix: process.exit crash in nativeWindowOpen (#30218) 2021-07-22 15:38:11 +02:00
Electron Bot
eca1098b55 Bump v16.0.0-nightly.20210722 2021-07-22 06:01:34 -07:00
Keeley Hammond
19820fc2a7 chore: add additional crash key to gin::Wrappable (#30161) 2021-07-21 09:33:25 -04:00
Electron Bot
adc3f39a9e Bump v15.0.0-nightly.20210721 2021-07-21 06:02:02 -07:00
Samuel Attard
9fe70c5580 build: handle release failure by existing with code 1 (#30216) 2021-07-21 00:45:57 -07:00
Electron Bot
ea69da279f Bump v15.0.0-nightly.20210720 2021-07-20 06:02:23 -07:00
Keeley Hammond
deb75ceaa5 build: update version-bumper to support alpha (#30165)
* build: update version-bumper to support alpha

* build: seperate alpha bump version tests

For easier deletion. If we want to continue supporting an alpha channel,
they can be reintegrated with main tests.

* chore: fix regex

Co-authored-by: Samuel Attard <sam@electronjs.org>

Co-authored-by: Samuel Attard <sam@electronjs.org>
2021-07-19 17:58:15 -07:00
Jeremy Rose
d35fb2a2e3 docs: mention sandboxing in security docs (#30147) 2021-07-19 12:45:47 -07:00
Jeremy Rose
c9ba0d02d7 feat: support crashpad on linux (#29719) 2021-07-19 10:11:10 -07:00
Jeremy Rose
612361c4da chore: remove unused getWebPreferences method (#30160) 2021-07-19 09:29:23 -07:00
Mark Lee
a3298424b3 docs: update default branch for Electron Packager API links (#30175) 2021-07-19 09:25:05 -07:00
Jota
9441ff747d docs: Ffx broken context isolation link in sandbox docs (#30177) 2021-07-19 09:24:27 -07:00
Electron Bot
d4b2f69f36 Bump v15.0.0-nightly.20210719 2021-07-19 06:02:42 -07:00
Electron Bot
cfb2829634 Bump v15.0.0-nightly.20210716 2021-07-16 06:01:06 -07:00
Jeremy Rose
0d9e6f29ba fix: allow colored tray titles when font type is specified (#30146) 2021-07-15 16:45:20 -07:00
Shelley Vohr
1bb689e6dd fix: BrowserWindow transparency not working (#30136) 2021-07-15 16:18:39 -04:00
electron-roller[bot]
063ac19712 chore: bump node to v16.5.0 (main) (#30031)
* chore: bump node in DEPS to v16.4.2

* chore: update patches

* ci: run main and remote woa tests separately

* chore: bump node in DEPS to v16.5.0

* build: restore libplatform headers in distribution

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

* build: pass directory instead of list of files to js2c.py

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

* chore: various BoringSSL/OpenSSL upstreams

- https://github.com/nodejs/node/pull/39136
- https://github.com/nodejs/node/pull/39138
- https://github.com/nodejs/node/pull/39054

* test: move debugger test case to parallel

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

* chore: fixup patch indices

* build: pass directory instead of list of files to js2c.py

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

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: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-07-15 11:25:00 -04:00
Electron Bot
849a3b6f81 Bump v15.0.0-nightly.20210715 2021-07-15 07:13:56 -07:00
David Sanders
341b370213 fix: handle redirects within registered protocols (#29796) 2021-07-15 20:14:46 +09:00
Shelley Vohr
3f38681c55 fix: double traffic lights on exit fullscreen (#30114) 2021-07-14 16:45:12 -07:00
Cheng Zhao
05ba6359d0 feat: add signal option to dialog.showMessageBox (#26102)
* mac: add dialog.closeMessageBox API

* win: Implement dialog.closeMessageBox

* mac: Return cancelId with closeMessageBox

* gtk: Implement dialog.closeMessageBox

* win: Fix 32bit build

* win: Reduce the scope of lock

* fix: Build error after rebase

* feat: Use AbortSignal to close message box

* chore: silently handle duplicate ID

* win: Add more notes about the threads

* chore: apply reviews

* fix: base::NoDestructor should be warpped in function

* chore: fix style on windows
2021-07-15 07:59:27 +09:00
George Xu
4b780f9770 docs: update supported versions to match new release cadence (#30121) 2021-07-14 15:38:28 -07:00
Utkarsh Dixit
b2da2f759a docs: add runtime.reload as supported extension api (#29925) 2021-07-14 15:37:53 -07:00
Robo
4931c055a9 spec: disable flaky fullscreen test (#30141) 2021-07-14 15:26:09 -07:00
Antón Molleda
a855aa34d9 docs: fix fiddle path (#30139)
This is breaking the build in `electron/electronjs.org-new` and will
most likely not work when clicking the "Fiddle" button.

Rel: https://github.com/electron/electronjs.org-new/pull/65
2021-07-14 16:16:59 -04:00
Jeremy Rose
bec47f54f4 fix: use correct userData path when unbundled (#30113) 2021-07-14 13:10:37 -07:00
Electron Bot
4db7221c7d Bump v15.0.0-nightly.20210714 2021-07-14 06:02:07 -07:00
Davenury
75b4267aa9 Update quick-start.md (#30064)
Change app-quit link definition, so both window-all-closed and app-quit redirects to appropriate sites.
2021-07-14 20:59:32 +09:00
Milan Burda
c0995b8dff docs: add <webview> 'did-attach' event documentation (#29899) 2021-07-14 20:59:20 +09:00
Cheng Zhao
637ba48b42 fix: pressing ESC should exit fullscreen from webview (#30063) 2021-07-14 20:51:26 +09:00
Jeremy Rose
4d0475c9ce feat: expose location and modifiers on before-input-event (#29850)
* feat: expose location and modifiers on before-input-event

* lint
2021-07-14 20:50:02 +09:00
Keeley Hammond
1897b14af3 chore: update releases to 8 weeks in CONTRIBUTING (#30115)
* chore: update releases to 8 weeks in CONTRIBUTING

* chore: update support.md for four version support
2021-07-13 13:57:19 -07:00
Sofia Nguy
eb2efd4b7e docs: Update timeline for E15 alpha announcement (#30109)
* docs: Update timeline for E15 alpha announcement

* fix line break
2021-07-13 13:54:13 -07:00
1akshat1
d267f979b7 feat: continue-activity event is extended to support webpageURL property (#30042)
Co-authored-by: Akshat Malik <amalik@microstrategy.com>
Co-authored-by: Jeremy Rose <nornagon@nornagon.net>
2021-07-13 13:21:33 -07:00
Electron Bot
3582a513ca Bump v15.0.0-nightly.20210713 2021-07-13 06:02:20 -07:00
Milan Burda
9959f01e4c spec: fix check for electron_common_testing binding in logging-spec.ts (#30086) 2021-07-12 22:11:19 -07:00
Robo
19a6286dfd chore: cherry-pick 9bab573a37 from chromium (#30084)
Refs https://chromium-review.googlesource.com/c/chromium/src/+/3010140
2021-07-12 18:35:29 -07:00
Jeremy Rose
459a8417e3 test: disable failing node tests (#30096) 2021-07-13 09:40:58 +09:00
Jeremy Rose
96ff8d7bd7 build: decode error output as utf8 (#30093) 2021-07-12 15:22:26 -07:00
Jeremy Rose
e26901aba4 fix: crash when invoking login callback synchronously (#30068) 2021-07-12 12:33:41 -07:00
Jeremy Rose
0cb5631b0b fix: return RGBA values from getSystemColor (#30055) 2021-07-12 11:08:10 -07:00
Robo
36079b822a chore: disable fullscreen test on mac arm (#30083) 2021-07-12 08:53:35 -07:00
Electron Bot
c15f44c20f Bump v15.0.0-nightly.20210712 2021-07-12 06:01:17 -07:00
Robo
c806184bfe chore: fix flaky fullscreen inheritance test (#30081) 2021-07-11 23:19:30 -07:00
Cheng Zhao
21f6937728 chore: remove unneeded conversions between wstring and u16string (#30047) 2021-07-12 13:33:26 +09:00
Robo
ccfde6c9d4 fix: window ordering on mac (#29857) 2021-07-09 13:38:25 -07:00
Electron Bot
98f617e856 Bump v15.0.0-nightly.20210709 2021-07-09 06:01:45 -07:00
George Xu
b7164428ec docs: modernize protocol-handler docs (#29380)
* docs: modernize protocol-handler docs

* docs: iadd contextIsolation

* docs: add guide for launch-app-from-URL-in-other-app

* docs: address comments

* chore: fix brackets

* chore: add escaped brackets
2021-07-08 11:42:28 -07:00
Electron Bot
0824fc57f7 Bump v15.0.0-nightly.20210708 2021-07-08 06:01:00 -07:00
Milan Burda
53386914e1 docs: move webRequest filters definition to structures/web-request-filter.md (#29900) 2021-07-08 00:20:08 -07:00
Milan Burda
635ed5a6e3 feat: add missing resourceType conversions for webRequest listener details (#29902) 2021-07-08 00:19:16 -07:00
Milan Burda
13bf2fd7ec build: fix building with enable_plugins = false (#30040) 2021-07-08 00:18:11 -07:00
Electron Bot
cd031a77dd Bump v15.0.0-nightly.20210707 2021-07-07 13:02:22 -07:00
Electron Bot
767b4973a3 Revert "Bump v15.0.0-nightly.20210707"
This reverts commit 5f1233cdad.
2021-07-07 12:11:40 -07:00
Electron Bot
5f1233cdad Bump v15.0.0-nightly.20210707 2021-07-07 06:01:31 -07:00
Jeremy Rose
550d3c11a8 docs: mention contextIsolation in ipc-main example (#29918) 2021-07-06 10:27:35 -07:00
Electron Bot
257b796856 Bump v15.0.0-nightly.20210706 2021-07-06 06:01:39 -07:00
electron-roller[bot]
2585e6d5fa chore: bump chromium to 93.0.4566.0 (main) (#29980)
* chore: bump chromium in DEPS to 93.0.4562.0

* chore: update patches

* [base] Made Value::Take{Dict,List}() rvalue ref-qualified.

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

* Revert "Reland "Roll src/buildtools/third_party/libc++/trunk/ 8fa879467..79a2e924d (426 commits)""

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

This reverts commit 9691d6c265 and 797723ec83

* Pass gfx::Insets to GetHTComponentForFrame

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

* chore: bump chromium in DEPS to 93.0.4563.0

* [Clipboard API] Clipboard Custom Formats implementation Part 2.

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

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4564.0

* chore: bump chromium in DEPS to 93.0.4565.0

* chore: update patches

* Prevent use of base::NoDestructor for trivially-destructible types

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

* chore: update patches

* fixup! [Clipboard API] Clipboard Custom Formats implementation Part 2.

* chore: bump chromium in DEPS to 93.0.4566.0

* chore: update patches

* chore: add missing header

* ci: do not run clipboard tests on WOA

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: deepak1556 <hop2deep@gmail.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2021-07-06 08:17:13 -04:00
Samuel Attard
7169734470 fix: download the arm64 version of Electron when running node under rosetta (#29953) 2021-07-06 10:40:26 +09:00
Jenux
f3517b6635 docs: match css filename in dark-mode.md (#29936)
* Update dark-mode.md

Fix the unmatched css file name

* Update docs/tutorial/dark-mode.md

Co-authored-by: Jeremy Rose <nornagon@nornagon.net>

Co-authored-by: Jeremy Rose <nornagon@nornagon.net>
2021-07-06 10:37:41 +09:00
David Sanders
6c251da201 chore: correct spelling of is_quitting in electron::Browser (#29948) 2021-07-05 15:45:50 -04:00
electron-roller[bot]
60366ad171 chore: bump node to v16.4.1 (main) (#29994)
* chore: bump node in DEPS to v16.4.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>
2021-07-05 13:47:09 -04:00
Electron Bot
6db9b274b7 Bump v15.0.0-nightly.20210705 2021-07-05 06:01:17 -07:00
Cheng Zhao
25a77761f6 fix: build error caused by extra ] (#30015) 2021-07-05 01:34:39 -07:00
Shelley Vohr
af991123f1 fix: self.module.paths not working in web workers (#29955)
* fix: global.module.paths in workers

* spec: add a regression test
2021-07-05 08:48:46 +09:00
Antón Molleda
20c1f504ae docs: remove Experimental from contextBridge.exposeInMainWorld (#29985)
The API has been around for about 3 years. It should no longer be
considered experimental.
2021-07-05 08:46:47 +09:00
Cheng Zhao
18d0ed8155 fix: do not leak NSUUID (#29990) 2021-07-05 08:45:00 +09:00
Cheng Zhao
0403494a6b docs: remove mention of node-mac-notifier (#29991) 2021-07-03 13:23:47 -07:00
Electron Bot
800873b44d Bump v15.0.0-nightly.20210702 2021-07-02 06:01:44 -07:00
Cheng Zhao
85a69f88f1 chore: remove unused _grantOriginAccess method (#29976) 2021-07-01 19:53:38 -07:00
Cheng Zhao
6eff9231b8 fix: webview should maximize on requestFullscreen (#29952) 2021-07-01 20:56:29 -04:00
David Sanders
95a9ff952c chore: cleanup usages of const char* (#29906) 2021-07-02 09:51:52 +09:00
David Sanders
f6531166ae chore: clean up forward declarations (#29904) 2021-07-02 09:51:37 +09:00
John Kleinschmidt
1f8a46c9c6 feat: enable window controls overlay on macOS (#29253)
* feat: enable windows control overlay on macOS

* address review feedback

* chore: address review feedback

* Address review feedback

* update doc per review

* only enable WCO when titleBarStyle is overlay

* Revert "only enable WCO when titleBarStyle is overlay"

This reverts commit 1b58b5b1fc.

* Add new titleBarOverlay property to manage feature

* spelling fix

* Update docs/api/frameless-window.md

Co-authored-by: Samuel Attard <sam@electronjs.org>

* Update shell/browser/api/electron_api_browser_window.cc

Co-authored-by: Samuel Attard <sam@electronjs.org>

* update per review feedback

Co-authored-by: Samuel Attard <sam@electronjs.org>
2021-07-01 15:25:40 -04:00
Electron Bot
0fe2836151 Bump v15.0.0-nightly.20210701 2021-07-01 06:00:47 -07:00
Samuel Attard
331444d103 build: add support for spawning builds for a specific commit on appveyor (#29971) 2021-06-30 18:17:59 -07:00
Shelley Vohr
98809d8d64 fix: honor user-defined Downloads directory (#29938) 2021-06-30 22:54:02 +02:00
Shelley Vohr
372ecf32e6 fix: potential crash on macOS app exit (#29941) 2021-06-30 20:12:17 +02:00
Jeremy Rose
a8b3c22518 fix: correctly propagate title updates for window with no navigation entries (#29946) 2021-06-30 10:53:10 -07:00
Shelley Vohr
675bbfe092 refactor: modify Node.js options object directly (#29939)
* refactor: modify Node.js options object directly

* chore: update patch to reflect upstream
2021-06-30 16:07:28 +02:00
Electron Bot
a310bd7473 Bump v15.0.0-nightly.20210630 2021-06-30 06:00:59 -07:00
Electron Bot
cb8d9cebbc Revert "Bump v15.0.0-nightly.20210630"
This reverts commit 97c4b59747.
2021-06-30 03:50:14 -07:00
Electron Bot
97c4b59747 Bump v15.0.0-nightly.20210630 2021-06-30 02:43:32 -07:00
Robo
522b19e2d8 fix: crash when clicking links with target=_blank from webview (#29874) 2021-06-29 18:10:18 -07:00
Samuel Attard
da9261497e feat: add MenuItem.userAccelerator property (#26682)
* feat: add MenuItem.userAccelerator property

This allows folks to read the user-assigned accelerator that macOS users can provide in system preferences. Useful for showing in-app shortcut help dialogs, you need to know if the accelerator you provided is not being used in favor of a user assigned one.

* chore: update syntax

* chore: add safety check for command index being -1
2021-06-29 16:28:16 -07:00
Rituka Patwal
3e69985b76 chore: set python interpreter to python3 in script/spec-runner.js (#29740)
The new installs of the python module, python-dbusmock, is broken for
python2. The tests still run fine on linux machine in Electron's
pipeline setup on CircleCI, because the docker image used has
the non-broken version of python-dbusmock for python2 installed.
But running electron tests on any other linux machine would fail if
they don't have this non-broken version of python-dbusmock for python2
installed, already, which is the case for most of the machines.
Moreover, Python2 is deprecated now. So it would be better if we change
the python interpreter in script/spec-runner.js file to python3, for
which all the python modules are updated and working.

Co-authored-by: Rituka Patwal <rituka.patwal@postman.com>
2021-06-29 15:46:12 -07:00
electron-roller[bot]
d3c1f10e33 chore: bump chromium to 93.0.4558.0 (main) (#29895)
* chore: bump chromium in DEPS to 93.0.4553.0

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4555.0

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4556.0

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4557.0

* chore: update patches

* Fix warnings for -Wc++11-narrowing.

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

* fixup! Fix warnings for -Wc++11-narrowing.

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

* Reland "Roll src/buildtools/third_party/libc++/trunk/ 8fa879467..79a2e924d (426 commits)"

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

* chore: bump chromium in DEPS to 93.0.4558.0

* 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>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
2021-06-29 13:02:27 -07:00
Electron Bot
37b57a1013 Bump v15.0.0-nightly.20210629 2021-06-29 06:01:38 -07:00
Omar Kilani
1b4ce6c69a fix: geolocation crashes electron on macOS (#29343) (#29913) 2021-06-28 20:26:57 -07:00
David Sanders
9142563748 docs: remove requestHeaders in webRequest.onHeadersReceived (#29907) 2021-06-28 15:52:06 -07:00
electron-roller[bot]
e4807ac020 chore: bump node to v16.4.0 (main) (#29699) 2021-06-28 18:05:38 +02:00
Electron Bot
da2baabb96 Bump v15.0.0-nightly.20210628 2021-06-28 06:01:29 -07:00
David Sanders
b60b96b221 chore: remove unused using and namespace declarations (#29892) 2021-06-28 15:26:10 +09:00
Electron Bot
21319926a0 Bump v15.0.0-nightly.20210625 2021-06-25 06:00:29 -07:00
electron-roller[bot]
a518e4b2e1 chore: bump chromium to 93.0.4552.0 (main) (#29862)
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: Charles Kerr <charles@charleskerr.com>
2021-06-24 17:06:42 -07:00
Shelley Vohr
f9bfd1da25 fix: properly order out child windows (#29821) 2021-06-24 20:43:28 +02:00
Shelley Vohr
9b5dd5380f fix: Inspector method overrides when contextIsolation enabled (#29841) 2021-06-24 20:36:22 +02:00
Jeremy Rose
0f16575eee fix: stop window.open from hanging when prevented (#29851) 2021-06-24 08:50:48 -07:00
Electron Bot
9de8e676dd Bump v15.0.0-nightly.20210624 2021-06-24 06:01:03 -07:00
dependabot[bot]
47a8c952e9 build(deps): bump lodash from 4.17.20 to 4.17.21 in /spec (#29067)
* build(deps): bump lodash from 4.17.20 to 4.17.21 in /spec

Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
2021-06-23 16:51:28 -07:00
Jeremy Rose
2c01deae03 fix: deny instead of canceling when certificate-error passes false (#29826) 2021-06-23 16:40:51 -07:00
Electron Bot
d9d2f01563 Bump v15.0.0-nightly.20210623 2021-06-23 06:01:12 -07:00
David Sanders
ff39a0e939 fix: ensure set vibrancy with invalid value is a no-op (#29795) 2021-06-23 15:09:42 +09:00
Shelley Vohr
129f92e1fa fix: child window alwaysOnTop level persistence (#29813)
* fix: child window alwaysOnTop level

* chore: add undocumented getAlwaysOnTopLevel

* test: add test for level persistence

* Address feedback from review
2021-06-23 15:09:09 +09:00
Robo
6e310b7424 chore: remove revert_remove_contentrendererclient_shouldfork.patch (#29842) 2021-06-22 14:50:57 -07:00
electron-roller[bot]
b8261f1591 chore: bump chromium to 93.0.4550.0 (main) (#29751) 2021-06-22 12:17:16 -07:00
Jeremy Rose
c5066cce22 docs: fix broken markdown in dialog.md (#29782) 2021-06-22 09:49:30 -07:00
Electron Bot
92901ddf18 Bump v15.0.0-nightly.20210622 2021-06-22 06:01:22 -07:00
David Sanders
bc8cb75e4e fix: properly handle optional requestHeaders with onBeforeSendHeaders (#29798) 2021-06-22 15:08:52 +09:00
Keeley Hammond
0ad73ac423 fix: allow ppapi processes access to resource bundle on all platforms (#29827)
* wip: debug resource bundle failure

* fix: include ppapi subprocesses for windows resource bundle

* fix: allow ppapi plugin processes access to resource bundle on all platforms.

Aligns with chrome_main_delegate here: https://chromium-review.googlesource.com/c/chromium/src/+/2619003
2021-06-21 20:46:53 -07:00
David Sanders
98d2824c7f refactor: migrate AdaptCallbackForRepeating to SplitOnceCallback (#29825) 2021-06-21 18:04:31 -07:00
Electron Bot
0e465f1885 Bump v15.0.0-nightly.20210621 2021-06-21 06:01:31 -07:00
marekharanczyk
507cbdc80a fix: do not cancel CORS preflight request on proxy auth. (#29266)
* fix: do not cancel CORS preflight request on proxy auth.

If connecting via proxy, preflight request can receive 407
header response from proxy. This does not mean request
was finished even though it received headers (from proxy,
not the destination server), so prevent "completing"
and most importantly deleting it, which causes request
to be canceled in network layer. Just continue to monitor it
and await proper response from server. Also add circut breaker
to cancel request if proxy auth failed 3 times (for example
user keeps cancelling auth). This behavior happens only
when app registered WebRequest api listeners.

* Port chromium webrequest changes to electron code.

Move relevant parts of chromium WebRequestProxyingURLLoaderFactory from
https://chromium-review.googlesource.com/c/chromium/src/+/2011781
into electron ProxyingURLLoaderFactory.

* Update code to upstreamed version and remove retyr count failsafe.

Co-authored-by: Milan Burda <milan.burda@gmail.com>
2021-06-21 14:06:52 +09:00
Fedor Indutny
d4a1b41129 fix: microtasks policy in CreateEnvironment (#29531)
* fix: microtasks policy in CreateEnvironment

Microtasks policy should not be updated for the renderer because
`NodeBindings::CreateEnvironment` might be entered with or without
`UvRunOnce()` on stack. One of the examples of such calls is
`window.open()` which is possible to invoke while `uv_run()` is still
running (e.g. with `setImmediate()`).

All in all, it doesn't matter that much which policy we use since
`v8::MicrotasksScope` has a check for the policy in its destructor and
no commits will be made if the policy is `kExplicit`. It is important,
however, to not change the policy in the middle of `UvRunOnce()` so we
should respect whatever we currently have and move on.

Fix: #29463

* Move test to a better place

* Update spec-main/fixtures/crash-cases/setimmediate-window-open-crash/index.html

Co-authored-by: Jeremy Rose <nornagon@nornagon.net>

* Update spec-main/fixtures/crash-cases/setimmediate-window-open-crash/index.html

Co-authored-by: Jeremy Rose <nornagon@nornagon.net>

* simplify crash-case

* comment

* fix comment

Co-authored-by: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com>
Co-authored-by: Jeremy Rose <nornagon@nornagon.net>
Co-authored-by: Fedor Indutny <indutny@signal.org>
2021-06-21 14:06:17 +09:00
Darshan Sen
cfc846a337 fix: relax app.getLocaleCountryCode() test (#29679)
If the app is run with LC_ALL=C on Linux, the test would fail as
app.getLocaleCountryCode() would return "".

Signed-off-by: Darshan Sen <raisinten@gmail.com>
2021-06-21 14:05:28 +09:00
Samuel Attard
e7ae6edbd4 fix: update Squirel.Mac to fix CPU spin during update (#29791)
* fix: update Squirel.Mac to fix CPU spin during update

Refs: https://github.com/Squirrel/Squirrel.Mac/pull/259
Closes: #29119

* chore: update patches

Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
2021-06-21 14:02:20 +09:00
David Sanders
8844034fa8 chore: tune-up electron::api::NetLog (#29534) 2021-06-20 18:52:28 -07:00
Erick Zhao
aca14bf7dd docs: fix frontmatter for Tray tutorial (#29788) 2021-06-21 10:13:39 +09:00
Samuel Maddock
ef2ce9dd67 fix: flakey extension bg page test (#29744) 2021-06-21 10:11:40 +09:00
sssooonnnggg
e54667e17e fix: fix hover state not clear bug when BrowserWindow is not resizable (#611) (#29721) 2021-06-21 10:10:40 +09:00
dependabot[bot]
cef4e434cb build(deps-dev): bump ws from 7.2.1 to 7.4.6 in /spec-main (#29421)
Bumps [ws](https://github.com/websockets/ws) from 7.2.1 to 7.4.6.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/7.2.1...7.4.6)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-06-18 14:20:29 -07:00
John Kleinschmidt
58c58c46c4 ci: cleanup electron dirs after running tests on arm (#29769)
* ci: cleanup electron dirs after running tests on arm

(cherry picked from commit 1c0a6045fb)

* use start-stop-daemon to kill Xvfb
2021-06-18 14:35:44 -04:00
Electron Bot
e5aa13e2a4 Bump v15.0.0-nightly.20210618 2021-06-18 06:01:54 -07:00
Shelley Vohr
4450327fda fix: select element not working on Windows (#29742) 2021-06-18 09:05:18 +02:00
Milan Burda
de6696ef1d chore: remove unused and broken ipcRendererInternal.sendTo() (#29743) 2021-06-17 23:26:18 -05:00
John Kleinschmidt
6b4c59b8d8 ci: run linux arm tests on CircleCI (#29714) 2021-06-17 18:38:25 -04:00
Charles Kerr
8ccab4ce91 feat: bring --enable-logging functionality in line with Chromium (#25089)
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
2021-06-17 14:17:25 -07:00
Shelley Vohr
c841247815 fix: color select eyedropper not working within DevTools (#29729) 2021-06-17 08:42:51 -05:00
Electron Bot
f00a2d0629 Bump v15.0.0-nightly.20210617 2021-06-17 06:01:15 -07:00
Shelley Vohr
b3daa2d672 chore: fix BoringSSL conflict in patches (#29748) 2021-06-17 13:06:19 +02:00
Shelley Vohr
542abcd6fd chore: bump Node.js to v16.2.0 (#29244) 2021-06-17 08:50:56 +02:00
Erick Zhao
9a7e61cfc0 docs: clarify use of ELECTRON_SKIP_BINARY_DOWNLOAD (#29720) 2021-06-17 15:34:08 +09:00
electron-roller[bot]
85718349cc chore: bump chromium to 93.0.4539.0 (main) (#29608)
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: Charles Kerr <charles@charleskerr.com>
Co-authored-by: Samuel Attard <sam@electronjs.org>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
2021-06-16 15:43:51 -07:00
Samuel Attard
f71c6c04fd fix: ensure detached devtools are not always draggable (#29717) 2021-06-16 10:18:02 -07:00
Cheng Zhao
330c3bc136 chore: remove c-style conversion for vibrantView (#29724) 2021-06-16 10:13:42 -07:00
Shelley Vohr
d59e2d7b2e fix: draggable regions with devtools open (#29696) 2021-06-16 09:58:30 -07:00
trop[bot]
6fd9e4280c fix: disable CET as v8 deoptimization is incompatible with it (#29689)
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2021-06-16 09:57:58 -07:00
Electron Bot
7474c59ea0 Bump v15.0.0-nightly.20210616 2021-06-16 06:02:12 -07:00
kdau
226f2a9a56 fix setWindowOpenHandler call syntax (#29551) 2021-06-16 16:16:18 +09:00
Shelley Vohr
2ae7e04598 fix: potential crash when setting vibrancy (#29677) 2021-06-16 15:39:20 +09:00
Samuel Attard
81795744cf fix: ensure the typescript definitions only export correct value types (#28712)
* fix: ensure the typescript definitions only export correct value types

In typescript there are two main types of "types" you can export, value types (class, const) and definition types (type, interface).  The typescript compiler will let anything declared via const or class be used as a value.  Unfortunately we were exporting a bunch of things (see the diff) as class/const when they weren't actually exported values. This lead to typescript being happy but the runtime throwing errors (not something we want).

This change passes "exported-in" context through our docs, to the parser and then to the definitions generator to ensure we only mark things as exported in the ts defs that we actually export.

Fixes #22167

* chore: update typescript-defs

* chore: update typescript-defs

* chore: fix bad typescript in IPC test

* docs: test rendering of new syntax

* chore: update per feedback, use same syntax but with 'this is not exportedd' line
2021-06-15 13:50:31 -07:00
Calvin
18b03db073 chore: bumping NAN dep to include test changes (#29686) 2021-06-15 16:09:39 -04:00
Keeley Hammond
af276c96ec chore: disable default async spellchecker on Windows (#29690)
* chore: disable default async spellchecker on Windows

* chore: disable kWinRetrieveSuggestionsOnlyOnDemand in feature list
2021-06-15 09:11:49 -07:00
Electron Bot
31a4cc26d5 Bump v15.0.0-nightly.20210615 2021-06-15 06:01:55 -07:00
David Sanders
214fcfc46d test: re-enable some skipped tests (#29655)
* test: re-enable some skipped tests

* test: enable more tests
2021-06-15 10:55:08 +09:00
George Xu
f022ead559 docs: added guide and updated docs for Tray (#29385)
* docs: added guide and updated docs for Tray

* docs: improve clarity
2021-06-15 10:34:53 +09:00
Kevin Hartman
3e2ec0e2ce docs: Update represented-file fiddle tutorial (#29245)
* Update represented-file fiddle.

* add index and code back to guide

Co-authored-by: Ethan Arrowood <ethan.arrowood@gmail.com>
2021-06-15 10:29:51 +09:00
Milan Burda
56ac67e059 refactor: use std::make_unique/base::MakeRefCounted when possible (#29637) 2021-06-15 09:37:55 +09:00
Jeremy Rose
ebf54d7cc0 refactor: use PathProvider for user-data-dir and others (#29649)
* refactor: use PathProvider for user-data-dir and others

* consolidate logic for DIR_RECENT and DIR_APP_LOGS into path provider

* fix bad include

* remove debugging code

* fix build on mac

* fix build on win

* create app logs dir on both mac and non-mac
2021-06-15 09:32:56 +09:00
Samuel Attard
8b945cb296 build: restore workspace on osx builds to get docs-only-change file (#29465)
* build: restore workspace on osx builds to get docs-only-change file

* build: clean up attached workspace before checking out from cache
2021-06-14 12:20:59 -07:00
David Sanders
7019713126 docs: use relative links within docs (#29651) 2021-06-14 14:02:23 -05:00
Luke Ingalls
86ff4a9836 docs: fix typo in process-model.md (#29563) 2021-06-14 11:33:07 -04:00
Darshan Sen
cc04450b85 docs: fix file mode of versioning-sketch-2.png (#29609)
Unlike the other files, this file had its executable bit set in its file
mode. This change removes the executable bit to align its file mode with
the rest of the files.

Signed-off-by: Darshan Sen <raisinten@gmail.com>
2021-06-14 11:28:01 -04:00
Electron Bot
0b10c865d3 Bump v15.0.0-nightly.20210614 2021-06-14 06:01:21 -07:00
David Sanders
8d76b4ded1 chore: use consistent integer type for request ID (#29540) 2021-06-14 21:01:36 +09:00
Darshan Sen
4b9e804b82 refactor: use locale functions in command_line_args.cc (#29550)
This change refactors the code to use isalpha() and
isspace() so that the code is more readable.

Signed-off-by: Darshan Sen <raisinten@gmail.com>
2021-06-14 21:01:00 +09:00
Jeremy Rose
34a4e26b24 fix: check DCHECK_IS_ON() instead of #ifdef DCHECK_IS_ON (#29620) 2021-06-14 11:06:09 +09:00
David Sanders
fed5ad5303 fix: use correct spelling of attachment with Content-Disposition header (#29621) 2021-06-14 11:05:16 +09:00
David Sanders
f6d673c32a chore: use HTTP method constants (#29650) 2021-06-14 11:04:36 +09:00
David Sanders
e8c9a814d6 fix: copy received data in URLPipeLoader to prevent corruption (#29567) 2021-06-14 10:18:52 +09:00
Electron Bot
af7181b93f Bump v15.0.0-nightly.20210611 2021-06-11 06:01:09 -07:00
Darshan Sen
9b99bdb570 docs: fix image links in performance.md (#29592)
* docs: fix image links in performance.md

Fixes https://github.com/electron/electron/issues/29580

Signed-off-by: Darshan Sen <raisinten@gmail.com>

* Apply suggestions from code review

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

Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
2021-06-10 12:44:04 -05:00
Electron Bot
057b15f7bb Bump v15.0.0-nightly.20210610 2021-06-10 06:01:21 -07:00
Shelley Vohr
63cc82d91d fix: ensure custom traffic lights float to top (#29595)
* fix: ensure custom traffic lights float to top

* chore: split into separate function
2021-06-10 14:52:23 +02:00
Samuel Attard
73266f8f3d fix: ensure fuse order is read in a stable way (#29599) 2021-06-09 08:30:02 -07:00
Electron Bot
5f2e25b0b2 Bump v15.0.0-nightly.20210609 2021-06-09 08:29:41 -07:00
Samuel Attard
fa0323a3db fix: Revert "fix: don't propagate GDK_BACKEND to subprocs (#28898)" (#29610)
This reverts commit 7b169c2884.
2021-06-09 08:28:52 -07:00
Samuel Attard
c252deb878 Revert "Bump v15.0.0-nightly.20210609"
This reverts commit c9ccd136a8.
2021-06-09 08:28:12 -07:00
John Kleinschmidt
396ea4b29c fix: select-bluetooth-device on Windows (#29591) 2021-06-09 10:48:18 -04:00
Electron Bot
c9ccd136a8 Bump v15.0.0-nightly.20210609 2021-06-09 06:01:09 -07:00
electron-roller[bot]
04679121d6 chore: bump chromium to 93.0.4536.0 (main) (#29586)
* chore: bump chromium in DEPS to 93.0.4536.0

* chore: update patches

* [2918475] Make InkDrop a View class property

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

Replace old views::Button::ink_drop() calls with views::InkDrop::Get()

* [2935942] Convert use of gfx::ImageSkia to ui::ImageModel for WidgetDelegates

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

Update GetWindowIcon(), GetWindowAppIcon(), and GetDevToolsWindowIcon()
to return ui::ImageModel instead of gfx::ImageSkia.

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: Charles Kerr <charles@charleskerr.com>
2021-06-08 15:22:43 -05:00
Shelley Vohr
7b169c2884 fix: don't propagate GDK_BACKEND to subprocs (#28898) 2021-06-08 16:10:27 +02:00
Electron Bot
b27c5b94f7 Bump v15.0.0-nightly.20210608 2021-06-08 06:00:58 -07:00
ZReC
330b7849a3 docs: fix typo (#29553)
* Typo fix

* Update main.js
2021-06-08 11:45:45 +09:00
John Kleinschmidt
556c91a989 ci: save artifacts before cleaning up big things on macOS (#29578) 2021-06-07 22:02:21 -04:00
Samuel Attard
8446ce1fc7 feat: add new imageAnimationPolicy webpref and webContents setter (#29095) 2021-06-08 11:00:22 +09:00
David Sanders
79cb5144ae chore: use std::make_unique/base::MakeRefCounted when possible (#29510) 2021-06-08 11:00:05 +09:00
Shelley Vohr
a4decffe9a fix: improper wrapping of fs.promises.readFile (#29528) 2021-06-07 21:19:39 +02:00
electron-roller[bot]
5665738ceb chore: bump chromium to 93.0.4535.0 (main) (#29549)
* chore: bump chromium in DEPS to 93.0.4533.0

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4534.0

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4535.0

* chore: remove PdfViewerDocumentProperties from feature-flag conditional

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

This feature is now enabled by default upstream.

* chore: remove kPdfViewerPresentationMode from feature-flag conditional

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

This feature is now enabled by default upstream.

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: Charles Kerr <charles@charleskerr.com>
2021-06-07 14:09:41 -05:00
Samuel Attard
c48ec133a5 build: remove individual release build workflows (#29344)
* build: remove individual release build workflows

* build: ensure even builds we do not want to run have at least one step
2021-06-07 10:17:27 -04:00
David Sanders
070f25db54 fix: make intermediates work with 'select-client-certificate' (#29552) 2021-06-07 06:40:43 -07:00
Electron Bot
c5b0ba0c01 Bump v15.0.0-nightly.20210607 2021-06-07 06:02:04 -07:00
Jeremy Foster
fc10b53f95 docs: Update notifications (renderer) docs (#29267)
* remove version information from html

* change format for readability

* clarify which console the message should appear in

* minor changes to renderer.md

* update UI on click instead of developer console

* remove node-integration and fix md

* update content

* chore: remove ****

Co-authored-by: Ethan Arrowood <ethan.arrowood@gmail.com>
Co-authored-by: Cheng Zhao <github@zcbenz.com>
2021-06-07 13:02:20 +09:00
Kevin Hartman
dd98fa3cd3 docs: Updated "recent documents" fiddle tutorial (#29242)
* Port recent-documents fiddle to 12-x-y.

* Update recent-documents tutorial.

* update for review comments

Co-authored-by: Ethan Arrowood <ethan.arrowood@gmail.com>
2021-06-07 10:43:24 +09:00
David Sanders
1a30f9f974 chore: update base class name in comment (#29512) 2021-06-07 10:18:17 +09:00
electron-roller[bot]
fa2db00e55 chore: bump chromium to 93.0.4532.2 (main) (#29527)
* chore: bump chromium in DEPS to 93.0.4531.0

* chore: update patches

* Remove IPC::Listener from WebContentsObserver

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

* serial: Move serial policy from profile to local state

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

* chore: fix pip test

* chore: bump chromium in DEPS to 93.0.4532.2

* chore: update patches

* Follow up ColorChooser clean ups

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

* Distinguish between no default printer vs. query error

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

* chore: remove build_do_not_include_vr_directx_helpers_when_enable_vr.patch

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
2021-06-04 19:03:31 -07:00
Electron Bot
1c0e8a65c4 Bump v15.0.0-nightly.20210604 2021-06-04 06:01:20 -07:00
David Sanders
79ae8b427c chore: return early on promise rejection (#29279) 2021-06-04 13:21:02 +09:00
David Sanders
8e1176cbc0 chore: pull ProxyingURLLoaderFactory closer to upstream class it mirrors (#29486)
* chore: pull ProxyingURLLoaderFactory closer to upstream class it mirrors

* chore: add another change which was accepted upstream
2021-06-04 13:18:02 +09:00
David Sanders
81c5da5221 chore: use =default for default constructors/destructors (#29511) 2021-06-04 13:16:13 +09:00
David Sanders
b1d1ac6524 fix: change ASAR archive cache to per-process to fix leak (#29293)
* fix: change ASAR archive cache to per-process to fix leak (#29292)

* chore: address code review comments

* chore: tighten up thread-safety

* chore: better address code review comments

* chore: more code review changes
2021-06-04 10:49:08 +09:00
Milan Burda
00693bab30 refactor: use auto env = base::Environment::Create(); everywhere (#29502) 2021-06-04 09:23:06 +09:00
Electron Bot
5929d6335f Bump v15.0.0-nightly.20210603 2021-06-03 09:50:54 -07:00
Jeremy Rose
b79fc79a01 docs: remove devDependencies badge from README (#29499) 2021-06-03 09:44:48 -07:00
electron-roller[bot]
8532e1239e chore: bump chromium to 93.0.4530.0 (master) (#29256)
* chore: bump chromium in DEPS to 92.0.4512.6

* 2887336: [CaptureHandle][#2] Propagate CaptureHandleConfig in browser process

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

* refactor: base::Optional -> absl::optional

* chore: fixup patch indices

* chore: bump chromium in DEPS to 92.0.4514.0

* 2899417: Make build work when enable_pdf is set to false.

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

* 2904731: use BrowserContext instead of Profile in PreconnectManager

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

* 2295749: fix: check IsSecureEventInputEnabled in constructor before setting SetPasswordInputEnabled to true

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

* 2893803: Add a GetWebView to RenderFrame.

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

* 2892345: Implement WebContents::ForEachRenderFrameHost

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

* chore: fixup patch indices

* 2892048: Real instance methods for BrowserContext: remaining 5 methods.

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

* 2902821: [mojo] Don't require full header includes for referenced interfaces

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

* 2496500: Remove last deprecated extension Event ctor.

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

* chore: fixup malformed pepper support patch

* chore: bump chromium in DEPS to 92.0.4515.0

* 2908461: Add CreateEmptyPrintPagesParamsPtr() inside print_view_manager_base.cc.

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

* 2880838: viz: add optional HDRMetadata to TransferableResource

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

* chore: fixup patch indices

* chore: bump chromium in DEPS to 92.0.4515.5

* chore: update patches

* chore: bump chromium in DEPS to 92.0.4515.7

* chore: bump chromium in DEPS to 92.0.4515.9

* chore: bump chromium in DEPS to 93.0.4522.0

* chore: bump chromium in DEPS to 93.0.4523.0

* chore: bump chromium in DEPS to 93.0.4524.0

* chore: update patches

* chore: enable_pak_file_integrity_checks was reverted

* chore: update patches

* refactor: base/optional was replaced with absl::optional

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

* refactor: replace all usages of base::nullopt with absl::nullopt

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

* chore: add missing base::Contains include

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

* refactor: replace all usages of base::make_optional with
absl::make_optional

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

* refactor: replace WorldScriptContext() with GetScriptContextFromWorldId

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

* chore: clean up left over opening namespace

Refs: 95bfe6d08f

* chore: add missing base::Contains include

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

* refactor: replace GetCurrentDisplayIterator with the hard checker
GetCurrentDisplay

This code looks suspicious but if the iterator was invalid before it
will also be invalid now.

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

* refactor: headers are now passed directly in extensions client

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

* refactor: base::DictionaryValue::empty() has been removed

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

* chore: add missing includes for network URLLoaderFactory

Refs: unknown, probably a side effect of header changes

* refactor: make convenience wrapper around AppendArg

There is no converter FromV8 for base::StringPiece (apparently its not
possible).  So we now take in an std::string and use the construct for
StringPiece to do implicit conversion.

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

* chore: add patch

* chore: bump chromium in DEPS to 93.0.4525.0

* chore: update patches

* refactor: CanResize has been de-virtualized

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

* chore: update resource integrity patch

* chore: add character encoding idl patch

* chore: bump chromium in DEPS to 93.0.4526.0

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4527.0

* chore: bump chromium in DEPS to 93.0.4528.0

* chore: update patches

* chore: update idl encoding patch

* chore: bump chromium in DEPS to 93.0.4529.0

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4530.0

* chore: update patches

* fix: only SetCanResize after the widget has been initialized

* chore: add patch for vr on windows gn gen

* spec: fix focus related tests on linux due to delay in focus swap

* chore: remove new usages of base::Optional from main

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: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: Samuel Attard <sattard@slack-corp.com>
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2021-06-03 01:05:04 -07:00
Milan Burda
8d0ed05c99 refactor: replace a few usages of V8 hidden properties (#29400) 2021-06-03 14:59:56 +09:00
David Sanders
bb6903543c docs: link to IncomingMessage (#29457) 2021-06-03 14:54:33 +09:00
Juan Cruz Viotti
d6d9a6a039 build: Improve squirrel.mac BUILD.gn xcrun_action error (#29448)
Right now, if executing `xcrun` fails, then the error message prints the
second argument to the `xcrun.py` script, which is the first argument to
the tool that `xcrun` is executing, making the whole error message quite
confusing.

Consider the following error:

```
python ../../third_party/squirrel.mac/build/xcrun.py dtrace -h -s /private/tmp/20210531211008-def376dc/src/third_party/squirrel.mac/vendor/ReactiveObjC/ReactiveObjC/RACSignalProvider.d -o /private/tmp/20210531211008-def376dc/src/out/release/gen/third_party/squirrel.mac/dtrace/RACSignalProvider.h
xcrun script '-h' failed with code '71':
xcrun: error: can't exec '/tmp/20210531211008-def376dc/dtrace' (errno=Permission denied)
```

The command that `xcrun` is executing is `dtrace`, but the error just
mentions the `-h` flag.

Notes: none
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
2021-06-03 14:54:16 +09:00
Milan Burda
8040cb788f test: add spec for --require filtering in NODE_OPTIONS (#29501) 2021-06-03 14:46:44 +09:00
Keeley Hammond
d8d6e2ebc0 build: update support.md on stable version bumps (#29381)
* build: update support.md on stable version bumps

* build: update supported on major stable & nightly bumps

* test: updateSupported tests

* chore: fix syntax

* chore: use fspromise in version-bumper script/spec
2021-06-02 12:53:23 -07:00
Jeremy Rose
8ce63a9f18 refactor: point prepare-release at main (#29394) 2021-06-02 12:21:20 -07:00
Milan Burda
44491b023a refactor: eliminate duplicate C++ / JavaScript implementation of app.isPackaged (#29464) 2021-06-02 12:17:08 -07:00
Electron Bot
f0d3e1d1cf Bump v15.0.0-nightly.20210602 2021-06-02 06:03:17 -07:00
David Sanders
97fde6dc9c build: fix macOS build (#29484) 2021-06-02 19:42:07 +09:00
Cheng Zhao
3cfe5c6a21 fix: keep shifted character in menu accelerator (#29202)
* fix: correctly handle shifted char in accelerator

* test: use actual accelerator of NSMenuItem

* chore: simplify KeyboardCodeFromStr

* chore: GetAcceleratorTextAt is testing only
2021-06-02 16:32:48 +09:00
David Sanders
31190d4c6d chore: use static_cast rather than C-style cast (#29467) 2021-06-02 00:32:10 -07:00
David Sanders
cb59bab8cf chore: don't use after move (#29468) 2021-06-02 00:31:25 -07:00
Juan Cruz Viotti
f9213faec5 build: support building Electron on msys2 (#29449)
Electron already seems to support `cygwin`, so `msys` is a natural
addition. This is the only required change as far as I can see on my
local development environment, as otherwise the build scripts don't
realize that msys = windows.

Notes: none
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
2021-06-02 16:29:19 +09:00
Shelley Vohr
d6109b2eb4 chore: remove unused methods (#29438) 2021-06-02 16:27:45 +09:00
Sergio Padrino
abf6f5c8ba feat: add new runningUnderARM64Translation property to detect x64 translated apps running on Windows ARM (#29168)
* feat: add new runningUnderARM64Translation property to detect x64 translated apps running on Windows ARM

* docs: add documentation for the new runningUnderARM64Translation property

* refactor: clean up `IsRunningUnderARM64Translation` Windows implementation

* Return false if IsWow64Process2 doesn't exist

* Emit deprecation warning in runningUnderRosettaTranslation
2021-06-02 16:16:33 +09:00
Shelley Vohr
3b75549511 fix: inspector context menu throwing an error (#29436) 2021-06-01 20:39:48 -07:00
Jeremy Foster
dee4c4b908 docs: Updated "progress bar" fiddle feature in docs (#29237)
* improve progress bar fiddle

* add comments to code snippet

* edits to progress-bar tutorial

* remove versions and nodeIntegration

* limit line length to 100

* implement standard linter suggestions

* add indeterminate and clear timers

* update to have reader replace all of main.js

* remove extra button

* loop the progress bar

* add logic to show reset state briefly

* Update docs/tutorial/progress-bar.md

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

* chore: fix lint

Co-authored-by: Cheng Zhao <github@zcbenz.com>
Co-authored-by: Erick Zhao <erick@hotmail.ca>
2021-06-02 11:41:13 +09:00
Samuel Maddock
f9d2a7077e feat: include resize edge with will-resize event (#29199)
* feat: emit resize edge with will-resize event

fix: wparam type

fix: private member usage on mac

docs: will-resize event edge option

refactor: 'info' -> 'details' for better type gen

* Update docs/api/browser-window.md

Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>

* Update docs/api/browser-window.md

Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2021-06-02 11:37:10 +09:00
Jeremy Rose
750a762bf0 feat: support loading debug urls with loadURL() (#29404) 2021-06-01 17:17:15 -07:00
Electron Bot
fa703016f0 Bump v15.0.0-nightly.20210601 2021-06-01 06:02:35 -07:00
David Sanders
a1a649c0d6 chore: remove duplicate option get for CustomScheme (#29422) 2021-06-01 17:47:12 +09:00
Cheng Zhao
0444d74830 fix: Alt+Click should not toggle menu bar (#29318) 2021-06-01 17:42:47 +09:00
Pete Torres
19dce8caa5 docs: adjust markdown link syntax in introduction.md (#29426)
Co-authored-by: peteness <hello@peteness.org>
2021-06-01 09:32:50 +02:00
David Sanders
80a039ec40 chore: move destructors to header so they can be trivially destructible (#29379) 2021-05-31 21:00:09 -07:00
Cheng Zhao
d74ad51826 fix: correctly handle Alt+Key shortcuts (#29328) 2021-06-01 10:48:52 +09:00
David Sanders
0208e4adad chore: use HTTP status code constants (#29378) 2021-06-01 10:47:53 +09:00
David Sanders
ba26580f23 chore: use consistent parameter names (#29361) 2021-06-01 10:46:25 +09:00
David Sanders
d18dbdd72b fix: add service worker schemes from command line in renderer (#29425) 2021-06-01 10:45:23 +09:00
David Sanders
038359a7d8 chore: fix typos in comments (#29401) 2021-06-01 10:42:38 +09:00
David Sanders
93c9374e95 chore: trim unused STL includes (#29414) 2021-06-01 10:34:44 +09:00
Samuel Attard
71fff6ea0e build: merge chromedriver gen and build (#29439) 2021-05-31 16:20:40 -07:00
Electron Bot
73adee6d53 Bump v15.0.0-nightly.20210531 2021-05-31 06:05:57 -07:00
dependabot[bot]
646b79470a build(deps-dev): bump ws from 6.2.1 to 7.4.6 in /spec (#29416)
Bumps [ws](https://github.com/websockets/ws) from 6.2.1 to 7.4.6.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/compare/6.2.1...7.4.6)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-31 11:53:07 +02:00
Vishal
049d81e590 docs: fix issue with reference links (#29384) 2021-05-31 11:52:44 +02:00
Jeremy Rose
95bb0ba001 fix: use default_branch in release-notes (#29415) 2021-05-30 17:22:33 -07:00
Jeremy Rose
750ebfdbca refactor: use main in release-notes (#29395) 2021-05-28 12:14:50 -07:00
Jeremy Rose
a61f1446bc refactor: publish-to-npm respects main (#29375) 2021-05-28 12:13:12 -07:00
Electron Bot
221d4abca4 Bump v15.0.0-nightly.20210528 2021-05-28 06:01:45 -07:00
David Sanders
bedd587784 docs: update link to Chromium's coding style guide (#29330) 2021-05-27 19:07:46 -07:00
Jeremy Rose
1373a030b4 refactor: version-utils respects main (#29374) 2021-05-27 17:32:37 -07:00
Jeremy Rose
f664f37793 refactor: getCurrentBranch respects main (#29369) 2021-05-27 17:32:16 -07:00
Jeremy Rose
f3dff819fc docs: remove freenode channel from support list (#29370) 2021-05-27 15:53:39 -07:00
David Sanders
d80e36bcdb chore: simplify WrappableBase::SecondWeakCallback (#29359) 2021-05-27 13:15:25 -07:00
David Sanders
9bb7051f54 chore: prefer empty() check for readability (#29360) 2021-05-27 13:08:30 -07:00
David Sanders
77ecc7d432 chore: fix typos in comments (#29362) 2021-05-27 11:48:03 -07:00
aydon
9fcdb06272 Update quick-start.md (#29333)
In version 13.0.1 preload process should added to webPreferences.
2021-05-27 11:46:32 -07:00
Electron Bot
cc93b8acc0 Bump v15.0.0-nightly.20210527 2021-05-27 11:06:31 -07:00
Jeremy Foster
5e033cb7f8 docs: Update notifications (main) docs (#29268)
* remove version info from index.html page

* remove nodeIntegration

* format code and update readme

* add note to user in index.html
2021-05-27 10:18:50 +09:00
David Sanders
36bca3278d docs: fix typos in clang-tidy examples (#29327) 2021-05-27 09:45:37 +09:00
Erick Zhao
bb26060564 docs: fix link to docs/fiddle/quick-start (#29325) 2021-05-27 09:45:23 +09:00
Cheng Zhao
acce13234e fix: close autoHide menu bar when focus is lost (#29320) 2021-05-27 09:36:15 +09:00
George Xu
386572bb86 Chore: update Windows build instructions (#29342)
update "Change" to "Modify" to reflect the actual options the user sees when opening visual studio installer
2021-05-26 14:19:43 -07:00
Samuel Attard
7984933e9c feat: add experimental cookie encryption support (#27524)
* feat: add experimental cookie encryption support on macOS

* chore: fix TODO

* update patches

* feat: make cookie encryption work on windows

* chore: update cookie encryption support comments

* fix: only call OSCrypt::Init on windows

* chore: make cookie encryption work on linux

* Update shell/browser/net/system_network_context_manager.cc

Co-authored-by: Jeremy Rose <jeremya@chromium.org>

* chore: fix lint

* chore: update patches

* chore: update patches to upstreamed variants

* chore: use chrome ::switches constants

* chore: remove bad patch

* build: disable cookie encryption by default

* chore: update patches

* fix: provide std::string to NoDestructor

* chore: fix macos, nodestructor syntax

* build: fix macOS build due to mismatch in DEFINE

Co-authored-by: Electron Bot <electron@github.com>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
2021-05-26 12:16:55 -07:00
Samuel Attard
f01e35f4ea feat: add support for Blob's going over the ctx bridge (#29247) 2021-05-26 10:34:29 -07:00
980 changed files with 24666 additions and 14081 deletions

View File

@@ -17,46 +17,24 @@ parameters:
type: boolean
default: true
run-linux-x64-publish:
type: boolean
default: false
run-linux-ia32-publish:
type: boolean
default: false
run-linux-arm-publish:
type: boolean
default: false
run-linux-arm64-publish:
type: boolean
default: false
run-osx-publish:
type: boolean
default: false
run-osx-publish-arm64:
type: boolean
default: false
run-mas-publish:
type: boolean
default: false
run-mas-publish-arm64:
type: boolean
default: false
run-linux-publish:
type: boolean
default: false
linux-publish-arch-limit:
type: enum
default: all
enum: ["all", "arm", "arm64", "x64", "ia32"]
run-macos-publish:
type: boolean
default: false
macos-publish-arch-limit:
type: enum
default: all
enum: ["all", "osx-x64", "osx-arm64", "mas-x64", "mas-arm64"]
# Executors
executors:
linux-docker:
@@ -67,7 +45,7 @@ executors:
type: enum
enum: ["medium", "xlarge", "2xlarge+"]
docker:
- image: electron.azurecr.io/build:6555a80939fb4c3ddf9343b3f140e573f40de225
- image: ghcr.io/electron/build:27db4a3e3512bfd2e47f58cea69922da0835f1d9
resource_class: << parameters.size >>
macos:
@@ -86,6 +64,14 @@ executors:
resource_class: electronjs/macos-arm64
machine: true
linux-arm:
resource_class: electronjs/linux-arm
machine: true
linux-arm64:
resource_class: electronjs/linux-arm64
machine: true
# The config expects the following environment variables to be set:
# - "SLACK_WEBHOOK" Slack hook URL to send notifications.
#
@@ -233,7 +219,16 @@ step-maybe-cleanup-arm64-mac: &step-maybe-cleanup-arm64-mac
killall Safari || echo "No Safari processes left running"
rm -rf ~/Library/Application\ Support/Electron*
rm -rf ~/Library/Application\ Support/electron*
security delete-generic-password -l "Chromium Safe Storage" || echo "✓ Keychain does not contain password from tests"
security delete-generic-password -l "Electron Test Main Safe Storage" || echo "✓ Keychain does not contain password from tests"
elif [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
XVFB=/usr/bin/Xvfb
/sbin/start-stop-daemon --stop --exec $XVFB || echo "Xvfb not running"
pkill electron || echo "electron not running"
rm -rf ~/.config/Electron*
rm -rf ~/.config/electron*
fi
when: always
step-checkout-electron: &step-checkout-electron
@@ -319,6 +314,7 @@ step-setup-goma-for-build: &step-setup-goma-for-build
npm install
mkdir third_party
node -e "require('./src/utils/goma.js').downloadAndPrepare({ gomaOneForAll: true })"
export GOMA_FALLBACK_ON_AUTH_FAILURE=true
third_party/goma/goma_ctl.py ensure_start
echo 'export GN_GOMA_FILE='`node -e "console.log(require('./src/utils/goma.js').gnFilePath)"` >> $BASH_ENV
echo 'export LOCAL_GOMA_DIR='`node -e "console.log(require('./src/utils/goma.js').dir)"` >> $BASH_ENV
@@ -597,21 +593,13 @@ step-electron-dist-build: &step-electron-dist-build
fi
fi
step-electron-maybe-chromedriver-gn-gen: &step-electron-maybe-chromedriver-gn-gen
run:
name: chromedriver GN gen
command: |
cd src
if [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
gn gen out/chromedriver --args="import(\"$GN_CONFIG\") import(\"$GN_GOMA_FILE\") is_component_ffmpeg=false proprietary_codecs=false $GN_EXTRA_ARGS $GN_BUILDFLAG_ARGS"
fi
step-electron-chromedriver-build: &step-electron-chromedriver-build
run:
name: Build chromedriver.zip
command: |
cd src
if [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
gn gen out/chromedriver --args="import(\"$GN_CONFIG\") import(\"$GN_GOMA_FILE\") is_component_ffmpeg=false proprietary_codecs=false $GN_EXTRA_ARGS $GN_BUILDFLAG_ARGS"
export CHROMEDRIVER_DIR="out/chromedriver"
else
export CHROMEDRIVER_DIR="out/Default"
@@ -733,7 +721,7 @@ step-verify-mksnapshot: &step-verify-mksnapshot
command: |
if [ "$IS_ASAN" != "1" ]; then
cd src
if [ "$TARGET_ARCH" == "arm64" ] &&[ "`uname`" == "Darwin" ]; then
if [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
python electron/script/verify-mksnapshot.py --source-root "$PWD" --build-dir out/Default --snapshot-files-dir $PWD/cross-arch-snapshots
else
python electron/script/verify-mksnapshot.py --source-root "$PWD" --build-dir out/Default
@@ -858,28 +846,6 @@ step-maybe-cross-arch-snapshot: &step-maybe-cross-arch-snapshot
cp out/Default-mksnapshot-test/*.bin cross-arch-snapshots
fi
step-maybe-trigger-arm-test: &step-maybe-trigger-arm-test
run:
name: Trigger an arm test on VSTS if applicable
command: |
cd src
# Only run for non-fork prs
if [ "$TRIGGER_ARM_TEST" == "true" ] && [ -z "$CIRCLE_PR_NUMBER" ]; then
#Trigger VSTS job, passing along CircleCI job number and branch to build
if [ "`uname`" == "Darwin" ]; then
if [ x"$MAS_BUILD" == x"true" ]; then
export DEVOPS_BUILD="electron-mas-arm64-testing"
else
export DEVOPS_BUILD="electron-osx-arm64-testing"
fi
echo "Triggering $DEVOPS_BUILD build on Azure DevOps"
node electron/script/release/ci-release-build.js --job=$DEVOPS_BUILD --ci=DevOps --armTest --circleBuildNum=$CIRCLE_BUILD_NUM $CIRCLE_BRANCH
else
echo "Triggering electron-$TARGET_ARCH-testing build on VSTS"
node electron/script/release/ci-release-build.js --job=electron-$TARGET_ARCH-testing --ci=VSTS --armTest --circleBuildNum=$CIRCLE_BUILD_NUM $CIRCLE_BRANCH
fi
fi
step-maybe-generate-typescript-defs: &step-maybe-generate-typescript-defs
run:
name: Generate type declarations
@@ -1238,11 +1204,14 @@ steps-tests: &steps-tests
(cd electron && node script/yarn test --runners=main --trace-uncaught --enable-logging --files $(circleci tests glob spec-main/*-spec.ts | circleci tests split --split-by=timings)) 2>&1 | $ASAN_SYMBOLIZE
(cd electron && node script/yarn test --runners=remote --trace-uncaught --enable-logging --files $(circleci tests glob spec/*-spec.js | circleci tests split --split-by=timings)) 2>&1 | $ASAN_SYMBOLIZE
else
if [ "$TARGET_ARCH" == "arm64" ] &&[ "`uname`" == "Darwin" ]; then
if [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
export ELECTRON_SKIP_NATIVE_MODULE_TESTS=true
(cd electron && node script/yarn test --runners=main --trace-uncaught --enable-logging)
(cd electron && node script/yarn test --runners=remote --trace-uncaught --enable-logging)
else
if [ "$TARGET_ARCH" == "ia32" ]; then
npm_config_arch=x64 node electron/node_modules/dugite/script/download-git.js
fi
(cd electron && node script/yarn test --runners=main --trace-uncaught --enable-logging --files $(circleci tests glob spec-main/*-spec.ts | circleci tests split --split-by=timings))
(cd electron && node script/yarn test --runners=remote --trace-uncaught --enable-logging --files $(circleci tests glob spec/*-spec.js | circleci tests split --split-by=timings))
fi
@@ -1429,6 +1398,8 @@ commands:
steps:
- attach_workspace:
at: .
- *step-maybe-early-exit-doc-only-change
- run: rm -rf src/electron
- *step-restore-brew-cache
- *step-install-gnutar-on-mac
- *step-save-brew-cache
@@ -1528,7 +1499,6 @@ commands:
- *step-maybe-cross-arch-snapshot
# chromedriver
- *step-electron-maybe-chromedriver-gn-gen
- *step-electron-chromedriver-build
- when:
@@ -1556,6 +1526,7 @@ commands:
- when:
condition: << parameters.build >>
steps:
- move_and_store_all_artifacts
- run:
name: Remove the big things on macOS, this seems to be better on average
command: |
@@ -1573,11 +1544,6 @@ commands:
steps:
- *step-save-out-cache
- move_and_store_all_artifacts
# Trigger tests on arm hardware if needed
- *step-maybe-trigger-arm-test
- *step-maybe-notify-slack-failure
electron-publish:
@@ -1628,7 +1594,6 @@ commands:
- *step-mksnapshot-build
# chromedriver
- *step-electron-maybe-chromedriver-gn-gen
- *step-electron-chromedriver-build
# Node.js headers
@@ -1839,9 +1804,16 @@ jobs:
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: false
checkout: true
- run: echo running
- when:
condition:
or:
- equal: ["all", << pipeline.parameters.linux-publish-arch-limit >>]
- equal: ["x64", << pipeline.parameters.linux-publish-arch-limit >>]
steps:
- electron-publish:
attach: false
checkout: true
linux-ia32-testing:
executor: linux-docker
@@ -1881,9 +1853,16 @@ jobs:
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: false
checkout: true
- run: echo running
- when:
condition:
or:
- equal: ["all", << pipeline.parameters.linux-publish-arch-limit >>]
- equal: ["ia32", << pipeline.parameters.linux-publish-arch-limit >>]
steps:
- electron-publish:
attach: false
checkout: true
linux-arm-testing:
executor: linux-docker
@@ -1897,7 +1876,7 @@ jobs:
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
steps:
- electron-build:
persist: false
persist: true
checkout: true
use-out-cache: false
@@ -1926,9 +1905,16 @@ jobs:
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: false
checkout: true
- run: echo running
- when:
condition:
or:
- equal: ["all", << pipeline.parameters.linux-publish-arch-limit >>]
- equal: ["arm", << pipeline.parameters.linux-publish-arch-limit >>]
steps:
- electron-publish:
attach: false
checkout: true
linux-arm64-testing:
executor: linux-docker
@@ -1942,7 +1928,7 @@ jobs:
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
steps:
- electron-build:
persist: false
persist: true
checkout: true
use-out-cache: false
@@ -1980,9 +1966,16 @@ jobs:
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: false
checkout: true
- run: echo running
- when:
condition:
or:
- equal: ["all", << pipeline.parameters.linux-publish-arch-limit >>]
- equal: ["arm64", << pipeline.parameters.linux-publish-arch-limit >>]
steps:
- electron-publish:
attach: false
checkout: true
osx-testing-x64:
executor: macos
@@ -1997,7 +1990,7 @@ jobs:
persist: true
checkout: false
checkout-and-assume-cache: true
attach: false
attach: true
osx-testing-x64-gn-check:
executor:
@@ -2008,31 +2001,6 @@ jobs:
<<: *env-testing-build
<<: *steps-electron-gn-check
osx-publish-x64:
executor: macos
environment:
<<: *env-mac-large-release
<<: *env-release-build
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: false
checkout: true
osx-publish-arm64:
executor: macos
environment:
<<: *env-mac-large-release
<<: *env-release-build
<<: *env-apple-silicon
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: false
checkout: true
osx-publish-x64-skip-checkout:
executor: macos
environment:
@@ -2041,9 +2009,16 @@ jobs:
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: true
checkout: false
- run: echo running
- when:
condition:
or:
- equal: ["all", << pipeline.parameters.macos-publish-arch-limit >>]
- equal: ["osx-x64", << pipeline.parameters.macos-publish-arch-limit >>]
steps:
- electron-publish:
attach: true
checkout: false
osx-publish-arm64-skip-checkout:
executor: macos
@@ -2054,9 +2029,16 @@ jobs:
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: true
checkout: false
- run: echo running
- when:
condition:
or:
- equal: ["all", << pipeline.parameters.macos-publish-arch-limit >>]
- equal: ["osx-arm64", << pipeline.parameters.macos-publish-arch-limit >>]
steps:
- electron-publish:
attach: true
checkout: false
osx-testing-arm64:
executor: macos
@@ -2073,7 +2055,7 @@ jobs:
persist: true
checkout: false
checkout-and-assume-cache: true
attach: false
attach: true
mas-testing-x64:
executor: macos
@@ -2089,7 +2071,7 @@ jobs:
persist: true
checkout: false
checkout-and-assume-cache: true
attach: false
attach: true
mas-testing-x64-gn-check:
executor:
@@ -2100,32 +2082,6 @@ jobs:
<<: *env-mas
<<: *env-testing-build
<<: *steps-electron-gn-check
mas-publish:
executor: macos
environment:
<<: *env-mac-large-release
<<: *env-mas
<<: *env-release-build
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: false
checkout: true
mas-publish-arm64:
executor: macos
environment:
<<: *env-mac-large-release
<<: *env-mas-apple-silicon
<<: *env-release-build
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: false
checkout: true
mas-publish-x64-skip-checkout:
executor: macos
@@ -2135,9 +2091,16 @@ jobs:
<<: *env-release-build
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
steps:
- electron-publish:
attach: true
checkout: false
- run: echo running
- when:
condition:
or:
- equal: ["all", << pipeline.parameters.macos-publish-arch-limit >>]
- equal: ["mas-x64", << pipeline.parameters.macos-publish-arch-limit >>]
steps:
- electron-publish:
attach: true
checkout: false
mas-publish-arm64-skip-checkout:
executor: macos
@@ -2148,9 +2111,16 @@ jobs:
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: true
checkout: false
- run: echo running
- when:
condition:
or:
- equal: ["all", << pipeline.parameters.macos-publish-arch-limit >>]
- equal: ["mas-arm64", << pipeline.parameters.macos-publish-arch-limit >>]
steps:
- electron-publish:
attach: true
checkout: false
mas-testing-arm64:
executor: macos
@@ -2167,7 +2137,7 @@ jobs:
persist: true
checkout: false
checkout-and-assume-cache: true
attach: false
attach: true
# Layer 3: Tests.
linux-x64-unittests:
@@ -2321,6 +2291,24 @@ jobs:
<<: *env-send-slack-notifications
<<: *steps-verify-ffmpeg
linux-arm-testing-tests:
executor: linux-arm
environment:
<<: *env-arm
<<: *env-global
<<: *env-headless-testing
<<: *env-stack-dumping
<<: *steps-tests
linux-arm64-testing-tests:
executor: linux-arm64
environment:
<<: *env-arm64
<<: *env-global
<<: *env-headless-testing
<<: *env-stack-dumping
<<: *steps-tests
osx-testing-x64-tests:
executor:
name: macos
@@ -2371,12 +2359,6 @@ jobs:
workflows:
version: 2.1
# The publish workflows below each contain one job so that they are
# compatible with how sudowoodo works today. If these workflows are
# changed to have multiple jobs, then scripts/release/ci-release-build.js
# will need to be updated and there will most likely need to be changes to
# sudowoodo
publish-linux:
when: << pipeline.parameters.run-linux-publish >>
jobs:
@@ -2389,54 +2371,6 @@ workflows:
- linux-arm64-publish:
context: release-env
publish-x64-linux:
when: << pipeline.parameters.run-linux-x64-publish >>
jobs:
- linux-x64-publish:
context: release-env
publish-ia32-linux:
when: << pipeline.parameters.run-linux-ia32-publish >>
jobs:
- linux-ia32-publish:
context: release-env
publish-arm-linux:
when: << pipeline.parameters.run-linux-arm-publish >>
jobs:
- linux-arm-publish:
context: release-env
publish-arm64-linux:
when: << pipeline.parameters.run-linux-arm64-publish >>
jobs:
- linux-arm64-publish:
context: release-env
publish-osx:
when: << pipeline.parameters.run-osx-publish >>
jobs:
- osx-publish-x64:
context: release-env
publish-mas:
when: << pipeline.parameters.run-mas-publish >>
jobs:
- mas-publish:
context: release-env
publish-osx-arm64:
when: << pipeline.parameters.run-osx-publish-arm64 >>
jobs:
- osx-publish-arm64:
context: release-env
publish-mas-arm64:
when: << pipeline.parameters.run-mas-publish-arm64 >>
jobs:
- mas-publish-arm64:
context: release-env
publish-macos:
when: << pipeline.parameters.run-macos-publish >>
jobs:
@@ -2500,8 +2434,23 @@ workflows:
- linux-ia32-testing
- linux-arm-testing
- linux-arm-testing-tests:
filters:
branches:
# Do not run this on forked pull requests
ignore: /pull\/[0-9]+/
requires:
- linux-arm-testing
- linux-arm64-testing
- linux-arm64-testing-tests:
filters:
branches:
# Do not run this on forked pull requests
ignore: /pull\/[0-9]+/
requires:
- linux-arm64-testing
- linux-arm64-testing-gn-check:
requires:
- linux-checkout-for-workspace

59
.devcontainer/README.md Normal file
View File

@@ -0,0 +1,59 @@
# Electron Dev on Codespaces
Welcome to the Codespaces Electron Developer Environment.
## Quick Start
Upon creation of your codespace you should have [build tools](https://github.com/electron/build-tools) installed and an initialized gclient checkout of Electron. In order to build electron you'll need to run the following commands.
```bash
e sync -vv
e build
```
The initial sync will take approximately ~30 minutes and the build will take ~8 minutes. Incremental syncs and incremental builds are substantially quicker.
## Directory Structure
Codespaces doesn't lean very well into gclient based checkouts, the directory structure is slightly strange. There are two locations for the `electron` checkout that both map to the same files under the hood.
```graphql
# Primary gclient checkout container
/workspaces/gclient/*
src/* - # Chromium checkout
electron - # Electron checkout
# Symlinked Electron checkout (identical to the above)
/workspaces/electron
```
## Goma
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`.
## Running Electron
You can run Electron in a few ways. If you just want to see if it launches:
```bash
# Enter an interactive JS prompt headlessly
xvfb-run e start -i
```
But if you want to actually see Electron you will need to use the built-in VNC capability. If you click "Ports" in codespaces and then open the `VNC web client` forwarded port you should see a web based VNC portal in your browser. When you are asked for a password use `builduser`.
Once in the VNC UI you can open `Applications -> System -> XTerm` which will open a VNC based terminal app and then you can run `e start` like normal and Electron will open in your VNC session.
## Running Tests
You run tests via build-tools and `xvfb`.
```bash
# Run all tests
xvfb-run e test
# Run the main process tests
xvfb-run e test --runners=main
# Run the old remote tests
xvfb-run e test --runners=remote
```

View File

@@ -0,0 +1,43 @@
{
"dockerComposeFile": "docker-compose.yml",
"service": "buildtools",
"onCreateCommand": ".devcontainer/on-create-command.sh",
"workspaceFolder": "/workspaces/gclient/src/electron",
"extensions": [
"joeleinbinder.mojom-language",
"rafaelmaiolla.diff",
"surajbarkale.ninja",
"ms-vscode.cpptools",
"mutantdino.resourcemonitor",
"dbaeumer.vscode-eslint",
"shakram02.bash-beautify",
"marshallofsound.gnls-electron"
],
"settings": {
"[gn]": {
"editor.formatOnSave": true
},
"editor.tabSize": 2,
"bashBeautify.tabSize": 2
},
"forwardPorts": [8088, 6080, 5901],
"portsAttributes": {
"8088": {
"label": "Goma Control Panel",
"onAutoForward": "silent"
},
"6080": {
"label": "VNC web client (noVNC)",
"onAutoForward": "silent"
},
"5901": {
"label": "VNC TCP port",
"onAutoForward": "silent"
}
},
"hostRequirements": {
"storage": "32gb",
"cpus": 8
},
"remoteUser": "builduser"
}

View File

@@ -0,0 +1,19 @@
version: '3'
services:
buildtools:
image: ghcr.io/electron/devcontainer:27db4a3e3512bfd2e47f58cea69922da0835f1d9
volumes:
- ..:/workspaces/gclient/src/electron:cached
- /var/run/docker.sock:/var/run/docker.sock
command: /bin/sh -c "while sleep 1000; do :; done"
user: builduser
cap_add:
- SYS_PTRACE
security_opt:
- seccomp:unconfined

View File

@@ -0,0 +1,74 @@
#!/bin/bash
set -eo pipefail
buildtools=$HOME/.electron_build_tools
gclient_root=/workspaces/gclient
buildtools_configs=/workspaces/buildtools-configs
export PATH="$PATH:$buildtools/src"
# Create the persisted buildtools config folder
mkdir -p $buildtools_configs
rm -f $buildtools/configs
ln -s $buildtools_configs $buildtools/configs
# Write the gclient config if it does not already exist
if [ ! -f $gclient_root/.gclient ]; then
echo "solutions = [
{ \"name\" : \"src/electron\",
\"url\" : \"https://github.com/electron/electron\",
\"deps_file\" : \"DEPS\",
\"managed\" : False,
\"custom_deps\" : {
},
\"custom_vars\": {},
},
]
" >$gclient_root/.gclient
fi
# Write the default buildtools config file if it does
# not already exist
if [ ! -f $buildtools/configs/evm.testing.json ]; then
write_config() {
echo "
{
\"root\": \"/workspaces/gclient\",
\"goma\": \"$1\",
\"gen\": {
\"args\": [
\"import(\\\"//electron/build/args/testing.gn\\\")\",
\"import(\\\"/home/builduser/.electron_build_tools/third_party/goma.gn\\\")\"
],
\"out\": \"Testing\"
},
\"env\": {
\"CHROMIUM_BUILDTOOLS_PATH\": \"/workspaces/gclient/src/buildtools\",
\"GIT_CACHE_PATH\": \"/workspaces/gclient/.git-cache\"
},
\"remotes\": {
\"electron\": {
\"origin\": \"https://github.com/electron/electron.git\"
}
}
}
" >$buildtools/configs/evm.testing.json
}
# Start out as cache only
write_config cache-only
e use testing
# Attempt to auth to the goma service via codespaces tokens
# if it works we can use the goma cluster
export NOTGOMA_CODESPACES_TOKEN=$GITHUB_TOKEN
if e d goma_auth login; then
write_config cluster
fi
else
# Even if the config file existed we still need to re-auth with the goma
# cluster
NOTGOMA_CODESPACES_TOKEN=$GITHUB_TOKEN e d goma_auth login || true
fi

1
.github/CODEOWNERS vendored
View File

@@ -16,3 +16,4 @@ DEPS @electron/wg-upgrades
/lib/browser/guest-view-manager.ts @electron/wg-security
/lib/browser/guest-window-proxy.ts @electron/wg-security
/lib/browser/rpc-server.ts @electron/wg-security
/lib/renderer/security-warnings.ts @electron/wg-security

View File

@@ -8,9 +8,9 @@ body:
label: Preflight Checklist
description: Please ensure you've completed all of the following.
options:
- label: I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md) for this project.
- label: I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/main/CONTRIBUTING.md) for this project.
required: true
- label: I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) that this project adheres to.
- label: I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/main/CODE_OF_CONDUCT.md) that this project adheres to.
required: true
- label: I have searched the [issue tracker](https://www.github.com/electron/electron/issues) for a feature request that matches the one I want to file, without success.
required: true

View File

@@ -8,9 +8,9 @@ body:
label: Preflight Checklist
description: Please ensure you've completed all of the following.
options:
- label: I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md) for this project.
- label: I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/main/CONTRIBUTING.md) for this project.
required: true
- label: I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) that this project adheres to.
- label: I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/main/CODE_OF_CONDUCT.md) that this project adheres to.
required: true
- label: I have searched the [issue tracker](https://www.github.com/electron/electron/issues) for a feature request that matches the one I want to file, without success.
required: true
@@ -37,4 +37,4 @@ body:
label: Additional Information
description: Add any other context about the problem here.
validations:
required: true
required: false

View File

@@ -7,9 +7,9 @@ body:
label: Preflight Checklist
description: Please ensure you've completed all of the following.
options:
- label: I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/master/CONTRIBUTING.md) for this project.
- label: I have read the [Contributing Guidelines](https://github.com/electron/electron/blob/main/CONTRIBUTING.md) for this project.
required: true
- label: I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) that this project adheres to.
- label: I agree to follow the [Code of Conduct](https://github.com/electron/electron/blob/main/CODE_OF_CONDUCT.md) that this project adheres to.
required: true
- type: input
attributes:

View File

@@ -3,7 +3,7 @@
Thank you for your Pull Request. Please provide a description above and review
the requirements below.
Contributors guide: https://github.com/electron/electron/blob/master/CONTRIBUTING.md
Contributors guide: https://github.com/electron/electron/blob/main/CONTRIBUTING.md
-->
#### Checklist
@@ -11,7 +11,7 @@ Contributors guide: https://github.com/electron/electron/blob/master/CONTRIBUTIN
- [ ] PR description included and stakeholders cc'd
- [ ] `npm test` passes
- [ ] tests are [changed or added](https://github.com/electron/electron/blob/master/docs/development/testing.md)
- [ ] tests are [changed or added](https://github.com/electron/electron/blob/main/docs/development/testing.md)
- [ ] relevant documentation is changed or added
- [ ] [PR release notes](https://github.com/electron/clerk/blob/master/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/master/README.md#examples).

6
.github/config.yml vendored
View File

@@ -2,7 +2,7 @@
newPRWelcomeComment: |
💖 Thanks for opening this pull request! 💖
We use [semantic commit messages](https://github.com/electron/electron/blob/master/docs/development/pull-requests.md#commit-message-guidelines) to streamline the release process. Before your pull request can be merged, you should **update your pull request title** to start with a semantic prefix.
We use [semantic commit messages](https://github.com/electron/electron/blob/main/docs/development/pull-requests.md#commit-message-guidelines) to streamline the release process. Before your pull request can be merged, you should **update your pull request title** to start with a semantic prefix.
Examples of commit messages with semantic prefixes:
@@ -12,9 +12,9 @@ newPRWelcomeComment: |
Things that will help get your PR across the finish line:
- Follow the JavaScript, C++, and Python [coding style](https://github.com/electron/electron/blob/master/docs/development/coding-style.md).
- Follow the JavaScript, C++, and Python [coding style](https://github.com/electron/electron/blob/main/docs/development/coding-style.md).
- Run `npm run lint` locally to catch formatting errors earlier.
- Document any user-facing changes you've made following the [documentation styleguide](https://github.com/electron/electron/blob/master/docs/styleguide.md).
- Document any user-facing changes you've made following the [documentation styleguide](https://github.com/electron/electron/blob/main/docs/styleguide.md).
- Include tests when adding/changing behavior.
- Include screenshots and animated GIFs whenever possible.

1
.gitignore vendored
View File

@@ -26,6 +26,7 @@ compile_commands.json
# npm package
/npm/dist
/npm/path.txt
/npm/checksums.json
.npmrc

View File

@@ -22,5 +22,8 @@
"no-trailing-spaces": {
"br_spaces": 0
},
"single-h1": false
"single-h1": false,
"no-inline-html": {
"allowed_elements": ["br"]
}
}

1
.nvmrc Normal file
View File

@@ -0,0 +1 @@
14

View File

@@ -1,6 +1,7 @@
import("//build/config/locales.gni")
import("//build/config/ui.gni")
import("//build/config/win/manifest.gni")
import("//components/os_crypt/features.gni")
import("//components/spellcheck/spellcheck_build_features.gni")
import("//content/public/app/mac_helpers.gni")
import("//extensions/buildflags/buildflags.gni")
@@ -186,6 +187,12 @@ action("electron_js2c") {
rebase_path(sources, root_build_dir)
}
action("generate_config_gypi") {
outputs = [ "$root_gen_dir/config.gypi" ]
script = "script/generate-config-gypi.py"
args = rebase_path(outputs) + [ target_cpu ]
}
target_gen_default_app_js = "$target_gen_dir/js/default_app"
typescript_build("default_app_js") {
@@ -296,7 +303,7 @@ templated_file("electron_version_header") {
action("electron_fuses") {
script = "build/fuses/build.py"
inputs = [ "build/fuses/fuses.json" ]
inputs = [ "build/fuses/fuses.json5" ]
outputs = [
"$target_gen_dir/fuses.h",
@@ -306,6 +313,23 @@ action("electron_fuses") {
args = rebase_path(outputs)
}
action("electron_generate_node_defines") {
script = "build/generate_node_defines.py"
inputs = [
"//third_party/electron_node/src/tracing/trace_event_common.h",
"//third_party/electron_node/src/tracing/trace_event.h",
"//third_party/electron_node/src/util.h",
]
outputs = [
"$target_gen_dir/push_and_undef_node_defines.h",
"$target_gen_dir/pop_node_defines.h",
]
args = [ rebase_path(target_gen_dir) ] + rebase_path(inputs)
}
source_set("electron_lib") {
configs += [ "//v8:external_startup_data" ]
configs += [ "//third_party/electron_node:node_internals" ]
@@ -317,6 +341,7 @@ source_set("electron_lib") {
deps = [
":electron_fuses",
":electron_generate_node_defines",
":electron_js2c",
":electron_version_header",
":resources",
@@ -328,6 +353,7 @@ source_set("electron_lib") {
"//base/allocator:buildflags",
"//chrome/app:command_ids",
"//chrome/app/resources:platform_locale_settings",
"//components/autofill/core/common:features",
"//components/certificate_transparency",
"//components/language/core/browser",
"//components/net_log",
@@ -335,6 +361,7 @@ source_set("electron_lib") {
"//components/network_hints/common:mojo_bindings",
"//components/network_hints/renderer",
"//components/network_session_configurator/common",
"//components/os_crypt",
"//components/pref_registry",
"//components/prefs",
"//components/security_state/content",
@@ -350,7 +377,6 @@ source_set("electron_lib") {
"//device/bluetooth",
"//device/bluetooth/public/cpp",
"//gin",
"//media/blink:blink",
"//media/capture/mojom:video_capture",
"//media/mojo/mojom",
"//net:extras",
@@ -360,6 +386,7 @@ source_set("electron_lib") {
"//ppapi/shared_impl",
"//printing/buildflags",
"//services/device/public/cpp/geolocation",
"//services/device/public/cpp/hid",
"//services/device/public/mojom",
"//services/proxy_resolver:lib",
"//services/video_capture/public/mojom:constants",
@@ -367,6 +394,7 @@ source_set("electron_lib") {
"//skia",
"//third_party/blink/public:blink",
"//third_party/blink/public:blink_devtools_inspector_resources",
"//third_party/blink/public/platform/media",
"//third_party/boringssl",
"//third_party/electron_node:node_lib",
"//third_party/inspector_protocol:crdtp",
@@ -392,7 +420,6 @@ source_set("electron_lib") {
]
include_dirs = [
"chromium_src",
".",
"$target_gen_dir",
@@ -526,8 +553,9 @@ source_set("electron_lib") {
"GLIB_DISABLE_DEPRECATION_WARNINGS",
]
sources += filenames.lib_sources_nss
sources += [
"shell/browser/certificate_manager_model.cc",
"shell/browser/certificate_manager_model.h",
"shell/browser/ui/gtk/app_indicator_icon.cc",
"shell/browser/ui/gtk/app_indicator_icon.h",
"shell/browser/ui/gtk/app_indicator_icon_menu.cc",
@@ -684,6 +712,10 @@ source_set("electron_lib") {
]
libs += [ "uxtheme.lib" ]
}
if (allow_runtime_configurable_key_storage) {
defines += [ "ALLOW_RUNTIME_CONFIGURABLE_KEY_STORAGE" ]
}
}
electron_paks("packed_resources") {
@@ -1000,6 +1032,12 @@ if (is_mac) {
outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
}
asar_hashed_info_plist("electron_app_plist") {
keys = [ "DEFAULT_APP_ASAR_HEADER_SHA" ]
hash_targets = [ ":default_app_asar_header_hash" ]
plist_file = "shell/browser/resources/mac/Info.plist"
}
mac_app_bundle("electron_app") {
output_name = electron_product_name
sources = filenames.app_sources
@@ -1007,6 +1045,7 @@ if (is_mac) {
include_dirs = [ "." ]
deps = [
":electron_app_framework_bundle_data",
":electron_app_plist",
":electron_app_resources",
":electron_fuses",
"//base",
@@ -1015,7 +1054,7 @@ if (is_mac) {
if (is_mas_build) {
deps += [ ":electron_login_helper_app" ]
}
info_plist = "shell/browser/resources/mac/Info.plist"
info_plist_target = ":electron_app_plist"
extra_substitutions = [
"ELECTRON_BUNDLE_ID=$electron_mac_bundle_id",
"ELECTRON_VERSION=$electron_version",
@@ -1125,6 +1164,7 @@ if (is_mac) {
]
data = []
data_deps = []
data += [ "$root_out_dir/resources.pak" ]
data += [ "$root_out_dir/chrome_100_percent.pak" ]
@@ -1143,6 +1183,10 @@ if (is_mac) {
public_deps = [ "//tools/v8_context_snapshot:v8_context_snapshot" ]
}
if (is_linux) {
data_deps += [ "//components/crash/core/app:chrome_crashpad_handler" ]
}
if (is_win) {
sources += [
# TODO: we should be generating our .rc files more like how chrome does
@@ -1398,7 +1442,8 @@ dist_zip("hunspell_dictionaries_zip") {
}
copy("libcxx_headers") {
sources = libcxx_headers + libcxx_licenses
sources = libcxx_headers + libcxx_licenses +
[ "//buildtools/third_party/libc++/__config_site" ]
outputs = [ "$target_gen_dir/electron_libcxx_include/{{source_root_relative_dir}}/{{source_file_part}}" ]
}

View File

@@ -22,7 +22,7 @@ Issues are created [here](https://github.com/electron/electron/issues/new).
### Issue Closure
Bug reports will be closed if the issue has been inactive and the latest affected version no longer receives support. At the moment, Electron maintains its three latest major versions, with a new major version being released every 12 weeks. (For more information on Electron's release cadence, see [this blog post](https://electronjs.org/blog/12-week-cadence).)
Bug reports will be closed if the issue has been inactive and the latest affected version no longer receives support. At the moment, Electron maintains its three latest major versions, with a new major version being released every 8 weeks. (For more information on Electron's release cadence, see [this blog post](https://electronjs.org/blog/8-week-cadence).)
_If an issue has been closed and you still feel it's relevant, feel free to ping a maintainer or add a comment!_
@@ -36,7 +36,7 @@ Having the original text _as well as_ the translation can help mitigate translat
Responses to posted issues may or may not be in the original language.
**Please note** that using non-English as an attempt to circumvent our [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md) will be an immediate, and possibly indefinite, ban from the project.
**Please note** that using non-English as an attempt to circumvent our [Code of Conduct](https://github.com/electron/electron/blob/main/CODE_OF_CONDUCT.md) will be an immediate, and possibly indefinite, ban from the project.
## [Pull Requests](https://electronjs.org/docs/development/pull-requests)

14
DEPS
View File

@@ -10,17 +10,21 @@ gclient_gn_args = [
'checkout_openxr',
'checkout_google_benchmark',
'mac_xcode_version',
'generate_location_tags',
]
vars = {
'chromium_version':
'92.0.4511.0',
'96.0.4664.35',
'node_version':
'v14.17.0',
'v16.9.1',
'nan_version':
'v2.14.2',
# The following commit hash of NAN is v2.14.2 with *only* changes to the
# test suite. This should be updated to a specific tag when one becomes
# available.
'65b32af46e9d7fab2e4ff657751205b3865f4920',
'squirrel.mac_version':
'cdc0729c8bf8576bfef18629186e1e9ecf1b0d9f',
'0e5d146ba13101a1302d59ea6e6e0b3cace4ae38',
'pyyaml_version': '3.12',
@@ -52,6 +56,8 @@ vars = {
'mac_xcode_version': 'default',
'generate_location_tags': False,
# To allow running hooks without parsing the DEPS tree
'process_deps': True,

View File

@@ -1 +1 @@
14.0.0-nightly.20210524
16.0.0-beta.8

View File

@@ -1,8 +1,7 @@
[![Electron Logo](https://electronjs.org/images/electron-logo.svg)](https://electronjs.org)
[![CircleCI Build Status](https://circleci.com/gh/electron/electron/tree/master.svg?style=shield)](https://circleci.com/gh/electron/electron/tree/master)
[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/4lggi9dpjc1qob7k/branch/master?svg=true)](https://ci.appveyor.com/project/electron-bot/electron-ljo26/branch/master)
[![devDependency Status](https://david-dm.org/electron/electron/dev-status.svg)](https://david-dm.org/electron/electron?type=dev)
[![CircleCI Build Status](https://circleci.com/gh/electron/electron/tree/main.svg?style=shield)](https://circleci.com/gh/electron/electron/tree/main)
[![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.com/invite/electron)
:memo: Available Translations: 🇨🇳 🇧🇷 🇪🇸 🇯🇵 🇷🇺 🇫🇷 🇺🇸 🇩🇪.
@@ -17,7 +16,7 @@ Follow [@ElectronJS](https://twitter.com/electronjs) on Twitter for important
announcements.
This project adheres to the Contributor Covenant
[code of conduct](https://github.com/electron/electron/tree/master/CODE_OF_CONDUCT.md).
[code of conduct](https://github.com/electron/electron/tree/main/CODE_OF_CONDUCT.md).
By participating, you are expected to uphold this code. Please report unacceptable
behavior to [coc@electronjs.org](mailto:coc@electronjs.org).
@@ -61,7 +60,6 @@ npm start
- [electronjs.org/community#boilerplates](https://electronjs.org/community#boilerplates) - Sample starter apps created by the community
- [electron/simple-samples](https://github.com/electron/simple-samples) - Small applications with ideas for taking them further
- [electron/electron-api-demos](https://github.com/electron/electron-api-demos) - An Electron app that teaches you how to use Electron
- [hokein/electron-sample-apps](https://github.com/hokein/electron-sample-apps) - Small demo apps for the various Electron APIs
## Programmatic usage
@@ -99,6 +97,6 @@ and more can be found in the [support document](docs/tutorial/support.md#finding
## License
[MIT](https://github.com/electron/electron/blob/master/LICENSE)
[MIT](https://github.com/electron/electron/blob/main/LICENSE)
When using the Electron or other GitHub logos, be sure to follow the [GitHub logo guidelines](https://github.com/logos).

View File

@@ -10,7 +10,7 @@ Report security bugs in third-party modules to the person or team maintaining th
## The Electron Security Notification Process
For context on Electron's security notification process, please see the [Notifications](https://github.com/electron/governance/blob/master/wg-security/membership-and-notifications.md#notifications) section of the Security WG's [Membership and Notifications](https://github.com/electron/governance/blob/master/wg-security/membership-and-notifications.md) Governance document.
For context on Electron's security notification process, please see the [Notifications](https://github.com/electron/governance/blob/main/wg-security/membership-and-notifications.md#notifications) section of the Security WG's [Membership and Notifications](https://github.com/electron/governance/blob/main/wg-security/membership-and-notifications.md) Governance document.
## Learning More About Security

View File

@@ -112,7 +112,7 @@ build_script:
}
}
}
- if "%RUN_GCLIENT_SYNC%"=="true" ( gclient sync --with_branch_heads --with_tags --ignore_locks)
- if "%RUN_GCLIENT_SYNC%"=="true" ( gclient sync )
- ps: >-
if ($env:SAVE_GCLIENT_SRC -eq 'true') {
# archive current source for future use

View File

@@ -53,6 +53,22 @@ steps:
env:
APPVEYOR_TOKEN: $(APPVEYOR_TOKEN)
- powershell: |
try {
$localArtifactPath = "$pwd\src\pdb.zip"
$serverArtifactPath = "$env:APPVEYOR_URL/buildjobs/$env:APPVEYOR_JOB_ID/artifacts/pdb.zip"
Invoke-RestMethod -Method Get -Uri $serverArtifactPath -OutFile $localArtifactPath -Headers @{ "Authorization" = "Bearer $env:APPVEYOR_TOKEN" }
cd src
& "${env:ProgramFiles(x86)}\7-Zip\7z.exe" x -y pdb.zip
} catch {
Write-Host "There was an exception encountered while downloading pdb files:" $_.Exception.Message
} finally {
$global:LASTEXITCODE = 0
}
displayName: 'Download pdb files for detailed stacktraces'
env:
APPVEYOR_TOKEN: $(APPVEYOR_TOKEN)
- powershell: |
New-Item src\out\Default\gen\node_headers\Release -Type directory
Copy-Item -path src\out\Default\electron.lib -destination src\out\Default\gen\node_headers\Release\node.lib
@@ -63,15 +79,30 @@ steps:
set npm_config_nodedir=%cd%\out\Default\gen\node_headers
set npm_config_arch=arm64
cd electron
# CalculateNativeWinOcclusion is disabled due to https://bugs.chromium.org/p/chromium/issues/detail?id=1139022
node script/yarn test -- --enable-logging --verbose --disable-features=CalculateNativeWinOcclusion
displayName: 'Run Electron tests'
node script/yarn test --runners=main --runTestFilesSeperately --enable-logging --disable-features=CalculateNativeWinOcclusion
displayName: 'Run Electron Main process tests'
env:
ELECTRON_ENABLE_STACK_DUMPING: true
ELECTRON_OUT_DIR: Default
IGNORE_YARN_INSTALL_ERROR: 1
ELECTRON_TEST_RESULTS_DIR: junit
MOCHA_MULTI_REPORTERS: 'mocha-junit-reporter, tap'
MOCHA_REPORTER: mocha-multi-reporters
- script: |
cd src
set npm_config_nodedir=%cd%\out\Default\gen\node_headers
set npm_config_arch=arm64
cd electron
node script/yarn test --runners=remote --enable-logging --disable-features=CalculateNativeWinOcclusion
displayName: 'Run Electron Remote based tests'
env:
ELECTRON_OUT_DIR: Default
IGNORE_YARN_INSTALL_ERROR: 1
ELECTRON_TEST_RESULTS_DIR: junit
MOCHA_MULTI_REPORTERS: 'mocha-junit-reporter, tap'
MOCHA_REPORTER: mocha-multi-reporters
condition: always()
- task: PublishTestResults@2
displayName: 'Publish Test Results'

View File

@@ -2,7 +2,7 @@ is_electron_build = true
root_extra_deps = [ "//electron" ]
# Registry of NMVs --> https://github.com/nodejs/node/blob/master/doc/abi_version_registry.json
node_module_version = 89
node_module_version = 99
v8_promise_internal_field_count = 1
v8_typed_array_max_size_in_heap = 0
@@ -29,4 +29,7 @@ enable_pseudolocales = false
is_cfi = false
enable_pak_file_integrity_checks = false
# Make application name configurable at runtime for cookie crypto
allow_runtime_configurable_key_storage = true
enable_cet_shadow_stack = false

View File

@@ -57,4 +57,42 @@ template("asar") {
rebase_path(outputs[0]),
]
}
node_action(target_name + "_header_hash") {
invoker_out = invoker.outputs
deps = [ ":" + invoker.target_name ]
sources = invoker.outputs
script = "//electron/script/gn-asar-hash.js"
outputs = [ "$target_gen_dir/asar_hashes/$target_name.hash" ]
args = [
rebase_path(invoker_out[0]),
rebase_path(outputs[0]),
]
}
}
template("asar_hashed_info_plist") {
node_action(target_name) {
assert(defined(invoker.plist_file),
"Need plist_file to add hashed assets to")
assert(defined(invoker.keys), "Need keys to replace with asset hash")
assert(defined(invoker.hash_targets), "Need hash_targets to read hash from")
deps = invoker.hash_targets
script = "//electron/script/gn-plist-but-with-hashes.js"
inputs = [ invoker.plist_file ]
outputs = [ "$target_gen_dir/hashed_plists/$target_name.plist" ]
hash_files = []
foreach(hash_target, invoker.hash_targets) {
hash_files += get_target_outputs(hash_target)
}
args = [
rebase_path(invoker.plist_file),
rebase_path(outputs[0]),
] + invoker.keys + rebase_path(hash_files)
}
}

View File

@@ -1,5 +1,6 @@
#!/usr/bin/env python3
from collections import OrderedDict
import json
import os
import sys
@@ -49,8 +50,8 @@ const volatile char kFuseWire[] = { /* sentinel */ {sentinel}, /* fuse_version *
}
"""
with open(os.path.join(dir_path, "fuses.json"), 'r') as f:
fuse_defaults = json.load(f)
with open(os.path.join(dir_path, "fuses.json5"), 'r') as f:
fuse_defaults = json.loads(''.join(line for line in f.readlines() if not line.strip()[0] == "/"), object_pairs_hook=OrderedDict)
fuse_version = fuse_defaults['_version']
del fuse_defaults['_version']

View File

@@ -2,5 +2,10 @@
"_comment": "Modifying the fuse schema in any breaking way should result in the _version prop being incremented. NEVER remove a fuse or change its meaning, instead mark it as removed with 'r'",
"_schema": "0 == off, 1 == on, r == removed fuse",
"_version": 1,
"run_as_node": "1"
"run_as_node": "1",
"cookie_encryption": "0",
"node_options": "1",
"node_cli_inspect": "1",
"embedded_asar_integrity_validation": "0",
"only_load_app_from_asar": "0"
}

34
build/generate_node_defines.py Executable file
View File

@@ -0,0 +1,34 @@
import os
import re
import sys
DEFINE_EXTRACT_REGEX = re.compile('^ *# *define (\w*)', re.MULTILINE)
def main(outDir, headers):
defines = []
for filename in headers:
with open(filename, 'r') as f:
content = f.read()
defines += read_defines(content)
push_and_undef = ''
for define in defines:
push_and_undef += '#pragma push_macro("%s")\n' % define
push_and_undef += '#undef %s\n' % define
with open(os.path.join(outDir, 'push_and_undef_node_defines.h'), 'w') as o:
o.write(push_and_undef)
pop = ''
for define in defines:
pop += '#pragma pop_macro("%s")\n' % define
with open(os.path.join(outDir, 'pop_node_defines.h'), 'w') as o:
o.write(pop)
def read_defines(content):
defines = []
for match in DEFINE_EXTRACT_REGEX.finditer(content):
defines.append(match.group(1))
return defines
if __name__ == '__main__':
main(sys.argv[1], sys.argv[2:])

View File

@@ -16,5 +16,5 @@ try:
subprocess.check_output(args, stderr=subprocess.STDOUT)
except subprocess.CalledProcessError as e:
error_msg = "NPM script '{}' failed with code '{}':\n".format(sys.argv[2], e.returncode)
print(error_msg + e.output.decode('ascii'))
print(error_msg + e.output.decode('utf8'))
sys.exit(e.returncode)

View File

@@ -5,8 +5,8 @@ template("npm_action") {
action("npm_pre_flight_" + target_name) {
inputs = [
"package.json",
"yarn.lock",
"//electron/package.json",
"//electron/yarn.lock",
]
script = "//electron/build/npm-run.py"

View File

@@ -36,7 +36,7 @@ template("webpack_build") {
rebase_path("$target_gen_dir/buildflags/buildflags.h"),
"--env.mode=" + mode,
]
deps += [ "buildflags" ]
deps += [ "//electron/buildflags" ]
outputs = [ invoker.out_file ]
}

View File

@@ -31,12 +31,6 @@ PATHS_TO_SKIP = [
# //chrome/browser/resources/ssl/ssl_error_assistant, but we don't need to
# ship it.
'pyproto',
# On Windows, this binary doesn't exist (the crashpad handler is built-in).
# On MacOS, the binary is called 'chrome_crashpad_handler' and is inside the
# app bundle.
# On Linux, we don't use crashpad, but this binary is still built for some
# reason. Exclude it from the zip.
'./crashpad_handler',
# Skip because these are outputs that we don't need.
'resources/inspector',
'gen/third_party/devtools-frontend/src',

View File

@@ -15,14 +15,19 @@ static_library("chrome") {
sources = [
"//chrome/browser/accessibility/accessibility_ui.cc",
"//chrome/browser/accessibility/accessibility_ui.h",
"//chrome/browser/app_mode/app_mode_utils.cc",
"//chrome/browser/app_mode/app_mode_utils.h",
"//chrome/browser/browser_process.cc",
"//chrome/browser/browser_process.h",
"//chrome/browser/devtools/devtools_contents_resizing_strategy.cc",
"//chrome/browser/devtools/devtools_contents_resizing_strategy.h",
"//chrome/browser/devtools/devtools_embedder_message_dispatcher.cc",
"//chrome/browser/devtools/devtools_embedder_message_dispatcher.h",
"//chrome/browser/devtools/devtools_eye_dropper.cc",
"//chrome/browser/devtools/devtools_eye_dropper.h",
"//chrome/browser/devtools/devtools_file_system_indexer.cc",
"//chrome/browser/devtools/devtools_file_system_indexer.h",
"//chrome/browser/devtools/devtools_settings.h",
"//chrome/browser/extensions/global_shortcut_listener.cc",
"//chrome/browser/extensions/global_shortcut_listener.h",
"//chrome/browser/icon_loader.cc",
@@ -35,6 +40,8 @@ static_library("chrome") {
"//chrome/browser/net/proxy_config_monitor.h",
"//chrome/browser/net/proxy_service_factory.cc",
"//chrome/browser/net/proxy_service_factory.h",
"//chrome/browser/platform_util.cc",
"//chrome/browser/platform_util.h",
"//chrome/browser/predictors/preconnect_manager.cc",
"//chrome/browser/predictors/preconnect_manager.h",
"//chrome/browser/predictors/predictors_features.cc",
@@ -43,12 +50,37 @@ static_library("chrome") {
"//chrome/browser/predictors/proxy_lookup_client_impl.h",
"//chrome/browser/predictors/resolve_host_client_impl.cc",
"//chrome/browser/predictors/resolve_host_client_impl.h",
"//chrome/browser/process_singleton.h",
"//chrome/browser/ui/browser_dialogs.cc",
"//chrome/browser/ui/browser_dialogs.h",
"//chrome/browser/ui/exclusive_access/exclusive_access_bubble_type.cc",
"//chrome/browser/ui/exclusive_access/exclusive_access_bubble_type.h",
"//chrome/browser/ui/exclusive_access/exclusive_access_controller_base.cc",
"//chrome/browser/ui/exclusive_access/exclusive_access_controller_base.h",
"//chrome/browser/ui/exclusive_access/exclusive_access_manager.cc",
"//chrome/browser/ui/exclusive_access/exclusive_access_manager.h",
"//chrome/browser/ui/exclusive_access/fullscreen_controller.cc",
"//chrome/browser/ui/exclusive_access/fullscreen_controller.h",
"//chrome/browser/ui/exclusive_access/fullscreen_within_tab_helper.cc",
"//chrome/browser/ui/exclusive_access/fullscreen_within_tab_helper.h",
"//chrome/browser/ui/exclusive_access/keyboard_lock_controller.cc",
"//chrome/browser/ui/exclusive_access/keyboard_lock_controller.h",
"//chrome/browser/ui/exclusive_access/mouse_lock_controller.cc",
"//chrome/browser/ui/exclusive_access/mouse_lock_controller.h",
"//chrome/browser/ui/views/autofill/autofill_popup_view_utils.cc",
"//chrome/browser/ui/views/autofill/autofill_popup_view_utils.h",
"//chrome/browser/ui/views/eye_dropper/eye_dropper.cc",
"//chrome/browser/ui/views/eye_dropper/eye_dropper.h",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view.cc",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view.h",
"//extensions/browser/app_window/size_constraints.cc",
"//extensions/browser/app_window/size_constraints.h",
]
if (is_posix) {
sources += [ "//chrome/browser/process_singleton_posix.cc" ]
}
if (is_mac) {
sources += [
"//chrome/browser/extensions/global_shortcut_listener_mac.h",
@@ -56,6 +88,10 @@ static_library("chrome") {
"//chrome/browser/icon_loader_mac.mm",
"//chrome/browser/media/webrtc/system_media_capture_permissions_mac.h",
"//chrome/browser/media/webrtc/system_media_capture_permissions_mac.mm",
"//chrome/browser/media/webrtc/window_icon_util_mac.mm",
"//chrome/browser/process_singleton_mac.mm",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view_mac.h",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view_mac.mm",
]
}
@@ -64,13 +100,29 @@ static_library("chrome") {
"//chrome/browser/extensions/global_shortcut_listener_win.cc",
"//chrome/browser/extensions/global_shortcut_listener_win.h",
"//chrome/browser/icon_loader_win.cc",
"//chrome/browser/media/webrtc/window_icon_util_win.cc",
"//chrome/browser/process_singleton_win.cc",
"//chrome/browser/ui/frame/window_frame_util.h",
"//chrome/browser/ui/view_ids.h",
"//chrome/browser/win/chrome_process_finder.cc",
"//chrome/browser/win/chrome_process_finder.h",
"//chrome/browser/win/titlebar_config.h",
"//chrome/child/v8_crashpad_support_win.cc",
"//chrome/child/v8_crashpad_support_win.h",
]
}
if (is_linux) {
sources += [ "//chrome/browser/media/webrtc/window_icon_util_ozone.cc" ]
}
if (use_aura) {
sources += [
"//chrome/browser/platform_util_aura.cc",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view_aura.cc",
]
}
public_deps = [
"//chrome/browser:dev_ui_browser_resources",
"//chrome/common",
@@ -78,28 +130,22 @@ static_library("chrome") {
"//components/keyed_service/content",
"//components/paint_preview/buildflags",
"//components/proxy_config",
"//components/services/language_detection/public/mojom",
"//content/public/browser",
"//services/strings",
]
deps = [
"//chrome/browser:resource_prefetch_predictor_proto",
"//chrome/services/speech:buildflags",
"//components/optimization_guide/proto:optimization_guide_proto",
]
if (enable_basic_printing && is_win) {
deps += [ "//chrome/common:cloud_print_utility_mojom" ]
}
if (is_linux) {
sources += [ "//chrome/browser/icon_loader_auralinux.cc" ]
if (use_x11 || use_ozone) {
sources +=
[ "//chrome/browser/extensions/global_shortcut_listener_linux.cc" ]
}
if (use_x11) {
sources += [
"//chrome/browser/extensions/global_shortcut_listener_x11.cc",
"//chrome/browser/extensions/global_shortcut_listener_x11.h",
]
}
if (use_ozone) {
deps += [ "//ui/ozone" ]
sources += [
@@ -129,6 +175,7 @@ static_library("chrome") {
if (enable_desktop_capturer) {
sources += [
"//chrome/browser/media/webrtc/desktop_media_list.cc",
"//chrome/browser/media/webrtc/desktop_media_list.h",
"//chrome/browser/media/webrtc/desktop_media_list_base.cc",
"//chrome/browser/media/webrtc/desktop_media_list_base.h",
@@ -140,62 +187,6 @@ static_library("chrome") {
deps += [ "//ui/snapshot" ]
}
if (enable_color_chooser) {
sources += [
"//chrome/browser/platform_util.cc",
"//chrome/browser/platform_util.h",
"//chrome/browser/ui/browser_dialogs.h",
"//chrome/browser/ui/color_chooser.h",
"//chrome/browser/ui/views/eye_dropper/eye_dropper.cc",
"//chrome/browser/ui/views/eye_dropper/eye_dropper.h",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view.cc",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view.h",
]
if (use_aura) {
sources += [
"//chrome/browser/platform_util_aura.cc",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view_aura.cc",
]
if (!is_win) {
sources += [
"//chrome/browser/ui/views/color_chooser_aura.cc",
"//chrome/browser/ui/views/color_chooser_aura.h",
]
}
deps += [ "//components/feature_engagement" ]
}
if (is_mac) {
sources += [
"//chrome/browser/media/webrtc/window_icon_util_mac.mm",
"//chrome/browser/ui/cocoa/color_chooser_mac.h",
"//chrome/browser/ui/cocoa/color_chooser_mac.mm",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view_mac.h",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view_mac.mm",
]
deps += [
"//components/remote_cocoa/app_shim",
"//components/remote_cocoa/browser",
]
}
if (is_win) {
sources += [
"//chrome/browser/media/webrtc/window_icon_util_win.cc",
"//chrome/browser/ui/views/color_chooser_dialog.cc",
"//chrome/browser/ui/views/color_chooser_dialog.h",
"//chrome/browser/ui/views/color_chooser_win.cc",
]
}
if (is_linux) {
sources += [ "//chrome/browser/media/webrtc/window_icon_util_linux.cc" ]
}
}
if (enable_widevine) {
sources += [
"//chrome/renderer/media/chrome_key_systems.cc",
@@ -222,6 +213,13 @@ static_library("chrome") {
"//chrome/browser/printing/printing_service.h",
]
if (enable_oop_printing) {
sources += [
"//chrome/browser/printing/print_backend_service_manager.cc",
"//chrome/browser/printing/print_backend_service_manager.h",
]
}
public_deps += [
"//chrome/services/printing:lib",
"//components/printing/browser",
@@ -229,6 +227,7 @@ static_library("chrome") {
"//components/services/print_compositor",
"//components/services/print_compositor/public/cpp",
"//components/services/print_compositor/public/mojom",
"//printing/backend",
]
deps += [
@@ -340,17 +339,13 @@ source_set("plugins") {
sources += [
"//chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc",
"//chrome/renderer/pepper/chrome_renderer_pepper_host_factory.h",
"//chrome/renderer/pepper/pepper_flash_font_file_host.cc",
"//chrome/renderer/pepper/pepper_flash_font_file_host.h",
"//chrome/renderer/pepper/pepper_shared_memory_message_filter.cc",
"//chrome/renderer/pepper/pepper_shared_memory_message_filter.h",
]
if (enable_pdf_viewer) {
sources += [
"//chrome/renderer/pepper/pepper_flash_font_file_host.cc",
"//chrome/renderer/pepper/pepper_flash_font_file_host.h",
]
if (enable_pdf_viewer) {
deps += [ "//components/pdf/renderer" ]
}
deps += [ "//components/pdf/renderer" ]
}
deps += [
"//components/strings",

View File

@@ -1,188 +0,0 @@
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_PROCESS_SINGLETON_H_
#define CHROME_BROWSER_PROCESS_SINGLETON_H_
#if defined(OS_WIN)
#include <windows.h>
#endif // defined(OS_WIN)
#include <set>
#include <vector>
#include "base/callback.h"
#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/logging.h"
#include "base/memory/ref_counted.h"
#include "base/process/process.h"
#include "base/sequence_checker.h"
#include "ui/gfx/native_widget_types.h"
#if defined(OS_POSIX) && !defined(OS_ANDROID)
#include "base/files/scoped_temp_dir.h"
#endif
#if defined(OS_WIN)
#include "base/win/message_window.h"
#endif // defined(OS_WIN)
namespace base {
class CommandLine;
}
// ProcessSingleton ----------------------------------------------------------
//
// This class allows different browser processes to communicate with
// each other. It is named according to the user data directory, so
// we can be sure that no more than one copy of the application can be
// running at once with a given data directory.
//
// Implementation notes:
// - the Windows implementation uses an invisible global message window;
// - the Linux implementation uses a Unix domain socket in the user data dir.
class ProcessSingleton {
public:
enum NotifyResult {
PROCESS_NONE,
PROCESS_NOTIFIED,
PROFILE_IN_USE,
LOCK_ERROR,
};
// Implement this callback to handle notifications from other processes. The
// callback will receive the command line and directory with which the other
// Chrome process was launched. Return true if the command line will be
// handled within the current browser instance or false if the remote process
// should handle it (i.e., because the current process is shutting down).
using NotificationCallback = base::RepeatingCallback<bool(
const base::CommandLine::StringVector& command_line,
const base::FilePath& current_directory)>;
ProcessSingleton(const base::FilePath& user_data_dir,
const NotificationCallback& notification_callback);
~ProcessSingleton();
// Notify another process, if available. Otherwise sets ourselves as the
// singleton instance. Returns PROCESS_NONE if we became the singleton
// instance. Callers are guaranteed to either have notified an existing
// process or have grabbed the singleton (unless the profile is locked by an
// unreachable process).
// TODO(brettw): Make the implementation of this method non-platform-specific
// by making Linux re-use the Windows implementation.
NotifyResult NotifyOtherProcessOrCreate();
void StartListeningOnSocket();
void OnBrowserReady();
// Sets ourself up as the singleton instance. Returns true on success. If
// false is returned, we are not the singleton instance and the caller must
// exit.
// NOTE: Most callers should generally prefer NotifyOtherProcessOrCreate() to
// this method, only callers for whom failure is preferred to notifying
// another process should call this directly.
bool Create();
// Clear any lock state during shutdown.
void Cleanup();
#if defined(OS_POSIX) && !defined(OS_ANDROID)
static void DisablePromptForTesting();
#endif
#if defined(OS_WIN)
// Called to query whether to kill a hung browser process that has visible
// windows. Return true to allow killing the hung process.
using ShouldKillRemoteProcessCallback = base::RepeatingCallback<bool()>;
void OverrideShouldKillRemoteProcessCallbackForTesting(
const ShouldKillRemoteProcessCallback& display_dialog_callback);
#endif
protected:
// Notify another process, if available.
// Returns true if another process was found and notified, false if we should
// continue with the current process.
// On Windows, Create() has to be called before this.
NotifyResult NotifyOtherProcess();
#if defined(OS_POSIX) && !defined(OS_ANDROID)
// Exposed for testing. We use a timeout on Linux, and in tests we want
// this timeout to be short.
NotifyResult NotifyOtherProcessWithTimeout(
const base::CommandLine& command_line,
int retry_attempts,
const base::TimeDelta& timeout,
bool kill_unresponsive);
NotifyResult NotifyOtherProcessWithTimeoutOrCreate(
const base::CommandLine& command_line,
int retry_attempts,
const base::TimeDelta& timeout);
void OverrideCurrentPidForTesting(base::ProcessId pid);
void OverrideKillCallbackForTesting(
const base::RepeatingCallback<void(int)>& callback);
#endif
private:
NotificationCallback notification_callback_; // Handler for notifications.
#if defined(OS_WIN)
HWND remote_window_ = nullptr; // The HWND_MESSAGE of another browser.
base::win::MessageWindow window_; // The message-only window.
bool is_virtualized_ =
false; // Stuck inside Microsoft Softricity VM environment.
HANDLE lock_file_ = INVALID_HANDLE_VALUE;
base::FilePath user_data_dir_;
ShouldKillRemoteProcessCallback should_kill_remote_process_callback_;
#elif defined(OS_POSIX) && !defined(OS_ANDROID)
// Start listening to the socket.
void StartListening(int sock);
// Return true if the given pid is one of our child processes.
// Assumes that the current pid is the root of all pids of the current
// instance.
bool IsSameChromeInstance(pid_t pid);
// Extract the process's pid from a symbol link path and if it is on
// the same host, kill the process, unlink the lock file and return true.
// If the process is part of the same chrome instance, unlink the lock file
// and return true without killing it.
// If the process is on a different host, return false.
bool KillProcessByLockPath();
// Default function to kill a process, overridable by tests.
void KillProcess(int pid);
// Allow overriding for tests.
base::ProcessId current_pid_;
// Function to call when the other process is hung and needs to be killed.
// Allows overriding for tests.
base::RepeatingCallback<void(int)> kill_callback_;
// Path in file system to the socket.
base::FilePath socket_path_;
// Path in file system to the lock.
base::FilePath lock_path_;
// Path in file system to the cookie file.
base::FilePath cookie_path_;
// Temporary directory to hold the socket.
base::ScopedTempDir socket_dir_;
// Helper class for linux specific messages. LinuxWatcher is ref counted
// because it posts messages between threads.
class LinuxWatcher;
scoped_refptr<LinuxWatcher> watcher_;
int sock_ = -1;
bool listen_on_ready_ = false;
#endif
SEQUENCE_CHECKER(sequence_checker_);
DISALLOW_COPY_AND_ASSIGN(ProcessSingleton);
};
#endif // CHROME_BROWSER_PROCESS_SINGLETON_H_

File diff suppressed because it is too large Load Diff

View File

@@ -1,314 +0,0 @@
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/process_singleton.h"
#include <shellapi.h>
#include "base/base_paths.h"
#include "base/bind.h"
#include "base/command_line.h"
#include "base/files/file_path.h"
#include "base/files/file_util.h"
#include "base/process/process.h"
#include "base/process/process_info.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/time/time.h"
#include "base/win/registry.h"
#include "base/win/scoped_handle.h"
#include "base/win/windows_version.h"
#include "chrome/browser/win/chrome_process_finder.h"
#include "content/public/common/result_codes.h"
#include "net/base/escape.h"
#include "ui/gfx/win/hwnd_util.h"
namespace {
const char kLockfile[] = "lockfile";
// A helper class that acquires the given |mutex| while the AutoLockMutex is in
// scope.
class AutoLockMutex {
public:
explicit AutoLockMutex(HANDLE mutex) : mutex_(mutex) {
DWORD result = ::WaitForSingleObject(mutex_, INFINITE);
DPCHECK(result == WAIT_OBJECT_0) << "Result = " << result;
}
~AutoLockMutex() {
BOOL released = ::ReleaseMutex(mutex_);
DPCHECK(released);
}
private:
HANDLE mutex_;
DISALLOW_COPY_AND_ASSIGN(AutoLockMutex);
};
// A helper class that releases the given |mutex| while the AutoUnlockMutex is
// in scope and immediately re-acquires it when going out of scope.
class AutoUnlockMutex {
public:
explicit AutoUnlockMutex(HANDLE mutex) : mutex_(mutex) {
BOOL released = ::ReleaseMutex(mutex_);
DPCHECK(released);
}
~AutoUnlockMutex() {
DWORD result = ::WaitForSingleObject(mutex_, INFINITE);
DPCHECK(result == WAIT_OBJECT_0) << "Result = " << result;
}
private:
HANDLE mutex_;
DISALLOW_COPY_AND_ASSIGN(AutoUnlockMutex);
};
// Checks the visibility of the enumerated window and signals once a visible
// window has been found.
BOOL CALLBACK BrowserWindowEnumeration(HWND window, LPARAM param) {
bool* result = reinterpret_cast<bool*>(param);
*result = ::IsWindowVisible(window) != 0;
// Stops enumeration if a visible window has been found.
return !*result;
}
bool ParseCommandLine(const COPYDATASTRUCT* cds,
base::CommandLine::StringVector* parsed_command_line,
base::FilePath* current_directory) {
// We should have enough room for the shortest command (min_message_size)
// and also be a multiple of wchar_t bytes. The shortest command
// possible is L"START\0\0" (empty current directory and command line).
static const int min_message_size = 7;
if (cds->cbData < min_message_size * sizeof(wchar_t) ||
cds->cbData % sizeof(wchar_t) != 0) {
LOG(WARNING) << "Invalid WM_COPYDATA, length = " << cds->cbData;
return false;
}
// We split the string into 4 parts on NULLs.
DCHECK(cds->lpData);
const std::wstring msg(static_cast<wchar_t*>(cds->lpData),
cds->cbData / sizeof(wchar_t));
const std::wstring::size_type first_null = msg.find_first_of(L'\0');
if (first_null == 0 || first_null == std::wstring::npos) {
// no NULL byte, don't know what to do
LOG(WARNING) << "Invalid WM_COPYDATA, length = " << msg.length()
<< ", first null = " << first_null;
return false;
}
// Decode the command, which is everything until the first NULL.
if (msg.substr(0, first_null) == L"START") {
// Another instance is starting parse the command line & do what it would
// have done.
VLOG(1) << "Handling STARTUP request from another process";
const std::wstring::size_type second_null =
msg.find_first_of(L'\0', first_null + 1);
if (second_null == std::wstring::npos || first_null == msg.length() - 1 ||
second_null == msg.length()) {
LOG(WARNING) << "Invalid format for start command, we need a string in 4 "
"parts separated by NULLs";
return false;
}
// Get current directory.
*current_directory =
base::FilePath(msg.substr(first_null + 1, second_null - first_null));
const std::wstring::size_type third_null =
msg.find_first_of(L'\0', second_null + 1);
if (third_null == std::wstring::npos || third_null == msg.length()) {
LOG(WARNING) << "Invalid format for start command, we need a string in 4 "
"parts separated by NULLs";
}
// Get command line.
const std::wstring cmd_line =
msg.substr(second_null + 1, third_null - second_null);
*parsed_command_line = base::CommandLine::FromString(cmd_line).argv();
return true;
}
return false;
}
bool ProcessLaunchNotification(
const ProcessSingleton::NotificationCallback& notification_callback,
UINT message,
WPARAM wparam,
LPARAM lparam,
LRESULT* result) {
if (message != WM_COPYDATA)
return false;
// Handle the WM_COPYDATA message from another process.
const COPYDATASTRUCT* cds = reinterpret_cast<COPYDATASTRUCT*>(lparam);
base::CommandLine::StringVector parsed_command_line;
base::FilePath current_directory;
if (!ParseCommandLine(cds, &parsed_command_line, &current_directory)) {
*result = TRUE;
return true;
}
*result = notification_callback.Run(parsed_command_line, current_directory)
? TRUE
: FALSE;
return true;
}
bool TerminateAppWithError() {
// TODO: This is called when the secondary process can't ping the primary
// process. Need to find out what to do here.
return false;
}
} // namespace
ProcessSingleton::ProcessSingleton(
const base::FilePath& user_data_dir,
const NotificationCallback& notification_callback)
: notification_callback_(notification_callback),
user_data_dir_(user_data_dir),
should_kill_remote_process_callback_(
base::BindRepeating(&TerminateAppWithError)) {
// The user_data_dir may have not been created yet.
base::CreateDirectoryAndGetError(user_data_dir, nullptr);
}
ProcessSingleton::~ProcessSingleton() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
if (lock_file_ != INVALID_HANDLE_VALUE)
::CloseHandle(lock_file_);
}
// Code roughly based on Mozilla.
ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcess() {
if (is_virtualized_)
return PROCESS_NOTIFIED; // We already spawned the process in this case.
if (lock_file_ == INVALID_HANDLE_VALUE && !remote_window_) {
return LOCK_ERROR;
} else if (!remote_window_) {
return PROCESS_NONE;
}
switch (chrome::AttemptToNotifyRunningChrome(remote_window_)) {
case chrome::NOTIFY_SUCCESS:
return PROCESS_NOTIFIED;
case chrome::NOTIFY_FAILED:
remote_window_ = NULL;
return PROCESS_NONE;
case chrome::NOTIFY_WINDOW_HUNG:
// Fall through and potentially terminate the hung browser.
break;
}
DWORD process_id = 0;
DWORD thread_id = ::GetWindowThreadProcessId(remote_window_, &process_id);
if (!thread_id || !process_id) {
remote_window_ = NULL;
return PROCESS_NONE;
}
base::Process process = base::Process::Open(process_id);
// The window is hung. Scan for every window to find a visible one.
bool visible_window = false;
::EnumThreadWindows(thread_id, &BrowserWindowEnumeration,
reinterpret_cast<LPARAM>(&visible_window));
// If there is a visible browser window, ask the user before killing it.
if (visible_window && !should_kill_remote_process_callback_.Run()) {
// The user denied. Quit silently.
return PROCESS_NOTIFIED;
}
// Time to take action. Kill the browser process.
process.Terminate(content::RESULT_CODE_HUNG, true);
remote_window_ = NULL;
return PROCESS_NONE;
}
ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessOrCreate() {
ProcessSingleton::NotifyResult result = PROCESS_NONE;
if (!Create()) {
result = NotifyOtherProcess();
if (result == PROCESS_NONE)
result = PROFILE_IN_USE;
}
return result;
}
void ProcessSingleton::StartListeningOnSocket() {}
void ProcessSingleton::OnBrowserReady() {}
// Look for a Chrome instance that uses the same profile directory. If there
// isn't one, create a message window with its title set to the profile
// directory path.
bool ProcessSingleton::Create() {
static const wchar_t kMutexName[] = L"Local\\AtomProcessSingletonStartup!";
remote_window_ = chrome::FindRunningChromeWindow(user_data_dir_);
if (!remote_window_) {
// Make sure we will be the one and only process creating the window.
// We use a named Mutex since we are protecting against multi-process
// access. As documented, it's clearer to NOT request ownership on creation
// since it isn't guaranteed we will get it. It is better to create it
// without ownership and explicitly get the ownership afterward.
base::win::ScopedHandle only_me(::CreateMutex(NULL, FALSE, kMutexName));
if (!only_me.IsValid()) {
DPLOG(FATAL) << "CreateMutex failed";
return false;
}
AutoLockMutex auto_lock_only_me(only_me.Get());
// We now own the mutex so we are the only process that can create the
// window at this time, but we must still check if someone created it
// between the time where we looked for it above and the time the mutex
// was given to us.
remote_window_ = chrome::FindRunningChromeWindow(user_data_dir_);
if (!remote_window_) {
// We have to make sure there is no Chrome instance running on another
// machine that uses the same profile.
base::FilePath lock_file_path = user_data_dir_.AppendASCII(kLockfile);
lock_file_ =
::CreateFile(lock_file_path.value().c_str(), GENERIC_WRITE,
FILE_SHARE_READ, NULL, CREATE_ALWAYS,
FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, NULL);
DWORD error = ::GetLastError();
LOG_IF(WARNING, lock_file_ != INVALID_HANDLE_VALUE &&
error == ERROR_ALREADY_EXISTS)
<< "Lock file exists but is writable.";
LOG_IF(ERROR, lock_file_ == INVALID_HANDLE_VALUE)
<< "Lock file can not be created! Error code: " << error;
if (lock_file_ != INVALID_HANDLE_VALUE) {
// Set the window's title to the path of our user data directory so
// other Chrome instances can decide if they should forward to us.
bool result =
window_.CreateNamed(base::BindRepeating(&ProcessLaunchNotification,
notification_callback_),
user_data_dir_.value());
// NB: Ensure that if the primary app gets started as elevated
// admin inadvertently, secondary windows running not as elevated
// will still be able to send messages
::ChangeWindowMessageFilterEx(window_.hwnd(), WM_COPYDATA, MSGFLT_ALLOW,
NULL);
CHECK(result && window_.hwnd());
}
}
}
return window_.hwnd() != NULL;
}
void ProcessSingleton::Cleanup() {}
void ProcessSingleton::OverrideShouldKillRemoteProcessCallbackForTesting(
const ShouldKillRemoteProcessCallback& display_dialog_callback) {
should_kill_remote_process_callback_ = display_dialog_callback;
}

View File

@@ -109,7 +109,7 @@ function loadApplicationPackage (packagePath: string) {
try {
const filePath = Module._resolveFilename(packagePath, module, true);
app._setDefaultAppPaths(appPath || path.dirname(filePath));
app.setAppPath(appPath || path.dirname(filePath));
} catch (e) {
showErrorMessage(`Unable to find Electron app at ${packagePath}\n\n${e.message}`);
return;

View File

@@ -59,10 +59,9 @@ an issue:
* [Testing and Debugging](tutorial/application-debugging.md)
* [Debugging the Main Process](tutorial/debugging-main-process.md)
* [Debugging with Visual Studio Code](tutorial/debugging-vscode.md)
* [Using Selenium and WebDriver](tutorial/using-selenium-and-webdriver.md)
* [Testing on Headless CI Systems (Travis, Jenkins)](tutorial/testing-on-headless-ci.md)
* [DevTools Extension](tutorial/devtools-extension.md)
* [Automated Testing with a Custom Driver](tutorial/automated-testing-with-a-custom-driver.md)
* [Automated Testing](tutorial/automated-testing.md)
* [REPL](tutorial/repl.md)
* [Distribution](tutorial/application-distribution.md)
* [Supported Platforms](tutorial/support.md#supported-platforms)

View File

@@ -36,10 +36,10 @@ Returns:
* `launchInfo` Record<string, any> | [NotificationResponse](structures/notification-response.md) _macOS_
Emitted once, when Electron has finished initializing. On macOS, `launchInfo`
holds the `userInfo` of the `NSUserNotification` or information from
[`UNNotificationResponse`](structures/notification-response.md) that was used to open the
application, if it was launched from Notification Center. You can also call
`app.isReady()` to check if this event has already fired and `app.whenReady()`
holds the `userInfo` of the [`NSUserNotification`](https://developer.apple.com/documentation/foundation/nsusernotification)
or information from [`UNNotificationResponse`](https://developer.apple.com/documentation/usernotifications/unnotificationresponse)
that was used to open the application, if it was launched from Notification Center.
You can also call `app.isReady()` to check if this event has already fired and `app.whenReady()`
to get a Promise that is fulfilled when Electron is initialized.
### Event: 'window-all-closed'
@@ -161,6 +161,8 @@ Returns:
[`NSUserActivity.activityType`][activity-type].
* `userInfo` unknown - Contains app-specific state stored by the activity on
another device.
* `details` Object
* `webpageURL` String (optional) - A string identifying the URL of the webpage accessed by the activity on another device, if available.
Emitted during [Handoff][handoff] when an activity from a different device wants
to be resumed. You should call `event.preventDefault()` if you want to handle
@@ -275,6 +277,7 @@ Returns:
* `certificate` [Certificate](structures/certificate.md)
* `callback` Function
* `isTrusted` Boolean - Whether to consider the certificate as trusted
* `isMainFrame` Boolean
Emitted when failed to verify the `certificate` for `url`, to trust the
certificate you should prevent the default behavior with
@@ -480,6 +483,7 @@ Returns:
* `event` Event
* `argv` String[] - An array of the second instance's command line arguments
* `workingDirectory` String - The second instance's working directory
* `additionalData` unknown - A JSON object of additional data passed from the second instance
This event will be emitted inside the primary instance of your application
when a second instance has been executed and calls `app.requestSingleInstanceLock()`.
@@ -698,7 +702,7 @@ Overrides the current application's name.
Returns `String` - The current application locale, fetched using Chromium's `l10n_util` library.
Possible return values are documented [here](https://source.chromium.org/chromium/chromium/src/+/master:ui/base/l10n/l10n_util.cc).
To set the locale, you'll want to use a command line switch at app startup, which may be found [here](https://github.com/electron/electron/blob/master/docs/api/command-line-switches.md).
To set the locale, you'll want to use a command line switch at app startup, which may be found [here](command-line-switches.md).
**Note:** When distributing your packaged app, you have to also ship the
`locales` folder.
@@ -938,6 +942,8 @@ app.setJumpList([
### `app.requestSingleInstanceLock()`
* `additionalData` unknown (optional) - A JSON object containing additional data to send to the first instance.
Returns `Boolean`
The return value of this method indicates whether or not this instance of your
@@ -963,12 +969,16 @@ starts:
const { app } = require('electron')
let myWindow = null
const gotTheLock = app.requestSingleInstanceLock()
const additionalData = { myKey: 'myValue' }
const gotTheLock = app.requestSingleInstanceLock(additionalData)
if (!gotTheLock) {
app.quit()
} else {
app.on('second-instance', (event, commandLine, workingDirectory) => {
app.on('second-instance', (event, commandLine, workingDirectory, additionalData) => {
// Print out data received from the second instance.
console.log(additionalData)
// Someone tried to run a second instance, we should focus our window.
if (myWindow) {
if (myWindow.isMinimized()) myWindow.restore()
@@ -1059,6 +1069,61 @@ Imports the certificate in pkcs12 format into the platform certificate store.
`callback` is called with the `result` of import operation, a value of `0`
indicates success while any other value indicates failure according to Chromium [net_error_list](https://source.chromium.org/chromium/chromium/src/+/master:net/base/net_error_list.h).
### `app.configureHostResolver(options)`
* `options` Object
* `enableBuiltInResolver` Boolean (optional) - Whether the built-in host
resolver is used in preference to getaddrinfo. When enabled, the built-in
resolver will attempt to use the system's DNS settings to do DNS lookups
itself. Enabled by default on macOS, disabled by default on Windows and
Linux.
* `secureDnsMode` String (optional) - Can be "off", "automatic" or "secure".
Configures the DNS-over-HTTP mode. When "off", no DoH lookups will be
performed. When "automatic", DoH lookups will be performed first if DoH is
available, and insecure DNS lookups will be performed as a fallback. When
"secure", only DoH lookups will be performed. Defaults to "automatic".
* `secureDnsServers` String[]&#32;(optional) - A list of DNS-over-HTTP
server templates. See [RFC8484 § 3][] for details on the template format.
Most servers support the POST method; the template for such servers is
simply a URI. Note that for [some DNS providers][doh-providers], the
resolver will automatically upgrade to DoH unless DoH is explicitly
disabled, even if there are no DoH servers provided in this list.
* `enableAdditionalDnsQueryTypes` Boolean (optional) - Controls whether additional DNS
query types, e.g. HTTPS (DNS type 65) will be allowed besides the
traditional A and AAAA queries when a request is being made via insecure
DNS. Has no effect on Secure DNS which always allows additional types.
Defaults to true.
Configures host resolution (DNS and DNS-over-HTTPS). By default, the following
resolvers will be used, in order:
1. DNS-over-HTTPS, if the [DNS provider supports it][doh-providers], then
2. the built-in resolver (enabled on macOS only by default), then
3. the system's resolver (e.g. `getaddrinfo`).
This can be configured to either restrict usage of non-encrypted DNS
(`secureDnsMode: "secure"`), or disable DNS-over-HTTPS (`secureDnsMode:
"off"`). It is also possible to enable or disable the built-in resolver.
To disable insecure DNS, you can specify a `secureDnsMode` of `"secure"`. If you do
so, you should make sure to provide a list of DNS-over-HTTPS servers to use, in
case the user's DNS configuration does not include a provider that supports
DoH.
```js
app.configureHostResolver({
secureDnsMode: 'secure',
secureDnsServers: [
'https://cloudflare-dns.com/dns-query'
]
})
```
This API must be called after the `ready` event is emitted.
[doh-providers]: https://source.chromium.org/chromium/chromium/src/+/main:net/dns/public/doh_provider_entry.cc;l=31?q=%22DohProviderEntry::GetList()%22&ss=chromium%2Fchromium%2Fsrc
[RFC8484 § 3]: https://datatracker.ietf.org/doc/html/rfc8484#section-3
### `app.disableHardwareAcceleration()`
Disables hardware acceleration for current app.
@@ -1135,8 +1200,8 @@ badge.
On macOS, it shows on the dock icon. On Linux, it only works for Unity launcher.
**Note:** Unity launcher requires the existence of a `.desktop` file to work,
for more information please read [Desktop Environment Integration][unity-requirement].
**Note:** Unity launcher requires a `.desktop` file to work. For more information,
please read the [Unity integration documentation][unity-requirement].
### `app.getBadgeCount()` _Linux_ _macOS_
@@ -1374,8 +1439,8 @@ An `Integer` property that returns the badge count for current app. Setting the
On macOS, setting this with any nonzero integer shows on the dock icon. On Linux, this property only works for Unity launcher.
**Note:** Unity launcher requires the existence of a `.desktop` file to work,
for more information please read [Desktop Environment Integration][unity-requirement].
**Note:** Unity launcher requires a `.desktop` file to work. For more information,
please read the [Unity integration documentation][unity-requirement].
**Note:** On macOS, you need to ensure that your application has the permission
to display notifications for this property to take effect.
@@ -1403,7 +1468,7 @@ A `Boolean` property that returns `true` if the app is packaged, `false` otherw
[LSCopyDefaultHandlerForURLScheme]: https://developer.apple.com/library/mac/documentation/Carbon/Reference/LaunchServicesReference/#//apple_ref/c/func/LSCopyDefaultHandlerForURLScheme
[handoff]: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/Handoff/HandoffFundamentals/HandoffFundamentals.html
[activity-type]: https://developer.apple.com/library/ios/documentation/Foundation/Reference/NSUserActivity_Class/index.html#//apple_ref/occ/instp/NSUserActivity/activityType
[unity-requirement]: ../tutorial/desktop-environment-integration.md#unity-launcher
[unity-requirement]: https://help.ubuntu.com/community/UnityLaunchersAndDesktopFiles#Adding_shortcuts_to_a_launcher
[mas-builds]: ../tutorial/mac-app-store-submission-guide.md
[Squirrel-Windows]: https://github.com/Squirrel/Squirrel.Windows
[JumpListBeginListMSDN]: https://msdn.microsoft.com/en-us/library/windows/desktop/dd378398(v=vs.85).aspx
@@ -1427,7 +1492,7 @@ This is the user agent that will be used when no user agent is set at the
app has the same user agent. Set to a custom value as early as possible
in your app's initialization to ensure that your overridden value is used.
### `app.runningUnderRosettaTranslation` _macOS_ _Readonly_
### `app.runningUnderRosettaTranslation` _macOS_ _Readonly_ _Deprecated_
A `Boolean` which when `true` indicates that the app is currently running
under the [Rosetta Translator Environment](https://en.wikipedia.org/wiki/Rosetta_(software)).
@@ -1435,3 +1500,18 @@ under the [Rosetta Translator Environment](https://en.wikipedia.org/wiki/Rosetta
You can use this property to prompt users to download the arm64 version of
your application when they are running the x64 version under Rosetta
incorrectly.
**Deprecated:** This property is superceded by the `runningUnderARM64Translation`
property which detects when the app is being translated to ARM64 in both macOS
and Windows.
### `app.runningUnderARM64Translation` _Readonly_ _macOS_ _Windows_
A `Boolean` which when `true` indicates that the app is currently running under
an ARM64 translator (like the macOS
[Rosetta Translator Environment](https://en.wikipedia.org/wiki/Rosetta_(software))
or Windows [WOW](https://en.wikipedia.org/wiki/Windows_on_Windows)).
You can use this property to prompt users to download the arm64 version of
your application when they are running the x64 version under Rosetta
incorrectly.

View File

@@ -43,7 +43,7 @@ The installer generated with Squirrel will create a shortcut icon with an
same ID for your app with `app.setAppUserModelId` API, otherwise Windows will
not be able to pin your app properly in task bar.
Unlike Squirrel.Mac, Windows can host updates on S3 or any other static file host.
Like Squirrel.Mac, Windows can host updates on S3 or any other static file host.
You can read the documents of [Squirrel.Windows][squirrel-windows] to get more details
about how Squirrel.Windows works.

View File

@@ -2,7 +2,8 @@
> Manipulate the child browser window
Process: [Renderer](../glossary.md#renderer-process)
Process: [Renderer](../glossary.md#renderer-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
The `BrowserWindowProxy` object is returned from `window.open` and provides
limited functionality with the child window.

View File

@@ -17,17 +17,19 @@ win.loadURL('https://github.com')
win.loadFile('index.html')
```
## Frameless window
## Window customization
To create a window without chrome, or a transparent window in arbitrary shape,
you can use the [Frameless Window](frameless-window.md) API.
The `BrowserWindow` class exposes various ways to modify the look and behavior of
your app's windows. For more details, see the [Window Customization](../tutorial/window-customization.md)
tutorial.
## Showing window gracefully
## Showing the window gracefully
When loading a page in the window directly, users may see the page load incrementally, which is not a good experience for a native app. To make the window display
without visual flash, there are two solutions for different situations.
When loading a page in the window directly, users may see the page load incrementally,
which is not a good experience for a native app. To make the window display
without a visual flash, there are two solutions for different situations.
## Using `ready-to-show` event
### Using the `ready-to-show` event
While loading the page, the `ready-to-show` event will be emitted when the renderer
process has rendered the page for the first time if the window has not been shown yet. Showing
@@ -48,7 +50,7 @@ event.
Please note that using this event implies that the renderer will be considered "visible" and
paint even though `show` is false. This event will never fire if you use `paintWhenInitiallyHidden: false`
## Setting `backgroundColor`
### Setting the `backgroundColor` property
For a complex app, the `ready-to-show` event could be emitted too late, making
the app feel slow. In this case, it is recommended to show the window
@@ -183,13 +185,13 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
`true`.
* `paintWhenInitiallyHidden` Boolean (optional) - Whether the renderer should be active when `show` is `false` and it has just been created. In order for `document.visibilityState` to work correctly on first load with `show: false` you should set this to `false`. Setting this to `false` will cause the `ready-to-show` event to not fire. Default is `true`.
* `frame` Boolean (optional) - Specify `false` to create a
[Frameless Window](frameless-window.md). Default is `true`.
[frameless window](../tutorial/window-customization.md#create-frameless-windows). Default is `true`.
* `parent` BrowserWindow (optional) - Specify parent window. Default is `null`.
* `modal` Boolean (optional) - Whether this is a modal window. This only works when the
window is a child window. Default is `false`.
* `acceptFirstMouse` Boolean (optional) - Whether the web view accepts a single
mouse-down event that simultaneously activates the window. Default is
`false`.
* `acceptFirstMouse` Boolean (optional) - Whether clicking an inactive window will also
click through to the web contents. Default is `false` on macOS. This option is not
configurable on other platforms.
* `disableAutoHideCursor` Boolean (optional) - Whether to hide cursor when typing.
Default is `false`.
* `autoHideMenuBar` Boolean (optional) - Auto hide the menu bar unless the `Alt`
@@ -205,7 +207,7 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
transparent) and 1.0 (fully opaque). This is only implemented on Windows and macOS.
* `darkTheme` Boolean (optional) - Forces using dark theme for the window, only works on
some GTK+3 desktop environments. Default is `false`.
* `transparent` Boolean (optional) - Makes the window [transparent](frameless-window.md#transparent-window).
* `transparent` Boolean (optional) - Makes the window [transparent](../tutorial/window-customization.md#create-transparent-windows).
Default is `false`. On Windows, does not work unless the window is frameless.
* `type` String (optional) - The type of window, default is normal window. See more about
this below.
@@ -213,16 +215,13 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
* `followWindow` - The backdrop should automatically appear active when the window is active, and inactive when it is not. This is the default.
* `active` - The backdrop should always appear active.
* `inactive` - The backdrop should always appear inactive.
* `titleBarStyle` String (optional) - The style of window title bar.
* `titleBarStyle` String (optional) _macOS_ _Windows_ - The style of window title bar.
Default is `default`. Possible values are:
* `default` - Results in the standard gray opaque Mac title
bar.
* `hidden` - Results in a hidden title bar and a full size content window, yet
the title bar still has the standard window controls ("traffic lights") in
the top left.
* `hiddenInset` - Results in a hidden title bar with an alternative look
* `default` - Results in the standard title bar for macOS or Windows respectively.
* `hidden` - Results in a hidden title bar and a full size content window. On macOS, the window still has the standard window controls (“traffic lights”) in the top left. On Windows, when combined with `titleBarOverlay: true` it will activate the Window Controls Overlay (see `titleBarOverlay` for more information), otherwise no window controls will be shown.
* `hiddenInset` - Only on macOS, results in a hidden title bar with an alternative look
where the traffic light buttons are slightly more inset from the window edge.
* `customButtonsOnHover` - Results in a hidden title bar and a full size
* `customButtonsOnHover` - Only on macOS, results in a hidden title bar and a full size
content window, the traffic light buttons will display when being hovered
over in the top left of the window. **Note:** This option is currently
experimental.
@@ -294,6 +293,7 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
* `allowRunningInsecureContent` Boolean (optional) - Allow an https page to run
JavaScript, CSS or plugins from http URLs. Default is `false`.
* `images` Boolean (optional) - Enables image support. Default is `true`.
* `imageAnimationPolicy` String (optional) - Specifies how to run image animations (E.g. GIFs). Can be `animate`, `animateOnce` or `noAnimation`. Default is `animate`.
* `textAreasAreResizable` Boolean (optional) - Make TextArea elements resizable. Default
is `true`.
* `webgl` Boolean (optional) - Enables WebGL support. Default is `true`.
@@ -391,6 +391,9 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
contain the layout of the document—without requiring scrolling. Enabling
this will cause the `preferred-size-changed` event to be emitted on the
`WebContents` when the preferred size changes. Default is `false`.
* `titleBarOverlay` Object | Boolean (optional) - When using a frameless window in conjuction with `win.setWindowButtonVisibility(true)` on macOS or using a `titleBarStyle` so that the standard window controls ("traffic lights" on macOS) are visible, this property enables the Window Controls Overlay [JavaScript APIs][overlay-javascript-apis] and [CSS Environment Variables][overlay-css-env-vars]. Specifying `true` will result in an overlay with default system colors. Default is `false`.
* `color` String (optional) _Windows_ - The CSS color of the Window Controls Overlay when enabled. Default is the system color.
* `symbolColor` String (optional) _Windows_ - The CSS color of the symbols on the Window Controls Overlay when enabled. Default is the system color.
When setting minimum or maximum window size with `minWidth`/`maxWidth`/
`minHeight`/`maxHeight`, it only constrains the users. It won't prevent you from
@@ -523,11 +526,20 @@ Returns:
* `event` Event
* `newBounds` [Rectangle](structures/rectangle.md) - Size the window is being resized to.
* `details` Object
* `edge` (String) - The edge of the window being dragged for resizing. Can be `bottom`, `left`, `right`, `top-left`, `top-right`, `bottom-left` or `bottom-right`.
Emitted before the window is resized. Calling `event.preventDefault()` will prevent the window from being resized.
Note that this is only emitted when the window is being resized manually. Resizing the window with `setBounds`/`setSize` will not emit this event.
The possible values and behaviors of the `edge` option are platform dependent. Possible values are:
* On Windows, possible values are `bottom`, `top`, `left`, `right`, `top-left`, `top-right`, `bottom-left`, `bottom-right`.
* On macOS, possible values are `bottom` and `right`.
* The value `bottom` is used to denote vertical resizing.
* The value `right` is used to denote horizontal resizing.
#### Event: 'resize'
Emitted after the window has been resized.
@@ -977,7 +989,7 @@ the player itself we would call this function with arguments of 16/9 and
are within the content view--only that they exist. Sum any extra width and
height areas you have within the overall content view.
The aspect ratio is not respected when window is resized programmingly with
The aspect ratio is not respected when window is resized programmatically with
APIs like `win.setSize`.
#### `win.setBackgroundColor(backgroundColor)`
@@ -1685,7 +1697,7 @@ current window into a top-level window.
#### `win.getParentWindow()`
Returns `BrowserWindow` - The parent window.
Returns `BrowserWindow | null` - The parent window or `null` if there is no parent.
#### `win.getChildWindows()`
@@ -1805,3 +1817,5 @@ removed in future Electron releases.
[window-levels]: https://developer.apple.com/documentation/appkit/nswindow/level
[chrome-content-scripts]: https://developer.chrome.com/extensions/content_scripts#execution-environment
[event-emitter]: https://nodejs.org/api/events.html#events_class_eventemitter
[overlay-javascript-apis]: https://github.com/WICG/window-controls-overlay/blob/main/explainer.md#javascript-apis
[overlay-css-env-vars]: https://github.com/WICG/window-controls-overlay/blob/main/explainer.md#css-environment-variables

View File

@@ -2,7 +2,8 @@
> Make HTTP/HTTPS requests.
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
`ClientRequest` implements the [Writable Stream](https://nodejs.org/api/stream.html#stream_writable_streams)
interface and is therefore an [EventEmitter][event-emitter].
@@ -71,7 +72,7 @@ const request = net.request({
Returns:
* `response` IncomingMessage - An object representing the HTTP response message.
* `response` [IncomingMessage](incoming-message.md) - An object representing the HTTP response message.
#### Event: 'login'

View File

@@ -131,15 +131,15 @@ Returns `Object`:
Returns an Object containing `title` and `url` keys representing the bookmark in
the clipboard. The `title` and `url` values will be empty strings when the
bookmark is unavailable.
bookmark is unavailable. The `title` value will always be empty on Windows.
### `clipboard.writeBookmark(title, url[, type])` _macOS_ _Windows_
* `title` String
* `title` String - Unused on Windows
* `url` String
* `type` String (optional) - Can be `selection` or `clipboard`; default is 'clipboard'. `selection` is only available on Linux.
Writes the `title` and `url` into the clipboard as a bookmark.
Writes the `title` (macOS only) and `url` into the clipboard as a bookmark.
**Note:** Most apps on Windows don't support pasting bookmarks into them so
you can use `clipboard.write` to write both a bookmark and fallback text to the
@@ -197,9 +197,9 @@ Returns `Boolean` - Whether the clipboard supports the specified `format`.
```js
const { clipboard } = require('electron')
const hasFormat = clipboard.has('<p>selection</p>')
const hasFormat = clipboard.has('public/utf8-plain-text')
console.log(hasFormat)
// 'true' or 'false
// 'true' or 'false'
```
### `clipboard.read(format)` _Experimental_
@@ -208,6 +208,10 @@ console.log(hasFormat)
Returns `String` - Reads `format` type from the clipboard.
`format` should contain valid ASCII characters and have `/` separator.
`a/c`, `a/bc` are valid formats while `/abc`, `abc/`, `a/`, `/a`, `a`
are not valid.
### `clipboard.readBuffer(format)` _Experimental_
* `format` String
@@ -218,9 +222,9 @@ Returns `Buffer` - Reads `format` type from the clipboard.
const { clipboard } = require('electron')
const buffer = Buffer.from('this is binary', 'utf8')
clipboard.writeBuffer('public.utf8-plain-text', buffer)
clipboard.writeBuffer('public/utf8-plain-text', buffer)
const ret = clipboard.readBuffer('public.utf8-plain-text')
const ret = clipboard.readBuffer('public/utf8-plain-text')
console.log(buffer.equals(out))
// true
@@ -238,7 +242,7 @@ Writes the `buffer` into the clipboard as `format`.
const { clipboard } = require('electron')
const buffer = Buffer.from('writeBuffer', 'utf8')
clipboard.writeBuffer('public.utf8-plain-text', buffer)
clipboard.writeBuffer('public/utf8-plain-text', buffer)
```
### `clipboard.write(data[, type])`

View File

@@ -67,13 +67,22 @@ Enables caller stack logging for the following APIs (filtering events):
* `desktopCapturer.getSources()` / `desktop-capturer-get-sources`
### --enable-logging
### --enable-logging[=file]
Prints Chromium's logging into console.
Prints Chromium's logging to stderr (or a log file).
This switch can not be used in `app.commandLine.appendSwitch` since it is parsed
earlier than user's app is loaded, but you can set the `ELECTRON_ENABLE_LOGGING`
environment variable to achieve the same effect.
The `ELECTRON_ENABLE_LOGGING` environment variable has the same effect as
passing `--enable-logging`.
Passing `--enable-logging` will result in logs being printed on stderr.
Passing `--enable-logging=file` will result in logs being saved to the file
specified by `--log-file=...`, or to `electron_debug.log` in the user-data
directory if `--log-file` is not specified.
> **Note:** On Windows, logs from child processes cannot be sent to stderr.
> Logging to a file is the most reliable way to collect logs on Windows.
See also `--log-file`, `--log-level`, `--v`, and `--vmodule`.
### --force-fieldtrials=`trials`
@@ -126,10 +135,37 @@ See the [Node.js documentation][node-cli] or run `node --help` in your terminal
Set a custom locale.
### --log-file=`path`
If `--enable-logging` is specified, logs will be written to the given path. The
parent directory must exist.
Setting the `ELECTRON_LOG_FILE` environment variable is equivalent to passing
this flag. If both are present, the command-line switch takes precedence.
### --log-net-log=`path`
Enables net log events to be saved and writes them to `path`.
### --log-level=`N`
Sets the verbosity of logging when used together with `--enable-logging`.
`N` should be one of [Chrome's LogSeverities][severities].
Note that two complimentary logging mechanisms in Chromium -- `LOG()`
and `VLOG()` -- are controlled by different switches. `--log-level`
controls `LOG()` messages, while `--v` and `--vmodule` control `VLOG()`
messages. So you may want to use a combination of these three switches
depending on the granularity you want and what logging calls are made
by the code you're trying to watch.
See [Chromium Logging source][logging] for more information on how
`LOG()` and `VLOG()` interact. Loosely speaking, `VLOG()` can be thought
of as sub-levels / per-module levels inside `LOG(INFO)` to control the
firehose of `LOG(INFO)` data.
See also `--enable-logging`, `--log-level`, `--v`, and `--vmodule`.
### --no-proxy-server
Don't use a proxy server and always make direct connections. Overrides any other
@@ -181,6 +217,8 @@ positive values are used for V-logging levels.
This switch only works when `--enable-logging` is also passed.
See also `--enable-logging`, `--log-level`, and `--vmodule`.
### --vmodule=`pattern`
Gives the per-module maximal V-logging levels to override the value given by
@@ -193,6 +231,8 @@ logging level for all code in the source files under a `foo/bar` directory.
This switch only works when `--enable-logging` is also passed.
See also `--enable-logging`, `--log-level`, and `--v`.
### --force_high_performance_gpu
Force using discrete GPU when there are multiple GPUs available.
@@ -240,4 +280,8 @@ By default inspector websocket url is available in stderr and under /json/list e
[ready]: app.md#event-ready
[play-silent-audio]: https://github.com/atom/atom/pull/9485/files
[debugging-main-process]: ../tutorial/debugging-main-process.md
[logging]: https://source.chromium.org/chromium/chromium/src/+/master:base/logging.h
[node-cli]: https://nodejs.org/api/cli.html
[play-silent-audio]: https://github.com/atom/atom/pull/9485/files
[ready]: app.md#event-ready
[severities]: https://source.chromium.org/chromium/chromium/src/+/master:base/logging.h?q=logging::LogSeverity&ss=chromium

View File

@@ -2,7 +2,8 @@
> Manipulate the command line arguments for your app that Chromium reads
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
The following example shows how to check if the `--disable-gpu` flag is set.
@@ -52,3 +53,12 @@ Returns `Boolean` - Whether the command-line switch is present.
Returns `String` - The command-line switch value.
**Note:** When the switch is not present or has no value, it returns empty string.
#### `commandLine.removeSwitch(switch)`
* `switch` String - A command-line switch
Removes the specified switch from Chromium's command line.
**Note:** This will not affect `process.argv`. The intended usage of this function is to
control Chromium's behavior.

View File

@@ -41,7 +41,7 @@ When `contextIsolation` is enabled in your `webPreferences` (this is the default
The `contextBridge` module has the following methods:
### `contextBridge.exposeInMainWorld(apiKey, api)` _Experimental_
### `contextBridge.exposeInMainWorld(apiKey, api)`
* `apiKey` String - The key to inject the API onto `window` with. The API will be accessible on `window[apiKey]`.
* `api` any - Your API, more information on what this API can be and how it works is available below.
@@ -50,7 +50,7 @@ The `contextBridge` module has the following methods:
### API
The `api` provided to [`exposeInMainWorld`](#contextbridgeexposeinmainworldapikey-api-experimental) must be a `Function`, `String`, `Number`, `Array`, `Boolean`, or an object
The `api` provided to [`exposeInMainWorld`](#contextbridgeexposeinmainworldapikey-api) must be a `Function`, `String`, `Number`, `Array`, `Boolean`, or an object
whose keys are strings and values are a `Function`, `String`, `Number`, `Array`, `Boolean`, or another nested object that meets the same conditions.
`Function` values are proxied to the other context and all other values are **copied** and **frozen**. Any data / primitives sent in
@@ -107,6 +107,7 @@ has been included below for completeness:
| `Function` | Complex | ✅ | ✅ | Prototype modifications are dropped. Sending classes or constructors will not work. |
| [Cloneable Types](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm) | Simple | ✅ | ✅ | See the linked document on cloneable types |
| `Element` | Complex | ✅ | ✅ | Prototype modifications are dropped. Sending custom elements will not work. |
| `Blob` | Complex | ✅ | ✅ | N/A |
| `Symbol` | N/A | ❌ | ❌ | Symbols cannot be copied across contexts so they are dropped |
If the type you care about is not in the above table, it is probably not supported.

View File

@@ -2,7 +2,8 @@
> Query and modify a session's cookies.
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
Instances of the `Cookies` class are accessed by using `cookies` property of
a `Session`.
@@ -92,7 +93,7 @@ the response.
* `domain` String (optional) - The domain of the cookie; this will be normalized with a preceding dot so that it's also valid for subdomains. Empty by default if omitted.
* `path` String (optional) - The path of the cookie. Empty by default if omitted.
* `secure` Boolean (optional) - Whether the cookie should be marked as Secure. Defaults to
false.
false unless [Same Site=None](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite#samesitenone_requires_secure) attribute is used.
* `httpOnly` Boolean (optional) - Whether the cookie should be marked as HTTP only.
Defaults to false.
* `expirationDate` Double (optional) - The expiration date of the cookie as the number of

View File

@@ -19,6 +19,9 @@ following projects:
* [socorro](https://github.com/mozilla/socorro)
* [mini-breakpad-server](https://github.com/electron/mini-breakpad-server)
> **Note:** Electron uses Crashpad, not Breakpad, to collect and upload
> crashes, but for the time being, the [upload protocol is the same](https://chromium.googlesource.com/crashpad/crashpad/+/HEAD/doc/overview_design.md#Upload-to-collection-server).
Or use a 3rd party hosted solution:
* [Backtrace](https://backtrace.io/electron/)
@@ -26,49 +29,12 @@ Or use a 3rd party hosted solution:
* [BugSplat](https://www.bugsplat.com/docs/platforms/electron)
Crash reports are stored temporarily before being uploaded in a directory
underneath the app's user data directory (called 'Crashpad' on Windows and Mac,
or 'Crash Reports' on Linux). You can override this directory by calling
`app.setPath('crashDumps', '/path/to/crashes')` before starting the crash
reporter.
underneath the app's user data directory, called 'Crashpad'. You can override
this directory by calling `app.setPath('crashDumps', '/path/to/crashes')`
before starting the crash reporter.
On Windows and macOS, Electron uses
[crashpad](https://chromium.googlesource.com/crashpad/crashpad/+/master/README.md)
to monitor and report crashes. On Linux, Electron uses
[breakpad](https://chromium.googlesource.com/breakpad/breakpad/+/master/). This
is an implementation detail driven by Chromium, and it may change in future. In
particular, crashpad is newer and will likely eventually replace breakpad on
all platforms.
### Note about Node child processes on Linux
If you are using the Node.js `child_process` module and want to report crashes
from those processes on Linux, there is an extra step you will need to take to
properly initialize the crash reporter in the child process. This is not
necessary on Mac or Windows, as those platforms use Crashpad, which
automatically monitors child processes.
Since `require('electron')` is not available in Node child processes, the
following APIs are available on the `process` object in Node child processes.
Note that, on Linux, each Node child process has its own separate instance of
the breakpad crash reporter. This is dissimilar to renderer child processes,
which have a "stub" breakpad reporter which returns information to the main
process for reporting.
#### `process.crashReporter.start(options)`
See [`crashReporter.start()`](#crashreporterstartoptions).
#### `process.crashReporter.getParameters()`
See [`crashReporter.getParameters()`](#crashreportergetparameters).
#### `process.crashReporter.addExtraParameter(key, value)`
See [`crashReporter.addExtraParameter(key, value)`](#crashreporteraddextraparameterkey-value).
#### `process.crashReporter.removeExtraParameter(key)`
See [`crashReporter.removeExtraParameter(key)`](#crashreporterremoveextraparameterkey).
Electron uses [crashpad](https://chromium.googlesource.com/crashpad/crashpad/+/refs/heads/main/README.md)
to monitor and report crashes.
## Methods
@@ -186,12 +152,6 @@ names must be no longer than 39 bytes, and values must be no longer than 20320
bytes. Keys with names longer than the maximum will be silently ignored. Key
values longer than the maximum length will be truncated.
**Note:** On linux values that are longer than 127 bytes will be chunked into
multiple keys, each 127 bytes in length. E.g. `addExtraParameter('foo', 'a'.repeat(130))`
will result in two chunked keys `foo__1` and `foo__2`, the first will contain
the first 127 bytes and the second will contain the remaining 3 bytes. On
your crash reporting backend you should stitch together keys in this format.
### `crashReporter.removeExtraParameter(key)`
* `key` String - Parameter key, must be no longer than 39 bytes.
@@ -203,6 +163,32 @@ will not include this parameter.
Returns `Record<String, String>` - The current 'extra' parameters of the crash reporter.
## In Node child processes
Since `require('electron')` is not available in Node child processes, the
following APIs are available on the `process` object in Node child processes.
#### `process.crashReporter.start(options)`
See [`crashReporter.start()`](#crashreporterstartoptions).
Note that if the crash reporter is started in the main process, it will
automatically monitor child processes, so it should not be started in the child
process. Only use this method if the main process does not initialize the crash
reporter.
#### `process.crashReporter.getParameters()`
See [`crashReporter.getParameters()`](#crashreportergetparameters).
#### `process.crashReporter.addExtraParameter(key, value)`
See [`crashReporter.addExtraParameter(key, value)`](#crashreporteraddextraparameterkey-value).
#### `process.crashReporter.removeExtraParameter(key)`
See [`crashReporter.removeExtraParameter(key)`](#crashreporterremoveextraparameterkey).
## Crash Report Payload
The crash reporter will send the following data to the `submitURL` as

View File

@@ -2,7 +2,8 @@
> An alternate transport for Chrome's remote debugging protocol.
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
Chrome Developer Tools has a [special binding][rdp] available at JavaScript
runtime that allows interacting with pages and instrumenting them.

View File

@@ -24,7 +24,7 @@ The `dialog` module has the following methods:
* `buttonLabel` String (optional) - Custom label for the confirmation button, when
left empty the default label will be used.
* `filters` [FileFilter[]](structures/file-filter.md) (optional)
* `properties` String[] (optional) - Contains which features the dialog should
* `properties` String[]&#32;(optional) - Contains which features the dialog should
use. The following values are supported:
* `openFile` - Allow files to be selected.
* `openDirectory` - Allow directories to be selected.
@@ -87,7 +87,7 @@ dialog.showOpenDialogSync(mainWindow, {
* `buttonLabel` String (optional) - Custom label for the confirmation button, when
left empty the default label will be used.
* `filters` [FileFilter[]](structures/file-filter.md) (optional)
* `properties` String[] (optional) - Contains which features the dialog should
* `properties` String[]&#32;(optional) - Contains which features the dialog should
use. The following values are supported:
* `openFile` - Allow files to be selected.
* `openDirectory` - Allow directories to be selected.
@@ -112,7 +112,7 @@ Returns `Promise<Object>` - Resolve with an object containing the following:
* `canceled` Boolean - whether or not the dialog was canceled.
* `filePaths` String[] - An array of file paths chosen by the user. If the dialog is cancelled this will be an empty array.
* `bookmarks` String[] (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).)
* `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.
@@ -165,7 +165,7 @@ dialog.showOpenDialog(mainWindow, {
displayed in front of the filename text field.
* `showsTagField` Boolean (optional) _macOS_ - Show the tags input box,
defaults to `true`.
* `properties` String[] (optional)
* `properties` String[]&#32;(optional)
* `showHiddenFiles` - Show hidden files in dialog.
* `createDirectory` _macOS_ - Allow creating new directories from dialog.
* `treatPackageAsDirectory` _macOS_ - Treat packages, such as `.app` folders,
@@ -195,7 +195,7 @@ The `filters` specifies an array of file types that can be displayed, see
* `nameFieldLabel` String (optional) _macOS_ - Custom label for the text
displayed in front of the filename text field.
* `showsTagField` Boolean (optional) _macOS_ - Show the tags input box, defaults to `true`.
* `properties` String[] (optional)
* `properties` String[]&#32;(optional)
* `showHiddenFiles` - Show hidden files in dialog.
* `createDirectory` _macOS_ - Allow creating new directories from dialog.
* `treatPackageAsDirectory` _macOS_ - Treat packages, such as `.app` folders,
@@ -227,13 +227,14 @@ expanding and collapsing the dialog.
`"warning"`. On Windows, `"question"` displays the same icon as `"info"`, unless
you set an icon using the `"icon"` option. On macOS, both `"warning"` and
`"error"` display the same warning icon.
* `buttons` String[] (optional) - Array of texts for buttons. On Windows, an empty array
* `buttons` String[]&#32;(optional) - Array of texts for buttons. On Windows, an empty array
will result in one button labeled "OK".
* `defaultId` Integer (optional) - Index of the button in the buttons array which will
be selected by default when the message box opens.
* `title` String (optional) - Title of the message box, some platforms will not show it.
* `detail` String (optional) - Extra information of the message.
* `icon` ([NativeImage](native-image.md) | String) (optional)
* `textWidth` Integer (optional) _macOS_ - Custom width of the text in the message box.
* `cancelId` Integer (optional) - The index of the button to be used to cancel the dialog, via
the `Esc` key. By default this is assigned to the first button with "cancel" or "no" as the
label. If no such labeled buttons exist and this option is not set, `0` will be used as the
@@ -269,10 +270,15 @@ If `browserWindow` is not shown dialog will not be attached to it. In such case
`"warning"`. On Windows, `"question"` displays the same icon as `"info"`, unless
you set an icon using the `"icon"` option. On macOS, both `"warning"` and
`"error"` display the same warning icon.
* `buttons` String[] (optional) - Array of texts for buttons. On Windows, an empty array
* `buttons` String[]&#32;(optional) - Array of texts for buttons. On Windows, an empty array
will result in one button labeled "OK".
* `defaultId` Integer (optional) - Index of the button in the buttons array which will
be selected by default when the message box opens.
* `signal` AbortSignal (optional) - Pass an instance of [AbortSignal][] to
optionally close the message box, the message box will behave as if it was
cancelled by the user. On macOS, `signal` does not work with message boxes
that do not have a parent window, since those message boxes run
synchronously due to platform limitations.
* `title` String (optional) - Title of the message box, some platforms will not show it.
* `detail` String (optional) - Extra information of the message.
* `checkboxLabel` String (optional) - If provided, the message box will
@@ -280,6 +286,7 @@ If `browserWindow` is not shown dialog will not be attached to it. In such case
* `checkboxChecked` Boolean (optional) - Initial checked state of the
checkbox. `false` by default.
* `icon` [NativeImage](native-image.md) (optional)
* `textWidth` Integer (optional) _macOS_ - Custom width of the text in the message box.
* `cancelId` Integer (optional) - The index of the button to be used to cancel the dialog, via
the `Esc` key. By default this is assigned to the first button with "cancel" or "no" as the
label. If no such labeled buttons exist and this option is not set, `0` will be used as the
@@ -360,3 +367,5 @@ window is provided.
You can call `BrowserWindow.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

@@ -2,7 +2,8 @@
> Control your app in the macOS dock
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
The following example shows how to bounce your icon on the dock.

View File

@@ -2,7 +2,8 @@
> Control file downloads from remote sources.
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
`DownloadItem` is an [EventEmitter][event-emitter] that represents a download item in Electron.
It is used in `will-download` event of `Session` class, and allows users to

View File

@@ -118,7 +118,19 @@ debugging purposes.
### `ELECTRON_ENABLE_LOGGING`
Prints Chrome's internal logging to the console.
Prints Chromium's internal logging to the console.
Setting this variable is the same as passing `--enable-logging`
on the command line. For more info, see `--enable-logging` in [command-line
switches](./command-line-switches.md#enable-loggingfile).
### `ELECTRON_LOG_FILE`
Sets the file destination for Chromium's internal logging.
Setting this variable is the same as passing `--log-file`
on the command line. For more info, see `--log-file` in [command-line
switches](./command-line-switches.md#log-filepath).
### `ELECTRON_DEBUG_DRAG_REGIONS`
@@ -127,7 +139,8 @@ green and non-draggable regions will be colored red to aid debugging.
### `ELECTRON_DEBUG_NOTIFICATIONS`
Adds extra logs to [`Notification`](./notification.md) lifecycles on macOS to aid in debugging. Extra logging will be displayed when new Notifications are created or activated. They will also be displayed when common actions are taken: a notification is shown, dismissed, its button is clicked, or it is replied to.
Adds extra logs to [`Notification`](./notification.md) lifecycles on macOS to aid in debugging. Extra logging will be displayed when new Notifications are created or activated. They will also be displayed when common a
tions are taken: a notification is shown, dismissed, its button is clicked, or it is replied to.
Sample output:

View File

@@ -78,6 +78,7 @@ The following methods of `chrome.runtime` are supported:
- `chrome.runtime.getURL`
- `chrome.runtime.connect`
- `chrome.runtime.sendMessage`
- `chrome.runtime.reload`
The following events of `chrome.runtime` are supported:
@@ -99,6 +100,8 @@ The following methods of `chrome.tabs` are supported:
- `chrome.tabs.sendMessage`
- `chrome.tabs.executeScript`
- `chrome.tabs.update` (partial support)
- supported properties: `url`, `muted`.
> **Note:** In Chrome, passing `-1` as a tab ID signifies the "currently active
> tab". Since Electron has no such concept, passing `-1` as a tab ID is not

View File

@@ -1,188 +0,0 @@
# Frameless Window
> Open a window without toolbars, borders, or other graphical "chrome".
A frameless window is a window that has no
[chrome](https://developer.mozilla.org/en-US/docs/Glossary/Chrome), the parts of
the window, like toolbars, that are not a part of the web page. These are
options on the [`BrowserWindow`](browser-window.md) class.
## Create a frameless window
To create a frameless window, you need to set `frame` to `false` in
[BrowserWindow](browser-window.md)'s `options`:
```javascript
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({ width: 800, height: 600, frame: false })
win.show()
```
### Alternatives on macOS
There's an alternative way to specify a chromeless window.
Instead of setting `frame` to `false` which disables both the titlebar and window controls,
you may want to have the title bar hidden and your content extend to the full window size,
yet still preserve the window controls ("traffic lights") for standard window actions.
You can do so by specifying the `titleBarStyle` option:
#### `hidden`
Results in a hidden title bar and a full size content window, yet the title bar still has the standard window controls (“traffic lights”) in the top left.
```javascript
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({ titleBarStyle: 'hidden' })
win.show()
```
#### `hiddenInset`
Results in a hidden title bar with an alternative look where the traffic light buttons are slightly more inset from the window edge.
```javascript
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({ titleBarStyle: 'hiddenInset' })
win.show()
```
#### `customButtonsOnHover`
Uses custom drawn close, and miniaturize buttons that display
when hovering in the top left of the window. The fullscreen button
is not available due to restrictions of frameless windows as they
interface with Apple's macOS window masks. These custom buttons prevent
issues with mouse events that occur with the standard window toolbar buttons.
This option is only applicable for frameless windows.
```javascript
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({ titleBarStyle: 'customButtonsOnHover', frame: false })
win.show()
```
## Transparent window
By setting the `transparent` option to `true`, you can also make the frameless
window transparent:
```javascript
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({ transparent: true, frame: false })
win.show()
```
### Limitations
* You can not click through the transparent area. We are going to introduce an
API to set window shape to solve this, see
[our issue](https://github.com/electron/electron/issues/1335) for details.
* Transparent windows are not resizable. Setting `resizable` to `true` may make
a transparent window stop working on some platforms.
* The `blur` filter only applies to the web page, so there is no way to apply
blur effect to the content below the window (i.e. other applications open on
the user's system).
* The window will not be transparent when DevTools is opened.
* On Windows operating systems,
* transparent windows will not work when DWM is
disabled.
* transparent windows can not be maximized using the Windows system menu or by double clicking the title bar. The reasoning behind this can be seen on [this pull request](https://github.com/electron/electron/pull/28207).
* On Linux, users have to put `--enable-transparent-visuals --disable-gpu` in
the command line to disable GPU and allow ARGB to make transparent window,
this is caused by an upstream bug that [alpha channel doesn't work on some
NVidia drivers](https://bugs.chromium.org/p/chromium/issues/detail?id=369209) on
Linux.
* On Mac, the native window shadow will not be shown on a transparent window.
## Click-through window
To create a click-through window, i.e. making the window ignore all mouse
events, you can call the [win.setIgnoreMouseEvents(ignore)][ignore-mouse-events]
API:
```javascript
const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
win.setIgnoreMouseEvents(true)
```
### Forwarding
Ignoring mouse messages makes the web page oblivious to mouse movement, meaning
that mouse movement events will not be emitted. On Windows operating systems an
optional parameter can be used to forward mouse move messages to the web page,
allowing events such as `mouseleave` to be emitted:
```javascript
const { ipcRenderer } = require('electron')
const el = document.getElementById('clickThroughElement')
el.addEventListener('mouseenter', () => {
ipcRenderer.send('set-ignore-mouse-events', true, { forward: true })
})
el.addEventListener('mouseleave', () => {
ipcRenderer.send('set-ignore-mouse-events', false)
})
// Main process
const { ipcMain } = require('electron')
ipcMain.on('set-ignore-mouse-events', (event, ...args) => {
BrowserWindow.fromWebContents(event.sender).setIgnoreMouseEvents(...args)
})
```
This makes the web page click-through when over `el`, and returns to normal
outside it.
## Draggable region
By default, the frameless window is non-draggable. Apps need to specify
`-webkit-app-region: drag` in CSS to tell Electron which regions are draggable
(like the OS's standard titlebar), and apps can also use
`-webkit-app-region: no-drag` to exclude the non-draggable area from the
draggable region. Note that only rectangular shapes are currently supported.
Note: `-webkit-app-region: drag` is known to have problems while the developer tools are open. See this [GitHub issue](https://github.com/electron/electron/issues/3647) for more information including a workaround.
To make the whole window draggable, you can add `-webkit-app-region: drag` as
`body`'s style:
```html
<body style="-webkit-app-region: drag">
</body>
```
And note that if you have made the whole window draggable, you must also mark
buttons as non-draggable, otherwise it would be impossible for users to click on
them:
```css
button {
-webkit-app-region: no-drag;
}
```
If you're only setting a custom titlebar as draggable, you also need to make all
buttons in titlebar non-draggable.
## Text selection
In a frameless window the dragging behavior may conflict with selecting text.
For example, when you drag the titlebar you may accidentally select the text on
the titlebar. To prevent this, you need to disable text selection within a
draggable area like this:
```css
.titlebar {
-webkit-user-select: none;
-webkit-app-region: drag;
}
```
## Context menu
On some platforms, the draggable area will be treated as a non-client frame, so
when you right click on it a system menu will pop up. To make the context menu
behave correctly on all platforms you should never use a custom context menu on
draggable areas.
[ignore-mouse-events]: browser-window.md#winsetignoremouseeventsignore-options

View File

@@ -2,7 +2,8 @@
> Handle responses to HTTP/HTTPS requests.
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
`IncomingMessage` implements the [Readable Stream](https://nodejs.org/api/stream.html#stream_readable_streams)
interface and is therefore an [EventEmitter][event-emitter].

View File

@@ -40,6 +40,8 @@ ipcMain.on('synchronous-message', (event, arg) => {
```javascript
// In renderer process (web page).
// NB. Electron APIs are only accessible from preload, unless contextIsolation is disabled.
// See https://www.electronjs.org/docs/tutorial/process-model#preload-scripts for more details.
const { ipcRenderer } = require('electron')
console.log(ipcRenderer.sendSync('synchronous-message', 'ping')) // prints "pong"

View File

@@ -14,7 +14,7 @@ See [`Menu`](menu.md) for examples.
* `menuItem` MenuItem
* `browserWindow` [BrowserWindow](browser-window.md) | undefined - This will not be defined if no window is open.
* `event` [KeyboardEvent](structures/keyboard-event.md)
* `role` String (optional) - Can be `undo`, `redo`, `cut`, `copy`, `paste`, `pasteAndMatchStyle`, `delete`, `selectAll`, `reload`, `forceReload`, `toggleDevTools`, `resetZoom`, `zoomIn`, `zoomOut`, `togglefullscreen`, `window`, `minimize`, `close`, `help`, `about`, `services`, `hide`, `hideOthers`, `unhide`, `quit`, `startSpeaking`, `stopSpeaking`, `zoom`, `front`, `appMenu`, `fileMenu`, `editMenu`, `viewMenu`, `shareMenu`, `recentDocuments`, `toggleTabBar`, `selectNextTab`, `selectPreviousTab`, `mergeAllWindows`, `clearRecentDocuments`, `moveTabToNewWindow` or `windowMenu` - Define the action of the menu item, when specified the
* `role` String (optional) - Can be `undo`, `redo`, `cut`, `copy`, `paste`, `pasteAndMatchStyle`, `delete`, `selectAll`, `reload`, `forceReload`, `toggleDevTools`, `resetZoom`, `zoomIn`, `zoomOut`, `toggleSpellChecker`, `togglefullscreen`, `window`, `minimize`, `close`, `help`, `about`, `services`, `hide`, `hideOthers`, `unhide`, `quit`, `startSpeaking`, `stopSpeaking`, `zoom`, `front`, `appMenu`, `fileMenu`, `editMenu`, `viewMenu`, `shareMenu`, `recentDocuments`, `toggleTabBar`, `selectNextTab`, `selectPreviousTab`, `mergeAllWindows`, `clearRecentDocuments`, `moveTabToNewWindow` or `windowMenu` - Define the action of the menu item, when specified the
`click` property will be ignored. See [roles](#roles).
* `type` String (optional) - Can be `normal`, `separator`, `submenu`, `checkbox` or
`radio`.
@@ -155,11 +155,17 @@ A `String` indicating the type of the item. Can be `normal`, `separator`, `subme
#### `menuItem.role`
A `String` (optional) indicating the item's role, if set. Can be `undo`, `redo`, `cut`, `copy`, `paste`, `pasteAndMatchStyle`, `delete`, `selectAll`, `reload`, `forceReload`, `toggleDevTools`, `resetZoom`, `zoomIn`, `zoomOut`, `togglefullscreen`, `window`, `minimize`, `close`, `help`, `about`, `services`, `hide`, `hideOthers`, `unhide`, `quit`, `startSpeaking`, `stopSpeaking`, `zoom`, `front`, `appMenu`, `fileMenu`, `editMenu`, `viewMenu`, `recentDocuments`, `toggleTabBar`, `selectNextTab`, `selectPreviousTab`, `mergeAllWindows`, `clearRecentDocuments`, `moveTabToNewWindow` or `windowMenu`
A `String` (optional) indicating the item's role, if set. Can be `undo`, `redo`, `cut`, `copy`, `paste`, `pasteAndMatchStyle`, `delete`, `selectAll`, `reload`, `forceReload`, `toggleDevTools`, `resetZoom`, `zoomIn`, `zoomOut`, `toggleSpellChecker`, `togglefullscreen`, `window`, `minimize`, `close`, `help`, `about`, `services`, `hide`, `hideOthers`, `unhide`, `quit`, `startSpeaking`, `stopSpeaking`, `zoom`, `front`, `appMenu`, `fileMenu`, `editMenu`, `viewMenu`, `shareMenu`, `recentDocuments`, `toggleTabBar`, `selectNextTab`, `selectPreviousTab`, `mergeAllWindows`, `clearRecentDocuments`, `moveTabToNewWindow` or `windowMenu`
#### `menuItem.accelerator`
A `Accelerator` (optional) indicating the item's accelerator, if set.
An `Accelerator` (optional) indicating the item's accelerator, if set.
#### `menuItem.userAccelerator` _Readonly_ _macOS_
An `Accelerator | null` indicating the item's [user-assigned accelerator](https://developer.apple.com/documentation/appkit/nsmenuitem/1514850-userkeyequivalent?language=objc) for the menu item.
**Note:** This property is only initialized after the `MenuItem` has been added to a `Menu`. Either via `Menu.buildFromTemplate` or via `Menu.append()/insert()`. Accessing before initialization will just return `null`.
#### `menuItem.icon`

View File

@@ -162,7 +162,7 @@ const template = [
{ role: 'services' },
{ type: 'separator' },
{ role: 'hide' },
{ role: 'hideothers' },
{ role: 'hideOthers' },
{ role: 'unhide' },
{ type: 'separator' },
{ role: 'quit' }
@@ -405,4 +405,4 @@ Menu:
```
[AboutInformationPropertyListFiles]: https://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/AboutInformationPropertyListFiles.html
[setMenu]: https://github.com/electron/electron/blob/master/docs/api/browser-window.md#winsetmenumenu-linux-windows
[setMenu]: browser-window.md#winsetmenumenu-linux-windows

View File

@@ -16,7 +16,8 @@ channel messaging.
> Port interface for channel messaging in the main process.
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
### Instance Methods

View File

@@ -215,7 +215,8 @@ where `SYSTEM_IMAGE_NAME` should be replaced with any value from [this list](htt
> Natively wrap images such as tray, dock, and application icons.
Process: [Main](../glossary.md#main-process), [Renderer](../glossary.md#renderer-process)
Process: [Main](../glossary.md#main-process), [Renderer](../glossary.md#renderer-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
### Instance Methods

40
docs/api/safe-storage.md Normal file
View File

@@ -0,0 +1,40 @@
# safeStorage
> Allows access to simple encryption and decryption of strings for storage on the local machine.
Process: [Main](../glossary.md#main-process)
This module protects data stored on disk from being accessed by other applications or users with full disk access.
Note that on Mac, access to the system Keychain is required and
these calls can block the current thread to collect user input.
The same is true for Linux, if a password management tool is available.
## Methods
The `safeStorage` module has the following methods:
### `safeStorage.isEncryptionAvailable()`
Returns `Boolean` - Whether encryption is available.
On Linux, returns true if the secret key is
available. On MacOS, returns true if Keychain is available.
On Windows, returns true with no other preconditions.
### `safeStorage.encryptString(plainText)`
* `plainText` String
Returns `Buffer` - An array of bytes representing the encrypted string.
This function will throw an error if encryption fails.
### `safeStorage.decryptString(encrypted)`
* `encrypted` Buffer
Returns `String` - the decrypted string. Decrypts the encrypted buffer
obtained with `safeStorage.encryptString` back into a string.
This function will throw an error if decryption fails.

View File

@@ -2,7 +2,8 @@
> Query and receive events from a sessions active service workers.
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
Instances of the `ServiceWorkers` class are accessed by using `serviceWorkers` property of
a `Session`.

View File

@@ -54,7 +54,8 @@ A `Session` object, the default session object of the app.
> Get and set properties of a session.
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
You can create a `Session` object in the `session` module:
@@ -85,8 +86,8 @@ available from next tick of the process.
const { session } = require('electron')
session.defaultSession.on('will-download', (event, item, webContents) => {
event.preventDefault()
require('request')(item.getURL(), (data) => {
require('fs').writeFileSync('/somewhere', data)
require('got')(item.getURL()).then((response) => {
require('fs').writeFileSync('/somewhere', response.body)
})
})
```
@@ -179,7 +180,97 @@ Emitted when a hunspell dictionary file download fails. For details
on the failure you should collect a netlog and inspect the download
request.
#### Event: 'select-serial-port' _Experimental_
#### Event: 'select-hid-device'
Returns:
* `event` Event
* `details` Object
* `deviceList` [HIDDevice[]](structures/hid-device.md)
* `frame` [WebFrameMain](web-frame-main.md)
* `callback` Function
* `deviceId` String | null (optional)
Emitted when a HID device needs to be selected when a call to
`navigator.hid.requestDevice` is made. `callback` should be called with
`deviceId` to be selected; passing no arguments to `callback` will
cancel the request. Additionally, permissioning on `navigator.hid` can
be further managed by using [ses.setPermissionCheckHandler(handler)](#sessetpermissioncheckhandlerhandler)
and [ses.setDevicePermissionHandler(handler)`](#sessetdevicepermissionhandlerhandler).
```javascript
const { app, BrowserWindow } = require('electron')
let win = null
app.whenReady().then(() => {
win = new BrowserWindow()
win.webContents.session.setPermissionCheckHandler((webContents, permission, requestingOrigin, details) => {
if (permission === 'hid') {
// Add logic here to determine if permission should be given to allow HID selection
return true
}
return false
})
// Optionally, retrieve previously persisted devices from a persistent store
const grantedDevices = fetchGrantedDevices()
win.webContents.session.setDevicePermissionHandler((details) => {
if (new URL(details.origin).hostname === 'some-host' && details.deviceType === 'hid') {
if (details.device.vendorId === 123 && details.device.productId === 345) {
// Always allow this type of device (this allows skipping the call to `navigator.hid.requestDevice` first)
return true
}
// Search through the list of devices that have previously been granted permission
return grantedDevices.some((grantedDevice) => {
return grantedDevice.vendorId === details.device.vendorId &&
grantedDevice.productId === details.device.productId &&
grantedDevice.serialNumber && grantedDevice.serialNumber === details.device.serialNumber
})
}
return false
})
win.webContents.session.on('select-hid-device', (event, details, callback) => {
event.preventDefault()
const selectedDevice = details.deviceList.find((device) => {
return device.vendorId === '9025' && device.productId === '67'
})
callback(selectedPort?.deviceId)
})
})
```
#### Event: 'hid-device-added'
Returns:
* `event` Event
* `details` Object
* `device` [HIDDevice[]](structures/hid-device.md)
* `frame` [WebFrameMain](web-frame-main.md)
Emitted when a new HID device becomes available. For example, when a new USB device is plugged in.
This event will only be emitted after `navigator.hid.requestDevice` has been called and `select-hid-device` has fired.
#### Event: 'hid-device-removed'
Returns:
* `event` Event
* `details` Object
* `device` [HIDDevice[]](structures/hid-device.md)
* `frame` [WebFrameMain](web-frame-main.md)
Emitted when a HID device has been removed. For example, this event will fire when a USB device is unplugged.
This event will only be emitted after `navigator.hid.requestDevice` has been called and `select-hid-device` has fired.
#### Event: 'select-serial-port'
Returns:
@@ -196,20 +287,45 @@ cancel the request. Additionally, permissioning on `navigator.serial` can
be managed by using [ses.setPermissionCheckHandler(handler)](#sessetpermissioncheckhandlerhandler)
with the `serial` permission.
Because this is an experimental feature it is disabled by default. To enable this feature, you
will need to use the `--enable-features=ElectronSerialChooser` command line switch.
```javascript
const { app, BrowserWindow } = require('electron')
let win = null
app.commandLine.appendSwitch('enable-features', 'ElectronSerialChooser')
app.whenReady().then(() => {
win = new BrowserWindow({
width: 800,
height: 600
})
win.webContents.session.setPermissionCheckHandler((webContents, permission, requestingOrigin, details) => {
if (permission === 'serial') {
// Add logic here to determine if permission should be given to allow serial selection
return true
}
return false
})
// Optionally, retrieve previously persisted devices from a persistent store
const grantedDevices = fetchGrantedDevices()
win.webContents.session.setDevicePermissionHandler((details) => {
if (new URL(details.origin).hostname === 'some-host' && details.deviceType === 'serial') {
if (details.device.vendorId === 123 && details.device.productId === 345) {
// Always allow this type of device (this allows skipping the call to `navigator.serial.requestPort` first)
return true
}
// Search through the list of devices that have previously been granted permission
return grantedDevices.some((grantedDevice) => {
return grantedDevice.vendorId === details.device.vendorId &&
grantedDevice.productId === details.device.productId &&
grantedDevice.serialNumber && grantedDevice.serialNumber === details.device.serialNumber
})
}
return false
})
win.webContents.session.on('select-serial-port', (event, portList, webContents, callback) => {
event.preventDefault()
const selectedPort = portList.find((device) => {
@@ -224,7 +340,7 @@ app.whenReady().then(() => {
})
```
#### Event: 'serial-port-added' _Experimental_
#### Event: 'serial-port-added'
Returns:
@@ -234,7 +350,7 @@ Returns:
Emitted after `navigator.serial.requestPort` has been called and `select-serial-port` has fired if a new serial port becomes available. For example, this event will fire when a new USB device is plugged in.
#### Event: 'serial-port-removed' _Experimental_
#### Event: 'serial-port-removed'
Returns:
@@ -446,7 +562,8 @@ the original network configuration.
* `hostname` String
* `certificate` [Certificate](structures/certificate.md)
* `validatedCertificate` [Certificate](structures/certificate.md)
* `verificationResult` String - Verification result from chromium.
* `isIssuedByKnownRoot` Boolean - `true` if Chromium recognises the root CA as a standard root. If it isn't then it's probably the case that this certificate was generated by a MITM proxy whose root has been installed locally (for example, by a corporate proxy). This should not be trusted if the `verificationResult` is not `OK`.
* `verificationResult` String - `OK` if the certificate is trusted, otherwise an error like `CERT_REVOKED`.
* `errorCode` Integer - Error code.
* `callback` Function
* `verificationResult` Integer - Value can be one of certificate error codes
@@ -501,6 +618,7 @@ win.webContents.session.setCertificateVerifyProc((request, callback) => {
* `permissionGranted` Boolean - Allow or deny the permission.
* `details` Object - Some properties are only available on certain permission types.
* `externalURL` String (optional) - The url of the `openExternal` request.
* `securityOrigin` String (optional) - The security origin of the `media` request.
* `mediaTypes` String[] (optional) - The types of media access being requested, elements can be `video`
or `audio`
* `requestingUrl` String - The last URL the requesting frame loaded
@@ -526,8 +644,8 @@ session.fromPartition('some-partition').setPermissionRequestHandler((webContents
#### `ses.setPermissionCheckHandler(handler)`
* `handler` Function\<Boolean> | null
* `webContents` ([WebContents](web-contents.md) | null) - WebContents checking the permission. Please note that if the request comes from a subframe you should use `requestingUrl` to check the request origin. Cross origin sub frames making permission checks will pass a `null` webContents to this handler. You should use `embeddingOrigin` and `requestingOrigin` to determine what origin the owning frame and the requesting frame are on respectively.
* `permission` String - Type of permission check. Valid values are `midiSysex`, `notifications`, `geolocation`, `media`,`mediaKeySystem`,`midi`, `pointerLock`, `fullscreen`, `openExternal`, or `serial`.
* `webContents` ([WebContents](web-contents.md) | null) - WebContents checking the permission. Please note that if the request comes from a subframe you should use `requestingUrl` to check the request origin. All cross origin sub frames making permission checks will pass a `null` webContents to this handler, while certain other permission checks such as `notifications` checks will always pass `null`. You should use `embeddingOrigin` and `requestingOrigin` to determine what origin the owning frame and the requesting frame are on respectively.
* `permission` String - Type of permission check. Valid values are `midiSysex`, `notifications`, `geolocation`, `media`,`mediaKeySystem`,`midi`, `pointerLock`, `fullscreen`, `openExternal`, `hid`, or `serial`.
* `requestingOrigin` String - The origin URL of the permission check
* `details` Object - Some properties are only available on certain permission types.
* `embeddingOrigin` String (optional) - The origin of the frame embedding the frame that made the permission check. Only set for cross-origin sub frames making permission checks.
@@ -555,6 +673,78 @@ session.fromPartition('some-partition').setPermissionCheckHandler((webContents,
})
```
#### `ses.setDevicePermissionHandler(handler)`
* `handler` Function\<Boolean> | null
* `details` Object
* `deviceType` String - The type of device that permission is being requested on, can be `hid` or `serial`.
* `origin` String - The origin URL of the device permission check.
* `device` [HIDDevice](structures/hid-device.md) | [SerialPort](structures/serial-port.md)- the device that permission is being requested for.
* `frame` [WebFrameMain](web-frame-main.md) - WebFrameMain checking the device permission.
Sets the handler which can be used to respond to device permission checks for the `session`.
Returning `true` will allow the device to be permitted and `false` will reject it.
To clear the handler, call `setDevicePermissionHandler(null)`.
This handler can be used to provide default permissioning to devices without first calling for permission
to devices (eg via `navigator.hid.requestDevice`). If this handler is not defined, the default device
permissions as granted through device selection (eg via `navigator.hid.requestDevice`) will be used.
Additionally, the default behavior of Electron is to store granted device permision through the lifetime
of the corresponding WebContents. If longer term storage is needed, a developer can store granted device
permissions (eg when handling the `select-hid-device` event) and then read from that storage with `setDevicePermissionHandler`.
```javascript
const { app, BrowserWindow } = require('electron')
let win = null
app.whenReady().then(() => {
win = new BrowserWindow()
win.webContents.session.setPermissionCheckHandler((webContents, permission, requestingOrigin, details) => {
if (permission === 'hid') {
// Add logic here to determine if permission should be given to allow HID selection
return true
} else if (permission === 'serial') {
// Add logic here to determine if permission should be given to allow serial port selection
}
return false
})
// Optionally, retrieve previously persisted devices from a persistent store
const grantedDevices = fetchGrantedDevices()
win.webContents.session.setDevicePermissionHandler((details) => {
if (new URL(details.origin).hostname === 'some-host' && details.deviceType === 'hid') {
if (details.device.vendorId === 123 && details.device.productId === 345) {
// Always allow this type of device (this allows skipping the call to `navigator.hid.requestDevice` first)
return true
}
// Search through the list of devices that have previously been granted permission
return grantedDevices.some((grantedDevice) => {
return grantedDevice.vendorId === details.device.vendorId &&
grantedDevice.productId === details.device.productId &&
grantedDevice.serialNumber && grantedDevice.serialNumber === details.device.serialNumber
})
} else if (details.deviceType === 'serial') {
if (details.device.vendorId === 123 && details.device.productId === 345) {
// Always allow this type of device (this allows skipping the call to `navigator.hid.requestDevice` first)
return true
}
}
return false
})
win.webContents.session.on('select-hid-device', (event, details, callback) => {
event.preventDefault()
const selectedDevice = details.deviceList.find((device) => {
return device.vendorId === '9025' && device.productId === '67'
})
callback(selectedPort?.deviceId)
})
})
```
#### `ses.clearHostResolverCache()`
Returns `Promise<void>` - Resolves when the operation is complete.

View File

@@ -0,0 +1,8 @@
# HIDDevice Object
* `deviceId` String - Unique identifier for the device.
* `name` String - Name of the device.
* `vendorId` Integer - The USB vendor ID.
* `productId` Integer - The USB product ID.
* `serialNumber` String (optional) - The USB device serial number.
* `guid` String (optional) - Unique identifier for the HID interface. A device may have multiple HID interfaces.

View File

@@ -0,0 +1,3 @@
# WebRequestFilter Object
* `urls` String[] - Array of URL patterns that will be used to filter out the requests that do not match the URL patterns.

View File

@@ -2,7 +2,8 @@
> Create a button in the touch bar for native macOS applications
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
### `new TouchBarButton(options)`

View File

@@ -2,7 +2,8 @@
> Create a color picker in the touch bar for native macOS applications
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
### `new TouchBarColorPicker(options)`

View File

@@ -2,7 +2,8 @@
> Create a group in the touch bar for native macOS applications
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
### `new TouchBarGroup(options)`

View File

@@ -2,7 +2,8 @@
> Create a label in the touch bar for native macOS applications
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
### `new TouchBarLabel(options)`

View File

@@ -7,6 +7,7 @@
>
> Note: Only one instance of this class can be added per TouchBar.
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
### `new TouchBarOtherItemsProxy()`

View File

@@ -2,7 +2,8 @@
> Create a popover in the touch bar for native macOS applications
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
### `new TouchBarPopover(options)`

View File

@@ -2,7 +2,8 @@
> Create a scrubber (a scrollable selector)
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
### `new TouchBarScrubber(options)`
@@ -14,7 +15,7 @@ Process: [Main](../glossary.md#main-process)
* `highlightedIndex` Integer - The index of the item the user touched.
* `selectedStyle` String (optional) - Selected item style. Can be `background`, `outline` or `none`. Defaults to `none`.
* `overlayStyle` String (optional) - Selected overlay item style. Can be `background`, `outline` or `none`. Defaults to `none`.
* `showArrowButtons` Boolean (optional) - Defaults to `false`.
* `showArrowButtons` Boolean (optional) - Whether to show arrow buttons. Defaults to `false` and is only shown if `items` is non-empty.
* `mode` String (optional) - Can be `fixed` or `free`. The default is `free`.
* `continuous` Boolean (optional) - Defaults to `true`.

View File

@@ -2,7 +2,8 @@
> Create a segmented control (a button group) where one button has a selected state
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
### `new TouchBarSegmentedControl(options)`

View File

@@ -2,7 +2,8 @@
> Create a slider in the touch bar for native macOS applications
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
### `new TouchBarSlider(options)`

View File

@@ -2,7 +2,8 @@
> Create a spacer between two items in the touch bar for native macOS applications
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
### `new TouchBarSpacer(options)`

View File

@@ -45,11 +45,32 @@ returns `null`.
Returns `WebContents` | undefined - A WebContents instance with the given ID, or
`undefined` if there is no WebContents associated with the given ID.
### `webContents.fromDevToolsTargetId(targetId)`
* `targetId` String - The Chrome DevTools Protocol [TargetID](https://chromedevtools.github.io/devtools-protocol/tot/Target/#type-TargetID) associated with the WebContents instance.
Returns `WebContents` | undefined - A WebContents instance with the given TargetID, or
`undefined` if there is no WebContents associated with the given TargetID.
When communicating with the [Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/),
it can be useful to lookup a WebContents instance based on its assigned TargetID.
```js
async function lookupTargetId (browserWindow) {
const wc = browserWindow.webContents
await wc.debugger.attach('1.3')
const { targetInfo } = await wc.debugger.sendCommand('Target.getTargetInfo')
const { targetId } = targetInfo
const targetWebContents = await webContents.fromDevToolsTargetId(targetId)
}
```
## Class: WebContents
> Render and control the contents of a BrowserWindow instance.
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
### Instance Events
@@ -113,7 +134,7 @@ Returns:
* `event` Event
Emitted when the document in the given frame is loaded.
Emitted when the document in the top-level frame is loaded.
#### Event: 'page-title-updated'
@@ -448,6 +469,8 @@ Returns:
* `control` Boolean - Equivalent to [KeyboardEvent.controlKey][keyboardevent].
* `alt` Boolean - Equivalent to [KeyboardEvent.altKey][keyboardevent].
* `meta` Boolean - Equivalent to [KeyboardEvent.metaKey][keyboardevent].
* `location` Number - Equivalent to [KeyboardEvent.location][keyboardevent].
* `modifiers` String[] - See [InputEvent.modifiers](structures/input-event.md).
Emitted before dispatching the `keydown` and `keyup` events in the page.
Calling `event.preventDefault` will prevent the page `keydown`/`keyup` events
@@ -507,6 +530,7 @@ Returns:
* `certificate` [Certificate](structures/certificate.md)
* `callback` Function
* `isTrusted` Boolean - Indicates whether the certificate can be considered trusted.
* `isMainFrame` Boolean
Emitted when failed to verify the `certificate` for `url`.
@@ -627,6 +651,7 @@ Returns:
* `params` Object
* `x` Integer - x coordinate.
* `y` Integer - y coordinate.
* `frame` WebFrameMain - Frame from which the context menu was invoked.
* `linkURL` String - URL of the link that encloses the node the context menu
was invoked on.
* `linkText` String - Text associated with the link. May be an empty
@@ -853,6 +878,16 @@ Emitted when the `WebContents` preferred size has changed.
This event will only be emitted when `enablePreferredSizeMode` is set to `true`
in `webPreferences`.
#### Event: 'frame-created'
Returns:
* `event` Event
* `details` Object
* `frame` WebFrameMain
Emitted when the [mainFrame](web-contents.md#contentsmainframe-readonly), an `<iframe>`, or a nested `<iframe>` is loaded within the page.
### Instance Methods
#### `contents.loadURL(url[, options])`
@@ -1459,8 +1494,8 @@ win.loadURL('http://github.com')
win.webContents.on('did-finish-load', () => {
// Use default printing options
const pdfPath = path.join(os.homedir(), 'Desktop', 'temp.pdf')
win.webContents.printToPDF({}).then(data => {
const pdfPath = path.join(os.homedir(), 'Desktop', 'temp.pdf')
fs.writeFile(pdfPath, data, (error) => {
if (error) throw error
console.log(`Wrote PDF successfully to ${pdfPath}`)
@@ -1792,7 +1827,8 @@ End subscribing for frame presentation events.
#### `contents.startDrag(item)`
* `item` Object
* `file` String[] | String - The path(s) to the file(s) being dragged.
* `file` String - The path to the file being dragged.
* `files` String[] (optional) - The paths to the files being dragged. (`files` will override `file` field)
* `icon` [NativeImage](native-image.md) | String - The image must be
non-empty on macOS.
@@ -1923,6 +1959,20 @@ when the page becomes backgrounded. This also affects the Page Visibility API.
Returns `String` - the type of the webContent. Can be `backgroundPage`, `window`, `browserView`, `remote`, `webview` or `offscreen`.
#### `contents.setImageAnimationPolicy(policy)`
* `policy` String - Can be `animate`, `animateOnce` or `noAnimation`.
Sets the image animation policy for this webContents. The policy only affects
_new_ images, existing images that are currently being animated are unaffected.
This is a known limitation in Chromium, you can force image animation to be
recalculated with `img.src = img.src` which will result in no network traffic
but will update the animation policy.
This corresponds to the [animationPolicy][] accessibility feature in Chromium.
[animationPolicy]: https://developer.chrome.com/docs/extensions/reference/accessibilityFeatures/#property-animationPolicy
### Instance Properties
#### `contents.audioMuted`
@@ -1975,11 +2025,6 @@ when the DevTools has been closed.
A [`Debugger`](debugger.md) instance for this webContents.
[keyboardevent]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent
[event-emitter]: https://nodejs.org/api/events.html#events_class_eventemitter
[SCA]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm
[`postMessage`]: https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
#### `contents.backgroundThrottling`
A `Boolean` property that determines whether or not this WebContents will throttle animations and timers
@@ -1988,3 +2033,8 @@ when the page becomes backgrounded. This also affects the Page Visibility API.
#### `contents.mainFrame` _Readonly_
A [`WebFrameMain`](web-frame-main.md) property that represents the top frame of the page's frame hierarchy.
[keyboardevent]: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent
[event-emitter]: https://nodejs.org/api/events.html#events_class_eventemitter
[SCA]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm
[`postMessage`]: https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

View File

@@ -68,7 +68,14 @@ or `undefined` if there is no WebFrameMain associated with the given IDs.
## Class: WebFrameMain
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
### Instance Events
#### Event: 'dom-ready'
Emitted when the document is loaded.
### Instance Methods

View File

@@ -2,7 +2,8 @@
> Intercept and modify the contents of a request at various stages of its lifetime.
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
Instances of the `WebRequest` class are accessed by using the `webRequest`
property of a `Session`.
@@ -42,9 +43,7 @@ The following methods are available on instances of `WebRequest`:
#### `webRequest.onBeforeRequest([filter, ]listener)`
* `filter` Object (optional)
* `urls` String[] - Array of URL patterns that will be used to filter out the
requests that do not match the URL patterns.
* `filter` [WebRequestFilter](structures/web-request-filter.md) (optional)
* `listener` Function | null
* `details` Object
* `id` Integer
@@ -53,7 +52,7 @@ The following methods are available on instances of `WebRequest`:
* `webContentsId` Integer (optional)
* `webContents` WebContents (optional)
* `frame` WebFrameMain (optional)
* `resourceType` String
* `resourceType` String - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
* `referrer` String
* `timestamp` Double
* `uploadData` [UploadData[]](structures/upload-data.md)
@@ -87,9 +86,7 @@ Some examples of valid `urls`:
#### `webRequest.onBeforeSendHeaders([filter, ]listener)`
* `filter` Object (optional)
* `urls` String[] - Array of URL patterns that will be used to filter out the
requests that do not match the URL patterns.
* `filter` [WebRequestFilter](structures/web-request-filter.md) (optional)
* `listener` Function | null
* `details` Object
* `id` Integer
@@ -98,7 +95,7 @@ Some examples of valid `urls`:
* `webContentsId` Integer (optional)
* `webContents` WebContents (optional)
* `frame` WebFrameMain (optional)
* `resourceType` String
* `resourceType` String - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
* `referrer` String
* `timestamp` Double
* `requestHeaders` Record<string, string>
@@ -116,9 +113,7 @@ The `callback` has to be called with a `response` object.
#### `webRequest.onSendHeaders([filter, ]listener)`
* `filter` Object (optional)
* `urls` String[] - Array of URL patterns that will be used to filter out the
requests that do not match the URL patterns.
* `filter` [WebRequestFilter](structures/web-request-filter.md) (optional)
* `listener` Function | null
* `details` Object
* `id` Integer
@@ -127,7 +122,7 @@ The `callback` has to be called with a `response` object.
* `webContentsId` Integer (optional)
* `webContents` WebContents (optional)
* `frame` WebFrameMain (optional)
* `resourceType` String
* `resourceType` String - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
* `referrer` String
* `timestamp` Double
* `requestHeaders` Record<string, string>
@@ -138,9 +133,7 @@ response are visible by the time this listener is fired.
#### `webRequest.onHeadersReceived([filter, ]listener)`
* `filter` Object (optional)
* `urls` String[] - Array of URL patterns that will be used to filter out the
requests that do not match the URL patterns.
* `filter` [WebRequestFilter](structures/web-request-filter.md) (optional)
* `listener` Function | null
* `details` Object
* `id` Integer
@@ -149,12 +142,11 @@ response are visible by the time this listener is fired.
* `webContentsId` Integer (optional)
* `webContents` WebContents (optional)
* `frame` WebFrameMain (optional)
* `resourceType` String
* `resourceType` String - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
* `referrer` String
* `timestamp` Double
* `statusLine` String
* `statusCode` Integer
* `requestHeaders` Record<string, string>
* `responseHeaders` Record<string, string[]> (optional)
* `callback` Function
* `headersReceivedResponse` Object
@@ -172,9 +164,7 @@ The `callback` has to be called with a `response` object.
#### `webRequest.onResponseStarted([filter, ]listener)`
* `filter` Object (optional)
* `urls` String[] - Array of URL patterns that will be used to filter out the
requests that do not match the URL patterns.
* `filter` [WebRequestFilter](structures/web-request-filter.md) (optional)
* `listener` Function | null
* `details` Object
* `id` Integer
@@ -183,7 +173,7 @@ The `callback` has to be called with a `response` object.
* `webContentsId` Integer (optional)
* `webContents` WebContents (optional)
* `frame` WebFrameMain (optional)
* `resourceType` String
* `resourceType` String - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
* `referrer` String
* `timestamp` Double
* `responseHeaders` Record<string, string[]> (optional)
@@ -198,9 +188,7 @@ and response headers are available.
#### `webRequest.onBeforeRedirect([filter, ]listener)`
* `filter` Object (optional)
* `urls` String[] - Array of URL patterns that will be used to filter out the
requests that do not match the URL patterns.
* `filter` [WebRequestFilter](structures/web-request-filter.md) (optional)
* `listener` Function | null
* `details` Object
* `id` Integer
@@ -209,7 +197,7 @@ and response headers are available.
* `webContentsId` Integer (optional)
* `webContents` WebContents (optional)
* `frame` WebFrameMain (optional)
* `resourceType` String
* `resourceType` String - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
* `referrer` String
* `timestamp` Double
* `redirectURL` String
@@ -225,9 +213,7 @@ redirect is about to occur.
#### `webRequest.onCompleted([filter, ]listener)`
* `filter` Object (optional)
* `urls` String[] - Array of URL patterns that will be used to filter out the
requests that do not match the URL patterns.
* `filter` [WebRequestFilter](structures/web-request-filter.md) (optional)
* `listener` Function | null
* `details` Object
* `id` Integer
@@ -236,7 +222,7 @@ redirect is about to occur.
* `webContentsId` Integer (optional)
* `webContents` WebContents (optional)
* `frame` WebFrameMain (optional)
* `resourceType` String
* `resourceType` String - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
* `referrer` String
* `timestamp` Double
* `responseHeaders` Record<string, string[]> (optional)
@@ -250,9 +236,7 @@ completed.
#### `webRequest.onErrorOccurred([filter, ]listener)`
* `filter` Object (optional)
* `urls` String[] - Array of URL patterns that will be used to filter out the
requests that do not match the URL patterns.
* `filter` [WebRequestFilter](structures/web-request-filter.md) (optional)
* `listener` Function | null
* `details` Object
* `id` Integer
@@ -261,7 +245,7 @@ completed.
* `webContentsId` Integer (optional)
* `webContents` WebContents (optional)
* `frame` WebFrameMain (optional)
* `resourceType` String
* `resourceType` String - Can be `mainFrame`, `subFrame`, `stylesheet`, `script`, `image`, `font`, `object`, `xhr`, `ping`, `cspReport`, `media`, `webSocket` or `other`.
* `referrer` String
* `timestamp` Double
* `fromCache` Boolean

View File

@@ -18,7 +18,8 @@ more information see the [BrowserWindow constructor docs](browser-window.md).
> Display external web content in an isolated frame and process.
Process: [Renderer](../glossary.md#renderer-process)
Process: [Renderer](../glossary.md#renderer-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
Use the `webview` tag to embed 'guest' content (such as web pages) in your
Electron app. The guest content is contained within the `webview` container.
@@ -142,12 +143,16 @@ browser plugins. Plugins are disabled by default.
### `preload`
```html
<!-- from a file -->
<webview src="https://www.github.com/" preload="./test.js"></webview>
<!-- or if you want to load from an asar archive -->
<webview src="https://www.github.com/" preload="./app.asar/test.js"></webview>
```
A `String` that specifies a script that will be loaded before other scripts run in the guest
page. The protocol of script's URL must be either `file:` or `asar:`, because it
will be loaded by `require` in guest page under the hood.
page. The protocol of script's URL must be `file:` (even when using `asar:` archives) because
it will be loaded by Node's `require` under the hood, which treats `asar:` archives as virtual
directories.
When the guest page doesn't have node integration this script will still have
access to all Node APIs, but global objects injected by Node will be deleted
@@ -605,6 +610,21 @@ listening to the `channel` event with the [`ipcRenderer`](ipc-renderer.md) modul
See [webContents.send](web-contents.md#contentssendchannel-args) for
examples.
### `<webview>.sendToFrame(frameId, channel, ...args)`
* `frameId` [number, number] - `[processId, frameId]`
* `channel` String
* `...args` any[]
Returns `Promise<void>`
Send an asynchronous message to renderer process via `channel`, you can also
send arbitrary arguments. The renderer process can handle the message by
listening to the `channel` event with the [`ipcRenderer`](ipc-renderer.md) module.
See [webContents.sendToFrame](web-contents.md#contentssendtoframeframeid-channel-args) for
examples.
### `<webview>.sendInputEvent(event)`
* `event` [MouseInputEvent](structures/mouse-input-event.md) | [MouseWheelInputEvent](structures/mouse-wheel-input-event.md) | [KeyboardInputEvent](structures/keyboard-input-event.md)
@@ -709,6 +729,10 @@ Corresponds to the points in time when the spinner of the tab starts spinning.
Corresponds to the points in time when the spinner of the tab stops spinning.
### Event: 'did-attach'
Fired when attached to the embedder web contents.
### Event: 'dom-ready'
Fired when document in the given frame is loaded.
@@ -829,6 +853,32 @@ this purpose.
Calling `event.preventDefault()` does __NOT__ have any effect.
### Event: 'did-start-navigation'
Returns:
* `url` String
* `isInPlace` Boolean
* `isMainFrame` Boolean
* `frameProcessId` Integer
* `frameRoutingId` Integer
Emitted when any frame (including main) starts navigating. `isInPlace` will be
`true` for in-page navigations.
### Event: 'did-redirect-navigation'
Returns:
* `url` String
* `isInPlace` Boolean
* `isMainFrame` Boolean
* `frameProcessId` Integer
* `frameRoutingId` Integer
Emitted after a server side redirect occurs during navigation. For example a 302
redirect.
### Event: 'did-navigate'
Returns:
@@ -841,6 +891,23 @@ This event is not emitted for in-page navigations, such as clicking anchor links
or updating the `window.location.hash`. Use `did-navigate-in-page` event for
this purpose.
### Event: 'did-frame-navigate'
Returns:
* `url` String
* `httpResponseCode` Integer - -1 for non HTTP navigations
* `httpStatusText` String - empty for non HTTP navigations,
* `isMainFrame` Boolean
* `frameProcessId` Integer
* `frameRoutingId` Integer
Emitted when any frame navigation is done.
This event is not emitted for in-page navigations, such as clicking anchor links
or updating the `window.location.hash`. Use `did-navigate-in-page` event for
this purpose.
### Event: 'did-navigate-in-page'
Returns:
@@ -872,6 +939,7 @@ webview.addEventListener('close', () => {
Returns:
* `frameId` [number, number] - pair of `[processId, frameId]`.
* `channel` String
* `args` any[]
@@ -957,3 +1025,78 @@ Emitted when DevTools is focused / opened.
[runtime-enabled-features]: https://cs.chromium.org/chromium/src/third_party/blink/renderer/platform/runtime_enabled_features.json5?l=70
[chrome-webview]: https://developer.chrome.com/docs/extensions/reference/webviewTag/
### Event: 'context-menu'
Returns:
* `params` Object
* `x` Integer - x coordinate.
* `y` Integer - y coordinate.
* `linkURL` String - URL of the link that encloses the node the context menu
was invoked on.
* `linkText` String - Text associated with the link. May be an empty
string if the contents of the link are an image.
* `pageURL` String - URL of the top level page that the context menu was
invoked on.
* `frameURL` String - URL of the subframe that the context menu was invoked
on.
* `srcURL` String - Source URL for the element that the context menu
was invoked on. Elements with source URLs are images, audio and video.
* `mediaType` String - Type of the node the context menu was invoked on. Can
be `none`, `image`, `audio`, `video`, `canvas`, `file` or `plugin`.
* `hasImageContents` Boolean - Whether the context menu was invoked on an image
which has non-empty contents.
* `isEditable` Boolean - Whether the context is editable.
* `selectionText` String - Text of the selection that the context menu was
invoked on.
* `titleText` String - Title text of the selection that the context menu was
invoked on.
* `altText` String - Alt text of the selection that the context menu was
invoked on.
* `suggestedFilename` String - Suggested filename to be used when saving file through 'Save
Link As' option of context menu.
* `selectionRect` [Rectangle](structures/rectangle.md) - Rect representing the coordinates in the document space of the selection.
* `selectionStartOffset` Number - Start position of the selection text.
* `referrerPolicy` [Referrer](structures/referrer.md) - The referrer policy of the frame on which the menu is invoked.
* `misspelledWord` String - The misspelled word under the cursor, if any.
* `dictionarySuggestions` String[] - An array of suggested words to show the
user to replace the `misspelledWord`. Only available if there is a misspelled
word and spellchecker is enabled.
* `frameCharset` String - The character encoding of the frame on which the
menu was invoked.
* `inputFieldType` String - If the context menu was invoked on an input
field, the type of that field. Possible values are `none`, `plainText`,
`password`, `other`.
* `spellcheckEnabled` Boolean - If the context is editable, whether or not spellchecking is enabled.
* `menuSourceType` String - Input source that invoked the context menu.
Can be `none`, `mouse`, `keyboard`, `touch`, `touchMenu`, `longPress`, `longTap`, `touchHandle`, `stylus`, `adjustSelection`, or `adjustSelectionReset`.
* `mediaFlags` Object - The flags for the media element the context menu was
invoked on.
* `inError` Boolean - Whether the media element has crashed.
* `isPaused` Boolean - Whether the media element is paused.
* `isMuted` Boolean - Whether the media element is muted.
* `hasAudio` Boolean - Whether the media element has audio.
* `isLooping` Boolean - Whether the media element is looping.
* `isControlsVisible` Boolean - Whether the media element's controls are
visible.
* `canToggleControls` Boolean - Whether the media element's controls are
toggleable.
* `canPrint` Boolean - Whether the media element can be printed.
* `canSave` Boolean - Whether or not the media element can be downloaded.
* `canShowPictureInPicture` Boolean - Whether the media element can show picture-in-picture.
* `isShowingPictureInPicture` Boolean - Whether the media element is currently showing picture-in-picture.
* `canRotate` Boolean - Whether the media element can be rotated.
* `canLoop` Boolean - Whether the media element can be looped.
* `editFlags` Object - These flags indicate whether the renderer believes it
is able to perform the corresponding action.
* `canUndo` Boolean - Whether the renderer believes it can undo.
* `canRedo` Boolean - Whether the renderer believes it can redo.
* `canCut` Boolean - Whether the renderer believes it can cut.
* `canCopy` Boolean - Whether the renderer believes it can copy.
* `canPaste` Boolean - Whether the renderer believes it can paste.
* `canDelete` Boolean - Whether the renderer believes it can delete.
* `canSelectAll` Boolean - Whether the renderer believes it can select all.
* `canEditRichly` Boolean - Whether the renderer believes it can edit text richly.
Emitted when there is a new context menu that needs to be handled.

View File

@@ -85,15 +85,18 @@ const mainWindow = new BrowserWindow()
mainWindow.webContents.setWindowOpenHandler(({ url }) => {
if (url === 'about:blank') {
return {
frame: false,
fullscreenable: false,
backgroundColor: 'black',
webPreferences: {
preload: 'my-child-window-preload-script.js'
action: 'allow',
overrideBrowserWindowOptions: {
frame: false,
fullscreenable: false,
backgroundColor: 'black',
webPreferences: {
preload: 'my-child-window-preload-script.js'
}
}
}
}
return false
return { action: 'deny' }
})
```

View File

@@ -12,8 +12,96 @@ 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 (17.0)
### Removed: `desktopCapturer.getSources` in the renderer
The `desktopCapturer.getSources` API is now only available in the main process.
This has been changed in order to improve the default security of Electron
apps.
If you need this functionality, it can be replaced as follows:
```js
// Main process
const { ipcMain, desktopCapturer } = require('electron')
ipcMain.handle(
'DESKTOP_CAPTURER_GET_SOURCES',
(event, opts) => desktopCapturer.getSources(opts)
)
```
```js
// Renderer process
const { ipcRenderer } = require('electron')
const desktopCapturer = {
getSources: (opts) => ipcRenderer.invoke('DESKTOP_CAPTURER_GET_SOURCES', opts)
}
```
However, you should consider further restricting the information returned to
the renderer; for instance, displaying a source selector to the user and only
returning the selected source.
## Planned Breaking API Changes (16.0)
### Behavior Changed: `crashReporter` implementation switched to Crashpad on Linux
The underlying implementation of the `crashReporter` API on Linux has changed
from Breakpad to Crashpad, bringing it in line with Windows and Mac. As a
result of this, child processes are now automatically monitored, and calling
`process.crashReporter.start` in Node child processes is no longer needed (and
is not advisable, as it will start a second instance of the Crashpad reporter).
There are also some subtle changes to how annotations will be reported on
Linux, including that long values will no longer be split between annotations
appended with `__1`, `__2` and so on, and instead will be truncated at the
(new, longer) annotation value limit.
### Deprecated: `desktopCapturer.getSources` in the renderer
Usage of the `desktopCapturer.getSources` API in the renderer has been
deprecated and will be removed. This change improves the default security of
Electron apps.
See [here](#removed-desktopcapturergetsources-in-the-renderer) for details on
how to replace this API in your app.
## Planned Breaking API Changes (15.0)
### Default Changed: `nativeWindowOpen` defaults to `true`
Prior to Electron 15, `window.open` was by default shimmed to use
`BrowserWindowProxy`. This meant that `window.open('about:blank')` did not work
to open synchronously scriptable child windows, among other incompatibilities.
`nativeWindowOpen` is no longer experimental, and is now the default.
See the documentation for [window.open in Electron](api/window-open.md)
for more details.
## Planned Breaking API Changes (14.0)
### Removed: `remote` module
The `remote` module was deprecated in Electron 12, and will be removed in
Electron 14. It is replaced by the
[`@electron/remote`](https://github.com/electron/remote) module.
```js
// Deprecated in Electron 12:
const { BrowserWindow } = require('electron').remote
```
```js
// Replace with:
const { BrowserWindow } = require('@electron/remote')
// In the main process:
require('@electron/remote/main').initialize()
```
### Removed: `app.allowRendererProcessReuse`
The `app.allowRendererProcessReuse` property will be removed as part of our plan to
@@ -33,7 +121,7 @@ For more detailed information see [#18397](https://github.com/electron/electron/
The optional parameter `frameName` will no longer set the title of the window. This now follows the specification described by the [native documentation](https://developer.mozilla.org/en-US/docs/Web/API/Window/open#parameters) under the corresponding parameter `windowName`.
If you were using this parameter to set the title of a window, you can instead use [win.setTitle(title)](https://www.electronjs.org/docs/api/browser-window#winsettitletitle).
If you were using this parameter to set the title of a window, you can instead use [win.setTitle(title)](api/browser-window.md#winsettitletitle).
### Removed: `worldSafeExecuteJavaScript`
@@ -43,16 +131,6 @@ ensure your code works with this property enabled. It has been enabled by defau
You will be affected by this change if you use either `webFrame.executeJavaScript` or `webFrame.executeJavaScriptInIsolatedWorld`. You will need to ensure that values returned by either of those methods are supported by the [Context Bridge API](api/context-bridge.md#parameter--error--return-type-support) as these methods use the same value passing semantics.
### Default Changed: `nativeWindowOpen` defaults to `true`
Prior to Electron 14, `window.open` was by default shimmed to use
`BrowserWindowProxy`. This meant that `window.open('about:blank')` did not work
to open synchronously scriptable child windows, among other incompatibilities.
`nativeWindowOpen` is no longer experimental, and is now the default.
See the documentation for [window.open in Electron](api/window-open.md)
for more details.
### Removed: BrowserWindowConstructorOptions inheriting from parent windows
Prior to Electron 14, windows opened with `window.open` would inherit
@@ -246,7 +324,7 @@ value.
In Electron 12, `contextIsolation` will be enabled by default. To restore
the previous behavior, `contextIsolation: false` must be specified in WebPreferences.
We [recommend having contextIsolation enabled](https://github.com/electron/electron/blob/master/docs/tutorial/security.md#3-enable-context-isolation-for-remote-content) for the security of your application.
We [recommend having contextIsolation enabled](tutorial/security.md#3-enable-context-isolation-for-remote-content) for the security of your application.
Another implication is that `require()` cannot be used in the renderer process unless
`nodeIntegration` is `true` and `contextIsolation` is `false`.
@@ -556,7 +634,7 @@ error.
### API Changed: `shell.openItem` is now `shell.openPath`
The `shell.openItem` API has been replaced with an asynchronous `shell.openPath` API.
You can see the original API proposal and reasoning [here](https://github.com/electron/governance/blob/master/wg-api/spec-documents/shell-openitem.md).
You can see the original API proposal and reasoning [here](https://github.com/electron/governance/blob/main/wg-api/spec-documents/shell-openitem.md).
## Planned Breaking API Changes (8.0)
@@ -809,7 +887,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](https://github.com/electron/electron/blob/master/docs/api/dialog.md#dialogshowopendialogbrowserwindow-options)).
see the `dialog.showOpenDialog` API ([link](api/dialog.md#dialogshowopendialogbrowserwindow-options)).
### API Changed: Callback-based versions of promisified APIs

View File

@@ -4,8 +4,8 @@ These guides are intended for people working on the Electron project itself.
For guides on Electron app development, see
[/docs/README.md](../README.md#guides-and-tutorials).
* [Code of Conduct](https://github.com/electron/electron/blob/master/CODE_OF_CONDUCT.md)
* [Contributing to Electron](https://github.com/electron/electron/blob/master/CONTRIBUTING.md)
* [Code of Conduct](https://github.com/electron/electron/blob/main/CODE_OF_CONDUCT.md)
* [Contributing to Electron](https://github.com/electron/electron/blob/main/CONTRIBUTING.md)
* [Issues](issues.md)
* [Pull Requests](pull-requests.md)
* [Documentation Styleguide](coding-style.md#documentation)

View File

@@ -8,7 +8,7 @@ Example Use Case:
* We need `VS15.9` and we have `VS15.7` installed; this would require us to update an Azure image.
1. Identify the image you wish to modify.
* In [appveyor.yml](https://github.com/electron/electron/blob/master/appveyor.yml), the image is identified by the property *image*.
* In [appveyor.yml](https://github.com/electron/electron/blob/main/appveyor.yml), the image is identified by the property *image*.
* The names used correspond to the *"images"* defined for a build cloud, eg the [libcc-20 cloud](https://windows-ci.electronjs.org/build-clouds/8).
* Find the image you wish to modify in the build cloud and make note of the **VHD Blob Path** for that image, which is the value for that corresponding key.
* You will need this URI path to copy into a new image.

View File

@@ -65,8 +65,8 @@ origin URLs.
$ cd src/electron
$ git remote remove origin
$ git remote add origin https://github.com/electron/electron
$ git checkout master
$ git branch --set-upstream-to=origin/master
$ git checkout main
$ git branch --set-upstream-to=origin/main
$ cd -
```

View File

@@ -24,7 +24,7 @@ creating a full distribution since `symstore.exe` is used for creating a symbol
store from `.pdb` files.
* Different versions of the SDK can be installed side by side. To install the
SDK, open Visual Studio Installer, select
`Change``Individual Components`, scroll down and select the appropriate
`Modify``Individual Components`, scroll down and select the appropriate
Windows SDK to install. Another option would be to look at the
[Windows SDK and emulator archive](https://developer.microsoft.com/en-us/windows/downloads/sdk-archive)
and download the standalone version of the SDK respectively.

View File

@@ -10,12 +10,12 @@ files, you need to have built Electron so that it knows which compiler flags
were used. There is one required option for the script `--output-dir`, which
tells the script which build directory to pull the compilation information
from. A typical usage would be:
`npm run lint:clang-tiy --out-dir ../out/Testing`
`npm run lint:clang-tidy --out-dir ../out/Testing`
With no filenames provided, all C/C++/Objective-C files will be checked.
You can provide a list of files to be checked by passing the filenames after
the options:
`npm run lint:clang-tiy --out-dir ../out/Testing shell/browser/api/electron_api_app.cc`
`npm run lint:clang-tidy --out-dir ../out/Testing shell/browser/api/electron_api_app.cc`
While `clang-tidy` has a
[long list](https://clang.llvm.org/extra/clang-tidy/checks/list.html)

View File

@@ -25,7 +25,7 @@ You can run `npm run lint` to show any style issues detected by `cpplint` and
## C++ and Python
For C++ and Python, we follow Chromium's [Coding
Style](https://www.chromium.org/developers/coding-style). You can use
Style](https://chromium.googlesource.com/chromium/src/+/refs/heads/main/styleguide/styleguide.md). You can use
[clang-format](clang-format.md) to format the C++ code automatically. There is
also a script `script/cpplint.py` to check whether all files conform.

View File

@@ -0,0 +1,171 @@
# Creating a New Electron Browser Module
Welcome to the Electron API guide! If you are unfamiliar with creating a new Electron API module within the [`browser`](https://github.com/electron/electron/tree/main/shell/browser) directory, this guide serves as a checklist for some of the necessary steps that you will need to implement.
This is not a comprehensive end-all guide to creating an Electron Browser API, rather an outline documenting some of the more unintuitive steps.
## Add your files to Electron's project configuration
Electron uses [GN](https://gn.googlesource.com/gn) as a meta build system to generate files for its compiler, [Ninja](https://ninja-build.org/). This means that in order to tell Electron to compile your code, we have to add your API's code and header file names into [`filenames.gni`](https://github.com/electron/electron/blob/main/filenames.gni).
You will need to append your API file names alphabetically into the appropriate files like so:
```cpp title='filenames.gni'
lib_sources = [
"path/to/api/api_name.cc",
"path/to/api/api_name.h",
]
lib_sources_mac = [
"path/to/api/api_name_mac.h",
"path/to/api/api_name_mac.mm",
]
lib_sources_win = [
"path/to/api/api_name_win.cc",
"path/to/api/api_name_win.h",
]
lib_sources_linux = [
"path/to/api/api_name_linux.cc",
"path/to/api/api_name_linux.h",
]
```
Note that the Windows, macOS and Linux array additions are optional and should only be added if your API has specific platform implementations.
## Create API documentation
Type definitions are generated by Electron using [`@electron/docs-parser`](https://github.com/electron/docs-parser) and [`@electron/typescript-definitions`](https://github.com/electron/typescript-definitions). This step is necessary to ensure consistency across Electron's API documentation. This means that for your API type definition to appear in the `electron.d.ts` file, we must create a `.md` file. Examples can be found in [this folder](https://github.com/electron/electron/tree/main/docs/api).
## Set up `ObjectTemplateBuilder` and `Wrappable`
Electron constructs its modules using [`object_template_builder`](https://www.electronjs.org/blog/from-native-to-js#mateobjecttemplatebuilder).
[`wrappable`](https://chromium.googlesource.com/chromium/src/+/refs/heads/main/gin/wrappable.h) is a base class for C++ objects that have corresponding v8 wrapper objects.
Here is a basic example of code that you may need to add, in order to incorporate `object_template_builder` and `wrappable` into your API. For further reference, you can find more implementations [here](https://github.com/electron/electron/tree/main/shell/browser/api).
In your `api_name.h` file:
```cpp title='api_name.h'
#ifndef SHELL_BROWSER_API_ELECTRON_API_{API_NAME}_H_
#define SHELL_BROWSER_API_ELECTRON_API_{API_NAME}_H_
#include "gin/handle.h"
#include "gin/wrappable.h"
namespace electron {
namespace api {
class ApiName : public gin::Wrappable<ApiName> {
public:
static gin::Handle<ApiName> Create(v8::Isolate* isolate);
// gin::Wrappable
static gin::WrapperInfo kWrapperInfo;
gin::ObjectTemplateBuilder GetObjectTemplateBuilder(
v8::Isolate* isolate) override;
const char* GetTypeName() override;
} // namespace api
} // namespace electron
```
In your `api_name.cc` file:
```cpp title='api_name.cc'
#include "shell/browser/api/electron_api_safe_storage.h"
#include "shell/browser/browser.h"
#include "shell/common/gin_converters/base_converter.h"
#include "shell/common/gin_converters/callback_converter.h"
#include "shell/common/gin_helper/dictionary.h"
#include "shell/common/gin_helper/object_template_builder.h"
#include "shell/common/node_includes.h"
#include "shell/common/platform_util.h"
namespace electron {
namespace api {
gin::WrapperInfo ApiName::kWrapperInfo = {gin::kEmbedderNativeGin};
gin::ObjectTemplateBuilder ApiName::GetObjectTemplateBuilder(
v8::Isolate* isolate) {
return gin::ObjectTemplateBuilder(isolate)
.SetMethod("methodName", &ApiName::methodName);
}
const char* ApiName::GetTypeName() {
return "ApiName";
}
// static
gin::Handle<ApiName> ApiName::Create(v8::Isolate* isolate) {
return gin::CreateHandle(isolate, new ApiName());
}
} // namespace api
} // namespace electron
namespace {
void Initialize(v8::Local<v8::Object> exports,
v8::Local<v8::Value> unused,
v8::Local<v8::Context> context,
void* priv) {
v8::Isolate* isolate = context->GetIsolate();
gin_helper::Dictionary dict(isolate, exports);
dict.Set("apiName", electron::api::ApiName::Create(isolate));
}
} // namespace
```
## Link your Electron API with Node
In the [`typings/internal-ambient.d.ts`](https://github.com/electron/electron/blob/main/typings/internal-ambient.d.ts) file, we need to append a new property onto the `Process` interface like so:
```ts title='typings/internal-ambient.d.ts'
interface Process {
_linkedBinding(name: 'electron_browser_{api_name}', Electron.ApiName);
}
```
At the very bottom of your `api_name.cc` file:
```cpp title='api_name.cc'
NODE_LINKED_MODULE_CONTEXT_AWARE(electron_browser_{api_name},Initialize)
```
In your [`shell/common/node_bindings.cc`](https://github.com/electron/electron/blob/main/shell/common/node_bindings.cc) file, add your node binding name to Electron's built-in modules.
```cpp title='shell/common/node_bindings.cc'
#define ELECTRON_BUILTIN_MODULES(V) \
V(electron_browser_{api_name})
```
> Note: More technical details on how Node links with Electron can be found on [our blog](https://www.electronjs.org/blog/electron-internals-using-node-as-a-library#link-node-with-electron).
## Expose your API to TypeScript
### Export your API as a module
We will need to create a new TypeScript file in the path that follows:
`"lib/browser/api/{electron_browser_{api_name}}.ts"`
An example of the contents of this file can be found [here](https://github.com/electron/electron/blob/main/lib/browser/api/native-image.ts).
### Expose your module to TypeScript
Add your module to the module list found at `"lib/browser/api/module-list.ts"` like so:
```typescript title='lib/browser/api/module-list.ts'
export const browserModuleList: ElectronInternal.ModuleEntry[] = [
{ name: 'apiName', loader: () => require('./api-name') },
];
```

View File

@@ -26,7 +26,9 @@ you prefer a graphical interface.
* **.lldbinit**: Create or edit `~/.lldbinit` to allow Chromium code to be properly source-mapped.
```text
command script import ~/electron/src/tools/lldb/lldbinit.py
# e.g: ['~/electron/src/tools/lldb']
script sys.path[:0] = ['<...path/to/electron/src/tools/lldb>']
script import lldbinit
```
## Attaching to and Debugging Electron

View File

@@ -72,4 +72,4 @@ to try NW.js.
[nwjs]: https://nwjs.io/
[electron-modules]: https://www.npmjs.com/search?q=electron
[node-bindings]: https://github.com/electron/electron/tree/master/lib/common
[node-bindings]: https://github.com/electron/electron/tree/main/lib/common

View File

@@ -45,10 +45,10 @@ Once you've built the project locally, you're ready to start making changes!
### Step 3: Branch
To keep your development environment organized, create local branches to
hold your work. These should be branched directly off of the `master` branch.
hold your work. These should be branched directly off of the `main` branch.
```sh
$ git checkout -b my-branch -t upstream/master
$ git checkout -b my-branch -t upstream/main
```
## Making Changes
@@ -134,11 +134,11 @@ Once you have committed your changes, it is a good idea to use `git rebase`
```sh
$ git fetch upstream
$ git rebase upstream/master
$ git rebase upstream/main
```
This ensures that your working branch has the latest changes from `electron/electron`
master.
main.
### Step 7: Test
@@ -189,7 +189,7 @@ the requirements below.
Bug fixes and new features should include tests and possibly benchmarks.
Contributors guide: https://github.com/electron/electron/blob/master/CONTRIBUTING.md
Contributors guide: https://github.com/electron/electron/blob/main/CONTRIBUTING.md
-->
```
@@ -222,7 +222,7 @@ seem unfamiliar, refer to this
#### Approval and Request Changes Workflow
All pull requests require approval from a
[Code Owner](https://github.com/electron/electron/blob/master/.github/CODEOWNERS)
[Code Owner](https://github.com/electron/electron/blob/main/.github/CODEOWNERS)
of the area you modified in order to land. Whenever a maintainer reviews a pull
request they may request changes. These may be small, such as fixing a typo, or
may involve substantive changes. Such requests are intended to be helpful, but

View File

@@ -22,7 +22,7 @@ function createWindow () {
})
ipcMain.handle('dark-mode:system', () => {
nativeTheme.themeSouce = 'system'
nativeTheme.themeSource = 'system'
})
}

View File

@@ -7,10 +7,6 @@
</head>
<body>
<h1>Hello World!</h1>
<p>
We are using node <script>document.write(process.versions.node)</script>,
Chrome <script>document.write(process.versions.chrome)</script>,
and Electron <script>document.write(process.versions.electron)</script>.
</p>
<p>After launching this application, you should see the system notification.</p>
</body>
</html>

View File

@@ -3,21 +3,17 @@ const { app, BrowserWindow, Notification } = require('electron')
function createWindow () {
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
height: 600
})
win.loadFile('index.html')
}
const NOTIFICATION_TITLE = 'Basic Notification'
const NOTIFICATION_BODY = 'Notification from the Main process'
function showNotification () {
const notification = {
title: 'Basic Notification',
body: 'Notification from the Main process'
}
new Notification(notification).show()
new Notification({ title: NOTIFICATION_TITLE, body: NOTIFICATION_BODY }).show()
}
app.whenReady().then(createWindow).then(showNotification)

View File

@@ -7,11 +7,9 @@
</head>
<body>
<h1>Hello World!</h1>
<p>
We are using node <script>document.write(process.versions.node)</script>,
Chrome <script>document.write(process.versions.chrome)</script>,
and Electron <script>document.write(process.versions.electron)</script>.
</p>
<p>After launching this application, you should see the system notification.</p>
<p id="output">Click it to see the effect in this interface.</p>
<script src="renderer.js"></script>
</body>
</html>

View File

@@ -3,10 +3,7 @@ const { app, BrowserWindow } = require('electron')
function createWindow () {
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
height: 600
})
win.loadFile('index.html')

View File

@@ -1,7 +1,6 @@
const myNotification = new Notification('Title', {
body: 'Notification from the Renderer process'
})
const NOTIFICATION_TITLE = 'Title'
const NOTIFICATION_BODY = 'Notification from the Renderer process. Click to log to console.'
const CLICK_MESSAGE = 'Notification clicked!'
myNotification.onclick = () => {
console.log('Notification clicked')
}
new Notification(NOTIFICATION_TITLE, { body: NOTIFICATION_BODY })
.onclick = () => document.getElementById("output").innerText = CLICK_MESSAGE

View File

@@ -7,10 +7,9 @@
</head>
<body>
<h1>Hello World!</h1>
<p>
We are using node <script>document.write(process.versions.node)</script>,
Chrome <script>document.write(process.versions.chrome)</script>,
and Electron <script>document.write(process.versions.electron)</script>.
</p>
<p>Keep an eye on the dock (Mac) or taskbar (Windows, Unity) for this application!</p>
<p>It should indicate a progress that advances from 0 to 100%.</p>
<p>It should then show indeterminate (Windows) or pin at 100% (other operating systems)
briefly and then loop.</p>
</body>
</html>

View File

@@ -1,21 +1,39 @@
const { app, BrowserWindow } = require('electron')
let progressInterval
function createWindow () {
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
height: 600
})
win.loadFile('index.html')
win.setProgressBar(0.5)
}
const INCREMENT = 0.03
const INTERVAL_DELAY = 100 // ms
let c = 0
progressInterval = setInterval(() => {
// update progress bar to next value
// values between 0 and 1 will show progress, >1 will show indeterminate or stick at 100%
win.setProgressBar(c)
// increment or reset progress bar
if (c < 2) {
c += INCREMENT
} else {
c = (-INCREMENT * 5) // reset to a bit less than 0 to show reset state
}
}, INTERVAL_DELAY)
}
app.whenReady().then(createWindow)
// before the app is terminated, clear both timers
app.on('before-quit', () => {
clearInterval(progressInterval)
})
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {

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