electron/shell/renderer/renderer_client_base.h
electron-roller[bot] c670e38b4b
chore: bump chromium to 125.0.6412.0 (main) (#41610)
* chore: bump chromium in DEPS to 124.0.6361.0

* chore: bump chromium in DEPS to 124.0.6363.0

* chore: update patches

Manually apply printing.patch w/no code changes due to upstream shear.
Xref: https://chromium-review.googlesource.com/c/chromium/src/+/5349263

* chore: bump chromium in DEPS to 124.0.6365.0

* chore: bump chromium in DEPS to 124.0.6367.0

* update patches

* 5371735: Rename SystemGeolocationSourceMac to SystemGeolocationSourceApple

https://chromium-review.googlesource.com/c/chromium/src/+/5371735

* missed a MAS bit

* chore: update windows toolchain

5350823: New toolchain for Windows 11 10.0.22621.2428 SDK | https://chromium-review.googlesource.com/c/chromium/src/+/5350823

* chore: bump chromium in DEPS to 125.0.6368.0

* fix patches

* chore: update patches

* 5232401: [PDF] Move generic utils from //chrome to //components/pdf (1/2)

https://chromium-review.googlesource.com/c/chromium/src/+/5232401

* revert https://chromium-review.googlesource.com/c/chromium/src/+/5380898

* chore: bump chromium in DEPS to 125.0.6370.0

* build: use updated windows toolchain

* fix patches

* chore: update patches

* more pdf_util to components

* 5372414: [Extensions] Remove DispatcherDelegate

https://chromium-review.googlesource.com/c/chromium/src/+/5372414

* fix accessibility_ui patch

* chore: bump chromium in DEPS to 125.0.6372.0

* chore: bump chromium in DEPS to 125.0.6374.0

* chore: bump chromium in DEPS to 125.0.6376.0

* chore: bump chromium in DEPS to 125.0.6378.0

* chore: bump chromium in DEPS to 125.0.6379.3

* chore: update patches (+ MAS patch changes)

* chore: update patches

* 5381159: Cleanup media::KeySystemSupportObserver
https://chromium-review.googlesource.com/c/chromium/src/+/5381159

* 5382233: Reland "Web `Speech to Text` with SODA backend"
https://chromium-review.googlesource.com/c/chromium/src/+/5382233

* chore: update `exclusive_access` patch

- 5367497: Add a metric for the website state when Fullscreen API is requested
  - https://chromium-review.googlesource.com/c/chromium/src/+/5367497

* chore: add build dependency

5367497: Add a metric for the website state when Fullscreen API is requested
https://chromium-review.googlesource.com/c/chromium/src/+/5367497

* chore: bump chromium in DEPS to 125.0.6382.0

* chore: update libcxx filenames

* chore: update patches

* chore: bump chromium in DEPS to 125.0.6384.0

* chore: remove old patch

* 5394039: [Extensions] Change "blessed" -> "privileged" in extension feature files
https://chromium-review.googlesource.com/c/chromium/src/+/5394039

* fix: remove deprecated errno constants in node/libuv

* 5362194: Return expected from ProcessMetrics CPU methods
https://chromium-review.googlesource.com/c/chromium/src/+/5362194

* 5383927: Add new Pickle factory functions with explicit ownership
https://chromium-review.googlesource.com/c/chromium/src/+/5383927

* 5373340: Simplify app-region/Draggable Region implementation
https://chromium-review.googlesource.com/c/chromium/src/+/5373340

* 5386875: Cleanup printing preferences files
https://chromium-review.googlesource.com/c/chromium/src/+/5386875

* chore: update libc++ filenames

* fix: add enterprise buildflags dep

* chore: bump chromium in DEPS to 125.0.6386.0

* chore: add build dep

* chore: update patches

* chore: bump chromium in DEPS to 125.0.6388.0

* chore: bump chromium in DEPS to 125.0.6390.0

* chore: update patches

* 4918014: preloading: Add NewTabPagePageLoadMetricsObserver
https://chromium-review.googlesource.com/c/chromium/src/+/4918014

* 5401234: [PDF] Remove `PDFDocumentHelperClient::FindPdfChildFrame` API
https://chromium-review.googlesource.com/c/chromium/src/+/5401234

* 5116175: Relocate Windows XPS printing feature helper methods
https://chromium-review.googlesource.com/c/chromium/src/+/5116175

* fixup! 5373340: Simplify app-region/Draggable Region implementation https://chromium-review.googlesource.com/c/chromium/src/+/5373340

* fixup! chore: add build dep

* chore: remove dead code & dead patch

Was dealing with https://chromium-review.googlesource.com/c/chromium/src/+/5402805 when I realized this code is no longer possible to call. It seems like this code became dead in the previous roll (#41514).

The patch exposed a `DxdiagDx12VulkanRequested` method on Chromium's `GpuDataManagerImpl`, which we consumed only in our own `GPUInfoManager::NeedsCompleteGpuInfoCollection`. There are no other references to this method, so it and the patch can both be deleted. Yay!

* chore: bump chromium in DEPS to 125.0.6392.0

* chore: bump chromium in DEPS to 125.0.6393.0

* chore: update patches

* chore: bump chromium in DEPS to 125.0.6394.0

* chore: bump chromium in DEPS to 125.0.6396.0

* chore: bump chromium in DEPS to 125.0.6397.0

* chore: update printing.patch

Xref: https://chromium-review.googlesource.com/c/chromium/src/+/5100842

No code changes, but had to apply patch manually due to upstream code shear

* chore: update add_maximized_parameter_to_linuxui_getwindowframeprovider.patch

No manual changes; patch applied with fuzz 1

* chore: update feat_allow_code_cache_in_custom_schemes.patch

No manual changes; patch applied with fuzz 2

* chore: silence "space before tab in indent" git rebase-apply warning

* chore: e patches all

* build: update all.gn to avoid FTBFS when disabling raw_ptr

Xref: https://chromium-review.googlesource.com/c/chromium/src/+/5371737

* Rename PdfService Mojo interface to PdfHost

Xref: https://chromium-review.googlesource.com/c/chromium/src/+/5411957

* chore: bump chromium in DEPS to 125.0.6398.0

* chore: update patches

* chore: bump chromium in DEPS to 125.0.6400.0

* chore: update patches

* [media] Remove unused `GetSupportedKeySystems` from MediaClient

Xref: https://chromium-review.googlesource.com/c/chromium/src/+/5420247

* chore: update JSInjection::New call to match upstream change

Xref: https://chromium-review.googlesource.com/c/chromium/src/+/5403967

[Extensions] Wire up the renderer for multiple user script worlds

* 5362362: Derive display ID from monitor adapter ID instead of szDevice.

https://chromium-review.googlesource.com/c/chromium/src/+/5362362

* 5116175: Relocate Windows XPS printing feature helper methods

https://chromium-review.googlesource.com/c/chromium/src/+/5116175

* chore: add v8-sandbox.h to electron-node

* chore: update patches

* chore: update patches

* fixup! 5394039: [Extensions] Change blessed -> privileged in extension feature files

* chore: bump chromium in DEPS to 125.0.6412.0

* chore: update patches

* chore: node script/gen-libc++-filenames.js

* [FPF] Create Fingerprinting Protection ruleset service.

Refs https://chromium-review.googlesource.com/c/chromium/src/+/5420158

* Add ExclusiveAccessPermissionManager

Refs https://chromium-review.googlesource.com/c/chromium/src/+/5273787

* Preserve the PNG colorspace when decoding into a SkBitmap.

Refs https://chromium-review.googlesource.com/c/chromium/src/+/5421254

* chore: iwyu

* fix: abstract-socket compilation

* ci: bump container for node 20 support

* fixup! abstract-socket compilation

* fix: compiling nan specs

* chore: revert winreg version bump

accidental bump to 1.2.5 revealed failing app.setasdefaultprotocolclient
test suite. Should be revisited separately.

* ci: set node 20 for darwin x64 tests

* fix: broken patch export

* chore: cleanup mas_avoid_private_macos_api_usage.patch.patch

Removed code that was inadvertently put back after https://chromium-review.googlesource.com/c/chromium/src/+/5348565 removed it

---------

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: Jeremy Rose <jeremya@chromium.org>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
Co-authored-by: clavin <clavin@electronjs.org>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: deepak1556 <hop2deep@gmail.com>
2024-04-15 18:10:32 -04:00

168 lines
6.2 KiB
C++

// Copyright (c) 2017 GitHub, Inc.
// Use of this source code is governed by the MIT license that can be
// found in the LICENSE file.
#ifndef ELECTRON_SHELL_RENDERER_RENDERER_CLIENT_BASE_H_
#define ELECTRON_SHELL_RENDERER_RENDERER_CLIENT_BASE_H_
#include <memory>
#include <string>
#include "content/public/renderer/content_renderer_client.h"
#include "electron/buildflags/buildflags.h"
#include "media/base/key_systems_support_registration.h"
#include "printing/buildflags/buildflags.h"
#include "shell/common/gin_helper/dictionary.h"
// In SHARED_INTERMEDIATE_DIR.
#include "widevine_cdm_version.h" // NOLINT(build/include_directory)
#if BUILDFLAG(ENABLE_PDF_VIEWER)
#include "components/pdf/renderer/internal_plugin_renderer_helpers.h"
#endif // BUILDFLAG(ENABLE_PDF_VIEWER)
#if BUILDFLAG(ENABLE_BUILTIN_SPELLCHECKER)
#include "services/service_manager/public/cpp/binder_registry.h"
#include "services/service_manager/public/cpp/local_interface_provider.h"
class SpellCheck;
#endif
namespace blink {
class WebLocalFrame;
}
#if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS)
namespace extensions {
class ExtensionsClient;
}
#endif
namespace electron {
#if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS)
class ElectronExtensionsRendererClient;
#endif
class RendererClientBase : public content::ContentRendererClient
#if BUILDFLAG(ENABLE_BUILTIN_SPELLCHECKER)
,
public service_manager::LocalInterfaceProvider
#endif
{
public:
RendererClientBase();
~RendererClientBase() override;
static RendererClientBase* Get();
#if BUILDFLAG(ENABLE_BUILTIN_SPELLCHECKER)
// service_manager::LocalInterfaceProvider implementation.
void GetInterface(const std::string& name,
mojo::ScopedMessagePipeHandle interface_pipe) override;
#endif
virtual void DidCreateScriptContext(v8::Handle<v8::Context> context,
content::RenderFrame* render_frame) = 0;
virtual void WillReleaseScriptContext(v8::Handle<v8::Context> context,
content::RenderFrame* render_frame) = 0;
virtual void DidClearWindowObject(content::RenderFrame* render_frame);
virtual void SetupMainWorldOverrides(v8::Handle<v8::Context> context,
content::RenderFrame* render_frame);
std::unique_ptr<blink::WebPrescientNetworking> CreatePrescientNetworking(
content::RenderFrame* render_frame) override;
// Get the context that the Electron API is running in.
v8::Local<v8::Context> GetContext(blink::WebLocalFrame* frame,
v8::Isolate* isolate) const;
static void AllowGuestViewElementDefinition(
v8::Isolate* isolate,
v8::Local<v8::Object> context,
v8::Local<v8::Function> register_cb);
bool IsWebViewFrame(v8::Handle<v8::Context> context,
content::RenderFrame* render_frame) const;
#if BUILDFLAG(ENABLE_BUILTIN_SPELLCHECKER)
SpellCheck* GetSpellCheck() { return spellcheck_.get(); }
#endif
protected:
void BindProcess(v8::Isolate* isolate,
gin_helper::Dictionary* process,
content::RenderFrame* render_frame);
bool ShouldLoadPreload(v8::Handle<v8::Context> context,
content::RenderFrame* render_frame) const;
// content::ContentRendererClient:
void RenderThreadStarted() override;
void ExposeInterfacesToBrowser(mojo::BinderMap* binders) override;
void RenderFrameCreated(content::RenderFrame*) override;
bool OverrideCreatePlugin(content::RenderFrame* render_frame,
const blink::WebPluginParams& params,
blink::WebPlugin** plugin) override;
void DidSetUserAgent(const std::string& user_agent) override;
bool IsPluginHandledExternally(content::RenderFrame* render_frame,
const blink::WebElement& plugin_element,
const GURL& original_url,
const std::string& mime_type) override;
v8::Local<v8::Object> GetScriptableObject(
const blink::WebElement& plugin_element,
v8::Isolate* isolate) override;
void RunScriptsAtDocumentStart(content::RenderFrame* render_frame) override;
void RunScriptsAtDocumentEnd(content::RenderFrame* render_frame) override;
void RunScriptsAtDocumentIdle(content::RenderFrame* render_frame) override;
bool AllowScriptExtensionForServiceWorker(
const url::Origin& script_origin) override;
void DidInitializeServiceWorkerContextOnWorkerThread(
blink::WebServiceWorkerContextProxy* context_proxy,
const GURL& service_worker_scope,
const GURL& script_url) override;
void WillEvaluateServiceWorkerOnWorkerThread(
blink::WebServiceWorkerContextProxy* context_proxy,
v8::Local<v8::Context> v8_context,
int64_t service_worker_version_id,
const GURL& service_worker_scope,
const GURL& script_url) override;
void DidStartServiceWorkerContextOnWorkerThread(
int64_t service_worker_version_id,
const GURL& service_worker_scope,
const GURL& script_url) override;
void WillDestroyServiceWorkerContextOnWorkerThread(
v8::Local<v8::Context> context,
int64_t service_worker_version_id,
const GURL& service_worker_scope,
const GURL& script_url) override;
void WebViewCreated(blink::WebView* web_view,
bool was_created_by_renderer,
const url::Origin* outermost_origin) override;
protected:
#if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS)
// app_shell embedders may need custom extensions client interfaces.
// This class takes ownership of the returned object.
virtual extensions::ExtensionsClient* CreateExtensionsClient();
#endif
private:
#if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS)
std::unique_ptr<extensions::ExtensionsClient> extensions_client_;
std::unique_ptr<ElectronExtensionsRendererClient> extensions_renderer_client_;
#endif
std::string renderer_client_id_;
// An increasing ID used for identifying an V8 context in this process.
int64_t next_context_id_ = 0;
#if BUILDFLAG(ENABLE_BUILTIN_SPELLCHECKER)
std::unique_ptr<SpellCheck> spellcheck_;
#endif
};
} // namespace electron
#endif // ELECTRON_SHELL_RENDERER_RENDERER_CLIENT_BASE_H_