mirror of
https://github.com/electron/electron.git
synced 2026-01-07 22:54:25 -05:00
* chore: bump chromium in DEPS to 145.0.7588.0 * fix(patch-conflict): update scroll_bounce_flag for split overscroll methods Chromium split IsElasticOverscrollEnabled() into two methods: IsElasticOverscrollEnabledOnRoot() and IsElasticOverscrollSupported(). Updated patch to apply the scroll-bounce command-line switch to both methods. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7233733 * fix(patch-conflict): update exclusive_access patch context Upstream refactored the profile variable declaration. Updated patch to match new surrounding context with brace-style if statement. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7239252 * fix(patch-conflict): update screen capture kit non-shareable filter Upstream refactored PiP window exclusion to use GetWindowsToExclude() helper function. Updated patch to combine non-shareable window filtering with the new helper's output. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7274596 * fix(patch-conflict): update corner smoothing CSS property id position Upstream added new internal overscroll CSS properties. Updated patch to add kElectronCornerSmoothing after the new entries. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7234051 * fix(patch-conflict): update permission patches for new permission types Upstream added new permission types: LOCAL_NETWORK, LOOPBACK_NETWORK, and GEOLOCATION_APPROXIMATE. Updated Electron permission patches to include these new types and renumber Electron-specific permissions. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7231952 * fix(patch-conflict): update memory query fallback for new function signature Upstream added AmountOfTotalPhysicalMemory() with PCHECK. Updated patch to maintain fallback logic with correct ByteSize return type. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7254886 * chore: update patch hunk headers * fix(patch): update reclient-configs patch to use new file mode The fix_add_python_remote_wrapper patch was using 'copy from' mode which caused inconsistent behavior between local and CI git versions. Changed to 'new file' mode for consistent patch application. * fix(patch-conflict): remove duplicate GEOLOCATION_APPROXIMATE case Upstream moved GEOLOCATION_APPROXIMATE earlier in the switch statement in GetPermissionString(). The 3-way merge kept both the old and new positions, causing a duplicate case error. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/6397637 * chore: update libcxx filenames for new headers * chore: bump chromium in DEPS to 145.0.7590.0 * chore: update patch hunk headers * fix(patch): update memory fallback return type to ByteSize Upstream changed the return type from ByteCount to ByteSize. * fix: suppress nodiscard warning in node_file.cc libc++ added [[nodiscard]] to std::filesystem::copy_options operator|= which causes build failures with -Werror. * 7229082: update CopyFromSurface to use CopyFromSurfaceResult Upstream changed CopyFromSurface callback to return base::expected<viz::CopyOutputBitmapWithMetadata, std::string> instead of SkBitmap, enabling better error handling. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7229082 * 7254070: add ip_address_space param to OnLocalNetworkAccessPermissionRequired Upstream added IPAddressSpace parameter to check address space for proper permission handling in Local Network Access. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7254070 * 7136679: add spelling_markers param to RequestCheckingOfText Upstream added spelling_markers parameter to report misspelling ranges from Blink to Spellcheck to IME. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7136679 * 7240487: remove second param from RegisterWebSafeIsolatedScheme Upstream removed the schemes_okay_to_appear_as_origin_headers_ parameter. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7240487 * 7254577: use explicit WebElement constructor WebElement default constructor now requires explicit construction rather than brace initialization. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7254577 * 7256335: remove override from CreateGlobalFeaturesForTesting Upstream removed BrowserProcess::CreateGlobalFeaturesForTesting virtual method so the override specifier is no longer valid. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7256335 * chore: add missing SingleThreadTaskRunner include A transitive include of SingleThreadTaskRunner was removed upstream, requiring an explicit include. Ref: Unable to locate specific CL (transitive include change) * 7260483: add LOCAL_NETWORK, LOOPBACK_NETWORK permission type cases Upstream added new permission types for Local Network Access split permissions. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7260483 * chore: update patch hunk headers * 7264893: update postMessage tests for file: origin serialization change Chromium now serializes file: origins as 'null' in MessageEvent per spec. This is a security improvement aligning with the HTML spec behavior. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7264893 * fix: add paths to custom scheme URLs in protocol tests Custom scheme URLs without paths (e.g. test-scheme://foo) cause a DCHECK crash in ASAN builds when CorsURLLoader tries to log the request via GenerateRequestLine -> PathForRequest, which asserts that the path is non-empty. Adding trailing slashes ensures URLs have valid paths. * chore: bump chromium in DEPS to 145.0.7592.0 * chore: update patches (trivial only) * chore: bump chromium in DEPS to 145.0.7594.0 * chore: bump chromium in DEPS to 145.0.7596.0 * chore: update accelerator.patch no manual changes; patch applied with fuzz 2 (offset 1 line) * chore: update patches (trivial only) * chore: node ./script/gen-libc++-filenames.js --------- Co-authored-by: Alice Zhao <alicelovescake@anthropic.com> Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Charles Kerr <charles@charleskerr.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 3aeea292145cd5aaa445a29840156a47379d9d2c..ff5aa0c0dc924ca80800f7cd40d7b1565a8bbe8e 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
|
|
}
|
|
|
|
@@ -958,7 +964,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 3c763519c5fd23967b8f03093e8dce2f7c2b9c49..68e31ed29e25300c5948dd9adb6408cbe68c0672 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 199b5637bc6fe387ed30b03bae39b19ab9300dd9..ecf1440a39bda59b44793a6671715484f1e15967 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"
|
|
@@ -185,6 +186,8 @@ class CONTENT_EXPORT ContentMainDelegate {
|
|
// This is an experimental feature and its tracking bug is crbug.com/423925400
|
|
virtual bool IsInitFeatureListEarly();
|
|
|
|
+ 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);
|