diff --git a/BUILD.gn b/BUILD.gn index a01395a76..4f07bbe0f 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -1305,8 +1305,8 @@ make_pack_header("resources") { "$root_gen_dir/third_party/blink/public/resources/grit/blink_image_resources.h", "$root_gen_dir/third_party/blink/public/resources/grit/blink_resources.h", "$root_gen_dir/ui/resources/grit/ui_resources.h", - "$root_gen_dir/ui/resources/grit/webui_resources.h", "$root_gen_dir/ui/views/resources/grit/views_resources.h", + "$root_gen_dir/ui/webui/resources/grit/webui_resources.h", ] deps = [ @@ -1336,8 +1336,8 @@ make_pack_header("resources") { "//third_party/blink/public:image_resources", "//third_party/blink/public:resources", "//ui/resources:ui_resources_grd", - "//ui/resources:webui_resources_grd", "//ui/views/resources:resources_grd", + "//ui/webui/resources:resources_grit", ] } diff --git a/CHROMIUM_BUILD_COMPATIBILITY.txt b/CHROMIUM_BUILD_COMPATIBILITY.txt index 6a93d6224..2869e105b 100644 --- a/CHROMIUM_BUILD_COMPATIBILITY.txt +++ b/CHROMIUM_BUILD_COMPATIBILITY.txt @@ -7,5 +7,5 @@ # https://bitbucket.org/chromiumembedded/cef/wiki/BranchesAndBuilding { - 'chromium_checkout': 'refs/tags/133.0.6886.0' + 'chromium_checkout': 'refs/tags/133.0.6943.0' } diff --git a/cef_api_versions.json b/cef_api_versions.json index 24dbe1009..89d6b9e06 100644 --- a/cef_api_versions.json +++ b/cef_api_versions.json @@ -1,34 +1,41 @@ { "hashes": { "13300": { - "comment": "Added January 07, 2025.", - "linux": "f0b073047a026b83e911ba60aa1a83f036d31b0e", - "mac": "39c1f7df430aeaf39911147032b266416658c11d", - "universal": "dd40c0c97ba3f4a1f4ec53ff64d19fea30217d3d", - "windows": "4d97ebe2ed64b448b23625c6bd3943797ac3e137" + "comment": "Added January 08, 2025.", + "linux": "b28dd2bc398c54520f53918858d9859566133148", + "mac": "86f8d4989d208aac7dd3541bbc6ff88075616745", + "universal": "c14218e22e93d74f5027f1e0cbc86d6da98a0fac", + "windows": "da92cdf7a73d538aa6cfc4e29cf2a66934de01eb" }, "13301": { - "comment": "Added January 07, 2025.", - "linux": "41f72b80f8a2d00ea8301cda42d37b8fdf0240a5", - "mac": "e44f5eb6d634f3d4353f52ff383bf213f3894bbd", - "universal": "f7edff150ad480bc2f5cfc85fd6bfa23fbc4a73f", - "windows": "130d2eed0662c065a1cee3c782a6d855c63d67e8" + "comment": "Added January 08, 2025.", + "linux": "e53cef3578ebd6a94d94e0565259fb2a995d26f7", + "mac": "14e6580ffb351e088f12dda8c7b814ceb69da858", + "universal": "53b9b1a678dbf6b53e3c0c42baf2b35641872e82", + "windows": "b8391372b2fc5f79d6b1587c4ba25790f037c130" }, "13302": { - "comment": "Added January 07, 2025.", - "linux": "2ef9e3f071838f2d7705d144cf66e0f5ae69b32f", - "mac": "ec74fb1f9aff97f55882dbb35ba979934c8ab1a7", - "universal": "d9c1eedf985ddcd4e9df05f7664b111462d45626", - "windows": "f4d05b712907d8d64df80029d9e2e8edbee814ac" + "comment": "Added January 08, 2025.", + "linux": "9b659891361935e5b4bf8a6562826c86431bde12", + "mac": "00892ce55726d571257198e923f81dace7a9a699", + "universal": "960ead4be4a039fe627ae851e816e68795b638e8", + "windows": "328d094ce8bac0243ec1efe2fc3ba803d72b77f7" }, "13303": { - "comment": "Added January 07, 2025.", - "linux": "397ad962a3049dad4b36b356c8d108f78603de60", - "mac": "f7a5c733b8c3cd6fa3a284ce9b307566c6aa5860", - "universal": "91d5546d2b3f601ab2453f218a7bd69d2fd39b1b", - "windows": "b24722530b6b77bd1a633af5d72088225468eee2" + "comment": "Added January 08, 2025.", + "linux": "087718083cd2da67c62b6288a4fe7ba632d113b6", + "mac": "4120f6e2c9a995e1c9fca90c9ab2c400507042e7", + "universal": "53c66d866967adc7449e48bb8e51946058b57245", + "windows": "5a403169280dc4c2f95354c05295adbdbb211c36" + }, + "13304": { + "comment": "Added January 08, 2025.", + "linux": "01fa50f5adec33fd7e8ca6014a7ffcc61d400d16", + "mac": "3e8fe4fb648744f7463cc93cb2792a4257cf444b", + "universal": "add8483d49535805c27aa3e7411d6cd95f859d17", + "windows": "f9543142fec64abfb3b5b6229e1c482d7fc00d64" } }, - "last": "13303", + "last": "13304", "min": "13300" } \ No newline at end of file diff --git a/include/internal/cef_types.h b/include/internal/cef_types.h index f439b8e45..fd64f4c94 100644 --- a/include/internal/cef_types.h +++ b/include/internal/cef_types.h @@ -35,6 +35,7 @@ #include #include +#include "include/cef_api_hash.h" #include "include/internal/cef_string.h" #include "include/internal/cef_string_list.h" #include "include/internal/cef_time.h" @@ -3492,7 +3493,10 @@ typedef enum { CEF_CPAIT_LENS_OVERLAY, CEF_CPAIT_DISCOUNTS, CEF_CPAIT_OPTIMIZATION_GUIDE, - CEF_CPAIT_MAX_VALUE = CEF_CPAIT_OPTIMIZATION_GUIDE, +#if CEF_API_ADDED(13304) + CEF_CPAIT_COLLABORATION_MESSAGING, +#endif + CEF_CPAIT_LAST_VALUE, } cef_chrome_page_action_icon_type_t; /// diff --git a/libcef/browser/alloy/alloy_browser_host_impl.cc b/libcef/browser/alloy/alloy_browser_host_impl.cc index 920a29573..203ccfdb5 100644 --- a/libcef/browser/alloy/alloy_browser_host_impl.cc +++ b/libcef/browser/alloy/alloy_browser_host_impl.cc @@ -1276,7 +1276,8 @@ bool AlloyBrowserHostImpl::IsBackForwardCacheSupported( } content::PreloadingEligibility AlloyBrowserHostImpl::IsPrerender2Supported( - content::WebContents& web_contents) { + content::WebContents& web_contents, + content::PreloadingTriggerType trigger_type) { // Prerender is not supported in CEF. See issue #3664. return content::PreloadingEligibility::kPreloadingDisabled; } diff --git a/libcef/browser/alloy/alloy_browser_host_impl.h b/libcef/browser/alloy/alloy_browser_host_impl.h index dd24b4f3b..a26361dc4 100644 --- a/libcef/browser/alloy/alloy_browser_host_impl.h +++ b/libcef/browser/alloy/alloy_browser_host_impl.h @@ -272,7 +272,8 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase, void ExitPictureInPicture() override; bool IsBackForwardCacheSupported(content::WebContents& web_contents) override; content::PreloadingEligibility IsPrerender2Supported( - content::WebContents& web_contents) override; + content::WebContents& web_contents, + content::PreloadingTriggerType trigger_type) override; void DraggableRegionsChanged( const std::vector& regions, content::WebContents* contents) override; diff --git a/libcef/browser/browser_info_manager.cc b/libcef/browser/browser_info_manager.cc index 6cdffd768..03edb77d2 100644 --- a/libcef/browser/browser_info_manager.cc +++ b/libcef/browser/browser_info_manager.cc @@ -631,7 +631,9 @@ void CefBrowserInfoManager::RenderProcessHostDestroyed( host->RemoveObserver(this); - const int render_process_id = host->GetID(); + // TODO: Change to content::ChildProcessId usage once supported by + // GlobalRenderFrameHostToken. See https://crbug.com/379869738. + const int render_process_id = host->GetDeprecatedID(); DCHECK_GT(render_process_id, 0); // Remove all pending requests that reference the destroyed host. diff --git a/libcef/browser/browser_manager.cc b/libcef/browser/browser_manager.cc index 45e7f270b..84b4a1bb5 100644 --- a/libcef/browser/browser_manager.cc +++ b/libcef/browser/browser_manager.cc @@ -22,6 +22,8 @@ void CefBrowserManager::ExposeInterfacesToRenderer( service_manager::BinderRegistry* registry, blink::AssociatedInterfaceRegistry* associated_registry, content::RenderProcessHost* host) { + // TODO: Change to content::ChildProcessId usage once supported by + // GlobalRenderFrameHostToken. See https://crbug.com/379869738. registry->AddInterface(base::BindRepeating( [](int render_process_id, mojo::PendingReceiver receiver) { @@ -29,7 +31,7 @@ void CefBrowserManager::ExposeInterfacesToRenderer( std::make_unique(render_process_id), std::move(receiver)); }, - host->GetID())); + host->GetDeprecatedID())); } // static diff --git a/libcef/browser/chrome/chrome_browser_delegate.cc b/libcef/browser/chrome/chrome_browser_delegate.cc index 2b11d8cc5..d7b8b31e1 100644 --- a/libcef/browser/chrome/chrome_browser_delegate.cc +++ b/libcef/browser/chrome/chrome_browser_delegate.cc @@ -333,7 +333,7 @@ bool ChromeBrowserDelegate::IsAppMenuItemEnabled(int command_id) { bool ChromeBrowserDelegate::IsPageActionIconVisible( PageActionIconType icon_type) { // Verify that our enum matches Chromium's values. - static_assert(static_cast(CEF_CPAIT_MAX_VALUE) == + static_assert(static_cast(CEF_CPAIT_LAST_VALUE) - 1 == static_cast(PageActionIconType::kMaxValue), "enum mismatch"); diff --git a/libcef/browser/net_service/resource_request_handler_wrapper.cc b/libcef/browser/net_service/resource_request_handler_wrapper.cc index 895cf2c08..d6a6febac 100644 --- a/libcef/browser/net_service/resource_request_handler_wrapper.cc +++ b/libcef/browser/net_service/resource_request_handler_wrapper.cc @@ -1403,8 +1403,10 @@ std::unique_ptr CreateInterceptedRequestHandler( // Default to handlers for the same process in case |frame| doesn't have an // associated CefBrowserHost. - content::GlobalRenderFrameHostId global_id(frame->GetProcess()->GetID(), - MSG_ROUTING_NONE); + // TODO: Change to content::ChildProcessId usage once supported by + // GlobalRenderFrameHostId. See https://crbug.com/379869738. + content::GlobalRenderFrameHostId global_id( + frame->GetProcess()->GetDeprecatedID(), MSG_ROUTING_NONE); browserPtr = CefBrowserHostBase::GetBrowserForHost(frame); if (browserPtr) { diff --git a/libcef/browser/net_service/url_loader_factory_getter.cc b/libcef/browser/net_service/url_loader_factory_getter.cc index 4999abc52..05b827a5d 100644 --- a/libcef/browser/net_service/url_loader_factory_getter.cc +++ b/libcef/browser/net_service/url_loader_factory_getter.cc @@ -36,10 +36,12 @@ scoped_refptr URLLoaderFactoryGetter::Create( network::URLLoaderFactoryBuilder factory_builder; + // TODO: Change to content::ChildProcessId usage once supported by + // WillCreateURLLoaderFactory. See https://crbug.com/379869738. int render_process_id = -1; if (render_frame_host) { - render_process_id = render_frame_host->GetProcess()->GetID(); + render_process_id = render_frame_host->GetProcess()->GetDeprecatedID(); // Allow DevTools to potentially inject itself into the proxy pipe. content::devtools_instrumentation::WillCreateURLLoaderFactoryParams:: diff --git a/patch/patches/base_command_line_1872.patch b/patch/patches/base_command_line_1872.patch index a8e94c26d..b4cac13db 100644 --- a/patch/patches/base_command_line_1872.patch +++ b/patch/patches/base_command_line_1872.patch @@ -1,8 +1,8 @@ diff --git base/command_line.cc base/command_line.cc -index 3631cee09fa31..475a144c1bb5b 100644 +index 1f3627a128300..430b05e63b5c7 100644 --- base/command_line.cc +++ base/command_line.cc -@@ -389,11 +389,10 @@ void CommandLine::AppendSwitchNative(std::string_view switch_string, +@@ -396,11 +396,10 @@ void CommandLine::AppendSwitchNative(std::string_view switch_string, #if BUILDFLAG(ENABLE_COMMANDLINE_SEQUENCE_CHECKS) sequence_checker_.Check(); #endif diff --git a/patch/patches/base_sandbox_2743.patch b/patch/patches/base_sandbox_2743.patch index b3b506923..e3c6ce94d 100644 --- a/patch/patches/base_sandbox_2743.patch +++ b/patch/patches/base_sandbox_2743.patch @@ -1,5 +1,5 @@ diff --git base/BUILD.gn base/BUILD.gn -index 64189952b8b44..ef392991ed526 100644 +index 5d8029ab4b82c..7c31237709944 100644 --- base/BUILD.gn +++ base/BUILD.gn @@ -42,6 +42,7 @@ import("//build/rust/rust_static_library.gni") @@ -10,7 +10,7 @@ index 64189952b8b44..ef392991ed526 100644 import("//testing/libfuzzer/fuzzer_test.gni") import("//testing/test.gni") -@@ -1493,7 +1494,11 @@ component("base") { +@@ -1491,7 +1492,11 @@ component("base") { "hash/md5_constexpr_internal.h", "hash/sha1.h", ] @@ -23,7 +23,7 @@ index 64189952b8b44..ef392991ed526 100644 sources += [ "hash/md5_nacl.cc", "hash/md5_nacl.h", -@@ -1935,6 +1940,12 @@ component("base") { +@@ -1941,6 +1946,12 @@ component("base") { defines += [ "COM_INIT_CHECK_HOOK_DISABLED" ] } @@ -37,7 +37,7 @@ index 64189952b8b44..ef392991ed526 100644 "cfgmgr32.lib", "ntdll.lib", diff --git base/allocator/dispatcher/dispatcher.cc base/allocator/dispatcher/dispatcher.cc -index 3dd632a89dc90..a64cd61ddb02b 100644 +index f680f63cffc5b..9cb615bbc8a5a 100644 --- base/allocator/dispatcher/dispatcher.cc +++ base/allocator/dispatcher/dispatcher.cc @@ -8,6 +8,7 @@ @@ -177,7 +177,7 @@ index af1d4f46d02c9..953585804c177 100644 #else return base::FeatureList::IsEnabled(base::features::kUseRustJsonParser); diff --git base/logging.cc base/logging.cc -index 59826a95b518e..d6728112294fd 100644 +index b67b6fbf7e4e5..fc23ed1b4477d 100644 --- base/logging.cc +++ base/logging.cc @@ -60,6 +60,7 @@ @@ -188,7 +188,7 @@ index 59826a95b518e..d6728112294fd 100644 #include "third_party/abseil-cpp/absl/base/internal/raw_logging.h" #include "third_party/abseil-cpp/absl/cleanup/cleanup.h" -@@ -526,7 +527,7 @@ bool BaseInitLoggingImpl(const LoggingSettings& settings) { +@@ -538,7 +539,7 @@ bool BaseInitLoggingImpl(const LoggingSettings& settings) { } #endif @@ -244,10 +244,10 @@ index b198a7198aab9..01bc8e9b6ad1f 100644 public: using result_type = uint64_t; diff --git base/rand_util_win.cc base/rand_util_win.cc -index 9c2ae8389bfb2..e639a4d85b3dd 100644 +index 0b772cbae8916..b19183b34d176 100644 --- base/rand_util_win.cc +++ base/rand_util_win.cc -@@ -20,7 +20,11 @@ +@@ -15,7 +15,11 @@ #include "base/check.h" #include "base/feature_list.h" @@ -259,7 +259,7 @@ index 9c2ae8389bfb2..e639a4d85b3dd 100644 // Prototype for ProcessPrng. // See: https://learn.microsoft.com/en-us/windows/win32/seccng/processprng -@@ -32,6 +36,7 @@ namespace base { +@@ -27,6 +31,7 @@ namespace base { namespace internal { @@ -267,7 +267,7 @@ index 9c2ae8389bfb2..e639a4d85b3dd 100644 namespace { // The BoringSSl helpers are duplicated in rand_util_fuchsia.cc and -@@ -53,6 +58,10 @@ bool UseBoringSSLForRandBytes() { +@@ -48,6 +53,10 @@ bool UseBoringSSLForRandBytes() { return g_use_boringssl.load(std::memory_order_relaxed); } @@ -278,7 +278,7 @@ index 9c2ae8389bfb2..e639a4d85b3dd 100644 } // namespace internal namespace { -@@ -70,11 +79,13 @@ decltype(&ProcessPrng) GetProcessPrng() { +@@ -65,11 +74,13 @@ decltype(&ProcessPrng) GetProcessPrng() { } void RandBytesInternal(span output, bool avoid_allocation) { @@ -317,7 +317,7 @@ index ea33ca66f384c..33f4cc76f76bd 100644 return lhs.token_ == rhs.token_; #else diff --git base/win/sid.cc base/win/sid.cc -index 2f250ba9bf79d..0af427e779266 100644 +index 6b5d9b1e494b7..538c98d6676ad 100644 --- base/win/sid.cc +++ base/win/sid.cc @@ -29,12 +29,56 @@ diff --git a/patch/patches/base_test_4396276.patch b/patch/patches/base_test_4396276.patch index 9579c0161..e0f36f904 100644 --- a/patch/patches/base_test_4396276.patch +++ b/patch/patches/base_test_4396276.patch @@ -1,5 +1,5 @@ diff --git base/test/BUILD.gn base/test/BUILD.gn -index ddf58b1d496e0..8a6c409b452f3 100644 +index 37a7e20c415f7..5eef10ee45573 100644 --- base/test/BUILD.gn +++ base/test/BUILD.gn @@ -210,11 +210,6 @@ static_library("test_support") { @@ -88,10 +88,10 @@ index f5191b804bc07..aadb7d66ba4c3 100644 + #endif // BASE_TEST_TEST_TRACE_PROCESSOR_EXPORT_H_ diff --git content/shell/BUILD.gn content/shell/BUILD.gn -index 16f1d673591f4..4d485a4f6fd24 100644 +index ce28d886a26d2..3d044d223fac5 100644 --- content/shell/BUILD.gn +++ content/shell/BUILD.gn -@@ -916,7 +916,6 @@ if (is_mac) { +@@ -909,7 +909,6 @@ if (is_mac) { # Specify a sensible install_name for static builds. The library is # dlopen()ed so this is not used to resolve the module. ldflags = [ "-Wl,-install_name,@executable_path/../Frameworks/$output_name.framework/$output_name" ] diff --git a/patch/patches/base_thread_pool_5548577.patch b/patch/patches/base_thread_pool_5548577.patch index 04594cbf1..10d66461a 100644 --- a/patch/patches/base_thread_pool_5548577.patch +++ b/patch/patches/base_thread_pool_5548577.patch @@ -1,8 +1,8 @@ diff --git base/task/thread_pool/thread_pool_impl.cc base/task/thread_pool/thread_pool_impl.cc -index 64c0f50323144..cc9a4b840bafa 100644 +index 44872d0f8c7c4..a374b12919609 100644 --- base/task/thread_pool/thread_pool_impl.cc +++ base/task/thread_pool/thread_pool_impl.cc -@@ -104,6 +104,10 @@ ThreadPoolImpl::ThreadPoolImpl(std::string_view histogram_label, +@@ -103,6 +103,10 @@ ThreadPoolImpl::ThreadPoolImpl(std::string_view histogram_label, : kForegroundPoolEnvironmentParams.thread_type_hint, task_tracker_->GetTrackedRef(), tracked_ref_factory_.GetTrackedRef()); } diff --git a/patch/patches/browser_scheduler.patch b/patch/patches/browser_scheduler.patch index edc8aa3bf..e745c254f 100644 --- a/patch/patches/browser_scheduler.patch +++ b/patch/patches/browser_scheduler.patch @@ -1,8 +1,8 @@ diff --git content/browser/scheduler/browser_task_executor.cc content/browser/scheduler/browser_task_executor.cc -index 0cc947d5ba1c6..4cb8ee3b1544b 100644 +index aecccefd0dfa1..72c287317da0c 100644 --- content/browser/scheduler/browser_task_executor.cc +++ content/browser/scheduler/browser_task_executor.cc -@@ -208,7 +208,7 @@ BrowserTaskExecutor::OnUserInputStart() { +@@ -207,7 +207,7 @@ BrowserTaskExecutor::OnUserInputStart() { // static void BrowserTaskExecutor::Shutdown() { diff --git a/patch/patches/browser_security_policy_1081397.patch b/patch/patches/browser_security_policy_1081397.patch index bdf90a0bb..25a441c79 100644 --- a/patch/patches/browser_security_policy_1081397.patch +++ b/patch/patches/browser_security_policy_1081397.patch @@ -1,5 +1,5 @@ diff --git content/browser/child_process_security_policy_impl.cc content/browser/child_process_security_policy_impl.cc -index d4d1572304587..35fa3abc12213 100644 +index 01dab0910e066..4c6d6faae8ce9 100644 --- content/browser/child_process_security_policy_impl.cc +++ content/browser/child_process_security_policy_impl.cc @@ -2134,6 +2134,16 @@ bool ChildProcessSecurityPolicyImpl::PerformJailAndCitadelChecks( @@ -20,10 +20,10 @@ index d4d1572304587..35fa3abc12213 100644 // Make an exception to allow most visited tiles to commit in third-party diff --git content/browser/renderer_host/navigation_request.cc content/browser/renderer_host/navigation_request.cc -index e919dcd7acf87..93fc464c57ca5 100644 +index 5a95c24b9acc5..b8e93ae3b5881 100644 --- content/browser/renderer_host/navigation_request.cc +++ content/browser/renderer_host/navigation_request.cc -@@ -8278,10 +8278,22 @@ NavigationRequest::GetOriginForURLLoaderFactoryBeforeResponseWithDebugInfo( +@@ -8243,10 +8243,22 @@ NavigationRequest::GetOriginForURLLoaderFactoryBeforeResponseWithDebugInfo( bool use_opaque_origin = (sandbox_flags & network::mojom::WebSandboxFlags::kOrigin) == network::mojom::WebSandboxFlags::kOrigin; @@ -47,7 +47,7 @@ index e919dcd7acf87..93fc464c57ca5 100644 } return origin_and_debug_info; -@@ -8389,11 +8401,20 @@ NavigationRequest::GetOriginForURLLoaderFactoryAfterResponseWithDebugInfo() { +@@ -8354,11 +8366,20 @@ NavigationRequest::GetOriginForURLLoaderFactoryAfterResponseWithDebugInfo() { DetermineInitiatorRelationship(initiator_rfh, frame_tree_node_->current_frame_host())); diff --git a/patch/patches/build.patch b/patch/patches/build.patch index 10ddf4511..ce6fa6478 100644 --- a/patch/patches/build.patch +++ b/patch/patches/build.patch @@ -1,5 +1,5 @@ diff --git build/config/compiler/BUILD.gn build/config/compiler/BUILD.gn -index 9c9f616b2a4e1..448cc18a076ac 100644 +index 88109264ea962..6f7255b07f159 100644 --- build/config/compiler/BUILD.gn +++ build/config/compiler/BUILD.gn @@ -132,6 +132,9 @@ declare_args() { @@ -12,7 +12,7 @@ index 9c9f616b2a4e1..448cc18a076ac 100644 # Initialize all local variables with a pattern. This flag will fill # uninitialized floating-point types (and 32-bit pointers) with 0xFF and the # rest with 0xAA. This makes behavior of uninitialized memory bugs consistent, -@@ -2303,6 +2306,7 @@ config("export_dynamic") { +@@ -2315,6 +2318,7 @@ config("export_dynamic") { # 2. Remove the thin_archive config, so that the .a file actually contains all # .o files, instead of just references to .o files in the build directoy config("thin_archive") { @@ -20,7 +20,7 @@ index 9c9f616b2a4e1..448cc18a076ac 100644 if ((is_apple && use_lld) || (is_linux && !is_clang)) { # The macOS and iOS linker ld64.ldd doesn't support thin archive without # symbol table, gcc on linux also throws the error `archive has no index`. -@@ -2320,6 +2324,7 @@ config("thin_archive") { +@@ -2332,6 +2336,7 @@ config("thin_archive") { } else if (is_win && use_lld) { arflags = [ "/llvmlibthin" ] } diff --git a/patch/patches/chrome_browser.patch b/patch/patches/chrome_browser.patch index 2201a2774..ebef22f66 100644 --- a/patch/patches/chrome_browser.patch +++ b/patch/patches/chrome_browser.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/BUILD.gn chrome/browser/BUILD.gn -index 5d5e14b0d8053..1f8101d8269e9 100644 +index 968f2f959882a..96c32bd78f9b0 100644 --- chrome/browser/BUILD.gn +++ chrome/browser/BUILD.gn @@ -12,6 +12,7 @@ import("//build/config/compiler/pgo/pgo.gni") @@ -10,7 +10,7 @@ index 5d5e14b0d8053..1f8101d8269e9 100644 import("//chrome/browser/buildflags.gni") import("//chrome/browser/downgrade/buildflags.gni") import("//chrome/browser/request_header_integrity/buildflags.gni") -@@ -1841,6 +1842,7 @@ static_library("browser") { +@@ -1811,6 +1812,7 @@ static_library("browser") { "//build/config/compiler:compiler_buildflags", "//build/config/linux/dbus:buildflags", "//cc", @@ -18,7 +18,7 @@ index 5d5e14b0d8053..1f8101d8269e9 100644 "//chrome:extra_resources", "//chrome:resources", "//chrome:strings", -@@ -2520,6 +2522,10 @@ static_library("browser") { +@@ -2496,6 +2498,10 @@ static_library("browser") { sources += [ "net/net_error_diagnostics_dialog_stub.cc" ] } diff --git a/patch/patches/chrome_browser_browser.patch b/patch/patches/chrome_browser_browser.patch index d0cdb8925..66f186c7c 100644 --- a/patch/patches/chrome_browser_browser.patch +++ b/patch/patches/chrome_browser_browser.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/browser_about_handler.cc chrome/browser/browser_about_handler.cc -index 2480282a19d12..dbd1fbf8a15b5 100644 +index 7603c2662b8dc..9a38d816bdc40 100644 --- chrome/browser/browser_about_handler.cc +++ chrome/browser/browser_about_handler.cc -@@ -72,6 +72,9 @@ bool HandleNonNavigationAboutURL(const GURL& url) { +@@ -69,6 +69,9 @@ bool HandleNonNavigationAboutURL(const GURL& url) { FROM_HERE, base::BindOnce(&chrome::AttemptExit)); return true; } @@ -13,7 +13,7 @@ index 2480282a19d12..dbd1fbf8a15b5 100644 return false; } diff --git chrome/browser/devtools/devtools_window.cc chrome/browser/devtools/devtools_window.cc -index 4aaba212926f4..e8aadb2c97fe9 100644 +index 964c47b090cb1..1917dc314c3ae 100644 --- chrome/browser/devtools/devtools_window.cc +++ chrome/browser/devtools/devtools_window.cc @@ -38,6 +38,7 @@ @@ -24,7 +24,7 @@ index 4aaba212926f4..e8aadb2c97fe9 100644 #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/browser_tabstrip.h" #include "chrome/browser/ui/browser_window.h" -@@ -1221,6 +1222,13 @@ DevToolsWindow* DevToolsWindow::Create( +@@ -1220,6 +1221,13 @@ DevToolsWindow* DevToolsWindow::Create( !browser->is_type_normal()) { can_dock = false; } @@ -38,7 +38,7 @@ index 4aaba212926f4..e8aadb2c97fe9 100644 } // Create WebContents with devtools. -@@ -1680,9 +1688,13 @@ void DevToolsWindow::OpenInNewTab(const GURL& url) { +@@ -1679,9 +1687,13 @@ void DevToolsWindow::OpenInNewTab(const GURL& url) { if (!inspected_web_contents || !inspected_web_contents->OpenURL(params, /*navigation_handle_callback=*/{})) { @@ -52,7 +52,7 @@ index 4aaba212926f4..e8aadb2c97fe9 100644 } } -@@ -1845,12 +1857,28 @@ void DevToolsWindow::CreateDevToolsBrowser() { +@@ -1844,12 +1856,28 @@ void DevToolsWindow::CreateDevToolsBrowser() { Browser::CreationStatus::kOk) { return; } @@ -88,7 +88,7 @@ index 4aaba212926f4..e8aadb2c97fe9 100644 } diff --git chrome/browser/ui/BUILD.gn chrome/browser/ui/BUILD.gn -index 977b3222c8f7c..e5d36a4e5921e 100644 +index c8b65faa2d65b..687f4cff4ea64 100644 --- chrome/browser/ui/BUILD.gn +++ chrome/browser/ui/BUILD.gn @@ -8,6 +8,7 @@ import("//build/config/compiler/compiler.gni") @@ -99,7 +99,7 @@ index 977b3222c8f7c..e5d36a4e5921e 100644 import("//chrome/browser/buildflags.gni") import("//chrome/common/features.gni") import("//chromeos/ash/components/assistant/assistant.gni") -@@ -303,6 +304,10 @@ static_library("ui") { +@@ -301,6 +302,10 @@ static_library("ui") { "//build/config/compiler:wexit_time_destructors", ] @@ -110,7 +110,7 @@ index 977b3222c8f7c..e5d36a4e5921e 100644 public_deps = [ # WARNING WARNING WARNING # New dependencies outside of //chrome/browser should be added to -@@ -331,6 +336,7 @@ static_library("ui") { +@@ -329,6 +334,7 @@ static_library("ui") { "//build/config/chromebox_for_meetings:buildflags", "//build/config/linux/dbus:buildflags", "//cc/paint", @@ -118,7 +118,7 @@ index 977b3222c8f7c..e5d36a4e5921e 100644 "//chrome:resources", "//chrome:strings", "//chrome/app:chrome_dll_resources", -@@ -699,6 +705,13 @@ static_library("ui") { +@@ -696,6 +702,13 @@ static_library("ui") { deps += [ "//components/plus_addresses/resources:vector_icons" ] } @@ -132,7 +132,7 @@ index 977b3222c8f7c..e5d36a4e5921e 100644 # TODO(crbug.com/41437292): Remove this circular dependency. # Any circular includes must depend on the target "//chrome/browser:browser_public_dependencies". # These are all-platform circular includes. -@@ -5487,6 +5500,7 @@ static_library("ui") { +@@ -5441,6 +5454,7 @@ static_library("ui") { if (enable_printing) { deps += [ "//components/printing/browser", @@ -141,10 +141,10 @@ index 977b3222c8f7c..e5d36a4e5921e 100644 ] } diff --git chrome/browser/ui/browser.cc chrome/browser/ui/browser.cc -index a62c82aab7a35..cbd8c87aba959 100644 +index e0582db3e8e88..1c61a24136933 100644 --- chrome/browser/ui/browser.cc +++ chrome/browser/ui/browser.cc -@@ -269,6 +269,25 @@ +@@ -270,6 +270,25 @@ #include "components/captive_portal/content/captive_portal_tab_helper.h" #endif @@ -170,7 +170,7 @@ index a62c82aab7a35..cbd8c87aba959 100644 #if BUILDFLAG(ENABLE_EXTENSIONS) #include "chrome/browser/extensions/extension_browser_window_helper.h" #endif -@@ -558,6 +577,10 @@ Browser::Browser(const CreateParams& params) +@@ -565,6 +584,10 @@ Browser::Browser(const CreateParams& params) type_(params.type), profile_(params.profile), window_(nullptr), @@ -181,10 +181,10 @@ index a62c82aab7a35..cbd8c87aba959 100644 tab_strip_model_delegate_( std::make_unique(this)), tab_strip_model_(std::make_unique( -@@ -788,6 +811,12 @@ Browser::~Browser() { - // away so they don't try and call back to us. - if (select_file_dialog_.get()) +@@ -802,6 +825,12 @@ Browser::~Browser() { + if (select_file_dialog_.get()) { select_file_dialog_->ListenerDestroyed(); + } + + // Clean up any objects attached via UserData before implicit destruction + // of CreateParams. Destruction of those objects may call into something @@ -194,7 +194,7 @@ index a62c82aab7a35..cbd8c87aba959 100644 } /////////////////////////////////////////////////////////////////////////////// -@@ -1407,6 +1436,8 @@ void Browser::WindowFullscreenStateChanged() { +@@ -1409,6 +1438,8 @@ void Browser::WindowFullscreenStateChanged() { ->WindowFullscreenStateChanged(); command_controller_->FullscreenStateChanged(); UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_TOGGLE_FULLSCREEN); @@ -203,9 +203,9 @@ index a62c82aab7a35..cbd8c87aba959 100644 } void Browser::FullscreenTopUIStateChanged() { -@@ -1726,6 +1757,14 @@ content::KeyboardEventProcessingResult Browser::PreHandleKeyboardEvent( - if (exclusive_access_manager_->HandleUserKeyEvent(event)) +@@ -1742,6 +1773,14 @@ content::KeyboardEventProcessingResult Browser::PreHandleKeyboardEvent( return content::KeyboardEventProcessingResult::HANDLED; + } +#if BUILDFLAG(ENABLE_CEF) + if (cef_browser_delegate_) { @@ -218,7 +218,7 @@ index a62c82aab7a35..cbd8c87aba959 100644 return window()->PreHandleKeyboardEvent(event); } -@@ -1733,8 +1772,18 @@ bool Browser::HandleKeyboardEvent(content::WebContents* source, +@@ -1749,8 +1788,18 @@ bool Browser::HandleKeyboardEvent(content::WebContents* source, const NativeWebKeyboardEvent& event) { DevToolsWindow* devtools_window = DevToolsWindow::GetInstanceForInspectedWebContents(source); @@ -239,10 +239,10 @@ index a62c82aab7a35..cbd8c87aba959 100644 } bool Browser::TabsNeedBeforeUnloadFired() const { -@@ -1826,9 +1875,14 @@ bool Browser::IsBackForwardCacheSupported(content::WebContents& web_contents) { - +@@ -1845,9 +1894,14 @@ bool Browser::IsBackForwardCacheSupported(content::WebContents& web_contents) { content::PreloadingEligibility Browser::IsPrerender2Supported( - content::WebContents& web_contents) { + content::WebContents& web_contents, + content::PreloadingTriggerType trigger_type) { +#if BUILDFLAG(ENABLE_CEF) + // Prerender is not supported in CEF. See issue #3664. + return content::PreloadingEligibility::kPreloadingDisabled; @@ -254,7 +254,7 @@ index a62c82aab7a35..cbd8c87aba959 100644 } bool Browser::ShouldShowStaleContentOnEviction(content::WebContents* source) { -@@ -1888,6 +1942,14 @@ WebContents* Browser::OpenURLFromTab( +@@ -1910,6 +1964,14 @@ WebContents* Browser::OpenURLFromTab( std::move(navigation_handle_callback)); } @@ -269,7 +269,7 @@ index a62c82aab7a35..cbd8c87aba959 100644 NavigateParams nav_params(this, params.url, params.transition); nav_params.FillNavigateParamsFromOpenURLParams(params); nav_params.source_contents = source; -@@ -2054,6 +2116,8 @@ void Browser::LoadingStateChanged(WebContents* source, +@@ -2083,6 +2145,8 @@ void Browser::LoadingStateChanged(WebContents* source, bool should_show_loading_ui) { ScheduleUIUpdate(source, content::INVALIDATE_TYPE_LOAD); UpdateWindowForLoadingStateChanged(source, should_show_loading_ui); @@ -278,17 +278,17 @@ index a62c82aab7a35..cbd8c87aba959 100644 } void Browser::CloseContents(WebContents* source) { -@@ -2082,6 +2146,8 @@ void Browser::SetContentsBounds(WebContents* source, const gfx::Rect& bounds) { +@@ -2112,6 +2176,8 @@ void Browser::SetContentsBounds(WebContents* source, const gfx::Rect& bounds) { } void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { + CALL_CEF_DELEGATE(UpdateTargetURL, source, url); + - if (!GetStatusBubble()) + if (!GetStatusBubble()) { return; - -@@ -2089,6 +2155,17 @@ void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { - GetStatusBubble()->SetURL(url); + } +@@ -2121,6 +2187,17 @@ void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { + } } +bool Browser::DidAddMessageToConsole( @@ -305,7 +305,7 @@ index a62c82aab7a35..cbd8c87aba959 100644 void Browser::ContentsMouseEvent(WebContents* source, const ui::Event& event) { const ui::EventType type = event.type(); const bool exited = type == ui::EventType::kMouseExited; -@@ -2117,6 +2194,19 @@ bool Browser::TakeFocus(content::WebContents* source, bool reverse) { +@@ -2149,6 +2226,19 @@ bool Browser::TakeFocus(content::WebContents* source, bool reverse) { return false; } @@ -325,10 +325,10 @@ index a62c82aab7a35..cbd8c87aba959 100644 void Browser::BeforeUnloadFired(WebContents* web_contents, bool proceed, bool* proceed_to_fire_unload) { -@@ -2213,12 +2303,24 @@ void Browser::WebContentsCreated(WebContents* source_contents, - // will later be inserted into this browser using Browser::Navigate via - // AddNewContents. - TabHelpers::AttachTabHelpers(new_contents); +@@ -2261,12 +2351,24 @@ void Browser::WebContentsCreated(WebContents* source_contents, + // to track `new_contents` after it is added to its TabModel this override can + // be removed. + CreateSessionServiceTabHelper(new_contents); + + CALL_CEF_DELEGATE(WebContentsCreated, source_contents, + opener_render_process_id, opener_render_frame_id, @@ -343,34 +343,34 @@ index a62c82aab7a35..cbd8c87aba959 100644 + if (cef_browser_delegate_ && + cef_browser_delegate_->RendererUnresponsiveEx(source, render_widget_host, + hang_monitor_restarter)) { -+ return; ++ return; + } +#endif + // Don't show the page hung dialog when a HTML popup hangs because // the dialog will take the focus and immediately close the popup. RenderWidgetHostView* view = render_widget_host->GetView(); -@@ -2231,6 +2333,13 @@ void Browser::RendererUnresponsive( +@@ -2279,6 +2381,13 @@ void Browser::RendererUnresponsive( void Browser::RendererResponsive( WebContents* source, content::RenderWidgetHost* render_widget_host) { +#if BUILDFLAG(ENABLE_CEF) + if (cef_browser_delegate_ && + cef_browser_delegate_->RendererResponsiveEx(source, render_widget_host)) { -+ return; ++ return; + } +#endif + RenderWidgetHostView* view = render_widget_host->GetView(); if (view && !render_widget_host->GetView()->IsHTMLFormPopup()) { TabDialogs::FromWebContents(source)->HideHungRendererDialog( -@@ -2240,6 +2349,15 @@ void Browser::RendererResponsive( +@@ -2288,6 +2397,15 @@ void Browser::RendererResponsive( content::JavaScriptDialogManager* Browser::GetJavaScriptDialogManager( WebContents* source) { +#if BUILDFLAG(ENABLE_CEF) + if (cef_browser_delegate_) { -+ auto* cef_js_dialog_manager = ++ auto* cef_js_dialog_manager = + cef_browser_delegate_->GetJavaScriptDialogManager(source); + if (cef_js_dialog_manager) { + return cef_js_dialog_manager; @@ -380,7 +380,7 @@ index a62c82aab7a35..cbd8c87aba959 100644 return javascript_dialogs::TabModalDialogManager::FromWebContents(source); } -@@ -2275,6 +2393,11 @@ void Browser::DraggableRegionsChanged( +@@ -2323,6 +2441,11 @@ void Browser::DraggableRegionsChanged( if (app_controller_) { app_controller_->DraggableRegionsChanged(regions, contents); } @@ -392,7 +392,7 @@ index a62c82aab7a35..cbd8c87aba959 100644 } void Browser::DidFinishNavigation( -@@ -2355,11 +2478,15 @@ void Browser::EnterFullscreenModeForTab( +@@ -2405,11 +2528,15 @@ void Browser::EnterFullscreenModeForTab( const blink::mojom::FullscreenOptions& options) { exclusive_access_manager_->fullscreen_controller()->EnterFullscreenModeForTab( requesting_frame, options.display_id); @@ -408,7 +408,7 @@ index a62c82aab7a35..cbd8c87aba959 100644 } bool Browser::IsFullscreenForTabOrPending(const WebContents* web_contents) { -@@ -2562,6 +2689,15 @@ void Browser::RequestMediaAccessPermission( +@@ -2619,6 +2746,15 @@ void Browser::RequestMediaAccessPermission( content::WebContents* web_contents, const content::MediaStreamRequest& request, content::MediaResponseCallback callback) { @@ -424,7 +424,7 @@ index a62c82aab7a35..cbd8c87aba959 100644 const extensions::Extension* extension = GetExtensionForOrigin(profile_, request.security_origin); MediaCaptureDevicesDispatcher::GetInstance()->ProcessMediaAccessRequest( -@@ -3114,9 +3250,10 @@ void Browser::RemoveScheduledUpdatesFor(WebContents* contents) { +@@ -3187,9 +3323,10 @@ void Browser::RemoveScheduledUpdatesFor(WebContents* contents) { // Browser, Getters for UI (private): StatusBubble* Browser::GetStatusBubble() { @@ -436,7 +436,7 @@ index a62c82aab7a35..cbd8c87aba959 100644 } // We hide the status bar for web apps windows as this matches native -@@ -3124,6 +3261,12 @@ StatusBubble* Browser::GetStatusBubble() { +@@ -3197,6 +3334,12 @@ StatusBubble* Browser::GetStatusBubble() { // mode, as the minimal browser UI includes the status bar. if (web_app::AppBrowserController::IsWebApp(this) && !app_controller()->HasMinimalUiButtons()) { @@ -449,7 +449,7 @@ index a62c82aab7a35..cbd8c87aba959 100644 return nullptr; } -@@ -3269,6 +3412,8 @@ void Browser::SetAsDelegate(WebContents* web_contents, bool set_delegate) { +@@ -3346,6 +3489,8 @@ void Browser::SetAsDelegate(WebContents* web_contents, bool set_delegate) { BookmarkTabHelper::FromWebContents(web_contents)->RemoveObserver(this); web_contents_collection_.StopObserving(web_contents); } @@ -458,7 +458,7 @@ index a62c82aab7a35..cbd8c87aba959 100644 } void Browser::TabDetachedAtImpl(content::WebContents* contents, -@@ -3426,6 +3571,14 @@ bool Browser::PictureInPictureBrowserSupportsWindowFeature( +@@ -3506,6 +3651,14 @@ bool Browser::PictureInPictureBrowserSupportsWindowFeature( bool Browser::SupportsWindowFeatureImpl(WindowFeature feature, bool check_can_support) const { @@ -474,7 +474,7 @@ index a62c82aab7a35..cbd8c87aba959 100644 case TYPE_NORMAL: return NormalBrowserSupportsWindowFeature(feature, check_can_support); diff --git chrome/browser/ui/browser.h chrome/browser/ui/browser.h -index 1455dcab97edb..eb86532470a75 100644 +index 0ee8fee2166f0..cdbf89ce7088b 100644 --- chrome/browser/ui/browser.h +++ chrome/browser/ui/browser.h @@ -25,6 +25,7 @@ @@ -539,7 +539,7 @@ index 1455dcab97edb..eb86532470a75 100644 // Get the FindBarController for this browser, creating it if it does not // yet exist. FindBarController* GetFindBarController(); -@@ -964,10 +991,18 @@ class Browser : public TabStripModelObserver, +@@ -962,10 +989,18 @@ class Browser : public TabStripModelObserver, void SetContentsBounds(content::WebContents* source, const gfx::Rect& bounds) override; void UpdateTargetURL(content::WebContents* source, const GURL& url) override; @@ -558,7 +558,7 @@ index 1455dcab97edb..eb86532470a75 100644 void BeforeUnloadFired(content::WebContents* source, bool proceed, bool* proceed_to_fire_unload) override; -@@ -1306,6 +1341,10 @@ class Browser : public TabStripModelObserver, +@@ -1303,6 +1338,10 @@ class Browser : public TabStripModelObserver, // This Browser's window. raw_ptr window_; @@ -569,7 +569,7 @@ index 1455dcab97edb..eb86532470a75 100644 std::unique_ptr const tab_strip_model_delegate_; std::unique_ptr const tab_strip_model_; -@@ -1372,6 +1411,8 @@ class Browser : public TabStripModelObserver, +@@ -1369,6 +1408,8 @@ class Browser : public TabStripModelObserver, const std::string initial_workspace_; bool initial_visible_on_all_workspaces_state_; @@ -579,7 +579,7 @@ index 1455dcab97edb..eb86532470a75 100644 UnloadController unload_controller_; diff --git chrome/browser/ui/browser_navigator.cc chrome/browser/ui/browser_navigator.cc -index d26f6e2bdefd8..6c37714cc328f 100644 +index 819c44848e6ab..8e233a8b2d420 100644 --- chrome/browser/ui/browser_navigator.cc +++ chrome/browser/ui/browser_navigator.cc @@ -260,6 +260,10 @@ std::tuple GetBrowserAndTabForDisposition( @@ -613,7 +613,7 @@ index d26f6e2bdefd8..6c37714cc328f 100644 bool IsHostAllowedInIncognito(const GURL& url) { diff --git chrome/browser/ui/browser_tabstrip.cc chrome/browser/ui/browser_tabstrip.cc -index 1f84235515463..82942fb06b5f3 100644 +index f12ba73369a65..23c43dcb1dd24 100644 --- chrome/browser/ui/browser_tabstrip.cc +++ chrome/browser/ui/browser_tabstrip.cc @@ -33,9 +33,13 @@ content::WebContents* AddAndReturnTabAt( @@ -631,7 +631,7 @@ index 1f84235515463..82942fb06b5f3 100644 params.disposition = foreground ? WindowOpenDisposition::NEW_FOREGROUND_TAB : WindowOpenDisposition::NEW_BACKGROUND_TAB; params.tabstrip_index = idx; -@@ -84,6 +88,16 @@ content::WebContents* AddWebContents( +@@ -85,6 +89,16 @@ content::WebContents* AddWebContents( // Can't create a new contents for the current tab - invalid case. DCHECK(disposition != WindowOpenDisposition::CURRENT_TAB); diff --git a/patch/patches/chrome_browser_context_menus.patch b/patch/patches/chrome_browser_context_menus.patch index fc5aa71d5..a912dd3b2 100644 --- a/patch/patches/chrome_browser_context_menus.patch +++ b/patch/patches/chrome_browser_context_menus.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/renderer_context_menu/render_view_context_menu.cc chrome/browser/renderer_context_menu/render_view_context_menu.cc -index 419bf206081ba..d0b299714a5eb 100644 +index 3e36390382b9b..bf0aacb0eb08e 100644 --- chrome/browser/renderer_context_menu/render_view_context_menu.cc +++ chrome/browser/renderer_context_menu/render_view_context_menu.cc @@ -359,6 +359,18 @@ base::OnceCallback* GetMenuShownCallback() { @@ -21,7 +21,7 @@ index 419bf206081ba..d0b299714a5eb 100644 enum class UmaEnumIdLookupType { GeneralEnumId, ContextSpecificEnumId, -@@ -627,6 +639,10 @@ int FindUMAEnumValueForCommand(int id, UmaEnumIdLookupType type) { +@@ -629,6 +641,10 @@ int FindUMAEnumValueForCommand(int id, UmaEnumIdLookupType type) { return 1; } @@ -32,7 +32,7 @@ index 419bf206081ba..d0b299714a5eb 100644 id = CollapseCommandsForUMA(id); const auto& map = GetIdcToUmaMap(type); auto it = map.find(id); -@@ -931,6 +947,14 @@ RenderViewContextMenu::RenderViewContextMenu( +@@ -919,6 +935,14 @@ RenderViewContextMenu::RenderViewContextMenu( : nullptr; #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -47,7 +47,7 @@ index 419bf206081ba..d0b299714a5eb 100644 observers_.AddObserver(&autofill_context_menu_manager_); } -@@ -1387,6 +1411,12 @@ void RenderViewContextMenu::InitMenu() { +@@ -1376,6 +1400,12 @@ void RenderViewContextMenu::InitMenu() { autofill_client->HideAutofillSuggestions( autofill::SuggestionHidingReason::kContextMenuOpened); } @@ -60,7 +60,7 @@ index 419bf206081ba..d0b299714a5eb 100644 } Profile* RenderViewContextMenu::GetProfile() const { -@@ -3656,6 +3686,26 @@ void RenderViewContextMenu::RegisterExecutePluginActionCallbackForTesting( +@@ -3603,6 +3633,26 @@ void RenderViewContextMenu::RegisterExecutePluginActionCallbackForTesting( execute_plugin_action_callback_ = std::move(cb); } @@ -88,10 +88,10 @@ index 419bf206081ba..d0b299714a5eb 100644 RenderViewContextMenu::GetHandlersForLinkUrl() { custom_handlers::ProtocolHandlerRegistry::ProtocolHandlerList handlers = diff --git chrome/browser/renderer_context_menu/render_view_context_menu.h chrome/browser/renderer_context_menu/render_view_context_menu.h -index e31912f931c11..dac994a1958b1 100644 +index a57ce5f206298..2b6fc94cca039 100644 --- chrome/browser/renderer_context_menu/render_view_context_menu.h +++ chrome/browser/renderer_context_menu/render_view_context_menu.h -@@ -155,7 +155,21 @@ class RenderViewContextMenu +@@ -154,7 +154,21 @@ class RenderViewContextMenu } #endif @@ -113,7 +113,7 @@ index e31912f931c11..dac994a1958b1 100644 Profile* GetProfile() const; // This may return nullptr (e.g. for WebUI dialogs). Virtual to allow tests to -@@ -481,6 +495,9 @@ class RenderViewContextMenu +@@ -475,6 +489,9 @@ class RenderViewContextMenu // built. bool is_protocol_submenu_valid_ = false; @@ -136,10 +136,10 @@ index cb51224f9892c..b5a3946999d8f 100644 private: // RenderViewContextMenuViewsMac: diff --git chrome/browser/ui/cocoa/renderer_context_menu/render_view_context_menu_mac_cocoa.mm chrome/browser/ui/cocoa/renderer_context_menu/render_view_context_menu_mac_cocoa.mm -index 9070be4403de1..a449c46246acd 100644 +index 5e266a42d3df6..e57211944d6a6 100644 --- chrome/browser/ui/cocoa/renderer_context_menu/render_view_context_menu_mac_cocoa.mm +++ chrome/browser/ui/cocoa/renderer_context_menu/render_view_context_menu_mac_cocoa.mm -@@ -68,6 +68,10 @@ RenderViewContextMenuMacCocoa::~RenderViewContextMenuMacCocoa() { +@@ -70,6 +70,10 @@ RenderViewContextMenuMacCocoa::~RenderViewContextMenuMacCocoa() { } void RenderViewContextMenuMacCocoa::Show() { @@ -150,7 +150,7 @@ index 9070be4403de1..a449c46246acd 100644 views::Widget* widget = views::Widget::GetTopLevelWidgetForNativeView( source_web_contents_->GetNativeView()); -@@ -93,6 +97,10 @@ void RenderViewContextMenuMacCocoa::Show() { +@@ -95,6 +99,10 @@ void RenderViewContextMenuMacCocoa::Show() { views::ElementTrackerViews::GetContextForWidget(widget)); } @@ -189,10 +189,10 @@ index 9f6c5fd44f206..dc50bc909897f 100644 runner_->Cancel(); } diff --git chrome/browser/ui/views/renderer_context_menu/render_view_context_menu_views.cc chrome/browser/ui/views/renderer_context_menu/render_view_context_menu_views.cc -index a0a564cbef528..f804cffc6944f 100644 +index 995a9c9c8ca22..b743c01bc6ebb 100644 --- chrome/browser/ui/views/renderer_context_menu/render_view_context_menu_views.cc +++ chrome/browser/ui/views/renderer_context_menu/render_view_context_menu_views.cc -@@ -149,6 +149,9 @@ void RenderViewContextMenuViews::RunMenuAt(views::Widget* parent, +@@ -150,6 +150,9 @@ void RenderViewContextMenuViews::RunMenuAt(views::Widget* parent, bool RenderViewContextMenuViews::GetAcceleratorForCommandId( int command_id, ui::Accelerator* accel) const { @@ -202,7 +202,7 @@ index a0a564cbef528..f804cffc6944f 100644 // There are no formally defined accelerators we can query so we assume // that Ctrl+C, Ctrl+V, Ctrl+X, Ctrl-A, etc do what they normally do. switch (command_id) { -@@ -383,6 +386,10 @@ void RenderViewContextMenuViews::AppendPlatformEditableItems() { +@@ -366,6 +369,10 @@ void RenderViewContextMenuViews::AppendPlatformEditableItems() { } void RenderViewContextMenuViews::Show() { @@ -210,10 +210,10 @@ index a0a564cbef528..f804cffc6944f 100644 + return; + } + - if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode)) + if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kKioskMode)) { return; - -@@ -425,6 +432,11 @@ void RenderViewContextMenuViews::Show() { + } +@@ -412,6 +419,11 @@ void RenderViewContextMenuViews::Show() { } } @@ -238,10 +238,10 @@ index 8433cdc9c88b7..aea62cda5cd22 100644 protected: RenderViewContextMenuViews(content::RenderFrameHost& render_frame_host, diff --git chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views.cc chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views.cc -index eb855deeb6040..3ff97b28fa4c6 100644 +index d46f3ec0eec9c..c1e166725f526 100644 --- chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views.cc +++ chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views.cc -@@ -91,6 +91,10 @@ void ChromeWebContentsViewDelegateViews::ShowMenu( +@@ -92,6 +92,10 @@ void ChromeWebContentsViewDelegateViews::ShowMenu( context_menu_->Show(); } @@ -253,7 +253,7 @@ index eb855deeb6040..3ff97b28fa4c6 100644 content::RenderFrameHost& render_frame_host, const content::ContextMenuParams& params) { diff --git chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views.h chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views.h -index 97c98c8738965..96c142806d7b2 100644 +index 427c68bd89910..1632f7bbfd0c2 100644 --- chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views.h +++ chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views.h @@ -55,6 +55,7 @@ class ChromeWebContentsViewDelegateViews @@ -277,10 +277,10 @@ index 07e5b3613a2df..293282690bd5a 100644 private: content::RenderWidgetHostView* GetActiveRenderWidgetHostView() const; diff --git chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views_mac.mm chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views_mac.mm -index 0e2cf71973741..e8d9c38b49b6c 100644 +index 065e21f80dbe5..013403577470c 100644 --- chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views_mac.mm +++ chrome/browser/ui/views/tab_contents/chrome_web_contents_view_delegate_views_mac.mm -@@ -131,6 +131,10 @@ void ChromeWebContentsViewDelegateViewsMac::ShowMenu( +@@ -133,6 +133,10 @@ void ChromeWebContentsViewDelegateViewsMac::ShowMenu( context_menu_->Show(); } @@ -305,10 +305,10 @@ index 042428f77f4ad..e4efd98ca45d5 100644 raw_ptr web_contents_ = nullptr; }; diff --git components/renderer_context_menu/render_view_context_menu_base.cc components/renderer_context_menu/render_view_context_menu_base.cc -index 2c4065b89fd0b..b978ebc839209 100644 +index 10f9eecb49c31..64d6cc54f0940 100644 --- components/renderer_context_menu/render_view_context_menu_base.cc +++ components/renderer_context_menu/render_view_context_menu_base.cc -@@ -396,6 +396,17 @@ bool RenderViewContextMenuBase::IsCommandIdChecked(int id) const { +@@ -395,6 +395,17 @@ bool RenderViewContextMenuBase::IsCommandIdChecked(int id) const { return false; } diff --git a/patch/patches/chrome_browser_dialogs_widget.patch b/patch/patches/chrome_browser_dialogs_widget.patch index 2b5e962a6..81ca3bf3c 100644 --- a/patch/patches/chrome_browser_dialogs_widget.patch +++ b/patch/patches/chrome_browser_dialogs_widget.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/ui/views/chrome_javascript_app_modal_view_factory_views.cc chrome/browser/ui/views/chrome_javascript_app_modal_view_factory_views.cc -index b169371e4d42f..509e4bda85b47 100644 +index cc58a303a78b6..7755e58c8651c 100644 --- chrome/browser/ui/views/chrome_javascript_app_modal_view_factory_views.cc +++ chrome/browser/ui/views/chrome_javascript_app_modal_view_factory_views.cc -@@ -100,7 +100,7 @@ javascript_dialogs::AppModalDialogView* CreateViewsJavaScriptDialog( +@@ -99,7 +99,7 @@ javascript_dialogs::AppModalDialogView* CreateViewsJavaScriptDialog( gfx::NativeWindow parent_window = controller->web_contents()->GetTopLevelNativeWindow(); #if defined(USE_AURA) @@ -12,10 +12,10 @@ index b169371e4d42f..509e4bda85b47 100644 // on the screen, we can't actually attach to it. parent_window = nullptr; diff --git components/constrained_window/constrained_window_views.cc components/constrained_window/constrained_window_views.cc -index 34567d0940948..420d15acad367 100644 +index 6cea2c60b144f..7bae772782b71 100644 --- components/constrained_window/constrained_window_views.cc +++ components/constrained_window/constrained_window_views.cc -@@ -102,10 +102,17 @@ class ModalDialogHostObserverViews : public ModalDialogHostObserver { +@@ -101,10 +101,17 @@ class ModalDialogHostObserverViews : public ModalDialogHostObserver { gfx::Rect GetModalDialogBounds(views::Widget* widget, web_modal::ModalDialogHost* dialog_host, const gfx::Size& size) { @@ -36,7 +36,7 @@ index 34567d0940948..420d15acad367 100644 } gfx::Point position = dialog_host->GetDialogPosition(size); -@@ -114,43 +121,22 @@ gfx::Rect GetModalDialogBounds(views::Widget* widget, +@@ -113,43 +120,22 @@ gfx::Rect GetModalDialogBounds(views::Widget* widget, position.set_y(position.y() - widget->non_client_view()->frame_view()->GetInsets().top()); @@ -94,7 +94,7 @@ index 34567d0940948..420d15acad367 100644 } void UpdateModalDialogPosition(views::Widget* widget, -@@ -161,15 +147,24 @@ void UpdateModalDialogPosition(views::Widget* widget, +@@ -160,15 +146,24 @@ void UpdateModalDialogPosition(views::Widget* widget, return; } @@ -121,7 +121,7 @@ index 34567d0940948..420d15acad367 100644 return; } -@@ -299,8 +294,13 @@ views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog, +@@ -298,8 +293,13 @@ views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog, gfx::NativeView parent_view = parent ? CurrentBrowserModalClient()->GetDialogHostView(parent) : nullptr; @@ -136,7 +136,7 @@ index 34567d0940948..420d15acad367 100644 widget->SetNativeWindowProperty( views::kWidgetIdentifierKey, const_cast(kConstrainedWindowWidgetIdentifier)); -@@ -317,8 +317,7 @@ views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog, +@@ -316,8 +316,7 @@ views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog, return widget; ModalDialogHost* host = @@ -146,7 +146,7 @@ index 34567d0940948..420d15acad367 100644 if (host) { DCHECK_EQ(parent_view, host->GetHostView()); std::unique_ptr observer = -@@ -335,11 +334,17 @@ views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog, +@@ -334,11 +333,17 @@ views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog, views::Widget* ShowBrowserModal(std::unique_ptr dialog_model, gfx::NativeWindow parent) { @@ -210,7 +210,7 @@ index 51ed6bcf6b540..c6e1161140655 100644 virtual gfx::Point GetDialogPosition(const gfx::Size& size) = 0; // Returns whether a dialog currently about to be shown should be activated. diff --git ui/views/window/dialog_delegate.cc ui/views/window/dialog_delegate.cc -index bc119f10f749e..d81c1ce4e786f 100644 +index 8829ec9e33506..01277e6e7e5b8 100644 --- ui/views/window/dialog_delegate.cc +++ ui/views/window/dialog_delegate.cc @@ -87,10 +87,12 @@ DialogDelegate::DialogDelegate() { @@ -264,13 +264,13 @@ index bc119f10f749e..d81c1ce4e786f 100644 @@ -129,7 +134,7 @@ Widget::InitParams DialogDelegate::GetDialogWidgetInitParams( params.bounds = bounds; - if (dialog) + if (dialog) { - dialog->params_.custom_frame &= CanSupportCustomFrame(parent); + dialog->params_.custom_frame &= CanSupportCustomFrame(parent, parent_widget); + } if (!dialog || dialog->use_custom_frame()) { - params.opacity = Widget::InitParams::WindowOpacity::kTranslucent; -@@ -142,6 +147,7 @@ Widget::InitParams DialogDelegate::GetDialogWidgetInitParams( +@@ -143,6 +148,7 @@ Widget::InitParams DialogDelegate::GetDialogWidgetInitParams( } params.context = context; params.parent = parent; diff --git a/patch/patches/chrome_browser_download.patch b/patch/patches/chrome_browser_download.patch index 9d891183c..2beb5f0fc 100644 --- a/patch/patches/chrome_browser_download.patch +++ b/patch/patches/chrome_browser_download.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/download/chrome_download_manager_delegate.cc chrome/browser/download/chrome_download_manager_delegate.cc -index c95b5e23f09b0..62c331a47ad2e 100644 +index ca80263783e89..b0e3f15b824f5 100644 --- chrome/browser/download/chrome_download_manager_delegate.cc +++ chrome/browser/download/chrome_download_manager_delegate.cc @@ -31,6 +31,7 @@ @@ -10,7 +10,7 @@ index c95b5e23f09b0..62c331a47ad2e 100644 #include "chrome/browser/browser_process.h" #include "chrome/browser/download/bubble/download_bubble_prefs.h" #include "chrome/browser/download/download_core_service.h" -@@ -159,6 +160,10 @@ +@@ -158,6 +159,10 @@ #include "chrome/browser/ash/policy/skyvault/skyvault_rename_handler.h" #endif @@ -21,7 +21,7 @@ index c95b5e23f09b0..62c331a47ad2e 100644 using content::BrowserThread; using content::DownloadManager; using download::DownloadItem; -@@ -517,6 +522,11 @@ ChromeDownloadManagerDelegate::ChromeDownloadManagerDelegate(Profile* profile) +@@ -516,6 +521,11 @@ ChromeDownloadManagerDelegate::ChromeDownloadManagerDelegate(Profile* profile) download_dialog_bridge_ = std::make_unique(); download_message_bridge_ = std::make_unique(); #endif @@ -33,7 +33,7 @@ index c95b5e23f09b0..62c331a47ad2e 100644 } ChromeDownloadManagerDelegate::~ChromeDownloadManagerDelegate() { -@@ -576,6 +586,9 @@ void ChromeDownloadManagerDelegate::Shutdown() { +@@ -575,6 +585,9 @@ void ChromeDownloadManagerDelegate::Shutdown() { download_manager_->RemoveObserver(this); download_manager_ = nullptr; } @@ -43,7 +43,7 @@ index c95b5e23f09b0..62c331a47ad2e 100644 } void ChromeDownloadManagerDelegate::OnDownloadCanceledAtShutdown( -@@ -644,6 +657,12 @@ bool ChromeDownloadManagerDelegate::DetermineDownloadTarget( +@@ -643,6 +656,12 @@ bool ChromeDownloadManagerDelegate::DetermineDownloadTarget( ReportPDFLoadStatus(PDFLoadStatus::kTriggeredNoGestureDriveByDownload); } @@ -56,7 +56,7 @@ index c95b5e23f09b0..62c331a47ad2e 100644 DownloadTargetDeterminer::CompletionCallback target_determined_callback = base::BindOnce(&ChromeDownloadManagerDelegate::OnDownloadTargetDetermined, weak_ptr_factory_.GetWeakPtr(), download->GetId(), -@@ -1119,8 +1138,11 @@ void ChromeDownloadManagerDelegate::OpenDownload(DownloadItem* download) { +@@ -1118,8 +1137,11 @@ void ChromeDownloadManagerDelegate::OpenDownload(DownloadItem* download) { Browser* browser = web_contents ? chrome::FindBrowserWithTab(web_contents) : nullptr; std::unique_ptr browser_displayer; diff --git a/patch/patches/chrome_browser_extensions.patch b/patch/patches/chrome_browser_extensions.patch index e570b2c75..8748dec04 100644 --- a/patch/patches/chrome_browser_extensions.patch +++ b/patch/patches/chrome_browser_extensions.patch @@ -34,10 +34,10 @@ index f61ec524109fe..92ca490728855 100644 WebViewGuestDelegate* ChromeExtensionsAPIClient::CreateWebViewGuestDelegate( diff --git chrome/browser/extensions/api/tabs/tabs_api.cc chrome/browser/extensions/api/tabs/tabs_api.cc -index 708748407e8b8..9e91dd2b2f285 100644 +index d19671bad0e0d..639a1737a0ef5 100644 --- chrome/browser/extensions/api/tabs/tabs_api.cc +++ chrome/browser/extensions/api/tabs/tabs_api.cc -@@ -1643,7 +1643,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { +@@ -1674,7 +1674,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { return RespondNow(Error(ExtensionTabUtil::kTabStripNotEditableError)); } @@ -46,7 +46,7 @@ index 708748407e8b8..9e91dd2b2f285 100644 tab_strip->ActivateTabAt(tab_index); DCHECK_EQ(contents, tab_strip->GetActiveWebContents()); } -@@ -1657,7 +1657,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { +@@ -1688,7 +1688,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { } bool highlighted = *params->update_properties.highlighted; @@ -55,7 +55,7 @@ index 708748407e8b8..9e91dd2b2f285 100644 tab_strip->ToggleSelectionAt(tab_index); } } -@@ -1669,7 +1669,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { +@@ -1700,7 +1700,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { kCannotUpdateMuteCaptured, base::NumberToString(tab_id)))); } @@ -64,7 +64,7 @@ index 708748407e8b8..9e91dd2b2f285 100644 int opener_id = *params->update_properties.opener_tab_id; WebContents* opener_contents = nullptr; if (opener_id == tab_id) { -@@ -1704,7 +1704,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { +@@ -1735,7 +1735,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { ->SetAutoDiscardable(state); } @@ -73,7 +73,7 @@ index 708748407e8b8..9e91dd2b2f285 100644 // Bug fix for crbug.com/1197888. Don't let the extension update the tab if // the user is dragging tabs. if (!ExtensionTabUtil::IsTabStripEditable()) { -@@ -1725,7 +1725,8 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { +@@ -1756,7 +1756,8 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { // Navigate the tab to a new location if the url is different. if (params->update_properties.url) { std::string updated_url = *params->update_properties.url; @@ -83,7 +83,7 @@ index 708748407e8b8..9e91dd2b2f285 100644 !IsURLAllowedInIncognito(GURL(updated_url))) { return RespondNow(Error(ErrorUtils::FormatErrorMessage( tabs_constants::kURLsNotAllowedInIncognitoError, updated_url))); -@@ -1740,7 +1741,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { +@@ -1771,7 +1772,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { return RespondNow(Error(std::move(error))); } @@ -93,7 +93,7 @@ index 708748407e8b8..9e91dd2b2f285 100644 current_url, updated_url, js_callstack()); } diff --git chrome/browser/extensions/extension_tab_util.cc chrome/browser/extensions/extension_tab_util.cc -index 621e65fdf7666..93ec54e632930 100644 +index 704ad20866c37..081ef3bbf73cc 100644 --- chrome/browser/extensions/extension_tab_util.cc +++ chrome/browser/extensions/extension_tab_util.cc @@ -35,6 +35,7 @@ @@ -104,8 +104,8 @@ index 621e65fdf7666..93ec54e632930 100644 #include "chrome/browser/browser_process.h" // nogncheck #include "chrome/browser/extensions/browser_extension_window_controller.h" #include "chrome/browser/extensions/chrome_extension_function_details.h" -@@ -80,6 +81,10 @@ - #include "url/gurl.h" +@@ -81,6 +82,10 @@ + #include "url/url_constants.h" #endif +#if BUILDFLAG(ENABLE_CEF) @@ -115,7 +115,7 @@ index 621e65fdf7666..93ec54e632930 100644 using content::NavigationEntry; using content::WebContents; using extensions::mojom::APIPermissionID; -@@ -731,6 +736,14 @@ bool ExtensionTabUtil::GetTabById(int tab_id, +@@ -732,6 +737,14 @@ bool ExtensionTabUtil::GetTabById(int tab_id, } } @@ -165,10 +165,10 @@ index 63848c93738ce..0358e098c7339 100644 // ones that need to call AttachTabHelpers; if you think you do, re-read the // design document linked above, especially the section "Reusing tab helpers". diff --git chrome/browser/ui/views/download/bubble/download_toolbar_button_view.cc chrome/browser/ui/views/download/bubble/download_toolbar_button_view.cc -index 74af36a74f108..a4e1885388d16 100644 +index 2df9dfff43c9b..897738dfc8ddf 100644 --- chrome/browser/ui/views/download/bubble/download_toolbar_button_view.cc +++ chrome/browser/ui/views/download/bubble/download_toolbar_button_view.cc -@@ -834,6 +834,10 @@ void DownloadToolbarButtonView::ShowPendingDownloadStartedAnimation() { +@@ -812,6 +812,10 @@ void DownloadToolbarButtonView::ShowPendingDownloadStartedAnimation() { if (!gfx::Animation::ShouldRenderRichAnimation()) { return; } diff --git a/patch/patches/chrome_browser_frame_mac.patch b/patch/patches/chrome_browser_frame_mac.patch index a157b70cf..4350e00a8 100644 --- a/patch/patches/chrome_browser_frame_mac.patch +++ b/patch/patches/chrome_browser_frame_mac.patch @@ -33,10 +33,10 @@ index 2245c931fbe4f..761ea6b3a6afb 100644 ~BrowserFrameMac() override; diff --git chrome/browser/ui/views/frame/browser_frame_mac.mm chrome/browser/ui/views/frame/browser_frame_mac.mm -index ad9fe12425ad6..fa5840643f3a4 100644 +index b540a7a995fbc..e411aa8c235d9 100644 --- chrome/browser/ui/views/frame/browser_frame_mac.mm +++ chrome/browser/ui/views/frame/browser_frame_mac.mm -@@ -184,7 +184,14 @@ void BrowserFrameMac::OnWindowFullscreenTransitionComplete() { +@@ -185,7 +185,14 @@ void BrowserFrameMac::OnWindowFullscreenTransitionComplete() { void BrowserFrameMac::ValidateUserInterfaceItem( int32_t tag, remote_cocoa::mojom::ValidateUserInterfaceItemResult* result) { @@ -52,7 +52,7 @@ index ad9fe12425ad6..fa5840643f3a4 100644 if (!chrome::SupportsCommand(browser, tag)) { result->enable = false; return; -@@ -307,8 +314,16 @@ bool BrowserFrameMac::WillExecuteCommand( +@@ -308,8 +315,16 @@ bool BrowserFrameMac::WillExecuteCommand( int32_t command, WindowOpenDisposition window_open_disposition, bool is_before_first_responder) { @@ -70,18 +70,15 @@ index ad9fe12425ad6..fa5840643f3a4 100644 if (is_before_first_responder) { // The specification for this private extensions API is incredibly vague. // For now, we avoid triggering chrome commands prior to giving the -@@ -340,11 +355,20 @@ bool BrowserFrameMac::ExecuteCommand( +@@ -341,13 +356,21 @@ bool BrowserFrameMac::ExecuteCommand( int32_t command, WindowOpenDisposition window_open_disposition, bool is_before_first_responder) { - if (!WillExecuteCommand(command, window_open_disposition, -- is_before_first_responder)) -- return false; + return ExecuteCommand(browser_view_->browser(), command, + window_open_disposition, is_before_first_responder); +} - -- Browser* browser = browser_view_->browser(); ++ +// static +bool BrowserFrameMac::ExecuteCommand( + Browser* browser, @@ -89,9 +86,12 @@ index ad9fe12425ad6..fa5840643f3a4 100644 + WindowOpenDisposition window_open_disposition, + bool is_before_first_responder) { + if (!WillExecuteCommand(browser, command, window_open_disposition, -+ is_before_first_responder)) { -+ return false; -+ } + is_before_first_responder)) { + return false; + } +- Browser* browser = browser_view_->browser(); +- chrome::ExecuteCommandWithDisposition(browser, command, window_open_disposition); + return true; diff --git a/patch/patches/chrome_browser_permission_prompt.patch b/patch/patches/chrome_browser_permission_prompt.patch index 86afdc2ab..a81e6c28b 100644 --- a/patch/patches/chrome_browser_permission_prompt.patch +++ b/patch/patches/chrome_browser_permission_prompt.patch @@ -17,10 +17,10 @@ index fbce13c16ad10..0512b2f09937e 100644 std::unique_ptr CreatePermissionPrompt( content::WebContents* web_contents, diff --git chrome/browser/ui/views/permissions/permission_prompt_factory.cc chrome/browser/ui/views/permissions/permission_prompt_factory.cc -index d2328bfa93afa..c80206aecbcbf 100644 +index a5c99f86b52d2..f7e0241b6dc87 100644 --- chrome/browser/ui/views/permissions/permission_prompt_factory.cc +++ chrome/browser/ui/views/permissions/permission_prompt_factory.cc -@@ -222,11 +222,28 @@ std::unique_ptr CreateQuietPrompt( +@@ -225,11 +225,28 @@ std::unique_ptr CreateQuietPrompt( } } diff --git a/patch/patches/chrome_browser_profile_menu.patch b/patch/patches/chrome_browser_profile_menu.patch index d15e2889f..522793f6d 100644 --- a/patch/patches/chrome_browser_profile_menu.patch +++ b/patch/patches/chrome_browser_profile_menu.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/ui/bookmarks/bookmark_stats.cc chrome/browser/ui/bookmarks/bookmark_stats.cc -index bd47b3f13aa2a..0f4f3c47d2647 100644 +index 6a1b3f5267b0d..d9cfa012c9756 100644 --- chrome/browser/ui/bookmarks/bookmark_stats.cc +++ chrome/browser/ui/bookmarks/bookmark_stats.cc @@ -21,7 +21,9 @@ bool IsBookmarkBarLocation(BookmarkLaunchLocation location) { @@ -14,7 +14,7 @@ index bd47b3f13aa2a..0f4f3c47d2647 100644 ? profile_metrics::BrowserProfileType::kRegular : profile_metrics::BrowserProfileType::kIncognito; diff --git chrome/browser/ui/views/incognito_clear_browsing_data_dialog.cc chrome/browser/ui/views/incognito_clear_browsing_data_dialog.cc -index 3ac5ebf1b49b5..d41cffecb5603 100644 +index 1efeddf9c4989..5792d489d189d 100644 --- chrome/browser/ui/views/incognito_clear_browsing_data_dialog.cc +++ chrome/browser/ui/views/incognito_clear_browsing_data_dialog.cc @@ -32,7 +32,9 @@ IncognitoClearBrowsingDataDialog::IncognitoClearBrowsingDataDialog( @@ -29,10 +29,10 @@ index 3ac5ebf1b49b5..d41cffecb5603 100644 SetShowCloseButton(true); diff --git chrome/browser/ui/views/incognito_clear_browsing_data_dialog_coordinator.cc chrome/browser/ui/views/incognito_clear_browsing_data_dialog_coordinator.cc -index caa20ec03434a..2a3ca921445c1 100644 +index 1cf20c6206d60..9140d51cb79bd 100644 --- chrome/browser/ui/views/incognito_clear_browsing_data_dialog_coordinator.cc +++ chrome/browser/ui/views/incognito_clear_browsing_data_dialog_coordinator.cc -@@ -26,6 +26,10 @@ void IncognitoClearBrowsingDataDialogCoordinator::Show( +@@ -27,6 +27,10 @@ void IncognitoClearBrowsingDataDialogCoordinator::Show( ->toolbar_button_provider() ->GetAvatarToolbarButton(); @@ -44,7 +44,7 @@ index caa20ec03434a..2a3ca921445c1 100644 avatar_toolbar_button, GetBrowser().profile(), type); DCHECK_EQ(nullptr, bubble_tracker_.view()); diff --git chrome/browser/ui/views/profiles/incognito_menu_view.cc chrome/browser/ui/views/profiles/incognito_menu_view.cc -index 00510c991e657..830db4087c274 100644 +index 3216e0a793c4a..6168afcbf507b 100644 --- chrome/browser/ui/views/profiles/incognito_menu_view.cc +++ chrome/browser/ui/views/profiles/incognito_menu_view.cc @@ -36,7 +36,9 @@ @@ -59,10 +59,10 @@ index 00510c991e657..830db4087c274 100644 ax::mojom::NameFrom::kAttribute); diff --git chrome/browser/ui/views/profiles/profile_menu_coordinator.cc chrome/browser/ui/views/profiles/profile_menu_coordinator.cc -index 58026d48e15a6..acb3b51f86943 100644 +index 51408a6d84f3a..0d4e3197f52e1 100644 --- chrome/browser/ui/views/profiles/profile_menu_coordinator.cc +++ chrome/browser/ui/views/profiles/profile_menu_coordinator.cc -@@ -52,7 +52,9 @@ void ProfileMenuCoordinator::Show(bool is_source_accelerator) { +@@ -56,7 +56,9 @@ void ProfileMenuCoordinator::Show(bool is_source_accelerator) { std::unique_ptr bubble; bool is_incognito = browser.profile()->IsIncognitoProfile(); diff --git a/patch/patches/chrome_browser_profiles.patch b/patch/patches/chrome_browser_profiles.patch index ea71810b1..916ba813c 100644 --- a/patch/patches/chrome_browser_profiles.patch +++ b/patch/patches/chrome_browser_profiles.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/profiles/off_the_record_profile_impl.cc chrome/browser/profiles/off_the_record_profile_impl.cc -index cf4597e671afe..a9693c4e10d8e 100644 +index ecf5f7dd2b2b8..23775b4aa4d90 100644 --- chrome/browser/profiles/off_the_record_profile_impl.cc +++ chrome/browser/profiles/off_the_record_profile_impl.cc -@@ -647,7 +647,9 @@ std::unique_ptr Profile::CreateOffTheRecordProfile( +@@ -653,7 +653,9 @@ std::unique_ptr Profile::CreateOffTheRecordProfile( #endif if (!profile) profile = std::make_unique(parent, otr_profile_id); @@ -14,7 +14,7 @@ index cf4597e671afe..a9693c4e10d8e 100644 } diff --git chrome/browser/profiles/profile.cc chrome/browser/profiles/profile.cc -index 0b37d2e8cc60f..0ed51eebe9f76 100644 +index a490fefce8c79..2a066c47ef96d 100644 --- chrome/browser/profiles/profile.cc +++ chrome/browser/profiles/profile.cc @@ -84,6 +84,7 @@ base::LazyInstance>::Leaky @@ -85,10 +85,10 @@ index 2fe342e49d3c1..559b2a676dab5 100644 // Returns whether the user has signed in this profile to an account. diff --git chrome/browser/profiles/profile_impl.cc chrome/browser/profiles/profile_impl.cc -index 03ca7ab9c372a..524facb62c672 100644 +index 22aa92b18ffe4..317185360e925 100644 --- chrome/browser/profiles/profile_impl.cc +++ chrome/browser/profiles/profile_impl.cc -@@ -1041,7 +1041,9 @@ Profile* ProfileImpl::GetOffTheRecordProfile(const OTRProfileID& otr_profile_id, +@@ -1024,7 +1024,9 @@ Profile* ProfileImpl::GetOffTheRecordProfile(const OTRProfileID& otr_profile_id, otr_profiles_[otr_profile_id] = std::move(otr_profile); diff --git a/patch/patches/chrome_browser_safe_browsing.patch b/patch/patches/chrome_browser_safe_browsing.patch index 905646929..34a51188d 100644 --- a/patch/patches/chrome_browser_safe_browsing.patch +++ b/patch/patches/chrome_browser_safe_browsing.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/safe_browsing/BUILD.gn chrome/browser/safe_browsing/BUILD.gn -index e75f7bc2c574f..9dc127066abd6 100644 +index 89c2f12346bba..84c537aafb255 100644 --- chrome/browser/safe_browsing/BUILD.gn +++ chrome/browser/safe_browsing/BUILD.gn @@ -39,6 +39,7 @@ static_library("safe_browsing") { diff --git a/patch/patches/chrome_browser_startup.patch b/patch/patches/chrome_browser_startup.patch index 716b89c7e..6ed9dade2 100644 --- a/patch/patches/chrome_browser_startup.patch +++ b/patch/patches/chrome_browser_startup.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/ui/startup/startup_browser_creator.cc chrome/browser/ui/startup/startup_browser_creator.cc -index 16f7438c6f112..c5568abce8917 100644 +index d26f0998c81fc..098282f9ca599 100644 --- chrome/browser/ui/startup/startup_browser_creator.cc +++ chrome/browser/ui/startup/startup_browser_creator.cc -@@ -607,6 +607,13 @@ std::optional GetAppId(const base::CommandLine& command_line, +@@ -626,6 +626,13 @@ std::optional GetAppId(const base::CommandLine& command_line, } #endif // BUILDFLAG(IS_CHROMEOS) @@ -16,7 +16,7 @@ index 16f7438c6f112..c5568abce8917 100644 } // namespace StartupProfileMode StartupProfileModeFromReason( -@@ -1467,6 +1474,12 @@ void StartupBrowserCreator::ProcessCommandLineWithProfile( +@@ -1500,6 +1507,12 @@ void StartupBrowserCreator::ProcessCommandLineWithProfile( {profile, mode}, last_opened_profiles); } @@ -29,7 +29,7 @@ index 16f7438c6f112..c5568abce8917 100644 // static void StartupBrowserCreator::ProcessCommandLineAlreadyRunning( const base::CommandLine& command_line, -@@ -1476,6 +1489,11 @@ void StartupBrowserCreator::ProcessCommandLineAlreadyRunning( +@@ -1509,6 +1522,11 @@ void StartupBrowserCreator::ProcessCommandLineAlreadyRunning( return; } @@ -42,7 +42,7 @@ index 16f7438c6f112..c5568abce8917 100644 StartupProfileMode mode = StartupProfileModeFromReason(profile_path_info.reason); diff --git chrome/browser/ui/startup/startup_browser_creator.h chrome/browser/ui/startup/startup_browser_creator.h -index 37957dc632d0c..735819e9ceb10 100644 +index a8c47297e36b7..5f0e5a4a98c81 100644 --- chrome/browser/ui/startup/startup_browser_creator.h +++ chrome/browser/ui/startup/startup_browser_creator.h @@ -9,6 +9,7 @@ diff --git a/patch/patches/chrome_browser_webui_license.patch b/patch/patches/chrome_browser_webui_license.patch index 59a45509b..afb77f2cb 100644 --- a/patch/patches/chrome_browser_webui_license.patch +++ b/patch/patches/chrome_browser_webui_license.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/ui/webui/about/about_ui.cc chrome/browser/ui/webui/about/about_ui.cc -index d8205f05e45fb..fd867040ec470 100644 +index 4a28298d21ee8..b0044efb59bf5 100644 --- chrome/browser/ui/webui/about/about_ui.cc +++ chrome/browser/ui/webui/about/about_ui.cc @@ -90,6 +90,10 @@ @@ -13,7 +13,7 @@ index d8205f05e45fb..fd867040ec470 100644 using content::BrowserThread; namespace { -@@ -541,6 +545,11 @@ ChromeURLsUIConfig::CreateWebUIController(content::WebUI* web_ui, +@@ -537,6 +541,11 @@ ChromeURLsUIConfig::CreateWebUIController(content::WebUI* web_ui, CreditsUIConfig::CreditsUIConfig() : AboutUIConfigBase(chrome::kChromeUICreditsHost) {} @@ -25,7 +25,7 @@ index d8205f05e45fb..fd867040ec470 100644 #if !BUILDFLAG(IS_ANDROID) TermsUIConfig::TermsUIConfig() : AboutUIConfigBase(chrome::kChromeUITermsHost) {} -@@ -642,6 +651,16 @@ void AboutUIHTMLSource::StartDataRequest( +@@ -638,6 +647,16 @@ void AboutUIHTMLSource::StartDataRequest( IDS_TERMS_HTML); #endif } @@ -43,7 +43,7 @@ index d8205f05e45fb..fd867040ec470 100644 FinishDataRequest(response, std::move(callback)); } diff --git chrome/browser/ui/webui/about/about_ui.h chrome/browser/ui/webui/about/about_ui.h -index 1b8d354f098b8..e7ea1c3329918 100644 +index 3f08e01880ef0..122cf9bacc2e3 100644 --- chrome/browser/ui/webui/about/about_ui.h +++ chrome/browser/ui/webui/about/about_ui.h @@ -11,6 +11,7 @@ @@ -69,7 +69,7 @@ index 1b8d354f098b8..e7ea1c3329918 100644 // chrome://terms class TermsUIConfig : public AboutUIConfigBase { diff --git chrome/browser/ui/webui/chrome_web_ui_configs.cc chrome/browser/ui/webui/chrome_web_ui_configs.cc -index a2719d73bc701..3cc832d90e17a 100644 +index c86664f532a5d..1465b151f8704 100644 --- chrome/browser/ui/webui/chrome_web_ui_configs.cc +++ chrome/browser/ui/webui/chrome_web_ui_configs.cc @@ -6,6 +6,7 @@ @@ -80,7 +80,7 @@ index a2719d73bc701..3cc832d90e17a 100644 #include "chrome/browser/optimization_guide/optimization_guide_internals_ui.h" #include "chrome/browser/ui/webui/about/about_ui.h" #include "chrome/browser/ui/webui/accessibility/accessibility_ui.h" -@@ -210,6 +211,9 @@ void RegisterChromeWebUIConfigs() { +@@ -211,6 +212,9 @@ void RegisterChromeWebUIConfigs() { map.AddWebUIConfig(std::make_unique()); map.AddWebUIConfig(std::make_unique()); map.AddWebUIConfig(std::make_unique()); @@ -91,10 +91,10 @@ index a2719d73bc701..3cc832d90e17a 100644 map.AddWebUIConfig(std::make_unique()); map.AddWebUIConfig(std::make_unique()); diff --git chrome/common/webui_url_constants.cc chrome/common/webui_url_constants.cc -index b04b8dc5c8781..f002f6178775e 100644 +index 506d4ea46d297..b11a7b0325dc5 100644 --- chrome/common/webui_url_constants.cc +++ chrome/common/webui_url_constants.cc -@@ -96,6 +96,9 @@ base::span ChromeURLHosts() { +@@ -95,6 +95,9 @@ base::span ChromeURLHosts() { kChromeUIHistoryHost, history_clusters_internals::kChromeUIHistoryClustersInternalsHost, kChromeUIInterstitialHost, @@ -105,7 +105,7 @@ index b04b8dc5c8781..f002f6178775e 100644 #if !BUILDFLAG(IS_ANDROID) kChromeUIManagementHost, diff --git chrome/common/webui_url_constants.h chrome/common/webui_url_constants.h -index 5b811889ae545..a118638e7e629 100644 +index a5e4b8cb32f40..5efd6d78c7dc9 100644 --- chrome/common/webui_url_constants.h +++ chrome/common/webui_url_constants.h @@ -17,6 +17,7 @@ @@ -116,7 +116,7 @@ index 5b811889ae545..a118638e7e629 100644 #include "chrome/common/buildflags.h" #include "components/signin/public/base/signin_buildflags.h" #include "content/public/common/url_constants.h" -@@ -145,6 +146,10 @@ inline constexpr char kChromeUIInterstitialHost[] = "interstitials"; +@@ -144,6 +145,10 @@ inline constexpr char kChromeUIInterstitialHost[] = "interstitials"; inline constexpr char kChromeUIInterstitialURL[] = "chrome://interstitials/"; inline constexpr char kChromeUIKillHost[] = "kill"; inline constexpr char kChromeUILauncherInternalsHost[] = "launcher-internals"; diff --git a/patch/patches/chrome_browser_webui_version.patch b/patch/patches/chrome_browser_webui_version.patch index 1ba2aceac..37320067d 100644 --- a/patch/patches/chrome_browser_webui_version.patch +++ b/patch/patches/chrome_browser_webui_version.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/ui/webui/version/version_handler.cc chrome/browser/ui/webui/version/version_handler.cc -index 3c684382f63ca..f560d3c181730 100644 +index 2d8d97e4938cf..78bbdbaa8ad69 100644 --- chrome/browser/ui/webui/version/version_handler.cc +++ chrome/browser/ui/webui/version/version_handler.cc @@ -29,12 +29,23 @@ @@ -27,10 +27,10 @@ index 3c684382f63ca..f560d3c181730 100644 base::ScopedBlockingCall scoped_blocking_call(FROM_HERE, base::BlockingType::MAY_BLOCK); -@@ -50,6 +61,19 @@ void GetFilePaths(const base::FilePath& profile_path, - *profile_path_out = profile_path.LossyDisplayName(); - else +@@ -52,6 +63,19 @@ void GetFilePaths(const base::FilePath& profile_path, + } else { *profile_path_out = l10n_util::GetStringUTF16(IDS_VERSION_UI_PATH_NOTFOUND); + } + +#if BUILDFLAG(ENABLE_CEF) + base::FilePath module_path; @@ -47,7 +47,7 @@ index 3c684382f63ca..f560d3c181730 100644 } } // namespace -@@ -121,23 +145,46 @@ void VersionHandler::HandleRequestPathInfo(const base::Value::List& args) { +@@ -123,23 +147,46 @@ void VersionHandler::HandleRequestPathInfo(const base::Value::List& args) { // OnGotFilePaths. std::u16string* exec_path_buffer = new std::u16string; std::u16string* profile_path_buffer = new std::u16string; @@ -124,7 +124,7 @@ index 2f8162d7491d1..b00f0d5bf26ae 100644 // Factory for the creating refs in callbacks. base::WeakPtrFactory weak_ptr_factory_{this}; diff --git chrome/browser/ui/webui/version/version_ui.cc chrome/browser/ui/webui/version/version_ui.cc -index 6893542161a55..42238d843ce33 100644 +index e464e50866897..6c86e5096db3b 100644 --- chrome/browser/ui/webui/version/version_ui.cc +++ chrome/browser/ui/webui/version/version_ui.cc @@ -17,6 +17,7 @@ @@ -180,7 +180,7 @@ index 6893542161a55..42238d843ce33 100644 #if BUILDFLAG(IS_MAC) html_source->AddString(version_ui::kOSType, base::mac::GetOSDisplayName()); diff --git components/version_ui/BUILD.gn components/version_ui/BUILD.gn -index 913cf913dca7a..d79c330989149 100644 +index 49f73fb885870..4f1c5fa814d5b 100644 --- components/version_ui/BUILD.gn +++ components/version_ui/BUILD.gn @@ -2,6 +2,8 @@ @@ -192,7 +192,7 @@ index 913cf913dca7a..d79c330989149 100644 static_library("version_ui") { sources = [ "version_handler_helper.cc", -@@ -17,4 +19,8 @@ static_library("version_ui") { +@@ -16,4 +18,8 @@ static_library("version_ui") { "//components/variations/net", "//components/variations/service", ] @@ -303,18 +303,18 @@ index ea5f11471acf2..f604065bbe8fe 100644 // diff --git components/version_ui/version_ui_constants.cc components/version_ui/version_ui_constants.cc -index 1054d152285f7..73bfbb8241a98 100644 +index a4677847706a6..5ad9dc52045ce 100644 --- components/version_ui/version_ui_constants.cc +++ components/version_ui/version_ui_constants.cc -@@ -6,6 +6,7 @@ +@@ -5,6 +5,7 @@ + #include "components/version_ui/version_ui_constants.h" #include "build/build_config.h" - #include "build/chromeos_buildflags.h" +#include "cef/libcef/features/features.h" namespace version_ui { -@@ -92,4 +93,15 @@ const char kVersion[] = "version"; +@@ -91,4 +92,15 @@ const char kVersion[] = "version"; const char kVersionModifier[] = "version_modifier"; const char kVersionProcessorVariation[] = "version_processor_variation"; @@ -331,18 +331,18 @@ index 1054d152285f7..73bfbb8241a98 100644 + } // namespace version_ui diff --git components/version_ui/version_ui_constants.h components/version_ui/version_ui_constants.h -index 0d35047553461..a75ade64c81ad 100644 +index 5d43d7626b3c3..c61eadf18e136 100644 --- components/version_ui/version_ui_constants.h +++ components/version_ui/version_ui_constants.h -@@ -7,6 +7,7 @@ +@@ -6,6 +6,7 @@ + #define COMPONENTS_VERSION_UI_VERSION_UI_CONSTANTS_H_ #include "build/build_config.h" - #include "build/chromeos_buildflags.h" +#include "cef/libcef/features/features.h" namespace version_ui { -@@ -94,6 +95,17 @@ extern const char kVersion[]; +@@ -93,6 +94,17 @@ extern const char kVersion[]; extern const char kVersionModifier[]; extern const char kVersionProcessorVariation[]; diff --git a/patch/patches/chrome_common_logging.patch b/patch/patches/chrome_common_logging.patch index 753557588..dc5cdd588 100644 --- a/patch/patches/chrome_common_logging.patch +++ b/patch/patches/chrome_common_logging.patch @@ -1,5 +1,5 @@ diff --git chrome/common/features.gni chrome/common/features.gni -index fe2885e150688..e14778db14bad 100644 +index 418e78ecb356b..8fe49cf32a374 100644 --- chrome/common/features.gni +++ chrome/common/features.gni @@ -7,6 +7,7 @@ import("//build/config/chromeos/ui_mode.gni") @@ -19,7 +19,7 @@ index fe2885e150688..e14778db14bad 100644 # Platforms for which Chrome supports a certificate management UI that # shows the Chrome Root Store. This is specific to the v2 UI that is -@@ -67,11 +68,13 @@ declare_args() { +@@ -64,11 +65,13 @@ declare_args() { # optimize_webui was moved to ui/base/ui_features.gni } diff --git a/patch/patches/chrome_runtime.patch b/patch/patches/chrome_runtime.patch index 758811362..27c10fe17 100644 --- a/patch/patches/chrome_runtime.patch +++ b/patch/patches/chrome_runtime.patch @@ -1,5 +1,5 @@ diff --git chrome/app/chrome_main_delegate.cc chrome/app/chrome_main_delegate.cc -index 901809233186a..be847ede0827b 100644 +index f8530b82f9fe4..ea235f7747807 100644 --- chrome/app/chrome_main_delegate.cc +++ chrome/app/chrome_main_delegate.cc @@ -42,6 +42,7 @@ @@ -232,7 +232,7 @@ index 8f5c477acba39..ff2f90a8bf27b 100644 base::PathService::OverrideAndCreateIfNeeded( diff --git chrome/browser/chrome_browser_main.cc chrome/browser/chrome_browser_main.cc -index efdb429cbe04e..17e949d631200 100644 +index a6ecd483d6428..251faf73f46dd 100644 --- chrome/browser/chrome_browser_main.cc +++ chrome/browser/chrome_browser_main.cc @@ -52,6 +52,7 @@ @@ -243,7 +243,7 @@ index efdb429cbe04e..17e949d631200 100644 #include "chrome/browser/about_flags.h" #include "chrome/browser/active_use_util.h" #include "chrome/browser/after_startup_task_utils.h" -@@ -528,7 +529,7 @@ void ProcessSingletonNotificationCallbackImpl( +@@ -527,7 +528,7 @@ void ProcessSingletonNotificationCallbackImpl( return; } @@ -252,7 +252,7 @@ index efdb429cbe04e..17e949d631200 100644 // The uninstall command-line switch is handled by the origin process; see // ChromeMainDelegate::PostEarlyInitialization(...). The other process won't // be able to become the singleton process and will display a window asking -@@ -843,7 +844,7 @@ int ChromeBrowserMainParts::PreEarlyInitialization() { +@@ -842,7 +843,7 @@ int ChromeBrowserMainParts::PreEarlyInitialization() { return content::RESULT_CODE_NORMAL_EXIT; } @@ -261,7 +261,7 @@ index efdb429cbe04e..17e949d631200 100644 // If we are running stale binaries then relaunch and exit immediately. if (upgrade_util::IsRunningOldChrome()) { if (!upgrade_util::RelaunchChromeBrowser( -@@ -856,7 +857,7 @@ int ChromeBrowserMainParts::PreEarlyInitialization() { +@@ -855,7 +856,7 @@ int ChromeBrowserMainParts::PreEarlyInitialization() { // result in browser startup bailing. return chrome::RESULT_CODE_NORMAL_EXIT_UPGRADE_RELAUNCHED; } @@ -270,7 +270,7 @@ index efdb429cbe04e..17e949d631200 100644 return load_local_state_result; } -@@ -961,7 +962,7 @@ int ChromeBrowserMainParts::OnLocalStateLoaded( +@@ -960,7 +961,7 @@ int ChromeBrowserMainParts::OnLocalStateLoaded( browser_process_->local_state()); platform_management_service->RefreshCache(base::NullCallback()); @@ -279,7 +279,7 @@ index efdb429cbe04e..17e949d631200 100644 if (first_run::IsChromeFirstRun()) { bool stats_default; if (GoogleUpdateSettings::GetCollectStatsConsentDefault(&stats_default)) { -@@ -974,7 +975,7 @@ int ChromeBrowserMainParts::OnLocalStateLoaded( +@@ -973,7 +974,7 @@ int ChromeBrowserMainParts::OnLocalStateLoaded( : metrics::EnableMetricsDefault::OPT_IN); } } @@ -288,7 +288,7 @@ index efdb429cbe04e..17e949d631200 100644 std::string locale = startup_data_->chrome_feature_list_creator()->actual_locale(); -@@ -1007,6 +1008,7 @@ int ChromeBrowserMainParts::ApplyFirstRunPrefs() { +@@ -1006,6 +1007,7 @@ int ChromeBrowserMainParts::ApplyFirstRunPrefs() { #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) master_prefs_ = std::make_unique(); @@ -296,7 +296,7 @@ index efdb429cbe04e..17e949d631200 100644 std::unique_ptr installer_initial_prefs = startup_data_->chrome_feature_list_creator()->TakeInitialPrefs(); if (!installer_initial_prefs) -@@ -1040,6 +1042,7 @@ int ChromeBrowserMainParts::ApplyFirstRunPrefs() { +@@ -1039,6 +1041,7 @@ int ChromeBrowserMainParts::ApplyFirstRunPrefs() { master_prefs_->confirm_to_quit); } #endif // BUILDFLAG(IS_MAC) @@ -304,7 +304,7 @@ index efdb429cbe04e..17e949d631200 100644 #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) return content::RESULT_CODE_NORMAL_EXIT; } -@@ -1112,6 +1115,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { +@@ -1111,6 +1114,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { browser_process_->browser_policy_connector()->OnResourceBundleCreated(); @@ -312,7 +312,7 @@ index efdb429cbe04e..17e949d631200 100644 // Android does first run in Java instead of native. // Chrome OS has its own out-of-box-experience code. #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) -@@ -1133,6 +1137,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { +@@ -1132,6 +1136,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { #endif // BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) } #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) @@ -320,7 +320,7 @@ index efdb429cbe04e..17e949d631200 100644 #if BUILDFLAG(IS_MAC) #if defined(ARCH_CPU_X86_64) -@@ -1504,6 +1509,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1503,6 +1508,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { browser_process_->PreMainMessageLoopRun(); #if BUILDFLAG(IS_WIN) @@ -328,7 +328,7 @@ index efdb429cbe04e..17e949d631200 100644 // If the command line specifies 'uninstall' then we need to work here // unless we detect another chrome browser running. if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kUninstall)) { -@@ -1515,6 +1521,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1514,6 +1520,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { return ChromeBrowserMainPartsWin::HandleIconsCommands( *base::CommandLine::ForCurrentProcess()); } @@ -336,7 +336,7 @@ index efdb429cbe04e..17e949d631200 100644 ui::SelectFileDialog::SetFactory( std::make_unique()); -@@ -1537,6 +1544,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1536,6 +1543,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { } #endif // BUILDFLAG(CHROME_FOR_TESTING) @@ -344,7 +344,7 @@ index efdb429cbe04e..17e949d631200 100644 if (base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kMakeDefaultBrowser)) { bool is_managed = g_browser_process->local_state()->IsManagedPreference( -@@ -1550,18 +1558,22 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1549,18 +1557,22 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { ? static_cast(content::RESULT_CODE_NORMAL_EXIT) : static_cast(chrome::RESULT_CODE_SHELL_INTEGRATION_FAILED); } @@ -367,7 +367,7 @@ index efdb429cbe04e..17e949d631200 100644 #if !BUILDFLAG(IS_ANDROID) && BUILDFLAG(ENABLE_DOWNGRADE_PROCESSING) // Begin relaunch processing immediately if User Data migration is required -@@ -1600,7 +1612,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1599,7 +1611,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { } #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS) @@ -376,7 +376,7 @@ index efdb429cbe04e..17e949d631200 100644 // Check if there is any machine level Chrome installed on the current // machine. If yes and the current Chrome process is user level, we do not // allow the user level Chrome to run. So we notify the user and uninstall -@@ -1609,7 +1621,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1608,7 +1620,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { // obtained but before potentially creating the first run sentinel). if (ChromeBrowserMainPartsWin::CheckMachineLevelInstall()) return chrome::RESULT_CODE_MACHINE_LEVEL_INSTALL_EXISTS; @@ -385,7 +385,7 @@ index efdb429cbe04e..17e949d631200 100644 // Desktop construction occurs here, (required before profile creation). PreProfileInit(); -@@ -1682,6 +1694,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1681,6 +1693,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { // Call `PostProfileInit()`and set it up for profiles created later. profile_init_manager_ = std::make_unique(this, profile); @@ -393,7 +393,7 @@ index efdb429cbe04e..17e949d631200 100644 #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) // Execute first run specific code after the PrefService has been initialized // and preferences have been registered since some of the import code depends -@@ -1715,6 +1728,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1714,6 +1727,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { *base::CommandLine::ForCurrentProcess()); } #endif // BUILDFLAG(IS_WIN) @@ -401,7 +401,7 @@ index efdb429cbe04e..17e949d631200 100644 // Configure modules that need access to resources. net::NetModule::SetResourceProvider(ChromeNetResourceProvider); -@@ -1806,6 +1820,11 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1805,6 +1819,11 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { g_browser_process->profile_manager()->GetLastOpenedProfiles(); } #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -413,7 +413,7 @@ index efdb429cbe04e..17e949d631200 100644 // This step is costly. if (browser_creator_->Start(*base::CommandLine::ForCurrentProcess(), base::FilePath(), profile_info, -@@ -1838,11 +1857,14 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1837,11 +1856,14 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { // Create the RunLoop for MainMessageLoopRun() to use and transfer // ownership of the browser's lifetime to the BrowserProcess. @@ -465,18 +465,18 @@ index e26e3625c99c8..c0d4a95607e37 100644 +#endif } diff --git chrome/browser/chrome_content_browser_client.cc chrome/browser/chrome_content_browser_client.cc -index e87d1bce19d63..43596857c5b8c 100644 +index a1a8e77a2ef3f..cdbae8a69a450 100644 --- chrome/browser/chrome_content_browser_client.cc +++ chrome/browser/chrome_content_browser_client.cc -@@ -48,6 +48,7 @@ +@@ -47,6 +47,7 @@ + #include "build/branding_buildflags.h" #include "build/build_config.h" - #include "build/chromeos_buildflags.h" #include "build/config/chromebox_for_meetings/buildflags.h" // PLATFORM_CFM +#include "cef/libcef/features/features.h" #include "chrome/browser/after_startup_task_utils.h" #include "chrome/browser/ai/ai_manager.h" #include "chrome/browser/app_mode/app_mode_utils.h" -@@ -1533,6 +1534,8 @@ ChromeContentBrowserClient::GetPopupNavigationDelegateFactoryForTesting() { +@@ -1493,6 +1494,8 @@ ChromeContentBrowserClient::GetPopupNavigationDelegateFactoryForTesting() { } ChromeContentBrowserClient::ChromeContentBrowserClient() { @@ -485,7 +485,7 @@ index e87d1bce19d63..43596857c5b8c 100644 #if BUILDFLAG(ENABLE_PLUGINS) extra_parts_.push_back( std::make_unique()); -@@ -1570,6 +1573,11 @@ ChromeContentBrowserClient::~ChromeContentBrowserClient() { +@@ -1530,6 +1533,11 @@ ChromeContentBrowserClient::~ChromeContentBrowserClient() { } } @@ -497,7 +497,7 @@ index e87d1bce19d63..43596857c5b8c 100644 // static void ChromeContentBrowserClient::RegisterLocalStatePrefs( PrefRegistrySimple* registry) { -@@ -4041,30 +4049,25 @@ bool UpdatePreferredColorScheme(WebPreferences* web_prefs, +@@ -3940,30 +3948,25 @@ bool UpdatePreferredColorScheme(WebPreferences* web_prefs, web_prefs->preferred_color_scheme; } #else @@ -545,7 +545,7 @@ index e87d1bce19d63..43596857c5b8c 100644 #endif // BUILDFLAG(IS_ANDROID) // Reauth WebUI doesn't support dark mode yet because it shares the dialog -@@ -4820,9 +4823,11 @@ void ChromeContentBrowserClient::BrowserURLHandlerCreated( +@@ -4717,9 +4720,11 @@ void ChromeContentBrowserClient::BrowserURLHandlerCreated( &search::HandleNewTabURLReverseRewrite); #endif // BUILDFLAG(IS_ANDROID) @@ -557,8 +557,8 @@ index e87d1bce19d63..43596857c5b8c 100644 } base::FilePath ChromeContentBrowserClient::GetDefaultDownloadDirectory() { -@@ -6933,7 +6938,7 @@ void ChromeContentBrowserClient::OnNetworkServiceCreated( - #endif +@@ -6783,7 +6788,7 @@ void ChromeContentBrowserClient::OnNetworkServiceCreated( + } } -void ChromeContentBrowserClient::ConfigureNetworkContextParams( @@ -566,7 +566,7 @@ index e87d1bce19d63..43596857c5b8c 100644 content::BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -6951,6 +6956,8 @@ void ChromeContentBrowserClient::ConfigureNetworkContextParams( +@@ -6801,6 +6806,8 @@ void ChromeContentBrowserClient::ConfigureNetworkContextParams( network_context_params->user_agent = GetUserAgentBasedOnPolicy(context); network_context_params->accept_language = GetApplicationLocale(); } @@ -575,7 +575,7 @@ index e87d1bce19d63..43596857c5b8c 100644 } std::vector -@@ -8078,11 +8085,11 @@ void ChromeContentBrowserClient::OnKeepaliveRequestStarted( +@@ -7911,11 +7918,11 @@ void ChromeContentBrowserClient::OnKeepaliveRequestStarted( const auto now = base::TimeTicks::Now(); const auto timeout = GetKeepaliveTimerTimeout(context); keepalive_deadline_ = std::max(keepalive_deadline_, now + timeout); @@ -589,7 +589,7 @@ index e87d1bce19d63..43596857c5b8c 100644 FROM_HERE, keepalive_deadline_ - now, base::BindOnce( &ChromeContentBrowserClient::OnKeepaliveTimerFired, -@@ -8104,7 +8111,8 @@ void ChromeContentBrowserClient::OnKeepaliveRequestFinished() { +@@ -7937,7 +7944,8 @@ void ChromeContentBrowserClient::OnKeepaliveRequestFinished() { --num_keepalive_requests_; if (num_keepalive_requests_ == 0) { DVLOG(1) << "Stopping the keepalive timer"; @@ -599,7 +599,7 @@ index e87d1bce19d63..43596857c5b8c 100644 // This deletes the keep alive handle attached to the timer function and // unblock the shutdown sequence. } -@@ -8279,7 +8287,7 @@ void ChromeContentBrowserClient::OnKeepaliveTimerFired( +@@ -8112,7 +8120,7 @@ void ChromeContentBrowserClient::OnKeepaliveTimerFired( const auto now = base::TimeTicks::Now(); const auto then = keepalive_deadline_; if (now < then) { @@ -609,10 +609,10 @@ index e87d1bce19d63..43596857c5b8c 100644 base::BindOnce(&ChromeContentBrowserClient::OnKeepaliveTimerFired, weak_factory_.GetWeakPtr(), diff --git chrome/browser/chrome_content_browser_client.h chrome/browser/chrome_content_browser_client.h -index 7317a435cae03..ce4826d7a6276 100644 +index 7e866a09fc060..0b7403c116151 100644 --- chrome/browser/chrome_content_browser_client.h +++ chrome/browser/chrome_content_browser_client.h -@@ -156,6 +156,8 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { +@@ -155,6 +155,8 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { ~ChromeContentBrowserClient() override; @@ -621,7 +621,7 @@ index 7317a435cae03..ce4826d7a6276 100644 // TODO(crbug.com/41356866): This file is about calls from content/ out // to chrome/ to get values or notify about events, but both of these // functions are from chrome/ to chrome/ and don't involve content/ at all. -@@ -727,7 +729,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { +@@ -721,7 +723,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { override; void OnNetworkServiceCreated( network::mojom::NetworkService* network_service) override; @@ -630,7 +630,7 @@ index 7317a435cae03..ce4826d7a6276 100644 content::BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -1309,7 +1311,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { +@@ -1319,7 +1321,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { #if !BUILDFLAG(IS_ANDROID) uint64_t num_keepalive_requests_ = 0; @@ -640,7 +640,7 @@ index 7317a435cae03..ce4826d7a6276 100644 #endif diff --git chrome/browser/prefs/browser_prefs.cc chrome/browser/prefs/browser_prefs.cc -index 39ec9e16a28b1..4f4a0307f5a9f 100644 +index 48d8f868628b1..c0e765902a76e 100644 --- chrome/browser/prefs/browser_prefs.cc +++ chrome/browser/prefs/browser_prefs.cc @@ -16,6 +16,7 @@ @@ -662,7 +662,7 @@ index 39ec9e16a28b1..4f4a0307f5a9f 100644 #if BUILDFLAG(ENABLE_EXTENSIONS) #include "chrome/browser/accessibility/animation_policy_prefs.h" #include "chrome/browser/apps/platform_apps/shortcut_manager.h" -@@ -1929,7 +1934,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1949,7 +1954,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING) #endif // BUILDFLAG(IS_WIN) @@ -672,7 +672,7 @@ index 39ec9e16a28b1..4f4a0307f5a9f 100644 downgrade::RegisterPrefs(registry); #endif -@@ -1988,6 +1994,11 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -2010,6 +2016,11 @@ void RegisterLocalState(PrefRegistrySimple* registry) { // This is intentionally last. RegisterLocalStatePrefsForMigration(registry); @@ -684,7 +684,7 @@ index 39ec9e16a28b1..4f4a0307f5a9f 100644 } // Register prefs applicable to all profiles. -@@ -2434,6 +2445,10 @@ void RegisterUserProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2458,6 +2469,10 @@ void RegisterUserProfilePrefs(user_prefs::PrefRegistrySyncable* registry, const std::string& locale) { RegisterProfilePrefs(registry, locale); diff --git a/patch/patches/chrome_runtime_views.patch b/patch/patches/chrome_runtime_views.patch index 03dfefec0..546a75415 100644 --- a/patch/patches/chrome_runtime_views.patch +++ b/patch/patches/chrome_runtime_views.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/ui/browser_command_controller.cc chrome/browser/ui/browser_command_controller.cc -index 3c9892007176f..2b119304bbe61 100644 +index 6ebb06992652c..f3f058dddbc88 100644 --- chrome/browser/ui/browser_command_controller.cc +++ chrome/browser/ui/browser_command_controller.cc -@@ -414,6 +414,7 @@ bool BrowserCommandController::ExecuteCommandWithDisposition( +@@ -421,6 +421,7 @@ bool BrowserCommandController::ExecuteCommandWithDisposition( // choose to not implement CommandUpdaterDelegate inside this class and // therefore command_updater_ doesn't have the delegate set). if (!SupportsCommand(id) || !IsCommandEnabled(id)) { @@ -10,7 +10,7 @@ index 3c9892007176f..2b119304bbe61 100644 return false; } -@@ -430,6 +431,13 @@ bool BrowserCommandController::ExecuteCommandWithDisposition( +@@ -438,6 +439,13 @@ bool BrowserCommandController::ExecuteCommandWithDisposition( DCHECK(command_updater_.IsCommandEnabled(id)) << "Invalid/disabled command " << id; @@ -24,7 +24,7 @@ index 3c9892007176f..2b119304bbe61 100644 // The order of commands in this switch statement must match the function // declaration order in browser.h! switch (id) { -@@ -1210,11 +1218,13 @@ void BrowserCommandController::TabRestoreServiceLoaded( +@@ -1224,11 +1232,13 @@ void BrowserCommandController::TabRestoreServiceLoaded( // BrowserCommandController, private: bool BrowserCommandController::IsShowingMainUI() { @@ -41,7 +41,7 @@ index 3c9892007176f..2b119304bbe61 100644 void BrowserCommandController::InitCommandState() { diff --git chrome/browser/ui/toolbar/app_menu_model.cc chrome/browser/ui/toolbar/app_menu_model.cc -index 2e2efe7e3e36e..8e7ee756c164d 100644 +index b10f798217379..21ae3aae53e7f 100644 --- chrome/browser/ui/toolbar/app_menu_model.cc +++ chrome/browser/ui/toolbar/app_menu_model.cc @@ -734,10 +734,12 @@ FindAndEditSubMenuModel::FindAndEditSubMenuModel( @@ -93,7 +93,7 @@ index 2e2efe7e3e36e..8e7ee756c164d 100644 + } + visible_ct = 0; + } else if (is_visible.Run(model->GetCommandIdAt(i))) { -+ last_separator = absl::nullopt; ++ last_separator = std::nullopt; + visible_ct++; + + if (type == ui::MenuModel::TYPE_SUBMENU) { @@ -115,7 +115,7 @@ index 2e2efe7e3e36e..8e7ee756c164d 100644 } // namespace //////////////////////////////////////////////////////////////////////////////// -@@ -1719,7 +1772,7 @@ bool AppMenuModel::IsCommandIdChecked(int command_id) const { +@@ -1731,7 +1784,7 @@ bool AppMenuModel::IsCommandIdChecked(int command_id) const { return false; } @@ -124,7 +124,7 @@ index 2e2efe7e3e36e..8e7ee756c164d 100644 GlobalError* error = GlobalErrorServiceFactory::GetForProfile(browser_->profile()) ->GetGlobalErrorByMenuItemCommandID(command_id); -@@ -1735,6 +1788,30 @@ bool AppMenuModel::IsCommandIdEnabled(int command_id) const { +@@ -1747,6 +1800,30 @@ bool AppMenuModel::IsCommandIdEnabled(int command_id) const { } } @@ -155,7 +155,7 @@ index 2e2efe7e3e36e..8e7ee756c164d 100644 bool AppMenuModel::IsCommandIdAlerted(int command_id) const { if (command_id == IDC_VIEW_PASSWORDS || command_id == IDC_SHOW_PASSWORD_MANAGER) { -@@ -1891,8 +1968,10 @@ void AppMenuModel::Build() { +@@ -1902,8 +1979,10 @@ void AppMenuModel::Build() { IDS_CLEAR_BROWSING_DATA, kTrashCanRefreshIcon); @@ -166,7 +166,7 @@ index 2e2efe7e3e36e..8e7ee756c164d 100644 AddSeparator(ui::NORMAL_SEPARATOR); AddItemWithStringIdAndVectorIcon(this, IDC_PRINT, IDS_PRINT, kPrintMenuIcon); -@@ -1988,6 +2067,11 @@ void AppMenuModel::Build() { +@@ -1999,6 +2078,11 @@ void AppMenuModel::Build() { } #endif // !BUILDFLAG(IS_CHROMEOS_ASH) @@ -200,10 +200,10 @@ index 84787f30b7b01..df979d0f711a0 100644 // Adds actionable global error menu items to the menu. // Examples: Extension permissions and sign in errors. diff --git chrome/browser/ui/views/find_bar_host.cc chrome/browser/ui/views/find_bar_host.cc -index 614be06c945a4..88c7567d9f55e 100644 +index 38fe5a02de21d..2bd4508d5c024 100644 --- chrome/browser/ui/views/find_bar_host.cc +++ chrome/browser/ui/views/find_bar_host.cc -@@ -590,6 +590,14 @@ gfx::Rect FindBarHost::GetDialogPosition(gfx::Rect avoid_overlapping_rect) { +@@ -604,6 +604,14 @@ gfx::Rect FindBarHost::GetDialogPosition(gfx::Rect avoid_overlapping_rect) { // The BrowserView does Layout for the components that we care about // positioning relative to, so we ask it to tell us where we should go. gfx::Rect find_bar_bounds = browser_view_->GetFindBarBoundingBox(); @@ -219,7 +219,7 @@ index 614be06c945a4..88c7567d9f55e 100644 return gfx::Rect(); } diff --git chrome/browser/ui/views/frame/browser_frame.cc chrome/browser/ui/views/frame/browser_frame.cc -index e3aa84f1eb3f5..8ccf7604083fe 100644 +index 806679c846f15..5c685e93631c8 100644 --- chrome/browser/ui/views/frame/browser_frame.cc +++ chrome/browser/ui/views/frame/browser_frame.cc @@ -112,15 +112,25 @@ ui::ColorProviderKey::SchemeVariant GetSchemeVariant( @@ -320,7 +320,7 @@ index e3aa84f1eb3f5..8ccf7604083fe 100644 chrome::SaveWindowWorkspace(browser_view_->browser(), GetWorkspace()); chrome::SaveWindowVisibleOnAllWorkspaces(browser_view_->browser(), IsVisibleOnAllWorkspaces()); -@@ -572,6 +606,13 @@ void BrowserFrame::SelectNativeTheme() { +@@ -576,6 +610,13 @@ void BrowserFrame::SelectNativeTheme() { return; } @@ -334,7 +334,7 @@ index e3aa84f1eb3f5..8ccf7604083fe 100644 // Ignore the system theme for web apps with window-controls-overlay as the // display_override so the web contents can blend with the overlay by using // the developer-provided theme color for a better experience. Context: -@@ -637,5 +678,8 @@ bool BrowserFrame::RegenerateFrameOnThemeChange( +@@ -641,5 +682,8 @@ bool BrowserFrame::RegenerateFrameOnThemeChange( } bool BrowserFrame::IsIncognitoBrowser() const { @@ -397,12 +397,12 @@ index 3d8a15049d4d2..66c4789581fe1 100644 // regenerated. bool RegenerateFrameOnThemeChange(BrowserThemeChangeType theme_change_type); diff --git chrome/browser/ui/views/frame/browser_view.cc chrome/browser/ui/views/frame/browser_view.cc -index 74e8fac8aa98c..6113937f860c4 100644 +index d7096d08fca43..4b878694700ed 100644 --- chrome/browser/ui/views/frame/browser_view.cc +++ chrome/browser/ui/views/frame/browser_view.cc -@@ -362,10 +362,6 @@ constexpr base::FeatureParam kLoadingTabAnimationFrameDelay = { - &kChangeFrameRateOfLoadingTabAnimation, "loading_tab_animation_frame_delay", - base::Milliseconds(30)}; +@@ -351,10 +351,6 @@ using web_modal::WebContentsModalDialogHost; + + namespace { -// The name of a key to store on the window handle so that other code can -// locate this object using just the handle. @@ -411,7 +411,7 @@ index 74e8fac8aa98c..6113937f860c4 100644 #if BUILDFLAG(IS_CHROMEOS) // UMA histograms that record animation smoothness for tab loading animation. constexpr char kTabLoadingSmoothnessHistogramName[] = -@@ -765,6 +761,14 @@ class BrowserViewLayoutDelegateImpl : public BrowserViewLayoutDelegate { +@@ -764,6 +760,14 @@ class BrowserViewLayoutDelegateImpl : public BrowserViewLayoutDelegate { return browser_view_->frame()->GetTopInset() - browser_view_->y(); } @@ -426,7 +426,7 @@ index 74e8fac8aa98c..6113937f860c4 100644 bool IsToolbarVisible() const override { return browser_view_->IsToolbarVisible(); } -@@ -916,11 +920,21 @@ class BrowserView::AccessibilityModeObserver : public ui::AXModeObserver { +@@ -915,11 +919,21 @@ class BrowserView::AccessibilityModeObserver : public ui::AXModeObserver { /////////////////////////////////////////////////////////////////////////////// // BrowserView, public: @@ -446,10 +446,10 @@ index 74e8fac8aa98c..6113937f860c4 100644 + DCHECK(!browser_); + browser_ = std::move(browser); + - SetShowIcon( - ::ShouldShowWindowIcon(browser_.get(), AppUsesWindowControlsOverlay())); + SetShowIcon(::ShouldShowWindowIcon( + browser_.get(), AppUsesWindowControlsOverlay(), AppUsesTabbed())); -@@ -1022,8 +1036,15 @@ BrowserView::BrowserView(std::unique_ptr browser) +@@ -1021,8 +1035,15 @@ BrowserView::BrowserView(std::unique_ptr browser) contents_container->SetLayoutManager(std::make_unique( devtools_web_view_, contents_web_view_, watermark_view_)); @@ -467,7 +467,7 @@ index 74e8fac8aa98c..6113937f860c4 100644 contents_separator_ = top_container_->AddChildView(std::make_unique()); -@@ -1113,7 +1134,9 @@ void BrowserView::ToggleCompactModeUI() { +@@ -1112,7 +1133,9 @@ void BrowserView::ToggleCompactModeUI() { } BrowserView::~BrowserView() { @@ -477,7 +477,7 @@ index 74e8fac8aa98c..6113937f860c4 100644 // Destroy the top controls slide controller first as it depends on the // tabstrip model and the browser frame. -@@ -1121,7 +1144,9 @@ BrowserView::~BrowserView() { +@@ -1120,7 +1143,9 @@ BrowserView::~BrowserView() { // All the tabs should have been destroyed already. If we were closed by the // OS with some tabs than the NativeBrowserFrame should have destroyed them. @@ -487,7 +487,7 @@ index 74e8fac8aa98c..6113937f860c4 100644 // Stop the animation timer explicitly here to avoid running it in a nested // message loop, which may run by Browser destructor. -@@ -1130,17 +1155,18 @@ BrowserView::~BrowserView() { +@@ -1129,17 +1154,18 @@ BrowserView::~BrowserView() { // Immersive mode may need to reparent views before they are removed/deleted. immersive_mode_controller_.reset(); @@ -510,7 +510,7 @@ index 74e8fac8aa98c..6113937f860c4 100644 // These are raw pointers to child views, so they need to be set to null // before `RemoveAllChildViews()` is called to avoid dangling. -@@ -1706,6 +1732,16 @@ gfx::Point BrowserView::GetThemeOffsetFromBrowserView() const { +@@ -1713,6 +1739,16 @@ gfx::Point BrowserView::GetThemeOffsetFromBrowserView() const { ThemeProperties::kFrameHeightAboveTabs - browser_view_origin.y()); } @@ -527,35 +527,35 @@ index 74e8fac8aa98c..6113937f860c4 100644 // static: BrowserView::DevToolsDockedPlacement BrowserView::GetDevToolsDockedPlacement( const gfx::Rect& contents_webview_bounds, -@@ -2095,9 +2131,14 @@ void BrowserView::OnExclusiveAccessUserInput() { +@@ -2113,7 +2149,13 @@ void BrowserView::OnExclusiveAccessUserInput() { bool BrowserView::ShouldHideUIForFullscreen() const { // Immersive mode needs UI for the slide-down top panel. -- if (immersive_mode_controller_->IsEnabled()) +- if (immersive_mode_controller_->IsEnabled()) { + // Avoid callback into |immersive_mode_controller_| during construction. + // See CEF issue #3527. -+ if (immersive_mode_controller_ && -+ immersive_mode_controller_->IsEnabled()) - return false; - -+ if (!frame_->GetFrameView()) ++ if (immersive_mode_controller_ && immersive_mode_controller_->IsEnabled()) { + return false; - return frame_->GetFrameView()->ShouldHideTopUIForFullscreen(); - } ++ } ++ ++ if (!frame_->GetFrameView()) { + return false; + } -@@ -3283,7 +3324,8 @@ views::View* BrowserView::GetTopContainer() { +@@ -3305,7 +3347,9 @@ views::View* BrowserView::GetTopContainer() { } DownloadBubbleUIController* BrowserView::GetDownloadBubbleUIController() { - DCHECK(toolbar_button_provider_); -+ if (!toolbar_button_provider_) ++ if (!toolbar_button_provider_) { + return nullptr; - if (auto* download_button = toolbar_button_provider_->GetDownloadButton()) ++ } + if (auto* download_button = toolbar_button_provider_->GetDownloadButton()) { return download_button->bubble_controller(); - return nullptr; -@@ -3872,7 +3914,8 @@ void BrowserView::ReparentTopContainerForEndOfImmersive() { - if (top_container()->parent() == this) + } +@@ -3913,7 +3957,8 @@ void BrowserView::ReparentTopContainerForEndOfImmersive() { return; + } - overlay_view_->SetVisible(false); + if (overlay_view_) @@ -563,7 +563,7 @@ index 74e8fac8aa98c..6113937f860c4 100644 top_container()->DestroyLayer(); AddChildViewAt(top_container(), 0); EnsureFocusOrder(); -@@ -4363,11 +4406,38 @@ void BrowserView::GetAccessiblePanes(std::vector* panes) { +@@ -4431,11 +4476,38 @@ void BrowserView::GetAccessiblePanes(std::vector* panes) { bool BrowserView::ShouldDescendIntoChildForEventHandling( gfx::NativeView child, const gfx::Point& location) { @@ -604,7 +604,7 @@ index 74e8fac8aa98c..6113937f860c4 100644 // Draggable regions are defined relative to the web contents. gfx::Point point_in_contents_web_view_coords(location); views::View::ConvertPointToTarget(GetWidget()->GetRootView(), -@@ -4376,7 +4446,7 @@ bool BrowserView::ShouldDescendIntoChildForEventHandling( +@@ -4444,7 +4516,7 @@ bool BrowserView::ShouldDescendIntoChildForEventHandling( // Draggable regions should be ignored for clicks into any browser view's // owned widgets, for example alerts, permission prompts or find bar. @@ -613,7 +613,7 @@ index 74e8fac8aa98c..6113937f860c4 100644 point_in_contents_web_view_coords.x(), point_in_contents_web_view_coords.y()) || WidgetOwnedByAnchorContainsPoint(point_in_contents_web_view_coords); -@@ -4487,8 +4557,10 @@ void BrowserView::Layout(PassKey) { +@@ -4558,8 +4630,10 @@ void BrowserView::Layout(PassKey) { // TODO(jamescook): Why was this in the middle of layout code? toolbar_->location_bar()->omnibox_view()->SetFocusBehavior( @@ -626,7 +626,7 @@ index 74e8fac8aa98c..6113937f860c4 100644 // Some of the situations when the BrowserView is laid out are: // - Enter/exit immersive fullscreen mode. -@@ -4554,6 +4626,11 @@ void BrowserView::AddedToWidget() { +@@ -4626,6 +4700,11 @@ void BrowserView::AddedToWidget() { SetThemeProfileForWindow(GetNativeWindow(), browser_->profile()); #endif @@ -638,23 +638,25 @@ index 74e8fac8aa98c..6113937f860c4 100644 toolbar_->Init(); // TODO(pbos): Investigate whether the side panels should be creatable when -@@ -4596,13 +4673,9 @@ void BrowserView::AddedToWidget() { +@@ -4668,14 +4747,10 @@ void BrowserView::AddedToWidget() { EnsureFocusOrder(); - // This browser view may already have a custom button provider set (e.g the - // hosted app frame). -- if (!toolbar_button_provider_) +- if (!toolbar_button_provider_) { - SetToolbarButtonProvider(toolbar_); +- } - frame_->OnBrowserViewInitViewsComplete(); - frame_->GetFrameView()->UpdateMinimumSize(); -+ if (frame_->GetFrameView()) ++ if (frame_->GetFrameView()) { + frame_->GetFrameView()->UpdateMinimumSize(); ++ } using_native_frame_ = frame_->ShouldUseNativeFrame(); MaybeInitializeWebUITabStrip(); -@@ -4984,7 +5057,8 @@ void BrowserView::ProcessFullscreen(bool fullscreen, const int64_t display_id) { +@@ -5066,7 +5141,8 @@ void BrowserView::ProcessFullscreen(bool fullscreen, const int64_t display_id) { // Undo our anti-jankiness hacks and force a re-layout. in_process_fullscreen_ = false; ToolbarSizeChanged(false); @@ -664,7 +666,7 @@ index 74e8fac8aa98c..6113937f860c4 100644 } void BrowserView::RequestFullscreen(bool fullscreen, int64_t display_id) { -@@ -5468,6 +5542,8 @@ Profile* BrowserView::GetProfile() { +@@ -5562,6 +5638,8 @@ Profile* BrowserView::GetProfile() { } void BrowserView::UpdateUIForTabFullscreen() { @@ -673,7 +675,7 @@ index 74e8fac8aa98c..6113937f860c4 100644 frame()->GetFrameView()->UpdateFullscreenTopUI(); } -@@ -5494,6 +5570,8 @@ bool BrowserView::CanUserEnterFullscreen() const { +@@ -5591,6 +5669,8 @@ bool BrowserView::CanUserEnterFullscreen() const { } bool BrowserView::CanUserExitFullscreen() const { @@ -683,7 +685,7 @@ index 74e8fac8aa98c..6113937f860c4 100644 } diff --git chrome/browser/ui/views/frame/browser_view.h chrome/browser/ui/views/frame/browser_view.h -index 37ccc8d71c797..13bc19bc97264 100644 +index 121c651acf814..9d9b86da4705a 100644 --- chrome/browser/ui/views/frame/browser_view.h +++ chrome/browser/ui/views/frame/browser_view.h @@ -138,11 +138,16 @@ class BrowserView : public BrowserWindow, @@ -703,7 +705,7 @@ index 37ccc8d71c797..13bc19bc97264 100644 void set_frame(BrowserFrame* frame) { frame_ = frame; paint_as_active_subscription_ = -@@ -858,6 +863,10 @@ class BrowserView : public BrowserWindow, +@@ -859,6 +864,10 @@ class BrowserView : public BrowserWindow, void Copy(); void Paste(); @@ -714,7 +716,7 @@ index 37ccc8d71c797..13bc19bc97264 100644 protected: // Enumerates where the devtools are docked relative to the browser's main // web contents. -@@ -881,6 +890,8 @@ class BrowserView : public BrowserWindow, +@@ -882,6 +891,8 @@ class BrowserView : public BrowserWindow, const gfx::Rect& contents_webview_bounds, const gfx::Rect& local_webview_container_bounds); @@ -724,7 +726,7 @@ index 37ccc8d71c797..13bc19bc97264 100644 // Do not friend BrowserViewLayout. Use the BrowserViewLayoutDelegate // interface to keep these two classes decoupled and testable. diff --git chrome/browser/ui/views/frame/browser_view_layout.cc chrome/browser/ui/views/frame/browser_view_layout.cc -index 38064da1c8818..98ecdff6ce089 100644 +index 0c01106d900a3..42ce123ef2b01 100644 --- chrome/browser/ui/views/frame/browser_view_layout.cc +++ chrome/browser/ui/views/frame/browser_view_layout.cc @@ -53,6 +53,10 @@ @@ -781,16 +783,16 @@ index 38064da1c8818..98ecdff6ce089 100644 // Add/remove observer. void AddObserver(ModalDialogHostObserver* observer) override { observer_list_.AddObserver(observer); -@@ -477,6 +492,8 @@ void BrowserViewLayout::Layout(views::View* browser_view) { - if (exclusive_access_bubble) +@@ -480,6 +495,8 @@ void BrowserViewLayout::Layout(views::View* browser_view) { exclusive_access_bubble->RepositionIfVisible(); + } + // Avoid unnecessary calls to UpdateDialogTopInsetInBrowserView(). + if (dialog_host_->HasObservers()) { // Adjust any hosted dialogs if the browser's dialog hosting bounds changed. const gfx::Rect dialog_bounds(dialog_host_->GetDialogPosition(gfx::Size()), dialog_host_->GetMaximumDialogSize()); -@@ -490,6 +507,7 @@ void BrowserViewLayout::Layout(views::View* browser_view) { +@@ -493,6 +510,7 @@ void BrowserViewLayout::Layout(views::View* browser_view) { latest_dialog_bounds_in_screen_ = dialog_bounds_in_screen; dialog_host_->NotifyPositionRequiresUpdate(); } @@ -798,7 +800,7 @@ index 38064da1c8818..98ecdff6ce089 100644 } gfx::Size BrowserViewLayout::GetPreferredSize( -@@ -631,6 +649,13 @@ int BrowserViewLayout::LayoutWebUITabStrip(int top) { +@@ -635,6 +653,13 @@ int BrowserViewLayout::LayoutWebUITabStrip(int top) { int BrowserViewLayout::LayoutToolbar(int top) { TRACE_EVENT0("ui", "BrowserViewLayout::LayoutToolbar"); @@ -825,12 +827,12 @@ index 451c5ad63337b..66f946c95b9b4 100644 virtual bool IsBookmarkBarVisible() const = 0; virtual bool IsContentsSeparatorEnabled() const = 0; diff --git chrome/browser/ui/views/frame/contents_web_view.cc chrome/browser/ui/views/frame/contents_web_view.cc -index f4f145ae7cfae..14839f50ed2a6 100644 +index 8249bfe911f1d..192365dbb651a 100644 --- chrome/browser/ui/views/frame/contents_web_view.cc +++ chrome/browser/ui/views/frame/contents_web_view.cc -@@ -40,6 +40,12 @@ ContentsWebView::ContentsWebView(content::BrowserContext* browser_context) - // `glic_border_` should never receive input events. - glic_border_->SetCanProcessEventsWithinSubtree(false); +@@ -50,6 +50,12 @@ ContentsWebView::ContentsWebView(content::BrowserContext* browser_context) + glic_border_->SetCanProcessEventsWithinSubtree(false); + } #endif + + // Mouse events on draggable regions will not be handled by the WebView. @@ -842,10 +844,10 @@ index f4f145ae7cfae..14839f50ed2a6 100644 ContentsWebView::~ContentsWebView() { diff --git chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.cc chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.cc -index 961b599ffc364..92faacd1be534 100644 +index dc6b96a941f2e..2a2dda8a12ad2 100644 --- chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.cc +++ chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.cc -@@ -602,6 +602,11 @@ PictureInPictureBrowserFrameView::PictureInPictureBrowserFrameView( +@@ -603,6 +603,11 @@ PictureInPictureBrowserFrameView::PictureInPictureBrowserFrameView( frame_background_ = std::make_unique(); } #endif @@ -857,7 +859,7 @@ index 961b599ffc364..92faacd1be534 100644 } PictureInPictureBrowserFrameView::~PictureInPictureBrowserFrameView() { -@@ -729,18 +734,42 @@ gfx::Rect PictureInPictureBrowserFrameView::GetWindowBoundsForClientBounds( +@@ -730,18 +735,42 @@ gfx::Rect PictureInPictureBrowserFrameView::GetWindowBoundsForClientBounds( int PictureInPictureBrowserFrameView::NonClientHitTest( const gfx::Point& point) { @@ -908,7 +910,7 @@ index 961b599ffc364..92faacd1be534 100644 // Allow dragging and resizing the window. int window_component = GetHTComponentForFrame( -@@ -809,7 +838,8 @@ void PictureInPictureBrowserFrameView::Layout(PassKey) { +@@ -813,7 +842,8 @@ void PictureInPictureBrowserFrameView::Layout(PassKey) { gfx::Rect content_area = GetLocalBounds(); content_area.Inset(FrameBorderInsets()); gfx::Rect top_bar = content_area; @@ -918,7 +920,7 @@ index 961b599ffc364..92faacd1be534 100644 top_bar_container_view_->SetBoundsRect(top_bar); #if !BUILDFLAG(IS_ANDROID) if (auto_pip_setting_overlay_) { -@@ -1349,7 +1379,8 @@ gfx::Insets PictureInPictureBrowserFrameView::ResizeBorderInsets() const { +@@ -1354,7 +1384,8 @@ gfx::Insets PictureInPictureBrowserFrameView::ResizeBorderInsets() const { } int PictureInPictureBrowserFrameView::GetTopAreaHeight() const { @@ -943,10 +945,10 @@ index 33c6444869375..d74818698d81a 100644 LocationBarView* location_bar_view = browser_view_->GetLocationBarView(); CHECK(location_bar_view); diff --git chrome/browser/ui/views/page_action/page_action_icon_controller.cc chrome/browser/ui/views/page_action/page_action_icon_controller.cc -index 8654a377fbbd3..f996d5fa8caf3 100644 +index 54b8559f2bc13..ff0e8b78a1626 100644 --- chrome/browser/ui/views/page_action/page_action_icon_controller.cc +++ chrome/browser/ui/views/page_action/page_action_icon_controller.cc -@@ -98,6 +98,12 @@ void PageActionIconController::Init(const PageActionIconParams& params, +@@ -103,6 +103,12 @@ void PageActionIconController::Init(const PageActionIconParams& params, }; for (PageActionIconType type : params.types_enabled) { @@ -960,10 +962,10 @@ index 8654a377fbbd3..f996d5fa8caf3 100644 case PageActionIconType::kPaymentsOfferNotification: add_page_action_icon( diff --git chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc -index c7ab9cfd1875b..426ece7031e0d 100644 +index b4b61fdac8801..9f2735a83f380 100644 --- chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc +++ chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc -@@ -621,29 +621,41 @@ gfx::Range BrowserTabStripController::ListTabsInGroup( +@@ -639,29 +639,41 @@ gfx::Range BrowserTabStripController::ListTabsInGroup( } bool BrowserTabStripController::IsFrameCondensed() const { @@ -1006,10 +1008,10 @@ index c7ab9cfd1875b..426ece7031e0d 100644 } diff --git chrome/browser/ui/views/toolbar/toolbar_view.cc chrome/browser/ui/views/toolbar/toolbar_view.cc -index f34f61e26192d..21183da4a4483 100644 +index 693fcd880ac44..e67cd48e40a2d 100644 --- chrome/browser/ui/views/toolbar/toolbar_view.cc +++ chrome/browser/ui/views/toolbar/toolbar_view.cc -@@ -186,7 +186,7 @@ class TabstripLikeBackground : public views::Background { +@@ -189,7 +189,7 @@ class TabstripLikeBackground : public views::Background { void Paint(gfx::Canvas* canvas, views::View* view) const override { bool painted = TopContainerBackground::PaintThemeCustomImage(canvas, view, browser_view_); @@ -1018,9 +1020,9 @@ index f34f61e26192d..21183da4a4483 100644 SkColor frame_color = browser_view_->frame()->GetFrameView()->GetFrameColor( BrowserFrameActiveState::kUseCurrent); -@@ -217,12 +217,13 @@ END_METADATA - //////////////////////////////////////////////////////////////////////////////// - // ToolbarView, public: +@@ -223,12 +223,13 @@ END_METADATA + DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(ToolbarView, kToolbarElementId); + DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(ToolbarView, kToolbarContainerElementId); -ToolbarView::ToolbarView(Browser* browser, BrowserView* browser_view) +ToolbarView::ToolbarView(Browser* browser, BrowserView* browser_view, @@ -1032,12 +1034,12 @@ index f34f61e26192d..21183da4a4483 100644 - display_mode_(GetDisplayMode(browser)) { + display_mode_(display_mode ? *display_mode : GetDisplayMode(browser)) { SetID(VIEW_ID_TOOLBAR); + SetProperty(views::kElementIdentifierKey, kToolbarElementId); - container_view_ = AddChildView(std::make_unique()); -@@ -251,9 +252,24 @@ ToolbarView::~ToolbarView() { - - for (const auto& view_and_command : GetViewCommandMap()) +@@ -260,9 +261,24 @@ ToolbarView::~ToolbarView() { + for (const auto& view_and_command : GetViewCommandMap()) { chrome::RemoveCommandObserver(browser_, view_and_command.second, this); + } + + browser_view_->WillDestroyToolbar(); } @@ -1059,7 +1061,7 @@ index f34f61e26192d..21183da4a4483 100644 #if defined(USE_AURA) // Avoid generating too many occlusion tracking calculation events before this // function returns. The occlusion status will be computed only once once this -@@ -276,12 +292,12 @@ void ToolbarView::Init() { +@@ -285,12 +301,12 @@ void ToolbarView::Init() { auto location_bar = std::make_unique( browser_, browser_->profile(), browser_->command_controller(), this, @@ -1074,17 +1076,17 @@ index f34f61e26192d..21183da4a4483 100644 download_button = std::make_unique(browser_view_); } -@@ -363,7 +379,8 @@ void ToolbarView::Init() { +@@ -372,7 +388,8 @@ void ToolbarView::Init() { std::unique_ptr cast; if (!(features::IsToolbarPinningEnabled() && - base::FeatureList::IsEnabled(features::kPinnedCastButton))) { + base::FeatureList::IsEnabled(features::kPinnedCastButton))) { - if (media_router::MediaRouterEnabled(browser_->profile())) { + if (media_router::MediaRouterEnabled(browser_->profile()) && + BUTTON_VISIBLE(kCast)) { cast = media_router::CastToolbarButton::Create(browser_); } } -@@ -377,7 +394,8 @@ void ToolbarView::Init() { +@@ -386,7 +403,8 @@ void ToolbarView::Init() { std::unique_ptr send_tab_to_self_button; @@ -1094,7 +1096,7 @@ index f34f61e26192d..21183da4a4483 100644 send_tab_to_self_button = std::make_unique( browser_view_); -@@ -837,7 +855,8 @@ void ToolbarView::Layout(PassKey) { +@@ -857,7 +875,8 @@ void ToolbarView::Layout(PassKey) { if (display_mode_ == DisplayMode::NORMAL) { LayoutCommon(); @@ -1105,12 +1107,12 @@ index f34f61e26192d..21183da4a4483 100644 if (toolbar_controller_) { diff --git chrome/browser/ui/views/toolbar/toolbar_view.h chrome/browser/ui/views/toolbar/toolbar_view.h -index 54a3847f9496c..fce14ce2d26cf 100644 +index 8bac5ea80b3e5..cd55d2e3343f4 100644 --- chrome/browser/ui/views/toolbar/toolbar_view.h +++ chrome/browser/ui/views/toolbar/toolbar_view.h -@@ -92,7 +92,8 @@ class ToolbarView : public views::AccessiblePaneView, - // needs to be displayed. - }; +@@ -96,7 +96,8 @@ class ToolbarView : public views::AccessiblePaneView, + DECLARE_CLASS_ELEMENT_IDENTIFIER_VALUE(kToolbarElementId); + DECLARE_CLASS_ELEMENT_IDENTIFIER_VALUE(kToolbarContainerElementId); - ToolbarView(Browser* browser, BrowserView* browser_view); + ToolbarView(Browser* browser, BrowserView* browser_view, diff --git a/patch/patches/chrome_sad_tab_error.patch b/patch/patches/chrome_sad_tab_error.patch index 001b0dacd..90e442862 100644 --- a/patch/patches/chrome_sad_tab_error.patch +++ b/patch/patches/chrome_sad_tab_error.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/ui/views/sad_tab_view.cc chrome/browser/ui/views/sad_tab_view.cc -index 4c0f4df68c943..45867d8e99adb 100644 +index 7ce2012ec4756..9c88518fad933 100644 --- chrome/browser/ui/views/sad_tab_view.cc +++ chrome/browser/ui/views/sad_tab_view.cc -@@ -699,6 +699,11 @@ void SadTabView::OnBoundsChanged(const gfx::Rect& previous_bounds) { +@@ -703,6 +703,11 @@ void SadTabView::OnBoundsChanged(const gfx::Rect& previous_bounds) { title_->SizeToFit(max_width); } diff --git a/patch/patches/color_provider_manager_3610.patch b/patch/patches/color_provider_manager_3610.patch index e8730b977..ce772c97d 100644 --- a/patch/patches/color_provider_manager_3610.patch +++ b/patch/patches/color_provider_manager_3610.patch @@ -1,5 +1,5 @@ diff --git ui/color/color_provider_manager.cc ui/color/color_provider_manager.cc -index 452f80c94d684..671f36923741d 100644 +index aabe78905dc26..e75e6ab13d072 100644 --- ui/color/color_provider_manager.cc +++ ui/color/color_provider_manager.cc @@ -46,6 +46,15 @@ std::optional& GetGlobalManager() { @@ -18,12 +18,9 @@ index 452f80c94d684..671f36923741d 100644 ColorProviderManager::ColorProviderManager() { ResetColorProviderInitializerList(); } -@@ -86,8 +95,19 @@ void ColorProviderManager::ResetColorProviderInitializerList() { - } - +@@ -89,6 +98,16 @@ void ColorProviderManager::ResetColorProviderInitializerList() { void ColorProviderManager::ResetColorProviderCache() { -- if (!color_providers_.empty()) -+ if (!color_providers_.empty()) { + if (!color_providers_.empty()) { color_providers_.clear(); + + for (ColorProviderManagerObserver& observer : observers_) { @@ -35,10 +32,9 @@ index 452f80c94d684..671f36923741d 100644 +void ColorProviderManager::AfterNativeThemeUpdated() { + for (ColorProviderManagerObserver& observer : observers_) { + observer.OnAfterNativeThemeUpdated(); -+ } + } } - void ColorProviderManager::AppendColorProviderInitializer( diff --git ui/color/color_provider_manager.h ui/color/color_provider_manager.h index 67341dd5fc3d6..ee70de7f7fd44 100644 --- ui/color/color_provider_manager.h diff --git a/patch/patches/component_build.patch b/patch/patches/component_build.patch index 89ba78138..c0f5c8f3f 100644 --- a/patch/patches/component_build.patch +++ b/patch/patches/component_build.patch @@ -1,8 +1,8 @@ diff --git content/browser/devtools/devtools_instrumentation.h content/browser/devtools/devtools_instrumentation.h -index c67463381a180..96471c063b8bf 100644 +index 1e4c380032c3a..41e992e99a123 100644 --- content/browser/devtools/devtools_instrumentation.h +++ content/browser/devtools/devtools_instrumentation.h -@@ -114,7 +114,7 @@ bool ApplyUserAgentMetadataOverrides( +@@ -116,7 +116,7 @@ bool ApplyUserAgentMetadataOverrides( FrameTreeNode* frame_tree_node, std::optional* override_out); @@ -55,7 +55,7 @@ index 09d80f2ba678d..5dbff44c280a1 100644 explicit SyntheticGestureTargetBase(RenderWidgetHostImpl* host); diff --git third_party/blink/renderer/controller/BUILD.gn third_party/blink/renderer/controller/BUILD.gn -index 6ff75a6bb03e7..938113ef46a0d 100644 +index 555c721f4db1d..515b9c7373a89 100644 --- third_party/blink/renderer/controller/BUILD.gn +++ third_party/blink/renderer/controller/BUILD.gn @@ -38,6 +38,7 @@ component("controller") { diff --git a/patch/patches/content_2015.patch b/patch/patches/content_2015.patch index 0c73e527c..bd091fdd7 100644 --- a/patch/patches/content_2015.patch +++ b/patch/patches/content_2015.patch @@ -12,10 +12,10 @@ index 8a8a0bdade6fe..59b9b4a7fe9da 100644 version.Set("V8-Version", V8_VERSION_STRING); std::string host = info.GetHeaderValue("host"); diff --git content/browser/loader/navigation_url_loader_impl.cc content/browser/loader/navigation_url_loader_impl.cc -index 4c616f376576a..a004e4df5d74e 100644 +index e93fa14d97024..4d8289e154528 100644 --- content/browser/loader/navigation_url_loader_impl.cc +++ content/browser/loader/navigation_url_loader_impl.cc -@@ -863,7 +863,7 @@ NavigationURLLoaderImpl::CreateNonNetworkLoaderFactory( +@@ -921,7 +921,7 @@ NavigationURLLoaderImpl::CreateNonNetworkLoaderFactory( mojo::PendingRemote terminal_external_protocol; bool handled = GetContentClient()->browser()->HandleExternalProtocol( @@ -24,7 +24,7 @@ index 4c616f376576a..a004e4df5d74e 100644 frame_tree_node->frame_tree_node_id(), navigation_ui_data, request_info.is_primary_main_frame, frame_tree_node->IsInFencedFrameTree(), request_info.sandbox_flags, -@@ -875,6 +875,21 @@ NavigationURLLoaderImpl::CreateNonNetworkLoaderFactory( +@@ -933,6 +933,21 @@ NavigationURLLoaderImpl::CreateNonNetworkLoaderFactory( *request_info.initiator_document_token) : nullptr, request_info.isolation_info, &terminal_external_protocol); @@ -47,10 +47,10 @@ index 4c616f376576a..a004e4df5d74e 100644 return std::make_pair( /*is_cacheable=*/false, diff --git content/public/browser/content_browser_client.cc content/public/browser/content_browser_client.cc -index 65b0ed931a305..0a4fe6a251468 100644 +index f252c048f288c..72c6569d6294a 100644 --- content/public/browser/content_browser_client.cc +++ content/public/browser/content_browser_client.cc -@@ -1154,7 +1154,7 @@ ContentBrowserClient::CreateURLLoaderHandlerForServiceWorkerNavigationPreload( +@@ -1155,7 +1155,7 @@ ContentBrowserClient::CreateURLLoaderHandlerForServiceWorkerNavigationPreload( void ContentBrowserClient::OnNetworkServiceCreated( network::mojom::NetworkService* network_service) {} @@ -59,7 +59,7 @@ index 65b0ed931a305..0a4fe6a251468 100644 BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -1163,6 +1163,7 @@ void ContentBrowserClient::ConfigureNetworkContextParams( +@@ -1164,6 +1164,7 @@ void ContentBrowserClient::ConfigureNetworkContextParams( cert_verifier_creation_params) { network_context_params->user_agent = GetUserAgentBasedOnPolicy(context); network_context_params->accept_language = "en-us,en"; @@ -68,10 +68,10 @@ index 65b0ed931a305..0a4fe6a251468 100644 std::vector diff --git content/public/browser/content_browser_client.h content/public/browser/content_browser_client.h -index cb48835fab356..946495ef0db71 100644 +index 25a2aec8dc537..ecbbfe7d0a774 100644 --- content/public/browser/content_browser_client.h +++ content/public/browser/content_browser_client.h -@@ -1359,6 +1359,12 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -1351,6 +1351,12 @@ class CONTENT_EXPORT ContentBrowserClient { bool opener_suppressed, bool* no_javascript_access); @@ -84,7 +84,7 @@ index cb48835fab356..946495ef0db71 100644 // Allows the embedder to return a delegate for the SpeechRecognitionManager. // The delegate will be owned by the manager. It's valid to return nullptr. virtual SpeechRecognitionManagerDelegate* -@@ -2217,7 +2223,7 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -2201,7 +2207,7 @@ class CONTENT_EXPORT ContentBrowserClient { // // If |relative_partition_path| is the empty string, it means this needs to // create the default NetworkContext for the BrowserContext. @@ -93,7 +93,7 @@ index cb48835fab356..946495ef0db71 100644 BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -2444,6 +2450,22 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -2428,6 +2434,22 @@ class CONTENT_EXPORT ContentBrowserClient { const net::IsolationInfo& isolation_info, mojo::PendingRemote* out_factory); @@ -116,7 +116,7 @@ index cb48835fab356..946495ef0db71 100644 // Creates an OverlayWindow to be used for video or Picture-in-Picture. // This window will house the content shown when in Picture-in-Picture mode. // This will return a new OverlayWindow. -@@ -2504,6 +2526,10 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -2488,6 +2510,10 @@ class CONTENT_EXPORT ContentBrowserClient { // Used as part of the user agent string. virtual std::string GetProduct(); @@ -153,10 +153,10 @@ index 42c94f71f09cf..853c508260f08 100644 // started. virtual void SetRuntimeFeaturesDefaultsBeforeBlinkInitialization() {} diff --git content/renderer/render_thread_impl.cc content/renderer/render_thread_impl.cc -index db991c27ab5d8..f8c1aeaf934c4 100644 +index e388b778c476f..a9f4346d31d03 100644 --- content/renderer/render_thread_impl.cc +++ content/renderer/render_thread_impl.cc -@@ -594,6 +594,8 @@ void RenderThreadImpl::Init() { +@@ -592,6 +592,8 @@ void RenderThreadImpl::Init() { GetContentClient()->renderer()->CreateURLLoaderThrottleProvider( blink::URLLoaderThrottleProviderType::kFrame); @@ -166,10 +166,10 @@ index db991c27ab5d8..f8c1aeaf934c4 100644 base::BindRepeating(&RenderThreadImpl::OnRendererInterfaceReceiver, base::Unretained(this))); diff --git content/renderer/renderer_blink_platform_impl.cc content/renderer/renderer_blink_platform_impl.cc -index e4b0cdb22340c..013c176bd72c6 100644 +index 24ed2d721fa6b..0616c3b77b027 100644 --- content/renderer/renderer_blink_platform_impl.cc +++ content/renderer/renderer_blink_platform_impl.cc -@@ -1031,6 +1031,15 @@ SkBitmap* RendererBlinkPlatformImpl::GetSadPageBitmap() { +@@ -1043,6 +1043,15 @@ SkBitmap* RendererBlinkPlatformImpl::GetSadPageBitmap() { //------------------------------------------------------------------------------ @@ -186,10 +186,10 @@ index e4b0cdb22340c..013c176bd72c6 100644 RendererBlinkPlatformImpl::CreateWebV8ValueConverter() { return std::make_unique(); diff --git content/renderer/renderer_blink_platform_impl.h content/renderer/renderer_blink_platform_impl.h -index 17c01a1f03ad4..33a484f412bba 100644 +index ced5bb344ec46..307d0a7a466f8 100644 --- content/renderer/renderer_blink_platform_impl.h +++ content/renderer/renderer_blink_platform_impl.h -@@ -244,6 +244,9 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { +@@ -246,6 +246,9 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { InertAndMinimumIntervalOfUserLevelMemoryPressureSignal() override; #endif // BUILDFLAG(IS_ANDROID) @@ -200,10 +200,10 @@ index 17c01a1f03ad4..33a484f412bba 100644 // plus eTLD+1, such as https://google.com), or to a more specific origin. void SetIsLockedToSite(); diff --git content/shell/browser/shell_content_browser_client.cc content/shell/browser/shell_content_browser_client.cc -index bb9c07e92da20..37c0801f489f9 100644 +index 24e086b3379cb..743f87696ef1f 100644 --- content/shell/browser/shell_content_browser_client.cc +++ content/shell/browser/shell_content_browser_client.cc -@@ -773,7 +773,7 @@ void ShellContentBrowserClient::OnNetworkServiceCreated( +@@ -772,7 +772,7 @@ void ShellContentBrowserClient::OnNetworkServiceCreated( #endif } @@ -212,7 +212,7 @@ index bb9c07e92da20..37c0801f489f9 100644 BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -782,6 +782,7 @@ void ShellContentBrowserClient::ConfigureNetworkContextParams( +@@ -781,6 +781,7 @@ void ShellContentBrowserClient::ConfigureNetworkContextParams( cert_verifier_creation_params) { ConfigureNetworkContextParamsForShell(context, network_context_params, cert_verifier_creation_params); diff --git a/patch/patches/content_main_654986.patch b/patch/patches/content_main_654986.patch index a40f75a74..b954a12d3 100644 --- a/patch/patches/content_main_654986.patch +++ b/patch/patches/content_main_654986.patch @@ -1,5 +1,5 @@ diff --git base/process/set_process_title.cc base/process/set_process_title.cc -index 79ba3ac1913f8..46bcb4366d2f8 100644 +index edd8c78fb1537..49622b9c05dc0 100644 --- base/process/set_process_title.cc +++ base/process/set_process_title.cc @@ -54,7 +54,7 @@ void SetProcessTitleFromCommandLine(const char** main_argv) { @@ -9,13 +9,13 @@ index 79ba3ac1913f8..46bcb4366d2f8 100644 - DCHECK_EQ(base::PlatformThread::CurrentId(), getpid()); + // DCHECK_EQ(base::PlatformThread::CurrentId(), getpid()); - if (main_argv) + if (main_argv) { setproctitle_init(main_argv); diff --git content/app/content_main.cc content/app/content_main.cc -index c37f18d794ae2..fd360f7698bcf 100644 +index 6cb1ea690dce9..cfadae04565be 100644 --- content/app/content_main.cc +++ content/app/content_main.cc -@@ -194,11 +194,8 @@ ContentMainParams::~ContentMainParams() = default; +@@ -193,16 +193,10 @@ ContentMainParams::~ContentMainParams() = default; ContentMainParams::ContentMainParams(ContentMainParams&&) = default; ContentMainParams& ContentMainParams::operator=(ContentMainParams&&) = default; @@ -27,11 +27,6 @@ index c37f18d794ae2..fd360f7698bcf 100644 +int ContentMainInitialize(ContentMainParams params, + ContentMainRunner* content_main_runner) { base::FeatureList::FailOnFeatureAccessWithoutFeatureList(); - #if BUILDFLAG(IS_CHROMEOS_LACROS) - // Lacros is launched with inherited priority. Revert to normal priority -@@ -206,9 +203,6 @@ NO_STACK_PROTECTOR int RunContentProcess( - base::PlatformThread::SetCurrentThreadType(base::ThreadType::kDefault); - #endif int exit_code = -1; -#if BUILDFLAG(IS_MAC) - base::apple::ScopedNSAutoreleasePool autorelease_pool; @@ -39,7 +34,7 @@ index c37f18d794ae2..fd360f7698bcf 100644 // A flag to indicate whether Main() has been called before. On Android, we // may re-run Main() without restarting the browser process. This flag -@@ -287,7 +281,9 @@ NO_STACK_PROTECTOR int RunContentProcess( +@@ -281,7 +275,9 @@ NO_STACK_PROTECTOR int RunContentProcess( // default, "C", locale. setlocale(LC_NUMERIC, "C"); @@ -50,7 +45,7 @@ index c37f18d794ae2..fd360f7698bcf 100644 #endif #if BUILDFLAG(IS_WIN) -@@ -295,14 +291,6 @@ NO_STACK_PROTECTOR int RunContentProcess( +@@ -289,14 +285,6 @@ NO_STACK_PROTECTOR int RunContentProcess( #endif #if BUILDFLAG(IS_MAC) @@ -65,7 +60,7 @@ index c37f18d794ae2..fd360f7698bcf 100644 InitializeMac(); #endif -@@ -353,12 +341,44 @@ NO_STACK_PROTECTOR int RunContentProcess( +@@ -345,12 +333,44 @@ NO_STACK_PROTECTOR int RunContentProcess( if (IsSubprocess()) CommonSubprocessInit(); @@ -112,7 +107,7 @@ index c37f18d794ae2..fd360f7698bcf 100644 } diff --git content/app/content_main_runner_impl.cc content/app/content_main_runner_impl.cc -index 74d648de9172e..25be08486a085 100644 +index 8c20f50669a20..8a2c458c1e2ef 100644 --- content/app/content_main_runner_impl.cc +++ content/app/content_main_runner_impl.cc @@ -52,6 +52,7 @@ @@ -123,7 +118,7 @@ index 74d648de9172e..25be08486a085 100644 #include "base/time/time.h" #include "base/trace_event/trace_event.h" #include "build/build_config.h" -@@ -1350,6 +1351,11 @@ void ContentMainRunnerImpl::Shutdown() { +@@ -1332,6 +1333,11 @@ void ContentMainRunnerImpl::Shutdown() { is_shutdown_ = true; } diff --git a/patch/patches/crashpad_1995.patch b/patch/patches/crashpad_1995.patch index 3caccf2a3..47d16b924 100644 --- a/patch/patches/crashpad_1995.patch +++ b/patch/patches/crashpad_1995.patch @@ -224,7 +224,7 @@ index 14563198df62b..63b2c14420927 100644 ->set_system_crash_reporter_forwarding(crashpad::TriState::kDisabled); } diff --git components/crash/core/app/crashpad_linux.cc components/crash/core/app/crashpad_linux.cc -index aff834c0a9371..1eadd8bf1d421 100644 +index 5d9b3bd5386ec..e5aee47e1942c 100644 --- components/crash/core/app/crashpad_linux.cc +++ components/crash/core/app/crashpad_linux.cc @@ -23,6 +23,7 @@ @@ -235,7 +235,7 @@ index aff834c0a9371..1eadd8bf1d421 100644 #include "sandbox/linux/services/namespace_sandbox.h" #include "third_party/crashpad/crashpad/client/crashpad_client.h" #include "third_party/crashpad/crashpad/client/crashpad_info.h" -@@ -168,11 +169,10 @@ bool PlatformCrashpadInitialization( +@@ -164,11 +165,10 @@ bool PlatformCrashpadInitialization( crash_reporter_client->GetCrashDumpLocation(database_path); crash_reporter_client->GetCrashMetricsLocation(&metrics_path); @@ -250,7 +250,7 @@ index aff834c0a9371..1eadd8bf1d421 100644 // When --use-cros-crash-reporter is set (below), the handler passes dumps // to ChromeOS's /sbin/crash_reporter which in turn passes the dump to -@@ -188,8 +188,8 @@ bool PlatformCrashpadInitialization( +@@ -184,8 +184,8 @@ bool PlatformCrashpadInitialization( crash_reporter_client->GetProductInfo(&product_info); std::map annotations; @@ -261,7 +261,7 @@ index aff834c0a9371..1eadd8bf1d421 100644 #if BUILDFLAG(GOOGLE_CHROME_BRANDING) // Empty means stable. -@@ -206,7 +206,20 @@ bool PlatformCrashpadInitialization( +@@ -202,7 +202,20 @@ bool PlatformCrashpadInitialization( annotations["channel"] = product_info.channel; } @@ -281,9 +281,9 @@ index aff834c0a9371..1eadd8bf1d421 100644 +#endif // defined(ARCH_CPU_ARM_FAMILY) + annotations["platform"] = platform; - #if BUILDFLAG(IS_CHROMEOS_LACROS) - // "build_time_millis" is used on LaCros chrome to determine when to stop -@@ -251,6 +264,12 @@ bool PlatformCrashpadInitialization( + #if BUILDFLAG(IS_CHROMEOS_DEVICE) + // Chromium OS: save board and builder path for 'tast symbolize'. +@@ -239,6 +252,12 @@ bool PlatformCrashpadInitialization( } #endif diff --git a/patch/patches/embedder_product_override.patch b/patch/patches/embedder_product_override.patch index a638a619a..e27f42018 100644 --- a/patch/patches/embedder_product_override.patch +++ b/patch/patches/embedder_product_override.patch @@ -1,5 +1,5 @@ diff --git components/embedder_support/user_agent_utils.cc components/embedder_support/user_agent_utils.cc -index a8cb8f5dfff83..c8ed0a8d39a26 100644 +index 384a829d6a4f5..e1290c8446954 100644 --- components/embedder_support/user_agent_utils.cc +++ components/embedder_support/user_agent_utils.cc @@ -21,6 +21,7 @@ @@ -21,7 +21,7 @@ index a8cb8f5dfff83..c8ed0a8d39a26 100644 namespace embedder_support { namespace { -@@ -331,6 +336,14 @@ blink::UserAgentBrandList ShuffleBrandList( +@@ -321,6 +326,14 @@ blink::UserAgentBrandList ShuffleBrandList( std::string GetProductAndVersion( UserAgentReductionEnterprisePolicyState user_agent_reduction) { diff --git a/patch/patches/gn_config.patch b/patch/patches/gn_config.patch index f54572403..b15bbcc11 100644 --- a/patch/patches/gn_config.patch +++ b/patch/patches/gn_config.patch @@ -12,7 +12,7 @@ index 44a11ec90ec9b..4c35b35a97f28 100644 # https://crbug.com/474506. "//clank/java/BUILD.gn", diff --git BUILD.gn BUILD.gn -index ebd779ebd4223..e46c99c460149 100644 +index 09eeeee99b2e6..747d7f9e75d0e 100644 --- BUILD.gn +++ BUILD.gn @@ -19,6 +19,7 @@ import("//build/config/sanitizers/sanitizers.gni") @@ -23,7 +23,7 @@ index ebd779ebd4223..e46c99c460149 100644 import("//chrome/enterprise_companion/buildflags.gni") import("//components/enterprise/buildflags/buildflags.gni") import("//components/nacl/features.gni") -@@ -291,6 +292,10 @@ group("gn_all") { +@@ -292,6 +293,10 @@ group("gn_all") { deps += root_extra_deps @@ -78,7 +78,7 @@ index bd41166938952..fba7843d79796 100644 visual_studio_version_logs = [ "windows_sdk_version=${windows_sdk_version}" ] diff --git chrome/chrome_paks.gni chrome/chrome_paks.gni -index 53928b9d04267..74a16ee9466c8 100644 +index 75a2ccaebf8b5..676f21d56caa2 100644 --- chrome/chrome_paks.gni +++ chrome/chrome_paks.gni @@ -6,6 +6,7 @@ import("//ash/ambient/resources/resources.gni") @@ -89,7 +89,7 @@ index 53928b9d04267..74a16ee9466c8 100644 import("//chrome/browser/buildflags.gni") import("//chrome/common/features.gni") import("//components/compose/features.gni") -@@ -476,6 +477,10 @@ template("chrome_extra_paks") { +@@ -480,6 +481,10 @@ template("chrome_extra_paks") { ] deps += [ "//extensions:extensions_resources" ] } @@ -151,23 +151,23 @@ index c490d199bf51e..4c0de0d7a0822 100644 outputs = [ "$root_out_dir/chrome.7z", diff --git tools/grit/grit_args.gni tools/grit/grit_args.gni -index 5cf2768230fa5..f354073500d2c 100644 +index 20b2ffa87c31a..0c919d103eab5 100644 --- tools/grit/grit_args.gni +++ tools/grit/grit_args.gni -@@ -5,7 +5,9 @@ - import("//build/config/chrome_build.gni") +@@ -6,7 +6,9 @@ import("//build/config/chrome_build.gni") import("//build/config/chromeos/ui_mode.gni") import("//build/config/devtools.gni") + import("//build/config/features.gni") +import("//build/config/locales.gni") import("//build/config/ui.gni") +import("//cef/libcef/features/features.gni") shared_intermediate_dir = rebase_path(root_gen_dir, root_build_dir) devtools_grd_path = "$shared_intermediate_dir/$devtools_grd_location" -@@ -38,6 +40,9 @@ _grit_defines = [ - "use_titlecase=${is_mac}", - +@@ -41,6 +43,9 @@ _grit_defines = [ "is_desktop_android=${is_desktop_android}", + + "enable_glic=${enable_glic}", + + "enable_cef=${enable_cef}", + "enable_pseudolocales=${enable_pseudolocales}", diff --git a/patch/patches/gritsettings.patch b/patch/patches/gritsettings.patch index 353c11f26..5043ea053 100644 --- a/patch/patches/gritsettings.patch +++ b/patch/patches/gritsettings.patch @@ -1,8 +1,8 @@ diff --git tools/gritsettings/resource_ids.spec tools/gritsettings/resource_ids.spec -index 8cc75da1353df..f8d45ba53bd95 100644 +index 87dc2b6740a44..5319dd909a836 100644 --- tools/gritsettings/resource_ids.spec +++ tools/gritsettings/resource_ids.spec -@@ -1403,11 +1403,20 @@ +@@ -1415,11 +1415,20 @@ "<(SHARED_INTERMEDIATE_DIR)/third_party/blink/public/strings/permission_element_generated_strings.grd": { "META": {"sizes": {"messages": [2000],}}, "messages": [10080], diff --git a/patch/patches/light_mode_3534.patch b/patch/patches/light_mode_3534.patch index dbaa9c451..1b9839cbc 100644 --- a/patch/patches/light_mode_3534.patch +++ b/patch/patches/light_mode_3534.patch @@ -1,5 +1,5 @@ diff --git base/win/dark_mode_support.cc base/win/dark_mode_support.cc -index 73d6ad5e9bb36..6c450e79c0f94 100644 +index daecebb507070..aed51c2e6b06e 100644 --- base/win/dark_mode_support.cc +++ base/win/dark_mode_support.cc @@ -7,6 +7,7 @@ @@ -10,7 +10,7 @@ index 73d6ad5e9bb36..6c450e79c0f94 100644 #include "base/native_library.h" #include "base/win/win_util.h" #include "base/win/windows_version.h" -@@ -89,11 +90,20 @@ const DarkModeSupport& GetDarkModeSupport() { +@@ -85,11 +86,20 @@ const DarkModeSupport& GetDarkModeSupport() { return dark_mode_support; } @@ -67,7 +67,7 @@ index 184939bdb8b3d..bb13d7c74e20b 100644 // GTK doesn't have a native high contrast setting. Rather, it's implied by diff --git ui/native_theme/native_theme.cc ui/native_theme/native_theme.cc -index 728069cfdba9a..3561f49631e5c 100644 +index aa2d789b3aec5..f84090947a345 100644 --- ui/native_theme/native_theme.cc +++ ui/native_theme/native_theme.cc @@ -146,6 +146,7 @@ void NativeTheme::NotifyOnNativeThemeUpdated() { @@ -78,7 +78,7 @@ index 728069cfdba9a..3561f49631e5c 100644 RecordNumColorProvidersInitializedDuringOnNativeThemeUpdated( color_provider_manager.num_providers_initialized() - -@@ -288,6 +289,13 @@ bool NativeTheme::IsForcedDarkMode() { +@@ -289,6 +290,13 @@ bool NativeTheme::IsForcedDarkMode() { return kIsForcedDarkMode; } @@ -93,10 +93,10 @@ index 728069cfdba9a..3561f49631e5c 100644 static bool kIsForcedHighContrast = base::CommandLine::ForCurrentProcess()->HasSwitch( diff --git ui/native_theme/native_theme.h ui/native_theme/native_theme.h -index b2a7455c7e005..77170b90189c8 100644 +index 4c8e8c2b171fc..4c0ac7cfee394 100644 --- ui/native_theme/native_theme.h +++ ui/native_theme/native_theme.h -@@ -610,6 +610,9 @@ class NATIVE_THEME_EXPORT NativeTheme { +@@ -624,6 +624,9 @@ class NATIVE_THEME_EXPORT NativeTheme { // Calculates and returns the use overlay scrollbar setting. static bool CalculateUseOverlayScrollbar(); @@ -107,10 +107,10 @@ index b2a7455c7e005..77170b90189c8 100644 explicit NativeTheme( bool should_only_use_dark_colors, diff --git ui/native_theme/native_theme_mac.mm ui/native_theme/native_theme_mac.mm -index dc1224ca2fa27..b2a0ce01b4611 100644 +index 36d8e38eb0b07..0b96dd332363a 100644 --- ui/native_theme/native_theme_mac.mm +++ ui/native_theme/native_theme_mac.mm -@@ -585,11 +585,15 @@ void NativeThemeMac::PaintSelectedMenuItem( +@@ -631,11 +631,15 @@ void NativeThemeMac::PaintSelectedMenuItem( void NativeThemeMac::InitializeDarkModeStateAndObserver() { __block auto theme = this; @@ -129,30 +129,31 @@ index dc1224ca2fa27..b2a0ce01b4611 100644 theme->NotifyOnNativeThemeUpdated(); }]; diff --git ui/native_theme/native_theme_win.cc ui/native_theme/native_theme_win.cc -index 1b098cbb291fe..fc8f22b7db5a3 100644 +index d34f90e8a6b93..5d77885591ea2 100644 --- ui/native_theme/native_theme_win.cc +++ ui/native_theme/native_theme_win.cc -@@ -676,14 +676,17 @@ bool NativeThemeWin::ShouldUseDarkColors() const { +@@ -685,7 +685,10 @@ bool NativeThemeWin::ShouldUseDarkColors() const { // Windows high contrast modes are entirely different themes, // so let them take priority over dark mode. // ...unless --force-dark-mode was specified in which case caveat emptor. -- if (InForcedColorsMode() && !IsForcedDarkMode()) +- if (InForcedColorsMode() && !IsForcedDarkMode()) { + if (supports_windows_dark_mode_ && IsForcedDarkMode()) { + return true; + } -+ if (InForcedColorsMode()) ++ if (InForcedColorsMode()) { return false; + } return NativeTheme::ShouldUseDarkColors(); - } +@@ -693,7 +696,7 @@ bool NativeThemeWin::ShouldUseDarkColors() const { NativeTheme::PreferredColorScheme NativeThemeWin::CalculatePreferredColorScheme() const { -- if (!InForcedColorsMode()) -+ if (!InForcedColorsMode() || !supports_windows_dark_mode_) +- if (!InForcedColorsMode()) { ++ if (!InForcedColorsMode() || !supports_windows_dark_mode_) { return NativeTheme::CalculatePreferredColorScheme(); + } - // According to the spec, the preferred color scheme for web content is 'dark' -@@ -1653,8 +1656,9 @@ void NativeThemeWin::RegisterColorFilteringRegkeyObserver() { +@@ -1678,8 +1681,9 @@ void NativeThemeWin::RegisterColorFilteringRegkeyObserver() { } void NativeThemeWin::UpdateDarkModeStatus() { diff --git a/patch/patches/linux_assets_path_1936.patch b/patch/patches/linux_assets_path_1936.patch index 2063bfa95..53249c87a 100644 --- a/patch/patches/linux_assets_path_1936.patch +++ b/patch/patches/linux_assets_path_1936.patch @@ -25,10 +25,10 @@ index cdabcf3e5b2c7..2a12480efb68c 100644 if (base::PathExists(sandbox_candidate)) sandbox_binary = sandbox_candidate; diff --git ui/ozone/common/egl_util.cc ui/ozone/common/egl_util.cc -index 021bcad8c3084..a37406d408718 100644 +index c3879262996c5..955fd0a375f60 100644 --- ui/ozone/common/egl_util.cc +++ ui/ozone/common/egl_util.cc -@@ -127,7 +127,7 @@ bool LoadDefaultEGLGLES2Bindings( +@@ -135,7 +135,7 @@ bool LoadDefaultEGLGLES2Bindings( if (implementation.gl == gl::kGLImplementationEGLANGLE) { base::FilePath module_path; #if !BUILDFLAG(IS_FUCHSIA) diff --git a/patch/patches/mac_platform_style_bubble_893292.patch b/patch/patches/mac_platform_style_bubble_893292.patch index c3d8d9fc4..fe2351be6 100644 --- a/patch/patches/mac_platform_style_bubble_893292.patch +++ b/patch/patches/mac_platform_style_bubble_893292.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/ui/views/profiles/profile_menu_view_base.cc chrome/browser/ui/views/profiles/profile_menu_view_base.cc -index e588c950ab897..35e54c80d34eb 100644 +index 5383396da441c..a53441bcd1c74 100644 --- chrome/browser/ui/views/profiles/profile_menu_view_base.cc +++ chrome/browser/ui/views/profiles/profile_menu_view_base.cc -@@ -1162,8 +1162,8 @@ int ProfileMenuViewBase::GetMaxHeight() const { +@@ -1198,8 +1198,8 @@ int ProfileMenuViewBase::GetMaxHeight() const { ->GetDisplayNearestPoint(anchor_rect.CenterPoint()) .work_area(); int available_space = screen_space.bottom() - anchor_rect.bottom(); @@ -13,16 +13,16 @@ index e588c950ab897..35e54c80d34eb 100644 available_space = std::max(available_space, anchor_rect.y() - screen_space.y()); #endif -diff --git ui/views/style/platform_style_mac.mm ui/views/style/platform_style_mac.mm -index 869d1f51700a1..ace1e3b9864be 100644 ---- ui/views/style/platform_style_mac.mm -+++ ui/views/style/platform_style_mac.mm -@@ -43,7 +43,7 @@ const bool PlatformStyle::kTableViewSupportsKeyboardNavigationByCell = false; - const bool PlatformStyle::kTreeViewSelectionPaintsEntireRow = true; - const bool PlatformStyle::kUseRipples = false; - const bool PlatformStyle::kInactiveWidgetControlsAppearDisabled = true; --const bool PlatformStyle::kAdjustBubbleIfOffscreen = true; -+const bool PlatformStyle::kAdjustBubbleIfOffscreen = false; - const View::FocusBehavior PlatformStyle::kDefaultFocusBehavior = - View::FocusBehavior::ACCESSIBLE_ONLY; +diff --git ui/views/style/platform_style.h ui/views/style/platform_style.h +index 59d9211565b48..63bc255add57f 100644 +--- ui/views/style/platform_style.h ++++ ui/views/style/platform_style.h +@@ -77,7 +77,7 @@ class VIEWS_EXPORT PlatformStyle { + // Default setting at bubble creation time for whether arrow will be adjusted + // for bubbles going off-screen to bring more bubble area into view. Linux + // clips bubble windows that extend outside their parent window bounds. +- static constexpr bool kAdjustBubbleIfOffscreen = !BUILDFLAG(IS_LINUX); ++ static constexpr bool kAdjustBubbleIfOffscreen = BUILDFLAG(IS_WIN); + // Default focus behavior on the platform. + static constexpr View::FocusBehavior kDefaultFocusBehavior = diff --git a/patch/patches/mac_render_widget_3680.patch b/patch/patches/mac_render_widget_3680.patch index f627b3bd9..7e4b12100 100644 --- a/patch/patches/mac_render_widget_3680.patch +++ b/patch/patches/mac_render_widget_3680.patch @@ -1,5 +1,5 @@ diff --git content/app_shim_remote_cocoa/render_widget_host_view_cocoa.mm content/app_shim_remote_cocoa/render_widget_host_view_cocoa.mm -index 767c532efd6cf..365bc048bdedc 100644 +index fc345ea0ae7a6..aedd501ab118e 100644 --- content/app_shim_remote_cocoa/render_widget_host_view_cocoa.mm +++ content/app_shim_remote_cocoa/render_widget_host_view_cocoa.mm @@ -171,6 +171,13 @@ void ExtractUnderlines(NSAttributedString* string, diff --git a/patch/patches/message_loop.patch b/patch/patches/message_loop.patch index c6223b4f1..c0d59c6a1 100644 --- a/patch/patches/message_loop.patch +++ b/patch/patches/message_loop.patch @@ -1,5 +1,5 @@ diff --git base/message_loop/message_pump_win.cc base/message_loop/message_pump_win.cc -index f28ebfee8218d..12f7539526c06 100644 +index 5b9e417927870..f74cf332e6093 100644 --- base/message_loop/message_pump_win.cc +++ base/message_loop/message_pump_win.cc @@ -2,6 +2,7 @@ @@ -9,8 +9,8 @@ index f28ebfee8218d..12f7539526c06 100644 +#include "base/task/current_thread.h" #include "base/message_loop/message_pump_win.h" - #include -@@ -572,7 +573,17 @@ bool MessagePumpForUI::ProcessNextWindowsMessage() { + #include +@@ -584,7 +585,17 @@ bool MessagePumpForUI::ProcessNextWindowsMessage() { ctx.event()->set_chrome_message_pump(); msg_pump_data->set_sent_messages_in_queue(more_work_is_plausible); }); @@ -28,7 +28,7 @@ index f28ebfee8218d..12f7539526c06 100644 + } } } - if (has_msg) + if (has_msg) { diff --git base/task/current_thread.cc base/task/current_thread.cc index 024422b65775b..773d856dff353 100644 --- base/task/current_thread.cc diff --git a/patch/patches/metrics_system_profile.patch b/patch/patches/metrics_system_profile.patch index 7fd63fcf9..4609f2b61 100644 --- a/patch/patches/metrics_system_profile.patch +++ b/patch/patches/metrics_system_profile.patch @@ -1,8 +1,8 @@ diff --git components/metrics/persistent_system_profile.cc components/metrics/persistent_system_profile.cc -index 5f53ff21a358c..6d88415e889dd 100644 +index 3cef1f28ccdb0..c91c9927436de 100644 --- components/metrics/persistent_system_profile.cc +++ components/metrics/persistent_system_profile.cc -@@ -400,6 +400,10 @@ bool PersistentSystemProfile::GetSystemProfile( +@@ -401,6 +401,10 @@ bool PersistentSystemProfile::GetSystemProfile( return true; } diff --git a/patch/patches/mime_handler_view_guest_1565_2727.patch b/patch/patches/mime_handler_view_guest_1565_2727.patch index 7de5ad859..bc4fd214a 100644 --- a/patch/patches/mime_handler_view_guest_1565_2727.patch +++ b/patch/patches/mime_handler_view_guest_1565_2727.patch @@ -12,10 +12,10 @@ index 37cb1dac49610..6e5989c73bf08 100644 virtual ~WebContentsView() = default; diff --git extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc -index ccaf9eee37f6f..cc78c1d432116 100644 +index 4cd72afe01d78..36c9286631b94 100644 --- extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc +++ extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc -@@ -225,6 +225,8 @@ void MimeHandlerViewGuest::CreateInnerPage( +@@ -226,6 +226,8 @@ void MimeHandlerViewGuest::CreateInnerPage( WebContents::CreateParams params(browser_context(), guest_site_instance.get()); params.guest_delegate = this; diff --git a/patch/patches/mojo_connect_result_3664.patch b/patch/patches/mojo_connect_result_3664.patch index 7e908bcb0..b5e5898db 100644 --- a/patch/patches/mojo_connect_result_3664.patch +++ b/patch/patches/mojo_connect_result_3664.patch @@ -77,7 +77,7 @@ index 0e0cad6032f6d..9dd09d26cdcc3 100644 } // namespace mojo diff --git mojo/public/cpp/bindings/connector.h mojo/public/cpp/bindings/connector.h -index 332ab5c181ec5..4751eada85d07 100644 +index 332ab5c181ec5..d4ccf2e023cd3 100644 --- mojo/public/cpp/bindings/connector.h +++ mojo/public/cpp/bindings/connector.h @@ -146,6 +146,11 @@ class COMPONENT_EXPORT(MOJO_CPP_BINDINGS) Connector : public MessageReceiver { diff --git a/patch/patches/net_cookie_flags.patch b/patch/patches/net_cookie_flags.patch index d9f18678a..23abdaa77 100644 --- a/patch/patches/net_cookie_flags.patch +++ b/patch/patches/net_cookie_flags.patch @@ -10,10 +10,10 @@ index aeb79b46f5d21..bd57e874c1240 100644 +// This load will not send any cookies. For CEF usage. +LOAD_FLAG(DO_NOT_SEND_COOKIES, 1 << 20) diff --git net/url_request/url_request_http_job.cc net/url_request/url_request_http_job.cc -index 408edfb7578bb..c3e06bdbb4986 100644 +index f40ce91873172..68f61469a62c2 100644 --- net/url_request/url_request_http_job.cc +++ net/url_request/url_request_http_job.cc -@@ -2097,7 +2097,8 @@ bool URLRequestHttpJob::ShouldAddCookieHeader() const { +@@ -2098,7 +2098,8 @@ bool URLRequestHttpJob::ShouldAddCookieHeader() const { // Read cookies whenever allow_credentials() is true, even if the PrivacyMode // is being overridden by NetworkDelegate and will eventually block them, as // blocked cookies still need to be logged in that case. @@ -24,10 +24,10 @@ index 408edfb7578bb..c3e06bdbb4986 100644 bool URLRequestHttpJob::ShouldRecordPartitionedCookieUsage() const { diff --git services/network/public/cpp/resource_request.cc services/network/public/cpp/resource_request.cc -index 38882b4053305..87fbb1dc27246 100644 +index 677e8db211435..63bdec7d2b49a 100644 --- services/network/public/cpp/resource_request.cc +++ services/network/public/cpp/resource_request.cc -@@ -345,7 +345,8 @@ bool ResourceRequest::EqualsForTesting(const ResourceRequest& request) const { +@@ -346,7 +346,8 @@ bool ResourceRequest::EqualsForTesting(const ResourceRequest& request) const { } bool ResourceRequest::SendsCookies() const { diff --git a/patch/patches/net_test_server_3798752.patch b/patch/patches/net_test_server_3798752.patch index b9e028017..ec4d75640 100644 --- a/patch/patches/net_test_server_3798752.patch +++ b/patch/patches/net_test_server_3798752.patch @@ -1,8 +1,8 @@ diff --git net/test/embedded_test_server/embedded_test_server.cc net/test/embedded_test_server/embedded_test_server.cc -index e9517e3a17aba..7df1fb0a65309 100644 +index 51ef03bcf6a24..f92ce7987cf37 100644 --- net/test/embedded_test_server/embedded_test_server.cc +++ net/test/embedded_test_server/embedded_test_server.cc -@@ -1115,7 +1115,7 @@ bool EmbeddedTestServer::PostTaskToIOThreadAndWait(base::OnceClosure closure) { +@@ -1121,7 +1121,7 @@ bool EmbeddedTestServer::PostTaskToIOThreadAndWait(base::OnceClosure closure) { if (!base::CurrentThread::Get()) temporary_loop = std::make_unique(); @@ -11,7 +11,7 @@ index e9517e3a17aba..7df1fb0a65309 100644 if (!io_thread_->task_runner()->PostTaskAndReply( FROM_HERE, std::move(closure), run_loop.QuitClosure())) { return false; -@@ -1142,7 +1142,7 @@ bool EmbeddedTestServer::PostTaskToIOThreadAndWaitWithResult( +@@ -1148,7 +1148,7 @@ bool EmbeddedTestServer::PostTaskToIOThreadAndWaitWithResult( if (!base::CurrentThread::Get()) temporary_loop = std::make_unique(); diff --git a/patch/patches/osr_fling_2745.patch b/patch/patches/osr_fling_2745.patch index 0176ffc15..60f7d132c 100644 --- a/patch/patches/osr_fling_2745.patch +++ b/patch/patches/osr_fling_2745.patch @@ -30,10 +30,10 @@ index 76057b3e50f78..d3b63a3b07805 100644 } // namespace input diff --git components/input/render_input_router.h components/input/render_input_router.h -index 739d1f12ab1f5..e8abce61a7534 100644 +index 469148c58889e..ec78b8abc9c05 100644 --- components/input/render_input_router.h +++ components/input/render_input_router.h -@@ -67,6 +67,7 @@ class COMPONENT_EXPORT(INPUT) RenderInputRouter +@@ -68,6 +68,7 @@ class COMPONENT_EXPORT(INPUT) RenderInputRouter InputRouter* input_router() { return input_router_.get(); } RenderInputRouterDelegate* delegate() { return delegate_; } @@ -56,10 +56,10 @@ index f1030a744809c..c222a209949e6 100644 return nullptr; } diff --git content/browser/renderer_host/render_widget_host_impl.cc content/browser/renderer_host/render_widget_host_impl.cc -index 74f2e51c7fa80..178d5bf538031 100644 +index 7ba8c01db7e93..0888ecebf8d6f 100644 --- content/browser/renderer_host/render_widget_host_impl.cc +++ content/browser/renderer_host/render_widget_host_impl.cc -@@ -795,7 +795,7 @@ void RenderWidgetHostImpl::WasHidden() { +@@ -818,7 +818,7 @@ void RenderWidgetHostImpl::WasHidden() { // Cancel pending pointer lock requests, unless there's an open user prompt. // Prompts should remain open and functional across tab switches. @@ -68,7 +68,7 @@ index 74f2e51c7fa80..178d5bf538031 100644 RejectPointerLockOrUnlockIfNecessary( blink::mojom::PointerLockResult::kWrongDocument); } -@@ -3260,6 +3260,11 @@ void RenderWidgetHostImpl::DecrementInFlightEventCount( +@@ -3289,6 +3289,11 @@ void RenderWidgetHostImpl::DecrementInFlightEventCount( } } @@ -81,10 +81,10 @@ index 74f2e51c7fa80..178d5bf538031 100644 const WebInputEvent& event) { if ((base::FeatureList::IsEnabled( diff --git content/browser/renderer_host/render_widget_host_impl.h content/browser/renderer_host/render_widget_host_impl.h -index ddfae2b85cb88..87797bf82b401 100644 +index 56670ed68f85f..f4ec82b6c3941 100644 --- content/browser/renderer_host/render_widget_host_impl.h +++ content/browser/renderer_host/render_widget_host_impl.h -@@ -842,6 +842,7 @@ class CONTENT_EXPORT RenderWidgetHostImpl +@@ -844,6 +844,7 @@ class CONTENT_EXPORT RenderWidgetHostImpl void ProgressFlingIfNeeded(base::TimeTicks current_time); void StopFling(); diff --git a/patch/patches/raw_ptr_3239.patch b/patch/patches/raw_ptr_3239.patch index 69631056c..69e9cdc6e 100644 --- a/patch/patches/raw_ptr_3239.patch +++ b/patch/patches/raw_ptr_3239.patch @@ -1,5 +1,5 @@ diff --git net/base/directory_lister.cc net/base/directory_lister.cc -index ae3a99f31e2ec..213cc33f2cc8e 100644 +index 58cce49353856..33b00235918c3 100644 --- net/base/directory_lister.cc +++ net/base/directory_lister.cc @@ -200,7 +200,7 @@ void DirectoryLister::OnListFile(const DirectoryListerData& data) { @@ -12,7 +12,7 @@ index ae3a99f31e2ec..213cc33f2cc8e 100644 } // namespace net diff --git net/base/directory_lister.h net/base/directory_lister.h -index 991d15b79878e..b4a5534ea2c87 100644 +index 7dfb7f451e936..8d0d35e500fdc 100644 --- net/base/directory_lister.h +++ net/base/directory_lister.h @@ -133,7 +133,7 @@ class NET_EXPORT DirectoryLister { diff --git a/patch/patches/renderer_host_1070713.patch b/patch/patches/renderer_host_1070713.patch index 42375405a..5beb35a6e 100644 --- a/patch/patches/renderer_host_1070713.patch +++ b/patch/patches/renderer_host_1070713.patch @@ -1,5 +1,5 @@ diff --git content/browser/renderer_host/render_view_host_impl.cc content/browser/renderer_host/render_view_host_impl.cc -index 4675bec818108..da09caea5cb13 100644 +index 1dc919585dd11..d6f88bec40e96 100644 --- content/browser/renderer_host/render_view_host_impl.cc +++ content/browser/renderer_host/render_view_host_impl.cc @@ -751,6 +751,8 @@ bool RenderViewHostImpl::IsRenderViewLive() const { diff --git a/patch/patches/rfh_navigation_4829483.patch b/patch/patches/rfh_navigation_4829483.patch index e11292526..1797ae490 100644 --- a/patch/patches/rfh_navigation_4829483.patch +++ b/patch/patches/rfh_navigation_4829483.patch @@ -1,8 +1,8 @@ diff --git content/browser/renderer_host/render_frame_host_impl.cc content/browser/renderer_host/render_frame_host_impl.cc -index 62105d8104721..e23c3b9758397 100644 +index 6aef73a782904..226fdb101ac15 100644 --- content/browser/renderer_host/render_frame_host_impl.cc +++ content/browser/renderer_host/render_frame_host_impl.cc -@@ -9147,6 +9147,16 @@ void RenderFrameHostImpl::CreateNewWindow( +@@ -9265,6 +9265,16 @@ void RenderFrameHostImpl::CreateNewWindow( return; } @@ -19,11 +19,11 @@ index 62105d8104721..e23c3b9758397 100644 // Otherwise, consume user activation before we proceed. In particular, it is // important to do this before we return from the |opener_suppressed| case // below. -@@ -11505,6 +11515,7 @@ void RenderFrameHostImpl::CommitNavigation( +@@ -11612,6 +11622,7 @@ void RenderFrameHostImpl::CommitNavigation( auto browser_calc_origin_to_commit = navigation_request->GetOriginToCommitWithDebugInfo(); if (!process_lock.is_error_page() && !is_mhtml_subframe && + common_params->url.IsStandard() && !policy->CanAccessOrigin( - GetProcess()->GetID(), browser_calc_origin_to_commit.first.value(), - ChildProcessSecurityPolicyImpl::AccessType::kCanCommitNewOrigin)) { + GetProcess()->GetDeprecatedID(), + browser_calc_origin_to_commit.first.value(), diff --git a/patch/patches/rwh_background_color_1984.patch b/patch/patches/rwh_background_color_1984.patch index 65b3da46a..72df41498 100644 --- a/patch/patches/rwh_background_color_1984.patch +++ b/patch/patches/rwh_background_color_1984.patch @@ -1,5 +1,5 @@ diff --git content/browser/renderer_host/render_widget_host_view_aura.cc content/browser/renderer_host/render_widget_host_view_aura.cc -index 9b258cb5dcbd0..7ebba152df594 100644 +index 06686841d7394..eacc7a61749a1 100644 --- content/browser/renderer_host/render_widget_host_view_aura.cc +++ content/browser/renderer_host/render_widget_host_view_aura.cc @@ -6,6 +6,7 @@ @@ -10,7 +10,7 @@ index 9b258cb5dcbd0..7ebba152df594 100644 #include #include #include -@@ -53,6 +54,7 @@ +@@ -52,6 +53,7 @@ #include "content/public/browser/content_browser_client.h" #include "content/public/browser/device_service.h" #include "content/public/browser/render_view_host.h" @@ -18,7 +18,7 @@ index 9b258cb5dcbd0..7ebba152df594 100644 #include "content/public/common/page_visibility_state.h" #include "services/service_manager/public/cpp/interface_provider.h" #include "third_party/blink/public/common/input/web_input_event.h" -@@ -760,10 +762,12 @@ gfx::Rect RenderWidgetHostViewAura::GetViewBounds() { +@@ -753,10 +755,12 @@ gfx::Rect RenderWidgetHostViewAura::GetViewBounds() { void RenderWidgetHostViewAura::UpdateBackgroundColor() { CHECK(GetBackgroundColor()); @@ -35,7 +35,7 @@ index 9b258cb5dcbd0..7ebba152df594 100644 } #if BUILDFLAG(IS_WIN) -@@ -2636,6 +2640,16 @@ void RenderWidgetHostViewAura::CreateAuraWindow(aura::client::WindowType type) { +@@ -2628,6 +2632,16 @@ void RenderWidgetHostViewAura::CreateAuraWindow(aura::client::WindowType type) { window_->layer()->SetColor(GetBackgroundColor() ? *GetBackgroundColor() : SK_ColorWHITE); UpdateFrameSinkIdRegistration(); diff --git a/patch/patches/services_network_2622.patch b/patch/patches/services_network_2622.patch index 4eb1a5cbb..ed44108fc 100644 --- a/patch/patches/services_network_2622.patch +++ b/patch/patches/services_network_2622.patch @@ -1,8 +1,8 @@ diff --git net/cookies/cookie_monster.cc net/cookies/cookie_monster.cc -index 91e4285ece39b..3396389f35360 100644 +index 7f03ff64090e5..a619186213674 100644 --- net/cookies/cookie_monster.cc +++ net/cookies/cookie_monster.cc -@@ -631,6 +631,25 @@ void CookieMonster::SetCookieableSchemes( +@@ -632,6 +632,25 @@ void CookieMonster::SetCookieableSchemes( MaybeRunCookieCallback(std::move(callback), true); } @@ -29,7 +29,7 @@ index 91e4285ece39b..3396389f35360 100644 void CookieMonster::SetPersistSessionCookies(bool persist_session_cookies) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); diff --git net/cookies/cookie_monster.h net/cookies/cookie_monster.h -index 36b4e9b449a61..f66faec1bc8e4 100644 +index 5a81a20072932..269d7904b0693 100644 --- net/cookies/cookie_monster.h +++ net/cookies/cookie_monster.h @@ -210,6 +210,8 @@ class NET_EXPORT CookieMonster : public CookieStore { @@ -80,10 +80,10 @@ index 963ddd7d0fcce..81f37072b77fa 100644 void CookieManager::SetForceKeepSessionState() { diff --git services/network/network_context.cc services/network/network_context.cc -index 285d36e3da419..320e2f4ed0a0d 100644 +index 8d2e38ac65ca8..58599658c2e0a 100644 --- services/network/network_context.cc +++ services/network/network_context.cc -@@ -2637,17 +2637,21 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( +@@ -2636,17 +2636,21 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( network_service_->network_quality_estimator()); } @@ -110,11 +110,11 @@ index 285d36e3da419..320e2f4ed0a0d 100644 + builder.SetCookieStore(std::move(cookie_store)); + - if (base::FeatureList::IsEnabled(features::kPrivateStateTokens) || - base::FeatureList::IsEnabled(features::kFledgePst)) { trust_token_store_ = std::make_unique(); + + base::FilePath trust_token_path; diff --git services/network/public/mojom/network_context.mojom services/network/public/mojom/network_context.mojom -index 32c82e61a37b4..be3f377f1f60e 100644 +index 2ae706f12d920..83bad1d7c1155 100644 --- services/network/public/mojom/network_context.mojom +++ services/network/public/mojom/network_context.mojom @@ -367,6 +367,9 @@ struct NetworkContextParams { diff --git a/patch/patches/services_network_2718.patch b/patch/patches/services_network_2718.patch index a0adb76e2..575bd61d3 100644 --- a/patch/patches/services_network_2718.patch +++ b/patch/patches/services_network_2718.patch @@ -1,8 +1,8 @@ diff --git content/browser/storage_partition_impl.cc content/browser/storage_partition_impl.cc -index 5a3104a5bf5b7..42a6428bbec20 100644 +index 3bbefc885c450..2b9d85c6c8948 100644 --- content/browser/storage_partition_impl.cc +++ content/browser/storage_partition_impl.cc -@@ -3388,9 +3388,12 @@ void StoragePartitionImpl::InitNetworkContext() { +@@ -3412,9 +3412,12 @@ void StoragePartitionImpl::InitNetworkContext() { cert_verifier::mojom::CertVerifierCreationParamsPtr cert_verifier_creation_params = cert_verifier::mojom::CertVerifierCreationParams::New(); diff --git a/patch/patches/set_resize_background_color.patch b/patch/patches/set_resize_background_color.patch index 2e2fe7c38..255d980fa 100644 --- a/patch/patches/set_resize_background_color.patch +++ b/patch/patches/set_resize_background_color.patch @@ -1,5 +1,5 @@ diff --git ui/views/controls/webview/webview.cc ui/views/controls/webview/webview.cc -index 73fdf31c0d277..e9abc3d664ca5 100644 +index 3b8ddf4a4a16f..3d0e54baa1924 100644 --- ui/views/controls/webview/webview.cc +++ ui/views/controls/webview/webview.cc @@ -170,6 +170,10 @@ void WebView::EnableSizingFromWebContents(const gfx::Size& min_size, diff --git a/patch/patches/trace_event.patch b/patch/patches/trace_event.patch index 78af81d9a..8ca71de3e 100644 --- a/patch/patches/trace_event.patch +++ b/patch/patches/trace_event.patch @@ -1,5 +1,5 @@ diff --git base/trace_event/builtin_categories.h base/trace_event/builtin_categories.h -index 59e484bd1e2e3..b47169ff79364 100644 +index d10d536f1266a..5715d67aefbea 100644 --- base/trace_event/builtin_categories.h +++ base/trace_event/builtin_categories.h @@ -71,6 +71,8 @@ diff --git a/patch/patches/ui_views_widget_type.patch b/patch/patches/ui_views_widget_type.patch index ec9603b8d..e097ce03b 100644 --- a/patch/patches/ui_views_widget_type.patch +++ b/patch/patches/ui_views_widget_type.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/ui/views/chrome_views_delegate_linux.cc chrome/browser/ui/views/chrome_views_delegate_linux.cc -index 090cacaa913a3..da1ad444325ee 100644 +index 9fc4b34838710..215eb51cd04d5 100644 --- chrome/browser/ui/views/chrome_views_delegate_linux.cc +++ chrome/browser/ui/views/chrome_views_delegate_linux.cc @@ -65,6 +65,8 @@ NativeWidgetType GetNativeWidgetTypeForInitParams( @@ -12,12 +12,12 @@ index 090cacaa913a3..da1ad444325ee 100644 params.type != views::Widget::InitParams::TYPE_TOOLTIP) ? NativeWidgetType::NATIVE_WIDGET_AURA diff --git ui/views/test/desktop_test_views_delegate_aura.cc ui/views/test/desktop_test_views_delegate_aura.cc -index 110eab7eec92a..2bfc96b6c439d 100644 +index 18281d9a30026..5e86ab38b9e35 100644 --- ui/views/test/desktop_test_views_delegate_aura.cc +++ ui/views/test/desktop_test_views_delegate_aura.cc @@ -27,7 +27,8 @@ void DesktopTestViewsDelegate::OnBeforeWidgetInit( - if (params->native_widget) return; + } - if (params->parent && params->type != views::Widget::InitParams::TYPE_MENU && + if (params->parent && params->child && diff --git a/patch/patches/v8_build.patch b/patch/patches/v8_build.patch index e1321ef1e..dbb7e9216 100644 --- a/patch/patches/v8_build.patch +++ b/patch/patches/v8_build.patch @@ -1,5 +1,5 @@ diff --git BUILD.gn BUILD.gn -index c5d180039d2..0068199adb1 100644 +index f8a0507c92c..dc55d2379d2 100644 --- BUILD.gn +++ BUILD.gn @@ -11,6 +11,7 @@ import("//build/config/mips.gni") @@ -10,7 +10,7 @@ index c5d180039d2..0068199adb1 100644 import("//third_party/icu/config.gni") import("gni/snapshot_toolchain.gni") -@@ -454,6 +455,9 @@ declare_args() { +@@ -467,6 +468,9 @@ declare_args() { # Some fuzzers depend on fuzzing functionality linked into the v8 library. # For binary size reasons this functionality is not always available. v8_wasm_random_fuzzers = "" @@ -20,7 +20,7 @@ index c5d180039d2..0068199adb1 100644 } # Derived defaults. -@@ -805,6 +809,10 @@ config("internal_config") { +@@ -820,6 +824,10 @@ config("internal_config") { defines += [ "BUILDING_V8_SHARED" ] } diff --git a/patch/patches/views_1749_2102_3330.patch b/patch/patches/views_1749_2102_3330.patch index 5c6f431ce..d948154cd 100644 --- a/patch/patches/views_1749_2102_3330.patch +++ b/patch/patches/views_1749_2102_3330.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/ui/views/toolbar/app_menu.cc chrome/browser/ui/views/toolbar/app_menu.cc -index b7dff19efeee6..2ff00fe179839 100644 +index 5e2d67e449c1c..899cccce610e4 100644 --- chrome/browser/ui/views/toolbar/app_menu.cc +++ chrome/browser/ui/views/toolbar/app_menu.cc -@@ -1043,7 +1043,9 @@ void AppMenu::RunMenu(views::MenuButtonController* host) { +@@ -1044,7 +1044,9 @@ void AppMenu::RunMenu(views::MenuButtonController* host) { host->button()->GetWidget(), host, host->button()->GetAnchorBoundsInScreen(), views::MenuAnchorPosition::kTopRight, ui::mojom::MenuSourceType::kNone, @@ -120,7 +120,7 @@ index 624a22c8c5478..707aca5f8342a 100644 } // namespace gfx diff --git ui/views/animation/ink_drop_host.h ui/views/animation/ink_drop_host.h -index c579f65dce9f0..a04e0d1f66aaa 100644 +index e5135719b8df9..fe88f01136990 100644 --- ui/views/animation/ink_drop_host.h +++ ui/views/animation/ink_drop_host.h @@ -194,6 +194,8 @@ class VIEWS_EXPORT InkDropHost { @@ -133,10 +133,10 @@ index c579f65dce9f0..a04e0d1f66aaa 100644 friend class test::InkDropHostTestApi; diff --git ui/views/controls/button/label_button.cc ui/views/controls/button/label_button.cc -index f0ba9bff47d86..06d5803a77c3f 100644 +index 07e805f154bd3..5bba98ef7d774 100644 --- ui/views/controls/button/label_button.cc +++ ui/views/controls/button/label_button.cc -@@ -611,6 +611,12 @@ void LabelButton::OnThemeChanged() { +@@ -628,6 +628,12 @@ void LabelButton::OnThemeChanged() { SchedulePaint(); } @@ -150,12 +150,12 @@ index f0ba9bff47d86..06d5803a77c3f 100644 Button::StateChanged(old_state); ResetLabelEnabledColor(); diff --git ui/views/controls/button/label_button.h ui/views/controls/button/label_button.h -index 4a6ec6307fb8b..c01c1eb2f9853 100644 +index fdfc7ccde54a6..5fc509b447d65 100644 --- ui/views/controls/button/label_button.h +++ ui/views/controls/button/label_button.h -@@ -188,6 +188,9 @@ class VIEWS_EXPORT LabelButton : public Button, - // widget, and the parent of the containing widget. - ButtonState GetVisualState() const; +@@ -192,6 +192,9 @@ class VIEWS_EXPORT LabelButton : public Button, + return !!paint_as_active_subscription_; + } + // Sets the font list used by this button. + void SetFontList(const gfx::FontList& font_list); @@ -164,7 +164,7 @@ index 4a6ec6307fb8b..c01c1eb2f9853 100644 LabelButtonImageContainer* image_container() { return image_container_.get(); diff --git ui/views/controls/label.cc ui/views/controls/label.cc -index f97a2d37d2ef5..6ef612c096dfb 100644 +index ec4f1bf85c51e..6899f9b4ff955 100644 --- ui/views/controls/label.cc +++ ui/views/controls/label.cc @@ -52,12 +52,29 @@ enum LabelPropertyKey { @@ -197,7 +197,7 @@ index f97a2d37d2ef5..6ef612c096dfb 100644 } // namespace namespace views { -@@ -532,6 +549,15 @@ void Label::SetElideBehavior(gfx::ElideBehavior elide_behavior) { +@@ -555,6 +572,15 @@ void Label::SetElideBehavior(gfx::ElideBehavior elide_behavior) { OnDisplayTextTruncation(); } @@ -213,8 +213,8 @@ index f97a2d37d2ef5..6ef612c096dfb 100644 std::u16string Label::GetTooltipText() const { return GetCachedTooltipText(); } -@@ -863,6 +889,16 @@ std::unique_ptr Label::CreateRenderText() const { - render_text->SelectRange(stored_selection_range_); +@@ -906,6 +932,16 @@ std::unique_ptr Label::CreateRenderText() const { + } } + if (draw_strings_flags_ != 0) { @@ -231,10 +231,10 @@ index f97a2d37d2ef5..6ef612c096dfb 100644 } diff --git ui/views/controls/label.h ui/views/controls/label.h -index 7457d09c12b8c..8f320e892a571 100644 +index 9bea99bc86fc3..91356c7109a06 100644 --- ui/views/controls/label.h +++ ui/views/controls/label.h -@@ -246,6 +246,10 @@ class VIEWS_EXPORT Label : public View, +@@ -241,6 +241,10 @@ class VIEWS_EXPORT Label : public View, gfx::ElideBehavior GetElideBehavior() const; void SetElideBehavior(gfx::ElideBehavior elide_behavior); @@ -245,7 +245,7 @@ index 7457d09c12b8c..8f320e892a571 100644 // Gets/Sets the custom local tooltip text. Default behavior for a label // (single-line) is to show the full text if it is wider than its bounds. // Calling this overrides the default behavior and lets you set a custom -@@ -548,6 +552,7 @@ class VIEWS_EXPORT Label : public View, +@@ -552,6 +556,7 @@ class VIEWS_EXPORT Label : public View, int max_width_ = 0; // This is used in single-line mode. int max_width_single_line_ = 0; @@ -254,10 +254,10 @@ index 7457d09c12b8c..8f320e892a571 100644 std::unique_ptr selection_controller_; diff --git ui/views/controls/menu/menu_controller.cc ui/views/controls/menu/menu_controller.cc -index 3a406a6489f42..e937ca0d2890e 100644 +index 3c062fd914935..e46e4b83694cf 100644 --- ui/views/controls/menu/menu_controller.cc +++ ui/views/controls/menu/menu_controller.cc -@@ -579,7 +579,8 @@ void MenuController::Run(Widget* parent, +@@ -589,7 +589,8 @@ void MenuController::Run(Widget* parent, ui::mojom::MenuSourceType source_type, bool context_menu, bool is_nested_drag, @@ -267,15 +267,15 @@ index 3a406a6489f42..e937ca0d2890e 100644 exit_type_ = ExitType::kNone; possible_drag_ = false; drag_in_progress_ = false; -@@ -629,6 +630,7 @@ void MenuController::Run(Widget* parent, - owner_->AddObserver(this); +@@ -658,6 +659,7 @@ void MenuController::Run(Widget* parent, + } native_view_for_gestures_ = native_view_for_gestures; + parent_widget_ = parent_widget; // Only create a MenuPreTargetHandler for non-nested menus. Nested menus // will use the existing one. -@@ -2279,6 +2281,7 @@ void MenuController::OpenMenuImpl(MenuItemView* item, bool show) { +@@ -2386,6 +2388,7 @@ void MenuController::OpenMenuImpl(MenuItemView* item, bool show) { params.do_capture = do_capture; params.native_view_for_gestures = native_view_for_gestures_; params.owned_window_anchor = anchor; @@ -283,33 +283,27 @@ index 3a406a6489f42..e937ca0d2890e 100644 if (item->GetParentMenuItem()) { params.context = item->GetWidget(); // (crbug.com/1414232) The item to be open is a submenu. Make sure -@@ -2972,8 +2975,13 @@ MenuItemView* MenuController::FindInitialSelectableMenuItem( +@@ -3097,7 +3100,11 @@ MenuItemView* MenuController::FindInitialSelectableMenuItem( void MenuController::OpenSubmenuChangeSelectionIfCan() { MenuItemView* item = pending_state_.item; -- if (!item->HasSubmenu() || !item->GetEnabled()) +- if (!item->HasSubmenu() || !item->GetEnabled()) { + if (!item->HasSubmenu() || !item->GetEnabled() || !item->GetParentMenuItem()) { + MenuItemView* submenu_item = + item->GetParentMenuItem() ? item->GetParentMenuItem() : item; + submenu_item->GetDelegate()->OnUnhandledOpenSubmenu(submenu_item, + base::i18n::IsRTL()); return; -+ } + } - // Show the sub-menu. - SetSelection(item, SELECTION_OPEN_SUBMENU | SELECTION_UPDATE_IMMEDIATELY); -@@ -2993,8 +3001,10 @@ void MenuController::OpenSubmenuChangeSelectionIfCan() { - void MenuController::CloseSubmenu() { +@@ -3122,6 +3129,7 @@ void MenuController::CloseSubmenu() { MenuItemView* item = state_.item; DCHECK(item); -- if (!item->GetParentMenuItem()) -+ if (!item->GetParentMenuItem()) { + if (!item->GetParentMenuItem()) { + item->GetDelegate()->OnUnhandledCloseSubmenu(item, base::i18n::IsRTL()); return; -+ } - if (item->SubmenuIsShowing()) - SetSelection(item, SELECTION_UPDATE_IMMEDIATELY); - else if (item->GetParentMenuItem()->GetParentMenuItem()) + } + if (item->SubmenuIsShowing()) { diff --git ui/views/controls/menu/menu_controller.h ui/views/controls/menu/menu_controller.h index 737b5dd9a243e..44b088afd01c8 100644 --- ui/views/controls/menu/menu_controller.h @@ -373,7 +367,7 @@ index ea82da6dc2f45..575bd9484c2bf 100644 virtual int GetMaxWidthForMenu(MenuItemView* menu); diff --git ui/views/controls/menu/menu_host.cc ui/views/controls/menu/menu_host.cc -index 4e87636d2778c..0492351fb3e01 100644 +index a462f65d2eb0e..4ae344a2b355a 100644 --- ui/views/controls/menu/menu_host.cc +++ ui/views/controls/menu/menu_host.cc @@ -148,6 +148,8 @@ void MenuHost::InitMenuHost(const InitParams& init_params) { @@ -389,12 +383,12 @@ index 4e87636d2778c..0492351fb3e01 100644 // If MenuHost has no parent widget, it needs to be marked // Activatable, so that calling Show in ShowMenuHost will // get keyboard focus. -- if (init_params.parent == nullptr) +- if (init_params.parent == nullptr) { + if (init_params.parent == nullptr && -+ init_params.parent_widget == gfx::kNullAcceleratedWidget) ++ init_params.parent_widget == gfx::kNullAcceleratedWidget) { params.activatable = Widget::InitParams::Activatable::kYes; + } - #if BUILDFLAG(IS_WIN) diff --git ui/views/controls/menu/menu_host.h ui/views/controls/menu/menu_host.h index fc1d5fccc3845..c065cafcd537c 100644 --- ui/views/controls/menu/menu_host.h @@ -409,10 +403,10 @@ index fc1d5fccc3845..c065cafcd537c 100644 explicit MenuHost(SubmenuView* submenu); diff --git ui/views/controls/menu/menu_item_view.cc ui/views/controls/menu/menu_item_view.cc -index b4cd3e5a49763..992314f502a0f 100644 +index 9e948231f2a57..f88c0a1cf2660 100644 --- ui/views/controls/menu/menu_item_view.cc +++ ui/views/controls/menu/menu_item_view.cc -@@ -1113,6 +1113,15 @@ void MenuItemView::PaintBackground(gfx::Canvas* canvas, +@@ -1138,6 +1138,15 @@ void MenuItemView::PaintBackground(gfx::Canvas* canvas, spilling_rect.set_y(spilling_rect.y() - corner_radius_); spilling_rect.set_height(spilling_rect.height() + corner_radius_); canvas->DrawRoundRect(spilling_rect, corner_radius_, flags); @@ -428,7 +422,7 @@ index b4cd3e5a49763..992314f502a0f 100644 } else if (paint_as_selected) { gfx::Rect item_bounds = GetLocalBounds(); if (type_ == Type::kActionableSubMenu) { -@@ -1183,6 +1192,13 @@ void MenuItemView::PaintMinorIconAndText(gfx::Canvas* canvas, SkColor color) { +@@ -1208,6 +1217,13 @@ void MenuItemView::PaintMinorIconAndText(gfx::Canvas* canvas, SkColor color) { } SkColor MenuItemView::GetTextColor(bool minor, bool paint_as_selected) const { @@ -573,10 +567,10 @@ index 87739aa15210f..e785faf160c2e 100644 } diff --git ui/views/controls/menu/menu_runner.h ui/views/controls/menu/menu_runner.h -index 493fda82af500..38d3344d97074 100644 +index c60b13df53aae..2e2b9174938f7 100644 --- ui/views/controls/menu/menu_runner.h +++ ui/views/controls/menu/menu_runner.h -@@ -157,6 +157,8 @@ class VIEWS_EXPORT MenuRunner { +@@ -160,6 +160,8 @@ class VIEWS_EXPORT MenuRunner { MenuAnchorPosition anchor, ui::mojom::MenuSourceType source_type, gfx::NativeView native_view_for_gestures = gfx::NativeView(), @@ -586,10 +580,10 @@ index 493fda82af500..38d3344d97074 100644 std::optional show_menu_host_duration_histogram = std::nullopt); diff --git ui/views/controls/menu/menu_runner_impl.cc ui/views/controls/menu/menu_runner_impl.cc -index 13fd4d8b5b536..256b4af43b3ec 100644 +index bf7f7c6d8d31e..b7054a59a8876 100644 --- ui/views/controls/menu/menu_runner_impl.cc +++ ui/views/controls/menu/menu_runner_impl.cc -@@ -117,6 +117,7 @@ void MenuRunnerImpl::RunMenuAt( +@@ -119,6 +119,7 @@ void MenuRunnerImpl::RunMenuAt( ui::mojom::MenuSourceType source_type, int32_t run_types, gfx::NativeView native_view_for_gestures, @@ -597,7 +591,7 @@ index 13fd4d8b5b536..256b4af43b3ec 100644 std::optional corners, std::optional show_menu_host_duration_histogram) { closing_event_time_ = base::TimeTicks(); -@@ -190,7 +191,7 @@ void MenuRunnerImpl::RunMenuAt( +@@ -193,7 +194,7 @@ void MenuRunnerImpl::RunMenuAt( controller->Run(parent, button_controller, menu_.get(), bounds, anchor, source_type, (run_types & MenuRunner::CONTEXT_MENU) != 0, (run_types & MenuRunner::NESTED_DRAG) != 0, @@ -607,17 +601,17 @@ index 13fd4d8b5b536..256b4af43b3ec 100644 void MenuRunnerImpl::Cancel() { diff --git ui/views/controls/menu/menu_runner_impl.h ui/views/controls/menu/menu_runner_impl.h -index 5dbd93d7ed343..b82c2beeef701 100644 +index 539eb9e7294f9..9435bf2b08eb3 100644 --- ui/views/controls/menu/menu_runner_impl.h +++ ui/views/controls/menu/menu_runner_impl.h -@@ -56,6 +56,7 @@ class VIEWS_EXPORT MenuRunnerImpl : public MenuRunnerImplInterface, - ui::mojom::MenuSourceType source_type = ui::mojom::MenuSourceType::kNone, - int32_t run_types = MenuRunner::NO_FLAGS, - gfx::NativeView native_view_for_gestures = {}, -+ gfx::AcceleratedWidget parent_widget = gfx::kNullAcceleratedWidget, - std::optional corners = std::nullopt, - std::optional show_menu_host_duration_histogram = - std::nullopt) override; +@@ -57,6 +57,7 @@ class VIEWS_EXPORT MenuRunnerImpl : public MenuRunnerImplInterface, + ui::mojom::MenuSourceType source_type, + int32_t run_types, + gfx::NativeView native_view_for_gestures, ++ gfx::AcceleratedWidget parent_widget, + std::optional corners, + std::optional show_menu_host_duration_histogram) override; + void Cancel() override; diff --git ui/views/controls/menu/menu_runner_impl_adapter.cc ui/views/controls/menu/menu_runner_impl_adapter.cc index d23190775a306..8a1467a1f828f 100644 --- ui/views/controls/menu/menu_runner_impl_adapter.cc @@ -636,22 +630,22 @@ index d23190775a306..8a1467a1f828f 100644 void MenuRunnerImplAdapter::Cancel() { diff --git ui/views/controls/menu/menu_runner_impl_adapter.h ui/views/controls/menu/menu_runner_impl_adapter.h -index 16c697fcceeff..c20377c8eb10b 100644 +index 2390a23fb35fa..1dea074a16a58 100644 --- ui/views/controls/menu/menu_runner_impl_adapter.h +++ ui/views/controls/menu/menu_runner_impl_adapter.h @@ -47,6 +47,7 @@ class VIEWS_EXPORT MenuRunnerImplAdapter : public MenuRunnerImplInterface { - ui::mojom::MenuSourceType source_type = ui::mojom::MenuSourceType::kNone, - int32_t run_types = MenuRunner::NO_FLAGS, - gfx::NativeView native_view_for_gestures = {}, -+ gfx::AcceleratedWidget parent_widget = gfx::kNullAcceleratedWidget, - std::optional corners = std::nullopt, - std::optional show_menu_host_duration_histogram = - std::nullopt) override; + ui::mojom::MenuSourceType source_type, + int32_t run_types, + gfx::NativeView native_view_for_gestures, ++ gfx::AcceleratedWidget parent_widget, + std::optional corners, + std::optional show_menu_host_duration_histogram) override; + void Cancel() override; diff --git ui/views/controls/menu/menu_runner_impl_cocoa.h ui/views/controls/menu/menu_runner_impl_cocoa.h -index e315ccc4cda65..8222030bd21f9 100644 +index f5b0936aac647..20f476c9abd93 100644 --- ui/views/controls/menu/menu_runner_impl_cocoa.h +++ ui/views/controls/menu/menu_runner_impl_cocoa.h -@@ -44,6 +44,7 @@ class VIEWS_EXPORT MenuRunnerImplCocoa : public MenuRunnerImplInterface { +@@ -45,6 +45,7 @@ class VIEWS_EXPORT MenuRunnerImplCocoa : public MenuRunnerImplInterface { ui::mojom::MenuSourceType source_type, int32_t run_types, gfx::NativeView native_view_for_gestures, @@ -660,10 +654,10 @@ index e315ccc4cda65..8222030bd21f9 100644 std::optional show_menu_host_duration_histogram) override; void Cancel() override; diff --git ui/views/controls/menu/menu_runner_impl_cocoa.mm ui/views/controls/menu/menu_runner_impl_cocoa.mm -index 52f3f0bc7e703..cf0eec570bd1e 100644 +index e1e3f0d4c54dd..f8afecca2016b 100644 --- ui/views/controls/menu/menu_runner_impl_cocoa.mm +++ ui/views/controls/menu/menu_runner_impl_cocoa.mm -@@ -71,6 +71,7 @@ void MenuRunnerImplCocoa::RunMenuAt( +@@ -72,6 +72,7 @@ void MenuRunnerImplCocoa::RunMenuAt( ui::mojom::MenuSourceType source_type, int32_t run_types, gfx::NativeView native_view_for_gestures, @@ -672,18 +666,30 @@ index 52f3f0bc7e703..cf0eec570bd1e 100644 std::optional show_menu_host_duration_histogram) { DCHECK(!IsRunning()); diff --git ui/views/controls/menu/menu_runner_impl_interface.h ui/views/controls/menu/menu_runner_impl_interface.h -index 465f774e1ec90..c99b51b9f0eba 100644 +index e217fa433b71e..45c46ad8de76a 100644 --- ui/views/controls/menu/menu_runner_impl_interface.h +++ ui/views/controls/menu/menu_runner_impl_interface.h -@@ -50,6 +50,8 @@ class MenuRunnerImplInterface { +@@ -50,6 +50,7 @@ class MenuRunnerImplInterface { ui::mojom::MenuSourceType source_type, int32_t run_types, gfx::NativeView native_view_for_gestures, ++ gfx::AcceleratedWidget parent_widget, + std::optional corners, + std::optional show_menu_host_duration_histogram) = 0; + void RunMenuAt( +@@ -60,9 +61,11 @@ class MenuRunnerImplInterface { + ui::mojom::MenuSourceType source_type = ui::mojom::MenuSourceType::kNone, + int32_t run_types = MenuRunner::NO_FLAGS, + gfx::NativeView native_view_for_gestures = {}, + gfx::AcceleratedWidget parent_widget = + gfx::kNullAcceleratedWidget, - std::optional corners = std::nullopt, - std::optional show_menu_host_duration_histogram = - std::nullopt) = 0; + std::optional corners = std::nullopt) { + RunMenuAt(parent, button_controller, bounds, anchor, source_type, run_types, +- native_view_for_gestures, corners, std::nullopt); ++ native_view_for_gestures, parent_widget, corners, std::nullopt); + } + + // Hides and cancels the menu. diff --git ui/views/controls/menu/menu_runner_impl_mac.h ui/views/controls/menu/menu_runner_impl_mac.h index 6b71a13002d27..da0d2bf4dc774 100644 --- ui/views/controls/menu/menu_runner_impl_mac.h @@ -743,10 +749,10 @@ index da772edd48c00..43c930e932287 100644 std::optional show_menu_host_duration_histogram) { RunMenu(parent, bounds.CenterPoint()); diff --git ui/views/controls/menu/menu_scroll_view_container.cc ui/views/controls/menu/menu_scroll_view_container.cc -index 3dc4156dd046c..020f016ffc261 100644 +index 1da213198d5de..9961b0c503f0a 100644 --- ui/views/controls/menu/menu_scroll_view_container.cc +++ ui/views/controls/menu/menu_scroll_view_container.cc -@@ -266,6 +266,11 @@ MenuScrollViewContainer::MenuScrollViewContainer(SubmenuView* content_view) +@@ -272,6 +272,11 @@ MenuScrollViewContainer::MenuScrollViewContainer(SubmenuView* content_view) scroll_down_button_ = background_view_->AddChildView( std::make_unique(content_view, false)); diff --git a/patch/patches/views_textfield_5399416.patch b/patch/patches/views_textfield_5399416.patch index fd6ee5561..822ad9ddb 100644 --- a/patch/patches/views_textfield_5399416.patch +++ b/patch/patches/views_textfield_5399416.patch @@ -1,11 +1,11 @@ diff --git ui/views/controls/textfield/textfield.cc ui/views/controls/textfield/textfield.cc -index 1991c859c67da..b955ffd4b6fd3 100644 +index 33afc532a2929..bbc38834966c2 100644 --- ui/views/controls/textfield/textfield.cc +++ ui/views/controls/textfield/textfield.cc -@@ -3033,6 +3033,10 @@ void Textfield::OnCursorBlinkTimerFired() { - void Textfield::OnEnabledChanged() { - if (GetInputMethod()) +@@ -3130,6 +3130,10 @@ void Textfield::OnEnabledChanged() { + if (GetInputMethod()) { GetInputMethod()->OnTextInputTypeChanged(this); + } + if (GetWidget()) { + SetColor(GetTextColor()); + UpdateBackgroundColor(); diff --git a/patch/patches/views_widget.patch b/patch/patches/views_widget.patch index 0ce4bab18..a8d2c52c3 100644 --- a/patch/patches/views_widget.patch +++ b/patch/patches/views_widget.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/extensions/api/sessions/sessions_api.cc chrome/browser/extensions/api/sessions/sessions_api.cc -index ea4123fa52305..aee79b9db521e 100644 +index 25c3c2d6ed3af..0f7388e14ebe2 100644 --- chrome/browser/extensions/api/sessions/sessions_api.cc +++ chrome/browser/extensions/api/sessions/sessions_api.cc @@ -341,6 +341,7 @@ SessionsGetDevicesFunction::CreateWindowModel( @@ -11,7 +11,7 @@ index ea4123fa52305..aee79b9db521e 100644 break; case ui::mojom::WindowShowState::kMaximized: diff --git chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc -index 60c1a8d04fdb6..728a44ee45ab7 100644 +index dc3a54ce29e7d..1a57a27234869 100644 --- chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc +++ chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc @@ -37,6 +37,7 @@ ui::mojom::WindowShowState ChromeNativeAppWindowViewsAura::GetRestorableState( @@ -49,7 +49,7 @@ index 2ef4f942b572c..144ae7facf733 100644 case ui::mojom::WindowShowState::kMaximized: return PERSISTED_SHOW_STATE_MAXIMIZED; diff --git components/sessions/core/tab_restore_service_impl.cc components/sessions/core/tab_restore_service_impl.cc -index 2da47939180ec..672c0cd69dbe2 100644 +index a9e12ccf4cea8..5416d0a7fcbff 100644 --- components/sessions/core/tab_restore_service_impl.cc +++ components/sessions/core/tab_restore_service_impl.cc @@ -198,6 +198,7 @@ int SerializeWindowShowState(ui::mojom::WindowShowState show_state) { @@ -273,10 +273,10 @@ index e31c5b4cb6726..1b724948c2868 100644 return host ? host->GetAcceleratedWidget() : nullptr; } diff --git ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc -index 102fcca7507a4..ebc688c1744e2 100644 +index e1c1215cc1088..9d4e900449146 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc +++ ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc -@@ -191,6 +191,18 @@ Widget::MoveLoopResult DesktopWindowTreeHostLinux::RunMoveLoop( +@@ -193,6 +193,18 @@ Widget::MoveLoopResult DesktopWindowTreeHostLinux::RunMoveLoop( return result; } @@ -295,7 +295,7 @@ index 102fcca7507a4..ebc688c1744e2 100644 void DesktopWindowTreeHostLinux::DispatchEvent(ui::Event* event) { // In Windows, the native events sent to chrome are separated into client // and non-client versions of events, which we record on our LocatedEvent -@@ -326,6 +338,8 @@ void DesktopWindowTreeHostLinux::AddAdditionalInitProperties( +@@ -332,6 +344,8 @@ void DesktopWindowTreeHostLinux::AddAdditionalInitProperties( properties->wayland_app_id = params.wayland_app_id; @@ -337,10 +337,10 @@ index 590f97eee1fda..3980e814e80b9 100644 base::WeakPtrFactory weak_factory_{this}; }; diff --git ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc -index 156cbebe16934..0ea0af09b36bd 100644 +index d582318e8751f..fe1263da0ca91 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc +++ ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc -@@ -269,8 +269,8 @@ void DesktopWindowTreeHostPlatform::Init(const Widget::InitParams& params) { +@@ -274,8 +274,8 @@ void DesktopWindowTreeHostPlatform::Init(const Widget::InitParams& params) { if (properties.parent_widget) { window_parent_ = DesktopWindowTreeHostPlatform::GetHostForWidget( properties.parent_widget); @@ -352,7 +352,7 @@ index 156cbebe16934..0ea0af09b36bd 100644 // Calculate initial bounds. diff --git ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc -index 8a37f2e19d2c8..a0ec5975f1ecc 100644 +index f144ed979f2de..487a39f1cd688 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc +++ ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc @@ -20,6 +20,7 @@ @@ -363,19 +363,19 @@ index 8a37f2e19d2c8..a0ec5975f1ecc 100644 #include "ui/aura/window_event_dispatcher.h" #include "ui/base/class_property.h" #include "ui/base/cursor/cursor.h" -@@ -185,22 +186,42 @@ void DesktopWindowTreeHostWin::Init(const Widget::InitParams& params) { +@@ -186,7 +187,10 @@ void DesktopWindowTreeHostWin::Init(const Widget::InitParams& params) { native_widget_delegate_.get()); HWND parent_hwnd = nullptr; -- if (params.parent && params.parent->GetHost()) +- if (params.parent && params.parent->GetHost()) { + if (params.parent_widget) { + parent_hwnd = params.parent_widget; + has_external_parent_ = true; + } else if (params.parent && params.parent->GetHost()) { parent_hwnd = params.parent->GetHost()->GetAcceleratedWidget(); -+ } + } - remove_standard_frame_ = params.remove_standard_frame; +@@ -194,15 +198,31 @@ void DesktopWindowTreeHostWin::Init(const Widget::InitParams& params) { has_non_client_view_ = Widget::RequiresNonClientView(params.type); z_order_ = params.EffectiveZOrderLevel(); @@ -410,14 +410,10 @@ index 8a37f2e19d2c8..a0ec5975f1ecc 100644 // Stack immediately above its parent so that it does not cover other // root-level windows, with the exception of menus, to allow them to be // displayed on top of other windows. -@@ -1087,10 +1108,23 @@ void DesktopWindowTreeHostWin::HandleWindowMinimizedOrRestored(bool restored) { - return; - } +@@ -1106,6 +1126,18 @@ void DesktopWindowTreeHostWin::HandleWindowMinimizedOrRestored(bool restored) { -- if (restored) -+ if (restored) { + if (restored) { window()->Show(); -- else + + if (initially_minimized_first_restore_pending_) { + initially_minimized_first_restore_pending_ = false; @@ -430,13 +426,10 @@ index 8a37f2e19d2c8..a0ec5975f1ecc 100644 + EnableNativeWindowOcclusionTracking(this); + } + } -+ } else { + } else { window()->Hide(); -+ } - } - - void DesktopWindowTreeHostWin::HandleClientSizeChanged( -@@ -1108,11 +1142,15 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() { + } +@@ -1127,11 +1159,15 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() { } void DesktopWindowTreeHostWin::HandleNativeFocus(HWND last_focused_window) { @@ -454,9 +447,9 @@ index 8a37f2e19d2c8..a0ec5975f1ecc 100644 } bool DesktopWindowTreeHostWin::HandleMouseEvent(ui::MouseEvent* event) { -@@ -1120,6 +1158,12 @@ bool DesktopWindowTreeHostWin::HandleMouseEvent(ui::MouseEvent* event) { - if (ui::PlatformEventSource::ShouldIgnoreNativePlatformEvents()) +@@ -1140,6 +1176,12 @@ bool DesktopWindowTreeHostWin::HandleMouseEvent(ui::MouseEvent* event) { return true; + } + // See comments in CefBrowserPlatformDelegateNativeWin::SetFocus. + if (has_external_parent_ && CanActivate() && event->IsAnyButton() && @@ -467,7 +460,7 @@ index 8a37f2e19d2c8..a0ec5975f1ecc 100644 SendEventToSink(event); return event->handled(); } -@@ -1302,9 +1346,17 @@ void DesktopWindowTreeHostWin::SetBoundsInDIP(const gfx::Rect& bounds) { +@@ -1325,9 +1367,17 @@ void DesktopWindowTreeHostWin::SetBoundsInDIP(const gfx::Rect& bounds) { // positions in variable-DPI situations. See https://crbug.com/1224715 for // details. aura::Window* root = nullptr; @@ -506,10 +499,10 @@ index 1e2c5bb35cc31..e73afc2d303ac 100644 // the implementation of ::ShowCursor() is based on a counter, so making this // member static ensures that ::ShowCursor() is always called exactly once diff --git ui/views/widget/native_widget_mac.mm ui/views/widget/native_widget_mac.mm -index 928f50fe35775..423ebc5a0f025 100644 +index 822d5bb122067..939808cbf5828 100644 --- ui/views/widget/native_widget_mac.mm +++ ui/views/widget/native_widget_mac.mm -@@ -655,6 +655,7 @@ void NativeWidgetMac::Show(ui::mojom::WindowShowState show_state, +@@ -695,6 +695,7 @@ void NativeWidgetMac::Show(ui::mojom::WindowShowState show_state, break; case ui::mojom::WindowShowState::kMaximized: case ui::mojom::WindowShowState::kFullscreen: @@ -518,10 +511,10 @@ index 928f50fe35775..423ebc5a0f025 100644 break; case ui::mojom::WindowShowState::kEnd: diff --git ui/views/widget/widget.cc ui/views/widget/widget.cc -index 7c511bbd90683..a136232b55187 100644 +index f1f9fb658e87d..8fad573ae8b71 100644 --- ui/views/widget/widget.cc +++ ui/views/widget/widget.cc -@@ -425,7 +425,8 @@ void Widget::Init(InitParams params) { +@@ -440,7 +440,8 @@ void Widget::Init(InitParams params) { } params.child |= (params.type == InitParams::TYPE_CONTROL); @@ -531,7 +524,7 @@ index 7c511bbd90683..a136232b55187 100644 is_headless_ = params.ShouldInitAsHeadless(); is_autosized_ = params.autosize; -@@ -535,9 +536,14 @@ void Widget::Init(InitParams params) { +@@ -559,9 +560,14 @@ void Widget::Init(InitParams params) { if (show_state == ui::mojom::WindowShowState::kMaximized) { Maximize(); @@ -546,7 +539,7 @@ index 7c511bbd90683..a136232b55187 100644 } #if BUILDFLAG(IS_CHROMEOS) -@@ -551,7 +557,12 @@ void Widget::Init(InitParams params) { +@@ -575,7 +581,12 @@ void Widget::Init(InitParams params) { } else if (delegate) { SetContentsView(delegate->TransferOwnershipOfContentsView()); if (should_set_initial_bounds) { @@ -560,7 +553,7 @@ index 7c511bbd90683..a136232b55187 100644 } } -@@ -1749,10 +1760,16 @@ void Widget::OnNativeWidgetParentChanged(gfx::NativeView parent) { +@@ -1867,10 +1878,16 @@ void Widget::OnNativeWidgetParentChanged(gfx::NativeView parent) { } gfx::Size Widget::GetMinimumSize() const { @@ -577,7 +570,7 @@ index 7c511bbd90683..a136232b55187 100644 return non_client_view_ ? non_client_view_->GetMaximumSize() : gfx::Size(); } -@@ -2004,7 +2021,8 @@ bool Widget::SetInitialFocus(ui::mojom::WindowShowState show_state) { +@@ -2141,7 +2158,8 @@ bool Widget::SetInitialFocus(ui::mojom::WindowShowState show_state) { View* v = widget_delegate_->GetInitiallyFocusedView(); if (!focus_on_creation_ || show_state == ui::mojom::WindowShowState::kInactive || @@ -586,9 +579,9 @@ index 7c511bbd90683..a136232b55187 100644 + show_state == ui::mojom::WindowShowState::kHidden) { // If not focusing the window now, tell the focus manager which view to // focus when the window is restored. - if (v) + if (v) { diff --git ui/views/widget/widget.h ui/views/widget/widget.h -index 37358f90484ac..6bfc0e341a5ce 100644 +index 3ce32a716cd6e..8e530e19e8a83 100644 --- ui/views/widget/widget.h +++ ui/views/widget/widget.h @@ -396,6 +396,8 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, @@ -600,7 +593,7 @@ index 37358f90484ac..6bfc0e341a5ce 100644 // Specifies the initial bounds of the Widget. Default is empty, which means // the NativeWidget may specify a default size. If the parent is specified, // |bounds| is in the parent's coordinate system. If the parent is not -@@ -830,7 +832,7 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, +@@ -841,7 +843,7 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, void SetVisible(bool visible); // Activates the widget, assuming it already exists and is visible. @@ -610,10 +603,10 @@ index 37358f90484ac..6bfc0e341a5ce 100644 // Deactivates the widget, making the next window in the Z order the active // window. diff --git ui/views/widget/widget_delegate.h ui/views/widget/widget_delegate.h -index 1c57bce35bcb7..4bb7c6f603062 100644 +index 75cc55b4f885c..5f20ca3197d5f 100644 --- ui/views/widget/widget_delegate.h +++ ui/views/widget/widget_delegate.h -@@ -404,6 +404,10 @@ class VIEWS_EXPORT WidgetDelegate { +@@ -415,6 +415,10 @@ class VIEWS_EXPORT WidgetDelegate { // Returns true if the title text should be centered. bool ShouldCenterWindowTitleText() const; @@ -625,24 +618,24 @@ index 1c57bce35bcb7..4bb7c6f603062 100644 bool enable_arrow_key_traversal() const { return params_.enable_arrow_key_traversal; diff --git ui/views/widget/widget_hwnd_utils.cc ui/views/widget/widget_hwnd_utils.cc -index f28c1d1fb5581..4e2390b94cbe9 100644 +index fb8c20fc25367..fdefb30fc3666 100644 --- ui/views/widget/widget_hwnd_utils.cc +++ ui/views/widget/widget_hwnd_utils.cc -@@ -64,7 +64,8 @@ void CalculateWindowStylesFromInitParams( - if (!widget_delegate->CanResize()) +@@ -72,7 +72,8 @@ void CalculateWindowStylesFromInitParams( *style &= static_cast(~(WS_THICKFRAME | WS_MAXIMIZEBOX)); - if (params.remove_standard_frame) + } + if (params.remove_standard_frame) { - *style &= static_cast(~(WS_MINIMIZEBOX | WS_MAXIMIZEBOX)); + *style &= static_cast(~(WS_MINIMIZEBOX | WS_MAXIMIZEBOX | + WS_CAPTION | WS_SYSMENU)); + } if (native_widget_delegate->IsDialogBox()) { - *style |= DS_MODALFRAME; diff --git ui/views/win/hwnd_message_handler.cc ui/views/win/hwnd_message_handler.cc -index 509bbf34ed99b..71c33ad95e880 100644 +index 8ad389091ffad..80a11e306b18f 100644 --- ui/views/win/hwnd_message_handler.cc +++ ui/views/win/hwnd_message_handler.cc -@@ -773,7 +773,11 @@ bool HWNDMessageHandler::IsVisible() const { +@@ -793,7 +793,11 @@ bool HWNDMessageHandler::IsVisible() const { } bool HWNDMessageHandler::IsActive() const { @@ -655,7 +648,7 @@ index 509bbf34ed99b..71c33ad95e880 100644 } bool HWNDMessageHandler::IsMinimized() const { -@@ -3136,10 +3140,13 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message, +@@ -3239,10 +3243,13 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message, } else if (event.type() == ui::EventType::kMousewheel) { ui::MouseWheelEvent mouse_wheel_event(msg); // Reroute the mouse wheel to the window under the pointer if applicable. diff --git a/patch/patches/viz_osr_2575.patch b/patch/patches/viz_osr_2575.patch index 7c7364a38..28cc7a11d 100644 --- a/patch/patches/viz_osr_2575.patch +++ b/patch/patches/viz_osr_2575.patch @@ -80,7 +80,7 @@ index 8af69cac78b74..9f74e511c263d 100644 private: const HWND hwnd_; diff --git components/viz/service/BUILD.gn components/viz/service/BUILD.gn -index 2fa9063bb7c2f..9a276ac5a1aca 100644 +index f0b539738e504..1574ac0dbce11 100644 --- components/viz/service/BUILD.gn +++ components/viz/service/BUILD.gn @@ -269,6 +269,8 @@ viz_component("service") { @@ -150,10 +150,10 @@ index 796ae2688436e..37a3406790210 100644 TRACE_EVENT_ASYNC_BEGIN0("viz", "SoftwareOutputDeviceWinProxy::Draw", this); diff --git content/browser/compositor/viz_process_transport_factory.cc content/browser/compositor/viz_process_transport_factory.cc -index 6ad03ff41c8ae..5d1add76f8aff 100644 +index c8986a3972555..21f6d118708e7 100644 --- content/browser/compositor/viz_process_transport_factory.cc +++ content/browser/compositor/viz_process_transport_factory.cc -@@ -387,8 +387,13 @@ void VizProcessTransportFactory::OnEstablishedGpuChannel( +@@ -386,8 +386,13 @@ void VizProcessTransportFactory::OnEstablishedGpuChannel( mojo::AssociatedRemote display_private; root_params->display_private = display_private.BindNewEndpointAndPassReceiver(); @@ -170,10 +170,10 @@ index 6ad03ff41c8ae..5d1add76f8aff 100644 compositor_data.display_client->GetBoundRemote(resize_task_runner_); mojo::AssociatedRemote diff --git mojo/public/cpp/bindings/sync_call_restrictions.h mojo/public/cpp/bindings/sync_call_restrictions.h -index 793fe1b921b05..161ce2335c265 100644 +index 6fa09e8da85bf..86681950978e6 100644 --- mojo/public/cpp/bindings/sync_call_restrictions.h +++ mojo/public/cpp/bindings/sync_call_restrictions.h -@@ -43,6 +43,7 @@ class Compositor; +@@ -38,6 +38,7 @@ class Compositor; } // namespace ui namespace viz { @@ -181,7 +181,7 @@ index 793fe1b921b05..161ce2335c265 100644 class GpuHostImpl; class HostFrameSinkManager; class HostGpuMemoryBufferManager; -@@ -125,6 +126,8 @@ class COMPONENT_EXPORT(MOJO_CPP_BINDINGS) SyncCallRestrictions { +@@ -116,6 +117,8 @@ class COMPONENT_EXPORT(MOJO_CPP_BINDINGS) SyncCallRestrictions { // For preventing frame swaps of wrong size during resize on Windows. // (https://crbug.com/811945) friend class ui::Compositor; diff --git a/patch/patches/web_contents_1257_1565.patch b/patch/patches/web_contents_1257_1565.patch index 8d10efe3c..0abc62d89 100644 --- a/patch/patches/web_contents_1257_1565.patch +++ b/patch/patches/web_contents_1257_1565.patch @@ -1,8 +1,8 @@ diff --git content/browser/web_contents/web_contents_impl.cc content/browser/web_contents/web_contents_impl.cc -index c87953ecbdbc1..de575fec3e4c5 100644 +index 5a683026aaa08..1bab3bb15cc67 100644 --- content/browser/web_contents/web_contents_impl.cc +++ content/browser/web_contents/web_contents_impl.cc -@@ -3789,6 +3789,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, +@@ -3809,6 +3809,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, params.main_frame_name, GetOpener(), primary_main_frame_policy, base::UnguessableToken::Create()); @@ -15,7 +15,7 @@ index c87953ecbdbc1..de575fec3e4c5 100644 std::unique_ptr delegate = GetContentClient()->browser()->GetWebContentsViewDelegate(this); -@@ -3799,6 +3805,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, +@@ -3819,6 +3825,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, view_ = CreateWebContentsView(this, std::move(delegate), &render_view_host_delegate_view_); } @@ -23,7 +23,7 @@ index c87953ecbdbc1..de575fec3e4c5 100644 CHECK(render_view_host_delegate_view_); CHECK(view_.get()); -@@ -3998,6 +4005,9 @@ void WebContentsImpl::RenderWidgetCreated( +@@ -4024,6 +4031,9 @@ void WebContentsImpl::RenderWidgetCreated( "render_widget_host", render_widget_host); CHECK(!created_widgets_.contains(render_widget_host->GetFrameSinkId())); created_widgets_[render_widget_host->GetFrameSinkId()] = render_widget_host; @@ -33,7 +33,7 @@ index c87953ecbdbc1..de575fec3e4c5 100644 } void WebContentsImpl::RenderWidgetDeleted( -@@ -4883,6 +4893,15 @@ FrameTree* WebContentsImpl::CreateNewWindow( +@@ -4925,6 +4935,15 @@ FrameTree* WebContentsImpl::CreateNewWindow( create_params.picture_in_picture_options = *(params.pip_options); } @@ -49,7 +49,7 @@ index c87953ecbdbc1..de575fec3e4c5 100644 // Check whether there is an available prerendered page for this navigation if // this is not for guest. If it exists, take WebContents pre-created for // hosting the prerendered page instead of creating new WebContents. -@@ -9422,6 +9441,9 @@ void WebContentsImpl::SetFocusedFrame(FrameTreeNode* node, +@@ -9486,6 +9505,9 @@ void WebContentsImpl::SetFocusedFrame(FrameTreeNode* node, } CloseListenerManager::DidChangeFocusedFrame(this); @@ -60,10 +60,10 @@ index c87953ecbdbc1..de575fec3e4c5 100644 FrameTree* WebContentsImpl::GetOwnedPictureInPictureFrameTree() { diff --git content/public/browser/web_contents.h content/public/browser/web_contents.h -index c601698c6032d..6f9ff4e57f592 100644 +index e9c6a19ace431..398d7c806ed4d 100644 --- content/public/browser/web_contents.h +++ content/public/browser/web_contents.h -@@ -113,10 +113,12 @@ class BrowserPluginGuestDelegate; +@@ -114,10 +114,12 @@ class BrowserPluginGuestDelegate; class GuestPageHolder; class RenderFrameHost; class RenderViewHost; @@ -76,7 +76,7 @@ index c601698c6032d..6f9ff4e57f592 100644 class WebUI; struct DropData; struct MHTMLGenerationParams; -@@ -277,6 +279,10 @@ class WebContents : public PageNavigator, public base::SupportsUserData { +@@ -278,6 +280,10 @@ class WebContents : public PageNavigator, public base::SupportsUserData { network::mojom::WebSandboxFlags starting_sandbox_flags = network::mojom::WebSandboxFlags::kNone; @@ -88,10 +88,10 @@ index c601698c6032d..6f9ff4e57f592 100644 // the value that'll be returned by GetLastActiveTimeTicks(). If this is // left default initialized then the value is not passed on to the diff --git content/public/browser/web_contents_delegate.h content/public/browser/web_contents_delegate.h -index c0be779a4c1d8..02fda067754a0 100644 +index 0bab4dd08a28d..5b4334dcef8d2 100644 --- content/public/browser/web_contents_delegate.h +++ content/public/browser/web_contents_delegate.h -@@ -97,9 +97,11 @@ class EyeDropperListener; +@@ -98,9 +98,11 @@ class EyeDropperListener; class FileSelectListener; class JavaScriptDialogManager; class RenderFrameHost; @@ -103,7 +103,7 @@ index c0be779a4c1d8..02fda067754a0 100644 struct ContextMenuParams; struct DropData; struct MediaPlayerWatchTime; -@@ -365,6 +367,14 @@ class CONTENT_EXPORT WebContentsDelegate { +@@ -366,6 +368,14 @@ class CONTENT_EXPORT WebContentsDelegate { const StoragePartitionConfig& partition_config, SessionStorageNamespace* session_storage_namespace); @@ -119,7 +119,7 @@ index c0be779a4c1d8..02fda067754a0 100644 // typically happens when popups are created. virtual void WebContentsCreated(WebContents* source_contents, diff --git content/public/browser/web_contents_observer.h content/public/browser/web_contents_observer.h -index bc246993906cd..40739daed7bf9 100644 +index 5e73c1f7cce2f..818a27a47a3db 100644 --- content/public/browser/web_contents_observer.h +++ content/public/browser/web_contents_observer.h @@ -248,6 +248,9 @@ class CONTENT_EXPORT WebContentsObserver : public base::CheckedObserver { @@ -132,7 +132,7 @@ index bc246993906cd..40739daed7bf9 100644 // This method is invoked when the `blink::WebView` of the current // RenderViewHost is ready, e.g. because we recreated it after a crash. virtual void RenderViewReady() {} -@@ -939,6 +942,10 @@ class CONTENT_EXPORT WebContentsObserver : public base::CheckedObserver { +@@ -942,6 +945,10 @@ class CONTENT_EXPORT WebContentsObserver : public base::CheckedObserver { // WebContents has gained/lost focus. virtual void OnFocusChangedInPage(FocusedNodeDetails* details) {} diff --git a/patch/patches/webkit_plugin_info_2015.patch b/patch/patches/webkit_plugin_info_2015.patch index 9bf88e51a..cd64beb8a 100644 --- a/patch/patches/webkit_plugin_info_2015.patch +++ b/patch/patches/webkit_plugin_info_2015.patch @@ -1,8 +1,8 @@ diff --git third_party/blink/public/platform/platform.h third_party/blink/public/platform/platform.h -index 6bae009bb76ea..7ef6ace04ff1e 100644 +index d4e60554211f1..3b1535e1b3207 100644 --- third_party/blink/public/platform/platform.h +++ third_party/blink/public/platform/platform.h -@@ -808,6 +808,11 @@ class BLINK_PLATFORM_EXPORT Platform { +@@ -810,6 +810,11 @@ class BLINK_PLATFORM_EXPORT Platform { } #endif diff --git a/patch/patches/webkit_popups.patch b/patch/patches/webkit_popups.patch index 1ecd9e324..d91b941f5 100644 --- a/patch/patches/webkit_popups.patch +++ b/patch/patches/webkit_popups.patch @@ -11,7 +11,7 @@ index 083af135d890c..799ef161a493a 100644 // Cancels and hides the current popup (datetime, select...) if any. virtual void CancelPagePopup() = 0; diff --git third_party/blink/renderer/core/exported/web_view_impl.cc third_party/blink/renderer/core/exported/web_view_impl.cc -index c1aebbc3db3e2..e3e1412718fbf 100644 +index 041ef7c3079f4..f209f54ba5b8f 100644 --- third_party/blink/renderer/core/exported/web_view_impl.cc +++ third_party/blink/renderer/core/exported/web_view_impl.cc @@ -257,8 +257,13 @@ void WebView::SetUseExternalPopupMenus(bool use_external_popup_menus) { @@ -62,7 +62,7 @@ index 4f77ef1379390..9f4a3f4e10295 100644 gfx::Transform device_emulation_transform_; diff --git third_party/blink/renderer/core/page/chrome_client_impl.cc third_party/blink/renderer/core/page/chrome_client_impl.cc -index 4993d90d105b6..0aaa980d74853 100644 +index 79ccb4e526071..9d5585032d1eb 100644 --- third_party/blink/renderer/core/page/chrome_client_impl.cc +++ third_party/blink/renderer/core/page/chrome_client_impl.cc @@ -971,7 +971,7 @@ PopupMenu* ChromeClientImpl::OpenPopupMenu(LocalFrame& frame, diff --git a/patch/patches/win_sandbox_3210.patch b/patch/patches/win_sandbox_3210.patch index 7ee0fbfc1..0888d0f0c 100644 --- a/patch/patches/win_sandbox_3210.patch +++ b/patch/patches/win_sandbox_3210.patch @@ -1,8 +1,8 @@ diff --git sandbox/policy/win/sandbox_win.cc sandbox/policy/win/sandbox_win.cc -index 617103850407d..633805d2f7e8d 100644 +index 1c3ead160e2aa..8762f9f0e5c8b 100644 --- sandbox/policy/win/sandbox_win.cc +++ sandbox/policy/win/sandbox_win.cc -@@ -933,6 +933,17 @@ ResultCode SandboxWin::StartSandboxedProcess( +@@ -928,6 +928,17 @@ ResultCode SandboxWin::StartSandboxedProcess( const base::HandlesToInheritVector& handles_to_inherit, SandboxDelegate* delegate, StartSandboxedProcessCallback result_callback) { diff --git a/patch/patches/win_sandbox_op3way_3708.patch b/patch/patches/win_sandbox_op3way_3708.patch index 4db4db46a..045425cf5 100644 --- a/patch/patches/win_sandbox_op3way_3708.patch +++ b/patch/patches/win_sandbox_op3way_3708.patch @@ -1,10 +1,10 @@ diff --git base/time/time.h base/time/time.h -index 36b7d12bf5b8e..6b07c2bb11b4c 100644 +index da5c4c967b4ac..769f856c220af 100644 --- base/time/time.h +++ base/time/time.h @@ -134,6 +134,13 @@ constexpr bool isnan(double d) { - } + } // namespace +// Clang compiler is unable to eliminate a "dead" function call to an undefined +// `std::_Literal_zero_is_expected()` function that MSVC uses to allow @@ -16,7 +16,7 @@ index 36b7d12bf5b8e..6b07c2bb11b4c 100644 // TimeDelta ------------------------------------------------------------------ class BASE_EXPORT TimeDelta { -@@ -320,8 +327,17 @@ class BASE_EXPORT TimeDelta { +@@ -322,8 +329,17 @@ class BASE_EXPORT TimeDelta { // Comparison operators. friend constexpr bool operator==(TimeDelta, TimeDelta) = default; @@ -34,7 +34,7 @@ index 36b7d12bf5b8e..6b07c2bb11b4c 100644 // Returns this delta, ceiled/floored/rounded-away-from-zero to the nearest // multiple of |interval|. -@@ -472,8 +488,17 @@ class TimeBase { +@@ -480,8 +496,17 @@ class TimeBase { // Comparison operators friend constexpr bool operator==(const TimeBase&, const TimeBase&) = default;