mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
* chore: bump chromium to 112.0.5615.10 * 4240798: Get rid of ShowInvalidPrinterSettingsError() in PrintManagerHost. https://chromium-review.googlesource.com/c/chromium/src/+/4240798 * chore: fixup patch * 4173660: Remove unused argument in BeforeUnloadCompleted Ref: https://chromium-review.googlesource.com/c/chromium/src/+/4173660 (cherry picked from commit6d3934f743) * refactor: base value type DICTIONARY replaced with DICT Ref: https://chromium-review.googlesource.com/c/chromium/src/+/4198081 (cherry picked from commitb7acb5c9a4) * 4251237: [StorageKey Cleanup] (2) Rename CreateFirstParty constructors Ref: https://chromium-review.googlesource.com/c/chromium/src/+/4251237 (cherry picked from commit31bdd549d0) * refactor: rename latency metrics Refs: https://chromium-review.googlesource.com/c/chromium/src/+/4048262 (cherry picked from commit1e1b97d387) * refactor: base::span explicit conversion checks Ref: https://chromium-review.googlesource.com/c/chromium/src/+/4219636 (cherry picked from commit020e8c6aae) * chore: iwyu net/cert/cert_verify_result.h (cherry picked from commit24583f5583) * 4258446: Move network::mojom::ClearDataFilter to its own mojom file https://chromium-review.googlesource.com/c/chromium/src/+/4258446 (cherry picked from commit5ff47109cd) * refactor: refactoring geolocation manager Ref: https://chromium-review.googlesource.com/c/chromium/src/+/4161603 (cherry picked from commit1eeaafb45c) * refactor: use modern base values in tracing Ref: https://chromium-review.googlesource.com/c/chromium/src/+/4210912 (cherry picked from commit192c988c1e) * refactor: add sanitized context to clipboard write Ref: https://chromium-review.googlesource.com/c/chromium/src/+/4178264 (cherry picked from commit3ef020b5e5) * 4256866: [Extensions] Replace GetHooksForAPI with a RegisterHooksDelegate Ref: https://chromium-review.googlesource.com/c/chromium/src/+/4256866 (cherry picked from commitb9d905216a) * refactor: s/Rect/WindowFeatures Ref: https://chromium-review.googlesource.com/c/chromium/src/+/4167001 (cherry picked from commit12d121265b) * 4226656: Add response url to SimpleURLLoader::OnRedirectCallback Ref: https://chromium-review.googlesource.com/c/chromium/src/+/4226656 (cherry picked from commit9f66c47930) * Better approach for ShowInvalidPrinterSettingsError() removal * build: use xcode 14 (cherry picked from commit06bd2c0442) * build: update appveyor image 4072083: New toolchain for Windows 11 10.0.22621.755 SDK | https://chromium-review.googlesource.com/c/chromium/src/+/4072083 (cherry picked from commit437c49898f) * 4261434: Remove browser_watcher (1/3): Move ExitCodeWatcher to chrome/app https://chromium-review.googlesource.com/c/chromium/src/+/4261434 (cherry picked from commitedc90d9488) * 4128591: Enable large pdbs by default https://chromium-review.googlesource.com/c/chromium/src/+/4128591 (cherry picked from commite76f2c3f16) * move dbgcore/dbghelp to extensions_to_skip (cherry picked from commit8eeb555145) * 4273450: dpwas: Send announcement when live regions changed https://chromium-review.googlesource.com/c/chromium/src/+/4273450 * 4277708: win7dep: Remove ResolveCoreWinRTStringDelayload https://chromium-review.googlesource.com/c/chromium/src/+/4277708 * Roll clang+rust llvmorg-17-init-3170-g6e30dffe-1 : llvmorg-17-init-3874-g93a2fecc-1 / [skipping Rust] https://chromium-review.googlesource.com/c/chromium/src/+/4308214 * 4285717: Copy d3dcompiler_47.dll on ARM64 Windows builds https://chromium-review.googlesource.com/c/angle/angle/+/4285717 * Revert "Roll clang+rust llvmorg-17-init-3170-g6e30dffe-1 : llvmorg-17-init-3874-g93a2fecc-1 / [skipping Rust]" This reverts commit71080f4f2d. * Revert Roll clang+rust llvmorg-16-init-17653-g39da55e8-3 This clang roll breaks Linux arm 32-bit --------- Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> Co-authored-by: Keeley Hammond <vertedinde@electronjs.org> Co-authored-by: Samuel Attard <marshallofsound@electronjs.org> Co-authored-by: Jeremy Rose <jeremya@chromium.org> Co-authored-by: electron-patch-conflict-fixer[bot] <83340002+electron-patch-conflict-fixer[bot]@users.noreply.github.com>
157 lines
6.7 KiB
Diff
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 fecd36fff09d4c37f31bb3ad1b8f3bbafc6b027e..aada42368ccdc69c3a53f5be952122128d0a0f35 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"
|
|
@@ -251,8 +252,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();
|
|
@@ -281,11 +287,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
|
|
}
|
|
|
|
@@ -976,7 +983,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 a687861c04b323102a8d2bfe22b24a964793cd9b..4a7a469111eaec3e1e76ee852bd5afbbc0da2956 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 @@ absl::optional<int> ContentMainDelegate::PostEarlyInitialization(
|
|
return absl::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 d4bb0e9a017a833b403916e1d6e64fb058f40f86..35ba35a95e39700824d6e0b480b99bc3cb033a99 100644
|
|
--- a/content/public/app/content_main_delegate.h
|
|
+++ b/content/public/app/content_main_delegate.h
|
|
@@ -9,6 +9,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"
|
|
@@ -165,6 +166,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 a7fa30946131687b046c701d1fe49293f1e837f7..4e7f681fb0ee15ec50328e345975195b0e9c6ba1 100644
|
|
--- a/gin/v8_initializer.cc
|
|
+++ b/gin/v8_initializer.cc
|
|
@@ -494,8 +494,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.
|
|
@@ -504,10 +503,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);
|