* feat: Implement password delegate for NSS (#41188)
Introduce an app event client-certificate-request-password. It allows
the user to display a UI to prompt for the password.
An alternative would have been to implement a class similar to
CryptoModulePasswordDialogView, to provide the UI. This might have been
simpler for the user, comparing to letting them implement the UI. But it
seems like electron does not have an i18n framework, so it's not
possible to provide a locale aware UI.
* fix lint:markdown error
* address review comments
* use a trampoline handler in JS. The api exposed is now app.setClientCertRequestPasswordHandler
* use properties on the Event object instead of positional parameters
* remove ChromeNSSCryptoModuleDelegate::OnPassword in favor of args->GetNext(&password_)
* address review comments second round
- backslash escape parametrized TypeScript
- rename hostName param to hostname
- use base::ScopedAllowBaseSyncPrimitivesForTesting
- and then, rename ChromeNSSCryptoModuleDelegate to ElectronNSSCryptoModuleDelegate
* Update docs/api/app.md
Co-authored-by: Sam Maddock <samuel.maddock@gmail.com>
* Update docs/api/app.md
Co-authored-by: Erick Zhao <erick@hotmail.ca>
---------
Co-authored-by: Arno Renevier <arnaud@switchboard.app>
Co-authored-by: Sam Maddock <samuel.maddock@gmail.com>
Co-authored-by: Erick Zhao <erick@hotmail.ca>
* chore: initial prototype of net api from utility process
* chore: update url loader to work on both browser and utility processes
* chore: add net files to utility process bundle
* chore: re-add app ready check but only on main process
* chore: replace browser thread dcheck's with sequence checker
* refactor: move url loader from browser to common
* refactor: move net-client-request.ts from browser to common
* docs: add utility process to net api docs
* refactor: move net module app ready check to browser only
* refactor: switch import from main to common after moving to common
* test: add basic net module test for utility process
* refactor: switch browser pid with utility pid
* refactor: move electron_api_net from browser to common
* chore: add fetch to utility net module
* chore: add isOnline and online to utility net module
* refactor: move net spec helpers into helper file
* refactor: break apart net module tests
Adds two additional net module test files: `api-net-session-spec.ts` for
tests that depend on a session being available (aka depend on running on
the main process) and `api-net-custom-protocols-spec.ts` for custom
protocol tests. This enables running `api-net-spec.ts` in the utility
process.
* test: add utility process mocha runner to run net module tests
* docs: add utility process to net module classes
* refactor: update imports in lib/utility to use electron/utility
* chore: check browser context before using in main process
Since the browser context supplied to the SimpleURLLoaderWrapper can now
be null for use in the UtilityProcess, adding a null check for the main
process before use to get a more sensible error if something goes wrong.
Co-authored-by: Cheng Zhao <github@zcbenz.com>
* chore: remove test debugging
* chore: remove unnecessary header include
* docs: add utility process net module limitations
* test: run net module tests in utility process individually
* refactor: clean up prior utility process net tests
* chore: add resolveHost to utility process net module
* chore: replace resolve host dcheck with sequence checker
* test: add net module tests for net.resolveHost
* docs: remove utility process limitation for resolveHost
---------
Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: Cheng Zhao <github@zcbenz.com>
* fix: allow ESM loads from within ASAR files
* fix: ensure that ESM entry points finish loading before app ready
* fix: allow loading ESM entrypoints via default_app
* fix: allow ESM loading for renderer preloads
* docs: document current known limitations of esm
* chore: add patches to support blending esm handlers
* refactor: use SetDefersLoading instead of JoinAppCode in renderers
Blink has it's own event loop so pumping the uv loop in the renderer is not enough, luckily in blink we can suspend the loading of the frame while we do additional work.
* chore: add patch to expose SetDefersLoading
* fix: use fileURLToPath instead of pathname
* chore: update per PR feedback
* fix: fs.exists/existsSync should never throw
* fix: convert path to file url before importing
* fix: oops
* fix: oops
* Update docs/tutorial/esm-limitations.md
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* windows...
* windows...
* chore: update patches
* spec: fix tests and document empty body edge case
* Apply suggestions from code review
Co-authored-by: Daniel Scalzi <d_scalzi@yahoo.com>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* spec: add tests for esm
* spec: windows
* chore: update per PR feedback
* chore: update patches
* Update shell/common/node_bindings.h
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* chore: update patches
* rebase
* use cjs loader by default for preload scripts
* chore: fix lint
* chore: update patches
* chore: update patches
* chore: fix patches
* build: debug depshash
* ?
* Revert "build: debug depshash"
This reverts commit 0de82523fb93f475226356b37418ce4b69acdcdf.
* chore: allow electron as builtin protocol in esm loader
* Revert "Revert "build: debug depshash""
This reverts commit ff86b1243ca6d05c9b3b38e0a6d717fb380343a4.
* chore: fix esm doc
* chore: update node patches
---------
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
Co-authored-by: electron-patch-conflict-fixer[bot] <83340002+electron-patch-conflict-fixer[bot]@users.noreply.github.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: Daniel Scalzi <d_scalzi@yahoo.com>
* 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>
* Allow an absolute path to be used for creating sessions
Allows an absolute path to be used for creating sessions
by adding the session.fromPath() API.
* Fixup! Clarify that an emptry string is not permitted as a parameter to fromPath()
* fix: potential exception when calling webFrameMainBinding.fromIdOrNull()
* replace try/catch in getWebFrameForEvent
Co-authored-by: Milan Burda <miburda@microsoft.com>
* feat: add immersive dark mode
* fix syntax and add header
* add me
* Update fuses.json5
* fix: redraw title bar on dark mode change
* chore: SetWindowTheme doesn't seem to be needed
* chore: separate out Win 10 dark mode implementation
* final touches
* final touches
* chore: limit Win 10 to >= 20H1 and drop fuse
* fix types
* fix lint
Co-authored-by: Micha Hanselmann <micha.hanselmann@gmail.com>
Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
* chore: update node types version
* update express types to solve type conflict
* one more yarn.lock type bump
* update another types package to fix incompatible global declarations
* remove incompatible type magicks
* update our ambient types to match the node types
* fix test type
* fix: initialize asar support in worker threads
Use `ObjectWrap` instead of gin's Wrap in `electron_api_asar.cc` because
gin isn't fully initialized (and apparently not possible to initialize
without ruining the isolate configuration and array buffer allocator) in
worker threads. In the worker thread call `setupAsarSupport` just as we
do for the main process.
* Update lib/asar/fs-wrapper.ts
Co-authored-by: Darshan Sen <raisinten@gmail.com>
* Update patches/node/worker_thread_add_asar_support.patch
Co-authored-by: Darshan Sen <raisinten@gmail.com>
* Add a test
Co-authored-by: Darshan Sen <raisinten@gmail.com>
Co-authored-by: Fedor Indutny <79877362+indutny-signal@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* feat: Added ability to configure if window should close when opener closes
* fix: check if embedder is destroyed
* fix: correctly take over closeWithOpener property
* chore: Added documentation
* Update docs/api/window-open.md
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
* chore: refactor
Co-authored-by: Jeremy Rose <nornagon@nornagon.net>
* chore: changed property name from `closeWithOpener` to `outlivesOpener`
* dummy change to kick lint
* undo above
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
Co-authored-by: Jeremy Rose <nornagon@nornagon.net>