mirror of
https://github.com/electron/electron.git
synced 2026-01-09 15:38:08 -05:00
* chore: bump chromium in DEPS to 140.0.7314.0 * 6769821: Delegate checking whether preconnect is enabled. Refs https://chromium-review.googlesource.com/c/chromium/src/+/6769821 * 6632993: PDF Searchify IPH: Use embedder WebContents for GuestView PDF Refs https://chromium-review.googlesource.com/c/chromium/src/+/6632993 * 6769214: [ios blink] Set IOSurface shared memory region on all GMB handles Refs https://chromium-review.googlesource.com/c/chromium/src/+/6769214 * chore: update patches * 6769572: [soft navs]: Move AsyncSameDocumentNavigationStarted to TaskAttributionTracker Refs https://chromium-review.googlesource.com/c/chromium/src/+/6769572 * chore: node gen-libc++-filenames.js * 6765740: [SxS] Implement support for split view in extensions API Refs https://chromium-review.googlesource.com/c/chromium/src/+/6765740 * 6769821: Delegate checking whether preconnect is enabled. Refs https://chromium-review.googlesource.com/c/chromium/src/+/6769821 --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: David Sanders <dsanders11@ucsbalum.com>
150 lines
6.2 KiB
Diff
150 lines
6.2 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 ad93ffc5f17fbff592dc7cfc64aab245de8a296c..75ee8f7ee167b334565dd0976c04a2961fa479c7 100644
|
|
--- a/content/app/content_main_runner_impl.cc
|
|
+++ b/content/app/content_main_runner_impl.cc
|
|
@@ -270,8 +270,13 @@ void AsanProcessInfoCB(const char*, bool*) {
|
|
}
|
|
#endif // defined(ADDRESS_SANITIZER)
|
|
|
|
-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);
|
|
+ std::string_view 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();
|
|
@@ -300,11 +305,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
|
|
}
|
|
|
|
@@ -944,7 +950,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 8b02f553e2fc29da88c3e14c05a7ee82210eab51..14f2e66d5ecda6e860724a3ab946eaaffba33d6d 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 <variant>
|
|
+#include <string_view>
|
|
|
|
#include "base/check.h"
|
|
#include "base/notreached.h"
|
|
@@ -74,6 +75,10 @@ std::optional<int> ContentMainDelegate::PostEarlyInitialization(
|
|
return std::nullopt;
|
|
}
|
|
|
|
+std::string_view ContentMainDelegate::GetBrowserV8SnapshotFilename() {
|
|
+ return std::string_view();
|
|
+}
|
|
+
|
|
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 db611d99a6c0f18f39967b38791822fda7d175b5..cc150475de655d5ef20a107ae3ef80c08af8c7fb 100644
|
|
--- a/content/public/app/content_main_delegate.h
|
|
+++ b/content/public/app/content_main_delegate.h
|
|
@@ -9,6 +9,7 @@
|
|
#include <optional>
|
|
#include <string>
|
|
#include <variant>
|
|
+#include <string_view>
|
|
#include <vector>
|
|
|
|
#include "base/notreached.h"
|
|
@@ -174,6 +175,8 @@ class CONTENT_EXPORT ContentMainDelegate {
|
|
virtual bool ShouldHandleConsoleControlEvents();
|
|
#endif
|
|
|
|
+ virtual std::string_view GetBrowserV8SnapshotFilename();
|
|
+
|
|
protected:
|
|
friend class ContentClientCreator;
|
|
friend class ContentClientInitializer;
|
|
diff --git a/gin/v8_initializer.cc b/gin/v8_initializer.cc
|
|
index e7d14253e0a6324e6603923c5d6e0769a051b475..e48f92eb5b5e1423c8e8b2c9da0dbb6919880684 100644
|
|
--- a/gin/v8_initializer.cc
|
|
+++ b/gin/v8_initializer.cc
|
|
@@ -656,8 +656,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(std::string_view file_name, V8SnapshotFileType snapshot_file_type) {
|
|
if (g_mapped_snapshot) {
|
|
// TODO(crbug.com/40558459): Confirm not loading different type of snapshot
|
|
// files in a process.
|
|
@@ -666,10 +665,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 ec64afd9dd91b292604ca834a91b9cfbd52eb853..6f7382cd600cd34916d9382878aee4b469dae5d0 100644
|
|
--- a/gin/v8_initializer.h
|
|
+++ b/gin/v8_initializer.h
|
|
@@ -7,6 +7,8 @@
|
|
|
|
#include <stdint.h>
|
|
|
|
+#include <string_view>
|
|
+
|
|
#include "base/files/file.h"
|
|
#include "base/files/memory_mapped_file.h"
|
|
#include "build/build_config.h"
|
|
@@ -43,6 +45,7 @@ class GIN_EXPORT V8Initializer {
|
|
int* snapshot_size_out);
|
|
|
|
#if defined(V8_USE_EXTERNAL_STARTUP_DATA)
|
|
+ static void LoadV8SnapshotFromFileName(std::string_view 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);
|