* feat: add commandLine.removeSwitch
In some cases apps may want to remove Chromium command line switches to avoid certain Chromium behaviors being used, E.g. remote-debugging-port or gpu-launcher
* fix: add missing removeSwitch to app.ts
Co-authored-by: Milan Burda <milan.burda@gmail.com>
* feat: make desktopCapturer main-process-only
* remove --enable-api-filtering-logging
* remove test
* merge lib/browser/api/desktop-capturer.ts with lib/browser/desktop-capturer.ts
* remove desktop-capturer-get-sources event
* fix specs
* getSources needs to be async
Co-authored-by: Milan Burda <milan.burda@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>
* chore: correct hierarchy of BrowserWindow headings
* Update docs/api/browser-window.md
Co-authored-by: Mark Lee <malept@users.noreply.github.com>
* Update docs/api/browser-window.md
Co-authored-by: Mark Lee <malept@users.noreply.github.com>
* Update docs/api/browser-window.md
Co-authored-by: Mark Lee <malept@users.noreply.github.com>
Co-authored-by: Mark Lee <malept@users.noreply.github.com>
* chore: bump chromium in DEPS to 94.0.4604.0
* build: 3-way merge of chromium patches
* chore: bump chromium in DEPS to 94.0.4605.0
* build: 3-way merge of chromium patches
* 3076040: Reland Remove delete_children RemoveAllChildViews arg
Ref: 3076040
* 3069287: Remove the remaining uses and delete the deprecated API
Ref: 3069287
* 2297212: Replace RemoveWithoutPathExpansion(.*, nullptr) with Value::RemoveKey()
Refs: 2297212
Also: 3060296
* 3082756: Change transport_security_persister_path param to be a path to a file.
Refs: 3082756
> this CL intentionally changes the name of the parameter
> in the network context parameters and the order of the constructor
> parameters to ensure all callers update their code to pass a full
> file path rather than a path to a directory.
The 'path' in this diff is already an absolute path, coming from
`CHECK(base::PathService::Get(chrome::DIR_USER_DATA, &path_));` at
08ff1c2cbf/shell/browser/electron_browser_context.cc (L126)
* iwyu: network::mojom::HttpRawHeaderPair
* fixup! 3076040: Reland Remove delete_children RemoveAllChildViews arg
Missed one.
* 2999884: CodeHealth: Remove DictionaryValue::GetStringWithoutPathExpansion
Refs: 2999884
(example of replacing GetStringWithoutPathExpansion() w/FindStringKey())
Also: 3060296
(removal of DictionaryValue::GetStringWithoutPathExpansion)
* 3059260: Remove kSameSiteByDefaultCookies and kCookiesWithoutSameSiteMustBeSecure
Refs: 3059260
We had both of these in a 'disable_features' list. Since these feature have
been removed upstream, remove them from our disable list, too.
IMPORTANT: this commit should not be backported to older branches that
still have these features, because doing so would un-disable them.
* 2920890: Load reroute_info from download in-progress and history db back into DownloadItem.
Refs: 2920890
* 3039323: [Clipboard API] Clipboard Custom Formats implementation Part 5.
Refs: 3039323
* chore: bump chromium in DEPS to 94.0.4606.0
* 3084502: Add a new PrintRasterizePdfDpi policy.
Refs: 3084502
* chore: update patches
* chore: bump chromium in DEPS to 94.0.4606.3
* chore: bump chromium in DEPS to 95.0.4608.0
* chore: bump chromium in DEPS to 95.0.4609.0
* [DevTools] Remove report_raw_headers from network::ResourceRequest
2856099
* Remove content::WebContentsObserver::OnInterfaceRequestFromFrame
3092665
* Disable kDesktopCaptureMacV2
3069272
* Add a new PrintRasterizePdfDpi policy.
3084502
* chore: update patches
* chore: bump chromium in DEPS to 95.0.4609.3
* disable `use_lld` for macos
* chore: update patches
* Linux: use chrome_crashpad_handler instead of crashpad_handler
3054290
* chore: fix lint
* Revert "[DevTools] Remove report_raw_headers from network::ResourceRequest"
This reverts commit 28f4da1582d046e96cb58f3cbb590503e89dfd0d.
* [DevTools] Remove report_raw_headers from network::ResourceRequest (Attempt #2)
2856099
* DCHECK that predictor always has a non-empty NetworkIsolationKey.
3067698
* Remove --no-untrusted-code-mitigations from //content and //gin
3096585
* fixup! Remove kSameSiteByDefaultCookies and kCookiesWithoutSameSiteMustBeSecure
3059260
* fixup! Remove kSameSiteByDefaultCookies and kCookiesWithoutSameSiteMustBeSecure
* Convert PrintManager to RenderFrameHostReceiverSet.
3072019
* chore: bump chromium in DEPS to 95.0.4612.5
* chore: disable v8 oilpan
* [Compiler] Remove untrusted code mitigations.
3045704
* Remove most FTP logic from services/network.
3076119
* Rename scale_factor.h -> resource_scale_factor.h
3057113
* [GURL -> SiteForCookies] extensions/
3100825
* breadcrumbs: add desktop entry point
3021746
* Move args_ to private in ExtensionFunction
3076261
* chore: iwyu
* fixup! Remove kSameSiteByDefaultCookies and kCookiesWithoutSameSiteMustBeSecure
* Disable kDesktopCaptureMacV2
3069272
* fixup! [Compiler] Remove untrusted code mitigations.
* fixup! Disable kDesktopCaptureMacV2
* Revert "chore: disable v8 oilpan"
This reverts commit 5d255cf1d8e8efbb906047937a713279e5f800d0.
* Reland "chore: disable v8 oilpan"
This reverts commit 1c252765b07a205560e7b5eed06de2605336e2d8.
The previous revert was to test on which platforms did the
heapsnapshot test actually fail.
* [Clipboard API] Clipboard Custom Formats implementation Part 5.
3039323
* Convert ExtensionFrameHost to RenderFrameHostReceiverSet.
3063358
* Convert PDFWebContentsHelper to RenderFrameHostReceiverSet.
3049751
* [Underscore Migration] Migrate ui/legacy
3093160
* chore: remove unknown permission error
* chore: fix lint
* chore: ignore -Wunreachable-code-return for node deps/
* fixup! chore: ignore -Wunreachable-code-return for node deps/
* fix: windows build
* fix: build dependency
Dependency was missed in cbeae20438
* 3108669: arm,dsp: Fix 8bpp Dct64_NEON().
3108669
* chore: revert libgav1 roll
* Revert "3108669: arm,dsp: Fix 8bpp Dct64_NEON()."
This reverts commit 7ed31323127aac8ba2eaff9cae6c9be9a4954f33.
* Revert "chore: revert libgav1 roll"
This reverts commit 084a490d298811267316c786762fe7aa91b6318d.
* chore: revert clang roll
* chore: Fix -Wunreachable-code-aggressive warnings in arm and arm64 code
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: mlaurencin <mlaurencin@electronjs.org>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* docs: remove unused Desktop Environment Integration doc
* Update docs/api/app.md
Co-authored-by: Mark Lee <malept@users.noreply.github.com>
* Update docs/api/app.md
Co-authored-by: Mark Lee <malept@users.noreply.github.com>
Co-authored-by: Mark Lee <malept@users.noreply.github.com>
* rebase "feat: enable windows control overlay on Windows"
* correct compilation error
* fix linting errors
* modify includes and build file
* change `hidden` option to `overlay`
* add patch to fix visual layout
* add button background color parameter
* add button text color parameter
* modify `overlay` in docs and modify button hover/press transition color
* change `text` to `symbol`
* remove todo and fix `text` replacement
* add new titleBarOverlay property and remove titleBarStyle `overlay`
* update browser and frameless window docs
* remove chromium patches
* chore: update patches
* change button hover color, update trailing `_`, update test file
* add dchecks, update title bar drawing checks, update test file
* modify for mac and linux builds
* update docs with overlayColor and overlaySymbolColor
* add corner and side hit test info
* modify docs and copyright info
* modify `titlebar_overlay_` as boolean or object
* move `title_bar_style_ to `NativeWindow`
* update docs with boolean and object titlebar_overlay_
* add `IsEmpty` checks
* move get options for boolean and object checks
* fix linting error
* disable `use_lld` for macos
* Update docs/api/frameless-window.md
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* Update docs/api/frameless-window.md
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* Update docs/api/frameless-window.md
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* Apply docs suggestions from code review
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* modify `true` option description `titleBarOverlay`
* ci: cleanup keychain after tests on arm64 mac (#30472)
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
* docs: fix camelcase in menu example and add hint to deal with TS error
hideothers -> hideOthers (the TS compiler caught this)
The TypeScript compiler also did not like the pattern used to
switch between platforms for submenus was loosing the type information
of the literal constants and generalized them as strings which
conflicts with the type definition of MenuItemConstructorOptions.
* docs: Fix spelling, added hint to TypeScript
Without explicitly stating the type for the const template TypeScript does not create a
with the correct shape due to generalization to strings.
* remove ts hints
Co-authored-by: a <a@b>
Co-authored-by: Cheng Zhao <github@zcbenz.com>
* 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
* mac: add dialog.closeMessageBox API
* win: Implement dialog.closeMessageBox
* mac: Return cancelId with closeMessageBox
* gtk: Implement dialog.closeMessageBox
* win: Fix 32bit build
* win: Reduce the scope of lock
* fix: Build error after rebase
* feat: Use AbortSignal to close message box
* chore: silently handle duplicate ID
* win: Add more notes about the threads
* chore: apply reviews
* fix: base::NoDestructor should be warpped in function
* chore: fix style on windows
* feat: add MenuItem.userAccelerator property
This allows folks to read the user-assigned accelerator that macOS users can provide in system preferences. Useful for showing in-app shortcut help dialogs, you need to know if the accelerator you provided is not being used in favor of a user assigned one.
* chore: update syntax
* chore: add safety check for command index being -1