* refactor: avoid redundant GetIsolate() calls in NodeBindings::CreateEnvironment()
Xref: https://chromium-review.googlesource.com/c/v8/v8/+/6563615
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: use v8::Isolate::GetCurrent() in Initialize() methods
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: add v8::Isolate* arg to NodeBindings::CreateEnvironment()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fixup! refactor: use v8::Isolate::GetCurrent() in Initialize() methods
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* refactor: add v8::Isolate* arg to RendererClientBase::DidCreateScriptContext()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fixup! refactor: add v8::Isolate* arg to NodeBindings::CreateEnvironment()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* fixup! fixup! refactor: use v8::Isolate::GetCurrent() in Initialize() methods
refactor: prefer JavascriptEnvironment::GetIsolate() in the browser layer
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: bump chromium in DEPS to 139.0.7258.6
* chore: bump chromium in DEPS to 139.0.7258.5
* chore: bump chromium in DEPS to 140.0.7270.1
* chore: bump chromium in DEPS to 140.0.7271.1
* chore: bump chromium in DEPS to 140.0.7273.0
* chore: bump chromium in DEPS to 140.0.7273.1
* chore: bump chromium in DEPS to 140.0.7275.1
* chore: bump chromium in DEPS to 140.0.7275.4
* chore: bump chromium in DEPS to 140.0.7277.1
* chore: bump chromium in DEPS to 140.0.7279.1
* chore: bump chromium in DEPS to 140.0.7281.1
* chore: bump chromium in DEPS to 140.0.7283.1
* chore: bump chromium in DEPS to 140.0.7285.1
* chore: bump chromium in DEPS to 140.0.7287.1
* chore: bump chromium in DEPS to 140.0.7289.0
* chore: bump chromium in DEPS to 140.0.7289.1
* chore: bump chromium in DEPS to 140.0.7291.1
* chore: bump chromium in DEPS to 140.0.7293.1
* chore: bump chromium in DEPS to 140.0.7295.1
* chore: bump chromium in DEPS to 140.0.7296.0
* chore: bump chromium to 140.0.7281.0 (main) (#47616)
cherry picked from 603cafad7e
* chore: bump chromium in DEPS to 140.0.7269.2
* chore: bump chromium in DEPS to 140.0.7270.0
* chore: bump chromium in DEPS to 140.0.7271.0
* chore: bump chromium in DEPS to 140.0.7273.0
* 6516731: [ExclusiveAccessForAndroid] remove unneeded includes & deps | https://chromium-review.googlesource.com/c/chromium/src/+/6516731
* 6694809: dbus: Ensure systemd scope is started before using any portal services | https://chromium-review.googlesource.com/c/chromium/src/+/6694809
* chore: patch chromium
* chore: export patches
* chore: bump chromium in DEPS to 140.0.7275.0
* 6677511: [pepper] More pepper removal | https://chromium-review.googlesource.com/c/chromium/src/+/6677511
* 6513641: [gin] Rename gin::Wrappable to gin::DeprecatedWrappable | https://chromium-review.googlesource.com/c/chromium/src/+/6513641
* chore: export chromium patches
* 6513641: [gin] Rename gin::Wrappable to gin::DeprecatedWrappable | https://chromium-review.googlesource.com/c/chromium/src/+/6513641
* chore: bump chromium in DEPS to 140.0.7277.0
* chore: bump chromium in DEPS to 140.0.7279.0
* chore: bump chromium in DEPS to 140.0.7281.0
* 6677314: Plumb enabled client hints in the network requestion to network layer
https://chromium-review.googlesource.com/c/chromium/src/+/6677314
* 6351556: [source-phase-imports] Support Wasm Source Phase Imports
https://chromium-review.googlesource.com/c/chromium/src/+/6351556
* 6700077: [renderer] Avoid calls to deprecated GetIsolate methods
https://chromium-review.googlesource.com/c/chromium/src/+/6700077
* 6692873: Reland "Reland "FSA: Only normalize the hardcoded rules once during initialization""
https://chromium-review.googlesource.com/c/chromium/src/+/6692873
* 6686234: [gin] Cleanup NamedPropertyInterceptor for Wrappable
https://chromium-review.googlesource.com/c/chromium/src/+/6686234
* chore: export patches
* 6667723: Remove content_enable_legacy_ipc GN arg.
https://chromium-review.googlesource.com/c/chromium/src/+/6667723
* 6646566: ui: Move NativeWindowTracker to its own directory
https://chromium-review.googlesource.com/c/chromium/src/+/6646566
* fix: add missing includes
* 6580522: [WAR, DNR] Fix unsafe redirect error to web accessible resource
https://chromium-review.googlesource.com/c/chromium/src/+/6580522
* 6680477: Implement `completeCode` endpoint and expose to DevTools
https://chromium-review.googlesource.com/c/chromium/src/+/6680477
* 6677511: [pepper] More pepper removal
https://chromium-review.googlesource.com/c/chromium/src/+/6677511
* 6696689: Rename views::WidgetFocusManager -> NativeViewFocusManager
https://chromium-review.googlesource.com/c/chromium/src/+/6696689
* 6702812: Move wtf/text/string_impl*.* to "blink" namespace
https://chromium-review.googlesource.com/c/chromium/src/+/6702812
* chore: fix dialog patch
* 6702431: [animation-trigger] Parse timeline-trigger-name
https://chromium-review.googlesource.com/c/chromium/src/+/6702431
* chore: fixup patch indices
* feat: replace webFrame.routingId with webFrame.frameToken
* feat: WebFrameMain.prototype.frameToken
* test: refactor to use replacement APIs
* chore: fixup pip patch
* test: adjust webFrame tests for frameToken changes
* 6703757: Reland "Enable -fsanitize=array-bounds in non-UBSan builds"
https://chromium-review.googlesource.com/c/chromium/src/+/6703757
* test: switch to frameTokens
* test: routingId is fine to test in the main process
* docs: add routingId to breaking changes
* docs: update plugin-crashed event
* chore: fixup linux dialog patch
---------
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: alice <alice@makenotion.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>
(cherry picked from commit 603cafad7e)
---------
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: alice <alice@makenotion.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>
fix: default to system accent color on invalid user color"
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* perf: replace string temporary with string_view in GetXdgAppId()
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: replace string temporary with string_view in ToV8(WindowOpenDisposition)
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* perf: replace string temporary with string_view in ToV8(electron::api::WebContents::Type)
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: bump chromium in DEPS to 139.0.7242.0
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
* chore: update render_widget_host_view_mac.patch
no code changes; just updating patch context
Do a cleanup pass on the history swiper code | https://chromium-review.googlesource.com/c/chromium/src/+/6604367
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: update mas_avoid_private_macos_api_usage.patch.patch
no code changes; just updating patch context
[tracing] Delete base/trace_event/base_tracing.h | https://chromium-review.googlesource.com/c/chromium/src/+/6624012
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: update chore_provide_iswebcontentscreationoverridden_with_full_params.patch
no manual changes; just updating patch context
[ActorFramework] Refactor Actor Task Management | https://chromium-review.googlesource.com/c/chromium/src/+/6618684
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: update fix_move_autopipsettingshelper_behind_branding_buildflag.patch
[pip] Tuck picture-in-picture windows when a file dialog is open | https://chromium-review.googlesource.com/c/chromium/src/+/6449682
Reland "[document pip] Restrict the size that a website can request" | https://chromium-review.googlesource.com/c/chromium/src/+/6372104
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: update feat_corner_smoothing_css_rule_and_blink_painting.patch
Xref: corner-shape: constraint radii based on opposite corner overlap | https://chromium-review.googlesource.com/c/chromium/src/+/6592572
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: update revert_code_health_clean_up_stale_macwebcontentsocclusion.patch
no manual changes; just updating patch context
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: update fix_rename_sqlite_win32_exports_to_avoid_conflicts_with_node_js.patch
no code changes; just updating patch context
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: e patches all
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* Plumb Verify2QwacBinding and hook it up in QwacWebContentsObserver
https://chromium-review.googlesource.com/c/chromium/src/+/6624719
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* Remove host delegate OnMainFrameCreatedForBackgroundPage
https://chromium-review.googlesource.com/c/chromium/src/+/6631123
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* Extensions: Rename GetResourceURL to ResolveExtensionURL
https://chromium-review.googlesource.com/c/chromium/src/+/6625053
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* Consolidate NativeFrameViewMac
https://chromium-review.googlesource.com/c/chromium/src/+/6614239
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* ICWYU
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* Remove dead code WidgetAXTreeIDMap
https://chromium-review.googlesource.com/c/chromium/src/+/6619701
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* Reland "extensions: Add `WillPrepareForEvaluation` to setup MojoJS"
https://chromium-review.googlesource.com/c/chromium/src/+/6630056
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* NavigationThrottleRunner2: Remove MaybeAddThrottle
https://chromium-review.googlesource.com/c/chromium/src/+/6628079
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* Tuck picture-in-picture windows when a file dialog is open
https://chromium-review.googlesource.com/c/chromium/src/+/6449682
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* build: fix snapshot_blob.bin build error
xref: https://issues.chromium.org/issues/416540976
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* chore: e patches all
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* build: freeup disk space on macos
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* chore: bump chromium in DEPS to 139.0.7244.0
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
* chore: update printing.patch
no manual changes; just updating patch context
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: remove upstreamed ignore_parse_errors_for_resolveshortcutproperties.patch
Prevent Windows crash on unexpected shortcut type | https://chromium-review.googlesource.com/c/chromium/src/+/6633298
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: e patches all
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* Revert "Reland "extensions: Add `WillPrepareForEvaluation` to setup MojoJS""
This reverts commit 77c4f967a637f7e8970114f91311f9fddede0f7c.
Revert CL for the high confidence crash culprit for http://crash/28f897bb9743dfe0 | https://chromium-review.googlesource.com/c/chromium/src/+/6641819
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* Fix spec's expected base64-encoded PNG strings to match upstream changes.
[rust png] Enable by default. | https://chromium-review.googlesource.com/c/chromium/src/+/6085801
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: bump chromium in DEPS to 139.0.7246.0
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
* chore: e patches all
Co-authored-by: Charles Kerr <charles@charleskerr.com>
* chore: bump chromium in DEPS to 139.0.7248.0
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
* chore: update patches
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* siso: Enable Siso by default for non-Google builds
https://chromium-review.googlesource.com/c/chromium/src/+/6638830
Disabling for now until we are ready to build siso on all platforms.
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* Revert "revert Don't use static variable for UseExternalPopupMenus"
This reverts commit e91e3894e6c34cc0ffe69ed45417c0ebec882fb1.
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* Update mac_sdk_min to match minimum required SDK version
https://chromium-review.googlesource.com/c/chromium/src/+/6493969
(cherry picked from commit 3e7cbe912d8fe1062d68ed06968aaee22013985f)
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* Use default window styling on Mac
https://chromium-review.googlesource.com/c/chromium/src/+/6648665
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* Reland "Force the unintentional renderer process creation check by default"
https://chromium-review.googlesource.com/c/chromium/src/+/6626905
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* fixup: Reland "Force the unintentional renderer process creation check by default
https://chromium-review.googlesource.com/c/chromium/src/+/6626905
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* chore: bump chromium in DEPS to 139.0.7249.0
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
* fixup: Reland "Force the unintentional renderer process creation check by default
https://chromium-review.googlesource.com/c/chromium/src/+/6626905
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* chore: update patches
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
* chore: bump chromium in DEPS to 139.0.7250.0
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
* chore: bump chromium in DEPS to 139.0.7252.0
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
* chore: bump chromium in DEPS to 139.0.7254.0
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
* 6638187: browser level TOCTOU check for coordinate target
https://chromium-review.googlesource.com/c/chromium/src/+/6638187
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* chore: fixup patch indices
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* chore: add missing base/notimplemented includes
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* 6652910: [Frame Cleanup] Push down/hide implementation-specific API
https://chromium-review.googlesource.com/c/chromium/src/+/6652910
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* chore: bump chromium in DEPS to 139.0.7256.0
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
* chore: fix lint
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* fixup! 6652910: [Frame Cleanup] Push down/hide implementation-specific API
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* fix: move HandleScope location
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
* chore: bump chromium in DEPS to 139.0.7258.0
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
* fixup! [NonClientFrameView] Consolidate NativeFrameViewMac
Co-authored-by: deepak1556 <hop2deep@gmail.com>
* Revert "chore: bump chromium in DEPS to 139.0.7258.0"
This reverts commit 264b2e934f4b2705c47d9761010052b95d9dd5de.
Co-authored-by: deepak1556 <hop2deep@gmail.com>
* chore: update patches
---------
Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
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: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
Co-authored-by: patchup[bot] <73610968+patchup[bot]@users.noreply.github.com>
* refactor: have ShowSaveDialogSync() return a std::optional<base::FilePath>
* fixup! refactor: have ShowSaveDialogSync() return a std::optional<base::FilePath>
* feat: add menu item role `palette` and `header`
* adds comments
* refactors new role items to new item types
* docs: custom type
* docs: note types only available on mac 14+
---------
Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>
* refactor: remove unnecessary downcast in MenuViews::PopupAt()
* refactor: pass a views::Widget as an arg to the ElectronDesktopWindowTreeHostLinux ctor
* refactor: pass a views::Widget as an arg to the ElectronDesktopNativeWidgetAura ctor
* refactor: pass a views::Widget as an arg to the ElectronDesktopWindowTreeHostWin ctor
* refactor: create desktop_window_tree_host_ in the ElectronDesktopNativeWidgetAura constructor
* fixup! refactor: create desktop_window_tree_host_ in the ElectronDesktopNativeWidgetAura constructor
fix: tyop
* refactor: make TrackableObject::weak_map_id() constexpr
refactor: make BaseWindow::GetID() inline and constexpr
* refactor: make NativeWindow::window_id() constexpr too
* 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: Deepak Mohan <hop2deep@gmail.com>
* refactor: use ObserverList::Notify() in shell/browser/window_list.cc
* refactor: use ObserverList::Notify() in shell/browser/web_contents_zoom_controller.cc
* refactor: use ObserverList::Notify() in shell/browser/usb/usb_chooser_context.cc
* refactor: use ObserverList::Notify() in shell/browser/usb/electron_usb_delegate.cc
* refactor: use ObserverList::Notify() in shell/browser/ui/views/menu_delegate.cc
* refactor: use ObserverList::Notify() in shell/browser/ui/tray_icon.cc
* refactor: use ObserverList::Notify() in shell/browser/ui/electron_menu_model.cc
* refactor: use ObserverList::Notify() in shell/browser/serial/serial_chooser_context.cc
* refactor: use ObserverList::Notify() in shell/browser/native_window.cc
* refactor: use ObserverList::Notify() in shell/browser/serial/electron_serial_delegate.cc
* refactor: use ObserverList::Notify() in shell/browser/browser.cc
* refactor: use ObserverList::Notify() in shell/browser/api/electron_api_web_contents.cc
* refactor: use ObserverList::Notify() in shell/browser/hid/electron_hid_delegate.cc
* refactor: use ObserverList::Notify() in shell/browser/hid/hid_chooser_context.cc
* refactor: add EmitDeprecationWarning helper
Also switches EmitWarning to using Node's ProcessEmitWarningGeneric
* chore: use node namespace for function call
* refactor: use net::CanonicalCookie::IsDomainMatch()
Previously we had been rolling our own impl
* test: add pattern-matching tests for our cookie API
* refactor: add electron::Buffer namespace; move the Buffer as_byte_span() into it
* feat: add electron::Buffer::Copy()
a span-friendly version of node::Buffer::Copy()
* refactor: use electron::Buffer::Copy() in electron_api_base_window.cc
* refactor: use electron::Buffer::Copy() in electron_api_data_pipe_holder.cc
* refactor: use electron::Buffer::Copy() in electron_api_safe_storage.cc
* refactor: use electron::Buffer::Copy() in electron_api_clipboard.cc
* refactor: use electron::Buffer::Copy() in osr_converter.cc
* refactor: use electron::Buffer::Copy() in electron_api_native_image.cc
* refactor: use electron::Buffer::Copy() in net_converter.cc
* refactor: use electron::Buffer::Copy() in electron_api_web_contents.cc
* refactor: make NewEmptyBuffer() return a Local<Value>
chore: remove never-used WebContents.getNativeView().
This was added in https://github.com/electron/electron/pull/10308 but
was never used and never documented, not even as experimental API.
* fix: explicitly call GetNativeNSView() on macOS
* chore: move macOS impl to a .mm file
This is needed in order to access gfx::NativeView::GetNativeNSView()
* fix: do not run microtasks in V8Serializer in browser process
* Remove no-op MicrotasksScope in `shell/browser/api/electron_api_auto_updater.cc`
This call was added in https://github.com/electron/electron/pull/40576 as an expansion of `gin_helper::EmitEvent`.
Since this only runs in the browser process and `bool ignore_browser_checkpoint = true` this code is a no-op.
Node should perform a microtask checkpoint if necessary in `node::MakeCallback`.
* Remove no-op MicrotasksScope in `shell/common/api/electron_bindings.cc`
This method is only called by the browser process. The containing function, `ElectronBindings::DidReceiveMemoryDump`, is only used in two places:
* `ElectronBindings::GetProcessMemoryInfo` in the same file, which has a `CHECK` that it's running in the browser process at the top.
* From `shell/browser/api/electron_api_web_contents.cc`, which is only run in the browser process.
Added a DCHECK for clarity and validation.
* Replace `gin_helper::MicrotasksScope` with `v8::MicrotasksScope` in `shell/renderer/`
The browser check is unnecessary in the renderer. Since `gin_helper::MicrotasksScope` will always act exactly like `v8::MicrotasksScope`, it's clear to just use the v8 object directly. This also brings them in line with the many other uses of `v8::MicrotasksScope` in `shell/renderer/`.