mirror of
https://github.com/electron/electron.git
synced 2026-01-09 15:38:08 -05:00
* chore: bump chromium in DEPS to 145.0.7562.0 * fix(patch-conflict): update code cache patch for PersistentCache refactor Upstream refactored code cache to use PersistentCache with new class-based implementation (NoopCodeCacheHost, LocalCodeCacheHost, CodeCacheWithPersistentCacheHost). Updated patch to integrate custom scheme support into the new structure while preserving ProcessLockURLIsCodeCacheScheme checks for embedder-registered schemes. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7044986 Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> * fix(patch-conflict): update dialog patch for RequestXdgDesktopPortal API Upstream changed from SetSystemdScopeUnitNameForXdgPortal to RequestXdgDesktopPortal API pattern. Updated OnServiceStarted signature and kept OnSystemdUnitStarted callback that calls Electron's file_dialog::StartPortalAvailabilityTestInBackground(). Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7204285 Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> * fix(patch-conflict): remove reference to deleted AbortByPlaceholderLayout flag Upstream removed the AbortByPlaceholderLayout runtime flag from runtime_enabled_features.json5. Updated patch to only add ElectronCSSCornerSmoothing without the removed flag reference. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7226494 Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> * chore: update patch hunk headers Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> * fix(build): guard media_file_system_registry for ChromeOS only Upstream CL https://chromium-review.googlesource.com/c/chromium/src/+/7100719 moved media_file_system_registry to be ChromeOS-only since Media Galleries is a Chrome Apps API and Chrome Apps are only available on Chrome OS now. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> * fix(build): update VideoPixelFormat API for SharedImageFormat Upstream CL https://chromium-review.googlesource.com/c/chromium/src/+/7207153 removed VideoPixelFormatToGfxBufferFormat as part of migration to SharedImageFormat. Update to use VideoPixelFormatToSharedImageFormat which directly returns the SharedImageFormat. Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> * fix(build): extend profile methods patch for ShouldEnableXfaForms The ShouldEnableXfaForms function uses Profile::FromBrowserContext() which is not available in Electron. Wrap the profile-dependent code in #if 0 to fall through to the feature flag default. Co-Authored-By: Claude <noreply@anthropic.com> * chore: bump chromium in DEPS to 145.0.7563.0 * chore: bump chromium in DEPS to 145.0.7565.0 * chore: bump chromium in DEPS to 145.0.7567.0 * chore: bump chromium in DEPS to 145.0.7568.0 * fix(patch-conflict): update content_main_delegate.h context for IsInitFeatureListEarly Upstream added a new IsInitFeatureListEarly() virtual method to ContentMainDelegate just before where our GetBrowserV8SnapshotFilename() method is added. Updated patch context to account for this new method. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7092856 Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> * chore: update patch hunk headers Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> * fix(patch-update): include v8-cppgc.h for CppHeap complete type The std::unique_ptr<v8::CppHeap> default argument in node.h requires the complete CppHeap type definition for the destructor. Added the v8-cppgc.h include to provide the full type definition. Ref: Unable to locate CL - libc++ unique_ptr requires complete type for destructor Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> * chore: update patch hunk headers Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> * fix(build): move NativeAppWindowFrameViewMacClient before constructor The std::unique_ptr<NativeAppWindowFrameViewMacClient> member requires the complete type definition to be visible at the point of the constructor because the unique_ptr destructor may be instantiated during exception handling. Moved the class definition before the NativeWindowMac constructor. Ref: Unable to locate CL - libc++ unique_ptr requires complete type for destructor Co-Authored-By: Claude <svc-devxp-claude@slack-corp.com> * fix(patch-conflict): update create_browser_v8_snapshot_file_name_fuse context for IsInitFeatureListEarly The upstream added IsInitFeatureListEarly() virtual method declaration to ContentMainDelegate class. Updated the patch context to account for this new function being present before the GetBrowserV8SnapshotFilename() declaration we add. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7092856 Co-Authored-By: Claude <noreply@anthropic.com> * chore: update patch hunk headers Co-Authored-By: Claude <noreply@anthropic.com> * fix(patch-update): remove reverted IsInitFeatureListEarly from v8 snapshot patch The upstream added IsInitFeatureListEarly() was reverted, so the patch should not include this declaration. Only GetBrowserV8SnapshotFilename() should be added by the create_browser_v8_snapshot_file_name_fuse patch. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7230430 Co-Authored-By: Claude <noreply@anthropic.com> * 6171655: include single_thread_task_runner.h for complete type Added include for base/task/single_thread_task_runner.h in osr_converter.cc to resolve incomplete type error when using base::SingleThreadTaskRunner::GetCurrentDefault(). Ref: https://chromium-review.googlesource.com/c/chromium/src/+/6171655 Co-Authored-By: Claude <noreply@anthropic.com> * 7224136: use CHROMIUM_GIT_REVISION directly instead of removed function Upstream removed GetChromiumGitRevision() function from embedder_support. Updated to use CHROMIUM_GIT_REVISION macro directly via build/util/chromium_git_revision.h as recommended in the Chromium CL. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7224136 Co-Authored-By: Claude <noreply@anthropic.com> * fixup! 7224136: use CHROMIUM_GIT_REVISION directly instead of removed function * fix(build): add missing include `components/dbus/xdg/systemd.h` for `void OnSystemdUnitStarted(dbus_xdg::SystemdUnitStatus)` in the same patch. * fix(build): adapt to string-view-ification change in windows jump_list.cc 7186922: Fix unsafe buffer usage in base/win/win_util.cc https://chromium-review.googlesource.com/c/chromium/src/+/7186922 * chore: update libc++ filenames * fixup! fix(build): add missing include * fixup! fix(build): extend profile methods patch for ShouldEnableXfaForms * fixup! fix(build): guard media_file_system_registry for ChromeOS only * fixup! fixup! fix(build): extend profile methods patch for ShouldEnableXfaForms --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Keeley Hammond <khammond@slack-corp.com> Co-authored-by: Claude <svc-devxp-claude@slack-corp.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: clavin <clavin@electronjs.org>
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 fbf9ecd9eae54b688bbf2af54a3ba8ed751e2911..602bf04c390e1e53540ec9a9193fdf19ac275943 100644
|
|
--- a/content/app/content_main_runner_impl.cc
|
|
+++ b/content/app/content_main_runner_impl.cc
|
|
@@ -276,8 +276,13 @@ void AsanProcessInfoCB(const char* reason,
|
|
}
|
|
#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();
|
|
@@ -306,11 +311,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
|
|
}
|
|
|
|
@@ -954,7 +960,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 fee2fab8ab33a3829f055b0408e9e763443016cc..678c636c9ca08f8113dc67aafaf9761f33a7f0e5 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 8151396412bf6981f3424526386ad6257b8c895d..ac5041c1666ac968251768f604f92434d92e374d 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"
|
|
@@ -181,6 +182,8 @@ class CONTENT_EXPORT ContentMainDelegate {
|
|
virtual bool ShouldInitializePerfetto(InvokedIn invoked_in);
|
|
#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 20f364ab05b170485d40fa8651675e09d9f626ca..d7fedf4e8b1ff5c6168b49990d67a1ab09b1800e 100644
|
|
--- a/gin/v8_initializer.cc
|
|
+++ b/gin/v8_initializer.cc
|
|
@@ -648,8 +648,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.
|
|
@@ -658,10 +657,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);
|