fix: update shell.openExternal to correctly focus on external window (#44408)
* fix: Use openURL:configuration:completionHandler instead of openUrl
* test: add a test
* fix: add dispatch_async to replace GetUIThreadTaskRunner
* refactor: remove unused import
* fix: update to use BindPostTaskToCurrentDefault
* test: add regression test for window focus
* refactor: update to explicit task runner
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Alice Zhao <alice@makenotion.com>
* perf: prefer NewFromUtf8Literal() over NewFromUtf8() for string literals
the string length is known at compile time and no need to call ToLocalChecked()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: string length is known when calling NewFromUtf8(), so use it
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: remove unnecessary calls to c_str()
these just force the code being called to have to recalculate the string length
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>
* chore: move as_byte_span() to new shell/common/mac_util.h
this way it can be used by multiple mm files
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fix: -Wunsafe-buffer-usage warnings in UNNotificationResponseToNSDictionary
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use base::HexEncode() instead of rolling our own
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fixup! chore: move as_byte_span() to new shell/common/mac_util.h
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fixup! chore: move as_byte_span() to new shell/common/mac_util.h
fix: move mac_util to the right place in filenames.gni
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 ArrayBuffer::Data() API
Replace our `GetBackingStore()->Data()` calls with this instead.
Explained by the V8 docs, ArrayBuffer.Data() is
> More efficient shortcut for GetBackingStore()->Data(). The
> returned pointer is valid as long as the ArrayBuffer is alive.
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* feat: add error event for utility process (#43774)
* feat: add error event for utility process
* chore: use public report api
* chore: fix lint
* doc: mark error event as experimental
---------
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* fixup! feat: add error event for utility process (#43774)
remove #include "electron/mas.h"
this header did not exist before c1c8fbfd9
---------
Co-authored-by: Robo <hop2deep@gmail.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* chore: bump chromium in DEPS to 130.0.6673.0
* chore: bump chromium in DEPS to 130.0.6675.0
* chore: bump chromium in DEPS to 130.0.6677.2
* chore: bump chromium in DEPS to 130.0.6679.1
* chore: bump chromium in DEPS to 130.0.6681.1
* chore: bump chromium in DEPS to 130.0.6683.2
* chore: bump chromium in DEPS to 130.0.6685.0
* chore: bump chromium in DEPS to 130.0.6687.0
* chore: bump chromium in DEPS to 130.0.6689.0
* chore: bump chromium in DEPS to 130.0.6691.1
* chore: bump chromium in DEPS to 130.0.6693.1
* chore: bump chromium in DEPS to 130.0.6695.1
* chore: bump chromium in DEPS to 130.0.6697.1
* chore: bump chromium in DEPS to 130.0.6699.1
* chore: bump chromium in DEPS to 130.0.6701.1
* chore: bump chromium in DEPS to 130.0.6703.1
* chore: bump chromium in DEPS to 130.0.6705.1
* chore: bump chromium in DEPS to 130.0.6707.1
* chore: bump chromium in DEPS to 130.0.6709.1
* chore: bump chromium in DEPS to 130.0.6711.1
* chore: bump chromium in DEPS to 130.0.6713.1
* chore: bump chromium in DEPS to 130.0.6715.2
* chore: bump chromium in DEPS to 130.0.6717.0
* chore: bump chromium in DEPS to 130.0.6719.1
* chore: bump chromium in DEPS to 130.0.6720.1
* chore: bump chromium in DEPS to 130.0.6723.1
* chore: bump chromium in DEPS to 130.0.6723.4
* chore: bump chromium in DEPS to 130.0.6723.6
* chore: bump chromium to 130.0.6695.0 (main) (#43454)
* chore: bump chromium in DEPS to 130.0.6673.0
* chore: bump chromium in DEPS to 130.0.6675.0
* chore: bump chromium in DEPS to 130.0.6677.2
* chore: bump chromium in DEPS to 130.0.6679.0
* 5802981: [Partitioned Popins] UKM
5802981
* 5799275: ash: Create //chrome/browser/ui/ash/web_view
5799275
* 5791853: [PWA] Allow WebContentsImpl::CreateNewWindow() to use new web contents for loading url
5791853
* 5805208: Move third_party/jacoco to a cipd/ subdirectory.
5805208
* chore: fixup patch indices
* 5771091: Introduce InputManager class for handling input in Viz.
5771091
* 5498921: [Permission] Remove SubscribeToPermissionStatusChange from PermissionManager
5498921
* 5791853: [PWA] Allow WebContentsImpl::CreateNewWindow() to use new web contents for loading url
5791853
* 5801311: Don't use int for bindings
5801311
* 5548827: [Web Install] Define the web-app-installation PermissionPolicy
5548827
* 5786325: Add Infrastructure for Hand tracking permission
5786325
* chore: fixup patch indices
* chore: bump chromium in DEPS to 130.0.6681.0
* [Views AX] Move BrowserAccessibility* to //ui/accessibility/platform
Xref: 5520052
* chore: e patches all
* Don't have default arguments on virtual functions in render_frame_host.h
5809399
* test: log if loadURL fails in base url test
* chore: bump chromium in DEPS to 130.0.6683.2
* chore: fix support_mixed_sandbox_with_zygote.patch
content: restore old DisableJit behavior
5804255
* chore: update patch indices
* chore: bump chromium in DEPS to 130.0.6685.0
* Parallel process launching
Xref: 5015584
* chore: update feat_expose_documentloader_setdefersloading_on_webdocumentloader.patch
No manual changes; patch applied with fuzz 1
* chore: e patches all
* chore: bump chromium in DEPS to 130.0.6687.0
* chore: bump chromium in DEPS to 130.0.6689.0
* chore: bump chromium in DEPS to 130.0.6691.0
* chore: bump chromium in DEPS to 130.0.6693.0
* chore: update patches
* chore: bump chromium in DEPS to 130.0.6695.0
* chore: free up macos disk space as soon as possible
* 5824143: Use checked in source lists for third_party/boringssl
5824143
* chore: update patches
* 5824122: Extensions: Add a new view type enum for developer tools contexts
5824122
* 5806109: Option for JavaScriptExecuteRequestForTests() to ignore content settings
5806109
* build: free up disk space on gn check too
* 5799369: [Refactoring] Make allow_http1_for_streaming_upload flags false.
5799369
* fixup! 5015584: Parallel process launching | 5015584
* Disable failing test for short-term
See: https://github.com/electron/electron/issues/43730
* oops
---------
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: Charles Kerr <charles@charleskerr.com>
Co-authored-by: Keeley Hammond <khammond@slack-corp.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: clavin <clavin@electronjs.org>
(cherry picked from commit 4bcbc955dd)
* build: update appveyor image to latest version (#43772)
Co-authored-by: electron-appveyor-updater[bot] <161660339+electron-appveyor-updater[bot]@users.noreply.github.com>
(cherry picked from commit 02fd8bbcc1)
* chore: fixup patches
* chore: fixup patch
* chore: bump chromium in DEPS to 130.0.6723.6
* chore: update filenames.libcxx.gni
* test: re-enable disabled test
* 5844369: controlledframe: Disable Web Bluetooth for <webview> & <controlledframe>
5844369
(cherry picked from commit 0ac4852763f0dce3468d30907620211f34c4104b)
* (multiple CLs): Use an opaque type for FrameTreeNode IDs
5807683: Use an opaque type for FrameTreeNode IDs, part 1 | 5807683
5829746: Use an opaque type for FrameTreeNode IDs, part 2 | 5829746
5836903: Use an opaque type for FrameTreeNode IDs, part 7 | 5836903
5837249: Use an opaque type for FrameTreeNode IDs, part 8 | 5837249
5836564: Use an opaque type for FrameTreeNode IDs, part 12 | 5836564
5837180: Use an opaque type for FrameTreeNode IDs, part 15 | 5837180
(cherry picked from commit 1dd67f5241a3a24ea5a20f11efefdd2afc520a26)
* 5822889: [task] Make GetForegroundTaskRunner non-virtual
5822889
(cherry picked from commit ae1e7232a35260cce8c4303d5f9809aa166bf19b)
* 5833297: Remove unused inner WebContents attach params
5833297
(cherry picked from commit 390bb42e39eba66cd86221461d2822bbd85012df)
* 5806403: Shift PowerMonitor to non static
5806403
(cherry picked from commit 128e3826e13768e89c7f5117de451ebd2b3ec9a4)
* 5666874: [3/N] Remove old OnPowerChange in PowerObserver
5666874
(cherry picked from commit 6ea6ea14ae23ced6465b94fd753f8c80ced4b13b)
* 5829085: [v8] Differentiate between UserVisible and BestEffort task runners
5829085
(cherry picked from commit 1db28ee4a51fb2593e4c11bcaa538a6524abe48c)
* 5791112: [webrtc] Use `c/b/permissions/system` for system permissions
5791112
(cherry picked from commit 50d4a71923ca99653bf5733145bdc6e21f783b2d)
* fixup! (multiple CLs): Use an opaque type for FrameTreeNode IDs
(cherry picked from commit 9271130e160d479b3d286d295045b9d4acd2005c)
* fixup! 5791112: [webrtc] Use `c/b/permissions/system` for system permissions 5791112
(cherry picked from commit db2c8c69d0c7bdee881997847dfc3c8abf32197c)
* 5825636: [Extensions] Create WebContentsObservers with ExtensionsBrowserClient
5825636
(cherry picked from commit f2c3d09ccd141dbe2f4b62957b72f98bf8a010ae)
* 5854811: Use kNotAllowedError instead of kSecurityError for Web MIDI
5854811
* test: fix should support base url for data urls test
Caused by 5802682
* test: fixup extensions can cancel http requests
* chore: document custom protocol handling on Windows change due to Non-Special Scheme URLs shipping
5802682
---------
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: electron-appveyor-updater[bot] <161660339+electron-appveyor-updater[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: clavin <clavin@electronjs.org>
prefactor: prefer member initializers in asar::Archive
prefactor: prefer member initializers in asar::Archive::FileInfo
prefactor: prefer member initializers in asar::IntegrityPayload
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
A small cleanup to remove use of the C-style function declaration idiom.
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fix: -Wunsafe-buffer-usage warnings in Clipboard::WriteBuffer()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: add a DCHECK to confirm the BigBuffer is full
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: reduce code duplication in gin_helper::Promise (#43716)
* refactor: move scope scaffolding into SettletScope
idea stolen from SpellCheckScope
* refactor: move impl of PromiseBase::RejectPromise() to the cc file
* chore: remove unused #include
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
perf: hold V8FunctionInvoker args in a std::array
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: CallMethodWithArgs() now takes a span of value handles
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: use std::array instead of std::vector to hold Emit arg parameter packs
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: remove unused gin_helper::EmitEvent(iso, obj, name, span<Local>)
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: Emit() should not leak converted arg handles into caller's HandleScope
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
refactor: use an EscapableHandleScope
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
reassign the uv_handle_t of the source
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
refactor: avoid redundant Promise.GetContext calls
Several Promise methods call `GetContext()` multiple times. From looking
at the assembly in obj/electron/electron_lib/promise.o, these redundant
calls are actually being made -- they aren't optmized out.
This PR keeps the return value in a local variable to avoid extra calls.
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
refactor: take a uint8_t span in ValidateIntegrityOrDie()
Doing some groundwork for fixing unsafe base::File() APIs:
- Change ValidateIntegrityOrDie() to take a span<const uint8_t> arg.
We'll need this to migrate asar's base::File API calls away from the
ones tagged `UNSAFE_BUFFER_USAGE` because the safe counterparts use
span<uint8_t> too.
- Simplify ValidateIntegrityOrDie()'s implementation by using
crypto::SHA256Hash() instead of reinventing the wheel.
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fix: free UvTaskRunner timers only after they are closed
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: UvTaskRunner now holds UvHandles
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: Launch apps with XDG_ACTIVATION_TOKEN in ozone/wayland
Ensure apps are launched with the activation token received from
xdg_activation_v1 protocol.
Co-authored-by: Orko Garai <orko@igalia.com>
* add focus_launched_process option
Co-authored-by: Orko Garai <orko@igalia.com>
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Orko Garai <orko@igalia.com>
As per the gin docs: "Wrappable<T> explicitly does not support further
subclassing of T. Subclasses of Wrappable<T> should be declared final."
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fix: remove use of deprecated v8::String::Value
Upstream marked v8::String::Value as `V8_DEPRECATE_SOON` last month,
so let's stop using it.
The replacement code mostly does the same as v8::String::Value();
but since our test only cares about the length and not the contents,
we get a small perf win of not needing to allocate a char array and
not needing to call Local::String::Write().
Upstream V8_DEPRECATE_SOON:
Xref: 5667299kkk
v8::String::Value() implementation:
20226b740b/src/api/api.cc (10883)
History on why we used it:
80c1a9739df49ed30f72
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* Update shell/common/gin_converters/file_path_converter.h
Co-authored-by: Robo <hop2deep@gmail.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fixup! Update shell/common/gin_converters/file_path_converter.h
do not return success for all non-Null non-Strings
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>
* chore: avoid double-call to url.scheme() in WebContentsZoomController::SetZoomMode()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: use gurl.scheme_piece() in GetAppInfoHelperForProtocol()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: use gurl.scheme_piece() in Browser::GetApplicationNameForProtocol()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: add std::less<> to HandlersMap
This lets us search it using string_view keys
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: ProtocolRegistry::FindRegistered() now takes a std::string_view
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: use gurl.scheme_piece() in InspectableWebContents::LoadNetworkResource()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: ProtocolRegistry::FindIntercepted() now takes a std::string_view
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: use gurl.scheme_piece() in SimpleURLLoaderWrapper::GetURLLoaderFactoryForURL()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: use gurl.scheme_piece() in ProxyingURLLoaderFactory::CreateLoaderAndStart()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: use gurl.host_piece() in ElectronWebUIControllerFactory::GetWebUIType()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: use gurl.host_piece() in ElectronWebUIControllerFactory::CreateWebUIControllerForURL()
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>
chore: remove unused asar::ClearArchives()
last use removed in Jun 2021 (b1d1ac65, #29293)
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* feat: support app#login event for utility process net requests
* chore: address review feedback
* GlobalRequestID: Avoid unwanted inlining and narrowing int conversions
Refs 5702737
* chore: bump chromium in DEPS to 129.0.6645.0
* chore: update patches
* chore: bump chromium in DEPS to 129.0.6646.0
* refactor: remove ppapi dependency
PPAPI removal - https://issues.chromium.org/issues/40511450
PDF viewer migration - https://issues.chromium.org/issues/40511452
* chore: update patches
* chore: enable `content_enable_legacy_ipc`
We were indirectly relying on this via `enable_ppapi=true`, with
633a57d9b62da7850ef7946f6b101ed440d04cdd ppapi is now disabled and
this commit makes the dependency explicit.
* fix: gn check
---------
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
* refactor: in FramelessView, move empty function decls to header
* refactor: in electron::api::WebContents, move empty function decls to header
* refactor: in electron::api::NativeWindow, move empty function decls to header
* refactor: in electron::OffScreenWebContentsView, move empty function decls to header
* refactor: in electron::OffScreenRenderWidgetHostView, move empty function decls to header
* refactor: in auto_updater::AutoUpdater, move empty function decls to header
* refactor: in electorn::api::FrameSubscriber, move empty function decls to header
* refactor: in electorn::api::SimpleURLLoaderWrapper, move empty function decls to header
* refactor: in electorn::InspectableWebContents, move empty function decls to header
* refactor: in electorn::OffScreenVideoConsumer, move empty function decls to header
* refactor: in electron::OffScreenWebContentsView, move empty function decls to header
* refactor: in electron::TrayIcon, move empty function decls to header
* refactor: in electron::ViewsDelegate, move empty function decls to header
* refactor: in electron::MediaCaptureDevicesDispatcher, move empty function decls to header
* refactor: in electron::UsbChooserContext::DeviceObserver, move empty function decls to header
* refactor: in electron::ProxyingWebSocket, move empty function decls to header
* refactor: in electron::Notification, move empty function decls to header
* refactor: in electron::PlatformNotificationService, move empty function decls to header
* Revert "refactor: in electron::PlatformNotificationService, move empty function decls to header"
This reverts commit 9103750d03b9ba1ceccba43d11dfdc2404ff6191.
* refactor: in electron::ElectronPDFDocumentHelperClient, move empty function decls to header
* refactor: in electron::api::SpellCheckClient, move empty function decls to header
* refactor: in electron::ElectronExtensionHostDelegate, move empty function decls to header
* refactor: in electron::PlatformNotificationService, move empty function decls to header
* refactor: in electron::NativeWindowViews, move empty function decls to header
* chore: move SetTouchBar() back to cc
* Revert "refactor: in auto_updater::AutoUpdater, move empty function decls to header"
This reverts commit c43d6862d32c74f63f82700a7546a732ac05ecb8.
* chore: bump chromium in DEPS to 129.0.6634.0
* chore: update chore_add_electron_deps_to_gitignores.patch
no manual changes. patch applied with fuzz 1.
* chore: e patches all
* chore: update call to gfx::Image::CreateFrom1xPNGBytes()
Xref: 5743597
The call now takes a base::span
---------
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: Charles Kerr <charles@charleskerr.com>