Files
electron/patches/chromium/create_browser_v8_snapshot_file_name_fuse.patch
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

157 lines
6.7 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Ryan Manuel <ryanm@cypress.io>
Date: Thu, 4 Aug 2022 22:37:01 -0500
Subject: Create browser v8 snapshot file name fuse
By default, chromium sets up one v8 snapshot to be used in all v8 contexts. This patch allows consumers
to have a dedicated browser process v8 snapshot defined by the file `browser_v8_context_snapshot.bin`.
diff --git a/content/app/content_main_runner_impl.cc b/content/app/content_main_runner_impl.cc
index 096000e6b68a5c4ffc3b1750a98b23c3c6596e3e..46dea4280328abf79618eb68eeb680f549da605a 100644
--- a/content/app/content_main_runner_impl.cc
+++ b/content/app/content_main_runner_impl.cc
@@ -39,6 +39,7 @@
#include "base/process/memory.h"
#include "base/process/process.h"
#include "base/process/process_handle.h"
+#include "base/strings/string_piece.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_util.h"
#include "base/task/single_thread_task_runner.h"
@@ -253,8 +254,13 @@ std::string GetSnapshotDataDescriptor(const base::CommandLine& command_line) {
#endif
-void LoadV8SnapshotFile(const base::CommandLine& command_line) {
+void LoadV8SnapshotFile(const raw_ptr<ContentMainDelegate> delegate, const base::CommandLine& command_line) {
const gin::V8SnapshotFileType snapshot_type = GetSnapshotType(command_line);
+ base::StringPiece browser_v8_snapshot_file_name = delegate->GetBrowserV8SnapshotFilename();
+ if (!browser_v8_snapshot_file_name.empty()) {
+ gin::V8Initializer::LoadV8SnapshotFromFileName(browser_v8_snapshot_file_name, snapshot_type);
+ return;
+ }
#if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC)
base::FileDescriptorStore& file_descriptor_store =
base::FileDescriptorStore::GetInstance();
@@ -283,11 +289,12 @@ bool ShouldLoadV8Snapshot(const base::CommandLine& command_line,
#endif // V8_USE_EXTERNAL_STARTUP_DATA
-void LoadV8SnapshotIfNeeded(const base::CommandLine& command_line,
+void LoadV8SnapshotIfNeeded(const raw_ptr<ContentMainDelegate> delegate,
+ const base::CommandLine& command_line,
const std::string& process_type) {
#if defined(V8_USE_EXTERNAL_STARTUP_DATA)
if (ShouldLoadV8Snapshot(command_line, process_type))
- LoadV8SnapshotFile(command_line);
+ LoadV8SnapshotFile(delegate, command_line);
#endif // V8_USE_EXTERNAL_STARTUP_DATA
}
@@ -969,7 +976,7 @@ int ContentMainRunnerImpl::Initialize(ContentMainParams params) {
return TerminateForFatalInitializationError();
#endif // BUILDFLAG(IS_ANDROID) && (ICU_UTIL_DATA_IMPL == ICU_UTIL_DATA_FILE)
- LoadV8SnapshotIfNeeded(command_line, process_type);
+ LoadV8SnapshotIfNeeded(delegate_, command_line, process_type);
blink::TrialTokenValidator::SetOriginTrialPolicyGetter(
base::BindRepeating([]() -> blink::OriginTrialPolicy* {
diff --git a/content/public/app/content_main_delegate.cc b/content/public/app/content_main_delegate.cc
index 610938d92786cc033c19615364e5e45d54bf8ec6..11797f0429845bd3b654aff2bfa468460e4fd772 100644
--- a/content/public/app/content_main_delegate.cc
+++ b/content/public/app/content_main_delegate.cc
@@ -5,6 +5,7 @@
#include "content/public/app/content_main_delegate.h"
#include "base/check.h"
+#include "base/strings/string_piece.h"
#include "build/build_config.h"
#include "content/public/browser/content_browser_client.h"
#include "content/public/common/content_client.h"
@@ -87,6 +88,10 @@ std::optional<int> ContentMainDelegate::PostEarlyInitialization(
return std::nullopt;
}
+base::StringPiece ContentMainDelegate::GetBrowserV8SnapshotFilename() {
+ return base::StringPiece();
+}
+
ContentClient* ContentMainDelegate::CreateContentClient() {
return new ContentClient();
}
diff --git a/content/public/app/content_main_delegate.h b/content/public/app/content_main_delegate.h
index 2b0919b9a56bd37a398109777dfd199d777a9f74..823f44ab0303ccd6c7502ec65560ddb555b551e7 100644
--- a/content/public/app/content_main_delegate.h
+++ b/content/public/app/content_main_delegate.h
@@ -10,6 +10,7 @@
#include <string>
#include <vector>
+#include "base/strings/string_piece.h"
#include "build/build_config.h"
#include "content/common/content_export.h"
#include "content/public/common/main_function_params.h"
@@ -168,6 +169,8 @@ class CONTENT_EXPORT ContentMainDelegate {
virtual bool ShouldHandleConsoleControlEvents();
#endif
+ virtual base::StringPiece GetBrowserV8SnapshotFilename();
+
protected:
friend class ContentClientCreator;
friend class ContentClientInitializer;
diff --git a/gin/v8_initializer.cc b/gin/v8_initializer.cc
index d1eeb2e904e3077555cf29b366744e9e02cada70..03a7bfb721a72fc35f8d36cc0b2ef0a40516e4cf 100644
--- a/gin/v8_initializer.cc
+++ b/gin/v8_initializer.cc
@@ -584,8 +584,7 @@ void V8Initializer::GetV8ExternalSnapshotData(const char** snapshot_data_out,
#if defined(V8_USE_EXTERNAL_STARTUP_DATA)
-// static
-void V8Initializer::LoadV8Snapshot(V8SnapshotFileType snapshot_file_type) {
+void V8Initializer::LoadV8SnapshotFromFileName(base::StringPiece file_name, V8SnapshotFileType snapshot_file_type) {
if (g_mapped_snapshot) {
// TODO(crbug.com/802962): Confirm not loading different type of snapshot
// files in a process.
@@ -594,10 +593,17 @@ void V8Initializer::LoadV8Snapshot(V8SnapshotFileType snapshot_file_type) {
base::MemoryMappedFile::Region file_region;
base::File file =
- OpenV8File(GetSnapshotFileName(snapshot_file_type), &file_region);
+ OpenV8File(file_name.data(), &file_region);
LoadV8SnapshotFromFile(std::move(file), &file_region, snapshot_file_type);
}
+// static
+void V8Initializer::LoadV8Snapshot(V8SnapshotFileType snapshot_file_type) {
+ const char* file_name = GetSnapshotFileName(snapshot_file_type);
+
+ LoadV8SnapshotFromFileName(file_name, snapshot_file_type);
+}
+
// static
void V8Initializer::LoadV8SnapshotFromFile(
base::File snapshot_file,
diff --git a/gin/v8_initializer.h b/gin/v8_initializer.h
index dd9899c3e0dbadfc0074ffce87d51193e1c963cb..25c747ee645d845a0abfaf63cc66595319df4b51 100644
--- a/gin/v8_initializer.h
+++ b/gin/v8_initializer.h
@@ -9,6 +9,7 @@
#include "base/files/file.h"
#include "base/files/memory_mapped_file.h"
+#include "base/strings/string_piece.h"
#include "build/build_config.h"
#include "gin/array_buffer.h"
#include "gin/gin_export.h"
@@ -42,6 +43,7 @@ class GIN_EXPORT V8Initializer {
int* snapshot_size_out);
#if defined(V8_USE_EXTERNAL_STARTUP_DATA)
+ static void LoadV8SnapshotFromFileName(base::StringPiece file_name, V8SnapshotFileType snapshot_file_type);
// Load V8 snapshot from default resources, if they are available.
static void LoadV8Snapshot(
V8SnapshotFileType snapshot_file_type = V8SnapshotFileType::kDefault);