feat: ensure mas builds of the same application can use safestorage
This change ensures that MAS builds of applications with an equivilant darwin build that share the same name do not fight over access to the same Safe Storage account.
Specifically this changes the account name for app "My App" from "My App" to "My App AppStore" if the app is using a MAS build of Electron.
We attempt to migrate the safe storage key from the old account, if that migration succeeds we delete the old key and move on.
Existing apps that aren't built for the app store should be unimpacted, there is one edge case where a user uses BOTH an AppStore and a darwin build of the same app only one will keep it's access to the safestorage key as during the migration we delete the old account. This is an acceptable edge case as no one should be actively using two versions of the same app.
Co-authored-by: Samuel Attard <sattard@salesforce.com>
Co-authored-by: VerteDinde <vertedinde@electronjs.org>
Co-authored-by: Keeley Hammond <khammond@slack-corp.com>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* Updates to allow for using a custom v8 snapshot file name
* Allow using a custom v8 snapshot file name
* Fix up patch due to merge
* Use fuse to set up custom v8 snapshot file in browser process
* Refactor to use delegate instead of command line parameter
* Refactoring
* Update due to merge
* PR comments
* Rename patch
* Rename patch
* build: allow Linux distros to build against system shared libraries
Add GN flags to build the embedded nodejs copy against system libraries
instead of vendored copies in `third_party/electron_node/deps`:
* cares
* llhttp
* nghttp2
* hdr_histogram
See also chromium's build/linux/unbundle/README for more
Electron-relevant information about vendored dependencies.
* Update patches/node/build_add_gn_build_files.patch
Co-authored-by: Darshan Sen <raisinten@gmail.com>
Co-authored-by: Darshan Sen <raisinten@gmail.com>
* test: drop the now-empty remote runner from CI
* move fixtures to spec-main
* remove remote runner
* fix stuff
* remove global-paths hack
* move ts-smoke to spec/
* fix test after merge
* rename spec-main to spec
* no need to ignore spec/node_modules twice
* simplify spec-runner a little
* no need to hash pj/yl twice
* undo lint change to verify-mksnapshot.py
* excessive ..
* update electron_woa_testing.yml
* don't search for test-results-remote.xml
it is never produced now
* fix: broken wayland window decorations due to botched chromium update
The `GetTitlebarBounds().height()` is obviously intended to be placed in
the `top` parameter, which used to be the second one before upstream
removed multi-parameter `gfx::Rect::Inset`, but it's the first parameter
for `gfx::Insets::TLBR`, which was intended to replace the removed
`Inset` function. However, whoever updated Chromium kept the parameter
unchanged, causing the title bar height to be passed to the `left`
parameter, causing the window title bar to be unclickable.
* fix: wayland window top bar buttons unclickable
Use NonClientFrameView::TargetForRect for the ClientFrameViewLinux
implementation because the default inherited from FramelessView blocks
any non-HTCLIENT events.
* fix: add maximized parameter to LinuxUI::GetWindowFrameProvider
* fix: pass frame_->IsMaximized() to GetWindowFrameProvider
This ensures that the toolkit renders the window decorations in maximized mode
while the window is maximized to ensure that there is no empty space around the window.
* fix: ensure native modules are built with config.gypi
This works by patching node.h to check that two defines are set using the equivilant of an XNOR operation. One define "ELECTRON_ENSURE_CONFIG_GYPI" is set via common.gypi which is _already_ used to build native modules and has been since the dawn of time. Therefore this define will be set for all native module compilations targetting the Electron runtime. The second define "USING_ELECTRON_CONFIG_GYPI" is only defined when the gypi argument "using_electron_config_gypi" is set to 1 which is only done so via config.gypi. Only new enough versions of node-gyp correctly use the config.gypi file thus resulting in a compilation error on version of node-gyp that are too old.
* chore: fix lint
Co-authored-by: Samuel Attard <sattard@salesforce.com>
* refactor: unduplicate MediaStreamDevicesController
* restore old logic for GUM_* request types
* lint
* gn format
* add test for unsupported getDisplayMedia
* simplify + comment
This define is only needed when linking against Chromiums libc++ which we currently
do not ship / expose the symbols of. We probably should make those symbols visible and
actually ensure that electron-rebuild et. al link against our libc++ instead of the system libc++
but for now this fixes compilation issues on macOS where the default system clang links to the system libc++
which does not (obviously) use the Chromium ABI namespace.
For our nan tests which do link against Chromiums libc++ we define the ABI namespace in the spec runner.
* build: fix building with enable_basic_printing false
* temp flags for ci builds
* fix other systems
* disable cups
* disable print preview
* revert changes
* merge with printing.patch
* chore: bump chromium in DEPS to 104.0.5096.0
* 3651284: Use the entry settings object for window.open navigation
3651284
* 3644598: Make RenderFrameHost used for notification permission decision
3644598
* 3642842: Window Placement: Prototype Fullscreen Capability Delegation - Part 2
3642842
* 3652785: [sandbox] Enable sandboxed pointers on sanitizer builds
3652785
* 3611967: webhid: Migrate HidDelegate to use BrowserContext and Origin
3611967
* 3665762: Remove RenderFrameHost::IsRenderFrameCreated from //content/.
3665762
* 3659375: Fold x509_util_ios and most of x509_util_mac into x509_util_apple
3659375
* 3656234: [CodeHealth] Remove uses of base::ListValue::Append() (Final, take 2)
3656234
* chore: update patch indices
* chore: fix lint
* 3644598: Make RenderFrameHost used for notification permission decision
3644598
* webhid: Migrate HidDelegate to use BrowserContext and Origin
This is a temporary fix for 3611967 to get the build compiling, but we need to either patch around 3611967 or move our device permissioning to BrowserContext
* chore: fix lint
* build: run electron/script/gen-libc++-filenames.js
fixes gn check
* chore: bump chromium in DEPS to 104.0.5098.0
* chore: disable flaking tests
* 3682394: Change pipes surrounding code references in comments to backticks
3682394
* 3652749: Delete GLRenderer and related classes
3652749
* chore: fixup patch indices
* 3671199: Remove ContentMainDelegate::PostFieldTrialInitialization
3671199
* 3607963: hid: Do not exclude HID device with no collections
3607963
* refactor: use ElectronBrowserContext instead of WebContents to persist devices
due to changes like 3611967,
we can no longer use WebContents to store device permissions so this commit
moves device permission storage to live in memory in ElectronBrowserContext
instead.
* 3557253: Deprecate some signature checks
3557253
* chore: bump chromium in DEPS to 104.0.5100.0
* 3680781: Add policy for Renderer App Container.
3680781
* chore: update patch indices
* 3675465: Update NetLog network service API to use mojom::DictionaryValue.
3675465
* chore: bump chromium in DEPS to 104.0.5102.0
* chore: update patches
* chore: bump chromium in DEPS to 104.0.5103.0
* chore: update patches
* chore: bump chromium in DEPS to 104.0.5104.0
* chore: update patches
* fix: add patch for DCHECK in fullscreen test
* build: fix nan build
* build: make the nan spec runner work on macOS
* chore: bump chromium in DEPS to 104.0.5106.0
* chore: update patches
* chore: bump chromium in DEPS to 104.0.5108.0
* chore: update patches
* chore: bump chromium in DEPS to 104.0.5110.0
* chore: update patches
* chore: bump chromium in DEPS to 104.0.5112.0
* chore: bump chromium in DEPS to 105.0.5113.0
* chore: bump chromium in DEPS to 105.0.5115.0
* chore: bump chromium in DEPS to 105.0.5117.0
* chore: update patches
* chore: update libcpp patch
* 3693745: Delete base::LowerCaseEqualsASCII()
Ref: 3693745
* 3669226: Remove printing PostTask usage of IO thread
Ref: 3669226
* 3687395: Remove DictionaryValue::HasKey().
Ref: 3687395
* 3691014: Prevent unsafe narrowing: ui/accessibility, part 2
Ref: 3691014
* 3560567: [MSC] Porting GenerateStreams clients to handle stream vectors.
Ref: 3560567
* 3684873: [Bluetooth][Win/Linux] Add bluetooth pair confirmation prompt
3684873
* chore: bump chromium in DEPS to 105.0.5119.0
* chore: missing includes in desktop_notification_controller
* chore: update patches
* 3685951: Reland "Make sure screen object is created once in tests."
3685951
* fixup: Reland "Make sure screen object is created once in tests."
* 3646014: [API] Deprecate LegacyOOMErrorCallback
Ref: 3646014
* chore: bump chromium in DEPS to 105.0.5121.0
* chore: update patches
* 3699085: [cleanup] update PrintBackend::EnumeratePrinters to use reference
Ref: 3699085
* chore: bump chromium in DEPS to 105.0.5123.0
* chore: update patches
* chore: bump chromium in DEPS to 105.0.5125.0
* chore: update patches
* 3630082: [sandbox] Also enable the sandbox outside of Chromium builds
Ref: 3630082
* chore: bump chromium in DEPS to 105.0.5127.0
* chore: update patches
* chore: bump chromium in DEPS to 105.0.5129.0
* chore: update patches
* 3703741: Remove WebContents::GetMainFrame.
3703741
* chore: update patches
* fixup! 3703741: Remove WebContents::GetMainFrame.
* fix lint
* more lint
* chore: document breaking change
* 3687671: [v8] Freeze flags after initialization
3687671
* fixup! 3560567: [MSC] Porting GenerateStreams clients to handle stream vectors.
* use the v8 allocator for node serdes
* chore: update patches
* remove faulty non-v8-sandbox-compatible code
* make NodeArrayBufferAllocator use the v8 allocator under the hood
* fixup! 3560567: [MSC] Porting GenerateStreams clients to handle stream vectors.
* fix build on windows
* 3691954: [Reland][Extensions Bindings] Validate arguments sent to API events
3691954
* chore: remove deprecated AccessorSignatures
https://github.com/nodejs/nan/pull/941
* Update patches/chromium/notification_provenance.patch
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* remove chore_expose_v8_initialization_isolate_callbacks.patch
* add link to nodejs/nan#941
* 52026: Do not allow md4 or md5 based signatures in X.509 certificates.
https://boringssl-review.googlesource.com/c/boringssl/+/52026
* chore: update patches
* disable nan buffer-test
* disable sandboxed pointers for now
* force sandboxed pointers off
* improve node allocation patch
* restore accidentally dropped node crypto test patch
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: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: Samuel Attard <sattard@salesforce.com>
Co-authored-by: Keeley Hammond <khammond@slack-corp.com>
Co-authored-by: VerteDinde <keeleymhammond@gmail.com>
Co-authored-by: VerteDinde <vertedinde@electronjs.org>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
Co-authored-by: Jeremy Rose <japthorp@slack-corp.com>
fix: performance problem in crashReporter.start() on macOS
This change reduces the duration of crashReporter.start() on Intel macOS
from 622 milliseconds to 257 milliseconds!
Backports 3641386
posix: Replace DoubleForkAndExec() with ForkAndSpawn()
The DoubleForkAndExec() function was taking over 622 milliseconds to run
on macOS 11 (BigSur) on Intel i5-1038NG7. I did some debugging by adding
some custom traces and found that the fork() syscall is the bottleneck
here, i.e., the first fork() takes around 359 milliseconds and the
nested fork() takes around 263 milliseconds. Replacing the nested fork()
and exec() with posix_spawn() reduces the time consumption to 257
milliseconds!
See https://github.com/libuv/libuv/pull/3064 to know why fork() is so
slow on macOS and why posix_spawn() is a better replacement.
Another point to note is that even base::LaunchProcess() from Chromium
calls posix_spawnp() on macOS -
8f8d82dea0:base/process/launch_mac.cc;l=295-296
Change-Id: I25c6ee9629a1ae5d0c32b361b56a1ce0b4b0fd26
Reviewed-on: 3641386
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Mark Mentovai <mark@chromium.org>
Fixes: https://github.com/electron/electron/issues/34321
Signed-off-by: Darshan Sen <raisinten@gmail.com>