* feat: add support for WebUSB
* fixup for gn check
* fixup gn check on Windows
* Apply review feedback
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: address review feedback
* chore: removed unneeded code
* Migrate non-default ScopedObservation<> instantiations to ScopedObservationTraits<> in chrome/browser/
4016595
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: bump chromium in DEPS to 109.0.5364.0
* chore: update patches
* chore: bump chromium in DEPS to 109.0.5366.0
* chore: update patches
* i3940364: Change PermissionType::WINDOW_PLACEMENT to WINDOW_MANAGEMENT
3940364
* 3866812: Change content::PluginList to only run on the UI thread.
3866812
* chore: bump chromium in DEPS to 109.0.5368.0
* [cleanup] Replace enable_basic_printing with enable_printing
3957357
* chore: update patches
* 3956318: Desktop PWAs: Retire kWebAppWindowControlsOverlay flag
3956318
* fixup! Change content::PluginList to only run on the UI thread.
(cherry picked from commit 7b5ec87d4ff5d34e7493b4fb46c40c0afeef2005)
Co-Authored-By: Robo <hop2deep@gmail.com>
* chore: bump chromium in DEPS to 109.0.5370.0
* 3956299: Quota: Cleanup QuotaPermissionContext
3956299
* chore: update patches
* 3803867: Add Mojo interface to parse XML for OOP printer capabilities
3803867
* fixup: Add Mojo interface to parse XML for OOP printer capabilities
* chore: bump chromium in DEPS to 109.0.5372.0
* chore: update patches
* chore: bump chromium in DEPS to 109.0.5374.0
* chore: bump chromium in DEPS to 109.0.5376.0
* chore: bump chromium in DEPS to 109.0.5378.0
* chore: update patches
* Quota: Cleanup kPersistent in BrowsingDataRemover
3964859
* 3955976: serial: Create DOMException with V8ThrowDOMException
3955976
* 3758405: Append trailer data to serialized messages.
3758405
* chore: revert clang roll
This patch reverts 3967491
because that roll breaks the WOA build: https://crbug.com/1377819
* chore: update patches
* chore: bump chromium in DEPS to 109.0.5380.0
* chore: update patches
* 3859750: [linux/wayland] Added plumbing for the state of tiled edges.
3859750
Also 3970920: [linux/wayland] Fixed the tiled edges for the GTK frame.
3970920
* chore: bump chromium in DEPS to 109.0.5382.0
* chore: update patches
* chore: revert Use accessibility.pkey when setting page access.
3949281
breaks our Linux builds run under Docker.
This patch should be removed once
3949284
is merged.
* 3976312: Roll clang llvmorg-16-init-8189-g97196a2d-2 : llvmorg-16-init-8697-g60809cd2-1
3976312
* 3967841: [heap] Remove AllocationSpace::MAP_SPACE enum constant
3967841
* 3956131: [cleanup] Remove flag for Wasm threads & atomics
3956131
* chore: update docs for Quota: Cleanup kPersistent in BrowsingDataRemover
3964859
* test: fixup HID test for ARM CI
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@github.com>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
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>
* fix: pass rfh instances through to the permission helper
* refactor: use WeakDocumentPtr instead of frame node id
* fix: handle missing initiator document
* fix: dispatch openExternal event for top level webview navs still
* 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>
* feat: add support for HIDDevice.forget()
* chore: remove whitespace
* chore: use `SetGetter` to serialize the render_frame_host
Co-authored-by: Samuel Maddock <samuel.maddock@gmail.com>
* fixup chore: use `SetGetter` to serialize the render_frame_host
* fixup after rebase
* fixup for crash on navigator.serial.getPorts()
* fixup for lint
Co-authored-by: Samuel Maddock <samuel.maddock@gmail.com>
* feat: add support for WebHID
* Apply suggestions from code review
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* Address review feedback
* Address review feedback
* chore: clear granted_devices on navigation
Also added test to verify devices get cleared
* fixup testing for device clear
* make sure navigator.hid.getDevices is run on correct frame
* clear granted devices on RenderFrameHost deletion/change
* manage device permissions per RenderFrameHost
This change makes sure we don't clear device permission prematurely due to child frame navigation
* Update shell/browser/api/electron_api_web_contents.cc
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* apply review feedback from @zcbenz
* Match upstream ObjectMap
This change matches what ObjectPermissionContextBase uses to cache object permissions: https://source.chromium.org/chromium/chromium/src/+/main:components/permissions/object_permission_context_base.h;l=52;drc=8f95b5eab2797a3e26bba299f3b0df85bfc98bf5;bpv=1;bpt=0
The main reason for this was to resolve this crash on Win x64:
ok 2 WebContentsView doesn't crash when GCed during allocation
Received fatal exception EXCEPTION_ACCESS_VIOLATION
Backtrace:
gin::WrappableBase::SecondWeakCallback [0x00007FF6F2AFA005+133] (o:\gin\wrappable.cc:53)
v8::internal::GlobalHandles::InvokeSecondPassPhantomCallbacks [0x00007FF6F028F9AB+171] (o:\v8\src\handles\global-handles.cc:1400)
v8::internal::GlobalHandles::InvokeSecondPassPhantomCallbacksFromTask [0x00007FF6F028F867+391] (o:\v8\src\handles\global-handles.cc:1387)
node::PerIsolatePlatformData::RunForegroundTask [0x00007FF6F3B4D065+317] (o:\third_party\electron_node\src\node_platform.cc:415)
node::PerIsolatePlatformData::FlushForegroundTasksInternal [0x00007FF6F3B4C424+776] (o:\third_party\electron_node\src\node_platform.cc:479)
uv_run [0x00007FF6F2DDD07C+492] (o:\third_party\electron_node\deps\uv\src\win\core.c:609)
electron::NodeBindings::UvRunOnce [0x00007FF6EEE1E036+294] (o:\electron\shell\common\node_bindings.cc:631)
base::TaskAnnotator::RunTask [0x00007FF6F2318A19+457] (o:\base\task\common\task_annotator.cc:178)
base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWorkImpl [0x00007FF6F2E6F553+963] (o:\base\task\sequence_manager\thread_controller_with_message_pump_impl.cc:361)
base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::DoWork [0x00007FF6F2E6EC69+137] (o:\base\task\sequence_manager\thread_controller_with_message_pump_impl.cc:266)
base::MessagePumpForUI::DoRunLoop [0x00007FF6F235AA58+216] (o:\base\message_loop\message_pump_win.cc:221)
base::MessagePumpWin::Run [0x00007FF6F235A01A+106] (o:\base\message_loop\message_pump_win.cc:79)
base::sequence_manager::internal::ThreadControllerWithMessagePumpImpl::Run [0x00007FF6F2E702DA+682] (o:\base\task\sequence_manager\thread_controller_with_message_pump_impl.cc:470)
base::RunLoop::Run [0x00007FF6F22F95BA+842] (o:\base\run_loop.cc:136)
content::BrowserMainLoop::RunMainMessageLoop [0x00007FF6F14423CC+208] (o:\content\browser\browser_main_loop.cc:990)
content::BrowserMainRunnerImpl::Run [0x00007FF6F144402F+143] (o:\content\browser\browser_main_runner_impl.cc:153)
content::BrowserMain [0x00007FF6F143F911+257] (o:\content\browser\browser_main.cc:49)
content::RunBrowserProcessMain [0x00007FF6EFFA7D18+112] (o:\content\app\content_main_runner_impl.cc:608)
content::ContentMainRunnerImpl::RunBrowser [0x00007FF6EFFA8CF4+1220] (o:\content\app\content_main_runner_impl.cc:1104)
content::ContentMainRunnerImpl::Run [0x00007FF6EFFA87C9+393] (o:\content\app\content_main_runner_impl.cc:971)
content::RunContentProcess [0x00007FF6EFFA73BD+733] (o:\content\app\content_main.cc:394)
content::ContentMain [0x00007FF6EFFA79E1+54] (o:\content\app\content_main.cc:422)
wWinMain [0x00007FF6EECA1535+889] (o:\electron\shell\app\electron_main.cc:291)
__scrt_common_main_seh [0x00007FF6F6F88482+262] (d:\A01\_work\6\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288)
BaseThreadInitThunk [0x00007FFEC0087034+20]
RtlUserThreadStart [0x00007FFEC1F02651+33]
✗ Electron tests failed with code 0xc0000005.
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* feat: Allow detection of MITM HTTPS proxies like ZScaler
For security purposes, Figma heavily restrics the origins that are
allowed to load within our Electron app. Unfortunately some corporate
environments use MITM proxies like ZScaler, which intercepts our
connection to `https://www.figma.com` and serves a redirect to e.g.
`https://gateway.zscloud.net` before finally redirecting back to
`https://www.figma.com`.
In order to detect this situation and handle it gracefully, we need to
be able to know whether or not the certificate for our own origin
(`https://www.figma.com`) is chained to a known root. We do this by
exposesing `CertVerifyResult::is_issued_by_known_root`.
If the certification verification passed without the certificate being
tied to a known root, we can safely assume that we are dealing with a
MITM proxy that has its root CA installed locally on the machine. This
means that HTTPS can't be trusted so we might as well make life easier
for corporate users by loosening our origin restrictions without any
manual steps.
* Tweak docs wording
* fix: ensure the typescript definitions only export correct value types
In typescript there are two main types of "types" you can export, value types (class, const) and definition types (type, interface). The typescript compiler will let anything declared via const or class be used as a value. Unfortunately we were exporting a bunch of things (see the diff) as class/const when they weren't actually exported values. This lead to typescript being happy but the runtime throwing errors (not something we want).
This change passes "exported-in" context through our docs, to the parser and then to the definitions generator to ensure we only mark things as exported in the ts defs that we actually export.
Fixes#22167
* chore: update typescript-defs
* chore: update typescript-defs
* chore: fix bad typescript in IPC test
* docs: test rendering of new syntax
* chore: update per feedback, use same syntax but with 'this is not exportedd' line
* fix: correctly identify clipboard read permission
* Update tests for variable clipboard content
* chore: add all possible permission conversions
* VIDEO_CAPTURE and AUDIO_CAPTURE were already defined
* Handle all PermissionTypes
* use skewer case for accessibility events to match permissions api
https://developer.mozilla.org/en-US/docs/Web/API/Permissions_API
* feat: Added support for all proxy modes
This commit extended setProxy to support all proxy modes including
direct, auto_detect, pac_script, fixed_servers and system.
* feat: New api for reload proxy configurations
These methods are needed for closing all idle and in-flight connections after
switching to another proxy from same origin for a session, otherwise
these connections may be reused for future requests which is
unexpected for most of users.
* feat: add serial api support
resolves#22478
* Put serial port support behind a flag and mark as experimental
* Update docs/api/session.md
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* Use enable-blink-features=Serial instead of enable-experimental-web-platform-features
* Set enableBlinkFeatures on webPreferences instead of commandline
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* feat(extensions): expose ExtensionRegistryObserver events in Session
Extensions can be loaded and unloaded for various reasons. In some cases this can
occur by no means of the Electron programmer, such as in the case of chrome.runtime.reload().
In order to be able to manage state about extensions outside of Electron's APIs, events
reloaded to loading and unloaded are needed.
* docs(extensions): elaborate on extension-loaded/unloaded details
* fix: remove scoped extension registry observer
* docs: update extension-unloaded