refactor: use `gin_helper::Dictionary::ValueOrDefault()` (#46982)
* refactor: use ValueOrDefault() in electron_api_web_contents.cc
* refactor: use ValueOrDefault() in electron_api_url_loader.cc
* refactor: use ValueOrDefault() in electron_download_manager_delegate.cc
* refactor: use ValueOrDefault() in electron_touch_bar.mm
* refactor: use ValueOrDefault() in electron_url_loader_factory.cc
* refactor: use ValueOrDefault() in electron_browser_context.cc
* refactor: use ValueOrDefault() in electron_touch_bar.mm
* refactor: use ValueOrDefault() in blink_converter.cc
* feat: add ValueOrDefault() to PersistentDictionary
* empty commit
* refactor: use ValueOrDefault() in blink_converter.cc
* refactor: inline the rectangle base::Value::Dict
* refactor: remove has_scroll temporary
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: do not use native_widget_private() in NativeWindowViews::SetContentProtection()
refactor: do not use native_widget_private() in NativeWindowViews::IsContentProtected()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: do not use native_widget_private() in NativeWindowViews::Show()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: remove native_widget_private #include from native_window_views_win
Not needed since Feb 2025: 9199d5c6
Co-authored-by: Charles Kerr <charles@charleskerr.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
build: move to new hasher function
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Keeley Hammond <vertedinde@electronjs.org>
refactor: enable hasShadow tests on Linux
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* feat: add gin_helper::Dictionary::ValueOrDefault()
A convenience function for using a default value if the
specified key isn't present in the dictionary.
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use ValueOrDefault() in native_window.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use ValueOrDefault() in native_window_mac.mm
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use ValueOrDefault() in native_window_views.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use ValueOrDefault() in electron_api_native_image.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
refactor: pass gfx::ResizeEdge by value
It is an enum class, so no reason to pass by reference
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
refactor: remove some `NativeWindow` public API (#46919)
* refactor: make NativeWindow::titlebar_overlay_height_ private
* refactor: make NativeWindow::set_has_frame() protected
* refactor: remove NativeWindow::background_material()
It's only used once, in NativeWindow, so use |background_material_| directly.
* refactor: remove NativeWindow::vibrancy()
It's only used once, in a NativeWindow method, so use |vibrancy_| directly.
* refactor: unfriend api::BrowserView
It was added in Oct 2022 by 23d4a25 for access to protected NativeWindow
methods add_inspectable_view() and remove_inspectable_view().
That dependency was removed in Nov 2022 by 184ac2b, so BrowserView
doesn't need access to NativeWindow's private fields & methods anymore.
* refactor: make NativeWindow::ContentBoundsToWindowBounds() protected
refactor: make NativeWindow::WindowBoundsToContentBounds() protected
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
refactor: add `NativeWindow::FromWidget()` helper (#46917)
refactor: add NativeWindow::FromWidet() helper
refactor: make kElectronNativeWindowKey a protected field
* refactor: use ObserverList::Notify() in shell/browser/window_list.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use ObserverList::Notify() in shell/browser/web_contents_zoom_controller.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use ObserverList::Notify() in shell/browser/usb/usb_chooser_context.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use ObserverList::Notify() in shell/browser/usb/electron_usb_delegate.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use ObserverList::Notify() in shell/browser/ui/views/menu_delegate.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use ObserverList::Notify() in shell/browser/ui/tray_icon.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use ObserverList::Notify() in shell/browser/ui/electron_menu_model.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use ObserverList::Notify() in shell/browser/serial/serial_chooser_context.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use ObserverList::Notify() in shell/browser/native_window.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use ObserverList::Notify() in shell/browser/serial/electron_serial_delegate.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use ObserverList::Notify() in shell/browser/browser.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use ObserverList::Notify() in shell/browser/api/electron_api_web_contents.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use ObserverList::Notify() in shell/browser/hid/electron_hid_delegate.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use ObserverList::Notify() in shell/browser/hid/hid_chooser_context.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* feat: add support for `--js-flags=--perf-prof` on macOS
allows for profiling of macOS electron apps using samply[1],
which can capture cpu usage for an entire process tree, including
both c/c++ frames and interpreted + jit-compiled JS stack frames
[1] https://github.com/mstange/samply
* chore: update patches
---------
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
* refactor: add EmitDeprecationWarning helper
Also switches EmitWarning to using Node's ProcessEmitWarningGeneric
Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
* chore: use node namespace for function call
Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
* fix: tests that were not run in api-app-spec due to nested it()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fix: tests that were not run in api-browser-window-spec due to nested it()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: annotate disabled test
Co-authored-by: Charles Kerr <charles@charleskerr.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* test: do not skip visibleOnAllWorkspaces tests on Windows
That feature is supported on Linux, so move the test from the
"window states (excluding Linux)" section into the
"window states" section.
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: disable visibleOnAllWorkspaces test on Linux
* fix: NativeWindowViews::IsVisibleOnAllWorkspaces
* test: enable visibleOnAllWorkspaces tests on Linux
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
* test: add platform test on visibleOnAllWorkspaces tests
visibleOnAllWorkspaces is not supported on Windows
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* test: do not skip visibleOnAllWorkspaces tests on Windows
That feature is supported on Linux, so move the test from the
"window states (excluding Linux)" section into the
"window states" section.
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fix: nested it() calls in visibleOnAllWorkspaces specs
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: make the process.platform test simpler
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: disable visibleOnAllWorkspaces test on Linux
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fix: enable autoHideMenuBar tests
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* docs: mark autoHideMenuBar as supported on Linux, Windows
Co-authored-by: Charles Kerr <charles@charleskerr.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
perf: use a stack-allocated string_view array in ToV8(USBProtectedClasses)
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
fix: set `XDG_CURRENT_DESKTOP` env var back to original value before invoking xdg utils (#45310)
* Fix XDG_CURRENT_DESKTOP before invoking XDGUtil
* apply suggestion
* use existing XDG_CURRENT_DESKTOP const
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Evan Simkowitz <esimkowitz@users.noreply.github.com>
fix: bluetooth crash on bluetooth off
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
WebView uses WebContentsViewChildFrame, which doesn't have a Focus impl
and triggers a fatal NOTREACHED.
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Jinli Wu <wujinli@bytedance.com>
* refactor: add electron::Buffer namespace; move the Buffer as_byte_span() into it
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* feat: add electron::Buffer::Copy()
a span-friendly version of node::Buffer::Copy()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use electron::Buffer::Copy() in electron_api_base_window.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use electron::Buffer::Copy() in electron_api_data_pipe_holder.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use electron::Buffer::Copy() in electron_api_safe_storage.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use electron::Buffer::Copy() in electron_api_clipboard.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use electron::Buffer::Copy() in osr_converter.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use electron::Buffer::Copy() in electron_api_native_image.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use electron::Buffer::Copy() in net_converter.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use electron::Buffer::Copy() in electron_api_web_contents.cc
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: make NewEmptyBuffer() return a Local<Value>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fix: explicitly call GetNativeNSView() on macOS
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: move macOS impl to a .mm file
This is needed in order to access gfx::NativeView::GetNativeNSView()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: remove redundant NativeImage::GetBitmap()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* docs: mark NativeImage.getBitmap() as deprecated
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* have getBitmap() emit a deprecation warning
Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
* docs: update obsolete refefence to getBitmap()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* test: update obsolete refefences to getBitmap()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
Co-authored-by: David Sanders <dsanders11@ucsbalum.com>