Compare commits

..

258 Commits

Author SHA1 Message Date
Electron Bot
429a2f4fe8 Bump v10.0.0-nightly.20200402 2020-04-02 08:32:20 -07:00
Electron Bot
8c632dc747 Bump v10.0.0-nightly.20200401 2020-04-01 08:31:28 -07:00
Shelley Vohr
da67cbf551 feat: add property support for remainder of BrowserWindow (#22771)
Adds property-based support for the remainder of primitive gette/setter pairs on `BrowserWindow`.

Namely:
- `win.simpleFullScreen`
- `win.title`
- `win.visibleOnAllWorkspaces`
- `win.documentEdited`
- `win.representedFilename`
- `win.shadow`
- `win.kiosk`
- `win.menuBarVisible`
2020-04-01 08:22:32 -07:00
Jeremy Apthorp
5715e94db0 docs: clarify app.enableSandbox documentation (#22894) 2020-04-01 11:20:37 -04:00
Andrea Brancaleoni
884b46fce7 fix: strip extra data from release zips (#22891) 2020-04-01 10:14:41 -04:00
Cheng Zhao
14051ff945 test: do not trigger unhandled promise rejections (#22922) 2020-04-01 09:45:39 -04:00
Cheng Zhao
e6f2605ad0 fix: webRequest module should work with file:// protocol (#22903)
* fix: override file:// instead of intercepting

* test: webRequest module should work with file://

* fix: service work with file:// url

* fix: original_response_headers can be null

* fix: only register file:// when necessary
2020-04-01 16:38:40 +09:00
Robo
bac1c7f532 fix: ensure standard schemes are registered in nw service process (#22867)
* fix: ensure standard schemes are registered in nw service process

Refs https://github.com/electron/electron/pull/20546

* chore: add test

* chore: apply suggestions from code review

Co-Authored-By: Jeremy Apthorp <jeremya@chromium.org>

Co-authored-by: Jeremy Apthorp <jeremya@chromium.org>
2020-03-31 19:33:16 -07:00
Cheng Zhao
d74ad631e7 chore: there is no need to define _init (#22882) 2020-03-31 14:50:03 -07:00
Samuel Attard
4ba91c938e fix: screen module should still be creatable if the first create is before the ready event (#22895) 2020-03-31 14:49:15 -07:00
Jeremy Apthorp
765c08c600 refactor: ginify Notification (#22821) 2020-03-31 11:42:32 -07:00
John Kleinschmidt
629465aac7 ci: cleanup extraneous release tests (#22892)
* ci: cleanup extraneous release tests

* Temporarily setup nightly ci to run on demand

* Revert "Temporarily setup nightly ci to run on demand"

This reverts commit 21e50d4f57.
2020-03-31 14:18:43 -04:00
Electron Bot
51c2af4df5 Bump v10.0.0-nightly.20200331 2020-03-31 08:32:43 -07:00
Charles Kerr
33ef0d23a6 docs: minor grammar & spelling fixes (#22851)
* docs: fix minor grammar error 'punctuations'

* docs: fix minor grammar error pluralizing Chromium

* docs: fix typo 'updateCurrentActiviy'

* docs: use consistent spelling of 'behavior'

* docs: use 'macOS' instead of 'Mac OS' or 'OS X'.

* docs: use 'GTK' instead of 'GTK+'

https://mail.gnome.org/archives/gtk-devel-list/2019-February/msg00000.html

* docs: minor capitalization: use 'TCP' not 'tcp'

* Update docs/development/build-instructions-linux.md

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

Co-authored-by: Mark Lee <malept@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
2020-03-31 13:06:25 +09:00
Samuel Attard
fea3366bc7 fix: propagate preferred color scheme to the renderer (#22896)
* fix: do not crash if the window is closed syncronously with a nativeTheme change

* fix: propogate preferred color scheme to the renderer and keep it up to date
2020-03-30 15:39:50 -07:00
Shelley Vohr
212b47a77b docs: enumerate deprecation policy (#22859)
* docs: enumerate deprecation policy

* Address @MarshallOfSound feedback
2020-03-30 15:57:14 -04:00
Sofia Nguy
e94a573f29 docs: update Electron 9 release date (#22863) 2020-03-30 15:56:20 -04:00
John Kleinschmidt
be5511393b ci: use smaller vms for testing since we are using goma (#22887) 2020-03-30 15:46:42 -04:00
Jeremy Apthorp
98e5836eb6 chore: update PR template to suggest 'none' instead of no-notes (#22864) 2020-03-30 10:13:26 -07:00
Shelley Vohr
b14608c2c1 fix: dialog fails to show after modal close (#22858) 2020-03-30 09:48:20 -07:00
Electron Bot
c085d3bf12 Bump v10.0.0-nightly.20200330 2020-03-30 08:32:20 -07:00
Samuel Attard
6ecf729487 feat: default gtk darkTheme option to nativeTheme.shouldUseDarkColors for better platform support (#20138)
* feat: default gtk darkTheme option to nativeTheme.shouldUseDarkColors for better platform support

* chore: update syntax for PR feedback

* refactor: only define SetGTKDarkThemeEnabled when needed

Co-authored-by: Cheng Zhao <zcbenz@gmail.com>
2020-03-30 15:02:16 +09:00
Jeremy Apthorp
a3e28788ce refactor: ginify Tray (#22822)
* refactor: ginify Tray

* lint

* improve argument parsing logic

* remove redundant imports from tray.js

* new Tray produces an instanceof Tray

* make Constructible generic

* lint

* clean up on exit
2020-03-30 10:32:02 +09:00
Cheng Zhao
76ae3b7ecb chore: remove unused classes of views API (#22861)
* chore: remove unused views API classes

* chore: remove LayoutManager code

* chore: no more need to make View inherit from TrackabeObject

* chore: make enable_view_api default to true

* chore: enable_view_api => enable_views_api
2020-03-28 15:44:57 +09:00
Electron Bot
d5cae424d8 Bump v10.0.0-nightly.20200327 2020-03-27 08:33:03 -07:00
Shelley Vohr
bd5789a12c fix: missing HandleScope in WebDialogHelper (#22843) 2020-03-26 20:37:28 -07:00
Jeremy Apthorp
ac501e8194 fix: heap-use-after-free in tray.popUpContextMenu (#22842) 2020-03-26 18:30:21 -07:00
Mark Lee
8ff7a1160a build: upgrade asar to a version that requires Node 10 (#22351)
* build(deps-dev): upgrade asar to ^2.1.0

* build(deps-dev): upgrade asar to ^3.0.1
2020-03-27 09:52:53 +09:00
Felix Rieseberg
fb1d2ce733 docs: Burn the about document (#22839)
* docs: Burn the about document

* docs: Delete reference, too
2020-03-26 18:43:51 -05:00
CezaryKulakowski
f9acfc2252 fix: don't try to hide host which has set flag disable_hidden_ (#22832)
Lack of this change will lead to freeze after call to hide/show
on window which has set flag disable_hidden_. To reproduce the
problem it's necessary to create some number of windows (how many
it depends on number of windows being cached by Chromium's
FrameEvictionManager).
2020-03-26 14:54:11 -05:00
Heilig Benedek
74372d65ae feat: enhance native window.open to match the custom implementation's behavior (#19703)
Co-authored-by: Andy Locascio <andy@slack-corp.com>
2020-03-26 11:05:45 -07:00
Jeremy Apthorp
b1f4ac00f0 docs: categorize breaking changes (#22834)
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
2020-03-26 10:57:55 -07:00
Jeremy Apthorp
e73d5e3db5 refactor: ginify protocol (#22812) 2020-03-26 10:34:32 -07:00
Electron Bot
b3d3ac4e0f Bump v10.0.0-nightly.20200326 2020-03-26 08:32:37 -07:00
Jeremy Apthorp
222022556f refactor: ginify Cookies (#22823) 2020-03-25 15:34:53 -07:00
Jeremy Apthorp
b327478cf0 fix: prevent remote from messing with constructor names (#22820) 2020-03-25 13:13:10 -07:00
Electron Bot
746266bd93 Bump v10.0.0-nightly.20200325 2020-03-25 08:32:52 -07:00
CezaryKulakowski
bdef77bad8 fix: don't allow window to go behind menu bar on mac (#22770) 2020-03-25 11:13:43 +09:00
Jeremy Apthorp
07cd70a37e refactor: ginify powerMonitor (#22751) 2020-03-24 09:03:29 -07:00
Electron Bot
aeae0d47bd Bump v10.0.0-nightly.20200324 2020-03-24 08:31:18 -07:00
Samuel Attard
e678794dd0 build: fix beta version bumper logic for betas beyond 10 (#22810) 2020-03-24 09:04:12 -04:00
Jeremy Apthorp
4b0d445f74 build: fix missing pdf dep in chromium_src (#22811) 2020-03-23 22:29:06 -07:00
Samuel Attard
6b41d86032 Revert "fix: better window hierarchy checks"
This reverts commit 8e368a046d.
2020-03-23 19:34:52 -07:00
Samuel Attard
8e368a046d fix: better window hierarchy checks 2020-03-23 14:13:12 -07:00
Jeremy Apthorp
decbca734f refactor: ginify net.request (#22779) 2020-03-23 13:09:45 -07:00
Electron Bot
d3d7b3eb54 Bump v10.0.0-nightly.20200323 2020-03-23 08:32:19 -07:00
Cheng Zhao
341f643b81 feat: add ImageView (#22738) 2020-03-22 19:11:43 +09:00
Samuel Attard
af46c1ed8d fix: allow net requests to use Same-Site cookies (#22788) 2020-03-20 16:39:03 -07:00
Samuel Attard
60bd52880f feat: add support for net requests to use the session cookie store (#22704) 2020-03-20 15:56:02 -07:00
Jeremy Apthorp
07a049ef1b chore: stop leaking v8 environment (#22761) 2020-03-20 14:15:55 -07:00
Jeremy Apthorp
22c17bcc5b refactor: ginify ServiceWorkerContext (#22756) 2020-03-20 14:15:14 -07:00
Samuel Attard
5d657dece4 build: enable JS semicolons (#22783) 2020-03-20 13:28:31 -07:00
Shelley Vohr
24e21467b9 fix: print from PDF viewer not working (#22760) 2020-03-20 09:46:13 -07:00
Electron Bot
9d4714f111 Bump v10.0.0-nightly.20200320 2020-03-20 08:31:45 -07:00
Samuel Attard
b87b501161 build: update eslint + eslint plugins (#22777)
* build: run eslint --fix

* chore: manually fix all hasOwnProperty errors

* chore: manually fix all void 0 vs undefined errors

* chore: manually fix all async-in-promise errors

* chore: manually fix lexical declaration in case block
2020-03-20 11:12:18 -04:00
Cheng Zhao
42f138282f refactor: move set_owned_by_client calls to base View (#22739)
* refactor: move set_owned_by_client() to WebContentsView

* refactor: do set_owned_by_client() in View
2020-03-20 15:41:41 +09:00
Samuel Attard
aa15a2cc03 build: update typescript and webpack (#22776) 2020-03-19 16:55:49 -07:00
Jeremy Apthorp
f1a0d5e811 refactor: ginify globalShortcut (#22755) 2020-03-19 14:33:45 -07:00
Jeremy Apthorp
a824e12275 refactor: ginify desktopCapturer (#22746) 2020-03-19 11:35:11 -07:00
Shelley Vohr
9aa27e1709 fix: add missing pdfTwoUpViewEnabled status (#22735) 2020-03-19 09:27:18 -07:00
loc
087b8a5bd9 chore: add @loc to manual backport config (#22748) 2020-03-19 10:44:42 -04:00
Cheng Zhao
47e27aee5b test: no need to loadURL in menu test (#22737) 2020-03-19 10:49:40 +09:00
Samuel Attard
b2dc0a4f11 build: auto-generate the codesigning cert used for macOS CI testing runs (#17668)
* build: auto-generate the codesigning cert used for macOS CI testing runs

* build: give the cert ALL the trust values

* chore: also import public key

* idek
2020-03-19 10:00:42 +09:00
Jeremy Apthorp
c4a7eade28 refactor: ginify session.netLog (#22732) 2020-03-18 16:46:05 -07:00
Samuel Attard
e58a35e5aa chore: fix net specs when rerunning locally (#22745) 2020-03-18 16:35:23 -07:00
Samuel Attard
f3fd40c221 fix: prevent crash in ListValue v8 converter when conversion fails (#22753) 2020-03-18 13:59:34 -07:00
Jeremy Apthorp
232ca8af39 refactor: EventEmitters without gin_helper (#22726) 2020-03-18 12:57:08 -07:00
Shelley Vohr
fc661ec56b chore: update app module property support (#22713) 2020-03-18 10:06:41 -07:00
Samuel Attard
1ea21e42bb chore: refactor all the net specs to be async with better error handling (#22731) 2020-03-18 08:59:44 -07:00
Electron Bot
366744d5a0 Bump v10.0.0-nightly.20200318 2020-03-18 08:32:17 -07:00
Thomas Levy
2fa499b682 docs: update type and description of IncomingMessage.headers (#22522)
* docs: update type and description of IncomingMessage.headers

Fixes #22521

Updates the docs for IncomingMessage.headers to match the changes made in #17517

* Update docs/api/incoming-message.md

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

Co-authored-by: Cheng Zhao <zcbenz@electronjs.org>
Co-authored-by: Mark Lee <malept@users.noreply.github.com>
2020-03-18 11:32:26 +09:00
Michael
66c15721d8 docs: Added a note about chromium logs on the debugging page (#22476)
* docs: Added a note about chromium logs on the debugging page

* docs: Point at existing documentation for environment variables

* chore: remove trailing whitespace

Co-authored-by: Cheng Zhao <zcbenz@electronjs.org>
2020-03-18 11:32:01 +09:00
Shelley Vohr
674e4a9fdd chore: more modules to dual prop/fn support (#22688) 2020-03-17 18:06:52 -07:00
Charles Kerr
01d5154f4f refactor: omit duplicates from app's x11 icon list (#22702)
* refactor: omit duplicates from app's x11 icon list

* empty commit for ci
2020-03-18 09:31:31 +09:00
Charles Kerr
83d5833b4f refactor: precache the IsWindowStateEvent() XAtom (#22706)
* refactor: precache the IsWindowStateEvent() atom

XAtoms never change after creation so we can perload the atoms we need.
This is useful in WindowStateWatcher's XEvent handler, which is called
on every XEvent, e.g. mouse movement...

* empty commit for ci
2020-03-17 19:30:58 -05:00
Samuel Attard
5e4e50c5eb fix: remove bad usages of for-in and guard against it (#22616)
* fix: remove bad usages of for-in and guard against it

* Apply suggestions from code review

Co-Authored-By: Samuel Maddock <samuel.maddock@gmail.com>

* Apply suggestions from code review

Co-Authored-By: Jeremy Apthorp <jeremya@chromium.org>

* Update remote.js

Co-authored-by: Samuel Maddock <samuel.maddock@gmail.com>
Co-authored-by: Jeremy Apthorp <jeremya@chromium.org>
2020-03-17 13:17:55 -07:00
Shelley Vohr
f4868c9a28 fix: persist maximizable state through theme change (#22677) 2020-03-17 10:58:57 -07:00
Samuel Attard
9583f7dabb build: update release scripts to handle a remote master (#22707) 2020-03-17 09:35:58 -07:00
Electron Bot
a63e4ef378 Bump v10.0.0-nightly.20200317 2020-03-17 08:31:11 -07:00
Electron Bot
49ddc48dd1 chore: bump chromium to bd902e8eecfd48fd85d01d0eea0f2 (master) (#22694)
* chore: bump chromium in DEPS to 8465a21309d7285c317bdecb744cd148390af9b1

* chore: bump chromium in DEPS to f3d154dbc31bd902e8eecfd48fd85d01d0eea0f2
2020-03-16 21:26:15 -04:00
Shelley Vohr
97d8caa1e0 chore: support props/fns for BrowserWindow (#22686) 2020-03-16 14:03:35 -07:00
Electron Bot
20480c8ea8 Bump v10.0.0-nightly.20200316 2020-03-16 08:32:12 -07:00
Samuel Attard
cd5e3901de chore: fix default_app dimensions (#22675) 2020-03-16 15:28:34 +09:00
Cheng Zhao
7814c67830 fix: enter handle scope when creating custom event (#22657) 2020-03-16 14:20:32 +09:00
Milan Burda
18c74a11f4 fix: when building with enable_pepper_flash = false (#22684) 2020-03-14 14:00:31 -07:00
Electron Bot
d8737734bf chore: bump chromium to bc8f70ed4cfe2262ea833750eaddb (master) (#22649)
* chore: bump chromium in DEPS to 9321f32fb1b3af8fdfce55c7bbfacf3f75118dca

* Update patches

* Update electron_swiftshader_binaries deps

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

* Use Promise with RequestPointerLock calls

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

* Replace content::CursorInfo with ui::Cursor

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

* Convert MaterialDesignController to a true singleton.

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

* Drop WebContentsView::RenderViewCreated hook

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

* chore: bump chromium in DEPS to 6478123cfa0102ed754c70eb9bbdd391d676a4dd

* Splitting context_menu_params.h into separate browser VS common parts.

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

* Fix DCHECK on OnThemeChanged()

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

* chore: bump chromium in DEPS to b0269bb003f699bc8ea7dcba8b0795ef963696d7

* Remove no longer needed patch

* Check PointerLock requests for new options and update accordingly

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

* Address issues from review

* Fixup compile error

* Add additional library files

* chore: bump chromium in DEPS to a41285fb8aebc8f70ed4cfe2262ea833750eaddb

* Update patches

Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
2020-03-14 16:54:14 -04:00
Shelley Vohr
a4c4c86b9d fix: crash on invalid zoomFactor (#22673) 2020-03-13 16:13:05 -07:00
Jeremy Apthorp
9c5874306d fix: crash when destroying WebContentsView during GC (#22674) 2020-03-13 10:33:37 -07:00
Shelley Vohr
1b353d1ed3 chore: revert deprecated WebContents properties (#22640)
* chore: revert deprecated WebContents properties

* Fix failing zoomFactor test
2020-03-13 10:16:08 -07:00
Jeremy Apthorp
0c02d794c9 feat: add onclose method to MessagePort (#22532)
* feat: add onclose method to MessagePort

* more scope, more good

* de-flake GC test
2020-03-13 10:00:50 -07:00
Electron Bot
829d4815a9 Bump v10.0.0-nightly.20200313 2020-03-13 08:31:41 -07:00
Cheng Zhao
c2327b15ae fix: add handle scope in dialog's promise callback (#22658) 2020-03-12 11:17:47 -07:00
Electron Bot
4b9f2bc725 Bump v10.0.0-nightly.20200312 2020-03-12 08:31:44 -07:00
Jeremy Apthorp
b4d07f76d3 feat: MessagePorts in the main process (#22404) 2020-03-11 18:07:54 -07:00
Mark Lee
c4c0888972 docs: remove reference to electron-updater (#22641)
As per the [2020-03-05 Ecosystem WG
meeting](https://github.com/electron/governance/blob/master/wg-ecosystem/meeting-notes/2020-03-05.md).
2020-03-11 16:30:05 -07:00
Shelley Vohr
b724fbc0ed feat: add force option to app.focus() (#22612) 2020-03-11 09:07:01 -07:00
Electron Bot
75cef84877 Bump v10.0.0-nightly.20200311 2020-03-11 08:33:12 -07:00
Electron Bot
62da00e5c5 chore: bump chromium to 31b4a223e6e2bd9d5ce6c37cbdec6 (master) (#22514)
* chore: bump chromium in DEPS to 7f366dc6e2f06228b12b021cc1486a1de81a257d

* chore: bump chromium in DEPS to d785c1a601f5f33627d23e40b1ed9dd94c63d818

* update patches

* Rename an old referrer policy value

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

* chore: bump chromium in DEPS to 735e0d2910b2e55c15e0b9cb9fca9431307ac661

* update v8 patches

* Update DEPS

* update patches

* chore: bump chromium in DEPS to b3d09c15c4460680b85218b7b0eb0849c5a6e840

* Replace blink::WebCursorInfo with ui::Cursor

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

* chore: bump chromium in DEPS to bf433ad6dcfcaac460512bb45a53d5a2ea5356f9

* chore: bump chromium in DEPS to 38fad190ac908b6977ab271acc82c2fe74f6e85e

* chore: bump chromium in DEPS to aa597178119cb37ab54caeda27b2ef30a2f9a003

* update patches

* DownloadURLParameters: Remove NetworkIsolationKey parameter.

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

* fix pdf viewer tests by binding more mojo things

* chore: bump chromium in DEPS to 08835601be331b4a223e6e2bd9d5ce6c37cbdec6

Co-authored-by: Jeremy Apthorp <jeremya@chromium.org>
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
2020-03-11 07:15:07 -04:00
Eryk Rakowski
7150fa783e fix(extensions): add more properties to port.sender.tab (#22592)
* fix: add more properties to port.sender.tab

* fix: apply the suggestion

Co-Authored-By: Jeremy Apthorp <nornagon@nornagon.net>

Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
2020-03-11 16:04:31 +09:00
Erick Zhao
34e004015d feat: add API to check if session is persistent (#22622) 2020-03-11 16:02:22 +09:00
Jeremy Apthorp
19314d3caf fix: remove catch-all HandleScope (#22531) 2020-03-10 18:16:58 -07:00
Shelley Vohr
4bca5205bb chore: ShowItemInFolder should use COMSTA (#22614) 2020-03-10 14:12:22 -07:00
Shelley Vohr
97fe4c7718 build: fix broken Views build (#22621) 2020-03-10 13:03:41 -07:00
Shelley Vohr
b607cfa220 test: test setPath for errors thrown (#22626) 2020-03-10 09:03:52 -07:00
Electron Bot
b21c84204b Bump v10.0.0-nightly.20200310 2020-03-10 08:32:26 -07:00
Milan Burda
b081fc3ac3 fix: when building with enable_pdf_viewer = false (#22604) 2020-03-10 19:53:29 +09:00
Alexey Kuzmin
bf75e5a91f build: fix build without built-in spellchecker (#22594) 2020-03-10 18:39:40 +09:00
Erick Zhao
3ff98e15d0 fix: prevent in-memory sessions from writing to custom spellchecker dictionary (#22157)
* fix: prevent in-memory sessions from writing to custom dictionary

* docs

* spec
2020-03-10 16:45:43 +09:00
Shelley Vohr
c0374b5796 chore: don't delete nightly tag after draft (#22588) 2020-03-09 20:13:10 -07:00
Cheng Zhao
8075a55815 test: disable spellchecker context menu test for arm (#22590) 2020-03-10 11:13:41 +09:00
John Kleinschmidt
28cb24fe97 ci: fix windows source cache (#22609) 2020-03-10 10:00:23 +09:00
Samuel Attard
85d4040833 build: upload sentry src bundles to symbol S3 bucket (#22572) 2020-03-09 15:26:45 -07:00
Samuel Attard
a8ffb81be6 docs: clarify that we support the latest minor for the stable lines we support (#22613)
* docs: clarify that we support the latest minor for the stable lines we support

* Update docs/tutorial/support.md

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

Co-authored-by: Mark Lee <malept@users.noreply.github.com>
2020-03-09 13:49:58 -07:00
Shelley Vohr
dcab07c8b1 fix: quick follow-up to threadpool PR (#22611) 2020-03-09 11:26:27 -07:00
Shelley Vohr
3b08736ae2 refactor: migrate base::ThreadPool() as trait to base::ThreadPool:: API (#22555) 2020-03-09 09:13:59 -07:00
Electron Bot
2159b4af4f Bump v10.0.0-nightly.20200309 2020-03-09 08:32:05 -07:00
Cheng Zhao
5bffd78631 chore: proxy_config_monitor_ is no longer used in BrowserContext (#22576)
* chore: proxy_config_monitor_ is no longer used in BrowserContext

* chore: blow src cache to fix Windows CI
2020-03-07 11:41:56 +09:00
Electron Bot
8e34f00822 Bump v10.0.0-nightly.20200306 2020-03-06 07:34:25 -08:00
Samuel Attard
3e3f012c0c chore: shrink key gen patch (#22543) 2020-03-05 17:10:12 -08:00
Samuel Attard
3e2cec83d9 feat: programmatically modify traffic light positioning (#22533)
* setter

* getter

* specs and docs

* fixup

Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2020-03-05 14:22:12 -08:00
Samuel Attard
1811751c6c docs: clean up dark mode related docs (#22489)
* docs: clean up systemPreferences.effectiveAppearance text

* Grammar fixes
* Add links for Electron Packager & Electron Forge
* Update Packager API links, given https://github.com/electron/electron-packager/pull/1131

* docs: clean up Dark Mode guide

* Grammar fixes
* Add links for Electron Packager & Electron Forge

* docs: adjust based on Electron 8 using 10.14 SDK
2020-03-05 13:19:43 -08:00
Samuel Attard
3c19aee73c fix: reposition traffic lights on theme change (#22534) 2020-03-05 12:19:05 -08:00
Samuel Attard
b3e1134a1a feat: add events for spellcheck dictionary downloads (#22449) 2020-03-05 11:58:19 -08:00
Electron Bot
e9132afa98 Bump v10.0.0-nightly.20200305 2020-03-05 07:32:12 -08:00
John Kleinschmidt
0201b3e571 feat(extensions): add chrome.tabs.connect API (#22457)
* feat(extensions): add chrome.tabs.connect API

* test(extensions): verify that chrome.tabs.connect port communication works
2020-03-05 09:59:32 -05:00
John Kleinschmidt
d6701ff435 feat(extensions): add chrome.i18n API (#22455)
* feat(extensions): implement chrome.i18n API

* refactor(extensions): use forward declaration for ScriptExecutor

* fix(extensions): add message filter to handle i18n GetMessageBundle

* test(extensions): add chrome.i18n tests

* fix(extensions): message filter lint error

* fix: remove exclusive test

* fix(extensions): format api feature arrays

Co-Authored-By: Jeremy Apthorp <nornagon@nornagon.net>

* fix(extensions): uncomment chrome.i18n usage in old extensions test

Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
2020-03-05 09:56:21 -05:00
Cheng Zhao
1e9fa204ee ci: add third_party/angle/.git/HEAD to src archive (#22538)
* ci: add third_party/angle/.git/HEAD to src archive

* ci: blow old cache
2020-03-05 15:24:18 +09:00
Cheng Zhao
1d1d04f4a4 fix: destroy node platform after destroying wrappers (#22527) 2020-03-05 09:59:59 +09:00
Jeremy Apthorp
bff8d65200 chore: lint docs on precommit (#22515) 2020-03-04 09:43:57 -08:00
Electron Bot
27a91cbad4 Bump v10.0.0-nightly.20200304 2020-03-04 07:32:07 -08:00
Mark Lee
b4658efae5 docs: add custom dir placeholder explainer to installation guide (#22491)
* docs: add custom dir placeholder explainer to installation docs

* docs: provide a more concrete example of using ELECTRON_CUSTOM_DIR
2020-03-04 08:44:04 -05:00
Samuel Attard
2563681583 fix: disable contextBridge object identity caching (#21803)
* fix: disable contextBridge object identity caching

* cleanup

* chore: make non-const references raw pointers

* fix: zero-param constructors are not explicit

* refactor: use base::LinkedList

Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
2020-03-03 23:18:22 -08:00
Samuel Attard
a53a2aaa45 build: we moved goma to build-tools (#22488)
* build: we moved goma to build-tools

* Apply suggestions from code review

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

* build: do not use goma.gn

Co-authored-by: Mark Lee <malept@users.noreply.github.com>
2020-03-03 23:17:39 -08:00
Samuel Attard
986ccfa816 docs: document the openItem -> openPath breaking change (#22507)
* docs: document the openItem -> openPath breaking change

* Apply suggestions from code review

Co-Authored-By: Erick Zhao <erick@hotmail.ca>

Co-authored-by: Erick Zhao <erick@hotmail.ca>
2020-03-03 23:17:27 -08:00
Cheng Zhao
479354e721 fix: add patch to fix linux arm build (#22523) 2020-03-03 22:41:31 -08:00
Shelley Vohr
e8c628ecdf fix: bail early if no printers on the network (#22418) 2020-03-04 02:20:31 +00:00
Shelley Vohr
efc11563e8 fix: properly forward properties to webview (#22485) 2020-03-03 22:25:14 +00:00
Samuel Attard
8352c39c65 fix: do not reposition traffic lights when fullscreened (#22492) 2020-03-03 14:22:32 -08:00
Electron Bot
39baf68790 chore: bump chromium to 5b340c815ce15ab2efcf277ed19e9 (master) (#22064)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
Co-authored-by: loc <andy@slack-corp.com>
Co-authored-by: Robo <hop2deep@gmail.com>
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
2020-03-03 13:35:05 -08:00
Electron Bot
3a331ffca6 Bump v10.0.0-nightly.20200303 2020-03-03 07:32:06 -08:00
Cheng Zhao
0e0c8e7c6f test: give arm machines more time to load spellchecker (#22494) 2020-03-03 15:03:54 +09:00
Erick Zhao
01c597a646 test: add specs for custom dictionary API (#22158)
* tests

* test: add specs for custom dictionary API

* await
2020-03-02 16:57:46 -08:00
bughit
84126a4f23 feat: optional typically sync callback for WebFrame#executeJavaScript* (#21423) 2020-03-02 16:11:40 -08:00
Samuel Attard
748a917ffd docs: add documentation on case insensitive dictionary hosting (#22483) 2020-03-02 14:15:55 -08:00
Сковорода Никита Андреевич
d731a676f5 feat: add disableDialogs option to WebPreferences (#22395)
Allows to disable dialogs completely in a similar way of how safeDialogs option can be used. Overrides safeDialogs option.
2020-03-02 20:50:44 +00:00
Electron Bot
282a44e747 Bump v10.0.0-nightly.20200302 2020-03-02 07:32:10 -08:00
CezaryKulakowski
0bc906853e fix: call focus on native window on call to webContents.focus on mac (#22323)
* fix: call focus on native window on call to webContents.focus on mac

On mac call to web_contents()->Focus() is not enough so it's
necessary to call it on native window.

* fixup! fix: call focus on native window on call to webContents.focus on mac

* fixup! fix: call focus on native window on call to webContents.focus on mac

* test: close all windows after test

* fix: also match the behavior on Linux

Co-authored-by: Cheng Zhao <zcbenz@github.com>
2020-03-02 16:51:02 +09:00
Felix Rieseberg
cad7054e4f fix: Add ContentsView to AXChildren (#22399) 2020-03-02 11:25:40 +09:00
Cheng Zhao
4c6150ea3d fix: make webRequest work for CORS preflight requests (#22407)
* fix: support CORS preflight

* test: webRequest should work for CORS requests
2020-03-02 10:23:43 +09:00
Samuel Attard
ced487467c fix: dictionaries download path should be in userdata (#22444) 2020-02-28 15:37:53 -08:00
Shelley Vohr
2c974915a3 fix: do not call close on sheets themselves (#22410) 2020-02-28 23:10:21 +00:00
Shelley Vohr
ed33a72c23 chore: ensure correct scopes are in place (#22397) 2020-02-28 23:08:27 +00:00
Shelley Vohr
02cf5baa32 test: throw if no valid outDir (#22412) 2020-02-27 19:32:09 +00:00
Andy Dill
36f982aee2 fix: revive offscreen rendering support (#22160) 2020-02-27 11:00:07 -08:00
Electron Bot
e28f7aadc7 Revert "Bump v10.0.0-nightly.20200227"
This reverts commit a7603a43c3.
2020-02-27 10:01:40 -08:00
Electron Bot
a7603a43c3 Bump v10.0.0-nightly.20200227 2020-02-27 09:13:29 -08:00
Samuel Attard
4323b6d618 chore: add tests for the spellchecker (#22099)
* chore: add tests for the spellchecker

* chore: do not run spellchecker tests on windows
2020-02-26 17:29:19 -08:00
Samuel Attard
0ea1985ec4 docs: improve documentation on spellchecker download URL (#22383)
* docs: improve documentation on spellchecker download URL

* Update session.md
2020-02-26 16:04:27 -08:00
Samuel Attard
ee04c7f7ee fix: allow persistent media salts (#22386)
* fix: allow persistent media salts

* chore: add regression test for persistent media device ids across reloads
2020-02-26 16:03:55 -08:00
loc
fc54db11f3 fix: port CL that fixes ARIA tree impl for macOS (#22367) 2020-02-26 14:34:16 -08:00
Erick Zhao
85ef762269 fix: guard against duplicate TouchBarItem IDs (#22272)
* feat: Add OtherItemsProxy touchbar item

* review!

* fix: guard against duplicate TouchBarItem IDs

* add spec
2020-02-26 22:12:56 +00:00
Samuel Attard
12c1d4411d chore: add deprecation warning on setting app.allowRendererProcessReuse to false (#22337)
* chore: add deprecation warning on setting app.allowRendererProcessReuse to false

* fix: no deprecation warnings in process reuse spec

* chore: add test for new deprecate removeProperty behavior
2020-02-26 14:03:52 -08:00
Electron Bot
6a01898c76 Bump v10.0.0-nightly.20200226 2020-02-26 07:33:18 -08:00
Samuel Attard
7cae73fe7a fix: add patch to set the base download URL rather than override it completely (#22382) 2020-02-25 14:57:28 -08:00
Cheng Zhao
3bc6809759 test: disable clipboard tests for WOA (#22374) 2020-02-25 09:15:50 -08:00
Shelley Vohr
c4f272e28f fix: pass safeDialogs preference properly (#22353) 2020-02-25 16:47:59 +00:00
Shelley Vohr
79270e30a6 fix: don't run environment bootstrapper (#22342) 2020-02-25 16:46:08 +00:00
Electron Bot
2aa734385e Bump v10.0.0-nightly.20200225 2020-02-25 07:32:12 -08:00
Samuel Attard
7b7def7d1e feat: set app.enableRendererProcessReuse to true by default (#22336)
* feat: set app.enableRendererProcessReuse to true by default

* chore: add context aware info to breaking changes doc

* spec: fix nodeIntegration in child windows test for rendererprocessreuse

* spec: fix remote listeners in destroyed renderers spec as the error is now async

* Update api-browser-window-spec.ts

* chore: deprecate affinity

* chore: fix docs

* spec: handle tests crashing without an exist code

* spec: update tests for new rendererprocessreuse default

* spec: with renderer process re-use we get to destroy less views
2020-02-24 18:11:06 -08:00
Andy Dill
7a91078cc7 fix: explicitly specify typeRoots in devtools-frontend (#22195)
This is a follow-up to #22078, fixing another instance of the same issue
2020-02-24 14:09:11 -08:00
Electron Bot
f965b13d74 chore: bump node to v12.16.1 (master) (#22168)
* chore: bump node in DEPS to v12.16.0

* Fixup asar support setup patch

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

* Fixup InternalCallbackScope patch

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

* Fixup GN buildfiles patch

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

* Fixup low-level hooks patch

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

* Fixup globals require patch

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

* Fixup process stream patch

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

* Fixup js2c modification patch

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

* Fixup internal fs override patch

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

* Fixup context-aware warn patch

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

* Fixup Node.js with ltcg config

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

* Fixup oaepLabel patch

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

* Remove redundant ESM test patch

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

* Remove redundant cli flag patch

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

* Update filenames.json

* Remove macro generation in GN build files

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

* Fix some compilation errors upstream

* Add uvwasi to deps

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

* Fix BoringSSL incompatibilities

* Fixup linked module patch

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

* Add missing sources to GN uv build

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

* Patch some uvwasi incompatibilities

* chore: bump Node.js to v12.6.1

* Remove mark_arraybuffer_as_untransferable.patch

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

* Fix uvwasi build failure on win

* Fixup --perf-prof cli option error

* Fixup early cjs module loading

* fix: initialize diagnostics properly

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

* Disable new esm syntax specs

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

* Fixup v8 weakref hook spec

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

* Fix async context timer issue

* Disable monkey-patch-main spec

It relies on https://github.com/nodejs/node/pull/29777, and we don't
override prepareStackTrace.

* Disable new tls specs

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

We don't support much of TLS owing to schisms between BoringSSL and
OpenSSL.

Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2020-02-24 21:02:04 +00:00
Samuel Attard
360c1cad1b chore: do not override history methods when rendererprocessreuse is enabled (#22335) 2020-02-24 12:14:11 -08:00
Samuel Attard
fd46bc653f chore: wrap process restart flag in renderer process reuse check (#22334) 2020-02-24 11:43:55 -08:00
Erick Zhao
1848e3f658 feat: Add OtherItemsProxy TouchBar item (#22270)
* feat: Add OtherItemsProxy touchbar item

* review!
2020-02-24 17:55:06 +09:00
Samuel Maddock
8cc0435d9c fix(extensions): set lowest isolated world id (#22212)
* fix(extensions): set lowest isolated world id

* refactor: move world IDs into separate header file

Several files are including electron_render_frame_observer.h just for the world IDs.
2020-02-24 13:33:58 +09:00
Samuel Maddock
68c6d53156 feat(extensions): add more properties to extension object (#22244) 2020-02-24 12:30:32 +09:00
Cheng Zhao
41931aa5fa fix: disable remote layer APIs in MAS build (#20965)
* fix: add patch to disable remote layer APIs

* fix: use --disable-gpu-memory-buffer-compositor-resources for MAS build
2020-02-24 12:08:57 +09:00
Electron Bot
1502ecf9f7 Bump v10.0.0-nightly.20200223 2020-02-23 07:31:25 -08:00
Electron Bot
f1fb513040 Bump v10.0.0-nightly.20200222 2020-02-22 07:31:54 -08:00
Shelley Vohr
50009f6608 chore: allow custom node-spec-runner options (#22315) 2020-02-21 20:19:25 +00:00
Jeremy Apthorp
a25d7fa440 fix: emit will-navigate for sandboxed contents (#22188) 2020-02-21 11:08:26 -08:00
Jeremy Apthorp
8045152e59 fix: revert {Atom => Electron}Application rename (#22206) 2020-02-21 11:05:03 -08:00
John Kleinschmidt
e0c0875d6f docs: update session.clearAuthCache (#22292)
* docs: update session.clearAuthCache

* Update specs to match doc change.
2020-02-21 13:40:45 -05:00
Syed Umair
e965703e62 fix: typo in crash reporter constructor (#22274) 2020-02-21 16:32:45 +00:00
Electron Bot
686f53c9da Bump v10.0.0-nightly.20200221 2020-02-21 07:31:47 -08:00
Samuel Attard
e7b0a9ca8f feat: add API for receiving logs from service workers (#20624)
* feat: add API for receiving logs from service workers

* feat: add new serviceWorkerContext APIs

* chore: add missing #include's

* refactor: rename serviceWorkerContext to serviceWorkers

* chore: clean up based on review

* chore: remove native_mate

* chore: add tests for the service worker module

* Update spec-main/api-service-workers-spec.ts

Co-Authored-By: Jeremy Apthorp <jeremya@chromium.org>

* chore: fix linting

* chore: handle renames

Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
2020-02-20 15:19:06 -08:00
Mark Lee
2e6fff885d docs: clean up protocol docs (#22262)
* docs: clean up protocol docs

* Fix capitalization
2020-02-20 11:27:17 -06:00
Electron Bot
57943f4de3 Bump v10.0.0-nightly.20200220 2020-02-20 07:32:35 -08:00
Shelley Vohr
a87e0f495d chore: remove libcc from release not generator (#22271) 2020-02-20 05:39:25 +00:00
Sofia Nguy
cdc13919b2 docs: Correct Electron 9 stable date (#22258) 2020-02-19 18:10:19 -05:00
Shelley Vohr
53b4fffff6 doc: remove accidental deprecation (#22256) 2020-02-18 21:36:57 +00:00
Electron Bot
3d53a4766f Bump v10.0.0-nightly.20200218 2020-02-18 07:32:52 -08:00
Electron Bot
bb95f6e7a8 Bump v10.0.0-nightly.20200217 2020-02-17 07:33:49 -08:00
Jeremy Apthorp
360326ecad docs: update dev docs atom -> shell (#22199) 2020-02-17 09:47:22 +09:00
Jeremy Apthorp
f8c4be7caa docs: replace electron.atom.io with electronjs.org in docs/fiddles (#22196) 2020-02-17 09:46:41 +09:00
John Kleinschmidt
7a7754a3dd fix: don't include breakpad_symbols dir in dsym.zip (#22191) 2020-02-17 09:45:41 +09:00
Electron Bot
e6a8906052 Bump v10.0.0-nightly.20200216 2020-02-16 07:32:02 -08:00
Electron Bot
647f086286 Bump v10.0.0-nightly.20200215 2020-02-15 07:32:01 -08:00
Samuel Attard
ed58168488 fix: add patch to route mouse event navigations through the WebContentsDelegate (#22202) 2020-02-14 16:13:46 -08:00
Electron Bot
3d45f0a51a Revert "Bump v10.0.0-nightly.20200214"
This reverts commit b7bb1cc4c3.
2020-02-14 09:33:40 -08:00
Electron Bot
b7bb1cc4c3 Bump v10.0.0-nightly.20200214 2020-02-14 07:31:36 -08:00
Jeremy Apthorp
602913cb4c chore: rename node bindings atom => electron (#22176) 2020-02-14 06:25:39 -05:00
Samuel Attard
b5e7df1cbf chore: update NMV for Electron 10 (#22190) 2020-02-13 13:18:16 -08:00
Shelley Vohr
6ed396df17 fix: crash on custom printing margins (#22164) 2020-02-13 11:15:25 -06:00
Electron Bot
f97ce86d08 Bump v10.0.0-nightly.20200213 2020-02-13 07:52:52 -08:00
John Kleinschmidt
2510607658 Revert "Bump v10.0.0-nightly.20200213"
This reverts commit d40a2a8982.
2020-02-13 10:49:37 -05:00
Electron Bot
d40a2a8982 Bump v10.0.0-nightly.20200213 2020-02-13 07:32:44 -08:00
Jeremy Apthorp
d590f2efe3 feat: enable pdf viewer (#21794) 2020-02-12 16:39:12 -08:00
Electron Bot
85f9c779a8 Bump v10.0.0-nightly.20200212 2020-02-12 09:56:46 -08:00
Electron Bot
493dcf279b Revert "Bump v10.0.0-nightly.20200212"
This reverts commit 22d7b4049c.
2020-02-12 09:53:05 -08:00
Electron Bot
22d7b4049c Bump v10.0.0-nightly.20200212 2020-02-12 09:51:17 -08:00
Electron Bot
592848ed3d Revert "Bump v10.0.0-nightly.20200212"
This reverts commit 2edbff6e6c.
2020-02-12 09:48:33 -08:00
Shelley Vohr
5e7c594691 fix: no-arg console.log is undefined (#22165) 2020-02-12 09:25:11 -08:00
John Kleinschmidt
d1fd237e61 build: fix release script to work with sudowoodo (#22170) 2020-02-12 11:53:14 -05:00
Electron Bot
2edbff6e6c Bump v10.0.0-nightly.20200212 2020-02-12 07:32:14 -08:00
Andrea Brancaleoni
730b77189a ci: fix script to initialize Windows VM (#22140)
* ci: fix script to initialize Windows VM

* remove python3 rename statements, python3 is not required nor
installed

* fix a chicken-egg condition where refreshenv is not installed, after
chocolatey install.

* ci: update script to initialize Windows VM

* Add needed component to vc_buildTools install

  - Microsoft.VisualStudio.Workload.VCTools
  - Microsoft.VisualStudio.Component.VC.140

* Do not install vcredist140 from chocolotey
2020-02-12 09:45:41 -05:00
Tony
fe5318d753 fix RTL bug when used with traffic light repositioning (#22132) 2020-02-12 07:34:55 +00:00
John Kleinschmidt
023a3ca722 ci: Speed up release (#22126)
* build: speed up release builds by using workflows

* Don't get depot-tools twice

* Do not use source from cache

* Checkout boto and requests for release builds

* Make sure vendor dirs are persisted.

* Use git cache for releases.

* show sccache stats right after build

* Make messages easier for sudowoodo to consume.
2020-02-11 15:42:37 -05:00
Alexey Kuzmin
8b89c3cade build: fix spellchecker deps (#22142) 2020-02-11 12:35:50 -05:00
Shelley Vohr
43ca62cad0 refactor: use NSVisualEffectMaterial* constants directly (#22121) 2020-02-11 16:23:10 +00:00
Electron Bot
b66db2f268 Bump v10.0.0-nightly.20200211 2020-02-11 07:31:19 -08:00
Cheng Zhao
c608d6d7fb fix: make webRequest work with WebSocket (#22040)
* fix: web request support proxying websocket

* fix: make tests work

* chore: do not use api:: code outside api/ folder

* chore: do not create proxy when no listener

* test: use separate session to avoid conflicts

* chore: address review
2020-02-11 14:56:09 +09:00
Shelley Vohr
80dd16aa78 spec: unskip webview.printToPDF (#22122) 2020-02-11 03:35:05 +00:00
Electron Bot
2bfe66bcfd chore: bump node to v12.15.0 (master) (#22063)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2020-02-11 01:48:29 +00:00
Cheng Zhao
9ad6f06831 fix: remove cyclic references of BrowserWindow (#22006)
* fix: remove cyclic references in BrowserWindow

* fix: prevent TopLevelWindow from garbage collection

* test: garbage collection of BrowserWindow

* chore: createIDWeakMap is used in tests
2020-02-11 09:37:46 +09:00
Erick Zhao
9942149f3c feat: add session.listWordsFromSpellCheckerDictionary API (#22101)
* doesn't work yet but compiles.

* works

* fixup
2020-02-10 14:08:53 -08:00
Erick Zhao
6fe7d65c9d chore: Revert "notes: Adding Github CI to testing documentation (#21996)" (#22123)
This reverts commit 385388dd6b.
2020-02-10 14:07:58 -08:00
Erick Zhao
17abeca8b7 feat: add session.removeWordFromSpellCheckerDictionary API (#22039)
* feat: add session.removeWordFromSpellCheckerDictionary API

* rebase fixup
2020-02-10 14:07:25 -08:00
Andy Dill
8ca4e761fd fix: explicitly specify typeRoots to avoid crawling parent directories (#22078) 2020-02-10 20:17:04 +00:00
Jeremy Apthorp
b77f701aeb feat: disable the remote module by default (#22091) 2020-02-10 10:49:09 -08:00
Jeremy Apthorp
af631f8204 fix: disallow loading extensions in temp sessions (#22090)
* fix: disallow loading extensions in temp sessions

* docs
2020-02-10 10:28:03 -06:00
Electron Bot
c2cd588e70 Bump v10.0.0-nightly.20200210 2020-02-10 07:31:57 -08:00
CoderPoet
97cf24ac98 docs: modify the showMessageBox method to showMessageBoxSync (#22080)
In handling the will-prevent-unload event, preventDefault should be executed synchronously, and here should also be showMessageBoxSync
2020-02-10 17:12:30 +09:00
Shelley Vohr
d5e7904610 refactor: remove use of Node's DebugOptions (#22083) 2020-02-09 18:42:02 +00:00
Electron Bot
099246f0e4 Bump v10.0.0-nightly.20200209 2020-02-09 07:32:49 -08:00
Samuel Attard
dafbf04b9a fix: use a WeakPtr so we do not UAF the store in FunctionLifetimeMonitor (#22056) 2020-02-08 20:49:38 -08:00
t57ser
43592f8b71 fix: flash plugin (#22072)
* fix: flash plugin

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

* cleanup

* fix linting issue
2020-02-08 17:50:07 -08:00
John Kleinschmidt
058222a9f1 build: try using newer version of xcode/macOS sdk (#22104) 2020-02-08 16:38:14 -05:00
Electron Bot
f989faab5c Bump v10.0.0-nightly.20200208 2020-02-08 07:31:55 -08:00
John Kleinschmidt
5e49aafe55 build: preserve timestamps when stripping files (#22094)
* build: preserve timestamps when stripping files

Resolves an issue where the binaries in mksnapshot.zip were not getting stripped.

* Add missing comma

* Update script/strip-binaries.py

Co-Authored-By: Jeremy Apthorp <jeremya@chromium.org>

* Don't try to run strip on macOS

Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
2020-02-07 17:05:04 -05:00
Jeremy Apthorp
ea89120c9e chore: remove debugging log (#22093) 2020-02-07 12:31:08 -08:00
John Kleinschmidt
c6cec97287 build: copy chromedriver to correct location (#22074)
* build: copy chromedriver to correct location

* build: try to free up disk space for macos releases

* get verbose mode working on strip-binaries

* Only use separate chromedriver build arm/arm64
2020-02-07 13:52:36 -05:00
John Kleinschmidt
45591e31ce ci: fix build failure on doc only changes (#22075)
* ci: fix build failure on doc only changes

* ci: fix doc-only check when CI fires on branch before PR is created
2020-02-07 12:58:47 -05:00
Jeremy Apthorp
e2a5de9248 refactor: saner blink_initialization_order.patch (#22054) 2020-02-07 09:45:13 -08:00
Electron Bot
6a7d722c06 Bump v10.0.0-nightly.20200207 2020-02-07 07:32:49 -08:00
John Kleinschmidt
f1f185ee93 test: get native unit tests running (#21914) 2020-02-07 07:56:54 -05:00
Shelley Vohr
83124889e5 feat: enable passing Node.js cli flags (#21110)
* feat: enable passing Node.js cli flags

* Allow cli flags in ELECTRON_RUN_AS_NODE mode
2020-02-07 02:59:38 +00:00
Jeremy Apthorp
9107157073 feat: [extensions] support extension.getBackgroundPage (#21951)
* feat: [extensions] support extension.getBackgroundPage

* cleanup

* how does c++

* tests

* test for runtime.getBackgroundPage too
2020-02-06 16:42:34 -05:00
Jeremy Apthorp
eca1dd7f8b docs: document supported extensions apis (#22021)
* docs: document supported extensions apis

* Update extensions.md

* Update README.md

* Apply suggestions from code review

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

Co-authored-by: Mark Lee <malept@users.noreply.github.com>
2020-02-06 16:36:02 -05:00
Sesh Sadasivam
c8273e375c fix: add Chromium patch to fix RTL window buttons (#22016)
Classes that inherit from `NSThemeFrame` seem to show window buttons in the
incorrect position when the primary MacOS language is set to an RTL
(right-to-left) language like Arabic or Hebrew. The fix in this commit mirrors
that of `tabbed_browser_window.mm`
(https://chromium-review.googlesource.com/c/chromium/src/+/562603/10/chrome/browser/ui/cocoa/tabbed_browser_window.mm#88).

This change should be upstreamed, and then this patch can be removed.
2020-02-06 16:14:18 -05:00
John Kleinschmidt
f4fd939409 build: copy chromedriver to proper directory for release (#22070) 2020-02-06 14:20:14 -05:00
John Kleinschmidt
e7982623ec ci: enable goma for all testing builds (#21992)
* ci: enable goma for all testing builds

* Use powershell script to start goma on Windows

* Only run ensure_start from PS script.

* add missing percent

* Run stats via command instead of powershell

* use command env var

* Use out cache for faster mac builds

* Disable unneeded logging

* .git directories need to be delete before gn gen

Even though gn gen shows and error about a missing .git directory, the .git delete needs to happen before gn gen.
2020-02-06 12:56:18 -05:00
Erick Zhao
3f880fb7c7 chore: remove teams without write access from CODEOWNERS (#22043)
* chore: update CODEOWNERS for Ecosystem WG

* chore: remove teams w/o write access from CODEOWNERS
2020-02-06 11:31:25 -06:00
Erick Zhao
070e312e8b docs: clarify requirements for GOOGLE_API_KEY (#22034)
* docs: clarify requirements for GOOGLE_API_KEY

* Update docs/api/environment-variables.md

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

* Update docs/api/environment-variables.md

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

* Update docs/api/environment-variables.md

Co-Authored-By: Mark Lee <malept@users.noreply.github.com>

* update

Co-authored-by: Mark Lee <malept@users.noreply.github.com>
2020-02-06 11:28:06 -06:00
Cheng Zhao
629c2121ba chore: print more logging for failed tests (#22060) 2020-02-06 11:15:55 -05:00
Electron Bot
b664c824d2 Bump v10.0.0-nightly.20200206 2020-02-06 07:34:52 -08:00
Electron Bot
42a9d72ce1 chore: bump chromium to 28254008f9e7a2aea5d4426906bfd (master) (#22025)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2020-02-06 07:05:30 +00:00
Samuel Attard
c8fe25e109 build: actually save the brew cache on macOS (#22052) 2020-02-05 14:15:51 -08:00
599 changed files with 10162 additions and 9668 deletions

View File

@@ -67,6 +67,10 @@ machine-linux-medium: &machine-linux-medium
<<: *docker-image
resource_class: medium
machine-linux-xlarge: &machine-linux-xlarge
<<: *docker-image
resource_class: xlarge
machine-linux-2xlarge: &machine-linux-2xlarge
<<: *docker-image
resource_class: 2xlarge+
@@ -227,25 +231,7 @@ step-gclient-sync: &step-gclient-sync
$GCLIENT_EXTRA_ARGS \
"$CIRCLE_REPOSITORY_URL"
ELECTRON_USE_THREE_WAY_MERGE_FOR_PATCHES=1 gclient sync --with_branch_heads --with_tags
# Re-export all the patches to check if there were changes.
python src/electron/script/export_all_patches.py src/electron/patches/config.json
cd src/electron
git update-index --refresh || true
if ! git diff-index --quiet HEAD --; then
# There are changes to the patches. Make a git commit with the updated patches
git add patches
GIT_COMMITTER_NAME="Electron Bot" GIT_COMMITTER_EMAIL="anonymous@electronjs.org" git commit -m "update patches" --author="Electron Bot <anonymous@electronjs.org>"
# Export it
mkdir -p ../../patches
git format-patch -1 --stdout --keep-subject --no-stat --full-index > ../../patches/update-patches.patch
echo
echo "======================================================================"
echo "There were changes to the patches when applying."
echo "Check the CI artifacts for a patch you can apply to fix it."
echo "======================================================================"
exit 1
fi
gclient sync --with_branch_heads --with_tags
fi
step-setup-env-for-build: &step-setup-env-for-build
@@ -317,13 +303,18 @@ step-get-more-space-on-mac: &step-get-more-space-on-mac
sudo rm -rf /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform
fi
# On macOS delete all .git directories under src/ expect for
# third_party/angle/ because of build time generation of file
# gen/angle/commit.h depends on third_party/angle/.git/HEAD
# https://chromium-review.googlesource.com/c/angle/angle/+/2074924
# TODO: maybe better to always leave out */.git/HEAD file for all targets ?
step-delete-git-directories: &step-delete-git-directories
run:
name: Delete all .git directories under src on MacOS to free space
command: |
if [ "`uname`" == "Darwin" ]; then
cd src
( find . -type d -name ".git" ) | xargs rm -rf
( find . -type d -name ".git" -not -path "./third_party/angle/*" ) | xargs rm -rf
fi
# On macOS the yarn install command during gclient sync was run on a linux
@@ -479,7 +470,7 @@ step-electron-maybe-chromedriver-gn-gen: &step-electron-maybe-chromedriver-gn-ge
cd src
if [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
if [ "$USE_GOMA" == "true" ]; then
gn gen out/chromedriver --args="import(\"$GN_CONFIG\") import(\"//electron/build/args/goma.gn\") is_component_ffmpeg=false proprietary_codecs=false $GN_EXTRA_ARGS $GN_BUILDFLAG_ARGS"
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"
else
gn gen out/chromedriver --args="import(\"$GN_CONFIG\") cc_wrapper=\"$SCCACHE_PATH\" is_component_ffmpeg=false proprietary_codecs=false $GN_EXTRA_ARGS $GN_BUILDFLAG_ARGS"
fi
@@ -594,7 +585,7 @@ step-ffmpeg-gn-gen: &step-ffmpeg-gn-gen
command: |
cd src
if [ "$USE_GOMA" == "true" ]; then
gn gen out/ffmpeg --args="import(\"//electron/build/args/ffmpeg.gn\") import(\"//electron/build/args/goma.gn\") $GN_EXTRA_ARGS"
gn gen out/ffmpeg --args="import(\"//electron/build/args/ffmpeg.gn\") import(\"$GN_GOMA_FILE\") $GN_EXTRA_ARGS"
else
gn gen out/ffmpeg --args="import(\"//electron/build/args/ffmpeg.gn\") cc_wrapper=\"$SCCACHE_PATH\" $GN_EXTRA_ARGS"
fi
@@ -661,10 +652,8 @@ step-mksnapshot-build: &step-mksnapshot-build
if [ "`uname`" != "Darwin" ]; then
if [ "$TARGET_ARCH" == "arm" ]; then
electron/script/strip-binaries.py --file $PWD/out/Default/clang_x86_v8_arm/mksnapshot
electron/script/strip-binaries.py --file $PWD/out/Default/clang_x86_v8_arm/v8_context_snapshot_generator
elif [ "$TARGET_ARCH" == "arm64" ]; then
electron/script/strip-binaries.py --file $PWD/out/Default/clang_x64_v8_arm64/mksnapshot
electron/script/strip-binaries.py --file $PWD/out/Default/clang_x64_v8_arm64/v8_context_snapshot_generator
else
electron/script/strip-binaries.py --file $PWD/out/Default/mksnapshot
electron/script/strip-binaries.py --file $PWD/out/Default/v8_context_snapshot_generator
@@ -992,8 +981,6 @@ steps-checkout-and-save-cache: &steps-checkout-and-save-cache
- *step-set-git-cache-path
# This sync call only runs if .circle-sync-done is an EMPTY file
- *step-gclient-sync
- store_artifacts:
path: patches
- *step-save-git-cache
# These next few steps reset Electron to the correct commit regardless of which cache was restored
- run:
@@ -1012,7 +999,6 @@ steps-checkout-and-save-cache: &steps-checkout-and-save-cache
sudo chown -R $(id -u):$(id -g) /portal
mv ./src /portal
- *step-save-src-cache
- *step-save-brew-cache
steps-electron-gn-check: &steps-electron-gn-check
steps:
@@ -1121,18 +1107,6 @@ steps-verify-ffmpeg: &steps-verify-ffmpeg
- *step-verify-ffmpeg
- *step-maybe-notify-slack-failure
steps-verify-mksnapshot: &steps-verify-mksnapshot
steps:
- attach_workspace:
at: .
- *step-depot-tools-add-to-path
- *step-electron-dist-unzip
- *step-mksnapshot-unzip
- *step-setup-linux-for-headless-testing
- *step-verify-mksnapshot
- *step-maybe-notify-slack-failure
steps-verify-chromedriver: &steps-verify-chromedriver
steps:
- attach_workspace:
@@ -1301,6 +1275,7 @@ commands:
at: .
- *step-restore-brew-cache
- *step-install-gnutar-on-mac
- *step-save-brew-cache
- when:
condition: << parameters.checkout-and-assume-cache >>
steps:
@@ -1326,8 +1301,6 @@ commands:
- *step-set-git-cache-path
# This sync call only runs if .circle-sync-done is an EMPTY file
- *step-gclient-sync
- store_artifacts:
path: patches
# These next few steps reset Electron to the correct commit regardless of which cache was restored
- when:
condition: << parameters.preserve-vendor-dirs >>
@@ -1640,9 +1613,9 @@ jobs:
# Layer 2: Builds.
linux-x64-testing:
<<: *machine-linux-2xlarge
<<: *machine-linux-xlarge
environment:
<<: *env-linux-2xlarge
<<: *env-global
<<: *env-testing-build
<<: *env-ninja-status
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_arm64=True'
@@ -1698,6 +1671,7 @@ jobs:
<<: *machine-linux-2xlarge
environment:
<<: *env-linux-2xlarge-release
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_boto=True --custom-var=checkout_requests=True'
<<: *env-release-build
<<: *env-enable-sccache
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
@@ -1710,7 +1684,6 @@ jobs:
<<: *machine-linux-2xlarge
environment:
<<: *env-linux-2xlarge-release
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_boto=True --custom-var=checkout_requests=True'
<<: *env-release-build
<<: *env-enable-sccache
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
@@ -1720,9 +1693,9 @@ jobs:
checkout: false
linux-ia32-testing:
<<: *machine-linux-2xlarge
<<: *machine-linux-xlarge
environment:
<<: *env-linux-2xlarge
<<: *env-global
<<: *env-ia32
<<: *env-testing-build
<<: *env-ninja-status
@@ -1760,6 +1733,7 @@ jobs:
<<: *machine-linux-2xlarge
environment:
<<: *env-linux-2xlarge-release
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_boto=True --custom-var=checkout_requests=True'
<<: *env-ia32
<<: *env-release-build
<<: *env-enable-sccache
@@ -1774,7 +1748,6 @@ jobs:
<<: *machine-linux-2xlarge
environment:
<<: *env-linux-2xlarge-release
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_boto=True --custom-var=checkout_requests=True'
<<: *env-ia32
<<: *env-release-build
<<: *env-enable-sccache
@@ -1786,9 +1759,9 @@ jobs:
checkout: false
linux-arm-testing:
<<: *machine-linux-2xlarge
<<: *machine-linux-xlarge
environment:
<<: *env-linux-2xlarge
<<: *env-global
<<: *env-arm
<<: *env-testing-build
<<: *env-ninja-status
@@ -1831,6 +1804,7 @@ jobs:
<<: *env-release-build
<<: *env-enable-sccache
<<: *env-32bit-release
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_boto=True --custom-var=checkout_requests=True'
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
steps:
- electron-publish:
@@ -1845,7 +1819,6 @@ jobs:
<<: *env-release-build
<<: *env-enable-sccache
<<: *env-32bit-release
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm=True --custom-var=checkout_boto=True --custom-var=checkout_requests=True'
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
steps:
- electron-publish:
@@ -1853,9 +1826,9 @@ jobs:
checkout: false
linux-arm64-testing:
<<: *machine-linux-2xlarge
<<: *machine-linux-xlarge
environment:
<<: *env-linux-2xlarge
<<: *env-global
<<: *env-arm64
<<: *env-testing-build
<<: *env-ninja-status
@@ -1905,6 +1878,7 @@ jobs:
<<: *env-arm64
<<: *env-release-build
<<: *env-enable-sccache
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm64=True --custom-var=checkout_boto=True --custom-var=checkout_requests=True'
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
steps:
- electron-publish:
@@ -1918,7 +1892,6 @@ jobs:
<<: *env-arm64
<<: *env-release-build
<<: *env-enable-sccache
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_arm64=True --custom-var=checkout_boto=True --custom-var=checkout_requests=True'
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
steps:
- electron-publish:
@@ -1975,6 +1948,7 @@ jobs:
<<: *env-mac-large-release
<<: *env-release-build
<<: *env-enable-sccache
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_boto=True --custom-var=checkout_requests=True'
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
steps:
- electron-publish:
@@ -1987,7 +1961,6 @@ jobs:
<<: *env-mac-large-release
<<: *env-release-build
<<: *env-enable-sccache
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_boto=True --custom-var=checkout_requests=True'
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
steps:
- electron-publish:
@@ -2018,14 +1991,6 @@ jobs:
<<: *env-testing-build
<<: *steps-electron-gn-check
mas-chromedriver:
<<: *machine-mac
environment:
<<: *env-machine-mac
<<: *env-release-build
<<: *env-send-slack-notifications
<<: *steps-chromedriver-build
mas-release:
<<: *machine-mac-large
environment:
@@ -2048,6 +2013,7 @@ jobs:
<<: *env-mas
<<: *env-release-build
<<: *env-enable-sccache
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_boto=True --custom-var=checkout_requests=True'
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
steps:
- electron-publish:
@@ -2061,7 +2027,6 @@ jobs:
<<: *env-mas
<<: *env-release-build
<<: *env-enable-sccache
GCLIENT_EXTRA_ARGS: '--custom-var=checkout_boto=True --custom-var=checkout_requests=True'
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
steps:
- electron-publish:
@@ -2145,22 +2110,6 @@ jobs:
<<: *env-send-slack-notifications
<<: *steps-verify-ffmpeg
linux-x64-verify-mksnapshot:
<<: *machine-linux-medium
environment:
<<: *env-linux-medium
<<: *env-headless-testing
<<: *env-send-slack-notifications
<<: *steps-verify-mksnapshot
linux-x64-verify-chromedriver:
<<: *machine-linux-medium
environment:
<<: *env-linux-medium
<<: *env-headless-testing
<<: *env-send-slack-notifications
<<: *steps-verify-chromedriver
linux-ia32-testing-tests:
<<: *machine-linux-medium
environment:
@@ -2207,23 +2156,6 @@ jobs:
<<: *env-send-slack-notifications
<<: *steps-verify-ffmpeg
linux-ia32-verify-mksnapshot:
<<: *machine-linux-medium
environment:
<<: *env-linux-medium
<<: *env-ia32
<<: *env-headless-testing
<<: *env-send-slack-notifications
<<: *steps-verify-mksnapshot
linux-ia32-verify-chromedriver:
<<: *machine-linux-medium
environment:
<<: *env-linux-medium
<<: *env-headless-testing
<<: *env-send-slack-notifications
<<: *steps-verify-chromedriver
osx-testing-tests:
<<: *machine-mac-large
environment:
@@ -2247,20 +2179,6 @@ jobs:
<<: *env-send-slack-notifications
<<: *steps-verify-ffmpeg
osx-verify-mksnapshot:
<<: *machine-mac
environment:
<<: *env-machine-mac
<<: *env-send-slack-notifications
<<: *steps-verify-mksnapshot
osx-verify-chromedriver:
<<: *machine-mac
environment:
<<: *env-machine-mac
<<: *env-send-slack-notifications
<<: *steps-verify-chromedriver
mas-testing-tests:
<<: *machine-mac-large
environment:
@@ -2284,20 +2202,6 @@ jobs:
<<: *env-send-slack-notifications
<<: *steps-verify-ffmpeg
mas-verify-mksnapshot:
<<: *machine-mac
environment:
<<: *env-machine-mac
<<: *env-send-slack-notifications
<<: *steps-verify-mksnapshot
mas-verify-chromedriver:
<<: *machine-mac
environment:
<<: *env-machine-mac
<<: *env-send-slack-notifications
<<: *steps-verify-chromedriver
# Layer 4: Summary.
linux-x64-release-summary:
<<: *machine-linux-medium
@@ -2516,67 +2420,37 @@ workflows:
- linux-x64-release-tests:
requires:
- linux-x64-release
- linux-x64-chromedriver:
requires:
- linux-checkout-fast
- linux-x64-verify-ffmpeg:
requires:
- linux-x64-release
- linux-x64-verify-mksnapshot:
requires:
- linux-x64-release
- linux-x64-verify-chromedriver:
requires:
- linux-x64-release
- linux-x64-chromedriver
- linux-x64-release-summary:
requires:
- linux-x64-release
- linux-x64-release-tests
- linux-x64-verify-ffmpeg
- linux-x64-chromedriver
- linux-ia32-release
- linux-ia32-release-tests:
requires:
- linux-ia32-release
- linux-ia32-chromedriver:
requires:
- linux-checkout-fast
- linux-ia32-verify-ffmpeg:
requires:
- linux-ia32-release
- linux-ia32-verify-mksnapshot:
requires:
- linux-ia32-release
- linux-x64-verify-chromedriver:
requires:
- linux-ia32-release
- linux-ia32-chromedriver
- linux-ia32-release-summary:
requires:
- linux-ia32-release
- linux-ia32-release-tests
- linux-ia32-verify-ffmpeg
- linux-ia32-chromedriver
- linux-arm-release
- linux-arm-chromedriver:
requires:
- linux-checkout-fast
- linux-arm-release-summary:
requires:
- linux-arm-release
- linux-arm-chromedriver
- linux-arm64-release
- linux-arm64-chromedriver:
requires:
- linux-checkout-fast
- linux-arm64-release-summary:
requires:
- linux-arm64-release
- linux-arm64-chromedriver
nightly-mac-release-test:
triggers:
@@ -2597,25 +2471,14 @@ workflows:
- osx-release-tests:
requires:
- osx-release
- osx-chromedriver:
requires:
- mac-checkout-fast
- osx-verify-ffmpeg:
requires:
- osx-release
- osx-verify-mksnapshot:
requires:
- osx-release
- osx-verify-chromedriver:
requires:
- osx-release
- osx-chromedriver
- osx-release-summary:
requires:
- osx-release
- osx-release-tests
- osx-verify-ffmpeg
- osx-chromedriver
- mas-release:
requires:
@@ -2623,25 +2486,14 @@ workflows:
- mas-release-tests:
requires:
- mas-release
- mas-chromedriver:
requires:
- mac-checkout-fast
- mas-verify-ffmpeg:
requires:
- mas-release
- mas-verify-mksnapshot:
requires:
- mas-release
- mas-verify-chromedriver:
requires:
- mas-release
- mas-chromedriver
- mas-release-summary:
requires:
- mas-release
- mas-release-tests
- mas-verify-ffmpeg
- mas-chromedriver
# Various slow and non-essential checks we run only nightly.
# Sanitizer jobs should be added here.

1
.gitattributes vendored
View File

@@ -1,4 +1,3 @@
# `git apply` and friends don't understand CRLF, even on windows. Force those
# files to be checked out with LF endings even if core.autocrlf is true.
*.patch text eol=lf
patches/**/.patches merge=union

12
.github/CODEOWNERS vendored
View File

@@ -3,20 +3,10 @@
# https://help.github.com/articles/about-codeowners
# https://git-scm.com/docs/gitignore
# Most stuff in here is owned by the Community & Safety WG...
/.github/* @electron/wg-community
# ...except the Admin WG maintains this file.
/.github/CODEOWNERS @electron/wg-admin
# Upgrades WG
/patches/ @electron/wg-upgrades
DEPS @electron/wg-upgrades
# Docs & Tooling WG
/default_app/ @electron/wg-docs-tools
/docs/ @electron/wg-docs-tools
# Releases WG
/npm/ @electron/wg-releases
/script/release @electron/wg-releases
/script/release @electron/wg-releases

View File

@@ -18,4 +18,4 @@ Contributors guide: https://github.com/electron/electron/blob/master/CONTRIBUTIN
#### Release Notes
Notes: <!-- Please add a one-line description for app developers to read in the release notes, or `no-notes` if no notes relevant to app developers. Examples and help on special cases: https://github.com/electron/clerk/blob/master/README.md#examples -->
Notes: <!-- Please add a one-line description for app developers to read in the release notes, or 'none' if no notes relevant to app developers. Examples and help on special cases: https://github.com/electron/clerk/blob/master/README.md#examples -->

1
.github/config.yml vendored
View File

@@ -33,6 +33,7 @@ authorizedUsers:
- codebytere
- deepak1556
- jkleinsc
- loc
- MarshallOfSound
- miniak
- nornagon

109
BUILD.gn
View File

@@ -3,7 +3,6 @@ import("//build/config/ui.gni")
import("//build/config/win/manifest.gni")
import("//components/spellcheck/spellcheck_build_features.gni")
import("//content/public/app/mac_helpers.gni")
import("//extensions/buildflags/buildflags.gni")
import("//pdf/features.gni")
import("//ppapi/buildflags/buildflags.gni")
import("//printing/buildflags/buildflags.gni")
@@ -59,17 +58,6 @@ if (is_mas_build) {
"It doesn't make sense to build a MAS build on a non-mac platform")
}
if (enable_pdf_viewer) {
assert(enable_pdf, "PDF viewer support requires enable_pdf=true")
assert(enable_electron_extensions,
"PDF viewer support requires enable_electron_extensions=true")
}
if (enable_electron_extensions) {
assert(enable_extensions,
"Chrome extension support requires enable_extensions=true")
}
config("branding") {
defines = [
"ELECTRON_PRODUCT_NAME=\"$electron_product_name\"",
@@ -236,6 +224,7 @@ grit("resources") {
]
# Mojo manifest overlays are generated.
source_is_generated = true
grit_flags = [
"-E",
"target_gen_dir=" + rebase_path(target_gen_dir, root_build_dir),
@@ -336,17 +325,13 @@ source_set("electron_lib") {
"//chrome/app/resources:platform_locale_settings",
"//chrome/services/printing/public/mojom",
"//components/certificate_transparency",
"//components/crash/core/app",
"//components/language/core/browser",
"//components/net_log",
"//components/network_hints/browser",
"//components/network_hints/common:mojo_bindings",
"//components/network_hints/renderer",
"//components/network_session_configurator/common",
"//components/pref_registry",
"//components/prefs",
"//components/upload_list",
"//components/user_prefs",
"//components/viz/host",
"//components/viz/service",
"//content/public/browser",
@@ -459,15 +444,10 @@ source_set("electron_lib") {
]
}
if (is_linux) {
deps += [ "//components/crash/content/browser" ]
}
if (is_mac) {
deps += [
"//components/remote_cocoa/app_shim",
"//content/common:mac_helpers",
"//third_party/crashpad/crashpad/client",
"//ui/accelerated_widget_mac",
]
@@ -489,7 +469,11 @@ source_set("electron_lib") {
]
if (is_mas_build) {
sources += [ "shell/browser/api/electron_api_app_mas.mm" ]
sources -= [ "shell/browser/auto_updater_mac.mm" ]
sources -= [
"shell/browser/auto_updater_mac.mm",
"shell/common/crash_reporter/crash_reporter_mac.h",
"shell/common/crash_reporter/crash_reporter_mac.mm",
]
defines += [ "MAS_BUILD" ]
} else {
libs += [
@@ -510,21 +494,17 @@ source_set("electron_lib") {
deps += [
":libnotify_loader",
"//build/config/linux/gtk",
"//chrome/browser/ui/gtk",
"//dbus",
"//device/bluetooth",
"//third_party/breakpad:client",
"//ui/events/devices/x11",
"//ui/events/platform/x11",
"//ui/gtk",
"//ui/views/controls/webview",
"//ui/wm",
]
if (use_x11) {
deps += [
"//ui/gfx/x",
"//ui/gtk:x",
]
}
configs += [ ":gio_unix" ]
include_dirs += [ "//third_party/breakpad" ]
configs += [ "//build/config/linux:x11" ]
defines += [
# Disable warnings for g_settings_list_schemas.
@@ -540,7 +520,6 @@ source_set("electron_lib") {
if (is_win) {
libs += [ "dwmapi.lib" ]
deps += [
"//components/crash/core/app:crash_export_thunks",
"//ui/native_theme:native_theme_browser",
"//ui/views/controls/webview",
"//ui/wm",
@@ -552,6 +531,14 @@ source_set("electron_lib") {
]
}
if ((is_mac && !is_mas_build) || is_win) {
sources += [
"shell/common/crash_reporter/crash_reporter_crashpad.cc",
"shell/common/crash_reporter/crash_reporter_crashpad.h",
]
deps += [ "//third_party/crashpad/crashpad/client" ]
}
if (enable_plugins) {
deps += [ "chromium_src:plugins" ]
sources += [
@@ -591,6 +578,8 @@ source_set("electron_lib") {
if (enable_remote_module) {
sources += [
"shell/common/api/remote/object_life_monitor.cc",
"shell/common/api/remote/object_life_monitor.h",
"shell/common/api/remote/remote_callback_freer.cc",
"shell/common/api/remote/remote_callback_freer.h",
"shell/common/api/remote/remote_object_freer.cc",
@@ -611,22 +600,10 @@ source_set("electron_lib") {
]
}
if (enable_view_api) {
if (enable_views_api) {
sources += [
"shell/browser/api/views/electron_api_box_layout.cc",
"shell/browser/api/views/electron_api_box_layout.h",
"shell/browser/api/views/electron_api_button.cc",
"shell/browser/api/views/electron_api_button.h",
"shell/browser/api/views/electron_api_label_button.cc",
"shell/browser/api/views/electron_api_label_button.h",
"shell/browser/api/views/electron_api_layout_manager.cc",
"shell/browser/api/views/electron_api_layout_manager.h",
"shell/browser/api/views/electron_api_md_text_button.cc",
"shell/browser/api/views/electron_api_md_text_button.h",
"shell/browser/api/views/electron_api_resize_area.cc",
"shell/browser/api/views/electron_api_resize_area.h",
"shell/browser/api/views/electron_api_text_field.cc",
"shell/browser/api/views/electron_api_text_field.h",
"shell/browser/api/views/electron_api_image_view.cc",
"shell/browser/api/views/electron_api_image_view.h",
]
}
@@ -640,6 +617,15 @@ source_set("electron_lib") {
deps += [ "//components/printing/common:mojo_interfaces" ]
}
deps += [
"//components/pref_registry",
"//components/user_prefs",
"//extensions/browser",
"//extensions/browser:core_api_provider",
"//extensions/common",
"//extensions/common:core_api_provider",
"//extensions/renderer",
]
if (enable_electron_extensions) {
sources += filenames.lib_sources_extensions
deps += [
@@ -648,11 +634,6 @@ source_set("electron_lib") {
"shell/common/extensions/api:extensions_features",
"//chrome/browser/resources:component_extension_resources",
"//components/zoom",
"//extensions/browser",
"//extensions/browser:core_api_provider",
"//extensions/common",
"//extensions/common:core_api_provider",
"//extensions/renderer",
]
}
@@ -733,6 +714,7 @@ if (is_mac) {
sources = [
"$root_out_dir/egl_intermediates/libEGL.dylib",
"$root_out_dir/egl_intermediates/libGLESv2.dylib",
"$root_out_dir/egl_intermediates/libvulkan.dylib",
]
outputs = [ "{{bundle_contents_dir}}/Libraries/{{source_file_part}}" ]
public_deps = [ "//ui/gl:angle_library_copy" ]
@@ -766,17 +748,11 @@ if (is_mac) {
}
bundle_data("electron_crashpad_helper") {
sources = [ "$root_out_dir/chrome_crashpad_handler" ]
sources = [ "$root_out_dir/crashpad_handler" ]
outputs = [ "{{bundle_contents_dir}}/Helpers/{{source_file_part}}" ]
outputs = [ "{{bundle_resources_dir}}/{{source_file_part}}" ]
public_deps = [ "//components/crash/core/app:chrome_crashpad_handler" ]
if (is_asan) {
# crashpad_handler requires the ASan runtime at its @executable_path.
sources += [ "$root_out_dir/libclang_rt.asan_osx_dynamic.dylib" ]
public_deps += [ "//build/config/sanitizers:copy_asan_runtime" ]
}
public_deps = [ "//third_party/crashpad/crashpad/handler:crashpad_handler" ]
}
mac_framework_bundle("electron_framework") {
@@ -785,7 +761,6 @@ if (is_mac) {
framework_contents = [
"Resources",
"Libraries",
"Helpers",
]
public_deps = [
":electron_framework_libraries",
@@ -1009,10 +984,10 @@ if (is_mac) {
}
extract_symbols("crashpad_handler_syms") {
binary = "$root_out_dir/chrome_crashpad_handler"
binary = "$root_out_dir/crashpad_handler"
symbol_dir = "$root_out_dir/breakpad_symbols"
dsym_file = "$root_out_dir/chrome_crashpad_handler.dSYM/Contents/Resources/DWARF/chrome_crashpad_handler"
deps = [ "//components/crash/core/app:chrome_crashpad_handler" ]
dsym_file = "$root_out_dir/crashpad_handler.dSYM/Contents/Resources/DWARF/crashpad_handler"
deps = [ "//third_party/crashpad/crashpad/handler:crashpad_handler" ]
}
group("electron_symbols") {
@@ -1053,7 +1028,6 @@ if (is_mac) {
":electron_app_manifest",
":electron_lib",
":packed_resources",
"//components/crash/core/app",
"//content:sandbox_helper_win",
"//electron/buildflags",
"//ui/strings",
@@ -1083,11 +1057,6 @@ if (is_mac) {
"shell/browser/resources/win/resource.h",
]
deps += [
"//components/browser_watcher:browser_watcher_client",
"//components/crash/core/app:run_as_crashpad_handler",
]
libs = [
"comctl32.lib",
"uiautomationcore.lib",
@@ -1291,7 +1260,7 @@ dist_zip("electron_chromedriver_zip") {
mksnapshot_deps = [
":licenses",
"//tools/v8_context_snapshot:v8_context_snapshot_generator($v8_snapshot_toolchain)",
"//tools/v8_context_snapshot:v8_context_snapshot_generator",
"//v8:mksnapshot($v8_snapshot_toolchain)",
]

8
DEPS
View File

@@ -12,11 +12,11 @@ gclient_gn_args = [
vars = {
'chromium_version':
'83.0.4103.64',
'f3d154dbc31bd902e8eecfd48fd85d01d0eea0f2',
'node_version':
'v12.14.1',
'v12.16.1',
'nan_version':
'2ee313aaca52e2b478965ac50eb5082520380d1b',
'2c4ee8a32a299eada3cd6e468bbd0a473bfea96d',
'boto_version': 'f7574aa6cc2c819430c1f05e9a1a1a666ef8169b',
'pyyaml_version': '3.12',
@@ -155,5 +155,3 @@ hooks = [
recursedeps = [
'src',
]
# Touch DEPS again to bust cache

View File

@@ -1 +1 @@
9.0.0
10.0.0-nightly.20200402

View File

@@ -28,7 +28,7 @@
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
version: 1.0.{build}
build_cloud: libcc-20
build_cloud: electron-16-core
image: vs2019bt-16.4.0
environment:
GIT_CACHE_PATH: C:\Users\electron\libcc_cache
@@ -116,6 +116,12 @@ build_script:
if ($(7z a $zipfile src -xr!android_webview -xr!electron -xr'!*\.git' -xr!third_party\WebKit\LayoutTests! -xr!third_party\blink\web_tests -xr!third_party\blink\perf_tests -slp -t7z -mmt=30;$LASTEXITCODE -ne 0)) {
Write-warning "Could not save source to shared drive; continuing anyway"
}
# build time generation of file gen/angle/commit.h depends on
# third_party/angle/.git/HEAD.
# https://chromium-review.googlesource.com/c/angle/angle/+/2074924
if ($(7z a $zipfile src\third_party\angle\.git\HEAD;$LASTEXITCODE -ne 0)) {
Write-warning "Failed to add third_party\angle\.git\HEAD; continuing anyway"
}
}
- ps: >-
if ($env:GN_CONFIG -ne 'release') {

View File

@@ -71,7 +71,6 @@ steps:
ELECTRON_TEST_RESULTS_DIR: junit
MOCHA_MULTI_REPORTERS: 'mocha-junit-reporter, tap'
MOCHA_REPORTER: mocha-multi-reporters
MOCHA_TIMEOUT: 120000
- task: PublishTestResults@2
displayName: 'Publish Test Results'
@@ -89,6 +88,5 @@ steps:
- powershell: |
Get-Process | Where Name Like "electron*" | Stop-Process
Get-Process | Where Name Like "MicrosoftEdge*" | Stop-Process
Get-Process | Where Name Like "msedge*" | Stop-Process
displayName: 'Kill processes left running from last test run'
condition: always()

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 = 80
node_module_version = 82
v8_promise_internal_field_count = 1
v8_typed_array_max_size_in_heap = 0
@@ -20,3 +20,7 @@ angle_enable_vulkan_validation_layers = false
dawn_enable_vulkan_validation_layers = false
is_cfi = false
enable_osr = true
enable_electron_extensions = true

View File

@@ -1,2 +0,0 @@
goma_dir = rebase_path("//electron/external_binaries/goma")
use_goma = true

View File

@@ -25,13 +25,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',
]
def skip_path(dep, dist_zip, target_cpu):

View File

@@ -13,7 +13,7 @@ buildflag_header("buildflags") {
"ENABLE_RUN_AS_NODE=$enable_run_as_node",
"ENABLE_OSR=$enable_osr",
"ENABLE_REMOTE_MODULE=$enable_remote_module",
"ENABLE_VIEW_API=$enable_view_api",
"ENABLE_VIEWS_API=$enable_views_api",
"ENABLE_PEPPER_FLASH=$enable_pepper_flash",
"ENABLE_PDF_VIEWER=$enable_pdf_viewer",
"ENABLE_TTS=$enable_tts",

View File

@@ -12,7 +12,7 @@ declare_args() {
enable_remote_module = true
enable_view_api = false
enable_views_api = true
enable_pdf_viewer = true
@@ -32,7 +32,7 @@ declare_args() {
enable_pepper_flash = true
# Enable Chrome extensions support.
enable_electron_extensions = true
enable_electron_extensions = false
# Enable Spellchecker support
enable_builtin_spellchecker = true

View File

@@ -14,8 +14,6 @@ static_library("chrome") {
sources = [
"//chrome/browser/browser_process.cc",
"//chrome/browser/browser_process.h",
"//chrome/browser/crash_upload_list/crash_upload_list_crashpad.cc",
"//chrome/browser/crash_upload_list/crash_upload_list_crashpad.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",
@@ -53,12 +51,10 @@ static_library("chrome") {
"//chrome/browser/ssl/security_state_tab_helper.cc",
"//chrome/browser/ssl/security_state_tab_helper.h",
"//chrome/browser/ssl/tls_deprecation_config.cc",
"//chrome/browser/ui/views/autofill/autofill_popup_view_utils.cc",
"//chrome/browser/ui/views/autofill/autofill_popup_view_utils.h",
"//chrome/browser/ui/autofill/popup_view_common.cc",
"//chrome/browser/ui/autofill/popup_view_common.h",
"//chrome/browser/win/chrome_process_finder.cc",
"//chrome/browser/win/chrome_process_finder.h",
"//chrome/child/v8_crashpad_support_win.cc",
"//chrome/child/v8_crashpad_support_win.h",
"//extensions/browser/app_window/size_constraints.cc",
"//extensions/browser/app_window/size_constraints.h",
]
@@ -73,7 +69,6 @@ static_library("chrome") {
deps = [
"//chrome/browser:resource_prefetch_predictor_proto",
"//components/feature_engagement:buildflags",
"//components/optimization_guide/proto:optimization_guide_proto",
]
if (is_linux) {
@@ -114,15 +109,11 @@ static_library("chrome") {
]
if (use_aura) {
sources += [ "//chrome/browser/platform_util_aura.cc" ]
if (!is_win) {
sources += [
"//chrome/browser/ui/views/color_chooser_aura.cc",
"//chrome/browser/ui/views/color_chooser_aura.h",
]
}
sources += [
"//chrome/browser/platform_util_aura.cc",
"//chrome/browser/ui/views/color_chooser_aura.cc",
"//chrome/browser/ui/views/color_chooser_aura.h",
]
deps += [ "//components/feature_engagement" ]
}
@@ -243,22 +234,17 @@ static_library("chrome") {
sources += [
"//chrome/browser/extensions/chrome_url_request_util.cc",
"//chrome/browser/extensions/chrome_url_request_util.h",
"//chrome/browser/pdf/pdf_extension_util.cc",
"//chrome/browser/pdf/pdf_extension_util.h",
"//chrome/browser/plugins/plugin_response_interceptor_url_loader_throttle.cc",
"//chrome/browser/plugins/plugin_response_interceptor_url_loader_throttle.h",
"//chrome/renderer/extensions/extension_hooks_delegate.cc",
"//chrome/renderer/extensions/extension_hooks_delegate.h",
"//chrome/renderer/extensions/tabs_hooks_delegate.cc",
"//chrome/renderer/extensions/tabs_hooks_delegate.h",
"//chrome/renderer/pepper/chrome_pdf_print_client.cc",
"//chrome/renderer/pepper/chrome_pdf_print_client.h",
]
if (enable_pdf_viewer) {
sources += [
"//chrome/browser/pdf/pdf_extension_util.cc",
"//chrome/browser/pdf/pdf_extension_util.h",
"//chrome/renderer/pepper/chrome_pdf_print_client.cc",
"//chrome/renderer/pepper/chrome_pdf_print_client.h",
]
}
}
}
@@ -277,14 +263,12 @@ source_set("plugins") {
"//chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h",
]
deps += [
"//components/pdf/browser",
"//media:media_buildflags",
"//ppapi/buildflags",
"//ppapi/proxy:ipc",
"//services/device/public/mojom",
]
if (enable_pdf_viewer) {
deps += [ "//components/pdf/browser" ]
}
if (enable_pepper_flash) {
sources += [
"//chrome/browser/renderer_host/pepper/pepper_flash_browser_host.cc",
@@ -330,11 +314,9 @@ source_set("plugins") {
"//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",
"//components/strings",
"//media:media_buildflags",
"//ppapi/host",

View File

@@ -45,10 +45,10 @@ async function createWindow () {
await app.whenReady();
const options: Electron.BrowserWindowConstructorOptions = {
width: 900,
height: 600,
width: 960,
height: 620,
autoHideMenuBar: true,
backgroundColor: '#FFFFFF',
backgroundColor: '#2f3241',
webPreferences: {
preload: path.resolve(__dirname, 'preload.js'),
contextIsolation: true,

View File

@@ -8,7 +8,7 @@ body {
}
.container {
margin: 15px 30px 30px 30px;
margin: 15px 30px;
background-color: #2f3241;
flex: 1;
display: flex;

View File

@@ -18,7 +18,6 @@ an issue:
## Guides and Tutorials
* [About Electron](tutorial/about.md)
* [Setting up the Development Environment](tutorial/development-environment.md)
* [Setting up macOS](tutorial/development-environment.md#setting-up-macos)
* [Setting up Windows](tutorial/development-environment.md#setting-up-windows)

View File

@@ -608,7 +608,6 @@ Returns `String` - The current application directory.
* `videos` Directory for a user's videos.
* `logs` Directory for your app's log folder.
* `pepperFlashSystemPlugin` Full path to the system version of the Pepper Flash plugin.
* `crashDumps` Directory where crash dumps are stored.
Returns `String` - A path to a special directory or file associated with `name`. On
failure, an `Error` is thrown.
@@ -1228,7 +1227,7 @@ Start accessing a security scoped resource. With this method Electron applicatio
### `app.enableSandbox()` _Experimental_
Enables full sandbox mode on the app.
Enables full sandbox mode on the app. This means that all renderers will be launched sandboxed, regardless of the value of the `sandbox` flag in WebPreferences.
This method can only be called before app is ready.

View File

@@ -207,7 +207,7 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
* `opacity` Number (optional) - Set the initial opacity of the window, between 0.0 (fully
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 desktop environments. Default is `false`.
some GTK desktop environments. Default is [`nativeTheme.shouldUseDarkColors`](native-theme.md).
* `transparent` Boolean (optional) - Makes the window [transparent](frameless-window.md#transparent-window).
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
@@ -623,12 +623,6 @@ Returns:
Emitted on 3-finger swipe. Possible directions are `up`, `right`, `down`, `left`.
The method underlying this event is built to handle older macOS-style trackpad swiping,
where the content on the screen doesn't move with the swipe. Most macOS trackpads are not
configured to allow this kind of swiping anymore, so in order for it to emit properly the
'Swipe between pages' preference in `System Preferences > Trackpad > More Gestures` must be
set to 'Swipe with two or three fingers'.
#### Event: 'rotate-gesture' _macOS_
Returns:
@@ -807,10 +801,6 @@ hide it immediately.
A `Boolean` property that determines whether the window is in simple (pre-Lion) fullscreen mode.
#### `win.fullScreen`
A `Boolean` property that determines whether the window is in fullscreen mode.
#### `win.visibleOnAllWorkspaces`
A `Boolean` property that determines whether the window is visible on all workspaces.

View File

@@ -16,80 +16,66 @@ app.whenReady().then(() => {
})
```
## --ignore-connections-limit=`domains`
## Electron CLI Flags
Ignore the connections limit for `domains` list separated by `,`.
### --auth-server-whitelist=`url`
## --disable-http-cache
Disables the disk cache for HTTP requests.
## --disable-http2
Disable HTTP/2 and SPDY/3.1 protocols.
## --lang
Set a custom locale.
## --inspect=`port` and --inspect-brk=`port`
Debug-related flags, see the [Debugging the Main Process][debugging-main-process] guide for details.
## --remote-debugging-port=`port`
Enables remote debugging over HTTP on the specified `port`.
## --disk-cache-size=`size`
Forces the maximum disk space to be used by the disk cache, in bytes.
## --js-flags=`flags`
Specifies the flags passed to the Node.js engine. It has to be passed when starting
Electron if you want to enable the `flags` in the main process.
```sh
$ electron --js-flags="--harmony_proxies --harmony_collections" your-app
```
See the [Node.js documentation][node-cli] or run `node --help` in your terminal for a list of available flags. Additionally, run `node --v8-options` to see a list of flags that specifically refer to Node.js's V8 JavaScript engine.
## --proxy-server=`address:port`
Use a specified proxy server, which overrides the system setting. This switch
only affects requests with HTTP protocol, including HTTPS and WebSocket
requests. It is also noteworthy that not all proxy servers support HTTPS and
WebSocket requests. The proxy URL does not support username and password
authentication [per Chromium issue](https://bugs.chromium.org/p/chromium/issues/detail?id=615947).
## --proxy-bypass-list=`hosts`
Instructs Electron to bypass the proxy server for the given semi-colon-separated
list of hosts. This flag has an effect only if used in tandem with
`--proxy-server`.
A comma-separated list of servers for which integrated authentication is enabled.
For example:
```javascript
const { app } = require('electron')
app.commandLine.appendSwitch('proxy-bypass-list', '<local>;*.google.com;*foo.com;1.2.3.4:5678')
```sh
--auth-server-whitelist='*example.com, *foobar.com, *baz'
```
Will use the proxy server for all hosts except for local addresses (`localhost`,
`127.0.0.1` etc.), `google.com` subdomains, hosts that contain the suffix
`foo.com` and anything at `1.2.3.4:5678`.
then any `url` ending with `example.com`, `foobar.com`, `baz` will be considered
for integrated authentication. Without `*` prefix the URL has to match exactly.
## --proxy-pac-url=`url`
### --auth-negotiate-delegate-whitelist=`url`
Uses the PAC script at the specified `url`.
A comma-separated list of servers for which delegation of user credentials is required.
Without `*` prefix the URL has to match exactly.
## --no-proxy-server
### --disable-http-cache
Don't use a proxy server and always make direct connections. Overrides any other
proxy server flags that are passed.
Disables the disk cache for HTTP requests.
## --host-rules=`rules`
### --disable-http2
Disable HTTP/2 and SPDY/3.1 protocols.
### --disable-renderer-backgrounding
Prevents Chromium from lowering the priority of invisible pages' renderer
processes.
This flag is global to all renderer processes, if you only want to disable
throttling in one window, you can take the hack of
[playing silent audio][play-silent-audio].
### --disk-cache-size=`size`
Forces the maximum disk space to be used by the disk cache, in bytes.
### --enable-api-filtering-logging
Enables caller stack logging for the following APIs (filtering events):
- `desktopCapturer.getSources()` / `desktop-capturer-get-sources`
- `remote.require()` / `remote-require`
- `remote.getGlobal()` / `remote-get-builtin`
- `remote.getBuiltin()` / `remote-get-global`
- `remote.getCurrentWindow()` / `remote-get-current-window`
- `remote.getCurrentWebContents()` / `remote-get-current-web-contents`
### --enable-logging
Prints Chromium's logging into console.
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.
### --host-rules=`rules`
A comma-separated list of `rules` that control how hostnames are mapped.
@@ -107,69 +93,96 @@ These mappings apply to the endpoint host in a net request (the TCP connect
and host resolver in a direct connection, and the `CONNECT` in an HTTP proxy
connection, and the endpoint host in a `SOCKS` proxy connection).
## --host-resolver-rules=`rules`
### --host-resolver-rules=`rules`
Like `--host-rules` but these `rules` only apply to the host resolver.
## --auth-server-whitelist=`url`
A comma-separated list of servers for which integrated authentication is enabled.
For example:
```sh
--auth-server-whitelist='*example.com, *foobar.com, *baz'
```
then any `url` ending with `example.com`, `foobar.com`, `baz` will be considered
for integrated authentication. Without `*` prefix the URL has to match exactly.
## --auth-negotiate-delegate-whitelist=`url`
A comma-separated list of servers for which delegation of user credentials is required.
Without `*` prefix the URL has to match exactly.
## --ignore-certificate-errors
### --ignore-certificate-errors
Ignores certificate related errors.
## --ppapi-flash-path=`path`
### --ignore-connections-limit=`domains`
Sets the `path` of the pepper flash plugin.
Ignore the connections limit for `domains` list separated by `,`.
## --ppapi-flash-version=`version`
### --js-flags=`flags`
Sets the `version` of the pepper flash plugin.
Specifies the flags passed to the Node.js engine. It has to be passed when starting
Electron if you want to enable the `flags` in the main process.
## --log-net-log=`path`
```sh
$ electron --js-flags="--harmony_proxies --harmony_collections" your-app
```
See the [Node.js documentation][node-cli] or run `node --help` in your terminal for a list of available flags. Additionally, run `node --v8-options` to see a list of flags that specifically refer to Node.js's V8 JavaScript engine.
### --lang
Set a custom locale.
### --log-net-log=`path`
Enables net log events to be saved and writes them to `path`.
## --disable-renderer-backgrounding
### --no-proxy-server
Prevents Chromium from lowering the priority of invisible pages' renderer
processes.
Don't use a proxy server and always make direct connections. Overrides any other
proxy server flags that are passed.
This flag is global to all renderer processes, if you only want to disable
throttling in one window, you can take the hack of
[playing silent audio][play-silent-audio].
### --no-sandbox
## --enable-logging
Disables Chromium sandbox, which is now enabled by default.
Should only be used for testing.
Prints Chromium's logging into console.
### --proxy-bypass-list=`hosts`
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.
Instructs Electron to bypass the proxy server for the given semi-colon-separated
list of hosts. This flag has an effect only if used in tandem with
`--proxy-server`.
## --v=`log_level`
For example:
```javascript
const { app } = require('electron')
app.commandLine.appendSwitch('proxy-bypass-list', '<local>;*.google.com;*foo.com;1.2.3.4:5678')
```
Will use the proxy server for all hosts except for local addresses (`localhost`,
`127.0.0.1` etc.), `google.com` subdomains, hosts that contain the suffix
`foo.com` and anything at `1.2.3.4:5678`.
### --proxy-pac-url=`url`
Uses the PAC script at the specified `url`.
### --proxy-server=`address:port`
Use a specified proxy server, which overrides the system setting. This switch
only affects requests with HTTP protocol, including HTTPS and WebSocket
requests. It is also noteworthy that not all proxy servers support HTTPS and
WebSocket requests. The proxy URL does not support username and password
authentication [per Chromium issue](https://bugs.chromium.org/p/chromium/issues/detail?id=615947).
### --remote-debugging-port=`port`
Enables remote debugging over HTTP on the specified `port`.
### --ppapi-flash-path=`path`
Sets the `path` of the pepper flash plugin.
### --ppapi-flash-version=`version`
Sets the `version` of the pepper flash plugin.
### --v=`log_level`
Gives the default maximal active V-logging level; 0 is the default. Normally
positive values are used for V-logging levels.
This switch only works when `--enable-logging` is also passed.
## --vmodule=`pattern`
### --vmodule=`pattern`
Gives the per-module maximal V-logging levels to override the value given by
`--v`. E.g. `my_module=2,foo*=3` would change the logging level for all code in
@@ -181,20 +194,38 @@ logging level for all code in the source files under a `foo/bar` directory.
This switch only works when `--enable-logging` is also passed.
## --enable-api-filtering-logging
## Node.js Flags
Enables caller stack logging for the following APIs (filtering events):
- `desktopCapturer.getSources()` / `desktop-capturer-get-sources`
- `remote.require()` / `remote-require`
- `remote.getGlobal()` / `remote-get-builtin`
- `remote.getBuiltin()` / `remote-get-global`
- `remote.getCurrentWindow()` / `remote-get-current-window`
- `remote.getCurrentWebContents()` / `remote-get-current-web-contents`
Electron supports some of the [CLI flags][node-cli] supported by Node.js.
## --no-sandbox
**Note:** Passing unsupported command line switches to Electron when it is not running in `ELECTRON_RUN_AS_NODE` will have no effect.
Disables Chromium sandbox, which is now enabled by default.
Should only be used for testing.
### --inspect-brk[=[host:]port]
Activate inspector on host:port and break at start of user script. Default host:port is 127.0.0.1:9229.
Aliased to `--debug-brk=[host:]port`.
### --inspect-port=[host:]port
Set the `host:port` to be used when the inspector is activated. Useful when activating the inspector by sending the SIGUSR1 signal. Default host is `127.0.0.1`.
Aliased to `--debug-port=[host:]port`.
### --inspect[=[host:]port]
Activate inspector on `host:port`. Default is `127.0.0.1:9229`.
V8 inspector integration allows tools such as Chrome DevTools and IDEs to debug and profile Electron instances. The tools attach to Electron instances via a TCP port and communicate using the [Chrome DevTools Protocol](https://chromedevtools.github.io/devtools-protocol/).
See the [Debugging the Main Process][debugging-main-process] guide for more details.
Aliased to `--debug[=[host:]port`.
### --inspect-publish-uid=stderr,http
Specify ways of the inspector web socket url exposure.
By default inspector websocket url is available in stderr and under /json/list endpoint on http://host:port/json/list.
[app]: app.md
[append-switch]: app.md#appcommandlineappendswitchswitch-value

View File

@@ -4,13 +4,18 @@
Process: [Main](../glossary.md#main-process), [Renderer](../glossary.md#renderer-process)
The following is an example of setting up Electron to automatically submit
crash reports to a remote server:
The following is an example of automatically submitting a crash report to a
remote server:
```javascript
const { crashReporter } = require('electron')
crashReporter.start({ submitURL: 'https://your-domain.com/url-to-submit' })
crashReporter.start({
productName: 'YourName',
companyName: 'YourCompany',
submitURL: 'https://your-domain.com/url-to-submit',
uploadToServer: true
})
```
For setting up a server to accept and process crash reports, you can use
@@ -25,19 +30,11 @@ Or use a 3rd party hosted solution:
* [Sentry](https://docs.sentry.io/clients/electron)
* [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.
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.
Crash reports are saved locally in an application-specific temp directory folder.
For a `productName` of `YourName`, crash reports will be stored in a folder
named `YourName Crashes` inside the temp directory. You can customize this temp
directory location for your app by calling the `app.setPath('temp', '/my/custom/temp')`
API before starting the crash reporter.
## Methods
@@ -46,68 +43,40 @@ The `crashReporter` module has the following methods:
### `crashReporter.start(options)`
* `options` Object
* `companyName` String
* `submitURL` String - URL that crash reports will be sent to as POST.
* `productName` String (optional) - Defaults to `app.name`.
* `companyName` String (optional) _Deprecated_ - Deprecated alias for
`{ globalExtra: { _companyName: ... } }`.
* `uploadToServer` Boolean (optional) - Whether crash reports should be sent
to the server. If false, crash reports will be collected and stored in the
crashes directory, but not uploaded. Default is `true`.
* `ignoreSystemCrashHandler` Boolean (optional) - If true, crashes generated
in the main process will not be forwarded to the system crash handler.
Default is `false`.
* `rateLimit` Boolean (optional) _macOS_ _Windows_ - If true, limit the
number of crashes uploaded to 1/hour. Default is `false`.
* `compress` Boolean (optional) _macOS_ _Windows_ - If true, crash reports
will be compressed and uploaded with `Content-Encoding: gzip`. Not all
collection servers support compressed payloads. Default is `false`.
* `extra` Record<String, String> (optional) - Extra string key/value
annotations that will be sent along with crash reports that are generated
in the main process. Only string values are supported. Crashes generated in
child processes will not contain these extra
parameters to crash reports generated from child processes, call
[`addExtraParameter`](#crashreporteraddextraparameterkey-value) from the
child process.
* `globalExtra` Record<String, String> (optional) - Extra string key/value
annotations that will be sent along with any crash reports generated in any
process. These annotations cannot be changed once the crash reporter has
been started. If a key is present in both the global extra parameters and
the process-specific extra parameters, then the global one will take
precedence. By default, `productName` and the app version are included, as
well as the Electron version.
* `uploadToServer` Boolean (optional) - Whether crash reports should be sent to the server. Default is `true`.
* `ignoreSystemCrashHandler` Boolean (optional) - Default is `false`.
* `extra` Record<String, String> (optional) - An object you can define that will be sent along with the
report. Only string properties are sent correctly. Nested objects are not
supported. When using Windows, the property names and values must be fewer than 64 characters.
* `crashesDirectory` String (optional) - Directory to store the crash reports temporarily (only used when the crash reporter is started via `process.crashReporter.start`).
This method must be called before using any other `crashReporter` APIs. Once
initialized this way, the crashpad handler collects crashes from all
subsequently created processes. The crash reporter cannot be disabled once
started.
You are required to call this method before using any other `crashReporter` APIs
and in each process (main/renderer) from which you want to collect crash reports.
You can pass different options to `crashReporter.start` when calling from different processes.
This method should be called as early as possible in app startup, preferably
before `app.on('ready')`. If the crash reporter is not initialized at the time
a renderer process is created, then that renderer process will not be monitored
by the crash reporter.
**Note** Child processes created via the `child_process` module will not have access to the Electron modules.
Therefore, to collect crash reports from them, use `process.crashReporter.start` instead. Pass the same options as above
along with an additional one called `crashesDirectory` that should point to a directory to store the crash
reports temporarily. You can test this out by calling `process.crash()` to crash the child process.
**Note:** You can test out the crash reporter by generating a crash using
`process.crash()`.
**Note:** If you need send additional/updated `extra` parameters after your
first call `start` you can call `addExtraParameter` on macOS or call `start`
again with the new/updated `extra` parameters on Linux and Windows.
**Note:** If you need to send additional/updated `extra` parameters after your
first call `start` you can call `addExtraParameter`.
**Note:** Parameters passed in `extra`, `globalExtra` or set with
`addExtraParameter` have limits on the length of the keys and values. Key names
must be at most 39 bytes long, and values must be no longer than 127 bytes.
Keys with names longer than the maximum will be silently ignored. Key values
longer than the maximum length will be truncated.
**Note:** Calling this method from the renderer process is deprecated.
**Note:** On macOS and windows, Electron uses a new `crashpad` client for crash collection and reporting.
If you want to enable crash reporting, initializing `crashpad` from the main process using `crashReporter.start` is required
regardless of which process you want to collect crashes from. Once initialized this way, the crashpad handler collects
crashes from all processes. You still have to call `crashReporter.start` from the renderer or child process, otherwise crashes from
them will get reported without `companyName`, `productName` or any of the `extra` information.
### `crashReporter.getLastCrashReport()`
Returns [`CrashReport`](structures/crash-report.md) - The date and ID of the
last crash report. Only crash reports that have been uploaded will be returned;
even if a crash report is present on disk it will not be returned until it is
uploaded. In the case that there are no uploaded reports, `null` is returned.
Returns [`CrashReport`](structures/crash-report.md):
**Note:** Calling this method from the renderer process is deprecated.
Returns the date and ID of the last crash report. Only crash reports that have been uploaded will be returned; even if a crash report is present on disk it will not be returned until it is uploaded. In the case that there are no uploaded reports, `null` is returned.
### `crashReporter.getUploadedReports()`
@@ -116,61 +85,43 @@ Returns [`CrashReport[]`](structures/crash-report.md):
Returns all uploaded crash reports. Each report contains the date and uploaded
ID.
**Note:** Calling this method from the renderer process is deprecated.
### `crashReporter.getUploadToServer()`
Returns `Boolean` - Whether reports should be submitted to the server. Set through
the `start` method or `setUploadToServer`.
**Note:** Calling this method from the renderer process is deprecated.
**Note:** This API can only be called from the main process.
### `crashReporter.setUploadToServer(uploadToServer)`
* `uploadToServer` Boolean - Whether reports should be submitted to the server.
* `uploadToServer` Boolean _macOS_ - Whether reports should be submitted to the server.
This would normally be controlled by user preferences. This has no effect if
called before `start` is called.
**Note:** Calling this method from the renderer process is deprecated.
**Note:** This API can only be called from the main process.
### `crashReporter.getCrashesDirectory()` _Deprecated_
### `crashReporter.addExtraParameter(key, value)` _macOS_ _Windows_
Returns `String` - The directory where crashes are temporarily stored before being uploaded.
* `key` String - Parameter key, must be less than 64 characters long.
* `value` String - Parameter value, must be less than 64 characters long.
**Note:** This method is deprecated, use `app.getPath('crashDumps')` instead.
Set an extra parameter to be sent with the crash report. The values
specified here will be sent in addition to any values set via the `extra` option when `start` was called. This API is only available on macOS and windows, if you need to add/update extra parameters on Linux after your first call to `start` you can call `start` again with the updated `extra` options.
### `crashReporter.addExtraParameter(key, value)`
### `crashReporter.removeExtraParameter(key)` _macOS_ _Windows_
* `key` String - Parameter key, must be no longer than 39 bytes.
* `value` String - Parameter value, must be no longer than 127 bytes.
* `key` String - Parameter key, must be less than 64 characters long.
Set an extra parameter to be sent with the crash report. The values specified
here will be sent in addition to any values set via the `extra` option when
`start` was called.
Parameters added in this fashion (or via the `extra` parameter to
`crashReporter.start`) are specific to the calling process. Adding extra
parameters in the main process will not cause those parameters to be sent along
with crashes from renderer or other child processes. Similarly, adding extra
parameters in a renderer process will not result in those parameters being sent
with crashes that occur in other renderer processes or in the main process.
**Note:** Parameters have limits on the length of the keys and values. Key
names must be no longer than 39 bytes, and values must be no longer than 127
bytes. Keys with names longer than the maximum will be silently ignored. Key
values longer than the maximum length will be truncated.
### `crashReporter.removeExtraParameter(key)`
* `key` String - Parameter key, must be no longer than 39 bytes.
Remove a extra parameter from the current set of parameters. Future crashes
will not include this parameter.
Remove a extra parameter from the current set of parameters so that it will not be sent with the crash report.
### `crashReporter.getParameters()`
Returns `Record<String, String>` - The current 'extra' parameters of the crash reporter.
See all of the current parameters being passed to the crash reporter.
### `crashReporter.getCrashesDirectory()`
Returns `String` - The directory where crashes are temporarily stored before being uploaded.
## Crash Report Payload

View File

@@ -269,7 +269,6 @@ Shows a message box, it will block the process until the message box is closed.
It returns the index of the clicked button.
The `browserWindow` argument allows the dialog to attach itself to a parent window, making it modal.
If `browserWindow` is not shown dialog will not be attached to it. In such case It will be displayed as independed window.
### `dialog.showMessageBox([browserWindow, ]options)`

View File

@@ -80,6 +80,18 @@ and spawned child processes that set `ELECTRON_RUN_AS_NODE`.
Starts the process as a normal Node.js process.
In this mode, you will be able to pass [cli options](https://nodejs.org/api/cli.html) to Node.js as
you would when running the normal Node.js executable, with the exception of the following flags:
* "--openssl-config"
* "--use-bundled-ca"
* "--use-openssl-ca",
* "--force-fips"
* "--enable-fips"
These flags are disabled owing to the fact that Electron uses BoringSSL instead of OpenSSL when building Node.js'
`crypto` module, and so will not work as designed.
### `ELECTRON_NO_ATTACH_CONSOLE` _Windows_
Don't attach to the current console session.
@@ -135,14 +147,3 @@ the one downloaded by `npm install`. Usage:
```sh
export ELECTRON_OVERRIDE_DIST_PATH=/Users/username/projects/electron/out/Testing
```
## Set By Electron
Electron sets some variables in your environment at runtime.
### `ORIGINAL_XDG_CURRENT_DESKTOP`
This variable is set to the value of `XDG_CURRENT_DESKTOP` that your application
originally launched with. Electron sometimes modifies the value of `XDG_CURRENT_DESKTOP`
to affect other logic within Chromium so if you want access to the _original_ value
you should look up this environment variable instead.

View File

@@ -28,6 +28,9 @@ session.loadExtension('path/to/unpacked/extension').then(({ id }) => {
Loaded extensions will not be automatically remembered across exits; if you do
not call `loadExtension` when the app runs, the extension will not be loaded.
Note that loading extensions is only supported in persistent sessions.
Attempting to load an extension into an in-memory session will throw an error.
See the [`session`](session.md) documentation for more information about
loading, unloading, and querying active extensions.

View File

@@ -51,12 +51,17 @@ A `String` representing the HTTP status message.
#### `response.headers`
An `Record<string, string[]>` representing the response HTTP headers. The `headers` object is
A `Record<string, string | string[]>` representing the HTTP response headers. The `headers` object is
formatted as follows:
* All header names are lowercased.
* Each header name produces an array-valued property on the headers object.
* Each header value is pushed into the array associated with its header name.
* Duplicates of `age`, `authorization`, `content-length`, `content-type`,
`etag`, `expires`, `from`, `host`, `if-modified-since`, `if-unmodified-since`,
`last-modified`, `location`, `max-forwards`, `proxy-authorization`, `referer`,
`retry-after`, `server`, or `user-agent` are discarded.
* `set-cookie` is always an array. Duplicates are added to the array.
* For duplicate `cookie` headers, the values are joined together with '; '.
* For all other headers, the values are joined together with ', '.
#### `response.httpVersion`

View File

@@ -57,7 +57,7 @@ Removes all listeners, or those of the specified `channel`.
Send an asynchronous message to the main process via `channel`, along with
arguments. Arguments will be serialized with the [Structured Clone
Algorithm][SCA], just like [`postMessage`][], so prototype chains will not be
Algorithm][SCA], just like [`window.postMessage`][], so prototype chains will not be
included. Sending Functions, Promises, Symbols, WeakMaps, or WeakSets will
throw an exception.
@@ -68,6 +68,10 @@ throw an exception.
The main process handles it by listening for `channel` with the
[`ipcMain`](ipc-main.md) module.
If you need to transfer a [`MessagePort`][] to the main process, use [`ipcRenderer.postMessage`](#ipcrendererpostmessagechannel-message-transfer).
If you want to receive a single response from the main process, like the result of a method call, consider using [`ipcRenderer.invoke`](#ipcrendererinvokechannel-args).
### `ipcRenderer.invoke(channel, ...args)`
* `channel` String
@@ -77,7 +81,7 @@ Returns `Promise<any>` - Resolves with the response from the main process.
Send a message to the main process via `channel` and expect a result
asynchronously. Arguments will be serialized with the [Structured Clone
Algorithm][SCA], just like [`postMessage`][], so prototype chains will not be
Algorithm][SCA], just like [`window.postMessage`][], so prototype chains will not be
included. Sending Functions, Promises, Symbols, WeakMaps, or WeakSets will
throw an exception.
@@ -102,6 +106,10 @@ ipcMain.handle('some-name', async (event, someArgument) => {
})
```
If you need to transfer a [`MessagePort`][] to the main process, use [`ipcRenderer.postMessage`](#ipcrendererpostmessagechannel-message-transfer).
If you do not need a respons to the message, consider using [`ipcRenderer.send`](#ipcrenderersendchannel-args).
### `ipcRenderer.sendSync(channel, ...args)`
* `channel` String
@@ -111,7 +119,7 @@ Returns `any` - The value sent back by the [`ipcMain`](ipc-main.md) handler.
Send a message to the main process via `channel` and expect a result
synchronously. Arguments will be serialized with the [Structured Clone
Algorithm][SCA], just like [`postMessage`][], so prototype chains will not be
Algorithm][SCA], just like [`window.postMessage`][], so prototype chains will not be
included. Sending Functions, Promises, Symbols, WeakMaps, or WeakSets will
throw an exception.
@@ -127,6 +135,35 @@ and replies by setting `event.returnValue`.
> last resort. It's much better to use the asynchronous version,
> [`invoke()`](ipc-renderer.md#ipcrendererinvokechannel-args).
### `ipcRenderer.postMessage(channel, message, [transfer])`
* `channel` String
* `message` any
* `transfer` MessagePort[] (optional)
Send a message to the main process, optionally transferring ownership of zero
or more [`MessagePort`][] objects.
The transferred `MessagePort` objects will be available in the main process as
[`MessagePortMain`](message-port-main.md) objects by accessing the `ports`
property of the emitted event.
For example:
```js
// Renderer process
const { port1, port2 } = new MessageChannel()
ipcRenderer.postMessage('port', { message: 'hello' }, [port1])
// Main process
ipcMain.on('port', (e, msg) => {
const [port] = e.ports
// ...
})
```
For more information on using `MessagePort` and `MessageChannel`, see the [MDN
documentation](https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel).
### `ipcRenderer.sendTo(webContentsId, channel, ...args)`
* `webContentsId` Number
@@ -150,4 +187,5 @@ in the [`ipc-renderer-event`](structures/ipc-renderer-event.md) structure docs.
[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
[`window.postMessage`]: https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage
[`MessagePort`]: https://developer.mozilla.org/en-US/docs/Web/API/MessagePort

View File

@@ -14,7 +14,7 @@ See [`Menu`](menu.md) for examples.
* `menuItem` MenuItem
* `browserWindow` [BrowserWindow](browser-window.md)
* `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`, `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`, `togglefullscreen`, `window`, `minimize`, `close`, `help`, `about`, `services`, `hide`, `hideOthers`, `unhide`, `quit`, `startSpeaking`, `stopSpeaking`, `minimize`, `zoom`, `front`, `appMenu`, `fileMenu`, `editMenu`, `viewMenu`, `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`.
@@ -151,7 +151,7 @@ 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`, `togglefullscreen`, `window`, `minimize`, `close`, `help`, `about`, `services`, `hide`, `hideOthers`, `unhide`, `quit`, `startSpeaking`, `stopSpeaking`, `close`, `minimize`, `zoom`, `front`, `appMenu`, `fileMenu`, `editMenu`, `viewMenu`, `recentDocuments`, `toggleTabBar`, `selectNextTab`, `selectPreviousTab`, `mergeAllWindows`, `clearRecentDocuments`, `moveTabToNewWindow` or `windowMenu`
#### `menuItem.accelerator`

View File

@@ -0,0 +1,30 @@
# MessageChannelMain
`MessageChannelMain` is the main-process-side equivalent of the DOM
[`MessageChannel`][] object. Its singular function is to create a pair of
connected [`MessagePortMain`](message-port-main.md) objects.
See the [Channel Messaging API][] documentation for more information on using
channel messaging.
## Class: MessageChannelMain
Example:
```js
const { port1, port2 } = new MessageChannelMain()
w.webContents.postMessage('port', null, [port2])
port1.postMessage({ some: 'message' })
```
### Instance Properties
#### `channel.port1`
A [`MessagePortMain`](message-port-main.md) property.
#### `channel.port2`
A [`MessagePortMain`](message-port-main.md) property.
[`MessageChannel`]: https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel
[Channel Messaging API]: https://developer.mozilla.org/en-US/docs/Web/API/Channel_Messaging_API

View File

@@ -0,0 +1,53 @@
# MessagePortMain
`MessagePortMain` is the main-process-side equivalent of the DOM
[`MessagePort`][] object. It behaves similarly to the DOM version, with the
exception that it uses the Node.js `EventEmitter` event system, instead of the
DOM `EventTarget` system. This means you should use `port.on('message', ...)`
to listen for events, instead of `port.onmessage = ...` or
`port.addEventListener('message', ...)`
See the [Channel Messaging API][] documentation for more information on using
channel messaging.
`MessagePortMain` is an [EventEmitter][event-emitter].
## Class: MessagePortMain
### Instance Methods
#### `port.postMessage(message, [transfer])`
* `message` any
* `transfer` MessagePortMain[] (optional)
Sends a message from the port, and optionally, transfers ownership of objects
to other browsing contexts.
#### `port.start()`
Starts the sending of messages queued on the port. Messages will be queued
until this method is called.
#### `port.close()`
Disconnects the port, so it is no longer active.
### Instance Events
#### Event: 'message'
Returns:
* `messageEvent` Object
* `data` any
* `ports` MessagePortMain[]
Emitted when a MessagePortMain object receives a message.
#### Event: 'close'
Emitted when the remote end of a MessagePortMain object becomes disconnected.
[`MessagePort`]: https://developer.mozilla.org/en-US/docs/Web/API/MessagePort
[Channel Messaging API]: https://developer.mozilla.org/en-US/docs/Web/API/Channel_Messaging_API

View File

@@ -40,7 +40,7 @@ Starts recording network events to `path`.
### `netLog.stopLogging()`
Returns `Promise<String>` - resolves with a file path to which network logs were recorded.
Returns `Promise<void>` - resolves when the net log has been flushed to disk.
Stops recording network events. If not called, net logging will automatically end when app quits.
@@ -48,8 +48,4 @@ Stops recording network events. If not called, net logging will automatically en
### `netLog.currentlyLogging` _Readonly_
A `Boolean` property that indicates whether network logs are recorded.
### `netLog.currentlyLoggingPath` _Readonly_ _Deprecated_
A `String` property that returns the path to the current log file.
A `Boolean` property that indicates whether network logs are currently being recorded.

View File

@@ -4,22 +4,6 @@
Process: [Main](../glossary.md#main-process)
This module cannot be used until the `ready` event of the `app`
module is emitted.
For example:
```javascript
const { app, powerMonitor } = require('electron')
app.whenReady().then(() => {
powerMonitor.on('suspend', () => {
console.log('The system is going to sleep')
})
})
```
## Events
The `powerMonitor` module emits the following events:

View File

@@ -439,6 +439,13 @@ example `"en-US,fr,de,ko,zh-CN,ja"`.
This doesn't affect existing `WebContents`, and each `WebContents` can use
`webContents.setUserAgent` to override the session-wide user agent.
#### `ses.isPersistent()`
Returns `Boolean` - Whether or not this session is a persistent one. The default
`webContents` session of a `BrowserWindow` is persistent. When creating a session
from a partition, session prefixed with `persist:` will be persistent, while others
will be temporary.
#### `ses.getUserAgent()`
Returns `String` - The user agent for this session.
@@ -479,9 +486,7 @@ event. The [DownloadItem](download-item.md) will not have any `WebContents` asso
the initial state will be `interrupted`. The download will start only when the
`resume` API is called on the [DownloadItem](download-item.md).
#### `ses.clearAuthCache(options)`
* `options` ([RemovePassword](structures/remove-password.md) | [RemoveClientCertificate](structures/remove-client-certificate.md))
#### `ses.clearAuthCache()`
Returns `Promise<void>` - resolves when the sessions HTTP authentication cache has been cleared.
@@ -566,6 +571,8 @@ requests an API that Electron does not support) then they will be logged to the
console.
Note that Electron does not support the full range of Chrome extensions APIs.
See [Supported Extensions APIs](extensions.md#supported-extensions-apis) for
more details on what is supported.
Note that in previous versions of Electron, extensions that were loaded would
be remembered for future runs of the application. This is no longer the case:
@@ -588,6 +595,9 @@ This API does not support loading packed (.crx) extensions.
**Note:** This API cannot be called before the `ready` event of the `app` module
is emitted.
**Note:** Loading extensions into in-memory (non-persistent) sessions is not
supported and will throw an error.
#### `ses.removeExtension(extensionId)`
* `extensionId` String - ID of extension to remove

View File

@@ -3,6 +3,7 @@
* `frameId` Integer - The ID of the renderer frame that sent this message
* `returnValue` any - Set this to the value to be returned in a synchronous message
* `sender` WebContents - Returns the `webContents` that sent the message
* `ports` MessagePortMain[] - A list of MessagePorts that were transferred with this message
* `reply` Function - A function that will send an IPC message to the renderer frame that sent the original message that you are currently handling. You should use this method to "reply" to the sent message in order to guarantee the reply will go to the correct process and frame.
* `channel` String
* `...args` any[]

View File

@@ -2,5 +2,6 @@
* `sender` IpcRenderer - The `IpcRenderer` instance that emitted the event originally
* `senderId` Integer - The `webContents.id` that sent the message, you can call `event.sender.sendTo(event.senderId, ...)` to reply to the message, see [ipcRenderer.sendTo][ipc-renderer-sendto] for more information. This only applies to messages sent from a different renderer. Messages sent directly from the main process set `event.senderId` to `0`.
* `ports` MessagePort[] - A list of MessagePorts that were transferred with this message
[ipc-renderer-sendto]: #ipcrenderersendtowindowid-channel--arg1-arg2-

View File

@@ -1,4 +0,0 @@
# NewWindowEvent Object extends `Event`
* `newGuest` BrowserWindow (optional)

View File

@@ -0,0 +1,23 @@
# PostBody Object
* `data` Array<[PostData](./post-data.md)> - The post data to be sent to the
new window.
* `contentType` String - The `content-type` header used for the data. One of
`application/x-www-form-urlencoded` or `multipart/form-data`. Corresponds to
the `enctype` attribute of the submitted HTML form.
* `boundary` String (optional) - The boundary used to separate multiple parts of
the message. Only valid when `contentType` is `multipart/form-data`.
Note that keys starting with `--` are not currently supported. For example, this will errantly submit as `multipart/form-data` when `nativeWindowOpen` is set to `false` in webPreferences:
```html
<form
target="_blank"
method="POST"
enctype="application/x-www-form-urlencoded"
action="https://postman-echo.com/post"
>
<input type="text" name="--theKey">
<input type="submit">
</form>
```

View File

@@ -0,0 +1,21 @@
# PostData Object
* `type` String - One of the following:
* `rawData` - The data is available as a `Buffer`, in the `rawData` field.
* `file` - The object represents a file. The `filePath`, `offset`, `length`
and `modificationTime` fields will be used to describe the file.
* `blob` - The object represents a `Blob`. The `blobUUID` field will be used
to describe the `Blob`.
* `bytes` String (optional) - The raw bytes of the post data in a `Buffer`.
Required for the `rawData` type.
* `filePath` String (optional) - The path of the file being uploaded. Required
for the `file` type.
* `blobUUID` String (optional) - The `UUID` of the `Blob` being uploaded.
Required for the `blob` type.
* `offset` Integer (optional) - The offset from the beginning of the file being
uploaded, in bytes. Only valid for `file` types.
* `length` Integer (optional) - The length of the file being uploaded, in bytes.
If set to `-1`, the whole file will be uploaded. Only valid for `file` types.
* `modificationTime` Double (optional) - The modification time of the file
represented by a double, which is the number of seconds since the `UNIX Epoch`
(Jan 1, 1970). Only valid for `file` types.

View File

@@ -1,5 +0,0 @@
# RemoveClientCertificate Object
* `type` String - `clientCertificate`.
* `origin` String - Origin of the server whose associated client certificate
must be removed from the cache.

View File

@@ -1,15 +0,0 @@
# RemovePassword Object
* `type` String - `password`.
* `origin` String (optional) - When provided, the authentication info
related to the origin will only be removed otherwise the entire cache
will be cleared.
* `scheme` String (optional) - Scheme of the authentication.
Can be `basic`, `digest`, `ntlm`, `negotiate`. Must be provided if
removing by `origin`.
* `realm` String (optional) - Realm of the authentication. Must be provided if
removing by `origin`.
* `username` String (optional) - Credentials of the authentication. Must be
provided if removing by `origin`.
* `password` String (optional) - Credentials of the authentication. Must be
provided if removing by `origin`.

View File

@@ -0,0 +1,12 @@
## Class: TouchBarOtherItemsProxy
> Instantiates a special "other items proxy", which nests TouchBar elements inherited
> from Chromium at the space indicated by the proxy. By default, this proxy is added
> to each TouchBar at the end of the input. For more information, see the AppKit docs on
> [NSTouchBarItemIdentifierOtherItemsProxy](https://developer.apple.com/documentation/appkit/nstouchbaritemidentifierotheritemsproxy)
>
> Note: Only one instance of this class can be added per TouchBar.
Process: [Main](../tutorial/application-architecture.md#main-and-renderer-processes)
### `new TouchBarOtherItemsProxy()` _Experimental_

View File

@@ -58,6 +58,10 @@ A [`typeof TouchBarSlider`](./touch-bar-slider.md) reference to the `TouchBarSli
A [`typeof TouchBarSpacer`](./touch-bar-spacer.md) reference to the `TouchBarSpacer` class.
#### `TouchBarOtherItemsProxy`
A [`typeof TouchBarOtherItemsProxy`](./touch-bar-other-items-proxy.md) reference to the `TouchBarOtherItemsProxy` class.
### Instance Properties
The following properties are available on instances of `TouchBar`:

View File

@@ -138,7 +138,7 @@ Emitted when page receives favicon urls.
Returns:
* `event` NewWindowEvent
* `event` Event
* `url` String
* `frameName` String
* `disposition` String - Can be `default`, `foreground-tab`, `background-tab`,
@@ -150,6 +150,10 @@ Returns:
* `referrer` [Referrer](structures/referrer.md) - The referrer that will be
passed to the new window. May or may not result in the `Referer` header being
sent, depending on the referrer policy.
* `postBody` [PostBody](structures/post-body.md) (optional) - The post data that
will be sent to the new window, along with the appropriate headers that will
be set. If no post data is to be sent, the value will be `null`. Only defined
when the window is being created by a form that set `target=_blank`.
Emitted when the page requests to open a new window for a `url`. It could be
requested by `window.open` or an external link like `<a target='_blank'>`.
@@ -162,7 +166,7 @@ new [`BrowserWindow`](browser-window.md). If you call `event.preventDefault()` a
instance, failing to do so may result in unexpected behavior. For example:
```javascript
myBrowserWindow.webContents.on('new-window', (event, url, frameName, disposition, options) => {
myBrowserWindow.webContents.on('new-window', (event, url, frameName, disposition, options, additionalFeatures, referrer, postBody) => {
event.preventDefault()
const win = new BrowserWindow({
webContents: options.webContents, // use existing webContents if provided
@@ -170,7 +174,16 @@ myBrowserWindow.webContents.on('new-window', (event, url, frameName, disposition
})
win.once('ready-to-show', () => win.show())
if (!options.webContents) {
win.loadURL(url) // existing webContents will be navigated automatically
const loadOptions = {
httpReferrer: referrer
}
if (postBody != null) {
const { data, contentType, boundary } = postBody
loadOptions.postData = postBody.data
loadOptions.extraHeaders = `content-type: ${contentType}; boundary=${boundary}`
}
win.loadURL(url, loadOptions) // existing webContents will be navigated automatically
}
event.newGuest = win
})
@@ -310,7 +323,7 @@ and allow the page to be unloaded.
const { BrowserWindow, dialog } = require('electron')
const win = new BrowserWindow({ width: 800, height: 600 })
win.webContents.on('will-prevent-unload', (event) => {
const choice = dialog.showMessageBox(win, {
const choice = dialog.showMessageBoxSync(win, {
type: 'question',
buttons: ['Leave', 'Stay'],
title: 'Do you want to leave this site?',
@@ -1579,6 +1592,32 @@ ipcMain.on('ping', (event) => {
})
```
#### `contents.postMessage(channel, message, [transfer])`
* `channel` String
* `message` any
* `transfer` MessagePortMain[] (optional)
Send a message to the renderer process, optionally transferring ownership of
zero or more [`MessagePortMain`][] objects.
The transferred `MessagePortMain` objects will be available in the renderer
process by accessing the `ports` property of the emitted event. When they
arrive in the renderer, they will be native DOM `MessagePort` objects.
For example:
```js
// Main process
const { port1, port2 } = new MessageChannelMain()
webContents.postMessage('port', { message: 'hello' }, [port1])
// Renderer process
ipcRenderer.on('port', (e, msg) => {
const [port] = e.ports
// ...
})
```
#### `contents.enableDeviceEmulation(parameters)`
* `parameters` Object
@@ -1804,7 +1843,7 @@ A [`WebContents`](web-contents.md) instance that might own this `WebContents`.
#### `contents.devToolsWebContents` _Readonly_
A `WebContents | null` property that represents the of DevTools `WebContents` associated with a given `WebContents`.
A `WebContents` of DevTools for this `WebContents`.
**Note:** Users should never store this object because it may become `null`
when the DevTools has been closed.

View File

@@ -12,73 +12,8 @@ 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 (12.0)
### Removed: `crashReporter` methods in the renderer process
The following `crashReporter` methods are no longer available in the renderer
process:
- `crashReporter.start`
- `crashReporter.getLastCrashReport`
- `crashReporter.getUploadedReports`
- `crashReporter.getUploadToServer`
- `crashReporter.setUploadToServer`
- `crashReporter.getCrashesDirectory`
They should be called only from the main process.
See [#23265](https://github.com/electron/electron/pull/23265) for more details.
## Planned Breaking API Changes (11.0)
## Planned Breaking API Changes (10.0)
### Deprecated: `companyName` argument to `crashReporter.start()`
The `companyName` argument to `crashReporter.start()`, which was previously
required, is now optional, and further, is deprecated. To get the same
behavior in a non-deprecated way, you can pass a `companyName` value in
`globalExtra`.
```js
// Deprecated in Electron 10
crashReporter.start({ companyName: 'Umbrella Corporation' })
// Replace with
crashReporter.start({ globalExtra: { _companyName: 'Umbrella Corporation' } })
```
### Deprecated: `crashReporter.getCrashesDirectory()`
The `crashReporter.getCrashesDirectory` method has been deprecated. Usage
should be replaced by `app.getPath('crashDumps')`.
```js
// Deprecated in Electron 10
crashReporter.getCrashesDirectory()
// Replace with
app.getPath('crashDumps')
```
### Deprecated: `crashReporter` methods in the renderer process
Calling the following `crashReporter` methods from the renderer process is
deprecated:
- `crashReporter.start`
- `crashReporter.getLastCrashReport`
- `crashReporter.getUploadedReports`
- `crashReporter.getUploadToServer`
- `crashReporter.setUploadToServer`
- `crashReporter.getCrashesDirectory`
The only non-deprecated methods remaining in the `crashReporter` module in the
renderer are `addExtraParameter`, `removeExtraParameter` and `getParameters`.
All above methods remain non-deprecated when called from the main process.
See [#23265](https://github.com/electron/electron/pull/23265) for more details.
### Removed: Browser Window Affinity
The `affinity` option when constructing a new `BrowserWindow` will be removed

View File

@@ -48,7 +48,7 @@ still set breakpoints - Visual Studio will automatically figure out that the
source code matches the code running in the attached process and break
accordingly.
Relevant code files can be found in `./atom/`.
Relevant code files can be found in `./shell/`.
### Attaching

View File

@@ -46,7 +46,7 @@ this basic introduction, let's assume that you're calling a command from JavaScr
that isn't behaving correctly - so you'd like to break on that command's C++
counterpart inside the Electron source.
Relevant code files can be found in `./atom/`.
Relevant code files can be found in `./shell/`.
Let's assume that you want to debug `app.setName()`, which is defined in `browser.cc`
as `Browser::SetName()`. Set the breakpoint using the `breakpoint` command, specifying

View File

@@ -5,50 +5,37 @@
Electron has a deployment of a custom Goma Backend that we make available to
all Electron Maintainers. See the [Access](#access) section below for details
on authentication.
on authentication. There is also a `cache-only` Goma endpoint that will be
used by default if you do not have credentials. Requests to the cache-only
Goma will not hit our cluster, but will read from our cache and should result
in significantly faster build times.
## Enabling Goma
Currently Electron Goma supports Windows, Linux, and macOS. If you are
on a supported platform you can enable goma by importing the `goma.gn` config
file when using `gn`.
Currently the only supported way to use Goma is to use our [Build Tools](https://github.com/electron/build-tools).
Goma configuration is automatically included when you set up `build-tools`.
```bash
gn gen out/Testing --args="import(\"//electron/build/args/testing.gn\") import(\"//electron/build/args/goma.gn\")"
```
You must ensure that you do not have `cc_wrapper` configured, this means you
can't use `sccache` or similar technology.
Before you can use goma to build Electron you need to authenticate against
the Goma service. You only need to do this once per-machine.
```bash
cd electron/external_binaries/goma
./goma_auth.py login
```
Once authenticated you need to make sure the goma daemon is running on your
machine.
```bash
cd electron/external_binaries/goma
./goma_ctl.py ensure_start
```
If you are a maintainer and have access to our cluster, please ensure that you run
`e init` with `--goma=cluster` in order to configure `build-tools` to use
the Goma cluster. If you have an existing config, you can just set `"goma": "cluster"`
in your config file.
## Building with Goma
When you are using Goma you can run `ninja` with a substantially higher `j`
value than would normally be supported by your machine.
Please do not set a value higher than **300** on Windows or Linux and
**80** on macOS, we monitor the goma system and users found to be abusing
Please do not set a value higher than **200** on Windows or Linux and
**50** on macOS. We monitor Goma system usage, and users found to be abusing
it with unreasonable concurrency will be de-activated.
```bash
ninja -C out/Testing electron -j 200
```
If you're using `build-tools`, appropriate `-j` values will automatically
be used for you.
## Monitoring Goma
If you access [http://localhost:8088](http://localhost:8088) on your local
@@ -56,8 +43,16 @@ machine you can monitor compile jobs as they flow through the goma system.
## Access
For security and cost reasons access to Electron Goma is currently restricted
For security and cost reasons, access to Electron's Goma cluster is currently restricted
to Electron Maintainers. If you want access please head to `#access-requests` in
Slack and ping `@goma-squad` to ask for access. Please be aware that being a
maintainer does not *automatically* grant access and access is determined on a
case by case basis.
## Uptime / Support
We have automated monitoring of our Goma cluster and cache at https://status.notgoma.com
We do not provide support for usage of Goma and any issues raised asking for help / having
issues will _probably_ be closed without much reason, we do not have the capacity to handle
that kind of support.

View File

@@ -55,7 +55,7 @@ $ git checkout -b my-branch -t upstream/master
### Step 4: Code
Most pull requests opened against the `electron/electron` repository include
changes to either the C/C++ code in the `atom/` folder,
changes to either the C/C++ code in the `shell/` folder,
the JavaScript code in the `lib/` folder, the documentation in `docs/api/`
or tests in the `spec/` folder.

View File

@@ -32,6 +32,12 @@ by coding style rules. `npm run lint-py` will check all Python, using
## Unit Tests
If you are not using [build-tools](https://github.com/electron/build-tools),
ensure that that name you have configured for your
local build of Electron is one of `Testing`, `Release`, `Default`, `Debug`, or
you have set `process.env.ELECTRON_OUT_DIR`. Without these set, Electron will fail
to perform some pre-testing steps.
To run all unit tests, run `npm run test`. The unit tests are an Electron
app (surprise!) that can be found in the `spec` folder. Note that it has
its own `package.json` and that its dependencies are therefore not defined

View File

@@ -21,7 +21,7 @@
<p>
Open the
<a href="http://electron.atom.io/docs/api/menu"
<a href="https://electronjs.org/docs/api/menu"
>full API documentation<span
>(opens in new window)</span
></a
@@ -111,7 +111,7 @@
<p>
See the full
<a
href="http://electron.atom.io/docs/api/web-contents/#event-context-menu"
href="https://electronjs.org/docs/api/web-contents/#event-context-menu"
>context-menu event documentation</a
>
for all the available properties.

View File

@@ -159,7 +159,7 @@ const template = [
{
label: 'Learn More',
click: () => {
shell.openExternal('http://electron.atom.io')
shell.openExternal('https://electronjs.org')
}
}
]

View File

@@ -21,10 +21,10 @@
<p>
Open the full documentation for the
<a href="http://electron.atom.io/docs/api/menu">Menu</a>,
<a href="http://electron.atom.io/docs/api/accelerator">Accelerator</a>,
<a href="https://electronjs.org/docs/api/menu">Menu</a>,
<a href="https://electronjs.org/docs/api/accelerator">Accelerator</a>,
and
<a href="http://electron.atom.io/docs/api/global-shortcut">globalShortcut</a>
<a href="https://electronjs.org/docs/api/global-shortcut">globalShortcut</a>
APIs in your browser.
</p>

View File

@@ -23,7 +23,7 @@
<p>
Open the
<a href="http://electron.atom.io/docs/api/dialog/">
<a href="https://electronjs.org/docs/api/dialog/">
full API documentation (opens in new window)
</a>
in your browser.

View File

@@ -23,7 +23,7 @@
<p>
Open the
<a href="http://electron.atom.io/docs/api/dialog/">
<a href="https://electronjs.org/docs/api/dialog/">
full API documentation (opens in new window)
</a>
in your browser.

View File

@@ -23,7 +23,7 @@
<p>
Open the
<a href="http://electron.atom.io/docs/api/dialog/">
<a href="https://electronjs.org/docs/api/dialog/">
full API documentation (opens in new window)
</a>
in your browser.

View File

@@ -23,7 +23,7 @@
<p>
Open the
<a href="http://electron.atom.io/docs/api/dialog/">
<a href="https://electronjs.org/docs/api/dialog/">
full API documentation (opens in new window)
</a>
in your browser.

View File

@@ -27,7 +27,7 @@
const { shell } = require('electron')
const exLinksBtn = document.getElementById('open-ex-links')
exLinksBtn.addEventListener('click', (event) => {
shell.openExternal('http://electron.atom.io')
shell.openExternal('https://electronjs.org')
})
</code></pre>

View File

@@ -3,7 +3,7 @@ const { shell } = require('electron')
const exLinksBtn = document.getElementById('open-ex-links')
exLinksBtn.addEventListener('click', (event) => {
shell.openExternal('http://electron.atom.io')
shell.openExternal('https://electronjs.org')
})
const OpenAllOutboundLinks = () => {

View File

@@ -17,7 +17,7 @@
<p>This module works in both the main and renderer process.</p>
<p>
Open the
<a href="http://electron.atom.io/docs/api/shell">
<a href="https://electronjs.org/docs/api/shell">
full API documentation (opens in new window)
</a>
in your browser.

View File

@@ -9,5 +9,5 @@ fileManagerBtn.addEventListener('click', (event) => {
})
exLinksBtn.addEventListener('click', (event) => {
shell.openExternal('http://electron.atom.io')
shell.openExternal('https://electronjs.org')
})

View File

@@ -26,7 +26,7 @@
<p>
Open the
<a href="https://electron.atom.io/docs/all/#notifications-windows-linux-macos">
<a href="https://electronjs.org/docs/all/#notifications-windows-linux-macos">
full API documentation<span>(opens in new window)</span>
</a>
in your browser.

View File

@@ -15,7 +15,7 @@
<p>
Open the
<a href="http://electron.atom.io/docs/api/tray">
<a href="https://electronjs.org/docs/api/tray">
full API documentation (opens in new window)
</a>
in your browser.
@@ -108,7 +108,7 @@ ipc.on('tray-removed', function () {
On Linux distributions that only have app indicator support, users
will need to install <code>libappindicator1</code> to make the
tray icon work. See the
<a href="http://electron.atom.io/docs/api/tray">
<a href="https://electronjs.org/docs/api/tray">
full API documentation (opens in new window)
</a>
for more details about using Tray on Linux.

View File

@@ -13,7 +13,7 @@
<h3>The <code>app</code> module provides methods for handling protocols.</h3>
<p>These methods allow you to set and unset the protocols your app should be the default app for. Similar to when a browser asks to be your default for viewing web pages.</p>
<p>Open the <a href="http://electron.atom.io/docs/api/app">full app API documentation<span class="u-visible-to-screen-reader">(opens in new window)</span></a> in your browser.</p>
<p>Open the <a href="https://electronjs.org/docs/api/app">full app API documentation<span class="u-visible-to-screen-reader">(opens in new window)</span></a> in your browser.</p>
</header>
<div >
@@ -89,4 +89,4 @@
</html>
</body>
</html>
</html>

View File

@@ -15,7 +15,7 @@
</div>
<p>The <code>process</code> module is built into Node.js (therefore you can use this in both the main and renderer processes) and in Electron apps this object has a few more useful properties on it.</p>
<p>The example below gets the version of Electron in use by the app.</p>
<p>See the <a href="http://electron.atom.io/docs/api/process">process documentation <span>(opens in new window)</span></a> for more.</p>
<p>See the <a href="https://electronjs.org/docs/api/process">process documentation <span>(opens in new window)</span></a> for more.</p>
</div>
</div>
</div>

View File

@@ -22,7 +22,7 @@
<p>
Open the
<a href="http://electron.atom.io/docs/api/browser-window">
<a href="https://electronjs.org/docs/api/browser-window">
full API documentation (opens in new window)
</a>
in your browser.
@@ -59,7 +59,7 @@
<p>
For more details, see the
<a href="http://electron.atom.io/docs/api/frameless-window/">
<a href="https://electronjs.org/docs/api/frameless-window/">
Frameless Window
</a>
documentation.

View File

@@ -22,7 +22,7 @@
<p>
Open the
<a href="http://electron.atom.io/docs/api/browser-window">
<a href="https://electronjs.org/docs/api/browser-window">
full API documentation (opens in new window)
</a>
in your browser.
@@ -47,7 +47,7 @@
There are a lot of methods for controlling the state of the window
such as the size, location, and focus status as well as events to
listen to for window changes. Visit the
<a href="http://electron.atom.io/docs/api/browser-window">
<a href="https://electronjs.org/docs/api/browser-window">
documentation (opens in new window)
</a>
for the full list.

View File

@@ -15,5 +15,5 @@ newWindowBtn.addEventListener('click', (event) => {
link.addEventListener('click', (e) => {
e.preventDefault()
shell.openExternal("http://electron.atom.io/docs/api/browser-window")
shell.openExternal("https://electronjs.org/docs/api/browser-window")
})

View File

@@ -22,7 +22,7 @@
<p>
Open the
<a href="http://electron.atom.io/docs/api/browser-window">
<a href="https://electronjs.org/docs/api/browser-window">
full API documentation (opens in new window)
</a>
in your browser.

View File

@@ -1,60 +0,0 @@
# About Electron
[Electron](https://electronjs.org) is an open source library developed by GitHub for building cross-platform desktop applications with HTML, CSS, and JavaScript. Electron accomplishes this by combining [Chromium](https://www.chromium.org/Home) and [Node.js](https://nodejs.org) into a single runtime and apps can be packaged for Mac, Windows, and Linux.
Electron began in 2013 as the framework on which [Atom](https://atom.io), GitHub's hackable text editor, would be built. The two were open sourced in the Spring of 2014.
It has since become a popular tool used by open source developers, startups, and established companies. [See who is building on Electron](https://electronjs.org/apps).
Read on to learn more about the contributors and releases of Electron or get started building with Electron in the [Quick Start Guide](quick-start.md).
## Core Team and Contributors
Electron is maintained by a team at GitHub as well as a group of [active contributors](https://github.com/electron/electron/graphs/contributors) from the community. Some of the contributors are individuals and some work at larger companies who are developing on Electron. We're happy to add frequent contributors to the project as maintainers. Read more about [contributing to Electron](https://github.com/electron/electron/blob/master/CONTRIBUTING.md).
## Releases
[Electron releases](https://github.com/electron/electron/releases) frequently. We release when there are significant bug fixes, new APIs or are updating versions of Chromium or Node.js.
### Updating Dependencies
Electron's version of Chromium is usually updated within one or two weeks after a new stable Chromium version is released, depending on the effort involved in the upgrade.
When a new version of Node.js is released, Electron usually waits about a month before upgrading in order to bring in a more stable version.
In Electron, Node.js and Chromium share a single V8 instance—usually the version that Chromium is using. Most of the time this _just works_ but sometimes it means patching Node.js.
### Versioning
As of version 2.0 Electron [follows `semver`](https://semver.org).
For most applications, and using any recent version of npm,
running `$ npm install electron` will do the right thing.
The version update process is detailed explicitly in our [Versioning Doc](electron-versioning.md).
### LTS
Long term support of older versions of Electron does not currently exist. If your current version of Electron works for you, you can stay on it for as long as you'd like. If you want to make use of new features as they come in you should upgrade to a newer version.
A major update came with version `v1.0.0`. If you're not yet using this version, you should [read more about the `v1.0.0` changes](https://electronjs.org/blog/electron-1-0).
## Core Philosophy
In order to keep Electron small (file size) and sustainable (the spread of dependencies and APIs) the project limits the scope of the core project.
For instance, Electron uses Chromium's rendering library rather than all of Chromium. This makes it easier to upgrade Chromium but also means some browser features found in Google Chrome do not exist in Electron.
New features added to Electron should primarily be native APIs. If a feature can be its own Node.js module, it probably should be. See the [Electron tools built by the community](https://electronjs.org/community).
## History
Below are milestones in Electron's history.
| :calendar: | :tada: |
| --- | --- |
| **April 2013**| [Atom Shell is started](https://github.com/electron/electron/commit/6ef8875b1e93787fa9759f602e7880f28e8e6b45).|
| **May 2014** | [Atom Shell is open sourced](https://blog.atom.io/2014/05/06/atom-is-now-open-source.html). |
| **April 2015** | [Atom Shell is re-named Electron](https://github.com/electron/electron/pull/1389). |
| **May 2016** | [Electron releases `v1.0.0`](https://electronjs.org/blog/electron-1-0).|
| **May 2016** | [Electron apps compatible with Mac App Store](mac-app-store-submission-guide.md).|
| **August 2016** | [Windows Store support for Electron apps](windows-store-guide.md).|

View File

@@ -36,3 +36,13 @@ For more information, see the [Debugging the Main Process documentation][main-de
[node-inspect]: https://nodejs.org/en/docs/inspector/
[devtools]: https://developer.chrome.com/devtools
[main-debug]: ./debugging-main-process.md
## V8 Crashes
If the V8 context crashes, the DevTools will display this message.
`DevTools was disconnected from the page. Once page is reloaded, DevTools will automatically reconnect.`
Chromium logs can be enabled via the `ELECTRON_ENABLE_LOGGING` environment variable. For more information, see the [environment variables documentation](https://www.electronjs.org/docs/api/environment-variables#electron_enable_logging).
Alternatively, the command line argument `--enable-logging` can be passed. More information is available in the [command line switches documentation](https://www.electronjs.org/docs/api/command-line-switches#--enable-logging).

View File

@@ -14,5 +14,5 @@
| 6.0.0 | 2019-05-01 | 2019-07-30 | M76 | v12 |
| 7.0.0 | 2019-08-01 | 2019-10-22 | M78 | v12 |
| 8.0.0 | 2019-10-24 | 2020-02-04 | M80 | v12 |
| 9.0.0 | 2020-02-06 | 2020-03-12 | M82 | v12 |
| 9.0.0 | 2020-02-06 | 2020-05-19 | M83 | v12 |
| 10.0.0 | TBD | TBD | TBD | TBD |

View File

@@ -56,19 +56,33 @@ can do so by either providing a mirror or an existing cache directory.
#### Mirror
You can use environment variables to override the base URL, the path at which to
look for Electron binaries, and the binary filename. The url used by `@electron/get`
look for Electron binaries, and the binary filename. The URL used by `@electron/get`
is composed as follows:
```plaintext
```javascript
url = ELECTRON_MIRROR + ELECTRON_CUSTOM_DIR + '/' + ELECTRON_CUSTOM_FILENAME
```
For instance, to use the China mirror:
For instance, to use the China CDN mirror:
```plaintext
```shell
ELECTRON_MIRROR="https://cdn.npm.taobao.org/dist/electron/"
```
By default, `ELECTRON_CUSTOM_DIR` is set to `v$VERSION`. To change the format,
use the `{{ version }}` placeholder. For example, `version-{{ version }}`
resolves to `version-5.0.0`, `{{ version }}` resolves to `5.0.0`, and
`v{{ version }}` is equivalent to the default. As a more concrete example, to
use the China non-CDN mirror:
```shell
ELECTRON_MIRROR="https://npm.taobao.org/mirrors/electron/"
ELECTRON_CUSTOM_DIR="{{ version }}"
```
The above configuration will download from URLs such as
`https://npm.taobao.org/mirrors/electron/8.0.0/electron-v8.0.0-linux-x64.zip`.
#### Cache
Alternatively, you can override the local cache. `@electron/get` will cache
downloaded binaries in a local directory to not stress your network. You can use

View File

@@ -34,8 +34,10 @@ tools and resources.
## Supported Versions
The latest three *stable* major versions are supported by the Electron team.
For example, if the latest release is 6.x.y, then the 5.x.y as well
as the 4.x.y series are supported.
For example, if the latest release is 6.1.x, then the 5.0.x as well
as the 4.2.x series are supported. We only support the latest minor release
for each stable release series. This means that in the case of a security fix
6.1.x will receive the fix, but we will not release a new version of 6.0.x.
The latest stable release unilaterally receives all fixes from `master`,
and the version prior to that receives the vast majority of those fixes
@@ -47,10 +49,18 @@ fixes previously merged to `master`, though this may be on a case-by-case
basis for some older supported lines. All contested decisions around release
line backports will be resolved by the [Releases Working Group](https://github.com/electron/governance/tree/master/wg-releases) as an agenda item at their weekly meeting the week the backport PR is raised.
When an API is changed or removed in a way that breaks existing functionality, the
previous functionality will be supported for a minimum of two major versions when
possible before being removed. For example, if a function takes three arguments,
and that number is reduced to two in major version 10, the three-argument version would
continue to work until, at minimum, major version 12. Past the minimum two-version
threshold, we will attempt to support backwards compatibility beyond two versions
until the maintainers feel the maintenance burden is too high to continue doing so.
### Currently supported versions
- 8.x.y
- 7.x.y
- 6.x.y
- 8.1.x
- 7.1.x
- 6.1.x
### End-of-life

View File

@@ -1,4 +1,4 @@
# Testing on Headless CI Systems (Travis CI, Github Actions, Jenkins)
# Testing on Headless CI Systems (Travis CI, Jenkins)
Being based on Chromium, Electron requires a display driver to function.
If Chromium can't find a display driver, Electron will fail to launch -
@@ -45,10 +45,6 @@ install:
- Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
```
### Github Actions
For Github Actions, a [Xvfb action is available](https://github.com/marketplace/actions/gabrielbb-xvfb-action).
### Jenkins
For Jenkins, a [Xvfb plugin is available](https://wiki.jenkins-ci.org/display/JENKINS/Xvfb+Plugin).

View File

@@ -40,14 +40,6 @@ If you need to customize your configuration, you can
or
[use the update service directly][update.electronjs.org].
## Using `electron-builder`
If your app is packaged with [`electron-builder`][electron-builder-lib] you can use the
[electron-updater] module, which does not require a server and allows for updates
from S3, GitHub or any other static file host. This sidesteps Electron's built-in
update mechanism, meaning that the rest of this documentation will not apply to
`electron-builder`'s updater.
## Deploying an Update Server
If you're developing a private Electron application, or if you're not
@@ -140,8 +132,6 @@ autoUpdater.on('error', message => {
})
```
[electron-builder-lib]: https://github.com/electron-userland/electron-builder
[electron-updater]: https://www.electron.build/auto-update
[now]: https://zeit.co/now
[hazel]: https://github.com/zeit/hazel
[nuts]: https://github.com/GitbookIO/nuts

View File

@@ -32,6 +32,8 @@ auto_filenames = {
"docs/api/locales.md",
"docs/api/menu-item.md",
"docs/api/menu.md",
"docs/api/message-channel-main.md",
"docs/api/message-port-main.md",
"docs/api/modernization",
"docs/api/native-image.md",
"docs/api/native-theme.md",
@@ -56,6 +58,7 @@ auto_filenames = {
"docs/api/touch-bar-color-picker.md",
"docs/api/touch-bar-group.md",
"docs/api/touch-bar-label.md",
"docs/api/touch-bar-other-items-proxy.md",
"docs/api/touch-bar-popover.md",
"docs/api/touch-bar-scrubber.md",
"docs/api/touch-bar-segmented-control.md",
@@ -97,9 +100,10 @@ auto_filenames = {
"docs/api/structures/mime-typed-buffer.md",
"docs/api/structures/mouse-input-event.md",
"docs/api/structures/mouse-wheel-input-event.md",
"docs/api/structures/new-window-event.md",
"docs/api/structures/notification-action.md",
"docs/api/structures/point.md",
"docs/api/structures/post-body.md",
"docs/api/structures/post-data.md",
"docs/api/structures/printer-info.md",
"docs/api/structures/process-memory-info.md",
"docs/api/structures/process-metric.md",
@@ -109,8 +113,6 @@ auto_filenames = {
"docs/api/structures/protocol-response.md",
"docs/api/structures/rectangle.md",
"docs/api/structures/referrer.md",
"docs/api/structures/remove-client-certificate.md",
"docs/api/structures/remove-password.md",
"docs/api/structures/scrubber-item.md",
"docs/api/structures/segmented-control-segment.md",
"docs/api/structures/service-worker-info.md",
@@ -138,13 +140,14 @@ auto_filenames = {
"lib/common/api/module-list.ts",
"lib/common/api/native-image.js",
"lib/common/api/shell.js",
"lib/common/crash-reporter.js",
"lib/common/define-properties.ts",
"lib/common/electron-binding-setup.ts",
"lib/common/type-utils.ts",
"lib/common/web-view-methods.ts",
"lib/common/webpack-globals-provider.ts",
"lib/renderer/api/context-bridge.ts",
"lib/renderer/api/crash-reporter.ts",
"lib/renderer/api/crash-reporter.js",
"lib/renderer/api/desktop-capturer.ts",
"lib/renderer/api/ipc-renderer.ts",
"lib/renderer/api/remote.js",
@@ -179,8 +182,11 @@ auto_filenames = {
isolated_bundle_deps = [
"lib/common/electron-binding-setup.ts",
"lib/isolated_renderer/init.js",
"lib/renderer/ipc-renderer-internal-utils.ts",
"lib/renderer/ipc-renderer-internal.ts",
"lib/renderer/web-view/web-view-constants.ts",
"lib/renderer/web-view/web-view-element.ts",
"lib/renderer/window-setup.ts",
"package.json",
"tsconfig.electron.json",
"tsconfig.json",
@@ -190,7 +196,6 @@ auto_filenames = {
"lib/common/electron-binding-setup.ts",
"lib/common/webpack-globals-provider.ts",
"lib/content_script/init.js",
"lib/renderer/api/context-bridge.ts",
"lib/renderer/chrome-api.ts",
"lib/renderer/extensions/event.ts",
"lib/renderer/extensions/i18n.ts",
@@ -213,7 +218,7 @@ auto_filenames = {
"lib/browser/api/browser-view.js",
"lib/browser/api/browser-window.js",
"lib/browser/api/content-tracing.js",
"lib/browser/api/crash-reporter.ts",
"lib/browser/api/crash-reporter.js",
"lib/browser/api/dialog.js",
"lib/browser/api/exports/electron.ts",
"lib/browser/api/global-shortcut.js",
@@ -223,6 +228,7 @@ auto_filenames = {
"lib/browser/api/menu-item.js",
"lib/browser/api/menu-utils.js",
"lib/browser/api/menu.js",
"lib/browser/api/message-channel.ts",
"lib/browser/api/module-list.ts",
"lib/browser/api/native-theme.ts",
"lib/browser/api/net-log.js",
@@ -238,17 +244,12 @@ auto_filenames = {
"lib/browser/api/touch-bar.js",
"lib/browser/api/tray.js",
"lib/browser/api/view.js",
"lib/browser/api/views/box-layout.js",
"lib/browser/api/views/button.js",
"lib/browser/api/views/label-button.js",
"lib/browser/api/views/layout-manager.js",
"lib/browser/api/views/md-text-button.js",
"lib/browser/api/views/resize-area.js",
"lib/browser/api/views/text-field.js",
"lib/browser/api/views/image-view.js",
"lib/browser/api/web-contents-view.js",
"lib/browser/api/web-contents.js",
"lib/browser/chrome-extension-shim.js",
"lib/browser/chrome-extension.js",
"lib/browser/crash-reporter-init.js",
"lib/browser/default-menu.ts",
"lib/browser/desktop-capturer.ts",
"lib/browser/devtools.ts",
@@ -258,6 +259,7 @@ auto_filenames = {
"lib/browser/ipc-main-impl.ts",
"lib/browser/ipc-main-internal-utils.ts",
"lib/browser/ipc-main-internal.ts",
"lib/browser/message-port-main.ts",
"lib/browser/navigation-controller.js",
"lib/browser/remote/objects-registry.ts",
"lib/browser/remote/server.ts",
@@ -268,6 +270,7 @@ auto_filenames = {
"lib/common/api/module-list.ts",
"lib/common/api/native-image.js",
"lib/common/api/shell.js",
"lib/common/crash-reporter.js",
"lib/common/define-properties.ts",
"lib/common/electron-binding-setup.ts",
"lib/common/init.ts",
@@ -290,6 +293,7 @@ auto_filenames = {
"lib/common/api/module-list.ts",
"lib/common/api/native-image.js",
"lib/common/api/shell.js",
"lib/common/crash-reporter.js",
"lib/common/define-properties.ts",
"lib/common/electron-binding-setup.ts",
"lib/common/init.ts",
@@ -298,7 +302,7 @@ auto_filenames = {
"lib/common/web-view-methods.ts",
"lib/common/webpack-globals-provider.ts",
"lib/renderer/api/context-bridge.ts",
"lib/renderer/api/crash-reporter.ts",
"lib/renderer/api/crash-reporter.js",
"lib/renderer/api/desktop-capturer.ts",
"lib/renderer/api/exports/electron.ts",
"lib/renderer/api/ipc-renderer.ts",
@@ -338,6 +342,7 @@ auto_filenames = {
"lib/common/api/module-list.ts",
"lib/common/api/native-image.js",
"lib/common/api/shell.js",
"lib/common/crash-reporter.js",
"lib/common/define-properties.ts",
"lib/common/electron-binding-setup.ts",
"lib/common/init.ts",
@@ -345,7 +350,7 @@ auto_filenames = {
"lib/common/type-utils.ts",
"lib/common/webpack-globals-provider.ts",
"lib/renderer/api/context-bridge.ts",
"lib/renderer/api/crash-reporter.ts",
"lib/renderer/api/crash-reporter.js",
"lib/renderer/api/desktop-capturer.ts",
"lib/renderer/api/exports/electron.ts",
"lib/renderer/api/ipc-renderer.ts",

View File

@@ -31,8 +31,6 @@ filenames = {
"shell/app/command_line_args.h",
"shell/app/electron_content_client.cc",
"shell/app/electron_content_client.h",
"shell/app/electron_crash_reporter_client.cc",
"shell/app/electron_crash_reporter_client.h",
"shell/app/electron_main_delegate.cc",
"shell/app/electron_main_delegate.h",
"shell/app/electron_main_delegate_mac.h",
@@ -53,8 +51,6 @@ filenames = {
"shell/browser/api/electron_api_content_tracing.cc",
"shell/browser/api/electron_api_cookies.cc",
"shell/browser/api/electron_api_cookies.h",
"shell/browser/api/electron_api_crash_reporter.cc",
"shell/browser/api/electron_api_crash_reporter.h",
"shell/browser/api/electron_api_data_pipe_holder.cc",
"shell/browser/api/electron_api_data_pipe_holder.h",
"shell/browser/api/electron_api_debugger.cc",
@@ -63,6 +59,8 @@ filenames = {
"shell/browser/api/electron_api_download_item.cc",
"shell/browser/api/electron_api_download_item.h",
"shell/browser/api/electron_api_event.cc",
"shell/browser/api/electron_api_event_emitter.cc",
"shell/browser/api/electron_api_event_emitter.h",
"shell/browser/api/electron_api_global_shortcut.cc",
"shell/browser/api/electron_api_global_shortcut.h",
"shell/browser/api/electron_api_in_app_purchase.cc",
@@ -125,10 +123,14 @@ filenames = {
"shell/browser/api/gpu_info_enumerator.h",
"shell/browser/api/gpuinfo_manager.cc",
"shell/browser/api/gpuinfo_manager.h",
"shell/browser/api/message_port.cc",
"shell/browser/api/message_port.h",
"shell/browser/api/process_metric.cc",
"shell/browser/api/process_metric.h",
"shell/browser/api/save_page_handler.cc",
"shell/browser/api/save_page_handler.h",
"shell/browser/api/ui_event.cc",
"shell/browser/api/ui_event.h",
"shell/browser/auto_updater.cc",
"shell/browser/auto_updater.h",
"shell/browser/auto_updater_mac.mm",
@@ -168,6 +170,7 @@ filenames = {
"shell/browser/electron_javascript_dialog_manager.h",
"shell/browser/electron_navigation_throttle.cc",
"shell/browser/electron_navigation_throttle.h",
"shell/browser/electron_paths.h",
"shell/browser/electron_permission_manager.cc",
"shell/browser/electron_permission_manager.h",
"shell/browser/electron_quota_permission_context.cc",
@@ -176,6 +179,8 @@ filenames = {
"shell/browser/electron_speech_recognition_manager_delegate.h",
"shell/browser/electron_web_ui_controller_factory.cc",
"shell/browser/electron_web_ui_controller_factory.h",
"shell/browser/event_emitter_mixin.cc",
"shell/browser/event_emitter_mixin.h",
"shell/browser/feature_list.cc",
"shell/browser/feature_list.h",
"shell/browser/font_defaults.cc",
@@ -184,7 +189,6 @@ filenames = {
"shell/browser/javascript_environment.h",
"shell/browser/lib/bluetooth_chooser.cc",
"shell/browser/lib/bluetooth_chooser.h",
"shell/browser/lib/power_observer.h",
"shell/browser/lib/power_observer_linux.cc",
"shell/browser/lib/power_observer_linux.h",
"shell/browser/linux/unity_service.cc",
@@ -288,6 +292,8 @@ filenames = {
"shell/browser/plugins/plugin_utils.h",
"shell/browser/pref_store_delegate.cc",
"shell/browser/pref_store_delegate.h",
"shell/browser/protocol_registry.cc",
"shell/browser/protocol_registry.h",
"shell/browser/relauncher.cc",
"shell/browser/relauncher.h",
"shell/browser/relauncher_linux.cc",
@@ -392,8 +398,6 @@ filenames = {
"shell/browser/ui/views/submenu_button.h",
"shell/browser/ui/views/win_frame_view.cc",
"shell/browser/ui/views/win_frame_view.h",
"shell/browser/ui/win/dialog_thread.cc",
"shell/browser/ui/win/dialog_thread.h",
"shell/browser/ui/win/electron_desktop_native_widget_aura.cc",
"shell/browser/ui/win/electron_desktop_native_widget_aura.h",
"shell/browser/ui/win/electron_desktop_window_tree_host_win.cc",
@@ -438,6 +442,7 @@ filenames = {
"shell/common/api/electron_api_clipboard.h",
"shell/common/api/electron_api_clipboard_mac.mm",
"shell/common/api/electron_api_command_line.cc",
"shell/common/api/electron_api_crash_reporter.cc",
"shell/common/api/electron_api_key_weak_map.h",
"shell/common/api/electron_api_native_image.cc",
"shell/common/api/electron_api_native_image.h",
@@ -447,8 +452,6 @@ filenames = {
"shell/common/api/electron_bindings.cc",
"shell/common/api/electron_bindings.h",
"shell/common/api/features.cc",
"shell/common/api/object_life_monitor.cc",
"shell/common/api/object_life_monitor.h",
"shell/common/application_info.cc",
"shell/common/application_info.h",
"shell/common/application_info_linux.cc",
@@ -462,13 +465,22 @@ filenames = {
"shell/common/asar/scoped_temporary_file.h",
"shell/common/color_util.cc",
"shell/common/color_util.h",
"shell/common/crash_keys.cc",
"shell/common/crash_keys.h",
"shell/common/crash_reporter/crash_reporter.cc",
"shell/common/crash_reporter/crash_reporter.h",
"shell/common/crash_reporter/crash_reporter_linux.cc",
"shell/common/crash_reporter/crash_reporter_linux.h",
"shell/common/crash_reporter/crash_reporter_mac.h",
"shell/common/crash_reporter/crash_reporter_mac.mm",
"shell/common/crash_reporter/crash_reporter_win.cc",
"shell/common/crash_reporter/crash_reporter_win.h",
"shell/common/crash_reporter/linux/crash_dump_handler.cc",
"shell/common/crash_reporter/linux/crash_dump_handler.h",
"shell/common/crash_reporter/win/crash_service_main.cc",
"shell/common/crash_reporter/win/crash_service_main.h",
"shell/common/electron_command_line.cc",
"shell/common/electron_command_line.h",
"shell/common/electron_constants.cc",
"shell/common/electron_constants.h",
"shell/common/electron_paths.h",
"shell/common/gin_converters/accelerator_converter.cc",
"shell/common/gin_converters/accelerator_converter.h",
"shell/common/gin_converters/blink_converter.cc",
@@ -476,6 +488,8 @@ filenames = {
"shell/common/gin_converters/callback_converter.h",
"shell/common/gin_converters/content_converter.cc",
"shell/common/gin_converters/content_converter.h",
"shell/common/gin_converters/extension_converter.cc",
"shell/common/gin_converters/extension_converter.h",
"shell/common/gin_converters/file_dialog_converter.cc",
"shell/common/gin_converters/file_dialog_converter.h",
"shell/common/gin_converters/file_path_converter.h",
@@ -490,14 +504,15 @@ filenames = {
"shell/common/gin_converters/net_converter.cc",
"shell/common/gin_converters/net_converter.h",
"shell/common/gin_converters/std_converter.h",
"shell/common/gin_converters/time_converter.cc",
"shell/common/gin_converters/time_converter.h",
"shell/common/gin_converters/value_converter.cc",
"shell/common/gin_converters/value_converter.h",
"shell/common/gin_helper/arguments.cc",
"shell/common/gin_helper/arguments.h",
"shell/common/gin_helper/callback.cc",
"shell/common/gin_helper/callback.h",
"shell/common/gin_helper/cleaned_up_at_exit.cc",
"shell/common/gin_helper/cleaned_up_at_exit.h",
"shell/common/gin_helper/constructible.h",
"shell/common/gin_helper/constructor.h",
"shell/common/gin_helper/destroyable.cc",
"shell/common/gin_helper/destroyable.h",
@@ -510,12 +525,14 @@ filenames = {
"shell/common/gin_helper/event_emitter_caller.h",
"shell/common/gin_helper/function_template.cc",
"shell/common/gin_helper/function_template.h",
"shell/common/gin_helper/function_template_extensions.h",
"shell/common/gin_helper/locker.cc",
"shell/common/gin_helper/locker.h",
"shell/common/gin_helper/object_template_builder.cc",
"shell/common/gin_helper/object_template_builder.h",
"shell/common/gin_helper/persistent_dictionary.cc",
"shell/common/gin_helper/persistent_dictionary.h",
"shell/common/gin_helper/pinnable.h",
"shell/common/gin_helper/promise.cc",
"shell/common/gin_helper/promise.h",
"shell/common/gin_helper/trackable_object.cc",
@@ -528,10 +545,6 @@ filenames = {
"shell/common/key_weak_map.h",
"shell/common/keyboard_util.cc",
"shell/common/keyboard_util.h",
"shell/common/language_util.h",
"shell/common/language_util_linux.cc",
"shell/common/language_util_mac.mm",
"shell/common/language_util_win.cc",
"shell/common/mac/main_application_bundle.h",
"shell/common/mac/main_application_bundle.mm",
"shell/common/mouse_util.cc",
@@ -559,12 +572,15 @@ filenames = {
"shell/common/skia_util.h",
"shell/common/v8_value_converter.cc",
"shell/common/v8_value_converter.h",
"shell/common/v8_value_serializer.cc",
"shell/common/v8_value_serializer.h",
"shell/common/world_ids.h",
"shell/renderer/api/context_bridge/object_cache.cc",
"shell/renderer/api/context_bridge/object_cache.h",
"shell/renderer/api/context_bridge/render_frame_function_store.cc",
"shell/renderer/api/context_bridge/render_frame_function_store.h",
"shell/renderer/api/electron_api_context_bridge.cc",
"shell/renderer/api/electron_api_context_bridge.h",
"shell/renderer/api/electron_api_crash_reporter_renderer.cc",
"shell/renderer/api/electron_api_renderer_ipc.cc",
"shell/renderer/api/electron_api_spell_check_client.cc",
"shell/renderer/api/electron_api_spell_check_client.h",
@@ -645,8 +661,6 @@ filenames = {
"shell/common/extensions/electron_extensions_api_provider.h",
"shell/common/extensions/electron_extensions_client.cc",
"shell/common/extensions/electron_extensions_client.h",
"shell/common/gin_converters/extension_converter.cc",
"shell/common/gin_converters/extension_converter.h",
"shell/renderer/extensions/electron_extensions_dispatcher_delegate.cc",
"shell/renderer/extensions/electron_extensions_dispatcher_delegate.h",
"shell/renderer/extensions/electron_extensions_renderer_client.cc",

View File

@@ -44,7 +44,7 @@ hunspell_dictionaries = [
"//third_party/hunspell_dictionaries/ta-IN-3-0.bdic",
"//third_party/hunspell_dictionaries/tg-TG-5-0.bdic",
"//third_party/hunspell_dictionaries/tr-TR-4-0.bdic",
"//third_party/hunspell_dictionaries/uk-UA-4-0.bdic",
"//third_party/hunspell_dictionaries/uk-UA-3-0.bdic",
"//third_party/hunspell_dictionaries/vi-VN-3-0.bdic",
"//third_party/hunspell_dictionaries/xx-XX-3-0.bdic",
]

View File

@@ -1,7 +1,7 @@
import * as fs from 'fs';
import * as path from 'path';
import { Menu } from 'electron';
import { deprecate, Menu } from 'electron';
import { EventEmitter } from 'events';
const bindings = process.electronBinding('app');
@@ -135,6 +135,10 @@ for (const name of events) {
});
}
// Deprecate allowRendererProcessReuse but only if they set it to false, no need to log if
// they are setting it to true
deprecate.removeProperty(app, 'allowRendererProcessReuse', [false]);
// Wrappers for native classes.
const { DownloadItem } = process.electronBinding('download_item');
Object.setPrototypeOf(DownloadItem.prototype, EventEmitter.prototype);

View File

@@ -93,7 +93,7 @@ exports.checkForUpdate = function (updateURL, callback) {
try {
// Last line of output is the JSON details about the releases
const json = stdout.trim().split('\n').pop();
update = (ref = JSON.parse(json)) != null ? (ref1 = ref.releasesToApply) != null ? typeof ref1.pop === 'function' ? ref1.pop() : void 0 : void 0 : void 0;
update = (ref = JSON.parse(json)) != null ? (ref1 = ref.releasesToApply) != null ? typeof ref1.pop === 'function' ? ref1.pop() : undefined : undefined : undefined;
} catch {
// Disabled for backwards compatibility:
// eslint-disable-next-line standard/no-callback-literal

View File

@@ -25,26 +25,6 @@ BrowserWindow.prototype._init = function () {
nativeSetBounds.call(this, bounds, ...opts);
};
// window.resizeTo(...)
// window.moveTo(...)
this.webContents.on('move', (event, size) => {
this.setBounds(size);
});
// Hide the auto-hide menu when webContents is focused.
this.webContents.on('activate', () => {
if (process.platform !== 'darwin' && this.autoHideMenuBar && this.isMenuBarVisible()) {
this.setMenuBarVisibility(false);
}
});
// Change window title to page title.
this.webContents.on('page-title-updated', (event, title, ...args) => {
// Route the event to BrowserWindow.
this.emit('page-title-updated', event, title, ...args);
if (!this.isDestroyed() && !event.defaultPrevented) this.setTitle(title);
});
// Sometimes the webContents doesn't get focus when window is shown, so we
// have to force focusing on webContents in this case. The safest way is to
// focus it when we first start to load URL, if we do it earlier it won't

View File

@@ -0,0 +1,12 @@
'use strict';
const CrashReporter = require('@electron/internal/common/crash-reporter');
const { crashReporterInit } = require('@electron/internal/browser/crash-reporter-init');
class CrashReporterMain extends CrashReporter {
init (options) {
return crashReporterInit(options);
}
}
module.exports = new CrashReporterMain();

View File

@@ -1,83 +0,0 @@
import { app } from 'electron';
const binding = process.electronBinding('crash_reporter');
class CrashReporter {
start (options: Electron.CrashReporterStartOptions) {
const {
productName = app.name,
companyName = undefined,
extra = {},
globalExtra = {},
ignoreSystemCrashHandler = false,
submitURL = undefined,
uploadToServer = true,
rateLimit = false,
compress = false
} = options || {};
if (submitURL == null) throw new Error('submitURL is a required option to crashReporter.start');
const appVersion = app.getVersion();
if (companyName && globalExtra._companyName == null) globalExtra._companyName = companyName;
const globalExtraAmended = {
_productName: productName,
_version: appVersion,
...globalExtra
};
binding.start(submitURL, uploadToServer,
ignoreSystemCrashHandler, rateLimit, compress, globalExtraAmended, extra, false);
}
getLastCrashReport () {
const reports = this.getUploadedReports()
.sort((a, b) => {
const ats = (a && a.date) ? new Date(a.date).getTime() : 0;
const bts = (b && b.date) ? new Date(b.date).getTime() : 0;
return bts - ats;
});
return (reports.length > 0) ? reports[0] : null;
}
getUploadedReports (): Electron.CrashReport[] {
return binding.getUploadedReports();
}
getCrashesDirectory () {
return app.getPath('crashDumps');
}
getUploadToServer () {
if (process.type === 'browser') {
return binding.getUploadToServer();
} else {
throw new Error('getUploadToServer can only be called from the main process');
}
}
setUploadToServer (uploadToServer: boolean) {
if (process.type === 'browser') {
return binding.setUploadToServer(uploadToServer);
} else {
throw new Error('setUploadToServer can only be called from the main process');
}
}
addExtraParameter (key: string, value: string) {
binding.addExtraParameter(key, value);
}
removeExtraParameter (key: string) {
binding.removeExtraParameter(key);
}
getParameters () {
return binding.getParameters();
}
}
export default new CrashReporter();

View File

@@ -254,7 +254,7 @@ const roles = {
exports.roleList = roles;
const canExecuteRole = (role) => {
if (!roles.hasOwnProperty(role)) return false;
if (!Object.prototype.hasOwnProperty.call(roles, role)) return false;
if (!isMac) return true;
// macOS handles all roles natively except for a few
@@ -262,20 +262,20 @@ const canExecuteRole = (role) => {
};
exports.getDefaultLabel = (role) => {
return roles.hasOwnProperty(role) ? roles[role].label : '';
return Object.prototype.hasOwnProperty.call(roles, role) ? roles[role].label : '';
};
exports.getDefaultAccelerator = (role) => {
if (roles.hasOwnProperty(role)) return roles[role].accelerator;
if (Object.prototype.hasOwnProperty.call(roles, role)) return roles[role].accelerator;
};
exports.shouldRegisterAccelerator = (role) => {
const hasRoleRegister = roles.hasOwnProperty(role) && roles[role].registerAccelerator !== undefined;
const hasRoleRegister = Object.prototype.hasOwnProperty.call(roles, role) && roles[role].registerAccelerator !== undefined;
return hasRoleRegister ? roles[role].registerAccelerator : true;
};
exports.getDefaultSubmenu = (role) => {
if (!roles.hasOwnProperty(role)) return;
if (!Object.prototype.hasOwnProperty.call(roles, role)) return;
let { submenu } = roles[role];

View File

@@ -71,7 +71,7 @@ Menu.prototype.popup = function (options = {}) {
window = wins[0];
}
if (!window) {
throw new Error(`Cannot open Menu without a TopLevelWindow present`);
throw new Error('Cannot open Menu without a TopLevelWindow present');
}
}
@@ -106,7 +106,7 @@ Menu.prototype.append = function (item) {
};
Menu.prototype.insert = function (pos, item) {
if ((item ? item.constructor : void 0) !== MenuItem) {
if ((item ? item.constructor : undefined) !== MenuItem) {
throw new TypeError('Invalid item');
}
@@ -194,8 +194,8 @@ function areValidTemplateItems (template) {
return template.every(item =>
item != null &&
typeof item === 'object' &&
(item.hasOwnProperty('label') ||
item.hasOwnProperty('role') ||
(Object.prototype.hasOwnProperty.call(item, 'label') ||
Object.prototype.hasOwnProperty.call(item, 'role') ||
item.type === 'separator'));
}

View File

@@ -0,0 +1,12 @@
import { MessagePortMain } from '@electron/internal/browser/message-port-main';
const { createPair } = process.electronBinding('message_port');
export default class MessageChannelMain {
port1: MessagePortMain;
port2: MessagePortMain;
constructor () {
const { port1, port2 } = createPair();
this.port1 = new MessagePortMain(port1);
this.port2 = new MessagePortMain(port2);
}
}

View File

@@ -24,6 +24,7 @@ module.exports = [
{ name: 'nativeTheme' },
{ name: 'net' },
{ name: 'netLog' },
{ name: 'MessageChannelMain' },
{ name: 'Notification' },
{ name: 'powerMonitor' },
{ name: 'powerSaveBlocker' },
@@ -41,12 +42,6 @@ module.exports = [
if (features.isViewApiEnabled()) {
module.exports.push(
{ name: 'BoxLayout' },
{ name: 'Button' },
{ name: 'LabelButton' },
{ name: 'LayoutManager' },
{ name: 'MdTextButton' },
{ name: 'ResizeArea' },
{ name: 'TextField' }
{ name: 'ImageView' }
);
}

View File

@@ -16,6 +16,7 @@ export const browserModuleList: ElectronInternal.ModuleEntry[] = [
{ name: 'inAppPurchase', loader: () => require('./in-app-purchase') },
{ name: 'Menu', loader: () => require('./menu') },
{ name: 'MenuItem', loader: () => require('./menu-item') },
{ name: 'MessageChannelMain', loader: () => require('./message-channel') },
{ name: 'nativeTheme', loader: () => require('./native-theme') },
{ name: 'net', loader: () => require('./net') },
{ name: 'netLog', loader: () => require('./net-log') },
@@ -36,12 +37,6 @@ export const browserModuleList: ElectronInternal.ModuleEntry[] = [
if (features.isViewApiEnabled()) {
browserModuleList.push(
{ name: 'BoxLayout', loader: () => require('./views/box-layout') },
{ name: 'Button', loader: () => require('./views/button') },
{ name: 'LabelButton', loader: () => require('./views/label-button') },
{ name: 'LayoutManager', loader: () => require('./views/layout-manager') },
{ name: 'MdTextButton', loader: () => require('./views/md-text-button') },
{ name: 'ResizeArea', loader: () => require('./views/resize-area') },
{ name: 'TextField', loader: () => require('./views/text-field') }
{ name: 'ImageView', loader: () => require('./views/image-view') }
);
}

View File

@@ -11,7 +11,7 @@ Object.setPrototypeOf(module.exports, new Proxy({}, {
const netLog = session.defaultSession.netLog;
if (!Object.getPrototypeOf(netLog).hasOwnProperty(property)) return;
if (!Object.prototype.hasOwnProperty.call(Object.getPrototypeOf(netLog), property)) return;
// check for properties on the prototype chain that aren't functions
if (typeof netLog[property] !== 'function') return netLog[property];

View File

@@ -5,10 +5,7 @@ const { EventEmitter } = require('events');
const { Readable, Writable } = require('stream');
const { app } = require('electron');
const { Session } = process.electronBinding('session');
const { net, Net, _isValidHeaderName, _isValidHeaderValue } = process.electronBinding('net');
const { URLLoader } = net;
Object.setPrototypeOf(URLLoader.prototype, EventEmitter.prototype);
const { net, Net, isValidHeaderName, isValidHeaderValue, createURLLoader } = process.electronBinding('net');
const kSupportedProtocols = new Set(['http:', 'https:']);
@@ -124,6 +121,7 @@ class SlurpStream extends Writable {
super();
this._data = Buffer.alloc(0);
}
_write (chunk, encoding, callback) {
this._data = Buffer.concat([this._data, chunk]);
callback();
@@ -238,10 +236,10 @@ function parseOptions (options) {
useSessionCookies: options.useSessionCookies || false
};
for (const [name, value] of Object.entries(urlLoaderOptions.extraHeaders)) {
if (!_isValidHeaderName(name)) {
if (!isValidHeaderName(name)) {
throw new Error(`Invalid header name: '${name}'`);
}
if (!_isValidHeaderValue(value.toString())) {
if (!isValidHeaderValue(value.toString())) {
throw new Error(`Invalid value for header '${name}': '${value}'`);
}
}
@@ -305,10 +303,10 @@ class ClientRequest extends Writable {
if (this._started || this._firstWrite) {
throw new Error('Can\'t set headers after they are sent');
}
if (!_isValidHeaderName(name)) {
if (!isValidHeaderName(name)) {
throw new Error(`Invalid header name: '${name}'`);
}
if (!_isValidHeaderValue(value.toString())) {
if (!isValidHeaderValue(value.toString())) {
throw new Error(`Invalid value for header '${name}': '${value}'`);
}
@@ -372,7 +370,7 @@ class ClientRequest extends Writable {
return ret;
};
const opts = { ...this._urlLoaderOptions, extraHeaders: stringifyValues(this._urlLoaderOptions.extraHeaders) };
this._urlLoader = new URLLoader(opts);
this._urlLoader = createURLLoader(opts);
this._urlLoader.on('response-started', (event, finalUrl, responseHead) => {
const response = this._response = new IncomingMessage(responseHead);
this.emit('response', response);
@@ -400,7 +398,7 @@ class ClientRequest extends Writable {
this._urlLoader.on('redirect', (event, redirectInfo, headers) => {
const { statusCode, newMethod, newUrl } = redirectInfo;
if (this._redirectPolicy === 'error') {
this._die(new Error(`Attempted to redirect, but redirect policy was 'error'`));
this._die(new Error('Attempted to redirect, but redirect policy was \'error\''));
} else if (this._redirectPolicy === 'manual') {
let _followRedirect = false;
this._followRedirectCb = () => { _followRedirect = true; };

View File

@@ -1,10 +1,7 @@
'use strict';
const { EventEmitter } = require('events');
const { Notification, isSupported } = process.electronBinding('notification');
Object.setPrototypeOf(Notification.prototype, EventEmitter.prototype);
Notification.isSupported = isSupported;
module.exports = Notification;

View File

@@ -1,38 +1,46 @@
'use strict';
import { EventEmitter } from 'events';
import { app } from 'electron';
import { createLazyInstance } from '../utils';
const { createPowerMonitor, getSystemIdleState, getSystemIdleTime } = process.electronBinding('power_monitor');
const { EventEmitter } = require('events');
const { createPowerMonitor, PowerMonitor } = process.electronBinding('power_monitor');
class PowerMonitor extends EventEmitter {
constructor () {
super();
// Don't start the event source until both a) the app is ready and b)
// there's a listener registered for a powerMonitor event.
this.once('newListener', () => {
app.whenReady().then(() => {
const pm = createPowerMonitor();
pm.emit = this.emit.bind(this);
// PowerMonitor is an EventEmitter.
Object.setPrototypeOf(PowerMonitor.prototype, EventEmitter.prototype);
const powerMonitor = createLazyInstance(createPowerMonitor, PowerMonitor, true);
if (process.platform === 'linux') {
// In order to delay system shutdown when e.preventDefault() is invoked
// on a powerMonitor 'shutdown' event, we need an org.freedesktop.login1
// shutdown delay lock. For more details see the "Taking Delay Locks"
// section of https://www.freedesktop.org/wiki/Software/systemd/inhibit/
//
// So here we watch for 'shutdown' listeners to be added or removed and
// set or unset our shutdown delay lock accordingly.
const { app } = require('electron');
app.whenReady().then(() => {
powerMonitor.on('newListener', (event: string) => {
// whenever the listener count is incremented to one...
if (event === 'shutdown' && powerMonitor.listenerCount('shutdown') === 0) {
powerMonitor.blockShutdown();
}
if (process.platform === 'linux') {
// On Linux, we inhibit shutdown in order to give the app a chance to
// decide whether or not it wants to prevent the shutdown. We don't
// inhibit the shutdown event unless there's a listener for it. This
// keeps the C++ code informed about whether there are any listeners.
pm.setListeningForShutdown(this.listenerCount('shutdown') > 0);
this.on('newListener', (event) => {
if (event === 'shutdown') {
pm.setListeningForShutdown(this.listenerCount('shutdown') + 1 > 0);
}
});
this.on('removeListener', (event) => {
if (event === 'shutdown') {
pm.setListeningForShutdown(this.listenerCount('shutdown') > 0);
}
});
}
});
});
powerMonitor.on('removeListener', (event: string) => {
// whenever the listener count is decremented to zero...
if (event === 'shutdown' && powerMonitor.listenerCount('shutdown') === 0) {
powerMonitor.unblockShutdown();
}
});
});
}
getSystemIdleState (idleThreshold: number) {
return getSystemIdleState(idleThreshold);
}
getSystemIdleTime () {
return getSystemIdleTime();
}
}
module.exports = powerMonitor;
module.exports = new PowerMonitor();

View File

@@ -9,7 +9,7 @@ Object.setPrototypeOf(protocol, new Proxy({}, {
if (!app.isReady()) return;
const protocol = session.defaultSession!.protocol;
if (!Object.getPrototypeOf(protocol).hasOwnProperty(property)) return;
if (!Object.prototype.hasOwnProperty.call(protocol, property)) return;
// Returning a native function directly would throw error.
return (...args: any[]) => (protocol[property as keyof Electron.Protocol] as Function)(...args);

View File

@@ -2,7 +2,7 @@
const { EventEmitter } = require('events');
const { app, deprecate } = require('electron');
const { fromPartition, Session, Cookies, NetLog, Protocol, ServiceWorkerContext } = process.electronBinding('session');
const { fromPartition, Session } = process.electronBinding('session');
// Public API.
Object.defineProperties(exports, {
@@ -16,39 +16,8 @@ Object.defineProperties(exports, {
}
});
Object.setPrototypeOf(Cookies.prototype, EventEmitter.prototype);
Object.setPrototypeOf(ServiceWorkerContext.prototype, EventEmitter.prototype);
Object.setPrototypeOf(Session.prototype, EventEmitter.prototype);
Session.prototype._init = function () {
app.emit('session-created', this);
};
const _originalStartLogging = NetLog.prototype.startLogging;
NetLog.prototype.startLogging = function (path, ...args) {
this._currentlyLoggingPath = path;
try {
return _originalStartLogging.call(this, path, ...args);
} catch (e) {
this._currentlyLoggingPath = null;
throw e;
}
};
const _originalStopLogging = NetLog.prototype.stopLogging;
NetLog.prototype.stopLogging = function () {
const logPath = this._currentlyLoggingPath;
this._currentlyLoggingPath = null;
return _originalStopLogging.call(this).then(() => logPath);
};
const currentlyLoggingPathDeprecated = deprecate.warnOnce('currentlyLoggingPath');
Object.defineProperties(NetLog.prototype, {
currentlyLoggingPath: {
enumerable: true,
get () {
currentlyLoggingPathDeprecated();
return this._currentlyLoggingPath == null ? '' : this._currentlyLoggingPath;
}
}
});

View File

@@ -29,11 +29,6 @@ Object.defineProperty(TopLevelWindow.prototype, 'visibleOnAllWorkspaces', {
set: function (visible) { this.setVisibleOnAllWorkspaces(visible); }
});
Object.defineProperty(TopLevelWindow.prototype, 'fullScreen', {
get: function () { return this.isFullScreen(); },
set: function (full) { this.setFullScreen(full); }
});
Object.defineProperty(TopLevelWindow.prototype, 'simpleFullScreen', {
get: function () { return this.isSimpleFullScreen(); },
set: function (simple) { this.setSimpleFullScreen(simple); }

View File

@@ -52,12 +52,21 @@ class TouchBar extends EventEmitter {
}
};
let hasOtherItemsProxy = false;
const idSet = new Set();
items.forEach((item) => {
if (!(item instanceof TouchBarItem)) {
throw new Error('Each item must be an instance of TouchBarItem');
}
if (item.type === 'other_items_proxy') {
if (!hasOtherItemsProxy) {
hasOtherItemsProxy = true;
} else {
throw new Error('Must only have one OtherItemsProxy per TouchBar');
}
}
if (!idSet.has(item.id)) {
idSet.add(item.id);
} else {
@@ -94,7 +103,7 @@ class TouchBar extends EventEmitter {
const { id } = window;
// Already added to window
if (this.windowListeners.hasOwnProperty(id)) return;
if (Object.prototype.hasOwnProperty.call(this.windowListeners, id)) return;
window._touchBar = this;
@@ -346,4 +355,11 @@ TouchBar.TouchBarScrubber = class TouchBarScrubber extends TouchBarItem {
}
};
TouchBar.TouchBarOtherItemsProxy = class TouchBarOtherItemsProxy extends TouchBarItem {
constructor (config) {
super();
this._addImmutableProperty('type', 'other_items_proxy');
}
};
module.exports = TouchBar;

View File

@@ -1,9 +1,5 @@
'use strict';
const { EventEmitter } = require('events');
const { deprecate } = require('electron');
const { Tray } = process.electronBinding('tray');
Object.setPrototypeOf(Tray.prototype, EventEmitter.prototype);
module.exports = Tray;

View File

@@ -1,11 +1,5 @@
'use strict';
const { EventEmitter } = require('events');
const { View } = process.electronBinding('view');
Object.setPrototypeOf(View.prototype, EventEmitter.prototype);
View.prototype._init = function () {
};
module.exports = View;

View File

@@ -1,15 +0,0 @@
'use strict';
const electron = require('electron');
const { LayoutManager } = electron;
const { BoxLayout } = process.electronBinding('box_layout');
Object.setPrototypeOf(BoxLayout.prototype, LayoutManager.prototype);
BoxLayout.prototype._init = function () {
// Call parent class's _init.
LayoutManager.prototype._init.call(this);
};
module.exports = BoxLayout;

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