* ci: use CircleCI hosted macOS arm64 runners for testing
(cherry picked from commit 6ca2aa6b06)
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* ci: Use same version of xcode/macOS for both arm and x64 testing
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
fix: Ignore `-webkit-app-region: drag;` when window is in full screen mode. (#41307)
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Mikhail Leliakin <leliakin@canva.com>
chore: peg to a specific depot_tools so that we can use goma on older branches
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* refactor: make KeyWeakMap::KeyObject private
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: avoid redundant map lookup
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: remove unused KeyWeakMap::Has()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: make KeyWeakMap dtor nonvirtual
no inheritance used, so no need for virtual dtor?
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: fix KeyWeakMap code comment
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use if statement in KeyWeakMap::Get()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use better variable names in KeyWeakMap::Values()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use base::WriteJson() in ListValueToNSArray()
refactor: use base::WriteJson() in DictionaryValueToNSDictionary()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use base::WriteJson() in Debugger::SendCommand()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use base::WriteJson() in ScriptingExecuteScriptFunction::Run()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use base::WriteJson() in HandleAccessibilityRequestCallback()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fix: use `HasStyleMask(NSWindowStyleMaskResizable)` instead of `IsResizable()` for enabling/disabling window maximize button
Co-authored-by: Tamás Zahola <tzahola@gmail.com>
* Format
Co-authored-by: Tamás Zahola <tzahola@gmail.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Tamás Zahola <tzahola@gmail.com>
* refactor: do not use deprecated ToInternalValue() in ElectronExtensionLoader::FinishExtensionLoad()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: do not use deprecated ToInternalValue() in NotificationPresenterWin::SaveIconToFilesystem()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: rename temp variable to now_usec for clarity
Co-authored-by: Charles Kerr <charles@charleskerr.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fix: macOS maximize button shouldn't be disabled just because the window is non-fullscreenable
Co-authored-by: Tamás Zahola <tzahola@gmail.com>
* add test
Co-authored-by: Tamás Zahola <tzahola@gmail.com>
* fix test by enabling maximize button if `resizable && (maximizable || fullscreenable)` instead of `(resizable && maximizable) && fullscreenable`
Co-authored-by: Tamás Zahola <tzahola@gmail.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Tamás Zahola <tzahola@gmail.com>
* build: fix release notes script bug that omitted edited release-clerk comments
add a warning when neither notes nor no-notes are found
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fixup! build: fix release notes script bug that omitted edited release-clerk comments
use console.warn() instead of console.log()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Backport of #40681
See that PR for details.
Notes: Fixed an issue where font requests were incorrectly being sent to dev tools multiple times per resource.
chore: [27-x-y] cherry-pick 5 changes from Release-3-M119
* 971d6055e7b7 from openscreen
* 3f45b1af5e41 from chromium
* e13061c50998 from chromium
* 6cc0d9aa5b3f from chromium
* 6169a1fabae1 from skia
XDG Desktop Portal provides restore tokens to restore a previously
selected PipeWire stream instead of prompting the user again. This
restore token is single use only and it has to be replaced when the
stream is completed/stopped.
BaseCapturerPipewire maintains two source IDs: one is initialized by
the constructor for new sources (source_id_) and another is for
capturing previously selected sources (selected_source_id_). The
restore token was always being stored under `source_id_`, even if the
capture was ongoing for `selected_source_id_`. This prevents a stream
from being restored more than once. Fix that by storing the restore
token under the selected source ID if it exists.
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Athul Iddya <athul@iddya.com>
fix: capturePage for hidden windows on Windows/Linux
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
fix: crash when calling non-reentrant function in loadURL
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
fix: toggling devtools while minimized on Windows
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Propagate layout call to all children of InspectableWebContentsViewViews.
When BrowserView bounds are set from js, those might not trigger layout
immediately, sometimes propagating InvalidateLayout call to parent.
View is marked as needing layout, expecting to receive it from parent on
next layout call. The problem is that BrowserView's view is added as child
of InspectableWebContentsViews which does not call setBounds (which
would trigger layout) on all of it's children when doing it's layout,
so it skips propagating Layout call to its children BrowserViews views,
even though those were marked as needing layout.
Call base class View::Layout which will iterate over views' children
and call Layout on those that were marked as needing them.
Fixes#39993.
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Marek Haranczyk <marek@openfin.co>
chore: add deprecated app.runningUnderRosettaTranslation to breaking-changes.md
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Milan Burda <milan.burda@gmail.com>
refactor: use type enum in file stats for asar archive (#39889)
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Milan Burda <milan.burda@gmail.com>
fix: app.runningUnderARM64Translation() always returning true on ARM64
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Milan Burda <milan.burda@gmail.com>
* build: use afs on aks instead of circle cache
* build: do not use aks logic on linux hosts checking out for macOS
* build: fix gn-check could-be-aks
* build: sigh
* build: no ls mnt
* build: keep build alive while debugging
* build: make debuggable
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Samuel Attard <sam@electronjs.org>
chore: set GOMA_DIR for autoninja
(cherry picked from commit 94f24bde4d)
(cherry picked from commit 90c1f6e1cb8d22d94dd01791dc4b9c3e0a7e86fc)
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Check if PipeWire can be initialized before creating generic capturer.
This harmonizes the conditions with the ones used in Linux
implementations of DesktopCapturer::CreateRawScreenCapturer and
DesktopCapturer::CreateRawWindowCapturer.
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Athul Iddya <athul@iddya.com>
* refactor: make ElectronRendererClient::node_bindings_ a const ptr
refactor: make ElectronRendererClient::electron_bindings_ a const ptr
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fix: order-of-destruction bug in NodeService
js_env_ depends on the uv_loop from node_bindings_, but is destroyed after node_bindings_
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: revert unintentional commit
Co-authored-by: Charles Kerr <charles@charleskerr.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fix: ensure app load is limited to real asar files when appropriate
Co-authored-by: Samuel Attard <marshallofsound@electronjs.org>
* chore: update line numbers in node test
* chore: update patches
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Samuel Attard <marshallofsound@electronjs.org>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
* refactor: make ElectronRendererClient::node_bindings_ a const ptr
refactor: make ElectronRendererClient::electron_bindings_ a const ptr
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: make NodeBindings::in_worker_loop() private
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fix: raw_ptr destructor dependency in NodeBindings
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: revert unintentional commit
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: make NodeBindings::uv_loop_ private
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: extract event_loop init into a separate function for readability
Co-authored-by: Charles Kerr <charles@charleskerr.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: bump chromium in DEPS to 118.0.5951.0
* chore: bump chromium in DEPS to 118.0.5953.1
* chore: bump chromium in DEPS to 118.0.5955.1
* chore: bump chromium in DEPS to 118.0.5957.1
* chore: bump chromium in DEPS to 118.0.5959.1
* chore: bump chromium in DEPS to 118.0.5961.1
* chore: bump chromium in DEPS to 118.0.5963.1
* chore: bump chromium in DEPS to 118.0.5965.2
* chore: bump chromium in DEPS to 118.0.5967.1
* chore: bump chromium in DEPS to 118.0.5969.1
* chore: bump chromium in DEPS to 118.0.5971.1
* chore: bump chromium in DEPS to 118.0.5973.1
* chore: bump chromium in DEPS to 118.0.5975.1
* chore: bump chromium in DEPS to 118.0.5977.1
* chore: bump chromium in DEPS to 118.0.5979.1
* chore: bump chromium in DEPS to 118.0.5981.0
* chore: bump chromium in DEPS to 118.0.5981.1
* chore: bump chromium in DEPS to 118.0.5983.1
* chore: bump chromium in DEPS to 118.0.5985.1
* chore: bump chromium in DEPS to 118.0.5987.1
* chore: bump chromium in DEPS to 118.0.5989.1
* chore: bump chromium in DEPS to 118.0.5991.1
* chore: bump chromium in DEPS to 118.0.5993.1
* chore: bump chromium to 118.0.5975.0 (main) (#39531)
* chore: bump chromium in DEPS to 118.0.5951.0
* chore: update printing.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4727894
No logic changes, but patch needed to be manually re-applied due to upstream code shear
* chore: update port_autofill_colors_to_the_color_pipeline.patch
No manual changes; patch applied with fuzz
* chore: update patches
* chore: bump chromium in DEPS to 118.0.5953.0
* chore: update patches
* chore: bump chromium in DEPS to 118.0.5955.0
* chore: update patches
* chore: bump chromium in DEPS to 118.0.5957.0
* chore: update patches
* chore: include path of native_web_keyboard_event.h
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4758689
* chore: remove reference to eextensions/browser/notification-types.h
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4771627
* chore: update references to renamed upstream field NativeWebKeyboardEvent.skip_if_unhandled (formerly known as skip_in_browser
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4758689
Need a second pair of eyes on this commit. In particular the reference in content_converter.cc, skipInBrowser, seems to not be set or documented anywhere? Is this unused/vestigal code?
* chore: sync signature of ElectronExtensionsBrowserClient::IsValidContext() to upstream change
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4784198
* chore: add auto_pip_setting_helper.[cc,h] to chromium_src build
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4688277
Exiting upstream code used by chromium_src now depends on this new upstream class
* chore: bump chromium in DEPS to 118.0.5959.0
* chore: update add_maximized_parameter_to_linuxui_getwindowframeprovider.patch
Xref: add_maximized_parameter_to_linuxui_getwindowframeprovider.patch
manually adjust patch to minor upstream chagnes
* chore: update patches
* chore: bump chromium in DEPS to 118.0.5961.0
* chore: bump chromium in DEPS to 118.0.5963.0
* chore: update patches
* 4780994: Rename various base files to "apple" since iOS uses them too
https://chromium-review.googlesource.com/c/chromium/src/+/4780994
* Many files moved from `mac` -> `apple`
This commit follows a handful of CLs that simply rename files/symbols to change `mac`
to `apple`
to signify their use across both macOS and iOS:
- 4784010: Move scoped_nsautorelease_pool to base/apple, leave a forwarding header
- 4790744: Move foundation_util to base/apple, leave a forwarding header
- 4790741: Move scoped_cftypreref to base/apple, leave a forwarding header
- 4787627: Move and rename macOS+iOS base/ files in PA to "apple"
- 4780399: Move OSStatus logging to base/apple
- 4787387: Remove forwarding headers
- 4781113: Rename message_pump_mac to "apple" because iOS uses it too
* fixup minor patch update error
A function param got dropped from this patch somewhere earlier
* chore: bump chromium in DEPS to 118.0.5965.2
* chore: update patches
* 4799213: Move ScopedTypeRef and ScopedCFTypeRef into base::apple::
https://chromium-review.googlesource.com/c/chromium/src/+/4799213
* Fix removed include to BrowserContext
In crrev.com/c/4767962 an include to BrowserContext was removed,
which was necessary for compilation. This broke only for us because
"chrome/browser/profiles/profile.h" includes that class, but we remove
all references to profiles.
* chore: bump chromium in DEPS to 118.0.5967.0
* chore: update patches
* chore: bump chromium in DEPS to 118.0.5969.0
* chore: update patches
* chore: bump chromium in DEPS to 118.0.5971.0
* chore: bump chromium in DEPS to 118.0.5973.0
* chore: update patches
* 4772121: [OOPIF PDF] Replace PDFWebContentsHelper with PDFDocumentHelper
https://chromium-review.googlesource.com/c/chromium/src/+/4772121
* 4811164: [Extensions] Do some cleanup in ChromeManagementAPIDelegate.
https://chromium-review.googlesource.com/c/chromium/src/+/4811164
* 4809488: Remove duplicate dnd functionality between Web and Renderer prefs
https://chromium-review.googlesource.com/c/chromium/src/+/4809488
Given that this is no longer an option of web preferences, we should
consider deprecating this option and then removing it.
* chore: bump chromium in DEPS to 118.0.5975.0
* chore: update patches
* fixup! chore: add auto_pip_settings_helper.{cc|h} to chromium_src build
* Reland "[windows] Remove RegKey::DeleteEmptyKey"
Refs https://chromium-review.googlesource.com/c/chromium/src/+/4813255
* Ensure StrCat means StrCat
Refs https://chromium-review.googlesource.com/c/chromium/src/+/1117180
* fixup! Remove RegKey::DeleteEmptyKey
* Consistently reject large p and large q in DH
Refs https://boringssl-review.googlesource.com/c/boringssl/+/62226
---------
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: clavin <clavin@electronjs.org>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
(cherry picked from commit 89117fdd99)
* chore: bump chromium to 118.0.5991.0 (main) (#39714)
* chore: bump chromium in DEPS to 118.0.5982.0
* chore: bump chromium in DEPS to 118.0.5983.0
* chore: bump chromium in DEPS to 118.0.5985.0
* chore: bump chromium in DEPS to 118.0.5987.0
* chore: update v8 patches
* chore: update chromium patches
* chore: update patches
* [PEPC] Add new structs to contain permission request data
Refs https://chromium-review.googlesource.com/c/chromium/src/+/4756727
* Add ThumbnailCapturer interface
Refs https://chromium-review.googlesource.com/c/chromium/src/+/4812256
* Reland "[ChromeRefresh2023] Update document pip windows for Chrome Refresh"
Refs https://chromium-review.googlesource.com/c/chromium/src/+/4814275
* chore: bump chromium in DEPS to 118.0.5989.0
* chore: bump chromium in DEPS to 118.0.5991.0
* chore: update patches
---------
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
(cherry picked from commit d9ba26273a)
* fix: broken `chrome.scripting` compilation (#39725)
fix: broken chrome.scripting impl after roll
(cherry picked from commit 54d8402a6c)
* chore: bump chromium in DEPS to 118.0.5993.1
* chore: update patches
* chore: bump chromium in DEPS to 118.0.5993.5
* test: use default timeout
(cherry picked from commit cbc4980d69)
---------
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* fix: restore flag that allowed websockets to not be backgrounded
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
* chore: update patches
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
docs: update the minimum supported macOS version to Catalina
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Milan Burda <milan.burda@gmail.com>
ci: explicitly use python3 to start goma (#39650)
* ci: explicitly use python3 to start goma
* ci: explicitly use python3 for goma
(cherry picked from commit 83760bd5c6)
feat: allow headers to be sent with webContents.downloadURL()
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
fix: tabs url and title are privileged information
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* fix: dangling raw_ptr in ElectronBrowserMainParts dtor
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fixup! fix: dangling raw_ptr in ElectronBrowserMainParts dtor
Browser::WhenReady() holds a reference to JsEnv isolate so must come after
Co-authored-by: Charles Kerr <charles@charleskerr.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Adapt to the window frame size calculation changes in CL 3970920 by
setting the inset sizes to 0 for tiled edges.
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Athul Iddya <athul@iddya.com>
perf: prefer Sorted variant of MakeFixedFlatSet()
https://chromium-review.googlesource.com/c/chromium/src/+/4660000
says that the sorted version is simpler at compile time because it
can skip MakeFixedFlatSet()'s compile-time dynamic sorting.
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
isolate_ depends on isolate_holder_ and so must be destroyed first.
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: bump chromium in DEPS to 118.0.5949.0
* chore: update mas_disable_remote_accessibility.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4705386
no manual code changes; existing patch applied with fuzz
* chore: update printing.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4779059
no manual code changes; existing patch applied with fuzz
* chore: add OffScreenRenderWidgetHostView::InvalidateLocalSurfaceIdAndAllocationGroup()
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4563504
Add an impl for a new pure virtual method that was added upstream.
Local impl inspired by upstream implementations in same CL
* chore: update patches
---------
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
* ci: fixup known hosts for linux publish
* build: use 2023 known hosts
* build: use rebuilt docker image
* Revert "build: use rebuilt docker image"
This reverts commit f9506a9cc0.
---------
Co-authored-by: Samuel Attard <marshallofsound@electronjs.org>
* chore: bump node in DEPS to v18.17.0
* chore: update build_modify_js2c_py_to_allow_injection_of_original-fs_and_custom_embedder_js.patch
Xref: https://github.com/nodejs/node/pull/46930
manually sync patch to minor upstream code shear
* chore: update build_ensure_native_module_compilation_fails_if_not_using_a_new.patch
Xref: https://github.com/nodejs/node/pull/48248
manually sync patch to minor upstream code shear
* chore: update fix_expose_the_built-in_electron_module_via_the_esm_loader.patch
Xref: https://github.com/nodejs/node/pull/47824
chore: upstream func throwIfUnsupportedURLProtocol() has been removed, so no need to patch it
* chore: update api_pass_oomdetails_to_oomerrorcallback.patch
Xref: https://github.com/nodejs/node/pull/47695
manually sync patch to minor upstream code shear
* chore: remove fix_prevent_changing_functiontemplateinfo_after_publish.patch
Xref: https://github.com/nodejs/node/pull/46979 (upstreamed patch)
Xref: https://chromium-review.googlesource.com/c/v8/v8/+/2718147 (related)
* chore: update fix_adapt_debugger_tests_for_upstream_v8_changes.patch
Xref: https://github.com/nodejs/node/pull/47274
manually sync patch to minor upstream code shear
some tests moved from sequential to parallel
* chore: remove fix_libc_buffer_overflow_in_string_view_ctor.patch
Xref: fix_libc_buffer_overflow_in_string_view_ctor.patch
patch is no longer needed due to upstream bump to ada 2.2.0
* chore: remove fix_preventing_potential_oob_in_ada_no_scheme_parsing.patch
Xref: https://github.com/nodejs/node/pull/47339
patch is no longer needed due to upstream bump to ada 2.2.0
* chore: rebuild filenames.json
several files removed/added/changed upstream
* chore: update build_add_gn_build_files.patch
upstream dep histogram 0.11.7 moved its include path from src/ to include/
Xref: https://github.com/nodejs/node/pull/47742
* chore: update fix_crypto_tests_to_run_with_bssl.patch
Xref: https://github.com/nodejs/node/pull/47160
BoringSSL doesn't support BIO_s_secmem() (a secure heap variant of
BIO_s_mem()), so use BIO_s_mem() instead.
Related discussion of secure heap support in BoringSSL:
https://boringssl-review.googlesource.com/c/boringssl/+/54309
* fix: ftbfs in node dep ada
* fix: ftbfs in node dep uvwasi
* chore: rebuild patches
* chore: update fix_handle_boringssl_and_openssl_incompatibilities.patch
Upstream used `BIO_s_secmem()`, a secure heap variant of `BIO_s_mem()`.
BoringSSL doesn't support it, so this PR opts for `BIO_s_mem()` instead.
Upstream Node.js change that prompted this:
https://github.com/nodejs/node/pull/47160
Related discussion of BoringSSL support of secure heap:
https://boringssl-review.googlesource.com/c/boringssl/+/54309
* fix: work around Node 18 isURL() regression
* chore: sort script/node-disabled-tests.json alphabetically
* test: add parallel/test-snapshot-argv1 to disabled list
test: add parallel/test-snapshot-namespaced-builtin to disabled list
We don't support that type of snapshotting at the moment.
* chore: disable flaky node test parallel/test-dgram-send-cb-quelches-error
fails upstream in v18.x on my box as well
* ci: ensure spawned node tests have ELECTRON_RUN_AS_NODE set
* fixup! fix: work around Node 18 isURL() regression
fix: infinite loop regression
* fixup! fix: work around Node 18 isURL() regression
* chore: patch fixtures/errors/force_colors.snapshot
The line numbers in the stacktrace from our v8 build don't match what
Node's tests are expecting, so update the stacktrace to match our build.
The specific numbers probably aren't t needed for the force_colors test,
which is trying to see whether or not the lines are greyed out. One option
is to upstream a test change to stop hardcoding the stacktrace.
* fixup! fix: work around Node 18 isURL() regression
fix; pull in upstream bugfix
* fixup! ci: ensure spawned node tests have ELECTRON_RUN_AS_NODE set
chore: do not inject ELECTRON_RUN_AS_NODE in test-assert-colors.js
* chore: disable flaky node test parallel/test-debugger-random-port-with-inspect-port
---------
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* build: test aks runner
* build: stress test
* build: use super-large nodes for publish jobs
* build: try using aks for everything...
* build: shared host not great
* build: clean up
* build: apparently tests dont run in kube infra?
* build: do not change test size
* docs: fix some string union types
Improve Type Union Typings in the Docs
* test: add smoke tests
* test: update `ses.clearStorageData` test case
* test: update `ses.clearStorageData` test case
---------
Co-authored-by: mhli <mhli@hillinsight.com>
* fix: delete desktop capturers when they're not needed
Delete desktop capturer objects by resetting the DesktopMediaList
objects that own them after the sources have been collected. Capturers
that are not delegated are already being reset via a patch on
NativeDesktopMediaList. That is not safe for delegated capturers as
thumbnail generation depends on user events. Deleting the
DesktopMediaList operation is safe for all capturers and releases OS
capture resources as soon as possible.
* fix: add a patch to clean up PipeWire resources
Adding a patch to workaround a Chromium issue:
https://bugs.chromium.org/p/chromium/issues/detail?id=1467060
The patch can be removed when the issue is resolved.
Screensharing with PipeWire via XDG Desktop Portal requires explicit
user permission via permission dialogs. Chromium has separate tabs for
screens and windows and thus its portal implementation requests
permissions separately for each. However, the screencast portal has no
such limitation and supports both screens and windows in a single
request.
WebRTC now supports this type of capture in a new method called
called `CreateGenericCapturer`. The `desktopCapturer` implementation has
been modified to use it. Additionally, Chromium has been patched to use
same generic capturer to ensure that the source IDs remain valid for
`getUserMedia`.
* perf: avoid string temporary in HidChooserController::PhysicalDeviceIdFromDeviceInfo()
return a const ref instead of a new string
* perf: avoid second map lookup in HidChooserController::AddDeviceInfo()
* fix: use StartUpdating method for PipeWire capturer
Fixed a crash related to PipeWire capturer by adapting to Chromium's
interface changes. Chromium expects a call to
`NativeDesktopMediaList::StartUpdating` with an implementation of
`DesktopMediaListObserver` for delegated capturers like PipeWire. This
interface allows listening to user permission events and listing
sources only after the user has made a choice on the permission dialog.
The interface has been implemented by an inner class to allow listening
to screen and window capture permissions concurrently using two
instances of the class. A patch that was resetting the capturer on the
first refresh has been changed to exclude PipeWire. PipeWire capturer
object will follow the lifecycle of `NativeDesktopMediaList`, as is the
case in Chromium.
Fixes#37463
* fix: wait for thumbnails from PipeWire when necessary
The PipeWire stream starts after the dialog is dismissed. If the sources
are listed immediately afterwards, the thumbnail may not have been
generated by that time. Explicitly wait for both thumbnail generation
and a selection on the source dialog before listing sources.
* fix: menu border being created properly on Windows 11
* chore: update patches
---------
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
* chore: bump chromium in DEPS to 117.0.5846.0
* chore: update patches
* 4628901: Bump the macOS deployment target to 10.15
https://chromium-review.googlesource.com/c/chromium/src/+/4628901
* 4593350: [Private Network Access] Trigger Permission Prompt
https://chromium-review.googlesource.com/c/chromium/src/+/4593350
* 4631011: Remove unlaunched "InstallReplacementAndroidApp" Platform App APIs
https://chromium-review.googlesource.com/c/chromium/src/+/4631011
* chore: disable API deprecation warnings in NSKeyedArchiver
* chore: update libcxx filenames
* chore: bump chromium in DEPS to 117.0.5848.2
* chore: update feat_add_set_theme_source_to_allow_apps_to.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4629743
No manual changes; patch succeeded with fuzz
* chore: update process_singleton.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4605398
Trivial manual patch adjustments to account for code shear.
* chore: remove electron::BrowserContext::GetMediaDeviceIDSalt()
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4608130
upstream tldr:
- content::BrowserContext::GetMediaDeviceIDSalt()
- content::ContentBrowserClient::ArePersistentMediaDeviceIDsAllowed()
+ content::ContentBrowserClient::GetMediaDeviceIDSalt()
This commit leaves ElectronBrowserContext::GetMediaDeviceIDSalt() in
place (now non-virtual, non-override). It is now called by the new
function ElectronBrowserClient::GetMediaDeviceIDSalt().
As a followup, we might want to consider using the new upstream
media_device_salt::MediaDeviceSaltService and removing our
electron::MediaDeviceIDSalt code. CC @MarshallOfSound for 2nd
opinion since he has done the most work on MediaDeviceIDSalt and
may have more context.
* chore: fix iwyu breakage
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4629624
electron_browser_main_parts.cc uses ui::ColorProviderManager but didn't
include it. Things worked anyway because we got it indirectly from
content/public/browser/web_contents.h until 4629624.
* chore: remove call to base::mac::IsAtLeastOS10_14
upstream has bumped minimum version to 10.15 so this call is moot?
* chore: remove obsolete API_AVAILABLE calls in IAP
upstream has bumped minimum version to 10.15 so this call is moot?
* chore: remove obsolete API_AVAILABLE calls in electron_application_delegate
upstream has bumped minimum version to 10.15 so this call is moot?
* chore: remove broken-before-macOS-10.15 patch in mas_avoid_usage_of_private_macos_apis.patch
Upstream has bumped minimum to macOS 10.15
* chore: remove @available(macOS 10.14) check
Upstream minimum requirement for macOS is now 10.15
* chore: update patches
* chore: bump chromium in DEPS to 117.0.5850.0
* chore: update patches
* chore: bump chromium in DEPS to 117.0.5852.0
* chore: update patches
* Move two params from NetworkContextParams to NetworkContextFilePaths.
https://chromium-review.googlesource.com/c/chromium/src/+/4615930
* WebUSB: Add exclusionFilters to USBRequestDeviceOptions
https://chromium-review.googlesource.com/c/chromium/src/+/4614682
* Convert /chrome/browser/ui to use ARC
https://chromium-review.googlesource.com/c/chromium/src/+/4615920
* fixup! Bump the macOS deployment target to 10.15
* fixup! Bump the macOS deployment target to 10.15
* chore: update libcxx files
* win: Remove 10Glass from Windows10Glass function and var names
https://chromium-review.googlesource.com/c/chromium/src/+/4641314
* chore: revert 392e5f43 from chromium
* Add an ExecutionContext to ScriptState
https://chromium-review.googlesource.com/c/chromium/src/+/4609446
* fixup! Add an ExecutionContext to ScriptState
* chore: fix header
* Revert "chore: revert 392e5f43 from chromium"
This reverts commit b7f782943e4ce83cae8cd35780d8d3618cf0772c.
* fix: return correct min/max sizes in WinFrameView
* fixup! Revert chore: revert 392e5f43 from chromium
* fixup! Add an ExecutionContext to ScriptState
* Revert "fixup! Revert chore: revert 392e5f43 from chromium"
This reverts commit 7e2c7281abfc4f309255339fdba073d90a9ae3eb.
* Revert "fix: return correct min/max sizes in WinFrameView"
This reverts commit 3f418b1ab5155686730e087ae6cabe4a21b4bb61.
* Revert "Revert "chore: revert 392e5f43 from chromium""
This reverts commit 56296d8b7c434147e032e3c3b08c0e371b6c27ba.
---------
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: Cheng Zhao <zcbenz@gmail.com>
* refactor: use constexpr lookup table in electron_api_web_contents.cc
* refactor: make KeyboardCodeFromStr() private
it is only used as a helper to KeyboardCodeFromStr()
* chore: savepoint
* chore: make lint happy
* fixup! refactor: make KeyboardCodeFromStr() private
* refactor: use constexpr lookup table in electron_url_loader_factory
* refactor: use constexpr lookup table in electron_api_tray
* refactor: use constexpr lookup table in web_contents_preferences.cc
* refactor: use constexpr lookup table in content_converter
* refactor: use a constexpr lookup table in GetPathConstant()
* refactor: use a constexpr lookup table in SystemPreferences::GetColor()
* refactor: use a constexpr lookup table in SimpleURLLoaderWrapper::Create()
We're currently building these on the heap with `std::set<std::string>`
but this can be a very small compile-time container instead.
Marking as 'refactor' rather than 'perf' since this isn't called often,
but moving from heap to compile-time is good and using this container
makes the code more readable.
* perf: use base::StringPiece in InclusionStatusToString()
The strings are all build-time constants and this is a private function
* perf: use base::StringPiece in ErrorCodeToString()
The strings are all build-time constants and this is a private function
* perf: use base::StringPiece in MessageSourceToString()
The strings are all build-time constants and this is a private function
* perf: use base::StringPiece in CursorTypeToString()
The strings are all build-time constants and this is a private function
* perf: use base::StringPiece in MediaStreamTypeToString()
The strings are all build-time constants and this is a private function
* perf: use base::StringPiece in ModifiersToArray()
The strings are all build-time constants and this is a private function
* perf: use base::StringPiece in WebFrameRenderer::MaybeGetRenderFrame()
The strings are all build-time constants and this is a private function
* feat: remove enable_run_as_node flag
* drop features.isRunAsNodeEnabled()
* use IsEnvSet() helper in electron_main_linux.cc
* cleanup [[maybe_unused]]
---------
Co-authored-by: Milan Burda <miburda@microsoft.com>
* build: try m1 speed test
* yolo?
* build: fix gn binary on m1
* build: remove arm64 snapshot logic
* build: strip x64 on arm64 hosts...
* if is fi
* build: no more GENERATE_CROSS_ARCH_SNAPSHOT
* build: chromedriver inline on arm64 darwin
* build: no copy chromedriver
* build: use m1 for publish
* medium?
refactor: sync api::Screen getter sigs to upstream
ui::Display GetAllDisplays(), GetPrimaryDisplay(), GetDisplayMatching(),
and GetDisplayNearestPoint() methods are all const, so make our wrappers
const too.
ui::Display GetAllDisplays() returns a const reference, so make our
wrapper return a const reference too. This avoids creating a new
std::vector<display::Display> each time it's called.
* build(deps): update @electron/lint-roller
* chore: type check JS in docs
* docs: add @ts-check and @ts-expect-error to code blocks
* chore: fix type check errors in docs
* chore: add ts-type to blocks
if [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
if [ "`uname`" != "Darwin" ] && ([ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]); then
gn gen out/chromedriver --args="import(\"$GN_CONFIG\") import(\"$GN_GOMA_FILE\") is_component_ffmpeg=false proprietary_codecs=false $GN_EXTRA_ARGS $GN_BUILDFLAG_ARGS"
Hello @${{ github.event.issue.user.login }}. Thanks for reporting this and helping to make Electron better!
Would it be possible for you to make a standalone testcase with only the code necessary to reproduce the issue? For example, [Electron Fiddle](https://www.electronjs.org/fiddle) is a great tool for making small test cases and makes it easy to publish your test case to a [gist](https://gist.github.com) that Electron maintainers can use.
Stand-alone test cases make fixing issues go more smoothly: it ensure everyone's looking at the same issue, it removes all unnecessary variables from the equation, and it can also provide the basis for automated regression tests.
Now adding the `blocked/need-repro` label for this reason. After you make a test case, please link to it in a followup comment. This issue will be closed in 10 days if the above is not addressed.
Now adding the https://github.com/electron/electron/labels/blocked%2Fneed-repro label for this reason. After you make a test case, please link to it in a followup comment. This issue will be closed in 10 days if the above is not addressed.
"Chromium has updated the mac_deployment_target, please update this assert, update the supported versions documentation (docs/tutorial/support.md) and flag this as a breaking change")
@@ -38,7 +38,7 @@ For more installation options and troubleshooting tips, see
Each Electron release provides binaries for macOS, Windows, and Linux.
* macOS (High Sierra and up): Electron provides 64-bit Intel and ARM binaries for macOS. Apple Silicon support was added in Electron 11.
* macOS (Catalina and up): Electron provides 64-bit Intel and ARM binaries for macOS. Apple Silicon support was added in Electron 11.
* Windows (Windows 10 and up): Electron provides `ia32` (`x86`), `x64` (`amd64`), and `arm64` binaries for Windows. Windows on ARM support was added in Electron 5.0.8. Support for Windows 7, 8 and 8.1 was [removed in Electron 23, in line with Chromium's Windows deprecation policy](https://www.electronjs.org/blog/windows-7-to-8-1-deprecation-notice).
* Linux: The prebuilt binaries of Electron are built on Ubuntu 20.04. They have also been verified to work on:
@@ -85,7 +85,7 @@ For more information about these color types see valid options in [win.setBackgr
By using `parent` option, you can create child windows:
```javascript
```js
const{BrowserWindow}=require('electron')
consttop=newBrowserWindow()
@@ -101,7 +101,7 @@ The `child` window will always show on top of the `top` window.
A modal window is a child window that disables parent window, to create a modal
window, you have to set both `parent` and `modal` options:
```javascript
```js
const{BrowserWindow}=require('electron')
consttop=newBrowserWindow()
@@ -188,7 +188,7 @@ window should be closed, which will also be called when the window is
reloaded. In Electron, returning any value other than `undefined` would cancel the
close. For example:
```javascript
```js
window.onbeforeunload=(e)=>{
console.log('I do not want to be closed')
@@ -351,7 +351,7 @@ Commands are lowercased, underscores are replaced with hyphens, and the
`APPCOMMAND_` prefix is stripped off.
e.g. `APPCOMMAND_BROWSER_BACKWARD` is emitted as `browser-backward`.
```javascript
```js
const{BrowserWindow}=require('electron')
constwin=newBrowserWindow()
win.on('app-command',(e,cmd)=>{
@@ -486,7 +486,7 @@ Returns `BrowserWindow | null` - The window with the given `id`.
Objects created with `new BrowserWindow` have the following properties:
```javascript
```js
const{BrowserWindow}=require('electron')
// In this example `win` is our instance
constwin=newBrowserWindow({width:800,height:600})
@@ -505,6 +505,10 @@ events.
A `Integer` property representing the unique ID of the window. Each ID is unique among all `BrowserWindow` instances of the entire Electron application.
#### `win.tabbingIdentifier` _macOS_ _Readonly_
A `string` (optional) property that is equal to the `tabbingIdentifier` passed to the `BrowserWindow` constructor or `undefined` if none was set.
#### `win.autoHideMenuBar`
A `boolean` property that determines whether the window menu bar should hide itself automatically. Once set, the menu bar will only show when users press the single `Alt` key.
@@ -806,7 +810,7 @@ Closes the currently open [Quick Look][quick-look] panel.
Resizes and moves the window to the supplied bounds. Any properties that are not supplied will default to their current values.
```javascript
```js
const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
@@ -1061,7 +1065,7 @@ Changes the attachment point for sheets on macOS. By default, sheets are
attached just below the window frame, but you may want to display them beneath
a HTML-rendered toolbar. For example:
```javascript
```js
const { BrowserWindow } = require('electron')
const win = new BrowserWindow()
@@ -1204,7 +1208,7 @@ To ensure that file URLs are properly formatted, it is recommended to use
* `midiSysex` - Request the use of system exclusive messages in the [Web MIDI API](https://developer.mozilla.org/en-US/docs/Web/API/Web_MIDI_API).
* `notifications` - Request notification creation and the ability to display them in the user's system tray using the [Notifications API](https://developer.mozilla.org/en-US/docs/Web/API/notification)
* `pointerLock` - Request to directly interpret mouse movements as an input method via the [Pointer Lock API](https://developer.mozilla.org/en-US/docs/Web/API/Pointer_Lock_API). These requests always appear to originate from the main frame.
* `keyboardLock` - Request capture of keypresses for any or all of the keys on the physical keyboard via the [Keyboard Lock API](https://developer.mozilla.org/en-US/docs/Web/API/Keyboard/lock). These requests always appear to originate from the main frame.
* `openExternal` - Request to open links in external applications.
* `window-management` - Request access to enumerate screens using the [`getScreenDetails`](https://developer.chrome.com/en/articles/multi-screen-window-placement/) API.
* `unknown` - An unrecognized permission request.
@@ -920,7 +921,7 @@ To clear the handler, call `setPermissionRequestHandler(null)`. Please note tha
you must also implement `setPermissionCheckHandler` to get complete permission handling.
Most web APIs do a permission check and then make a permission request if the check is denied.
@@ -1136,7 +1137,7 @@ The return value for the handler is a string array of USB classes which should b
Returning an empty string array from the handler will allow all USB classes; returning the passed in array will maintain the default list of protected USB classes (this is also the default behavior if a handler is not defined).
To clear the handler, call `setUSBProtectedClassesHandler(null)`.
@@ -1237,7 +1238,7 @@ Clears the host resolver cache.
Dynamically sets whether to always send credentials for HTTP NTLM or Negotiate
authentication.
```javascript
```js
const { session } = require('electron')
// consider any url ending with `example.com`, `foobar.com`, `baz`
// for integrated authentication.
@@ -1355,6 +1356,10 @@ registered.
Sets the directory to store the generated JS [code cache](https://v8.dev/blog/code-caching-for-devs) for this session. The directory is not required to be created by the user before this call, the runtime will create if it does not exist otherwise will use the existing directory. If directory cannot be created, then code cache will not be used and all operations related to code cache will fail silently inside the runtime. By default, the directory will be `Code Cache` under the
respective user data folder.
Note that by default code cache is only enabled for http(s) URLs, to enable code
cache for custom protocols, `codeCache: true` and `standard: true` must be
specified when registering the protocol.
#### `ses.clearCodeCaches(options)`
* `options` Object
@@ -1542,7 +1547,7 @@ A [`WebRequest`](web-request.md) object for this session.
A [`Protocol`](protocol.md) object for this session.
`tooltip`, `content`, `under-window`, or `under-page`.
*`backgroundMaterial` string (optional) _Windows_ - Set the window's
system-drawn background material, including behind the non-client area.
Can be `auto`, `none`, `mica`, `acrylic` or `tabbed`. See [win.setBackgroundMaterial](../browser-window.md#winsetbackgroundmaterialmaterial-windows) for more information.
*`sender` [IpcRenderer](../ipc-renderer.md) - 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`.
*`senderIsMainFrame` boolean (optional) - Whether the message sent via [ipcRenderer.sendTo][ipc-renderer-sendto] was sent by the main frame. This is relevant when `nodeIntegrationInSubFrames` is enabled in the originating `webContents`.
*`senderId` Integer_Deprecated_ - 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`.
*`senderIsMainFrame` boolean (optional)_Deprecated_ - Whether the message sent via [ipcRenderer.sendTo][ipc-renderer-sendto] was sent by the main frame. This is relevant when `nodeIntegrationInSubFrames` is enabled in the originating `webContents`.
*`ports` [MessagePort][][] - A list of MessagePorts that were transferred with this message
*`invertedColorScheme` boolean - `true` if an inverted color scheme (a high contrast color scheme with light text and dark backgrounds) is being used, `false` otherwise.
**Deprecated:** Should use the new [`updated`](native-theme.md#event-updated) event on the `nativeTheme` module.
Returns `boolean` - whether or not this device has the ability to use Touch ID.
@@ -382,7 +348,7 @@ Returns `boolean` - whether or not this device has the ability to use Touch ID.
Returns `Promise<void>` - resolves if the user has successfully authenticated with Touch ID.
```javascript
```js
const{systemPreferences}=require('electron')
systemPreferences.promptTouchID('To get consent for a Security-Gated Thing').then(success=>{
@@ -439,16 +405,6 @@ Returns an object with system animation settings.
A `boolean` property which determines whether the app avoids using semitransparent backgrounds. This maps to [NSWorkspace.accessibilityDisplayShouldReduceTransparency](https://developer.apple.com/documentation/appkit/nsworkspace/1533006-accessibilitydisplayshouldreduce)
A `string` property that can be `dark`, `light` or `unknown`. It determines the macOS appearance setting for
your application. This maps to values in: [NSApplication.appearance](https://developer.apple.com/documentation/appkit/nsapplication/2967170-appearance?language=objc). Setting this will override the
system default as well as the value of `getEffectiveAppearance`.
Possible values that can be set are `dark` and `light`, and possible return values are `dark`, `light`, and `unknown`.
This property is only available on macOS 10.14 Mojave or newer.
* `bottom` number (optional) - Bottom margin in inches. Defaults to 1cm (~0.4 inches).
* `left` number (optional) - Left margin in inches. Defaults to 1cm (~0.4 inches).
* `right` number (optional) - Right margin in inches. Defaults to 1cm (~0.4 inches).
* `pageRanges` string (optional) - Paper ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string, which means print all pages.
* `pageRanges` string (optional) - Page ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string, which means print all pages.
* `headerTemplate` string (optional) - HTML template for the print header. Should be valid HTML markup with following classes used to inject printing values into them: `date` (formatted print date), `title` (document title), `url` (document location), `pageNumber` (current page number) and `totalPages` (total pages in the document). For example, `<span class=title></span>` would generate span containing the title.
* `footerTemplate` string (optional) - HTML template for the print footer. Should use the same format as the `headerTemplate`.
* `preferCSSPageSize` boolean (optional) - Whether or not to prefer page size as defined by css. Defaults to false, in which case the content will be scaled to fit the paper size.
@@ -1635,14 +1627,14 @@ The `landscape` will be ignored if `@page` CSS at-rule is used in the web page.
An example of `webContents.printToPDF`:
```javascript
```js
const { BrowserWindow } = require('electron')
const fs = require('node:fs')
const path = require('node:path')
const os = require('node:os')
const win = new BrowserWindow()
win.loadURL('http://github.com')
win.loadURL('https://github.com')
win.webContents.on('did-finish-load', () => {
// Use default printing options
@@ -1667,7 +1659,7 @@ See [Page.printToPdf](https://chromedevtools.github.io/devtools-protocol/tot/Pag
Adds the specified path to DevTools workspace. Must be used after DevTools
A `string` that sets the referrer URL for the guest page.
@@ -255,7 +255,7 @@ The `webview` tag has the following methods:
**Example**
```javascript @ts-expect-error=[3]
```js @ts-expect-error=[3]
const webview = document.querySelector('webview')
webview.addEventListener('dom-ready', () => {
webview.openDevTools()
@@ -603,7 +603,7 @@ Prints `webview`'s web page. Same as `webContents.print([options])`.
* `bottom` number (optional) - Bottom margin in inches. Defaults to 1cm (~0.4 inches).
* `left` number (optional) - Left margin in inches. Defaults to 1cm (~0.4 inches).
* `right` number (optional) - Right margin in inches. Defaults to 1cm (~0.4 inches).
* `pageRanges` string (optional) - Paper ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string, which means print all pages.
* `pageRanges` string (optional) - Page ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string, which means print all pages.
* `headerTemplate` string (optional) - HTML template for the print header. Should be valid HTML markup with following classes used to inject printing values into them: `date` (formatted print date), `title` (document title), `url` (document location), `pageNumber` (current page number) and `totalPages` (total pages in the document). For example, `<span class=title></span>` would generate span containing the title.
* `footerTemplate` string (optional) - HTML template for the print footer. Should use the same format as the `headerTemplate`.
* `preferCSSPageSize` boolean (optional) - Whether or not to prefer page size as defined by css. Defaults to false, in which case the content will be scaled to fit the paper size.
@@ -801,7 +801,7 @@ Fired when the guest window logs a console message.
The following example code forwards all log messages to the embedder's console
@@ -21,6 +21,93 @@ macOS 10.13 (High Sierra) and macOS 10.14 (Mojave) are no longer supported by [C
Older versions of Electron will continue to run on these operating systems, but macOS 10.15 (Catalina)
or later will be required to run Electron v27.0.0 and higher.
### Deprecated: `ipcRenderer.sendTo()`
The `ipcRenderer.sendTo()` API has been deprecated. It should be replaced by setting up a [`MessageChannel`](tutorial/message-ports.md#setting-up-a-messagechannel-between-two-renderers) between the renderers.
The `senderId` and `senderIsMainFrame` properties of `IpcRendererEvent` have been deprecated as well.
### Removed: color scheme events in `systemPreferences`
The following `systemPreferences` events have been removed:
*`inverted-color-scheme-changed`
*`high-contrast-color-scheme-changed`
Use the new `updated` event on the `nativeTheme` module instead.
In the [`typings/internal-ambient.d.ts`](https://github.com/electron/electron/blob/main/typings/internal-ambient.d.ts) file, we need to append a new property onto the `Process` interface like so:
// This method will be called when Electron has finished
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.