* build: ensure symbol files are named lowercase on disk so that boto can find them
* build: only do the lower case symbol copy on case sensitive file systems (#24876)
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
Co-authored-by: Samuel Attard <sattard@slack-corp.com>
* feat: add worldSafe flag for executeJS results
* chore: do not log warning for webContents.executeJS
* Apply suggestions from code review
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* chore: apply PR feedback
* chore: split logic a bit
* chore: allow primitives through the world safe checl
* chore: clean up per PR feedback
* chore: flip boolean logic
* chore: update per PR feedback
* chore: fix typo
* chore: fix spec
* Update web-frame.ts
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
Co-authored-by: Samuel Attard <sattard@slack-corp.com>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* fix: generate dumps under crashDumps folder in linux
* Update spec-main/api-crash-reporter-spec.ts
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* fix: cleanup webview zoom level observers on navigation
* add spec
* webview should be on same partition
* wait for webview to finish loading
Co-authored-by: deepak1556 <hop2deep@gmail.com>
* fix: Use ElectronAdaptedContentView
* fix: Actually, nevermind, it's "BrowserAccessebilityCocoa"
* chore: Remove things instead of manually keeping them
Co-authored-by: Felix Rieseberg <felix@felixrieseberg.com>
Address incorrect typing for isEnabled. The root cause of this was due
to missing backticks which caused the docs parser to think that the
return type of the `isEnabled` function was null, where it was supposed
to be a boolean type.
The side effect of this was that the generated typescript typings were
incorrect for this function.
Fixes#24409
Co-authored-by: Sam Saccone <samccone@gmail.com>
* fix: let Node.js perform microtask checkpoint in the main process
* fix: don't specify v8::MicrotasksScope for explicit policy
* fix: remove checkpoint from some call-sites
We already perform checkpoint at the end of a task,
either through MicrotaskRunner or through NodeBindings.
There isn't a need to add them again when calling into JS
except when dealing with promises.
* fix: remove checkpoint from some call-sites
We already perform checkpoint at the end of a task,
either through MicrotaskRunner or through NodeBindings.
There isn't a need to add them again when calling into JS
except when dealing with promises.
* fix incorrect specs
* default constructor arguments are considered for explicit mark
* add regression spec
* build: fix for "enable_desktop_capturer = false" (#23864)
* build: fix filenames autogen with new BUILDFLAG syntax (#23952)
* fix: default to NTLM v2 in the network service for POSIX platforms (#23846)
* chore: update patch
Co-authored-by: Alexey Kuzmin <alkuzmin@microsoft.com>
Co-authored-by: Samuel Attard <sattard@slack-corp.com>
* fix: Make the `--disable-color-correct-rendering` switch work again
This regressed once again in Electron 8 due to Chromium changes.
Test Plan:
- Confirm that test case from https://github.com/electron/electron/pull/15898#issuecomment-443191770 now works
Notes: Fix disabling color correct rendering with `--disable-color-correct-rendering`
* update patches
Co-authored-by: Biru Mohanathas <birunthan@mohanathas.com>
Co-authored-by: Electron Bot <anonymous@electronjs.org>
The devtools profiler is not attached at the point we run out init scripts (or our apps preload scripts), we do not really want to change when we run these init scripts but for when a dev is doing performance work it makes sense to give them an option to make the devtools profiler actually work on both our init scripts and their preload script. This PR adds that logic behind an environment variable ELECTRON_PROFILE_INIT_SCRIPTS.
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
When application is activated thru macOS app switcher (cmd+tab) the
App's activate event is note emitted. The reason is that
`applicationShouldHandleReopen:hasVisibleWindows:` is sent only when app
is activated via Dock. Using `applicationDidBecomeActive:` is handling
all cases properly.
Co-authored-by: Lukas Weber <luweber@microsoft.com>
* test: do not run SpellChecker tests if the features is disabled at build time
* fixup! test: do not run SpellChecker tests if the features is disabled at build time
* fixup! test: do not run SpellChecker tests if the features is disabled at build time
* fix: exclude crashpad_handler binary on linux
* Update build/zip.py
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
Co-authored-by: Jeremy Apthorp <jeremya@chromium.org>
PR numbers are almost always listed parenthetically in the commit message;
but when something is committed manually, it could be missing. This change
uses octokit's listPullRequestsAssociatedWithCommit() as a second approach
to finding a commit's PR.
Last night's Releases WG meeting noted that "re-enable pdf viewer" was
missing from the notes. This PR fixes that omission.
Co-authored-by: Charles Kerr <charles@charleskerr.com>
It can cause build failures because the header is generated
and there's no explicit dependency on a target that creates it.
Co-authored-by: Aleksei Kuzmin <alkuzmin@microsoft.com>
* chore: bump chromium in DEPS to 83.0.4103.46
* chore: bump chromium in DEPS to 83.0.4103.48
* chore: bump chromium in DEPS to 83.0.4103.49
* chore: bump chromium in DEPS to 83.0.4103.50
* update patches
Co-authored-by: Electron Bot <anonymous@electronjs.org>
* fix: do not initialize any extension related logic in OffTheRecord contexts
* chore: fix linting
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
This commit fixes https://github.com/electron/electron/issues/18829
Previously the full preferences set to OS was not given to Chromium.
Also, this commit improves fallback font selection for CJK text.
Chromium uses browser languages to determine fallback fonts on Windows,
especially kanji/han characters in CJK.
For instance, when user sets 'en-US, ja-JP' to Accept-Language,
while Chromium chooses Japanese font for kanji text, but Electron
chooses Chinese font. This is because only the first language was given
to Accept-Language on Electron.
This patch is based on https://github.com/electron/electron/pull/15532
Co-authored-by: Nitish Sakhawalkar <nitsakh@icloud.com>
Co-authored-by: Kasumi Hanazuki <kasumi@rollingapple.net>
Co-authored-by: Nitish Sakhawalkar <nitsakh@icloud.com>
Co-authored-by: Kasumi Hanazuki <kasumi@rollingapple.net>
Co-authored-by: Sorah Fukumori <her@sorah.jp>
Co-authored-by: Nitish Sakhawalkar <nitsakh@icloud.com>
Co-authored-by: Kasumi Hanazuki <kasumi@rollingapple.net>
* chore: bump chromium in DEPS to 83.0.4103.38
* chore: bump chromium in DEPS to 83.0.4103.39
* chore: bump chromium in DEPS to 83.0.4103.40
* chore: bump chromium in DEPS to 83.0.4103.41
There are use cases of webview where the container holding the webview is not
actually destroyed first, instead just webview gets removed from DOM, in such
situations the browser process map is not updated accordingly and holds reference
to stale guest contents, and any window operations like scroll, resize or keyboard
events that has to chain through browser embedder will lead to UAF crash.
Ref: https://github.com/microsoft/vscode/issues/92420
Co-authored-by: deepak1556 <hop2deep@gmail.com>
* docs: `newGuest` in `WebContents` and `webContents` in `BrowsweWindow`
According to the example codes in the documentation of `new-window`
event in `WebContents`, `webContents` in `BrowsweWindow` constructor
options and `newGuest` in `event` argument of `new-window` handler are
both existing but documented. This patch is for adding the related
documentations. Also, it provides typescript-definitations for these
two properties.
* Remove the documnent of `webContents` in BrowserWindow constructor option.
Co-authored-by: Sean Lee <sean.l@canva.com>
* chore: bump chromium in DEPS to 83.0.4103.27
* chore: bump chromium in DEPS to 83.0.4103.28
* chore: bump chromium in DEPS to 83.0.4103.29
* chore: bump chromium in DEPS to 83.0.4103.30
* chore: bump chromium in DEPS to 83.0.4103.31
* update patches
Co-authored-by: Electron Bot <anonymous@electronjs.org>
* refactor: port parts of window-setup to use ctx bridge instead of being run in the main world (#23194)
* refactor: port parts of window-setup to use ctx bridge instead of being run in the main world
* chore: update ctx bridge specs for new base numbers
* refactor: port window.open and window.opener to use ctx bridge instead of hole punching (#23235)
* refactor: port window.open and window.opener to use ctx bridge instead of hole punching
* refactor: only run the isolated init bundle when webview is enabled
* refactor: precache the IsWindowStateEvent() atom
XAtoms never change after creation so we can perload the atoms we need.
This is useful in WindowStateWatcher's XEvent handler, which is called
on every XEvent, e.g. mouse movement...
* empty commit for ci
* fix: block custom window.open when nativeWindowOpen is true
* Update guest-window-manager.js
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
Co-authored-by: Jeremy Apthorp <jeremya@chromium.org>
* chore: bump chromium in DEPS to 83.0.4103.17
* chore: bump chromium in DEPS to 83.0.4103.18
* chore: bump chromium in DEPS to 83.0.4103.19
* chore: bump chromium in DEPS to 83.0.4103.20
* fix: do not crash if the window is closed syncronously with a nativeTheme change
* fix: propogate preferred color scheme to the renderer and keep it up to date
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
Lack of this change will lead to freeze after call to hide/show
on window which has set flag disable_hidden_. To reproduce the
problem it's necessary to create some number of windows (how many
it depends on number of windows being cached by Chromium's
FrameEvictionManager).
Co-authored-by: Cezary Kulakowski <cezary@openfin.co>
* fix: enable workaround for nativeWindowOpen hang
* add test
* test: ensure window doesn't leak into other test
* update to use new webcontents delegate methods
Co-authored-by: Andy Locascio <andy@slack-corp.com>
* chore: refactor all the net specs to be async with better error handling (#22731)
* chore: fix net specs when rerunning locally (#22745)
* feat: add support for net requests to use the session cookie store (#22704)
* fix: allow net requests to use Same-Site cookies (#22788)
* build: auto-generate the codesigning cert used for macOS CI testing runs
* build: give the cert ALL the trust values
* chore: also import public key
* idek
Co-authored-by: Samuel Attard <sattard@slack-corp.com>
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
* feat(extensions): add chrome.tabs.connect API
* test(extensions): verify that chrome.tabs.connect port communication works
Co-authored-by: samuelmaddock <samuel.maddock@gmail.com>
* docs: clean up systemPreferences.effectiveAppearance text
* Grammar fixes
* Add links for Electron Packager & Electron Forge
* Update Packager API links, given https://github.com/electron/electron-packager/pull/1131
* docs: clean up Dark Mode guide
* Grammar fixes
* Add links for Electron Packager & Electron Forge
* docs: adjust based on Electron 8 using 10.14 SDK
Co-authored-by: Mark Lee <electronjs@lazymalevolence.com>
* fix: allow persistent media salts
* chore: add regression test for persistent media device ids across reloads
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
* fix: disable contextBridge object identity caching
* cleanup
* chore: make non-const references raw pointers
* fix: zero-param constructors are not explicit
* refactor: use base::LinkedList
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
* feat: set app.enableRendererProcessReuse to true by default
* chore: add context aware info to breaking changes doc
* spec: fix nodeIntegration in child windows test for rendererprocessreuse
* spec: fix remote listeners in destroyed renderers spec as the error is now async
* Update api-browser-window-spec.ts
* chore: deprecate affinity
* chore: fix docs
* spec: handle tests crashing without an exist code
* spec: update tests for new rendererprocessreuse default
* spec: with renderer process re-use we get to destroy less views
* feat: add API for receiving logs from service workers
* feat: add new serviceWorkerContext APIs
* chore: add missing #include's
* refactor: rename serviceWorkerContext to serviceWorkers
* chore: clean up based on review
* chore: remove native_mate
* chore: add tests for the service worker module
* Update spec-main/api-service-workers-spec.ts
Co-Authored-By: Jeremy Apthorp <jeremya@chromium.org>
* chore: fix linting
* chore: handle renames
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
* fix: emit will-navigate for sandboxed contents
* uncomment test
* more tests
* use ShouldFork instead of browser_handles_all_top_level_requests
* forward post data in OpenURLFromTab
* align OpenURLFromTab with chrome's version (browser_navigator.cc/LoadURLInContents)
* add tests for navigating from file: and about:blank to http:
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
* fix(extensions): set lowest isolated world id
* refactor: move world IDs into separate header file
Several files are including electron_render_frame_observer.h just for the world IDs.
Co-authored-by: Samuel Maddock <samuel.maddock@gmail.com>
* fix: add patch to disable remote layer APIs
* fix: use --disable-gpu-memory-buffer-compositor-resources for MAS build
Co-authored-by: Cheng Zhao <zcbenz@github.com>
* fix: web request support proxying websocket
* fix: make tests work
* chore: do not use api:: code outside api/ folder
* chore: do not create proxy when no listener
* test: use separate session to avoid conflicts
* chore: address review
Co-authored-by: Cheng Zhao <zcbenz@github.com>
* ci: fix build failure on doc only changes
* ci: fix doc-only check when CI fires on branch before PR is created
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
* build: preserve timestamps when stripping files
Resolves an issue where the binaries in mksnapshot.zip were not getting stripped.
* Add missing comma
* Update script/strip-binaries.py
Co-Authored-By: Jeremy Apthorp <jeremya@chromium.org>
* Don't try to run strip on macOS
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
* build: copy chromedriver to correct location
* build: try to free up disk space for macos releases
* get verbose mode working on strip-binaries
* Only use separate chromedriver build arm/arm64
* fixup circleci config
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
* build: don't use component_ffmpeg for chromedriver
* Fixup mac chromedriver build
* Update location of chromedriver.zip
* Fixup macos chromedriver build
* compile to right directory
* docs: add references to app.whenReady() in isReady
* refactor: prefer app.whenReady()
In the docs, specs, and lib, replace instances of `app.once('ready')`
(seen occasionally) and `app.on('ready')` (extremely common) with
`app.whenReady()`.
It's better to encourage users to use whenReady():
1. it handles the edge case of registering for 'ready' after it's fired
2. it avoids the minor wart of leaving an active listener alive for
an event that wll never fire again
* chore: bump chromium in DEPS to 68d7ef9b31f3f164a967109212e84a8d756cc80f
* Update patches
* Update location of file_info.h
* Update sysroots
* chore: bump chromium in DEPS to 47114394b1c8a35438d19da7538142380551a2ce
* Update patches
* ci: update docker image to pickup new ia32 dep
* Skip .info files in dist.zip
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
* docs: add links to the issue tracker
Adding links to the issue tracker for existing issues and submission of
new issues makes it easier to do what is otherwise well described in the
issues doc.
There are direct links to the issue tracker in other introductory docs,
so I see no reason not to have them here, to facilitate access.
* docs: update issues TOC
* Changes recommended by malept
* docs: fix missing import, explicitly use nativeTheme api
* Update docs/tutorial/mojave-dark-mode-guide.md
Co-Authored-By: Charles Kerr <ckerr@github.com>
* switch to nativeTheme event
Co-authored-by: Charles Kerr <ckerr@github.com>
* fix: systray icon demotion
Adding support for GUID parameter in Tray API.
In combination with signed binaries this allows to maintain
the position in the systray on Windows.
* unit tests
* make mac and linux compile
* fix: ensure web_contents is not nullptr in UpdateDraggableRegions
This is a speculative fix for a crash in `UpdateDraggableRegions` that we've noticed
* Update atom_api_browser_window_mac.mm
* Update atom_api_browser_window_mac.mm
* fix: no error messages?
* Revert "fix: no error messages?"
This reverts commit 14a1078493.
* fix: add executable to chromedriver's rpath for electron 8+
* chore: bump chromium in DEPS to edc531fae69669e1d2c51901c686b055da965f2d
* Update patches
* Update to use content::DevToolsAgentHostClientChannel.
9d14e4b8a3
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
Since electron zip are including build dates the checksum of each of
these zip files is time dependant. In order to fix this issue strip all
the dates contained in each of the zip entries.
The documentation is currently pointing to a download link that leads to a 404 for the ARM64 version of `node.lib`. This change updates the link to the correct download for ARM64 `node.lib`.
* fix: use powerMonitor.on() only after app is ready
powerMonitor can't be used until the app is ready; however, on Linux,
powerMonitor.on() was called as soon as lib/browser/api/power-monitor.ts
was loaded.
This patch takes @vladimiry's suggestion of wrapping that in an
app.on('ready') handler to prevent powerMonitor.on() from being called
prematurely.
Fixes#21716
* fix: ensure tray icon is the proper size on linux
Fixes#21445.
* chore: use correct include order
* chore: use correct include order
* chore: remove use of deprecated casting style
* chore: be more explicit about the 22 pixel height
* chore: remove now-unneeded #include statements
* chore: fix typo and bugs.chromium.org link
* refactor: put GetIconFromImage() in anon namespace
* feat: custom positioning for traffic light buttons
* remove NSLog and unnecessary call-site in IsVisible()
* no longer need to check if entering fullscreen
* change API to take a point object
Co-authored-by: tonyfwoo <55114329+tonyfwoo@users.noreply.github.com>
* chore: bump chromium in DEPS to 46d2d82e84d73806da623c5333dae4dd218172df
* chore: bump chromium in DEPS to cbafe74731a5d1e59844ca59e0fc28f4a5f80a33
* chore: bump chromium in DEPS to d5dcd6b5cc76f4e1732083d775cdd7b533f0abe9
* Update patches
* update for lint
* Fix compilation errors
* chore: bump chromium in DEPS to 1c19360fdaaf65d4ed006736c7f9804104095990
* Replace removed constant
* chore: bump chromium in DEPS to 3b6639f5da26c1772c5d4f3ba634aca65df75fec
* chore: bump chromium in DEPS to cc6b1b930d4b5eca06701820dac54fa0f41e8999
* chore: bump chromium in DEPS to 7d1445641ad1032c67f731ba6ff7798f29349ade
* chore: bump chromium in DEPS to 6f7e5e79cefe982ad84a88927565a88db2e592be
* chore: bump chromium in DEPS to bfb25dafff19cb41bf9781331d19ef0be819d1e4
* chore: bump chromium in DEPS to 1a8196b39f0e0cdc4935fd122fff5625d5fab06e
* chore: bump chromium in DEPS to 9a03d8d2bb38ad8c0cbb9550ca81b2f94ff60c15
* chore: bump chromium in DEPS to 4c67f3505dab2d5457adb418cd3270a4f3236fd0
* chore: bump chromium in DEPS to 652394e7626fc1ae895a53fb34c64070494e648e
* chore: bump chromium in DEPS to 07653652c58cc019af7f833bd63eb0c2eceaab5e
* chore: bump chromium in DEPS to 451a1c5fec1fb073a5bae12a033bb342c72c905f
* chore: bump chromium in DEPS to 86cdba00e233899a232868b412b333d08db63478
* chore: bump chromium in DEPS to 7c322faad1aee8abef2330d74aabf09ecf8c11af
* Update patches
* chore: bump chromium in DEPS to d0044fae7efc29eb201cfdd5fdbed77d48aba212
* Replace IsProcessingUserGesture with HasTransientUserActivation
4baa9a6e85
* Fix 10.15 sdk build
0eaa6db358
* Remove CancelPrerender
5eb3329719
* Remove no longer used WebFloatPoint
43ab96ce6b
* Use base::span<const uint8_t> for devtools messages in content/public
21e19401af
* Update renamed header files
* TODO: update with upstream changes
This code needs to be updated to handle the changes made in:
19be6547a9
* chore: bump chromium in DEPS to 82e5a2c6bd33c2e53634a09fbcbc9fcac1e7ff93
* chore: bump chromium in DEPS to 91f877cadd2995201c276e952b3bf2c60b226c64
* chore: bump chromium in DEPS to 43fcd2ab2677a06d38246b42761dc5b40cf87177
* chore: bump chromium in DEPS to e30957dcb710c0977a7ff95b8d3cf65843df12ca
* chore: bump chromium in DEPS to 6a8335a56db12aae2fd06296f82579d804d92217
* chore: bump chromium in DEPS to a4a436cbc28ace88d71752f8f479e59559e54e46
* chore: bump chromium in DEPS to 982bbd0e4b2e1d57d515f384f6483ffc0d7073ad
* chore: bump chromium in DEPS to 92bb7a99f84ffcdf41d4edca57e90b1f0c7c6c8b
* update patches
* add checkout_google_benchmark gclient var
* FIXME: workaround grit bug
* chore: bump chromium in DEPS to d3623fc53615739e6b59340a5d349e4b397cb7c5
* update patches
* Remove color arg from DidChangeThemeColor().
https://chromium-review.googlesource.com/c/chromium/src/+/1982623
* update CreateFileURLLoader with new suffix
CL: https://chromium-review.googlesource.com/c/chromium/src/+/1981414
* add node patch for removal of task API in v8
CL: https://chromium-review.googlesource.com/c/v8/v8/+/1868620
* add disable_secure_dns param for WillCreateURLLoaderFactory
CL: https://chromium-review.googlesource.com/c/chromium/src/+/1888099
* switch to mojo-ified PrintMsg_PrintPreview
CL: https://chromium-review.googlesource.com/c/chromium/src/+/1972307
* chore: bump chromium in DEPS to e7a6d173632660b6aeb9806e9132c34a315331c2
* update missing chrome/browser/ssl:proto dependency after chrome removal
CL: https://chromium-review.googlesource.com/c/chromium/src/+/1986082
* chore: add libvulkan.so to the linux manifest
CL: https://chromium-review.googlesource.com/c/chromium/src/+/1973042
* revert DidChangeThemeColor ternary change due to templates
* match Chrome's mojo-ified implementation in geolocation_permission_context.cc
CL: https://chromium-review.googlesource.com/c/chromium/src/+/1963371
* add vulkan-1.dll to zips
2d6f74c6d4
* add bug link to fixme_grit_conflicts.patch
* Introduce device.mojom.DeviceService
https://chromium-review.googlesource.com/c/chromium/src/+/1956277
* PDF Compositor rename to Print Compositor
https://chromium-review.googlesource.com/c/chromium/src/+/1981135
* chore: bump chromium_version 00362ea584735b4acf4c5a0e1912d7987f8645ab
* chore: update patches
* Use a virtual base class to provide GetWidget().
https://chromium-review.googlesource.com/c/chromium/src/+/1996948
* [base] Remove usage of base::CurrentThread
https://chromium-review.googlesource.com/c/chromium/src/+/1962019
* chore: gn format
* Revert "ci: Use Visual Studio Build Tools instead of VS Studio (#21771)"
This reverts commit 9c1310dadc.
* fix: trigger resize when iframe requests fullscreen
* fix: Locking scheme registry is not necessary
https://chromium-review.googlesource.com/c/chromium/src/+/1973198
* chore: bump chromium f707f1d6d428f84cf14b64bc2ca74372e25c6ce7
* chore: update patches
* ui/base/clipboard: Remove redundant ANSI format functions
https://chromium-review.googlesource.com/c/chromium/src/+/1992015
* [base] Prepare //chrome for Value::GetList() switch
https://chromium-review.googlesource.com/c/chromium/src/+/1962255
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
Co-authored-by: loc <andy@slack-corp.com>
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
Co-authored-by: Robo <hop2deep@gmail.com>
* test: fix some failing and disabled node specs
These tests were failing due to mismatched stacktraces as a result of
our Module._load hook. This fixes those by adding a flag to optionally
not hook those calls and instead do the asar override eagily.
* ELECTRON_EAGER_ASAR_HOOK => ELECTRON_EAGER_ASAR_HOOK_FOR_TESTING
* test: parallel/test-zlib-unused-weak consistently fails
Co-authored-by: Cheng Zhao <zcbenz@github.com>
This commit uploads the output of the windows toolchain profiler.
The windows toolchain profiler is aimed at allowing the compilation
of electron release artifacts using the same windows toolchain on user
builder. This combined with the ability of electron of outputting
deterministic build should allow in future to check electron build
artifacts against CI artifacts.
See: 97959b5e5c include windows toolchain profiler (contd #20949)
* add: New fiddle for Manage Windows section example
* Delete package.json
Not needed
* Address issue with .gitignore file, load new window, removing unwanted css class
* Delete package.json
* Pushing change regarding the use of shell.OpenExternal API with an event listener for the href tag on the link
* Update online-offline-events.md
NodeIntegration is required for online/offline and the default changed, so the example should reflect the need for that config
* chore: fix lint warning
Co-authored-by: Cheng Zhao <zcbenz@github.com>
* chore: bump node in DEPS to v12.13.1
* chore: remove redundant patches
* disable node tests
disable prepareStackTrack test since Node.js won't handle our case, and disable new es-module tests since it's still flagged and requires flags to run properly
* fix missing files
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* fix: don't error if can't find advapi32.dll
* fixup! chore: bump node in DEPS to v12.13.1
* Disable native tests for now
* test: clean up some stale code in renderer spec runner
* remove jquery from spec
* remove extraneous close tag
* Revert "remove jquery from spec"
This reverts commit 7b885c8ca8.
* re-clean-up html
* don't highlight tags
* update session docs; clear cache on boot
* clear user-data-dir before running tests
* doc: update Chinese Electron mirror URL
* doc: replace remaining references of electron-download with @electron/get
* doc: update cache dir example based on recent @electron/get cache changes
* fix: correctly set cookie date
* fix: name is not required for setting cookie
* test: clear cookie after each cookie test
* test: should test session property
* chore: style fixes
* fix: restore parts of original ResourceRequestBody V8 conversion
Restore some of the original conversion logic in order to fix target=_blank post form submissions.
* test: add test for POST form submission
Electron's `AtomNSWindow` implements `accessibilityAttributeValue` to
provide various accessibility info to the OS, including window titles.
Chromium 75 changed to Apple's newer accessibility API for window titles
in the super class that `AtomNSWindow` inherits from. macOS still
supports both the old and new style APIs, but it will prefer the new
style if it is implemented. This means the Electron window title is
being ignored because the newer API at the Chromium level has taken
precedence.
By implementing the newer accessibility API in `AtomNSWindow`, this
restores correct accessibility window titles in macOS Electron apps.
This is a regression has been present since Electron 6.0.0 (the first
release including the Chromium change above).
* fix: menu visibility should not be overwritten on startup
* fix: removing menu for window without global menubar
* test: setMenu tests are not for mac
* docs: improve Windows build variable documentation
Documents an additional and possibly unclear variable, `DRIVE:`, in the example global variables for building with Windows
* docs: update formatting in build-instructions-windows.md to align with styleguide
In #20829, we fixed compositor recycling when switching between
BrowserViews, but it turns out that there is one additional case that we
need to handle. When we create a completely new BrowserView instance, it
starts of as visible (even when it hasn't been added to the window),
which means that it will need its own compositor instead of using the
recycled compositor.
To fix this, lets make BrowserViews hidden by default until they're
added to the window. See also #19988. This is a potentially breaking
change given that the initial value of `document.visibilityState` will
now be `hidden`, but given the experimental status of BrowserViews, I
think this is a fine change to make. The old behavior can be restored
with `webPreferences: { show: true }`.
Notes: Fix compositor recycling when creating new BrowserView
* build: cache the out directory for exact deps hash matches
* chore: generate a target based depshash discriminator
* fix: hash on gn args
* build: share logic on the mac builds
* build: ensure that the mksnapshot binary is built before stripping before zipping
* build: attach the workspace on macOS
* build: optimize the macOS checkout path for testing
* build: fix mksnapshot zip generation
* build: make the mac src cache restore work
* build: v2 out cache
* build: macOS cache restore is just stupidly slow
* build: strip more binaries
* build: attach the out cache to the workspace for macOS builds
* build: allow linux boxes to restore darwin out caches
* build: cat the deps hash target file
* build: ensure that the deps target hash matches on the linux box
* build: do not use host arch in target key
* build: force undefined in the target hash file
* build: only restore out cache when it isn't in the workspace
* build: fix the macOS cache workspace trick
* build: do not double restore
* build: remove the big stuff from the out dir
* build: workaround layer issue
* build: try it back on macOS again but with smaller thingy
* build: macOS needs the out cache now
* build: clean up for omptimal macOS path
* build: use old docker image
* build: idek at this point
* build: we need a deps hash
* build: yeah we need a checkout too
* chore: use testing env on save cache job
* chore: well that should fix the cache key thing
* chore: handle cross-OS path mismatch for src cache restore
* build: use a /portal directory to transfer the src cache appropriately
* build: use the correct docker image
* build: super perms for /portal
* build: increment out cache number
* build: ensure target hash is correct for args + disable pre-compiled headers on macOS
* build: wipe the cross-arch libffmpeg before building Electron
* fix(urlrequest): allow non-2xx repsponse results
- closes#21046
* test(net): add test cases to verify non-2xx body
* test(session): update spec to match clientrequest behavior
* test(net): update test cases to match clientrequest behavior
* spec: clean up async net spec
* test: update DOM storage quota limits test
* fix: update dom_storage_limits.patch (fixes#13465)
The previous version of this patch did not include
changes required to circumvent the quota enforcement
performed by StorageAreaImpl. Consequently when
the quota was exceeded, things still "appeared to
work" at first but then would later fail silently.
That is, the cache would be updated but the backing
store would not.
This could be fixed by disabling the code below
(from `content/browser/dom_storage/storage_area_impl.cc`)
```
// Only check quota if the size is increasing, this allows
// shrinking changes to pre-existing maps that are over budget.
if (new_item_size > old_item_size && new_storage_used > max_size_) {
if (map_state_ == MapState::LOADED_KEYS_ONLY) {
receivers_.ReportBadMessage(
"The quota in browser cannot exceed when there is only one "
"renderer.");
} else {
std::move(callback).Run(false);
}
return;
}
```
However, since this seems to have some unintended side-effects
(see updated notes in dom_storage_limits.patch) it seems
more prudent to simply increase the quota to a larger
yet still reasonable size rather than attempt to circumvent
the storage quota altogether.
* build: delete unneeded files when running a release
Needed to free up disk space on MacOS.
* Delete all the .git directories
* Update comment
* Run gn gen after deleting .git dirs
* Revert "fix: handle WM_GETMINMAXINFO instead of letting chromium do it (#19928)"
This reverts commit 27ce6a9cd3.
* fix: don't reset the width and height when correcting window placement
* fix: always use extraHeaders mode
* fix: clear pending callbacks
* fix: do not use "extraHeaders" for net module
* test: webRequest should be able to modify CROS headers
* chore: CROS => CORS
Co-Authored-By: Milan Burda <milan.burda@gmail.com>
* chore: CROS => CORS
Co-Authored-By: Milan Burda <milan.burda@gmail.com>
* docs: added windows -> create frameless window example from electron-api-docs
* fixed style in accord with StandardJS
* removed class tag from button
This commit allows any electron user to compile electron
artifacts by themselves in production mode. When the source code
is reproducibly buildable with a given toolchain this change
allows them to verify the hash of their build, with the same
windows toolchain agains the CI version.
This change was tested on top of version fb9837799b
which was buildable and reproducible for chromium and electron as well.
Further tests may be introduced to allows checking for local reproducibility.
EG: building twice an artifact on the same machine, with different time
and output directory should yield similar hashes.
* Add GetApplicationNameForProtocol.
* Fix Windows implementation.
* Fix up test.
* Add documentation.
* Implement for real on Linux using xdg-mime.
Also ensure we allow blocking calls here to avoid errant DCHECKing.
* Improve docs for Linux.
* Clean up tests.
* Add a note about not relying on the precise format.
* Update docs/api/app.md
Co-Authored-By: Shelley Vohr <codebytere@github.com>
* Remove needless `done()`s from tests.
* Use vector list initialization.
* Add a simple test for isDefaultProtocolClient.
* Remove unneeded include and skip a test on Linux CI.
* We no longer differentiate between CI and non-CI test runs.
* ci: speed up src retrieval
* Don't save zip on ia32
* Update external binaries if src zip already exists
* Apply suggestions from code review
Co-Authored-By: Jeremy Apthorp <jeremya@chromium.org>
* Update appveyor.yml
This was a regression in #16125, which unintentionally put
`GlobalShortcutListener::RegisterAccelerator` into a
`#if defined(OS_MACOSX)` block.
Notes: Fix broken `globalShortcut.registerAll()` on Windows and Linux
* fix: explicitly resize the contents when exiting html fullscreen while in OS fullscreen
* test: ensure HTML fullscreen toggles while in OS fullscreen
* refactor: use gin in Promise
* refactor: separate Promise impl that returns nothing
* refactor: use Promise<void> for promise that returns nothing
* fix: methods should be able to run on both browser and renderer process
* fix: should not pass base::StringPiece across threads
* refactor: no more need to use different ResolvePromise for empty Promise
* refactor: move Promise to gin_helper
* build: enable sccache on windows
* chore: temporarily disable the docs only check
* build: fix escaping in sccache path on windows
* Update appveyor.yml
* Update appveyor.yml
* Use sccache settings from CI
* Use Azure enabled sccache for Windows
* chore: add code required to use chromes spellchecker
* chore: fix linting
* chore: manifests needs buildflags now
* chore: add dictionarySuggestions to the context menu event when the spellchecker is active
* chore: enable by default for windows builds
* chore: add patch to remove incognito usage in the spellchecker
* chore: add dependencies on spellcheck common and flags
* chore: conditionally include spell check panel impl
* chore: fix deps for spellcheck feature flags
* chore: add patch for electron resources
* chore: add dependency on //components/language/core/browser
* chore: patches to make hunspell work on windows
* build: collect hunspell dictionaries into a zip file and publish
* chore: clean up patches
* chore: add docs and set spell checker url method
* chore: fix error handling
* chore: fix hash logic
* build: update hunspell filename generator
* fix: default spellchecker list to the current system locale if we can
* docs: document the language getter
* chore: patch IDS_ resources for linux builds
* feat: add spellcheck webpref flag to disable the builtin spellchecker
* chore: fix docs typo
* chore: clean up spellchecker impl as per feedback
* remove unneeded deps
In #19873, we completely disabled compositor recycling. This has adverse
effects in our tabbed app where switching tabs (i.e. `BrowserView`s) now
results in a flicker because we now also switch compositors.
To fix this without regressing the original fix, we now recycle the
compositor when the view is removed from a window. This situation can
only happen with `BrowserView`s and the common case with `BrowserWindow`
is unaffected.
* refactor: move the arg instead of const reference it
* refactor: avoid unnecessary copies of base::Value in arg
* refactor: pass-by-value in dict_util
* refactor: avoid unnecessary reference
* build: change to download sysroots from the new sysroot bucket
* build: add json config files to deps hash to can influence the src dir
* build: update to latest sysroot hash
* build: fix doc only change when there isn't a PR
Fixes issue where CI was mistakenly marking a PR as a doc only change because the CI was kicked off before the PR was created.
* refactor: convert Menu and globalShortcut to gin
* refactor: convert api::Cookies to gin
* refactor: convert View and WebContentsView to gin
* refactor: convert WebContents related classes to gin
* refactor: convert powerMonitor to gin
* refactor: prepare for header change
* refactor: remove last uses of mate::EventEmitter
* refactor: remove mate::EventEmitter
* refactor: move trackable_object to gin_helper
* fix: custom converter should not use Handle
* fix: no more need to check if icon is empty
It was a bug that the Handle<NativeImage> can be non-empty when the
image file does not exist. The bug was caused by the converter code
writing out the image even when the convertion fails.
The bug was work-arounded by adding an additional check, but since the
original bug had been fixed, the additional check is no longer needed.
* fix: should always set frameId even when callback is null
* fix: do not mix gin/mate handles for NativeImage
* fix: set proper constraints for windows with defined maxWidth
When BrowserWindow has set constraints for width (max or min) it
won't behave correctly during first attempt of resizing it. When
maxWidth is defined and maxWidth equals its width it will shrink
rapidly when user tries to expand its width. On the other hand
when minWidth is defined and minWidth equals its width it's
possible to decrease its width with a few pixels.
Notes: Fixed improper behaviour of window with width constraint set during resize.
* fix: prevent crash when WM_GETMINMAXINFO is called on initing window
* refactor: remove direct uses of event_emitter_deprecated.h
* refactor: remove event_emitter_deprecated.h in api::App
* refactor: use std::move to save a copy
* fix: windows and linux builds
* ci: skip build on doc only changes
* Try using exit codes on doc-only-change
* Fixup
* Fixup circleci doc-only check
* Update appveyor.yml
Co-Authored-By: Samuel Attard <sattard@slack-corp.com>
* Properly detect doc only change on Windows
* Flip exit code per review
* chore: update build_bring_back_node_with_ltcg_configuration.patch
set default value for node_with_ltcg=true
* fix: move ltcg definition to Release configuration
* docs: First draft of perf checklist
* docs: More words
* docs: Use standard in code example
* docs: fix broken link
* Update docs/tutorial/performance.md
Co-Authored-By: Charles Kerr <ckerr@github.com>
* Update docs/tutorial/performance.md
Co-Authored-By: Charles Kerr <ckerr@github.com>
* Update docs/tutorial/performance.md
Co-Authored-By: loc <andy@slack-corp.com>
* Update docs/tutorial/performance.md
Co-Authored-By: loc <andy@slack-corp.com>
* docs: Implement suggestions
* docs: Include VSCode talk
* chore: Pass linter
* Update docs/tutorial/performance.md
Co-Authored-By: Mark Lee <malept@users.noreply.github.com>
* Update docs/tutorial/performance.md
Co-Authored-By: Mark Lee <malept@users.noreply.github.com>
* Update docs/tutorial/performance.md
Co-Authored-By: Mark Lee <malept@users.noreply.github.com>
* Update docs/tutorial/performance.md
Co-Authored-By: Mark Lee <malept@users.noreply.github.com>
* Update docs/tutorial/performance.md
Co-Authored-By: Mark Lee <malept@users.noreply.github.com>
* Update docs/tutorial/performance.md
Co-Authored-By: Mark Lee <malept@users.noreply.github.com>
* Apply suggestions from code review
Co-Authored-By: Mark Lee <malept@users.noreply.github.com>
* Update performance.md
* fix: The process link
* refactor: remove a few uses of native_mate/gfx_converter.h
* refactor: deprecate mate::EventEmitter
* refactor: add gin_helper::EventEmitter
* refactor: convert a few classes to use gin_helper::EventEmitter
* refactor: get rid of native_mate_converters/gfx_converter.h
* fix: follow native_mate on reporting errors
* fix: gin is weak at guessing parameter types
* fix: incorrect full class name
* fix: gin::Handle does not accept null
* feat: add a new contextBridge module
* chore: fix docs linting
* feat: add support for function arguments being proxied
* chore: ensure that contextBridge can only be used when contextIsolation is enabled
* docs: getReverseBinding can be null
* docs: fix broken links in md file
* feat: add support for promises in function parameters
* fix: linting failure for explicit constructor
* Update atom_api_context_bridge.cc
* chore: update docs and API design as per feedback
* refactor: remove reverse bindings and handle GC'able functions across the bridge
* chore: only expose debugGC in testing builds
* fix: do not proxy promises as objects
* spec: add complete spec coverage for contextBridge
* spec: add tests for null/undefined and the anti-overwrite logic
* chore: fix linting
* spec: add complex nested back-and-forth function calling
* fix: expose contextBridge in sandboxed renderers
* refactor: improve security of default_app using the new contextBridge module
* s/bindAPIInMainWorld/exposeInMainWorld
* chore: sorry for this commit, its a big one, I fixed like everything and refactored a lot
* chore: remove PassedValueCache as it is unused now
Values transferred from context A to context B are now cachde in the RenderFramePersistenceStore
* chore: move to anonymous namespace
* refactor: remove PassValueToOtherContextWithCache
* chore: remove commented unused code blocks
* chore: remove .only
* chore: remote commented code
* refactor: extract RenderFramePersistenceStore
* spec: ensure it works with numbered keys
* fix: handle number keys correctly
* fix: sort out the linter
* spec: update default_app asar spec for removed file
* refactor: change signatures to return v8 objects directly rather than the mate dictionary handle
* refactor: use the v8 serializer to support cloneable buffers and other object types
* chore: fix linting
* fix: handle hash collisions with a linked list in the map
* fix: enforce a recursion limit on the context bridge
* chore: fix linting
* chore: remove TODO
* chore: adapt for PR feedback
* chore: remove .only
* chore: clean up docs and clean up the proxy map when objects are released
* chore: ensure we cache object values that are cloned through the V8 serializer
* fix: support fitToPageEnabled and scaleFactor
Support fitToPageEnabled and scaleFactor in `WebContents.printToPDF()`
* fix: change default value of scaleFactor
* refactor: convert methods of AutoUpdater to gin
* refactor: converter in map_converter.h is no more needed
* refactor: use gin in crash_reporter
* refactor: remove native_mate_converters/map_converter.h
* refactor: implement gfx_converter with gin
* refactor: convert methods of NativeImage to gin
* refactor: add gin_helper::Arguments
* fix: use gin_helper::Arguments to parse multi-type parameters
* refactor: use gin converters in api::Protocol
* refactor: convert JS constructor impl to gin
* refactor: use InitWithArgs helper
* fix: gin_helper::Dictionary should behave the same with mate
* fix cpplint warnings
* refactor: no more need to patch gin/dictionary.h
* test: remove remote usage from chromium specs
* disable tts test
* port navigator.mediaDevices tests
* fake camera and microphone
* Update spec-main/chromium-spec.ts
Co-Authored-By: John Kleinschmidt <jkleinsc@github.com>
* docs: add clipboard paste Fiddle example
* docs: add clipboard copy Fiddle example
* docs: add appropriate title to Fiddles
Co-Authored-By: John Kleinschmidt <jkleinsc@github.com>
* refactor: use v8 serialization for ipc
* cloning process.env doesn't work
* serialize host objects by enumerating key/values
* new serialization can handle NaN, Infinity, and undefined correctly
* can't allocate v8 objects during GC
* backport microtasks fix
* fix compile
* fix node_stream_loader reentrancy
* update subframe spec to expect undefined instead of null
* write undefined instead of crashing when serializing host objects
* fix webview spec
* fix download spec
* buffers are transformed into uint8arrays
* can't serialize promises
* fix chrome.i18n.getMessage
* fix devtools tests
* fix zoom test
* fix debug build
* fix lint
* update ipcRenderer tests
* fix printToPDF test
* update patch
* remove accidentally re-added remote-side spec
* wip
* don't attempt to serialize host objects
* jump through different hoops to set options.webContents sometimes
* whoops
* fix lint
* clean up error-handling logic
* fix memory leak
* fix lint
* convert host objects using old base::Value serialization
* fix lint more
* fall back to base::Value-based serialization
* remove commented-out code
* add docs to breaking-changes.md
* Update breaking-changes.md
* update ipcRenderer and WebContents docs
* lint
* use named values for format tag
* save a memcpy for ~30% speedup
* get rid of calls to ShallowClone
* extra debugging for paranoia
* d'oh, use the correct named tags
* apparently msstl doesn't like this DCHECK
* funny story about that DCHECK
* disable remote-related functions when enable_remote_module = false
* nits
* use EnableIf to disable remote methods in mojom
* fix include
* review comments
Versions didn't show and I was getting errors in the Developer Tools: `Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'self'"`. The cause is probably that Chrome has implemented extra security since this tutorial was created. Added 'unsafe-inline' and it works.
Patch which this pr removes adds new version of
BrowserCompositorMac::GetCompositor. There is this function in
BrowserCompositorMac with specifier const. Chromium's function
returns parent's compositor if parent is set. Electron's version
doesn't and - as a result - constrained dialogs won't be displayed
correctly if they don't have its own compositor.
* test: remove usage of remote module from node tests
* isTTY is undefined in the renderer process on all platforms
* Update spec/node-spec.js
* Update node-spec.js
* deprecate native_mate/native_mate/object_template_builder.h
* add gin_helper/object_template_builder.h
* add patch to avoid ambiguous error
* remove usage of object_template_builder_deprecated.h in a few files
* add note we should remove gin_helper/object_template_builder.h in future
* fix: use coordinate offsets in ShowAutofillPopup
* fix: silence coord int->float narrowing conversion
Minor fix to silence clang-tidy warning about implicit range narrowing.
Not a huge deal but the revision is also easier to read.
clang-tidy: bugprone-narrowing-conversions
* fix: emit updated on NativeTheme on the UI thread to avoid DCHECK
* Update atom_api_native_theme.cc
* spec: wait a few ticks for async events to emit so that test events do not leak into each other
Exposing these in the renderer didn't make sense as they weren't backed
by the same instance / value store. This API should be browser only
especially now that we have nativeTheme.themeSource. Exposing in
//common was a mistake from the beginning.
* build: yolo a theoretical speed improvement
* chore: persist src/electron and friends for testing purposes
* build: do not generate dist.zip on debug builds
* chore: ensure licenses and version file exist for zip-symbols script
* refactor: fix clang-tidy vector operation warnings
Fix vector population performance-inefficient-vector-operation warnings
generated by clang-tidy
* refactor: fix clang-tidy emplace_back warnings
In cases where a temporary is created to be passed
to push_back(), replace it with emplace_back().
Warning: modernize-use-emplace
* refactor: fix clang-tidy loop iteration warnings
When practical, use range-based for loops instead of C-style for loops.
clang-tiny check: modernize-loop-convert
* refactor: fix clang-tidy string initialize warning
Remove redundant empty string initialization.
clang-tidy check: readability-redundant-string-init
* use gin converter in atom_api_menu
* please only put necessary includes in header
Having include in header means they have dependency relationship,
putting arbitrary includes really really really really really makes
refacoring much harder.
* remove some simple uses of callback_converter_deprecated.h
* use gin callback converter in file_dialog code
* use gin in ErrorThrower
* use gin in atom_bundle_mover
* fix mistake in node stream
* deprecate native_mate version of event_emitter_caller
* use gin in node_bindings
* remove usages of native_mate event_emitter_caller.h except for EventEmitter
* fix compilation on Windows
* gin::Arguments behaves differently on GetNext
* just use StringToV8
* feat: add nativeTheme.shouldUseDarkColorsOverride to allow apps to override Chromiums theme choice
* spec: add tests for shouldUseDarkColorsOverride
* chore: add missing forward declarations
* refactor: rename overrideShouldUseDarkColors to themeSource
* chore: only run appLevelAppearance specs on Mojave and up
* chore: update patch with more info and no define
* Update spec-main/api-native-theme-spec.ts
Co-Authored-By: Jeremy Apthorp <jeremya@chromium.org>
* Update api-native-theme-spec.ts
* Update api-native-theme-spec.ts
* Update api-native-theme-spec.ts
This is a speculative fix for a crash we are seeing in `menuDidClose`. We
can't repro the crash but the traces have it happening in this method
and just by reading through the impl the only part that jumps out as
Might Crash is this `model_` call. Other methods in the menu controller
check `model_` before using it so it probably makes sense to do that here
as well.
* build: add WOA release to list of releases
* Add job count info for sudowoodo
* Add verification of all assets
* Fix linting and add logic to wait before printing out results
* add notice to files being removed
* add gin version of function_template.h
* rename callback.h to avoid confliction
* add gin version of callback_converter
* add gin converter for OnceCallback
* remove callback_converter_gin_adapter.h
* remove gin_util.h and gin_utils.h
* fix lint warning
* add helper for setting methods
* move Destroyable utilities out of native_mate
* do not set "destroy" in ObjectTemplateBuilder
* remove ObjectTemplateBuilder::MakeDestroyable
* do not pollute gin namespace
* add more comments
* remove hack of Arguments
On multi-monitor setups where the monitors are not all origined at 0 on
the Y coordinate (E.g. vertical stacked monitors) the maximize
calculation was incorrect as it assumed top was "0". This instead
adjusts the math to calculate the correct top value.
* test: tsify more WebContents specs
* getFocusedWebContents
* setDevToolsWebContents, isFocused, isCurrentlyAudible
* getWebPreferences, openDevTools
* before-input-event
* zoom-changed
* sendInputEvent
* insertCSS
* startDrag
* focus, getOSProcessId
* zoom api
* more closeAllWindows
* fix detached dev tools test
* fix zoom-changed test
* compare the correct kind of id 🤦♂️
* 'fix' openDevTools test to wait for multiple focus events
* fix tests? 🤞
* use request instead of blur to detect openExternal success
* try not timing out the keychain for testing
* use blur event on mac, sigh
* oh, right, still gotta open an actual url
I've asked #19775 because I was frustrated with how hard it was to find a way to fix (instead of hide) the CSP warning in Electron and I complained that even the official quick start guide wasn't compliant with the security checklist at https://electronjs.org/docs/tutorial/security. Someone helped me out with a CSP meta tag which I have later noticed is indeed mentioned in the checklist, too: https://electronjs.org/docs/tutorial/security#csp-meta-tag. I have not used the checklist one verbatim because it prevents a `script` tag from working when serving `index.html` through the `file:` protocol as the quick start does. I instead used the one the person in my issue recommended which seems to work well to me. I am not that well versed in CSP so there might be a better policy to include with the quick start, but this is what I've got for now.
* refactor: don't walk maps twice to remove elements
* refactor: don't walk maps twice to read elements
* refactor: don't walk maps twice to insert elements
* refactor: don't walk map 3x on UvTaskRunner timeout
* refactor: more don't-walk-maps-twice cleanup
* fixup! refactor: don't walk maps twice to insert elements
* refactor: don't walk containers twice when erasing
* refactor: omit excess lookups in RemoteObjectFreer
* fix: remove WM_GETMINMAXINFO workaround since it's no longer needed
* fix: handle WM_GETMINMAXINFO ourselves
* fix: remove part of the chromium WM_GETMINMAXINFO handler
Sometimes it's necessary to convey more information about the window to screen reader users only (simply putting everything to the window title might be unnecessarily noisy).
For example, Chromium uses that technique to tell screen reader users that the window is in incognito mode (the incognito window looks differently and doesn't have «incognito» in the title, but for blind users the screen reader will announce that it's incognito).
* no need to get WebContents for URLLoaderFactory
* consult embedder for network_factory created in net module
* set disable_web_security to false
* re-enable webRequest tests in net module
* fix: i18n of gtk msgbox buttons
similar to #19756 (12df0e8) but for messageboxes
* refactor: DRY the gtk+ button mnemonics
* fix: don't compile gtk_util on non-Linux platforms
rename from `gtk_util.[cc,h]` to `util_gtk.[cc,h]` so that it gets
picked up by the `extra_source_filters` rule in `BUILD.gn`.
* fix: make linter happy
It really shows that I cannot build locally atm... :P
* fix: command-line scheme switch values' spillover
The value of one of the scheme command-line switches
shouldn't spill over into other switches.
Fixes#19911
* chore: make linter happy
* refactor: make util::Promise type safe when chaining in native
* fixup! refactor: make util::Promise type safe when chaining in native
* chore: remove spare brackets
* fix: extern Parse impl for Windows debug builds
Applies a patch to node.
Externs node::options_parser::Parse implementation for
node::DebugOptions to fix the Windows Debug build.
* fixup: merge extern parse impl patch
* feat: enable picture in picture mode for video tags
* test: add test to verify picture in picture support
* lint: fix indent
* fix: clean up after rebase
* test: update test with 16:9 test video
* fix: .paches after rebase
* build: add zip manifest for Windows on Arm
* ci: add Windows On Arm testing
(cherry picked from commit 4064e1f4874ff7a37c52c2ad974f92418c7e71c4)
* Fix path to invoke CI on WOA hardware
* Explicitly call 7z.exe to unzip files
* Make sure GCLIENT_EXTRA_ARGS set for WOA builds get prepended on release build
* set proper arch for npm
* Try using Compress-Archive/Expand-Archive
* Revert "Try using Compress-Archive/Expand-Archive"
* disable woa hardware test for now
Currently the happy checkout takes 7 minutes and the sad checkout takes
30 minutes. This updates our CI to run checkout twice for every job to
make the sad checkout take nearer 10 minutes instead.
* fix: fill uploadData property
* fix: requestHeaders in onBeforeSendHeaders
* fix: responseHeaders in onHeadersReceived
* fix: header keys should not be lowercased
* fix: gin::Dictionary::Get succeeds even though key does not exist...
* fix: throw for invalid filters
* test: re-enable api-web-request-spec
* chore: do not use deprecated base::Value API
* fix: gin treats Function as Dictionary when doing convertions
* fix: check if listener exists
* fix: listener callback should be executed in next tick
* feat: make InProgressRequest work
* test: re-enable protocol test that relies on webRequest
* chore: merge conditions
* chore: bump node in DEPS to v12.8.1
* test: disable parallel/test-http2-reset-flood
Disabled new Worker test owing to a threading issue where the Worker
segfaults on worker.on('message', () => {}). We've disabled failing
worker tests previously as we don't offer first-class support for them
in Electron.
In the `dialog` documentation (and the generated typings in `electron.d.ts`), it is mentionned that the `icon` property only supports `NativeImage`, but the `nativeImage` documentation says that:
```
In Electron, for the APIs that take images, you can pass either file paths or NativeImage
```
* feat: Implement BrowserWindow.moveAbove(mediaSourceId)
BrowserWindow.{focus,blur,moveTop}() are not enough in some
situations. For example when implementing an overlay that
follows another window that can lose focus. In that case
it is useful to move the overlay above the tracked window.
sourceId is a string in the format of DesktopCapturerSource.id,
for example "window:1869:0".
Notes: Added BrowserWindow.moveAbove(mediaSourceId)
https://github.com/electron/electron/issues/18922
* feat: Implement BrowserWindow.getMediaSourceId
Return the Window id in the format of DesktopCapturerSource's id.
For example "window:1234:0".
https://github.com/electron/electron/issues/16460
Notes: Added BrowserWindow.getMediaSourceId
* feat: add new nativeTheme API
* chore: deprecate and clean up old systemPreferences theme APIs in favor of new nativeTheme module
* chore: clean up and deprecate things per feedback
* chore: add tests for deprecate and clean up invert impl
* build: when is a boolean not a boolean???
* Pass WebRequest to ProxyingURLLoaderFactory
* Call WebRequestAPI in InProgressRequest
* Store the listeners
* Pass the request and response
* Add stub to handle the events
* Use extensions::WebRequestInfo
* Make sure webRequest is managed by Session
* chore: make creation of WebRequestNS more clear
* fix: check WebContents for service workers
* chore: bump node in DEPS to v12.7.0
* chore: update node patches v12.6 to v12.7
Removed patches that are no longer necessary because we've upstreamed few changes already, and 3 way merge others
* fix: update build gn patch
* chore: bump node in DEPS to v12.8.0
* chore: update node patches v12.7 to v12.8
Removed patches that are no longer necessary because we've upstreamed few changes already, and 3 way merge others
* fix: Add patch to revert crypto createhash changes
The original node commit contains changes/calls to functions that are not supported in boringssl.
* disable node tests
* Remove outdated patch, already merged upstream
* fix: don't handle browser messages before document element is created
* fix: bind ElectronApiServiceImpl later
DidCreateDocumentElement is called before the ElectronApiServiceImpl
gets bound.
* chore: add comment
* docs: remove implicit 'any' and 'Object' types from the docs
* docs: more docs improvements, remove all remaining empty interfaces
* chore: update tests for better types
@@ -20,13 +20,11 @@ Issues are created [here](https://github.com/electron/electron/issues/new).
* [Triaging a Bug Report](https://electronjs.org/docs/development/issues#triaging-a-bug-report)
* [Resolving a Bug Report](https://electronjs.org/docs/development/issues#resolving-a-bug-report)
### Issue Maintenance and Closure
* If an issue is inactive for 45 days (no activity of any kind), it will be
marked for closure with `stale`.
* If after this label is applied, no further activity occurs in the next 7 days,
the issue will be closed.
* If an issue has been closed and you still feel it's relevant, feel free to
ping a maintainer or add a comment!
### 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).)
_If an issue has been closed and you still feel it's relevant, feel free to ping a maintainer or add a comment!_
- gn gen out/Default "--args=import(\"%BUILD_CONFIG_PATH%\") %GN_EXTRA_ARGS%"
- set BUILD_CONFIG_PATH=//electron/build/args/%GN_CONFIG%.gn
- if DEFINED GN_GOMA_FILE (gn gen out/Default "--args=import(\"%BUILD_CONFIG_PATH%\") import(\"%GN_GOMA_FILE%\") %GN_EXTRA_ARGS% ") else (gn gen out/Default "--args=import(\"%BUILD_CONFIG_PATH%\") %GN_EXTRA_ARGS% cc_wrapper=\"%SCCACHE_PATH%\"")
- gn check out/Default //electron:electron_lib
- gn check out/Default //electron:electron_app
- gn check out/Default //electron:manifests
- gn check out/Default //electron/shell/common/api:mojo
- ninja -C out/Default electron:electron_app
- if "%GN_CONFIG%"=="testing" ( python C:\Users\electron\depot_tools\post_build_ninja_summary.py -C out\Default )
- if DEFINED GN_GOMA_FILE (ninja -j 300 -C out/Default electron:electron_app) else (ninja -C out/Default electron:electron_app)
- if "%GN_CONFIG%"=="testing" ( python C:\depot_tools\post_build_ninja_summary.py -C out\Default )
- gn gen out/ffmpeg "--args=import(\"//electron/build/args/ffmpeg.gn\") %GN_EXTRA_ARGS%"
Emitted when Electron has finished initializing. On macOS, `launchInfo` holds
the `userInfo` of the `NSUserNotification` that was used to open the application,
if it was launched from Notification Center. You can call `app.isReady()` to
check if this event has already fired.
Emitted once, when Electron has finished initializing. On macOS, `launchInfo`
holds the `userInfo` of the `NSUserNotification` that was used to open the
application, if it was launched from Notification Center. You can also call
`app.isReady()` to check if this event has already fired and `app.whenReady()`
to get a Promise that is fulfilled when Electron is initialized.
### Event: 'window-all-closed'
@@ -74,7 +75,7 @@ Returns:
*`event` Event
Emitted when all windows have been closed and the application will quit.
Calling `event.preventDefault()` will prevent the default behaviour, which is
Calling `event.preventDefault()` will prevent the default behavior, which is
terminating the application.
See the description of the `window-all-closed` event for the differences between
@@ -203,7 +204,7 @@ Returns:
[`NSUserActivity.activityType`][activity-type].
*`userInfo` unknown - Contains app-specific state stored by the activity.
Emitted when [Handoff][handoff] is about to be resumed on another device. If you need to update the state to be transferred, you should call `event.preventDefault()` immediately, construct a new `userInfo` dictionary and call `app.updateCurrentActiviy()` in a timely manner. Otherwise, the operation will fail and `continue-activity-error` will be called.
Emitted when [Handoff][handoff] is about to be resumed on another device. If you need to update the state to be transferred, you should call `event.preventDefault()` immediately, construct a new `userInfo` dictionary and call `app.updateCurrentActivity()` in a timely manner. Otherwise, the operation will fail and `continue-activity-error` will be called.
### Event: 'new-window-for-tab' _macOS_
@@ -314,10 +315,8 @@ Returns:
*`event` Event
*`webContents` [WebContents](web-contents.md)
*`request` Object
*`method` String
*`authenticationResponseDetails` Object
*`url` URL
*`referrer` URL
*`authInfo` Object
*`isProxy` Boolean
*`scheme` String
@@ -325,8 +324,8 @@ Returns:
*`port` Integer
*`realm` String
*`callback` Function
*`username` String
*`password` String
*`username` String (optional)
*`password` String (optional)
Emitted when `webContents` wants to do basic auth.
@@ -337,12 +336,16 @@ should prevent the default behavior with `event.preventDefault()` and call
**Note:** This function overrides the name used internally by Electron; it does not affect the name that the OS uses.
### `app.getLocale()`
Returns `String` - The current application locale. Possible return values are documented [here](locales.md).
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/chrome-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](https://github.com/electron/electron/blob/master/docs/api/command-line-switches.md).
**Note:** When distributing your packaged app, you have to also ship the
`locales` folder.
@@ -709,34 +725,34 @@ Clears the recent documents list.
*`protocol` String - The name of your protocol, without `://`. If you want your
app to handle `electron://` links, call this method with`electron` as the
parameter.
*`path` String (optional) _Windows_ - Defaults to `process.execPath`
*`args` String[] (optional) _Windows_ - Defaults to an empty array
*`protocol` String - The name of your protocol, without `://`. For example,
if you want your app to handle `electron://` links, call this method with
`electron` as the parameter.
*`path` String (optional) _Windows_ - The path to the Electron executable.
Defaults to `process.execPath`
*`args` String[] (optional) _Windows_ - Arguments passed to the executable.
Defaults to an empty array
Returns `Boolean` - Whether the call succeeded.
This method sets the current executable as the default handler for a protocol
(aka URI scheme). It allows you to integrate your app deeper into the operating
system. Once registered, all links with `your-protocol://` will be opened with
the current executable. The whole link, including protocol, will be passed to
your application as a parameter.
On Windows, you can provide optional parameters path, the path to your executable,
and args, an array of arguments to be passed to your executable when it launches.
Sets the current executable as the default handler for a protocol (aka URI
scheme). It allows you to integrate your app deeper into the operating system.
Once registered, all links with `your-protocol://` will be opened with the
current executable. The whole link, including protocol, will be passed to your
application as a parameter.
**Note:** On macOS, you can only register protocols that have been added to
your app's `info.plist`, which cannot be modified at runtime. You can however
change the file with a simple text editor or script during build time.
Please refer to [Apple's documentation][CFBundleURLTypes] for details.
your app's `info.plist`, which cannot be modified at runtime. However, you can
change the file during build time via [Electron Forge][electron-forge],
[Electron Packager][electron-packager], or by editing `info.plist` with a text
editor. Please refer to [Apple's documentation][CFBundleURLTypes] for details.
**Note:** In a Windows Store environment (when packaged as an `appx`) this API
will return `true` for all calls but the registry key it sets won't be accessible
by other applications. In order to register your Windows Store application
as a default protocol handler you must [declare the protocol in your manifest](https://docs.microsoft.com/en-us/uwp/schemas/appxpackage/uapmanifestschema/element-uap-protocol).
The API uses the Windows Registry and LSSetDefaultHandlerForURLScheme internally.
The API uses the Windows Registry and `LSSetDefaultHandlerForURLScheme` internally.
@@ -755,10 +771,8 @@ protocol (aka URI scheme). If so, it will remove the app as the default handler.
*`path` String (optional) _Windows_ - Defaults to `process.execPath`
*`args` String[] (optional) _Windows_ - Defaults to an empty array
Returns `Boolean`
This method checks if the current executable is the default handler for a protocol
(aka URI scheme). If so, it will return true. Otherwise, it will return false.
Returns `Boolean` - Whether the current executable is the default handler for a
protocol (aka URI scheme).
**Note:** On macOS, you can use this method to check if the app has been
registered as the default protocol handler for a protocol. You can also verify
@@ -766,7 +780,22 @@ this by checking `~/Library/Preferences/com.apple.LaunchServices.plist` on the
macOS machine. Please refer to
[Apple's documentation][LSCopyDefaultHandlerForURLScheme] for details.
The API uses the Windows Registry and LSCopyDefaultHandlerForURLScheme internally.
The API uses the Windows Registry and `LSCopyDefaultHandlerForURLScheme` internally.
### `app.getApplicationNameForProtocol(url)`
*`url` String - a URL with the protocol name to check. Unlike the other
methods in this family, this accepts an entire URL, including `://` at a
minimum (e.g. `https://`).
Returns `String` - Name of the application handling the protocol, or an empty
string if there is no handler. For instance, if Electron is the default
handler of the URL, this could be `Electron` on Windows and Mac. However,
don't rely on the precise format which is not guaranteed to remain unchanged.
Expect a different format on Linux, possibly with a `.desktop` suffix.
This method returns the application name of the default handler for the protocol
(aka URI scheme) of a URL.
### `app.setUserTasks(tasks)` _Windows_
@@ -928,7 +957,7 @@ if (!gotTheLock) {
})
// Create myWindow, load the rest of the app, etc...
app.on('ready',()=>{
app.whenReady().then(()=>{
})
}
```
@@ -985,6 +1014,17 @@ Updates the current activity if its type matches `type`, merging the entries fro
Changes the [Application User Model ID][app-user-model-id] to `id`.
### `app.setActivationPolicy(policy)` _macOS_
*`policy` String - Can be 'regular', 'accessory', or 'prohibited'.
Sets the activation policy for a given app.
Activation policy types:
* 'regular' - The application is an ordinary app that appears in the Dock and may have a user interface.
* 'accessory' - The application doesn’t appear in the Dock and doesn’t have a menu bar, but it may be activated programmatically or by clicking on one of its windows.
* 'prohibited' - The application doesn’t appear in the Dock and may not create windows or be activated.
* `authors` String[] (optional) _Linux_ - List of app authors.
* `website` String (optional) _Linux_ - The app's website.
* `iconPath` String (optional) _Linux_ - Path to the app's icon. Will be shown as 64x64 pixels while retaining aspect ratio.
* `iconPath` String (optional) _Linux_ _Windows_ - Path to the app's icon. On Linux, will be shown as 64x64 pixels while retaining aspect ratio.
Set the about panel options. This will override the values defined in the app's
`.plist` file on MacOS. See the [Apple docs][about-panel-options] for more details. On Linux, values must be set in order to be shown; there are no defaults.
Set the about panel options. This will override the values defined in the app's `.plist` file on macOS. See the [Apple docs][about-panel-options] for more details. On Linux, values must be set in order to be shown; there are no defaults.
If you do not set `credits` but still wish to surface them in your app, AppKit will look for a file named "Credits.html", "Credits.rtf", and "Credits.rtfd", in that order, in the bundle returned by the NSBundle class method main. The first file found is used, and if none is found, the info area is left blank. See Apple [documentation](https://developer.apple.com/documentation/appkit/nsaboutpaneloptioncredits?language=objc) for more information.
### `app.isEmojiPanelSupported()`
@@ -1296,7 +1329,7 @@ command line arguments that Chromium uses.
### `app.dock` _macOS_ _Readonly_
A [`Dock`](./dock.md) object that allows you to perform actions on your app icon in the user's
A [`Dock`](./dock.md) `| undefined` object that allows you to perform actions on your app icon in the user's
dock on macOS.
### `app.isPackaged` _Readonly_
@@ -1306,6 +1339,8 @@ A `Boolean` property that returns `true` if the app is packaged, `false` otherw
Breaking changes will be documented here, and deprecation warnings added to JS code where possible, at least [one major version](../tutorial/electron-versioning.md#semver) before the change is made.
## `FIXME` comments
The `FIXME` string is used in code comments to denote things that should be fixed for future releases. See https://github.com/electron/electron/search?q=fixme
## Planned Breaking API Changes (7.0)
### Node Headers URL
This is the URL specified as `disturl` in a `.npmrc` file or as the `--dist-url`
command line flag when building native Node modules. Both will be supported for
the foreseeable future but it is recommended that you switch.
Deprecated: https://atom.io/download/electron
Replace with: https://electronjs.org/headers
### `session.clearAuthCache(options)`
The `session.clearAuthCache` API no longer accepts options for what to clear, and instead unconditionally clears the whole cache.
Under macOS Catalina our former Tray implementation breaks.
Apple's native substitute doesn't support changing the highlighting behavior.
```js
// Deprecated
tray.setHighlightMode(mode)
// API will be removed in v7.0 without replacement.
```
## Planned Breaking API Changes (5.0)
### `new BrowserWindow({ webPreferences })`
The following `webPreferences` option default values are deprecated in favor of the new defaults listed below.
| Property | Deprecated Default | New Default |
|----------|--------------------|-------------|
| `contextIsolation` | `false` | `true` |
| `nodeIntegration` | `true` | `false` |
| `webviewTag` | `nodeIntegration` if set else `true` | `false` |
E.g. Re-enabling the webviewTag
```js
constw=newBrowserWindow({
webPreferences:{
webviewTag:true
}
})
```
### `nativeWindowOpen`
Child windows opened with the `nativeWindowOpen` option will always have Node.js integration disabled, unless `nodeIntegrationInSubFrames` is `true.
### Privileged Schemes Registration
Renderer process APIs `webFrame.setRegisterURLSchemeAsPrivileged` and `webFrame.registerURLSchemeAsBypassingCSP` as well as browser process API `protocol.registerStandardSchemes` have been removed.
A new API, `protocol.registerSchemesAsPrivileged` has been added and should be used for registering custom schemes with the required privileges. Custom schemes are required to be registered before app ready.
@@ -180,7 +177,7 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
*`simpleFullscreen` Boolean (optional) - Use pre-Lion fullscreen on macOS. Default is `false`.
*`skipTaskbar` Boolean (optional) - Whether to show the window in taskbar. Default is
`false`.
*`kiosk` Boolean (optional) - The kiosk mode. Default is `false`.
*`kiosk` Boolean (optional) - Whether the window is in kiosk mode. Default is `false`.
*`title` String (optional) - Default window title. Default is `"Electron"`. If the HTML tag `<title>` is defined in the HTML file loaded by `loadURL()`, this property will be ignored.
*`icon` ([NativeImage](native-image.md) | String) (optional) - The window icon. On Windows it is
recommended to use `ICO` icons to get best visual effects, you can also
@@ -206,12 +203,11 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
*`backgroundColor` String (optional) - Window's background color as a hexadecimal value,
like `#66CD00` or `#FFF` or `#80FFFFFF` (alpha in #AARRGGBB format is supported if
`transparent` is set to `true`). Default is `#FFF` (white).
*`hasShadow` Boolean (optional) - Whether window should have a shadow. This is only
implemented on macOS. Default is `true`.
*`hasShadow` Boolean (optional) - Whether window should have a shadow. Default is `true`.
*`opacity` Number (optional) - Set the initial opacity of the window, between 0.0 (fully
transparent) and 1.0 (fully opaque). This is only implemented on Windows and macOS.
*`darkTheme` Boolean (optional) - Forces using dark theme for the window, only works on
some GTK+3 desktop environments. Default is `false`.
some GTK desktop environments. Default is `false`.
*`transparent` Boolean (optional) - Makes the window [transparent](frameless-window.md#transparent-window).
Default is `false`. On Windows, does not work unless the window is frameless.
*`type` String (optional) - The type of window, default is normal window. See more about
@@ -230,6 +226,7 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
unless hovered over in the top left of the window. These custom buttons prevent
issues with mouse events that occur with the standard window toolbar buttons.
**Note:** This option is currently experimental.
*`trafficLightPosition` [Point](structures/point.md) (optional) - Set a custom position for the traffic light buttons. Can only be used with `titleBarStyle` set to `hidden`
*`fullscreenWindowTitle` Boolean (optional) - Shows the title in the
title bar in full screen mode on macOS for all `titleBarStyle` options.
Default is `false`.
@@ -273,8 +270,6 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
OS-level sandbox and disabling the Node.js engine. This is not the same as
the `nodeIntegration` option and the APIs available to the preload script
are more limited. Read more about the option [here](sandbox-option.md).
**Note:** This option is currently experimental and may change or be
removed in future Electron releases.
*`enableRemoteModule` Boolean (optional) - Whether to enable the [`remote`](remote.md) module.
Default is `true`.
*`session` [Session](session.md#class-session) (optional) - Sets the session used by the
@@ -294,7 +289,7 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
between the web pages even when you specified different values for them,
including but not limited to `preload`, `sandbox` and `nodeIntegration`.
So it is suggested to use exact same `webPreferences` for web pages with
the same `affinity`. _This property is experimental_
the same `affinity`. _Deprecated_
*`zoomFactor` Number (optional) - The default zoom factor of the page, `3.0` represents
`300%`. Default is `1.0`.
*`javascript` Boolean (optional) - Enables JavaScript support. Default is `true`.
@@ -353,6 +348,9 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
You can access this context in the dev tools by selecting the
'Electron Isolated Context' entry in the combo box at the top of the
Console tab.
*`worldSafeExecuteJavaScript` Boolean (optional) - If true, values returned from `webFrame.executeJavaScript` will be sanitized to ensure JS values
can't unsafely cross between worlds when using `contextIsolation`. The default
is `false`. In Electron 12, the default will be changed to `true`. _Deprecated_
*`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:** This option is currently
@@ -374,6 +372,8 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
consecutive dialog protection is triggered. If not defined the default
message would be used, note that currently the default message is in
English and not localized.
*`disableDialogs` Boolean (optional) - Whether to disable dialogs
completely. Overrides `safeDialogs`. Default is `false`.
*`navigateOnDragDrop` Boolean (optional) - Whether dragging and dropping a
file or link onto the page causes a navigation. Default is `false`.
*`autoplayPolicy` String (optional) - Autoplay policy to apply to
@@ -383,6 +383,20 @@ It creates a new `BrowserWindow` with native properties as set by the `options`.
*`disableHtmlFullscreenWindowResize` Boolean (optional) - Whether to
prevent the window from resizing when entering HTML Fullscreen. Default
is `false`.
*`accessibleTitle` String (optional) - An alternative title string provided only
to accessibility tools such as screen readers. This string is not directly
visible to users.
*`spellcheck` Boolean (optional) - Whether to enable the builtin spellchecker.
Default is `true`.
*`enableWebSQL` Boolean (optional) - Whether to enable the [WebSQL api](https://www.w3.org/TR/webdatabase/).
Default is `true`.
*`v8CacheOptions` String (optional) - Enforces the v8 code caching policy
used by blink. Accepted values are
*`none` - Disables code caching
*`code` - Heuristic based code caching
*`bypassHeatCheck` - Bypass code caching heuristics but with lazy compilation
*`bypassHeatCheckAndEagerCompile` - Same as above except compilation is eager.
Default policy is `code`.
When setting minimum or maximum window size with `minWidth`/`maxWidth`/
`minHeight`/`maxHeight`, it only constrains the users. It won't prevent you from
@@ -513,7 +527,7 @@ Emitted when the window is restored from a minimized state.
Returns:
*`event` Event
*`newBounds` [`Rectangle`](structures/rectangle.md) - Size the window is being resized to.
*`newBounds` [Rectangle](structures/rectangle.md) - Size the window is being resized to.
Emitted before the window is resized. Calling `event.preventDefault()` will prevent the window from being resized.
@@ -523,14 +537,14 @@ Note that this is only emitted when the window is being resized manually. Resizi
Emitted after the window has been resized.
#### Event: 'will-move' _Windows_
#### Event: 'will-move' _macOS_ _Windows_
Returns:
*`event` Event
*`newBounds` [`Rectangle`](structures/rectangle.md) - Location the window is being moved to.
*`newBounds` [Rectangle](structures/rectangle.md) - Location the window is being moved to.
Emitted before the window is moved. Calling `event.preventDefault()` will prevent the window from being moved.
Emitted before the window is moved. On Windows, calling `event.preventDefault()` will prevent the window from being moved.
Note that this is only emitted when the window is being resized manually. Resizing the window with `setBounds`/`setSize` will not emit this event.
@@ -621,6 +635,12 @@ Returns:
Emitted on 3-finger swipe. Possible directions are `up`, `right`, `down`, `left`.
The method underlying this event is built to handle older macOS-style trackpad swiping,
where the content on the screen doesn't move with the swipe. Most macOS trackpads are not
configured to allow this kind of swiping anymore, so in order for it to emit properly the
'Swipe between pages' preference in `System Preferences > Trackpad > More Gestures` must be
set to 'Swipe with two or three fingers'.
#### Event: 'rotate-gesture' _macOS_
Returns:
@@ -662,7 +682,8 @@ Returns `BrowserWindow | null` - The window that is focused in this application,
*`webContents` [WebContents](web-contents.md)
Returns `BrowserWindow` - The window that owns the given `webContents`.
Returns `BrowserWindow | null` - The window that owns the given `webContents`
or `null` if the contents are not owned by a window.
#### `BrowserWindow.fromBrowserView(browserView)`
@@ -676,7 +697,7 @@ Returns `BrowserWindow | null` - The window that owns the given `browserView`. I
Returns `BrowserWindow` - The window with the given `id`.
Objects created with `new BrowserWindow` have the following properties:
@@ -767,7 +806,7 @@ events.
#### `win.id` _Readonly_
A `Integer` property representing the unique ID of the window.
A `Integer` property representing the unique ID of the window. Each ID is unique among all `BrowserWindow` instances of the entire Electron application.
#### `win.autoHideMenuBar`
@@ -776,6 +815,51 @@ A `Boolean` property that determines whether the window menu bar should hide its
If the menu bar is already visible, setting this property to `true` won't
hide it immediately.
#### `win.simpleFullScreen`
A `Boolean` property that determines whether the window is in simple (pre-Lion) fullscreen mode.
#### `win.fullScreen`
A `Boolean` property that determines whether the window is in fullscreen mode.
#### `win.visibleOnAllWorkspaces`
A `Boolean` property that determines whether the window is visible on all workspaces.
**Note:** Always returns false on Windows.
#### `win.shadow`
A `Boolean` property that determines whether the window has a shadow.
#### `win.menuBarVisible` _Windows_ _Linux_
A `Boolean` property that determines whether the menu bar should be visible.
**Note:** If the menu bar is auto-hide, users can still bring up the menu bar by pressing the single `Alt` key.
#### `win.kiosk`
A `Boolean` property that determines whether the window is in kiosk mode.
#### `win.documentEdited` _macOS_
A `Boolean` property that specifies whether the window’s document has been edited.
The icon in title bar will become gray when set to `true`.
#### `win.representedFilename` _macOS_
A `String` property that determines the pathname of the file the window represents,
and the icon of the file will show in window's title bar.
#### `win.title`
A `String` property that determines the title of the native window.
**Note:** The title of the web page can be different from the title of the native window.
#### `win.minimizable`
A `Boolean` property that determines whether the window can be manually minimized by user.
@@ -828,6 +912,12 @@ const menu = Menu.buildFromTemplate(template)
Menu.setApplicationMenu(menu)
```
#### `win.accessibleTitle`
A `String` property that defines an alternative title provided only to
accessibility tools such as screen readers. This string is not directly
visible to users.
### Instance Methods
Objects created with `new BrowserWindow` have the following instance methods:
@@ -925,7 +1015,7 @@ Returns `Boolean` - Whether the window is in fullscreen mode.
Enters or leaves simple fullscreen mode.
Simple fullscreen mode emulates the native fullscreen behavior found in versions of MacOS X prior to Lion (10.7).
Simple fullscreen mode emulates the native fullscreen behavior found in versions of macOS prior to Lion (10.7).
#### `win.isSimpleFullScreen()` _macOS_
@@ -935,11 +1025,11 @@ Returns `Boolean` - Whether the window is in simple (pre-Lion) fullscreen mode.
Returns `Boolean` - Whether the window is in normal state (not maximized, not minimized, not in fullscreen mode).
| `Object` | Complex | ✅ | ✅ | Keys must be supported using only "Simple" types in this table. Values must be supported in this table. Prototype modifications are dropped. Sending custom classes will copy values but not the prototype. |
| `Array` | Complex | ✅ | ✅ | Same limitations as the `Object` type |
| `Error` | Complex | ✅ | ✅ | Errors that are thrown are also copied, this can result in the message and stack trace of the error changing slightly due to being thrown in a different context |
| `Promise` | Complex | ✅ | ✅ | Promises are only proxied if they are the return value or exact parameter. Promises nested in arrays or objects will be dropped. |
| `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 |
| `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.
to monitor and report crashes. On Linux, Electron uses
[breakpad](https://chromium.googlesource.com/breakpad/breakpad/+/master/). This
is an implementation detail driven by Chromium, and it may change in future. In
particular, crashpad is newer and will likely eventually replace breakpad on
all platforms.
## Methods
@@ -43,40 +46,68 @@ The `crashReporter` module has the following methods:
### `crashReporter.start(options)`
*`options` Object
*`companyName` String
*`submitURL` String - URL that crash reports will be sent to as POST.
*`productName` String (optional) - Defaults to `app.name`.
*`uploadToServer` Boolean (optional) - Whether crash reports should be sent to the server. Default is `true`.
*`ignoreSystemCrashHandler` Boolean (optional) - Default is `false`.
*`extra` Record<String, String> (optional) - An object you can define that will be sent along with the
report. Only string properties are sent correctly. Nested objects are not
supported. When using Windows, the property names and values must be fewer than 64 characters.
*`crashesDirectory` String (optional) - Directory to store the crash reports temporarily (only used when the crash reporter is started via `process.crashReporter.start`).
*`companyName` String (optional) _Deprecated_ - Deprecated alias for
`{ globalExtra: { _companyName: ... } }`.
*`uploadToServer` Boolean (optional) - Whether crash reports should be sent
to the server. If false, crash reports will be collected and stored in the
crashes directory, but not uploaded. Default is `true`.
*`ignoreSystemCrashHandler` Boolean (optional) - If true, crashes generated
in the main process will not be forwarded to the system crash handler.
Default is `false`.
*`rateLimit` Boolean (optional) _macOS__Windows_ - If true, limit the
number of crashes uploaded to 1/hour. Default is `false`.
*`compress` Boolean (optional) _macOS__Windows_ - If true, crash reports
will be compressed and uploaded with `Content-Encoding: gzip`. Not all
collection servers support compressed payloads. Default is `false`.
*`extra` Record<String, String> (optional) - Extra string key/value
annotations that will be sent along with crash reports that are generated
in the main process. Only string values are supported. Crashes generated in
child processes will not contain these extra
parameters to crash reports generated from child processes, call
[`addExtraParameter`](#crashreporteraddextraparameterkey-value) from the
child process.
*`globalExtra` Record<String, String> (optional) - Extra string key/value
annotations that will be sent along with any crash reports generated in any
process. These annotations cannot be changed once the crash reporter has
been started. If a key is present in both the global extra parameters and
the process-specific extra parameters, then the global one will take
precedence. By default, `productName` and the app version are included, as
well as the Electron version.
You are required to call this method before using any other `crashReporter` APIs
and in each process (main/renderer) from which you want to collect crash reports.
You can pass different options to `crashReporter.start` when calling from different processes.
This method must be called before using any other `crashReporter` APIs. Once
initialized this way, the crashpad handler collects crashes from all
subsequently created processes. The crash reporter cannot be disabled once
started.
**Note** Child processes created via the `child_process` module will not have access to the Electron modules.
Therefore, to collect crash reports from them, use `process.crashReporter.start` instead. Pass the same options as above
along with an additional one called `crashesDirectory` that should point to a directory to store the crash
reports temporarily. You can test this out by calling `process.crash()` to crash the child process.
This method should be called as early as possible in app startup, preferably
before`app.on('ready')`. If the crash reporter is not initialized at the time
a renderer process is created, then that renderer process will not be monitored
by the crash reporter.
**Note:**If you need send additional/updated `extra` parameters after your
first call `start` you can call `addExtraParameter` on macOS or call `start`
again with the new/updated `extra` parameters on Linux and Windows.
**Note:**You can test out the crash reporter by generating a crash using
`process.crash()`.
**Note:**On macOS and windows, Electron uses a new `crashpad` client for crash collection and reporting.
If you want to enable crash reporting, initializing `crashpad` from the main process using `crashReporter.start` is required
regardless of which process you want to collect crashes from. Once initialized this way, the crashpad handler collects
crashes from all processes. You still have to call `crashReporter.start` from the renderer or child process, otherwise crashes from
them will get reported without `companyName`, `productName` or any of the `extra` information.
**Note:**If you need to send additional/updated `extra` parameters after your
first call `start` you can call `addExtraParameter`.
**Note:** Parameters passed in `extra`, `globalExtra` or set with
`addExtraParameter` have limits on the length of the keys and values. Key names
must be at most 39 bytes long, and values must be no longer than 127 bytes.
Keys with names longer than the maximum will be silently ignored. Key values
longer than the maximum length will be truncated.
**Note:** Calling this method from the renderer process is deprecated.
Returns [`CrashReport`](structures/crash-report.md) - The date and ID of the
last crash report. Only crash reports that have been uploaded will be returned;
even if a crash report is present on disk it will not be returned until it is
uploaded. In the case that there are no uploaded reports, `null` is returned.
Returns the date and ID of the last crash report. Only crash reports that have been uploaded will be returned; even if a crash report is present on disk it will not be returned until it is uploaded. In the case that there are no uploaded reports, `null` is returned.
**Note:** Calling this method from the renderer process is deprecated.
*`key`String - Parameter key, must be less than 64 characters long.
*`value` String - Parameter value, must be less than 64 characters long.
Returns `String` - The directory where crashes are temporarily stored before being uploaded.
Set an extra parameter to be sent with the crash report. The values
specified here will be sent in addition to any values set via the `extra` option when `start` was called. This API is only available on macOS and windows, if you need to add/update extra parameters on Linux after your first call to `start` you can call `start` again with the updated `extra` options.
**Note:** This method is deprecated, use `app.getPath('crashDumps')` instead.
@@ -91,7 +91,11 @@ The `desktopCapturer` module has the following methods:
Returns `Promise<DesktopCapturerSource[]>` - Resolves with an array of [`DesktopCapturerSource`](structures/desktop-capturer-source.md) objects, each `DesktopCapturerSource` represents a screen or an individual window that can be captured.
**Note** Capturing the screen contents requires user consent on macOS 10.15 Catalina or higher,
which can detected by [`systemPreferences.getMediaAccessStatus`].
@@ -48,6 +48,7 @@ The `dialog` module has the following methods:
their target path.
*`treatPackageAsDirectory`_macOS_ - Treat packages, such as `.app` folders,
as a directory instead of a file.
*`dontAddToRecent`_Windows_ - Do not add the item being opened to the recent documents list.
*`message` String (optional) _macOS_ - Message to display above input
boxes.
*`securityScopedBookmarks` Boolean (optional) _macOS__mas_ - Create [security scoped bookmarks](https://developer.apple.com/library/content/documentation/Security/Conceptual/AppSandboxDesignGuide/AppSandboxInDepth/AppSandboxInDepth.html#//apple_ref/doc/uid/TP40011183-CH3-SW16) when packaged for the Mac App Store.
*`treatPackageAsDirectory`_macOS_ - Treat packages, such as `.app` folders,
as a directory instead of a file.
*`dontAddToRecent`_Windows_ - Do not add the item being opened to the recent documents list.
*`message` String (optional) _macOS_ - Message to display above input
boxes.
*`securityScopedBookmarks` Boolean (optional) _macOS__mas_ - Create [security scoped bookmarks](https://developer.apple.com/library/content/documentation/Security/Conceptual/AppSandboxDesignGuide/AppSandboxInDepth/AppSandboxInDepth.html#//apple_ref/doc/uid/TP40011183-CH3-SW16) when packaged for the Mac App Store.
@@ -118,7 +120,7 @@ Returns `Promise<Object>` - Resolve with an object containing the following:
*`canceled` Boolean - whether or not the dialog was canceled.
*`filePaths` String[] - An array of file paths chosen by the user. If the dialog is cancelled this will be an empty array.
*`bookmarks` String[] (optional) _macOS__mas_ - An array matching the `filePaths` array of base64 encoded strings which contains security scoped bookmark data. `securityScopedBookmarks` must be enabled for this to be populated.
*`bookmarks` String[] (optional) _macOS__mas_ - An array matching the `filePaths` array of base64 encoded strings which contains security scoped bookmark data. `securityScopedBookmarks` must be enabled for this to be populated. (For return values, see [table here](#bookmarks-array).)
The `browserWindow` argument allows the dialog to attach itself to a parent window, making it modal.
*`showsTagField` Boolean (optional) _macOS_ - Show the tags input box,
defaults to `true`.
*`properties` String[] (optional)
*`showHiddenFiles` - Show hidden files in dialog.
*`createDirectory`_macOS_ - Allow creating new directories from dialog.
*`treatPackageAsDirectory`_macOS_ - Treat packages, such as `.app` folders,
as a directory instead of a file.
*`showOverwriteConfirmation`_Linux_ - Sets whether the user will be presented a confirmation dialog if the user types a file name that already exists.
*`dontAddToRecent`_Windows_ - Do not add the item being saved to the recent documents list.
*`securityScopedBookmarks` Boolean (optional) _macOS__mas_ - Create a [security scoped bookmark](https://developer.apple.com/library/content/documentation/Security/Conceptual/AppSandboxDesignGuide/AppSandboxInDepth/AppSandboxInDepth.html#//apple_ref/doc/uid/TP40011183-CH3-SW16) when packaged for the Mac App Store. If this option is enabled and the file doesn't already exist a blank file will be created at the chosen path.
Returns `String | undefined`, the path of the file chosen by the user; if the dialog is cancelled it returns `undefined`.
@@ -193,14 +202,20 @@ The `filters` specifies an array of file types that can be displayed, see
*`message` String (optional) _macOS_ - Message to display above text fields.
*`nameFieldLabel` String (optional) _macOS_ - Custom label for the text
displayed in front of the filename text field.
*`showsTagField` Boolean (optional) _macOS_ - Show the tags input box,
defaults to `true`.
*`showsTagField` Boolean (optional) _macOS_ - Show the tags input box, defaults to `true`.
*`properties` String[] (optional)
*`showHiddenFiles` - Show hidden files in dialog.
*`createDirectory`_macOS_ - Allow creating new directories from dialog.
*`treatPackageAsDirectory`_macOS_ - Treat packages, such as `.app` folders,
as a directory instead of a file.
*`showOverwriteConfirmation`_Linux_ - Sets whether the user will be presented a confirmation dialog if the user types a file name that already exists.
*`dontAddToRecent`_Windows_ - Do not add the item being saved to the recent documents list.
*`securityScopedBookmarks` Boolean (optional) _macOS__mas_ - Create a [security scoped bookmark](https://developer.apple.com/library/content/documentation/Security/Conceptual/AppSandboxDesignGuide/AppSandboxInDepth/AppSandboxInDepth.html#//apple_ref/doc/uid/TP40011183-CH3-SW16) when packaged for the Mac App Store. If this option is enabled and the file doesn't already exist a blank file will be created at the chosen path.
Returns `Promise<Object>` - Resolve with an object containing the following:
*`canceled` Boolean - whether or not the dialog was canceled.
*`filePath` String (optional) - If the dialog is canceled, this will be `undefined`.
*`bookmark` String (optional) _macOS__mas_ - Base64 encoded string which contains the security scoped bookmark data for the saved file. `securityScopedBookmarks` must be enabled for this to be present.
*`bookmark` String (optional) _macOS__mas_ - Base64 encoded string which contains the security scoped bookmark data for the saved file. `securityScopedBookmarks` must be enabled for this to be present. (For return values, see [table here](#bookmarks-array).)
The `browserWindow` argument allows the dialog to attach itself to a parent window, making it modal.
@@ -254,6 +269,7 @@ Shows a message box, it will block the process until the message box is closed.
It returns the index of the clicked button.
The `browserWindow` argument allows the dialog to attach itself to a parent window, making it modal.
If `browserWindow` is not shown dialog will not be attached to it. In such case It will be displayed as independed window.
Restores finished transactions. This method can be called either to install purchases on additional devices, or to restore purchases for an application that the user deleted and reinstalled.
[The payment queue](https://developer.apple.com/documentation/storekit/skpaymentqueue?language=objc) delivers a new transaction for each previously completed transaction that can be restored. Each transaction includes a copy of the original transaction.
@@ -55,13 +55,23 @@ Removes all listeners, or those of the specified `channel`.
*`channel` String
*`...args` any[]
Send a message to the main process asynchronously via `channel`, you can also
send arbitrary arguments. Arguments will be serialized as JSON internally and
hence no functions or prototype chain will be included.
Send an asynchronous message to the main process via `channel`, along with
arguments. Arguments will be serialized with the [Structured Clone
Algorithm][SCA], just like [`window.postMessage`][], so prototype chains will not be
included. Sending Functions, Promises, Symbols, WeakMaps, or WeakSets will
throw an exception.
> **NOTE**: Sending non-standard JavaScript types such as DOM objects or
> special Electron objects is deprecated, and will begin throwing an exception
> starting with Electron 9.
The main process handles it by listening for `channel` with the
[`ipcMain`](ipc-main.md) module.
If you need to transfer a [`MessagePort`][] to the main process, use [`ipcRenderer.postMessage`](#ipcrendererpostmessagechannel-message-transfer).
If you want to receive a single response from the main process, like the result of a method call, consider using [`ipcRenderer.invoke`](#ipcrendererinvokechannel-args).
### `ipcRenderer.invoke(channel, ...args)`
*`channel` String
@@ -69,9 +79,15 @@ The main process handles it by listening for `channel` with the
Returns `Promise<any>` - Resolves with the response from the main process.
Send a message to the main process asynchronously via `channel` and expect an
asynchronous result. Arguments will be serialized as JSON internally and
hence no functions or prototype chain will be included.
Send a message to the main process via `channel` and expect a result
asynchronously. Arguments will be serialized with the [Structured Clone
Algorithm][SCA], just like [`window.postMessage`][], so prototype chains will not be
included. Sending Functions, Promises, Symbols, WeakMaps, or WeakSets will
throw an exception.
> **NOTE**: Sending non-standard JavaScript types such as DOM objects or
> special Electron objects is deprecated, and will begin throwing an exception
The Electron team is currently undergoing an initiative to convert callback-based functions in Electron to return Promises. During this transition period, both the callback and Promise-based versions of these functions will work correctly, and will both be documented.
To enable deprecation warnings for these updated functions, use the `process.enablePromiseAPI` runtime flag.
When a majority of affected functions are migrated, this flag will be enabled by default and all developers will be able to see these deprecation warnings. At that time, the callback-based versions will also be removed from documentation. This document will be continuously updated as more functions are converted.
A `Boolean` property that determines whether the image is considered a [template image](https://developer.apple.com/documentation/appkit/nsimage/1520017-template).
@@ -35,8 +35,10 @@ Returns `Boolean` - Whether or not desktop notifications are supported on the cu
*`silent` Boolean (optional) - Whether or not to emit an OS notification noise when showing the notification.
*`icon` (String | [NativeImage](native-image.md)) (optional) - An icon to use in the notification.
*`hasReply` Boolean (optional) _macOS_ - Whether or not to add an inline reply option to the notification.
*`timeoutType` String (optional) _Linux__Windows_ - The timeout duration of the notification. Can be 'default' or 'never'.
*`replyPlaceholder` String (optional) _macOS_ - The placeholder to write in the inline reply input field.
*`sound` String (optional) _macOS_ - The name of the sound file to play when the notification is shown.
*`urgency` String (optional) _Linux_ - The urgency level of the notification. Can be 'normal', 'critical', or 'low'.
*`actions` [NotificationAction[]](structures/notification-action.md) (optional) _macOS_ - Actions to add to the notification. Please read the available actions and limitations in the `NotificationAction` documentation.
*`closeButtonText` String (optional) _macOS_ - A custom title for the close button of an alert. An empty string will cause the default localized text to be used.
@@ -144,6 +146,18 @@ A `Boolean` property representing whether the notification is silent.
A `Boolean` property representing whether the notification has a reply action.
#### `notification.urgency` _Linux_
A `String` property representing the urgency level of the notification. Can be 'normal', 'critical', or 'low'.
Default is 'low' - see [NotifyUrgency](https://developer.gnome.org/notification-spec/#urgency-levels) for more information.
#### `notification.timeoutType` _Linux_ _Windows_
A `String` property representing the type of timeout duration for the notification. Can be 'default' or 'never'.
If `timeoutType` is set to 'never', the notification never expires. It stays open until closed by the calling API or the user.
#### `notification.actions`
A [`NotificationAction[]`](structures/notification-action.md) property representing the actions of the notification.
The following events are available on instances of `ServiceWorkers`:
#### Event: 'console-message'
Returns:
*`event` Event
*`messageDetails` Object - Information about the console message
*`message` String - The actual console message
*`versionId` Number - The version ID of the service worker that sent the log message
*`source` String - The type of source for this message. Can be `javascript`, `xml`, `network`, `console-api`, `storage`, `app-cache`, `rendering`, `security`, `deprecation`, `worker`, `violation`, `intervention`, `recommendation` or `other`.
*`level` Number - The log level, from 0 to 3. In order it matches `verbose`, `info`, `warning` and `error`.
*`sourceUrl` String - The URL the message came from
*`lineNumber` Number - The line number of the source that triggered this console message
Emitted when a service worker logs something to the console.
### Instance Methods
The following methods are available on instances of `ServiceWorkers`:
#### `serviceWorkers.getAllRunning()`
Returns `Record<Number, ServiceWorkerInfo>` - A [ServiceWorkerInfo](structures/service-worker-info.md) object where the keys are the service worker version ID and the values are the information about that service worker.
#### `serviceWorkers.getFromVersionID(versionId)`
*`versionId` Number
Returns [`ServiceWorkerInfo`](structures/service-worker-info.md) - Information about this service worker
If the service worker does not exist or is not running this method will throw an exception.
*`frameId` Integer - The ID of the renderer frame that sent this message
*`returnValue` any - Set this to the value to be returned in a synchronous message
*`sender` WebContents - Returns the `webContents` that sent the message
*`ports` MessagePortMain[] - A list of MessagePorts that were transferred with this message
*`reply` Function - A function that will send an IPC message to the renderer frame that sent the original message that you are currently handling. You should use this method to "reply" to the sent message in order to guarantee the reply will go to the correct process and frame.
*`sender` IpcRenderer - The `IpcRenderer` instance that emitted the event originally
*`senderId` Integer - The `webContents.id` that sent the message, you can call `event.sender.sendTo(event.senderId, ...)` to reply to the message, see [ipcRenderer.sendTo][ipc-renderer-sendto] for more information. This only applies to messages sent from a different renderer. Messages sent directly from the main process set `event.senderId` to `0`.
*`ports` MessagePort[] - A list of MessagePorts that were transferred with this message
*`name` String - the name of the printer as understood by the OS.
*`displayName` String - the name of the printer as shown in Print Preview.
*`description` String - a longer description of the printer's type.
*`status` Number - the current status of the printer.
*`isDefault` Boolean - whether or not a given printer is set as the default printer on the OS.
*`options` Object - an object containing a variable number of platform-specific printer information.
The number represented by `status` means different things on different platforms: on Windows it's potential values can be found [here](https://docs.microsoft.com/en-us/windows/win32/printdocs/printer-info-2), and on Linux and macOS they can be found [here](https://www.cups.org/doc/cupspm.html).
## Example
@@ -12,13 +16,14 @@ may be different on each platform.
*`scriptUrl` String - The full URL to the script that this service worker runs
*`scope` String - The base URL that this service worker is active for.
*`renderProcessId` Number - The virtual ID of the process that this service worker is running in. This is not an OS level PID. This aligns with the ID set used for `webContents.getProcessId()`.
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.