diff --git a/DEPS b/DEPS index 29028736c1..bc2a8df92e 100644 --- a/DEPS +++ b/DEPS @@ -15,7 +15,7 @@ gclient_gn_args = [ vars = { 'chromium_version': - '96.0.4647.0', + '96.0.4664.4', 'node_version': 'v16.11.1', 'nan_version': diff --git a/chromium_src/BUILD.gn b/chromium_src/BUILD.gn index 5316e55c53..c5320853da 100644 --- a/chromium_src/BUILD.gn +++ b/chromium_src/BUILD.gn @@ -25,6 +25,7 @@ static_library("chrome") { "//chrome/browser/devtools/devtools_eye_dropper.h", "//chrome/browser/devtools/devtools_file_system_indexer.cc", "//chrome/browser/devtools/devtools_file_system_indexer.h", + "//chrome/browser/devtools/devtools_settings.h", "//chrome/browser/extensions/global_shortcut_listener.cc", "//chrome/browser/extensions/global_shortcut_listener.h", "//chrome/browser/icon_loader.cc", @@ -96,7 +97,7 @@ static_library("chrome") { } if (is_linux) { - sources += [ "//chrome/browser/media/webrtc/window_icon_util_linux.cc" ] + sources += [ "//chrome/browser/media/webrtc/window_icon_util_ozone.cc" ] } if (use_aura) { @@ -119,7 +120,6 @@ static_library("chrome") { deps = [ "//chrome/browser:resource_prefetch_predictor_proto", - "//chrome/services/speech:buildflags", "//components/optimization_guide/proto:optimization_guide_proto", ] @@ -129,16 +129,6 @@ static_library("chrome") { if (is_linux) { sources += [ "//chrome/browser/icon_loader_auralinux.cc" ] - if (use_x11 || use_ozone) { - sources += - [ "//chrome/browser/extensions/global_shortcut_listener_linux.cc" ] - } - if (use_x11) { - sources += [ - "//chrome/browser/extensions/global_shortcut_listener_x11.cc", - "//chrome/browser/extensions/global_shortcut_listener_x11.h", - ] - } if (use_ozone) { deps += [ "//ui/ozone" ] sources += [ @@ -168,6 +158,7 @@ static_library("chrome") { if (enable_desktop_capturer) { sources += [ + "//chrome/browser/media/webrtc/desktop_media_list.cc", "//chrome/browser/media/webrtc/desktop_media_list.h", "//chrome/browser/media/webrtc/desktop_media_list_base.cc", "//chrome/browser/media/webrtc/desktop_media_list_base.h", @@ -205,6 +196,13 @@ static_library("chrome") { "//chrome/browser/printing/printing_service.h", ] + if (enable_oop_printing) { + sources += [ + "//chrome/browser/printing/print_backend_service_manager.cc", + "//chrome/browser/printing/print_backend_service_manager.h", + ] + } + public_deps += [ "//chrome/services/printing:lib", "//components/printing/browser", diff --git a/patches/boringssl/expose_aes-cfb.patch b/patches/boringssl/expose_aes-cfb.patch index 8b6ceaf524..4845f3ec46 100644 --- a/patches/boringssl/expose_aes-cfb.patch +++ b/patches/boringssl/expose_aes-cfb.patch @@ -12,24 +12,25 @@ https://boringssl-review.googlesource.com/c/boringssl/+/33984 for a similar patch that was merged upstream. diff --git a/crypto/cipher_extra/cipher_extra.c b/crypto/cipher_extra/cipher_extra.c -index 786a5d5fb13d7ceafc9b7d58c0aaccb88552506d..5ede89f9f0761d1da1baa899e9a02b77ffcffe93 100644 +index 62850ab6a216d401d023f81007fb59a33b4585f3..0c30b0329d32b94b22f342f95035e927797d0aaf 100644 --- a/crypto/cipher_extra/cipher_extra.c +++ b/crypto/cipher_extra/cipher_extra.c -@@ -105,10 +105,14 @@ const EVP_CIPHER *EVP_get_cipherbyname(const char *name) { - return EVP_des_ede3_cbc(); - } else if (OPENSSL_strcasecmp(name, "aes-128-cbc") == 0) { - return EVP_aes_128_cbc(); -+ } else if (OPENSSL_strcasecmp(name, "aes-128-cfb") == 0) { -+ return EVP_aes_128_cfb128(); - } else if (OPENSSL_strcasecmp(name, "aes-192-cbc") == 0) { - return EVP_aes_192_cbc(); - } else if (OPENSSL_strcasecmp(name, "aes-256-cbc") == 0) { - return EVP_aes_256_cbc(); -+ } else if (OPENSSL_strcasecmp(name, "aes-256-cfb") == 0) { -+ return EVP_aes_256_cfb128(); - } else if (OPENSSL_strcasecmp(name, "aes-128-ctr") == 0) { - return EVP_aes_128_ctr(); - } else if (OPENSSL_strcasecmp(name, "aes-192-ctr") == 0) { +@@ -73,6 +73,7 @@ static const struct { + const EVP_CIPHER *(*func)(void); + } kCiphers[] = { + {NID_aes_128_cbc, "aes-128-cbc", EVP_aes_128_cbc}, ++ {NID_aes_128_cfb128, "aes-128-cfb", EVP_aes_128_cfb128}, + {NID_aes_128_ctr, "aes-128-ctr", EVP_aes_128_ctr}, + {NID_aes_128_ecb, "aes-128-ecb", EVP_aes_128_ecb}, + {NID_aes_128_gcm, "aes-128-gcm", EVP_aes_128_gcm}, +@@ -83,6 +84,7 @@ static const struct { + {NID_aes_192_gcm, "aes-192-gcm", EVP_aes_192_gcm}, + {NID_aes_192_ofb128, "aes-192-ofb", EVP_aes_192_ofb}, + {NID_aes_256_cbc, "aes-256-cbc", EVP_aes_256_cbc}, ++ {NID_aes_256_cfb128, "aes-256-cfb", EVP_aes_256_cfb128}, + {NID_aes_256_ctr, "aes-256-ctr", EVP_aes_256_ctr}, + {NID_aes_256_ecb, "aes-256-ecb", EVP_aes_256_ecb}, + {NID_aes_256_gcm, "aes-256-gcm", EVP_aes_256_gcm}, diff --git a/decrepit/evp/evp_do_all.c b/decrepit/evp/evp_do_all.c index 852b76bea69988e0b3ac76a17b603128f239dde0..d443f4dc2daea0b7aa86ae75d31d995fae667ba9 100644 --- a/decrepit/evp/evp_do_all.c @@ -57,10 +58,10 @@ index 852b76bea69988e0b3ac76a17b603128f239dde0..d443f4dc2daea0b7aa86ae75d31d995f callback(EVP_aes_192_ctr(), "aes-192-ctr", NULL, arg); callback(EVP_aes_256_ctr(), "aes-256-ctr", NULL, arg); diff --git a/include/openssl/cipher.h b/include/openssl/cipher.h -index badd496293fb9748adacff10478ea702d1155c5f..8565934bac9a810281b04946cb9f38d7623320f7 100644 +index 09d72ec2c343f23409d35eca804a02e3290c86f1..1bea1a88b265312d700729ad2828f0b5d9f2d84f 100644 --- a/include/openssl/cipher.h +++ b/include/openssl/cipher.h -@@ -430,6 +430,7 @@ OPENSSL_EXPORT const EVP_CIPHER *EVP_des_ede3_ecb(void); +@@ -436,6 +436,7 @@ OPENSSL_EXPORT const EVP_CIPHER *EVP_des_ede3_ecb(void); // EVP_aes_128_cfb128 is only available in decrepit. OPENSSL_EXPORT const EVP_CIPHER *EVP_aes_128_cfb128(void); diff --git a/patches/boringssl/expose_des-ede3.patch b/patches/boringssl/expose_des-ede3.patch index 45177d0b62..f39665f422 100644 --- a/patches/boringssl/expose_des-ede3.patch +++ b/patches/boringssl/expose_des-ede3.patch @@ -6,18 +6,17 @@ Subject: expose des-ede3 This should be upstreamed. diff --git a/crypto/cipher_extra/cipher_extra.c b/crypto/cipher_extra/cipher_extra.c -index 5ede89f9f0761d1da1baa899e9a02b77ffcffe93..8205e121c152fe4e2d8df34a1ac2fe0498381f31 100644 +index 0c30b0329d32b94b22f342f95035e927797d0aaf..d97f67fb03756169446edf6b41d3a33fe3ae8205 100644 --- a/crypto/cipher_extra/cipher_extra.c +++ b/crypto/cipher_extra/cipher_extra.c -@@ -97,6 +97,8 @@ const EVP_CIPHER *EVP_get_cipherbyname(const char *name) { - return EVP_rc4(); - } else if (OPENSSL_strcasecmp(name, "des-cbc") == 0) { - return EVP_des_cbc(); -+ } else if (OPENSSL_strcasecmp(name, "des-ede3") == 0) { -+ return EVP_des_ede3(); - } else if (OPENSSL_strcasecmp(name, "des-ede3-cbc") == 0 || - // This is not a name used by OpenSSL, but tcpdump registers it - // with |EVP_add_cipher_alias|. Our |EVP_add_cipher_alias| is a +@@ -93,6 +93,7 @@ static const struct { + {NID_des_ecb, "des-ecb", EVP_des_ecb}, + {NID_des_ede_cbc, "des-ede-cbc", EVP_des_ede_cbc}, + {NID_des_ede_ecb, "des-ede", EVP_des_ede}, ++ {NID_des_ede3_ecb, "des-ede3", EVP_des_ede3}, + {NID_des_ede3_cbc, "des-ede3-cbc", EVP_des_ede3_cbc}, + {NID_rc2_cbc, "rc2-cbc", EVP_rc2_cbc}, + {NID_rc4, "rc4", EVP_rc4}, diff --git a/decrepit/evp/evp_do_all.c b/decrepit/evp/evp_do_all.c index d443f4dc2daea0b7aa86ae75d31d995fae667ba9..5e71420b765019edea82a33884ace539cd91bda5 100644 --- a/decrepit/evp/evp_do_all.c diff --git a/patches/boringssl/fix_sync_evp_get_cipherbynid_and_evp_get_cipherbyname.patch b/patches/boringssl/fix_sync_evp_get_cipherbynid_and_evp_get_cipherbyname.patch index e29cf81569..e739ae8f70 100644 --- a/patches/boringssl/fix_sync_evp_get_cipherbynid_and_evp_get_cipherbyname.patch +++ b/patches/boringssl/fix_sync_evp_get_cipherbynid_and_evp_get_cipherbyname.patch @@ -12,71 +12,14 @@ and should also hold in BoringSSL. This will be upstreamed. diff --git a/crypto/cipher_extra/cipher_extra.c b/crypto/cipher_extra/cipher_extra.c -index 8205e121c152fe4e2d8df34a1ac2fe0498381f31..0870ffe6bff3f647907d7df66d7bf74916be1836 100644 +index d97f67fb03756169446edf6b41d3a33fe3ae8205..cfdb69e3c556fea11aa7c2d28d4b7da524df15c3 100644 --- a/crypto/cipher_extra/cipher_extra.c +++ b/crypto/cipher_extra/cipher_extra.c -@@ -69,20 +69,58 @@ +@@ -97,6 +97,7 @@ static const struct { + {NID_des_ede3_cbc, "des-ede3-cbc", EVP_des_ede3_cbc}, + {NID_rc2_cbc, "rc2-cbc", EVP_rc2_cbc}, + {NID_rc4, "rc4", EVP_rc4}, ++ {NID_rc2_40_cbc, "rc2-40-cbc", EVP_rc2_40_cbc} + }; const EVP_CIPHER *EVP_get_cipherbynid(int nid) { - switch (nid) { -- case NID_rc2_cbc: -- return EVP_rc2_cbc(); -- case NID_rc2_40_cbc: -- return EVP_rc2_40_cbc(); -+ case NID_rc4: -+ return EVP_rc4(); -+ case NID_des_cbc: -+ return EVP_des_cbc(); -+ case NID_des_ede3_ecb: -+ return EVP_des_ede3(); - case NID_des_ede3_cbc: - return EVP_des_ede3_cbc(); -- case NID_des_ede_cbc: -- return EVP_des_cbc(); - case NID_aes_128_cbc: - return EVP_aes_128_cbc(); -+ case NID_aes_128_cfb128: -+ return EVP_aes_128_cfb128(); - case NID_aes_192_cbc: - return EVP_aes_192_cbc(); - case NID_aes_256_cbc: - return EVP_aes_256_cbc(); -+ case NID_aes_256_cfb128: -+ return EVP_aes_256_cfb128(); -+ case NID_aes_128_ctr: -+ return EVP_aes_128_ctr(); -+ case NID_aes_192_ctr: -+ return EVP_aes_192_ctr(); -+ case NID_aes_256_ctr: -+ return EVP_aes_256_ctr(); -+ case NID_aes_128_ecb: -+ return EVP_aes_128_ecb(); -+ case NID_aes_192_ecb: -+ return EVP_aes_192_ecb(); -+ case NID_aes_256_ecb: -+ return EVP_aes_256_ecb(); -+ case NID_aes_128_gcm: -+ return EVP_aes_128_gcm(); -+ case NID_aes_192_gcm: -+ return EVP_aes_192_gcm(); -+ case NID_aes_256_gcm: -+ return EVP_aes_256_gcm(); -+ case NID_aes_128_ofb128: -+ return EVP_aes_128_ofb(); -+ case NID_aes_192_ofb128: -+ return EVP_aes_192_ofb(); -+ case NID_aes_256_ofb128: -+ return EVP_aes_256_ofb(); -+ case NID_des_ecb: -+ return EVP_des_ecb(); -+ case NID_des_ede_ecb: -+ return EVP_des_ede(); -+ case NID_des_ede_cbc: -+ return EVP_des_ede_cbc(); -+ case NID_rc2_cbc: -+ return EVP_rc2_cbc(); -+ case NID_rc2_40_cbc: -+ return EVP_rc2_40_cbc(); - default: - return NULL; - } diff --git a/patches/chromium/.patches b/patches/chromium/.patches index 1cf7984e83..562d477b5d 100644 --- a/patches/chromium/.patches +++ b/patches/chromium/.patches @@ -108,3 +108,4 @@ process_singleton.patch fix_expose_decrementcapturercount_in_web_contents_impl.patch feat_add_data_parameter_to_processsingleton.patch mas_gate_private_enterprise_APIs +load_v8_snapshot_in_browser_process.patch diff --git a/patches/chromium/add_contentgpuclient_precreatemessageloop_callback.patch b/patches/chromium/add_contentgpuclient_precreatemessageloop_callback.patch index 18eeb4ac0e..dbd0805a52 100644 --- a/patches/chromium/add_contentgpuclient_precreatemessageloop_callback.patch +++ b/patches/chromium/add_contentgpuclient_precreatemessageloop_callback.patch @@ -10,10 +10,10 @@ Allows Electron to restore WER when ELECTRON_DEFAULT_ERROR_MODE is set. This should be upstreamed. diff --git a/content/gpu/gpu_main.cc b/content/gpu/gpu_main.cc -index d5bb3412094125492ecf9b5d2c34ce5df16a7c6f..cce3fb48264b0585fa4672d6249c11510e4e5d9d 100644 +index 51b004f5e459eb265627c01e9e38acd655a65481..7140d92416709c467ae9b65860ac32947913989d 100644 --- a/content/gpu/gpu_main.cc +++ b/content/gpu/gpu_main.cc -@@ -237,6 +237,10 @@ int GpuMain(const MainFunctionParams& parameters) { +@@ -239,6 +239,10 @@ int GpuMain(const MainFunctionParams& parameters) { // to the GpuProcessHost once the GpuServiceImpl has started. viz::GpuServiceImpl::InstallPreInitializeLogHandler(); @@ -24,7 +24,7 @@ index d5bb3412094125492ecf9b5d2c34ce5df16a7c6f..cce3fb48264b0585fa4672d6249c1151 // We are experiencing what appear to be memory-stomp issues in the GPU // process. These issues seem to be impacting the task executor and listeners // registered to it. Create the task executor on the heap to guard against -@@ -374,7 +378,6 @@ int GpuMain(const MainFunctionParams& parameters) { +@@ -376,7 +380,6 @@ int GpuMain(const MainFunctionParams& parameters) { } #endif diff --git a/patches/chromium/add_didinstallconditionalfeatures.patch b/patches/chromium/add_didinstallconditionalfeatures.patch index 8a9819adb6..f4fe781fda 100644 --- a/patches/chromium/add_didinstallconditionalfeatures.patch +++ b/patches/chromium/add_didinstallconditionalfeatures.patch @@ -10,10 +10,10 @@ DidCreateScriptContext is called, not all JS APIs are available in the context, which can cause some preload scripts to trip. diff --git a/content/public/renderer/render_frame_observer.h b/content/public/renderer/render_frame_observer.h -index 808bbcb0a13bbf069b2354bf39aabcd6d316d514..20e4cbe56bdb8dca3883778b16b9c127aca34793 100644 +index 94fbf201b82ac000ceac21685f09f68497be1350..70766b01824e63c45e5c035848e5814876956c77 100644 --- a/content/public/renderer/render_frame_observer.h +++ b/content/public/renderer/render_frame_observer.h -@@ -127,6 +127,8 @@ class CONTENT_EXPORT RenderFrameObserver : public IPC::Listener, +@@ -128,6 +128,8 @@ class CONTENT_EXPORT RenderFrameObserver : public IPC::Listener, virtual void DidHandleOnloadEvents() {} virtual void DidCreateScriptContext(v8::Local context, int32_t world_id) {} @@ -23,10 +23,10 @@ index 808bbcb0a13bbf069b2354bf39aabcd6d316d514..20e4cbe56bdb8dca3883778b16b9c127 int32_t world_id) {} virtual void DidClearWindowObject() {} diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc -index 4560b2e363e7392467ff623691d3bd0302b5a502..ebf2d997f03c36e5242405002c7dce583aec31dc 100644 +index 78ec20c40e5dbf7f706b57d9b810b4149510defc..900b8125f3fc6dcec4a1637fae6fcb2af40af5ab 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc -@@ -4460,6 +4460,12 @@ void RenderFrameImpl::DidCreateScriptContext(v8::Local context, +@@ -4442,6 +4442,12 @@ void RenderFrameImpl::DidCreateScriptContext(v8::Local context, observer.DidCreateScriptContext(context, world_id); } @@ -40,10 +40,10 @@ index 4560b2e363e7392467ff623691d3bd0302b5a502..ebf2d997f03c36e5242405002c7dce58 int world_id) { for (auto& observer : observers_) diff --git a/content/renderer/render_frame_impl.h b/content/renderer/render_frame_impl.h -index 100e382cc73c1f107cd1b7e618b93e009a1f6c65..afebce99ebbcb28aff27d2d7044bb080ce9fd40e 100644 +index 5f89641216bc467ea52619b1732c13174a16c723..061fc0c4a265335faccbf81594504eafabae77f8 100644 --- a/content/renderer/render_frame_impl.h +++ b/content/renderer/render_frame_impl.h -@@ -594,6 +594,8 @@ class CONTENT_EXPORT RenderFrameImpl +@@ -601,6 +601,8 @@ class CONTENT_EXPORT RenderFrameImpl blink::WebLocalFrameClient::LazyLoadBehavior lazy_load_behavior) override; void DidCreateScriptContext(v8::Local context, int world_id) override; @@ -53,10 +53,10 @@ index 100e382cc73c1f107cd1b7e618b93e009a1f6c65..afebce99ebbcb28aff27d2d7044bb080 int world_id) override; void DidChangeScrollOffset() override; diff --git a/third_party/blink/public/web/web_local_frame_client.h b/third_party/blink/public/web/web_local_frame_client.h -index 0ccf54bd50144bc890c96651978f54b0d33713b6..de26aa9f319bd0c762b96f729ccf25a72dd90eb3 100644 +index 994841c02b0472e5239d9b73a07b2592a39df8be..ad19a3cddf200f6600a04c1136fd21218d496ba8 100644 --- a/third_party/blink/public/web/web_local_frame_client.h +++ b/third_party/blink/public/web/web_local_frame_client.h -@@ -589,6 +589,9 @@ class BLINK_EXPORT WebLocalFrameClient { +@@ -596,6 +596,9 @@ class BLINK_EXPORT WebLocalFrameClient { virtual void DidCreateScriptContext(v8::Local, int32_t world_id) {} @@ -79,10 +79,10 @@ index b0d5db60fbe57275dda835113b0fb21acb9a422f..b6c9c389943088004a419677a2a17be0 if (World().IsMainWorld()) { GetFrame()->Loader().DispatchDidClearWindowObjectInMainWorld(); diff --git a/third_party/blink/renderer/core/frame/local_frame_client.h b/third_party/blink/renderer/core/frame/local_frame_client.h -index 727b770b33f209288904cc10f486ab25f82b4cd6..b25c945378a01ac918ff6dc6caf69effde3685e6 100644 +index 19a1ef792848026cb6a125124acd9e798e077e35..bb8220819750a6499568b64b49ca7710035d6092 100644 --- a/third_party/blink/renderer/core/frame/local_frame_client.h +++ b/third_party/blink/renderer/core/frame/local_frame_client.h -@@ -303,6 +303,8 @@ class CORE_EXPORT LocalFrameClient : public FrameClient { +@@ -310,6 +310,8 @@ class CORE_EXPORT LocalFrameClient : public FrameClient { virtual void DidCreateScriptContext(v8::Local, int32_t world_id) = 0; @@ -92,7 +92,7 @@ index 727b770b33f209288904cc10f486ab25f82b4cd6..b25c945378a01ac918ff6dc6caf69eff int32_t world_id) = 0; virtual bool AllowScriptExtensions() = 0; diff --git a/third_party/blink/renderer/core/frame/local_frame_client_impl.cc b/third_party/blink/renderer/core/frame/local_frame_client_impl.cc -index ba855e42e395f1ba1838400f08827a5bdc19d90f..c74031e118ffb7ff6312c33f99a6ff9d67b5bf19 100644 +index 4b1bfb735082513071181f30e8e8af1b699847b1..21f6a54f0255df0d88894860da83b1459c3a378f 100644 --- a/third_party/blink/renderer/core/frame/local_frame_client_impl.cc +++ b/third_party/blink/renderer/core/frame/local_frame_client_impl.cc @@ -273,6 +273,13 @@ void LocalFrameClientImpl::DidCreateScriptContext( @@ -110,10 +110,10 @@ index ba855e42e395f1ba1838400f08827a5bdc19d90f..c74031e118ffb7ff6312c33f99a6ff9d v8::Local context, int32_t world_id) { diff --git a/third_party/blink/renderer/core/frame/local_frame_client_impl.h b/third_party/blink/renderer/core/frame/local_frame_client_impl.h -index 57c9b6b733ebf5b9483d31959fbdccad8b72031c..13c7e6924a19717473379045ae1c1f0e6f6d52cf 100644 +index 45d493d7a9846c7f4ad567cec6d5fac4aadf9be3..23759d417d81d5bb6c920c94bacd66c303804319 100644 --- a/third_party/blink/renderer/core/frame/local_frame_client_impl.h +++ b/third_party/blink/renderer/core/frame/local_frame_client_impl.h -@@ -77,6 +77,8 @@ class CORE_EXPORT LocalFrameClientImpl final : public LocalFrameClient { +@@ -78,6 +78,8 @@ class CORE_EXPORT LocalFrameClientImpl final : public LocalFrameClient { void DidCreateScriptContext(v8::Local, int32_t world_id) override; diff --git a/patches/chromium/add_setter_for_browsermainloop_result_code.patch b/patches/chromium/add_setter_for_browsermainloop_result_code.patch index 5b9d2377c4..8cf7569b8c 100644 --- a/patches/chromium/add_setter_for_browsermainloop_result_code.patch +++ b/patches/chromium/add_setter_for_browsermainloop_result_code.patch @@ -10,10 +10,10 @@ valid use cases for setting custom exit codes of the main loop. This exposes a simple setter that embedders can call. diff --git a/content/browser/browser_main_loop.h b/content/browser/browser_main_loop.h -index 5d41104a616c53d93ff8eb68ce2f87b1c2be7025..21223accc340242d2e0e301e92d7dafd01023e23 100644 +index 2c13914c1fbf8b81b6b0dc5d059d48525ac9f059..1c6179a00f404cc8d19e47b2e1bb635a6893e751 100644 --- a/content/browser/browser_main_loop.h +++ b/content/browser/browser_main_loop.h -@@ -161,6 +161,10 @@ class CONTENT_EXPORT BrowserMainLoop { +@@ -165,6 +165,10 @@ class CONTENT_EXPORT BrowserMainLoop { int GetResultCode() const { return result_code_; } diff --git a/patches/chromium/allow_disabling_blink_scheduler_throttling_per_renderview.patch b/patches/chromium/allow_disabling_blink_scheduler_throttling_per_renderview.patch index 60938580d7..fc9cfe5c1e 100644 --- a/patches/chromium/allow_disabling_blink_scheduler_throttling_per_renderview.patch +++ b/patches/chromium/allow_disabling_blink_scheduler_throttling_per_renderview.patch @@ -6,10 +6,10 @@ Subject: allow disabling blink scheduler throttling per RenderView This allows us to disable throttling for hidden windows. diff --git a/content/browser/renderer_host/render_view_host_impl.cc b/content/browser/renderer_host/render_view_host_impl.cc -index af75828e89e8cb1cca20c8acd64c9f864c0ffab7..182a6ebdf1ccad6b6ef7a2d45791bc0f5dc456f2 100644 +index 21cbb423d083a985b288c0b040cdd8ae7df56222..ca83e01e82bd55b2c7aaee2361493776b458ebac 100644 --- a/content/browser/renderer_host/render_view_host_impl.cc +++ b/content/browser/renderer_host/render_view_host_impl.cc -@@ -627,6 +627,11 @@ void RenderViewHostImpl::SetBackgroundOpaque(bool opaque) { +@@ -630,6 +630,11 @@ void RenderViewHostImpl::SetBackgroundOpaque(bool opaque) { GetWidget()->GetAssociatedFrameWidget()->SetBackgroundOpaque(opaque); } @@ -22,7 +22,7 @@ index af75828e89e8cb1cca20c8acd64c9f864c0ffab7..182a6ebdf1ccad6b6ef7a2d45791bc0f return is_active(); } diff --git a/content/browser/renderer_host/render_view_host_impl.h b/content/browser/renderer_host/render_view_host_impl.h -index b51bd8160bf63a75066d23514b727eb365a3918c..48413119621f6b118b80d681f777e74af8dc8ab7 100644 +index 9760b7657584b81558a7dbba03258baaee2471fd..53cf6282bfe5a1f1b98a001e1aa82eb45fcb2252 100644 --- a/content/browser/renderer_host/render_view_host_impl.h +++ b/content/browser/renderer_host/render_view_host_impl.h @@ -135,6 +135,7 @@ class CONTENT_EXPORT RenderViewHostImpl @@ -85,7 +85,7 @@ index f54b993e9fb9fedcedef327290c2e5d706c699a7..73874e124e2810f07b72fc094f57c85c // Visibility ----------------------------------------------------------- diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc -index 7995eb16a7cf6a824653736ca067baa5e688834f..c26e087f2f4d7a1446ce439e5a08a34aa2ccfec4 100644 +index 44474a8e56c5f1751e395f375cedb39656f6d5a8..baf07861d4be89485605f87d344fcffdd220a063 100644 --- a/third_party/blink/renderer/core/exported/web_view_impl.cc +++ b/third_party/blink/renderer/core/exported/web_view_impl.cc @@ -3630,6 +3630,13 @@ PageScheduler* WebViewImpl::Scheduler() const { diff --git a/patches/chromium/allow_in-process_windows_to_have_different_web_prefs.patch b/patches/chromium/allow_in-process_windows_to_have_different_web_prefs.patch index 7b0934d582..421ed319fa 100644 --- a/patches/chromium/allow_in-process_windows_to_have_different_web_prefs.patch +++ b/patches/chromium/allow_in-process_windows_to_have_different_web_prefs.patch @@ -8,10 +8,10 @@ WebPreferences of in-process child windows, rather than relying on process-level command line switches, as before. diff --git a/third_party/blink/common/web_preferences/web_preferences.cc b/third_party/blink/common/web_preferences/web_preferences.cc -index 8a1315f7f89588bb21c6d3c21a7de7c07fed9679..c23443c7816e38836b2f4233ca3a742693888f39 100644 +index 8eb1bca3638678041a8ed739cfe3907406455ac2..0d05d32420590a1a589f23aa468086f142cbb45f 100644 --- a/third_party/blink/common/web_preferences/web_preferences.cc +++ b/third_party/blink/common/web_preferences/web_preferences.cc -@@ -148,6 +148,22 @@ WebPreferences::WebPreferences() +@@ -145,6 +145,22 @@ WebPreferences::WebPreferences() fake_no_alloc_direct_call_for_testing_enabled(false), v8_cache_options(blink::mojom::V8CacheOptions::kDefault), record_whole_document(false), diff --git a/patches/chromium/allow_setting_secondary_label_via_simplemenumodel.patch b/patches/chromium/allow_setting_secondary_label_via_simplemenumodel.patch index 6334459358..07792a8a3f 100644 --- a/patches/chromium/allow_setting_secondary_label_via_simplemenumodel.patch +++ b/patches/chromium/allow_setting_secondary_label_via_simplemenumodel.patch @@ -47,7 +47,7 @@ index 1bfe8fb90673a0d0f9f9228a43eafc3b01b00c5f..1484fc4e477b97b6deb8e23b8a749264 return items_[ValidateItemIndex(index)].minor_text; } diff --git a/ui/base/models/simple_menu_model.h b/ui/base/models/simple_menu_model.h -index 529be99f6c5aa64c79745ecf83601ea11fe47c1c..ae9c78a65a5e32de90ae190b7ff170c6de82d84d 100644 +index 60a5e6490d5153772c28551a160ac7c95a744279..e04f0e4d6f9d54cb6b50346ddcbbd16f73135db6 100644 --- a/ui/base/models/simple_menu_model.h +++ b/ui/base/models/simple_menu_model.h @@ -50,6 +50,7 @@ class COMPONENT_EXPORT(UI_BASE) SimpleMenuModel : public MenuModel { @@ -58,7 +58,7 @@ index 529be99f6c5aa64c79745ecf83601ea11fe47c1c..ae9c78a65a5e32de90ae190b7ff170c6 // Gets the icon for the item with the specified id. virtual ImageModel GetIconForCommandId(int command_id) const; -@@ -157,6 +158,9 @@ class COMPONENT_EXPORT(UI_BASE) SimpleMenuModel : public MenuModel { +@@ -161,6 +162,9 @@ class COMPONENT_EXPORT(UI_BASE) SimpleMenuModel : public MenuModel { // Sets the label for the item at |index|. void SetLabel(int index, const std::u16string& label); @@ -68,7 +68,7 @@ index 529be99f6c5aa64c79745ecf83601ea11fe47c1c..ae9c78a65a5e32de90ae190b7ff170c6 // Sets the minor text for the item at |index|. void SetMinorText(int index, const std::u16string& minor_text); -@@ -196,6 +200,7 @@ class COMPONENT_EXPORT(UI_BASE) SimpleMenuModel : public MenuModel { +@@ -200,6 +204,7 @@ class COMPONENT_EXPORT(UI_BASE) SimpleMenuModel : public MenuModel { ui::MenuSeparatorType GetSeparatorTypeAt(int index) const override; int GetCommandIdAt(int index) const override; std::u16string GetLabelAt(int index) const override; @@ -76,7 +76,7 @@ index 529be99f6c5aa64c79745ecf83601ea11fe47c1c..ae9c78a65a5e32de90ae190b7ff170c6 std::u16string GetMinorTextAt(int index) const override; ImageModel GetMinorIconAt(int index) const override; bool IsItemDynamicAt(int index) const override; -@@ -235,6 +240,7 @@ class COMPONENT_EXPORT(UI_BASE) SimpleMenuModel : public MenuModel { +@@ -239,6 +244,7 @@ class COMPONENT_EXPORT(UI_BASE) SimpleMenuModel : public MenuModel { int command_id = 0; ItemType type = TYPE_COMMAND; std::u16string label; diff --git a/patches/chromium/blink_local_frame.patch b/patches/chromium/blink_local_frame.patch index 31966220a1..56b61e9ef3 100644 --- a/patches/chromium/blink_local_frame.patch +++ b/patches/chromium/blink_local_frame.patch @@ -15,10 +15,10 @@ Refs changes in: This patch reverts the changes to fix associated crashes in Electron. diff --git a/third_party/blink/renderer/core/frame/frame.cc b/third_party/blink/renderer/core/frame/frame.cc -index 8bf6b4bc077cc41da5e0e6b13302bc343537c68f..01bddc0bcb7476408023c4cfc042a0883c16430c 100644 +index 58622d645f657dbb08489a5202df3dfe6c7a85ce..af2ad009f9f14fad2d18b39198b100ee0dafa556 100644 --- a/third_party/blink/renderer/core/frame/frame.cc +++ b/third_party/blink/renderer/core/frame/frame.cc -@@ -120,14 +120,6 @@ bool Frame::Detach(FrameDetachType type) { +@@ -122,14 +122,6 @@ bool Frame::Detach(FrameDetachType type) { DCHECK(!IsDetached()); @@ -33,7 +33,7 @@ index 8bf6b4bc077cc41da5e0e6b13302bc343537c68f..01bddc0bcb7476408023c4cfc042a088 if (type == FrameDetachType::kRemove) { if (provisional_frame_) { provisional_frame_->Detach(FrameDetachType::kRemove); -@@ -150,6 +142,14 @@ bool Frame::Detach(FrameDetachType type) { +@@ -152,6 +144,14 @@ bool Frame::Detach(FrameDetachType type) { GetWindowProxyManager()->ClearForSwap(); } @@ -49,10 +49,10 @@ index 8bf6b4bc077cc41da5e0e6b13302bc343537c68f..01bddc0bcb7476408023c4cfc042a088 // its owning reference back to our owning LocalFrame. client_->Detached(type); diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc -index be646cf80c0d3490979e3500821c5fc4351af2a7..dca161475f9e0cd86db8675faec3d375d94c490f 100644 +index cc3b5af94302c43f1eca0bcb3b765befcea7d300..c6507f83c1d11f09967a6186e895bc86c6f01a61 100644 --- a/third_party/blink/renderer/core/frame/local_frame.cc +++ b/third_party/blink/renderer/core/frame/local_frame.cc -@@ -553,10 +553,6 @@ bool LocalFrame::DetachImpl(FrameDetachType type) { +@@ -578,10 +578,6 @@ bool LocalFrame::DetachImpl(FrameDetachType type) { } DCHECK(!view_ || !view_->IsAttached()); @@ -63,7 +63,7 @@ index be646cf80c0d3490979e3500821c5fc4351af2a7..dca161475f9e0cd86db8675faec3d375 if (!Client()) return false; -@@ -603,6 +599,11 @@ bool LocalFrame::DetachImpl(FrameDetachType type) { +@@ -628,6 +624,11 @@ bool LocalFrame::DetachImpl(FrameDetachType type) { DCHECK(!view_->IsAttached()); Client()->WillBeDetached(); diff --git a/patches/chromium/breakpad_allow_getting_string_values_for_crash_keys.patch b/patches/chromium/breakpad_allow_getting_string_values_for_crash_keys.patch index 894595345b..55fd6d998a 100644 --- a/patches/chromium/breakpad_allow_getting_string_values_for_crash_keys.patch +++ b/patches/chromium/breakpad_allow_getting_string_values_for_crash_keys.patch @@ -13,10 +13,10 @@ on linux. If removing this patch doesn't cause a compile failure, it's fine to delete! diff --git a/components/crash/core/common/crash_key.h b/components/crash/core/common/crash_key.h -index 9d193ea962e919d4509eef296c900e47059761f4..225b8ce822a42d31d59bc89aab473710384c3010 100644 +index e3509027cab01f74d92b339f7b880d3f42aabe64..bf1d6a5691c292d0814ceb80eee01d847d8db87c 100644 --- a/components/crash/core/common/crash_key.h +++ b/components/crash/core/common/crash_key.h -@@ -212,6 +212,10 @@ class CrashKeyStringCombined : public internal::CrashKeyStringCombinedImpl { +@@ -219,6 +219,10 @@ class CrashKeyStringCombined : public internal::CrashKeyStringCombinedImpl { crashpad_key_.Set(value); } diff --git a/patches/chromium/breakpad_treat_node_processes_as_browser_processes.patch b/patches/chromium/breakpad_treat_node_processes_as_browser_processes.patch index 5eafe595b9..35e2a14133 100644 --- a/patches/chromium/breakpad_treat_node_processes_as_browser_processes.patch +++ b/patches/chromium/breakpad_treat_node_processes_as_browser_processes.patch @@ -10,10 +10,10 @@ breakpad independently, as a "browser" process. This patches crash annotation. diff --git a/components/crash/core/app/breakpad_linux.cc b/components/crash/core/app/breakpad_linux.cc -index 5eb19c8a47467d8df30316bfbd7f3c2f38aea7c0..094244b198745e6fbbfb8d72e7bc2e0ceb4db88c 100644 +index b1392d74ca4ff08f6e293a72d1d453baa5f91cbc..003702f4f0b1ddab26dee9a6154297fc0204b716 100644 --- a/components/crash/core/app/breakpad_linux.cc +++ b/components/crash/core/app/breakpad_linux.cc -@@ -717,8 +717,13 @@ bool CrashDone(const MinidumpDescriptor& minidump, +@@ -718,8 +718,13 @@ bool CrashDone(const MinidumpDescriptor& minidump, log_path[log_path_len] = '\0'; info.log_filename = log_path; #endif @@ -29,7 +29,7 @@ index 5eb19c8a47467d8df30316bfbd7f3c2f38aea7c0..094244b198745e6fbbfb8d72e7bc2e0c info.distro = base::g_linux_distro; info.distro_length = my_strlen(base::g_linux_distro); info.upload = upload; -@@ -2024,8 +2029,13 @@ void InitCrashReporter(const std::string& process_type) { +@@ -2026,8 +2031,13 @@ void InitCrashReporter(const std::string& process_type) { process_type == kWebViewSingleProcessType || process_type == kBrowserProcessType || #endif diff --git a/patches/chromium/build_add_electron_tracing_category.patch b/patches/chromium/build_add_electron_tracing_category.patch index e3f02f3360..6447bea0cd 100644 --- a/patches/chromium/build_add_electron_tracing_category.patch +++ b/patches/chromium/build_add_electron_tracing_category.patch @@ -8,7 +8,7 @@ categories in use are known / declared. This patch is required for us to introduce a new Electron category for Electron-specific tracing. diff --git a/base/trace_event/builtin_categories.h b/base/trace_event/builtin_categories.h -index 702ac1a5464635acb1064ca31f7ef211cc0b4a66..6adcf56ca83237d93cd289744b4eb29d7f9e39d6 100644 +index 60bba6a85d393ddb19e954503c663b06244ad160..ca5169408a8daed7c798a0354a1cd9a6df217ce0 100644 --- a/base/trace_event/builtin_categories.h +++ b/base/trace_event/builtin_categories.h @@ -77,6 +77,7 @@ diff --git a/patches/chromium/build_do_not_depend_on_packed_resource_integrity.patch b/patches/chromium/build_do_not_depend_on_packed_resource_integrity.patch index b0cec519ee..81176e8876 100644 --- a/patches/chromium/build_do_not_depend_on_packed_resource_integrity.patch +++ b/patches/chromium/build_do_not_depend_on_packed_resource_integrity.patch @@ -11,10 +11,10 @@ if we ever align our .pak file generation with Chrome we can remove this patch. diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn -index abab9c8e8c60a6d1690acca5133b3c54d0ccc793..f4378acd7c92193c6e6ac2785cd8a670bd9c650c 100644 +index 5a35396df314ab547990a53c90ebb75d337bcc77..537d746e8828089e88a8d42e86d482ee00b46e6b 100644 --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn -@@ -165,11 +165,16 @@ if (!is_android && !is_mac) { +@@ -171,11 +171,16 @@ if (!is_android && !is_mac) { "common/crash_keys.h", ] @@ -33,10 +33,10 @@ index abab9c8e8c60a6d1690acca5133b3c54d0ccc793..f4378acd7c92193c6e6ac2785cd8a670 "//base", "//build:branding_buildflags", diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn -index 27f4f83da31dbd3a1e754279e760dddf00224e1b..5cdcad53c32d7f25fe041344cb7441bdd6c524a5 100644 +index 37e8fdf8adb078c07e561b5e8cef4051ae4cc75f..ee501be37ff597fee5e060c4bebdf0bd6d3e1ae6 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -4415,7 +4415,7 @@ static_library("browser") { +@@ -4471,7 +4471,7 @@ static_library("browser") { # On Windows, the hashes are embedded in //chrome:chrome_initial rather # than here in :chrome_dll. @@ -46,10 +46,10 @@ index 27f4f83da31dbd3a1e754279e760dddf00224e1b..5cdcad53c32d7f25fe041344cb7441bd } diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn -index a7e09cea9b71e810e08790d109e805a8119c0825..52f9f2b0d4e3ee7d3221f04f122f41e1429f6016 100644 +index 335c7d208a563870058d6c260f50c12d80d8d66f..4573f9298c9e32a6805b425e12d60823cf020527 100644 --- a/chrome/test/BUILD.gn +++ b/chrome/test/BUILD.gn -@@ -5482,7 +5482,6 @@ test("unit_tests") { +@@ -5494,7 +5494,6 @@ test("unit_tests") { assert(toolkit_views) sources += [ "../browser/ui/startup/credential_provider_signin_info_fetcher_win_unittest.cc" ] deps += [ @@ -57,7 +57,7 @@ index a7e09cea9b71e810e08790d109e805a8119c0825..52f9f2b0d4e3ee7d3221f04f122f41e1 "//chrome/browser:chrome_process_finder", "//chrome/browser/safe_browsing/chrome_cleaner", "//chrome/browser/safe_browsing/chrome_cleaner:public", -@@ -5495,6 +5494,12 @@ test("unit_tests") { +@@ -5507,6 +5506,12 @@ test("unit_tests") { "//components/chrome_cleaner/public/proto", "//ui/events/devices:test_support", ] @@ -70,15 +70,15 @@ index a7e09cea9b71e810e08790d109e805a8119c0825..52f9f2b0d4e3ee7d3221f04f122f41e1 } # TODO(crbug.com/931218): Ninja cannot handle certain characters appearing -@@ -6088,7 +6093,6 @@ test("unit_tests") { +@@ -6104,7 +6109,6 @@ test("unit_tests") { } deps += [ - "//chrome:packed_resources_integrity_hash", "//chrome/browser:cart_db_content_proto", + "//chrome/browser:coupon_db_content_proto", "//chrome/browser/media/router:test_support", - "//chrome/browser/resource_coordinator:intervention_policy_database_proto", -@@ -6124,6 +6128,9 @@ test("unit_tests") { +@@ -6144,6 +6148,9 @@ test("unit_tests") { "//ui/native_theme:test_support", "//ui/webui/resources/js/browser_command:mojo_bindings", ] diff --git a/patches/chromium/build_libc_as_static_library.patch b/patches/chromium/build_libc_as_static_library.patch index fb4e329a19..e163760fe3 100644 --- a/patches/chromium/build_libc_as_static_library.patch +++ b/patches/chromium/build_libc_as_static_library.patch @@ -32,7 +32,7 @@ index 01d122aa78f15e0c94b1ee8ae54e08dace0aca0d..5ed9952afd4f4331c98ad41b7d799367 ] if (is_linux && !is_chromeos) { diff --git a/buildtools/third_party/libc++abi/BUILD.gn b/buildtools/third_party/libc++abi/BUILD.gn -index 8b1da01ce87ff6db8e67938d4c083312cfa3101f..1668eba70db1933a434709c0140fe125991249b3 100644 +index b70deeb9c8ff34f31cbe3b3c33802605af62f726..4879f27427b53065ad44f46423c1f4cd164358d0 100644 --- a/buildtools/third_party/libc++abi/BUILD.gn +++ b/buildtools/third_party/libc++abi/BUILD.gn @@ -4,7 +4,7 @@ diff --git a/patches/chromium/can_create_window.patch b/patches/chromium/can_create_window.patch index 4c2a3c9173..ad742185d4 100644 --- a/patches/chromium/can_create_window.patch +++ b/patches/chromium/can_create_window.patch @@ -9,10 +9,10 @@ potentially prevent a window from being created. TODO(loc): this patch is currently broken. diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc -index 78eb422f2ac9c56f7a601f2e82a759817be23f82..1a62a9669484980a69d658ca6729e7caf3db96fb 100644 +index 6520b9b7e90aa7a5e007b592294c761ed416e8d8..1c7df171237f441ae13a8b8b0d681d496ee0cc8a 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -6533,6 +6533,7 @@ void RenderFrameHostImpl::CreateNewWindow( +@@ -6497,6 +6497,7 @@ void RenderFrameHostImpl::CreateNewWindow( last_committed_origin_, params->window_container_type, params->target_url, params->referrer.To(), params->frame_name, params->disposition, *params->features, @@ -21,10 +21,10 @@ index 78eb422f2ac9c56f7a601f2e82a759817be23f82..1a62a9669484980a69d658ca6729e7ca &no_javascript_access); diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc -index b9aa5d69242727e1a01df7a0d00d592c58e3815a..5a86229bf1fc52e6cccbf609ed029fe88d35cd8f 100644 +index e7e2e3d3163bbd4ab865ae674f450465f9e84ec3..12ac864159be77519ce6f6dc69941fe1fbdd9c35 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -3734,6 +3734,14 @@ FrameTree* WebContentsImpl::CreateNewWindow( +@@ -3749,6 +3749,14 @@ FrameTree* WebContentsImpl::CreateNewWindow( } auto* new_contents_impl = new_contents.get(); @@ -39,7 +39,7 @@ index b9aa5d69242727e1a01df7a0d00d592c58e3815a..5a86229bf1fc52e6cccbf609ed029fe8 new_contents_impl->GetController().SetSessionStorageNamespace( partition_id, session_storage_namespace); -@@ -3776,12 +3784,6 @@ FrameTree* WebContentsImpl::CreateNewWindow( +@@ -3791,12 +3799,6 @@ FrameTree* WebContentsImpl::CreateNewWindow( AddWebContentsDestructionObserver(new_contents_impl); } @@ -53,10 +53,10 @@ index b9aa5d69242727e1a01df7a0d00d592c58e3815a..5a86229bf1fc52e6cccbf609ed029fe8 new_contents_impl, opener, params.target_url, params.referrer.To(), params.disposition, diff --git a/content/common/frame.mojom b/content/common/frame.mojom -index 74ed9ae0eae10e77dace6905b5108a834b07f8b4..924d6b43d444ccb919d6985c975eb8862ca35b20 100644 +index 268a2395423ebcd1eded3d8ead5f7775cd5895be..c0cad20dc8273576dea2a9f3fe0c67be101a2193 100644 --- a/content/common/frame.mojom +++ b/content/common/frame.mojom -@@ -533,6 +533,10 @@ struct CreateNewWindowParams { +@@ -550,6 +550,10 @@ struct CreateNewWindowParams { // Governs how downloads are handled if `target_url` results in a download. blink.mojom.NavigationDownloadPolicy download_policy; @@ -68,10 +68,10 @@ index 74ed9ae0eae10e77dace6905b5108a834b07f8b4..924d6b43d444ccb919d6985c975eb886 // Operation result when the renderer asks the browser to create a new window. diff --git a/content/public/browser/content_browser_client.cc b/content/public/browser/content_browser_client.cc -index 0cf1f777dc5ffbca606fff558ef6a41e8ed60a99..40bd443cb3c82d9671c4716900a1f19b3c26de69 100644 +index 248a90c7682001296d623eb80e925f03360a5510..bd15404a10db2f4641763da260a84bb76d3739ab 100644 --- a/content/public/browser/content_browser_client.cc +++ b/content/public/browser/content_browser_client.cc -@@ -555,6 +555,8 @@ bool ContentBrowserClient::CanCreateWindow( +@@ -569,6 +569,8 @@ bool ContentBrowserClient::CanCreateWindow( const std::string& frame_name, WindowOpenDisposition disposition, const blink::mojom::WindowFeatures& features, @@ -81,10 +81,10 @@ index 0cf1f777dc5ffbca606fff558ef6a41e8ed60a99..40bd443cb3c82d9671c4716900a1f19b bool opener_suppressed, bool* no_javascript_access) { diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h -index b6dae0082a297a6dbafd63bd56729b77ffb832fc..66ff9593b8f3d62c486ef83c4c682edf73081d88 100644 +index 7dfc30f346a9420be631c466ffa2d8b8adabf556..f0e2a061bb35fd3db26c7d235e1196273036925f 100644 --- a/content/public/browser/content_browser_client.h +++ b/content/public/browser/content_browser_client.h -@@ -167,6 +167,7 @@ class NetworkService; +@@ -168,6 +168,7 @@ class NetworkService; class TrustedURLLoaderHeaderClient; } // namespace mojom struct ResourceRequest; @@ -92,7 +92,7 @@ index b6dae0082a297a6dbafd63bd56729b77ffb832fc..66ff9593b8f3d62c486ef83c4c682edf } // namespace network namespace sandbox { -@@ -922,6 +923,8 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -936,6 +937,8 @@ class CONTENT_EXPORT ContentBrowserClient { const std::string& frame_name, WindowOpenDisposition disposition, const blink::mojom::WindowFeatures& features, @@ -220,10 +220,10 @@ index 84d32491a56528a84b4395fba1d54cdbb38d522b..09998a83c449ef8cd9f360fbcdcf7edc } // namespace blink diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_party/blink/renderer/core/frame/local_dom_window.cc -index 3915f0df47d5a2ae1a5f2909d2aa59192c0cc44b..ada26f26f2ac0fab4a2dc02a5b64c72614c06965 100644 +index 1cab0b95a9f828791188ca6ad3adb416f864e008..f8ec60fae8eabda4019dd9f6903bfcbf00d423ce 100644 --- a/third_party/blink/renderer/core/frame/local_dom_window.cc +++ b/third_party/blink/renderer/core/frame/local_dom_window.cc -@@ -2027,6 +2027,7 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate, +@@ -2030,6 +2030,7 @@ DOMWindow* LocalDOMWindow::open(v8::Isolate* isolate, WebWindowFeatures window_features = GetWindowFeaturesFromString(features, incumbent_window); diff --git a/patches/chromium/chore_expose_v8_initialization_isolate_callbacks.patch b/patches/chromium/chore_expose_v8_initialization_isolate_callbacks.patch index 3e0fa14698..27f4e02d9a 100644 --- a/patches/chromium/chore_expose_v8_initialization_isolate_callbacks.patch +++ b/patches/chromium/chore_expose_v8_initialization_isolate_callbacks.patch @@ -9,7 +9,7 @@ we're running with contextIsolation enabled, we should be falling back to Blink's logic. This will be upstreamed in some form. diff --git a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc -index c98a621a366c21fef73be108c7ac809517ca9815..62cd22b0b42df76c5e527d0ad0b953a460f3aaee 100644 +index 1b86dcca8af204416796134938f2c9a448cca8d7..f6ea363c33a0586d427cae208690d6e3b4259fd5 100644 --- a/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc +++ b/third_party/blink/renderer/bindings/core/v8/v8_initializer.cc @@ -448,7 +448,7 @@ CodeGenerationCheckCallbackInMainThread(v8::Local context, diff --git a/patches/chromium/chore_provide_iswebcontentscreationoverridden_with_full_params.patch b/patches/chromium/chore_provide_iswebcontentscreationoverridden_with_full_params.patch index f5657d311c..4a105e061b 100644 --- a/patches/chromium/chore_provide_iswebcontentscreationoverridden_with_full_params.patch +++ b/patches/chromium/chore_provide_iswebcontentscreationoverridden_with_full_params.patch @@ -35,7 +35,7 @@ index 5b4d70991e19edcdfee731c56251932bf43e535f..fe1977c5e6ce0f5b30e8be529b9efa51 #endif // CHROME_BROWSER_ANDROID_DOCUMENT_DOCUMENT_WEB_CONTENTS_DELEGATE_H_ diff --git a/chrome/browser/media/offscreen_tab.cc b/chrome/browser/media/offscreen_tab.cc -index c0823105ecc86ce2e60ede44be29a14889dad887..bb0f2672c6e565657500e617b4eb416c0575dac7 100644 +index 363a0d6979aaa8fb1047f6e0ed8b4bf58f547c6f..0a1279bca644158a6a17662eba9404323685b38f 100644 --- a/chrome/browser/media/offscreen_tab.cc +++ b/chrome/browser/media/offscreen_tab.cc @@ -284,8 +284,7 @@ bool OffscreenTab::IsWebContentsCreationOverridden( @@ -108,10 +108,10 @@ index ba376cca99e6b8b367c6a4cfc9925b940728b9fc..f1b831507d628d35cc65f697ffc83256 } diff --git a/chrome/browser/ui/browser.cc b/chrome/browser/ui/browser.cc -index c8d3c04475fe3ee60ec4671ee47c18aa78840dd1..e5d95132b4f20f17f328e41cf6d0cf839787222a 100644 +index c764e3607d274b9ec3f645c2b5fc9c8c1e98ad47..1199199a14ad745a2dde2e2a8bfc0a0dd783c23e 100644 --- a/chrome/browser/ui/browser.cc +++ b/chrome/browser/ui/browser.cc -@@ -1790,12 +1790,11 @@ bool Browser::IsWebContentsCreationOverridden( +@@ -1789,12 +1789,11 @@ bool Browser::IsWebContentsCreationOverridden( content::SiteInstance* source_site_instance, content::mojom::WindowContainerType window_container_type, const GURL& opener_url, @@ -127,10 +127,10 @@ index c8d3c04475fe3ee60ec4671ee47c18aa78840dd1..e5d95132b4f20f17f328e41cf6d0cf83 WebContents* Browser::CreateCustomWebContents( diff --git a/chrome/browser/ui/browser.h b/chrome/browser/ui/browser.h -index 7649c59dde3f58b5ec153eb6146b159cfc190975..c1cc53b89d805f63fe4dcda12e02cd0a2687f926 100644 +index 69911da4fe7b9894f718fac8d59af1dcc9d18593..1a5668edcbfee23a12fc3e9b70a54673c99484dd 100644 --- a/chrome/browser/ui/browser.h +++ b/chrome/browser/ui/browser.h -@@ -807,8 +807,7 @@ class Browser : public TabStripModelObserver, +@@ -813,8 +813,7 @@ class Browser : public TabStripModelObserver, content::SiteInstance* source_site_instance, content::mojom::WindowContainerType window_container_type, const GURL& opener_url, @@ -218,10 +218,10 @@ index 53fad64f87a952fd0d7398958288ecde259b57bf..0b8359b6179bf16e58978e5f3e51a911 return true; } diff --git a/components/offline_pages/content/background_loader/background_loader_contents.h b/components/offline_pages/content/background_loader/background_loader_contents.h -index c5c5a7b63b5b3b62a9517cbef3ae23ce57a3c89c..4f1b7e88d6d2ae89a60311c8aeb1fceea87f2b02 100644 +index 75eff96958b086ebfe7f99adf0d986213074c45b..83b2c95c1ae46394d0c483dfbe0cd81c73fb8cd2 100644 --- a/components/offline_pages/content/background_loader/background_loader_contents.h +++ b/components/offline_pages/content/background_loader/background_loader_contents.h -@@ -60,8 +60,7 @@ class BackgroundLoaderContents : public content::WebContentsDelegate { +@@ -64,8 +64,7 @@ class BackgroundLoaderContents : public content::WebContentsDelegate { content::SiteInstance* source_site_instance, content::mojom::WindowContainerType window_container_type, const GURL& opener_url, @@ -232,10 +232,10 @@ index c5c5a7b63b5b3b62a9517cbef3ae23ce57a3c89c..4f1b7e88d6d2ae89a60311c8aeb1fcee void AddNewContents(content::WebContents* source, std::unique_ptr new_contents, diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc -index ad1b4abe0390215e007ad2db8d972661470e94ed..d3593a6f3e9f6cba5823169d36fd93a6f97608ae 100644 +index 48a8529b01468bc80b75670b057b203e54cd9dbb..d5bf3e57440985826332672116d34426c3d27a83 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -3682,8 +3682,7 @@ FrameTree* WebContentsImpl::CreateNewWindow( +@@ -3697,8 +3697,7 @@ FrameTree* WebContentsImpl::CreateNewWindow( if (delegate_ && delegate_->IsWebContentsCreationOverridden( source_site_instance, params.window_container_type, @@ -288,10 +288,10 @@ index 78d1bed80f2cf0f0774617c149d695f3dce3d712..ed08199cea6137d09cb95f0da4a283ca // view is used for displaying embedded extension options, we want any // external links to be opened in a new tab, not in a new guest view so we diff --git a/extensions/browser/guest_view/extension_options/extension_options_guest.h b/extensions/browser/guest_view/extension_options/extension_options_guest.h -index 9b293d0df6c634bf44a69d607c4eee839a74b4a1..7e5b9cbdcc232c5e20eae0130d800f508411b827 100644 +index d9e6b8c6941feb7dd0afd759f92753ab46545365..2216ee05f26efdc4e1b3f0f55db8d5f30b3c18e0 100644 --- a/extensions/browser/guest_view/extension_options/extension_options_guest.h +++ b/extensions/browser/guest_view/extension_options/extension_options_guest.h -@@ -55,8 +55,7 @@ class ExtensionOptionsGuest +@@ -59,8 +59,7 @@ class ExtensionOptionsGuest content::SiteInstance* source_site_instance, content::mojom::WindowContainerType window_container_type, const GURL& opener_url, @@ -302,7 +302,7 @@ index 9b293d0df6c634bf44a69d607c4eee839a74b4a1..7e5b9cbdcc232c5e20eae0130d800f50 content::RenderFrameHost* opener, content::SiteInstance* source_site_instance, diff --git a/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc b/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc -index b794ee4204fb8eaf90084e762f80988af13609b4..ac4e00f2ef1d2a722851d88531c28e65dea0341e 100644 +index df1d12a9dcd3809a43f2de769492f66c8098313d..f6f5c052d897814913022491d893a9bade91db47 100644 --- a/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc +++ b/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc @@ -385,8 +385,7 @@ bool MimeHandlerViewGuest::IsWebContentsCreationOverridden( @@ -316,10 +316,10 @@ index b794ee4204fb8eaf90084e762f80988af13609b4..ac4e00f2ef1d2a722851d88531c28e65 } diff --git a/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h b/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h -index 647a9bdf39c60f61cf3c9520bc7e57e206678cd0..59860dc143467168e2ce596f26c84ed8a26be6ed 100644 +index 663322919d45362718399b5265f9dd16acaea894..e4e599c2ee10ed0a650d6d77c6cfdfd62678b613 100644 --- a/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h +++ b/extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h -@@ -167,8 +167,7 @@ class MimeHandlerViewGuest +@@ -172,8 +172,7 @@ class MimeHandlerViewGuest content::SiteInstance* source_site_instance, content::mojom::WindowContainerType window_container_type, const GURL& opener_url, @@ -330,10 +330,10 @@ index 647a9bdf39c60f61cf3c9520bc7e57e206678cd0..59860dc143467168e2ce596f26c84ed8 content::RenderFrameHost* opener, content::SiteInstance* source_site_instance, diff --git a/fuchsia/engine/browser/frame_impl.cc b/fuchsia/engine/browser/frame_impl.cc -index 2863abb239a77b96e638c83f47ae7219cf0ccec8..5675ad386efa99383067eb404b385cf2ec46142e 100644 +index 264846f62b075fd31be93d65b033ad65fb865b90..a00bae25768573878b6c372cf620c9c4ab7666d4 100644 --- a/fuchsia/engine/browser/frame_impl.cc +++ b/fuchsia/engine/browser/frame_impl.cc -@@ -388,8 +388,7 @@ bool FrameImpl::IsWebContentsCreationOverridden( +@@ -379,8 +379,7 @@ bool FrameImpl::IsWebContentsCreationOverridden( content::SiteInstance* source_site_instance, content::mojom::WindowContainerType window_container_type, const GURL& opener_url, @@ -344,10 +344,10 @@ index 2863abb239a77b96e638c83f47ae7219cf0ccec8..5675ad386efa99383067eb404b385cf2 // can catch bad client behavior while not interfering with normal operation. constexpr size_t kMaxPendingWebContentsCount = 10; diff --git a/fuchsia/engine/browser/frame_impl.h b/fuchsia/engine/browser/frame_impl.h -index 3e65c4e8faf63ab1d42e3f57457a071e322383dc..5f4d859f8f3ebb58336485a0a39837eec2c46294 100644 +index 90fe755aa7dddee8c1f129a4e125efba060ce055..301dd436259ea35377c6a0336789c524fb0ecc54 100644 --- a/fuchsia/engine/browser/frame_impl.h +++ b/fuchsia/engine/browser/frame_impl.h -@@ -246,8 +246,7 @@ class FrameImpl : public fuchsia::web::Frame, +@@ -247,8 +247,7 @@ class FrameImpl : public fuchsia::web::Frame, content::SiteInstance* source_site_instance, content::mojom::WindowContainerType window_container_type, const GURL& opener_url, @@ -358,7 +358,7 @@ index 3e65c4e8faf63ab1d42e3f57457a071e322383dc..5f4d859f8f3ebb58336485a0a39837ee int opener_render_process_id, int opener_render_frame_id, diff --git a/headless/lib/browser/headless_web_contents_impl.cc b/headless/lib/browser/headless_web_contents_impl.cc -index 09bb4b3ef68aeb6dc2fa83ab574c46bebc68dcd1..e104fcba8c5c2e5530ae9a231c21fb1cd69ee303 100644 +index a98d00127990627a39fc1349c22b28921a3b3cbb..a4143738b611bc01427f185bc95d2faab865a7c6 100644 --- a/headless/lib/browser/headless_web_contents_impl.cc +++ b/headless/lib/browser/headless_web_contents_impl.cc @@ -192,8 +192,7 @@ class HeadlessWebContentsImpl::Delegate : public content::WebContentsDelegate { diff --git a/patches/chromium/chore_use_electron_resources_not_chrome_for_spellchecker.patch b/patches/chromium/chore_use_electron_resources_not_chrome_for_spellchecker.patch index 4caafe3dae..8daf2f24e4 100644 --- a/patches/chromium/chore_use_electron_resources_not_chrome_for_spellchecker.patch +++ b/patches/chromium/chore_use_electron_resources_not_chrome_for_spellchecker.patch @@ -7,10 +7,10 @@ spellchecker uses a few IDS_ resources. We need to load these from Electrons grit header instead of Chromes diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn -index 7f050d074a057b9226444432625e3df856c5d1d8..27f4f83da31dbd3a1e754279e760dddf00224e1b 100644 +index 1f848e0760118d48a7c00e1125dbda98b42561ab..37e8fdf8adb078c07e561b5e8cef4051ae4cc75f 100644 --- a/chrome/browser/BUILD.gn +++ b/chrome/browser/BUILD.gn -@@ -6736,6 +6736,7 @@ static_library("browser") { +@@ -6821,6 +6821,7 @@ static_library("browser") { deps += [ "//components/spellcheck/browser", "//components/spellcheck/common", diff --git a/patches/chromium/command-ismediakey.patch b/patches/chromium/command-ismediakey.patch index db5a310f7d..2932fcbd47 100644 --- a/patches/chromium/command-ismediakey.patch +++ b/patches/chromium/command-ismediakey.patch @@ -11,7 +11,7 @@ and electron/electron@d2368d2d3b3de9eec4cc32b6aaf035cc89921bf1 as patches. diff --git a/chrome/browser/extensions/global_shortcut_listener_ozone.cc b/chrome/browser/extensions/global_shortcut_listener_ozone.cc -index d6d896b87bb327bd7387335bd5bbac4616316f1e..ec0293ba8b66df5c9a34435cb2a0c9a333ebdf7a 100644 +index ed2ac20679a9357c9493224ec5e08837c7860d6e..7f9a97e11395e5521e100694cd37bcd95bcd8e35 100644 --- a/chrome/browser/extensions/global_shortcut_listener_ozone.cc +++ b/chrome/browser/extensions/global_shortcut_listener_ozone.cc @@ -58,7 +58,8 @@ bool GlobalShortcutListenerOzone::RegisterAcceleratorImpl( @@ -86,61 +86,6 @@ index 0f344ee352a48497e77a72bb298146c61e7fcf2a..3bad4263ea552fc63445bf5613f8add7 // Create an observer that registers a hot key for |accelerator|. std::unique_ptr observer = -diff --git a/chrome/browser/extensions/global_shortcut_listener_x11.cc b/chrome/browser/extensions/global_shortcut_listener_x11.cc -index ab719d290288a0cd35851f4e952b39180f4f3a22..882bd38d886d3b499fa8a6403c409fcee1374953 100644 ---- a/chrome/browser/extensions/global_shortcut_listener_x11.cc -+++ b/chrome/browser/extensions/global_shortcut_listener_x11.cc -@@ -33,7 +33,7 @@ bool GlobalShortcutListenerX11::RegisterAcceleratorImpl( - - const bool registered = XGlobalShortcutListener::RegisterAccelerator( - accelerator.key_code(), accelerator.IsAltDown(), accelerator.IsCtrlDown(), -- accelerator.IsShiftDown()); -+ accelerator.IsShiftDown(), accelerator.IsCmdDown()); - if (registered) - registered_hot_keys_.insert(accelerator); - -@@ -46,7 +46,7 @@ void GlobalShortcutListenerX11::UnregisterAcceleratorImpl( - - XGlobalShortcutListener::UnregisterAccelerator( - accelerator.key_code(), accelerator.IsAltDown(), accelerator.IsCtrlDown(), -- accelerator.IsShiftDown()); -+ accelerator.IsShiftDown(), accelerator.IsCmdDown()); - - registered_hot_keys_.erase(accelerator); - } -@@ -54,7 +54,8 @@ void GlobalShortcutListenerX11::UnregisterAcceleratorImpl( - void GlobalShortcutListenerX11::OnKeyPressed(ui::KeyboardCode key_code, - bool is_alt_down, - bool is_ctrl_down, -- bool is_shift_down) { -+ bool is_shift_down, -+ bool is_cmd_down) { - int modifiers = 0; - if (is_alt_down) - modifiers |= ui::EF_ALT_DOWN; -@@ -62,6 +63,8 @@ void GlobalShortcutListenerX11::OnKeyPressed(ui::KeyboardCode key_code, - modifiers |= ui::EF_CONTROL_DOWN; - if (is_shift_down) - modifiers |= ui::EF_SHIFT_DOWN; -+ if (is_cmd_down) -+ modifiers |= ui::EF_COMMAND_DOWN; - NotifyKeyPressed(ui::Accelerator(key_code, modifiers)); - } - -diff --git a/chrome/browser/extensions/global_shortcut_listener_x11.h b/chrome/browser/extensions/global_shortcut_listener_x11.h -index 49d1c3224fdab07526a6150318d7603bf4a3f27c..3aab0d9033554035ca2b0909f219592d71213de1 100644 ---- a/chrome/browser/extensions/global_shortcut_listener_x11.h -+++ b/chrome/browser/extensions/global_shortcut_listener_x11.h -@@ -34,7 +34,8 @@ class GlobalShortcutListenerX11 : public GlobalShortcutListener, - void OnKeyPressed(ui::KeyboardCode key_code, - bool is_alt_down, - bool is_ctrl_down, -- bool is_shift_down) override; -+ bool is_shift_down, -+ bool is_cmd_down) override; - - std::set registered_hot_keys_; - }; diff --git a/content/browser/media/media_keys_listener_manager_impl.cc b/content/browser/media/media_keys_listener_manager_impl.cc index 4145418210c2b1033390ec8a2e657cb1fcd048f8..5938f75742b793868638e693a9a8c8dc686dfc46 100644 --- a/content/browser/media/media_keys_listener_manager_impl.cc @@ -172,7 +117,7 @@ index 1145e1f3d79482b5bb468c3128431ac674310e5f..e9f595045e0c076e0735f27dfc38bfbc } // namespace ui diff --git a/ui/base/accelerators/media_keys_listener_mac.mm b/ui/base/accelerators/media_keys_listener_mac.mm -index 60f7ad6ffb28fa6554e02a7e031408f4d1124d86..0e8325e993178443d926249c427957bb16991861 100644 +index ada705fb42e88d4bfa05b212c84111be9057a50e..a866b975687dd08ad88031a63f161b3164e82455 100644 --- a/ui/base/accelerators/media_keys_listener_mac.mm +++ b/ui/base/accelerators/media_keys_listener_mac.mm @@ -32,6 +32,12 @@ KeyboardCode MediaKeyCodeToKeyboardCode(int key_code) { @@ -188,7 +133,7 @@ index 60f7ad6ffb28fa6554e02a7e031408f4d1124d86..0e8325e993178443d926249c427957bb } return VKEY_UNKNOWN; } -@@ -191,7 +197,10 @@ static CGEventRef EventTapCallback(CGEventTapProxy proxy, +@@ -192,7 +198,10 @@ static CGEventRef EventTapCallback(CGEventTapProxy proxy, int key_code = (data1 & 0xFFFF0000) >> 16; if (key_code != NX_KEYTYPE_PLAY && key_code != NX_KEYTYPE_NEXT && key_code != NX_KEYTYPE_PREVIOUS && key_code != NX_KEYTYPE_FAST && diff --git a/patches/chromium/crash_allow_disabling_compression_on_linux.patch b/patches/chromium/crash_allow_disabling_compression_on_linux.patch index 576ec057dd..1c58417529 100644 --- a/patches/chromium/crash_allow_disabling_compression_on_linux.patch +++ b/patches/chromium/crash_allow_disabling_compression_on_linux.patch @@ -13,7 +13,7 @@ Ultimately we should remove the option to disable compression, and subsequently remove this patch. diff --git a/components/crash/core/app/breakpad_linux.cc b/components/crash/core/app/breakpad_linux.cc -index 094244b198745e6fbbfb8d72e7bc2e0ceb4db88c..5786d0ea9dd272ffa8140ce490d0d09f60f8b373 100644 +index 003702f4f0b1ddab26dee9a6154297fc0204b716..9986974ad1c76269ae0aae5ad14b1c9ac268d87e 100644 --- a/components/crash/core/app/breakpad_linux.cc +++ b/components/crash/core/app/breakpad_linux.cc @@ -110,6 +110,8 @@ void SetUploadURL(const std::string& url) { @@ -25,7 +25,7 @@ index 094244b198745e6fbbfb8d72e7bc2e0ceb4db88c..5786d0ea9dd272ffa8140ce490d0d09f #endif bool g_is_node = false; -@@ -1321,56 +1323,60 @@ void ExecUploadProcessOrTerminate(const BreakpadInfo& info, +@@ -1323,56 +1325,60 @@ void ExecUploadProcessOrTerminate(const BreakpadInfo& info, #else // BUILDFLAG(IS_CHROMEOS_ASH) @@ -127,7 +127,7 @@ index 094244b198745e6fbbfb8d72e7bc2e0ceb4db88c..5786d0ea9dd272ffa8140ce490d0d09f static const char header_msg[] = "--header=Content-Type: multipart/form-data; boundary="; const size_t header_content_type_size = -@@ -1397,7 +1403,8 @@ void ExecUploadProcessOrTerminate(const BreakpadInfo& info, +@@ -1399,7 +1405,8 @@ void ExecUploadProcessOrTerminate(const BreakpadInfo& info, static const char kWgetBinary[] = "/usr/bin/wget"; const char* args[] = { kWgetBinary, @@ -137,7 +137,7 @@ index 094244b198745e6fbbfb8d72e7bc2e0ceb4db88c..5786d0ea9dd272ffa8140ce490d0d09f header_content_type, post_file, g_upload_url, -@@ -2038,6 +2045,7 @@ void InitCrashReporter(const std::string& process_type) { +@@ -2040,6 +2047,7 @@ void InitCrashReporter(const std::string& process_type) { #if !BUILDFLAG(IS_CHROMEOS_ASH) SetUploadURL(GetCrashReporterClient()->GetUploadUrl()); diff --git a/patches/chromium/crash_allow_setting_more_options.patch b/patches/chromium/crash_allow_setting_more_options.patch index 821638acb4..16310756c1 100644 --- a/patches/chromium/crash_allow_setting_more_options.patch +++ b/patches/chromium/crash_allow_setting_more_options.patch @@ -9,7 +9,7 @@ rate-limiting, compression and global annotations. This should be upstreamed. diff --git a/components/crash/core/app/breakpad_linux.cc b/components/crash/core/app/breakpad_linux.cc -index 00009dacdc2b084d7c647ab34c8c8be6decf1a5b..5eb19c8a47467d8df30316bfbd7f3c2f38aea7c0 100644 +index 93d05b949c26c3ff96f62504760dbb96c1054387..b1392d74ca4ff08f6e293a72d1d453baa5f91cbc 100644 --- a/components/crash/core/app/breakpad_linux.cc +++ b/components/crash/core/app/breakpad_linux.cc @@ -112,6 +112,7 @@ void SetUploadURL(const std::string& url) { diff --git a/patches/chromium/crashpad_pid_check.patch b/patches/chromium/crashpad_pid_check.patch index 7e15cc76b4..597472b3ec 100644 --- a/patches/chromium/crashpad_pid_check.patch +++ b/patches/chromium/crashpad_pid_check.patch @@ -16,10 +16,10 @@ https://github.com/electron/electron/pull/18483#discussion_r292703588 https://github.com/electron/electron/pull/18483#issuecomment-501090683 diff --git a/third_party/crashpad/crashpad/util/win/exception_handler_server.cc b/third_party/crashpad/crashpad/util/win/exception_handler_server.cc -index 9394256e05748297988dd457439875409ed96461..a5502155e6bb9370cf73a9a571054eac9b0253a2 100644 +index 92d5c5d47cfa5bd70300bb8bbc16ab944cd93509..87c14718221a83d531d15abf1f1d2d1bbc020e77 100644 --- a/third_party/crashpad/crashpad/util/win/exception_handler_server.cc +++ b/third_party/crashpad/crashpad/util/win/exception_handler_server.cc -@@ -444,9 +444,16 @@ bool ExceptionHandlerServer::ServiceClientConnection( +@@ -446,9 +446,16 @@ bool ExceptionHandlerServer::ServiceClientConnection( DWORD real_pid = 0; if (get_named_pipe_client_process_id(service_context.pipe(), &real_pid) && message.registration.client_process_id != real_pid) { diff --git a/patches/chromium/dcheck.patch b/patches/chromium/dcheck.patch index cf7a0e53fa..ac516e3152 100644 --- a/patches/chromium/dcheck.patch +++ b/patches/chromium/dcheck.patch @@ -16,11 +16,24 @@ example, the checks might be disabled for a whole build target, but actually only one or two specific checks fail. Then it's better to simply comment out the failing checks and allow the rest of the target to have them enabled. +diff --git a/third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker.cc b/third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker.cc +index c490dd7ca2dbe499fbf99509293900318c6b7739..2de3b90801b2daba2eac0263f010c834468b7fd6 100644 +--- a/third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker.cc ++++ b/third_party/blink/renderer/core/mobile_metrics/mobile_friendliness_checker.cc +@@ -423,7 +423,7 @@ void MobileFriendlinessChecker::ComputeSmallTextRatio( + ->GetPageScaleConstraintsSet() + .FinalConstraints() + .initial_scale; +- DCHECK_GT(initial_scale, 0); ++ // DCHECK_GT(initial_scale, 0); + double actual_font_size = + style.FontSize() * initial_scale / viewport_scalar_; + double area = text->PhysicalAreaSize(); diff --git a/ui/base/clipboard/clipboard_win.cc b/ui/base/clipboard/clipboard_win.cc -index 68c758df6954c0deb25d8d93da2d22f8cdf00771..03bdc80a1e1b5db4731a81f5a2851722e3c0d652 100644 +index fe8d191217e24b08d36339dbf047beaeb6bd6538..870db0552544e3e89d9498c22ec3db81b46df741 100644 --- a/ui/base/clipboard/clipboard_win.cc +++ b/ui/base/clipboard/clipboard_win.cc -@@ -923,10 +923,10 @@ SkBitmap ClipboardWin::ReadImageInternal(ClipboardBuffer buffer) const { +@@ -891,10 +891,10 @@ SkBitmap ClipboardWin::ReadBitmapInternal(ClipboardBuffer buffer) const { void ClipboardWin::WriteToClipboard(ClipboardFormatType format, HANDLE handle) { UINT cf_format = format.ToFormatEtc().cfFormat; diff --git a/patches/chromium/delay_lock_the_protocol_scheme_registry.patch b/patches/chromium/delay_lock_the_protocol_scheme_registry.patch index 8459ba4a71..1c4c59a6b1 100644 --- a/patches/chromium/delay_lock_the_protocol_scheme_registry.patch +++ b/patches/chromium/delay_lock_the_protocol_scheme_registry.patch @@ -19,10 +19,10 @@ https://chromium-review.googlesource.com/c/chromium/src/+/1901591, we should try re-submitting the patch. diff --git a/content/app/content_main_runner_impl.cc b/content/app/content_main_runner_impl.cc -index 29fd158813a0d4ecd5f7cb41cd2c9a6bf8a29f6c..b3f2e64cb729f43faeb0e3af39ca5469d77fb503 100644 +index 915ae322cb6a21668553e196bab5fbca891028a3..c97118c1380734e9cdc91b9d7191e0dc71d8b8ed 100644 --- a/content/app/content_main_runner_impl.cc +++ b/content/app/content_main_runner_impl.cc -@@ -752,7 +752,7 @@ int ContentMainRunnerImpl::Initialize(const ContentMainParams& params) { +@@ -763,7 +763,7 @@ int ContentMainRunnerImpl::Initialize(const ContentMainParams& params) { } #endif diff --git a/patches/chromium/desktop_media_list.patch b/patches/chromium/desktop_media_list.patch index 931b181e4d..13a2c49506 100644 --- a/patches/chromium/desktop_media_list.patch +++ b/patches/chromium/desktop_media_list.patch @@ -7,10 +7,10 @@ Subject: desktop_media_list.patch * Disabled WindowCaptureMacV2 feature for https://github.com/electron/electron/pull/30507 diff --git a/chrome/browser/media/webrtc/desktop_media_list.h b/chrome/browser/media/webrtc/desktop_media_list.h -index d9737047f54bbf3811ae2a347790f6b3d286da3d..5b69c3a4ade9fa7f105f42ebf0e82750a83cf276 100644 +index 57cfc646f8ea545271c22d79ec158a04b148bc9c..db4d608d3bed841ddf7225d0918e82112c8d08b5 100644 --- a/chrome/browser/media/webrtc/desktop_media_list.h +++ b/chrome/browser/media/webrtc/desktop_media_list.h -@@ -86,7 +86,7 @@ class DesktopMediaList { +@@ -94,7 +94,7 @@ class DesktopMediaList { // once per DesktopMediaList instance. It should not be called after // StartUpdating(), and StartUpdating() should not be called until |callback| // has been called. @@ -20,15 +20,16 @@ index d9737047f54bbf3811ae2a347790f6b3d286da3d..5b69c3a4ade9fa7f105f42ebf0e82750 virtual int GetSourceCount() const = 0; virtual const Source& GetSource(int index) const = 0; diff --git a/chrome/browser/media/webrtc/desktop_media_list_base.cc b/chrome/browser/media/webrtc/desktop_media_list_base.cc -index a3e1de40e843b5450f417a0455e0e7d7dee1d1bd..63befdc162a4b4a16e8c5099abb0f5af602894fc 100644 +index 24bd95b79479c21182a0d1a61364e1794f900261..2b2a7494ee9bd88fd5c8ebf50a5e29738b2dffd0 100644 --- a/chrome/browser/media/webrtc/desktop_media_list_base.cc +++ b/chrome/browser/media/webrtc/desktop_media_list_base.cc -@@ -54,11 +54,11 @@ void DesktopMediaListBase::StartUpdating(DesktopMediaListObserver* observer) { +@@ -63,12 +63,12 @@ void DesktopMediaListBase::StartUpdating(DesktopMediaListObserver* observer) { Refresh(true); } -void DesktopMediaListBase::Update(UpdateCallback callback) { +void DesktopMediaListBase::Update(UpdateCallback callback, bool refresh_thumbnails) { + DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK(sources_.empty()); DCHECK(!refresh_callback_); refresh_callback_ = std::move(callback); @@ -38,7 +39,7 @@ index a3e1de40e843b5450f417a0455e0e7d7dee1d1bd..63befdc162a4b4a16e8c5099abb0f5af int DesktopMediaListBase::GetSourceCount() const { diff --git a/chrome/browser/media/webrtc/desktop_media_list_base.h b/chrome/browser/media/webrtc/desktop_media_list_base.h -index c87535950fdc6cf1c5641835a69971d0e1654025..a6151407ae3ac3456d0af07330db3d1ae82bd6a9 100644 +index 98cc4e039ba2b5a467175b15650a7b8ef38e8249..f5aea6a5916b9aa56ee7b81a8de97dc44e04a759 100644 --- a/chrome/browser/media/webrtc/desktop_media_list_base.h +++ b/chrome/browser/media/webrtc/desktop_media_list_base.h @@ -35,7 +35,7 @@ class DesktopMediaListBase : public DesktopMediaList { @@ -51,7 +52,7 @@ index c87535950fdc6cf1c5641835a69971d0e1654025..a6151407ae3ac3456d0af07330db3d1a const Source& GetSource(int index) const override; DesktopMediaList::Type GetMediaListType() const override; diff --git a/chrome/browser/media/webrtc/native_desktop_media_list.cc b/chrome/browser/media/webrtc/native_desktop_media_list.cc -index 4c822ebcca602ecbd30fbc79d72a1ecabc273229..d9f45c280ce4f5771c379033d8034e68681e42f8 100644 +index c899b52ef01d2c9ea16b281a2b7c4d37f175fa36..a5fc476a52215eba33193012629ab1f73d679c88 100644 --- a/chrome/browser/media/webrtc/native_desktop_media_list.cc +++ b/chrome/browser/media/webrtc/native_desktop_media_list.cc @@ -16,7 +16,7 @@ @@ -63,17 +64,14 @@ index 4c822ebcca602ecbd30fbc79d72a1ecabc273229..d9f45c280ce4f5771c379033d8034e68 #include "content/public/browser/browser_task_traits.h" #include "content/public/browser/browser_thread.h" #include "content/public/common/content_features.h" -@@ -94,8 +94,9 @@ gfx::ImageSkia ScaleDesktopFrame(std::unique_ptr frame, +@@ -94,6 +94,7 @@ gfx::ImageSkia ScaleDesktopFrame(std::unique_ptr frame, } #if defined(OS_MAC) +// Refs https://github.com/electron/electron/pull/30507 const base::Feature kWindowCaptureMacV2{"WindowCaptureMacV2", -- base::FEATURE_ENABLED_BY_DEFAULT}; -+ base::FEATURE_DISABLED_BY_DEFAULT}; + base::FEATURE_DISABLED_BY_DEFAULT}; #endif - - } // namespace @@ -427,6 +428,8 @@ void NativeDesktopMediaList::RefreshForVizFrameSinkWindows( FROM_HERE, base::BindOnce(&Worker::RefreshThumbnails, base::Unretained(worker_.get()), diff --git a/patches/chromium/disable-redraw-lock.patch b/patches/chromium/disable-redraw-lock.patch index f431e5db19..29d852ea9e 100644 --- a/patches/chromium/disable-redraw-lock.patch +++ b/patches/chromium/disable-redraw-lock.patch @@ -15,10 +15,10 @@ the redraw locking mechanism, which fixes these issues. The electron issue can be found at https://github.com/electron/electron/issues/1821 diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc -index 81132959080d21a341fcc418fcd7c73cf62b78c4..9cac7284aeacda2d877502f97d9e442ae4fdadd3 100644 +index 8694e28a174b937e39cbfcbf1eb9e67123c7b93c..149edcde6c1ad336f39f65c36ed2bb87a2b2a800 100644 --- a/ui/views/win/hwnd_message_handler.cc +++ b/ui/views/win/hwnd_message_handler.cc -@@ -309,6 +309,10 @@ constexpr int kSynthesizedMouseMessagesTimeDifference = 500; +@@ -308,6 +308,10 @@ constexpr int kSynthesizedMouseMessagesTimeDifference = 500; } // namespace @@ -29,7 +29,7 @@ index 81132959080d21a341fcc418fcd7c73cf62b78c4..9cac7284aeacda2d877502f97d9e442a // A scoping class that prevents a window from being able to redraw in response // to invalidations that may occur within it for the lifetime of the object. // -@@ -360,6 +364,7 @@ class HWNDMessageHandler::ScopedRedrawLock { +@@ -359,6 +363,7 @@ class HWNDMessageHandler::ScopedRedrawLock { cancel_unlock_(false), should_lock_(owner_->IsVisible() && !owner->HasChildRenderingWindow() && ::IsWindow(hwnd_) && @@ -37,7 +37,7 @@ index 81132959080d21a341fcc418fcd7c73cf62b78c4..9cac7284aeacda2d877502f97d9e442a (!(GetWindowLong(hwnd_, GWL_STYLE) & WS_CAPTION) || !ui::win::IsAeroGlassEnabled())) { if (should_lock_) -@@ -979,6 +984,10 @@ HWNDMessageHandler::RegisterUnadjustedMouseEvent() { +@@ -978,6 +983,10 @@ HWNDMessageHandler::RegisterUnadjustedMouseEvent() { return scoped_enable; } diff --git a/patches/chromium/disable_color_correct_rendering.patch b/patches/chromium/disable_color_correct_rendering.patch index 65566628b0..bb45148c6f 100644 --- a/patches/chromium/disable_color_correct_rendering.patch +++ b/patches/chromium/disable_color_correct_rendering.patch @@ -20,10 +20,10 @@ to deal with color spaces. That is being tracked at https://crbug.com/634542 and https://crbug.com/711107. diff --git a/cc/trees/layer_tree_host_impl.cc b/cc/trees/layer_tree_host_impl.cc -index c841d7f51ea7a99fe2e806e4102bf91d75853ed0..ed983081afb0f4ead01da32cd56d61ecb63d33dd 100644 +index f898c7dd71ed30624fc16651fce1e1519d142a6a..2331fdc7e8bb8efce35c620b6f9e95ccb117938e 100644 --- a/cc/trees/layer_tree_host_impl.cc +++ b/cc/trees/layer_tree_host_impl.cc -@@ -1789,6 +1789,10 @@ void LayerTreeHostImpl::SetIsLikelyToRequireADraw( +@@ -1800,6 +1800,10 @@ void LayerTreeHostImpl::SetIsLikelyToRequireADraw( gfx::ColorSpace LayerTreeHostImpl::GetRasterColorSpace( gfx::ContentColorUsage content_color_usage) const { @@ -60,7 +60,7 @@ index e58b4023652785fa8ea47236a5ad7237c7ea6ed2..4ec673ea93410ee00b1af4330fdc8b52 bool force_antialiasing = false; bool force_blending_with_shaders = false; diff --git a/components/viz/host/renderer_settings_creation.cc b/components/viz/host/renderer_settings_creation.cc -index aab0c5d1dbdfce9b56ada8861a0a7ffb42704a96..430ad6cfc7bba31bc097e654765fb94d42bcdfe5 100644 +index d79f3beb58085672e0a67825a0b60de2a3aeb499..5f7ca2ea0d012be5518dd07ade8cf2820b4fd7a9 100644 --- a/components/viz/host/renderer_settings_creation.cc +++ b/components/viz/host/renderer_settings_creation.cc @@ -17,6 +17,7 @@ @@ -71,7 +71,7 @@ index aab0c5d1dbdfce9b56ada8861a0a7ffb42704a96..430ad6cfc7bba31bc097e654765fb94d #if defined(OS_APPLE) #include "ui/base/cocoa/remote_layer_api.h" -@@ -54,6 +55,8 @@ bool GetSwitchValueAsInt(const base::CommandLine* command_line, +@@ -53,6 +54,8 @@ bool GetSwitchValueAsInt(const base::CommandLine* command_line, RendererSettings CreateRendererSettings() { RendererSettings renderer_settings; base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); @@ -81,10 +81,10 @@ index aab0c5d1dbdfce9b56ada8861a0a7ffb42704a96..430ad6cfc7bba31bc097e654765fb94d !command_line->HasSwitch(switches::kUIDisablePartialSwap); diff --git a/components/viz/service/display/gl_renderer.cc b/components/viz/service/display/gl_renderer.cc -index 1e2ad6423a5e316a9a1713abab7579ea0d2a82f9..22df5e1728e5dc2879c9b96911f6e7340d455b2a 100644 +index 98de8cd6372daf7d1c94353e6a9b2663a5325bca..d2d0ebc2dd2dbf5cd31bfa5071d82ce112065303 100644 --- a/components/viz/service/display/gl_renderer.cc +++ b/components/viz/service/display/gl_renderer.cc -@@ -90,6 +90,9 @@ +@@ -86,6 +86,9 @@ using gpu::gles2::GLES2Interface; @@ -94,7 +94,7 @@ index 1e2ad6423a5e316a9a1713abab7579ea0d2a82f9..22df5e1728e5dc2879c9b96911f6e734 namespace viz { namespace { -@@ -680,8 +683,9 @@ void GLRenderer::DoDrawQuad(const DrawQuad* quad, +@@ -677,8 +680,9 @@ void GLRenderer::DoDrawQuad(const DrawQuad* quad, void GLRenderer::DrawDebugBorderQuad(const DebugBorderDrawQuad* quad) { SetBlendEnabled(quad->ShouldDrawWithBlending()); @@ -106,7 +106,7 @@ index 1e2ad6423a5e316a9a1713abab7579ea0d2a82f9..22df5e1728e5dc2879c9b96911f6e734 // Use the full quad_rect for debug quads to not move the edges based on // partial swaps. -@@ -1671,7 +1675,8 @@ void GLRenderer::ChooseRPDQProgram(DrawRenderPassDrawQuadParams* params, +@@ -1668,7 +1672,8 @@ void GLRenderer::ChooseRPDQProgram(DrawRenderPassDrawQuadParams* params, params->use_color_matrix, tint_gl_composited_content_, params->apply_shader_based_rounded_corner && ShouldApplyRoundedCorner(params->quad)), @@ -116,7 +116,7 @@ index 1e2ad6423a5e316a9a1713abab7579ea0d2a82f9..22df5e1728e5dc2879c9b96911f6e734 } void GLRenderer::UpdateRPDQUniforms(DrawRenderPassDrawQuadParams* params) { -@@ -2144,15 +2149,16 @@ void GLRenderer::DrawSolidColorQuad(const SolidColorDrawQuad* quad, +@@ -2141,15 +2146,16 @@ void GLRenderer::DrawSolidColorQuad(const SolidColorDrawQuad* quad, SetUseProgram(ProgramKey::SolidColor(use_aa ? USE_AA : NO_AA, tint_gl_composited_content_, ShouldApplyRoundedCorner(quad)), @@ -136,7 +136,7 @@ index 1e2ad6423a5e316a9a1713abab7579ea0d2a82f9..22df5e1728e5dc2879c9b96911f6e734 gfx::ColorTransform::TriStim col(color_f.fR, color_f.fG, color_f.fB); color_transform->Transform(&col, 1); color_f.fR = col.x(); -@@ -2374,7 +2380,8 @@ void GLRenderer::DrawContentQuadAA(const ContentDrawQuadBase* quad, +@@ -2371,7 +2377,8 @@ void GLRenderer::DrawContentQuadAA(const ContentDrawQuadBase* quad, : NON_PREMULTIPLIED_ALPHA, false, false, tint_gl_composited_content_, ShouldApplyRoundedCorner(quad)), @@ -146,7 +146,7 @@ index 1e2ad6423a5e316a9a1713abab7579ea0d2a82f9..22df5e1728e5dc2879c9b96911f6e734 if (current_program_->tint_color_matrix_location() != -1) { auto matrix = cc::DebugColors::TintCompositedContentColorTransformMatrix(); -@@ -2473,7 +2480,8 @@ void GLRenderer::DrawContentQuadNoAA(const ContentDrawQuadBase* quad, +@@ -2470,7 +2477,8 @@ void GLRenderer::DrawContentQuadNoAA(const ContentDrawQuadBase* quad, !quad->ShouldDrawWithBlending(), has_tex_clamp_rect, tint_gl_composited_content_, ShouldApplyRoundedCorner(quad)), @@ -156,7 +156,7 @@ index 1e2ad6423a5e316a9a1713abab7579ea0d2a82f9..22df5e1728e5dc2879c9b96911f6e734 if (current_program_->tint_color_matrix_location() != -1) { auto matrix = cc::DebugColors::TintCompositedContentColorTransformMatrix(); -@@ -2583,7 +2591,8 @@ void GLRenderer::DrawYUVVideoQuad(const YUVVideoDrawQuad* quad, +@@ -2580,7 +2588,8 @@ void GLRenderer::DrawYUVVideoQuad(const YUVVideoDrawQuad* quad, // The source color space should never be RGB. DCHECK_NE(src_color_space, src_color_space.GetAsFullRangeRGB()); @@ -166,7 +166,7 @@ index 1e2ad6423a5e316a9a1713abab7579ea0d2a82f9..22df5e1728e5dc2879c9b96911f6e734 #if defined(OS_WIN) // Force sRGB output on Windows for overlay candidate video quads to match -@@ -2764,7 +2773,8 @@ void GLRenderer::DrawStreamVideoQuad(const StreamVideoDrawQuad* quad, +@@ -2761,7 +2770,8 @@ void GLRenderer::DrawStreamVideoQuad(const StreamVideoDrawQuad* quad, SetUseProgram(ProgramKey::VideoStream(tex_coord_precision, ShouldApplyRoundedCorner(quad)), @@ -176,7 +176,7 @@ index 1e2ad6423a5e316a9a1713abab7579ea0d2a82f9..22df5e1728e5dc2879c9b96911f6e734 DCHECK_EQ(GL_TEXTURE0, GetActiveTextureUnit(gl_)); gl_->BindTexture(GL_TEXTURE_EXTERNAL_OES, lock.texture_id()); -@@ -2835,8 +2845,8 @@ void GLRenderer::FlushTextureQuadCache(BoundGeometry flush_binding) { +@@ -2832,8 +2842,8 @@ void GLRenderer::FlushTextureQuadCache(BoundGeometry flush_binding) { draw_cache_.nearest_neighbor ? GL_NEAREST : GL_LINEAR); // Bind the program to the GL state. @@ -187,7 +187,7 @@ index 1e2ad6423a5e316a9a1713abab7579ea0d2a82f9..22df5e1728e5dc2879c9b96911f6e734 /*adjust_src_white_level=*/draw_cache_.is_video_frame, locked_quad.hdr_metadata()); -@@ -3694,7 +3704,9 @@ void GLRenderer::SetUseProgram(const ProgramKey& program_key_no_color, +@@ -3686,7 +3696,9 @@ void GLRenderer::SetUseProgram(const ProgramKey& program_key_no_color, const gfx::ColorSpace& dst_color_space, bool adjust_src_white_level, absl::optional hdr_metadata) { @@ -198,7 +198,7 @@ index 1e2ad6423a5e316a9a1713abab7579ea0d2a82f9..22df5e1728e5dc2879c9b96911f6e734 gfx::ColorSpace adjusted_src_color_space = src_color_space; if (adjust_src_white_level && src_color_space.IsHDR()) { // TODO(b/183236148): consider using the destination's HDR static metadata -@@ -4077,9 +4089,9 @@ void GLRenderer::CopyRenderPassDrawQuadToOverlayResource( +@@ -4069,9 +4081,9 @@ void GLRenderer::CopyRenderPassDrawQuadToOverlayResource( cc::MathUtil::CheckedRoundUp(iosurface_height, iosurface_multiple); } @@ -211,7 +211,7 @@ index 1e2ad6423a5e316a9a1713abab7579ea0d2a82f9..22df5e1728e5dc2879c9b96911f6e734 *new_bounds = gfx::RectF(updated_dst_rect.origin(), gfx::SizeF((*overlay_texture)->texture.size())); -@@ -4299,8 +4311,8 @@ void GLRenderer::FlushOverdrawFeedback(const gfx::Rect& output_rect) { +@@ -4291,8 +4303,8 @@ void GLRenderer::FlushOverdrawFeedback(const gfx::Rect& output_rect) { PrepareGeometry(SHARED_BINDING); @@ -222,17 +222,17 @@ index 1e2ad6423a5e316a9a1713abab7579ea0d2a82f9..22df5e1728e5dc2879c9b96911f6e734 gfx::Transform render_matrix; render_matrix.Translate(0.5 * output_rect.width() + output_rect.x(), -@@ -4489,3 +4501,5 @@ GLRenderer::OverlayTexture::OverlayTexture() = default; +@@ -4481,3 +4493,5 @@ GLRenderer::OverlayTexture::OverlayTexture() = default; GLRenderer::OverlayTexture::~OverlayTexture() = default; } // namespace viz + +#undef PATCH_CS diff --git a/content/browser/gpu/gpu_process_host.cc b/content/browser/gpu/gpu_process_host.cc -index 49d6d4107c0e4e0c37471394c5b7bdf84b3c823a..f0773c8fe1ccf0a3f920c840719ad7ee07d5d0db 100644 +index 3a8decde7b5ce9ae3b20041885749e4763b3d311..390af09a9e53ac30c5682746dc40ccd0edaf7ecb 100644 --- a/content/browser/gpu/gpu_process_host.cc +++ b/content/browser/gpu/gpu_process_host.cc -@@ -224,6 +224,7 @@ GpuTerminationStatus ConvertToGpuTerminationStatus( +@@ -225,6 +225,7 @@ GpuTerminationStatus ConvertToGpuTerminationStatus( // Command-line switches to propagate to the GPU process. static const char* const kSwitchNames[] = { @@ -241,7 +241,7 @@ index 49d6d4107c0e4e0c37471394c5b7bdf84b3c823a..f0773c8fe1ccf0a3f920c840719ad7ee sandbox::policy::switches::kGpuSandboxAllowSysVShm, sandbox::policy::switches::kGpuSandboxFailuresFatal, diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc -index 3555928a29b3c6022621c4e9b65531edbefa7797..9b36af8cd02f56810b6b8ed86d1c8ba544567233 100644 +index 9353475f0f41ce96c3bc53a5ff69a137900c8142..e52f628f9c80fb2647890f0f77403e278dfebf1f 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc @@ -182,6 +182,7 @@ @@ -252,7 +252,7 @@ index 3555928a29b3c6022621c4e9b65531edbefa7797..9b36af8cd02f56810b6b8ed86d1c8ba5 #include "ui/gl/gl_switches.h" #include "url/gurl.h" #include "url/origin.h" -@@ -3416,6 +3417,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( +@@ -3408,6 +3409,7 @@ void RenderProcessHostImpl::PropagateBrowserCommandLineToRenderer( // Propagate the following switches to the renderer command line (along // with any associated values) if present in the browser command line. static const char* const kSwitchNames[] = { @@ -293,7 +293,7 @@ index 94ca8fd75212fa5c7b90823a112309dd7961353b..566393827ef739eb8fc0e24e6ee505e1 } diff --git a/third_party/blink/renderer/platform/widget/compositing/layer_tree_settings.cc b/third_party/blink/renderer/platform/widget/compositing/layer_tree_settings.cc -index 62ff201dae894250b84ad3c32f477ff9324e1906..e53116a55c234f1cbc2d8f05cc8090e931095f1a 100644 +index 895b440cc19c2bd9e14490171c7765fa278677af..487779555c1b5da2cda4d7ae4fa32a378987c3ce 100644 --- a/third_party/blink/renderer/platform/widget/compositing/layer_tree_settings.cc +++ b/third_party/blink/renderer/platform/widget/compositing/layer_tree_settings.cc @@ -25,6 +25,7 @@ diff --git a/patches/chromium/disable_compositor_recycling.patch b/patches/chromium/disable_compositor_recycling.patch index a4ba8282d9..9f2daac86b 100644 --- a/patches/chromium/disable_compositor_recycling.patch +++ b/patches/chromium/disable_compositor_recycling.patch @@ -6,10 +6,10 @@ Subject: fix: disabling compositor recycling Compositor recycling is useful for Chrome because there can be many tabs and spinning up a compositor for each one would be costly. In practice, Chrome uses the parent compositor code path of browser_compositor_view_mac.mm; the NSView of each tab is detached when it's hidden and attached when it's shown. For Electron, there is no parent compositor, so we're forced into the "own compositor" code path, which seems to be non-optimal and pretty ruthless in terms of the release of resources. Electron has no real concept of multiple tabs per window, so it should be okay to disable this ruthless recycling altogether in Electron. diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm -index 5aac5fcfe781e282b748630c07341d1b465d99ac..987b0e85ead3a33c8d0a93ac9a6c95782b22af96 100644 +index ec191047cca6d8e7d00e445942461e9b47098ec1..67adae61e7fa6ea0cab7c028132fce5f0c64b876 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm -@@ -491,7 +491,11 @@ +@@ -478,7 +478,11 @@ return; host()->WasHidden(); diff --git a/patches/chromium/disable_hidden.patch b/patches/chromium/disable_hidden.patch index 31ce398df5..530a6e0c86 100644 --- a/patches/chromium/disable_hidden.patch +++ b/patches/chromium/disable_hidden.patch @@ -6,10 +6,10 @@ Subject: disable_hidden.patch Electron uses this to disable background throttling for hidden windows. diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc -index 3ec7188cc015df085e46d3dac1374af1d92ae4d3..a1632e19959d163eecafef484204aa0dba919897 100644 +index cc527298ebe3cb9dc5b5d3fde3e4854a2062ec45..80b15389f7dcb946c9bb29359fa89f5d72f4e99b 100644 --- a/content/browser/renderer_host/render_widget_host_impl.cc +++ b/content/browser/renderer_host/render_widget_host_impl.cc -@@ -776,6 +776,9 @@ void RenderWidgetHostImpl::WasHidden() { +@@ -778,6 +778,9 @@ void RenderWidgetHostImpl::WasHidden() { if (is_hidden_) return; @@ -20,10 +20,10 @@ index 3ec7188cc015df085e46d3dac1374af1d92ae4d3..a1632e19959d163eecafef484204aa0d blink::mojom::PointerLockResult::kWrongDocument); diff --git a/content/browser/renderer_host/render_widget_host_impl.h b/content/browser/renderer_host/render_widget_host_impl.h -index b7a3b2bc9032934a8537a49b8e1fd895eae721dd..aa864537cf2c3002623427ecd10ff62c88e75aba 100644 +index da1bc9c7e01c6eef07b1066976e7487767d716f2..5d123c6c48b299745f7524ea8927043e1bd430a3 100644 --- a/content/browser/renderer_host/render_widget_host_impl.h +++ b/content/browser/renderer_host/render_widget_host_impl.h -@@ -864,6 +864,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl +@@ -865,6 +865,9 @@ class CONTENT_EXPORT RenderWidgetHostImpl void OnLocalSurfaceIdChanged( const cc::RenderFrameMetadata& metadata) override; @@ -34,10 +34,10 @@ index b7a3b2bc9032934a8537a49b8e1fd895eae721dd..aa864537cf2c3002623427ecd10ff62c // |routing_id| must not be MSG_ROUTING_NONE. // If this object outlives |delegate|, DetachDelegate() must be called when diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc -index afdd5aa89be899a1176a770c7a4c06f7fa2579ef..0ea6f2ee5bfd41bfb36db6de19a42128b4894dd8 100644 +index 239088813b9fa96e9e9899acee6f02bcb828ecde..7955f2cb725ef4c011bbbce74820d98783d56a0c 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc -@@ -605,7 +605,7 @@ void RenderWidgetHostViewAura::HideImpl() { +@@ -611,7 +611,7 @@ void RenderWidgetHostViewAura::HideImpl() { DCHECK(visibility_ == Visibility::HIDDEN || visibility_ == Visibility::OCCLUDED); diff --git a/patches/chromium/disable_unload_metrics.patch b/patches/chromium/disable_unload_metrics.patch index c6544c3f31..2683efaffe 100644 --- a/patches/chromium/disable_unload_metrics.patch +++ b/patches/chromium/disable_unload_metrics.patch @@ -24,10 +24,10 @@ This patch temporarily disables the metrics so we can have green CI, and we should continue seeking for a real fix. diff --git a/content/browser/renderer_host/navigator.cc b/content/browser/renderer_host/navigator.cc -index cb2bde331db92cd29a3af5ca2c065bbf02b39208..46ba89e09cf228bc022142e040763b5a9332764c 100644 +index 034aaf10263002789e941dbf989b407817030fbc..3af98993ba83688a1ba36008758ea9c489e2373e 100644 --- a/content/browser/renderer_host/navigator.cc +++ b/content/browser/renderer_host/navigator.cc -@@ -1105,6 +1105,7 @@ void Navigator::RecordNavigationMetrics( +@@ -1110,6 +1110,7 @@ void Navigator::RecordNavigationMetrics( .InMilliseconds()); } @@ -35,7 +35,7 @@ index cb2bde331db92cd29a3af5ca2c065bbf02b39208..46ba89e09cf228bc022142e040763b5a // If this is a same-process navigation and we have timestamps for unload // durations, fill those metrics out as well. if (params.unload_start && params.unload_end && -@@ -1151,6 +1152,7 @@ void Navigator::RecordNavigationMetrics( +@@ -1156,6 +1157,7 @@ void Navigator::RecordNavigationMetrics( first_before_unload_start_time) .InMilliseconds()); } diff --git a/patches/chromium/don_t_run_pcscan_notifythreadcreated_if_pcscan_is_disabled.patch b/patches/chromium/don_t_run_pcscan_notifythreadcreated_if_pcscan_is_disabled.patch index 8237cdfb96..b723674484 100644 --- a/patches/chromium/don_t_run_pcscan_notifythreadcreated_if_pcscan_is_disabled.patch +++ b/patches/chromium/don_t_run_pcscan_notifythreadcreated_if_pcscan_is_disabled.patch @@ -6,30 +6,23 @@ Subject: Don't run PCScan functions if PCScan is disabled PCScan should not be invoked if PCScan is disabled. Upstreamed at https://chromium-review.googlesource.com/c/chromium/src/+/2916657. diff --git a/base/allocator/partition_allocator/memory_reclaimer.cc b/base/allocator/partition_allocator/memory_reclaimer.cc -index fd846ca91cb17638bf07ca35bf695099174f8f00..5b2ab293ade39b2ecd68d0438034da77417b1e94 100644 +index 479b7caf6a2142e5097fd5dd75282deb35a1c402..9c2ab518fabebf58d081e3656affc0ea40f497ac 100644 --- a/base/allocator/partition_allocator/memory_reclaimer.cc +++ b/base/allocator/partition_allocator/memory_reclaimer.cc -@@ -121,6 +121,7 @@ void PartitionAllocMemoryReclaimer::Reclaim(int flags) { - AutoLock lock(lock_); // Has to protect from concurrent (Un)Register calls. - TRACE_EVENT0("base", "PartitionAllocMemoryReclaimer::Reclaim()"); - -+#if defined(PA_ALLOW_PCSCAN) - // PCScan quarantines freed slots. Trigger the scan first to let it call - // FreeNoHooksImmediate on slots that pass the quarantine. +@@ -136,7 +136,7 @@ void PartitionAllocMemoryReclaimer::Reclaim(int flags) { // -@@ -137,6 +138,7 @@ void PartitionAllocMemoryReclaimer::Reclaim(int flags) { - : PCScan::InvocationMode::kBlocking; - PCScan::PerformScanIfNeeded(invocation_mode); - } -+#endif - - #if defined(PA_THREAD_CACHE_SUPPORTED) - // Don't completely empty the thread cache outside of low memory situations, + // Lastly decommit empty slot spans and lastly try to discard unused pages at + // the end of the remaining active slots. +-#if PA_STARSCAN_ENABLE_STARSCAN_ON_RECLAIM ++#if PA_STARSCAN_ENABLE_STARSCAN_ON_RECLAIM && defined(PA_ALLOW_PCSCAN) + { + using PCScan = internal::PCScan; + const auto invocation_mode = flags & PartitionPurgeAggressiveReclaim diff --git a/base/threading/platform_thread_posix.cc b/base/threading/platform_thread_posix.cc -index e6c8ec66ab837ffa9c47495c170854a6fa000476..3e6eeda6e57a06b680cbfadea6fc886bbccbc247 100644 +index 4d717742610b6dc4419c632aa3f6b5494fa90c5e..8c5e20df3f7630610c88cf28420f3460531003e6 100644 --- a/base/threading/platform_thread_posix.cc +++ b/base/threading/platform_thread_posix.cc -@@ -39,6 +39,7 @@ +@@ -40,6 +40,7 @@ #endif #if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) @@ -37,8 +30,8 @@ index e6c8ec66ab837ffa9c47495c170854a6fa000476..3e6eeda6e57a06b680cbfadea6fc886b #include "base/allocator/partition_allocator/starscan/pcscan.h" #include "base/allocator/partition_allocator/starscan/stack/stack.h" #endif -@@ -72,7 +73,7 @@ void* ThreadFunc(void* params) { - base::ThreadRestrictions::SetSingletonAllowed(false); +@@ -73,7 +74,7 @@ void* ThreadFunc(void* params) { + base::DisallowSingleton(); #if !defined(OS_NACL) -#if BUILDFLAG(USE_PARTITION_ALLOC_AS_MALLOC) @@ -46,7 +39,7 @@ index e6c8ec66ab837ffa9c47495c170854a6fa000476..3e6eeda6e57a06b680cbfadea6fc886b internal::PCScan::NotifyThreadCreated(internal::GetStackPointer()); #endif -@@ -98,7 +99,7 @@ void* ThreadFunc(void* params) { +@@ -99,7 +100,7 @@ void* ThreadFunc(void* params) { PlatformThread::CurrentHandle().platform_handle(), PlatformThread::CurrentId()); @@ -56,7 +49,7 @@ index e6c8ec66ab837ffa9c47495c170854a6fa000476..3e6eeda6e57a06b680cbfadea6fc886b #endif diff --git a/base/threading/platform_thread_win.cc b/base/threading/platform_thread_win.cc -index 86e240b231d3236aea1b0343e0e6763282ff70c9..0d85d2acb6652a580f79a2c4ca2277562dd5156b 100644 +index 2959a82daffd1a59fb0bcda5b31023c039933faf..9b59e0bf9c74d423892909b44623a1a6cd96839e 100644 --- a/base/threading/platform_thread_win.cc +++ b/base/threading/platform_thread_win.cc @@ -28,6 +28,7 @@ diff --git a/patches/chromium/don_t_use_potentially_null_getwebframe_-_view_when_get_blink.patch b/patches/chromium/don_t_use_potentially_null_getwebframe_-_view_when_get_blink.patch index 9fb5bd6dba..1cb9d1c126 100644 --- a/patches/chromium/don_t_use_potentially_null_getwebframe_-_view_when_get_blink.patch +++ b/patches/chromium/don_t_use_potentially_null_getwebframe_-_view_when_get_blink.patch @@ -11,10 +11,10 @@ This regressed in https://chromium-review.googlesource.com/c/chromium/src/+/2572 Upstream: https://chromium-review.googlesource.com/c/chromium/src/+/2598393 diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_frame_impl.cc -index ebf2d997f03c36e5242405002c7dce583aec31dc..2cf1ac25f3c4ca0348502a37dbf84111842ced93 100644 +index 900b8125f3fc6dcec4a1637fae6fcb2af40af5ab..d37001436b32848ac4929f831560fa02cea7a22a 100644 --- a/content/renderer/render_frame_impl.cc +++ b/content/renderer/render_frame_impl.cc -@@ -2347,7 +2347,7 @@ const blink::WebView* RenderFrameImpl::GetWebView() const { +@@ -2344,7 +2344,7 @@ const blink::WebView* RenderFrameImpl::GetWebView() const { } const blink::web_pref::WebPreferences& RenderFrameImpl::GetBlinkPreferences() { diff --git a/patches/chromium/dump_syms.patch b/patches/chromium/dump_syms.patch index fc1aa66036..b96643f458 100644 --- a/patches/chromium/dump_syms.patch +++ b/patches/chromium/dump_syms.patch @@ -8,7 +8,7 @@ this but it is not a blocker for releasing Electron. This patch removes tthe hard fail on dylib resolve failure from dump_syms diff --git a/components/crash/content/tools/generate_breakpad_symbols.py b/components/crash/content/tools/generate_breakpad_symbols.py -index 149c2b49c21efe7f6c5449ea225c8ed7d52287a8..4b68592d88cf703a6abbe8f875bffefdee8272bc 100755 +index f8802dae3832ce5f92ce0585d8489167b7d18ceb..873d1d79af70f3cde37db8aed7117be254ce23b6 100755 --- a/components/crash/content/tools/generate_breakpad_symbols.py +++ b/components/crash/content/tools/generate_breakpad_symbols.py @@ -206,7 +206,7 @@ def GetSharedLibraryDependenciesMac(binary, exe_path): diff --git a/patches/chromium/enable_reset_aspect_ratio.patch b/patches/chromium/enable_reset_aspect_ratio.patch index 7925b617b0..b90b78c76f 100644 --- a/patches/chromium/enable_reset_aspect_ratio.patch +++ b/patches/chromium/enable_reset_aspect_ratio.patch @@ -19,10 +19,10 @@ index d8411ddc4fd88a1416181cce366b112df3f48d63..a33ec53b96fec67feacc92e71fa6ed17 aspect_ratio.height()); } diff --git a/ui/views/win/hwnd_message_handler.cc b/ui/views/win/hwnd_message_handler.cc -index 9cac7284aeacda2d877502f97d9e442ae4fdadd3..33c533665589f78425488547b550876c5161f010 100644 +index 149edcde6c1ad336f39f65c36ed2bb87a2b2a800..a235cab941ec583a8dc9cb5e4105c2d7baae02df 100644 --- a/ui/views/win/hwnd_message_handler.cc +++ b/ui/views/win/hwnd_message_handler.cc -@@ -929,8 +929,11 @@ void HWNDMessageHandler::SetFullscreen(bool fullscreen) { +@@ -928,8 +928,11 @@ void HWNDMessageHandler::SetFullscreen(bool fullscreen) { } void HWNDMessageHandler::SetAspectRatio(float aspect_ratio) { diff --git a/patches/chromium/export_gin_v8platform_pageallocator_for_usage_outside_of_the_gin.patch b/patches/chromium/export_gin_v8platform_pageallocator_for_usage_outside_of_the_gin.patch index 0a3ebff5c4..80cf9ac89f 100644 --- a/patches/chromium/export_gin_v8platform_pageallocator_for_usage_outside_of_the_gin.patch +++ b/patches/chromium/export_gin_v8platform_pageallocator_for_usage_outside_of_the_gin.patch @@ -9,7 +9,7 @@ correctly tagged with MAP_JIT we need to use gins page allocator instead of the default V8 allocator. This probably can't be usptreamed. diff --git a/gin/public/v8_platform.h b/gin/public/v8_platform.h -index e5da06566ffef8d0b394c0d7fde3916ce49da06e..76bbdf35f4751c87a6d25cc5e8db7aebf43bc821 100644 +index c9b535eb083c250f4f874d8e6bd0c29ea9f3a10f..f220b8669507a4aea616b0dfbabda509647b714c 100644 --- a/gin/public/v8_platform.h +++ b/gin/public/v8_platform.h @@ -30,6 +30,7 @@ class GIN_EXPORT V8Platform : public v8::Platform { @@ -18,10 +18,10 @@ index e5da06566ffef8d0b394c0d7fde3916ce49da06e..76bbdf35f4751c87a6d25cc5e8db7aeb PageAllocator* GetPageAllocator() override; + static PageAllocator* PageAllocator(); void OnCriticalMemoryPressure() override; + v8::ZoneBackingAllocator* GetZoneBackingAllocator() override; #endif - diff --git a/gin/v8_platform.cc b/gin/v8_platform.cc -index 44f8ffeda27cbfebcfc57e1312e9e9f4ca3ab576..356b5a7c8f39fab97ff434850038f8f6cee750c8 100644 +index 563888e117dd234056a38a7bba971033e31d0484..cc808c563bbd95e39b6238adcccb3b32575b573e 100644 --- a/gin/v8_platform.cc +++ b/gin/v8_platform.cc @@ -368,6 +368,10 @@ PageAllocator* V8Platform::GetPageAllocator() { diff --git a/patches/chromium/expose_setuseragent_on_networkcontext.patch b/patches/chromium/expose_setuseragent_on_networkcontext.patch index 6ce000a618..6073a7c36d 100644 --- a/patches/chromium/expose_setuseragent_on_networkcontext.patch +++ b/patches/chromium/expose_setuseragent_on_networkcontext.patch @@ -10,10 +10,10 @@ patch may be merged upstream, at which point this patch should be removed. diff --git a/net/url_request/static_http_user_agent_settings.h b/net/url_request/static_http_user_agent_settings.h -index 0ccfe130f00ec3b6c75cd8ee04d5a2777e1fd00c..653829457d58bf92057cc36aa8a289703d8b0577 100644 +index ab97cbf061c89be9f11dde42b7371668658208a6..718209098ee4fb6cfc9aaa1ef4af691cf8d79366 100644 --- a/net/url_request/static_http_user_agent_settings.h +++ b/net/url_request/static_http_user_agent_settings.h -@@ -26,13 +26,17 @@ class NET_EXPORT StaticHttpUserAgentSettings : public HttpUserAgentSettings { +@@ -31,13 +31,17 @@ class NET_EXPORT StaticHttpUserAgentSettings : public HttpUserAgentSettings { accept_language_ = new_accept_language; } @@ -29,14 +29,14 @@ index 0ccfe130f00ec3b6c75cd8ee04d5a2777e1fd00c..653829457d58bf92057cc36aa8a28970 std::string accept_language_; - const std::string user_agent_; + std::string user_agent_; - - DISALLOW_COPY_AND_ASSIGN(StaticHttpUserAgentSettings); }; + + } // namespace net diff --git a/services/network/network_context.cc b/services/network/network_context.cc -index 7bd73dae3a77cb16cf282d2df7f4ff7a8f412805..3d3795cd1911647f026addf0d6e6bcc18325f641 100644 +index 39ff43884fbc2b6768d7ddb6e9d63031a973b8fa..5d985fc94f35a1258ecee212c56561d56a9a3ff6 100644 --- a/services/network/network_context.cc +++ b/services/network/network_context.cc -@@ -1292,6 +1292,13 @@ void NetworkContext::SetNetworkConditions( +@@ -1295,6 +1295,13 @@ void NetworkContext::SetNetworkConditions( std::move(network_conditions)); } @@ -51,10 +51,10 @@ index 7bd73dae3a77cb16cf282d2df7f4ff7a8f412805..3d3795cd1911647f026addf0d6e6bcc1 // This may only be called on NetworkContexts created with the constructor // that calls MakeURLRequestContext(). diff --git a/services/network/network_context.h b/services/network/network_context.h -index 049c8e5e0e34454f03a823b31a5f7755d67cfb07..d928b8c314f8c3384215a87aacd01a7f570316c9 100644 +index 8362af824a8dd4f721eebdbff2d544f7f5093d16..28a9ce2bfc0d84bb15b5e40d9697fbdeaa57a96a 100644 --- a/services/network/network_context.h +++ b/services/network/network_context.h -@@ -271,6 +271,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -274,6 +274,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext void CloseIdleConnections(CloseIdleConnectionsCallback callback) override; void SetNetworkConditions(const base::UnguessableToken& throttling_profile_id, mojom::NetworkConditionsPtr conditions) override; @@ -63,10 +63,10 @@ index 049c8e5e0e34454f03a823b31a5f7755d67cfb07..d928b8c314f8c3384215a87aacd01a7f void SetEnableReferrers(bool enable_referrers) override; #if BUILDFLAG(IS_CHROMEOS_ASH) diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom -index d8e7d0d35317fe1124bf81f60faf2b35ae19a3d7..eed5109002dd99a6e65c8882530a5fd2a69ce28c 100644 +index 8f8b496324265b25046a88cbac7decec056f061e..d7c20f76f96d43df71b503ca7a2a14446e9bbe96 100644 --- a/services/network/public/mojom/network_context.mojom +++ b/services/network/public/mojom/network_context.mojom -@@ -1029,6 +1029,9 @@ interface NetworkContext { +@@ -1030,6 +1030,9 @@ interface NetworkContext { SetNetworkConditions(mojo_base.mojom.UnguessableToken throttling_profile_id, NetworkConditions? conditions); @@ -77,7 +77,7 @@ index d8e7d0d35317fe1124bf81f60faf2b35ae19a3d7..eed5109002dd99a6e65c8882530a5fd2 SetAcceptLanguage(string new_accept_language); diff --git a/services/network/test/test_network_context.h b/services/network/test/test_network_context.h -index f1fbbf10df01876e8ae3418b72cd0f4fcbda542b..780ccbe1a9ff8ab91b39fdcef74cd5805ba8583d 100644 +index e41a44deca2e33b8c3f2c9c2123326b832246529..5bdc6b5a75eae0f3fb049998a7c1671753d17285 100644 --- a/services/network/test/test_network_context.h +++ b/services/network/test/test_network_context.h @@ -134,6 +134,7 @@ class TestNetworkContext : public mojom::NetworkContext { diff --git a/patches/chromium/extend_apply_webpreferences.patch b/patches/chromium/extend_apply_webpreferences.patch index 4676aba8ab..2bb07319e9 100644 --- a/patches/chromium/extend_apply_webpreferences.patch +++ b/patches/chromium/extend_apply_webpreferences.patch @@ -12,7 +12,7 @@ Ideally we could add an embedder observer pattern here but that can be done in future work. diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc -index c26e087f2f4d7a1446ce439e5a08a34aa2ccfec4..e4e942300652dfff86aded228307d800c59c1012 100644 +index baf07861d4be89485605f87d344fcffdd220a063..efdb4d157a378b26f9356eaa12e78762904dc4e7 100644 --- a/third_party/blink/renderer/core/exported/web_view_impl.cc +++ b/third_party/blink/renderer/core/exported/web_view_impl.cc @@ -155,6 +155,7 @@ diff --git a/patches/chromium/feat_add_data_parameter_to_processsingleton.patch b/patches/chromium/feat_add_data_parameter_to_processsingleton.patch index d7b9084c8b..447f7ed42f 100644 --- a/patches/chromium/feat_add_data_parameter_to_processsingleton.patch +++ b/patches/chromium/feat_add_data_parameter_to_processsingleton.patch @@ -61,10 +61,10 @@ index eec994c4252f17d9c9c41e66d5dae6509ed98a18..e538c9b76da4d4435e10cd3848438446 #if defined(OS_WIN) bool EscapeVirtualization(const base::FilePath& user_data_dir); diff --git a/chrome/browser/process_singleton_posix.cc b/chrome/browser/process_singleton_posix.cc -index 05c86df6c871ca7d0926836edc2f6137fcf229cb..01627f6b46c64a24870fa05b9efeaf949203c2ac 100644 +index 727333dd6abec99643e31bc77ed2cc8f3d5a0a0b..e5361397f78636816507355e7db6a9e55e6ed234 100644 --- a/chrome/browser/process_singleton_posix.cc +++ b/chrome/browser/process_singleton_posix.cc -@@ -564,6 +564,7 @@ class ProcessSingleton::LinuxWatcher +@@ -567,6 +567,7 @@ class ProcessSingleton::LinuxWatcher // |reader| is for sending back ACK message. void HandleMessage(const std::string& current_dir, const std::vector& argv, @@ -72,7 +72,7 @@ index 05c86df6c871ca7d0926836edc2f6137fcf229cb..01627f6b46c64a24870fa05b9efeaf94 SocketReader* reader); private: -@@ -620,13 +621,16 @@ void ProcessSingleton::LinuxWatcher::StartListening(int socket) { +@@ -621,13 +622,16 @@ void ProcessSingleton::LinuxWatcher::StartListening(int socket) { } void ProcessSingleton::LinuxWatcher::HandleMessage( @@ -91,7 +91,7 @@ index 05c86df6c871ca7d0926836edc2f6137fcf229cb..01627f6b46c64a24870fa05b9efeaf94 // Send back "ACK" message to prevent the client process from starting up. reader->FinishWithACK(kACKToken, base::size(kACKToken) - 1); } else { -@@ -674,7 +678,8 @@ void ProcessSingleton::LinuxWatcher::SocketReader:: +@@ -675,7 +679,8 @@ void ProcessSingleton::LinuxWatcher::SocketReader:: } } @@ -101,7 +101,7 @@ index 05c86df6c871ca7d0926836edc2f6137fcf229cb..01627f6b46c64a24870fa05b9efeaf94 const size_t kMinMessageLength = base::size(kStartToken) + 4; if (bytes_read_ < kMinMessageLength) { buf_[bytes_read_] = 0; -@@ -704,10 +709,25 @@ void ProcessSingleton::LinuxWatcher::SocketReader:: +@@ -705,10 +710,25 @@ void ProcessSingleton::LinuxWatcher::SocketReader:: tokens.erase(tokens.begin()); tokens.erase(tokens.begin()); @@ -128,7 +128,7 @@ index 05c86df6c871ca7d0926836edc2f6137fcf229cb..01627f6b46c64a24870fa05b9efeaf94 fd_watch_controller_.reset(); // LinuxWatcher::HandleMessage() is in charge of destroying this SocketReader -@@ -736,8 +756,10 @@ void ProcessSingleton::LinuxWatcher::SocketReader::FinishWithACK( +@@ -737,8 +757,10 @@ void ProcessSingleton::LinuxWatcher::SocketReader::FinishWithACK( // ProcessSingleton::ProcessSingleton( const base::FilePath& user_data_dir, @@ -139,7 +139,7 @@ index 05c86df6c871ca7d0926836edc2f6137fcf229cb..01627f6b46c64a24870fa05b9efeaf94 current_pid_(base::GetCurrentProcId()), watcher_(new LinuxWatcher(this)) { socket_path_ = user_data_dir.Append(chrome::kSingletonSocketFilename); -@@ -854,7 +876,8 @@ ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessWithTimeout( +@@ -855,7 +877,8 @@ ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessWithTimeout( sizeof(socket_timeout)); // Found another process, prepare our command line @@ -149,7 +149,7 @@ index 05c86df6c871ca7d0926836edc2f6137fcf229cb..01627f6b46c64a24870fa05b9efeaf94 std::string to_send(kStartToken); to_send.push_back(kTokenDelimiter); -@@ -864,11 +887,21 @@ ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessWithTimeout( +@@ -865,11 +888,21 @@ ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessWithTimeout( to_send.append(current_dir.value()); const std::vector& argv = cmd_line.argv(); @@ -271,7 +271,7 @@ index 19d5659d665321da54e05cee01be7da02e0c283b..600ff701b025ba190d05bc30994e3d3e return PROCESS_NOTIFIED; case chrome::NOTIFY_FAILED: diff --git a/chrome/browser/win/chrome_process_finder.cc b/chrome/browser/win/chrome_process_finder.cc -index 788abf9a04f2a3725d67f7f8d84615016b241c8e..6ae6d97708e18c25c59a0b1e3d2d58f27d980ffb 100644 +index b4fec8878c37b9d157ea768e3b6d99399a988c75..e1cb0f21f752aaeee2c360ce9c5fd08bfede26e3 100644 --- a/chrome/browser/win/chrome_process_finder.cc +++ b/chrome/browser/win/chrome_process_finder.cc @@ -34,7 +34,9 @@ HWND FindRunningChromeWindow(const base::FilePath& user_data_dir) { diff --git a/patches/chromium/feat_add_set_theme_source_to_allow_apps_to.patch b/patches/chromium/feat_add_set_theme_source_to_allow_apps_to.patch index 2501d50a50..7d0ee1b44d 100644 --- a/patches/chromium/feat_add_set_theme_source_to_allow_apps_to.patch +++ b/patches/chromium/feat_add_set_theme_source_to_allow_apps_to.patch @@ -13,10 +13,10 @@ uses internally for things like menus and devtools. We can remove this patch once it has in some shape been upstreamed. diff --git a/ui/native_theme/native_theme.cc b/ui/native_theme/native_theme.cc -index 6471581569072714141e1ccea083f5600def6c4f..b203baecad684f37d9f193da12647767ffc938ef 100644 +index 3a023294c980ac89204b14748dc05bfdb1fbd4ad..94d25b52228d40ac685ae32a3fd99816b20a014b 100644 --- a/ui/native_theme/native_theme.cc +++ b/ui/native_theme/native_theme.cc -@@ -149,6 +149,8 @@ absl::optional NativeTheme::GetColorProviderColor( +@@ -150,6 +150,8 @@ absl::optional NativeTheme::GetColorProviderColor( } bool NativeTheme::ShouldUseDarkColors() const { @@ -26,10 +26,10 @@ index 6471581569072714141e1ccea083f5600def6c4f..b203baecad684f37d9f193da12647767 } diff --git a/ui/native_theme/native_theme.h b/ui/native_theme/native_theme.h -index 44cd465c17b509b247b2257b1c978504e2eb2254..7e5666964836c71e587ba230320afe70b69afe24 100644 +index 01c999166dd30d3f994d2e449c524f9e8676ad0d..b4d46f557d9ea4ef62f6ae1acd2b9b45c79ebea9 100644 --- a/ui/native_theme/native_theme.h +++ b/ui/native_theme/native_theme.h -@@ -405,6 +405,22 @@ class NATIVE_THEME_EXPORT NativeTheme { +@@ -398,6 +398,22 @@ class NATIVE_THEME_EXPORT NativeTheme { SkColor GetUnprocessedSystemColor(ColorId color_id, ColorScheme color_scheme) const; @@ -52,19 +52,19 @@ index 44cd465c17b509b247b2257b1c978504e2eb2254..7e5666964836c71e587ba230320afe70 // Returns a shared instance of the native theme that should be used for web // rendering. Do not use it in a normal application context (i.e. browser). // The returned object should not be deleted by the caller. This function is -@@ -580,6 +596,7 @@ class NATIVE_THEME_EXPORT NativeTheme { +@@ -577,6 +593,7 @@ class NATIVE_THEME_EXPORT NativeTheme { bool forced_colors_ = false; PreferredColorScheme preferred_color_scheme_ = PreferredColorScheme::kLight; PreferredContrast preferred_contrast_ = PreferredContrast::kNoPreference; + ThemeSource theme_source_ = ThemeSource::kSystem; SEQUENCE_CHECKER(sequence_checker_); - + }; diff --git a/ui/native_theme/native_theme_win.cc b/ui/native_theme/native_theme_win.cc -index f9772f86a1e233bbf3cc429e36dac8c62f61cd20..2615af462feed395974e76a4fbaf8ee4b3b4c0a1 100644 +index 07852493fd23b8c1f057dc7ad830b6884db50a88..fee85c5c95bf7908cbd460619f71977cc73f3e6a 100644 --- a/ui/native_theme/native_theme_win.cc +++ b/ui/native_theme/native_theme_win.cc -@@ -748,6 +748,8 @@ bool NativeThemeWin::ShouldUseDarkColors() const { +@@ -677,6 +677,8 @@ bool NativeThemeWin::ShouldUseDarkColors() const { // ...unless --force-dark-mode was specified in which case caveat emptor. if (InForcedColorsMode() && !IsForcedDarkMode()) return false; diff --git a/patches/chromium/feat_add_streaming-protocol_registry_to_multibuffer_data_source.patch b/patches/chromium/feat_add_streaming-protocol_registry_to_multibuffer_data_source.patch index 28f13a7223..716e507a55 100644 --- a/patches/chromium/feat_add_streaming-protocol_registry_to_multibuffer_data_source.patch +++ b/patches/chromium/feat_add_streaming-protocol_registry_to_multibuffer_data_source.patch @@ -26,7 +26,7 @@ index 274308e54f2b5c6311d68daa162c146113ba669e..e450fe31011620d87219ce28ef37fb5e // in-memory sliding window. // diff --git a/third_party/blink/renderer/platform/media/multi_buffer_data_source.cc b/third_party/blink/renderer/platform/media/multi_buffer_data_source.cc -index fa51f3f0c43a4b2e33fb8dc94bba18462903a051..e1ec6fe15613a55aa71b31d136a3c12b461cb784 100644 +index fcc1a116176a372095b4d032a45a05e225c10a1a..aad9ba1910f70d4377c9e131787e4b57c6477863 100644 --- a/third_party/blink/renderer/platform/media/multi_buffer_data_source.cc +++ b/third_party/blink/renderer/platform/media/multi_buffer_data_source.cc @@ -10,8 +10,10 @@ @@ -42,7 +42,7 @@ index fa51f3f0c43a4b2e33fb8dc94bba18462903a051..e1ec6fe15613a55aa71b31d136a3c12b #include "third_party/blink/public/platform/media/buffered_data_source_host_impl.h" @@ -60,8 +62,20 @@ const int kUpdateBufferSizeFrequency = 32; // How long to we delay a seek after a read? - constexpr base::TimeDelta kSeekDelay = base::TimeDelta::FromMilliseconds(20); + constexpr base::TimeDelta kSeekDelay = base::Milliseconds(20); +std::vector* GetStreamingSchemes() { + static base::NoDestructor> streaming_schemes({ diff --git a/patches/chromium/feat_enable_offscreen_rendering_with_viz_compositor.patch b/patches/chromium/feat_enable_offscreen_rendering_with_viz_compositor.patch index 3bdace751c..1ad367aa10 100644 --- a/patches/chromium/feat_enable_offscreen_rendering_with_viz_compositor.patch +++ b/patches/chromium/feat_enable_offscreen_rendering_with_viz_compositor.patch @@ -37,10 +37,10 @@ index 3b00759e513dc7e19fd68398e853c8ce6ac73905..47f4e7cc2e8b3141dcaf9e7a498fec32 // TODO(crbug.com/1052397): Revisit the macro expression once build flag switch // of lacros-chrome is complete. diff --git a/components/viz/host/host_display_client.h b/components/viz/host/host_display_client.h -index 94c5293d528a60c16ec209b68da93217d030e068..e833b204d02869b57d888d6e9480a6a484013581 100644 +index 888133f8e05fb02792ed43d8997e0732aa2d9fe3..eb4723689413cca494fdf9b9d052249405fb5584 100644 --- a/components/viz/host/host_display_client.h +++ b/components/viz/host/host_display_client.h -@@ -38,10 +38,9 @@ class VIZ_HOST_EXPORT HostDisplayClient : public mojom::DisplayClient { +@@ -42,10 +42,9 @@ class VIZ_HOST_EXPORT HostDisplayClient : public mojom::DisplayClient { const gfx::CALayerParams& ca_layer_params) override; #endif @@ -68,10 +68,10 @@ index b04f654fe820f821b18e059cdd40085fc2384c4e..ee22012b01ef92bb3b32b5b1081609a7 if (!canvas_) { diff --git a/components/viz/host/layered_window_updater_impl.h b/components/viz/host/layered_window_updater_impl.h -index 1026b739d283f0fc252fa2af83a6d4cf51bc8553..fe562ab60ce98b8bb0c5080a6428deb319a4dd04 100644 +index 894237a777fbf829e309772153fa5fcb9eec5598..4310c08b0c2cf97f387d290ae85c14f8539f2002 100644 --- a/components/viz/host/layered_window_updater_impl.h +++ b/components/viz/host/layered_window_updater_impl.h -@@ -35,7 +35,7 @@ class VIZ_HOST_EXPORT LayeredWindowUpdaterImpl +@@ -39,7 +39,7 @@ class VIZ_HOST_EXPORT LayeredWindowUpdaterImpl // mojom::LayeredWindowUpdater implementation. void OnAllocatedSharedMemory(const gfx::Size& pixel_size, base::UnsafeSharedMemoryRegion region) override; @@ -81,7 +81,7 @@ index 1026b739d283f0fc252fa2af83a6d4cf51bc8553..fe562ab60ce98b8bb0c5080a6428deb3 private: const HWND hwnd_; diff --git a/components/viz/service/BUILD.gn b/components/viz/service/BUILD.gn -index 34dad16dac56631dae62e2c38b8ed7bf6ca2eb41..25f114ceb4c18a88bd23975c85fab67a6311f808 100644 +index eb36a21f0f79a84a3517b55f9a83f6a4c93dea77..53528e8d340f9417d2a3bf95c092ac2e7f2b3500 100644 --- a/components/viz/service/BUILD.gn +++ b/components/viz/service/BUILD.gn @@ -137,6 +137,8 @@ viz_component("service") { @@ -108,7 +108,7 @@ index 77d463e683d8b8d3a202681a6884eacaab79d70d..05d51cb2637d34c073cd0025e3658036 } // namespace viz diff --git a/components/viz/service/display_embedder/output_surface_provider_impl.cc b/components/viz/service/display_embedder/output_surface_provider_impl.cc -index 827084542417d45c9db8082e2c2537e7bdb8ff7f..927b48bbd855fdaebe2b26b8efbb7c48fec0c1a6 100644 +index 40a9a82819702852427435e497427a0d0067f5c4..eb0065802bac4647bbbb50af97d1dc92fac90804 100644 --- a/components/viz/service/display_embedder/output_surface_provider_impl.cc +++ b/components/viz/service/display_embedder/output_surface_provider_impl.cc @@ -25,6 +25,7 @@ @@ -127,7 +127,7 @@ index 827084542417d45c9db8082e2c2537e7bdb8ff7f..927b48bbd855fdaebe2b26b8efbb7c48 #include "ui/base/ui_base_switches.h" #include "ui/gl/gl_context.h" #include "ui/gl/init/gl_factory.h" -@@ -130,7 +132,8 @@ std::unique_ptr OutputSurfaceProviderImpl::CreateOutputSurface( +@@ -125,7 +127,8 @@ std::unique_ptr OutputSurfaceProviderImpl::CreateOutputSurface( mojom::DisplayClient* display_client, DisplayCompositorMemoryAndTaskController* gpu_dependency, const RendererSettings& renderer_settings, @@ -137,7 +137,7 @@ index 827084542417d45c9db8082e2c2537e7bdb8ff7f..927b48bbd855fdaebe2b26b8efbb7c48 #if BUILDFLAG(IS_CHROMEOS_ASH) if (surface_handle == gpu::kNullSurfaceHandle) return std::make_unique(); -@@ -142,7 +145,7 @@ std::unique_ptr OutputSurfaceProviderImpl::CreateOutputSurface( +@@ -137,7 +140,7 @@ std::unique_ptr OutputSurfaceProviderImpl::CreateOutputSurface( if (!gpu_compositing) { output_surface = std::make_unique( @@ -146,7 +146,7 @@ index 827084542417d45c9db8082e2c2537e7bdb8ff7f..927b48bbd855fdaebe2b26b8efbb7c48 } else if (renderer_settings.use_skia_renderer) { DCHECK(gpu_dependency); { -@@ -251,10 +254,22 @@ std::unique_ptr OutputSurfaceProviderImpl::CreateOutputSurface( +@@ -242,10 +245,22 @@ std::unique_ptr OutputSurfaceProviderImpl::CreateOutputSurface( std::unique_ptr OutputSurfaceProviderImpl::CreateSoftwareOutputDeviceForPlatform( gpu::SurfaceHandle surface_handle, @@ -171,10 +171,10 @@ index 827084542417d45c9db8082e2c2537e7bdb8ff7f..927b48bbd855fdaebe2b26b8efbb7c48 return CreateSoftwareOutputDeviceWin(surface_handle, &output_device_backing_, display_client); diff --git a/components/viz/service/display_embedder/output_surface_provider_impl.h b/components/viz/service/display_embedder/output_surface_provider_impl.h -index a6bb42cdbc567f526cc70c5c4d9b967274dc0332..d116844635922c8a1086dfa13063b8ae8b43ce59 100644 +index e62a7c718e704725ad88f25cba82855b1b22fd64..4508ff299c495f14f0e63f55d617bb449aa78050 100644 --- a/components/viz/service/display_embedder/output_surface_provider_impl.h +++ b/components/viz/service/display_embedder/output_surface_provider_impl.h -@@ -61,12 +61,14 @@ class VIZ_SERVICE_EXPORT OutputSurfaceProviderImpl +@@ -66,12 +66,14 @@ class VIZ_SERVICE_EXPORT OutputSurfaceProviderImpl mojom::DisplayClient* display_client, DisplayCompositorMemoryAndTaskController* gpu_dependency, const RendererSettings& renderer_settings, @@ -192,10 +192,10 @@ index a6bb42cdbc567f526cc70c5c4d9b967274dc0332..d116844635922c8a1086dfa13063b8ae GpuServiceImpl* const gpu_service_impl_; gpu::CommandBufferTaskExecutor* const task_executor_; diff --git a/components/viz/service/display_embedder/software_output_device_mac.cc b/components/viz/service/display_embedder/software_output_device_mac.cc -index 49149081cc603f14eacee647cbb2fcf8ed5e66fd..9ff3f2ee203403fdaa31edb8a0bcc000c4d214d7 100644 +index 33e12349a951ef533b964d1158f8fa124623e946..fc04bcaffefc277dd1d0cdd766168de017fedca8 100644 --- a/components/viz/service/display_embedder/software_output_device_mac.cc +++ b/components/viz/service/display_embedder/software_output_device_mac.cc -@@ -102,6 +102,8 @@ void SoftwareOutputDeviceMac::UpdateAndCopyBufferDamage( +@@ -105,6 +105,8 @@ void SoftwareOutputDeviceMac::UpdateAndCopyBufferDamage( SkCanvas* SoftwareOutputDeviceMac::BeginPaint( const gfx::Rect& new_damage_rect) { @@ -204,7 +204,7 @@ index 49149081cc603f14eacee647cbb2fcf8ed5e66fd..9ff3f2ee203403fdaa31edb8a0bcc000 // Record the previous paint buffer. Buffer* previous_paint_buffer = buffer_queue_.empty() ? nullptr : buffer_queue_.back().get(); -@@ -187,6 +189,7 @@ void SoftwareOutputDeviceMac::EndPaint() { +@@ -190,6 +192,7 @@ void SoftwareOutputDeviceMac::EndPaint() { ca_layer_params.is_empty = false; ca_layer_params.scale_factor = scale_factor_; ca_layer_params.pixel_size = pixel_size_; @@ -213,10 +213,10 @@ index 49149081cc603f14eacee647cbb2fcf8ed5e66fd..9ff3f2ee203403fdaa31edb8a0bcc000 IOSurfaceCreateMachPort(current_paint_buffer_->io_surface)); client_->SoftwareDeviceUpdatedCALayerParams(ca_layer_params); diff --git a/components/viz/service/display_embedder/software_output_device_mac.h b/components/viz/service/display_embedder/software_output_device_mac.h -index f3867356e3d641416e00e6d115ae9ae2a0be90ab..b1d192d2b20ccb63fba07093101d745e5ffe86dd 100644 +index 1558d731a57332a66f9ef76b9cd252ba8cfa5a7b..06b954e01be417f49ea8211973920904be920709 100644 --- a/components/viz/service/display_embedder/software_output_device_mac.h +++ b/components/viz/service/display_embedder/software_output_device_mac.h -@@ -56,6 +56,7 @@ class VIZ_SERVICE_EXPORT SoftwareOutputDeviceMac : public SoftwareOutputDevice { +@@ -60,6 +60,7 @@ class VIZ_SERVICE_EXPORT SoftwareOutputDeviceMac : public SoftwareOutputDevice { void UpdateAndCopyBufferDamage(Buffer* previous_paint_buffer, const SkRegion& new_damage_rect); @@ -484,7 +484,7 @@ index 0000000000000000000000000000000000000000..48fa86caaab3c15764f105eb7ad2aecf + +#endif // COMPONENTS_VIZ_SERVICE_DISPLAY_EMBEDDER_SOFTWARE_OUTPUT_DEVICE_PROXY_H_ diff --git a/components/viz/service/display_embedder/software_output_device_win.cc b/components/viz/service/display_embedder/software_output_device_win.cc -index 599b06c1765ef4ddbfeb2fd96e0875098f7c6ae1..2151fc8aa710162a3870639bd6e952df9d15a0be 100644 +index 583e3e2525c753a0962d481fc67a3582df75d0e9..9416ec929bebcff7f07088e635376ef232eb515f 100644 --- a/components/viz/service/display_embedder/software_output_device_win.cc +++ b/components/viz/service/display_embedder/software_output_device_win.cc @@ -191,7 +191,7 @@ void SoftwareOutputDeviceWinProxy::EndPaintDelegated( @@ -497,7 +497,7 @@ index 599b06c1765ef4ddbfeb2fd96e0875098f7c6ae1..2151fc8aa710162a3870639bd6e952df waiting_on_draw_ack_ = true; diff --git a/components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc b/components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc -index be4b04dc525a548276eed50cbfc83603b1f2095b..d9995ac8b5e832ac329ce113aa837a6a587c39bd 100644 +index 8ed8bfb01ae60f1bed9d54b98afe1820c4858532..690d9bc6e96d1d933cc6f2279494489a505db6e7 100644 --- a/components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc +++ b/components/viz/service/frame_sinks/root_compositor_frame_sink_impl.cc @@ -47,7 +47,8 @@ RootCompositorFrameSinkImpl::Create( @@ -511,10 +511,10 @@ index be4b04dc525a548276eed50cbfc83603b1f2095b..d9995ac8b5e832ac329ce113aa837a6a // Creating output surface failed. The host can send a new request, possibly // with a different compositing mode. diff --git a/content/browser/compositor/viz_process_transport_factory.cc b/content/browser/compositor/viz_process_transport_factory.cc -index 50ff2c9facc2a2155bd0882924335294277fe3b6..ef7707d5195bfba3675e5aed6f2bc3b63bec51cf 100644 +index 53c23a97a54a432b2aefe148657a27ac254e98c3..0d1694e58c6807eacc074aaab4aad2e227d1a306 100644 --- a/content/browser/compositor/viz_process_transport_factory.cc +++ b/content/browser/compositor/viz_process_transport_factory.cc -@@ -395,8 +395,14 @@ void VizProcessTransportFactory::OnEstablishedGpuChannel( +@@ -382,8 +382,14 @@ void VizProcessTransportFactory::OnEstablishedGpuChannel( compositor_data.display_private.reset(); root_params->display_private = compositor_data.display_private.BindNewEndpointAndPassReceiver(); @@ -567,10 +567,10 @@ index 6b7fbb6cf13dc8ee6ade0878a9a2c1efc5d4d3f1..e2af75168cb914a7b3b4a6c9b6a28549 + Draw(gfx.mojom.Rect damage_rect) => (); }; diff --git a/ui/compositor/compositor.h b/ui/compositor/compositor.h -index dfb0c89dc7bd8edf5787ddab50c54a847e6a0140..316d970d1327755768fd92d7457d8b9b26804503 100644 +index 6220caafb2cbad4dcd251767c546e72aae03af8b..2bbc85cc6db1cad719eeadb0c256f9d001ba50c1 100644 --- a/ui/compositor/compositor.h +++ b/ui/compositor/compositor.h -@@ -81,6 +81,7 @@ class DisplayPrivate; +@@ -80,6 +80,7 @@ class DisplayPrivate; class ExternalBeginFrameController; } // namespace mojom class ContextProvider; @@ -578,7 +578,7 @@ index dfb0c89dc7bd8edf5787ddab50c54a847e6a0140..316d970d1327755768fd92d7457d8b9b class HostFrameSinkManager; class LocalSurfaceId; class RasterContextProvider; -@@ -137,6 +138,16 @@ class COMPOSITOR_EXPORT ContextFactory { +@@ -136,6 +137,16 @@ class COMPOSITOR_EXPORT ContextFactory { virtual viz::HostFrameSinkManager* GetHostFrameSinkManager() = 0; }; @@ -595,7 +595,7 @@ index dfb0c89dc7bd8edf5787ddab50c54a847e6a0140..316d970d1327755768fd92d7457d8b9b // Compositor object to take care of GPU painting. // A Browser compositor object is responsible for generating the final // displayable form of pixels comprising a single widget's contents. It draws an -@@ -172,6 +183,9 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, +@@ -175,6 +186,9 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, // Schedules a redraw of the layer tree associated with this compositor. void ScheduleDraw(); @@ -605,7 +605,7 @@ index dfb0c89dc7bd8edf5787ddab50c54a847e6a0140..316d970d1327755768fd92d7457d8b9b // Sets the root of the layer tree drawn by this Compositor. The root layer // must have no parent. The compositor's root layer is reset if the root layer // is destroyed. NULL can be passed to reset the root layer, in which case the -@@ -443,6 +457,8 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, +@@ -449,6 +463,8 @@ class COMPOSITOR_EXPORT Compositor : public cc::LayerTreeHostClient, std::unique_ptr pending_begin_frame_args_; diff --git a/patches/chromium/feat_expose_raw_response_headers_from_urlloader.patch b/patches/chromium/feat_expose_raw_response_headers_from_urlloader.patch index 1b0c37be79..a16c982143 100644 --- a/patches/chromium/feat_expose_raw_response_headers_from_urlloader.patch +++ b/patches/chromium/feat_expose_raw_response_headers_from_urlloader.patch @@ -17,7 +17,7 @@ headers, moving forward we should find a way in upstream to provide access to these headers for loader clients created on the browser process. diff --git a/services/network/public/cpp/resource_request.cc b/services/network/public/cpp/resource_request.cc -index b405a82fd2bfed451f86907e66ae3a4ab5838fbb..988aa62b2d78b736b34e947e42f965fd6b2b563f 100644 +index a24972bd0d082e47036082983d93e862b6c28ab0..74ed551279314b728e129b6c344ee1b5de58701a 100644 --- a/services/network/public/cpp/resource_request.cc +++ b/services/network/public/cpp/resource_request.cc @@ -231,6 +231,7 @@ bool ResourceRequest::EqualsForTesting(const ResourceRequest& request) const { @@ -29,10 +29,10 @@ index b405a82fd2bfed451f86907e66ae3a4ab5838fbb..988aa62b2d78b736b34e947e42f965fd upgrade_if_insecure == request.upgrade_if_insecure && is_revalidating == request.is_revalidating && diff --git a/services/network/public/cpp/resource_request.h b/services/network/public/cpp/resource_request.h -index 2b7832dd2c2d006bf8ef382cdf3f7f52e0edd385..f872596bc1236323ecdf1de699c513e40c42592c 100644 +index 2857fb52a542eab7fa52938cbc6a292328cc2003..3a21c9f473f5c042a880d633f4b83a8f1c92fd1f 100644 --- a/services/network/public/cpp/resource_request.h +++ b/services/network/public/cpp/resource_request.h -@@ -160,6 +160,7 @@ struct COMPONENT_EXPORT(NETWORK_CPP_BASE) ResourceRequest { +@@ -161,6 +161,7 @@ struct COMPONENT_EXPORT(NETWORK_CPP_BASE) ResourceRequest { bool do_not_prompt_for_login = false; bool is_main_frame = false; int transition_type = 0; @@ -41,10 +41,10 @@ index 2b7832dd2c2d006bf8ef382cdf3f7f52e0edd385..f872596bc1236323ecdf1de699c513e4 bool upgrade_if_insecure = false; bool is_revalidating = false; diff --git a/services/network/public/cpp/url_request_mojom_traits.cc b/services/network/public/cpp/url_request_mojom_traits.cc -index 0bcf9231f6a20d5b673d601e84e91f5db34274dd..6b3f5169f9495e8d2b9bb63b12e22b20000fe88d 100644 +index 6bd39133e2d5b2bbad9ccbbded1e41eddce2a424..05d40087e89ec1edabb6017931f0d9e54a467b78 100644 --- a/services/network/public/cpp/url_request_mojom_traits.cc +++ b/services/network/public/cpp/url_request_mojom_traits.cc -@@ -197,6 +197,7 @@ bool StructTraits< +@@ -198,6 +198,7 @@ bool StructTraits< out->do_not_prompt_for_login = data.do_not_prompt_for_login(); out->is_main_frame = data.is_main_frame(); out->transition_type = data.transition_type(); @@ -53,10 +53,10 @@ index 0bcf9231f6a20d5b673d601e84e91f5db34274dd..6b3f5169f9495e8d2b9bb63b12e22b20 out->upgrade_if_insecure = data.upgrade_if_insecure(); out->is_revalidating = data.is_revalidating(); diff --git a/services/network/public/cpp/url_request_mojom_traits.h b/services/network/public/cpp/url_request_mojom_traits.h -index 2ad640951ae17588ac98d9cf2ade197786178257..a617132e8db8f059c15ba26438ac3a70382f4cd6 100644 +index 86e6558f3ebfb5d0f3dee3cee70fc45f0f33123f..54efb232bf7316ce3aabbb787676acb093910047 100644 --- a/services/network/public/cpp/url_request_mojom_traits.h +++ b/services/network/public/cpp/url_request_mojom_traits.h -@@ -266,6 +266,9 @@ struct COMPONENT_EXPORT(NETWORK_CPP_BASE) +@@ -267,6 +267,9 @@ struct COMPONENT_EXPORT(NETWORK_CPP_BASE) static int32_t transition_type(const network::ResourceRequest& request) { return request.transition_type; } @@ -67,7 +67,7 @@ index 2ad640951ae17588ac98d9cf2ade197786178257..a617132e8db8f059c15ba26438ac3a70 return request.previews_state; } diff --git a/services/network/public/mojom/url_request.mojom b/services/network/public/mojom/url_request.mojom -index 8ad56cb2ba2195ec5edd9d36a88ebc3f73b720ff..09dfa592e2960cc82541bb8d2dce3522d5d0142e 100644 +index 6ad61365a1dac6c18609ed63e7ab992c8949e70c..039f27017521b94eb2768f949b7217a9102aa61c 100644 --- a/services/network/public/mojom/url_request.mojom +++ b/services/network/public/mojom/url_request.mojom @@ -313,6 +313,9 @@ struct URLRequest { @@ -103,10 +103,10 @@ index cea1fb864ab46b4b0eabf1db11a0392d6cd575c1..df033f65d50b088778268827e506963a string mime_type; diff --git a/services/network/url_loader.cc b/services/network/url_loader.cc -index e8d83ecd221e28182be3443fca89ba6a125622a1..9206c91efe2b08d9b2a4c829fa0135d31244b3fc 100644 +index 502003e72febe3fda800a8fd028fcfe29b876685..5b4193082d69cb9c0f904df9a9781b02bb3d2369 100644 --- a/services/network/url_loader.cc +++ b/services/network/url_loader.cc -@@ -490,6 +490,7 @@ URLLoader::URLLoader( +@@ -497,6 +497,7 @@ URLLoader::URLLoader( peer_closed_handle_watcher_(FROM_HERE, mojo::SimpleWatcher::ArmingPolicy::MANUAL, base::SequencedTaskRunnerHandle::Get()), @@ -114,7 +114,7 @@ index e8d83ecd221e28182be3443fca89ba6a125622a1..9206c91efe2b08d9b2a4c829fa0135d3 devtools_request_id_(request.devtools_request_id), request_mode_(request.mode), request_credentials_mode_(request.credentials_mode), -@@ -632,7 +633,7 @@ URLLoader::URLLoader( +@@ -640,7 +641,7 @@ URLLoader::URLLoader( url_request_->SetRequestHeadersCallback(base::BindRepeating( &URLLoader::SetRawRequestHeadersAndNotify, base::Unretained(this))); @@ -123,7 +123,7 @@ index e8d83ecd221e28182be3443fca89ba6a125622a1..9206c91efe2b08d9b2a4c829fa0135d3 url_request_->SetResponseHeadersCallback(base::BindRepeating( &URLLoader::SetRawResponseHeaders, base::Unretained(this))); } -@@ -1255,6 +1256,19 @@ void URLLoader::OnResponseStarted(net::URLRequest* url_request, int net_error) { +@@ -1269,6 +1270,19 @@ void URLLoader::OnResponseStarted(net::URLRequest* url_request, int net_error) { response_ = network::mojom::URLResponseHead::New(); PopulateResourceResponse(url_request_.get(), is_load_timing_enabled_, options_, response_.get()); @@ -144,10 +144,10 @@ index e8d83ecd221e28182be3443fca89ba6a125622a1..9206c91efe2b08d9b2a4c829fa0135d3 // Parse and remove the Trust Tokens response headers, if any are expected, // potentially failing the request if an error occurs. diff --git a/services/network/url_loader.h b/services/network/url_loader.h -index 6d53bc8f9eef1446d764cb92943a3f9723390ed6..171f2015f09040297afba25218292c304a864758 100644 +index d7f278d52db72d18fb779cf409ce8d70c9e32a17..d7e168a184df19d429db2cdc1db40651cb136d68 100644 --- a/services/network/url_loader.h +++ b/services/network/url_loader.h -@@ -467,6 +467,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) URLLoader +@@ -472,6 +472,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) URLLoader std::unique_ptr resource_scheduler_request_handle_; diff --git a/patches/chromium/fix_add_check_for_sandbox_then_result.patch b/patches/chromium/fix_add_check_for_sandbox_then_result.patch index 3e52b107ce..00da5ba9f2 100644 --- a/patches/chromium/fix_add_check_for_sandbox_then_result.patch +++ b/patches/chromium/fix_add_check_for_sandbox_then_result.patch @@ -8,10 +8,10 @@ patch and doing further investigation in the future. This patch cannot be upstreamed. diff --git a/sandbox/linux/bpf_dsl/bpf_dsl.cc b/sandbox/linux/bpf_dsl/bpf_dsl.cc -index 846dc7a83d12be57cb91bd0a7f9e698990776684..1c3dba162b8eb4af28c78e84b5553447e4f1c76a 100644 +index 90139669e657863f2580ea6848a15fcc90f05125..48ee440fef90d467ccf0217caed9700a767f49d0 100644 --- a/sandbox/linux/bpf_dsl/bpf_dsl.cc +++ b/sandbox/linux/bpf_dsl/bpf_dsl.cc -@@ -305,6 +305,7 @@ Elser::~Elser() { +@@ -321,6 +321,7 @@ Elser::~Elser() { } Elser Elser::ElseIf(BoolExpr cond, ResultExpr then_result) const { diff --git a/patches/chromium/fix_export_zlib_symbols.patch b/patches/chromium/fix_export_zlib_symbols.patch index d93e637fa7..4da24e04e7 100644 --- a/patches/chromium/fix_export_zlib_symbols.patch +++ b/patches/chromium/fix_export_zlib_symbols.patch @@ -6,10 +6,10 @@ Subject: fix: export zlib symbols This patch sets ZLIB_DLL so that we properly export zlib symbols. diff --git a/third_party/zlib/BUILD.gn b/third_party/zlib/BUILD.gn -index 74ecbd19ae270e3fead8702187aa0c78d42fcc4d..72cb46657a800259ce6541164909694fd54a3aaf 100644 +index a3378e43ac99e611925bd28b3d78f3683d4d57cc..4113be75214f864560efab5da88e51f7887654ef 100644 --- a/third_party/zlib/BUILD.gn +++ b/third_party/zlib/BUILD.gn -@@ -301,6 +301,10 @@ component("zlib") { +@@ -312,6 +312,10 @@ component("zlib") { defines = [] deps = [] diff --git a/patches/chromium/fix_expose_decrementcapturercount_in_web_contents_impl.patch b/patches/chromium/fix_expose_decrementcapturercount_in_web_contents_impl.patch index 19734f525f..349caddd47 100644 --- a/patches/chromium/fix_expose_decrementcapturercount_in_web_contents_impl.patch +++ b/patches/chromium/fix_expose_decrementcapturercount_in_web_contents_impl.patch @@ -8,7 +8,7 @@ we invoke it in order to expose contents.decrementCapturerCount([stayHidden, sta to users. We should try to upstream this. diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h -index 97e6ccbfbd58482299a831c63573890d1f7d46f3..1e6b5ed19688993a750af0fd1fee72a4f67eab28 100644 +index 6c5272ad70d7e01ad663b884716efdf77deead08..af0b2fe1e7b03cb8f7249f5a964b1a0f4c72d53d 100644 --- a/content/browser/web_contents/web_contents_impl.h +++ b/content/browser/web_contents/web_contents_impl.h @@ -1765,7 +1765,7 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents, @@ -21,10 +21,10 @@ index 97e6ccbfbd58482299a831c63573890d1f7d46f3..1e6b5ed19688993a750af0fd1fee72a4 // Calculates the PageVisibilityState for |visibility|, taking the capturing // state into account. diff --git a/content/public/browser/web_contents.h b/content/public/browser/web_contents.h -index 95bcea15ea704f11e8daab49de6d958fb2d15127..f2e9a772fe9449fe0e4be55567019c46ef2d8c6a 100644 +index 8840d078a341bda1abc79c1f9ee72b2cc07f06d6..5c5b3e7760c9ac67b24b66cd1ce51b5a705c5dd6 100644 --- a/content/public/browser/web_contents.h +++ b/content/public/browser/web_contents.h -@@ -645,6 +645,8 @@ class WebContents : public PageNavigator, +@@ -662,6 +662,8 @@ class WebContents : public PageNavigator, bool stay_hidden, bool stay_awake) WARN_UNUSED_RESULT = 0; diff --git a/patches/chromium/fix_properly_honor_printing_page_ranges.patch b/patches/chromium/fix_properly_honor_printing_page_ranges.patch index 10aee33cb1..3f62007fdf 100644 --- a/patches/chromium/fix_properly_honor_printing_page_ranges.patch +++ b/patches/chromium/fix_properly_honor_printing_page_ranges.patch @@ -10,7 +10,7 @@ them should they exist. This will be upstreamed. diff --git a/printing/printing_context_mac.h b/printing/printing_context_mac.h -index 0fb5c91b8abcdd7e674251bafebfc2c51044ef77..8c134bae25afeb0dbbb6e33182f053bb34e2f978 100644 +index 7fde07c789c35d103174020f590e177eefbe6f2b..07f10be994fcf7d7845f6c297e17f86f27cc4fe9 100644 --- a/printing/printing_context_mac.h +++ b/printing/printing_context_mac.h @@ -83,6 +83,10 @@ class COMPONENT_EXPORT(PRINTING) PrintingContextMac : public PrintingContext { @@ -25,10 +25,10 @@ index 0fb5c91b8abcdd7e674251bafebfc2c51044ef77..8c134bae25afeb0dbbb6e33182f053bb // Returns true if duplex mode is set. bool SetDuplexModeInPrintSettings(mojom::DuplexMode mode); diff --git a/printing/printing_context_mac.mm b/printing/printing_context_mac.mm -index dfa69dfec319e48e1475cf8b40ec7414cab00e5e..6dcff7c9b0b5f9ad1e41407037b96ba52f313977 100644 +index dd9bb775164ad483cf7cc26be150da0abba2433f..3704d75b9b25e4b8205736666cb8496225672df5 100644 --- a/printing/printing_context_mac.mm +++ b/printing/printing_context_mac.mm -@@ -191,7 +191,8 @@ PMPaper MatchPaper(CFArrayRef paper_list, +@@ -192,7 +192,8 @@ PMPaper MatchPaper(CFArrayRef paper_list, !SetCollateInPrintSettings(settings_->collate()) || !SetDuplexModeInPrintSettings(settings_->duplex_mode()) || !SetOutputColor(static_cast(settings_->color())) || @@ -38,7 +38,7 @@ index dfa69dfec319e48e1475cf8b40ec7414cab00e5e..6dcff7c9b0b5f9ad1e41407037b96ba5 return OnError(); } } -@@ -344,6 +345,22 @@ PMPaper MatchPaper(CFArrayRef paper_list, +@@ -345,6 +346,22 @@ PMPaper MatchPaper(CFArrayRef paper_list, return PMSetCopies(print_settings, copies, false) == noErr; } @@ -62,10 +62,10 @@ index dfa69dfec319e48e1475cf8b40ec7414cab00e5e..6dcff7c9b0b5f9ad1e41407037b96ba5 PMPrintSettings print_settings = static_cast([print_info_.get() PMPrintSettings]); diff --git a/printing/printing_context_system_dialog_win.cc b/printing/printing_context_system_dialog_win.cc -index 891e9574625bfbaf2a00eeeb54a20834a2a5fa21..4f47ad753c7593c83fdfd832a9d4a53d2094becf 100644 +index acb040f998546b0e01be45c28c505bbafcf2c141..1083db84804e5ed8b420d3e8e3da372ff15ec2cf 100644 --- a/printing/printing_context_system_dialog_win.cc +++ b/printing/printing_context_system_dialog_win.cc -@@ -53,14 +53,28 @@ void PrintingContextSystemDialogWin::AskUserForSettings( +@@ -54,14 +54,28 @@ void PrintingContextSystemDialogWin::AskUserForSettings( PRINTPAGERANGE ranges[32]; dialog_options.nStartPage = START_PAGE_GENERAL; if (max_pages) { @@ -100,10 +100,10 @@ index 891e9574625bfbaf2a00eeeb54a20834a2a5fa21..4f47ad753c7593c83fdfd832a9d4a53d } else { // No need to bother, we don't know how many pages are available. diff --git a/ui/gtk/printing/print_dialog_gtk.cc b/ui/gtk/printing/print_dialog_gtk.cc -index 62108f0eb91fd04235d29a5e010aa600f76f8288..0e21b30dbe3f6daca9dce6d2b89b063c13d044ee 100644 +index c2b2455516cd156dfa12a62cac5b3a4b847cbd5b..e2243bbfbd34fe0b899645698455bc7f116feb0e 100644 --- a/ui/gtk/printing/print_dialog_gtk.cc +++ b/ui/gtk/printing/print_dialog_gtk.cc -@@ -238,6 +238,24 @@ void PrintDialogGtk::UpdateSettings( +@@ -241,6 +241,24 @@ void PrintDialogGtk::UpdateSettings( gtk_print_settings_set_n_copies(gtk_settings_, settings->copies()); gtk_print_settings_set_collate(gtk_settings_, settings->collate()); diff --git a/patches/chromium/fix_use_electron_generated_resources.patch b/patches/chromium/fix_use_electron_generated_resources.patch index a5b5f9212a..1d976575fa 100644 --- a/patches/chromium/fix_use_electron_generated_resources.patch +++ b/patches/chromium/fix_use_electron_generated_resources.patch @@ -26,7 +26,7 @@ index f72431f5bc7ba82316cf318f7845e7523c366d92..5133f3cd28c0d630a039118eb91c6c37 #include "components/zoom/page_zoom_constants.h" #include "pdf/pdf_features.h" diff --git a/chrome/browser/printing/printing_service.cc b/chrome/browser/printing/printing_service.cc -index 986568e30a4c40104a4e2a681a1b8a22110d4cf8..36758a9ee5eea37ce5199460bb9dc893d7bf250f 100644 +index ec70ac13f96a0085747ecc3f275fb392d3dcca42..6b470dad30760ee709e702e94c19eaeb3099442a 100644 --- a/chrome/browser/printing/printing_service.cc +++ b/chrome/browser/printing/printing_service.cc @@ -5,7 +5,7 @@ diff --git a/patches/chromium/frame_host_manager.patch b/patches/chromium/frame_host_manager.patch index e55ced4e7a..c0fb8b46e0 100644 --- a/patches/chromium/frame_host_manager.patch +++ b/patches/chromium/frame_host_manager.patch @@ -6,10 +6,10 @@ Subject: frame_host_manager.patch Allows embedder to intercept site instances created by chromium. diff --git a/content/browser/renderer_host/render_frame_host_manager.cc b/content/browser/renderer_host/render_frame_host_manager.cc -index 67bdf4ff62fd59e86df30e083110501f8181dbe6..b435953e8325046370b4d2b3550c9c069653d56a 100644 +index 8d4a43dc12b06f5a39129acb5477a02844e74366..4d45e8ddeb90383dd7fe1e941c5868a72822cbe9 100644 --- a/content/browser/renderer_host/render_frame_host_manager.cc +++ b/content/browser/renderer_host/render_frame_host_manager.cc -@@ -3035,6 +3035,9 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest( +@@ -3070,6 +3070,9 @@ RenderFrameHostManager::GetSiteInstanceForNavigationRequest( request->ResetStateForSiteInstanceChange(); } @@ -20,10 +20,10 @@ index 67bdf4ff62fd59e86df30e083110501f8181dbe6..b435953e8325046370b4d2b3550c9c06 } diff --git a/content/public/browser/content_browser_client.h b/content/public/browser/content_browser_client.h -index 66ff9593b8f3d62c486ef83c4c682edf73081d88..7d0318a137ad2f2b7bc8743bbad419d3f8f9ce12 100644 +index f0e2a061bb35fd3db26c7d235e1196273036925f..263ce75539f2fd215a45645e93271b3e65451d1a 100644 --- a/content/public/browser/content_browser_client.h +++ b/content/public/browser/content_browser_client.h -@@ -272,6 +272,11 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -274,6 +274,11 @@ class CONTENT_EXPORT ContentBrowserClient { virtual ~ContentBrowserClient() = default; diff --git a/patches/chromium/gin_enable_disable_v8_platform.patch b/patches/chromium/gin_enable_disable_v8_platform.patch index 7821adb15f..f1c7adf11e 100644 --- a/patches/chromium/gin_enable_disable_v8_platform.patch +++ b/patches/chromium/gin_enable_disable_v8_platform.patch @@ -38,10 +38,10 @@ index f0a7d0c05fa3c68b22b1d36e2c0810fe70f5a8a0..8ecce17b5bb8b5106de913a2d0197fd3 // Returns whether `Initialize` has already been invoked in the process. // Initialization is a one-way operation (i.e., this method cannot return diff --git a/gin/v8_initializer.cc b/gin/v8_initializer.cc -index 8177563df293ae9b4bb8cc46cfe81402f2bf50e0..f2eb8677c095a6d24202a524991c3d8aea39c406 100644 +index 3d8d99cc5840cd1abc72694fc717587aadd1badd..94340cbb1a7a75bcc24dea06b1b5c5ceb4571913 100644 --- a/gin/v8_initializer.cc +++ b/gin/v8_initializer.cc -@@ -269,7 +269,8 @@ void SetV8FlagsIfOverridden(const base::Feature& feature, +@@ -226,12 +226,14 @@ void SetV8FlagsIfOverridden(const base::Feature& feature, } // namespace // static @@ -51,16 +51,13 @@ index 8177563df293ae9b4bb8cc46cfe81402f2bf50e0..f2eb8677c095a6d24202a524991c3d8a static bool v8_is_initialized = false; if (v8_is_initialized) return; -@@ -279,7 +280,8 @@ void V8Initializer::Initialize(IsolateHolder::ScriptMode mode) { - RunArrayBufferCageReservationExperiment(); - } - v8::V8::InitializePlatform(V8Platform::Get()); + if (create_v8_platform) + v8::V8::InitializePlatform(V8Platform::Get()); - if (!base::FeatureList::IsEnabled(features::kV8OptimizeJavascript)) { - // We avoid explicitly passing --opt if kV8OptimizeJavascript is enabled + #if defined(V8_VIRTUAL_MEMORY_CAGE) + static_assert(ARCH_CPU_64_BITS, diff --git a/gin/v8_initializer.h b/gin/v8_initializer.h index 955be10e118e1c54515dd0ee19edec7504419bdc..699f84c73b71a6d870ae93f2fce98174c924e2fa 100644 --- a/gin/v8_initializer.h diff --git a/patches/chromium/gpu_notify_when_dxdiag_request_fails.patch b/patches/chromium/gpu_notify_when_dxdiag_request_fails.patch index 6de35937f2..65cc9730fb 100644 --- a/patches/chromium/gpu_notify_when_dxdiag_request_fails.patch +++ b/patches/chromium/gpu_notify_when_dxdiag_request_fails.patch @@ -40,10 +40,10 @@ index a8c0d59cb825a791c44c54e55ad7f295ad07a309..a1ef53aa46fb0cfc7bcac121244f77af void UpdateDawnInfo(const std::vector& dawn_info_list); diff --git a/content/browser/gpu/gpu_data_manager_impl_private.cc b/content/browser/gpu/gpu_data_manager_impl_private.cc -index 8ec17755a906ae60a1424b75ee21bd29fb62ab3f..0d8642a1034abe817ea3434359185b2e5d985879 100644 +index 43dd51a57a806fb79798b481b6daadcb7400dd34..b038159656d06ee3882b73d38ea83aa1a9af02af 100644 --- a/content/browser/gpu/gpu_data_manager_impl_private.cc +++ b/content/browser/gpu/gpu_data_manager_impl_private.cc -@@ -1219,6 +1219,12 @@ void GpuDataManagerImplPrivate::TerminateInfoCollectionGpuProcess() { +@@ -1181,6 +1181,12 @@ void GpuDataManagerImplPrivate::TerminateInfoCollectionGpuProcess() { if (host) host->ForceShutdown(); } @@ -57,10 +57,10 @@ index 8ec17755a906ae60a1424b75ee21bd29fb62ab3f..0d8642a1034abe817ea3434359185b2e void GpuDataManagerImplPrivate::UpdateDawnInfo( diff --git a/content/browser/gpu/gpu_data_manager_impl_private.h b/content/browser/gpu/gpu_data_manager_impl_private.h -index afd9e892bd94314b5dc979dadf6fd91f8ad9ff04..02134414e3bab125697b5f3080af2c90d4cee07c 100644 +index 3a9630dd05df8d07bd7520530ad57b6a76f39cec..205e8f44ddbf6e1ed39a2f6ef5c1bd0036831e50 100644 --- a/content/browser/gpu/gpu_data_manager_impl_private.h +++ b/content/browser/gpu/gpu_data_manager_impl_private.h -@@ -84,6 +84,7 @@ class CONTENT_EXPORT GpuDataManagerImplPrivate { +@@ -89,6 +89,7 @@ class CONTENT_EXPORT GpuDataManagerImplPrivate { bool VulkanRequested() const; void PostCreateThreads(); void TerminateInfoCollectionGpuProcess(); diff --git a/patches/chromium/gritsettings_resource_ids.patch b/patches/chromium/gritsettings_resource_ids.patch index 17d04cccde..de51bf3597 100644 --- a/patches/chromium/gritsettings_resource_ids.patch +++ b/patches/chromium/gritsettings_resource_ids.patch @@ -6,11 +6,11 @@ Subject: gritsettings_resource_ids.patch Add electron resources file to the list of resource ids generation. diff --git a/tools/gritsettings/resource_ids.spec b/tools/gritsettings/resource_ids.spec -index 509687647e3566f48c89bfb2bebdfb17fa54fbc2..df1d19126456618529c951a70889edde12005a1c 100644 +index 4e80d8de308271bdad6b3315c5c01e5abf94624c..c7f3409b4d1772b65e570c785a826855b9972b0a 100644 --- a/tools/gritsettings/resource_ids.spec +++ b/tools/gritsettings/resource_ids.spec -@@ -851,6 +851,11 @@ - "includes": [3880], +@@ -884,6 +884,11 @@ + "includes": [4960], }, + "electron/electron_resources.grd": { diff --git a/patches/chromium/hack_to_allow_gclient_sync_with_host_os_mac_on_linux_in_ci.patch b/patches/chromium/hack_to_allow_gclient_sync_with_host_os_mac_on_linux_in_ci.patch index 83f65525ff..aa2bf49210 100644 --- a/patches/chromium/hack_to_allow_gclient_sync_with_host_os_mac_on_linux_in_ci.patch +++ b/patches/chromium/hack_to_allow_gclient_sync_with_host_os_mac_on_linux_in_ci.patch @@ -11,7 +11,7 @@ If removing this patch causes no sync failures, it's safe to delete :+1: Ref https://chromium-review.googlesource.com/c/chromium/src/+/2953903 diff --git a/tools/clang/scripts/update.py b/tools/clang/scripts/update.py -index addc389948378353edb1f24e7416a2a9fbafed14..de2e861859efdcb99a5fd18a6d94efa0d2e17832 100755 +index b5f9205707bc77bbfd0516240bd5cb803a06f61e..2d390aad0b8e40a48f1357e24587b27e3407aeab 100755 --- a/tools/clang/scripts/update.py +++ b/tools/clang/scripts/update.py @@ -286,6 +286,8 @@ def main(): diff --git a/patches/chromium/load_v8_snapshot_in_browser_process.patch b/patches/chromium/load_v8_snapshot_in_browser_process.patch new file mode 100644 index 0000000000..fc98f5fc81 --- /dev/null +++ b/patches/chromium/load_v8_snapshot_in_browser_process.patch @@ -0,0 +1,28 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: John Kleinschmidt +Date: Mon, 11 Oct 2021 14:08:06 -0400 +Subject: load v8 snapshot in browser process + +https://chromium-review.googlesource.com/c/chromium/src/+/3183394 +made a change to not load the v8 snapshot in the browser process, +but due to the nature of electron, we need to load the v8 snapshot +in the browser process. + +diff --git a/content/app/content_main_runner_impl.cc b/content/app/content_main_runner_impl.cc +index c97118c1380734e9cdc91b9d7191e0dc71d8b8ed..0a8eb0eddcc0e30b365c293e61c9a7b99ee39eaf 100644 +--- a/content/app/content_main_runner_impl.cc ++++ b/content/app/content_main_runner_impl.cc +@@ -233,11 +233,8 @@ void LoadV8SnapshotFile() { + + bool ShouldLoadV8Snapshot(const base::CommandLine& command_line, + const std::string& process_type) { +- // The gpu does not need v8, and the browser only needs v8 when in single +- // process mode. +- if (process_type == switches::kGpuProcess || +- (process_type.empty() && +- !command_line.HasSwitch(switches::kSingleProcess))) { ++ // The gpu does not need v8 ++ if (process_type == switches::kGpuProcess) { + return false; + } + return true; diff --git a/patches/chromium/mas-audiodeviceduck.patch b/patches/chromium/mas-audiodeviceduck.patch index 86630b7e59..765e3e06f0 100644 --- a/patches/chromium/mas-audiodeviceduck.patch +++ b/patches/chromium/mas-audiodeviceduck.patch @@ -6,7 +6,7 @@ Subject: mas: avoid usage of AudioDeviceDuck Removes usage of the AudioDeviceDuck private API. diff --git a/media/audio/mac/audio_low_latency_input_mac.cc b/media/audio/mac/audio_low_latency_input_mac.cc -index eb39b38c308ddd876e3fbc142d4fdfd5dc002cb5..137ccd81aa98f6d44969e7b7733e2cfb1fb615a9 100644 +index e28d37435da00153e34132f49ce8f6b240e70a65..77ce459d969022b7c5a4d1e57bb1f7e6fa7a9898 100644 --- a/media/audio/mac/audio_low_latency_input_mac.cc +++ b/media/audio/mac/audio_low_latency_input_mac.cc @@ -34,19 +34,23 @@ diff --git a/patches/chromium/mas-cgdisplayusesforcetogray.patch b/patches/chromium/mas-cgdisplayusesforcetogray.patch index 22cad07878..8fc488bd02 100644 --- a/patches/chromium/mas-cgdisplayusesforcetogray.patch +++ b/patches/chromium/mas-cgdisplayusesforcetogray.patch @@ -6,7 +6,7 @@ Subject: mas: avoid usage of CGDisplayUsesForceToGray Removes usage of the CGDisplayUsesForceToGray private API. diff --git a/ui/display/mac/screen_mac.mm b/ui/display/mac/screen_mac.mm -index 697c81abd428676d13de7c34313134f6333962c3..50c535d93c198b2b0c358550552ea6b3ccd35ef5 100644 +index 7354a04f927af9a61eff83a8a5a9bc1054da80ec..f38ef7e9e1781f0c880ffcccabb984dcafdaada8 100644 --- a/ui/display/mac/screen_mac.mm +++ b/ui/display/mac/screen_mac.mm @@ -149,7 +149,17 @@ DisplayMac BuildDisplayForScreen(NSScreen* screen) { diff --git a/patches/chromium/mas_disable_remote_accessibility.patch b/patches/chromium/mas_disable_remote_accessibility.patch index a4a425a4ce..25173107fc 100644 --- a/patches/chromium/mas_disable_remote_accessibility.patch +++ b/patches/chromium/mas_disable_remote_accessibility.patch @@ -44,7 +44,7 @@ index 6af35b457b4acc4bbbac36b2f8a2617495d9d1f4..3c377839a8882d8e842edd8ca4b9b64c } // namespace diff --git a/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm b/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm -index 2a4679b620db93d9eeb45873a97f5daba6e19456..04414494a859438972cb266aabdd47687bdafca5 100644 +index b17d46de296964120e5083c00a3ea9bdaded221f..af30adb8b6074864ca19e8235a248c5d77781468 100644 --- a/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm +++ b/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm @@ -557,10 +557,12 @@ NSUInteger CountBridgedWindows(NSArray* child_windows) { @@ -87,7 +87,7 @@ index c3a9fbf0f9d2b80c1de42a22ad094a286f0b559b..02493d4b62c98a3aebd3e460c459218a DISALLOW_COPY_AND_ASSIGN(RenderWidgetHostNSViewBridgeOwner); }; diff --git a/content/browser/renderer_host/render_widget_host_view_mac.h b/content/browser/renderer_host/render_widget_host_view_mac.h -index e7a1a348280c96a31fac75616d6e3034d1863a06..7631c62e2e799770f6abbb9af158235c00ce6185 100644 +index 2b262cc807162d91cb09393d58ceb4e7d9c2be34..5e66be5ceb963e6f13742c66b0a9cd79f0d91446 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.h +++ b/content/browser/renderer_host/render_widget_host_view_mac.h @@ -49,7 +49,9 @@ class ScopedPasswordInputEnabler; @@ -114,10 +114,10 @@ index e7a1a348280c96a31fac75616d6e3034d1863a06..7631c62e2e799770f6abbb9af158235c // Used to force the NSApplication's focused accessibility element to be the // content::BrowserAccessibilityCocoa accessibility tree when the NSView for diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm -index 922e51e7debac09e5444027c87603d40b972ffc7..5aac5fcfe781e282b748630c07341d1b465d99ac 100644 +index d1aae9cbefad2b31dcd98e0c95891943b027cc5f..ec191047cca6d8e7d00e445942461e9b47098ec1 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm -@@ -251,8 +251,10 @@ +@@ -249,8 +249,10 @@ void RenderWidgetHostViewMac::MigrateNSViewBridge( remote_cocoa::mojom::Application* remote_cocoa_application, uint64_t parent_ns_view_id) { @@ -128,7 +128,7 @@ index 922e51e7debac09e5444027c87603d40b972ffc7..5aac5fcfe781e282b748630c07341d1b // Disconnect from the previous bridge (this will have the effect of // destroying the associated bridge), and close the receiver (to allow it -@@ -1469,8 +1471,10 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback, +@@ -1455,8 +1457,10 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback, gfx::NativeViewAccessible RenderWidgetHostViewMac::AccessibilityGetNativeViewAccessibleForWindow() { @@ -139,7 +139,7 @@ index 922e51e7debac09e5444027c87603d40b972ffc7..5aac5fcfe781e282b748630c07341d1b return [GetInProcessNSView() window]; } -@@ -1514,9 +1518,11 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback, +@@ -1500,9 +1504,11 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback, } void RenderWidgetHostViewMac::SetAccessibilityWindow(NSWindow* window) { @@ -151,7 +151,7 @@ index 922e51e7debac09e5444027c87603d40b972ffc7..5aac5fcfe781e282b748630c07341d1b } bool RenderWidgetHostViewMac::SyncIsWidgetForMainFrame( -@@ -2009,12 +2015,14 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback, +@@ -1995,12 +2001,14 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback, void RenderWidgetHostViewMac::SetRemoteAccessibilityWindowToken( const std::vector& window_token) { @@ -167,7 +167,7 @@ index 922e51e7debac09e5444027c87603d40b972ffc7..5aac5fcfe781e282b748630c07341d1b /////////////////////////////////////////////////////////////////////////////// diff --git a/ui/base/BUILD.gn b/ui/base/BUILD.gn -index ae61e09deae53071c3a00d054cde3c57a8ac143a..7f91c46cd437f269b76fda383fd2d6ab990d310c 100644 +index 9cce2f63140db5370ef9400dd83cc3d8fe0e9323..909ffe62a19bf8752abb038223a0823dd613586c 100644 --- a/ui/base/BUILD.gn +++ b/ui/base/BUILD.gn @@ -322,6 +322,13 @@ component("base") { diff --git a/patches/chromium/mas_disable_remote_layer.patch b/patches/chromium/mas_disable_remote_layer.patch index afe2df43d0..63241f1450 100644 --- a/patches/chromium/mas_disable_remote_layer.patch +++ b/patches/chromium/mas_disable_remote_layer.patch @@ -16,7 +16,7 @@ cases where performance improves when disabling remote CoreAnimation (remote CoreAnimation is really only about battery usage). diff --git a/gpu/ipc/service/image_transport_surface_overlay_mac.h b/gpu/ipc/service/image_transport_surface_overlay_mac.h -index caeaaf96088709486688ba1ca231b928f600c3f1..27024e051cf9e7424c9187f6af5e3b03ca1edaf2 100644 +index c384f18ec959303bd3671c570af87b604d20cf23..f420bd94951f5a2b03d20e5892a4039271ed2078 100644 --- a/gpu/ipc/service/image_transport_surface_overlay_mac.h +++ b/gpu/ipc/service/image_transport_surface_overlay_mac.h @@ -20,7 +20,9 @@ @@ -29,7 +29,7 @@ index caeaaf96088709486688ba1ca231b928f600c3f1..27024e051cf9e7424c9187f6af5e3b03 @class CALayer; namespace ui { -@@ -119,7 +121,9 @@ class ImageTransportSurfaceOverlayMacBase : public BaseClass, +@@ -113,7 +115,9 @@ class ImageTransportSurfaceOverlayMacBase : public BaseClass, base::WeakPtr delegate_; bool use_remote_layer_api_; @@ -40,7 +40,7 @@ index caeaaf96088709486688ba1ca231b928f600c3f1..27024e051cf9e7424c9187f6af5e3b03 gfx::Size pixel_size_; diff --git a/gpu/ipc/service/image_transport_surface_overlay_mac.mm b/gpu/ipc/service/image_transport_surface_overlay_mac.mm -index 54c5b7bcbe4ead3653bcea1f82ac34212d87392e..d7ce7c04e1fcab4949e1340901aacfac14bb383e 100644 +index 55340e6c038485e3a75126e85fd166c6569b39e6..8afeb88576adcd06d7bb0a52250fbff98f0b513a 100644 --- a/gpu/ipc/service/image_transport_surface_overlay_mac.mm +++ b/gpu/ipc/service/image_transport_surface_overlay_mac.mm @@ -53,7 +53,7 @@ diff --git a/patches/chromium/mas_no_private_api.patch b/patches/chromium/mas_no_private_api.patch index a8eff25f2f..2df1798317 100644 --- a/patches/chromium/mas_no_private_api.patch +++ b/patches/chromium/mas_no_private_api.patch @@ -65,7 +65,7 @@ index f1a82347e5c982609b8dcad10b969d332a665b30..26ab7745450cc807761026a677c435db gfx::NativeViewAccessible LineIndexToNode( const std::u16string line_index) const; diff --git a/content/browser/accessibility/accessibility_tree_formatter_utils_mac.mm b/content/browser/accessibility/accessibility_tree_formatter_utils_mac.mm -index 4ce4b7ebcf8be625619e6fee0cab4185add42454..eca83c0807e37c36022a29187b1dc1c875495156 100644 +index 37d54fb830e039077375d1d0c1aefea9bafebc2e..68148b48610d13a89a3afad58a034001ea120712 100644 --- a/content/browser/accessibility/accessibility_tree_formatter_utils_mac.mm +++ b/content/browser/accessibility/accessibility_tree_formatter_utils_mac.mm @@ -178,9 +178,11 @@ @@ -80,7 +80,7 @@ index 4ce4b7ebcf8be625619e6fee0cab4185add42454..eca83c0807e37c36022a29187b1dc1c8 if ([target isKindOfClass:[NSArray class]]) return InvokeForArray(target, property_node); -@@ -373,6 +375,7 @@ +@@ -383,6 +385,7 @@ property_name == "AXTextMarkerRangeForUIElement") { // UIElement return OptionalNSObject::NotNilOrError(PropertyNodeToUIElement(arg_node)); } @@ -88,7 +88,7 @@ index 4ce4b7ebcf8be625619e6fee0cab4185add42454..eca83c0807e37c36022a29187b1dc1c8 if (property_name == "AXIndexForTextMarker" || property_name == "AXNextWordEndTextMarkerForTextMarker" || property_name == -@@ -384,6 +387,7 @@ +@@ -394,6 +397,7 @@ return OptionalNSObject::NotNilOrError( PropertyNodeToTextMarkerRange(arg_node)); } @@ -96,7 +96,7 @@ index 4ce4b7ebcf8be625619e6fee0cab4185add42454..eca83c0807e37c36022a29187b1dc1c8 return OptionalNSObject::NotApplicable(); } -@@ -396,6 +400,7 @@ +@@ -406,6 +410,7 @@ return value; // NSRange @@ -104,7 +104,7 @@ index 4ce4b7ebcf8be625619e6fee0cab4185add42454..eca83c0807e37c36022a29187b1dc1c8 value = PropertyNodeToRange(property_node, false); if (value) return value; -@@ -412,6 +417,10 @@ +@@ -422,6 +427,10 @@ // TextMarkerRange return PropertyNodeToTextMarkerRange(property_node, false); @@ -115,7 +115,7 @@ index 4ce4b7ebcf8be625619e6fee0cab4185add42454..eca83c0807e37c36022a29187b1dc1c8 } // NSNumber. Format: integer. -@@ -522,6 +531,7 @@ +@@ -532,6 +541,7 @@ return uielement; } @@ -123,7 +123,7 @@ index 4ce4b7ebcf8be625619e6fee0cab4185add42454..eca83c0807e37c36022a29187b1dc1c8 id AttributeInvoker::DictNodeToTextMarker(const AXPropertyNode& dictnode, bool log_failure) const { if (!dictnode.IsDict()) { -@@ -567,6 +577,7 @@ +@@ -577,6 +587,7 @@ return content::AXTextMarkerFrom(anchor_cocoa, *offset, affinity); } @@ -131,7 +131,7 @@ index 4ce4b7ebcf8be625619e6fee0cab4185add42454..eca83c0807e37c36022a29187b1dc1c8 id AttributeInvoker::PropertyNodeToTextMarker(const AXPropertyNode& dictnode, bool log_failure) const { return DictNodeToTextMarker(dictnode, log_failure); -@@ -611,6 +622,7 @@ +@@ -621,6 +632,7 @@ return content::AXTextMarkerRangeFrom(anchor_textmarker, focus_textmarker); } @@ -139,7 +139,7 @@ index 4ce4b7ebcf8be625619e6fee0cab4185add42454..eca83c0807e37c36022a29187b1dc1c8 OptionalNSObject TextMarkerRangeGetStartMarker(const OptionalNSObject& obj) { if (!IsAXTextMarkerRange(*obj)) -@@ -650,6 +662,7 @@ OptionalNSObject TextMarkerRangeGetEndMarker(const OptionalNSObject& obj) { +@@ -660,6 +672,7 @@ OptionalNSObject TextMarkerRangeGetEndMarker(const OptionalNSObject& obj) { return OptionalNSObject::NotNilOrError(content::AXTextMarkerFrom( cocoa_node, range.focus()->text_offset(), range.focus()->affinity())); } @@ -148,10 +148,10 @@ index 4ce4b7ebcf8be625619e6fee0cab4185add42454..eca83c0807e37c36022a29187b1dc1c8 OptionalNSObject MakePairArray(const OptionalNSObject& obj1, const OptionalNSObject& obj2) { diff --git a/content/browser/accessibility/browser_accessibility_cocoa.h b/content/browser/accessibility/browser_accessibility_cocoa.h -index b2da63a5831595944b9e12ba8386167bd0bb6c7c..dac074cc081cc12948f0d9b2e2b89ef1b10cbb66 100644 +index 0282b3c04cf0281820b716d0991af5ac4d6304de..ad0da68df963cc0872dc545ef525128ff0f8a0b0 100644 --- a/content/browser/accessibility/browser_accessibility_cocoa.h +++ b/content/browser/accessibility/browser_accessibility_cocoa.h -@@ -160,7 +160,9 @@ id AXTextMarkerRangeFrom(id anchor_text_marker, id focus_text_marker); +@@ -157,7 +157,9 @@ id AXTextMarkerRangeFrom(id anchor_text_marker, id focus_text_marker); @property(nonatomic, readonly) NSNumber* enabled; // Returns a text marker that points to the last character in the document that // can be selected with Voiceover. @@ -161,7 +161,7 @@ index b2da63a5831595944b9e12ba8386167bd0bb6c7c..dac074cc081cc12948f0d9b2e2b89ef1 @property(nonatomic, readonly) NSNumber* expanded; @property(nonatomic, readonly) NSNumber* focused; @property(nonatomic, readonly) NSNumber* grabbed; -@@ -172,7 +174,9 @@ id AXTextMarkerRangeFrom(id anchor_text_marker, id focus_text_marker); +@@ -169,7 +171,9 @@ id AXTextMarkerRangeFrom(id anchor_text_marker, id focus_text_marker); // Index of a row, column, or tree item. @property(nonatomic, readonly) NSNumber* index; @property(nonatomic, readonly) NSNumber* treeItemRowIndex; @@ -170,8 +170,8 @@ index b2da63a5831595944b9e12ba8386167bd0bb6c7c..dac074cc081cc12948f0d9b2e2b89ef1 +#endif @property(nonatomic, readonly) NSString* invalid; @property(nonatomic, readonly) NSNumber* isMultiSelectable; - @property(nonatomic, readonly) NSString* placeholderValue; -@@ -195,14 +199,18 @@ id AXTextMarkerRangeFrom(id anchor_text_marker, id focus_text_marker); + @property(nonatomic, readonly) NSNumber* loaded; +@@ -191,14 +195,18 @@ id AXTextMarkerRangeFrom(id anchor_text_marker, id focus_text_marker); // The object is selected as a whole. @property(nonatomic, readonly) NSNumber* selected; @property(nonatomic, readonly) NSArray* selectedChildren; @@ -191,7 +191,7 @@ index b2da63a5831595944b9e12ba8386167bd0bb6c7c..dac074cc081cc12948f0d9b2e2b89ef1 // is concerned. @property(nonatomic, readonly) NSString* subrole; diff --git a/content/browser/accessibility/browser_accessibility_cocoa.mm b/content/browser/accessibility/browser_accessibility_cocoa.mm -index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1c314cbb4 100644 +index 06e0766c6023768dc88f4d7deb28b1960c594ebb..980b855b6c52bdc39bf9e79e2b1618bd5d31c0cb 100644 --- a/content/browser/accessibility/browser_accessibility_cocoa.mm +++ b/content/browser/accessibility/browser_accessibility_cocoa.mm @@ -206,6 +206,7 @@ @@ -263,7 +263,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 {NSAccessibilityInvalidAttribute, @"invalid"}, {NSAccessibilityIsMultiSelectableAttribute, @"isMultiSelectable"}, {NSAccessibilityLanguageAttribute, @"language"}, -@@ -874,13 +884,17 @@ + (void)initialize { +@@ -873,13 +883,17 @@ + (void)initialize { {NSAccessibilityRowsAttribute, @"rows"}, // TODO(aboxhall): expose // NSAccessibilityServesAsTitleForUIElementsAttribute @@ -281,7 +281,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 {NSAccessibilitySizeAttribute, @"size"}, {NSAccessibilitySortDirectionAttribute, @"sortDirection"}, {NSAccessibilitySubroleAttribute, @"subrole"}, -@@ -1412,6 +1426,7 @@ - (NSNumber*)enabled { +@@ -1411,6 +1425,7 @@ - (NSNumber*)enabled { ax::mojom::Restriction::kDisabled); } @@ -289,7 +289,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 // Returns a text marker that points to the last character in the document that // can be selected with VoiceOver. - (id)endTextMarker { -@@ -1420,6 +1435,7 @@ - (id)endTextMarker { +@@ -1419,6 +1434,7 @@ - (id)endTextMarker { BrowserAccessibility::AXPosition position = _owner->CreateTextPositionAt(0); return CreateTextMarker(position->CreatePositionAtEndOfContent()); } @@ -297,7 +297,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 - (NSNumber*)expanded { if (![self instanceActive]) -@@ -1620,6 +1636,7 @@ - (bool)findRowIndex:(BrowserAccessibilityCocoa*)toFind +@@ -1619,6 +1635,7 @@ - (bool)findRowIndex:(BrowserAccessibilityCocoa*)toFind return false; } @@ -305,7 +305,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 - (NSNumber*)AXInsertionPointLineNumber { return [self insertionPointLineNumber]; } -@@ -1649,6 +1666,7 @@ - (NSNumber*)insertionPointLineNumber { +@@ -1648,6 +1665,7 @@ - (NSNumber*)insertionPointLineNumber { caretPosition->AsTextPosition()->text_offset()); return @(std::distance(lineBreaks.begin(), iterator)); } @@ -313,7 +313,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 // Returns whether or not this node should be ignored in the // accessibility tree. -@@ -2016,8 +2034,12 @@ - (BOOL)shouldExposeTitleUIElement { +@@ -1998,8 +2016,12 @@ - (BOOL)shouldExposeTitleUIElement { return content::AXTextEdit(newValue, std::u16string(), nil); } } @@ -326,7 +326,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 } // internal -@@ -2346,6 +2368,7 @@ - (NSArray*)selectedChildren { +@@ -2328,6 +2350,7 @@ - (NSArray*)selectedChildren { return ret; } @@ -334,7 +334,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 - (NSString*)AXSelectedText { return [self selectedText]; } -@@ -2394,7 +2417,9 @@ - (NSValue*)selectedTextRange { +@@ -2376,7 +2399,9 @@ - (NSValue*)selectedTextRange { int selLength = range.GetText().length(); return [NSValue valueWithRange:NSMakeRange(selStart, selLength)]; } @@ -344,7 +344,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 - (id)selectedTextMarkerRange { if (![self instanceActive]) return nil; -@@ -2406,6 +2431,7 @@ - (id)selectedTextMarkerRange { +@@ -2388,6 +2413,7 @@ - (id)selectedTextMarkerRange { // words correctly. return CreateTextMarkerRange(ax_range.AsBackwardRange()); } @@ -352,7 +352,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 - (NSValue*)size { if (![self instanceActive]) -@@ -2438,6 +2464,7 @@ - (NSString*)sortDirection { +@@ -2420,6 +2446,7 @@ - (NSString*)sortDirection { return nil; } @@ -360,7 +360,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 // Returns a text marker that points to the first character in the document that // can be selected with VoiceOver. - (id)startTextMarker { -@@ -2446,6 +2473,7 @@ - (id)startTextMarker { +@@ -2428,6 +2455,7 @@ - (id)startTextMarker { BrowserAccessibility::AXPosition position = _owner->CreateTextPositionAt(0); return CreateTextMarker(position->CreatePositionAtStartOfContent()); } @@ -368,7 +368,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 - (NSString*)AXSubrole { return [self subrole]; -@@ -2793,12 +2821,14 @@ - (NSAttributedString*)attributedValueForRange:(NSRange)range { +@@ -2771,12 +2799,14 @@ - (NSAttributedString*)attributedValueForRange:(NSRange)range { NSMutableAttributedString* attributedInnerText = [[[NSMutableAttributedString alloc] initWithString:base::SysUTF16ToNSString(innerText)] autorelease]; @@ -383,7 +383,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 return [attributedInnerText attributedSubstringFromRange:range]; } -@@ -2930,6 +2960,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute +@@ -2908,6 +2938,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute return ToBrowserAccessibilityCocoa(cell); } @@ -391,7 +391,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 if ([attribute isEqualToString: NSAccessibilityUIElementForTextMarkerParameterizedAttribute]) { -@@ -3253,6 +3284,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute +@@ -3231,6 +3262,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute return CreateTextMarker(root->CreateTextPositionAt(index)); } @@ -399,7 +399,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 if ([attribute isEqualToString: NSAccessibilityBoundsForRangeParameterizedAttribute]) { -@@ -3283,6 +3315,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute +@@ -3261,6 +3293,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute return nil; } @@ -407,7 +407,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 if ([attribute isEqualToString: NSAccessibilityLineTextMarkerRangeForTextMarkerParameterizedAttribute]) { -@@ -3402,6 +3435,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute +@@ -3380,6 +3413,7 @@ - (id)accessibilityAttributeValue:(NSString*)attribute return @(child->GetIndexInParent()); } @@ -415,7 +415,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 return nil; } -@@ -3968,6 +4002,7 @@ - (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute { +@@ -3946,6 +3980,7 @@ - (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute { ->AsTextSelectionPosition())); } } @@ -423,7 +423,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 if ([attribute isEqualToString:NSAccessibilitySelectedTextMarkerRangeAttribute]) { BrowserAccessibility::AXRange range = CreateRangeFromTextMarkerRange(value); -@@ -3978,6 +4013,7 @@ - (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute { +@@ -3956,6 +3991,7 @@ - (void)accessibilitySetValue:(id)value forAttribute:(NSString*)attribute { range.anchor()->AsTextSelectionPosition(), range.focus()->AsTextSelectionPosition())); } @@ -432,7 +432,7 @@ index 8ed0e510c5a0381c04c80f12d1ab415ffa6770d8..ad59de0943abe8fa856cf787cec917c1 - (id)accessibilityFocusedUIElement { diff --git a/content/browser/accessibility/browser_accessibility_manager_mac.mm b/content/browser/accessibility/browser_accessibility_manager_mac.mm -index 58f6c6ad44112166f4ff14912a2cc2b8be81c887..716a83853985dced4ec09d137e84dd0356e4aa2c 100644 +index c4c0e0aaa1be36160152388a304bbc62d73cb01c..44dfc7394784c32e3f3c8bab7b6304229862ce3e 100644 --- a/content/browser/accessibility/browser_accessibility_manager_mac.mm +++ b/content/browser/accessibility/browser_accessibility_manager_mac.mm @@ -502,7 +502,7 @@ void PostAnnouncementNotification(NSString* announcement) { @@ -541,7 +541,7 @@ index c15f3a631292b538698625328fb429ee3c9964f5..37e038753ecf1b82ec92c06b2c0729b5 } diff --git a/device/bluetooth/bluetooth_adapter_mac.mm b/device/bluetooth/bluetooth_adapter_mac.mm -index 54d902424796eb0687ebeedb6f1a9cd4a926e5b0..9d3ca310a7554c5606f95e9df26ea35ec37879d9 100644 +index 91ed4a803558524223931d913ca9fd6dd00d7e37..b4c59d1ad7df77743dc4cc8f4e378b21f2b5e553 100644 --- a/device/bluetooth/bluetooth_adapter_mac.mm +++ b/device/bluetooth/bluetooth_adapter_mac.mm @@ -42,6 +42,7 @@ @@ -602,10 +602,10 @@ index 9c8628a08045c7793f088200b58b492b9f0581cf..1c5b6e85bce201fc13c34671b0761767 "AudioToolbox.framework", "AudioUnit.framework", diff --git a/media/audio/mac/audio_manager_mac.cc b/media/audio/mac/audio_manager_mac.cc -index 261596b9b7414e5c732bef945610c0cdf1384da8..f58ac1d55acac1895391579275a12b0f9802491d 100644 +index 2066a12b1940bcec87ab01e94cb63ea46b1c46db..d6e08b56420077bbdddd81c12a535fea62197aca 100644 --- a/media/audio/mac/audio_manager_mac.cc +++ b/media/audio/mac/audio_manager_mac.cc -@@ -883,7 +883,7 @@ AudioParameters AudioManagerMac::GetPreferredOutputStreamParameters( +@@ -887,7 +887,7 @@ AudioParameters AudioManagerMac::GetPreferredOutputStreamParameters( void AudioManagerMac::InitializeOnAudioThread() { DCHECK(GetTaskRunner()->BelongsToCurrentThread()); @@ -615,10 +615,10 @@ index 261596b9b7414e5c732bef945610c0cdf1384da8..f58ac1d55acac1895391579275a12b0f } diff --git a/net/dns/dns_config_service_posix.cc b/net/dns/dns_config_service_posix.cc -index 2de14574f1b7e848fc03ff1071fddf8307bc9ea2..75a86416bad754f1e9c92afb2fad27a501b9cc6c 100644 +index 1aef5a0d9d4cdfcb669118a4f7244819ff14ed39..e418ef18ed7e1855090f201ab2de9bc240643e84 100644 --- a/net/dns/dns_config_service_posix.cc +++ b/net/dns/dns_config_service_posix.cc -@@ -136,8 +136,8 @@ class DnsConfigServicePosix::Watcher : public DnsConfigService::Watcher { +@@ -140,8 +140,8 @@ class DnsConfigServicePosix::Watcher : public DnsConfigService::Watcher { bool Watch() override { CheckOnCorrectSequence(); @@ -628,7 +628,7 @@ index 2de14574f1b7e848fc03ff1071fddf8307bc9ea2..75a86416bad754f1e9c92afb2fad27a5 if (!config_watcher_.Watch(base::BindRepeating(&Watcher::OnConfigChanged, base::Unretained(this)))) { LOG(ERROR) << "DNS config watch failed to start."; -@@ -154,6 +154,7 @@ class DnsConfigServicePosix::Watcher : public DnsConfigService::Watcher { +@@ -158,6 +158,7 @@ class DnsConfigServicePosix::Watcher : public DnsConfigService::Watcher { success = false; } #endif // !defined(OS_IOS) diff --git a/patches/chromium/network_service_allow_remote_certificate_verification_logic.patch b/patches/chromium/network_service_allow_remote_certificate_verification_logic.patch index 201983be53..98e24b9d23 100644 --- a/patches/chromium/network_service_allow_remote_certificate_verification_logic.patch +++ b/patches/chromium/network_service_allow_remote_certificate_verification_logic.patch @@ -7,10 +7,10 @@ This adds a callback from the network service that's used to implement session.setCertificateVerifyCallback. diff --git a/services/network/network_context.cc b/services/network/network_context.cc -index 2dda0e753a89fcbf446212f429e90659ca289bf0..7bd73dae3a77cb16cf282d2df7f4ff7a8f412805 100644 +index f8fddf1b0a2c7b0eefaa0e7dd550594cc274b91b..39ff43884fbc2b6768d7ddb6e9d63031a973b8fa 100644 --- a/services/network/network_context.cc +++ b/services/network/network_context.cc -@@ -118,6 +118,11 @@ +@@ -119,6 +119,11 @@ #include "services/network/web_transport.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -22,7 +22,7 @@ index 2dda0e753a89fcbf446212f429e90659ca289bf0..7bd73dae3a77cb16cf282d2df7f4ff7a #if BUILDFLAG(IS_CT_SUPPORTED) #include "components/certificate_transparency/chrome_ct_policy_enforcer.h" #include "components/certificate_transparency/chrome_require_ct_delegate.h" -@@ -419,6 +424,79 @@ bool GetFullDataFilePath( +@@ -420,6 +425,79 @@ bool GetFullDataFilePath( } // namespace @@ -102,7 +102,7 @@ index 2dda0e753a89fcbf446212f429e90659ca289bf0..7bd73dae3a77cb16cf282d2df7f4ff7a constexpr uint32_t NetworkContext::kMaxOutstandingRequestsPerProcess; NetworkContext::PendingCertVerify::PendingCertVerify() = default; -@@ -643,6 +721,13 @@ void NetworkContext::SetClient( +@@ -644,6 +722,13 @@ void NetworkContext::SetClient( client_.Bind(std::move(client)); } @@ -116,7 +116,7 @@ index 2dda0e753a89fcbf446212f429e90659ca289bf0..7bd73dae3a77cb16cf282d2df7f4ff7a void NetworkContext::CreateURLLoaderFactory( mojo::PendingReceiver receiver, mojom::URLLoaderFactoryParamsPtr params) { -@@ -2085,6 +2170,9 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( +@@ -2088,6 +2173,9 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( std::move(cert_verifier)); cert_verifier = base::WrapUnique(cert_verifier_with_trust_anchors_); #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -127,7 +127,7 @@ index 2dda0e753a89fcbf446212f429e90659ca289bf0..7bd73dae3a77cb16cf282d2df7f4ff7a builder.SetCertVerifier(IgnoreErrorsCertVerifier::MaybeWrapCertVerifier( diff --git a/services/network/network_context.h b/services/network/network_context.h -index 9339c55c5e818a2a7bd8800d9b1cb64553369c24..049c8e5e0e34454f03a823b31a5f7755d67cfb07 100644 +index 9f204502a1d58e16ef191efc7bda2315dc0e3d50..8362af824a8dd4f721eebdbff2d544f7f5093d16 100644 --- a/services/network/network_context.h +++ b/services/network/network_context.h @@ -99,6 +99,7 @@ class DomainReliabilityMonitor; @@ -138,7 +138,7 @@ index 9339c55c5e818a2a7bd8800d9b1cb64553369c24..049c8e5e0e34454f03a823b31a5f7755 class CookieManager; class ExpectCTReporter; class HostResolver; -@@ -210,6 +211,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -213,6 +214,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext void CreateURLLoaderFactory( mojo::PendingReceiver receiver, mojom::URLLoaderFactoryParamsPtr params) override; @@ -147,7 +147,7 @@ index 9339c55c5e818a2a7bd8800d9b1cb64553369c24..049c8e5e0e34454f03a823b31a5f7755 void ResetURLLoaderFactories() override; void GetCookieManager( mojo::PendingReceiver receiver) override; -@@ -743,6 +746,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext +@@ -746,6 +749,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext CertVerifierWithTrustAnchors* cert_verifier_with_trust_anchors_ = nullptr; #endif @@ -157,7 +157,7 @@ index 9339c55c5e818a2a7bd8800d9b1cb64553369c24..049c8e5e0e34454f03a823b31a5f7755 // CertNetFetcher is not used by the current platform, or if the actual // net::CertVerifier is instantiated outside of the network service. diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom -index 6d2ab194fd2330426f56602cd2e586f096750acd..d8e7d0d35317fe1124bf81f60faf2b35ae19a3d7 100644 +index f3f625cc6d5457012703c25a89684f9ad9f05768..8f8b496324265b25046a88cbac7decec056f061e 100644 --- a/services/network/public/mojom/network_context.mojom +++ b/services/network/public/mojom/network_context.mojom @@ -265,6 +265,17 @@ struct NetworkContextFilePaths { diff --git a/patches/chromium/notification_provenance.patch b/patches/chromium/notification_provenance.patch index 0a6ee6c368..c820b27417 100644 --- a/patches/chromium/notification_provenance.patch +++ b/patches/chromium/notification_provenance.patch @@ -33,7 +33,7 @@ index 442b856f8bcfbcea7742188897f0ce0a25cd60f4..6165eb772901faa25514c9bbefd13ff6 } diff --git a/content/browser/notifications/blink_notification_service_impl.h b/content/browser/notifications/blink_notification_service_impl.h -index 19c2beb1f1949f0dc4466a8728f151c035544b24..f7aa5f94d6dea0e6b2c1107b8ef01600bf13903b 100644 +index e4b630b54fe782879f7c79afb13aa025dd1505b2..983804b6846a4f5b07e72a1c7c7e0b871b4eddf7 100644 --- a/content/browser/notifications/blink_notification_service_impl.h +++ b/content/browser/notifications/blink_notification_service_impl.h @@ -41,6 +41,7 @@ class CONTENT_EXPORT BlinkNotificationServiceImpl @@ -44,7 +44,7 @@ index 19c2beb1f1949f0dc4466a8728f151c035544b24..f7aa5f94d6dea0e6b2c1107b8ef01600 const url::Origin& origin, const GURL& document_url, mojo::PendingReceiver receiver); -@@ -96,6 +97,7 @@ class CONTENT_EXPORT BlinkNotificationServiceImpl +@@ -101,6 +102,7 @@ class CONTENT_EXPORT BlinkNotificationServiceImpl // The notification context that owns this service instance. PlatformNotificationContextImpl* notification_context_; @@ -53,10 +53,10 @@ index 19c2beb1f1949f0dc4466a8728f151c035544b24..f7aa5f94d6dea0e6b2c1107b8ef01600 scoped_refptr service_worker_context_; diff --git a/content/browser/notifications/blink_notification_service_impl_unittest.cc b/content/browser/notifications/blink_notification_service_impl_unittest.cc -index 740b591e68522f211177f4578d8cd3b9aa49f152..6190edab32f373a8076820eac943afb1c6bebe99 100644 +index e1fe936d73bb74a2708993ce72443f62ebb969f8..ba46243ca95466243afbc82fc689aa43cd84e61b 100644 --- a/content/browser/notifications/blink_notification_service_impl_unittest.cc +++ b/content/browser/notifications/blink_notification_service_impl_unittest.cc -@@ -122,7 +122,7 @@ class BlinkNotificationServiceImplTest : public ::testing::Test { +@@ -127,7 +127,7 @@ class BlinkNotificationServiceImplTest : public ::testing::Test { notification_service_ = std::make_unique( notification_context_.get(), &browser_context_, @@ -66,10 +66,10 @@ index 740b591e68522f211177f4578d8cd3b9aa49f152..6190edab32f373a8076820eac943afb1 /*document_url=*/GURL(), notification_service_remote_.BindNewPipeAndPassReceiver()); diff --git a/content/browser/notifications/platform_notification_context_impl.cc b/content/browser/notifications/platform_notification_context_impl.cc -index 32f66cfb52ae240f5a8311779421f01920a31bb2..128355a4791ebb68045522627a5a8db183c1c070 100644 +index 883cfb82286da5237e3b7ec35632bf575be6c413..805c6476e09857af75d391276357b2c2e08ea8c0 100644 --- a/content/browser/notifications/platform_notification_context_impl.cc +++ b/content/browser/notifications/platform_notification_context_impl.cc -@@ -282,13 +282,14 @@ void PlatformNotificationContextImpl::Shutdown() { +@@ -281,13 +281,14 @@ void PlatformNotificationContextImpl::Shutdown() { } void PlatformNotificationContextImpl::CreateService( @@ -107,10 +107,10 @@ index 78f9ab684d2eeef9a647d82ccb39c1b208e999d4..d55a4e51a0d263ec07ca115715cccc30 const GURL& document_url, mojo::PendingReceiver receiver); diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc -index f788e63de17e478ad749c61a2744747ef59af75a..d64ad2d8d3a9515768d82ff02e7be26383dd5b66 100644 +index 00a6377d2136771abf68d19bc5cb0a03b2a3d738..7e9d623030976aef80b37d2a224abc9b3013ede7 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc -@@ -2273,7 +2273,7 @@ void RenderProcessHostImpl::CreateNotificationService( +@@ -2245,7 +2245,7 @@ void RenderProcessHostImpl::CreateNotificationService( document_url = rfh->GetLastCommittedURL(); storage_partition_impl_->GetPlatformNotificationContext()->CreateService( @@ -153,10 +153,10 @@ index 7397963a36bec7016ae92fbc4bb741825e5fb8d1..d928e1ea629cd69ff188ce53e311786a const GURL& origin, const GURL& document_url, diff --git a/content/test/mock_platform_notification_service.h b/content/test/mock_platform_notification_service.h -index f2047771199f29ef4fe2a1817bf44acb54fe99b9..bea2d5e78bceb48678bfaeebe1745173967b983f 100644 +index ac33e0fb5a4eda45a300b7dd60a320468a857ed3..2f85e387c33628ac28ba95f04d4bd7d97b72fc51 100644 --- a/content/test/mock_platform_notification_service.h +++ b/content/test/mock_platform_notification_service.h -@@ -46,6 +46,7 @@ class MockPlatformNotificationService : public PlatformNotificationService { +@@ -52,6 +52,7 @@ class MockPlatformNotificationService : public PlatformNotificationService { // PlatformNotificationService implementation. void DisplayNotification( diff --git a/patches/chromium/pepper_plugin_support.patch b/patches/chromium/pepper_plugin_support.patch index 27dabc2d15..2c0dcd6dcb 100644 --- a/patches/chromium/pepper_plugin_support.patch +++ b/patches/chromium/pepper_plugin_support.patch @@ -107,7 +107,7 @@ index d75adab3141094e2897b2ed4ca9005bf82d70979..7ee78a7345e29a3ee8836a7a06af9a63 int32_t PepperIsolatedFileSystemMessageFilter::OpenPluginPrivateFileSystem( ppapi::host::HostMessageContext* context) { diff --git a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h -index 56a23e8f41bb418d414f11af5797b30571d4cc2b..6f9f577f16de80dd2ab194b557bbd9ec89599280 100644 +index b94f5144538258555cda5d42fe7bd5e5af3ac902..2be302b4c7d85ed4382561202e4c03fb71166069 100644 --- a/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h +++ b/chrome/browser/renderer_host/pepper/pepper_isolated_file_system_message_filter.h @@ -20,7 +20,9 @@ @@ -120,7 +120,7 @@ index 56a23e8f41bb418d414f11af5797b30571d4cc2b..6f9f577f16de80dd2ab194b557bbd9ec namespace content { class BrowserPpapiHost; -@@ -54,6 +56,7 @@ class PepperIsolatedFileSystemMessageFilter +@@ -59,6 +61,7 @@ class PepperIsolatedFileSystemMessageFilter ~PepperIsolatedFileSystemMessageFilter() override; @@ -128,7 +128,7 @@ index 56a23e8f41bb418d414f11af5797b30571d4cc2b..6f9f577f16de80dd2ab194b557bbd9ec Profile* GetProfile(); // Returns filesystem id of isolated filesystem if valid, or empty string -@@ -61,10 +64,13 @@ class PepperIsolatedFileSystemMessageFilter +@@ -66,10 +69,13 @@ class PepperIsolatedFileSystemMessageFilter // allows access on that thread. storage::IsolatedContext::ScopedFSHandle CreateCrxFileSystem( Profile* profile); @@ -142,7 +142,7 @@ index 56a23e8f41bb418d414f11af5797b30571d4cc2b..6f9f577f16de80dd2ab194b557bbd9ec int32_t OpenPluginPrivateFileSystem(ppapi::host::HostMessageContext* context); const int render_process_id_; -@@ -75,8 +81,10 @@ class PepperIsolatedFileSystemMessageFilter +@@ -80,8 +86,10 @@ class PepperIsolatedFileSystemMessageFilter // Not owned by this object. ppapi::host::PpapiHost* ppapi_host_; @@ -150,9 +150,9 @@ index 56a23e8f41bb418d414f11af5797b30571d4cc2b..6f9f577f16de80dd2ab194b557bbd9ec // Set of origins that can use CrxFs private APIs from NaCl. std::set allowed_crxfs_origins_; +#endif - - DISALLOW_COPY_AND_ASSIGN(PepperIsolatedFileSystemMessageFilter); }; + + #endif // CHROME_BROWSER_RENDERER_HOST_PEPPER_PEPPER_ISOLATED_FILE_SYSTEM_MESSAGE_FILTER_H_ diff --git a/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc b/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc index 60cfd89dfd18eced6f6d103267b80d547d2e9f26..95d36e99832f434d878a2a2fc3101a611926acb2 100644 --- a/chrome/renderer/pepper/chrome_renderer_pepper_host_factory.cc diff --git a/patches/chromium/picture-in-picture.patch b/patches/chromium/picture-in-picture.patch index 5377b0878b..96998ada02 100644 --- a/patches/chromium/picture-in-picture.patch +++ b/patches/chromium/picture-in-picture.patch @@ -61,7 +61,7 @@ index 7b711bdbaf4afddd6ccf300af7bab26487942243..987a60b81554b676661d8f1a53facbc9 #include "ui/base/l10n/l10n_util.h" #include "ui/gfx/paint_vector_icon.h" diff --git a/chrome/browser/ui/views/overlay/overlay_window_views.cc b/chrome/browser/ui/views/overlay/overlay_window_views.cc -index 3db862e69264ddf9e850f1354fce402a3e920b75..4a667a2bbd2d36d275438b63c56fa219e79631f6 100644 +index c920adbbd8db50dd253d17e954d1a96d7599bfcc..67ba2c16cfa66cb5a8983fa2cb6f5a8d4e791712 100644 --- a/chrome/browser/ui/views/overlay/overlay_window_views.cc +++ b/chrome/browser/ui/views/overlay/overlay_window_views.cc @@ -15,9 +15,11 @@ diff --git a/patches/chromium/printing.patch b/patches/chromium/printing.patch index 58356d22f5..7f2bf8fe3c 100644 --- a/patches/chromium/printing.patch +++ b/patches/chromium/printing.patch @@ -11,10 +11,10 @@ majority of changes originally come from these PRs: This patch also fixes callback for manual user cancellation and success. diff --git a/chrome/browser/printing/print_job.cc b/chrome/browser/printing/print_job.cc -index 5e44b586937c4100e9cb55f152338a11f24eed8c..879add3dc328cea225b9f4c91bd103939429beeb 100644 +index baf39affec92126a6f998636bf35d1f2563fa47f..18c61ff4b2145881fd396b6e397eb7c4f9468558 100644 --- a/chrome/browser/printing/print_job.cc +++ b/chrome/browser/printing/print_job.cc -@@ -89,6 +89,7 @@ bool PrintWithReducedRasterization(PrefService* prefs) { +@@ -88,6 +88,7 @@ bool PrintWithReducedRasterization(PrefService* prefs) { return base::FeatureList::IsEnabled(features::kPrintWithReducedRasterization); } @@ -22,7 +22,7 @@ index 5e44b586937c4100e9cb55f152338a11f24eed8c..879add3dc328cea225b9f4c91bd10393 PrefService* GetPrefsForWebContents(content::WebContents* web_contents) { // TODO(thestig): Figure out why crbug.com/1083911 occurred, which is likely // because `web_contents` was null. As a result, this section has many more -@@ -97,6 +98,7 @@ PrefService* GetPrefsForWebContents(content::WebContents* web_contents) { +@@ -96,6 +97,7 @@ PrefService* GetPrefsForWebContents(content::WebContents* web_contents) { web_contents ? web_contents->GetBrowserContext() : nullptr; return context ? Profile::FromBrowserContext(context)->GetPrefs() : nullptr; } @@ -30,7 +30,7 @@ index 5e44b586937c4100e9cb55f152338a11f24eed8c..879add3dc328cea225b9f4c91bd10393 #endif // defined(OS_WIN) -@@ -381,11 +383,18 @@ void PrintJob::StartPdfToEmfConversion( +@@ -380,11 +382,18 @@ void PrintJob::StartPdfToEmfConversion( // seems to work with the fix for this bug applied. const PrintSettings& settings = document()->settings(); bool print_text_with_gdi = @@ -51,7 +51,7 @@ index 5e44b586937c4100e9cb55f152338a11f24eed8c..879add3dc328cea225b9f4c91bd10393 using RenderMode = PdfRenderSettings::Mode; RenderMode mode; -@@ -480,8 +489,10 @@ void PrintJob::StartPdfToPostScriptConversion( +@@ -479,8 +488,10 @@ void PrintJob::StartPdfToPostScriptConversion( if (ps_level2) { mode = PdfRenderSettings::Mode::POSTSCRIPT_LEVEL2; } else { @@ -63,7 +63,7 @@ index 5e44b586937c4100e9cb55f152338a11f24eed8c..879add3dc328cea225b9f4c91bd10393 ? PdfRenderSettings::Mode::POSTSCRIPT_LEVEL3_WITH_TYPE42_FONTS : PdfRenderSettings::Mode::POSTSCRIPT_LEVEL3; } -@@ -531,6 +542,10 @@ void PrintJob::OnNotifyPrintJobEvent(const JobEventDetails& event_details) { +@@ -530,6 +541,10 @@ void PrintJob::OnNotifyPrintJobEvent(const JobEventDetails& event_details) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); switch (event_details.type()) { @@ -75,10 +75,10 @@ index 5e44b586937c4100e9cb55f152338a11f24eed8c..879add3dc328cea225b9f4c91bd10393 // No need to cancel since the worker already canceled itself. Stop(); diff --git a/chrome/browser/printing/print_job.h b/chrome/browser/printing/print_job.h -index b8b83529be4c7da661032d3b941984c02b978047..98ef6cfad5dc46d9dcb65a0ce506db3729410239 100644 +index 5914354ac77532eadb26bd09cffc8470fcf41c4b..18a92f5a9a35b7a86f47f6555b37d3c729c468cd 100644 --- a/chrome/browser/printing/print_job.h +++ b/chrome/browser/printing/print_job.h -@@ -242,6 +242,9 @@ class JobEventDetails : public base::RefCountedThreadSafe { +@@ -243,6 +243,9 @@ class JobEventDetails : public base::RefCountedThreadSafe { public: // Event type. enum Type { @@ -89,7 +89,7 @@ index b8b83529be4c7da661032d3b941984c02b978047..98ef6cfad5dc46d9dcb65a0ce506db37 NEW_DOC, diff --git a/chrome/browser/printing/print_job_worker.cc b/chrome/browser/printing/print_job_worker.cc -index 4305943435c15275084f0a9bb5490831d893870f..a048c0c11b3a8a06401ddf4d6e15700bf05600c3 100644 +index 288b9f89129de88ea078b2e6d3b2d255dd527a95..e9979d5c9707e94580d4a10b4c48c32ce07cfc70 100644 --- a/chrome/browser/printing/print_job_worker.cc +++ b/chrome/browser/printing/print_job_worker.cc @@ -21,13 +21,13 @@ @@ -105,13 +105,13 @@ index 4305943435c15275084f0a9bb5490831d893870f..a048c0c11b3a8a06401ddf4d6e15700b #include "content/public/browser/web_contents.h" +#include "electron/grit/electron_resources.h" #include "printing/backend/print_backend.h" + #include "printing/buildflags/buildflags.h" #include "printing/mojom/print.mojom.h" - #include "printing/print_job_constants.h" -@@ -240,16 +240,21 @@ void PrintJobWorker::UpdatePrintSettings(base::Value new_settings, +@@ -301,16 +301,21 @@ void PrintJobWorker::UpdatePrintSettings(base::Value new_settings, #endif // defined(OS_LINUX) && defined(USE_CUPS) } -- PrintingContext::Result result; +- mojom::ResultCode result; { #if defined(OS_WIN) // Blocking is needed here because Windows printer drivers are oftentimes @@ -121,9 +121,9 @@ index 4305943435c15275084f0a9bb5490831d893870f..a048c0c11b3a8a06401ddf4d6e15700b - result = printing_context_->UpdatePrintSettings(std::move(new_settings)); + // Reset settings from previous print job + printing_context_->ResetSettings(); -+ PrintingContext::Result get_default_result = printing_context_->UseDefaultSettings(); -+ if (get_default_result == PrintingContext::Result::OK) { -+ PrintingContext::Result update_result = ++ mojom::ResultCode get_default_result = printing_context_->UseDefaultSettings(); ++ if (get_default_result == mojom::ResultCode::kSuccess) { ++ mojom::ResultCode update_result = + printing_context_->UpdatePrintSettings(std::move(new_settings)); + GetSettingsDone(std::move(callback), update_result); + } @@ -132,11 +132,11 @@ index 4305943435c15275084f0a9bb5490831d893870f..a048c0c11b3a8a06401ddf4d6e15700b } #if defined(OS_CHROMEOS) -@@ -265,6 +270,13 @@ void PrintJobWorker::UpdatePrintSettingsFromPOD( +@@ -326,6 +331,13 @@ void PrintJobWorker::UpdatePrintSettingsFromPOD( void PrintJobWorker::GetSettingsDone(SettingsCallback callback, - PrintingContext::Result result) { -+ if (result == PrintingContext::CANCEL) { + mojom::ResultCode result) { ++ if (result == mojom::ResultCode::kCanceled) { + print_job_->PostTask( + FROM_HERE, + base::BindOnce(&NotificationCallback, base::RetainedRef(print_job_), @@ -147,7 +147,7 @@ index 4305943435c15275084f0a9bb5490831d893870f..a048c0c11b3a8a06401ddf4d6e15700b } diff --git a/chrome/browser/printing/print_view_manager_base.cc b/chrome/browser/printing/print_view_manager_base.cc -index e4cacbf9a82da8dca062cc33df885a0575e74830..143ee383668965ba04da092e3445fc9f4a33a433 100644 +index 2011d52338081666b4761e0bf66d01245abd0213..647ac4cd9730c8983868ea165907b7c9a42767aa 100644 --- a/chrome/browser/printing/print_view_manager_base.cc +++ b/chrome/browser/printing/print_view_manager_base.cc @@ -28,10 +28,10 @@ @@ -188,18 +188,18 @@ index e4cacbf9a82da8dca062cc33df885a0575e74830..143ee383668965ba04da092e3445fc9f } #if BUILDFLAG(ENABLE_PRINT_PREVIEW) -@@ -237,7 +241,9 @@ void UpdatePrintSettingsReplyOnIO( +@@ -238,7 +242,9 @@ void UpdatePrintSettingsReplyOnIO( DCHECK_CURRENTLY_ON(content::BrowserThread::IO); DCHECK(printer_query); mojom::PrintPagesParamsPtr params = CreateEmptyPrintPagesParamsPtr(); -- if (printer_query->last_status() == PrintingContext::OK) { +- if (printer_query->last_status() == mojom::ResultCode::kSuccess) { + // We call update without first printing from defaults, + // so the last printer status will still be defaulted to PrintingContext::FAILED + if (printer_query) { RenderParamsFromPrintSettings(printer_query->settings(), params->params.get()); params->params->document_cookie = printer_query->cookie(); -@@ -340,12 +346,14 @@ PrintViewManagerBase::PrintViewManagerBase(content::WebContents* web_contents) +@@ -341,12 +347,14 @@ PrintViewManagerBase::PrintViewManagerBase(content::WebContents* web_contents) : PrintManager(web_contents), queue_(g_browser_process->print_job_manager()->queue()) { DCHECK(queue_); @@ -214,7 +214,7 @@ index e4cacbf9a82da8dca062cc33df885a0575e74830..143ee383668965ba04da092e3445fc9f } PrintViewManagerBase::~PrintViewManagerBase() { -@@ -353,7 +361,10 @@ PrintViewManagerBase::~PrintViewManagerBase() { +@@ -354,7 +362,10 @@ PrintViewManagerBase::~PrintViewManagerBase() { DisconnectFromCurrentPrintJob(); } @@ -226,7 +226,7 @@ index e4cacbf9a82da8dca062cc33df885a0575e74830..143ee383668965ba04da092e3445fc9f auto weak_this = weak_ptr_factory_.GetWeakPtr(); DisconnectFromCurrentPrintJob(); if (!weak_this) -@@ -368,7 +379,14 @@ bool PrintViewManagerBase::PrintNow(content::RenderFrameHost* rfh) { +@@ -369,7 +380,14 @@ bool PrintViewManagerBase::PrintNow(content::RenderFrameHost* rfh) { // go in `ReleasePrintJob()`. SetPrintingRFH(rfh); @@ -239,10 +239,10 @@ index e4cacbf9a82da8dca062cc33df885a0575e74830..143ee383668965ba04da092e3445fc9f + } + + GetPrintRenderFrame(rfh)->PrintRequestedPages(silent, std::move(settings)); - return true; - } -@@ -523,9 +541,9 @@ void PrintViewManagerBase::ScriptedPrintReply( + for (auto& observer : GetObservers()) + observer.OnPrintNow(rfh); +@@ -528,9 +546,9 @@ void PrintViewManagerBase::ScriptedPrintReply( void PrintViewManagerBase::UpdatePrintingEnabled() { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); // The Unretained() is safe because ForEachFrame() is synchronous. @@ -255,7 +255,7 @@ index e4cacbf9a82da8dca062cc33df885a0575e74830..143ee383668965ba04da092e3445fc9f } void PrintViewManagerBase::NavigationStopped() { -@@ -639,12 +657,13 @@ void PrintViewManagerBase::DidPrintDocument( +@@ -644,12 +662,13 @@ void PrintViewManagerBase::DidPrintDocument( void PrintViewManagerBase::GetDefaultPrintSettings( GetDefaultPrintSettingsCallback callback) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); @@ -270,7 +270,7 @@ index e4cacbf9a82da8dca062cc33df885a0575e74830..143ee383668965ba04da092e3445fc9f content::RenderFrameHost* render_frame_host = GetCurrentTargetFrame(); auto callback_wrapper = base::BindOnce(&PrintViewManagerBase::GetDefaultPrintSettingsReply, -@@ -662,18 +681,20 @@ void PrintViewManagerBase::UpdatePrintSettings( +@@ -667,18 +686,20 @@ void PrintViewManagerBase::UpdatePrintSettings( base::Value job_settings, UpdatePrintSettingsCallback callback) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); @@ -292,7 +292,7 @@ index e4cacbf9a82da8dca062cc33df885a0575e74830..143ee383668965ba04da092e3445fc9f content::BrowserContext* context = web_contents() ? web_contents()->GetBrowserContext() : nullptr; PrefService* prefs = -@@ -683,6 +704,7 @@ void PrintViewManagerBase::UpdatePrintSettings( +@@ -688,6 +709,7 @@ void PrintViewManagerBase::UpdatePrintSettings( if (value > 0) job_settings.SetIntKey(kSettingRasterizePdfDpi, value); } @@ -300,7 +300,7 @@ index e4cacbf9a82da8dca062cc33df885a0575e74830..143ee383668965ba04da092e3445fc9f content::RenderFrameHost* render_frame_host = GetCurrentTargetFrame(); auto callback_wrapper = -@@ -722,13 +744,17 @@ void PrintViewManagerBase::PrintingFailed(int32_t cookie) { +@@ -727,7 +749,6 @@ void PrintViewManagerBase::PrintingFailed(int32_t cookie) { PrintManager::PrintingFailed(cookie); #if BUILDFLAG(ENABLE_PRINT_PREVIEW) @@ -308,6 +308,7 @@ index e4cacbf9a82da8dca062cc33df885a0575e74830..143ee383668965ba04da092e3445fc9f #endif ReleasePrinterQuery(); +@@ -742,6 +763,11 @@ void PrintViewManagerBase::RemoveObserver(Observer& observer) { } void PrintViewManagerBase::ShowInvalidPrinterSettingsError() { @@ -319,7 +320,7 @@ index e4cacbf9a82da8dca062cc33df885a0575e74830..143ee383668965ba04da092e3445fc9f base::ThreadTaskRunnerHandle::Get()->PostTask( FROM_HERE, base::BindOnce(&ShowWarningMessageBox, l10n_util::GetStringUTF16( -@@ -807,6 +833,11 @@ void PrintViewManagerBase::OnNotifyPrintJobEvent( +@@ -820,6 +846,11 @@ void PrintViewManagerBase::OnNotifyPrintJobEvent( #endif break; } @@ -331,7 +332,7 @@ index e4cacbf9a82da8dca062cc33df885a0575e74830..143ee383668965ba04da092e3445fc9f case JobEventDetails::JOB_DONE: // Printing is done, we don't need it anymore. // print_job_->is_job_pending() may still be true, depending on the order -@@ -876,7 +907,10 @@ bool PrintViewManagerBase::CreateNewPrintJob( +@@ -889,7 +920,10 @@ bool PrintViewManagerBase::CreateNewPrintJob( // Disconnect the current |print_job_|. auto weak_this = weak_ptr_factory_.GetWeakPtr(); @@ -343,7 +344,7 @@ index e4cacbf9a82da8dca062cc33df885a0575e74830..143ee383668965ba04da092e3445fc9f if (!weak_this) return false; -@@ -899,8 +933,6 @@ bool PrintViewManagerBase::CreateNewPrintJob( +@@ -912,8 +946,6 @@ bool PrintViewManagerBase::CreateNewPrintJob( /*source_id=*/""); #endif @@ -352,7 +353,7 @@ index e4cacbf9a82da8dca062cc33df885a0575e74830..143ee383668965ba04da092e3445fc9f printing_succeeded_ = false; return true; } -@@ -952,14 +984,22 @@ void PrintViewManagerBase::ReleasePrintJob() { +@@ -965,14 +997,22 @@ void PrintViewManagerBase::ReleasePrintJob() { content::RenderFrameHost* rfh = printing_rfh_; printing_rfh_ = nullptr; @@ -377,7 +378,7 @@ index e4cacbf9a82da8dca062cc33df885a0575e74830..143ee383668965ba04da092e3445fc9f // Don't close the worker thread. print_job_ = nullptr; } -@@ -998,7 +1038,7 @@ bool PrintViewManagerBase::RunInnerMessageLoop() { +@@ -1010,7 +1050,7 @@ bool PrintViewManagerBase::RunInnerMessageLoop() { } bool PrintViewManagerBase::OpportunisticallyCreatePrintJob(int cookie) { @@ -387,10 +388,10 @@ index e4cacbf9a82da8dca062cc33df885a0575e74830..143ee383668965ba04da092e3445fc9f if (!cookie) { diff --git a/chrome/browser/printing/print_view_manager_base.h b/chrome/browser/printing/print_view_manager_base.h -index 24ffeb0a87b2e324f84260eb4ec65021998ee2c3..872008c7ffd5298dc3cc8d1b52be6113104ce49c 100644 +index c4bcf96d0ac0130a74a9b5400546dfdf335dbd68..eb946b1f599629f663b79d11039e853a5b013d29 100644 --- a/chrome/browser/printing/print_view_manager_base.h +++ b/chrome/browser/printing/print_view_manager_base.h -@@ -38,6 +38,8 @@ class PrintJob; +@@ -40,6 +40,8 @@ class PrintJob; class PrintQueriesQueue; class PrinterQuery; @@ -399,7 +400,7 @@ index 24ffeb0a87b2e324f84260eb4ec65021998ee2c3..872008c7ffd5298dc3cc8d1b52be6113 // Base class for managing the print commands for a WebContents. class PrintViewManagerBase : public content::NotificationObserver, public PrintManager { -@@ -50,7 +52,10 @@ class PrintViewManagerBase : public content::NotificationObserver, +@@ -62,7 +64,10 @@ class PrintViewManagerBase : public content::NotificationObserver, // Prints the current document immediately. Since the rendering is // asynchronous, the actual printing will not be completed on the return of // this function. Returns false if printing is impossible at the moment. @@ -411,7 +412,7 @@ index 24ffeb0a87b2e324f84260eb4ec65021998ee2c3..872008c7ffd5298dc3cc8d1b52be6113 #if BUILDFLAG(ENABLE_PRINT_PREVIEW) // Prints the document in |print_data| with settings specified in -@@ -237,9 +242,15 @@ class PrintViewManagerBase : public content::NotificationObserver, +@@ -257,9 +262,15 @@ class PrintViewManagerBase : public content::NotificationObserver, // The current RFH that is printing with a system printing dialog. content::RenderFrameHost* printing_rfh_ = nullptr; @@ -441,7 +442,7 @@ index 51ebcb4ae399018d3fd8566656596a7ef1f148af..5f2b807fc364131f4c3e6a1646ec522d // Tells the RenderFrame to switch the CSS to print media type, render every // requested page using the print preview document's frame/node, and then diff --git a/components/printing/renderer/print_render_frame_helper.cc b/components/printing/renderer/print_render_frame_helper.cc -index ed3178671552bd673820f1d078374cf34e704797..4a5ccdadabfdd6eea89b9bb5e726938fbad4cf5f 100644 +index 2760a694a946eb2e4dba1ee228dc5fc13a2fc98e..769976022186037d8e75e244bdb0450c5670b5c0 100644 --- a/components/printing/renderer/print_render_frame_helper.cc +++ b/components/printing/renderer/print_render_frame_helper.cc @@ -38,6 +38,7 @@ @@ -452,7 +453,7 @@ index ed3178671552bd673820f1d078374cf34e704797..4a5ccdadabfdd6eea89b9bb5e726938f #include "printing/units.h" #include "third_party/blink/public/common/associated_interfaces/associated_interface_provider.h" #include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h" -@@ -1221,7 +1222,8 @@ void PrintRenderFrameHelper::ScriptedPrint(bool user_initiated) { +@@ -1222,7 +1223,8 @@ void PrintRenderFrameHelper::ScriptedPrint(bool user_initiated) { if (!weak_this) return; @@ -462,7 +463,7 @@ index ed3178671552bd673820f1d078374cf34e704797..4a5ccdadabfdd6eea89b9bb5e726938f if (!weak_this) return; -@@ -1252,7 +1254,7 @@ void PrintRenderFrameHelper::BindPrintRenderFrameReceiver( +@@ -1253,7 +1255,7 @@ void PrintRenderFrameHelper::BindPrintRenderFrameReceiver( receivers_.Add(this, std::move(receiver)); } @@ -471,7 +472,7 @@ index ed3178671552bd673820f1d078374cf34e704797..4a5ccdadabfdd6eea89b9bb5e726938f ScopedIPC scoped_ipc(weak_ptr_factory_.GetWeakPtr()); if (ipc_nesting_level_ > kAllowedIpcDepthForPrint) return; -@@ -1267,7 +1269,7 @@ void PrintRenderFrameHelper::PrintRequestedPages() { +@@ -1268,7 +1270,7 @@ void PrintRenderFrameHelper::PrintRequestedPages() { // that instead. auto plugin = delegate_->GetPdfElement(frame); @@ -480,7 +481,7 @@ index ed3178671552bd673820f1d078374cf34e704797..4a5ccdadabfdd6eea89b9bb5e726938f if (!render_frame_gone_) frame->DispatchAfterPrintEvent(); -@@ -1298,7 +1300,8 @@ void PrintRenderFrameHelper::PrintForSystemDialog() { +@@ -1299,7 +1301,8 @@ void PrintRenderFrameHelper::PrintForSystemDialog() { } Print(frame, print_preview_context_.source_node(), @@ -490,7 +491,7 @@ index ed3178671552bd673820f1d078374cf34e704797..4a5ccdadabfdd6eea89b9bb5e726938f if (!render_frame_gone_) print_preview_context_.DispatchAfterPrintEvent(); // WARNING: |this| may be gone at this point. Do not do any more work here and -@@ -1345,6 +1348,8 @@ void PrintRenderFrameHelper::PrintPreview(base::Value settings) { +@@ -1346,6 +1349,8 @@ void PrintRenderFrameHelper::PrintPreview(base::Value settings) { if (ipc_nesting_level_ > kAllowedIpcDepthForPrint) return; @@ -499,7 +500,7 @@ index ed3178671552bd673820f1d078374cf34e704797..4a5ccdadabfdd6eea89b9bb5e726938f print_preview_context_.OnPrintPreview(); if (print_preview_context_.IsForArc()) { -@@ -1881,7 +1886,8 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) { +@@ -1882,7 +1887,8 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) { return; Print(duplicate_node.GetDocument().GetFrame(), duplicate_node, @@ -509,7 +510,7 @@ index ed3178671552bd673820f1d078374cf34e704797..4a5ccdadabfdd6eea89b9bb5e726938f // Check if |this| is still valid. if (!weak_this) return; -@@ -1896,7 +1902,9 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) { +@@ -1897,7 +1903,9 @@ void PrintRenderFrameHelper::PrintNode(const blink::WebNode& node) { void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame, const blink::WebNode& node, @@ -520,7 +521,7 @@ index ed3178671552bd673820f1d078374cf34e704797..4a5ccdadabfdd6eea89b9bb5e726938f // If still not finished with earlier print request simply ignore. if (prep_frame_view_) return; -@@ -1904,7 +1912,7 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame, +@@ -1905,7 +1913,7 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame, FrameReference frame_ref(frame); uint32_t expected_page_count = 0; @@ -529,7 +530,7 @@ index ed3178671552bd673820f1d078374cf34e704797..4a5ccdadabfdd6eea89b9bb5e726938f DidFinishPrinting(FAIL_PRINT_INIT); return; // Failed to init print page settings. } -@@ -1923,8 +1931,15 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame, +@@ -1924,8 +1932,15 @@ void PrintRenderFrameHelper::Print(blink::WebLocalFrame* frame, print_pages_params_->params->print_scaling_option; auto self = weak_ptr_factory_.GetWeakPtr(); @@ -546,7 +547,7 @@ index ed3178671552bd673820f1d078374cf34e704797..4a5ccdadabfdd6eea89b9bb5e726938f // Check if |this| is still valid. if (!self) return; -@@ -2172,7 +2187,9 @@ void PrintRenderFrameHelper::IPCProcessed() { +@@ -2173,7 +2188,9 @@ void PrintRenderFrameHelper::IPCProcessed() { } } @@ -557,7 +558,7 @@ index ed3178671552bd673820f1d078374cf34e704797..4a5ccdadabfdd6eea89b9bb5e726938f mojom::PrintPagesParams settings; settings.params = mojom::PrintParams::New(); GetPrintManagerHost()->GetDefaultPrintSettings(&settings.params); -@@ -2196,12 +2213,14 @@ bool PrintRenderFrameHelper::InitPrintSettings(bool fit_to_paper_size) { +@@ -2197,12 +2214,14 @@ bool PrintRenderFrameHelper::InitPrintSettings(bool fit_to_paper_size) { return result; } @@ -576,7 +577,7 @@ index ed3178671552bd673820f1d078374cf34e704797..4a5ccdadabfdd6eea89b9bb5e726938f notify_browser_of_print_failure_ = false; GetPrintManagerHost()->ShowInvalidPrinterSettingsError(); return false; -@@ -2572,18 +2591,7 @@ void PrintRenderFrameHelper::RequestPrintPreview(PrintPreviewRequestType type) { +@@ -2573,18 +2592,7 @@ void PrintRenderFrameHelper::RequestPrintPreview(PrintPreviewRequestType type) { } bool PrintRenderFrameHelper::CheckForCancel() { @@ -638,22 +639,22 @@ index 90236920457c931c86426049c6cbc30b592b597f..353178863eba37b9112e784ffa4b3519 #if BUILDFLAG(ENABLE_PRINT_PREVIEW) // Set options for print preset from source PDF document. diff --git a/printing/printing_context.cc b/printing/printing_context.cc -index 744c3acfb9637aa64785dabd041ee416d56c3e43..9dadda9dfecdcf7826a3766064530a10126df66b 100644 +index cdfb2e0abd17b95bae4e1fd86aaf7364a76be1f6..446ae2060a27d6fa3d9b2f2691243369ad56f440 100644 --- a/printing/printing_context.cc +++ b/printing/printing_context.cc -@@ -115,7 +115,6 @@ PrintingContext::Result PrintingContext::UsePdfSettings() { +@@ -116,7 +116,6 @@ mojom::ResultCode PrintingContext::UsePdfSettings() { - PrintingContext::Result PrintingContext::UpdatePrintSettings( + mojom::ResultCode PrintingContext::UpdatePrintSettings( base::Value job_settings) { - ResetSettings(); { std::unique_ptr settings = PrintSettingsFromJobSettings(job_settings); diff --git a/printing/printing_context.h b/printing/printing_context.h -index 753bc1d564d607b4be671c3c618e1b60f8e7bb3f..c60136097403e9b5930917433064b57ba5771a3b 100644 +index b28af89c67f88cc86f4604cd6204ca6231c5908c..cbfeb7234ba26f08ae3cddf6a6dd4014f04c4285 100644 --- a/printing/printing_context.h +++ b/printing/printing_context.h -@@ -149,6 +149,9 @@ class COMPONENT_EXPORT(PRINTING) PrintingContext { +@@ -143,6 +143,9 @@ class COMPONENT_EXPORT(PRINTING) PrintingContext { int job_id() const { return job_id_; } @@ -663,7 +664,7 @@ index 753bc1d564d607b4be671c3c618e1b60f8e7bb3f..c60136097403e9b5930917433064b57b protected: explicit PrintingContext(Delegate* delegate); -@@ -156,9 +159,6 @@ class COMPONENT_EXPORT(PRINTING) PrintingContext { +@@ -150,9 +153,6 @@ class COMPONENT_EXPORT(PRINTING) PrintingContext { // implement this method to create an object of their implementation. static std::unique_ptr CreateImpl(Delegate* delegate); @@ -671,5 +672,5 @@ index 753bc1d564d607b4be671c3c618e1b60f8e7bb3f..c60136097403e9b5930917433064b57b - void ResetSettings(); - // Does bookkeeping when an error occurs. - PrintingContext::Result OnError(); + virtual mojom::ResultCode OnError(); diff --git a/patches/chromium/process_singleton.patch b/patches/chromium/process_singleton.patch index 9aed592f9b..0c2f277a31 100644 --- a/patches/chromium/process_singleton.patch +++ b/patches/chromium/process_singleton.patch @@ -76,7 +76,7 @@ index 0d7c1db6489d95a40c66808c3f838b0740e46ff6..eec994c4252f17d9c9c41e66d5dae650 #if defined(OS_MAC) diff --git a/chrome/browser/process_singleton_posix.cc b/chrome/browser/process_singleton_posix.cc -index 6ae3d8b4a2aef0852fa5cec5a8800aa534da06a1..05c86df6c871ca7d0926836edc2f6137fcf229cb 100644 +index 4547eb8563e1af57aad991d9d1e2cf02c778380a..727333dd6abec99643e31bc77ed2cc8f3d5a0a0b 100644 --- a/chrome/browser/process_singleton_posix.cc +++ b/chrome/browser/process_singleton_posix.cc @@ -80,6 +80,7 @@ @@ -139,7 +139,7 @@ index 6ae3d8b4a2aef0852fa5cec5a8800aa534da06a1..05c86df6c871ca7d0926836edc2f6137 bool ConnectSocket(ScopedSocket* socket, const base::FilePath& socket_path, const base::FilePath& cookie_path) { -@@ -728,6 +750,10 @@ ProcessSingleton::ProcessSingleton( +@@ -729,6 +751,10 @@ ProcessSingleton::ProcessSingleton( ProcessSingleton::~ProcessSingleton() { DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_); @@ -150,8 +150,8 @@ index 6ae3d8b4a2aef0852fa5cec5a8800aa534da06a1..05c86df6c871ca7d0926836edc2f6137 } ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcess() { -@@ -896,6 +922,20 @@ ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessOrCreate() { - base::TimeDelta::FromSeconds(kTimeoutInSeconds)); +@@ -897,6 +923,20 @@ ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessOrCreate() { + base::Seconds(kTimeoutInSeconds)); } +void ProcessSingleton::StartListeningOnSocket() { @@ -171,7 +171,7 @@ index 6ae3d8b4a2aef0852fa5cec5a8800aa534da06a1..05c86df6c871ca7d0926836edc2f6137 ProcessSingleton::NotifyResult ProcessSingleton::NotifyOtherProcessWithTimeoutOrCreate( const base::CommandLine& command_line, -@@ -998,12 +1038,26 @@ bool ProcessSingleton::Create() { +@@ -999,12 +1039,26 @@ bool ProcessSingleton::Create() { #endif } @@ -204,7 +204,7 @@ index 6ae3d8b4a2aef0852fa5cec5a8800aa534da06a1..05c86df6c871ca7d0926836edc2f6137 } // Check that the directory was created with the correct permissions. -@@ -1045,10 +1099,13 @@ bool ProcessSingleton::Create() { +@@ -1046,10 +1100,13 @@ bool ProcessSingleton::Create() { if (listen(sock, 5) < 0) NOTREACHED() << "listen failed: " << base::safe_strerror(errno); diff --git a/patches/chromium/proxy_config_monitor.patch b/patches/chromium/proxy_config_monitor.patch index 41f8386e26..5522b2cccc 100644 --- a/patches/chromium/proxy_config_monitor.patch +++ b/patches/chromium/proxy_config_monitor.patch @@ -6,7 +6,7 @@ Subject: proxy_config_monitor.patch Allow monitoring proxy config changes for a pref service. diff --git a/chrome/browser/net/proxy_config_monitor.cc b/chrome/browser/net/proxy_config_monitor.cc -index 55cc762b92193ed3f65b4d0b562202869530e1ac..d4c2a4e49eb469d3e2278fdc972c0aedc849d3f6 100644 +index 583ae4a36a5dae700a8e11767839e4d9a5c6e9b4..2510362a4df21fd57c56ec1f336589ccde86694c 100644 --- a/chrome/browser/net/proxy_config_monitor.cc +++ b/chrome/browser/net/proxy_config_monitor.cc @@ -11,7 +11,9 @@ @@ -42,7 +42,7 @@ index 55cc762b92193ed3f65b4d0b562202869530e1ac..d4c2a4e49eb469d3e2278fdc972c0aed ProxyConfigMonitor::ProxyConfigMonitor(PrefService* local_state) { DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) || -@@ -134,9 +138,11 @@ void ProxyConfigMonitor::OnLazyProxyConfigPoll() { +@@ -133,9 +137,11 @@ void ProxyConfigMonitor::OnLazyProxyConfigPoll() { void ProxyConfigMonitor::OnPACScriptError(int32_t line_number, const std::string& details) { DCHECK_CURRENTLY_ON(content::BrowserThread::UI); @@ -54,7 +54,7 @@ index 55cc762b92193ed3f65b4d0b562202869530e1ac..d4c2a4e49eb469d3e2278fdc972c0aed } void ProxyConfigMonitor::OnRequestMaybeFailedDueToProxySettings( -@@ -150,9 +156,10 @@ void ProxyConfigMonitor::OnRequestMaybeFailedDueToProxySettings( +@@ -149,9 +155,10 @@ void ProxyConfigMonitor::OnRequestMaybeFailedDueToProxySettings( // controlled. return; } diff --git a/patches/chromium/put_back_deleted_colors_for_autofill.patch b/patches/chromium/put_back_deleted_colors_for_autofill.patch index 2b8b8dd0d7..6ce6432d17 100644 --- a/patches/chromium/put_back_deleted_colors_for_autofill.patch +++ b/patches/chromium/put_back_deleted_colors_for_autofill.patch @@ -8,13 +8,22 @@ needed in chromium but our autofill implementation uses them. This patch can be our autofill implementation to work like Chromium's. diff --git a/ui/native_theme/common_theme.cc b/ui/native_theme/common_theme.cc -index 37fe41cb525ebc19a32a592f5695f7a083135116..d70767e072799c15b5ee0c4eeb4c76d82dfb247c 100644 +index a8d95abb69da8d42aed26d3b215cc05d79ba676b..74fc4d9bb7f183765b05e94b7133599ccf714042 100644 --- a/ui/native_theme/common_theme.cc +++ b/ui/native_theme/common_theme.cc -@@ -68,6 +68,14 @@ absl::optional GetDarkSchemeColor(NativeTheme::ColorId color_id, +@@ -32,6 +32,7 @@ absl::optional GetHighContrastColor( + NativeTheme::ColorScheme color_scheme) { + switch (color_id) { + case NativeTheme::kColorId_MenuSeparatorColor: ++ case NativeTheme::kColorId_UnfocusedBorderColor: + return color_scheme == NativeTheme::ColorScheme::kDark ? SK_ColorWHITE + : SK_ColorBLACK; case NativeTheme::kColorId_FocusedBorderColor: +@@ -53,6 +54,15 @@ absl::optional GetDarkSchemeColor(NativeTheme::ColorId color_id, return gfx::kGoogleBlue400; - + case NativeTheme::kColorId_MenuSeparatorColor: + return gfx::kGoogleGrey800; ++ + // Results Tables + case NativeTheme::kColorId_ResultsTableNormalBackground: + return SkColorSetRGB(0x28, 0x28, 0x28); @@ -23,10 +32,19 @@ index 37fe41cb525ebc19a32a592f5695f7a083135116..d70767e072799c15b5ee0c4eeb4c76d8 + case NativeTheme::kColorId_ResultsTableDimmedText: + return SkColorSetA(base_theme->GetSystemColor(NativeTheme::kColorId_ResultsTableNormalText), 0x80); + - // Button case NativeTheme::kColorId_ProminentButtonColor: return gfx::kGoogleBlue300; -@@ -587,6 +595,18 @@ SkColor GetDefaultColor(NativeTheme::ColorId color_id, + case NativeTheme::kColorId_WindowBackground: +@@ -67,6 +77,8 @@ SkColor GetDefaultColor(NativeTheme::ColorId color_id, + NativeTheme::ColorScheme color_scheme) { + switch (color_id) { + // Border ++ case NativeTheme::kColorId_UnfocusedBorderColor: ++ return gfx::kGoogleGrey300; + case NativeTheme::kColorId_FocusedBorderColor: + return gfx::kGoogleBlue500; + +@@ -136,6 +148,18 @@ SkColor GetDefaultColor(NativeTheme::ColorId color_id, case NativeTheme::kColorId_WindowBackground: return SK_ColorWHITE; @@ -46,26 +64,34 @@ index 37fe41cb525ebc19a32a592f5695f7a083135116..d70767e072799c15b5ee0c4eeb4c76d8 // Keeping the kColorId_NumColors case instead of using the default case // allows ColorId additions to trigger compile error for an incomplete diff --git a/ui/native_theme/native_theme_color_id.h b/ui/native_theme/native_theme_color_id.h -index 84848edbbe9de7ef9fe6e2ab0a34d3b9428cde10..5e07980e4793cc3b19140510fb3fd3b23c6a88ef 100644 +index a1b39a03776c287bc2b1f9a0a6ce11d0d9efde79..9132ff83b672b51c5f2f7ed95da877be7114c691 100644 --- a/ui/native_theme/native_theme_color_id.h +++ b/ui/native_theme/native_theme_color_id.h -@@ -157,6 +157,11 @@ - OP(kColorId_TableHeaderText), \ - OP(kColorId_TableHeaderBackground), \ - OP(kColorId_TableHeaderSeparator), \ +@@ -10,6 +10,7 @@ + #define NATIVE_THEME_CROSS_PLATFORM_COLOR_IDS \ + OP(kColorId_DefaultIconColor), \ + OP(kColorId_FocusedBorderColor), \ ++ OP(kColorId_UnfocusedBorderColor), \ + OP(kColorId_FocusedMenuItemBackgroundColor), \ + OP(kColorId_MenuBackgroundColor), \ + OP(kColorId_MenuIconColor), \ +@@ -20,6 +21,11 @@ + OP(kColorId_OverlayScrollbarThumbStroke), \ + OP(kColorId_ProminentButtonColor), \ + OP(kColorId_TextOnProminentButtonColor), \ + /* Results Tables, such as the omnibox */ \ + OP(kColorId_ResultsTableNormalBackground), \ + OP(kColorId_ResultsTableHoveredBackground), \ + OP(kColorId_ResultsTableNormalText), \ + OP(kColorId_ResultsTableDimmedText), \ - /* Colors for the material spinner (aka throbber). */ \ OP(kColorId_ThrobberSpinningColor), \ OP(kColorId_ThrobberWaitingColor), \ + OP(kColorId_WindowBackground) diff --git a/ui/native_theme/native_theme_win.cc b/ui/native_theme/native_theme_win.cc -index 485930b6875acc14f2fdd6e39632ae5d3d9f3904..f9772f86a1e233bbf3cc429e36dac8c62f61cd20 100644 +index 99256ffaf918e9d12a7c21b89d66cd41a0d29ac2..07852493fd23b8c1f057dc7ad830b6884db50a88 100644 --- a/ui/native_theme/native_theme_win.cc +++ b/ui/native_theme/native_theme_win.cc -@@ -658,6 +658,18 @@ absl::optional NativeThemeWin::GetPlatformHighContrastColor( +@@ -623,10 +623,23 @@ absl::optional NativeThemeWin::GetPlatformHighContrastColor( case kColorId_ThrobberWaitingColor: return system_colors_[SystemThemeColor::kGrayText]; @@ -81,6 +107,11 @@ index 485930b6875acc14f2fdd6e39632ae5d3d9f3904..f9772f86a1e233bbf3cc429e36dac8c6 + return color_utils::AlphaBlend(system_colors_[SystemThemeColor::kWindowText], + system_colors_[SystemThemeColor::kWindow], 0.5f); + - // Button Background - case kColorId_ButtonColor: case kColorId_MenuBackgroundColor: + return system_colors_[SystemThemeColor::kButtonFace]; + + case kColorId_MenuSeparatorColor: ++ case kColorId_UnfocusedBorderColor: + case kColorId_FocusedBorderColor: + return system_colors_[SystemThemeColor::kButtonText]; + diff --git a/patches/chromium/refactor_expose_cursor_changes_to_the_webcontentsobserver.patch b/patches/chromium/refactor_expose_cursor_changes_to_the_webcontentsobserver.patch index 3161da5d56..edb0c7197f 100644 --- a/patches/chromium/refactor_expose_cursor_changes_to_the_webcontentsobserver.patch +++ b/patches/chromium/refactor_expose_cursor_changes_to_the_webcontentsobserver.patch @@ -30,10 +30,10 @@ index f540ea381e9b80fd4a8e1e6a4fe4ed577396feb2..b7328fa53fa1c241dc90e9613b33a38c // RenderWidgetHost on the main frame, and false otherwise. virtual bool IsWidgetForMainFrame(RenderWidgetHostImpl*); diff --git a/content/browser/renderer_host/render_widget_host_impl.cc b/content/browser/renderer_host/render_widget_host_impl.cc -index a1632e19959d163eecafef484204aa0dba919897..d7189a47e37a5ce2a48ffdb0685016aa0eeb200b 100644 +index 80b15389f7dcb946c9bb29359fa89f5d72f4e99b..725f32c4701f08226e76e4da22ad98d596c62547 100644 --- a/content/browser/renderer_host/render_widget_host_impl.cc +++ b/content/browser/renderer_host/render_widget_host_impl.cc -@@ -2012,6 +2012,8 @@ void RenderWidgetHostImpl::FilterDropData(DropData* drop_data) { +@@ -2019,6 +2019,8 @@ void RenderWidgetHostImpl::FilterDropData(DropData* drop_data) { void RenderWidgetHostImpl::SetCursor(const ui::Cursor& cursor) { if (view_) view_->UpdateCursor(WebCursor(cursor)); @@ -43,10 +43,10 @@ index a1632e19959d163eecafef484204aa0dba919897..d7189a47e37a5ce2a48ffdb0685016aa void RenderWidgetHostImpl::ShowContextMenuAtPoint( diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc -index 5a86229bf1fc52e6cccbf609ed029fe88d35cd8f..ad1b4abe0390215e007ad2db8d972661470e94ed 100644 +index 12ac864159be77519ce6f6dc69941fe1fbdd9c35..48a8529b01468bc80b75670b057b203e54cd9dbb 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -4302,6 +4302,11 @@ TextInputManager* WebContentsImpl::GetTextInputManager() { +@@ -4309,6 +4309,11 @@ TextInputManager* WebContentsImpl::GetTextInputManager() { return text_input_manager_.get(); } @@ -59,10 +59,10 @@ index 5a86229bf1fc52e6cccbf609ed029fe88d35cd8f..ad1b4abe0390215e007ad2db8d972661 RenderWidgetHostImpl* render_widget_host) { return render_widget_host == GetMainFrame()->GetRenderWidgetHost(); diff --git a/content/browser/web_contents/web_contents_impl.h b/content/browser/web_contents/web_contents_impl.h -index 2eaec6f5ddbc04f75207348e0f09e34c57a0c3b7..97e6ccbfbd58482299a831c63573890d1f7d46f3 100644 +index b487c7087e277943b116ca5d21c3db3937a3471d..6c5272ad70d7e01ad663b884716efdf77deead08 100644 --- a/content/browser/web_contents/web_contents_impl.h +++ b/content/browser/web_contents/web_contents_impl.h -@@ -947,6 +947,7 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents, +@@ -948,6 +948,7 @@ class CONTENT_EXPORT WebContentsImpl : public WebContents, blink::mojom::FrameVisibility visibility) override; void SendScreenRects() override; TextInputManager* GetTextInputManager() override; @@ -71,7 +71,7 @@ index 2eaec6f5ddbc04f75207348e0f09e34c57a0c3b7..97e6ccbfbd58482299a831c63573890d bool IsShowingContextMenuOnPage() const override; void DidChangeScreenOrientation() override; diff --git a/content/public/browser/web_contents_observer.h b/content/public/browser/web_contents_observer.h -index 7132de463591a1bb3879be5147b6ecfead77f1b8..f205d4394c5ee5fac79fe7b99e7c54f01895cc73 100644 +index 6921e5e094cfdd4a813c11f152e4569f77bba6e6..ca2a5d211ab0f972f6ac3bfc957e4065543fbad0 100644 --- a/content/public/browser/web_contents_observer.h +++ b/content/public/browser/web_contents_observer.h @@ -13,6 +13,7 @@ @@ -82,7 +82,7 @@ index 7132de463591a1bb3879be5147b6ecfead77f1b8..f205d4394c5ee5fac79fe7b99e7c54f0 #include "content/public/browser/allow_service_worker_result.h" #include "content/public/browser/reload_type.h" #include "content/public/browser/render_frame_host.h" -@@ -472,6 +473,9 @@ class CONTENT_EXPORT WebContentsObserver { +@@ -484,6 +485,9 @@ class CONTENT_EXPORT WebContentsObserver { // Invoked every time the WebContents changes visibility. virtual void OnVisibilityChanged(Visibility visibility) {} diff --git a/patches/chromium/refactor_restore_base_adaptcallbackforrepeating.patch b/patches/chromium/refactor_restore_base_adaptcallbackforrepeating.patch index 94b1ec5aef..3ed2afc5fd 100644 --- a/patches/chromium/refactor_restore_base_adaptcallbackforrepeating.patch +++ b/patches/chromium/refactor_restore_base_adaptcallbackforrepeating.patch @@ -12,7 +12,7 @@ should be removed as soon as those have been updated. Patching because every instance is a FTBFS that prevents testing any one instance's fix. diff --git a/base/callback_helpers.h b/base/callback_helpers.h -index 864296839c7131a42569de35bec72ad33adf3b25..20b3436d5f0129963d023a548d54bb9f168f5b65 100644 +index da876907836f0dbbd02a90ad7e0556304a9532cf..c3401f4cdd276e0f1b094b29753f37b10e72222d 100644 --- a/base/callback_helpers.h +++ b/base/callback_helpers.h @@ -94,6 +94,22 @@ class OnceCallbackHolder final { diff --git a/patches/chromium/render_widget_host_view_base.patch b/patches/chromium/render_widget_host_view_base.patch index 691f722b34..c5e8aaa1f9 100644 --- a/patches/chromium/render_widget_host_view_base.patch +++ b/patches/chromium/render_widget_host_view_base.patch @@ -6,10 +6,10 @@ Subject: render_widget_host_view_base.patch ... something to do with OSR? and maybe as well? terrifying. diff --git a/content/browser/renderer_host/render_widget_host_view_base.cc b/content/browser/renderer_host/render_widget_host_view_base.cc -index 251157d2014be8aecb1a2554794257c43ae78dff..93adaa18da9a7c9d6a40c955c934810bde2394fc 100644 +index 9cddf7c7ba6c91b9800e04dbb2ff3f1553c64c5f..33ec9c904798ea316029bc86c8889b191e4eb6ed 100644 --- a/content/browser/renderer_host/render_widget_host_view_base.cc +++ b/content/browser/renderer_host/render_widget_host_view_base.cc -@@ -661,6 +661,13 @@ bool RenderWidgetHostViewBase::ScreenRectIsUnstableFor( +@@ -666,6 +666,13 @@ bool RenderWidgetHostViewBase::ScreenRectIsUnstableFor( return false; } @@ -24,7 +24,7 @@ index 251157d2014be8aecb1a2554794257c43ae78dff..93adaa18da9a7c9d6a40c955c934810b const blink::WebMouseEvent& event, const ui::LatencyInfo& latency) { diff --git a/content/browser/renderer_host/render_widget_host_view_base.h b/content/browser/renderer_host/render_widget_host_view_base.h -index b3f79d5b38e10bf660f2a109ee1014ed24c54bbc..4cad83c43010f4d66fe9bc71d186b98b4fc0ffe9 100644 +index 3eb1f2f549305dacb437d856cdefcc80367ed9fa..d703e15a04160a1e8df231d395a2dfb54ee9c335 100644 --- a/content/browser/renderer_host/render_widget_host_view_base.h +++ b/content/browser/renderer_host/render_widget_host_view_base.h @@ -25,8 +25,10 @@ @@ -50,7 +50,7 @@ index b3f79d5b38e10bf660f2a109ee1014ed24c54bbc..4cad83c43010f4d66fe9bc71d186b98b class WebCursor; class WebContentsAccessibility; class DelegatedFrameHost; -@@ -143,6 +147,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { +@@ -145,6 +149,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { const gfx::Rect& keyboard_rect) override {} bool IsHTMLFormPopup() const override; @@ -60,7 +60,7 @@ index b3f79d5b38e10bf660f2a109ee1014ed24c54bbc..4cad83c43010f4d66fe9bc71d186b98b // This only needs to be overridden by RenderWidgetHostViewBase subclasses // that handle content embedded within other RenderWidgetHostViews. gfx::PointF TransformPointToRootCoordSpaceF( -@@ -305,6 +312,11 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { +@@ -304,6 +311,11 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView { virtual void ProcessGestureEvent(const blink::WebGestureEvent& event, const ui::LatencyInfo& latency); diff --git a/patches/chromium/render_widget_host_view_mac.patch b/patches/chromium/render_widget_host_view_mac.patch index 62080affca..1904bf0ad0 100644 --- a/patches/chromium/render_widget_host_view_mac.patch +++ b/patches/chromium/render_widget_host_view_mac.patch @@ -10,7 +10,7 @@ kinds of utility windows. Similarly for `disableAutoHideCursor`. Additionally, disables usage of some private APIs in MAS builds. diff --git a/content/app_shim_remote_cocoa/render_widget_host_view_cocoa.mm b/content/app_shim_remote_cocoa/render_widget_host_view_cocoa.mm -index 7a8e4653a0a962730ad5b5895cfbab8d2db92f24..0e139a88b7c6f341e1f7bc60c81378f53de830d8 100644 +index 881b0fda3c15db42a6ad68c011c6952147bdaa1d..46e3f1e16093683c5d0205134c2ef9246e99e730 100644 --- a/content/app_shim_remote_cocoa/render_widget_host_view_cocoa.mm +++ b/content/app_shim_remote_cocoa/render_widget_host_view_cocoa.mm @@ -150,6 +150,15 @@ void ExtractUnderlines(NSAttributedString* string, @@ -61,7 +61,7 @@ index 7a8e4653a0a962730ad5b5895cfbab8d2db92f24..0e139a88b7c6f341e1f7bc60c81378f5 // We only handle key down events and just simply forward other events. if (eventType != NSKeyDown) { _hostHelper->ForwardKeyboardEvent(event, latency_info); -@@ -1692,9 +1712,11 @@ - (NSAccessibilityRole)accessibilityRole { +@@ -1693,9 +1713,11 @@ - (NSAccessibilityRole)accessibilityRole { // Since this implementation doesn't have to wait any IPC calls, this doesn't // make any key-typing jank. --hbono 7/23/09 // @@ -73,7 +73,7 @@ index 7a8e4653a0a962730ad5b5895cfbab8d2db92f24..0e139a88b7c6f341e1f7bc60c81378f5 - (NSArray*)validAttributesForMarkedText { // This code is just copied from WebKit except renaming variables. -@@ -1703,7 +1725,10 @@ - (NSArray*)validAttributesForMarkedText { +@@ -1704,7 +1726,10 @@ - (NSArray*)validAttributesForMarkedText { initWithObjects:NSUnderlineStyleAttributeName, NSUnderlineColorAttributeName, NSMarkedClauseSegmentAttributeName, diff --git a/patches/chromium/resource_file_conflict.patch b/patches/chromium/resource_file_conflict.patch index 6d870cacba..aa44de8e0c 100644 --- a/patches/chromium/resource_file_conflict.patch +++ b/patches/chromium/resource_file_conflict.patch @@ -52,10 +52,10 @@ Some alternatives to this patch: None of these options seems like a substantial maintainability win over this patch to me (@nornagon). diff --git a/chrome/BUILD.gn b/chrome/BUILD.gn -index 8078897ba61cf9da717254727a8f97b6772d1cc6..abab9c8e8c60a6d1690acca5133b3c54d0ccc793 100644 +index 77bcd0dd7ddddfea030d71c31956f873d4ac778a..5a35396df314ab547990a53c90ebb75d337bcc77 100644 --- a/chrome/BUILD.gn +++ b/chrome/BUILD.gn -@@ -1543,7 +1543,7 @@ if (is_chrome_branded && !is_android) { +@@ -1549,7 +1549,7 @@ if (is_chrome_branded && !is_android) { } } @@ -64,7 +64,7 @@ index 8078897ba61cf9da717254727a8f97b6772d1cc6..abab9c8e8c60a6d1690acca5133b3c54 chrome_paks("packed_resources") { if (is_mac) { output_dir = "$root_gen_dir/repack" -@@ -1571,6 +1571,12 @@ if (!is_android) { +@@ -1577,6 +1577,12 @@ if (!is_android) { } } diff --git a/patches/chromium/scroll_bounce_flag.patch b/patches/chromium/scroll_bounce_flag.patch index be7188dea5..2da2b1ebdf 100644 --- a/patches/chromium/scroll_bounce_flag.patch +++ b/patches/chromium/scroll_bounce_flag.patch @@ -6,10 +6,10 @@ Subject: scroll_bounce_flag.patch Patch to make scrollBounce option work. diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc -index c0a004136c09c26fcc2011ee80993ab630c033fb..755ac21653bc1b802d56de76c46bcece75230a18 100644 +index 1546f52724fc7fb3688766c0f5e2622d4eb45b6f..5e48b08a97db44e716e5593dfc68b91e856a70dd 100644 --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc -@@ -1294,7 +1294,7 @@ bool RenderThreadImpl::IsLcdTextEnabled() { +@@ -1292,7 +1292,7 @@ bool RenderThreadImpl::IsLcdTextEnabled() { } bool RenderThreadImpl::IsElasticOverscrollEnabled() { diff --git a/patches/chromium/support_mixed_sandbox_with_zygote.patch b/patches/chromium/support_mixed_sandbox_with_zygote.patch index ea43ccc0a9..12d875c1fc 100644 --- a/patches/chromium/support_mixed_sandbox_with_zygote.patch +++ b/patches/chromium/support_mixed_sandbox_with_zygote.patch @@ -22,7 +22,7 @@ However, the patch would need to be reviewed by the security team, as it does touch a security-sensitive class. diff --git a/content/browser/renderer_host/render_process_host_impl.cc b/content/browser/renderer_host/render_process_host_impl.cc -index d64ad2d8d3a9515768d82ff02e7be26383dd5b66..3555928a29b3c6022621c4e9b65531edbefa7797 100644 +index 7e9d623030976aef80b37d2a224abc9b3013ede7..9353475f0f41ce96c3bc53a5ff69a137900c8142 100644 --- a/content/browser/renderer_host/render_process_host_impl.cc +++ b/content/browser/renderer_host/render_process_host_impl.cc @@ -397,10 +397,18 @@ class RendererSandboxedProcessLauncherDelegate @@ -66,7 +66,7 @@ index d64ad2d8d3a9515768d82ff02e7be26383dd5b66..3555928a29b3c6022621c4e9b65531ed if (is_jit_disabled) { dynamic_code_can_be_disabled_ = true; return; -@@ -1988,9 +2004,15 @@ bool RenderProcessHostImpl::Init() { +@@ -1955,9 +1971,15 @@ bool RenderProcessHostImpl::Init() { std::unique_ptr sandbox_delegate = std::make_unique( cmd_line.get(), IsJitDisabled()); diff --git a/patches/chromium/unsandboxed_ppapi_processes_skip_zygote.patch b/patches/chromium/unsandboxed_ppapi_processes_skip_zygote.patch index aef2f10cb1..cb99276a4e 100644 --- a/patches/chromium/unsandboxed_ppapi_processes_skip_zygote.patch +++ b/patches/chromium/unsandboxed_ppapi_processes_skip_zygote.patch @@ -6,10 +6,10 @@ Subject: unsandboxed_ppapi_processes_skip_zygote.patch Unsandboxed ppapi processes should skip zygote. diff --git a/content/browser/ppapi_plugin_process_host.cc b/content/browser/ppapi_plugin_process_host.cc -index bebe91496db1822031001f00194952e694018c10..e59de720fb4270f33c8abf34cb2d684610ec1285 100644 +index 3946e2d5559ce8b3811e4c87cf917d3afbdae013..4f55b49d6c66f4bfcdf7e3c13c5ca90d7eb0d0b3 100644 --- a/content/browser/ppapi_plugin_process_host.cc +++ b/content/browser/ppapi_plugin_process_host.cc -@@ -111,6 +111,9 @@ class PpapiPluginSandboxedProcessLauncherDelegate +@@ -116,6 +116,9 @@ class PpapiPluginSandboxedProcessLauncherDelegate ZygoteHandle GetZygote() override { const base::CommandLine& browser_command_line = *base::CommandLine::ForCurrentProcess(); diff --git a/patches/chromium/upload_list_add_loadsync_method.patch b/patches/chromium/upload_list_add_loadsync_method.patch index d4c5013247..c83bb6faf9 100644 --- a/patches/chromium/upload_list_add_loadsync_method.patch +++ b/patches/chromium/upload_list_add_loadsync_method.patch @@ -24,10 +24,10 @@ index c5c8119703c245132433f95fbd3764cfff41f8c3..9aa707d8b13b9c91a21ff5f38e680a7f const base::Time& end, base::OnceClosure callback) { diff --git a/components/upload_list/upload_list.h b/components/upload_list/upload_list.h -index c9dee47c8bb0917cd662d0565702890e953cdeea..b914d133df43fc2458af111a4dc83285bfc1aa02 100644 +index c9e4af694a130d8d225ad96a0eefcefc7d1762b4..15c6be9368aa41f1d8665e1f140ccb6a95d059f8 100644 --- a/components/upload_list/upload_list.h +++ b/components/upload_list/upload_list.h -@@ -75,6 +75,8 @@ class UploadList : public base::RefCountedThreadSafe { +@@ -78,6 +78,8 @@ class UploadList : public base::RefCountedThreadSafe { // overwrite the previously supplied one, and the first will not be called. void Load(base::OnceClosure callback); diff --git a/patches/chromium/v8_context_snapshot_generator.patch b/patches/chromium/v8_context_snapshot_generator.patch index cf3daf148d..7aa286febe 100644 --- a/patches/chromium/v8_context_snapshot_generator.patch +++ b/patches/chromium/v8_context_snapshot_generator.patch @@ -7,7 +7,7 @@ v8_context_snapshot_generator is a build time executable. The patch adds the config. diff --git a/tools/v8_context_snapshot/BUILD.gn b/tools/v8_context_snapshot/BUILD.gn -index 6e86a543558c9e7a520b3671209ef290abfd1c91..1f76fb61d65b959b9fb2846ef2c16508fb2b7dd6 100644 +index 6817e654af7cedc6ade586b16ac597e8e5f1cd76..b58b95777dc604ff3ccc9e99258240e27db492e7 100644 --- a/tools/v8_context_snapshot/BUILD.gn +++ b/tools/v8_context_snapshot/BUILD.gn @@ -118,6 +118,7 @@ if (use_v8_context_snapshot) { diff --git a/patches/chromium/web_contents.patch b/patches/chromium/web_contents.patch index e0d9b36c48..604d793723 100644 --- a/patches/chromium/web_contents.patch +++ b/patches/chromium/web_contents.patch @@ -9,10 +9,10 @@ is needed for OSR. Originally landed in https://github.com/electron/libchromiumcontent/pull/226. diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc -index d3593a6f3e9f6cba5823169d36fd93a6f97608ae..4ee081242ecf0725b43c95dfd1032bd3e6ce8771 100644 +index d5bf3e57440985826332672116d34426c3d27a83..3ac84525bc4375c79e5a30a177335d9e26b78ba6 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc -@@ -2884,6 +2884,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) { +@@ -2899,6 +2899,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) { frame_tree_.Init(site_instance.get(), params.renderer_initiated_creation, params.main_frame_name); @@ -25,7 +25,7 @@ index d3593a6f3e9f6cba5823169d36fd93a6f97608ae..4ee081242ecf0725b43c95dfd1032bd3 WebContentsViewDelegate* delegate = GetContentClient()->browser()->GetWebContentsViewDelegate(this); -@@ -2894,6 +2900,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) { +@@ -2909,6 +2915,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params) { view_.reset(CreateWebContentsView(this, delegate, &render_view_host_delegate_view_)); } @@ -34,10 +34,10 @@ index d3593a6f3e9f6cba5823169d36fd93a6f97608ae..4ee081242ecf0725b43c95dfd1032bd3 CHECK(view_.get()); diff --git a/content/public/browser/web_contents.h b/content/public/browser/web_contents.h -index b55e80c0f32ee4cc0e5d168c79d7e480fbb1c6bc..95bcea15ea704f11e8daab49de6d958fb2d15127 100644 +index bfa0e468e11e651efa9457c847575cf231562615..8840d078a341bda1abc79c1f9ee72b2cc07f06d6 100644 --- a/content/public/browser/web_contents.h +++ b/content/public/browser/web_contents.h -@@ -86,10 +86,13 @@ class BrowserContext; +@@ -88,10 +88,13 @@ class BrowserContext; class BrowserPluginGuestDelegate; class RenderFrameHost; class RenderViewHost; @@ -51,7 +51,7 @@ index b55e80c0f32ee4cc0e5d168c79d7e480fbb1c6bc..95bcea15ea704f11e8daab49de6d958f class WebUI; struct DropData; struct MHTMLGenerationParams; -@@ -222,6 +225,10 @@ class WebContents : public PageNavigator, +@@ -228,6 +231,10 @@ class WebContents : public PageNavigator, // Sandboxing flags set on the new WebContents. network::mojom::WebSandboxFlags starting_sandbox_flags; diff --git a/patches/chromium/webview_cross_drag.patch b/patches/chromium/webview_cross_drag.patch index 1fcd196de9..4eb0eb636b 100644 --- a/patches/chromium/webview_cross_drag.patch +++ b/patches/chromium/webview_cross_drag.patch @@ -8,10 +8,10 @@ This allows dragging and dropping between s. Originally landed in https://github.com/electron/libchromiumcontent/pull/267 diff --git a/content/browser/web_contents/web_contents_view_aura.cc b/content/browser/web_contents/web_contents_view_aura.cc -index c1b09024a3f7d46d91f60a30aecf1ca1f0318030..ff1c59766569053b6d32c49c525d00c829e5abe6 100644 +index 7cd6382dec11dcf25e586955e6e610b8bf7f39fa..895ca9d68c117220d41ad4f1384e857b018269f9 100644 --- a/content/browser/web_contents/web_contents_view_aura.cc +++ b/content/browser/web_contents/web_contents_view_aura.cc -@@ -802,9 +802,7 @@ gfx::NativeView WebContentsViewAura::GetRenderWidgetHostViewParent() const { +@@ -811,9 +811,7 @@ gfx::NativeView WebContentsViewAura::GetRenderWidgetHostViewParent() const { bool WebContentsViewAura::IsValidDragTarget( RenderWidgetHostImpl* target_rwh) const { diff --git a/patches/chromium/webview_fullscreen.patch b/patches/chromium/webview_fullscreen.patch index e42f631302..c56ddc8eec 100644 --- a/patches/chromium/webview_fullscreen.patch +++ b/patches/chromium/webview_fullscreen.patch @@ -14,10 +14,10 @@ Note that we also need to manually update embedder's `api::WebContents::IsFullscreenForTabOrPending` value. diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc -index 1a62a9669484980a69d658ca6729e7caf3db96fb..09e0a4549f5d959f15d7a89f4e685246c3e00f56 100644 +index 1c7df171237f441ae13a8b8b0d681d496ee0cc8a..a4ae60f3f7edc53751919b0ec4bc634b98cddd0f 100644 --- a/content/browser/renderer_host/render_frame_host_impl.cc +++ b/content/browser/renderer_host/render_frame_host_impl.cc -@@ -5944,6 +5944,15 @@ void RenderFrameHostImpl::EnterFullscreen( +@@ -5900,6 +5900,15 @@ void RenderFrameHostImpl::EnterFullscreen( notified_instances.insert(parent_site_instance); } diff --git a/patches/chromium/worker_context_will_destroy.patch b/patches/chromium/worker_context_will_destroy.patch index 6912e52c0f..bf41f03632 100644 --- a/patches/chromium/worker_context_will_destroy.patch +++ b/patches/chromium/worker_context_will_destroy.patch @@ -26,10 +26,10 @@ index f3852c0eef152176d03922492ca9672498f8f9d0..ef7b6f9ff3e8f899377933a7184d3278 // An empty URL is returned if the URL is not overriden. virtual GURL OverrideFlashEmbedWithHTML(const GURL& url); diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc -index 0280650b9c9b47c7fc67ace052c04ce4b23c9679..1e864d8c95fc5fb258c6b91c8968b8a986a862ab 100644 +index bbfe51c4bcfd5c3301362614e9928e9b4f5d6b1e..081aaf4b2d59ac68b1f5a1403d5e5ae25c4728ea 100644 --- a/content/renderer/renderer_blink_platform_impl.cc +++ b/content/renderer/renderer_blink_platform_impl.cc -@@ -940,6 +940,12 @@ void RendererBlinkPlatformImpl::WillStopWorkerThread() { +@@ -928,6 +928,12 @@ void RendererBlinkPlatformImpl::WillStopWorkerThread() { WorkerThreadRegistry::Instance()->WillStopCurrentWorkerThread(); } @@ -43,10 +43,10 @@ index 0280650b9c9b47c7fc67ace052c04ce4b23c9679..1e864d8c95fc5fb258c6b91c8968b8a9 const v8::Local& worker) { GetContentClient()->renderer()->DidInitializeWorkerContextOnWorkerThread( diff --git a/content/renderer/renderer_blink_platform_impl.h b/content/renderer/renderer_blink_platform_impl.h -index 577ba7b6773668ccfce9dcbf4dcdc7a753f95ce8..f22c471f7e20fd23307f640fac871120d768ff32 100644 +index 6c0a233f70d811b422f1b0a428eef8eb3e8437b1..dd91faac7c67d9b46cab45ca44cd1a2f9dc78b2c 100644 --- a/content/renderer/renderer_blink_platform_impl.h +++ b/content/renderer/renderer_blink_platform_impl.h -@@ -207,6 +207,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { +@@ -211,6 +211,7 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { void DidStartWorkerThread() override; void WillStopWorkerThread() override; void WorkerContextCreated(const v8::Local& worker) override; @@ -55,10 +55,10 @@ index 577ba7b6773668ccfce9dcbf4dcdc7a753f95ce8..f22c471f7e20fd23307f640fac871120 const blink::WebSecurityOrigin& script_origin) override; blink::ProtocolHandlerSecurityLevel GetProtocolHandlerSecurityLevel() diff --git a/third_party/blink/public/platform/platform.h b/third_party/blink/public/platform/platform.h -index f9be3480ae7c96e5a58add277ebce71cbf3b1441..616fd24d928807604fd484a20947e36079affdbe 100644 +index 757e70c8dc3342bf6966dc6e785bdc36db17604b..e7286017921bf751391da9d8d0fe4f64404045e4 100644 --- a/third_party/blink/public/platform/platform.h +++ b/third_party/blink/public/platform/platform.h -@@ -724,6 +724,7 @@ class BLINK_PLATFORM_EXPORT Platform { +@@ -720,6 +720,7 @@ class BLINK_PLATFORM_EXPORT Platform { virtual void DidStartWorkerThread() {} virtual void WillStopWorkerThread() {} virtual void WorkerContextCreated(const v8::Local& worker) {} @@ -67,10 +67,10 @@ index f9be3480ae7c96e5a58add277ebce71cbf3b1441..616fd24d928807604fd484a20947e360 const WebSecurityOrigin& script_origin) { return false; diff --git a/third_party/blink/renderer/core/workers/worker_thread.cc b/third_party/blink/renderer/core/workers/worker_thread.cc -index c694aa7cab116003ec4baeb096cc3e386d99019e..1bfc60026d81fa77f120d26d65d9e852afbe1864 100644 +index 2f43a308d29f5b0be9b36c969adb019afa27fb32..c21b1a4c9dc6745e3bd738e903548e566ddf1208 100644 --- a/third_party/blink/renderer/core/workers/worker_thread.cc +++ b/third_party/blink/renderer/core/workers/worker_thread.cc -@@ -717,6 +717,12 @@ void WorkerThread::PrepareForShutdownOnWorkerThread() { +@@ -716,6 +716,12 @@ void WorkerThread::PrepareForShutdownOnWorkerThread() { nested_runner_->QuitNow(); } diff --git a/patches/chromium/worker_feat_add_hook_to_notify_script_ready.patch b/patches/chromium/worker_feat_add_hook_to_notify_script_ready.patch index e04e3e8c16..bf9106577b 100644 --- a/patches/chromium/worker_feat_add_hook_to_notify_script_ready.patch +++ b/patches/chromium/worker_feat_add_hook_to_notify_script_ready.patch @@ -35,10 +35,10 @@ index ef7b6f9ff3e8f899377933a7184d3278d4a9d366..8688f1d7f258246901feec75e340c32b // from the worker thread. virtual void WillDestroyWorkerContextOnWorkerThread( diff --git a/content/renderer/renderer_blink_platform_impl.cc b/content/renderer/renderer_blink_platform_impl.cc -index 1e864d8c95fc5fb258c6b91c8968b8a986a862ab..4222234d014f204ffc5e5786a8a973f2c9ef8568 100644 +index 081aaf4b2d59ac68b1f5a1403d5e5ae25c4728ea..c87f5ead78a02390d3bc1b0d98352c9661335263 100644 --- a/content/renderer/renderer_blink_platform_impl.cc +++ b/content/renderer/renderer_blink_platform_impl.cc -@@ -952,6 +952,12 @@ void RendererBlinkPlatformImpl::WorkerContextCreated( +@@ -940,6 +940,12 @@ void RendererBlinkPlatformImpl::WorkerContextCreated( worker); } @@ -52,10 +52,10 @@ index 1e864d8c95fc5fb258c6b91c8968b8a986a862ab..4222234d014f204ffc5e5786a8a973f2 const blink::WebSecurityOrigin& script_origin) { return GetContentClient()->renderer()->AllowScriptExtensionForServiceWorker( diff --git a/content/renderer/renderer_blink_platform_impl.h b/content/renderer/renderer_blink_platform_impl.h -index f22c471f7e20fd23307f640fac871120d768ff32..d10ad3d4e464d53f50c3bcfc2adf94271ca50682 100644 +index dd91faac7c67d9b46cab45ca44cd1a2f9dc78b2c..517488fc5a72a2b4f9933d3997ab64448e75fe95 100644 --- a/content/renderer/renderer_blink_platform_impl.h +++ b/content/renderer/renderer_blink_platform_impl.h -@@ -207,6 +207,8 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { +@@ -211,6 +211,8 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { void DidStartWorkerThread() override; void WillStopWorkerThread() override; void WorkerContextCreated(const v8::Local& worker) override; @@ -65,10 +65,10 @@ index f22c471f7e20fd23307f640fac871120d768ff32..d10ad3d4e464d53f50c3bcfc2adf9427 bool AllowScriptExtensionForServiceWorker( const blink::WebSecurityOrigin& script_origin) override; diff --git a/third_party/blink/public/platform/platform.h b/third_party/blink/public/platform/platform.h -index 616fd24d928807604fd484a20947e36079affdbe..247d88dd0c55d2ab5056011277ff5b00e0167fc2 100644 +index e7286017921bf751391da9d8d0fe4f64404045e4..c364b83625c4b197d263582c49d136ae2d988d39 100644 --- a/third_party/blink/public/platform/platform.h +++ b/third_party/blink/public/platform/platform.h -@@ -724,6 +724,8 @@ class BLINK_PLATFORM_EXPORT Platform { +@@ -720,6 +720,8 @@ class BLINK_PLATFORM_EXPORT Platform { virtual void DidStartWorkerThread() {} virtual void WillStopWorkerThread() {} virtual void WorkerContextCreated(const v8::Local& worker) {} diff --git a/patches/v8/.patches b/patches/v8/.patches index 975e3dc556..ff0b6eb65d 100644 --- a/patches/v8/.patches +++ b/patches/v8/.patches @@ -6,6 +6,3 @@ workaround_an_undefined_symbol_error.patch do_not_export_private_v8_symbols_on_windows.patch fix_build_deprecated_attirbute_for_older_msvc_versions.patch fix_disable_implies_dcheck_for_node_stream_array_buffers.patch -regexp_allow_reentrant_irregexp_execution.patch -regexp_remove_the_stack_parameter_from_regexp_matchers.patch -baseline_skip_deoptimization_data_size.patch diff --git a/patches/v8/baseline_skip_deoptimization_data_size.patch b/patches/v8/baseline_skip_deoptimization_data_size.patch deleted file mode 100644 index 7728f9357b..0000000000 --- a/patches/v8/baseline_skip_deoptimization_data_size.patch +++ /dev/null @@ -1,31 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Victor Gomes -Date: Wed, 22 Sep 2021 17:57:25 +0200 -Subject: Skip deoptimization data size - -Sparkplug code does not contain deoptimization data. - -Bug: v8:12258 -Change-Id: Ieb9f7f1469e00677d9533c6f05b17c80ef06b9d6 -Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3175820 -Commit-Queue: Victor Gomes -Commit-Queue: Camillo Bruni -Auto-Submit: Victor Gomes -Reviewed-by: Camillo Bruni -Cr-Commit-Position: refs/heads/main@{#76997} - -diff --git a/src/objects/code-inl.h b/src/objects/code-inl.h -index 48e5810f14f9f69b0cb245fb24353e4bb2120e0e..4cbb1595c964ae352a15350a640aa3be0778ac15 100644 ---- a/src/objects/code-inl.h -+++ b/src/objects/code-inl.h -@@ -394,7 +394,9 @@ int Code::MetadataSize() const { - int Code::SizeIncludingMetadata() const { - int size = CodeSize(); - size += relocation_info().Size(); -- size += deoptimization_data().Size(); -+ if (kind() != CodeKind::BASELINE) { -+ size += deoptimization_data().Size(); -+ } - return size; - } - diff --git a/patches/v8/build_gn.patch b/patches/v8/build_gn.patch index 1dd377c723..70d0f37508 100644 --- a/patches/v8/build_gn.patch +++ b/patches/v8/build_gn.patch @@ -9,10 +9,10 @@ necessary for native modules to load. Also, some fixes relating to mksnapshot on ARM. diff --git a/BUILD.gn b/BUILD.gn -index 20d9b8e9afc033367b55409847bfad1356aabd42..f23ed7817bafcd84b941905a2a8852f79069aa2e 100644 +index f491f2a4e64c6b3d05ccb2a9c8955c456b8f94fb..c621e767b9b09b2ae6c0d8ab8cef37c660f77c71 100644 --- a/BUILD.gn +++ b/BUILD.gn -@@ -571,7 +571,7 @@ config("internal_config") { +@@ -576,7 +576,7 @@ config("internal_config") { ":cppgc_header_features", ] @@ -21,7 +21,7 @@ index 20d9b8e9afc033367b55409847bfad1356aabd42..f23ed7817bafcd84b941905a2a8852f7 defines += [ "BUILDING_V8_SHARED" ] } -@@ -5497,7 +5497,7 @@ if (current_toolchain == v8_generator_toolchain) { +@@ -5623,7 +5623,7 @@ if (current_toolchain == v8_generator_toolchain) { "src/interpreter/bytecodes.h", ] @@ -30,7 +30,7 @@ index 20d9b8e9afc033367b55409847bfad1356aabd42..f23ed7817bafcd84b941905a2a8852f7 deps = [ ":v8_libbase", -@@ -5535,6 +5535,8 @@ if (current_toolchain == v8_snapshot_toolchain) { +@@ -5661,6 +5661,8 @@ if (current_toolchain == v8_snapshot_toolchain) { configs = [ ":internal_config" ] diff --git a/patches/v8/dcheck.patch b/patches/v8/dcheck.patch index 9360221ca3..e0ea11b067 100644 --- a/patches/v8/dcheck.patch +++ b/patches/v8/dcheck.patch @@ -6,10 +6,10 @@ Subject: dcheck.patch https://github.com/auchenberg/volkswagen diff --git a/src/api/api.cc b/src/api/api.cc -index 59bd76c1540d569d3c1d93c2d3a526361c893b19..d09a84023ba633d3506ba0d49860da015b9104a6 100644 +index f79d0482ed3f1b42e60e09b4ad07749f9dbdadf0..f87db8a84efc661aad15781f2f949901e5befc17 100644 --- a/src/api/api.cc +++ b/src/api/api.cc -@@ -8928,7 +8928,7 @@ void Isolate::SetPromiseRejectCallback(PromiseRejectCallback callback) { +@@ -8907,7 +8907,7 @@ void Isolate::SetPromiseRejectCallback(PromiseRejectCallback callback) { } void Isolate::PerformMicrotaskCheckpoint() { @@ -19,10 +19,10 @@ index 59bd76c1540d569d3c1d93c2d3a526361c893b19..d09a84023ba633d3506ba0d49860da01 isolate->default_microtask_queue()->PerformCheckpoint(this); } diff --git a/src/heap/heap.cc b/src/heap/heap.cc -index 8920f054925aa1b212298b71ec2aa97a8a9de35a..76739cd66577d64cda8450d52231a3fa75e47ef7 100644 +index 4a57a1678eba54bd510120f246d60c4e5b3b09c9..d849e1da41f8fb8f8b1dd1e33733dd74ce2f487f 100644 --- a/src/heap/heap.cc +++ b/src/heap/heap.cc -@@ -6011,9 +6011,9 @@ void Heap::DeinitSharedSpaces() { +@@ -6033,9 +6033,9 @@ void Heap::DeinitSharedSpaces() { void Heap::AddGCPrologueCallback(v8::Isolate::GCCallbackWithData callback, GCType gc_type, void* data) { DCHECK_NOT_NULL(callback); diff --git a/patches/v8/do_not_export_private_v8_symbols_on_windows.patch b/patches/v8/do_not_export_private_v8_symbols_on_windows.patch index ae099e803c..9df194603e 100644 --- a/patches/v8/do_not_export_private_v8_symbols_on_windows.patch +++ b/patches/v8/do_not_export_private_v8_symbols_on_windows.patch @@ -12,10 +12,10 @@ This patch can be safely removed if, when it is removed, `node.lib` does not contain any standard C++ library exports (e.g. `std::ostringstream`). diff --git a/BUILD.gn b/BUILD.gn -index b7974da90497500764199a9c3416211f163a6e78..4ac65d5c727913ca34d6403b8527c1498a254d12 100644 +index 621f8dddcbf1378078747fdb935ee730e5eb338a..769bb6494b7057417dbc2beee0a6d99256b56c75 100644 --- a/BUILD.gn +++ b/BUILD.gn -@@ -571,6 +571,10 @@ config("internal_config") { +@@ -576,6 +576,10 @@ config("internal_config") { ":cppgc_header_features", ] @@ -27,10 +27,10 @@ index b7974da90497500764199a9c3416211f163a6e78..4ac65d5c727913ca34d6403b8527c149 defines += [ "BUILDING_V8_SHARED" ] } diff --git a/src/base/macros.h b/src/base/macros.h -index 2c0ed9f790636b3376bdbba55cbcafcd2b882b50..fa287c9093e3a267b59a5eefc84d76205e19c7cc 100644 +index 3a73afc1ce7712a0683992608ff399734eea1f9d..f90f4ebffd6295bfa3e047cfb9c5ff0f2c30f26a 100644 --- a/src/base/macros.h +++ b/src/base/macros.h -@@ -388,13 +388,17 @@ bool is_inbounds(float_t v) { +@@ -393,13 +393,17 @@ bool is_inbounds(float_t v) { #ifdef V8_OS_WIN // Setup for Windows shared library export. diff --git a/patches/v8/export_symbols_needed_for_windows_build.patch b/patches/v8/export_symbols_needed_for_windows_build.patch index f5aacc48bb..5388c82e87 100644 --- a/patches/v8/export_symbols_needed_for_windows_build.patch +++ b/patches/v8/export_symbols_needed_for_windows_build.patch @@ -6,10 +6,10 @@ Subject: Export symbols needed for Windows build These symbols are required to build v8 with BUILD_V8_SHARED on Windows. diff --git a/src/objects/objects.h b/src/objects/objects.h -index 61bcf79800c375560a2c62477e7dbec77f259883..6b693d0b3384f058891f349ba66d1e004796245a 100644 +index 7cb94dfb740141e6106fb83f7077ec84cc0a76d2..705417fb6112c18b0f55d82ebbe7b42415f92460 100644 --- a/src/objects/objects.h +++ b/src/objects/objects.h -@@ -842,7 +842,7 @@ enum AccessorComponent { ACCESSOR_GETTER, ACCESSOR_SETTER }; +@@ -850,7 +850,7 @@ enum AccessorComponent { ACCESSOR_GETTER, ACCESSOR_SETTER }; // Utility superclass for stack-allocated objects that must be updated // on gc. It provides two ways for the gc to update instances, either // iterating or updating after gc. diff --git a/patches/v8/expose_mksnapshot.patch b/patches/v8/expose_mksnapshot.patch index f9f06256fd..19c83edc95 100644 --- a/patches/v8/expose_mksnapshot.patch +++ b/patches/v8/expose_mksnapshot.patch @@ -6,10 +6,10 @@ Subject: expose_mksnapshot.patch Needed in order to target mksnapshot for mksnapshot zip. diff --git a/BUILD.gn b/BUILD.gn -index f23ed7817bafcd84b941905a2a8852f79069aa2e..b7974da90497500764199a9c3416211f163a6e78 100644 +index c621e767b9b09b2ae6c0d8ab8cef37c660f77c71..621f8dddcbf1378078747fdb935ee730e5eb338a 100644 --- a/BUILD.gn +++ b/BUILD.gn -@@ -5509,7 +5509,6 @@ if (current_toolchain == v8_generator_toolchain) { +@@ -5635,7 +5635,6 @@ if (current_toolchain == v8_generator_toolchain) { if (current_toolchain == v8_snapshot_toolchain) { v8_executable("mksnapshot") { diff --git a/patches/v8/fix_disable_implies_dcheck_for_node_stream_array_buffers.patch b/patches/v8/fix_disable_implies_dcheck_for_node_stream_array_buffers.patch index 09e0d51204..9a54203369 100644 --- a/patches/v8/fix_disable_implies_dcheck_for_node_stream_array_buffers.patch +++ b/patches/v8/fix_disable_implies_dcheck_for_node_stream_array_buffers.patch @@ -18,7 +18,7 @@ This patch can be removed when streams support rab/gsab, or when support is synchronized across both v8 and node. diff --git a/src/objects/js-array-buffer.cc b/src/objects/js-array-buffer.cc -index bbe635ee2ad6d75cab64f1a93342347e8d10f550..0c903dca606cb28820202347dcbf642e56db3df9 100644 +index 07b37dd7f5a76c13fe6f8a55fd4a93fa813d81a6..ad0e4610b7f9adc64d996800e5fdb0c6f1a58562 100644 --- a/src/objects/js-array-buffer.cc +++ b/src/objects/js-array-buffer.cc @@ -72,9 +72,9 @@ void JSArrayBuffer::Attach(std::shared_ptr backing_store) { @@ -32,5 +32,5 @@ index bbe635ee2ad6d75cab64f1a93342347e8d10f550..0c903dca606cb28820202347dcbf642e + // !backing_store->is_wasm_memory() && !backing_store->is_resizable(), + // backing_store->byte_length() == backing_store->max_byte_length()); DCHECK(!was_detached()); - Isolate* isolate = GetIsolate(); - set_backing_store(isolate, backing_store->buffer_start()); + set_backing_store(backing_store->buffer_start()); + if (is_shared() && is_resizable()) { diff --git a/patches/v8/regexp_allow_reentrant_irregexp_execution.patch b/patches/v8/regexp_allow_reentrant_irregexp_execution.patch deleted file mode 100644 index d522388f9f..0000000000 --- a/patches/v8/regexp_allow_reentrant_irregexp_execution.patch +++ /dev/null @@ -1,1736 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jakob Gruber -Date: Thu, 23 Sep 2021 07:26:38 +0200 -Subject: Allow reentrant irregexp execution - -.. by reusing the regexp stack from potentially multiple nested -irregexp activations. - -To do this, we now maintain a stack pointer in RegExpStack. This stack -pointer is synchronized at all boundaries between generated irregexp -code and the outside world, i.e. when entering or returning from -irregexp code, and when calling into C functions such as GrowStack. - -Fixed: v8:11382 -Change-Id: I5ed27630c1a64ebf3afb9ddf80fb60ea067c0c40 -Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3162604 -Reviewed-by: Toon Verwaest -Reviewed-by: Patrick Thier -Commit-Queue: Toon Verwaest -Auto-Submit: Jakob Gruber -Cr-Commit-Position: refs/heads/main@{#77013} - -diff --git a/src/api/api.cc b/src/api/api.cc -index d09a84023ba633d3506ba0d49860da015b9104a6..882581b69ea0c46690e9971f73f76f014b3279f0 100644 ---- a/src/api/api.cc -+++ b/src/api/api.cc -@@ -108,7 +108,6 @@ - #include "src/profiler/heap-snapshot-generator-inl.h" - #include "src/profiler/profile-generator-inl.h" - #include "src/profiler/tick-sample.h" --#include "src/regexp/regexp-stack.h" - #include "src/regexp/regexp-utils.h" - #include "src/runtime/runtime.h" - #include "src/snapshot/code-serializer.h" -diff --git a/src/codegen/external-reference.cc b/src/codegen/external-reference.cc -index b58157b16357040dd11fa4a4b8dbcd9d12244e81..b9a6cb6def990c8cc6c61b64f548964fa2483a37 100644 ---- a/src/codegen/external-reference.cc -+++ b/src/codegen/external-reference.cc -@@ -761,6 +761,11 @@ ExternalReference ExternalReference::address_of_regexp_stack_memory_top_address( - isolate->regexp_stack()->memory_top_address_address()); - } - -+ExternalReference ExternalReference::address_of_regexp_stack_stack_pointer( -+ Isolate* isolate) { -+ return ExternalReference(isolate->regexp_stack()->stack_pointer_address()); -+} -+ - ExternalReference ExternalReference::javascript_execution_assert( - Isolate* isolate) { - return ExternalReference(isolate->javascript_execution_assert_address()); -diff --git a/src/codegen/external-reference.h b/src/codegen/external-reference.h -index ca62ff9d7a32b6782e86b1b2bf24dddf69a0be6d..9f112240d215e3288a3dfb4051ae69d36dd340c1 100644 ---- a/src/codegen/external-reference.h -+++ b/src/codegen/external-reference.h -@@ -72,6 +72,8 @@ class StatsCounter; - "RegExpStack::limit_address_address()") \ - V(address_of_regexp_stack_memory_top_address, \ - "RegExpStack::memory_top_address_address()") \ -+ V(address_of_regexp_stack_stack_pointer, \ -+ "RegExpStack::stack_pointer_address()") \ - V(address_of_static_offsets_vector, "OffsetsVector::static_offsets_vector") \ - V(thread_in_wasm_flag_address_address, \ - "Isolate::thread_in_wasm_flag_address_address") \ -diff --git a/src/debug/debug-interface.cc b/src/debug/debug-interface.cc -index add2b3dbb4dc2e71a6dec717c29d957809797abf..e6ae32f9d2c11152c5184775f26e48a6870091ab 100644 ---- a/src/debug/debug-interface.cc -+++ b/src/debug/debug-interface.cc -@@ -17,7 +17,6 @@ - #include "src/objects/js-generator-inl.h" - #include "src/objects/stack-frame-info-inl.h" - #include "src/profiler/heap-profiler.h" --#include "src/regexp/regexp-stack.h" - #include "src/strings/string-builder-inl.h" - - #if V8_ENABLE_WEBASSEMBLY -@@ -304,10 +303,7 @@ void SetTerminateOnResume(Isolate* v8_isolate) { - bool CanBreakProgram(Isolate* v8_isolate) { - i::Isolate* isolate = reinterpret_cast(v8_isolate); - ENTER_V8_DO_NOT_USE(isolate); -- // We cannot break a program if we are currently running a regexp. -- // TODO(yangguo): fix this exception. -- return !isolate->regexp_stack()->is_in_use() && -- isolate->debug()->AllFramesOnStackAreBlackboxed(); -+ return isolate->debug()->AllFramesOnStackAreBlackboxed(); - } - - Isolate* Script::GetIsolate() const { -diff --git a/src/execution/isolate.cc b/src/execution/isolate.cc -index 474ea612bda4bf44776b919fd20e86e85ba3e3ce..ffcf10e4d282b85f1a22fa656113709f09ef34f2 100644 ---- a/src/execution/isolate.cc -+++ b/src/execution/isolate.cc -@@ -3596,7 +3596,6 @@ bool Isolate::Init(SnapshotData* startup_snapshot_data, - store_stub_cache_ = new StubCache(this); - materialized_object_store_ = new MaterializedObjectStore(this); - regexp_stack_ = new RegExpStack(); -- regexp_stack_->isolate_ = this; - date_cache_ = new DateCache(); - heap_profiler_ = new HeapProfiler(heap()); - interpreter_ = new interpreter::Interpreter(this); -diff --git a/src/regexp/arm/regexp-macro-assembler-arm.cc b/src/regexp/arm/regexp-macro-assembler-arm.cc -index 6c90e00817342a115ec49a21b561a7014e0ce8f8..10766db4cf1d41ad0fee0754c6eaeebe46ace500 100644 ---- a/src/regexp/arm/regexp-macro-assembler-arm.cc -+++ b/src/regexp/arm/regexp-macro-assembler-arm.cc -@@ -6,15 +6,13 @@ - - #include "src/regexp/arm/regexp-macro-assembler-arm.h" - --#include "src/codegen/assembler-inl.h" -+#include "src/codegen/arm/assembler-arm-inl.h" - #include "src/codegen/macro-assembler.h" - #include "src/heap/factory.h" - #include "src/logging/log.h" --#include "src/objects/objects-inl.h" --#include "src/regexp/regexp-macro-assembler.h" -+#include "src/objects/code-inl.h" - #include "src/regexp/regexp-stack.h" - #include "src/snapshot/embedded/embedded-data.h" --#include "src/strings/unicode.h" - - namespace v8 { - namespace internal { -@@ -102,6 +100,7 @@ RegExpMacroAssemblerARM::RegExpMacroAssemblerARM(Isolate* isolate, Zone* zone, - : NativeRegExpMacroAssembler(isolate, zone), - masm_(new MacroAssembler(isolate, CodeObjectRequired::kYes, - NewAssemblerBuffer(kRegExpCodeSize))), -+ no_root_array_scope_(masm_), - mode_(mode), - num_registers_(registers_to_save), - num_saved_registers_(registers_to_save), -@@ -110,8 +109,6 @@ RegExpMacroAssemblerARM::RegExpMacroAssemblerARM(Isolate* isolate, Zone* zone, - success_label_(), - backtrack_label_(), - exit_label_() { -- masm_->set_root_array_available(false); -- - DCHECK_EQ(0, registers_to_save % 2); - __ jmp(&entry_label_); // We'll write the entry code later. - __ bind(&start_label_); // And then continue from here. -@@ -619,6 +616,42 @@ void RegExpMacroAssemblerARM::Fail() { - __ jmp(&exit_label_); - } - -+void RegExpMacroAssemblerARM::LoadRegExpStackPointerFromMemory(Register dst) { -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_stack_pointer(isolate()); -+ __ mov(dst, Operand(ref)); -+ __ ldr(dst, MemOperand(dst)); -+} -+ -+void RegExpMacroAssemblerARM::StoreRegExpStackPointerToMemory( -+ Register src, Register scratch) { -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_stack_pointer(isolate()); -+ __ mov(scratch, Operand(ref)); -+ __ str(src, MemOperand(scratch)); -+} -+ -+void RegExpMacroAssemblerARM::PushRegExpBasePointer(Register scratch1, -+ Register scratch2) { -+ LoadRegExpStackPointerFromMemory(scratch1); -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); -+ __ mov(scratch2, Operand(ref)); -+ __ ldr(scratch2, MemOperand(scratch2)); -+ __ sub(scratch2, scratch1, scratch2); -+ __ str(scratch2, MemOperand(frame_pointer(), kRegExpStackBasePointer)); -+} -+ -+void RegExpMacroAssemblerARM::PopRegExpBasePointer(Register scratch1, -+ Register scratch2) { -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); -+ __ ldr(scratch1, MemOperand(frame_pointer(), kRegExpStackBasePointer)); -+ __ mov(scratch2, Operand(ref)); -+ __ ldr(scratch2, MemOperand(scratch2)); -+ __ add(scratch1, scratch1, scratch2); -+ StoreRegExpStackPointerToMemory(scratch1, scratch2); -+} - - Handle RegExpMacroAssemblerARM::GetCode(Handle source) { - Label return_r0; -@@ -654,6 +687,13 @@ Handle RegExpMacroAssemblerARM::GetCode(Handle source) { - __ push(r0); // Make room for "string start - 1" constant. - STATIC_ASSERT(kBacktrackCount == kStringStartMinusOne - kSystemPointerSize); - __ push(r0); // The backtrack counter. -+ STATIC_ASSERT(kRegExpStackBasePointer == -+ kBacktrackCount - kSystemPointerSize); -+ __ push(r0); // The regexp stack base ptr. -+ -+ // Store the regexp base pointer - we'll later restore it / write it to -+ // memory when returning from this irregexp code object. -+ PushRegExpBasePointer(r0, r1); - - // Check if we have space on the stack for registers. - Label stack_limit_hit; -@@ -736,7 +776,7 @@ Handle RegExpMacroAssemblerARM::GetCode(Handle source) { - } - - // Initialize backtrack stack pointer. -- __ ldr(backtrack_stackpointer(), MemOperand(frame_pointer(), kStackHighEnd)); -+ LoadRegExpStackPointerFromMemory(backtrack_stackpointer()); - - __ jmp(&start_label_); - -@@ -834,6 +874,10 @@ Handle RegExpMacroAssemblerARM::GetCode(Handle source) { - } - - __ bind(&return_r0); -+ // Restore the original regexp stack pointer value (effectively, pop the -+ // stored base pointer). -+ PopRegExpBasePointer(r1, r2); -+ - // Skip sp past regexp registers and local variables.. - __ mov(sp, frame_pointer()); - // Restore registers r4..r11 and return (restoring lr to pc). -@@ -851,12 +895,16 @@ Handle RegExpMacroAssemblerARM::GetCode(Handle source) { - if (check_preempt_label_.is_linked()) { - SafeCallTarget(&check_preempt_label_); - -+ StoreRegExpStackPointerToMemory(backtrack_stackpointer(), r1); -+ - CallCheckStackGuardState(); - __ cmp(r0, Operand::Zero()); - // If returning non-zero, we should end execution with the given - // result as return value. - __ b(ne, &return_r0); - -+ LoadRegExpStackPointerFromMemory(backtrack_stackpointer()); -+ - // String might have moved: Reload end of string from frame. - __ ldr(end_of_input_address(), MemOperand(frame_pointer(), kInputEnd)); - SafeReturn(); -@@ -867,17 +915,18 @@ Handle RegExpMacroAssemblerARM::GetCode(Handle source) { - SafeCallTarget(&stack_overflow_label_); - // Reached if the backtrack-stack limit has been hit. - -- // Call GrowStack(backtrack_stackpointer(), &stack_base) -- static const int num_arguments = 3; -- __ PrepareCallCFunction(num_arguments); -- __ mov(r0, backtrack_stackpointer()); -- __ add(r1, frame_pointer(), Operand(kStackHighEnd)); -- __ mov(r2, Operand(ExternalReference::isolate_address(isolate()))); -+ // Call GrowStack(isolate). -+ -+ StoreRegExpStackPointerToMemory(backtrack_stackpointer(), r1); -+ -+ static constexpr int kNumArguments = 1; -+ __ PrepareCallCFunction(kNumArguments); -+ __ mov(r0, Operand(ExternalReference::isolate_address(isolate()))); - ExternalReference grow_stack = - ExternalReference::re_grow_stack(isolate()); -- __ CallCFunction(grow_stack, num_arguments); -- // If return nullptr, we have failed to grow the stack, and -- // must exit with a stack-overflow exception. -+ __ CallCFunction(grow_stack, kNumArguments); -+ // If nullptr is returned, we have failed to grow the stack, and must exit -+ // with a stack-overflow exception. - __ cmp(r0, Operand::Zero()); - __ b(eq, &exit_with_exception); - // Otherwise use return value as new stack pointer. -@@ -984,14 +1033,24 @@ void RegExpMacroAssemblerARM::ReadCurrentPositionFromRegister(int reg) { - __ ldr(current_input_offset(), register_location(reg)); - } - -+void RegExpMacroAssemblerARM::WriteStackPointerToRegister(int reg) { -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); -+ __ mov(r1, Operand(ref)); -+ __ ldr(r1, MemOperand(r1)); -+ __ sub(r0, backtrack_stackpointer(), r1); -+ __ str(r0, register_location(reg)); -+} - - void RegExpMacroAssemblerARM::ReadStackPointerFromRegister(int reg) { -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); -+ __ mov(r0, Operand(ref)); -+ __ ldr(r0, MemOperand(r0)); - __ ldr(backtrack_stackpointer(), register_location(reg)); -- __ ldr(r0, MemOperand(frame_pointer(), kStackHighEnd)); -- __ add(backtrack_stackpointer(), backtrack_stackpointer(), Operand(r0)); -+ __ add(backtrack_stackpointer(), backtrack_stackpointer(), r0); - } - -- - void RegExpMacroAssemblerARM::SetCurrentPositionFromEnd(int by) { - Label after_position; - __ cmp(current_input_offset(), Operand(-by * char_size())); -@@ -1037,14 +1096,6 @@ void RegExpMacroAssemblerARM::ClearRegisters(int reg_from, int reg_to) { - } - } - -- --void RegExpMacroAssemblerARM::WriteStackPointerToRegister(int reg) { -- __ ldr(r1, MemOperand(frame_pointer(), kStackHighEnd)); -- __ sub(r0, backtrack_stackpointer(), r1); -- __ str(r0, register_location(reg)); --} -- -- - // Private methods: - - void RegExpMacroAssemblerARM::CallCheckStackGuardState() { -diff --git a/src/regexp/arm/regexp-macro-assembler-arm.h b/src/regexp/arm/regexp-macro-assembler-arm.h -index a02a4dc2af546e53a89161aad9f3500a51c062f8..a76f9dea70264d79d57ebd6c60b100bc9e0a499d 100644 ---- a/src/regexp/arm/regexp-macro-assembler-arm.h -+++ b/src/regexp/arm/regexp-macro-assembler-arm.h -@@ -5,8 +5,6 @@ - #ifndef V8_REGEXP_ARM_REGEXP_MACRO_ASSEMBLER_ARM_H_ - #define V8_REGEXP_ARM_REGEXP_MACRO_ASSEMBLER_ARM_H_ - --#include "src/base/strings.h" --#include "src/codegen/arm/assembler-arm.h" - #include "src/codegen/macro-assembler.h" - #include "src/regexp/regexp-macro-assembler.h" - -@@ -115,8 +113,14 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerARM - static const int kSuccessfulCaptures = kInputString - kPointerSize; - static const int kStringStartMinusOne = kSuccessfulCaptures - kPointerSize; - static const int kBacktrackCount = kStringStartMinusOne - kSystemPointerSize; -+ // Stores the initial value of the regexp stack pointer in a -+ // position-independent representation (in case the regexp stack grows and -+ // thus moves). -+ static const int kRegExpStackBasePointer = -+ kBacktrackCount - kSystemPointerSize; -+ - // First register address. Following registers are below it on the stack. -- static const int kRegisterZero = kBacktrackCount - kSystemPointerSize; -+ static const int kRegisterZero = kRegExpStackBasePointer - kSystemPointerSize; - - // Initial size of code buffer. - static const int kRegExpCodeSize = 1024; -@@ -129,7 +133,6 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerARM - // Check whether we are exceeding the stack limit on the backtrack stack. - void CheckStackLimit(); - -- - // Generate a call to CheckStackGuardState. - void CallCheckStackGuardState(); - -@@ -138,27 +141,27 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerARM - - // Register holding the current input position as negative offset from - // the end of the string. -- inline Register current_input_offset() { return r6; } -+ static constexpr Register current_input_offset() { return r6; } - - // The register containing the current character after LoadCurrentCharacter. -- inline Register current_character() { return r7; } -+ static constexpr Register current_character() { return r7; } - - // Register holding address of the end of the input string. -- inline Register end_of_input_address() { return r10; } -+ static constexpr Register end_of_input_address() { return r10; } - - // Register holding the frame address. Local variables, parameters and - // regexp registers are addressed relative to this. -- inline Register frame_pointer() { return fp; } -+ static constexpr Register frame_pointer() { return fp; } - - // The register containing the backtrack stack top. Provides a meaningful - // name to the register. -- inline Register backtrack_stackpointer() { return r8; } -+ static constexpr Register backtrack_stackpointer() { return r8; } - - // Register holding pointer to the current code object. -- inline Register code_pointer() { return r5; } -+ static constexpr Register code_pointer() { return r5; } - - // Byte size of chars in the string to match (decided by the Mode argument) -- inline int char_size() { return static_cast(mode_); } -+ inline int char_size() const { return static_cast(mode_); } - - // Equivalent to a conditional branch to the label, unless the label - // is nullptr, in which case it is a conditional Backtrack. -@@ -178,19 +181,25 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerARM - // and increments it by a word size. - inline void Pop(Register target); - -+ void LoadRegExpStackPointerFromMemory(Register dst); -+ void StoreRegExpStackPointerToMemory(Register src, Register scratch); -+ void PushRegExpBasePointer(Register scratch1, Register scratch2); -+ void PopRegExpBasePointer(Register scratch1, Register scratch2); -+ - Isolate* isolate() const { return masm_->isolate(); } - -- MacroAssembler* masm_; -+ MacroAssembler* const masm_; -+ const NoRootArrayScope no_root_array_scope_; - - // Which mode to generate code for (Latin1 or UC16). -- Mode mode_; -+ const Mode mode_; - - // One greater than maximal register index actually used. - int num_registers_; - - // Number of registers to output at the end (the saved registers - // are always 0..num_saved_registers_-1) -- int num_saved_registers_; -+ const int num_saved_registers_; - - // Labels used internally. - Label entry_label_; -diff --git a/src/regexp/arm64/regexp-macro-assembler-arm64.cc b/src/regexp/arm64/regexp-macro-assembler-arm64.cc -index 67793ffc411ccb9c32f67fff393e6b77d094b325..6192461fa32879469d56d36fb788b5de33038d77 100644 ---- a/src/regexp/arm64/regexp-macro-assembler-arm64.cc -+++ b/src/regexp/arm64/regexp-macro-assembler-arm64.cc -@@ -113,6 +113,7 @@ RegExpMacroAssemblerARM64::RegExpMacroAssemblerARM64(Isolate* isolate, - : NativeRegExpMacroAssembler(isolate, zone), - masm_(new MacroAssembler(isolate, CodeObjectRequired::kYes, - NewAssemblerBuffer(kRegExpCodeSize))), -+ no_root_array_scope_(masm_), - mode_(mode), - num_registers_(registers_to_save), - num_saved_registers_(registers_to_save), -@@ -121,8 +122,6 @@ RegExpMacroAssemblerARM64::RegExpMacroAssemblerARM64(Isolate* isolate, - success_label_(), - backtrack_label_(), - exit_label_() { -- masm_->set_root_array_available(false); -- - DCHECK_EQ(0, registers_to_save % 2); - // We can cache at most 16 W registers in x0-x7. - STATIC_ASSERT(kNumCachedRegisters <= 16); -@@ -699,6 +698,42 @@ void RegExpMacroAssemblerARM64::Fail() { - __ B(&exit_label_); - } - -+void RegExpMacroAssemblerARM64::LoadRegExpStackPointerFromMemory(Register dst) { -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_stack_pointer(isolate()); -+ __ Mov(dst, ref); -+ __ Ldr(dst, MemOperand(dst)); -+} -+ -+void RegExpMacroAssemblerARM64::StoreRegExpStackPointerToMemory( -+ Register src, Register scratch) { -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_stack_pointer(isolate()); -+ __ Mov(scratch, ref); -+ __ Str(src, MemOperand(scratch)); -+} -+ -+void RegExpMacroAssemblerARM64::PushRegExpBasePointer(Register scratch1, -+ Register scratch2) { -+ LoadRegExpStackPointerFromMemory(scratch1); -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); -+ __ Mov(scratch2, ref); -+ __ Ldr(scratch2, MemOperand(scratch2)); -+ __ Sub(scratch2, scratch1, scratch2); -+ __ Str(scratch2, MemOperand(frame_pointer(), kRegExpStackBasePointer)); -+} -+ -+void RegExpMacroAssemblerARM64::PopRegExpBasePointer(Register scratch1, -+ Register scratch2) { -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); -+ __ Ldr(scratch1, MemOperand(frame_pointer(), kRegExpStackBasePointer)); -+ __ Mov(scratch2, ref); -+ __ Ldr(scratch2, MemOperand(scratch2)); -+ __ Add(scratch1, scratch1, scratch2); -+ StoreRegExpStackPointerToMemory(scratch1, scratch2); -+} - - Handle RegExpMacroAssemblerARM64::GetCode(Handle source) { - Label return_w0; -@@ -744,22 +779,27 @@ Handle RegExpMacroAssemblerARM64::GetCode(Handle source) { - __ Mov(input_end(), x3); - __ Mov(output_array(), x4); - -- // Set the number of registers we will need to allocate, that is: -- // - kSuccessCounter / success_counter (X register) -- // - kBacktrackCount (X register) -- // - (num_registers_ - kNumCachedRegisters) (W registers) -- int num_wreg_to_allocate = num_registers_ - kNumCachedRegisters; -- // Do not allocate registers on the stack if they can all be cached. -- if (num_wreg_to_allocate < 0) { num_wreg_to_allocate = 0; } -- // Make room for the success_counter and kBacktrackCount. Each X (64-bit) -- // register is equivalent to two W (32-bit) registers. -- num_wreg_to_allocate += 2 + 2; -- - // Make sure the stack alignment will be respected. -- int alignment = masm_->ActivationFrameAlignment(); -+ const int alignment = masm_->ActivationFrameAlignment(); - DCHECK_EQ(alignment % 16, 0); -- int align_mask = (alignment / kWRegSize) - 1; -- num_wreg_to_allocate = (num_wreg_to_allocate + align_mask) & ~align_mask; -+ const int align_mask = (alignment / kWRegSize) - 1; -+ -+ // Make room for stack locals. -+ static constexpr int kWRegPerXReg = kXRegSize / kWRegSize; -+ DCHECK_EQ(kNumberOfStackLocals * kWRegPerXReg, -+ ((kNumberOfStackLocals * kWRegPerXReg) + align_mask) & ~align_mask); -+ __ Claim(kNumberOfStackLocals * kWRegPerXReg); -+ -+ // Store the regexp base pointer - we'll later restore it / write it to -+ // memory when returning from this irregexp code object. -+ PushRegExpBasePointer(x10, x11); -+ -+ // Set the number of registers we will need to allocate, that is: -+ // - (num_registers_ - kNumCachedRegisters) (W registers) -+ const int num_stack_registers = -+ std::max(0, num_registers_ - kNumCachedRegisters); -+ const int num_wreg_to_allocate = -+ (num_stack_registers + align_mask) & ~align_mask; - - // Check if we have space on the stack. - Label stack_limit_hit; -@@ -839,9 +879,9 @@ Handle RegExpMacroAssemblerARM64::GetCode(Handle source) { - } - - // Initialize backtrack stack pointer. -- __ Ldr(backtrack_stackpointer(), MemOperand(frame_pointer(), kStackBase)); -+ LoadRegExpStackPointerFromMemory(backtrack_stackpointer()); - -- // Execute -+ // Execute. - __ B(&start_label_); - - if (backtrack_label_.is_linked()) { -@@ -1013,7 +1053,7 @@ Handle RegExpMacroAssemblerARM64::GetCode(Handle source) { - } - - if (exit_label_.is_linked()) { -- // Exit and return w0 -+ // Exit and return w0. - __ Bind(&exit_label_); - if (global()) { - __ Ldr(w0, MemOperand(frame_pointer(), kSuccessCounter)); -@@ -1021,8 +1061,11 @@ Handle RegExpMacroAssemblerARM64::GetCode(Handle source) { - } - - __ Bind(&return_w0); -+ // Restore the original regexp stack pointer value (effectively, pop the -+ // stored base pointer). -+ PopRegExpBasePointer(x10, x11); - -- // Set stack pointer back to first register to retain -+ // Set stack pointer back to first register to retain. - __ Mov(sp, fp); - __ Pop(fp, lr); - -@@ -1039,6 +1082,9 @@ Handle RegExpMacroAssemblerARM64::GetCode(Handle source) { - - if (check_preempt_label_.is_linked()) { - __ Bind(&check_preempt_label_); -+ -+ StoreRegExpStackPointerToMemory(backtrack_stackpointer(), x10); -+ - SaveLinkRegister(); - // The cached registers need to be retained. - __ PushCPURegList(cached_registers); -@@ -1048,26 +1094,30 @@ Handle RegExpMacroAssemblerARM64::GetCode(Handle source) { - __ Cbnz(w0, &return_w0); - // Reset the cached registers. - __ PopCPURegList(cached_registers); -+ -+ LoadRegExpStackPointerFromMemory(backtrack_stackpointer()); -+ - RestoreLinkRegister(); - __ Ret(); - } - - if (stack_overflow_label_.is_linked()) { - __ Bind(&stack_overflow_label_); -+ -+ StoreRegExpStackPointerToMemory(backtrack_stackpointer(), x10); -+ - SaveLinkRegister(); - // The cached registers need to be retained. - __ PushCPURegList(cached_registers); -- // Call GrowStack(backtrack_stackpointer(), &stack_base) -- __ Mov(x2, ExternalReference::isolate_address(isolate())); -- __ Add(x1, frame_pointer(), kStackBase); -- __ Mov(x0, backtrack_stackpointer()); -- ExternalReference grow_stack = -- ExternalReference::re_grow_stack(isolate()); -- __ CallCFunction(grow_stack, 3); -- // If return nullptr, we have failed to grow the stack, and -- // must exit with a stack-overflow exception. -- // Returning from the regexp code restores the stack (sp <- fp) -- // so we don't need to drop the link register from it before exiting. -+ // Call GrowStack(isolate) -+ static constexpr int kNumArguments = 1; -+ __ Mov(x0, ExternalReference::isolate_address(isolate())); -+ __ CallCFunction(ExternalReference::re_grow_stack(isolate()), -+ kNumArguments); -+ // If return nullptr, we have failed to grow the stack, and must exit with -+ // a stack-overflow exception. Returning from the regexp code restores the -+ // stack (sp <- fp) so we don't need to drop the link register from it -+ // before exiting. - __ Cbz(w0, &exit_with_exception); - // Otherwise use return value as new stack pointer. - __ Mov(backtrack_stackpointer(), x0); -@@ -1191,14 +1241,29 @@ void RegExpMacroAssemblerARM64::ReadCurrentPositionFromRegister(int reg) { - } - } - -+void RegExpMacroAssemblerARM64::WriteStackPointerToRegister(int reg) { -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); -+ __ Mov(x10, ref); -+ __ Ldr(x10, MemOperand(x10)); -+ __ Sub(x10, backtrack_stackpointer(), x10); -+ if (FLAG_debug_code) { -+ __ Cmp(x10, Operand(w10, SXTW)); -+ // The stack offset needs to fit in a W register. -+ __ Check(eq, AbortReason::kOffsetOutOfRange); -+ } -+ StoreRegister(reg, w10); -+} - - void RegExpMacroAssemblerARM64::ReadStackPointerFromRegister(int reg) { -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); - Register read_from = GetRegister(reg, w10); -- __ Ldr(x11, MemOperand(frame_pointer(), kStackBase)); -+ __ Mov(x11, ref); -+ __ Ldr(x11, MemOperand(x11)); - __ Add(backtrack_stackpointer(), x11, Operand(read_from, SXTW)); - } - -- - void RegExpMacroAssemblerARM64::SetCurrentPositionFromEnd(int by) { - Label after_position; - __ Cmp(current_input_offset(), -by * char_size()); -@@ -1300,19 +1365,6 @@ void RegExpMacroAssemblerARM64::ClearRegisters(int reg_from, int reg_to) { - } - } - -- --void RegExpMacroAssemblerARM64::WriteStackPointerToRegister(int reg) { -- __ Ldr(x10, MemOperand(frame_pointer(), kStackBase)); -- __ Sub(x10, backtrack_stackpointer(), x10); -- if (FLAG_debug_code) { -- __ Cmp(x10, Operand(w10, SXTW)); -- // The stack offset needs to fit in a W register. -- __ Check(eq, AbortReason::kOffsetOutOfRange); -- } -- StoreRegister(reg, w10); --} -- -- - // Helper function for reading a value out of a stack frame. - template - static T& frame_entry(Address re_frame, int frame_offset) { -diff --git a/src/regexp/arm64/regexp-macro-assembler-arm64.h b/src/regexp/arm64/regexp-macro-assembler-arm64.h -index 80931e3ca42f7d85a3dea067ca203b252a0f78f0..204ee68dc868142693e9959170c71df3f72f97ce 100644 ---- a/src/regexp/arm64/regexp-macro-assembler-arm64.h -+++ b/src/regexp/arm64/regexp-macro-assembler-arm64.h -@@ -110,18 +110,28 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerARM64 - // Below the frame pointer. - // Register parameters stored by setup code. - static const int kDirectCall = -kSystemPointerSize; -- static const int kStackBase = kDirectCall - kSystemPointerSize; -- static const int kOutputSize = kStackBase - kSystemPointerSize; -+ static const int kStackHighEnd = kDirectCall - kSystemPointerSize; -+ static const int kOutputSize = kStackHighEnd - kSystemPointerSize; - static const int kInput = kOutputSize - kSystemPointerSize; - // When adding local variables remember to push space for them in - // the frame in GetCode. - static const int kSuccessCounter = kInput - kSystemPointerSize; - static const int kBacktrackCount = kSuccessCounter - kSystemPointerSize; -+ // Stores the initial value of the regexp stack pointer in a -+ // position-independent representation (in case the regexp stack grows and -+ // thus moves). -+ static const int kRegExpStackBasePointer = -+ kBacktrackCount - kSystemPointerSize; -+ // A padding slot to preserve alignment. -+ static const int kStackLocalPadding = -+ kRegExpStackBasePointer - kSystemPointerSize; -+ static constexpr int kNumberOfStackLocals = 4; -+ - // First position register address on the stack. Following positions are - // below it. A position is a 32 bit value. -- static const int kFirstRegisterOnStack = kBacktrackCount - kWRegSize; -+ static const int kFirstRegisterOnStack = kStackLocalPadding - kWRegSize; - // A capture is a 64 bit value holding two position. -- static const int kFirstCaptureOnStack = kBacktrackCount - kXRegSize; -+ static const int kFirstCaptureOnStack = kStackLocalPadding - kXRegSize; - - // Initial size of code buffer. - static const int kRegExpCodeSize = 1024; -@@ -152,43 +162,43 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerARM64 - - // Register holding the current input position as negative offset from - // the end of the string. -- Register current_input_offset() { return w21; } -+ static constexpr Register current_input_offset() { return w21; } - - // The register containing the current character after LoadCurrentCharacter. -- Register current_character() { return w22; } -+ static constexpr Register current_character() { return w22; } - - // Register holding address of the end of the input string. -- Register input_end() { return x25; } -+ static constexpr Register input_end() { return x25; } - - // Register holding address of the start of the input string. -- Register input_start() { return x26; } -+ static constexpr Register input_start() { return x26; } - - // Register holding the offset from the start of the string where we should - // start matching. -- Register start_offset() { return w27; } -+ static constexpr Register start_offset() { return w27; } - - // Pointer to the output array's first element. -- Register output_array() { return x28; } -+ static constexpr Register output_array() { return x28; } - - // Register holding the frame address. Local variables, parameters and - // regexp registers are addressed relative to this. -- Register frame_pointer() { return fp; } -+ static constexpr Register frame_pointer() { return fp; } - - // The register containing the backtrack stack top. Provides a meaningful - // name to the register. -- Register backtrack_stackpointer() { return x23; } -+ static constexpr Register backtrack_stackpointer() { return x23; } - - // Register holding pointer to the current code object. -- Register code_pointer() { return x20; } -+ static constexpr Register code_pointer() { return x20; } - - // Register holding the value used for clearing capture registers. -- Register string_start_minus_one() { return w24; } -+ static constexpr Register string_start_minus_one() { return w24; } - // The top 32 bit of this register is used to store this value - // twice. This is used for clearing more than one register at a time. -- Register twice_non_position_value() { return x24; } -+ static constexpr Register twice_non_position_value() { return x24; } - - // Byte size of chars in the string to match (decided by the Mode argument) -- int char_size() { return static_cast(mode_); } -+ int char_size() const { return static_cast(mode_); } - - // Equivalent to a conditional branch to the label, unless the label - // is nullptr, in which case it is a conditional Backtrack. -@@ -254,19 +264,25 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerARM64 - // This assumes that the state of the register is not STACKED. - inline Register GetCachedRegister(int register_index); - -+ void LoadRegExpStackPointerFromMemory(Register dst); -+ void StoreRegExpStackPointerToMemory(Register src, Register scratch); -+ void PushRegExpBasePointer(Register scratch1, Register scratch2); -+ void PopRegExpBasePointer(Register scratch1, Register scratch2); -+ - Isolate* isolate() const { return masm_->isolate(); } - -- MacroAssembler* masm_; -+ MacroAssembler* const masm_; -+ const NoRootArrayScope no_root_array_scope_; - - // Which mode to generate code for (LATIN1 or UC16). -- Mode mode_; -+ const Mode mode_; - - // One greater than maximal register index actually used. - int num_registers_; - - // Number of registers to output at the end (the saved registers - // are always 0..num_saved_registers_-1) -- int num_saved_registers_; -+ const int num_saved_registers_; - - // Labels used internally. - Label entry_label_; -diff --git a/src/regexp/ia32/regexp-macro-assembler-ia32.cc b/src/regexp/ia32/regexp-macro-assembler-ia32.cc -index 6af1d02eed36af46a7e0d819d006361f51411ba6..51d63b2531e2bc85fb115de23d7b6a6f40b36f11 100644 ---- a/src/regexp/ia32/regexp-macro-assembler-ia32.cc -+++ b/src/regexp/ia32/regexp-macro-assembler-ia32.cc -@@ -90,6 +90,7 @@ RegExpMacroAssemblerIA32::RegExpMacroAssemblerIA32(Isolate* isolate, Zone* zone, - : NativeRegExpMacroAssembler(isolate, zone), - masm_(new MacroAssembler(isolate, CodeObjectRequired::kYes, - NewAssemblerBuffer(kRegExpCodeSize))), -+ no_root_array_scope_(masm_), - mode_(mode), - num_registers_(registers_to_save), - num_saved_registers_(registers_to_save), -@@ -98,9 +99,6 @@ RegExpMacroAssemblerIA32::RegExpMacroAssemblerIA32(Isolate* isolate, Zone* zone, - success_label_(), - backtrack_label_(), - exit_label_() { -- // Irregexp code clobbers ebx and spills/restores it at all boundaries. -- masm_->set_root_array_available(false); -- - DCHECK_EQ(0, registers_to_save % 2); - __ jmp(&entry_label_); // We'll write the entry code later. - __ bind(&start_label_); // And then continue from here. -@@ -655,6 +653,38 @@ void RegExpMacroAssemblerIA32::Fail() { - __ jmp(&exit_label_); - } - -+void RegExpMacroAssemblerIA32::LoadRegExpStackPointerFromMemory(Register dst) { -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_stack_pointer(isolate()); -+ __ mov(dst, __ ExternalReferenceAsOperand(ref, dst)); -+} -+ -+void RegExpMacroAssemblerIA32::StoreRegExpStackPointerToMemory( -+ Register src, Register scratch) { -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_stack_pointer(isolate()); -+ __ mov(__ ExternalReferenceAsOperand(ref, scratch), src); -+} -+ -+void RegExpMacroAssemblerIA32::PushRegExpBasePointer(Register scratch1, -+ Register scratch2) { -+ LoadRegExpStackPointerFromMemory(scratch1); -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); -+ __ mov(scratch2, __ ExternalReferenceAsOperand(ref, scratch2)); -+ __ sub(scratch1, scratch2); -+ __ mov(Operand(ebp, kRegExpStackBasePointer), scratch1); -+} -+ -+void RegExpMacroAssemblerIA32::PopRegExpBasePointer(Register scratch1, -+ Register scratch2) { -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); -+ __ mov(scratch1, Operand(ebp, kRegExpStackBasePointer)); -+ __ mov(scratch2, __ ExternalReferenceAsOperand(ref, scratch2)); -+ __ add(scratch1, scratch2); -+ StoreRegExpStackPointerToMemory(scratch1, scratch2); -+} - - Handle RegExpMacroAssemblerIA32::GetCode(Handle source) { - Label return_eax; -@@ -676,14 +706,23 @@ Handle RegExpMacroAssemblerIA32::GetCode(Handle source) { - __ push(esi); - __ push(edi); - __ push(ebx); // Callee-save on MacOS. -+ STATIC_ASSERT(kLastCalleeSaveRegister == kBackup_ebx); - -- STATIC_ASSERT(kSuccessfulCaptures == kBackup_ebx - kSystemPointerSize); -+ STATIC_ASSERT(kSuccessfulCaptures == -+ kLastCalleeSaveRegister - kSystemPointerSize); - __ push(Immediate(0)); // Number of successful matches in a global regexp. - STATIC_ASSERT(kStringStartMinusOne == - kSuccessfulCaptures - kSystemPointerSize); - __ push(Immediate(0)); // Make room for "string start - 1" constant. - STATIC_ASSERT(kBacktrackCount == kStringStartMinusOne - kSystemPointerSize); - __ push(Immediate(0)); // The backtrack counter. -+ STATIC_ASSERT(kRegExpStackBasePointer == -+ kBacktrackCount - kSystemPointerSize); -+ __ push(Immediate(0)); // The regexp stack base ptr. -+ -+ // Store the regexp base pointer - we'll later restore it / write it to -+ // memory when returning from this irregexp code object. -+ PushRegExpBasePointer(ecx, eax); - - // Check if we have space on the stack for registers. - Label stack_limit_hit; -@@ -769,7 +808,7 @@ Handle RegExpMacroAssemblerIA32::GetCode(Handle source) { - } - - // Initialize backtrack stack pointer. -- __ mov(backtrack_stackpointer(), Operand(ebp, kStackHighEnd)); -+ LoadRegExpStackPointerFromMemory(backtrack_stackpointer()); - - __ jmp(&start_label_); - -@@ -855,8 +894,12 @@ Handle RegExpMacroAssemblerIA32::GetCode(Handle source) { - } - - __ bind(&return_eax); -+ // Restore the original regexp stack pointer value (effectively, pop the -+ // stored base pointer). -+ PopRegExpBasePointer(ecx, ebx); -+ - // Skip esp past regexp registers. -- __ lea(esp, Operand(ebp, kBackup_ebx)); -+ __ lea(esp, Operand(ebp, kLastCalleeSaveRegister)); - // Restore callee-save registers. - __ pop(ebx); - __ pop(edi); -@@ -877,7 +920,8 @@ Handle RegExpMacroAssemblerIA32::GetCode(Handle source) { - if (check_preempt_label_.is_linked()) { - SafeCallTarget(&check_preempt_label_); - -- __ push(backtrack_stackpointer()); -+ StoreRegExpStackPointerToMemory(backtrack_stackpointer(), edi); -+ - __ push(edi); - - CallCheckStackGuardState(ebx); -@@ -887,7 +931,9 @@ Handle RegExpMacroAssemblerIA32::GetCode(Handle source) { - __ j(not_zero, &return_eax); - - __ pop(edi); -- __ pop(backtrack_stackpointer()); -+ -+ LoadRegExpStackPointerFromMemory(backtrack_stackpointer()); -+ - // String might have moved: Reload esi from frame. - __ mov(esi, Operand(ebp, kInputEnd)); - SafeReturn(); -@@ -898,21 +944,19 @@ Handle RegExpMacroAssemblerIA32::GetCode(Handle source) { - SafeCallTarget(&stack_overflow_label_); - // Reached if the backtrack-stack limit has been hit. - -- // Save registers before calling C function -+ // Save registers before calling C function. - __ push(esi); - __ push(edi); - -- // Call GrowStack(backtrack_stackpointer()) -- static const int num_arguments = 3; -- __ PrepareCallCFunction(num_arguments, ebx); -- __ mov(Operand(esp, 2 * kSystemPointerSize), -+ StoreRegExpStackPointerToMemory(backtrack_stackpointer(), edi); -+ -+ // Call GrowStack(isolate). -+ static const int kNumArguments = 1; -+ __ PrepareCallCFunction(kNumArguments, ebx); -+ __ mov(Operand(esp, 0 * kSystemPointerSize), - Immediate(ExternalReference::isolate_address(isolate()))); -- __ lea(eax, Operand(ebp, kStackHighEnd)); -- __ mov(Operand(esp, 1 * kSystemPointerSize), eax); -- __ mov(Operand(esp, 0 * kSystemPointerSize), backtrack_stackpointer()); -- ExternalReference grow_stack = -- ExternalReference::re_grow_stack(isolate()); -- __ CallCFunction(grow_stack, num_arguments); -+ __ CallCFunction(ExternalReference::re_grow_stack(isolate()), -+ kNumArguments); - // If return nullptr, we have failed to grow the stack, and - // must exit with a stack-overflow exception. - __ or_(eax, eax); -@@ -1019,10 +1063,21 @@ void RegExpMacroAssemblerIA32::ReadCurrentPositionFromRegister(int reg) { - __ mov(edi, register_location(reg)); - } - -+void RegExpMacroAssemblerIA32::WriteStackPointerToRegister(int reg) { -+ ExternalReference stack_top_address = -+ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); -+ __ mov(eax, __ ExternalReferenceAsOperand(stack_top_address, eax)); -+ __ sub(eax, backtrack_stackpointer()); -+ __ mov(register_location(reg), eax); -+} - - void RegExpMacroAssemblerIA32::ReadStackPointerFromRegister(int reg) { -- __ mov(backtrack_stackpointer(), register_location(reg)); -- __ add(backtrack_stackpointer(), Operand(ebp, kStackHighEnd)); -+ ExternalReference stack_top_address = -+ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); -+ __ mov(backtrack_stackpointer(), -+ __ ExternalReferenceAsOperand(stack_top_address, -+ backtrack_stackpointer())); -+ __ sub(backtrack_stackpointer(), register_location(reg)); - } - - void RegExpMacroAssemblerIA32::SetCurrentPositionFromEnd(int by) { -@@ -1069,14 +1124,6 @@ void RegExpMacroAssemblerIA32::ClearRegisters(int reg_from, int reg_to) { - } - } - -- --void RegExpMacroAssemblerIA32::WriteStackPointerToRegister(int reg) { -- __ mov(eax, backtrack_stackpointer()); -- __ sub(eax, Operand(ebp, kStackHighEnd)); -- __ mov(register_location(reg), eax); --} -- -- - // Private methods: - - void RegExpMacroAssemblerIA32::CallCheckStackGuardState(Register scratch) { -diff --git a/src/regexp/ia32/regexp-macro-assembler-ia32.h b/src/regexp/ia32/regexp-macro-assembler-ia32.h -index 93fb2c9aba32ab48e335c41dd9dbe0bac94d73ed..861795da900d91111386e4f8e660f7f94ea46a33 100644 ---- a/src/regexp/ia32/regexp-macro-assembler-ia32.h -+++ b/src/regexp/ia32/regexp-macro-assembler-ia32.h -@@ -114,12 +114,20 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerIA32 - static const int kBackup_esi = kFramePointer - kSystemPointerSize; - static const int kBackup_edi = kBackup_esi - kSystemPointerSize; - static const int kBackup_ebx = kBackup_edi - kSystemPointerSize; -- static const int kSuccessfulCaptures = kBackup_ebx - kSystemPointerSize; -+ static const int kLastCalleeSaveRegister = kBackup_ebx; -+ -+ static const int kSuccessfulCaptures = -+ kLastCalleeSaveRegister - kSystemPointerSize; - static const int kStringStartMinusOne = - kSuccessfulCaptures - kSystemPointerSize; - static const int kBacktrackCount = kStringStartMinusOne - kSystemPointerSize; -+ // Stores the initial value of the regexp stack pointer in a -+ // position-independent representation (in case the regexp stack grows and -+ // thus moves). -+ static const int kRegExpStackBasePointer = -+ kBacktrackCount - kSystemPointerSize; - // First register address. Following registers are below it on the stack. -- static const int kRegisterZero = kBacktrackCount - kSystemPointerSize; -+ static const int kRegisterZero = kRegExpStackBasePointer - kSystemPointerSize; - - // Initial size of code buffer. - static const int kRegExpCodeSize = 1024; -@@ -137,14 +145,14 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerIA32 - Operand register_location(int register_index); - - // The register containing the current character after LoadCurrentCharacter. -- inline Register current_character() { return edx; } -+ static constexpr Register current_character() { return edx; } - - // The register containing the backtrack stack top. Provides a meaningful - // name to the register. -- inline Register backtrack_stackpointer() { return ecx; } -+ static constexpr Register backtrack_stackpointer() { return ecx; } - - // Byte size of chars in the string to match (decided by the Mode argument) -- inline int char_size() { return static_cast(mode_); } -+ inline int char_size() const { return static_cast(mode_); } - - // Equivalent to a conditional branch to the label, unless the label - // is nullptr, in which case it is a conditional Backtrack. -@@ -168,19 +176,25 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerIA32 - // (ecx) and increments it by a word size. - inline void Pop(Register target); - -+ void LoadRegExpStackPointerFromMemory(Register dst); -+ void StoreRegExpStackPointerToMemory(Register src, Register scratch); -+ void PushRegExpBasePointer(Register scratch1, Register scratch2); -+ void PopRegExpBasePointer(Register scratch1, Register scratch2); -+ - Isolate* isolate() const { return masm_->isolate(); } - -- MacroAssembler* masm_; -+ MacroAssembler* const masm_; -+ const NoRootArrayScope no_root_array_scope_; - - // Which mode to generate code for (LATIN1 or UC16). -- Mode mode_; -+ const Mode mode_; - - // One greater than maximal register index actually used. - int num_registers_; - - // Number of registers to output at the end (the saved registers -- // are always 0..num_saved_registers_-1) -- int num_saved_registers_; -+ // are always 0..num_saved_registers_-1). -+ const int num_saved_registers_; - - // Labels used internally. - Label entry_label_; -diff --git a/src/regexp/regexp-macro-assembler.cc b/src/regexp/regexp-macro-assembler.cc -index 891079b357a0191e20ea31b68df3a123b4d1b8d2..1f5875afb8850da4136da6633d5b0ad9f52803e3 100644 ---- a/src/regexp/regexp-macro-assembler.cc -+++ b/src/regexp/regexp-macro-assembler.cc -@@ -308,7 +308,7 @@ int NativeRegExpMacroAssembler::Execute( - int* output, int output_size, Isolate* isolate, JSRegExp regexp) { - // Ensure that the minimum stack has been allocated. - RegExpStackScope stack_scope(isolate); -- Address stack_base = stack_scope.stack()->stack_base(); -+ Address stack_base = stack_scope.stack()->memory_top(); - - bool is_one_byte = String::IsOneByteRepresentationUnderneath(input); - Code code = FromCodeT(CodeT::cast(regexp.Code(is_one_byte))); -@@ -382,22 +382,23 @@ const byte NativeRegExpMacroAssembler::word_character_map[] = { - }; - // clang-format on - --Address NativeRegExpMacroAssembler::GrowStack(Address stack_pointer, -- Address* stack_base, -- Isolate* isolate) { -+Address NativeRegExpMacroAssembler::GrowStack(Isolate* isolate) { -+ DisallowGarbageCollection no_gc; -+ - RegExpStack* regexp_stack = isolate->regexp_stack(); -- size_t size = regexp_stack->stack_capacity(); -- Address old_stack_base = regexp_stack->stack_base(); -- DCHECK(old_stack_base == *stack_base); -- DCHECK(stack_pointer <= old_stack_base); -- DCHECK(static_cast(old_stack_base - stack_pointer) <= size); -- Address new_stack_base = regexp_stack->EnsureCapacity(size * 2); -- if (new_stack_base == kNullAddress) { -- return kNullAddress; -- } -- *stack_base = new_stack_base; -- intptr_t stack_content_size = old_stack_base - stack_pointer; -- return new_stack_base - stack_content_size; -+ const size_t old_size = regexp_stack->memory_size(); -+ -+#ifdef DEBUG -+ const Address old_stack_top = regexp_stack->memory_top(); -+ const Address old_stack_pointer = regexp_stack->stack_pointer(); -+ CHECK_LE(old_stack_pointer, old_stack_top); -+ CHECK_LE(static_cast(old_stack_top - old_stack_pointer), old_size); -+#endif // DEBUG -+ -+ Address new_stack_base = regexp_stack->EnsureCapacity(old_size * 2); -+ if (new_stack_base == kNullAddress) return kNullAddress; -+ -+ return regexp_stack->stack_pointer(); - } - - } // namespace internal -diff --git a/src/regexp/regexp-macro-assembler.h b/src/regexp/regexp-macro-assembler.h -index 9bd9ba615e32ad9e34e246a7c4788fdf89375476..af3cc2f5caab97a3a57589d0c54011c07269227f 100644 ---- a/src/regexp/regexp-macro-assembler.h -+++ b/src/regexp/regexp-macro-assembler.h -@@ -281,13 +281,11 @@ class NativeRegExpMacroAssembler: public RegExpMacroAssembler { - int* offsets_vector, int offsets_vector_length, - int previous_index, Isolate* isolate); - -- // Called from RegExp if the backtrack stack limit is hit. -- // Tries to expand the stack. Returns the new stack-pointer if -- // successful, and updates the stack_top address, or returns 0 if unable -- // to grow the stack. -+ // Called from RegExp if the backtrack stack limit is hit. Tries to expand -+ // the stack. Returns the new stack-pointer if successful, or returns 0 if -+ // unable to grow the stack. - // This function must not trigger a garbage collection. -- static Address GrowStack(Address stack_pointer, Address* stack_top, -- Isolate* isolate); -+ static Address GrowStack(Isolate* isolate); - - static int CheckStackGuardState(Isolate* isolate, int start_index, - RegExp::CallOrigin call_origin, -diff --git a/src/regexp/regexp-stack.cc b/src/regexp/regexp-stack.cc -index 6d73b7c03d63f9358f54453aba3c52ec5da29c3b..9c403eed089c890df0098875763da62bce15fd64 100644 ---- a/src/regexp/regexp-stack.cc -+++ b/src/regexp/regexp-stack.cc -@@ -11,23 +11,17 @@ namespace v8 { - namespace internal { - - RegExpStackScope::RegExpStackScope(Isolate* isolate) -- : regexp_stack_(isolate->regexp_stack()) { -+ : regexp_stack_(isolate->regexp_stack()), -+ old_sp_top_delta_(regexp_stack_->sp_top_delta()) { - DCHECK(regexp_stack_->IsValid()); -- // Irregexp is not reentrant in several ways; in particular, the -- // RegExpStackScope is not reentrant since the destructor frees allocated -- // memory. Protect against reentrancy here. -- CHECK(!regexp_stack_->is_in_use()); -- regexp_stack_->set_is_in_use(true); - } - -- - RegExpStackScope::~RegExpStackScope() { -- // Reset the buffer if it has grown. -- regexp_stack_->Reset(); -- DCHECK(!regexp_stack_->is_in_use()); -+ CHECK_EQ(old_sp_top_delta_, regexp_stack_->sp_top_delta()); -+ regexp_stack_->ResetIfEmpty(); - } - --RegExpStack::RegExpStack() : thread_local_(this), isolate_(nullptr) {} -+RegExpStack::RegExpStack() : thread_local_(this) {} - - RegExpStack::~RegExpStack() { thread_local_.FreeAndInvalidate(); } - -@@ -52,18 +46,16 @@ char* RegExpStack::RestoreStack(char* from) { - return from + kThreadLocalSize; - } - --void RegExpStack::Reset() { thread_local_.ResetToStaticStack(this); } -- - void RegExpStack::ThreadLocal::ResetToStaticStack(RegExpStack* regexp_stack) { - if (owns_memory_) DeleteArray(memory_); - - memory_ = regexp_stack->static_stack_; - memory_top_ = regexp_stack->static_stack_ + kStaticStackSize; - memory_size_ = kStaticStackSize; -+ stack_pointer_ = memory_top_; - limit_ = reinterpret_cast
(regexp_stack->static_stack_) + - kStackLimitSlack * kSystemPointerSize; - owns_memory_ = false; -- is_in_use_ = false; - } - - void RegExpStack::ThreadLocal::FreeAndInvalidate() { -@@ -74,6 +66,7 @@ void RegExpStack::ThreadLocal::FreeAndInvalidate() { - memory_ = nullptr; - memory_top_ = nullptr; - memory_size_ = 0; -+ stack_pointer_ = nullptr; - limit_ = kMemoryTop; - } - -@@ -88,9 +81,11 @@ Address RegExpStack::EnsureCapacity(size_t size) { - thread_local_.memory_, thread_local_.memory_size_); - if (thread_local_.owns_memory_) DeleteArray(thread_local_.memory_); - } -+ ptrdiff_t delta = sp_top_delta(); - thread_local_.memory_ = new_memory; - thread_local_.memory_top_ = new_memory + size; - thread_local_.memory_size_ = size; -+ thread_local_.stack_pointer_ = thread_local_.memory_top_ + delta; - thread_local_.limit_ = reinterpret_cast
(new_memory) + - kStackLimitSlack * kSystemPointerSize; - thread_local_.owns_memory_ = true; -diff --git a/src/regexp/regexp-stack.h b/src/regexp/regexp-stack.h -index adca683ff890c82d7cfdf9e10c7a5d7e78d2d650..d52ca3e1d079d8953a753e2db1e835f214b980f3 100644 ---- a/src/regexp/regexp-stack.h -+++ b/src/regexp/regexp-stack.h -@@ -16,10 +16,7 @@ class RegExpStack; - - // Maintains a per-v8thread stack area that can be used by irregexp - // implementation for its backtracking stack. --// Since there is only one stack area, the Irregexp implementation is not --// re-entrant. I.e., no regular expressions may be executed in the same thread --// during a preempted Irregexp execution. --class V8_NODISCARD RegExpStackScope { -+class V8_NODISCARD RegExpStackScope final { - public: - // Create and delete an instance to control the life-time of a growing stack. - -@@ -32,46 +29,45 @@ class V8_NODISCARD RegExpStackScope { - RegExpStack* stack() const { return regexp_stack_; } - - private: -- RegExpStack* regexp_stack_; -+ RegExpStack* const regexp_stack_; -+ const ptrdiff_t old_sp_top_delta_; - }; - --class RegExpStack { -+class RegExpStack final { - public: - RegExpStack(); - ~RegExpStack(); - RegExpStack(const RegExpStack&) = delete; - RegExpStack& operator=(const RegExpStack&) = delete; - -- // Number of allocated locations on the stack below the limit. -- // No sequence of pushes must be longer that this without doing a stack-limit -- // check. -+ // Number of allocated locations on the stack below the limit. No sequence of -+ // pushes must be longer than this without doing a stack-limit check. - static constexpr int kStackLimitSlack = 32; - -- // Gives the top of the memory used as stack. -- Address stack_base() { -+ Address memory_top() const { - DCHECK_NE(0, thread_local_.memory_size_); - DCHECK_EQ(thread_local_.memory_top_, - thread_local_.memory_ + thread_local_.memory_size_); - return reinterpret_cast
(thread_local_.memory_top_); - } - -- // The total size of the memory allocated for the stack. -- size_t stack_capacity() { return thread_local_.memory_size_; } -+ Address stack_pointer() const { -+ return reinterpret_cast
(thread_local_.stack_pointer_); -+ } -+ -+ size_t memory_size() const { return thread_local_.memory_size_; } - - // If the stack pointer gets below the limit, we should react and - // either grow the stack or report an out-of-stack exception. - // There is only a limited number of locations below the stack limit, - // so users of the stack should check the stack limit during any - // sequence of pushes longer that this. -- Address* limit_address_address() { return &(thread_local_.limit_); } -+ Address* limit_address_address() { return &thread_local_.limit_; } - - // Ensures that there is a memory area with at least the specified size. - // If passing zero, the default/minimum size buffer is allocated. - Address EnsureCapacity(size_t size); - -- bool is_in_use() const { return thread_local_.is_in_use_; } -- void set_is_in_use(bool v) { thread_local_.is_in_use_ = v; } -- - // Thread local archiving. - static constexpr int ArchiveSpacePerThread() { - return static_cast(kThreadLocalSize); -@@ -103,44 +99,59 @@ class RegExpStack { - - STATIC_ASSERT(kStaticStackSize <= kMaximumStackSize); - -- // Structure holding the allocated memory, size and limit. -+ // Structure holding the allocated memory, size and limit. Thread switching -+ // archives and restores this struct. - struct ThreadLocal { - explicit ThreadLocal(RegExpStack* regexp_stack) { - ResetToStaticStack(regexp_stack); - } - -- // If memory_size_ > 0 then memory_ and memory_top_ must be non-nullptr -- // and memory_top_ = memory_ + memory_size_ -+ // If memory_size_ > 0 then -+ // - memory_, memory_top_, stack_pointer_ must be non-nullptr -+ // - memory_top_ = memory_ + memory_size_ -+ // - memory_ <= stack_pointer_ <= memory_top_ - byte* memory_ = nullptr; - byte* memory_top_ = nullptr; - size_t memory_size_ = 0; -+ byte* stack_pointer_ = nullptr; - Address limit_ = kNullAddress; - bool owns_memory_ = false; // Whether memory_ is owned and must be freed. -- bool is_in_use_ = false; // To guard against reentrancy. - - void ResetToStaticStack(RegExpStack* regexp_stack); -+ void ResetToStaticStackIfEmpty(RegExpStack* regexp_stack) { -+ if (stack_pointer_ == memory_top_) ResetToStaticStack(regexp_stack); -+ } - void FreeAndInvalidate(); - }; - static constexpr size_t kThreadLocalSize = sizeof(ThreadLocal); - -- // Address of top of memory used as stack. - Address memory_top_address_address() { - return reinterpret_cast
(&thread_local_.memory_top_); - } - -- // Resets the buffer if it has grown beyond the default/minimum size. -- // After this, the buffer is either the default size, or it is empty, so -- // you have to call EnsureCapacity before using it again. -- void Reset(); -+ Address stack_pointer_address() { -+ return reinterpret_cast
(&thread_local_.stack_pointer_); -+ } -+ -+ // A position-independent representation of the stack pointer. -+ ptrdiff_t sp_top_delta() const { -+ ptrdiff_t result = -+ reinterpret_cast(thread_local_.stack_pointer_) - -+ reinterpret_cast(thread_local_.memory_top_); -+ DCHECK_LE(result, 0); -+ return result; -+ } -+ -+ // Resets the buffer if it has grown beyond the default/minimum size and is -+ // empty. -+ void ResetIfEmpty() { thread_local_.ResetToStaticStackIfEmpty(this); } - - // Whether the ThreadLocal storage has been invalidated. - bool IsValid() const { return thread_local_.memory_ != nullptr; } - - ThreadLocal thread_local_; -- Isolate* isolate_; - - friend class ExternalReference; -- friend class Isolate; - friend class RegExpStackScope; - }; - -diff --git a/src/regexp/x64/regexp-macro-assembler-x64.cc b/src/regexp/x64/regexp-macro-assembler-x64.cc -index 6f0cb53e8f52e4cad5997993b7fb00f2d8b8127a..abcbed18aaa9bdc4a497962714bffde74d581173 100644 ---- a/src/regexp/x64/regexp-macro-assembler-x64.cc -+++ b/src/regexp/x64/regexp-macro-assembler-x64.cc -@@ -6,13 +6,13 @@ - - #include "src/regexp/x64/regexp-macro-assembler-x64.h" - -+#include "src/codegen/code-desc.h" - #include "src/codegen/macro-assembler.h" - #include "src/heap/factory.h" - #include "src/logging/log.h" --#include "src/objects/objects-inl.h" -+#include "src/objects/code-inl.h" - #include "src/regexp/regexp-macro-assembler.h" - #include "src/regexp/regexp-stack.h" --#include "src/strings/unicode.h" - - namespace v8 { - namespace internal { -@@ -664,31 +664,64 @@ void RegExpMacroAssemblerX64::Fail() { - __ jmp(&exit_label_); - } - -+void RegExpMacroAssemblerX64::LoadRegExpStackPointerFromMemory(Register dst) { -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_stack_pointer(isolate()); -+ __ movq(dst, __ ExternalReferenceAsOperand(ref, dst)); -+} -+ -+void RegExpMacroAssemblerX64::StoreRegExpStackPointerToMemory( -+ Register src, Register scratch) { -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_stack_pointer(isolate()); -+ __ movq(__ ExternalReferenceAsOperand(ref, scratch), src); -+} -+ -+void RegExpMacroAssemblerX64::PushRegExpBasePointer(Register scratch1, -+ Register scratch2) { -+ LoadRegExpStackPointerFromMemory(scratch1); -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); -+ __ movq(scratch2, __ ExternalReferenceAsOperand(ref, scratch2)); -+ __ subq(scratch1, scratch2); -+ __ movq(Operand(rbp, kRegExpStackBasePointer), scratch1); -+} -+ -+void RegExpMacroAssemblerX64::PopRegExpBasePointer(Register scratch1, -+ Register scratch2) { -+ ExternalReference ref = -+ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); -+ __ movq(scratch1, Operand(rbp, kRegExpStackBasePointer)); -+ __ movq(scratch2, __ ExternalReferenceAsOperand(ref, scratch2)); -+ __ addq(scratch1, scratch2); -+ StoreRegExpStackPointerToMemory(scratch1, scratch2); -+} - - Handle RegExpMacroAssemblerX64::GetCode(Handle source) { - Label return_rax; -- // Finalize code - write the entry point code now we know how many -- // registers we need. -- // Entry code: -+ // Finalize code - write the entry point code now we know how many registers -+ // we need. - __ bind(&entry_label_); - -- // Tell the system that we have a stack frame. Because the type is MANUAL, no -- // is generated. -+ // Tell the system that we have a stack frame. Because the type is MANUAL, no -+ // physical frame is generated. - FrameScope scope(&masm_, StackFrame::MANUAL); - - // Actually emit code to start a new stack frame. - __ pushq(rbp); - __ movq(rbp, rsp); -+ - // Save parameters and callee-save registers. Order here should correspond - // to order of kBackup_ebx etc. - #ifdef V8_TARGET_OS_WIN - // MSVC passes arguments in rcx, rdx, r8, r9, with backing stack slots. -- // Store register parameters in pre-allocated stack slots, -- __ movq(Operand(rbp, kInputString), rcx); -- __ movq(Operand(rbp, kStartIndex), rdx); // Passed as int32 in edx. -- __ movq(Operand(rbp, kInputStart), r8); -- __ movq(Operand(rbp, kInputEnd), r9); -- // Callee-save on Win64. -+ // Store register parameters in pre-allocated stack slots. -+ __ movq(Operand(rbp, kInputString), arg_reg_1); -+ __ movq(Operand(rbp, kStartIndex), arg_reg_2); // Passed as int32 in edx. -+ __ movq(Operand(rbp, kInputStart), arg_reg_3); -+ __ movq(Operand(rbp, kInputEnd), arg_reg_4); -+ -+ STATIC_ASSERT(kNumCalleeSaveRegisters == 3); - __ pushq(rsi); - __ pushq(rdi); - __ pushq(rbx); -@@ -701,14 +734,15 @@ Handle RegExpMacroAssemblerX64::GetCode(Handle source) { - DCHECK_EQ(kInputEnd, -4 * kSystemPointerSize); - DCHECK_EQ(kRegisterOutput, -5 * kSystemPointerSize); - DCHECK_EQ(kNumOutputRegisters, -6 * kSystemPointerSize); -- __ pushq(rdi); -- __ pushq(rsi); -- __ pushq(rdx); -- __ pushq(rcx); -+ __ pushq(arg_reg_1); -+ __ pushq(arg_reg_2); -+ __ pushq(arg_reg_3); -+ __ pushq(arg_reg_4); - __ pushq(r8); - __ pushq(r9); - -- __ pushq(rbx); // Callee-save -+ STATIC_ASSERT(kNumCalleeSaveRegisters == 1); -+ __ pushq(rbx); - #endif - - STATIC_ASSERT(kSuccessfulCaptures == -@@ -719,6 +753,13 @@ Handle RegExpMacroAssemblerX64::GetCode(Handle source) { - __ Push(Immediate(0)); // Make room for "string start - 1" constant. - STATIC_ASSERT(kBacktrackCount == kStringStartMinusOne - kSystemPointerSize); - __ Push(Immediate(0)); // The backtrack counter. -+ STATIC_ASSERT(kRegExpStackBasePointer == -+ kBacktrackCount - kSystemPointerSize); -+ __ Push(Immediate(0)); // The regexp stack base ptr. -+ -+ // Store the regexp base pointer - we'll later restore it / write it to -+ // memory when returning from this irregexp code object. -+ PushRegExpBasePointer(rcx, kScratchRegister); - - // Check if we have space on the stack for registers. - Label stack_limit_hit; -@@ -808,7 +849,9 @@ Handle RegExpMacroAssemblerX64::GetCode(Handle source) { - } - - // Initialize backtrack stack pointer. -- __ movq(backtrack_stackpointer(), Operand(rbp, kStackHighEnd)); -+ // TODO(jgruber): Remove the kStackHighEnd parameter (and others like -+ // kIsolate). -+ LoadRegExpStackPointerFromMemory(backtrack_stackpointer()); - - __ jmp(&start_label_); - -@@ -894,19 +937,26 @@ Handle RegExpMacroAssemblerX64::GetCode(Handle source) { - } - - __ bind(&return_rax); -+ // Restore the original regexp stack pointer value (effectively, pop the -+ // stored base pointer). -+ PopRegExpBasePointer(rcx, kScratchRegister); -+ - #ifdef V8_TARGET_OS_WIN - // Restore callee save registers. - __ leaq(rsp, Operand(rbp, kLastCalleeSaveRegister)); -+ STATIC_ASSERT(kNumCalleeSaveRegisters == 3); - __ popq(rbx); - __ popq(rdi); - __ popq(rsi); - // Stack now at rbp. - #else - // Restore callee save register. -+ STATIC_ASSERT(kNumCalleeSaveRegisters == 1); - __ movq(rbx, Operand(rbp, kBackup_rbx)); - // Skip rsp to rbp. - __ movq(rsp, rbp); - #endif -+ - // Exit function frame, restore previous one. - __ popq(rbp); - __ ret(0); -@@ -923,9 +973,10 @@ Handle RegExpMacroAssemblerX64::GetCode(Handle source) { - if (check_preempt_label_.is_linked()) { - SafeCallTarget(&check_preempt_label_); - -- __ pushq(backtrack_stackpointer()); - __ pushq(rdi); - -+ StoreRegExpStackPointerToMemory(backtrack_stackpointer(), kScratchRegister); -+ - CallCheckStackGuardState(); - __ testq(rax, rax); - // If returning non-zero, we should end execution with the given -@@ -935,7 +986,9 @@ Handle RegExpMacroAssemblerX64::GetCode(Handle source) { - // Restore registers. - __ Move(code_object_pointer(), masm_.CodeObject()); - __ popq(rdi); -- __ popq(backtrack_stackpointer()); -+ -+ LoadRegExpStackPointerFromMemory(backtrack_stackpointer()); -+ - // String might have moved: Reload esi from frame. - __ movq(rsi, Operand(rbp, kInputEnd)); - SafeReturn(); -@@ -953,25 +1006,19 @@ Handle RegExpMacroAssemblerX64::GetCode(Handle source) { - __ pushq(rdi); - #endif - -- // Call GrowStack(backtrack_stackpointer()) -- static const int num_arguments = 3; -- __ PrepareCallCFunction(num_arguments); --#ifdef V8_TARGET_OS_WIN -- // Microsoft passes parameters in rcx, rdx, r8. -- // First argument, backtrack stackpointer, is already in rcx. -- __ leaq(rdx, Operand(rbp, kStackHighEnd)); // Second argument -- __ LoadAddress(r8, ExternalReference::isolate_address(isolate())); --#else -- // AMD64 ABI passes parameters in rdi, rsi, rdx. -- __ movq(rdi, backtrack_stackpointer()); // First argument. -- __ leaq(rsi, Operand(rbp, kStackHighEnd)); // Second argument. -- __ LoadAddress(rdx, ExternalReference::isolate_address(isolate())); --#endif -+ // Call GrowStack(isolate). -+ -+ StoreRegExpStackPointerToMemory(backtrack_stackpointer(), kScratchRegister); -+ -+ static constexpr int kNumArguments = 1; -+ __ PrepareCallCFunction(kNumArguments); -+ __ LoadAddress(arg_reg_1, ExternalReference::isolate_address(isolate())); -+ - ExternalReference grow_stack = - ExternalReference::re_grow_stack(isolate()); -- __ CallCFunction(grow_stack, num_arguments); -- // If return nullptr, we have failed to grow the stack, and -- // must exit with a stack-overflow exception. -+ __ CallCFunction(grow_stack, kNumArguments); -+ // If nullptr is returned, we have failed to grow the stack, and must exit -+ // with a stack-overflow exception. - __ testq(rax, rax); - __ j(equal, &exit_with_exception); - // Otherwise use return value as new stack pointer. -@@ -1085,13 +1132,25 @@ void RegExpMacroAssemblerX64::ReadPositionFromRegister(Register dst, int reg) { - __ movq(dst, register_location(reg)); - } - -+// Preserves a position-independent representation of the stack pointer in reg: -+// reg = top - sp. -+void RegExpMacroAssemblerX64::WriteStackPointerToRegister(int reg) { -+ ExternalReference stack_top_address = -+ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); -+ __ movq(rax, __ ExternalReferenceAsOperand(stack_top_address, rax)); -+ __ subq(rax, backtrack_stackpointer()); -+ __ movq(register_location(reg), rax); -+} - - void RegExpMacroAssemblerX64::ReadStackPointerFromRegister(int reg) { -- __ movq(backtrack_stackpointer(), register_location(reg)); -- __ addq(backtrack_stackpointer(), Operand(rbp, kStackHighEnd)); -+ ExternalReference stack_top_address = -+ ExternalReference::address_of_regexp_stack_memory_top_address(isolate()); -+ __ movq(backtrack_stackpointer(), -+ __ ExternalReferenceAsOperand(stack_top_address, -+ backtrack_stackpointer())); -+ __ subq(backtrack_stackpointer(), register_location(reg)); - } - -- - void RegExpMacroAssemblerX64::SetCurrentPositionFromEnd(int by) { - Label after_position; - __ cmpq(rdi, Immediate(-by * char_size())); -@@ -1136,14 +1195,6 @@ void RegExpMacroAssemblerX64::ClearRegisters(int reg_from, int reg_to) { - } - } - -- --void RegExpMacroAssemblerX64::WriteStackPointerToRegister(int reg) { -- __ movq(rax, backtrack_stackpointer()); -- __ subq(rax, Operand(rbp, kStackHighEnd)); -- __ movq(register_location(reg), rax); --} -- -- - // Private methods: - - void RegExpMacroAssemblerX64::CallCheckStackGuardState() { -diff --git a/src/regexp/x64/regexp-macro-assembler-x64.h b/src/regexp/x64/regexp-macro-assembler-x64.h -index c3a3cb90f2a9d865057af80801e2a95bbb873140..74a3c95b06c771078ab03e6787e5912315421bb2 100644 ---- a/src/regexp/x64/regexp-macro-assembler-x64.h -+++ b/src/regexp/x64/regexp-macro-assembler-x64.h -@@ -5,9 +5,7 @@ - #ifndef V8_REGEXP_X64_REGEXP_MACRO_ASSEMBLER_X64_H_ - #define V8_REGEXP_X64_REGEXP_MACRO_ASSEMBLER_X64_H_ - --#include "src/base/strings.h" - #include "src/codegen/macro-assembler.h" --#include "src/codegen/x64/assembler-x64.h" - #include "src/regexp/regexp-macro-assembler.h" - #include "src/zone/zone-chunk-list.h" - -@@ -133,18 +131,17 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerX64 - static const int kIsolate = kDirectCall + kSystemPointerSize; - #endif - -+ // We push callee-save registers that we use after the frame pointer (and -+ // after the parameters). - #ifdef V8_TARGET_OS_WIN -- // Microsoft calling convention has three callee-saved registers -- // (that we are using). We push these after the frame pointer. - static const int kBackup_rsi = kFramePointer - kSystemPointerSize; - static const int kBackup_rdi = kBackup_rsi - kSystemPointerSize; - static const int kBackup_rbx = kBackup_rdi - kSystemPointerSize; -+ static const int kNumCalleeSaveRegisters = 3; - static const int kLastCalleeSaveRegister = kBackup_rbx; - #else -- // AMD64 Calling Convention has only one callee-save register that -- // we use. We push this after the frame pointer (and after the -- // parameters). - static const int kBackup_rbx = kNumOutputRegisters - kSystemPointerSize; -+ static const int kNumCalleeSaveRegisters = 1; - static const int kLastCalleeSaveRegister = kBackup_rbx; - #endif - -@@ -155,9 +152,14 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerX64 - static const int kStringStartMinusOne = - kSuccessfulCaptures - kSystemPointerSize; - static const int kBacktrackCount = kStringStartMinusOne - kSystemPointerSize; -+ // Stores the initial value of the regexp stack pointer in a -+ // position-independent representation (in case the regexp stack grows and -+ // thus moves). -+ static const int kRegExpStackBasePointer = -+ kBacktrackCount - kSystemPointerSize; - - // First register address. Following registers are below it on the stack. -- static const int kRegisterZero = kBacktrackCount - kSystemPointerSize; -+ static const int kRegisterZero = kRegExpStackBasePointer - kSystemPointerSize; - - // Initial size of code buffer. - static const int kRegExpCodeSize = 1024; -@@ -175,14 +177,14 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerX64 - Operand register_location(int register_index); - - // The register containing the current character after LoadCurrentCharacter. -- inline Register current_character() { return rdx; } -+ static constexpr Register current_character() { return rdx; } - - // The register containing the backtrack stack top. Provides a meaningful - // name to the register. -- inline Register backtrack_stackpointer() { return rcx; } -+ static constexpr Register backtrack_stackpointer() { return rcx; } - - // The registers containing a self pointer to this code's Code object. -- inline Register code_object_pointer() { return r8; } -+ static constexpr Register code_object_pointer() { return r8; } - - // Byte size of chars in the string to match (decided by the Mode argument) - inline int char_size() { return static_cast(mode_); } -@@ -224,24 +226,36 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerX64 - // Increments the stack pointer (rcx) by a word size. - inline void Drop(); - -+ void LoadRegExpStackPointerFromMemory(Register dst); -+ void StoreRegExpStackPointerToMemory(Register src, Register scratch); -+ void PushRegExpBasePointer(Register scratch1, Register scratch2); -+ void PopRegExpBasePointer(Register scratch1, Register scratch2); -+ - inline void ReadPositionFromRegister(Register dst, int reg); - - Isolate* isolate() const { return masm_.isolate(); } - - MacroAssembler masm_; -- NoRootArrayScope no_root_array_scope_; -+ -+ // On x64, there is no reason to keep the kRootRegister uninitialized; we -+ // could easily use it by 1. initializing it and 2. storing/restoring it -+ // as callee-save on entry/exit. -+ // But: on other platforms, specifically ia32, it would be tricky to enable -+ // the kRootRegister since it's currently used for other purposes. Thus, for -+ // consistency, we also keep it uninitialized here. -+ const NoRootArrayScope no_root_array_scope_; - - ZoneChunkList code_relative_fixup_positions_; - - // Which mode to generate code for (LATIN1 or UC16). -- Mode mode_; -+ const Mode mode_; - - // One greater than maximal register index actually used. - int num_registers_; - - // Number of registers to output at the end (the saved registers - // are always 0..num_saved_registers_-1) -- int num_saved_registers_; -+ const int num_saved_registers_; - - // Labels used internally. - Label entry_label_; -diff --git a/test/cctest/cctest.status b/test/cctest/cctest.status -index e87644e89b7d87fb95917a58fef5f019d3ce7fc9..597ee4248bdd9e2dbb1ce05b322cd253dd403603 100644 ---- a/test/cctest/cctest.status -+++ b/test/cctest/cctest.status -@@ -136,9 +136,6 @@ - 'test-strings/Traverse': [PASS, HEAVY], - 'test-swiss-name-dictionary-csa/DeleteAtBoundaries': [PASS, HEAVY], - 'test-swiss-name-dictionary-csa/SameH2': [PASS, HEAVY], -- -- # TODO(v8:11382): Reenable once irregexp is reentrant. -- 'test-regexp/RegExpInterruptReentrantExecution': [FAIL], - }], # ALWAYS - - ############################################################################## diff --git a/patches/v8/regexp_remove_the_stack_parameter_from_regexp_matchers.patch b/patches/v8/regexp_remove_the_stack_parameter_from_regexp_matchers.patch deleted file mode 100644 index b3909a4f80..0000000000 --- a/patches/v8/regexp_remove_the_stack_parameter_from_regexp_matchers.patch +++ /dev/null @@ -1,397 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jakob Gruber -Date: Wed, 22 Sep 2021 14:42:48 +0200 -Subject: Remove the `stack` parameter from regexp matchers - -The argument is no longer in use. - -Bug: v8:11382 -Change-Id: I7febc7fe7ef17ae462c700f0dba3ca1beade3021 -Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3173681 -Commit-Queue: Jakob Gruber -Reviewed-by: Patrick Thier -Cr-Commit-Position: refs/heads/main@{#77017} - -diff --git a/src/builtins/builtins-regexp-gen.cc b/src/builtins/builtins-regexp-gen.cc -index 6e4307b404405c4c78614a956c64b4a86f5fe0fe..6c2d3b44a39a6bcce4e48ac621b21f54371e9b6f 100644 ---- a/src/builtins/builtins-regexp-gen.cc -+++ b/src/builtins/builtins-regexp-gen.cc -@@ -436,8 +436,6 @@ TNode RegExpBuiltinsAssembler::RegExpExecInternal( - // External constants. - TNode isolate_address = - ExternalConstant(ExternalReference::isolate_address(isolate())); -- TNode regexp_stack_memory_top_address = ExternalConstant( -- ExternalReference::address_of_regexp_stack_memory_top_address(isolate())); - TNode static_offsets_vector_address = ExternalConstant( - ExternalReference::address_of_static_offsets_vector(isolate())); - -@@ -606,26 +604,18 @@ TNode RegExpBuiltinsAssembler::RegExpExecInternal( - MachineType arg5_type = type_int32; - TNode arg5 = SmiToInt32(register_count); - -- // Argument 6: Start (high end) of backtracking stack memory area. This -- // argument is ignored in the interpreter. -- TNode stack_top = UncheckedCast( -- Load(MachineType::Pointer(), regexp_stack_memory_top_address)); -+ // Argument 6: Indicate that this is a direct call from JavaScript. -+ MachineType arg6_type = type_int32; -+ TNode arg6 = Int32Constant(RegExp::CallOrigin::kFromJs); - -- MachineType arg6_type = type_ptr; -- TNode arg6 = stack_top; -+ // Argument 7: Pass current isolate address. -+ MachineType arg7_type = type_ptr; -+ TNode arg7 = isolate_address; - -- // Argument 7: Indicate that this is a direct call from JavaScript. -- MachineType arg7_type = type_int32; -- TNode arg7 = Int32Constant(RegExp::CallOrigin::kFromJs); -- -- // Argument 8: Pass current isolate address. -- MachineType arg8_type = type_ptr; -- TNode arg8 = isolate_address; -- -- // Argument 9: Regular expression object. This argument is ignored in native -+ // Argument 8: Regular expression object. This argument is ignored in native - // irregexp code. -- MachineType arg9_type = type_tagged; -- TNode arg9 = regexp; -+ MachineType arg8_type = type_tagged; -+ TNode arg8 = regexp; - - // TODO(v8:11880): avoid roundtrips between cdc and code. - TNode code_entry = LoadCodeObjectEntry(code); -@@ -640,8 +630,7 @@ TNode RegExpBuiltinsAssembler::RegExpExecInternal( - std::make_pair(arg1_type, arg1), std::make_pair(arg2_type, arg2), - std::make_pair(arg3_type, arg3), std::make_pair(arg4_type, arg4), - std::make_pair(arg5_type, arg5), std::make_pair(arg6_type, arg6), -- std::make_pair(arg7_type, arg7), std::make_pair(arg8_type, arg8), -- std::make_pair(arg9_type, arg9))); -+ std::make_pair(arg7_type, arg7), std::make_pair(arg8_type, arg8))); - - // Check the result. - // We expect exactly one result since we force the called regexp to behave -diff --git a/src/regexp/arm/regexp-macro-assembler-arm.cc b/src/regexp/arm/regexp-macro-assembler-arm.cc -index 10766db4cf1d41ad0fee0754c6eaeebe46ace500..6e79ffd8adf8417c356bb36e1dbb2d0bfc290858 100644 ---- a/src/regexp/arm/regexp-macro-assembler-arm.cc -+++ b/src/regexp/arm/regexp-macro-assembler-arm.cc -@@ -38,14 +38,12 @@ namespace internal { - * Each call to a public method should retain this convention. - * - * The stack will have the following structure: -- * - fp[56] Address regexp (address of the JSRegExp object; unused in -+ * - fp[52] Address regexp (address of the JSRegExp object; unused in - * native code, passed to match signature of - * the interpreter) -- * - fp[52] Isolate* isolate (address of the current isolate) -- * - fp[48] direct_call (if 1, direct call from JavaScript code, -+ * - fp[48] Isolate* isolate (address of the current isolate) -+ * - fp[44] direct_call (if 1, direct call from JavaScript code, - * if 0, call through the runtime system). -- * - fp[44] stack_area_base (high end of the memory area to use as -- * backtracking stack). - * - fp[40] capture array size (may fit multiple sets of matches) - * - fp[36] int* capture_array (int[num_saved_registers_], for output). - * --- sp when called --- -@@ -82,7 +80,6 @@ namespace internal { - * Address end, - * int* capture_output_array, - * int num_capture_registers, -- * byte* stack_area_base, - * bool direct_call = false, - * Isolate* isolate, - * Address regexp); -diff --git a/src/regexp/arm/regexp-macro-assembler-arm.h b/src/regexp/arm/regexp-macro-assembler-arm.h -index a76f9dea70264d79d57ebd6c60b100bc9e0a499d..5aad6c1d85d574f4db307b6edcdda89ed25d5ca8 100644 ---- a/src/regexp/arm/regexp-macro-assembler-arm.h -+++ b/src/regexp/arm/regexp-macro-assembler-arm.h -@@ -91,15 +91,13 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerARM - static const int kFramePointer = 0; - - // Above the frame pointer - Stored registers and stack passed parameters. -- // Register 4..11. - static const int kStoredRegisters = kFramePointer; - // Return address (stored from link register, read into pc on return). - static const int kReturnAddress = kStoredRegisters + 8 * kPointerSize; - // Stack parameters placed by caller. - static const int kRegisterOutput = kReturnAddress + kPointerSize; - static const int kNumOutputRegisters = kRegisterOutput + kPointerSize; -- static const int kStackHighEnd = kNumOutputRegisters + kPointerSize; -- static const int kDirectCall = kStackHighEnd + kPointerSize; -+ static const int kDirectCall = kNumOutputRegisters + kPointerSize; - static const int kIsolate = kDirectCall + kPointerSize; - - // Below the frame pointer. -diff --git a/src/regexp/arm64/regexp-macro-assembler-arm64.cc b/src/regexp/arm64/regexp-macro-assembler-arm64.cc -index 6192461fa32879469d56d36fb788b5de33038d77..4611a323afacb5accfb3886581879e60eb1c9f12 100644 ---- a/src/regexp/arm64/regexp-macro-assembler-arm64.cc -+++ b/src/regexp/arm64/regexp-macro-assembler-arm64.cc -@@ -66,14 +66,12 @@ namespace internal { - * ^^^^^^^^^ fp ^^^^^^^^^ - * - fp[-8] direct_call 1 => Direct call from JavaScript code. - * 0 => Call through the runtime system. -- * - fp[-16] stack_base High end of the memory area to use as -- * the backtracking stack. -- * - fp[-24] output_size Output may fit multiple sets of matches. -- * - fp[-32] input Handle containing the input string. -- * - fp[-40] success_counter -+ * - fp[-16] output_size Output may fit multiple sets of matches. -+ * - fp[-24] input Handle containing the input string. -+ * - fp[-32] success_counter - * ^^^^^^^^^^^^^ From here and downwards we store 32 bit values ^^^^^^^^^^^^^ -- * - fp[-44] register N Capture registers initialized with -- * - fp[-48] register N + 1 non_position_value. -+ * - fp[-40] register N Capture registers initialized with -+ * - fp[-44] register N + 1 non_position_value. - * ... The first kNumCachedRegisters (N) registers - * ... are cached in x0 to x7. - * ... Only positions must be stored in the first -@@ -95,7 +93,6 @@ namespace internal { - * Address end, - * int* capture_output_array, - * int num_capture_registers, -- * byte* stack_area_base, - * bool direct_call = false, - * Isolate* isolate, - * Address regexp); -@@ -750,11 +747,10 @@ Handle RegExpMacroAssemblerARM64::GetCode(Handle source) { - // x3: byte* input_end - // x4: int* output array - // x5: int output array size -- // x6: Address stack_base -- // x7: int direct_call -- -- // sp[8]: address of the current isolate -- // sp[0]: secondary link/return address used by native call -+ // x6: int direct_call -+ // x7: Isolate* isolate -+ // -+ // sp[0]: secondary link/return address used by native call - - // Tell the system that we have a stack frame. Because the type is MANUAL, no - // code is generated. -diff --git a/src/regexp/arm64/regexp-macro-assembler-arm64.h b/src/regexp/arm64/regexp-macro-assembler-arm64.h -index 204ee68dc868142693e9959170c71df3f72f97ce..f3869a72b631f9fb42b275d2edd8f3cfe1cfd8bb 100644 ---- a/src/regexp/arm64/regexp-macro-assembler-arm64.h -+++ b/src/regexp/arm64/regexp-macro-assembler-arm64.h -@@ -102,16 +102,12 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerARM64 - // Callee-saved registers (x19-x28). - static const int kNumCalleeSavedRegisters = 10; - static const int kCalleeSavedRegisters = kReturnAddress + kSystemPointerSize; -- // Stack parameter placed by caller. -- // It is placed above the FP, LR and the callee-saved registers. -- static const int kIsolate = -- kCalleeSavedRegisters + kNumCalleeSavedRegisters * kSystemPointerSize; - - // Below the frame pointer. - // Register parameters stored by setup code. -- static const int kDirectCall = -kSystemPointerSize; -- static const int kStackHighEnd = kDirectCall - kSystemPointerSize; -- static const int kOutputSize = kStackHighEnd - kSystemPointerSize; -+ static const int kIsolate = -kSystemPointerSize; -+ static const int kDirectCall = kIsolate - kSystemPointerSize; -+ static const int kOutputSize = kDirectCall - kSystemPointerSize; - static const int kInput = kOutputSize - kSystemPointerSize; - // When adding local variables remember to push space for them in - // the frame in GetCode. -diff --git a/src/regexp/experimental/experimental.cc b/src/regexp/experimental/experimental.cc -index c05a010d06f34405128ffb9a9d67d86a20fcb83d..c3d701715aa88be3f5a8009319a09b032c85f4ad 100644 ---- a/src/regexp/experimental/experimental.cc -+++ b/src/regexp/experimental/experimental.cc -@@ -192,8 +192,7 @@ int32_t ExperimentalRegExp::ExecRaw(Isolate* isolate, - int32_t ExperimentalRegExp::MatchForCallFromJs( - Address subject, int32_t start_position, Address input_start, - Address input_end, int* output_registers, int32_t output_register_count, -- Address backtrack_stack, RegExp::CallOrigin call_origin, Isolate* isolate, -- Address regexp) { -+ RegExp::CallOrigin call_origin, Isolate* isolate, Address regexp) { - DCHECK(FLAG_enable_experimental_regexp_engine); - DCHECK_NOT_NULL(isolate); - DCHECK_NOT_NULL(output_registers); -diff --git a/src/regexp/experimental/experimental.h b/src/regexp/experimental/experimental.h -index 5987fb4d7732f47c5f31cc0fab7b11e252c864f8..cdc683e97e901bd3e63332a04f69c6d31f964931 100644 ---- a/src/regexp/experimental/experimental.h -+++ b/src/regexp/experimental/experimental.h -@@ -34,7 +34,6 @@ class ExperimentalRegExp final : public AllStatic { - Address input_start, Address input_end, - int* output_registers, - int32_t output_register_count, -- Address backtrack_stack, - RegExp::CallOrigin call_origin, - Isolate* isolate, Address regexp); - static MaybeHandle Exec( -diff --git a/src/regexp/ia32/regexp-macro-assembler-ia32.cc b/src/regexp/ia32/regexp-macro-assembler-ia32.cc -index 51d63b2531e2bc85fb115de23d7b6a6f40b36f11..8369b88e22c300890fe4ddb1bbba62093e8b23d8 100644 ---- a/src/regexp/ia32/regexp-macro-assembler-ia32.cc -+++ b/src/regexp/ia32/regexp-macro-assembler-ia32.cc -@@ -40,8 +40,6 @@ namespace internal { - * - Isolate* isolate (address of the current isolate) - * - direct_call (if 1, direct call from JavaScript code, if 0 - * call through the runtime system) -- * - stack_area_base (high end of the memory area to use as -- * backtracking stack) - * - capture array size (may fit multiple sets of matches) - * - int* capture_array (int[num_saved_registers_], for output). - * - end of input (address of end of string) -@@ -74,7 +72,6 @@ namespace internal { - * Address end, - * int* capture_output_array, - * int num_capture_registers, -- * byte* stack_area_base, - * bool direct_call = false, - * Isolate* isolate - * Address regexp); -diff --git a/src/regexp/ia32/regexp-macro-assembler-ia32.h b/src/regexp/ia32/regexp-macro-assembler-ia32.h -index 861795da900d91111386e4f8e660f7f94ea46a33..01914a6b8b5abb96a4eec8d844e2d1aea7cbf231 100644 ---- a/src/regexp/ia32/regexp-macro-assembler-ia32.h -+++ b/src/regexp/ia32/regexp-macro-assembler-ia32.h -@@ -105,8 +105,7 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerIA32 - // one set of capture results. For the case of non-global regexp, we ignore - // this value. - static const int kNumOutputRegisters = kRegisterOutput + kSystemPointerSize; -- static const int kStackHighEnd = kNumOutputRegisters + kSystemPointerSize; -- static const int kDirectCall = kStackHighEnd + kSystemPointerSize; -+ static const int kDirectCall = kNumOutputRegisters + kSystemPointerSize; - static const int kIsolate = kDirectCall + kSystemPointerSize; - // Below the frame pointer - local stack variables. - // When adding local variables remember to push space for them in -diff --git a/src/regexp/regexp-interpreter.cc b/src/regexp/regexp-interpreter.cc -index f9a959d2582a25cd60a97453e696f8f1f0560ce8..a2f23f78c308162240c5adf8904e732ce3bf6159 100644 ---- a/src/regexp/regexp-interpreter.cc -+++ b/src/regexp/regexp-interpreter.cc -@@ -1111,7 +1111,7 @@ IrregexpInterpreter::Result IrregexpInterpreter::MatchInternal( - // builtin. - IrregexpInterpreter::Result IrregexpInterpreter::MatchForCallFromJs( - Address subject, int32_t start_position, Address, Address, -- int* output_registers, int32_t output_register_count, Address, -+ int* output_registers, int32_t output_register_count, - RegExp::CallOrigin call_origin, Isolate* isolate, Address regexp) { - DCHECK_NOT_NULL(isolate); - DCHECK_NOT_NULL(output_registers); -diff --git a/src/regexp/regexp-interpreter.h b/src/regexp/regexp-interpreter.h -index a4d79184b08963598bbc42a91541c8df695bf4c5..e9dedd781b5b83d4017f8b2bd4353f1d57013a67 100644 ---- a/src/regexp/regexp-interpreter.h -+++ b/src/regexp/regexp-interpreter.h -@@ -36,9 +36,8 @@ class V8_EXPORT_PRIVATE IrregexpInterpreter : public AllStatic { - // RETRY is returned if a retry through the runtime is needed (e.g. when - // interrupts have been scheduled or the regexp is marked for tier-up). - // -- // Arguments input_start, input_end and backtrack_stack are -- // unused. They are only passed to match the signature of the native irregex -- // code. -+ // Arguments input_start and input_end are unused. They are only passed to -+ // match the signature of the native irregex code. - // - // Arguments output_registers and output_register_count describe the results - // array, which will contain register values of all captures if SUCCESS is -@@ -47,7 +46,6 @@ class V8_EXPORT_PRIVATE IrregexpInterpreter : public AllStatic { - Address input_start, Address input_end, - int* output_registers, - int32_t output_register_count, -- Address backtrack_stack, - RegExp::CallOrigin call_origin, - Isolate* isolate, Address regexp); - -diff --git a/src/regexp/regexp-macro-assembler.cc b/src/regexp/regexp-macro-assembler.cc -index 1f5875afb8850da4136da6633d5b0ad9f52803e3..ced89ad4386b9d037851529f098c8aa111f2a478 100644 ---- a/src/regexp/regexp-macro-assembler.cc -+++ b/src/regexp/regexp-macro-assembler.cc -@@ -306,23 +306,21 @@ int NativeRegExpMacroAssembler::Execute( - String input, // This needs to be the unpacked (sliced, cons) string. - int start_offset, const byte* input_start, const byte* input_end, - int* output, int output_size, Isolate* isolate, JSRegExp regexp) { -- // Ensure that the minimum stack has been allocated. - RegExpStackScope stack_scope(isolate); -- Address stack_base = stack_scope.stack()->memory_top(); - - bool is_one_byte = String::IsOneByteRepresentationUnderneath(input); - Code code = FromCodeT(CodeT::cast(regexp.Code(is_one_byte))); - RegExp::CallOrigin call_origin = RegExp::CallOrigin::kFromRuntime; - -- using RegexpMatcherSig = int( -- Address input_string, int start_offset, const byte* input_start, -- const byte* input_end, int* output, int output_size, Address stack_base, -- int call_origin, Isolate* isolate, Address regexp); -+ using RegexpMatcherSig = -+ // NOLINTNEXTLINE(readability/casting) -+ int(Address input_string, int start_offset, const byte* input_start, -+ const byte* input_end, int* output, int output_size, int call_origin, -+ Isolate* isolate, Address regexp); - - auto fn = GeneratedCode::FromCode(code); -- int result = -- fn.Call(input.ptr(), start_offset, input_start, input_end, output, -- output_size, stack_base, call_origin, isolate, regexp.ptr()); -+ int result = fn.Call(input.ptr(), start_offset, input_start, input_end, -+ output, output_size, call_origin, isolate, regexp.ptr()); - DCHECK_GE(result, SMALLEST_REGEXP_RESULT); - - if (result == EXCEPTION && !isolate->has_pending_exception()) { -diff --git a/src/regexp/x64/regexp-macro-assembler-x64.cc b/src/regexp/x64/regexp-macro-assembler-x64.cc -index abcbed18aaa9bdc4a497962714bffde74d581173..e4bff5dafa9f12c14805c72e51f973252b97a5a7 100644 ---- a/src/regexp/x64/regexp-macro-assembler-x64.cc -+++ b/src/regexp/x64/regexp-macro-assembler-x64.cc -@@ -47,14 +47,12 @@ namespace internal { - * Each call to a C++ method should retain these registers. - * - * The stack will have the following content, in some order, indexable from the -- * frame pointer (see, e.g., kStackHighEnd): -+ * frame pointer (see, e.g., kDirectCall): - * - Address regexp (address of the JSRegExp object; unused in native - * code, passed to match signature of interpreter) - * - Isolate* isolate (address of the current isolate) - * - direct_call (if 1, direct call from JavaScript code, if 0 call - * through the runtime system) -- * - stack_area_base (high end of the memory area to use as -- * backtracking stack) - * - capture array size (may fit multiple sets of matches) - * - int* capture_array (int[num_saved_registers_], for output). - * - end of input (address of end of string) -@@ -85,7 +83,6 @@ namespace internal { - * Address end, - * int* capture_output_array, - * int num_capture_registers, -- * byte* stack_area_base, - * bool direct_call = false, - * Isolate* isolate, - * Address regexp); -@@ -849,8 +846,6 @@ Handle RegExpMacroAssemblerX64::GetCode(Handle source) { - } - - // Initialize backtrack stack pointer. -- // TODO(jgruber): Remove the kStackHighEnd parameter (and others like -- // kIsolate). - LoadRegExpStackPointerFromMemory(backtrack_stackpointer()); - - __ jmp(&start_label_); -diff --git a/src/regexp/x64/regexp-macro-assembler-x64.h b/src/regexp/x64/regexp-macro-assembler-x64.h -index 74a3c95b06c771078ab03e6787e5912315421bb2..6f89ba9f8cf45430dc0edc7f2241a9aca34324c0 100644 ---- a/src/regexp/x64/regexp-macro-assembler-x64.h -+++ b/src/regexp/x64/regexp-macro-assembler-x64.h -@@ -108,9 +108,8 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerX64 - // this value. NumOutputRegisters is passed as 32-bit value. The upper - // 32 bit of this 64-bit stack slot may contain garbage. - static const int kNumOutputRegisters = kRegisterOutput + kSystemPointerSize; -- static const int kStackHighEnd = kNumOutputRegisters + kSystemPointerSize; - // DirectCall is passed as 32 bit int (values 0 or 1). -- static const int kDirectCall = kStackHighEnd + kSystemPointerSize; -+ static const int kDirectCall = kNumOutputRegisters + kSystemPointerSize; - static const int kIsolate = kDirectCall + kSystemPointerSize; - #else - // In AMD64 ABI Calling Convention, the first six integer parameters -@@ -121,13 +120,12 @@ class V8_EXPORT_PRIVATE RegExpMacroAssemblerX64 - static const int kInputStart = kStartIndex - kSystemPointerSize; - static const int kInputEnd = kInputStart - kSystemPointerSize; - static const int kRegisterOutput = kInputEnd - kSystemPointerSize; -- - // For the case of global regular expression, we have room to store at least - // one set of capture results. For the case of non-global regexp, we ignore - // this value. - static const int kNumOutputRegisters = kRegisterOutput - kSystemPointerSize; -- static const int kStackHighEnd = kFrameAlign; -- static const int kDirectCall = kStackHighEnd + kSystemPointerSize; -+ -+ static const int kDirectCall = kFrameAlign; - static const int kIsolate = kDirectCall + kSystemPointerSize; - #endif - diff --git a/shell/browser/api/electron_api_cookies.cc b/shell/browser/api/electron_api_cookies.cc index 631dbc1b93..f10fed7637 100644 --- a/shell/browser/api/electron_api_cookies.cc +++ b/shell/browser/api/electron_api_cookies.cc @@ -249,6 +249,7 @@ v8::Local Cookies::Get(v8::Isolate* isolate, options.set_do_not_update_access_time(); manager->GetCookieList(GURL(url), options, + net::CookiePartitionKeychain::Todo(), base::BindOnce(&FilterCookieWithStatuses, std::move(dict), std::move(promise))); } diff --git a/shell/browser/api/electron_api_desktop_capturer.h b/shell/browser/api/electron_api_desktop_capturer.h index bf71e3c25d..69bde77ad0 100644 --- a/shell/browser/api/electron_api_desktop_capturer.h +++ b/shell/browser/api/electron_api_desktop_capturer.h @@ -50,13 +50,12 @@ class DesktopCapturer : public gin::Wrappable, ~DesktopCapturer() override; // DesktopMediaListObserver: - void OnSourceAdded(DesktopMediaList* list, int index) override {} - void OnSourceRemoved(DesktopMediaList* list, int index) override {} - void OnSourceMoved(DesktopMediaList* list, - int old_index, - int new_index) override {} - void OnSourceNameChanged(DesktopMediaList* list, int index) override {} - void OnSourceThumbnailChanged(DesktopMediaList* list, int index) override {} + void OnSourceAdded(int index) override {} + void OnSourceRemoved(int index) override {} + void OnSourceMoved(int old_index, int new_index) override {} + void OnSourceNameChanged(int index) override {} + void OnSourceThumbnailChanged(int index) override {} + void OnSourcePreviewChanged(size_t index) override {} private: void UpdateSourcesList(DesktopMediaList* list); diff --git a/shell/browser/bluetooth/electron_bluetooth_delegate.cc b/shell/browser/bluetooth/electron_bluetooth_delegate.cc index 71c5759ae7..d25b4bd535 100644 --- a/shell/browser/bluetooth/electron_bluetooth_delegate.cc +++ b/shell/browser/bluetooth/electron_bluetooth_delegate.cc @@ -5,6 +5,7 @@ #include "shell/browser/bluetooth/electron_bluetooth_delegate.h" #include +#include #include "base/strings/utf_string_conversions.h" #include "build/build_config.h" @@ -46,6 +47,14 @@ ElectronBluetoothDelegate::ShowBluetoothScanningPrompt( return nullptr; } +void ElectronBluetoothDelegate::ShowDeviceCredentialsPrompt( + content::RenderFrameHost* frame, + const std::u16string& device_identifier, + CredentialsCallback callback) { + // TODO(jkleinsc) implement this + std::move(callback).Run(DeviceCredentialsPromptResult::kCancelled, u""); +} + WebBluetoothDeviceId ElectronBluetoothDelegate::GetWebBluetoothDeviceId( RenderFrameHost* frame, const std::string& device_address) { diff --git a/shell/browser/bluetooth/electron_bluetooth_delegate.h b/shell/browser/bluetooth/electron_bluetooth_delegate.h index 96a6103a16..e4e7619112 100644 --- a/shell/browser/bluetooth/electron_bluetooth_delegate.h +++ b/shell/browser/bluetooth/electron_bluetooth_delegate.h @@ -52,6 +52,9 @@ class ElectronBluetoothDelegate : public content::BluetoothDelegate { content::RenderFrameHost* frame, const content::BluetoothScanningPrompt::EventHandler& event_handler) override; + void ShowDeviceCredentialsPrompt(content::RenderFrameHost* frame, + const std::u16string& device_identifier, + CredentialsCallback callback) override; blink::WebBluetoothDeviceId GetWebBluetoothDeviceId( content::RenderFrameHost* frame, const std::string& device_address) override; diff --git a/shell/browser/child_web_contents_tracker.cc b/shell/browser/child_web_contents_tracker.cc index 9a6113481e..1bad245675 100644 --- a/shell/browser/child_web_contents_tracker.cc +++ b/shell/browser/child_web_contents_tracker.cc @@ -11,6 +11,6 @@ ChildWebContentsTracker::ChildWebContentsTracker( ChildWebContentsTracker::~ChildWebContentsTracker() = default; -WEB_CONTENTS_USER_DATA_KEY_IMPL(ChildWebContentsTracker) +WEB_CONTENTS_USER_DATA_KEY_IMPL(ChildWebContentsTracker); } // namespace electron diff --git a/shell/browser/electron_autofill_driver_factory.cc b/shell/browser/electron_autofill_driver_factory.cc index ee8168ba64..3c9e9a13f9 100644 --- a/shell/browser/electron_autofill_driver_factory.cc +++ b/shell/browser/electron_autofill_driver_factory.cc @@ -106,6 +106,6 @@ void AutofillDriverFactory::CloseAllPopups() { } } -WEB_CONTENTS_USER_DATA_KEY_IMPL(AutofillDriverFactory) +WEB_CONTENTS_USER_DATA_KEY_IMPL(AutofillDriverFactory); } // namespace electron diff --git a/shell/browser/electron_browser_client.cc b/shell/browser/electron_browser_client.cc index 980e53f1f2..34f674976b 100644 --- a/shell/browser/electron_browser_client.cc +++ b/shell/browser/electron_browser_client.cc @@ -998,6 +998,7 @@ bool ElectronBrowserClient::HandleExternalProtocol( int frame_tree_node_id, content::NavigationUIData* navigation_data, bool is_main_frame, + network::mojom::WebSandboxFlags sandbox_flags, ui::PageTransition page_transition, bool has_user_gesture, const absl::optional& initiating_origin, diff --git a/shell/browser/electron_browser_client.h b/shell/browser/electron_browser_client.h index d55cf968ff..616d1c814c 100644 --- a/shell/browser/electron_browser_client.h +++ b/shell/browser/electron_browser_client.h @@ -243,6 +243,7 @@ class ElectronBrowserClient : public content::ContentBrowserClient, int frame_tree_node_id, content::NavigationUIData* navigation_data, bool is_main_frame, + network::mojom::WebSandboxFlags sandbox_flags, ui::PageTransition page_transition, bool has_user_gesture, const absl::optional& initiating_origin, diff --git a/shell/browser/extensions/electron_extension_system.cc b/shell/browser/extensions/electron_extension_system.cc index f459c723fc..dd012e3dfe 100644 --- a/shell/browser/extensions/electron_extension_system.cc +++ b/shell/browser/extensions/electron_extension_system.cc @@ -31,7 +31,6 @@ #include "extensions/browser/notification_types.h" #include "extensions/browser/null_app_sorting.h" #include "extensions/browser/quota_service.h" -#include "extensions/browser/runtime_data.h" #include "extensions/browser/service_worker_manager.h" #include "extensions/browser/user_script_manager.h" #include "extensions/common/constants.h" @@ -96,8 +95,6 @@ void ElectronExtensionSystem::Shutdown() { void ElectronExtensionSystem::InitForRegularProfile(bool extensions_enabled) { service_worker_manager_ = std::make_unique(browser_context_); - runtime_data_ = - std::make_unique(ExtensionRegistry::Get(browser_context_)); quota_service_ = std::make_unique(); user_script_manager_ = std::make_unique(browser_context_); app_sorting_ = std::make_unique(); @@ -161,10 +158,6 @@ ExtensionService* ElectronExtensionSystem::extension_service() { return nullptr; } -RuntimeData* ElectronExtensionSystem::runtime_data() { - return runtime_data_.get(); -} - ManagementPolicy* ElectronExtensionSystem::management_policy() { return management_policy_.get(); } @@ -185,6 +178,10 @@ StateStore* ElectronExtensionSystem::rules_store() { return nullptr; } +StateStore* ElectronExtensionSystem::dynamic_user_scripts_store() { + return nullptr; +} + scoped_refptr ElectronExtensionSystem::store_factory() { return store_factory_; diff --git a/shell/browser/extensions/electron_extension_system.h b/shell/browser/extensions/electron_extension_system.h index 84468596d9..2963e6ac4a 100644 --- a/shell/browser/extensions/electron_extension_system.h +++ b/shell/browser/extensions/electron_extension_system.h @@ -59,12 +59,12 @@ class ElectronExtensionSystem : public ExtensionSystem { // ExtensionSystem implementation: void InitForRegularProfile(bool extensions_enabled) override; ExtensionService* extension_service() override; - RuntimeData* runtime_data() override; ManagementPolicy* management_policy() override; ServiceWorkerManager* service_worker_manager() override; UserScriptManager* user_script_manager() override; StateStore* state_store() override; StateStore* rules_store() override; + StateStore* dynamic_user_scripts_store() override; scoped_refptr store_factory() override; InfoMap* info_map() override; QuotaService* quota_service() override; @@ -102,7 +102,6 @@ class ElectronExtensionSystem : public ExtensionSystem { scoped_refptr info_map_; std::unique_ptr service_worker_manager_; - std::unique_ptr runtime_data_; std::unique_ptr quota_service_; std::unique_ptr user_script_manager_; std::unique_ptr app_sorting_; diff --git a/shell/browser/extensions/electron_extension_web_contents_observer.cc b/shell/browser/extensions/electron_extension_web_contents_observer.cc index edd811d571..ba03a9bbe0 100644 --- a/shell/browser/extensions/electron_extension_web_contents_observer.cc +++ b/shell/browser/extensions/electron_extension_web_contents_observer.cc @@ -22,6 +22,6 @@ void ElectronExtensionWebContentsObserver::CreateForWebContents( FromWebContents(web_contents)->Initialize(); } -WEB_CONTENTS_USER_DATA_KEY_IMPL(ElectronExtensionWebContentsObserver) +WEB_CONTENTS_USER_DATA_KEY_IMPL(ElectronExtensionWebContentsObserver); } // namespace extensions diff --git a/shell/browser/feature_list.cc b/shell/browser/feature_list.cc index 349d7acf54..0af770c30e 100644 --- a/shell/browser/feature_list.cc +++ b/shell/browser/feature_list.cc @@ -32,6 +32,12 @@ void InitializeFeatureList() { disable_features += std::string(",") + features::kSpareRendererForSitePerProcess.name; + // PlzServiceWorker breaks fetching service worker scripts for custom + // protocols or chrome-extension protocols due to a change in the URL loader + // used to fetch the script. + // TODO(MarshallOfSound): Re-enable and fix? + disable_features += std::string(",") + features::kPlzServiceWorker.name; + #if !BUILDFLAG(ENABLE_PICTURE_IN_PICTURE) disable_features += std::string(",") + media::kPictureInPicture.name; #endif diff --git a/shell/browser/native_window.cc b/shell/browser/native_window.cc index 61fab6ddd0..c851ff24b9 100644 --- a/shell/browser/native_window.cc +++ b/shell/browser/native_window.cc @@ -702,6 +702,6 @@ NativeWindowRelay::NativeWindowRelay(base::WeakPtr window) NativeWindowRelay::~NativeWindowRelay() = default; -WEB_CONTENTS_USER_DATA_KEY_IMPL(NativeWindowRelay) +WEB_CONTENTS_USER_DATA_KEY_IMPL(NativeWindowRelay); } // namespace electron diff --git a/shell/browser/osr/osr_render_widget_host_view.cc b/shell/browser/osr/osr_render_widget_host_view.cc index 2583c2bd88..6421d37789 100644 --- a/shell/browser/osr/osr_render_widget_host_view.cc +++ b/shell/browser/osr/osr_render_widget_host_view.cc @@ -189,15 +189,11 @@ OffScreenRenderWidgetHostView::OffScreenRenderWidgetHostView( DCHECK(render_widget_host_); DCHECK(!render_widget_host_->GetView()); - // Initialize a display struct as needed, to cache the scale factor. - if (display_list_.displays().empty()) { - display_list_ = display::DisplayList( - {display::Display(display::kDefaultDisplayId)}, - display::kDefaultDisplayId, display::kDefaultDisplayId); + // Initialize a screen_infos_ struct as needed, to cache the scale factor. + if (screen_infos_.screen_infos.empty()) { + UpdateScreenInfo(); } - display::Display current_display = display_list_.GetCurrentDisplay(); - current_display.set_device_scale_factor(kDefaultScaleFactor); - display_list_.UpdateDisplay(current_display); + screen_infos_.mutable_current().device_scale_factor = kDefaultScaleFactor; delegated_frame_host_allocator_.GenerateId(); delegated_frame_host_surface_id_ = @@ -996,15 +992,11 @@ void OffScreenRenderWidgetHostView::ResizeRootLayer(bool force) { float sf = GetCurrentDeviceScaleFactor(); const bool scaleFactorDidChange = scaleFactor != sf; - // Initialize a display struct as needed, to cache the scale factor. - if (display_list_.displays().empty()) { - display_list_ = display::DisplayList( - {display::Display(display::kDefaultDisplayId)}, - display::kDefaultDisplayId, display::kDefaultDisplayId); + // Initialize a screen_infos_ struct as needed, to cache the scale factor. + if (screen_infos_.screen_infos.empty()) { + UpdateScreenInfo(); } - display::Display current_display = display_list_.GetCurrentDisplay(); - current_display.set_device_scale_factor(scaleFactor); - display_list_.UpdateDisplay(current_display); + screen_infos_.mutable_current().device_scale_factor = scaleFactor; gfx::Size size; if (!IsPopupWidget()) diff --git a/shell/browser/printing/print_preview_message_handler.cc b/shell/browser/printing/print_preview_message_handler.cc index f0a4977ed1..010c66e56a 100644 --- a/shell/browser/printing/print_preview_message_handler.cc +++ b/shell/browser/printing/print_preview_message_handler.cc @@ -269,6 +269,6 @@ void PrintPreviewMessageHandler::RejectPromise(int request_id) { promise.RejectWithErrorMessage("Failed to generate PDF"); } -WEB_CONTENTS_USER_DATA_KEY_IMPL(PrintPreviewMessageHandler) +WEB_CONTENTS_USER_DATA_KEY_IMPL(PrintPreviewMessageHandler); } // namespace electron diff --git a/shell/browser/printing/print_view_manager_electron.cc b/shell/browser/printing/print_view_manager_electron.cc index 2578fbb844..932377e908 100644 --- a/shell/browser/printing/print_view_manager_electron.cc +++ b/shell/browser/printing/print_view_manager_electron.cc @@ -45,6 +45,6 @@ void PrintViewManagerElectron::CheckForCancel(int32_t preview_ui_id, CheckForCancelCallback callback) { } -WEB_CONTENTS_USER_DATA_KEY_IMPL(PrintViewManagerElectron) +WEB_CONTENTS_USER_DATA_KEY_IMPL(PrintViewManagerElectron); } // namespace electron diff --git a/shell/browser/ui/drag_util.cc b/shell/browser/ui/drag_util.cc index f90dba9193..603d05b146 100644 --- a/shell/browser/ui/drag_util.cc +++ b/shell/browser/ui/drag_util.cc @@ -6,7 +6,7 @@ #include -#include "ui/gfx/skia_util.h" +#include "ui/gfx/geometry/skia_conversions.h" namespace electron { diff --git a/shell/browser/ui/inspectable_web_contents.cc b/shell/browser/ui/inspectable_web_contents.cc index 7b7ca173ad..e7c64bf957 100644 --- a/shell/browser/ui/inspectable_web_contents.cc +++ b/shell/browser/ui/inspectable_web_contents.cc @@ -86,6 +86,13 @@ const char kChromeUIDevToolsRemoteFrontendPath[] = "serve_file"; const char kDevToolsBoundsPref[] = "electron.devtools.bounds"; const char kDevToolsZoomPref[] = "electron.devtools.zoom"; const char kDevToolsPreferences[] = "electron.devtools.preferences"; +const char kDevToolsSyncPreferences[] = "electron.devtools.sync_preferences"; +const char kDevToolsSyncedPreferencesSyncEnabled[] = + "electron.devtools.synced_preferences_sync_enabled"; +const char kDevToolsSyncedPreferencesSyncDisabled[] = + "electron.devtools.synced_preferences_sync_disabled"; +const char kSyncDevToolsPreferencesFrontendName[] = "electron.sync_preferences"; +const bool kSyncDevToolsPreferencesDefault = false; const char kFrontendHostId[] = "id"; const char kFrontendHostMethod[] = "method"; @@ -336,6 +343,10 @@ void InspectableWebContents::RegisterPrefs(PrefRegistrySimple* registry) { RectToDictionary(gfx::Rect(0, 0, 800, 600))); registry->RegisterDoublePref(kDevToolsZoomPref, 0.); registry->RegisterDictionaryPref(kDevToolsPreferences); + registry->RegisterDictionaryPref(kDevToolsSyncedPreferencesSyncEnabled); + registry->RegisterDictionaryPref(kDevToolsSyncedPreferencesSyncDisabled); + registry->RegisterBooleanPref(kDevToolsSyncPreferences, + kSyncDevToolsPreferencesDefault); } InspectableWebContents::InspectableWebContents( @@ -854,26 +865,93 @@ void InspectableWebContents::SendJsonRequest(DispatchCallback callback, std::move(callback).Run(nullptr); } +void InspectableWebContents::RegisterPreference( + const std::string& name, + const RegisterOptions& options) { + // kSyncDevToolsPreferenceFrontendName is not stored in any of the relevant + // dictionaries. Skip registration. + if (name == kSyncDevToolsPreferencesFrontendName) + return; + + if (options.sync_mode == RegisterOptions::SyncMode::kSync) { + synced_setting_names_.insert(name); + } + + // Setting might have had a different sync status in the past. Move the + // setting to the correct dictionary. + const char* dictionary_to_remove_from = + options.sync_mode == RegisterOptions::SyncMode::kSync + ? kDevToolsPreferences + : GetDictionaryNameForSyncedPrefs(); + const std::string* settings_value = + pref_service_->GetDictionary(dictionary_to_remove_from) + ->FindStringKey(name); + if (!settings_value) { + return; + } + + const char* dictionary_to_insert_into = + GetDictionaryNameForSettingsName(name); + // Settings already moved to the synced dictionary on a different device have + // precedence. + const std::string* already_synced_value = + pref_service_->GetDictionary(dictionary_to_insert_into) + ->FindStringKey(name); + if (dictionary_to_insert_into == kDevToolsPreferences || + !already_synced_value) { + DictionaryPrefUpdate insert_update(pref_service_, + dictionary_to_insert_into); + insert_update.Get()->SetKey(name, base::Value(*settings_value)); + } + + DictionaryPrefUpdate remove_update(pref_service_, dictionary_to_remove_from); + remove_update.Get()->RemoveKey(name); +} + void InspectableWebContents::GetPreferences(DispatchCallback callback) { - const base::DictionaryValue* prefs = - pref_service_->GetDictionary(kDevToolsPreferences); - std::move(callback).Run(prefs); + base::Value settings(base::Value::Type::DICTIONARY); + settings.SetBoolKey(kSyncDevToolsPreferencesFrontendName, + pref_service_->GetBoolean(kDevToolsSyncPreferences)); + settings.MergeDictionary(pref_service_->GetDictionary(kDevToolsPreferences)); + settings.MergeDictionary( + pref_service_->GetDictionary(GetDictionaryNameForSyncedPrefs())); + + std::move(callback).Run(&settings); } void InspectableWebContents::SetPreference(const std::string& name, const std::string& value) { - DictionaryPrefUpdate update(pref_service_, kDevToolsPreferences); + if (name == kSyncDevToolsPreferencesFrontendName) { + pref_service_->SetBoolean(kDevToolsSyncPreferences, value == "true"); + return; + } + DictionaryPrefUpdate update(pref_service_, + GetDictionaryNameForSettingsName(name)); update.Get()->SetKey(name, base::Value(value)); } void InspectableWebContents::RemovePreference(const std::string& name) { - DictionaryPrefUpdate update(pref_service_, kDevToolsPreferences); + if (name == kSyncDevToolsPreferencesFrontendName) { + pref_service_->SetBoolean(kDevToolsSyncPreferences, + kSyncDevToolsPreferencesDefault); + return; + } + DictionaryPrefUpdate update(pref_service_, + GetDictionaryNameForSettingsName(name)); update.Get()->RemoveKey(name); } void InspectableWebContents::ClearPreferences() { - DictionaryPrefUpdate update(pref_service_, kDevToolsPreferences); - update.Get()->Clear(); + pref_service_->SetBoolean(kDevToolsSyncPreferences, + kSyncDevToolsPreferencesDefault); + DictionaryPrefUpdate unsynced_update(pref_service_, kDevToolsPreferences); + unsynced_update.Get()->Clear(); + DictionaryPrefUpdate sync_enabled_update( + pref_service_, kDevToolsSyncedPreferencesSyncEnabled); + sync_enabled_update.Get()->Clear(); + DictionaryPrefUpdate sync_disabled_update( + pref_service_, kDevToolsSyncedPreferencesSyncDisabled); + sync_disabled_update.Get()->Clear(); } void InspectableWebContents::ConnectionReady() {} @@ -1055,4 +1133,18 @@ void InspectableWebContents::SendMessageAck(int request_id, CallClientFunction("DevToolsAPI.embedderMessageAck", &id_value, arg, nullptr); } +const char* InspectableWebContents::GetDictionaryNameForSettingsName( + const std::string& name) const { + return synced_setting_names_.contains(name) + ? kDevToolsSyncedPreferencesSyncEnabled + : kDevToolsPreferences; +} + +const char* InspectableWebContents::GetDictionaryNameForSyncedPrefs() const { + const bool isDevToolsSyncEnabled = + pref_service_->GetBoolean(kDevToolsSyncPreferences); + return isDevToolsSyncEnabled ? kDevToolsSyncedPreferencesSyncEnabled + : kDevToolsSyncedPreferencesSyncDisabled; +} + } // namespace electron diff --git a/shell/browser/ui/inspectable_web_contents.h b/shell/browser/ui/inspectable_web_contents.h index e908d4cb0d..3c9dfb2b33 100644 --- a/shell/browser/ui/inspectable_web_contents.h +++ b/shell/browser/ui/inspectable_web_contents.h @@ -18,6 +18,7 @@ #include "base/memory/weak_ptr.h" #include "chrome/browser/devtools/devtools_contents_resizing_strategy.h" #include "chrome/browser/devtools/devtools_embedder_message_dispatcher.h" +#include "chrome/browser/devtools/devtools_settings.h" #include "content/public/browser/devtools_agent_host.h" #include "content/public/browser/devtools_frontend_host.h" #include "content/public/browser/web_contents_delegate.h" @@ -27,6 +28,7 @@ class PrefService; class PrefRegistrySimple; +struct RegisterOptions; namespace electron { @@ -133,6 +135,8 @@ class InspectableWebContents void SendJsonRequest(DispatchCallback callback, const std::string& browser_id, const std::string& url) override; + void RegisterPreference(const std::string& name, + const RegisterOptions& options) override; void GetPreferences(DispatchCallback callback) override; void SetPreference(const std::string& name, const std::string& value) override; @@ -187,6 +191,9 @@ class InspectableWebContents void SendMessageAck(int request_id, const base::Value* arg1); + const char* GetDictionaryNameForSettingsName(const std::string& name) const; + const char* GetDictionaryNameForSyncedPrefs() const; + #if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS) void AddDevToolsExtensionsToClient(); #endif @@ -225,6 +232,11 @@ class InspectableWebContents using ExtensionsAPIs = std::map; ExtensionsAPIs extensions_api_; + // Contains the set of synced settings. + // The DevTools frontend *must* call `Register` for each setting prior to + // use, which guarantees that this set must not be persisted. + base::flat_set synced_setting_names_; + base::WeakPtrFactory weak_factory_{this}; DISALLOW_COPY_AND_ASSIGN(InspectableWebContents); diff --git a/shell/browser/ui/views/menu_bar.cc b/shell/browser/ui/views/menu_bar.cc index 74c6a6a436..6d2b471445 100644 --- a/shell/browser/ui/views/menu_bar.cc +++ b/shell/browser/ui/views/menu_bar.cc @@ -122,6 +122,11 @@ void MenuBar::OnWindowFocus() { SetAcceleratorVisibility(pane_has_focus()); } +void MenuBar::GetAccessibleNodeData(ui::AXNodeData* node_data) { + node_data->SetNameExplicitlyEmpty(); + node_data->role = ax::mojom::Role::kMenuBar; +} + bool MenuBar::AcceleratorPressed(const ui::Accelerator& accelerator) { // Treat pressing Alt the same as pressing Esc. const ui::Accelerator& translated = diff --git a/shell/browser/ui/views/menu_bar.h b/shell/browser/ui/views/menu_bar.h index 7bed3bf961..036a03a11c 100644 --- a/shell/browser/ui/views/menu_bar.h +++ b/shell/browser/ui/views/menu_bar.h @@ -65,6 +65,7 @@ class MenuBar : public views::AccessiblePaneView, // views::View: const char* GetClassName() const override; + void GetAccessibleNodeData(ui::AXNodeData* node_data) override; void ButtonPressed(int id, const ui::Event& event); diff --git a/shell/browser/web_contents_permission_helper.cc b/shell/browser/web_contents_permission_helper.cc index e7918dafe9..b3c7e8684d 100644 --- a/shell/browser/web_contents_permission_helper.cc +++ b/shell/browser/web_contents_permission_helper.cc @@ -235,6 +235,6 @@ void WebContentsPermissionHelper::GrantHIDDevicePermission( &device, render_frame_host); } -WEB_CONTENTS_USER_DATA_KEY_IMPL(WebContentsPermissionHelper) +WEB_CONTENTS_USER_DATA_KEY_IMPL(WebContentsPermissionHelper); } // namespace electron diff --git a/shell/browser/web_contents_preferences.cc b/shell/browser/web_contents_preferences.cc index 125f325341..6927be5b9b 100644 --- a/shell/browser/web_contents_preferences.cc +++ b/shell/browser/web_contents_preferences.cc @@ -513,6 +513,6 @@ void WebContentsPreferences::OverrideWebkitPrefs( prefs->v8_cache_options = v8_cache_options_; } -WEB_CONTENTS_USER_DATA_KEY_IMPL(WebContentsPreferences) +WEB_CONTENTS_USER_DATA_KEY_IMPL(WebContentsPreferences); } // namespace electron diff --git a/shell/browser/web_contents_zoom_controller.cc b/shell/browser/web_contents_zoom_controller.cc index 153457e28c..cfd4644d9c 100644 --- a/shell/browser/web_contents_zoom_controller.cc +++ b/shell/browser/web_contents_zoom_controller.cc @@ -280,6 +280,6 @@ void WebContentsZoomController::SetZoomFactorOnNavigationIfNeeded( SetZoomLevel(zoom_level); } -WEB_CONTENTS_USER_DATA_KEY_IMPL(WebContentsZoomController) +WEB_CONTENTS_USER_DATA_KEY_IMPL(WebContentsZoomController); } // namespace electron diff --git a/shell/common/api/electron_api_clipboard.cc b/shell/common/api/electron_api_clipboard.cc index 24d8afde42..9e6d8e7d9b 100644 --- a/shell/common/api/electron_api_clipboard.cc +++ b/shell/common/api/electron_api_clipboard.cc @@ -15,6 +15,7 @@ #include "third_party/skia/include/core/SkPixmap.h" #include "ui/base/clipboard/clipboard_format_type.h" #include "ui/base/clipboard/scoped_clipboard_writer.h" +#include "ui/gfx/codec/png_codec.h" namespace electron { @@ -198,12 +199,15 @@ void Clipboard::WriteBookmark(const std::u16string& title, gfx::Image Clipboard::ReadImage(gin_helper::Arguments* args) { ui::Clipboard* clipboard = ui::Clipboard::GetForCurrentThread(); absl::optional image; - clipboard->ReadImage( + clipboard->ReadPng( GetClipboardBuffer(args), /* data_dst = */ nullptr, base::BindOnce( - [](absl::optional* image, const SkBitmap& result) { - image->emplace(gfx::Image::CreateFrom1xBitmap(result)); + [](absl::optional* image, + const std::vector& result) { + SkBitmap bitmap; + gfx::PNGCodec::Decode(result.data(), result.size(), &bitmap); + image->emplace(gfx::Image::CreateFrom1xBitmap(bitmap)); }, &image)); DCHECK(image.has_value()); diff --git a/shell/common/gin_converters/net_converter.cc b/shell/common/gin_converters/net_converter.cc index d77678e023..53e74b2bd4 100644 --- a/shell/common/gin_converters/net_converter.cc +++ b/shell/common/gin_converters/net_converter.cc @@ -324,11 +324,9 @@ bool Converter>::FromV8( return false; dict->GetString("type", &type); if (type == "rawData") { - base::Value* bytes = nullptr; - dict->GetBinary("bytes", &bytes); - (*out)->AppendBytes( - reinterpret_cast(bytes->GetBlob().data()), - base::checked_cast(bytes->GetBlob().size())); + const base::Value::BlobStorage* bytes = dict->FindBlobKey("bytes"); + (*out)->AppendBytes(reinterpret_cast(bytes->data()), + base::checked_cast(bytes->size())); } else if (type == "file") { const std::string* file = dict->FindStringKey("filePath"); if (file == nullptr) { diff --git a/shell/renderer/renderer_client_base.cc b/shell/renderer/renderer_client_base.cc index 342e1daa3a..e0838f1eaf 100644 --- a/shell/renderer/renderer_client_base.cc +++ b/shell/renderer/renderer_client_base.cc @@ -71,7 +71,7 @@ #if BUILDFLAG(ENABLE_PRINTING) #include "components/printing/renderer/print_render_frame_helper.h" -#include "printing/print_settings.h" // nogncheck +#include "printing/metafile_agent.h" // nogncheck #include "shell/renderer/printing/print_render_frame_helper_delegate.h" #endif // BUILDFLAG(ENABLE_PRINTING)