* fix: disable background throttling also in the `viz::DisplayScheduler`
`viz::DisplayScheduler` is responsible for drawing and swapping frames
in the `DisplayScheduler::DrawAndSwap` which is called from the
`DisplayScheduler::AttemptDrawAndSwap` if the `DisplayScheduler::ShouldDraw`
returns true. `ShouldDraw` depends on the `DisplayScheduler` visibility
and when it is not visible then it returns false.
In order to keep producing frames, disabling `backgroundThrottling`
should also prevent changing `DisplayScheduler` visibility to false.
`DisplayScheduler` lives in the `ui::Compositor` where every
`electron::NativewWindow` has its own `Compositor`. `electron::NativewWindow`
may be host of the multiple `electron::api::WebContents` instances which may
have different `WebPreferences` settings. Therefore if at least one
of the `WebContents` requires disabling throttling then all other `WebContents`
using the same window will have it disabled in the `ui::Compositor`.
BREAKING CHANGE:
`backgroundThrottling` set to false will disable frames throttling
in the `BrowserWindow` for all `WebContents` displayed by it.
Close: [#31016](https://github.com/electron/electron/issues/31016)
* fixup! fix: disable background throttling also in the `viz::DisplayScheduler`
* fixup! fix: disable background throttling also in the `viz::DisplayScheduler`
* fixup! fix: disable background throttling also in the `viz::DisplayScheduler`
---------
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* chore: bump chromium in DEPS to 118.0.5951.0
* chore: update printing.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4727894
No logic changes, but patch needed to be manually re-applied due to upstream code shear
* chore: update port_autofill_colors_to_the_color_pipeline.patch
No manual changes; patch applied with fuzz
* chore: update patches
* chore: bump chromium in DEPS to 118.0.5953.0
* chore: update patches
* chore: bump chromium in DEPS to 118.0.5955.0
* chore: update patches
* chore: bump chromium in DEPS to 118.0.5957.0
* chore: update patches
* chore: include path of native_web_keyboard_event.h
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4758689
* chore: remove reference to eextensions/browser/notification-types.h
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4771627
* chore: update references to renamed upstream field NativeWebKeyboardEvent.skip_if_unhandled (formerly known as skip_in_browser
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4758689
Need a second pair of eyes on this commit. In particular the reference in content_converter.cc, skipInBrowser, seems to not be set or documented anywhere? Is this unused/vestigal code?
* chore: sync signature of ElectronExtensionsBrowserClient::IsValidContext() to upstream change
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4784198
* chore: add auto_pip_setting_helper.[cc,h] to chromium_src build
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4688277
Exiting upstream code used by chromium_src now depends on this new upstream class
* chore: bump chromium in DEPS to 118.0.5959.0
* chore: update add_maximized_parameter_to_linuxui_getwindowframeprovider.patch
Xref: add_maximized_parameter_to_linuxui_getwindowframeprovider.patch
manually adjust patch to minor upstream chagnes
* chore: update patches
* chore: bump chromium in DEPS to 118.0.5961.0
* chore: bump chromium in DEPS to 118.0.5963.0
* chore: update patches
* 4780994: Rename various base files to "apple" since iOS uses them too
https://chromium-review.googlesource.com/c/chromium/src/+/4780994
* Many files moved from `mac` -> `apple`
This commit follows a handful of CLs that simply rename files/symbols to change `mac`
to `apple`
to signify their use across both macOS and iOS:
- 4784010: Move scoped_nsautorelease_pool to base/apple, leave a forwarding header
- 4790744: Move foundation_util to base/apple, leave a forwarding header
- 4790741: Move scoped_cftypreref to base/apple, leave a forwarding header
- 4787627: Move and rename macOS+iOS base/ files in PA to "apple"
- 4780399: Move OSStatus logging to base/apple
- 4787387: Remove forwarding headers
- 4781113: Rename message_pump_mac to "apple" because iOS uses it too
* fixup minor patch update error
A function param got dropped from this patch somewhere earlier
* chore: bump chromium in DEPS to 118.0.5965.2
* chore: update patches
* 4799213: Move ScopedTypeRef and ScopedCFTypeRef into base:🍎:
https://chromium-review.googlesource.com/c/chromium/src/+/4799213
* Fix removed include to BrowserContext
In crrev.com/c/4767962 an include to BrowserContext was removed,
which was necessary for compilation. This broke only for us because
"chrome/browser/profiles/profile.h" includes that class, but we remove
all references to profiles.
* chore: bump chromium in DEPS to 118.0.5967.0
* chore: update patches
* chore: bump chromium in DEPS to 118.0.5969.0
* chore: update patches
* chore: bump chromium in DEPS to 118.0.5971.0
* chore: bump chromium in DEPS to 118.0.5973.0
* chore: update patches
* 4772121: [OOPIF PDF] Replace PDFWebContentsHelper with PDFDocumentHelper
https://chromium-review.googlesource.com/c/chromium/src/+/4772121
* 4811164: [Extensions] Do some cleanup in ChromeManagementAPIDelegate.
https://chromium-review.googlesource.com/c/chromium/src/+/4811164
* 4809488: Remove duplicate dnd functionality between Web and Renderer prefs
https://chromium-review.googlesource.com/c/chromium/src/+/4809488
Given that this is no longer an option of web preferences, we should
consider deprecating this option and then removing it.
* chore: bump chromium in DEPS to 118.0.5975.0
* chore: update patches
* fixup! chore: add auto_pip_settings_helper.{cc|h} to chromium_src build
* Reland "[windows] Remove RegKey::DeleteEmptyKey"
Refs https://chromium-review.googlesource.com/c/chromium/src/+/4813255
* Ensure StrCat means StrCat
Refs https://chromium-review.googlesource.com/c/chromium/src/+/1117180
* fixup! Remove RegKey::DeleteEmptyKey
* Consistently reject large p and large q in DH
Refs https://boringssl-review.googlesource.com/c/boringssl/+/62226
---------
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: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: clavin <clavin@electronjs.org>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
* feat:Add setter and getter apis to specify udp port range for webrtc (issue#9042)
* lint error fix for PR#39046
* feat: add setter and getter apis to specify udp port range for webrtc (issue#9042) , changed for codereview
* fix lint error
* fix lint errors in file api-web-contents-spec.ts
* feat: add setter and getter apis to specify udp port range for webrtc (issue#9042) , changed for review from itsananderson
* feat: add setter and getter apis to specify udp port range for webrtc (issue#9042) , changed for review from jkleinsc
* fix lint error
* feat: add setter and getter apis to specify udp port range for webrtc (issue#9042) , changed for review from codebyter
* chore: bump chromium in DEPS to 117.0.5866.0
* chore: bump chromium in DEPS to 117.0.5868.0
* chore: update mas_no_private_api.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4634925
Minor manual patch syncing due to upstream code shear
* chore: update mas_disable_remote_layer.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4647191
Manually sync patch to minor upstream code shear
* chore: update mas_disable_remote_accessibility.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4641746
No manual changes; patch applied with fuzz
* chore: update mas_avoid_usage_of_private_macos_apis.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4634925
Manually sync base/process/launch_mac.cc to minor upstream shear
Manually sync base/mac/foundation_util.mm to upstream changes:
_CFIsObjC use has been removed upstream, so we no longer need
to remove it 🎉
* chore: update printing.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4658496
Manually sync patch to minor upstream code shear
* chore: update disable_color_correct_rendering.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4625254
Manually sync patch to minor upstream code shear
* chore: update feat_expose_raw_response_headers_from_urlloader.patch
Xref: services/network/public/cpp/resource_request.cc
No manual changes; patch applied with fuzz
* chore: update add_electron_deps_to_license_credits_file.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4634961
No manual changes; patch applied with fuzz
* chore: update build_only_use_the_mas_build_config_in_the_required_components.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4648411
No manual changes; patch applied with fuzz
* chore: update patches
* fixup! chore: update add_electron_deps_to_license_credits_file.patch
chore: license files must be an array
* chore: bump chromium in DEPS to 117.0.5870.0
* chore: update patches
* chore: run ./script/gen-libc++-filenames.js
* chore: update json_parse_errors_made_user-friendly.patch
Xref: https://chromium-review.googlesource.com/c/v8/v8/+/4652014
v8 error message changed upstream; update Node test to match it
* chore: bump chromium in DEPS to 117.0.5872.0
* chore: update patches
* chore: explicitly cast x11::Window to unsigned int
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4661049
This is an `enum class Window : uint32_t` defined in ui/gfx/x/xproto.h.
Previous versions of clang let this implicit cast happen,
but it generates a warning in the new clang roll.
* chore: remove unused #include
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4650453
header was removed upstream, so FTBFS unless removed here
* chore: add include guard patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4628373
h/t @jkleinsc
* chore: bump chromium in DEPS to 117.0.5874.0
* chore: update render_widget_host_view_mac.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4661244
Manually sync patch to minor upstream code
* chore: update mas_disable_remote_accessibility.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4653209
Manually sync patch to upstream code shear
* chore: update build_only_use_the_mas_build_config_in_the_required_components.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4653209
Manually sync patch to minor upstream code shear
* chore: update GetInitiatorProcessId()
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4641991
trivial upstream naming change: s/ProcessID/ProcessId/
* chore: sync to upstream SetInputRegion() changes
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4665245
Simple upstream chang: SetInputRegion() used to take a gfx::Rect* where
`nullptr` meant "no opaque region". The function signature changed to
absl::optional<gfx::Rect> w/the same meaning.
* chore: sync to upstream SetOpaqueRegion() changes
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4656738
Simple upstream chang: SetOpaqueRegion() used to take a vector<Rect>* where
`nullptr` meant "no opaque region". The function signature changed to
absl::optional<std::vector<gfx::Rect>> w/the same meaning.
* chore: update patches
* chore: bump chromium in DEPS to 117.0.5876.0
* chore: update mas_disable_remote_accessibility.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4658375
We no longer need to patch out a field that's now removed upstream.
RenderWidgetHostNSViewBridgeOwner.remote_accessibility_element_
* chore: update feat_filter_out_non-shareable_windows_in_the_current_application_in.patch
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4658680
Manually sync patch to upstream code shear (ARC adoption).
* chore: update patches
* fix: -Werror,-Wshadow error in Node.js
* chore: bump chromium in DEPS to 117.0.5878.0
* chore: bump chromium in DEPS to 117.0.5880.0
* chore: bump chromium in DEPS to 117.0.5880.4
* chore: update patches
* 4658680: Convert /content/browser to use ARC
https://chromium-review.googlesource.com/c/chromium/src/+/4658680
* 4669995: Remove CFToNSCast and NSToCFCast
https://chromium-review.googlesource.com/c/chromium/src/+/4669995
* WIP: 4658680: Convert /content/browser to use ARC
https://chromium-review.googlesource.com/c/chromium/src/+/4658680
* chore: update printing patch after rebase
* chore: bump chromium in DEPS to 117.0.5882.0
* Revert "WIP: 4658680: Convert /content/browser to use ARC"
This reverts commit c8559ea448ad93123865a6fa8af6fe2767e43396.
* Revert "4669995: Remove CFToNSCast and NSToCFCast"
This reverts commit 38e145f33d844e077b09e1fb119fae9d5d7bbc3e.
* chore: bump chromium in DEPS to 117.0.5874.0
* 4661244: Convert /content/browser/renderer_host to use ARC
https://chromium-review.googlesource.com/c/chromium/src/+/4661244
* 4653209: Convert /ui/views:views to use ARC
https://chromium-review.googlesource.com/c/chromium/src/+/4653209
* chore: fixup mas_disable_remote_accessibility.patch
* chore: fixup render_widget_host_view_mac.patch
* chore: update to newer clang
* chore: bump chromium in DEPS to 117.0.5884.1
(cherry picked from commit a3879acfde8f3d962d58d6ad0632164ccb88ee63)
* 4669995: Remove CFToNSCast and NSToCFCast
https://chromium-review.googlesource.com/c/chromium/src/+/4669995
(cherry picked from commit 38e145f33d844e077b09e1fb119fae9d5d7bbc3e)
(cherry picked from commit b1224ab7e00aedbd0e5dc78ebb3c6162573b28c4)
* 4658680: Convert /content/browser to use ARC
https://chromium-review.googlesource.com/c/chromium/src/+/4658680
(cherry picked from commit 77039a323b9ebb3e8edb3a92a3b94a8d7d026a32)
* Rename and cleanup ExtensionsBrowserClient functions
| https://chromium-review.googlesource.com/c/chromium/src/+/4665670
(cherry picked from commit 677a2e646a8d82da60dc252b08b320c3ddff6be6)
* chore: bump chromium in DEPS to 117.0.5886.0
* chore: update patches
* Revert "chore: update patches"
This reverts commit db9294f9446492d4a3d63f5f3ecc551aeeeb2e26.
* Revert "chore: bump chromium in DEPS to 117.0.5886.0"
This reverts commit a7de0276e6e0eeecfdbb17f9bbc27c01b4bbfc24.
* build: use built toolchains instead of locally installed VSCode
* fixup: build: use built toolchains instead of locally installed VSCode
* chore: add missing mojo dep
---------
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: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* refactor: use constexpr lookup table in electron_api_web_contents.cc
* refactor: make KeyboardCodeFromStr() private
it is only used as a helper to KeyboardCodeFromStr()
* chore: savepoint
* chore: make lint happy
* fixup! refactor: make KeyboardCodeFromStr() private
* refactor: use constexpr lookup table in electron_url_loader_factory
* refactor: use constexpr lookup table in electron_api_tray
* refactor: use constexpr lookup table in web_contents_preferences.cc
* refactor: use constexpr lookup table in content_converter
* perf: use base::StringPiece in InclusionStatusToString()
The strings are all build-time constants and this is a private function
* perf: use base::StringPiece in ErrorCodeToString()
The strings are all build-time constants and this is a private function
* perf: use base::StringPiece in MessageSourceToString()
The strings are all build-time constants and this is a private function
* perf: use base::StringPiece in CursorTypeToString()
The strings are all build-time constants and this is a private function
* perf: use base::StringPiece in MediaStreamTypeToString()
The strings are all build-time constants and this is a private function
* perf: use base::StringPiece in ModifiersToArray()
The strings are all build-time constants and this is a private function
* perf: use base::StringPiece in WebFrameRenderer::MaybeGetRenderFrame()
The strings are all build-time constants and this is a private function
* refactor: use base::Contains() in KeyWeakMap::Has()
* refactor: use base::Contains() in WebRequest::RequestFilter::MatchesType()
* refactor: use base::Contains() in BaseWindow::AddBrowserView()
* refactor: use base::Contains() in DeepFreeze()
* refactor: use base::Contains() in Clipboard::Read()
* Revert "refactor: use base::Contains() in BaseWindow::AddBrowserView()"
This reverts commit 60152359d3978451ebdd7c8eed602c2fb8a9cafa.
* refactor: use base::Contains() in BaseWindow::AddBrowserView()
* refactor: use base::Contains() in IsDevToolsFileSystemAdded()
* refactor: use base::Contains() in MessagePort::DisentanglePorts()
* refactor: use base::Contains() in PowerSaveBlocker::IsStarted()
* refactor: use base::Contains() in SpellCheckClient::OnSpellCheckDone()
* refactor: use base::Contains() in ShowTaskDialogWstr()
* refactor: use base::Contains() in PrintViewManagerElectron::ScriptedPrint()
* refactor: use base::Contains() in PrintViewManagerElectron::DidGetPrintedPagesCount()
* refactor: use base::Contains() in NativeWindow::AddDraggableRegionProvider()
* refactor: use base::Contains() in ElectronBindings::ActivateUVLoop()
* refactor: use base::Contains() in NativeWindowViews::IsVisibleOnAllWorkspaces()
* refactor: use base::Contains() in HidChooserController::OnDeviceAdded()
* refactor: use base::Contains() in ElectronSandboxedRendererClient::WillReleaseScriptContext()
* refactor: use base::Contains() in ElectronRendererClient::WillDestroyWorkerContextOnWorkerThread()
* refactor: use base::Contains() in GlobalShortcut::OnKeyPressed()
* feat: add will-navigate-in-frame event to webContents
* docs: add documentation for webview will-frame-navigate event
* feat: Eliminate isInPlace argument from will-frame-navigate event
* fix: Fire will-frame-navigate before will-navigate
* feat: send will-frame-navigate with a WebFrameMain in the event details
* docs: Update WebContents docs for new API signature
* feat: Add custom event forwarding for <webview> will-frame-navigate
* fix: wrap WebFrameMain so it can be sent as an event
* test: update webContents and <webview> tests to match new signatures
* chore: undo unnecessary change
* fix: don't switch will-navigate to use EmitNavigationEventDetails
* test: clean up will-navigate and will-frame-navigate tests for <webview>
* chore: apply lint fixes
* chore: move GetRenderFrameHost helper into anonymous namespace
* docs: auto-generate WillFrameNavigateDetails rather than defining it manually
* test: Update <webview> tests to actually pass under new spec runner
* docs: Add section explaining relationship between various nav events
* test: Add some tests to ensure navigation event order doesn't silently change
* test: Always monitor all nav events to ensure unexpected ones don't fire
* test: Add test to verify in-page navigation event order
* feat: Change to new style where extra params are exposed as event props
* fix: Remove unused EmitNavigationEventDetails
* fix: Update tests to use new async helpers
* docs: Rename and reorder sections documenting navigation events
---------
Co-authored-by: Milan Burda <milan.burda@gmail.com>
* refactor: change defined(MAS_BUILD) to IS_MAS_BUILD()
This is missing-definition safe and thus allows us to move the definition of this macro away from "all compilation targets" to "just the compilation targets that depend on this macro".
In turn this makes the rebuild time changing from mas <-> darwin only 80 seconds on my machine, instead of the 12-15 minutes it used to take. This will also allow us in the future to build both MAS and darwin on the same CI machine. Costing us ~2 minutes on one machine but saving us anywhere from 30 minutes to an hour of CI time on other parts of the matrix.
* build: always define IS_MAS_BUILD even on non-mac builds
* build: use extra_configs