* fix: backport patch to fix systemd unit activation in Chromium
This backports a patch from Chromium, which fixes systemd unit
activation. That is, a globalShortcuts feature that Chromium has
needs to create a systemd unit and rename it properly. Portal's
global shortcuts uses that name afterwards to map the app with
the shortcuts bound. However, there might be a race between
Chromium binding shortcuts and renaming the unit.
This is a first step to add Portal's globalShortcuts to
Electron.
* feat: Support global shortcuts via GlobalShortcutsPortal feature
Chromium has a new feature called GlobalShortcutsPortal. It
allows clients to use Portal's globalShortcuts to register and
listen to shortcuts.
This patches adds necessary bits, which allows Electron to
use that feature.
In order to make it work, one has to add
--enable-features=GlobalShortcutsPortal
Test: tested manually with a sample app.
* docs: add GlobalShortcutsPortal feature to globalShortcuts docs
Electron supports Portal's globalShortcuts API now via Chromium, and Electron
apps can use that in a Wayland session. Update the docs with the required
feature flag that must be passed to be able to use that implementation.
* refactor: BaseWindow::OnExecuteAppCommand() now takes a std::string_view
* refactor: NativeWindow::NotifyWindowExecuteAppCommand() takes a std::string_view
* refactor: AppCommandToString() returns a std::string_view, is now constexpr
* refactor: make kBrowserBackward, kBrowserForward inline constexpr std::string_view
Xref: https://abseil.io/tips/140https://groups.google.com/a/chromium.org/g/chromium-dev/c/jROTxMo_m2Q/m/HgciN2KsAgAJ
* refactor: use inline constexpr string_view for kDevice*Key constants
Xref: https://abseil.io/tips/140https://groups.google.com/a/chromium.org/g/chromium-dev/c/jROTxMo_m2Q/m/HgciN2KsAgAJ
* refactor: IsEnvSet now takes a base::cstring_view
* refactor: use inline constexpr cstring_view for kRunAsNode
* refactor: use inline constexpr string_view for kPDF*PluginName
* refactor: use base::FilePath::FromASCII() since "internal-pdf-viewer" is ascii
* chore: remove unused shell/common/electron_constants.cc
* fixup! refactor: IsEnvSet now takes a base::cstring_view
* feat: remove enable_run_as_node flag
* drop features.isRunAsNodeEnabled()
* use IsEnvSet() helper in electron_main_linux.cc
* cleanup [[maybe_unused]]
---------
Co-authored-by: Milan Burda <miburda@microsoft.com>
* 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/
https://chromium-review.googlesource.com/c/chromium/src/+/4016595
Co-authored-by: Charles Kerr <charles@charleskerr.com>