* fix: export libuv symbols
* add test for linux and windows
* mac linker flags
* assuming same foo.so path for macos
* use --whole-archive flag for mac as well
* use force_load for mac
* refactor: use napi c api directly
Co-authored-by: Cheng Zhao <zcbenz@gmail.com>
* fix: increase max crash key value length
* chore: fix linting
* chore: fix linux
* Update spec-main/api-crash-reporter-spec.ts
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
Co-authored-by: Samuel Attard <samuel.r.attard@gmail.com>
Co-authored-by: Samuel Attard <sattard@slack-corp.com>
* fix: generate dumps under crashDumps folder in linux
* Update spec-main/api-crash-reporter-spec.ts
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
Trop annotations are in the form of "(Also in 7.3, 8, 9)" with links to
the sibling branches.
Previously seen in b43e601b83 but is now
free of optional chaining and nullish coalescing, to run on Node < 14 :)
* feat: add worldSafe flag for executeJS results
* chore: do not log warning for webContents.executeJS
* Apply suggestions from code review
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* chore: apply PR feedback
* chore: split logic a bit
* chore: allow primitives through the world safe checl
* chore: clean up per PR feedback
* chore: flip boolean logic
* chore: update per PR feedback
* chore: fix typo
* chore: fix spec
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* perf: do not convert object keys in ctx bridge as they are always primitives
* Update shell/renderer/api/electron_api_context_bridge.cc
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* chore: add patches to prevent installation of non-arm pip packages
* chore: add patches for apple-silicon
* build: add apple silicon build
* ci: add testing of new arm binary
* chore: remove / update for upstreamed patches
* Skip content tracing on macos on arm
* build: ensure that spec native modules are rebuilt for arm64 on apple-silicon
* chore: fix patches
* chore: fix broken patch
* chore: fix arm64 DCHECK
* build: add MAS arm64 build
* build: disable arm2 tests
* chore: update patches
* build: actually build MAS version of apple silicon app
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
* fix: let Node.js perform microtask checkpoint in the main process
* fix: don't specify v8::MicrotasksScope for explicit policy
* fix: remove checkpoint from some call-sites
We already perform checkpoint at the end of a task,
either through MicrotaskRunner or through NodeBindings.
There isn't a need to add them again when calling into JS
except when dealing with promises.
* fix: remove checkpoint from some call-sites
We already perform checkpoint at the end of a task,
either through MicrotaskRunner or through NodeBindings.
There isn't a need to add them again when calling into JS
except when dealing with promises.
* fix incorrect specs
* default constructor arguments are considered for explicit mark
* add regression spec
* chore: ensure release notes always come from Clerk
Now with tests!
* chore: move sinon devDependency into `spec-main`
* refactor: tweak note-spec variable for readability
* chore: bump chromium in DEPS to db7d7b3e7cb2bc925f2abfde526280cfdfc21a41
* Update patches
* chore: bump chromium in DEPS to 5613e1b99a44fcbe22f3910f803ca76903a77ec1
* Update patches
* Network service: Remove primary_network_context bool.
https://chromium-review.googlesource.com/c/chromium/src/+/2204678
* WebContentsObserver now implements OnRendererResponsive
https://chromium-review.googlesource.com/c/chromium/src/+/2211066
* update patches
* Fixup printing patch
* chore: bump chromium in DEPS to e387b972cdd7160c416fa6c64a724e2258aa0218
* update patches
* [printing] Move PrintHostMsg_DidPrintContent_Params to print.mojom
https://chromium-review.googlesource.com/c/chromium/src/+/2212110
* [XProto] Move items from ::x11::XProto to ::x11
https://chromium-review.googlesource.com/c/chromium/src/+/2218476
* revert Add IChromeAccessible
This was added in https://chromium-review.googlesource.com/c/chromium/src/+/2206224 but it breaks WOA builds because third_party/win_build_output/midl/ui/accessibility/platform/arm64 does not exist. The link above says that the new interface is behind a feature flag which is disabled by default so it is safe to remove for now.
* rebaseline ichromeaccessible for Windows arm64
This patch will not be needed once we get the next roll.
* Update to 1b9e01844e8bf1aaafc4a52c0c62af7f56d9637b to get arm64 fix
* update patches
* chore: bump chromium in DEPS to 096aefa04092ea00f7b68d8d19345883f20db3c3
* chore: bump chromium in DEPS to a524a45ffd1d6fd46a7a86138fe2b22df5b6651a
* chore: update patches
* Window Placement: Gate cross-screen fullscreen behavior on permission
https://chromium-review.googlesource.com/c/chromium/src/+/2203268
* chore: add spec for https://crbug.com/1085836
* chore: bump chromium in DEPS to ff6c4f4b826d66c2e32380bf5d1eb5e1fe37faef
* update patches
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
Co-authored-by: Electron Bot <anonymous@electronjs.org>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
* chore: tsify more of lib
* Update lib/browser/api/session.ts
Co-authored-by: Jeremy Apthorp <jeremya@chromium.org>
Co-authored-by: Jeremy Apthorp <jeremya@chromium.org>
* feat: Add Secure Keyboard Entry APIs in macOS
Add methods:
- app.isSecureInputEnabled()
- app.setSecureInputEnabled(enabled)
These enable to prevent other process listens keyboard input events.
* fix: lint error in app.md for #20678
* fix: crash app.setSecureInputEnabled() in password textfield
* fix: export Secure keyboard Entry API to only macOS
* fix: lint error in browser_mac.mm for #20678
* test: add test for app.setSecureKeyboardEntryEnabled in macOS
We weren't serializing nativeImages properly in the remote module, leading to gin conversion errors when trying to, for example, create a new context menu in the renderer with icons using nativeImage. This fixes that by adding a new special case to handle them.
This commit fixes https://github.com/electron/electron/issues/18829
Previously the full preferences set to OS was not given to Chromium.
Also, this commit improves fallback font selection for CJK text.
Chromium uses browser languages to determine fallback fonts on Windows,
especially kanji/han characters in CJK.
For instance, when user sets 'en-US, ja-JP' to Accept-Language,
while Chromium chooses Japanese font for kanji text, but Electron
chooses Chinese font. This is because only the first language was given
to Accept-Language on Electron.
This patch is based on https://github.com/electron/electron/pull/15532
Co-authored-by: Nitish Sakhawalkar <nitsakh@icloud.com>
Co-authored-by: Kasumi Hanazuki <kasumi@rollingapple.net>
Co-authored-by: Nitish Sakhawalkar <nitsakh@icloud.com>
Co-authored-by: Kasumi Hanazuki <kasumi@rollingapple.net>
Prevent issues with menu creation and subsequent pane focus from menu bar by preventing menus from being created from an empty array. I can't conceive a valid use case for this, since if one wants to remove a menu they should be be passing null to win.setMenu() or calling win.removeMenu(). This issue is also specific to top-level menus, and not submenus, so the new check and exception is scoped to top-level menus.
* test: add pre-change snapshot of new-window event
* move to .ts file for easier diff
* refactor: improve feature string parsing logic
* test: update snapshots
* update type names per review
* update comma-separated parse test
* use for loop instead of reduce per review
* tighten up types
* avoid variable guest contents id returnValue in test snapshot
* chore: add WebContentsView.webContents helper
* chore: no need to handle webContents option
* chore: Create WebContentsView in C++
* chore: make WebContentsView accept web_preferences
* fix: nativeWindowOpen still passes WebContents to BrowserWindow
* chore: no more need of WebContentsViewRelay
* test: WebContentsView now takes options
* fix: avoid creating 2 constructors
* feat: expose the sameSite value for cookies
* Apply suggestions from code review
Co-Authored-By: Charles Kerr <ckerr@github.com>
* Apply suggestions from code review
Align with cookie samesite values for the extensions API
https://developer.chrome.com/extensions/cookies#type-SameSiteStatus
* chore: add tests for sameSite cookies get/set
* chore: update docs parser
* chore: update docs for MessageChannel and MessagePort to have correct process information
* chore: remove LOG warning
* chore: throw error if the string->samesite conversion fails
Co-authored-by: Charles Kerr <ckerr@github.com>
* fix: override file:// instead of intercepting
* test: webRequest module should work with file://
* fix: service work with file:// url
* fix: original_response_headers can be null
* fix: only register file:// when necessary
* fix: ensure standard schemes are registered in nw service process
Refs https://github.com/electron/electron/pull/20546
* chore: add test
* chore: apply suggestions from code review
Co-Authored-By: Jeremy Apthorp <jeremya@chromium.org>
Co-authored-by: Jeremy Apthorp <jeremya@chromium.org>
* fix: do not crash if the window is closed syncronously with a nativeTheme change
* fix: propogate preferred color scheme to the renderer and keep it up to date
* feat(extensions): implement chrome.i18n API
* refactor(extensions): use forward declaration for ScriptExecutor
* fix(extensions): add message filter to handle i18n GetMessageBundle
* test(extensions): add chrome.i18n tests
* fix(extensions): message filter lint error
* fix: remove exclusive test
* fix(extensions): format api feature arrays
Co-Authored-By: Jeremy Apthorp <nornagon@nornagon.net>
* fix(extensions): uncomment chrome.i18n usage in old extensions test
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
* fix: call focus on native window on call to webContents.focus on mac
On mac call to web_contents()->Focus() is not enough so it's
necessary to call it on native window.
* fixup! fix: call focus on native window on call to webContents.focus on mac
* fixup! fix: call focus on native window on call to webContents.focus on mac
* test: close all windows after test
* fix: also match the behavior on Linux
Co-authored-by: Cheng Zhao <zcbenz@github.com>
* chore: add deprecation warning on setting app.allowRendererProcessReuse to false
* fix: no deprecation warnings in process reuse spec
* chore: add test for new deprecate removeProperty behavior
* feat: set app.enableRendererProcessReuse to true by default
* chore: add context aware info to breaking changes doc
* spec: fix nodeIntegration in child windows test for rendererprocessreuse
* spec: fix remote listeners in destroyed renderers spec as the error is now async
* Update api-browser-window-spec.ts
* chore: deprecate affinity
* chore: fix docs
* spec: handle tests crashing without an exist code
* spec: update tests for new rendererprocessreuse default
* spec: with renderer process re-use we get to destroy less views
* feat: add API for receiving logs from service workers
* feat: add new serviceWorkerContext APIs
* chore: add missing #include's
* refactor: rename serviceWorkerContext to serviceWorkers
* chore: clean up based on review
* chore: remove native_mate
* chore: add tests for the service worker module
* Update spec-main/api-service-workers-spec.ts
Co-Authored-By: Jeremy Apthorp <jeremya@chromium.org>
* chore: fix linting
* chore: handle renames
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
* fix: web request support proxying websocket
* fix: make tests work
* chore: do not use api:: code outside api/ folder
* chore: do not create proxy when no listener
* test: use separate session to avoid conflicts
* chore: address review
* fix: remove cyclic references in BrowserWindow
* fix: prevent TopLevelWindow from garbage collection
* test: garbage collection of BrowserWindow
* chore: createIDWeakMap is used in tests
* docs: add references to app.whenReady() in isReady
* refactor: prefer app.whenReady()
In the docs, specs, and lib, replace instances of `app.once('ready')`
(seen occasionally) and `app.on('ready')` (extremely common) with
`app.whenReady()`.
It's better to encourage users to use whenReady():
1. it handles the edge case of registering for 'ready' after it's fired
2. it avoids the minor wart of leaving an active listener alive for
an event that wll never fire again
* fix: systray icon demotion
Adding support for GUID parameter in Tray API.
In combination with signed binaries this allows to maintain
the position in the systray on Windows.
* unit tests
* make mac and linux compile
* chore: bump chromium in DEPS to a1ea0d7aedd6b5fe58fbabfa3b05aa8ee41304ff
* update patches
* update extensions code
* Remove WebPoint
https://chromium-review.googlesource.com/c/chromium/src/+/2007474
* fix build
* chore: bump chromium in DEPS to 9351e26c2a3714f8bbb10789c71bb51b0b494c75
* update patches
* Remove error description from the DidFailLoadWithError message
https://chromium-review.googlesource.com/c/chromium/src/+/2011280
* Make SimpleNetworkHintsHandlerImpl use the right NetworkIsolationKey
https://chromium-review.googlesource.com/c/chromium/src/+/1994430
* Rename libgtkui to gtk
https://chromium-review.googlesource.com/c/chromium/src/+/2011683
* [metrics] Remove histogram Startup.WarmStartTimeFromRemoteProcessStart*.
https://chromium-review.googlesource.com/c/chromium/src/+/2003211
* fix requestSingleInstanceLock test
* chore: bump chromium in DEPS to a813567a4f17ea08292c2b26fa10d0ffd47010d9
* chore: bump chromium in DEPS to f0aca2de536ceecd6eb66e928051d11e6d11991f
* chore: bump chromium in DEPS to 865556af6d0c9d990f5b1816cb792f7c3859667b
* chore: bump chromium in DEPS to 98538fdd28c4b6692e4cc2839729bb7ac009586a
* update patches
* fix broken tests
* Update node tests for v8 changes
* Update node patches for test failures
* Update for number of tests
Co-authored-by: Jeremy Apthorp <nornagon@nornagon.net>
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
* fix: correctly set cookie date
* fix: name is not required for setting cookie
* test: clear cookie after each cookie test
* test: should test session property
* chore: style fixes
* fix: restore parts of original ResourceRequestBody V8 conversion
Restore some of the original conversion logic in order to fix target=_blank post form submissions.
* test: add test for POST form submission
* fix: menu visibility should not be overwritten on startup
* fix: removing menu for window without global menubar
* test: setMenu tests are not for mac
* fix(urlrequest): allow non-2xx repsponse results
- closes#21046
* test(net): add test cases to verify non-2xx body
* test(session): update spec to match clientrequest behavior
* test(net): update test cases to match clientrequest behavior
* spec: clean up async net spec
* fix: always use extraHeaders mode
* fix: clear pending callbacks
* fix: do not use "extraHeaders" for net module
* test: webRequest should be able to modify CROS headers
* chore: CROS => CORS
Co-Authored-By: Milan Burda <milan.burda@gmail.com>
* chore: CROS => CORS
Co-Authored-By: Milan Burda <milan.burda@gmail.com>
* Add GetApplicationNameForProtocol.
* Fix Windows implementation.
* Fix up test.
* Add documentation.
* Implement for real on Linux using xdg-mime.
Also ensure we allow blocking calls here to avoid errant DCHECKing.
* Improve docs for Linux.
* Clean up tests.
* Add a note about not relying on the precise format.
* Update docs/api/app.md
Co-Authored-By: Shelley Vohr <codebytere@github.com>
* Remove needless `done()`s from tests.
* Use vector list initialization.
* Add a simple test for isDefaultProtocolClient.
* Remove unneeded include and skip a test on Linux CI.
* We no longer differentiate between CI and non-CI test runs.
* fix: explicitly resize the contents when exiting html fullscreen while in OS fullscreen
* test: ensure HTML fullscreen toggles while in OS fullscreen
* refactor: convert Menu and globalShortcut to gin
* refactor: convert api::Cookies to gin
* refactor: convert View and WebContentsView to gin
* refactor: convert WebContents related classes to gin
* refactor: convert powerMonitor to gin
* refactor: prepare for header change
* refactor: remove last uses of mate::EventEmitter
* refactor: remove mate::EventEmitter
* refactor: move trackable_object to gin_helper
* fix: custom converter should not use Handle
* fix: no more need to check if icon is empty
It was a bug that the Handle<NativeImage> can be non-empty when the
image file does not exist. The bug was caused by the converter code
writing out the image even when the convertion fails.
The bug was work-arounded by adding an additional check, but since the
original bug had been fixed, the additional check is no longer needed.
* fix: should always set frameId even when callback is null
* fix: do not mix gin/mate handles for NativeImage
* refactor: remove a few uses of native_mate/gfx_converter.h
* refactor: deprecate mate::EventEmitter
* refactor: add gin_helper::EventEmitter
* refactor: convert a few classes to use gin_helper::EventEmitter
* refactor: get rid of native_mate_converters/gfx_converter.h
* fix: follow native_mate on reporting errors
* fix: gin is weak at guessing parameter types
* fix: incorrect full class name
* fix: gin::Handle does not accept null
* feat: add a new contextBridge module
* chore: fix docs linting
* feat: add support for function arguments being proxied
* chore: ensure that contextBridge can only be used when contextIsolation is enabled
* docs: getReverseBinding can be null
* docs: fix broken links in md file
* feat: add support for promises in function parameters
* fix: linting failure for explicit constructor
* Update atom_api_context_bridge.cc
* chore: update docs and API design as per feedback
* refactor: remove reverse bindings and handle GC'able functions across the bridge
* chore: only expose debugGC in testing builds
* fix: do not proxy promises as objects
* spec: add complete spec coverage for contextBridge
* spec: add tests for null/undefined and the anti-overwrite logic
* chore: fix linting
* spec: add complex nested back-and-forth function calling
* fix: expose contextBridge in sandboxed renderers
* refactor: improve security of default_app using the new contextBridge module
* s/bindAPIInMainWorld/exposeInMainWorld
* chore: sorry for this commit, its a big one, I fixed like everything and refactored a lot
* chore: remove PassedValueCache as it is unused now
Values transferred from context A to context B are now cachde in the RenderFramePersistenceStore
* chore: move to anonymous namespace
* refactor: remove PassValueToOtherContextWithCache
* chore: remove commented unused code blocks
* chore: remove .only
* chore: remote commented code
* refactor: extract RenderFramePersistenceStore
* spec: ensure it works with numbered keys
* fix: handle number keys correctly
* fix: sort out the linter
* spec: update default_app asar spec for removed file
* refactor: change signatures to return v8 objects directly rather than the mate dictionary handle
* refactor: use the v8 serializer to support cloneable buffers and other object types
* chore: fix linting
* fix: handle hash collisions with a linked list in the map
* fix: enforce a recursion limit on the context bridge
* chore: fix linting
* chore: remove TODO
* chore: adapt for PR feedback
* chore: remove .only
* chore: clean up docs and clean up the proxy map when objects are released
* chore: ensure we cache object values that are cloned through the V8 serializer
* test: remove remote usage from chromium specs
* disable tts test
* port navigator.mediaDevices tests
* fake camera and microphone
* Update spec-main/chromium-spec.ts
Co-Authored-By: John Kleinschmidt <jkleinsc@github.com>
* refactor: use v8 serialization for ipc
* cloning process.env doesn't work
* serialize host objects by enumerating key/values
* new serialization can handle NaN, Infinity, and undefined correctly
* can't allocate v8 objects during GC
* backport microtasks fix
* fix compile
* fix node_stream_loader reentrancy
* update subframe spec to expect undefined instead of null
* write undefined instead of crashing when serializing host objects
* fix webview spec
* fix download spec
* buffers are transformed into uint8arrays
* can't serialize promises
* fix chrome.i18n.getMessage
* fix devtools tests
* fix zoom test
* fix debug build
* fix lint
* update ipcRenderer tests
* fix printToPDF test
* update patch
* remove accidentally re-added remote-side spec
* wip
* don't attempt to serialize host objects
* jump through different hoops to set options.webContents sometimes
* whoops
* fix lint
* clean up error-handling logic
* fix memory leak
* fix lint
* convert host objects using old base::Value serialization
* fix lint more
* fall back to base::Value-based serialization
* remove commented-out code
* add docs to breaking-changes.md
* Update breaking-changes.md
* update ipcRenderer and WebContents docs
* lint
* use named values for format tag
* save a memcpy for ~30% speedup
* get rid of calls to ShallowClone
* extra debugging for paranoia
* d'oh, use the correct named tags
* apparently msstl doesn't like this DCHECK
* funny story about that DCHECK
* disable remote-related functions when enable_remote_module = false
* nits
* use EnableIf to disable remote methods in mojom
* fix include
* review comments
* test: remove usage of remote module from node tests
* isTTY is undefined in the renderer process on all platforms
* Update spec/node-spec.js
* Update node-spec.js