Compare commits

..

282 Commits

Author SHA1 Message Date
Sudowoodo Release Bot
84df964d2f Bump v15.0.0-alpha.6 2021-08-12 08:18:31 -07:00
trop[bot]
6781a2c6e0 ci: make arm64 macos test cleanup more resilient (#30502)
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2021-08-11 17:46:48 -04:00
Keeley Hammond
5dce02a3bb fix: explicitly define REFGUID from ::GUID&, not base::GUID (#30442) (#30498)
* fix: explicitly define REFGUID from ::GUID&

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

* fix: duplicate GUID_NULL symbol, add comment
2021-08-11 14:13:01 -07:00
trop[bot]
9aafee9cf0 docs: add missing <webview> event documentation (#30467)
Co-authored-by: Milan Burda <milan.burda@gmail.com>
2021-08-11 09:43:50 +09:00
trop[bot]
5df3e7e8fb ci: cleanup keychain after tests on arm64 mac (#30477)
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2021-08-11 09:43:22 +09:00
trop[bot]
889be2327f docs: fix camelcase in menu example (#30463)
* docs: fix camelcase in menu example and add hint to deal with TS error

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

* docs: Fix spelling, added hint to TypeScript

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

* remove ts hints

Co-authored-by: a@b <a@b>
Co-authored-by: Cheng Zhao <github@zcbenz.com>
2021-08-11 09:38:39 +09:00
trop[bot]
68e87ea4f5 fix: mouse doesn't work on frameless browserwindows (#30460)
Fixes #30402. This bug is from the "CanResize has been de-virtualized"
refactor in https://github.com/electron/electron/pull/29256

Co-authored-by: Charles Kerr <charles@charleskerr.com>
2021-08-11 09:38:06 +09:00
trop[bot]
d3462596fa feat: add fuses for NODE_OPTIONS and --inspect (#30420)
* feat: add fuses for NODE_OPTIONS and --inspect

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

* chore: fix lint

* chore: flip boolean logic

* chore: update patches

* chore: add trailing _ to static member

* Update add_should_read_node_options_from_env_option_to_disable_node_options.patch

* chore: update patches

Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: Samuel Attard <sam@electronjs.org>
2021-08-09 22:07:18 -04:00
trop[bot]
f3fd8492cf chore: more crash-keys for gin::Wrappable debugging (#30423)
* chore: more crash-keys for gin::Wrappable debugging

* fix namespace for Event

* Update crash_keys.cc

Co-authored-by: Jeremy Rose <nornagon@nornagon.net>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
2021-08-10 09:50:10 +09:00
trop[bot]
a3ca79f883 build: rebase release branch before reverting bump (#30419)
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2021-08-09 17:17:33 -04:00
trop[bot]
e2aaf5d18a build: set the export goma auth fallback flag for the control process (#30315)
Co-authored-by: Samuel Attard <sam@electronjs.org>
2021-08-09 11:54:09 -04:00
Electron Bot
e49b33cad8 Bump v15.0.0-alpha.5 2021-08-09 08:25:06 -07:00
trop[bot]
5ac3192dd0 fix: move window buttons in-place on macOS (#30392)
Co-authored-by: Cheng Zhao <zcbenz@gmail.com>
2021-08-09 16:00:29 +09:00
Electron Bot
ea63f2ea98 Bump v15.0.0-alpha.4 2021-08-05 08:41:46 -07:00
trop[bot]
73b280d6b4 fix: console window popping up when --enable-logging passed on windows (#30386)
* fix: console window popping up when --enable-logging passed on windows

* chore: update patches

* clang format

Co-authored-by: Jeremy Rose <nornagon@nornagon.net>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
2021-08-05 08:58:14 +09:00
trop[bot]
2de6939db0 build: fix building with enable_desktop_capturer = false (#30389)
Co-authored-by: Milan Burda <milan.burda@gmail.com>
2021-08-04 09:56:10 +09:00
Electron Bot
022620f4cd Bump v15.0.0-alpha.3 2021-08-02 08:16:27 -07:00
trop[bot]
d1894977de build: update build images to update npm and node (#30364)
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2021-08-02 13:00:45 +09:00
trop[bot]
6765eec7a9 fix: respect LogJsConsoleMessages feature in InspectableWebContents::DidAddMessageToConsole (#30356)
* fix: respect LogJsConsoleMessages feature in InspectableWebContents::DidAddMessageToConsole

* just delete the method

Co-authored-by: Jeremy Rose <nornagon@nornagon.net>
2021-08-02 10:00:30 +09:00
trop[bot]
d462204dce fix: guard against missing native view (#30328)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-08-02 09:57:58 +09:00
trop[bot]
52d9bf41e6 chore: update deps (#30346)
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
2021-07-30 14:56:10 -07:00
trop[bot]
0cd714a3bb fix: use contentAspectRatio not aspectRatio (#30332)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-07-30 02:24:30 -07:00
trop[bot]
1228c69e1d fix: BrowserViews not painting their WebContents (#30336)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-07-30 02:23:08 -07:00
trop[bot]
c09b22bf85 chore: remove experimental from navigator.serial implementation (#30334)
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2021-07-29 21:55:48 -04:00
trop[bot]
65d83f2054 chore: update publish to npm to use GitHub token (#30292)
ensures that we don't get hit with a rate limit while trying to publish a release.

Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2021-07-28 12:24:29 -07:00
trop[bot]
6fa95afd71 test: deflake crashReporter.getLastCrashReport test (#30309)
Co-authored-by: Jeremy Rose <nornagon@nornagon.net>
2021-07-28 12:21:04 -07:00
trop[bot]
d58211304b fix: update traffic lights position for macOS 11 (#30270)
Co-authored-by: Cheng Zhao <zcbenz@gmail.com>
2021-07-28 12:02:09 +02:00
trop[bot]
760cb4ab50 fix: Add missing items to menuItem.role documentation (#30302) 2021-07-28 11:54:41 +02:00
trop[bot]
4acdb97543 chore: bump chromium to 94.0.4584.0 (main) (#30030) (#30268)
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
2021-07-26 16:11:58 -07:00
Electron Bot
011a874021 Bump v15.0.0-alpha.2 2021-07-26 10:07:59 -07:00
trop[bot]
bac728a134 fix: process.exit crash in nativeWindowOpen (#30238)
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
2021-07-26 18:28:37 +02:00
trop[bot]
9d6c37ac88 docs: update title of guide (#30260)
Co-authored-by: Antón Molleda <amolleda@gmail.com>
2021-07-26 20:18:20 +09:00
trop[bot]
25fc9acec6 fix: increase stack size on windows x86 (#30243)
* fix: increace main thread stack size on windows x86

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

* chore: add debug logs

* Revert "chore: add debug logs"

This reverts commit 0be81ae07c.

* chore: use a reliable crash endpoint

Co-authored-by: Stephen Wang <wangwenqiang.wwq@bytedance.com>
Co-authored-by: Deepak Mohan <hop2deep@gmail.com>
2021-07-26 17:45:36 +09:00
Electron Bot
edb65a07f1 Bump v15.0.0-alpha.1 2021-07-21 15:05:18 -07:00
Samuel Attard
82b5fbc396 build: handle alpha tag existing before beta line has finished 2021-07-21 14:50:06 -07:00
Keeley Hammond
19820fc2a7 chore: add additional crash key to gin::Wrappable (#30161) 2021-07-21 09:33:25 -04:00
Electron Bot
adc3f39a9e Bump v15.0.0-nightly.20210721 2021-07-21 06:02:02 -07:00
Samuel Attard
9fe70c5580 build: handle release failure by existing with code 1 (#30216) 2021-07-21 00:45:57 -07:00
Electron Bot
ea69da279f Bump v15.0.0-nightly.20210720 2021-07-20 06:02:23 -07:00
Keeley Hammond
deb75ceaa5 build: update version-bumper to support alpha (#30165)
* build: update version-bumper to support alpha

* build: seperate alpha bump version tests

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

* chore: fix regex

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

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

* chore: update patches

* ci: run main and remote woa tests separately

* chore: bump node in DEPS to v16.5.0

* build: restore libplatform headers in distribution

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

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

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

* chore: various BoringSSL/OpenSSL upstreams

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

* test: move debugger test case to parallel

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

* chore: fixup patch indices

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

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

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

* win: Implement dialog.closeMessageBox

* mac: Return cancelId with closeMessageBox

* gtk: Implement dialog.closeMessageBox

* win: Fix 32bit build

* win: Reduce the scope of lock

* fix: Build error after rebase

* feat: Use AbortSignal to close message box

* chore: silently handle duplicate ID

* win: Add more notes about the threads

* chore: apply reviews

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

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

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

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

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

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

* docs: iadd contextIsolation

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

* docs: address comments

* chore: fix brackets

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

* chore: update patches

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

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

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

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

This reverts commit 9691d6c265 and 797723ec83

* Pass gfx::Insets to GetHTComponentForFrame

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

* chore: bump chromium in DEPS to 93.0.4563.0

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

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

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4564.0

* chore: bump chromium in DEPS to 93.0.4565.0

* chore: update patches

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

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

* chore: update patches

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

* chore: bump chromium in DEPS to 93.0.4566.0

* chore: update patches

* chore: add missing header

* ci: do not run clipboard tests on WOA

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
2021-07-06 08:17:13 -04:00
Samuel Attard
7169734470 fix: download the arm64 version of Electron when running node under rosetta (#29953) 2021-07-06 10:40:26 +09:00
Jenux
f3517b6635 docs: match css filename in dark-mode.md (#29936)
* Update dark-mode.md

Fix the unmatched css file name

* Update docs/tutorial/dark-mode.md

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

Co-authored-by: Jeremy Rose <nornagon@nornagon.net>
2021-07-06 10:37:41 +09:00
David Sanders
6c251da201 chore: correct spelling of is_quitting in electron::Browser (#29948) 2021-07-05 15:45:50 -04:00
electron-roller[bot]
60366ad171 chore: bump node to v16.4.1 (main) (#29994)
* chore: bump node in DEPS to v16.4.1

* chore: update patches

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
2021-07-05 13:47:09 -04:00
Electron Bot
6db9b274b7 Bump v15.0.0-nightly.20210705 2021-07-05 06:01:17 -07:00
Cheng Zhao
25a77761f6 fix: build error caused by extra ] (#30015) 2021-07-05 01:34:39 -07:00
Shelley Vohr
af991123f1 fix: self.module.paths not working in web workers (#29955)
* fix: global.module.paths in workers

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

* address review feedback

* chore: address review feedback

* Address review feedback

* update doc per review

* only enable WCO when titleBarStyle is overlay

* Revert "only enable WCO when titleBarStyle is overlay"

This reverts commit 1b58b5b1fc.

* Add new titleBarOverlay property to manage feature

* spelling fix

* Update docs/api/frameless-window.md

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

* Update shell/browser/api/electron_api_browser_window.cc

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

* update per review feedback

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

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

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

* chore: update syntax

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

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

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4555.0

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4556.0

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4557.0

* chore: update patches

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

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

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

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

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

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

* chore: bump chromium in DEPS to 93.0.4558.0

* chore: update patches

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

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

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

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

* chore: add undocumented getAlwaysOnTopLevel

* test: add test for level persistence

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

* fix: include ppapi subprocesses for windows resource bundle

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

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

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

* Port chromium webrequest changes to electron code.

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

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

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

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

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

Fix: #29463

* Move test to a better place

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

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

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

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

* simplify crash-case

* comment

* fix comment

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

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

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

* chore: update patches

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

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

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

(cherry picked from commit 1c0a6045fb)

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

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

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

Fixes #22167

* chore: update typescript-defs

* chore: update typescript-defs

* chore: fix bad typescript in IPC test

* docs: test rendering of new syntax

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

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

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

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

* add index and code back to guide

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

* consolidate logic for DIR_RECENT and DIR_APP_LOGS into path provider

* fix bad include

* remove debugging code

* fix build on mac

* fix build on win

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

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

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

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

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

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

* Apply suggestions from code review

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

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

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

* chore: update patches

* [2918475] Make InkDrop a View class property

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

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

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

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

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

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2021-06-08 15:22:43 -05:00
Shelley Vohr
7b169c2884 fix: don't propagate GDK_BACKEND to subprocs (#28898) 2021-06-08 16:10:27 +02:00
Electron Bot
b27c5b94f7 Bump v15.0.0-nightly.20210608 2021-06-08 06:00:58 -07:00
ZReC
330b7849a3 docs: fix typo (#29553)
* Typo fix

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

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4534.0

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4535.0

* chore: remove PdfViewerDocumentProperties from feature-flag conditional

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

This feature is now enabled by default upstream.

* chore: remove kPdfViewerPresentationMode from feature-flag conditional

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

This feature is now enabled by default upstream.

Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
2021-06-07 14:09:41 -05:00
Samuel Attard
c48ec133a5 build: remove individual release build workflows (#29344)
* build: remove individual release build workflows

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

* change format for readability

* clarify which console the message should appear in

* minor changes to renderer.md

* update UI on click instead of developer console

* remove node-integration and fix md

* update content

* chore: remove ****

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

* Update recent-documents tutorial.

* update for review comments

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

* chore: update patches

* Remove IPC::Listener from WebContentsObserver

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

* serial: Move serial policy from profile to local state

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

* chore: fix pip test

* chore: bump chromium in DEPS to 93.0.4532.2

* chore: update patches

* Follow up ColorChooser clean ups

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

* Distinguish between no default printer vs. query error

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

* chore: remove build_do_not_include_vr_directx_helpers_when_enable_vr.patch

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

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

* chore: address code review comments

* chore: tighten up thread-safety

* chore: better address code review comments

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

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

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

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

* chore: fixup patch indices

* chore: bump chromium in DEPS to 92.0.4514.0

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

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

* 2904731: use BrowserContext instead of Profile in PreconnectManager

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

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

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

* 2893803: Add a GetWebView to RenderFrame.

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

* 2892345: Implement WebContents::ForEachRenderFrameHost

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

* chore: fixup patch indices

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

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

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

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

* 2496500: Remove last deprecated extension Event ctor.

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

* chore: fixup malformed pepper support patch

* chore: bump chromium in DEPS to 92.0.4515.0

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

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

* 2880838: viz: add optional HDRMetadata to TransferableResource

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

* chore: fixup patch indices

* chore: bump chromium in DEPS to 92.0.4515.5

* chore: update patches

* chore: bump chromium in DEPS to 92.0.4515.7

* chore: bump chromium in DEPS to 92.0.4515.9

* chore: bump chromium in DEPS to 93.0.4522.0

* chore: bump chromium in DEPS to 93.0.4523.0

* chore: bump chromium in DEPS to 93.0.4524.0

* chore: update patches

* chore: enable_pak_file_integrity_checks was reverted

* chore: update patches

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

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

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

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

* chore: add missing base::Contains include

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

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

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

* refactor: replace WorldScriptContext() with GetScriptContextFromWorldId

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

* chore: clean up left over opening namespace

Refs: 95bfe6d08f

* chore: add missing base::Contains include

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

* refactor: replace GetCurrentDisplayIterator with the hard checker
GetCurrentDisplay

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

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

* refactor: headers are now passed directly in extensions client

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

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

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

* chore: add missing includes for network URLLoaderFactory

Refs: unknown, probably a side effect of header changes

* refactor: make convenience wrapper around AppendArg

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

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

* chore: add patch

* chore: bump chromium in DEPS to 93.0.4525.0

* chore: update patches

* refactor: CanResize has been de-virtualized

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

* chore: update resource integrity patch

* chore: add character encoding idl patch

* chore: bump chromium in DEPS to 93.0.4526.0

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4527.0

* chore: bump chromium in DEPS to 93.0.4528.0

* chore: update patches

* chore: update idl encoding patch

* chore: bump chromium in DEPS to 93.0.4529.0

* chore: update patches

* chore: bump chromium in DEPS to 93.0.4530.0

* chore: update patches

* fix: only SetCanResize after the widget has been initialized

* chore: add patch for vr on windows gn gen

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

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

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

Consider the following error:

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

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

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

* build: update supported on major stable & nightly bumps

* test: updateSupported tests

* chore: fix syntax

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

* test: use actual accelerator of NSMenuItem

* chore: simplify KeyboardCodeFromStr

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

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

* docs: add documentation for the new runningUnderARM64Translation property

* refactor: clean up `IsRunningUnderARM64Translation` Windows implementation

* Return false if IsWow64Process2 doesn't exist

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

* add comments to code snippet

* edits to progress-bar tutorial

* remove versions and nodeIntegration

* limit line length to 100

* implement standard linter suggestions

* add indeterminate and clear timers

* update to have reader replace all of main.js

* remove extra button

* loop the progress bar

* add logic to show reset state briefly

* Update docs/tutorial/progress-bar.md

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

* chore: fix lint

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

fix: wparam type

fix: private member usage on mac

docs: will-resize event edge option

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

* Update docs/api/browser-window.md

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

* Update docs/api/browser-window.md

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

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

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

* remove nodeIntegration

* format code and update readme

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

* chore: fix TODO

* update patches

* feat: make cookie encryption work on windows

* chore: update cookie encryption support comments

* fix: only call OSCrypt::Init on windows

* chore: make cookie encryption work on linux

* Update shell/browser/net/system_network_context_manager.cc

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

* chore: fix lint

* chore: update patches

* chore: update patches to upstreamed variants

* chore: use chrome ::switches constants

* chore: remove bad patch

* build: disable cookie encryption by default

* chore: update patches

* fix: provide std::string to NoDestructor

* chore: fix macos, nodestructor syntax

* build: fix macOS build due to mismatch in DEFINE

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

View File

@@ -17,46 +17,24 @@ parameters:
type: boolean
default: true
run-linux-x64-publish:
type: boolean
default: false
run-linux-ia32-publish:
type: boolean
default: false
run-linux-arm-publish:
type: boolean
default: false
run-linux-arm64-publish:
type: boolean
default: false
run-osx-publish:
type: boolean
default: false
run-osx-publish-arm64:
type: boolean
default: false
run-mas-publish:
type: boolean
default: false
run-mas-publish-arm64:
type: boolean
default: false
run-linux-publish:
type: boolean
default: false
linux-publish-arch-limit:
type: enum
default: all
enum: ["all", "arm", "arm64", "x64", "ia32"]
run-macos-publish:
type: boolean
default: false
macos-publish-arch-limit:
type: enum
default: all
enum: ["all", "osx-x64", "osx-arm64", "mas-x64", "mas-arm64"]
# Executors
executors:
linux-docker:
@@ -67,7 +45,7 @@ executors:
type: enum
enum: ["medium", "xlarge", "2xlarge+"]
docker:
- image: electron.azurecr.io/build:4fc81b50f9c0980699d329bc32062fac20a26701
- image: electron.azurecr.io/build:ca93c6a7bc49e7d2a7b8c62ed04e0b870f3dfd1e
resource_class: << parameters.size >>
macos:
@@ -241,6 +219,8 @@ step-maybe-cleanup-arm64-mac: &step-maybe-cleanup-arm64-mac
killall Safari || echo "No Safari processes left running"
rm -rf ~/Library/Application\ Support/Electron*
rm -rf ~/Library/Application\ Support/electron*
security delete-generic-password -l "Chromium Safe Storage" || echo "✓ Keychain does not contain password from tests"
security delete-generic-password -l "Electron Test Main Safe Storage" || echo "✓ Keychain does not contain password from tests"
elif [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
XVFB=/usr/bin/Xvfb
/sbin/start-stop-daemon --stop --exec $XVFB || echo "Xvfb not running"
@@ -334,6 +314,7 @@ step-setup-goma-for-build: &step-setup-goma-for-build
npm install
mkdir third_party
node -e "require('./src/utils/goma.js').downloadAndPrepare({ gomaOneForAll: true })"
export GOMA_FALLBACK_ON_AUTH_FAILURE=true
third_party/goma/goma_ctl.py ensure_start
echo 'export GN_GOMA_FILE='`node -e "console.log(require('./src/utils/goma.js').gnFilePath)"` >> $BASH_ENV
echo 'export LOCAL_GOMA_DIR='`node -e "console.log(require('./src/utils/goma.js').dir)"` >> $BASH_ENV
@@ -612,21 +593,13 @@ step-electron-dist-build: &step-electron-dist-build
fi
fi
step-electron-maybe-chromedriver-gn-gen: &step-electron-maybe-chromedriver-gn-gen
run:
name: chromedriver GN gen
command: |
cd src
if [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
gn gen out/chromedriver --args="import(\"$GN_CONFIG\") import(\"$GN_GOMA_FILE\") is_component_ffmpeg=false proprietary_codecs=false $GN_EXTRA_ARGS $GN_BUILDFLAG_ARGS"
fi
step-electron-chromedriver-build: &step-electron-chromedriver-build
run:
name: Build chromedriver.zip
command: |
cd src
if [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
gn gen out/chromedriver --args="import(\"$GN_CONFIG\") import(\"$GN_GOMA_FILE\") is_component_ffmpeg=false proprietary_codecs=false $GN_EXTRA_ARGS $GN_BUILDFLAG_ARGS"
export CHROMEDRIVER_DIR="out/chromedriver"
else
export CHROMEDRIVER_DIR="out/Default"
@@ -1523,7 +1496,6 @@ commands:
- *step-maybe-cross-arch-snapshot
# chromedriver
- *step-electron-maybe-chromedriver-gn-gen
- *step-electron-chromedriver-build
- when:
@@ -1619,7 +1591,6 @@ commands:
- *step-mksnapshot-build
# chromedriver
- *step-electron-maybe-chromedriver-gn-gen
- *step-electron-chromedriver-build
# Node.js headers
@@ -1830,9 +1801,16 @@ jobs:
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: false
checkout: true
- run: echo running
- when:
condition:
or:
- equal: ["all", << pipeline.parameters.linux-publish-arch-limit >>]
- equal: ["x64", << pipeline.parameters.linux-publish-arch-limit >>]
steps:
- electron-publish:
attach: false
checkout: true
linux-ia32-testing:
executor: linux-docker
@@ -1872,9 +1850,16 @@ jobs:
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: false
checkout: true
- run: echo running
- when:
condition:
or:
- equal: ["all", << pipeline.parameters.linux-publish-arch-limit >>]
- equal: ["ia32", << pipeline.parameters.linux-publish-arch-limit >>]
steps:
- electron-publish:
attach: false
checkout: true
linux-arm-testing:
executor: linux-docker
@@ -1917,9 +1902,16 @@ jobs:
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: false
checkout: true
- run: echo running
- when:
condition:
or:
- equal: ["all", << pipeline.parameters.linux-publish-arch-limit >>]
- equal: ["arm", << pipeline.parameters.linux-publish-arch-limit >>]
steps:
- electron-publish:
attach: false
checkout: true
linux-arm64-testing:
executor: linux-docker
@@ -1971,9 +1963,16 @@ jobs:
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: false
checkout: true
- run: echo running
- when:
condition:
or:
- equal: ["all", << pipeline.parameters.linux-publish-arch-limit >>]
- equal: ["arm64", << pipeline.parameters.linux-publish-arch-limit >>]
steps:
- electron-publish:
attach: false
checkout: true
osx-testing-x64:
executor: macos
@@ -1999,31 +1998,6 @@ jobs:
<<: *env-testing-build
<<: *steps-electron-gn-check
osx-publish-x64:
executor: macos
environment:
<<: *env-mac-large-release
<<: *env-release-build
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: false
checkout: true
osx-publish-arm64:
executor: macos
environment:
<<: *env-mac-large-release
<<: *env-release-build
<<: *env-apple-silicon
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: false
checkout: true
osx-publish-x64-skip-checkout:
executor: macos
environment:
@@ -2032,9 +2006,16 @@ jobs:
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: true
checkout: false
- run: echo running
- when:
condition:
or:
- equal: ["all", << pipeline.parameters.macos-publish-arch-limit >>]
- equal: ["osx-x64", << pipeline.parameters.macos-publish-arch-limit >>]
steps:
- electron-publish:
attach: true
checkout: false
osx-publish-arm64-skip-checkout:
executor: macos
@@ -2045,9 +2026,16 @@ jobs:
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: true
checkout: false
- run: echo running
- when:
condition:
or:
- equal: ["all", << pipeline.parameters.macos-publish-arch-limit >>]
- equal: ["osx-arm64", << pipeline.parameters.macos-publish-arch-limit >>]
steps:
- electron-publish:
attach: true
checkout: false
osx-testing-arm64:
executor: macos
@@ -2091,32 +2079,6 @@ jobs:
<<: *env-mas
<<: *env-testing-build
<<: *steps-electron-gn-check
mas-publish:
executor: macos
environment:
<<: *env-mac-large-release
<<: *env-mas
<<: *env-release-build
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: false
checkout: true
mas-publish-arm64:
executor: macos
environment:
<<: *env-mac-large-release
<<: *env-mas-apple-silicon
<<: *env-release-build
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: false
checkout: true
mas-publish-x64-skip-checkout:
executor: macos
@@ -2126,9 +2088,16 @@ jobs:
<<: *env-release-build
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
steps:
- electron-publish:
attach: true
checkout: false
- run: echo running
- when:
condition:
or:
- equal: ["all", << pipeline.parameters.macos-publish-arch-limit >>]
- equal: ["mas-x64", << pipeline.parameters.macos-publish-arch-limit >>]
steps:
- electron-publish:
attach: true
checkout: false
mas-publish-arm64-skip-checkout:
executor: macos
@@ -2139,9 +2108,16 @@ jobs:
UPLOAD_TO_S3: << pipeline.parameters.upload-to-s3 >>
<<: *env-ninja-status
steps:
- electron-publish:
attach: true
checkout: false
- run: echo running
- when:
condition:
or:
- equal: ["all", << pipeline.parameters.macos-publish-arch-limit >>]
- equal: ["mas-arm64", << pipeline.parameters.macos-publish-arch-limit >>]
steps:
- electron-publish:
attach: true
checkout: false
mas-testing-arm64:
executor: macos
@@ -2380,12 +2356,6 @@ jobs:
workflows:
version: 2.1
# The publish workflows below each contain one job so that they are
# compatible with how sudowoodo works today. If these workflows are
# changed to have multiple jobs, then scripts/release/ci-release-build.js
# will need to be updated and there will most likely need to be changes to
# sudowoodo
publish-linux:
when: << pipeline.parameters.run-linux-publish >>
jobs:
@@ -2398,54 +2368,6 @@ workflows:
- linux-arm64-publish:
context: release-env
publish-x64-linux:
when: << pipeline.parameters.run-linux-x64-publish >>
jobs:
- linux-x64-publish:
context: release-env
publish-ia32-linux:
when: << pipeline.parameters.run-linux-ia32-publish >>
jobs:
- linux-ia32-publish:
context: release-env
publish-arm-linux:
when: << pipeline.parameters.run-linux-arm-publish >>
jobs:
- linux-arm-publish:
context: release-env
publish-arm64-linux:
when: << pipeline.parameters.run-linux-arm64-publish >>
jobs:
- linux-arm64-publish:
context: release-env
publish-osx:
when: << pipeline.parameters.run-osx-publish >>
jobs:
- osx-publish-x64:
context: release-env
publish-mas:
when: << pipeline.parameters.run-mas-publish >>
jobs:
- mas-publish:
context: release-env
publish-osx-arm64:
when: << pipeline.parameters.run-osx-publish-arm64 >>
jobs:
- osx-publish-arm64:
context: release-env
publish-mas-arm64:
when: << pipeline.parameters.run-mas-publish-arm64 >>
jobs:
- mas-publish-arm64:
context: release-env
publish-macos:
when: << pipeline.parameters.run-macos-publish >>
jobs:

View File

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

View File

@@ -22,7 +22,7 @@ Issues are created [here](https://github.com/electron/electron/issues/new).
### Issue Closure
Bug reports will be closed if the issue has been inactive and the latest affected version no longer receives support. At the moment, Electron maintains its three latest major versions, with a new major version being released every 12 weeks. (For more information on Electron's release cadence, see [this blog post](https://electronjs.org/blog/12-week-cadence).)
Bug reports will be closed if the issue has been inactive and the latest affected version no longer receives support. At the moment, Electron maintains its three latest major versions, with a new major version being released every 8 weeks. (For more information on Electron's release cadence, see [this blog post](https://electronjs.org/blog/8-week-cadence).)
_If an issue has been closed and you still feel it's relevant, feel free to ping a maintainer or add a comment!_

4
DEPS
View File

@@ -15,9 +15,9 @@ gclient_gn_args = [
vars = {
'chromium_version':
'93.0.4557.4',
'94.0.4584.0',
'node_version':
'v14.17.0',
'v16.5.0',
'nan_version':
# The following commit hash of NAN is v2.14.2 with *only* changes to the
# test suite. This should be updated to a specific tag when one becomes

View File

@@ -1 +1 @@
14.0.0-beta.12
15.0.0-alpha.6

View File

@@ -2,7 +2,6 @@
[![CircleCI Build Status](https://circleci.com/gh/electron/electron/tree/master.svg?style=shield)](https://circleci.com/gh/electron/electron/tree/master)
[![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/4lggi9dpjc1qob7k/branch/master?svg=true)](https://ci.appveyor.com/project/electron-bot/electron-ljo26/branch/master)
[![devDependency Status](https://david-dm.org/electron/electron/dev-status.svg)](https://david-dm.org/electron/electron?type=dev)
[![Electron Discord Invite](https://img.shields.io/discord/745037351163527189?color=%237289DA&label=chat&logo=discord&logoColor=white)](https://discord.com/invite/electron)
:memo: Available Translations: 🇨🇳 🇧🇷 🇪🇸 🇯🇵 🇷🇺 🇫🇷 🇺🇸 🇩🇪.

View File

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

View File

@@ -3,5 +3,7 @@
"_schema": "0 == off, 1 == on, r == removed fuse",
"_version": 1,
"run_as_node": "1",
"cookie_encryption": "0"
"cookie_encryption": "0",
"node_options": "1",
"node_cli_inspect": "1"
}

View File

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

View File

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

View File

@@ -21,6 +21,8 @@ static_library("chrome") {
"//chrome/browser/devtools/devtools_contents_resizing_strategy.h",
"//chrome/browser/devtools/devtools_embedder_message_dispatcher.cc",
"//chrome/browser/devtools/devtools_embedder_message_dispatcher.h",
"//chrome/browser/devtools/devtools_eye_dropper.cc",
"//chrome/browser/devtools/devtools_eye_dropper.h",
"//chrome/browser/devtools/devtools_file_system_indexer.cc",
"//chrome/browser/devtools/devtools_file_system_indexer.h",
"//chrome/browser/extensions/global_shortcut_listener.cc",
@@ -35,6 +37,8 @@ static_library("chrome") {
"//chrome/browser/net/proxy_config_monitor.h",
"//chrome/browser/net/proxy_service_factory.cc",
"//chrome/browser/net/proxy_service_factory.h",
"//chrome/browser/platform_util.cc",
"//chrome/browser/platform_util.h",
"//chrome/browser/predictors/preconnect_manager.cc",
"//chrome/browser/predictors/preconnect_manager.h",
"//chrome/browser/predictors/predictors_features.cc",
@@ -45,6 +49,10 @@ static_library("chrome") {
"//chrome/browser/predictors/resolve_host_client_impl.h",
"//chrome/browser/ui/views/autofill/autofill_popup_view_utils.cc",
"//chrome/browser/ui/views/autofill/autofill_popup_view_utils.h",
"//chrome/browser/ui/views/eye_dropper/eye_dropper.cc",
"//chrome/browser/ui/views/eye_dropper/eye_dropper.h",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view.cc",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view.h",
"//extensions/browser/app_window/size_constraints.cc",
"//extensions/browser/app_window/size_constraints.h",
]
@@ -56,6 +64,9 @@ static_library("chrome") {
"//chrome/browser/icon_loader_mac.mm",
"//chrome/browser/media/webrtc/system_media_capture_permissions_mac.h",
"//chrome/browser/media/webrtc/system_media_capture_permissions_mac.mm",
"//chrome/browser/media/webrtc/window_icon_util_mac.mm",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view_mac.h",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view_mac.mm",
]
}
@@ -64,6 +75,7 @@ static_library("chrome") {
"//chrome/browser/extensions/global_shortcut_listener_win.cc",
"//chrome/browser/extensions/global_shortcut_listener_win.h",
"//chrome/browser/icon_loader_win.cc",
"//chrome/browser/media/webrtc/window_icon_util_win.cc",
"//chrome/browser/win/chrome_process_finder.cc",
"//chrome/browser/win/chrome_process_finder.h",
"//chrome/child/v8_crashpad_support_win.cc",
@@ -71,6 +83,17 @@ static_library("chrome") {
]
}
if (is_linux) {
sources += [ "//chrome/browser/media/webrtc/window_icon_util_linux.cc" ]
}
if (use_aura) {
sources += [
"//chrome/browser/platform_util_aura.cc",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view_aura.cc",
]
}
public_deps = [
"//chrome/browser:dev_ui_browser_resources",
"//chrome/common",
@@ -144,64 +167,6 @@ static_library("chrome") {
deps += [ "//ui/snapshot" ]
}
if (enable_color_chooser) {
sources += [
"//chrome/browser/devtools/devtools_eye_dropper.cc",
"//chrome/browser/devtools/devtools_eye_dropper.h",
"//chrome/browser/platform_util.cc",
"//chrome/browser/platform_util.h",
"//chrome/browser/ui/browser_dialogs.h",
"//chrome/browser/ui/color_chooser.h",
"//chrome/browser/ui/views/eye_dropper/eye_dropper.cc",
"//chrome/browser/ui/views/eye_dropper/eye_dropper.h",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view.cc",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view.h",
]
if (use_aura) {
sources += [
"//chrome/browser/platform_util_aura.cc",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view_aura.cc",
]
if (!is_win) {
sources += [
"//chrome/browser/ui/views/color_chooser_aura.cc",
"//chrome/browser/ui/views/color_chooser_aura.h",
]
}
deps += [ "//components/feature_engagement" ]
}
if (is_mac) {
sources += [
"//chrome/browser/media/webrtc/window_icon_util_mac.mm",
"//chrome/browser/ui/cocoa/color_chooser_mac.h",
"//chrome/browser/ui/cocoa/color_chooser_mac.mm",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view_mac.h",
"//chrome/browser/ui/views/eye_dropper/eye_dropper_view_mac.mm",
]
deps += [
"//components/remote_cocoa/app_shim",
"//components/remote_cocoa/browser",
]
}
if (is_win) {
sources += [
"//chrome/browser/media/webrtc/window_icon_util_win.cc",
"//chrome/browser/ui/views/color_chooser_dialog.cc",
"//chrome/browser/ui/views/color_chooser_dialog.h",
"//chrome/browser/ui/views/color_chooser_win.cc",
]
}
if (is_linux) {
sources += [ "//chrome/browser/media/webrtc/window_icon_util_linux.cc" ]
}
}
if (enable_widevine) {
sources += [
"//chrome/renderer/media/chrome_key_systems.cc",

View File

@@ -133,7 +133,7 @@ void CertificateManagerModel::DidGetCertDBOnUIThread(
CreationCallback callback) {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
std::unique_ptr<CertificateManagerModel> model(
auto model = base::WrapUnique(
new CertificateManagerModel(cert_db, is_user_db_available));
std::move(callback).Run(std::move(model));
}

View File

@@ -5,7 +5,6 @@
#ifndef CHROME_BROWSER_CERTIFICATE_MANAGER_MODEL_H_
#define CHROME_BROWSER_CERTIFICATE_MANAGER_MODEL_H_
#include <map>
#include <memory>
#include <string>

View File

@@ -9,9 +9,6 @@
#include <windows.h>
#endif // defined(OS_WIN)
#include <set>
#include <vector>
#include "base/callback.h"
#include "base/command_line.h"
#include "base/files/file_path.h"

View File

@@ -878,7 +878,7 @@ ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessOrCreate() {
}
void ProcessSingleton::StartListeningOnSocket() {
watcher_ = new LinuxWatcher(this);
watcher_ = base::MakeRefCounted<LinuxWatcher>(this);
base::PostTask(FROM_HERE, {BrowserThread::IO},
base::BindOnce(&ProcessSingleton::LinuxWatcher::StartListening,
watcher_, sock_));

View File

@@ -4,6 +4,7 @@
#include "chrome/browser/process_singleton.h"
#include <windows.h>
#include <shellapi.h>
#include "base/base_paths.h"

View File

@@ -161,6 +161,8 @@ Returns:
[`NSUserActivity.activityType`][activity-type].
* `userInfo` unknown - Contains app-specific state stored by the activity on
another device.
* `details` Object
* `webpageURL` String (optional) - A string identifying the URL of the webpage accessed by the activity on another device, if available.
Emitted during [Handoff][handoff] when an activity from a different device wants
to be resumed. You should call `event.preventDefault()` if you want to handle
@@ -698,7 +700,7 @@ Overrides the current application's name.
Returns `String` - The current application locale, fetched using Chromium's `l10n_util` library.
Possible return values are documented [here](https://source.chromium.org/chromium/chromium/src/+/master:ui/base/l10n/l10n_util.cc).
To set the locale, you'll want to use a command line switch at app startup, which may be found [here](https://github.com/electron/electron/blob/master/docs/api/command-line-switches.md).
To set the locale, you'll want to use a command line switch at app startup, which may be found [here](command-line-switches.md).
**Note:** When distributing your packaged app, you have to also ship the
`locales` folder.
@@ -1427,7 +1429,7 @@ This is the user agent that will be used when no user agent is set at the
app has the same user agent. Set to a custom value as early as possible
in your app's initialization to ensure that your overridden value is used.
### `app.runningUnderRosettaTranslation` _macOS_ _Readonly_
### `app.runningUnderRosettaTranslation` _macOS_ _Readonly_ _Deprecated_
A `Boolean` which when `true` indicates that the app is currently running
under the [Rosetta Translator Environment](https://en.wikipedia.org/wiki/Rosetta_(software)).
@@ -1435,3 +1437,18 @@ under the [Rosetta Translator Environment](https://en.wikipedia.org/wiki/Rosetta
You can use this property to prompt users to download the arm64 version of
your application when they are running the x64 version under Rosetta
incorrectly.
**Deprecated:** This property is superceded by the `runningUnderARM64Translation`
property which detects when the app is being translated to ARM64 in both macOS
and Windows.
### `app.runningUnderARM64Translation` _Readonly_ _macOS_ _Windows_
A `Boolean` which when `true` indicates that the app is currently running under
an ARM64 translator (like the macOS
[Rosetta Translator Environment](https://en.wikipedia.org/wiki/Rosetta_(software))
or Windows [WOW](https://en.wikipedia.org/wiki/Windows_on_Windows)).
You can use this property to prompt users to download the arm64 version of
your application when they are running the x64 version under Rosetta
incorrectly.

View File

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

View File

@@ -294,6 +294,7 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
* `allowRunningInsecureContent` Boolean (optional) - Allow an https page to run
JavaScript, CSS or plugins from http URLs. Default is `false`.
* `images` Boolean (optional) - Enables image support. Default is `true`.
* `imageAnimationPolicy` String (optional) - Specifies how to run image animations (E.g. GIFs). Can be `animate`, `animateOnce` or `noAnimation`. Default is `animate`.
* `textAreasAreResizable` Boolean (optional) - Make TextArea elements resizable. Default
is `true`.
* `webgl` Boolean (optional) - Enables WebGL support. Default is `true`.
@@ -342,9 +343,8 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
context in the dev tools by selecting the 'Electron Isolated Context'
entry in the combo box at the top of the Console tab.
* `nativeWindowOpen` Boolean (optional) - Whether to use native
`window.open()`. Defaults to `false`. Child windows will always have node
integration disabled unless `nodeIntegrationInSubFrames` is true. **Note:** The default
value will be changing to `true` in Electron 15.
`window.open()`. Defaults to `true`. Child windows will always have node
integration disabled unless `nodeIntegrationInSubFrames` is true.
* `webviewTag` Boolean (optional) - Whether to enable the [`<webview>` tag](webview-tag.md).
Defaults to `false`. **Note:** The
`preload` script configured for the `<webview>` will have node integration
@@ -392,6 +392,10 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
contain the layout of the document—without requiring scrolling. Enabling
this will cause the `preferred-size-changed` event to be emitted on the
`WebContents` when the preferred size changes. Default is `false`.
* `titleBarOverlay` Boolean (optional) - On macOS, when using a frameless window in conjunction with
`win.setWindowButtonVisibility(true)` or using a `titleBarStyle` so that the traffic lights are visible,
this property enables the Window Controls Overlay [JavaScript APIs][overlay-javascript-apis] and
[CSS Environment Variables][overlay-css-env-vars]. Default is `false`.
When setting minimum or maximum window size with `minWidth`/`maxWidth`/
`minHeight`/`maxHeight`, it only constrains the users. It won't prevent you from
@@ -524,11 +528,20 @@ Returns:
* `event` Event
* `newBounds` [Rectangle](structures/rectangle.md) - Size the window is being resized to.
* `details` Object
* `edge` (String) - The edge of the window being dragged for resizing. Can be `bottom`, `left`, `right`, `top-left`, `top-right`, `bottom-left` or `bottom-right`.
Emitted before the window is resized. Calling `event.preventDefault()` will prevent the window from being resized.
Note that this is only emitted when the window is being resized manually. Resizing the window with `setBounds`/`setSize` will not emit this event.
The possible values and behaviors of the `edge` option are platform dependent. Possible values are:
* On Windows, possible values are `bottom`, `top`, `left`, `right`, `top-left`, `top-right`, `bottom-left`, `bottom-right`.
* On macOS, possible values are `bottom` and `right`.
* The value `bottom` is used to denote vertical resizing.
* The value `right` is used to denote horizontal resizing.
#### Event: 'resize'
Emitted after the window has been resized.
@@ -1806,3 +1819,5 @@ removed in future Electron releases.
[window-levels]: https://developer.apple.com/documentation/appkit/nswindow/level
[chrome-content-scripts]: https://developer.chrome.com/extensions/content_scripts#execution-environment
[event-emitter]: https://nodejs.org/api/events.html#events_class_eventemitter
[overlay-javascript-apis]: https://github.com/WICG/window-controls-overlay/blob/main/explainer.md#javascript-apis
[overlay-css-env-vars]: https://github.com/WICG/window-controls-overlay/blob/main/explainer.md#css-environment-variables

View File

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

View File

@@ -199,7 +199,7 @@ const { clipboard } = require('electron')
const hasFormat = clipboard.has('<p>selection</p>')
console.log(hasFormat)
// 'true' or 'false
// 'true' or 'false'
```
### `clipboard.read(format)` _Experimental_
@@ -208,6 +208,10 @@ console.log(hasFormat)
Returns `String` - Reads `format` type from the clipboard.
`format` should contain valid ASCII characters and have `/` separator.
`a/c`, `a/bc` are valid formats while `/abc`, `abc/`, `a/`, `/a`, `a`
are not valid.
### `clipboard.readBuffer(format)` _Experimental_
* `format` String
@@ -218,9 +222,9 @@ Returns `Buffer` - Reads `format` type from the clipboard.
const { clipboard } = require('electron')
const buffer = Buffer.from('this is binary', 'utf8')
clipboard.writeBuffer('public.utf8-plain-text', buffer)
clipboard.writeBuffer('public/utf8-plain-text', buffer)
const ret = clipboard.readBuffer('public.utf8-plain-text')
const ret = clipboard.readBuffer('public/utf8-plain-text')
console.log(buffer.equals(out))
// true
@@ -238,7 +242,7 @@ Writes the `buffer` into the clipboard as `format`.
const { clipboard } = require('electron')
const buffer = Buffer.from('writeBuffer', 'utf8')
clipboard.writeBuffer('public.utf8-plain-text', buffer)
clipboard.writeBuffer('public/utf8-plain-text', buffer)
```
### `clipboard.write(data[, type])`

View File

@@ -2,7 +2,8 @@
> Manipulate the command line arguments for your app that Chromium reads
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
The following example shows how to check if the `--disable-gpu` flag is set.

View File

@@ -107,6 +107,7 @@ has been included below for completeness:
| `Function` | Complex | ✅ | ✅ | Prototype modifications are dropped. Sending classes or constructors will not work. |
| [Cloneable Types](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm) | Simple | ✅ | ✅ | See the linked document on cloneable types |
| `Element` | Complex | ✅ | ✅ | Prototype modifications are dropped. Sending custom elements will not work. |
| `Blob` | Complex | ✅ | ✅ | N/A |
| `Symbol` | N/A | ❌ | ❌ | Symbols cannot be copied across contexts so they are dropped |
If the type you care about is not in the above table, it is probably not supported.

View File

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

View File

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

View File

@@ -273,6 +273,11 @@ If `browserWindow` is not shown dialog will not be attached to it. In such case
will result in one button labeled "OK".
* `defaultId` Integer (optional) - Index of the button in the buttons array which will
be selected by default when the message box opens.
* `signal` AbortSignal (optional) - Pass an instance of [AbortSignal][] to
optionally close the message box, the message box will behave as if it was
cancelled by the user. On macOS, `signal` does not work with message boxes
that do not have a parent window, since those message boxes run
synchronously due to platform limitations.
* `title` String (optional) - Title of the message box, some platforms will not show it.
* `detail` String (optional) - Extra information of the message.
* `checkboxLabel` String (optional) - If provided, the message box will
@@ -360,3 +365,5 @@ window is provided.
You can call `BrowserWindow.getCurrentWindow().setSheetOffset(offset)` to change
the offset from the window frame where sheets are attached.
[AbortSignal]: https://nodejs.org/api/globals.html#globals_class_abortsignal

View File

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

View File

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

View File

@@ -78,6 +78,7 @@ The following methods of `chrome.runtime` are supported:
- `chrome.runtime.getURL`
- `chrome.runtime.connect`
- `chrome.runtime.sendMessage`
- `chrome.runtime.reload`
The following events of `chrome.runtime` are supported:

View File

@@ -61,6 +61,21 @@ const win = new BrowserWindow({ titleBarStyle: 'customButtonsOnHover', frame: fa
win.show()
```
## Windows Control Overlay
On macOS, when using a frameless window in conjuction with `win.setWindowButtonVisibility(true)` or using one of the `titleBarStyle`s described above so
that the traffic lights are visible, you can access the Window Controls Overlay [JavaScript APIs][overlay-javascript-apis] and
[CSS Environment Variables][overlay-css-env-vars] by setting the `titleBarOverlay` option to true:
```javascript
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({
titleBarStyle: 'hiddenInset',
titleBarOverlay: true
})
win.show()
```
## Transparent window
By setting the `transparent` option to `true`, you can also make the frameless
@@ -186,3 +201,5 @@ behave correctly on all platforms you should never use a custom context menu on
draggable areas.
[ignore-mouse-events]: browser-window.md#winsetignoremouseeventsignore-options
[overlay-javascript-apis]: https://github.com/WICG/window-controls-overlay/blob/main/explainer.md#javascript-apis
[overlay-css-env-vars]: https://github.com/WICG/window-controls-overlay/blob/main/explainer.md#css-environment-variables

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -54,7 +54,8 @@ A `Session` object, the default session object of the app.
> Get and set properties of a session.
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
You can create a `Session` object in the `session` module:
@@ -179,7 +180,7 @@ Emitted when a hunspell dictionary file download fails. For details
on the failure you should collect a netlog and inspect the download
request.
#### Event: 'select-serial-port' _Experimental_
#### Event: 'select-serial-port'
Returns:
@@ -196,14 +197,10 @@ cancel the request. Additionally, permissioning on `navigator.serial` can
be managed by using [ses.setPermissionCheckHandler(handler)](#sessetpermissioncheckhandlerhandler)
with the `serial` permission.
Because this is an experimental feature it is disabled by default. To enable this feature, you
will need to use the `--enable-features=ElectronSerialChooser` command line switch.
```javascript
const { app, BrowserWindow } = require('electron')
let win = null
app.commandLine.appendSwitch('enable-features', 'ElectronSerialChooser')
app.whenReady().then(() => {
win = new BrowserWindow({
@@ -224,7 +221,7 @@ app.whenReady().then(() => {
})
```
#### Event: 'serial-port-added' _Experimental_
#### Event: 'serial-port-added'
Returns:
@@ -234,7 +231,7 @@ Returns:
Emitted after `navigator.serial.requestPort` has been called and `select-serial-port` has fired if a new serial port becomes available. For example, this event will fire when a new USB device is plugged in.
#### Event: 'serial-port-removed' _Experimental_
#### Event: 'serial-port-removed'
Returns:

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -49,7 +49,8 @@ Returns `WebContents` | undefined - A WebContents instance with the given ID, or
> Render and control the contents of a BrowserWindow instance.
Process: [Main](../glossary.md#main-process)
Process: [Main](../glossary.md#main-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
### Instance Events
@@ -448,6 +449,8 @@ Returns:
* `control` Boolean - Equivalent to [KeyboardEvent.controlKey][keyboardevent].
* `alt` Boolean - Equivalent to [KeyboardEvent.altKey][keyboardevent].
* `meta` Boolean - Equivalent to [KeyboardEvent.metaKey][keyboardevent].
* `location` Number - Equivalent to [KeyboardEvent.location][keyboardevent].
* `modifiers` String[] - See [InputEvent.modifiers](structures/input-event.md).
Emitted before dispatching the `keydown` and `keyup` events in the page.
Calling `event.preventDefault` will prevent the page `keydown`/`keyup` events
@@ -1923,6 +1926,20 @@ when the page becomes backgrounded. This also affects the Page Visibility API.
Returns `String` - the type of the webContent. Can be `backgroundPage`, `window`, `browserView`, `remote`, `webview` or `offscreen`.
#### `contents.setImageAnimationPolicy(policy)`
* `policy` String - Can be `animate`, `animateOnce` or `noAnimation`.
Sets the image animation policy for this webContents. The policy only affects
_new_ images, existing images that are currently being animated are unaffected.
This is a known limitation in Chromium, you can force image animation to be
recalculated with `img.src = img.src` which will result in no network traffic
but will update the animation policy.
This corresponds to the [animationPolicy][] accessibility feature in Chromium.
[animationPolicy]: https://developer.chrome.com/docs/extensions/reference/accessibilityFeatures/#property-animationPolicy
### Instance Properties
#### `contents.audioMuted`

View File

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

View File

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

View File

@@ -18,7 +18,8 @@ more information see the [BrowserWindow constructor docs](browser-window.md).
> Display external web content in an isolated frame and process.
Process: [Renderer](../glossary.md#renderer-process)
Process: [Renderer](../glossary.md#renderer-process)<br />
_This class is not exported from the `'electron'` module. It is only available as a return value of other methods in the Electron API._
Use the `webview` tag to embed 'guest' content (such as web pages) in your
Electron app. The guest content is contained within the `webview` container.
@@ -709,6 +710,10 @@ Corresponds to the points in time when the spinner of the tab starts spinning.
Corresponds to the points in time when the spinner of the tab stops spinning.
### Event: 'did-attach'
Fired when attached to the embedder web contents.
### Event: 'dom-ready'
Fired when document in the given frame is loaded.
@@ -829,6 +834,19 @@ this purpose.
Calling `event.preventDefault()` does __NOT__ have any effect.
### Event: 'did-start-navigation'
Returns:
* `url` String
* `isInPlace` Boolean
* `isMainFrame` Boolean
* `frameProcessId` Integer
* `frameRoutingId` Integer
Emitted when any frame (including main) starts navigating. `isInPlace` will be
`true` for in-page navigations.
### Event: 'did-navigate'
Returns:
@@ -841,6 +859,23 @@ This event is not emitted for in-page navigations, such as clicking anchor links
or updating the `window.location.hash`. Use `did-navigate-in-page` event for
this purpose.
### Event: 'did-frame-navigate'
Returns:
* `url` String
* `httpResponseCode` Integer - -1 for non HTTP navigations
* `httpStatusText` String - empty for non HTTP navigations,
* `isMainFrame` Boolean
* `frameProcessId` Integer
* `frameRoutingId` Integer
Emitted when any frame navigation is done.
This event is not emitted for in-page navigations, such as clicking anchor links
or updating the `window.location.hash`. Use `did-navigate-in-page` event for
this purpose.
### Event: 'did-navigate-in-page'
Returns:

View File

@@ -6,16 +6,15 @@ untrusted content within a renderer. Windows can be created from the renderer in
* clicking on links or submitting forms adorned with `target=_blank`
* JavaScript calling `window.open()`
In non-sandboxed renderers, or when `nativeWindowOpen` is false (the default), this results in the creation of a
[`BrowserWindowProxy`](browser-window-proxy.md), a light wrapper around
`BrowserWindow`.
For same-origin content, the new window is created within the same process,
enabling the parent to access the child window directly. This can be very
useful for app sub-windows that act as preference panels, or similar, as the
parent can render to the sub-window directly, as if it were a `div` in the
parent. This is the same behavior as in the browser.
However, when the `sandbox` (or directly, `nativeWindowOpen`) option is set, a
`Window` instance is created, as you'd expect in the browser. For same-origin
content, the new window is created within the same process, enabling the parent
to access the child window directly. This can be very useful for app sub-windows that act
as preference panels, or similar, as the parent can render to the sub-window
directly, as if it were a `div` in the parent.
When `nativeWindowOpen` is set to false, `window.open` instead results in the
creation of a [`BrowserWindowProxy`](browser-window-proxy.md), a light wrapper
around `BrowserWindow`.
Electron pairs this native Chrome `Window` with a BrowserWindow under the hood.
You can take advantage of all the customization available when creating a
@@ -68,49 +67,18 @@ window.open('https://github.com', '_blank', 'top=500,left=200,frame=false,nodeIn
To customize or cancel the creation of the window, you can optionally set an
override handler with `webContents.setWindowOpenHandler()` from the main
process. Returning `false` cancels the window, while returning an object sets
the `BrowserWindowConstructorOptions` used when creating the window. Note that
this is more powerful than passing options through the feature string, as the
renderer has more limited privileges in deciding security preferences than the
main process.
### `BrowserWindowProxy` example
```javascript
// main.js
const mainWindow = new BrowserWindow()
mainWindow.webContents.setWindowOpenHandler(({ url }) => {
if (url.startsWith('https://github.com/')) {
return { action: 'allow' }
}
return { action: 'deny' }
})
mainWindow.webContents.on('did-create-window', (childWindow) => {
// For example...
childWindow.webContents.on('will-navigate', (e) => {
e.preventDefault()
})
})
```
```javascript
// renderer.js
const windowProxy = window.open('https://github.com/', null, 'minimizable=false')
windowProxy.postMessage('hi', '*')
```
process. Returning `{ action: 'deny' }` cancels the window. Returning `{
action: 'allow', overrideBrowserWindowOptions: { ... } }` will allow opening
the window and setting the `BrowserWindowConstructorOptions` to be used when
creating the window. Note that this is more powerful than passing options
through the feature string, as the renderer has more limited privileges in
deciding security preferences than the main process.
### Native `Window` example
```javascript
// main.js
const mainWindow = new BrowserWindow({
webPreferences: {
nativeWindowOpen: true
}
})
const mainWindow = new BrowserWindow()
// In this example, only windows with the `about:blank` url will be created.
// All other urls will be blocked.
@@ -137,3 +105,33 @@ mainWindow.webContents.setWindowOpenHandler(({ url }) => {
const childWindow = window.open('', 'modal')
childWindow.document.write('<h1>Hello</h1>')
```
### `BrowserWindowProxy` example
```javascript
// main.js
const mainWindow = new BrowserWindow({
webPreferences: { nativeWindowOpen: false }
})
mainWindow.webContents.setWindowOpenHandler(({ url }) => {
if (url.startsWith('https://github.com/')) {
return { action: 'allow' }
}
return { action: 'deny' }
})
mainWindow.webContents.on('did-create-window', (childWindow) => {
// For example...
childWindow.webContents.on('will-navigate', (e) => {
e.preventDefault()
})
})
```
```javascript
// renderer.js
const windowProxy = window.open('https://github.com/', null, 'minimizable=false')
windowProxy.postMessage('hi', '*')
```

View File

@@ -12,18 +12,6 @@ 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 (15.0)
### Default Changed: `nativeWindowOpen` defaults to `true`
Prior to Electron 15, `window.open` was by default shimmed to use
`BrowserWindowProxy`. This meant that `window.open('about:blank')` did not work
to open synchronously scriptable child windows, among other incompatibilities.
`nativeWindowOpen: true` is no longer experimental, and is now the default.
See the documentation for [window.open in Electron](api/window-open.md)
for more details.
## Planned Breaking API Changes (14.0)
### Removed: `app.allowRendererProcessReuse`
@@ -45,7 +33,7 @@ For more detailed information see [#18397](https://github.com/electron/electron/
The optional parameter `frameName` will no longer set the title of the window. This now follows the specification described by the [native documentation](https://developer.mozilla.org/en-US/docs/Web/API/Window/open#parameters) under the corresponding parameter `windowName`.
If you were using this parameter to set the title of a window, you can instead use [win.setTitle(title)](https://www.electronjs.org/docs/api/browser-window#winsettitletitle).
If you were using this parameter to set the title of a window, you can instead use [win.setTitle(title)](api/browser-window.md#winsettitletitle).
### Removed: `worldSafeExecuteJavaScript`
@@ -55,6 +43,16 @@ ensure your code works with this property enabled. It has been enabled by defau
You will be affected by this change if you use either `webFrame.executeJavaScript` or `webFrame.executeJavaScriptInIsolatedWorld`. You will need to ensure that values returned by either of those methods are supported by the [Context Bridge API](api/context-bridge.md#parameter--error--return-type-support) as these methods use the same value passing semantics.
### Default Changed: `nativeWindowOpen` defaults to `true`
Prior to Electron 14, `window.open` was by default shimmed to use
`BrowserWindowProxy`. This meant that `window.open('about:blank')` did not work
to open synchronously scriptable child windows, among other incompatibilities.
`nativeWindowOpen` is no longer experimental, and is now the default.
See the documentation for [window.open in Electron](api/window-open.md)
for more details.
### Removed: BrowserWindowConstructorOptions inheriting from parent windows
Prior to Electron 14, windows opened with `window.open` would inherit
@@ -248,7 +246,7 @@ value.
In Electron 12, `contextIsolation` will be enabled by default. To restore
the previous behavior, `contextIsolation: false` must be specified in WebPreferences.
We [recommend having contextIsolation enabled](https://github.com/electron/electron/blob/master/docs/tutorial/security.md#3-enable-context-isolation-for-remote-content) for the security of your application.
We [recommend having contextIsolation enabled](tutorial/security.md#3-enable-context-isolation-for-remote-content) for the security of your application.
Another implication is that `require()` cannot be used in the renderer process unless
`nodeIntegration` is `true` and `contextIsolation` is `false`.
@@ -811,7 +809,7 @@ In Electron 7, this now returns a `FileList` with a `File` object for:
Note that `webkitdirectory` no longer exposes the path to the selected folder.
If you require the path to the selected folder rather than the folder contents,
see the `dialog.showOpenDialog` API ([link](https://github.com/electron/electron/blob/master/docs/api/dialog.md#dialogshowopendialogbrowserwindow-options)).
see the `dialog.showOpenDialog` API ([link](api/dialog.md#dialogshowopendialogbrowserwindow-options)).
### API Changed: Callback-based versions of promisified APIs

View File

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

View File

@@ -1,92 +1,81 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Hello World!</title>
</head>
<head>
<meta charset="UTF-8">
<!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
<meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self'">
<title>app.setAsDefaultProtocol Demo</title>
</head>
<body>
<section>
<header>
<h1>
Protocol Handler
</h1>
<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>
<h1>App Default Protocol Demo</h1>
<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>
<p>The protocol API allows us to register a custom protocol and intercept existing protocol requests.</p>
<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>
<div >
<button id="open-in-browser" class="js-container-target demo-toggle-button">Launch current page in browser
<div class="demo-meta u-avoid-clicks">Supports: Win, macOS <span class="demo-meta-divider">|</span> Process: Main</div>
</button>
<section id='open-app-link'>
<a href="electron-api-demos://open">Now... launch the app from a web link</a>
</section>
<div >
<p>You can set your app as the default app to open for a specific protocol. For instance, in this demo we set this app as the default for <code>electron-api-demos://</code>. The demo button above will launch a page in your default browser with a link. Click that link and it will re-launch this app.</p>
<h5>Packaging</h5>
<p>This feature will only work on macOS when your app is packaged. It will not work when you're launching it in development from the command-line. When you package your app you'll need to make sure the macOS <code>plist</code> for the app is updated to include the new protocol handler. If you're using <code>electron-packager</code> then you can add the flag <code>--extend-info</code> with a path to the <code>plist</code> you've created. The one for this app is below.</p>
<h5>Renderer Process</h5>
<pre><code>
const {shell} = require('electron')
const path = require('path')
const protocolHandlerBtn = document.getElementById('protocol-handler')
protocolHandlerBtn.addEventListener('click', () => {
const pageDirectory = __dirname.replace('app.asar', 'app.asar.unpacked')
const pagePath = path.join('file://', pageDirectory, '../../sections/system/protocol-link.html')
shell.openExternal(pagePath)
})
</code></pre>
<h5>Main Process</h5>
<pre><code>
const {app, dialog} = require('electron')
const path = require('path')
<p>Open the <a href="https://www.electronjs.org/docs/api/protocol">full protocol API documentation</a> in your
browser.</p>
if (process.defaultApp) {
if (process.argv.length >= 2) {
app.setAsDefaultProtocolClient('electron-api-demos', process.execPath, [path.resolve(process.argv[1])])
}
} else {
app.setAsDefaultProtocolClient('electron-api-demos')
}
-----
app.on('open-url', (event, url) => {
dialog.showErrorBox('Welcome Back', `You arrived from: ${url}`)
})
<h3>Demo</h3>
<p>
First: Launch current page in browser
<button id="open-in-browser" class="js-container-target demo-toggle-button">
Click to Launch Browser
</button>
</p>
</code></pre>
<h5>macOS plist</h5>
<pre><code>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>electron-api-demos</string>
</array>
<key>CFBundleURLName</key>
<string>Electron API Demos Protocol</string>
</dict>
</array>
<key>ElectronTeamID</key>
<string>VEKTX9H2N7</string>
</dict>
</plist>
</code>
</pre>
</div>
</div>
<script type="text/javascript">
require('./renderer.js')
</script>
</section>
<p>
Then: Launch the app from a web link!
<a href="electron-fiddle://open">Click here to launch the app</a>
</p>
----
<p>You can set your app as the default app to open for a specific protocol. For instance, in this demo we set this app
as the default for <code>electron-fiddle://</code>. The demo button above will launch a page in your default
browser with a link. Click that link and it will re-launch this app.</p>
<h3>Packaging</h3>
<p>This feature will only work on macOS when your app is packaged. It will not work when you're launching it in
development from the command-line. When you package your app you'll need to make sure the macOS <code>plist</code>
for the app is updated to include the new protocol handler. If you're using <code>electron-packager</code> then you
can add the flag <code>--extend-info</code> with a path to the <code>plist</code> you've created. The one for this
app is below:</p>
<p>
<h5>macOS plist</h5>
<pre><code>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"&gt;
&lt;plist version="1.0"&gt;
&lt;dict&gt;
&lt;key&gt;CFBundleURLTypes&lt;/key&gt;
&lt;array&gt;
&lt;dict&gt;
&lt;key&gt;CFBundleURLSchemes&lt;/key&gt;
&lt;array&gt;
&lt;string&gt;electron-api-demos&lt;/string&gt;
&lt;/array&gt;
&lt;key&gt;CFBundleURLName&lt;/key&gt;
&lt;string&gt;Electron API Demos Protocol&lt;/string&gt;
&lt;/dict&gt;
&lt;/array&gt;
&lt;key&gt;ElectronTeamID&lt;/key&gt;
&lt;string&gt;VEKTX9H2N7&lt;/string&gt;
&lt;/dict&gt;
&lt;/plist&gt;
</code>
</pre>
<p>
<!-- You can also require other files to run in this process -->
<script src="./renderer.js"></script>
</body>
</html>
</body>
</html>
</html>

View File

@@ -1,10 +1,39 @@
// Modules to control application life and create native browser window
const { app, BrowserWindow, dialog } = require('electron')
const { app, BrowserWindow, ipcMain, shell } = require('electron')
const path = require('path')
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let mainWindow
let mainWindow;
if (process.defaultApp) {
if (process.argv.length >= 2) {
app.setAsDefaultProtocolClient('electron-fiddle', process.execPath, [path.resolve(process.argv[1])])
}
} else {
app.setAsDefaultProtocolClient('electron-fiddle')
}
const gotTheLock = app.requestSingleInstanceLock()
if (!gotTheLock) {
app.quit()
} else {
app.on('second-instance', (event, commandLine, workingDirectory) => {
// Someone tried to run a second instance, we should focus our window.
if (mainWindow) {
if (mainWindow.isMinimized()) mainWindow.restore()
mainWindow.focus()
}
})
// Create mainWindow, load the rest of the app, etc...
app.whenReady().then(() => {
createWindow()
})
app.on('open-url', (event, url) => {
dialog.showErrorBox('Welcome Back', `You arrived from: ${url}`)
})
}
function createWindow () {
// Create the browser window.
@@ -12,58 +41,23 @@ function createWindow () {
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
preload: path.join(__dirname, 'preload.js'),
}
})
// and load the index.html of the app.
mainWindow.loadFile('index.html')
// Open the DevTools.
mainWindow.webContents.openDevTools()
// Emitted when the window is closed.
mainWindow.on('closed', function () {
// Dereference the window object, usually you would store windows
// in an array if your app supports multi windows, this is the time
// when you should delete the corresponding element.
mainWindow = null
})
}
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.whenReady().then(createWindow)
// Quit when all windows are closed.
// Quit when all windows are closed, except on macOS. There, it's common
// for applications and their menu bar to stay active until the user quits
// explicitly with Cmd + Q.
app.on('window-all-closed', function () {
// On macOS it is common for applications and their menu bar
// to stay active until the user quits explicitly with Cmd + Q
if (process.platform !== 'darwin') {
app.quit()
}
if (process.platform !== 'darwin') app.quit()
})
app.on('activate', function () {
// On macOS it is common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open.
if (mainWindow === null) {
createWindow()
}
})
// In this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and require them here.
if (process.defaultApp) {
if (process.argv.length >= 2) {
app.setAsDefaultProtocolClient('electron-api-demos', process.execPath, [path.resolve(process.argv[1])])
}
} else {
app.setAsDefaultProtocolClient('electron-api-demos')
}
app.on('open-url', (event, url) => {
dialog.showErrorBox('Welcome Back', `You arrived from: ${url}`)
// Handle window controls via IPC
ipcMain.on('shell:open', () => {
const pageDirectory = __dirname.replace('app.asar', 'app.asar.unpacked')
const pagePath = path.join('file://', pageDirectory, 'index.html')
shell.openExternal(pagePath)
})

View File

@@ -0,0 +1,11 @@
// All of the Node.js APIs are available in the preload process.
// It has the same sandbox as a Chrome extension.
const { contextBridge, ipcRenderer } = require('electron')
// Set up context bridge between the renderer process and the main process
contextBridge.exposeInMainWorld(
'shell',
{
open: () => ipcRenderer.send('shell:open'),
}
)

View File

@@ -1,14 +1,8 @@
const { shell } = require('electron')
const path = require('path')
// This file is required by the index.html file and will
// be executed in the renderer process for that window.
// All APIs exposed by the context bridge are available here.
const openInBrowserButton = document.getElementById('open-in-browser')
const openAppLink = document.getElementById('open-app-link')
// Hides openAppLink when loaded inside Electron
openAppLink.style.display = 'none'
openInBrowserButton.addEventListener('click', () => {
console.log('clicked')
const pageDirectory = __dirname.replace('app.asar', 'app.asar.unpacked')
const pagePath = path.join('file://', pageDirectory, 'index.html')
shell.openExternal(pagePath)
})
// Binds the buttons to the context bridge API.
document.getElementById('open-in-browser').addEventListener('click', () => {
shell.open();
});

View File

@@ -133,7 +133,7 @@ are likely using [`electron-packager`], which includes [`electron-osx-sign`] and
If you're using Packager's API, you can pass [in configuration that both signs
and notarizes your
application](https://electron.github.io/electron-packager/master/interfaces/electronpackager.options.html).
application](https://electron.github.io/electron-packager/main/interfaces/electronpackager.options.html).
```js
const packager = require('electron-packager')

View File

@@ -80,9 +80,9 @@ Starting with the `index.html` file:
</html>
```
And the `style.css` file:
And the `styles.css` file:
```css title='style.css'
```css title='styles.css'
@media (prefers-color-scheme: dark) {
body { background: #333; color: white; }
}
@@ -200,6 +200,6 @@ Run the example using Electron Fiddle and then click the "Toggle Dark Mode" butt
[system-wide-dark-mode]: https://developer.apple.com/design/human-interface-guidelines/macos/visual-design/dark-mode/
[electron-forge]: https://www.electronforge.io/
[electron-packager]: https://github.com/electron/electron-packager
[packager-darwindarkmode-api]: https://electron.github.io/electron-packager/master/interfaces/electronpackager.options.html#darwindarkmodesupport
[packager-darwindarkmode-api]: https://electron.github.io/electron-packager/main/interfaces/electronpackager.options.html#darwindarkmodesupport
[prefers-color-scheme]: https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme
[event-listeners]: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener

View File

@@ -45,7 +45,7 @@ Here is a pre-configured project that you can download and directly debug in VSC
If you want to build Electron from source and modify the native Electron codebase, this section will help you in testing your modifications.
For those unsure where to acquire this code or how to build it, [Electron's Build Tools](https://github.com/electron/build-tools) automates and explains most of this process. If you wish to manually set up the environment, you can instead use these [build instructions](https://www.electronjs.org/docs/development/build-instructions-gn).
For those unsure where to acquire this code or how to build it, [Electron's Build Tools](https://github.com/electron/build-tools) automates and explains most of this process. If you wish to manually set up the environment, you can instead use these [build instructions](../development/build-instructions-gn.md).
### Windows (C++)
@@ -89,7 +89,7 @@ $ code electron-quick-start
* `cppvsdbg` requires the [built-in C/C++ extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.cpptools) be enabled.
* `${workspaceFolder}` is the full path to Chromium's `src` directory.
* `your-executable-location` will be one of the following depending on a few items:
* `Testing`: If you are using the default settings of [Electron's Build-Tools](https://github.com/electron/build-tools) or the default instructions when [building from source](https://www.electronjs.org/docs/development/build-instructions-gn#building).
* `Testing`: If you are using the default settings of [Electron's Build-Tools](https://github.com/electron/build-tools) or the default instructions when [building from source](../development/build-instructions-gn.md#building).
* `Release`: If you built a Release build rather than a Testing build.
* `your-directory-name`: If you modified this during your build process from the default, this will be whatever you specified.
* The `args` array string `"your-electron-project-path"` should be the absolute path to either the directory or `main.js` file of the Electron project you are using for testing. In this example, it should be your path to `electron-quick-start`.

View File

@@ -1,23 +1,27 @@
# Electron Release Timelines
Special notes:
* The `-beta.1` and `stable` dates are our solid release dates.
* We strive for weekly beta releases, however we often release more betas than scheduled.
* All dates are our goals but there may be reasons for adjusting the stable deadline, such as security bugs.
* Take a look at the [5.0.0 Timeline blog post](https://electronjs.org/blog/electron-5-0-timeline) for info about publicizing our release dates.
* Since Electron 6.0, we've been targeting every other Chromium version and releasing our stable on the same day as Chrome stable. You can reference Chromium's release schedule [here](https://chromiumdash.appspot.com/schedule). See [Electron's new release cadence blog post](https://www.electronjs.org/blog/12-week-cadence) for more details on our release schedule.
* Electron 15.0 only will include a special Alpha release. Starting in Electron 16.0, we will release on an 8-week cadence. See [Electron's new 8-week cadence blog post](https://www.electronjs.org/blog/8-week-cadence) for more details.
| Version | -beta.1 | Stable | Chrome | Node |
| ------- | ------- | ------ | ------ | ---- |
| 2.0.0 | 2018-02-21 | 2018-05-01 | M61 | v8.9 |
| 3.0.0 | 2018-06-21 | 2018-09-18 | M66 | v10.2 |
| 4.0.0 | 2018-10-11 | 2018-12-20 | M69 | v10.11 |
| 5.0.0 | 2019-01-22 | 2019-04-24 | M73 | v12.0 |
| 6.0.0 | 2019-05-01 | 2019-07-30 | M76 | v12.4 |
| 7.0.0 | 2019-08-01 | 2019-10-22 | M78 | v12.8 |
| 8.0.0 | 2019-10-24 | 2020-02-04 | M80 | v12.13 |
| 9.0.0 | 2020-02-06 | 2020-05-19 | M83 | v12.14 |
| 10.0.0 | 2020-05-21 | 2020-08-25 | M85 | v12.16 |
| 11.0.0 | 2020-08-27 | 2020-11-17 | M87 | v12.18 |
| 12.0.0 | 2020-11-19 | 2021-03-02 | M89 | v14.16 |
| 13.0.0 | 2021-03-04 | 2021-05-25 | M91 | v14.16 |
| 14.0.0 | 2021-05-27 | 2021-08-31 | M93 | TBD |
| Electron | Alpha | Beta | Stable | Chrome | Node |
| ------- | ----- | ------- | ------ | ------ | ---- |
| 2.0.0 | -- | 2018-Feb-21 | 2018-May-01 | M61 | v8.9 |
| 3.0.0 | -- | 2018-Jun-21 | 2018-Sep-18 | M66 | v10.2 |
| 4.0.0 | -- | 2018-Oct-11 | 2018-Dec-20 | M69 | v10.11 |
| 5.0.0 | -- | 2019-Jan-22 | 2019-Apr-24 | M73 | v12.0 |
| 6.0.0 | -- | 2019-May-01 | 2019-Jul-30 | M76 | v12.4 |
| 7.0.0 | -- | 2019-Aug-01 | 2019-Oct-22 | M78 | v12.8 |
| 8.0.0 | -- | 2019-Oct-24 | 2020-Feb-04 | M80 | v12.13 |
| 9.0.0 | -- | 2020-Feb-06 | 2020-May-19 | M83 | v12.14 |
| 10.0.0 | -- | 2020-May-21 | 2020-Aug-25 | M85 | v12.16 |
| 11.0.0 | -- | 2020-Aug-27 | 2020-Nov-17 | M87 | v12.18 |
| 12.0.0 | -- | 2020-Nov-19 | 2021-Mar-02 | M89 | v14.16 |
| 13.0.0 | -- | 2021-Mar-04 | 2021-May-25 | M91 | v14.16 |
| 14.0.0 | -- | 2021-May-27 | 2021-Aug-31 | M93 | TBD |
| 15.0.0 | 2021-Jul-20 | 2021-Sep-01 | 2021-Sep-21 | M94 | TBD |

View File

@@ -0,0 +1,175 @@
---
title: Launching Your Electron App From A URL In Another App
description: This guide will take you through the process of setting your electron app as the default handler for a specific protocol.
slug: launch-app-from-url-in-another-app
hide_title: true
---
# Launching Your Electron App From A URL In Another App
## Overview
<!-- ✍ Update this section if you want to provide more details -->
This guide will take you through the process of setting your electron app as the default
handler for a specific [protocol](https://www.electronjs.org/docs/api/protocol).
By the end of this tutorial, we will have set our app to intercept and handle
any clicked URLs that start with a specific protocol. In this guide, the protocol
we will use will be "`electron-fiddle://`".
## Examples
### Main Process (main.js)
First we will import the required modules from `electron`. These modules help control our application life and create a native browser window.
```js
const { app, BrowserWindow, shell } = require('electron')
const path = require('path')
```
Next, we will proceed to register our application to handle all "`electron-fiddle://`" protocols.
```js
if (process.defaultApp) {
if (process.argv.length >= 2) {
app.setAsDefaultProtocolClient('electron-fiddle', process.execPath, [path.resolve(process.argv[1])])
}
} else {
app.setAsDefaultProtocolClient('electron-fiddle')
}
```
We will now define the function in charge of creating our browser window and load our application's `index.html` file.
```js
function createWindow () {
// Create the browser window.
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js')
}
})
mainWindow.loadFile('index.html')
}
```
In this next step, we will create our `BrowserWindow` and tell our application how to handle an event in which an external protocol is clicked.
This code will be different in WindowsOS compared to MacOS and Linux. This is due to Windows requiring additional code in order to open the contents of the protocol link within the same electron instance. Read more about this [here](https://www.electronjs.org/docs/api/app#apprequestsingleinstancelock).
### Windows code:
```js
const gotTheLock = app.requestSingleInstanceLock()
if (!gotTheLock) {
app.quit()
} else {
app.on('second-instance', (event, commandLine, workingDirectory) => {
// Someone tried to run a second instance, we should focus our window.
if (mainWindow) {
if (mainWindow.isMinimized()) mainWindow.restore()
mainWindow.focus()
}
})
// Create mainWindow, load the rest of the app, etc...
app.whenReady().then(() => {
createWindow()
})
// handling the protocol. In this case, we choose to show an Error Box.
app.on('open-url', (event, url) => {
dialog.showErrorBox('Welcome Back', `You arrived from: ${url}`)
})
}
```
### MacOS and Linux code:
```js
// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.whenReady().then(() => {
createWindow()
})
// handling the protocol. In this case, we choose to show an Error Box.
app.on('open-url', (event, url) => {
dialog.showErrorBox('Welcome Back', `You arrived from: ${url}`)
})
```
Finally, we will add some additional code to handle when someone closes our application
```js
// Quit when all windows are closed, except on macOS. There, it's common
// for applications and their menu bar to stay active until the user quits
// explicitly with Cmd + Q.
app.on('window-all-closed', function () {
if (process.platform !== 'darwin') app.quit()
})
```
## Important Note:
### Packaging
This feature will only work on macOS when your app is packaged. It will not work when you're launching it in development from the command-line. When you package your app you'll need to make sure the macOS `plist` for the app is updated to include the new protocol handler. If you're using [`electron-packager`](https://github.com/electron/electron-packager) then you
can add the flag `--extend-info` with a path to the `plist` you've created. The one for this app is below:
### Plist
```XML
<p>
<h5>macOS plist</h5>
<pre><code>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>electron-api-demos</string>
</array>
<key>CFBundleURLName</key>
<string>Electron API Demos Protocol</string>
</dict>
</array>
<key>ElectronTeamID</key>
<string>VEKTX9H2N7</string>
</dict>
</plist>
</code>
</pre>
<p>
```
## Conclusion
After you start your electron app, you can now enter in a URL in your browser that contains the custom protocol, for example `"electron-fiddle://open"` and observe that the application will respond and show an error dialog box.
<!--
Because Electron examples usually require multiple files (HTML, CSS, JS
for the main and renderer process, etc.), we use this custom code block
for Fiddle (https://www.electronjs.org/fiddle).
Please modify any of the files in the referenced folder to fit your
example.
The content in this codeblock will not be rendered in the website so you
can leave it empty.
-->
```fiddle docs/fiddles/system/protocol-handler/launch-app-from-URL-in-another-app
```
<!-- ✍ Explanation of the code below -->

View File

@@ -223,7 +223,7 @@ app.on('window-all-closed', function () {
[node-platform]: https://nodejs.org/api/process.html#process_process_platform
[window-all-closed]: ../api/app.md#event-window-all-closed
[window-all-closed]: ../api/app.md#appquit
[app-quit]: ../api/app.md#appquit
#### Open a window if none are open (macOS)

View File

@@ -79,7 +79,7 @@ or [Parcel][parcel].
Note that because the environment presented to the `preload` script is substantially
more privileged than that of a sandboxed renderer, it is still possible to leak
privileged APIs to untrusted code running in the renderer process unless
[`contextIsolation`][contextIsolation] is enabled.
[`contextIsolation`][context-isolation] is enabled.
## Configuring the sandbox

View File

@@ -44,7 +44,7 @@ Chromium shared library and Node.js. Vulnerabilities affecting these components
may impact the security of your application. By updating Electron to the latest
version, you ensure that critical vulnerabilities (such as *nodeIntegration bypasses*)
are already patched and cannot be exploited in your application. For more information,
see "[Use a current version of Electron](#15-use-a-current-version-of-electron)".
see "[Use a current version of Electron](#16-use-a-current-version-of-electron)".
* **Evaluate your dependencies.** While NPM provides half a million reusable packages,
it is your responsibility to choose trusted 3rd-party libraries. If you use outdated
@@ -88,18 +88,19 @@ You should at least follow these steps to improve the security of your applicati
1. [Only load secure content](#1-only-load-secure-content)
2. [Disable the Node.js integration in all renderers that display remote content](#2-do-not-enable-nodejs-integration-for-remote-content)
3. [Enable context isolation in all renderers that display remote content](#3-enable-context-isolation-for-remote-content)
4. [Use `ses.setPermissionRequestHandler()` in all sessions that load remote content](#4-handle-session-permission-requests-from-remote-content)
5. [Do not disable `webSecurity`](#5-do-not-disable-websecurity)
6. [Define a `Content-Security-Policy`](#6-define-a-content-security-policy) and use restrictive rules (i.e. `script-src 'self'`)
7. [Do not set `allowRunningInsecureContent` to `true`](#7-do-not-set-allowrunninginsecurecontent-to-true)
8. [Do not enable experimental features](#8-do-not-enable-experimental-features)
9. [Do not use `enableBlinkFeatures`](#9-do-not-use-enableblinkfeatures)
10. [`<webview>`: Do not use `allowpopups`](#10-do-not-use-allowpopups)
11. [`<webview>`: Verify options and params](#11-verify-webview-options-before-creation)
12. [Disable or limit navigation](#12-disable-or-limit-navigation)
13. [Disable or limit creation of new windows](#13-disable-or-limit-creation-of-new-windows)
14. [Do not use `openExternal` with untrusted content](#14-do-not-use-openexternal-with-untrusted-content)
15. [Use a current version of Electron](#15-use-a-current-version-of-electron)
4. [Enable sandboxing](#4-enable-sandboxing)
5. [Use `ses.setPermissionRequestHandler()` in all sessions that load remote content](#5-handle-session-permission-requests-from-remote-content)
6. [Do not disable `webSecurity`](#6-do-not-disable-websecurity)
7. [Define a `Content-Security-Policy`](#7-define-a-content-security-policy) and use restrictive rules (i.e. `script-src 'self'`)
8. [Do not set `allowRunningInsecureContent` to `true`](#8-do-not-set-allowrunninginsecurecontent-to-true)
9. [Do not enable experimental features](#9-do-not-enable-experimental-features)
10. [Do not use `enableBlinkFeatures`](#10-do-not-use-enableblinkfeatures)
11. [`<webview>`: Do not use `allowpopups`](#11-do-not-use-allowpopups)
12. [`<webview>`: Verify options and params](#12-verify-webview-options-before-creation)
13. [Disable or limit navigation](#13-disable-or-limit-navigation)
14. [Disable or limit creation of new windows](#14-disable-or-limit-creation-of-new-windows)
15. [Do not use `openExternal` with untrusted content](#15-do-not-use-openexternal-with-untrusted-content)
16. [Use a current version of Electron](#16-use-a-current-version-of-electron)
To automate the detection of misconfigurations and insecure patterns, it is
possible to use
@@ -239,7 +240,26 @@ and prevent the use of Node primitives `contextIsolation` **must** also be used.
For more information on what `contextIsolation` is and how to enable it please
see our dedicated [Context Isolation](context-isolation.md) document.
## 4) Handle Session Permission Requests From Remote Content
## 4) Enable Sandboxing
[Sandboxing](sandbox.md) is a Chromium feature that uses the operating system to
significantly limit what renderer processes have access to. You should enable
the sandbox in all renderers. Loading, reading or processing any untrusted
content in an unsandboxed process, including the main process, is not advised.
### How?
When creating a window, pass the `sandbox: true` option in `webPreferences`:
```js
const win = new BrowserWindow({
webPreferences: {
sandbox: true
}
})
```
## 5) Handle Session Permission Requests From Remote Content
You may have seen permission requests while using Chrome: They pop up whenever
the website attempts to use a feature that the user has to manually approve (
@@ -277,7 +297,7 @@ session
})
```
## 5) Do Not Disable WebSecurity
## 6) Do Not Disable WebSecurity
_Recommendation is Electron's default_
@@ -318,7 +338,7 @@ const mainWindow = new BrowserWindow()
<webview src="page.html"></webview>
```
## 6) Define a Content Security Policy
## 7) Define a Content Security Policy
A Content Security Policy (CSP) is an additional layer of protection against
cross-site-scripting attacks and data injection attacks. We recommend that they
@@ -374,7 +394,7 @@ on a page directly in the markup using a `<meta>` tag:
<meta http-equiv="Content-Security-Policy" content="default-src 'none'">
```
## 7) Do Not Set `allowRunningInsecureContent` to `true`
## 8) Do Not Set `allowRunningInsecureContent` to `true`
_Recommendation is Electron's default_
@@ -407,7 +427,7 @@ const mainWindow = new BrowserWindow({
const mainWindow = new BrowserWindow({})
```
## 8) Do Not Enable Experimental Features
## 9) Do Not Enable Experimental Features
_Recommendation is Electron's default_
@@ -439,7 +459,7 @@ const mainWindow = new BrowserWindow({
const mainWindow = new BrowserWindow({})
```
## 9) Do Not Use `enableBlinkFeatures`
## 10) Do Not Use `enableBlinkFeatures`
_Recommendation is Electron's default_
@@ -471,7 +491,7 @@ const mainWindow = new BrowserWindow({
const mainWindow = new BrowserWindow()
```
## 10) Do Not Use `allowpopups`
## 11) Do Not Use `allowpopups`
_Recommendation is Electron's default_
@@ -498,7 +518,7 @@ you know it needs that feature.
<webview src="page.html"></webview>
```
## 11) Verify WebView Options Before Creation
## 12) Verify WebView Options Before Creation
A WebView created in a renderer process that does not have Node.js integration
enabled will not be able to enable integration itself. However, a WebView will
@@ -545,7 +565,7 @@ app.on('web-contents-created', (event, contents) => {
Again, this list merely minimizes the risk, it does not remove it. If your goal
is to display a website, a browser will be a more secure option.
## 12) Disable or limit navigation
## 13) Disable or limit navigation
If your app has no need to navigate or only needs to navigate to known pages,
it is a good idea to limit navigation outright to that known scope, disallowing
@@ -589,7 +609,7 @@ app.on('web-contents-created', (event, contents) => {
})
```
## 13) Disable or limit creation of new windows
## 14) Disable or limit creation of new windows
If you have a known set of windows, it's a good idea to limit the creation of
additional windows in your app.
@@ -636,7 +656,7 @@ app.on('web-contents-created', (event, contents) => {
})
```
## 14) Do not use `openExternal` with untrusted content
## 15) Do not use `openExternal` with untrusted content
Shell's [`openExternal`][open-external] allows opening a given protocol URI with
the desktop's native utilities. On macOS, for instance, this function is similar
@@ -663,7 +683,7 @@ const { shell } = require('electron')
shell.openExternal('https://example.com/index.html')
```
## 15) Use a current version of Electron
## 16) Use a current version of Electron
You should strive for always using the latest available version of Electron.
Whenever a new major version is released, you should attempt to update your

View File

@@ -37,6 +37,13 @@ tools and resources.
## Supported Versions
_**Note:** Beginning in September 2021 with Electron 15, the Electron team
will temporarily support the latest **four** stable major versions. This
extended support is intended to help Electron developers transition to
the [new eight week release cadence](https://electronjs.org/blog/8-week-cadence), and will continue until May 2022, with
the release of Electron 19. At that time, the Electron team will drop support
back to the latest three stable major versions._
The latest three *stable* major versions are supported by the Electron team.
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
@@ -63,6 +70,7 @@ until the maintainers feel the maintenance burden is too high to continue doing
### Currently supported versions
* 14.x.y
* 13.x.y
* 12.x.y
* 11.x.y

View File

@@ -162,7 +162,7 @@ client
## Workflow
To test your application without rebuilding Electron,
[place](https://github.com/electron/electron/blob/master/docs/tutorial/application-distribution.md)
[place](application-distribution.md)
your app source into Electron's resource directory.
Alternatively, pass an argument to run with your Electron binary that points to

View File

@@ -128,6 +128,7 @@ auto_filenames = {
"docs/api/structures/upload-file.md",
"docs/api/structures/upload-raw-data.md",
"docs/api/structures/user-default-types.md",
"docs/api/structures/web-request-filter.md",
"docs/api/structures/web-source.md",
]

View File

@@ -180,8 +180,8 @@ filenames = {
"shell/browser/ui/cocoa/root_view_mac.mm",
"shell/browser/ui/cocoa/views_delegate_mac.h",
"shell/browser/ui/cocoa/views_delegate_mac.mm",
"shell/browser/ui/cocoa/window_buttons_view.h",
"shell/browser/ui/cocoa/window_buttons_view.mm",
"shell/browser/ui/cocoa/window_buttons_proxy.h",
"shell/browser/ui/cocoa/window_buttons_proxy.mm",
"shell/browser/ui/drag_util_mac.mm",
"shell/browser/ui/file_dialog_mac.mm",
"shell/browser/ui/inspectable_web_contents_view_mac.h",

View File

@@ -3,7 +3,6 @@ import * as path from 'path';
import * as util from 'util';
const asar = process._linkedBinding('electron_common_asar');
const v8Util = process._linkedBinding('electron_common_v8_util');
const Module = require('module');
@@ -807,6 +806,8 @@ export const wrapFsWithAsar = (fs: Record<string, any>) => {
overrideAPISync(childProcess, 'execFileSync');
};
const asarReady = new WeakSet();
// Lazily override the child_process APIs only when child_process is
// fetched the first time. We will eagerly override the child_process APIs
// when this env var is set so that stack traces generated inside node unit
@@ -819,8 +820,8 @@ export const wrapFsWithAsar = (fs: Record<string, any>) => {
Module._load = (request: string, ...args: any[]) => {
const loadResult = originalModuleLoad(request, ...args);
if (request === 'child_process') {
if (!v8Util.getHiddenValue(loadResult, 'asar-ready')) {
v8Util.setHiddenValue(loadResult, 'asar-ready', true);
if (!asarReady.has(loadResult)) {
asarReady.add(loadResult);
// Just to make it obvious what we are dealing with here
const childProcess = loadResult;

View File

@@ -1,5 +1,4 @@
import * as fs from 'fs';
import * as path from 'path';
import { Menu } from 'electron/main';
@@ -55,14 +54,6 @@ Object.defineProperty(app, 'applicationMenu', {
}
});
(app as any).isPackaged = (() => {
const execFile = path.basename(process.execPath).toLowerCase();
if (process.platform === 'win32') {
return execFile !== 'electron.exe';
}
return execFile !== 'electron';
})();
// The native implementation is not provided on non-windows platforms
app.setAppUserModelId = app.setAppUserModelId || (() => {});

View File

@@ -22,6 +22,11 @@ enum OpenFileDialogProperties {
dontAddToRecent = 1 << 8 // Windows
}
let nextId = 0;
const getNextId = function () {
return ++nextId;
};
const normalizeAccessKey = (text: string) => {
if (typeof text !== 'string') return text;
@@ -157,6 +162,7 @@ const messageBox = (sync: boolean, window: BrowserWindow | null, options?: Messa
let {
buttons = [],
cancelId,
signal,
checkboxLabel = '',
checkboxChecked,
defaultId = -1,
@@ -196,10 +202,21 @@ const messageBox = (sync: boolean, window: BrowserWindow | null, options?: Messa
}
}
// AbortSignal processing.
let id: number | undefined;
if (signal) {
// Generate an ID used for closing the message box.
id = getNextId();
// Close the message box when signal is aborted.
if (signal.aborted) { return Promise.resolve({ cancelId, checkboxChecked }); }
signal.addEventListener('abort', () => dialogBinding._closeMessageBox(id));
}
const settings = {
window,
messageBoxType,
buttons,
id,
defaultId,
cancelId,
noLink,

View File

@@ -43,6 +43,15 @@ const MenuItem = function (this: any, options: any) {
this.overrideReadOnlyProperty('commandId', ++nextCommandId);
Object.defineProperty(this, 'userAccelerator', {
get: () => {
if (process.platform !== 'darwin') return null;
if (!this.menu) return null;
return this.menu._getUserAcceleratorAt(this.commandId);
},
enumerable: true
});
const click = options.click;
this.click = (event: Event, focusedWindow: BrowserWindow, focusedWebContents: WebContents) => {
// Manually flip the checked flags when clicked.

View File

@@ -1,10 +1,11 @@
import { BaseWindow, MenuItem, webContents, Menu as MenuType, BrowserWindow, MenuItemConstructorOptions } from 'electron/main';
import { sortMenuItems } from '@electron/internal/browser/api/menu-utils';
import { setApplicationMenuWasSet } from '@electron/internal/browser/default-menu';
const v8Util = process._linkedBinding('electron_common_v8_util');
const bindings = process._linkedBinding('electron_browser_menu');
const { Menu } = bindings as { Menu: typeof MenuType };
const checked = new WeakMap<MenuItem, boolean>();
let applicationMenu: MenuType | null = null;
let groupIdIndex = 0;
@@ -60,7 +61,7 @@ Menu.prototype._menuWillShow = function () {
// Ensure radio groups have at least one menu item selected
for (const id of Object.keys(this.groupsMap)) {
const found = this.groupsMap[id].find(item => item.checked) || null;
if (!found) v8Util.setHiddenValue(this.groupsMap[id][0], 'checked', true);
if (!found) checked.set(this.groupsMap[id][0], true);
}
};
@@ -169,7 +170,7 @@ Menu.setApplicationMenu = function (menu: MenuType) {
}
applicationMenu = menu;
v8Util.setHiddenValue(global, 'applicationMenuSet', true);
setApplicationMenuWasSet();
if (process.platform === 'darwin') {
if (!menu) return;
@@ -275,15 +276,15 @@ function insertItemByType (this: MenuType, item: MenuItem, pos: number) {
this.groupsMap[item.groupId].push(item);
// Setting a radio menu item should flip other items in the group.
v8Util.setHiddenValue(item, 'checked', item.checked);
checked.set(item, item.checked);
Object.defineProperty(item, 'checked', {
enumerable: true,
get: () => v8Util.getHiddenValue(item, 'checked'),
get: () => checked.get(item),
set: () => {
this.groupsMap[item.groupId].forEach(other => {
if (other !== item) v8Util.setHiddenValue(other, 'checked', false);
if (other !== item) checked.set(other, false);
});
v8Util.setHiddenValue(item, 'checked', true);
checked.set(item, true);
}
});
this.insertRadioItem(pos, item.commandId, item.label, item.groupId);

View File

@@ -1,12 +1,16 @@
import { app, Menu } from 'electron/main';
import { shell } from 'electron/common';
const v8Util = process._linkedBinding('electron_common_v8_util');
const isMac = process.platform === 'darwin';
let applicationMenuWasSet = false;
export const setApplicationMenuWasSet = () => {
applicationMenuWasSet = true;
};
export const setDefaultApplicationMenu = () => {
if (v8Util.getHiddenValue<boolean>(global, 'applicationMenuSet')) return;
if (applicationMenuWasSet) return;
const helpMenu: Electron.MenuItemConstructorOptions = {
role: 'help',

View File

@@ -1,4 +1,3 @@
/* eslint no-eval: "off" */
/* global binding */
import * as events from 'events';
import { IPC_MESSAGES } from '@electron/internal/common/ipc-messages';

View File

@@ -2,6 +2,7 @@
const { version } = require('./package');
const childProcess = require('child_process');
const fs = require('fs');
const os = require('os');
const path = require('path');
@@ -18,14 +19,30 @@ if (isInstalled()) {
process.exit(0);
}
const platform = process.env.npm_config_platform || process.platform;
let arch = process.env.npm_config_arch || process.arch;
if (platform === 'darwin' && process.platform === 'darwin' && arch === 'x64') {
// When downloading for macOS ON macOS and we think we need x64 we should
// check if we're running under rosetta and download the arm64 version if appropriate
try {
const output = childProcess.execSync('sysctl -in sysctl.proc_translated');
if (output.toString().trim() === '1') {
arch = 'arm64';
}
} catch {
// Ignore failure
}
}
// downloads if not cached
downloadArtifact({
version,
artifactName: 'electron',
force: process.env.force_no_cache === 'true',
cacheRoot: process.env.electron_config_cache,
platform: process.env.npm_config_platform || process.platform,
arch: process.env.npm_config_arch || process.arch
platform,
arch
}).then(extractFile).catch(err => {
console.error(err.stack);
process.exit(1);

View File

@@ -1,11 +1,11 @@
{
"name": "electron",
"version": "14.0.0-beta.12",
"version": "15.0.0-alpha.6",
"repository": "https://github.com/electron/electron",
"description": "Build cross platform desktop apps with JavaScript, HTML, and CSS",
"devDependencies": {
"@electron/docs-parser": "^0.11.0",
"@electron/typescript-definitions": "^8.9.0",
"@electron/docs-parser": "^0.12.1",
"@electron/typescript-definitions": "^8.9.4",
"@octokit/auth-app": "^2.10.0",
"@octokit/rest": "^18.0.3",
"@primer/octicons": "^10.0.0",

View File

@@ -1 +1,2 @@
build_conditionally_import_ext_headers_from_framework_or_from.patch
chore_explicitly_cast_long_max_to_double.patch

View File

@@ -0,0 +1,26 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Shelley Vohr <shelley.vohr@gmail.com>
Date: Thu, 15 Jul 2021 15:53:08 -0400
Subject: chore: explicitly cast LONG_MAX to double
Fixes a compilation error encountered in Electron as a result of
Chromium enabling the -Wimplicit-const-int-float-conversion compilation
flag in https://chromium-review.googlesource.com/c/chromium/src/+/3001416.
Upstreamed at https://github.com/ReactiveCocoa/ReactiveObjC/pull/186.
diff --git a/ReactiveObjC/RACQueueScheduler.m b/ReactiveObjC/RACQueueScheduler.m
index d9dd189b8fab73f412b2d2fc831041a33368d491..bc6e8d1b5339197c173a1254c0586621dfe5b591 100644
--- a/ReactiveObjC/RACQueueScheduler.m
+++ b/ReactiveObjC/RACQueueScheduler.m
@@ -48,8 +48,8 @@ + (dispatch_time_t)wallTimeWithDate:(NSDate *)date {
double frac = modf(date.timeIntervalSince1970, &seconds);
struct timespec walltime = {
- .tv_sec = (time_t)fmin(fmax(seconds, LONG_MIN), LONG_MAX),
- .tv_nsec = (long)fmin(fmax(frac * NSEC_PER_SEC, LONG_MIN), LONG_MAX)
+ .tv_sec = (time_t)fmin(fmax(seconds, LONG_MIN), (double)LONG_MAX),
+ .tv_nsec = (long)fmin(fmax(frac * NSEC_PER_SEC, LONG_MIN), (double)LONG_MAX)
};
return dispatch_walltime(&walltime, 0);

View File

@@ -1,3 +1,4 @@
expose_ripemd160.patch
expose_aes-cfb.patch
expose_des-ede3.patch
fix_sync_evp_get_cipherbynid_and_evp_get_cipherbyname.patch

View File

@@ -0,0 +1,82 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Shelley Vohr <shelley.vohr@gmail.com>
Date: Mon, 28 Jun 2021 10:41:09 +0200
Subject: fix: sync EVP_get_cipherbynid and EVP_get_cipherbyname
This commit syncs the results of EVP_get_cipherbynid and
EVP_get_cipherbyname. Node.js logic assumes that calling EVP_get_cipherbynid
on a NID returned from a call to `getCipherInfo` with the cipher name
will return the same cipher information - this assumption holds in OpenSSL
and should also hold in BoringSSL.
This will be upstreamed.
diff --git a/crypto/cipher_extra/cipher_extra.c b/crypto/cipher_extra/cipher_extra.c
index 8205e121c152fe4e2d8df34a1ac2fe0498381f31..0870ffe6bff3f647907d7df66d7bf74916be1836 100644
--- a/crypto/cipher_extra/cipher_extra.c
+++ b/crypto/cipher_extra/cipher_extra.c
@@ -69,20 +69,58 @@
const EVP_CIPHER *EVP_get_cipherbynid(int nid) {
switch (nid) {
- case NID_rc2_cbc:
- return EVP_rc2_cbc();
- case NID_rc2_40_cbc:
- return EVP_rc2_40_cbc();
+ case NID_rc4:
+ return EVP_rc4();
+ case NID_des_cbc:
+ return EVP_des_cbc();
+ case NID_des_ede3_ecb:
+ return EVP_des_ede3();
case NID_des_ede3_cbc:
return EVP_des_ede3_cbc();
- case NID_des_ede_cbc:
- return EVP_des_cbc();
case NID_aes_128_cbc:
return EVP_aes_128_cbc();
+ case NID_aes_128_cfb128:
+ return EVP_aes_128_cfb128();
case NID_aes_192_cbc:
return EVP_aes_192_cbc();
case NID_aes_256_cbc:
return EVP_aes_256_cbc();
+ case NID_aes_256_cfb128:
+ return EVP_aes_256_cfb128();
+ case NID_aes_128_ctr:
+ return EVP_aes_128_ctr();
+ case NID_aes_192_ctr:
+ return EVP_aes_192_ctr();
+ case NID_aes_256_ctr:
+ return EVP_aes_256_ctr();
+ case NID_aes_128_ecb:
+ return EVP_aes_128_ecb();
+ case NID_aes_192_ecb:
+ return EVP_aes_192_ecb();
+ case NID_aes_256_ecb:
+ return EVP_aes_256_ecb();
+ case NID_aes_128_gcm:
+ return EVP_aes_128_gcm();
+ case NID_aes_192_gcm:
+ return EVP_aes_192_gcm();
+ case NID_aes_256_gcm:
+ return EVP_aes_256_gcm();
+ case NID_aes_128_ofb128:
+ return EVP_aes_128_ofb();
+ case NID_aes_192_ofb128:
+ return EVP_aes_192_ofb();
+ case NID_aes_256_ofb128:
+ return EVP_aes_256_ofb();
+ case NID_des_ecb:
+ return EVP_des_ecb();
+ case NID_des_ede_ecb:
+ return EVP_des_ede();
+ case NID_des_ede_cbc:
+ return EVP_des_ede_cbc();
+ case NID_rc2_cbc:
+ return EVP_rc2_cbc();
+ case NID_rc2_40_cbc:
+ return EVP_rc2_40_cbc();
default:
return NULL;
}

View File

@@ -89,6 +89,7 @@ export_gin_v8platform_pageallocator_for_usage_outside_of_the_gin.patch
fix_export_zlib_symbols.patch
don_t_use_potentially_null_getwebframe_-_view_when_get_blink.patch
web_contents.patch
webview_fullscreen.patch
disable_unload_metrics.patch
fix_add_check_for_sandbox_then_result.patch
extend_apply_webpreferences.patch
@@ -97,6 +98,8 @@ add_setter_for_browsermainloop_result_code.patch
make_include_of_stack_trace_h_unconditional.patch
build_libc_as_static_library.patch
build_do_not_depend_on_packed_resource_integrity.patch
don_t_run_pcscan_notifythreadcreated_if_pcscan_is_disabled.patch
refactor_restore_base_adaptcallbackforrepeating.patch
hack_to_allow_gclient_sync_with_host_os_mac_on_linux_in_ci.patch
don_t_run_pcscan_notifythreadcreated_if_pcscan_is_disabled.patch
add_gin_wrappable_crash_key.patch
logging_win32_only_create_a_console_if_logging_to_stderr.patch

View File

@@ -23,10 +23,10 @@ index e24c169444c699f295de2c1f1f42683eeca73436..4675cdccb1876a318a9a0253cdf552bb
int32_t world_id) {}
virtual void DidClearWindowObject() {}
diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc
index 9ae95b8118e37e22d6faddf62cd06b182d2033db..388dbbfc8b9e1b191c03792f41d5de75edb3b867 100644
index 4f09c48e4c3b1d8f44854ca0823fad89c7cb11ca..b84c515730e843cbbce96e6045d53b7da25579b3 100644
--- a/content/renderer/render_frame_impl.cc
+++ b/content/renderer/render_frame_impl.cc
@@ -4381,6 +4381,12 @@ void RenderFrameImpl::DidCreateScriptContext(v8::Local<v8::Context> context,
@@ -4407,6 +4407,12 @@ void RenderFrameImpl::DidCreateScriptContext(v8::Local<v8::Context> context,
observer.DidCreateScriptContext(context, world_id);
}
@@ -40,10 +40,10 @@ index 9ae95b8118e37e22d6faddf62cd06b182d2033db..388dbbfc8b9e1b191c03792f41d5de75
int world_id) {
for (auto& observer : observers_)
diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h
index 3249400765135a0693ef9ba81045152c00bb0820..5abb2bed3e403a11016899cbb7701a80a9bb6399 100644
index 240152022c7d489d81fbadddcb672b02d87443c4..6c8f1e51d646d7925801111ee857af569f28033d 100644
--- a/content/renderer/render_frame_impl.h
+++ b/content/renderer/render_frame_impl.h
@@ -583,6 +583,8 @@ class CONTENT_EXPORT RenderFrameImpl
@@ -586,6 +586,8 @@ class CONTENT_EXPORT RenderFrameImpl
blink::WebLocalFrameClient::LazyLoadBehavior lazy_load_behavior) override;
void DidCreateScriptContext(v8::Local<v8::Context> context,
int world_id) override;
@@ -53,10 +53,10 @@ index 3249400765135a0693ef9ba81045152c00bb0820..5abb2bed3e403a11016899cbb7701a80
int world_id) override;
void DidChangeScrollOffset() override;
diff --git a/third_party/blink/public/web/web_local_frame_client.h b/third_party/blink/public/web/web_local_frame_client.h
index 346027ed008208978d187e025b90e7cc667698d6..c2aa23af0cae2b0a7322cd8809b9015fd953938a 100644
index 5e70b0d06e790ad28b647639c0f0a43ab4e6f9cf..6d101dc9c12c9bcbc0993d5ef7ddb8b194f6825a 100644
--- a/third_party/blink/public/web/web_local_frame_client.h
+++ b/third_party/blink/public/web/web_local_frame_client.h
@@ -578,6 +578,9 @@ class BLINK_EXPORT WebLocalFrameClient {
@@ -585,6 +585,9 @@ class BLINK_EXPORT WebLocalFrameClient {
virtual void DidCreateScriptContext(v8::Local<v8::Context>,
int32_t world_id) {}
@@ -67,7 +67,7 @@ index 346027ed008208978d187e025b90e7cc667698d6..c2aa23af0cae2b0a7322cd8809b9015f
virtual void WillReleaseScriptContext(v8::Local<v8::Context>,
int32_t world_id) {}
diff --git a/third_party/blink/renderer/bindings/core/v8/local_window_proxy.cc b/third_party/blink/renderer/bindings/core/v8/local_window_proxy.cc
index 83b81f4c1fd4232ee5c2b7b1b7b85424164f3acc..bdd4a0031af6f9c2b701979dd469867c018e5753 100644
index 82750b58500681015be4cd75e9362d235a54c82f..497179aa9b4da053a44513103cdb93fd3fbc94e4 100644
--- a/third_party/blink/renderer/bindings/core/v8/local_window_proxy.cc
+++ b/third_party/blink/renderer/bindings/core/v8/local_window_proxy.cc
@@ -187,6 +187,7 @@ void LocalWindowProxy::Initialize() {
@@ -79,10 +79,10 @@ index 83b81f4c1fd4232ee5c2b7b1b7b85424164f3acc..bdd4a0031af6f9c2b701979dd469867c
if (World().IsMainWorld()) {
GetFrame()->Loader().DispatchDidClearWindowObjectInMainWorld();
diff --git a/third_party/blink/renderer/core/frame/local_frame_client.h b/third_party/blink/renderer/core/frame/local_frame_client.h
index cc3f43d1d06bd41193d5035d9e4a46342ff6a548..f44020c144b17626d833cf3a6d8ceb25602fd767 100644
index 354d705e7c5e33137767a8e75ebb2bb0bad7151b..8568d19178f5fac5c421b2e83e35341e6809a456 100644
--- a/third_party/blink/renderer/core/frame/local_frame_client.h
+++ b/third_party/blink/renderer/core/frame/local_frame_client.h
@@ -293,6 +293,8 @@ class CORE_EXPORT LocalFrameClient : public FrameClient {
@@ -298,6 +298,8 @@ class CORE_EXPORT LocalFrameClient : public FrameClient {
virtual void DidCreateScriptContext(v8::Local<v8::Context>,
int32_t world_id) = 0;
@@ -92,7 +92,7 @@ index cc3f43d1d06bd41193d5035d9e4a46342ff6a548..f44020c144b17626d833cf3a6d8ceb25
int32_t world_id) = 0;
virtual bool AllowScriptExtensions() = 0;
diff --git a/third_party/blink/renderer/core/frame/local_frame_client_impl.cc b/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
index 0748a5f4f636792c05e436bd7186b35ca7b023a5..2df7e6cf8b474f0a86763e521c4058ec868b4683 100644
index 72ea858f8021b70e1b6aeca53bc7498345f5c08f..0ac6d1b812ab8196cf326ff49047387972c0034f 100644
--- a/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_client_impl.cc
@@ -273,6 +273,13 @@ void LocalFrameClientImpl::DidCreateScriptContext(
@@ -110,7 +110,7 @@ index 0748a5f4f636792c05e436bd7186b35ca7b023a5..2df7e6cf8b474f0a86763e521c4058ec
v8::Local<v8::Context> context,
int32_t world_id) {
diff --git a/third_party/blink/renderer/core/frame/local_frame_client_impl.h b/third_party/blink/renderer/core/frame/local_frame_client_impl.h
index 0391fc4cd19f44b54896fb80dfc0d95816fcf878..b2242b4f084ffd3934a5f1fc23c0412cf69b99c7 100644
index 7ee0cd63a960e1bdb5cc9979827693c5bab7e96d..8486c97f8731ffc77d13e137819a1be8116105dc 100644
--- a/third_party/blink/renderer/core/frame/local_frame_client_impl.h
+++ b/third_party/blink/renderer/core/frame/local_frame_client_impl.h
@@ -77,6 +77,8 @@ class CORE_EXPORT LocalFrameClientImpl final : public LocalFrameClient {
@@ -123,10 +123,10 @@ index 0391fc4cd19f44b54896fb80dfc0d95816fcf878..b2242b4f084ffd3934a5f1fc23c0412c
int32_t world_id) override;
diff --git a/third_party/blink/renderer/core/loader/empty_clients.h b/third_party/blink/renderer/core/loader/empty_clients.h
index ac2ed9b3bb99ceec9cc72477e38bc0fbd7f7f4f9..1401e63a14cab972b4ccc7a25098536aca74d7f2 100644
index e405538cf1f520c67bcb72e164c66f4a4859d588..054df6b7718cef2c891eb4d00c95792dde5abd4b 100644
--- a/third_party/blink/renderer/core/loader/empty_clients.h
+++ b/third_party/blink/renderer/core/loader/empty_clients.h
@@ -350,6 +350,8 @@ class CORE_EXPORT EmptyLocalFrameClient : public LocalFrameClient {
@@ -355,6 +355,8 @@ class CORE_EXPORT EmptyLocalFrameClient : public LocalFrameClient {
void DidCreateScriptContext(v8::Local<v8::Context>,
int32_t world_id) override {}

View File

@@ -0,0 +1,44 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: VerteDinde <khammond@slack-corp.com>
Date: Thu, 15 Jul 2021 12:16:50 -0700
Subject: chore: add gin::wrappable wrapperinfo crash key
This patch adds an additional crash key for gin::Wrappable, to help
debug a crash that is occurring during garbage collection in SecondWeakCallback.
The crash seems to be due to a class that is holding a reference to
gin::Wrappable even after being deleted. This added crash key compares
the soon-to-be-deleted WrapperInfo with known WrapperInfo components to
help determine where the crash originated from.
This patch should not be upstreamed, and can be removed in Electron 15 and
beyond once we identify the cause of the crash.
diff --git a/gin/wrappable.cc b/gin/wrappable.cc
index fe07eb94a8e679859bba6d76ff0d6ee86bd0c67e..d0066fca501eae5be4177440b44dbecc8e34c897 100644
--- a/gin/wrappable.cc
+++ b/gin/wrappable.cc
@@ -8,6 +8,10 @@
#include "gin/object_template_builder.h"
#include "gin/per_isolate_data.h"
+#if !defined(MAS_BUILD)
+#include "electron/shell/common/crash_keys.h"
+#endif
+
namespace gin {
WrappableBase::WrappableBase() = default;
@@ -36,6 +40,12 @@ void WrappableBase::FirstWeakCallback(
void WrappableBase::SecondWeakCallback(
const v8::WeakCallbackInfo<WrappableBase>& data) {
WrappableBase* wrappable = data.GetParameter();
+
+#if !defined(MAS_BUILD)
+ WrapperInfo* info = static_cast<WrapperInfo*>(data.GetInternalField(0));
+ electron::crash_keys::SetCrashKeyForGinWrappable(info);
+#endif
+
delete wrappable;
}

View File

@@ -10,7 +10,7 @@ valid use cases for setting custom exit codes of the main loop. This
exposes a simple setter that embedders can call.
diff --git a/content/browser/browser_main_loop.h b/content/browser/browser_main_loop.h
index 090ca9c6e8785c6e9f1b9245771645ea19805795..fdf587055a71103c21f27fd79e5714baa24ea5c4 100644
index 5d41104a616c53d93ff8eb68ce2f87b1c2be7025..21223accc340242d2e0e301e92d7dafd01023e23 100644
--- a/content/browser/browser_main_loop.h
+++ b/content/browser/browser_main_loop.h
@@ -161,6 +161,10 @@ class CONTENT_EXPORT BrowserMainLoop {

View File

@@ -6,10 +6,10 @@ Subject: allow disabling blink scheduler throttling per RenderView
This allows us to disable throttling for hidden windows.
diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc
index 7edf048346a2f99ea1aba461861d7775372b4563..2b7eed39bf4a1dbf1b0dec8fd58f9269f791e5df 100644
index ce54ce5ee0d4f421e34e2ad7c35334b5f608609f..8193988e5e9312dada93a00d38f50931acc57ee9 100644
--- a/content/browser/renderer_host/render_view_host_impl.cc
+++ b/content/browser/renderer_host/render_view_host_impl.cc
@@ -617,6 +617,11 @@ void RenderViewHostImpl::SetBackgroundOpaque(bool opaque) {
@@ -628,6 +628,11 @@ void RenderViewHostImpl::SetBackgroundOpaque(bool opaque) {
GetWidget()->GetAssociatedFrameWidget()->SetBackgroundOpaque(opaque);
}
@@ -22,10 +22,10 @@ index 7edf048346a2f99ea1aba461861d7775372b4563..2b7eed39bf4a1dbf1b0dec8fd58f9269
return is_active();
}
diff --git a/content/browser/renderer_host/render_view_host_impl.h b/content/browser/renderer_host/render_view_host_impl.h
index e319cbff63898fe49076844ca3e7a5e8bb8bd164..83439b2b05b79ca02f02767217bb915ba3e51d37 100644
index 43fb3715553154f261a10bdc2133e66f456f9cd6..7950cc266c525d6e6e12282ac48311e4da1fc418 100644
--- a/content/browser/renderer_host/render_view_host_impl.h
+++ b/content/browser/renderer_host/render_view_host_impl.h
@@ -135,6 +135,7 @@ class CONTENT_EXPORT RenderViewHostImpl
@@ -137,6 +137,7 @@ class CONTENT_EXPORT RenderViewHostImpl
bool IsRenderViewLive() override;
void WriteIntoTrace(perfetto::TracedValue context) override;
@@ -61,10 +61,10 @@ index a4e38fd9825fdb2c16f728d8012bb2392cb31dfe..2239f82411d0ba73b95020e18d383850
// ADDING NEW FUNCTIONS? Please keep private functions alphabetized and put
// it in the same order in the .cc file as it was in the header.
diff --git a/third_party/blink/public/mojom/page/page.mojom b/third_party/blink/public/mojom/page/page.mojom
index a428fe70d2ca5f21a529e881e41d87f4ba46ed32..8af5470ee168ae49ef3764c28c39e08b3fdbd1a7 100644
index 8521520bb9ea48686096480700966dabae1de777..a9ef1a5f2ad6882308790cf571a3099815e68f80 100644
--- a/third_party/blink/public/mojom/page/page.mojom
+++ b/third_party/blink/public/mojom/page/page.mojom
@@ -77,4 +77,7 @@ interface PageBroadcast {
@@ -80,4 +80,7 @@ interface PageBroadcast {
// Sent to whole page, but should only be used by the main frame.
SetPageBaseBackgroundColor(skia.mojom.SkColor? color);
@@ -73,10 +73,10 @@ index a428fe70d2ca5f21a529e881e41d87f4ba46ed32..8af5470ee168ae49ef3764c28c39e08b
+ SetSchedulerThrottling(bool allowed);
};
diff --git a/third_party/blink/public/web/web_view.h b/third_party/blink/public/web/web_view.h
index 04906f28c8e03f1692690713b2ca5c9e3b188236..c4e453bb2dfa1857e73ac4dcc1e202e7a378acf6 100644
index f54b993e9fb9fedcedef327290c2e5d706c699a7..73874e124e2810f07b72fc094f57c85c0fcf1dbb 100644
--- a/third_party/blink/public/web/web_view.h
+++ b/third_party/blink/public/web/web_view.h
@@ -363,6 +363,7 @@ class WebView {
@@ -366,6 +366,7 @@ class WebView {
// Scheduling -----------------------------------------------------------
virtual PageScheduler* Scheduler() const = 0;
@@ -85,10 +85,10 @@ index 04906f28c8e03f1692690713b2ca5c9e3b188236..c4e453bb2dfa1857e73ac4dcc1e202e7
// Visibility -----------------------------------------------------------
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc
index c91848389bebee7e25e8243f1490e1fff6db638a..d0f12dd329ac67e635ce39601b9939ffceddc0c0 100644
index 2f9022d37ab989ea5bc2946ff6f0aeff22bf9fab..c493aa8366366da89f642d77838169deda8b210a 100644
--- a/third_party/blink/renderer/core/exported/web_view_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_view_impl.cc
@@ -3577,6 +3577,13 @@ PageScheduler* WebViewImpl::Scheduler() const {
@@ -3594,6 +3594,13 @@ PageScheduler* WebViewImpl::Scheduler() const {
return GetPage()->GetPageScheduler();
}
@@ -102,7 +102,7 @@ index c91848389bebee7e25e8243f1490e1fff6db638a..d0f12dd329ac67e635ce39601b9939ff
void WebViewImpl::SetVisibilityState(
mojom::blink::PageVisibilityState visibility_state,
bool is_initial_state) {
@@ -3588,7 +3595,8 @@ void WebViewImpl::SetVisibilityState(
@@ -3605,7 +3612,8 @@ void WebViewImpl::SetVisibilityState(
}
GetPage()->SetVisibilityState(visibility_state, is_initial_state);
GetPage()->GetPageScheduler()->SetPageVisible(
@@ -113,10 +113,10 @@ index c91848389bebee7e25e8243f1490e1fff6db638a..d0f12dd329ac67e635ce39601b9939ff
mojom::blink::PageVisibilityState WebViewImpl::GetVisibilityState() {
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.h b/third_party/blink/renderer/core/exported/web_view_impl.h
index 07afcf4eb67fb5cb51f94ba0055f101481014f8f..f3e9a9fd15ffe4072c8d30a563329efd23c39aa6 100644
index 97e3d30f1427b56d4711ca358bef74397affa480..faf957547df2a80f4fa267733f6145776a865853 100644
--- a/third_party/blink/renderer/core/exported/web_view_impl.h
+++ b/third_party/blink/renderer/core/exported/web_view_impl.h
@@ -412,6 +412,7 @@ class CORE_EXPORT WebViewImpl final : public WebView,
@@ -414,6 +414,7 @@ class CORE_EXPORT WebViewImpl final : public WebView,
LocalDOMWindow* PagePopupWindow() const;
PageScheduler* Scheduler() const override;
@@ -124,7 +124,7 @@ index 07afcf4eb67fb5cb51f94ba0055f101481014f8f..f3e9a9fd15ffe4072c8d30a563329efd
void SetVisibilityState(mojom::blink::PageVisibilityState visibility_state,
bool is_initial_state) override;
mojom::blink::PageVisibilityState GetVisibilityState() override;
@@ -838,6 +839,8 @@ class CORE_EXPORT WebViewImpl final : public WebView,
@@ -845,6 +846,8 @@ class CORE_EXPORT WebViewImpl final : public WebView,
// If true, we send IPC messages when |preferred_size_| changes.
bool send_preferred_size_changes_ = false;

View File

@@ -35,7 +35,7 @@ index 8a1315f7f89588bb21c6d3c21a7de7c07fed9679..51cc790f7e1ba1440a6ffaa56c9e0168
accelerated_video_decode_enabled(false),
animation_policy(
diff --git a/third_party/blink/common/web_preferences/web_preferences_mojom_traits.cc b/third_party/blink/common/web_preferences/web_preferences_mojom_traits.cc
index c6b92861449ffd929b03971fb62efc18305eb1fe..ce78fe29ab799944c2c3d7b41a0c44b970b11d05 100644
index a264ef99beb81dd6b1f55c1b0f57f6055b4ab771..ff4d5c5245ba0641b4ef02cdaf5d50be537b709e 100644
--- a/third_party/blink/common/web_preferences/web_preferences_mojom_traits.cc
+++ b/third_party/blink/common/web_preferences/web_preferences_mojom_traits.cc
@@ -23,6 +23,10 @@ bool StructTraits<blink::mojom::WebPreferencesDataView,
@@ -49,7 +49,7 @@ index c6b92861449ffd929b03971fb62efc18305eb1fe..ce78fe29ab799944c2c3d7b41a0c44b9
!data.ReadLazyFrameLoadingDistanceThresholdsPx(
&out->lazy_frame_loading_distance_thresholds_px) ||
!data.ReadLazyImageLoadingDistanceThresholdsPx(
@@ -155,6 +159,21 @@ bool StructTraits<blink::mojom::WebPreferencesDataView,
@@ -156,6 +160,21 @@ bool StructTraits<blink::mojom::WebPreferencesDataView,
data.fake_no_alloc_direct_call_for_testing_enabled();
out->v8_cache_options = data.v8_cache_options();
out->record_whole_document = data.record_whole_document();
@@ -109,7 +109,7 @@ index 4517bf43c1b80f1aa0f3ba8e67e78b8b91e19f8a..492f6c948af74bb925826a1075e6343f
// only controls whether or not the "document.cookie" field is properly
// connected to the backing store, for instance if you wanted to be able to
diff --git a/third_party/blink/public/common/web_preferences/web_preferences_mojom_traits.h b/third_party/blink/public/common/web_preferences/web_preferences_mojom_traits.h
index 0313bac28edf43e84c6e914f85af75fb541bb7ea..6eedfe15cc02b3c1ee531a94d77f8d4e04feb11f 100644
index 9dbbb581a8876430c3e0a39df1ff655d3ddc6d2d..fd6cbcfa1992a75bf660fb9eb47a9099acb3834f 100644
--- a/third_party/blink/public/common/web_preferences/web_preferences_mojom_traits.h
+++ b/third_party/blink/public/common/web_preferences/web_preferences_mojom_traits.h
@@ -6,6 +6,7 @@
@@ -120,7 +120,7 @@ index 0313bac28edf43e84c6e914f85af75fb541bb7ea..6eedfe15cc02b3c1ee531a94d77f8d4e
#include "mojo/public/cpp/bindings/struct_traits.h"
#include "net/nqe/effective_connection_type.h"
#include "third_party/blink/public/common/common_export.h"
@@ -446,6 +447,68 @@ struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::WebPreferencesDataView,
@@ -451,6 +452,68 @@ struct BLINK_COMMON_EXPORT StructTraits<blink::mojom::WebPreferencesDataView,
return r.record_whole_document;
}
@@ -190,7 +190,7 @@ index 0313bac28edf43e84c6e914f85af75fb541bb7ea..6eedfe15cc02b3c1ee531a94d77f8d4e
return r.cookie_enabled;
}
diff --git a/third_party/blink/public/mojom/webpreferences/web_preferences.mojom b/third_party/blink/public/mojom/webpreferences/web_preferences.mojom
index 121ea7b186d6cadc0d3a9ebbca64ca9a1563e8f2..a0c29218cf5196a248dc93e76d5a50a242fb0a9c 100644
index eaecb8c2b7dadaf7650bc8ac85cbad4383035e67..7863c865df17fa95965b5a4e543579bac22af90b 100644
--- a/third_party/blink/public/mojom/webpreferences/web_preferences.mojom
+++ b/third_party/blink/public/mojom/webpreferences/web_preferences.mojom
@@ -10,6 +10,7 @@ import "third_party/blink/public/mojom/v8_cache_options.mojom";
@@ -201,7 +201,7 @@ index 121ea7b186d6cadc0d3a9ebbca64ca9a1563e8f2..a0c29218cf5196a248dc93e76d5a50a2
enum PointerType {
kPointerNone = 1, // 1 << 0
@@ -213,6 +214,24 @@ struct WebPreferences {
@@ -214,6 +215,24 @@ struct WebPreferences {
V8CacheOptions v8_cache_options;
bool record_whole_document;

View File

@@ -49,10 +49,10 @@ index 8bf6b4bc077cc41da5e0e6b13302bc343537c68f..01bddc0bcb7476408023c4cfc042a088
// its owning reference back to our owning LocalFrame.
client_->Detached(type);
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
index fd9c44f62701c3b4c70e46ab86992c34777a8579..975d90d7ce9ef5a39ac8e7407982495adf5ead32 100644
index 1ea4cd1b5ca426f9a18ad7b0bfdf0e5aaa4a90a4..c7e3c460d1461fbe91a83a1dc1f56dd93a0d92fc 100644
--- a/third_party/blink/renderer/core/frame/local_frame.cc
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
@@ -808,10 +808,6 @@ bool LocalFrame::DetachImpl(FrameDetachType type) {
@@ -560,10 +560,6 @@ bool LocalFrame::DetachImpl(FrameDetachType type) {
}
DCHECK(!view_ || !view_->IsAttached());
@@ -63,7 +63,7 @@ index fd9c44f62701c3b4c70e46ab86992c34777a8579..975d90d7ce9ef5a39ac8e7407982495a
if (!Client())
return false;
@@ -858,6 +854,11 @@ bool LocalFrame::DetachImpl(FrameDetachType type) {
@@ -610,6 +606,11 @@ bool LocalFrame::DetachImpl(FrameDetachType type) {
DCHECK(!view_->IsAttached());
Client()->WillBeDetached();

View File

@@ -8,7 +8,7 @@ categories in use are known / declared. This patch is required for us
to introduce a new Electron category for Electron-specific tracing.
diff --git a/base/trace_event/builtin_categories.h b/base/trace_event/builtin_categories.h
index a9616406d4d3742c90aa0d1cf65ab84cfb8890ed..32142ed13cfca009e09578dff79e94030233cfbf 100644
index 96624924dd6f7b52cef042d707790a37cf648b95..008f4c2822897a4192ff361bcd2a1173414153cc 100644
--- a/base/trace_event/builtin_categories.h
+++ b/base/trace_event/builtin_categories.h
@@ -77,6 +77,7 @@

View File

@@ -11,10 +11,10 @@ if we ever align our .pak file generation with Chrome we can remove this
patch.
diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn
index a1aa8466ead6e428544ff00d7fcf3f92a3daf080..b7afa3200133220fecea3a410d90222082d1b961 100644
index 8e91c62655726024b75aefa312bbe2bd1dae1e76..5be231490705a83533e358e85278f959650d1843 100644
--- a/chrome/BUILD.gn
+++ b/chrome/BUILD.gn
@@ -172,11 +172,16 @@ if (!is_android && !is_mac) {
@@ -164,11 +164,16 @@ if (!is_android && !is_mac) {
"common/crash_keys.h",
]
@@ -33,10 +33,10 @@ index a1aa8466ead6e428544ff00d7fcf3f92a3daf080..b7afa3200133220fecea3a410d902220
"//base",
"//build:branding_buildflags",
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 57fa8d4642c61997081cc5c7336e253f019a1390..1d774971cc1557303b9ebfa9c6226bfdbccdf679 100644
index 022a61c9d3fc394e3cfdb1825fd9716f104e5342..f6b1179e02b7d2ffa33b76d38c9aa1e2e2c62636 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -4290,7 +4290,7 @@ static_library("browser") {
@@ -4321,7 +4321,7 @@ static_library("browser") {
# On Windows, the hashes are embedded in //chrome:chrome_initial rather
# than here in :chrome_dll.
@@ -46,10 +46,10 @@ index 57fa8d4642c61997081cc5c7336e253f019a1390..1d774971cc1557303b9ebfa9c6226bfd
}
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index f51ad2e7b6df421c902c61b5c0f0d3c4ca541cb1..a4c47f966324d75c7b4a9def367b354cf23dfa80 100644
index 52076828b335c301d587de67590c941c2421b0d4..d6932d1724864db1050a8558ffe2fdb80da30b50 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -5214,7 +5214,6 @@ test("unit_tests") {
@@ -5300,7 +5300,6 @@ test("unit_tests") {
assert(toolkit_views)
sources += [ "../browser/ui/startup/credential_provider_signin_info_fetcher_win_unittest.cc" ]
deps += [
@@ -57,7 +57,7 @@ index f51ad2e7b6df421c902c61b5c0f0d3c4ca541cb1..a4c47f966324d75c7b4a9def367b354c
"//chrome/browser:chrome_process_finder",
"//chrome/browser/safe_browsing/chrome_cleaner",
"//chrome/browser/safe_browsing/chrome_cleaner:public",
@@ -5227,6 +5226,12 @@ test("unit_tests") {
@@ -5313,6 +5312,12 @@ test("unit_tests") {
"//components/chrome_cleaner/public/proto",
"//ui/events/devices:test_support",
]
@@ -70,7 +70,7 @@ index f51ad2e7b6df421c902c61b5c0f0d3c4ca541cb1..a4c47f966324d75c7b4a9def367b354c
}
if (is_win || is_chromeos_ash || is_mac) {
@@ -5785,7 +5790,6 @@ test("unit_tests") {
@@ -5880,7 +5885,6 @@ test("unit_tests") {
}
deps += [
@@ -78,7 +78,7 @@ index f51ad2e7b6df421c902c61b5c0f0d3c4ca541cb1..a4c47f966324d75c7b4a9def367b354c
"//chrome/browser:cart_db_content_proto",
"//chrome/browser/media/router:test_support",
"//chrome/browser/promo_browser_command:mojo_bindings",
@@ -5820,6 +5824,9 @@ test("unit_tests") {
@@ -5916,6 +5920,9 @@ test("unit_tests") {
"//ui/color:test_support",
"//ui/native_theme:test_support",
]

View File

@@ -9,10 +9,10 @@ potentially prevent a window from being created.
TODO(loc): this patch is currently broken.
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
index 70bf5fae269d934b9658502c1efca4c364f199de..5c16a9ee9bbf461c24456613ff709f4f608e3441 100644
index 6162f83c8dd9b081a12cdb3079a6d0b6d51b3bce..8b5e24a52b3c89c29440406472b52224d83a015e 100644
--- a/content/browser/renderer_host/render_frame_host_impl.cc
+++ b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -6082,6 +6082,7 @@ void RenderFrameHostImpl::CreateNewWindow(
@@ -6233,6 +6233,7 @@ void RenderFrameHostImpl::CreateNewWindow(
last_committed_origin_, params->window_container_type,
params->target_url, params->referrer.To<Referrer>(),
params->frame_name, params->disposition, *params->features,
@@ -21,10 +21,10 @@ index 70bf5fae269d934b9658502c1efca4c364f199de..5c16a9ee9bbf461c24456613ff709f4f
&no_javascript_access);
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index 16f12ae09c0ad4ca720452a9afa6279645c2384e..0bd0bffa7f2166823148143c590283a03d8ef65b 100644
index 330c9beb1216f21e4b600b4ed2e41035031f1e36..1409770828f88d990d11d5a022b10bea5dadf35c 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -3770,6 +3770,14 @@ FrameTree* WebContentsImpl::CreateNewWindow(
@@ -3723,6 +3723,14 @@ FrameTree* WebContentsImpl::CreateNewWindow(
}
auto* new_contents_impl = new_contents.get();
@@ -39,7 +39,7 @@ index 16f12ae09c0ad4ca720452a9afa6279645c2384e..0bd0bffa7f2166823148143c590283a0
new_contents_impl->GetController().SetSessionStorageNamespace(
partition_id, session_storage_namespace);
@@ -3812,12 +3820,6 @@ FrameTree* WebContentsImpl::CreateNewWindow(
@@ -3765,12 +3773,6 @@ FrameTree* WebContentsImpl::CreateNewWindow(
AddWebContentsDestructionObserver(new_contents_impl);
}
@@ -53,13 +53,13 @@ index 16f12ae09c0ad4ca720452a9afa6279645c2384e..0bd0bffa7f2166823148143c590283a0
new_contents_impl, opener, params.target_url,
params.referrer.To<Referrer>(), params.disposition,
diff --git a/content/common/frame.mojom b/content/common/frame.mojom
index a61f273506fecd8574ffd0bb04d507adef7859c8..3a4a6efca3a66b12409da15e4f360fb8e3a40e2c 100644
index 192a5084eac3e9426ac8ddc4984b572d55c7a88a..63f53ff39240ea59a03f1a6f9d032444b0e4214d 100644
--- a/content/common/frame.mojom
+++ b/content/common/frame.mojom
@@ -519,6 +519,10 @@ struct CreateNewWindowParams {
@@ -523,6 +523,10 @@ struct CreateNewWindowParams {
// The impression associated with the navigation in the new window, if
// one is specified.
Impression? impression;
blink.mojom.Impression? impression;
+
+ // Extra fields added by Electron.
+ string raw_features;
@@ -68,10 +68,10 @@ index a61f273506fecd8574ffd0bb04d507adef7859c8..3a4a6efca3a66b12409da15e4f360fb8
// Operation result when the renderer asks the browser to create a new window.
diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc
index 0703cbb93d207e8d6529cc6005e5e66091ba03f0..dd18f6b137ae5c724400d4229a2867474824dc56 100644
index b5022114e4e196f8fc038b4a2079356596696bc0..9a16e8a4d35552712f154dc03df0564d169c377c 100644
--- a/content/public/browser/content_browser_client.cc
+++ b/content/public/browser/content_browser_client.cc
@@ -562,6 +562,8 @@ bool ContentBrowserClient::CanCreateWindow(
@@ -563,6 +563,8 @@ bool ContentBrowserClient::CanCreateWindow(
const std::string& frame_name,
WindowOpenDisposition disposition,
const blink::mojom::WindowFeatures& features,
@@ -81,10 +81,10 @@ index 0703cbb93d207e8d6529cc6005e5e66091ba03f0..dd18f6b137ae5c724400d4229a286747
bool opener_suppressed,
bool* no_javascript_access) {
diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h
index 6000d0326898e33cdf4b311c88e5400d8be71ed2..7430e483567b227630bc42933820e2d4e5559ed7 100644
index aae2616d650761fbb1482f63fff6794ceea69cb7..7628a3f9ecc95dd2eb6580fbf1a7c6fe57bb5a1c 100644
--- a/content/public/browser/content_browser_client.h
+++ b/content/public/browser/content_browser_client.h
@@ -160,6 +160,7 @@ class NetworkService;
@@ -164,6 +164,7 @@ class NetworkService;
class TrustedURLLoaderHeaderClient;
} // namespace mojom
struct ResourceRequest;
@@ -92,7 +92,7 @@ index 6000d0326898e33cdf4b311c88e5400d8be71ed2..7430e483567b227630bc42933820e2d4
} // namespace network
namespace sandbox {
@@ -923,6 +924,8 @@ class CONTENT_EXPORT ContentBrowserClient {
@@ -927,6 +928,8 @@ class CONTENT_EXPORT ContentBrowserClient {
const std::string& frame_name,
WindowOpenDisposition disposition,
const blink::mojom::WindowFeatures& features,
@@ -102,7 +102,7 @@ index 6000d0326898e33cdf4b311c88e5400d8be71ed2..7430e483567b227630bc42933820e2d4
bool opener_suppressed,
bool* no_javascript_access);
diff --git a/content/public/browser/web_contents_delegate.cc b/content/public/browser/web_contents_delegate.cc
index 9d906c4d2bab5ab152054e6745da850246f340d9..3c059e6e709759fe3f7aba342f9a0f4b36f329ff 100644
index a5b63a551ee8efba5f9ff666e8c27dc59558d703..ba12175d4458a7134eeb2080b3762b386fa05511 100644
--- a/content/public/browser/web_contents_delegate.cc
+++ b/content/public/browser/web_contents_delegate.cc
@@ -28,6 +28,17 @@ namespace content {
@@ -124,7 +124,7 @@ index 9d906c4d2bab5ab152054e6745da850246f340d9..3c059e6e709759fe3f7aba342f9a0f4b
const OpenURLParams& params) {
return nullptr;
diff --git a/content/public/browser/web_contents_delegate.h b/content/public/browser/web_contents_delegate.h
index 0574d390dc94aa1d17dfa9db805f846024b7956f..a2a3550272da12eee911a7ef0d9a21dd85dd23be 100644
index 78d340f66b5573fd9039956c9aa9f54a206055cd..a5c1cd18896881066cc4a8954092ab859e4768c1 100644
--- a/content/public/browser/web_contents_delegate.h
+++ b/content/public/browser/web_contents_delegate.h
@@ -16,6 +16,7 @@
@@ -150,10 +150,10 @@ index 0574d390dc94aa1d17dfa9db805f846024b7956f..a2a3550272da12eee911a7ef0d9a21dd
// typically happens when popups are created.
virtual void WebContentsCreated(WebContents* source_contents,
diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc
index 2f697c7819d8ec0acd04c3c2949c084eb830b341..12e85524a462a1846674e7f01eb8b6d6b3efdc8c 100644
index 30882aa4a8082a6597e1c8c0c26cc98c4e75bff7..612656c87f3565c5cfa7c0a52feff84a48d7334b 100644
--- a/content/renderer/render_view_impl.cc
+++ b/content/renderer/render_view_impl.cc
@@ -26,6 +26,7 @@
@@ -27,6 +27,7 @@
#include "third_party/blink/public/platform/impression_conversions.h"
#include "third_party/blink/public/platform/modules/video_capture/web_video_capture_impl_manager.h"
#include "third_party/blink/public/platform/url_conversion.h"
@@ -161,7 +161,7 @@ index 2f697c7819d8ec0acd04c3c2949c084eb830b341..12e85524a462a1846674e7f01eb8b6d6
#include "third_party/blink/public/web/modules/mediastream/web_media_stream_device_observer.h"
#include "third_party/blink/public/web/web_frame_widget.h"
#include "third_party/blink/public/web/web_local_frame.h"
@@ -284,6 +285,10 @@ WebView* RenderViewImpl::CreateView(
@@ -285,6 +286,10 @@ WebView* RenderViewImpl::CreateView(
params->impression = blink::ConvertWebImpressionToImpression(*impression);
}
@@ -173,10 +173,10 @@ index 2f697c7819d8ec0acd04c3c2949c084eb830b341..12e85524a462a1846674e7f01eb8b6d6
// moved on send.
bool is_background_tab =
diff --git a/content/web_test/browser/web_test_content_browser_client.cc b/content/web_test/browser/web_test_content_browser_client.cc
index d21606dd0a194a645decdc81a0c1390e0492ded0..c015934debd27937d583269950c2e2d5dc82cd53 100644
index c6872573086e628a894f482877db2d417552c6a1..5e67b6a59c3e3d6881f738985ab947a2d7902f0a 100644
--- a/content/web_test/browser/web_test_content_browser_client.cc
+++ b/content/web_test/browser/web_test_content_browser_client.cc
@@ -451,6 +451,8 @@ bool WebTestContentBrowserClient::CanCreateWindow(
@@ -450,6 +450,8 @@ bool WebTestContentBrowserClient::CanCreateWindow(
const std::string& frame_name,
WindowOpenDisposition disposition,
const blink::mojom::WindowFeatures& features,
@@ -186,7 +186,7 @@ index d21606dd0a194a645decdc81a0c1390e0492ded0..c015934debd27937d583269950c2e2d5
bool opener_suppressed,
bool* no_javascript_access) {
diff --git a/content/web_test/browser/web_test_content_browser_client.h b/content/web_test/browser/web_test_content_browser_client.h
index c65d30c9187dd275488ed74bcc3a4eb918d2cbce..e4c6c828150e91f555b1b42e1988a1013ab1a1f0 100644
index 427656a1a01a9305459a8f1d6616fd0666413b39..c8e296286cdd148348932d2bdfa4d064f8cbe36d 100644
--- a/content/web_test/browser/web_test_content_browser_client.h
+++ b/content/web_test/browser/web_test_content_browser_client.h
@@ -83,6 +83,8 @@ class WebTestContentBrowserClient : public ShellContentBrowserClient {
@@ -220,10 +220,10 @@ index 84d32491a56528a84b4395fba1d54cdbb38d522b..09998a83c449ef8cd9f360fbcdcf7edc
} // namespace blink
diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_party/blink/renderer/core/frame/local_dom_window.cc
index 9797f3dfa05ada91cb83a6d271df19a5fbb1ab93..fc7278a77d78096b7eb804fae9210d9dea8bbf17 100644
index 071399cc4e72a01e9973fe1dbab63e388ee3e09d..d97f53b51113222ed15d607a0796cf19e785eb45 100644
--- a/third_party/blink/renderer/core/frame/local_dom_window.cc
+++ b/third_party/blink/renderer/core/frame/local_dom_window.cc
@@ -1989,6 +1989,7 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate,
@@ -1999,6 +1999,7 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate,
WebWindowFeatures window_features =
GetWindowFeaturesFromString(features, incumbent_window);

View File

@@ -34,38 +34,6 @@ index 5b4d70991e19edcdfee731c56251932bf43e535f..fe1977c5e6ce0f5b30e8be529b9efa51
};
#endif // CHROME_BROWSER_ANDROID_DOCUMENT_DOCUMENT_WEB_CONTENTS_DELEGATE_H_
diff --git a/chrome/browser/chromeos/first_run/drive_first_run_controller.cc b/chrome/browser/chromeos/first_run/drive_first_run_controller.cc
index da0ad734988065816dc32198d2aaac0062786813..ab83950ac2a90b773635fdfb6016623c0b40c9f9 100644
--- a/chrome/browser/chromeos/first_run/drive_first_run_controller.cc
+++ b/chrome/browser/chromeos/first_run/drive_first_run_controller.cc
@@ -124,8 +124,7 @@ class DriveWebContentsManager : public content::WebContentsObserver,
content::SiteInstance* source_site_instance,
content::mojom::WindowContainerType window_container_type,
const GURL& opener_url,
- const std::string& frame_name,
- const GURL& target_url) override;
+ const mojom::CreateNewWindowParams& params) override;
content::WebContents* CreateCustomWebContents(
content::RenderFrameHost* opener,
content::SiteInstance* source_site_instance,
@@ -239,15 +238,14 @@ bool DriveWebContentsManager::IsWebContentsCreationOverridden(
content::SiteInstance* source_site_instance,
content::mojom::WindowContainerType window_container_type,
const GURL& opener_url,
- const std::string& frame_name,
- const GURL& target_url) {
+ const mojom::CreateNewWindowParams& params) {
if (window_container_type == content::mojom::WindowContainerType::NORMAL)
return false;
// Check that the target URL is for the Drive app.
const extensions::Extension* extension =
extensions::ExtensionRegistry::Get(profile_)
- ->enabled_extensions().GetAppByURL(target_url);
+ ->enabled_extensions().GetAppByURL(params.target_url);
return extension && extension->id() == app_id_;
}
diff --git a/chrome/browser/media/offscreen_tab.cc b/chrome/browser/media/offscreen_tab.cc
index 412e6b05265a97077c3b617e12908c88719e6e73..8365a0d5923beb2ffbd837535db2abc23e32e891 100644
--- a/chrome/browser/media/offscreen_tab.cc
@@ -140,10 +108,10 @@ index ef84e04d628fb5cdbaf8fbbf84af3bf23e00c522..f1ee0bee5bfd08227a29498f8410d5d3
}
diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc
index 8a1af8eb8efd51d51e9ea4155dc55a493673a74b..563a95d6ee87d61b086d7aa822a5c547c4bbaf1e 100644
index 6457f70efbfa752087a0f0fc63e758aa8e82e517..d369f8d8934b5d9e8bc77587b5ea44ae7a26bee4 100644
--- a/chrome/browser/ui/browser.cc
+++ b/chrome/browser/ui/browser.cc
@@ -1786,12 +1786,11 @@ bool Browser::IsWebContentsCreationOverridden(
@@ -1780,12 +1780,11 @@ bool Browser::IsWebContentsCreationOverridden(
content::SiteInstance* source_site_instance,
content::mojom::WindowContainerType window_container_type,
const GURL& opener_url,
@@ -159,10 +127,10 @@ index 8a1af8eb8efd51d51e9ea4155dc55a493673a74b..563a95d6ee87d61b086d7aa822a5c547
WebContents* Browser::CreateCustomWebContents(
diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h
index ab9c5fb85f83b2ffb04bf21be631d38cfacd8835..6166d92517629ce17b48845f30c2086ce26ceabf 100644
index c9e430a6ddcd5089bfa6e0f8b24e326412f5b207..4c736a1aa2a824ae59bc75290a6b86ede369b0bb 100644
--- a/chrome/browser/ui/browser.h
+++ b/chrome/browser/ui/browser.h
@@ -803,8 +803,7 @@ class Browser : public TabStripModelObserver,
@@ -790,8 +790,7 @@ class Browser : public TabStripModelObserver,
content::SiteInstance* source_site_instance,
content::mojom::WindowContainerType window_container_type,
const GURL& opener_url,
@@ -264,10 +232,10 @@ index c5c5a7b63b5b3b62a9517cbef3ae23ce57a3c89c..4f1b7e88d6d2ae89a60311c8aeb1fcee
void AddNewContents(content::WebContents* source,
std::unique_ptr<content::WebContents> new_contents,
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc
index fed37a4d228e89e658d1ddcd3dc10c419cbb487c..69ea4796e62fc492a3444a92e7dfc14a9e079ce3 100644
index 44962d3588752685a9f274cd61b5dbe00e1564a7..2c21f22aa27609ab5421e35184a24c2572812b7a 100644
--- a/content/browser/web_contents/web_contents_impl.cc
+++ b/content/browser/web_contents/web_contents_impl.cc
@@ -3718,8 +3718,7 @@ FrameTree* WebContentsImpl::CreateNewWindow(
@@ -3671,8 +3671,7 @@ FrameTree* WebContentsImpl::CreateNewWindow(
if (delegate_ && delegate_->IsWebContentsCreationOverridden(
source_site_instance, params.window_container_type,
@@ -278,7 +246,7 @@ index fed37a4d228e89e658d1ddcd3dc10c419cbb487c..69ea4796e62fc492a3444a92e7dfc14a
static_cast<WebContentsImpl*>(delegate_->CreateCustomWebContents(
opener, source_site_instance, is_new_browsing_instance,
diff --git a/content/public/browser/web_contents_delegate.cc b/content/public/browser/web_contents_delegate.cc
index 3c059e6e709759fe3f7aba342f9a0f4b36f329ff..c39d3cddfec0ea06c97a3c0a9c6493c398bbbea8 100644
index ba12175d4458a7134eeb2080b3762b386fa05511..8b0481e71cd62b45eebfcb340671feb92283802f 100644
--- a/content/public/browser/web_contents_delegate.cc
+++ b/content/public/browser/web_contents_delegate.cc
@@ -136,8 +136,7 @@ bool WebContentsDelegate::IsWebContentsCreationOverridden(
@@ -292,7 +260,7 @@ index 3c059e6e709759fe3f7aba342f9a0f4b36f329ff..c39d3cddfec0ea06c97a3c0a9c6493c3
}
diff --git a/content/public/browser/web_contents_delegate.h b/content/public/browser/web_contents_delegate.h
index a2a3550272da12eee911a7ef0d9a21dd85dd23be..6ad04f6be7b6fa89ca7f910b34eea20eea18cce5 100644
index a5c1cd18896881066cc4a8954092ab859e4768c1..a03e54ec79b92fd69c5dc1f4b78210e3ae1c764d 100644
--- a/content/public/browser/web_contents_delegate.h
+++ b/content/public/browser/web_contents_delegate.h
@@ -317,8 +317,7 @@ class CONTENT_EXPORT WebContentsDelegate {
@@ -306,7 +274,7 @@ index a2a3550272da12eee911a7ef0d9a21dd85dd23be..6ad04f6be7b6fa89ca7f910b34eea20e
// Allow delegate to creates a custom WebContents when
// WebContents::CreateNewWindow() is called. This function is only called
diff --git a/extensions/browser/guest_view/extension_options/extension_options_guest.cc b/extensions/browser/guest_view/extension_options/extension_options_guest.cc
index 5f49edfabed15d691dc6cc7b17896165297735a7..d64baa43afcf5a0f87797995b84b60d84e1f05a2 100644
index 78d1bed80f2cf0f0774617c149d695f3dce3d712..ed08199cea6137d09cb95f0da4a283caf819d688 100644
--- a/extensions/browser/guest_view/extension_options/extension_options_guest.cc
+++ b/extensions/browser/guest_view/extension_options/extension_options_guest.cc
@@ -212,8 +212,7 @@ bool ExtensionOptionsGuest::IsWebContentsCreationOverridden(
@@ -362,7 +330,7 @@ index bb90319f768ed2f3a3e530d64bf622de585ce163..d84de1d218267887f6b8624f913438eb
content::RenderFrameHost* opener,
content::SiteInstance* source_site_instance,
diff --git a/fuchsia/engine/browser/frame_impl.cc b/fuchsia/engine/browser/frame_impl.cc
index 34a11c791c6044c6a1fcea65807a9055723c89d4..a437cfe197194c0fb7082a4811c238b1c22bfa67 100644
index 3e943e814ed1876c2f612faceb91abbb2f34c5f4..532740723aa9f061ea2122f4dee6084afb8cbdbe 100644
--- a/fuchsia/engine/browser/frame_impl.cc
+++ b/fuchsia/engine/browser/frame_impl.cc
@@ -388,8 +388,7 @@ bool FrameImpl::IsWebContentsCreationOverridden(
@@ -376,10 +344,10 @@ index 34a11c791c6044c6a1fcea65807a9055723c89d4..a437cfe197194c0fb7082a4811c238b1
// can catch bad client behavior while not interfering with normal operation.
constexpr size_t kMaxPendingWebContentsCount = 10;
diff --git a/fuchsia/engine/browser/frame_impl.h b/fuchsia/engine/browser/frame_impl.h
index a9e134ba416af9ca27c580892bd1c4599912ec82..39ddf61c9506b6bb12b3fe51e0a1cabacd3ece70 100644
index e2736c5329d9516fdd417df4dff8039f991e800e..11081373e0d70e7ec366c6917c21db61c4e18cca 100644
--- a/fuchsia/engine/browser/frame_impl.h
+++ b/fuchsia/engine/browser/frame_impl.h
@@ -242,8 +242,7 @@ class FrameImpl : public fuchsia::web::Frame,
@@ -245,8 +245,7 @@ class FrameImpl : public fuchsia::web::Frame,
content::SiteInstance* source_site_instance,
content::mojom::WindowContainerType window_container_type,
const GURL& opener_url,
@@ -404,10 +372,10 @@ index dd1f6129173a0e19023f4ec9b66c44486b080456..d10468c06f84b59387af0a8fd5bc1c06
->options()
->block_new_web_contents();
diff --git a/ui/views/controls/webview/web_dialog_view.cc b/ui/views/controls/webview/web_dialog_view.cc
index 606f82c4e9708c4099425603b6e8c3e6859f088b..b8a2dfb475c0ca9ae24901ca31bb92f328827bf7 100644
index aba1ecfde2be3371099bf9c729794b22a8849f02..8919bf1cab7a3bc3faac10ed0d86b9390af009b8 100644
--- a/ui/views/controls/webview/web_dialog_view.cc
+++ b/ui/views/controls/webview/web_dialog_view.cc
@@ -438,8 +438,7 @@ bool WebDialogView::IsWebContentsCreationOverridden(
@@ -426,8 +426,7 @@ bool WebDialogView::IsWebContentsCreationOverridden(
content::SiteInstance* source_site_instance,
content::mojom::WindowContainerType window_container_type,
const GURL& opener_url,
@@ -418,10 +386,10 @@ index 606f82c4e9708c4099425603b6e8c3e6859f088b..b8a2dfb475c0ca9ae24901ca31bb92f3
return delegate_->HandleShouldOverrideWebContentsCreation();
return false;
diff --git a/ui/views/controls/webview/web_dialog_view.h b/ui/views/controls/webview/web_dialog_view.h
index 978155add287e3ce57ece8db0b142a7154b378b0..7bdfe79c5c77f91cdd59df65761504b1f532b2e4 100644
index d4d633809610215c589405d20e1137280c55468b..f66a83101c5e5518705c4d23ad963bf0a170241e 100644
--- a/ui/views/controls/webview/web_dialog_view.h
+++ b/ui/views/controls/webview/web_dialog_view.h
@@ -160,8 +160,7 @@ class WEBVIEW_EXPORT WebDialogView : public ClientView,
@@ -155,8 +155,7 @@ class WEBVIEW_EXPORT WebDialogView : public ClientView,
content::SiteInstance* source_site_instance,
content::mojom::WindowContainerType window_container_type,
const GURL& opener_url,

View File

@@ -7,10 +7,10 @@ spellchecker uses a few IDS_ resources. We need to load these from
Electrons grit header instead of Chromes
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index c77a5d0e3eb23fcb6940b333b9eb8e472be0f601..57fa8d4642c61997081cc5c7336e253f019a1390 100644
index 373fa2f3375b42fc4f410e5ad75cd5069bbebedb..022a61c9d3fc394e3cfdb1825fd9716f104e5342 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -6444,6 +6444,7 @@ static_library("browser") {
@@ -6517,6 +6517,7 @@ static_library("browser") {
deps += [
"//components/spellcheck/browser",
"//components/spellcheck/common",
@@ -32,10 +32,10 @@ index 2b7aa1add57dccbcbf8202cead5b7d2d5a174270..2ba03fc045f2e4bb12f173aacb6581cc
#include "components/pref_registry/pref_registry_syncable.h"
#include "components/prefs/pref_service.h"
diff --git a/components/language/core/browser/BUILD.gn b/components/language/core/browser/BUILD.gn
index 41761e18716a7d9221511978dc4582a1804920e2..faea3d936c678e31fa29b93ae1ccd976ad52c7a1 100644
index 1ece01a38683e81fdf07ec475c2bf1bf19fab891..668789ca5c0b3b6381313dbb4cccf119b80e9b66 100644
--- a/components/language/core/browser/BUILD.gn
+++ b/components/language/core/browser/BUILD.gn
@@ -34,6 +34,7 @@ static_library("browser") {
@@ -28,6 +28,7 @@ static_library("browser") {
"//components/pref_registry",
"//components/prefs",
"//components/strings",

View File

@@ -7,7 +7,7 @@ Disable persiste licence support check for widevine cdm,
as its not supported in the current version of chrome.
diff --git a/chrome/renderer/media/chrome_key_systems.cc b/chrome/renderer/media/chrome_key_systems.cc
index ac83e2c1290d16db38d6f91f3bb7eeab1adafed6..7f6b9cb64bbf3533c2d2f4ee30566e3ee4e217fa 100644
index f0e1a2dda1dd933bb15d726c5d95de416039649b..1d7df102cdc9e3cf7f8ae5b0858bf0fe1d9301be 100644
--- a/chrome/renderer/media/chrome_key_systems.cc
+++ b/chrome/renderer/media/chrome_key_systems.cc
@@ -16,7 +16,9 @@

View File

@@ -74,6 +74,32 @@ index 39557cce474439238255ecd28030215085db0c81..5b3f980837911c710686ab91a2a81c31
#if defined(OS_ANDROID)
// Used by WebView to sample crashes without generating the unwanted dumps. If
// the returned value is less than 100, crash dumping will be sampled to that
diff --git a/components/crash/core/app/crashpad_linux.cc b/components/crash/core/app/crashpad_linux.cc
index 5f97c1ef00d9c63a7b16265cc97d9f145adae550..8c3028f228373b5e1145fe3235dc06663f8b087f 100644
--- a/components/crash/core/app/crashpad_linux.cc
+++ b/components/crash/core/app/crashpad_linux.cc
@@ -165,6 +165,7 @@ base::FilePath PlatformCrashpadInitialization(
// where crash_reporter provides it's own values for lsb-release.
annotations["lsb-release"] = base::GetLinuxDistro();
#endif
+ crash_reporter_client->GetProcessSimpleAnnotations(&annotations);
std::vector<std::string> arguments;
if (crash_reporter_client->ShouldMonitorCrashHandlerExpensively()) {
@@ -186,6 +187,13 @@ base::FilePath PlatformCrashpadInitialization(
}
#endif
+ if (!crash_reporter_client->GetShouldRateLimit()) {
+ arguments.push_back("--no-rate-limit");
+ }
+ if (!crash_reporter_client->GetShouldCompressUploads()) {
+ arguments.push_back("--no-upload-gzip");
+ }
+
bool result =
client.StartHandler(handler_path, database_path, metrics_path, url,
annotations, arguments, false, false);
diff --git a/components/crash/core/app/crashpad_mac.mm b/components/crash/core/app/crashpad_mac.mm
index e3fc1fb2bcab31d6a7cb325a892acb26dc00d4e4..fd654d6e514de416457c283caeb1895dba6286e1 100644
--- a/components/crash/core/app/crashpad_mac.mm

View File

@@ -17,10 +17,10 @@ only one or two specific checks fail. Then it's better to simply comment out the
failing checks and allow the rest of the target to have them enabled.
diff --git a/ui/base/clipboard/clipboard_win.cc b/ui/base/clipboard/clipboard_win.cc
index f790065679a560251a9368c82549ed386a2396c9..7ce509e58839e574443cf486193139b3602634cf 100644
index 81b5e9cdec8c1cf231f9e2e41e2fb38e932c4734..441bf38faeefc4d0b98010e8051df2ed4ab73dd4 100644
--- a/ui/base/clipboard/clipboard_win.cc
+++ b/ui/base/clipboard/clipboard_win.cc
@@ -923,10 +923,10 @@ SkBitmap ClipboardWin::ReadImageInternal(ClipboardBuffer buffer) const {
@@ -913,10 +913,10 @@ SkBitmap ClipboardWin::ReadImageInternal(ClipboardBuffer buffer) const {
void ClipboardWin::WriteToClipboard(ClipboardFormatType format, HANDLE handle) {
UINT cf_format = format.ToFormatEtc().cfFormat;

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