Fix: Backport AVX detection fix from simdutf 3.2.9
simdutf < 3.2.9 contains a flawed detection routine to decide whether
AVX and/or AVX2 can be used. In most cases, it works good enough, but
in some corner cases (combination of specific CPU model, microcode
version, operating system and OS configuration), that flawed detection
results in simdutf trying to use AVX/AVX2 although the OS doesn't allow
its use (for example as a mitigation measure against the "gather data
sampling" vulnerability), which then crashes the application with an
illegal instruction error.
This fix is only needed for node < 18.17.0, because later versions use
a simdutf version > 3.2.9.
Cherry-picked and backported from 55b107f609
Signed-off-by: Pascal Ernster <git@hardfalcon.net>
Co-authored-by: Daniel Lemire <daniel@lemire.me>
Co-authored-by: easyaspi314 <easyaspi314@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@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>
chore: [26-x-y] cherry-pick 6 changes from Release-3-M119
* 971d6055e7b7 from openscreen
* 3f45b1af5e41 from chromium
* e13061c50998 from chromium
* 6169a1fabae1 from skia
* 6cc0d9aa5b3fb from libavif
* 922fca786b61a from libavif
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>
test: fix "crashed event does not crash main process when destroying WebContents in it" (#40135)
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Milan Burda <milan.burda@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 (#39881)
* 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: John Kleinschmidt <jkleinsc@electronjs.org>
* build: also update node build
---------
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* fix: check PipeWire init before creating generic capturer
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: Athul Iddya <athul@iddya.com>
* chore: update patches
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Athul Iddya <athul@iddya.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
* chore: bump chromium in DEPS to 116.0.5845.190
* chore: 4869108: handle absolute and relative gn imports in autoninja
https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/4869108
(cherry picked from commit d94c7720ba)
* chore: set GOMA_DIR for autoninja
(cherry picked from commit 94f24bde4d)
* Revert "chore: 4869108: handle absolute and relative gn imports in autoninja"
This reverts commit 8b567d7d2c.
---------
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* build: use aks backed runners for linux builds (#39403)
* 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
* ci: fixup known hosts for linux publish (#39437)
* 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>
---------
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
* 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>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.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)
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
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>
fix: explorer restart does not recreated thumbnail toolbar buttons.
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: harada <harada@thinkridge.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>
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: [26-x-y] cherry-pick 11 changes from Release-1-M115
* d0c1b8954a1b from chromium
* 96fc6d931c97 from v8
* abb3ebd3d2ef from chromium
* fa181f8768c9 from chromium
* 896deb576574 from v8
* 337124b13aaa from chromium
* 83b0bdb696d8 from chromium
* 8d60b1d3b1be from v8
* 285c7712c506 from angle
* 2bf945775fe6 from angle
* cafe56b591ed from angle
* chore: remove patches already made in upstream
* 1459124: 311802: Prevent SDP munging of duplicate SSRCs | https://webrtc-review.googlesource.com/c/src/+/311802
fix: crash when calling moveTop() on modal children
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
fix: crash when closing current active macOS native tab
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
* docs: fix some string union types
Improve Type Union Typings in the Docs
Co-authored-by: mhli <mhli@hillinsight.com>
* test: add smoke tests
Co-authored-by: mhli <mhli@hillinsight.com>
* test: update `ses.clearStorageData` test case
Co-authored-by: mhli <mhli@hillinsight.com>
* test: update `ses.clearStorageData` test case
Co-authored-by: mhli <mhli@hillinsight.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: mhli <mhli@hillinsight.com>
feat: add `senderIsMainFrame` to messages sent via `ipcRenderer.sendTo()` (#38868)
* feat: add isMainFrame to events emitted via ipcRenderer.sendTo()
* chore: rename isMainFrame to senderIsMainFrame
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Milan Burda <milan.burda@gmail.com>
* fix: do not resolve electron entrypoints on disk
Co-authored-by: Samuel Attard <marshallofsound@electronjs.org>
* chore: update .patches after trop
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Samuel Attard <marshallofsound@electronjs.org>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* fix: use generic capturer to list both screens and windows when possible
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`.
Co-authored-by: Athul Iddya <athul@iddya.com>
* build: clean up incorrectly backported patches
* chore: cherry-pick 0e9556a90cec from webrtc
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Athul Iddya <athul@iddya.com>
Co-authored-by: Keeley Hammond <vertedinde@electronjs.org>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* 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.
Co-authored-by: Athul Iddya <athul@iddya.com>
* 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.
Co-authored-by: Athul Iddya <athul@iddya.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Athul Iddya <athul@iddya.com>
* perf: avoid string temporary in HidChooserController::PhysicalDeviceIdFromDeviceInfo()
return a const ref instead of a new string
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: avoid second map lookup in HidChooserController::AddDeviceInfo()
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: BrowserWindow.moveAbove() not working for child windows
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
fix a capitalization problem
For a rookie, this little mistake took a long time to find out.
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: ZWJKFLC <71260863+ZWJKFLC@users.noreply.github.com>
* 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
Co-authored-by: Athul Iddya <athul@iddya.com>
* 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.
Co-authored-by: Athul Iddya <athul@iddya.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Athul Iddya <athul@iddya.com>
* docs: Documentation changes
Co-authored-by: Varun Sood <soodvarun2003@gmail.com>
* made the required changes in the docs
Co-authored-by: Varun Sood <soodvarun2003@gmail.com>
* made the toolbar type text correction
Co-authored-by: Varun Sood <soodvarun2003@gmail.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Varun Sood <soodvarun2003@gmail.com>
Fix misleading docs for handling deeplinks in Linux
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Sergei Chestakov <me@sergei.com>
* refactor: more constexpr lookup tables (#38886)
* 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
* chore: fix clang-format
clang-format gets confused by ifdefs in the middle of an initializer list
feat: support node: prefixed requires in sandboxed renderer preloads
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Milan Burda <milan.burda@gmail.com>
* refactor: use a constexpr lookup table in GetPathConstant()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use a constexpr lookup table in SystemPreferences::GetColor()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use a constexpr lookup table in SimpleURLLoaderWrapper::Create()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
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.
* chore: bump chromium in DEPS to 116.0.5805.2
* chore: bump chromium in DEPS to 116.0.5807.0
* chore: update patches
* chore: bump chromium in DEPS to 116.0.5809.2
* chore: bump chromium in DEPS to 116.0.5811.0
* chore: bump chromium in DEPS to 116.0.5813.0
* chore: bump chromium in DEPS to 116.0.5815.0
* chore: bump chromium in DEPS to 116.0.5817.0
* chore: bump chromium in DEPS to 116.0.5819.0
* chore: bump chromium in DEPS to 116.0.5821.0
* chore: bump chromium in DEPS to 116.0.5823.0
* chore: bump chromium in DEPS to 116.0.5825.0
* chore: bump chromium in DEPS to 116.0.5827.0
* chore: bump chromium to 116.0.5817.0
cherry picked from fd5e6fbc14
* refactor: add ARC scaffolding for macOS (#38621)
(cherry picked from commit 9a9d8ae5ea)
---------
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* perf: use base::StringPiece in InclusionStatusToString()
The strings are all build-time constants and this is a private function
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: use base::StringPiece in ErrorCodeToString()
The strings are all build-time constants and this is a private function
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: use base::StringPiece in MessageSourceToString()
The strings are all build-time constants and this is a private function
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: use base::StringPiece in CursorTypeToString()
The strings are all build-time constants and this is a private function
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: use base::StringPiece in MediaStreamTypeToString()
The strings are all build-time constants and this is a private function
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: use base::StringPiece in ModifiersToArray()
The strings are all build-time constants and this is a private function
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: use base::StringPiece in WebFrameRenderer::MaybeGetRenderFrame()
The strings are all build-time constants and this is a private function
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>
* build: move uploadIndexJson to just before publishRelease
Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
* chore: move uploadNodeShasums as well
Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
* build: upload node checksums before validating them
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
Co-authored-by: Samuel Attard <marshallofsound@electronjs.org>
Copy the NativeWindowRelay::CreateForWebContents() idiom
to simplify SessionPreferences's constructor and lifecycle.
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* build: use upstream's presubmit cpplint filters.
Our list of filters has fallen out-of-sync with upstream tests and so
our checks don't match those in the Google + Chromium guides.
The checks in this PR come from depot_tools and are copied manually
since the depot_tools code is python but our linter is js. 🤷
Perhaps we should rewrite in python?
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fixup! build: use upstream's presubmit cpplint filters.
chore: make linter happy with my linter changes
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: remove unused field OffScreenRenderWidgetHostView::last_time_
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: remove unused field OffScreenRenderWidgetHostView::last_scroll_offset_
Unused since 1a9e253
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: remove unused field OffScreenRenderWidgetHostView::paint_callback_running_
assigned to, but unread, since 81bf158
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: 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.
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
refactor: use process_util.h helpers
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Milan Burda <milan.burda@gmail.com>
chore: remove unused electron::api::View methods
Remove code that was added in 2c8dc9e never got used.
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
if [ "`uname`" != "Darwin" ] && ([ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]); then
if [ "$TARGET_ARCH" == "arm" ] || [ "$TARGET_ARCH" == "arm64" ]; then
gn gen out/chromedriver --args="import(\"$GN_CONFIG\") import(\"$GN_GOMA_FILE\") is_component_ffmpeg=false proprietary_codecs=false $GN_EXTRA_ARGS $GN_BUILDFLAG_ARGS"
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 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.
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.
"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 (Catalina and up): Electron provides 64-bit Intel and ARM binaries for macOS. Apple Silicon support was added in Electron 11.
* macOS (High Sierra 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:
`tooltip`, `content`, `under-window`, or `under-page`. Please note that
`appearance-based`, `light`, `dark`, `medium-light`, and `ultra-dark` are
deprecated and have been removed in macOS Catalina (10.15).
*`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_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`.
*`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`.
*`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.
@@ -405,6 +439,16 @@ 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) - Page ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string, which means print all pages.
* `pageRanges` string (optional) - Paper 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.
A `string` that sets the referrer URL for the guest page.
@@ -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) - Page ranges to print, e.g., '1-5, 8, 11-13'. Defaults to the empty string, which means print all pages.
* `pageRanges` string (optional) - Paper 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.
@@ -21,81 +21,6 @@ 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:
<p>The main process <code>app</code> module can be used to get the path at which your app is located on the user's computer.</p>
<p>In this example, to get that information from the renderer process, we use the <code>ipc</code> module to send a message to the main process requesting the app's path.</p>
<p>See the <aid="electron-docs"href="https://www.electronjs.org/docs/latest/api/app">app module documentation<spanclass="u-visible-to-screen-reader">(opens in new window)</span></a> for more.</p>
<p>See the <aid="electron-docs"href="https://electronjs.org/docs/api/app">app module documentation<spanclass="u-visible-to-screen-reader">(opens in new window)</span></a> for more.</p>
</div>
</div>
</div>
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.