diff --git a/CHROMIUM_BUILD_COMPATIBILITY.txt b/CHROMIUM_BUILD_COMPATIBILITY.txt index be27e2a23..e5c4d4e04 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/122.0.6261.0' + 'chromium_checkout': 'refs/tags/123.0.6312.0' } diff --git a/include/cef_api_hash.h b/include/cef_api_hash.h index df6da5bfc..f852a2d7a 100644 --- a/include/cef_api_hash.h +++ b/include/cef_api_hash.h @@ -42,13 +42,13 @@ // way that may cause binary incompatibility with other builds. The universal // hash value will change if any platform is affected whereas the platform hash // values will change only if that particular platform is affected. -#define CEF_API_HASH_UNIVERSAL "afb63c581ad6ef9b3d3ebed472cc66f75ce4647f" +#define CEF_API_HASH_UNIVERSAL "93050a5111ee3131f5589bd7d3be5376539a64c2" #if defined(OS_WIN) -#define CEF_API_HASH_PLATFORM "504dbb53deeebd11a16ea01533c5d9ecfa6be555" +#define CEF_API_HASH_PLATFORM "ebcca93f53d935802a4cd02606864ff1eb1a1baa" #elif defined(OS_MAC) -#define CEF_API_HASH_PLATFORM "dc3cf1d007fec844ab287dac384c8b00366d46fc" +#define CEF_API_HASH_PLATFORM "a2c1ee5ae59a181773019412084903e4824aa300" #elif defined(OS_LINUX) -#define CEF_API_HASH_PLATFORM "2b47d389c64db81913818b708b78868a22e65b66" +#define CEF_API_HASH_PLATFORM "915ea22829d9814cb6481891de4619f0aafda72f" #endif #ifdef __cplusplus diff --git a/include/internal/cef_types.h b/include/internal/cef_types.h index 0abfe5b6b..63272e32e 100644 --- a/include/internal/cef_types.h +++ b/include/internal/cef_types.h @@ -2336,6 +2336,7 @@ typedef enum { DOM_FORM_CONTROL_TYPE_BUTTON_SUBMIT, DOM_FORM_CONTROL_TYPE_BUTTON_RESET, DOM_FORM_CONTROL_TYPE_BUTTON_SELECT_LIST, + DOM_FORM_CONTROL_TYPE_BUTTON_POPOVER, DOM_FORM_CONTROL_TYPE_FIELDSET, DOM_FORM_CONTROL_TYPE_INPUT_BUTTON, DOM_FORM_CONTROL_TYPE_INPUT_CHECKBOX, diff --git a/include/internal/cef_types_content_settings.h b/include/internal/cef_types_content_settings.h index cdb24567c..8ae77ae34 100644 --- a/include/internal/cef_types_content_settings.h +++ b/include/internal/cef_types_content_settings.h @@ -407,6 +407,17 @@ typedef enum { /// Content settings for access to printers for the Web Printing API. CEF_CONTENT_SETTING_TYPE_WEB_PRINTING, + /// Content setting used to indicate whether entering HTML Fullscreen + /// automatically (i.e. without transient activation) should be enabled. + CEF_CONTENT_SETTING_TYPE_AUTOMATIC_FULLSCREEN, + + /// Content settings used to indicate that a web app is allowed to prompt the + /// user for the installation of sub apps. + CEF_CONTENT_SETTING_TYPE_SUB_APP_INSTALLATION_PROMPTS, + + /// Whether an application can enumerate audio output device. + CEF_CONTENT_SETTING_TYPE_SPEAKER_SELECTION, + CEF_CONTENT_SETTING_TYPE_NUM_TYPES, } cef_content_setting_types_t; diff --git a/libcef/browser/alloy/alloy_content_browser_client.cc b/libcef/browser/alloy/alloy_content_browser_client.cc index d812a72c8..d8ac85695 100644 --- a/libcef/browser/alloy/alloy_content_browser_client.cc +++ b/libcef/browser/alloy/alloy_content_browser_client.cc @@ -91,7 +91,7 @@ #include "components/pdf/browser/pdf_document_helper.h" #include "components/pdf/browser/pdf_navigation_throttle.h" #include "components/pdf/browser/pdf_url_loader_request_interceptor.h" -#include "components/pdf/common/internal_plugin_helpers.h" +#include "components/pdf/common/constants.h" #include "components/policy/core/common/policy_pref_names.h" #include "components/spellcheck/common/spellcheck.mojom.h" #include "components/version_info/version_info.h" @@ -118,7 +118,6 @@ #include "extensions/browser/api/automation_internal/automation_event_router.h" #include "extensions/browser/api/mime_handler_private/mime_handler_private.h" #include "extensions/browser/event_router.h" -#include "extensions/browser/extension_message_filter.h" #include "extensions/browser/extension_protocols.h" #include "extensions/browser/extension_registry.h" #include "extensions/browser/extension_web_contents_observer.h" @@ -397,13 +396,6 @@ void AlloyContentBrowserClient::RenderProcessWillLaunch( content::RenderProcessHost* host) { Profile* profile = Profile::FromBrowserContext(host->GetBrowserContext()); -#if BUILDFLAG(ENABLE_EXTENSIONS_LEGACY_IPC) - if (extensions::ExtensionsEnabled()) { - host->AddFilter( - new extensions::ExtensionMessageFilter(host->GetID(), profile)); - } -#endif - // If the renderer process crashes then the host may already have // CefBrowserInfoManager as an observer. Try to remove it first before adding // to avoid DCHECKs. @@ -881,19 +873,6 @@ void AlloyContentBrowserClient::ExposeInterfacesToRenderer( associated_registry->AddInterface( base::BindRepeating(&extensions::RendererStartupHelper::BindForRenderer, render_process_host->GetID())); -#if BUILDFLAG(ENABLE_EXTENSIONS_LEGACY_IPC) - associated_registry->AddInterface( - base::BindRepeating(&extensions::EventRouter::BindForRenderer, - host->GetID())); - associated_registry->AddInterface( - base::BindRepeating(&extensions::ServiceWorkerHost::BindReceiver, - host->GetID())); - associated_registry - ->AddInterface( - base::BindRepeating( - &extensions::AutomationEventRouter::BindForRenderer, - host->GetID())); -#endif } } @@ -910,7 +889,6 @@ void AlloyContentBrowserClient:: associated_registry.AddInterface( base::BindRepeating(&extensions::RendererStartupHelper::BindForRenderer, service_worker_version_info.process_id)); -#if !BUILDFLAG(ENABLE_EXTENSIONS_LEGACY_IPC) associated_registry.AddInterface( base::BindRepeating(&extensions::ServiceWorkerHost::BindReceiver, service_worker_version_info.process_id)); @@ -922,7 +900,6 @@ void AlloyContentBrowserClient:: associated_registry.AddInterface( base::BindRepeating(&extensions::EventRouter::BindForRenderer, service_worker_version_info.process_id)); -#endif } } @@ -1196,7 +1173,7 @@ void AlloyContentBrowserClient::RegisterNonNetworkSubresourceURLLoaderFactories( } } -bool AlloyContentBrowserClient::WillCreateURLLoaderFactory( +void AlloyContentBrowserClient::WillCreateURLLoaderFactory( content::BrowserContext* browser_context, content::RenderFrameHost* frame, int render_process_id, @@ -1204,7 +1181,7 @@ bool AlloyContentBrowserClient::WillCreateURLLoaderFactory( const url::Origin& request_initiator, std::optional navigation_id, ukm::SourceIdObj ukm_source_id, - mojo::PendingReceiver* factory_receiver, + network::URLLoaderFactoryBuilder& factory_builder, mojo::PendingRemote* header_client, bool* bypass_redirect_checks, @@ -1217,9 +1194,8 @@ bool AlloyContentBrowserClient::WillCreateURLLoaderFactory( type == URLLoaderFactoryType::kDownload, request_initiator); net_service::ProxyURLLoaderFactory::CreateProxy( - browser_context, factory_receiver, header_client, + browser_context, factory_builder, header_client, std::move(request_handler)); - return true; } void AlloyContentBrowserClient::OnNetworkServiceCreated( diff --git a/libcef/browser/alloy/alloy_content_browser_client.h b/libcef/browser/alloy/alloy_content_browser_client.h index 4b43f4858..e61894263 100644 --- a/libcef/browser/alloy/alloy_content_browser_client.h +++ b/libcef/browser/alloy/alloy_content_browser_client.h @@ -179,7 +179,7 @@ class AlloyContentBrowserClient : public content::ContentBrowserClient { int render_frame_id, const std::optional& request_initiator_origin, NonNetworkURLLoaderFactoryMap* factories) override; - bool WillCreateURLLoaderFactory( + void WillCreateURLLoaderFactory( content::BrowserContext* browser_context, content::RenderFrameHost* frame, int render_process_id, @@ -187,7 +187,7 @@ class AlloyContentBrowserClient : public content::ContentBrowserClient { const url::Origin& request_initiator, std::optional navigation_id, ukm::SourceIdObj ukm_source_id, - mojo::PendingReceiver* factory_receiver, + network::URLLoaderFactoryBuilder& factory_builder, mojo::PendingRemote* header_client, bool* bypass_redirect_checks, diff --git a/libcef/browser/chrome/chrome_content_browser_client_cef.cc b/libcef/browser/chrome/chrome_content_browser_client_cef.cc index 107a5ad8a..6f87a721c 100644 --- a/libcef/browser/chrome/chrome_content_browser_client_cef.cc +++ b/libcef/browser/chrome/chrome_content_browser_client_cef.cc @@ -226,7 +226,7 @@ void ChromeContentBrowserClientCef::OverrideWebkitPrefs( web_contents->SetPageBaseBackgroundColor(base_background_color); } -bool ChromeContentBrowserClientCef::WillCreateURLLoaderFactory( +void ChromeContentBrowserClientCef::WillCreateURLLoaderFactory( content::BrowserContext* browser_context, content::RenderFrameHost* frame, int render_process_id, @@ -234,7 +234,7 @@ bool ChromeContentBrowserClientCef::WillCreateURLLoaderFactory( const url::Origin& request_initiator, std::optional navigation_id, ukm::SourceIdObj ukm_source_id, - mojo::PendingReceiver* factory_receiver, + network::URLLoaderFactoryBuilder& factory_builder, mojo::PendingRemote* header_client, bool* bypass_redirect_checks, @@ -246,15 +246,16 @@ bool ChromeContentBrowserClientCef::WillCreateURLLoaderFactory( // profiles::CreateSystemProfileForUserManager. auto profile = Profile::FromBrowserContext(browser_context); if (!CefBrowserContext::FromProfile(profile)) { - return ChromeContentBrowserClient::WillCreateURLLoaderFactory( + ChromeContentBrowserClient::WillCreateURLLoaderFactory( browser_context, frame, render_process_id, type, request_initiator, - navigation_id, ukm_source_id, factory_receiver, header_client, + navigation_id, ukm_source_id, factory_builder, header_client, bypass_redirect_checks, disable_secure_dns, factory_override, navigation_response_task_runner); + return; } // Based on content/browser/devtools/devtools_instrumentation.cc - // WillCreateURLLoaderFactoryInternal. + // WillCreateURLLoaderFactoryParams::Run. network::mojom::URLLoaderFactoryOverridePtr cef_override( network::mojom::URLLoaderFactoryOverride::New()); // If caller passed some existing overrides, use those. @@ -276,32 +277,31 @@ bool ChromeContentBrowserClientCef::WillCreateURLLoaderFactory( } // TODO(chrome): Is it necessary to proxy |header_client| callbacks? - bool use_proxy = ChromeContentBrowserClient::WillCreateURLLoaderFactory( + ChromeContentBrowserClient::WillCreateURLLoaderFactory( browser_context, frame, render_process_id, type, request_initiator, - navigation_id, ukm_source_id, - &(intercepting_factory->overridden_factory_receiver), + navigation_id, ukm_source_id, factory_builder, /*header_client=*/nullptr, bypass_redirect_checks, disable_secure_dns, handler_override, navigation_response_task_runner); - if (use_proxy) { - DCHECK(intercepting_factory->overriding_factory); - DCHECK(intercepting_factory->overridden_factory_receiver); - if (!factory_override) { - // Not a subresource navigation, so just override the target receiver. - mojo::FusePipes(std::move(*factory_receiver), - std::move(cef_override->overriding_factory)); - *factory_receiver = std::move(cef_override->overridden_factory_receiver); - } else if (!*factory_override) { - // No other overrides, so just returns ours as is. - *factory_override = network::mojom::URLLoaderFactoryOverride::New( - std::move(cef_override->overriding_factory), - std::move(cef_override->overridden_factory_receiver), false); - } - // ... else things are already taken care of, as handler_override was - // pointing to factory override and we've done all magic in-place. - DCHECK(!cef_override->overriding_factory); - DCHECK(!cef_override->overridden_factory_receiver); + DCHECK(intercepting_factory->overriding_factory); + DCHECK(intercepting_factory->overridden_factory_receiver); + if (!factory_override) { + // Not a subresource navigation, so just override the target receiver. + auto [receiver, remote] = factory_builder.Append(); + mojo::FusePipes(std::move(receiver), + std::move(cef_override->overriding_factory)); + mojo::FusePipes(std::move(cef_override->overridden_factory_receiver), + std::move(remote)); + } else if (!*factory_override) { + // No other overrides, so just returns ours as is. + *factory_override = network::mojom::URLLoaderFactoryOverride::New( + std::move(cef_override->overriding_factory), + std::move(cef_override->overridden_factory_receiver), false); } + // ... else things are already taken care of, as handler_override was + // pointing to factory override and we've done all magic in-place. + DCHECK(!cef_override->overriding_factory); + DCHECK(!cef_override->overridden_factory_receiver); auto request_handler = net_service::CreateInterceptedRequestHandler( browser_context, frame, render_process_id, @@ -309,10 +309,8 @@ bool ChromeContentBrowserClientCef::WillCreateURLLoaderFactory( type == URLLoaderFactoryType::kDownload, request_initiator); net_service::ProxyURLLoaderFactory::CreateProxy( - browser_context, factory_receiver, header_client, + browser_context, factory_builder, header_client, std::move(request_handler)); - - return true; } bool ChromeContentBrowserClientCef::HandleExternalProtocol( diff --git a/libcef/browser/chrome/chrome_content_browser_client_cef.h b/libcef/browser/chrome/chrome_content_browser_client_cef.h index 91d7575cc..04a0db000 100644 --- a/libcef/browser/chrome/chrome_content_browser_client_cef.h +++ b/libcef/browser/chrome/chrome_content_browser_client_cef.h @@ -55,7 +55,7 @@ class ChromeContentBrowserClientCef : public ChromeContentBrowserClient { bool* no_javascript_access) override; void OverrideWebkitPrefs(content::WebContents* web_contents, blink::web_pref::WebPreferences* prefs) override; - bool WillCreateURLLoaderFactory( + void WillCreateURLLoaderFactory( content::BrowserContext* browser_context, content::RenderFrameHost* frame, int render_process_id, @@ -63,7 +63,7 @@ class ChromeContentBrowserClientCef : public ChromeContentBrowserClient { const url::Origin& request_initiator, std::optional navigation_id, ukm::SourceIdObj ukm_source_id, - mojo::PendingReceiver* factory_receiver, + network::URLLoaderFactoryBuilder& factory_builder, mojo::PendingRemote* header_client, bool* bypass_redirect_checks, diff --git a/libcef/browser/devtools/devtools_frontend.cc b/libcef/browser/devtools/devtools_frontend.cc index 0fd3d88bf..a4fbd59ec 100644 --- a/libcef/browser/devtools/devtools_frontend.cc +++ b/libcef/browser/devtools/devtools_frontend.cc @@ -205,9 +205,7 @@ class CefDevToolsFrontend::NetworkResourceLoader bool encoded = !base::IsStringUTF8(chunk); if (encoded) { - std::string encoded_string; - base::Base64Encode(chunk, &encoded_string); - chunkValue = base::Value(std::move(encoded_string)); + chunkValue = base::Value(base::Base64Encode(chunk)); } else { chunkValue = base::Value(chunk); } diff --git a/libcef/browser/extensions/component_extension_resource_manager.cc b/libcef/browser/extensions/component_extension_resource_manager.cc index 23bdee0f9..e3ba6cb6f 100644 --- a/libcef/browser/extensions/component_extension_resource_manager.cc +++ b/libcef/browser/extensions/component_extension_resource_manager.cc @@ -61,7 +61,7 @@ bool CefComponentExtensionResourceManager::IsComponentExtensionResource( const ui::TemplateReplacements* CefComponentExtensionResourceManager::GetTemplateReplacementsForExtension( - const std::string& extension_id) const { + const ExtensionId& extension_id) const { auto it = template_replacements_.find(extension_id); return it != template_replacements_.end() ? &it->second : nullptr; } diff --git a/libcef/browser/extensions/component_extension_resource_manager.h b/libcef/browser/extensions/component_extension_resource_manager.h index d541d9cb1..1ec6b75bc 100644 --- a/libcef/browser/extensions/component_extension_resource_manager.h +++ b/libcef/browser/extensions/component_extension_resource_manager.h @@ -9,6 +9,7 @@ #include "base/files/file_path.h" #include "extensions/browser/component_extension_resource_manager.h" +#include "extensions/common/extension_id.h" namespace webui { struct ResourcePath; @@ -33,7 +34,7 @@ class CefComponentExtensionResourceManager const base::FilePath& resource_path, int* resource_id) const override; const ui::TemplateReplacements* GetTemplateReplacementsForExtension( - const std::string& extension_id) const override; + const ExtensionId& extension_id) const override; private: void AddComponentResourceEntries(const webui::ResourcePath* entries, @@ -45,7 +46,7 @@ class CefComponentExtensionResourceManager // A map from an extension ID to its i18n template replacements. using TemplateReplacementMap = - std::map; + std::map; TemplateReplacementMap template_replacements_; }; diff --git a/libcef/browser/extensions/extension_system.cc b/libcef/browser/extensions/extension_system.cc index 050e4f433..80eb16ec0 100644 --- a/libcef/browser/extensions/extension_system.cc +++ b/libcef/browser/extensions/extension_system.cc @@ -33,6 +33,7 @@ #include "content/public/browser/notification_source.h" #include "content/public/browser/plugin_service.h" #include "content/public/browser/render_process_host.h" +#include "content/public/common/webplugininfo.h" #include "extensions/browser/api/app_runtime/app_runtime_api.h" #include "extensions/browser/extension_prefs.h" #include "extensions/browser/extension_registry.h" @@ -44,7 +45,6 @@ #include "extensions/browser/unloaded_extension_reason.h" #include "extensions/browser/user_script_manager.h" #include "extensions/common/constants.h" -#include "extensions/common/extension_messages.h" #include "extensions/common/file_util.h" #include "extensions/common/manifest_constants.h" #include "extensions/common/manifest_handlers/mime_types_handler.h" diff --git a/libcef/browser/media_access_query.cc b/libcef/browser/media_access_query.cc index 93f101d42..b0c84894d 100644 --- a/libcef/browser/media_access_query.cc +++ b/libcef/browser/media_access_query.cc @@ -131,18 +131,24 @@ class CefMediaAccessQuery { blink::MediaStreamDevices audio_devices; blink::MediaStreamDevices video_devices; - if (device_audio_requested()) { + if (device_audio_requested() && + !request_.requested_audio_device_ids.empty() && + !request_.requested_audio_device_ids.front().empty()) { // Pick the desired device or fall back to the first available of the // given type. CefMediaCaptureDevicesDispatcher::GetInstance()->GetRequestedDevice( - request_.requested_audio_device_id, true, false, &audio_devices); + request_.requested_audio_device_ids.front(), true, false, + &audio_devices); } - if (device_video_requested()) { + if (device_video_requested() && + !request_.requested_video_device_ids.empty() && + !request_.requested_video_device_ids.front().empty()) { // Pick the desired device or fall back to the first available of the // given type. CefMediaCaptureDevicesDispatcher::GetInstance()->GetRequestedDevice( - request_.requested_video_device_id, false, true, &video_devices); + request_.requested_video_device_ids.front(), false, true, + &video_devices); } if (desktop_audio_requested()) { @@ -152,13 +158,14 @@ class CefMediaAccessQuery { if (desktop_video_requested()) { content::DesktopMediaID media_id; - if (request_.requested_video_device_id.empty()) { + if (!request_.requested_video_device_ids.empty() && + !request_.requested_video_device_ids.front().empty()) { + media_id = content::DesktopMediaID::Parse( + request_.requested_video_device_ids.front()); + } else { media_id = content::DesktopMediaID(content::DesktopMediaID::TYPE_SCREEN, -1 /* webrtc::kFullDesktopScreenId */); - } else { - media_id = - content::DesktopMediaID::Parse(request_.requested_video_device_id); } video_devices.emplace_back(request_.video_type, media_id.ToString(), "Screen"); diff --git a/libcef/browser/net_service/proxy_url_loader_factory.cc b/libcef/browser/net_service/proxy_url_loader_factory.cc index a787cca0b..3e4fe4a73 100644 --- a/libcef/browser/net_service/proxy_url_loader_factory.cc +++ b/libcef/browser/net_service/proxy_url_loader_factory.cc @@ -1349,16 +1349,14 @@ void ProxyURLLoaderFactory::SetDisconnectCallback( // static void ProxyURLLoaderFactory::CreateProxy( content::BrowserContext* browser_context, - mojo::PendingReceiver* factory_receiver, + network::URLLoaderFactoryBuilder& factory_builder, mojo::PendingRemote* header_client, std::unique_ptr request_handler) { CEF_REQUIRE_UIT(); DCHECK(request_handler); - auto proxied_receiver = std::move(*factory_receiver); - mojo::PendingRemote target_factory_remote; - *factory_receiver = target_factory_remote.InitWithNewPipeAndPassReceiver(); + auto [factory_receiver, target_factory_remote] = factory_builder.Append(); mojo::PendingReceiver header_client_receiver; @@ -1373,7 +1371,7 @@ void ProxyURLLoaderFactory::CreateProxy( CEF_POST_TASK( CEF_IOT, base::BindOnce( - &ProxyURLLoaderFactory::CreateOnIOThread, std::move(proxied_receiver), + &ProxyURLLoaderFactory::CreateOnIOThread, std::move(factory_receiver), std::move(target_factory_remote), std::move(header_client_receiver), base::Unretained(resource_context), std::move(request_handler))); } diff --git a/libcef/browser/net_service/proxy_url_loader_factory.h b/libcef/browser/net_service/proxy_url_loader_factory.h index b9fdeae68..499a06e1a 100644 --- a/libcef/browser/net_service/proxy_url_loader_factory.h +++ b/libcef/browser/net_service/proxy_url_loader_factory.h @@ -16,6 +16,7 @@ #include "content/public/browser/web_contents.h" #include "mojo/public/cpp/bindings/pending_receiver.h" #include "mojo/public/cpp/bindings/receiver_set.h" +#include "services/network/public/cpp/url_loader_factory_builder.h" #include "services/network/public/mojom/network_context.mojom.h" #include "services/network/public/mojom/url_loader_factory.mojom.h" #include "third_party/abseil-cpp/absl/types/optional.h" @@ -146,7 +147,7 @@ class ProxyURLLoaderFactory // Create a proxy object on the UI thread. static void CreateProxy( content::BrowserContext* browser_context, - mojo::PendingReceiver* factory_receiver, + network::URLLoaderFactoryBuilder& factory_builder, mojo::PendingRemote* header_client, std::unique_ptr request_handler); diff --git a/libcef/browser/net_service/url_loader_factory_getter.cc b/libcef/browser/net_service/url_loader_factory_getter.cc index 1c8f3805f..5ea4e3cb3 100644 --- a/libcef/browser/net_service/url_loader_factory_getter.cc +++ b/libcef/browser/net_service/url_loader_factory_getter.cc @@ -35,54 +35,34 @@ scoped_refptr URLLoaderFactoryGetter::Create( auto loader_factory = browser_context->GetDefaultStoragePartition() ->GetURLLoaderFactoryForBrowserProcess(); - mojo::PendingRemote proxy_factory_remote; - mojo::PendingReceiver - proxy_factory_receiver; + network::URLLoaderFactoryBuilder factory_builder; - // Create an intermediate pipe that can be used to proxy the request's - // URLLoaderFactory. - mojo::PendingRemote - maybe_proxy_factory_remote; - mojo::PendingReceiver - maybe_proxy_factory_receiver = - maybe_proxy_factory_remote.InitWithNewPipeAndPassReceiver(); - - bool should_proxy = false; int render_process_id = -1; if (render_frame_host) { render_process_id = render_frame_host->GetProcess()->GetID(); // Allow DevTools to potentially inject itself into the proxy pipe. - should_proxy = - content::devtools_instrumentation::WillCreateURLLoaderFactory( - static_cast(render_frame_host), - false /* is_navigation */, false /* is_download */, - &maybe_proxy_factory_receiver, nullptr /* factory_override */); + content::devtools_instrumentation::WillCreateURLLoaderFactoryParams:: + ForFrame(static_cast(render_frame_host)) + .Run(false /* is_navigation */, false /* is_download */, + factory_builder, nullptr /* factory_override */); } auto browser_client = CefAppManager::Get()->GetContentClient()->browser(); // Allow the Content embedder to inject itself if it wants to. - should_proxy |= browser_client->WillCreateURLLoaderFactory( + browser_client->WillCreateURLLoaderFactory( browser_context, render_frame_host, render_process_id, content::ContentBrowserClient::URLLoaderFactoryType::kDocumentSubResource, url::Origin(), absl::nullopt /* navigation_id */, ukm::SourceIdObj(), - &maybe_proxy_factory_receiver, nullptr /* header_client */, + factory_builder, nullptr /* header_client */, nullptr /* bypass_redirect_checks */, nullptr /* disable_secure_dns */, nullptr /* factory_override */, nullptr /* navigation_response_task_runner */); - // If anyone above indicated that they care about proxying, pass the - // intermediate pipe along to the URLLoaderFactoryGetter. - if (should_proxy) { - proxy_factory_remote = std::move(maybe_proxy_factory_remote); - proxy_factory_receiver = std::move(maybe_proxy_factory_receiver); - } - return base::WrapRefCounted(new URLLoaderFactoryGetter( - loader_factory->Clone(), std::move(proxy_factory_remote), - std::move(proxy_factory_receiver))); + loader_factory->Clone(), std::move(factory_builder))); } // Based on CreateFactory from @@ -104,25 +84,15 @@ URLLoaderFactoryGetter::GetURLLoaderFactory() { auto loader_factory = network::SharedURLLoaderFactory::Create(std::move(loader_factory_info_)); - if (proxy_factory_receiver_.is_valid()) { - loader_factory->Clone(std::move(proxy_factory_receiver_)); - lazy_factory_ = - base::MakeRefCounted( - std::move(proxy_factory_remote_)); - } else { - lazy_factory_ = loader_factory; - } + lazy_factory_ = std::move(factory_builder_).Finish(loader_factory); return lazy_factory_; } URLLoaderFactoryGetter::URLLoaderFactoryGetter( std::unique_ptr loader_factory_info, - mojo::PendingRemote proxy_factory_remote, - mojo::PendingReceiver - proxy_factory_receiver) + network::URLLoaderFactoryBuilder factory_builder) : loader_factory_info_(std::move(loader_factory_info)), - proxy_factory_remote_(std::move(proxy_factory_remote)), - proxy_factory_receiver_(std::move(proxy_factory_receiver)) {} + factory_builder_(std::move(factory_builder)) {} URLLoaderFactoryGetter::~URLLoaderFactoryGetter() = default; diff --git a/libcef/browser/net_service/url_loader_factory_getter.h b/libcef/browser/net_service/url_loader_factory_getter.h index 554c81594..9959abaa9 100644 --- a/libcef/browser/net_service/url_loader_factory_getter.h +++ b/libcef/browser/net_service/url_loader_factory_getter.h @@ -9,6 +9,7 @@ #include "base/memory/ref_counted.h" #include "base/task/sequenced_task_runner.h" #include "base/task/sequenced_task_runner_helpers.h" +#include "services/network/public/cpp/url_loader_factory_builder.h" #include "services/network/public/mojom/url_loader_factory.mojom.h" namespace content { @@ -52,19 +53,14 @@ class URLLoaderFactoryGetter URLLoaderFactoryGetter(std::unique_ptr loader_factory_info, - mojo::PendingRemote - proxy_factory_remote, - mojo::PendingReceiver - proxy_factory_receiver); + network::URLLoaderFactoryBuilder factory_builder); ~URLLoaderFactoryGetter(); void DeleteOnCorrectThread() const; std::unique_ptr loader_factory_info_; scoped_refptr lazy_factory_; - mojo::PendingRemote proxy_factory_remote_; - mojo::PendingReceiver - proxy_factory_receiver_; + network::URLLoaderFactoryBuilder factory_builder_; scoped_refptr task_runner_; }; diff --git a/libcef/browser/osr/host_display_client_osr.cc b/libcef/browser/osr/host_display_client_osr.cc index e3f8a2652..a26c4103b 100644 --- a/libcef/browser/osr/host_display_client_osr.cc +++ b/libcef/browser/osr/host_display_client_osr.cc @@ -145,7 +145,7 @@ void CefHostDisplayClientOSR::CreateLayeredWindowUpdater( layered_window_updater_->SetActive(active_); } -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) && BUILDFLAG(IS_OZONE_X11) void CefHostDisplayClientOSR::DidCompleteSwapWithNewSize( const gfx::Size& size) {} #endif diff --git a/libcef/browser/osr/host_display_client_osr.h b/libcef/browser/osr/host_display_client_osr.h index c0987f8d1..5ec600b93 100644 --- a/libcef/browser/osr/host_display_client_osr.h +++ b/libcef/browser/osr/host_display_client_osr.h @@ -37,7 +37,7 @@ class CefHostDisplayClientOSR : public viz::HostDisplayClient { mojo::PendingReceiver receiver) override; -#if BUILDFLAG(IS_LINUX) +#if BUILDFLAG(IS_LINUX) && BUILDFLAG(IS_OZONE_X11) void DidCompleteSwapWithNewSize(const gfx::Size& size) override; #endif diff --git a/libcef/browser/osr/render_widget_host_view_osr.cc b/libcef/browser/osr/render_widget_host_view_osr.cc index fb6981570..02aa6585c 100644 --- a/libcef/browser/osr/render_widget_host_view_osr.cc +++ b/libcef/browser/osr/render_widget_host_view_osr.cc @@ -488,17 +488,17 @@ void CefRenderWidgetHostViewOSR::SetDisplayFeatureForTesting( DCHECK(false); } -blink::mojom::PointerLockResult CefRenderWidgetHostViewOSR::LockMouse( +blink::mojom::PointerLockResult CefRenderWidgetHostViewOSR::LockPointer( bool request_unadjusted_movement) { return blink::mojom::PointerLockResult::kPermissionDenied; } -blink::mojom::PointerLockResult CefRenderWidgetHostViewOSR::ChangeMouseLock( +blink::mojom::PointerLockResult CefRenderWidgetHostViewOSR::ChangePointerLock( bool request_unadjusted_movement) { return blink::mojom::PointerLockResult::kPermissionDenied; } -void CefRenderWidgetHostViewOSR::UnlockMouse() {} +void CefRenderWidgetHostViewOSR::UnlockPointer() {} void CefRenderWidgetHostViewOSR::TakeFallbackContentFrom( content::RenderWidgetHostView* view) { @@ -1549,6 +1549,10 @@ void CefRenderWidgetHostViewOSR::ShowSharePicker( blink::mojom::ShareService::ShareCallback callback) { std::move(callback).Run(blink::mojom::ShareError::INTERNAL_ERROR); } + +uint64_t CefRenderWidgetHostViewOSR::GetNSViewId() const { + return 0; +} #endif // BUILDFLAG(IS_MAC) void CefRenderWidgetHostViewOSR::OnPaint(const gfx::Rect& damage_rect, diff --git a/libcef/browser/osr/render_widget_host_view_osr.h b/libcef/browser/osr/render_widget_host_view_osr.h index 17b0e6955..4f9c33755 100644 --- a/libcef/browser/osr/render_widget_host_view_osr.h +++ b/libcef/browser/osr/render_widget_host_view_osr.h @@ -133,11 +133,11 @@ class CefRenderWidgetHostViewOSR std::optional GetDisplayFeature() override; void SetDisplayFeatureForTesting( const content::DisplayFeature* display_feature) override; - blink::mojom::PointerLockResult LockMouse( + blink::mojom::PointerLockResult LockPointer( bool request_unadjusted_movement) override; - blink::mojom::PointerLockResult ChangeMouseLock( + blink::mojom::PointerLockResult ChangePointerLock( bool request_unadjusted_movement) override; - void UnlockMouse() override; + void UnlockPointer() override; void TakeFallbackContentFrom(content::RenderWidgetHostView* view) override; #if BUILDFLAG(IS_MAC) @@ -151,6 +151,7 @@ class CefRenderWidgetHostViewOSR const std::string& url, const std::vector& file_paths, blink::mojom::ShareService::ShareCallback callback) override; + uint64_t GetNSViewId() const override; #endif // BUILDFLAG(IS_MAC) // RenderWidgetHostViewBase implementation. diff --git a/libcef/browser/osr/web_contents_view_osr.h b/libcef/browser/osr/web_contents_view_osr.h index b3577c542..f9223c43a 100644 --- a/libcef/browser/osr/web_contents_view_osr.h +++ b/libcef/browser/osr/web_contents_view_osr.h @@ -67,6 +67,10 @@ class CefWebContentsViewOSR : public content::WebContentsView, void OnCapturerCountChanged() override {} void UpdateWindowControlsOverlay(const gfx::Rect& bounding_rect) override {} void TransferDragSecurityInfo(content::WebContentsView* view) override {} + content::BackForwardTransitionAnimationManager* + GetBackForwardTransitionAnimationManager() override { + return nullptr; + } #if BUILDFLAG(IS_MAC) bool CloseTabAfterEventTrackingIfNeeded() override { return false; } diff --git a/libcef/browser/prefs/browser_prefs.cc b/libcef/browser/prefs/browser_prefs.cc index 62e31203e..1e558aa07 100644 --- a/libcef/browser/prefs/browser_prefs.cc +++ b/libcef/browser/prefs/browser_prefs.cc @@ -18,7 +18,6 @@ #include "base/strings/string_number_conversions.h" #include "base/task/thread_pool.h" #include "base/values.h" -#include "chrome/browser/accessibility/accessibility_ui.h" #include "chrome/browser/download/download_prefs.h" #include "chrome/browser/media/router/discovery/access_code/access_code_cast_feature.h" #include "chrome/browser/media/router/media_router_feature.h" @@ -31,6 +30,7 @@ #include "chrome/browser/profiles/profile.h" #include "chrome/browser/ssl/ssl_config_service_manager.h" #include "chrome/browser/themes/theme_service.h" +#include "chrome/browser/ui/webui/accessibility/accessibility_ui.h" #include "chrome/browser/ui/webui/print_preview/policy_settings.h" #include "chrome/common/buildflags.h" #include "chrome/common/chrome_switches.h" diff --git a/libcef/browser/views/panel_impl.h b/libcef/browser/views/panel_impl.h index 56083b273..a12e8f1de 100644 --- a/libcef/browser/views/panel_impl.h +++ b/libcef/browser/views/panel_impl.h @@ -104,7 +104,7 @@ CEF_PANEL_IMPL_T CefRefPtr CEF_PANEL_IMPL_D::GetLayout() { CEF_PANEL_IMPL_T void CEF_PANEL_IMPL_D::Layout() { CEF_REQUIRE_VALID_RETURN_VOID(); - return ParentClass::root_view()->Layout(); + ParentClass::root_view()->DeprecatedLayoutImmediately(); } CEF_PANEL_IMPL_T void CEF_PANEL_IMPL_D::AddChildView(CefRefPtr view) { diff --git a/libcef/browser/views/view_view.h b/libcef/browser/views/view_view.h index 23e669656..263ee3b96 100644 --- a/libcef/browser/views/view_view.h +++ b/libcef/browser/views/view_view.h @@ -73,7 +73,7 @@ CEF_VIEW_VIEW_T class CefViewView : public ViewsViewClass { gfx::Size GetMinimumSize() const override; gfx::Size GetMaximumSize() const override; int GetHeightForWidth(int w) const override; - void Layout() override; + void Layout(views::View::PassKey) override; void ViewHierarchyChanged( const views::ViewHierarchyChangedDetails& details) override; void AddedToWidget() override; @@ -163,8 +163,8 @@ CEF_VIEW_VIEW_T int CEF_VIEW_VIEW_D::GetHeightForWidth(int w) const { return result; } -CEF_VIEW_VIEW_T void CEF_VIEW_VIEW_D::Layout() { - ParentClass::Layout(); +CEF_VIEW_VIEW_T void CEF_VIEW_VIEW_D::Layout(views::View::PassKey) { + ParentClass::template LayoutSuperclass(this); // If Layout() did not provide a size then use the preferred size. if (ParentClass::size().IsEmpty()) { diff --git a/libcef/browser/views/window_view.cc b/libcef/browser/views/window_view.cc index 6dfc7a3eb..b66328cd1 100644 --- a/libcef/browser/views/window_view.cc +++ b/libcef/browser/views/window_view.cc @@ -264,9 +264,9 @@ class CaptionlessFrameView : public views::NonClientFrameView { // Nothing to do here. } - void Layout() override { + void Layout(views::View::PassKey) override { client_view_bounds_.SetRect(0, 0, width(), height()); - views::NonClientFrameView::Layout(); + LayoutSuperclass(this); } gfx::Size CalculatePreferredSize() const override { diff --git a/libcef/common/alloy/alloy_content_client.cc b/libcef/common/alloy/alloy_content_client.cc index cbcf115a3..cc6827942 100644 --- a/libcef/common/alloy/alloy_content_client.cc +++ b/libcef/common/alloy/alloy_content_client.cc @@ -28,7 +28,7 @@ #include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/media/cdm_registration.h" -#include "components/pdf/common/internal_plugin_helpers.h" +#include "components/pdf/common/constants.h" #include "content/public/common/cdm_info.h" #include "content/public/common/content_constants.h" #include "content/public/common/content_plugin_info.h" diff --git a/libcef/common/crash_reporting.cc b/libcef/common/crash_reporting.cc index e18fede70..b827119d4 100644 --- a/libcef/common/crash_reporting.cc +++ b/libcef/common/crash_reporting.cc @@ -192,13 +192,7 @@ bool SetCrashKeyValue(const base::StringPiece& key, #if BUILDFLAG(IS_POSIX) // Be aware that logging is not initialized at the time this method is called. void BasicStartupComplete(base::CommandLine* command_line) { - CefCrashReporterClient* crash_client = g_crash_reporter_client.Pointer(); - if (crash_client->ReadCrashConfigFile()) { -#if !BUILDFLAG(IS_MAC) - // Crashpad requires this switch on Linux. - command_line->AppendSwitch(switches::kEnableCrashpad); -#endif - } + g_crash_reporter_client.Pointer()->ReadCrashConfigFile(); } #endif @@ -227,12 +221,6 @@ void PreSandboxStartup(const base::CommandLine& command_line, #if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_MAC) void ZygoteForked(base::CommandLine* command_line, const std::string& process_type) { - CefCrashReporterClient* crash_client = g_crash_reporter_client.Pointer(); - if (crash_client->HasCrashConfigFile()) { - // Crashpad requires this switch on Linux. - command_line->AppendSwitch(switches::kEnableCrashpad); - } - InitCrashReporter(*command_line, process_type); if (g_crash_reporting_enabled) { diff --git a/libcef/common/net_service/net_service_util.cc b/libcef/common/net_service/net_service_util.cc index d8cd3eb85..71d897016 100644 --- a/libcef/common/net_service/net_service_util.cc +++ b/libcef/common/net_service/net_service_util.cc @@ -228,7 +228,7 @@ bool MakeCefCookie(const net::CanonicalCookie& cc, CefCookie& cookie) { CefString(&cookie.value).FromString(cc.Value()); CefString(&cookie.domain).FromString(cc.Domain()); CefString(&cookie.path).FromString(cc.Path()); - cookie.secure = cc.IsSecure(); + cookie.secure = cc.SecureAttribute(); cookie.httponly = cc.IsHttpOnly(); cookie.creation = CefBaseTime(cc.CreationDate()); cookie.last_access = CefBaseTime(cc.LastAccessDate()); @@ -284,4 +284,4 @@ bool MakeCefCookie(const GURL& url, return true; } -} // namespace net_service \ No newline at end of file +} // namespace net_service diff --git a/libcef/common/parser_impl.cc b/libcef/common/parser_impl.cc index c0e25c8f9..d939fb367 100644 --- a/libcef/common/parser_impl.cc +++ b/libcef/common/parser_impl.cc @@ -133,9 +133,7 @@ CefString CefBase64Encode(const void* data, size_t data_size) { } base::StringPiece input(static_cast(data), data_size); - std::string output; - base::Base64Encode(input, &output); - return output; + return base::Base64Encode(input); } CefRefPtr CefBase64Decode(const CefString& data) { diff --git a/libcef/renderer/alloy/alloy_content_renderer_client.cc b/libcef/renderer/alloy/alloy_content_renderer_client.cc index babbb34b5..1b568198d 100644 --- a/libcef/renderer/alloy/alloy_content_renderer_client.cc +++ b/libcef/renderer/alloy/alloy_content_renderer_client.cc @@ -58,7 +58,7 @@ #include "chrome/renderer/plugins/chrome_plugin_placeholder.h" #include "components/content_settings/core/common/content_settings_types.h" #include "components/nacl/common/nacl_constants.h" -#include "components/pdf/common/internal_plugin_helpers.h" +#include "components/pdf/common/constants.h" #include "components/pdf/renderer/internal_plugin_renderer_helpers.h" #include "components/printing/renderer/print_render_frame_helper.h" #include "components/spellcheck/renderer/spellcheck.h" diff --git a/libcef/renderer/dom_node_impl.cc b/libcef/renderer/dom_node_impl.cc index f24256ff9..ab97ef9a5 100644 --- a/libcef/renderer/dom_node_impl.cc +++ b/libcef/renderer/dom_node_impl.cc @@ -44,6 +44,8 @@ cef_dom_form_control_type_t GetCefFormControlType(FormControlType type) { return DOM_FORM_CONTROL_TYPE_BUTTON_RESET; case FormControlType::kButtonSelectList: return DOM_FORM_CONTROL_TYPE_BUTTON_SELECT_LIST; + case FormControlType::kButtonPopover: + return DOM_FORM_CONTROL_TYPE_BUTTON_POPOVER; case FormControlType::kFieldset: return DOM_FORM_CONTROL_TYPE_FIELDSET; case FormControlType::kInputButton: diff --git a/libcef/renderer/frame_impl.cc b/libcef/renderer/frame_impl.cc index d0191d747..b468e08f3 100644 --- a/libcef/renderer/frame_impl.cc +++ b/libcef/renderer/frame_impl.cc @@ -37,6 +37,7 @@ #include "content/renderer/render_frame_impl.h" #include "third_party/blink/public/mojom/frame/frame.mojom-blink.h" #include "third_party/blink/public/mojom/frame/lifecycle.mojom-blink.h" +#include "third_party/blink/public/platform/scheduler/web_agent_group_scheduler.h" #include "third_party/blink/public/platform/web_data.h" #include "third_party/blink/public/platform/web_string.h" #include "third_party/blink/public/platform/web_url.h" @@ -65,6 +66,10 @@ std::string GetDebugString(blink::WebLocalFrame* frame) { return "frame " + render_frame_util::GetIdentifier(frame); } +v8::Isolate* GetFrameIsolate(blink::WebLocalFrame* frame) { + return frame->GetAgentGroupScheduler()->Isolate(); +} + } // namespace CefFrameImpl::CefFrameImpl(CefBrowserImpl* browser, blink::WebLocalFrame* frame) @@ -233,7 +238,7 @@ CefRefPtr CefFrameImpl::GetV8Context() { CEF_REQUIRE_RT_RETURN(nullptr); if (frame_) { - v8::Isolate* isolate = blink::MainThreadIsolate(); + v8::Isolate* isolate = GetFrameIsolate(frame_); v8::HandleScope handle_scope(isolate); return new CefV8ContextImpl(isolate, frame_->MainWorldScriptContext()); } else { @@ -661,7 +666,7 @@ void CefFrameImpl::MaybeInitializeScriptContext() { // via DidCommitProvisionalLoad prior to https://crrev.com/5150754880a. // Otherwise, a script context may never be created for a frame that doesn't // contain JS code. - v8::HandleScope handle_scope(blink::MainThreadIsolate()); + v8::HandleScope handle_scope(GetFrameIsolate(frame_)); frame_->MainWorldScriptContext(); } diff --git a/libcef/renderer/render_frame_observer.cc b/libcef/renderer/render_frame_observer.cc index f0d405aec..5e013e87c 100644 --- a/libcef/renderer/render_frame_observer.cc +++ b/libcef/renderer/render_frame_observer.cc @@ -147,7 +147,7 @@ void CefRenderFrameObserver::DidCreateScriptContext( CefRefPtr framePtr = browserPtr->GetWebFrameImpl(frame); if (handler) { - v8::Isolate* isolate = blink::MainThreadIsolate(); + v8::Isolate* isolate = context->GetIsolate(); v8::HandleScope handle_scope(isolate); v8::Context::Scope scope(context); v8::MicrotasksScope microtasks_scope(isolate, @@ -181,7 +181,7 @@ void CefRenderFrameObserver::WillReleaseScriptContext( CefRefPtr framePtr = browserPtr->GetWebFrameImpl(frame); if (handler) { - v8::Isolate* isolate = blink::MainThreadIsolate(); + v8::Isolate* isolate = context->GetIsolate(); v8::HandleScope handle_scope(isolate); // The released context should not be used for script execution. diff --git a/patch/patches/base_sandbox_2743.patch b/patch/patches/base_sandbox_2743.patch index 764f6a89e..d573ab1d1 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 c00c41bc2c7fd..166b3e74fd3bd 100644 +index a989a351a8765..3f7af447dd187 100644 --- base/BUILD.gn +++ base/BUILD.gn @@ -41,6 +41,7 @@ import("//build/nocompile.gni") @@ -10,7 +10,7 @@ index c00c41bc2c7fd..166b3e74fd3bd 100644 import("//testing/libfuzzer/fuzzer_test.gni") import("//testing/test.gni") -@@ -1494,7 +1495,11 @@ component("base") { +@@ -1507,7 +1508,11 @@ component("base") { "hash/md5_constexpr_internal.h", "hash/sha1.h", ] @@ -23,7 +23,7 @@ index c00c41bc2c7fd..166b3e74fd3bd 100644 sources += [ "hash/md5_nacl.cc", "hash/md5_nacl.h", -@@ -1918,6 +1923,12 @@ component("base") { +@@ -1936,6 +1941,12 @@ component("base") { defines += [ "COM_INIT_CHECK_HOOK_DISABLED" ] } @@ -58,12 +58,12 @@ index 4595034abae30..da29453cf7d71 100644 auto const was_set = is_initialized_check_flag_.test_and_set(); is_initialized_check_flag_.clear(); diff --git base/hash/md5.h base/hash/md5.h -index aa889f350e8f7..50acac8a69225 100644 +index b49701893a182..acefcbc5bc439 100644 --- base/hash/md5.h +++ base/hash/md5.h -@@ -10,8 +10,9 @@ +@@ -11,8 +11,9 @@ #include "base/base_export.h" - #include "base/strings/string_piece.h" + #include "base/containers/span.h" #include "build/build_config.h" +#include "cef/libcef/features/features.h" @@ -73,12 +73,12 @@ index aa889f350e8f7..50acac8a69225 100644 #else #include "base/hash/md5_boringssl.h" diff --git base/hash/sha1.h base/hash/sha1.h -index 29626e5853c6e..2fb1c61504c5d 100644 +index 1891e95fa387d..fc190dc39ae7d 100644 --- base/hash/sha1.h +++ base/hash/sha1.h @@ -14,7 +14,9 @@ + #include "base/base_export.h" #include "base/containers/span.h" - #include "base/strings/string_piece.h" #include "build/build_config.h" -#if BUILDFLAG(IS_NACL) +#include "cef/libcef/features/features.h" @@ -88,7 +88,7 @@ index 29626e5853c6e..2fb1c61504c5d 100644 #else #include "base/hash/sha1_boringssl.h" diff --git base/rand_util.h base/rand_util.h -index 00e901a3262ca..88ce372eb0a1a 100644 +index a24e93122172e..5084668cb93a7 100644 --- base/rand_util.h +++ base/rand_util.h @@ -17,8 +17,9 @@ @@ -112,7 +112,7 @@ index 00e901a3262ca..88ce372eb0a1a 100644 public: using result_type = uint64_t; diff --git base/rand_util_win.cc base/rand_util_win.cc -index 6aae763d98715..7f55cb70e94d2 100644 +index 299e54300a09d..cdc43cc48dce6 100644 --- base/rand_util_win.cc +++ base/rand_util_win.cc @@ -15,8 +15,12 @@ @@ -188,10 +188,10 @@ index da65502f75c3a..8b9d6eec4a1e2 100644 return lhs.token_ == rhs.token_; #else diff --git base/win/sid.cc base/win/sid.cc -index 0f1a2ec79aa4b..7f92778a4a776 100644 +index 3323cc7cbfee1..778b86dcd4154 100644 --- base/win/sid.cc +++ base/win/sid.cc -@@ -15,6 +15,7 @@ +@@ -17,6 +17,7 @@ #include #include "base/check.h" @@ -199,7 +199,7 @@ index 0f1a2ec79aa4b..7f92778a4a776 100644 #include "base/no_destructor.h" #include "base/rand_util.h" #include "base/ranges/algorithm.h" -@@ -22,8 +23,12 @@ +@@ -24,8 +25,12 @@ #include "base/win/scoped_handle.h" #include "base/win/scoped_localalloc.h" #include "base/win/windows_version.h" @@ -212,7 +212,7 @@ index 0f1a2ec79aa4b..7f92778a4a776 100644 namespace base::win { -@@ -124,6 +129,7 @@ Sid Sid::FromNamedCapability(const std::wstring& capability_name) { +@@ -126,6 +131,7 @@ Sid Sid::FromNamedCapability(const std::wstring& capability_name) { if (known_cap != known_capabilities->end()) { return FromKnownCapability(known_cap->second); } @@ -220,7 +220,7 @@ index 0f1a2ec79aa4b..7f92778a4a776 100644 CRYPTO_library_init(); static_assert((SHA256_DIGEST_LENGTH / sizeof(DWORD)) == SECURITY_APP_PACKAGE_RID_COUNT); -@@ -136,6 +142,10 @@ Sid Sid::FromNamedCapability(const std::wstring& capability_name) { +@@ -138,6 +144,10 @@ Sid Sid::FromNamedCapability(const std::wstring& capability_name) { reinterpret_cast(&rids[2])); return FromSubAuthorities(SECURITY_APP_PACKAGE_AUTHORITY, std::size(rids), rids); diff --git a/patch/patches/base_test_4396276.patch b/patch/patches/base_test_4396276.patch index a9fd5ce43..f0f3e4899 100644 --- a/patch/patches/base_test_4396276.patch +++ b/patch/patches/base_test_4396276.patch @@ -1,8 +1,8 @@ diff --git base/test/BUILD.gn base/test/BUILD.gn -index bffe24a080a34..9191487142995 100644 +index 9cd7f3eaa502f..ed34018fdba6a 100644 --- base/test/BUILD.gn +++ base/test/BUILD.gn -@@ -189,11 +189,6 @@ static_library("test_support") { +@@ -191,11 +191,6 @@ static_library("test_support") { if (enable_base_tracing) { public_deps += [ "//third_party/perfetto:perfetto_test_support" ] @@ -14,7 +14,7 @@ index bffe24a080a34..9191487142995 100644 deps += [ ":amalgamated_perfetto_sql_stdlib", ":gen_cc_chrome_track_event_descriptor", -@@ -560,7 +555,7 @@ if (enable_base_tracing) { +@@ -562,7 +557,7 @@ if (enable_base_tracing) { # processor depends on dev_sqlite. The two share the same symbols but have # different implementations, so we need to hide dev_sqlite in this shared # library even in non-component builds to prevent duplicate symbols. @@ -23,7 +23,7 @@ index bffe24a080a34..9191487142995 100644 if (is_ios) { _target_type = "ios_framework_bundle" } -@@ -569,6 +564,8 @@ if (enable_base_tracing) { +@@ -571,6 +566,8 @@ if (enable_base_tracing) { defines = [ "TEST_TRACE_PROCESSOR_IMPL" ] testonly = true sources = [ @@ -32,7 +32,7 @@ index bffe24a080a34..9191487142995 100644 "test_trace_processor_export.h", "test_trace_processor_impl.cc", "test_trace_processor_impl.h", -@@ -586,33 +583,6 @@ if (enable_base_tracing) { +@@ -588,33 +585,6 @@ if (enable_base_tracing) { output_name = "TestTraceProcessor" bundle_deps_filter = [ "//third_party/icu:icudata" ] } @@ -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 c27c82e1753df..0007879aa0a15 100644 +index 7579ffdd7302e..0dc2e70f79284 100644 --- content/shell/BUILD.gn +++ content/shell/BUILD.gn -@@ -844,7 +844,6 @@ if (is_mac) { +@@ -841,7 +841,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/blink_web_element_4200240.patch b/patch/patches/blink_web_element_4200240.patch index 1839bd44c..8d761eb7f 100644 --- a/patch/patches/blink_web_element_4200240.patch +++ b/patch/patches/blink_web_element_4200240.patch @@ -13,7 +13,7 @@ index 9cd08e8b26410..d2dca33bdc62e 100644 // Returns true if the element's contenteditable attribute is in the true // state or in the plaintext-only state: diff --git third_party/blink/renderer/core/exported/web_element.cc third_party/blink/renderer/core/exported/web_element.cc -index 0c2400696ecbc..3dd6e5574eb39 100644 +index 5cc36b7dccab4..05c9a46e3db69 100644 --- third_party/blink/renderer/core/exported/web_element.cc +++ third_party/blink/renderer/core/exported/web_element.cc @@ -116,6 +116,24 @@ void WebElement::SetAttribute(const WebString& attr_name, diff --git a/patch/patches/browser_security_policy_1081397.patch b/patch/patches/browser_security_policy_1081397.patch index 87b7a96c5..4aca12c8a 100644 --- a/patch/patches/browser_security_policy_1081397.patch +++ b/patch/patches/browser_security_policy_1081397.patch @@ -1,8 +1,8 @@ diff --git content/browser/child_process_security_policy_impl.cc content/browser/child_process_security_policy_impl.cc -index 72b1e46a91e78..2aea3ca80157e 100644 +index 7517bd98e4f7c..6a49e25d63436 100644 --- content/browser/child_process_security_policy_impl.cc +++ content/browser/child_process_security_policy_impl.cc -@@ -1878,6 +1878,16 @@ bool ChildProcessSecurityPolicyImpl::CanAccessDataForMaybeOpaqueOrigin( +@@ -1900,6 +1900,16 @@ bool ChildProcessSecurityPolicyImpl::CanAccessDataForMaybeOpaqueOrigin( // DeclarativeApiTest.PersistRules. if (actual_process_lock.matches_scheme(url::kDataScheme)) return true; @@ -20,10 +20,10 @@ index 72b1e46a91e78..2aea3ca80157e 100644 // Make an exception to allow most visited tiles to commit in diff --git content/browser/renderer_host/navigation_request.cc content/browser/renderer_host/navigation_request.cc -index dead84566f239..9fffaa0c20c97 100644 +index b303b8bd70624..d696b002f3179 100644 --- content/browser/renderer_host/navigation_request.cc +++ content/browser/renderer_host/navigation_request.cc -@@ -7772,10 +7772,22 @@ NavigationRequest::GetOriginForURLLoaderFactoryBeforeResponseWithDebugInfo( +@@ -7777,10 +7777,22 @@ NavigationRequest::GetOriginForURLLoaderFactoryBeforeResponseWithDebugInfo( bool use_opaque_origin = (sandbox_flags & network::mojom::WebSandboxFlags::kOrigin) == network::mojom::WebSandboxFlags::kOrigin; @@ -47,7 +47,7 @@ index dead84566f239..9fffaa0c20c97 100644 } return origin_and_debug_info; -@@ -7883,6 +7895,15 @@ NavigationRequest::GetOriginForURLLoaderFactoryAfterResponseWithDebugInfo() { +@@ -7888,6 +7900,15 @@ NavigationRequest::GetOriginForURLLoaderFactoryAfterResponseWithDebugInfo() { DetermineInitiatorRelationship(initiator_rfh, frame_tree_node_->current_frame_host())); diff --git a/patch/patches/build.patch b/patch/patches/build.patch index 8b70ffa1b..83004a88a 100644 --- a/patch/patches/build.patch +++ b/patch/patches/build.patch @@ -1,8 +1,8 @@ diff --git build/config/compiler/BUILD.gn build/config/compiler/BUILD.gn -index 89b4755ac8b39..453a1758fa253 100644 +index 3c7b4d82d0b46..7f890ab3aa546 100644 --- build/config/compiler/BUILD.gn +++ build/config/compiler/BUILD.gn -@@ -2162,8 +2162,6 @@ config("thin_archive") { +@@ -2195,8 +2195,6 @@ config("thin_archive") { # confuses lldb. if ((is_posix && !is_nacl && !is_apple) || is_fuchsia) { arflags = [ "-T" ] diff --git a/patch/patches/chrome_browser.patch b/patch/patches/chrome_browser.patch index ef3219954..51cff5e62 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 81dceec0b449c..ca76a507bb657 100644 +index e9c28ab05bd01..9e10f7f5d0d0f 100644 --- chrome/browser/BUILD.gn +++ chrome/browser/BUILD.gn @@ -11,6 +11,7 @@ import("//build/config/compiler/pgo/pgo.gni") @@ -10,7 +10,7 @@ index 81dceec0b449c..ca76a507bb657 100644 import("//chrome/browser/buildflags.gni") import("//chrome/browser/downgrade/buildflags.gni") import("//chrome/common/features.gni") -@@ -2025,6 +2026,7 @@ static_library("browser") { +@@ -2042,6 +2043,7 @@ static_library("browser") { "//build/config/chromebox_for_meetings:buildflags", "//build/config/compiler:compiler_buildflags", "//cc", @@ -18,7 +18,7 @@ index 81dceec0b449c..ca76a507bb657 100644 "//chrome:extra_resources", "//chrome:resources", "//chrome:strings", -@@ -2679,6 +2681,10 @@ static_library("browser") { +@@ -2698,6 +2700,10 @@ static_library("browser") { ] } diff --git a/patch/patches/chrome_browser_background_mode_1100085.patch b/patch/patches/chrome_browser_background_mode_1100085.patch index fcfb3ad48..cb3b630b1 100644 --- a/patch/patches/chrome_browser_background_mode_1100085.patch +++ b/patch/patches/chrome_browser_background_mode_1100085.patch @@ -14,10 +14,10 @@ index 3e7de43022a41..21354d14d11c3 100644 std::unique_ptr manager) = 0; #endif diff --git chrome/browser/browser_process_impl.cc chrome/browser/browser_process_impl.cc -index 57cb42c63eb6a..b8df2da97a7a1 100644 +index 4645aebcfcb1e..3c07c056d7f1f 100644 --- chrome/browser/browser_process_impl.cc +++ chrome/browser/browser_process_impl.cc -@@ -1072,18 +1072,14 @@ DownloadRequestLimiter* BrowserProcessImpl::download_request_limiter() { +@@ -1093,18 +1093,14 @@ DownloadRequestLimiter* BrowserProcessImpl::download_request_limiter() { return download_request_limiter_.get(); } diff --git a/patch/patches/chrome_browser_browser.patch b/patch/patches/chrome_browser_browser.patch index 1031f7889..4115a5b76 100644 --- a/patch/patches/chrome_browser_browser.patch +++ b/patch/patches/chrome_browser_browser.patch @@ -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 ec31f050c1abb..ec30fd71f536d 100644 +index 8aa2877ee6352..2e015069f0083 100644 --- chrome/browser/devtools/devtools_window.cc +++ chrome/browser/devtools/devtools_window.cc @@ -31,6 +31,7 @@ @@ -75,7 +75,7 @@ index ec31f050c1abb..ec30fd71f536d 100644 } diff --git chrome/browser/ui/BUILD.gn chrome/browser/ui/BUILD.gn -index b0146268b3384..742d5b50d054f 100644 +index 768e11b9e5648..b4ba1800def14 100644 --- chrome/browser/ui/BUILD.gn +++ chrome/browser/ui/BUILD.gn @@ -8,6 +8,7 @@ import("//build/config/compiler/compiler.gni") @@ -86,7 +86,7 @@ index b0146268b3384..742d5b50d054f 100644 import("//chrome/browser/buildflags.gni") import("//chrome/common/features.gni") import("//chromeos/ash/components/assistant/assistant.gni") -@@ -395,6 +396,10 @@ static_library("ui") { +@@ -386,6 +387,10 @@ static_library("ui") { "//build/config/compiler:wexit_time_destructors", ] @@ -97,7 +97,7 @@ index b0146268b3384..742d5b50d054f 100644 # Since browser and browser_ui actually depend on each other, # we must omit the dependency from browser_ui to browser. # However, this means browser_ui and browser should more or less -@@ -420,6 +425,7 @@ static_library("ui") { +@@ -411,6 +416,7 @@ static_library("ui") { "//build:chromeos_buildflags", "//build/config/chromebox_for_meetings:buildflags", "//cc/paint", @@ -105,7 +105,7 @@ index b0146268b3384..742d5b50d054f 100644 "//chrome:resources", "//chrome:strings", "//chrome/app:chrome_dll_resources", -@@ -2918,6 +2924,8 @@ static_library("ui") { +@@ -2901,6 +2907,8 @@ static_library("ui") { "views/apps/app_dialog/app_block_dialog_view.h", "views/apps/app_dialog/app_pause_dialog_view.cc", "views/apps/app_dialog/app_pause_dialog_view.h", @@ -114,7 +114,7 @@ index b0146268b3384..742d5b50d054f 100644 "views/apps/app_info_dialog/arc_app_info_links_panel.cc", "views/apps/app_info_dialog/arc_app_info_links_panel.h", "views/apps/chrome_app_window_client_views_chromeos.cc", -@@ -4956,8 +4964,6 @@ static_library("ui") { +@@ -4941,8 +4949,6 @@ static_library("ui") { "views/accessibility/theme_tracking_non_accessible_image_view.h", "views/apps/app_dialog/app_dialog_view.cc", "views/apps/app_dialog/app_dialog_view.h", @@ -123,7 +123,7 @@ index b0146268b3384..742d5b50d054f 100644 "views/apps/app_info_dialog/app_info_dialog_container.cc", "views/apps/app_info_dialog/app_info_dialog_container.h", "views/apps/app_info_dialog/app_info_dialog_views.cc", -@@ -6725,6 +6731,7 @@ static_library("ui") { +@@ -6740,6 +6746,7 @@ static_library("ui") { if (enable_printing) { deps += [ "//components/printing/browser", @@ -132,10 +132,10 @@ index b0146268b3384..742d5b50d054f 100644 ] } diff --git chrome/browser/ui/browser.cc chrome/browser/ui/browser.cc -index a001626c9f470..52d803a867172 100644 +index 0791cc8f55a92..d94ac23dc878a 100644 --- chrome/browser/ui/browser.cc +++ chrome/browser/ui/browser.cc -@@ -263,6 +263,25 @@ +@@ -264,6 +264,25 @@ #include "components/captive_portal/content/captive_portal_tab_helper.h" #endif @@ -161,7 +161,7 @@ index a001626c9f470..52d803a867172 100644 #if BUILDFLAG(ENABLE_EXTENSIONS) #include "chrome/browser/extensions/extension_browser_window_helper.h" #endif -@@ -459,6 +478,10 @@ Browser::Browser(const CreateParams& params) +@@ -466,6 +485,10 @@ Browser::Browser(const CreateParams& params) type_(params.type), profile_(params.profile), window_(nullptr), @@ -172,7 +172,7 @@ index a001626c9f470..52d803a867172 100644 tab_strip_model_delegate_( std::make_unique(this)), tab_strip_model_(std::make_unique( -@@ -653,6 +676,12 @@ Browser::~Browser() { +@@ -679,6 +702,12 @@ Browser::~Browser() { // away so they don't try and call back to us. if (select_file_dialog_.get()) select_file_dialog_->ListenerDestroyed(); @@ -185,7 +185,7 @@ index a001626c9f470..52d803a867172 100644 } /////////////////////////////////////////////////////////////////////////////// -@@ -1076,6 +1105,8 @@ void Browser::WindowFullscreenStateChanged() { +@@ -1110,6 +1139,8 @@ void Browser::WindowFullscreenStateChanged() { ->WindowFullscreenStateChanged(); command_controller_->FullscreenStateChanged(); UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_TOGGLE_FULLSCREEN); @@ -194,7 +194,7 @@ index a001626c9f470..52d803a867172 100644 } void Browser::FullscreenTopUIStateChanged() { -@@ -1415,6 +1446,14 @@ content::KeyboardEventProcessingResult Browser::PreHandleKeyboardEvent( +@@ -1449,6 +1480,14 @@ content::KeyboardEventProcessingResult Browser::PreHandleKeyboardEvent( if (exclusive_access_manager_->HandleUserKeyEvent(event)) return content::KeyboardEventProcessingResult::HANDLED; @@ -209,7 +209,7 @@ index a001626c9f470..52d803a867172 100644 return window()->PreHandleKeyboardEvent(event); } -@@ -1422,8 +1461,18 @@ bool Browser::HandleKeyboardEvent(content::WebContents* source, +@@ -1456,8 +1495,18 @@ bool Browser::HandleKeyboardEvent(content::WebContents* source, const NativeWebKeyboardEvent& event) { DevToolsWindow* devtools_window = DevToolsWindow::GetInstanceForInspectedWebContents(source); @@ -230,7 +230,7 @@ index a001626c9f470..52d803a867172 100644 } bool Browser::TabsNeedBeforeUnloadFired() const { -@@ -1625,6 +1674,14 @@ WebContents* Browser::OpenURLFromTab(WebContents* source, +@@ -1660,6 +1709,14 @@ WebContents* Browser::OpenURLFromTab(WebContents* source, } #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -245,7 +245,7 @@ index a001626c9f470..52d803a867172 100644 NavigateParams nav_params(this, params.url, params.transition); nav_params.FillNavigateParamsFromOpenURLParams(params); nav_params.source_contents = source; -@@ -1782,6 +1839,8 @@ void Browser::LoadingStateChanged(WebContents* source, +@@ -1817,6 +1874,8 @@ void Browser::LoadingStateChanged(WebContents* source, bool should_show_loading_ui) { ScheduleUIUpdate(source, content::INVALIDATE_TYPE_LOAD); UpdateWindowForLoadingStateChanged(source, should_show_loading_ui); @@ -254,7 +254,7 @@ index a001626c9f470..52d803a867172 100644 } void Browser::CloseContents(WebContents* source) { -@@ -1810,6 +1869,8 @@ void Browser::SetContentsBounds(WebContents* source, const gfx::Rect& bounds) { +@@ -1845,6 +1904,8 @@ void Browser::SetContentsBounds(WebContents* source, const gfx::Rect& bounds) { } void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { @@ -263,7 +263,7 @@ index a001626c9f470..52d803a867172 100644 if (!GetStatusBubble()) return; -@@ -1817,6 +1878,17 @@ void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { +@@ -1852,6 +1913,17 @@ void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { GetStatusBubble()->SetURL(url); } @@ -281,7 +281,7 @@ index a001626c9f470..52d803a867172 100644 void Browser::ContentsMouseEvent(WebContents* source, bool motion, bool exited) { -@@ -1841,6 +1913,19 @@ bool Browser::TakeFocus(content::WebContents* source, bool reverse) { +@@ -1876,6 +1948,19 @@ bool Browser::TakeFocus(content::WebContents* source, bool reverse) { return false; } @@ -301,7 +301,7 @@ index a001626c9f470..52d803a867172 100644 void Browser::BeforeUnloadFired(WebContents* web_contents, bool proceed, bool* proceed_to_fire_unload) { -@@ -1940,6 +2025,10 @@ void Browser::WebContentsCreated(WebContents* source_contents, +@@ -1975,6 +2060,10 @@ void Browser::WebContentsCreated(WebContents* source_contents, // Make the tab show up in the task manager. task_manager::WebContentsTags::CreateForTabContents(new_contents); @@ -312,7 +312,7 @@ index a001626c9f470..52d803a867172 100644 } void Browser::RendererUnresponsive( -@@ -2084,11 +2173,15 @@ void Browser::EnterFullscreenModeForTab( +@@ -2119,11 +2208,15 @@ void Browser::EnterFullscreenModeForTab( const blink::mojom::FullscreenOptions& options) { exclusive_access_manager_->fullscreen_controller()->EnterFullscreenModeForTab( requesting_frame, options.display_id); @@ -328,7 +328,7 @@ index a001626c9f470..52d803a867172 100644 } bool Browser::IsFullscreenForTabOrPending(const WebContents* web_contents) { -@@ -2281,6 +2374,15 @@ void Browser::RequestMediaAccessPermission( +@@ -2322,6 +2415,15 @@ void Browser::RequestMediaAccessPermission( content::WebContents* web_contents, const content::MediaStreamRequest& request, content::MediaResponseCallback callback) { @@ -344,7 +344,7 @@ index a001626c9f470..52d803a867172 100644 const extensions::Extension* extension = GetExtensionForOrigin(profile_, request.security_origin); MediaCaptureDevicesDispatcher::GetInstance()->ProcessMediaAccessRequest( -@@ -2817,9 +2919,11 @@ void Browser::RemoveScheduledUpdatesFor(WebContents* contents) { +@@ -2858,9 +2960,11 @@ void Browser::RemoveScheduledUpdatesFor(WebContents* contents) { // Browser, Getters for UI (private): StatusBubble* Browser::GetStatusBubble() { @@ -357,7 +357,7 @@ index a001626c9f470..52d803a867172 100644 } // We hide the status bar for web apps windows as this matches native -@@ -2827,6 +2931,12 @@ StatusBubble* Browser::GetStatusBubble() { +@@ -2868,6 +2972,12 @@ StatusBubble* Browser::GetStatusBubble() { // mode, as the minimal browser UI includes the status bar. if (web_app::AppBrowserController::IsWebApp(this) && !app_controller()->HasMinimalUiButtons()) { @@ -370,7 +370,7 @@ index a001626c9f470..52d803a867172 100644 return nullptr; } -@@ -2963,6 +3073,8 @@ void Browser::SetAsDelegate(WebContents* web_contents, bool set_delegate) { +@@ -3004,6 +3114,8 @@ void Browser::SetAsDelegate(WebContents* web_contents, bool set_delegate) { BookmarkTabHelper::FromWebContents(web_contents)->RemoveObserver(this); web_contents_collection_.StopObserving(web_contents); } @@ -379,7 +379,7 @@ index a001626c9f470..52d803a867172 100644 } void Browser::TabDetachedAtImpl(content::WebContents* contents, -@@ -3117,6 +3229,14 @@ bool Browser::PictureInPictureBrowserSupportsWindowFeature( +@@ -3158,6 +3270,14 @@ bool Browser::PictureInPictureBrowserSupportsWindowFeature( bool Browser::SupportsWindowFeatureImpl(WindowFeature feature, bool check_can_support) const { @@ -395,7 +395,7 @@ index a001626c9f470..52d803a867172 100644 case TYPE_NORMAL: return NormalBrowserSupportsWindowFeature(feature, check_can_support); diff --git chrome/browser/ui/browser.h chrome/browser/ui/browser.h -index f1f279121056f..5758d8543d69e 100644 +index 36ae82017f790..b0a4be7c1ab32 100644 --- chrome/browser/ui/browser.h +++ chrome/browser/ui/browser.h @@ -22,6 +22,7 @@ @@ -460,7 +460,7 @@ index f1f279121056f..5758d8543d69e 100644 // Get the FindBarController for this browser, creating it if it does not // yet exist. FindBarController* GetFindBarController(); -@@ -906,11 +933,19 @@ class Browser : public TabStripModelObserver, +@@ -909,11 +936,19 @@ class Browser : public TabStripModelObserver, void SetContentsBounds(content::WebContents* source, const gfx::Rect& bounds) override; void UpdateTargetURL(content::WebContents* source, const GURL& url) override; @@ -480,7 +480,7 @@ index f1f279121056f..5758d8543d69e 100644 void BeforeUnloadFired(content::WebContents* source, bool proceed, bool* proceed_to_fire_unload) override; -@@ -1248,6 +1283,10 @@ class Browser : public TabStripModelObserver, +@@ -1253,6 +1288,10 @@ class Browser : public TabStripModelObserver, // This Browser's window. raw_ptr window_; @@ -491,7 +491,7 @@ index f1f279121056f..5758d8543d69e 100644 std::unique_ptr const tab_strip_model_delegate_; std::unique_ptr const tab_strip_model_; -@@ -1314,6 +1353,8 @@ class Browser : public TabStripModelObserver, +@@ -1319,6 +1358,8 @@ class Browser : public TabStripModelObserver, const std::string initial_workspace_; bool initial_visible_on_all_workspaces_state_; @@ -501,10 +501,10 @@ index f1f279121056f..5758d8543d69e 100644 UnloadController unload_controller_; diff --git chrome/browser/ui/browser_navigator.cc chrome/browser/ui/browser_navigator.cc -index e805d59f87b45..21e7d5fb70a7d 100644 +index 151c73f9d7a18..e02316efd4011 100644 --- chrome/browser/ui/browser_navigator.cc +++ chrome/browser/ui/browser_navigator.cc -@@ -293,6 +293,10 @@ std::pair GetBrowserAndTabForDisposition( +@@ -305,6 +305,10 @@ std::pair GetBrowserAndTabForDisposition( : 1.0; browser_params.pip_options = pip_options; @@ -515,7 +515,7 @@ index e805d59f87b45..21e7d5fb70a7d 100644 const BrowserWindow* const browser_window = params.browser->window(); const gfx::NativeWindow native_window = browser_window ? browser_window->GetNativeWindow() -@@ -578,6 +582,13 @@ std::unique_ptr CreateTargetContents( +@@ -590,6 +594,13 @@ std::unique_ptr CreateTargetContents( std::unique_ptr target_contents = WebContents::Create(create_params); @@ -530,7 +530,7 @@ index e805d59f87b45..21e7d5fb70a7d 100644 // tab helpers, so the entire set of tab helpers needs to be set up // immediately. diff --git chrome/browser/ui/browser_tabstrip.cc chrome/browser/ui/browser_tabstrip.cc -index 435851d0f6f11..43a70f915a22c 100644 +index ca462913858cd..4b4153ab9aa1a 100644 --- chrome/browser/ui/browser_tabstrip.cc +++ chrome/browser/ui/browser_tabstrip.cc @@ -33,9 +33,13 @@ content::WebContents* AddAndReturnTabAt( diff --git a/patch/patches/chrome_browser_content_settings.patch b/patch/patches/chrome_browser_content_settings.patch index 29a9001fc..b9d95797b 100644 --- a/patch/patches/chrome_browser_content_settings.patch +++ b/patch/patches/chrome_browser_content_settings.patch @@ -56,7 +56,7 @@ index 36335ba63ee83..e14005d6a4e86 100644 #if BUILDFLAG(ENABLE_SUPERVISED_USERS) supervised_user::SupervisedUserSettingsService* supervised_service = diff --git components/content_settings/renderer/content_settings_agent_impl.cc components/content_settings/renderer/content_settings_agent_impl.cc -index 54c18d58aea64..66d3721a392ec 100644 +index 34871864cf8d7..8404bcc4e50dd 100644 --- components/content_settings/renderer/content_settings_agent_impl.cc +++ components/content_settings/renderer/content_settings_agent_impl.cc @@ -143,7 +143,7 @@ ContentSetting GetContentSettingFromRules( diff --git a/patch/patches/chrome_browser_context_menus.patch b/patch/patches/chrome_browser_context_menus.patch index e2f4b0f08..d5e5c5815 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 5ebec17f77393..f94c18f8de78e 100644 +index 25f2e8f6c4f09..25c21e4552f8a 100644 --- chrome/browser/renderer_context_menu/render_view_context_menu.cc +++ chrome/browser/renderer_context_menu/render_view_context_menu.cc @@ -360,6 +360,13 @@ base::OnceCallback* GetMenuShownCallback() { @@ -27,7 +27,7 @@ index 5ebec17f77393..f94c18f8de78e 100644 id = CollapseCommandsForUMA(id); const auto& map = GetIdcToUmaMap(type); auto it = map.find(id); -@@ -857,6 +868,14 @@ RenderViewContextMenu::RenderViewContextMenu( +@@ -863,6 +874,14 @@ RenderViewContextMenu::RenderViewContextMenu( pdf_ocr_submenu_model_ = std::make_unique(this); #endif // BUILDFLAG(ENABLE_SCREEN_AI_SERVICE) @@ -42,7 +42,7 @@ index 5ebec17f77393..f94c18f8de78e 100644 observers_.AddObserver(&autofill_context_menu_manager_); } -@@ -1331,6 +1350,12 @@ void RenderViewContextMenu::InitMenu() { +@@ -1337,6 +1356,12 @@ void RenderViewContextMenu::InitMenu() { autofill::PopupHidingReason::kContextMenuOpened); } } @@ -55,7 +55,7 @@ index 5ebec17f77393..f94c18f8de78e 100644 } Profile* RenderViewContextMenu::GetProfile() const { -@@ -3515,6 +3540,12 @@ void RenderViewContextMenu::RegisterExecutePluginActionCallbackForTesting( +@@ -3556,6 +3581,12 @@ void RenderViewContextMenu::RegisterExecutePluginActionCallbackForTesting( execute_plugin_action_callback_ = std::move(cb); } @@ -69,7 +69,7 @@ index 5ebec17f77393..f94c18f8de78e 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 d8f1b10c18771..00702b672353d 100644 +index e4041eee0e29e..7d5e3aa1d8cfb 100644 --- chrome/browser/renderer_context_menu/render_view_context_menu.h +++ chrome/browser/renderer_context_menu/render_view_context_menu.h @@ -159,6 +159,12 @@ class RenderViewContextMenu @@ -110,7 +110,7 @@ index c88a77a0b49e2..785ded198741e 100644 // that Ctrl+C, Ctrl+V, Ctrl+X, Ctrl-A, etc do what they normally do. switch (command_id) { diff --git components/renderer_context_menu/render_view_context_menu_base.cc components/renderer_context_menu/render_view_context_menu_base.cc -index ad4f00959e98b..54368373a6a99 100644 +index c49b49d76d7cc..842a6fae5d8e4 100644 --- components/renderer_context_menu/render_view_context_menu_base.cc +++ components/renderer_context_menu/render_view_context_menu_base.cc @@ -374,6 +374,17 @@ bool RenderViewContextMenuBase::IsCommandIdChecked(int id) const { @@ -132,7 +132,7 @@ index ad4f00959e98b..54368373a6a99 100644 command_executed_ = true; RecordUsedItem(id); diff --git components/renderer_context_menu/render_view_context_menu_base.h components/renderer_context_menu/render_view_context_menu_base.h -index 6249528399f44..9c4dd0d8f0100 100644 +index 33de73c75ef8c..c0ef8b7f8ba07 100644 --- components/renderer_context_menu/render_view_context_menu_base.h +++ components/renderer_context_menu/render_view_context_menu_base.h @@ -87,6 +87,9 @@ class RenderViewContextMenuBase : public ui::SimpleMenuModel::Delegate, diff --git a/patch/patches/chrome_browser_dialogs_widget.patch b/patch/patches/chrome_browser_dialogs_widget.patch index d1c2ff707..b805a31e6 100644 --- a/patch/patches/chrome_browser_dialogs_widget.patch +++ b/patch/patches/chrome_browser_dialogs_widget.patch @@ -12,7 +12,7 @@ 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 3daf40d463e32..2d84ad7a43c96 100644 +index 7eda0c852bb51..744452bf6c00c 100644 --- components/constrained_window/constrained_window_views.cc +++ components/constrained_window/constrained_window_views.cc @@ -105,15 +105,24 @@ void UpdateModalDialogPosition(views::Widget* widget, @@ -41,37 +41,45 @@ index 3daf40d463e32..2d84ad7a43c96 100644 return; } -@@ -123,36 +132,22 @@ void UpdateModalDialogPosition(views::Widget* widget, +@@ -123,44 +132,22 @@ void UpdateModalDialogPosition(views::Widget* widget, position.set_y(position.y() - widget->non_client_view()->frame_view()->GetInsets().top()); - gfx::Rect dialog_bounds(position, size); - if (widget->is_top_level() && SupportsGlobalScreenCoordinates()) { -- const gfx::Rect initial_dialog_bounds = +- gfx::Rect dialog_screen_bounds = - dialog_bounds + - host_widget->GetClientAreaBoundsInScreen().OffsetFromOrigin(); -- const gfx::Rect initial_host_bounds = -- host_widget->GetWindowBoundsInScreen(); +- const gfx::Rect host_screen_bounds = host_widget->GetWindowBoundsInScreen(); - - // TODO(crbug.com/1341530): The requested dialog bounds should never fall - // outside the bounds of the transient parent. -- DCHECK(initial_dialog_bounds.Intersects(initial_host_bounds)); +- DCHECK(dialog_screen_bounds.Intersects(host_screen_bounds)); - -- // We should not show a window-modal dialog for a window that exists outside -- // the bounds of the screen. This risks the modal window becoming -- // effectively deadlocked as controls to dismiss the dialog may become -- // inaccessible. -- // It is also insufficient to reposition only the dialog but not the host -- // window as many systems will clip child dialogs to their transient -- // parents. Further, if the window-constrained dialog is visually -- // disassociated with its parent window it may be difficult to discern which -- // window the dialog is modal to. -- host_widget->SetBoundsConstrained(initial_host_bounds); -- const gfx::Rect adjusted_host_bounds = -- host_widget->GetClientAreaBoundsInScreen(); -- dialog_bounds += adjusted_host_bounds.OffsetFromOrigin(); -- dialog_bounds.AdjustToFit(adjusted_host_bounds); +- // Adjust the dialog bound to ensure it remains visible on the display. +- const gfx::Rect display_work_area = +- display::Screen::GetScreen() +- ->GetDisplayNearestView(dialog_host->GetHostView()) +- .work_area(); +- if (!display_work_area.Contains(dialog_screen_bounds)) { +- dialog_screen_bounds.AdjustToFit(display_work_area); +- } +- +- // For platforms that clip transient children to the viewport we must +- // maximize its bounds on the display whilst keeping it within the host +- // bounds to avoid viewport clipping. +- // In the case that the host window bounds do not have sufficient overlap +- // with the display, and the dialog cannot be shown in its entirety, this is +- // a recoverable state as users are still able to reposition the host window +- // back onto the display. +- if (PlatformClipsChildrenToViewport() && +- !host_screen_bounds.Contains(dialog_screen_bounds)) { +- dialog_screen_bounds.AdjustToFit(host_screen_bounds); +- } +- +- // Readjust the position of the dialog. +- dialog_bounds.set_origin(dialog_screen_bounds.origin()); + position += host_widget->GetClientAreaBoundsInScreen().OffsetFromOrigin(); + // If the dialog extends partially off any display, clamp its position to + // be fully visible within that display. If the dialog doesn't intersect @@ -91,7 +99,7 @@ index 3daf40d463e32..2d84ad7a43c96 100644 } } // namespace -@@ -234,7 +229,8 @@ views::Widget* CreateWebModalDialogViews(views::WidgetDelegate* dialog, +@@ -242,7 +229,8 @@ views::Widget* CreateWebModalDialogViews(views::WidgetDelegate* dialog, views::Widget* widget = views::DialogDelegate::CreateDialogWidget( dialog, nullptr, @@ -101,7 +109,7 @@ index 3daf40d463e32..2d84ad7a43c96 100644 widget->SetNativeWindowProperty( views::kWidgetIdentifierKey, const_cast(kConstrainedWindowWidgetIdentifier)); -@@ -256,8 +252,13 @@ views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog, +@@ -264,8 +252,13 @@ views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog, gfx::NativeView parent_view = parent ? CurrentClient()->GetDialogHostView(parent) : nullptr; @@ -116,7 +124,7 @@ index 3daf40d463e32..2d84ad7a43c96 100644 widget->SetNativeWindowProperty( views::kWidgetIdentifierKey, const_cast(kConstrainedWindowWidgetIdentifier)); -@@ -273,8 +274,7 @@ views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog, +@@ -281,8 +274,7 @@ views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog, if (!requires_positioning) return widget; @@ -127,19 +135,19 @@ index 3daf40d463e32..2d84ad7a43c96 100644 DCHECK_EQ(parent_view, host->GetHostView()); ModalDialogHostObserver* dialog_host_observer = diff --git components/constrained_window/native_web_contents_modal_dialog_manager_views.cc components/constrained_window/native_web_contents_modal_dialog_manager_views.cc -index b986b7fa98c73..1000f529acc82 100644 +index 2b495a8ab092c..01a28aca853d0 100644 --- components/constrained_window/native_web_contents_modal_dialog_manager_views.cc +++ components/constrained_window/native_web_contents_modal_dialog_manager_views.cc -@@ -188,9 +188,20 @@ void NativeWebContentsModalDialogManagerViews::HostChanged( +@@ -190,9 +190,20 @@ void NativeWebContentsModalDialogManagerViews::HostChanged( if (host_) { host_->AddObserver(this); -- for (auto* widget : observed_widgets_) { +- for (views::Widget* widget : observed_widgets_) { - views::Widget::ReparentNativeView(widget->GetNativeView(), - host_->GetHostView()); + // |host_view| will be nullptr with CEF windowless rendering. + if (auto host_view = host_->GetHostView()) { -+ for (auto* widget : observed_widgets_) { ++ for (views::Widget* widget : observed_widgets_) { +#if defined(USE_AURA) + auto widget_view = widget->GetNativeView(); + // Don't reparent between different root windows. Doing so causes @@ -170,7 +178,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 ed132b017f10e..590ab9760c36a 100644 +index 992dbc606ab78..2361727757696 100644 --- ui/views/window/dialog_delegate.cc +++ ui/views/window/dialog_delegate.cc @@ -60,10 +60,12 @@ DialogDelegate::DialogDelegate() { @@ -239,7 +247,7 @@ index ed132b017f10e..590ab9760c36a 100644 // Web-modal (ui::MODAL_TYPE_CHILD) dialogs with parents are marked as child // widgets to prevent top-level window behavior (independent movement, etc). diff --git ui/views/window/dialog_delegate.h ui/views/window/dialog_delegate.h -index d0bd746875ed9..1643e6d841108 100644 +index 6a2aace29d60d..d6d6292c10487 100644 --- ui/views/window/dialog_delegate.h +++ ui/views/window/dialog_delegate.h @@ -96,13 +96,18 @@ class VIEWS_EXPORT DialogDelegate : public WidgetDelegate { diff --git a/patch/patches/chrome_browser_permission_prompt.patch b/patch/patches/chrome_browser_permission_prompt.patch index fe4fab468..26213e8f5 100644 --- a/patch/patches/chrome_browser_permission_prompt.patch +++ b/patch/patches/chrome_browser_permission_prompt.patch @@ -44,7 +44,7 @@ index ea1467d09700d..5537a99500e7f 100644 base::FeatureList::IsEnabled( features::kPeriodicSyncPermissionForDefaultSearchEngine) && diff --git chrome/browser/permissions/chrome_permissions_client.cc chrome/browser/permissions/chrome_permissions_client.cc -index 58b162e099e70..2dcfe0cda550a 100644 +index b6afdced9d0af..e189d08ecdd46 100644 --- chrome/browser/permissions/chrome_permissions_client.cc +++ chrome/browser/permissions/chrome_permissions_client.cc @@ -14,6 +14,7 @@ @@ -53,9 +53,9 @@ index 58b162e099e70..2dcfe0cda550a 100644 #include "build/chromeos_buildflags.h" +#include "cef/libcef/features/runtime.h" #include "chrome/browser/bluetooth/bluetooth_chooser_context_factory.h" + #include "chrome/browser/browser_process.h" #include "chrome/browser/content_settings/cookie_settings_factory.h" - #include "chrome/browser/content_settings/host_content_settings_map_factory.h" -@@ -187,6 +188,9 @@ ChromePermissionsClient::GetPermissionDecisionAutoBlocker( +@@ -189,6 +190,9 @@ ChromePermissionsClient::GetPermissionDecisionAutoBlocker( double ChromePermissionsClient::GetSiteEngagementScore( content::BrowserContext* browser_context, const GURL& origin) { @@ -65,7 +65,7 @@ index 58b162e099e70..2dcfe0cda550a 100644 return site_engagement::SiteEngagementService::Get( Profile::FromBrowserContext(browser_context)) ->GetScore(origin); -@@ -358,8 +362,10 @@ ChromePermissionsClient::CreatePermissionUiSelectors( +@@ -359,8 +363,10 @@ ChromePermissionsClient::CreatePermissionUiSelectors( std::make_unique()); selectors.emplace_back(std::make_unique( Profile::FromBrowserContext(browser_context))); @@ -77,7 +77,7 @@ index 58b162e099e70..2dcfe0cda550a 100644 } diff --git chrome/browser/permissions/permission_manager_factory.cc chrome/browser/permissions/permission_manager_factory.cc -index f020355c1969d..ff3c3e26b14bf 100644 +index d6485540139e0..a77c888b2e147 100644 --- chrome/browser/permissions/permission_manager_factory.cc +++ chrome/browser/permissions/permission_manager_factory.cc @@ -6,6 +6,7 @@ @@ -88,7 +88,7 @@ index f020355c1969d..ff3c3e26b14bf 100644 #include "chrome/browser/background_fetch/background_fetch_permission_context.h" #include "chrome/browser/background_sync/periodic_background_sync_permission_context.h" #include "chrome/browser/content_settings/host_content_settings_map_factory.h" -@@ -61,8 +62,10 @@ permissions::PermissionManager::PermissionContextMap CreatePermissionContexts( +@@ -62,8 +63,10 @@ permissions::PermissionManager::PermissionContextMap CreatePermissionContexts( std::make_unique(profile); #endif // BUILDFLAG(IS_ANDROID) #if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_CHROMEOS) @@ -142,10 +142,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 3a1224da26b6c..24735fe79498d 100644 +index 07720bc3faccb..546325f2b5558 100644 --- chrome/browser/ui/views/permissions/permission_prompt_factory.cc +++ chrome/browser/ui/views/permissions/permission_prompt_factory.cc -@@ -181,11 +181,28 @@ std::unique_ptr CreateQuietPrompt( +@@ -186,11 +186,28 @@ std::unique_ptr CreateQuietPrompt( } } diff --git a/patch/patches/chrome_browser_policy.patch b/patch/patches/chrome_browser_policy.patch index f97d7c610..378bd2d0e 100644 --- a/patch/patches/chrome_browser_policy.patch +++ b/patch/patches/chrome_browser_policy.patch @@ -105,7 +105,7 @@ index 27af6ec08f593..6dfab7c74e8da 100644 } diff --git chrome/browser/policy/chrome_browser_policy_connector.cc chrome/browser/policy/chrome_browser_policy_connector.cc -index c2ecd1b63f0d7..c83704788a803 100644 +index 8824abb401188..687e667e4b942 100644 --- chrome/browser/policy/chrome_browser_policy_connector.cc +++ chrome/browser/policy/chrome_browser_policy_connector.cc @@ -13,11 +13,14 @@ @@ -123,7 +123,7 @@ index c2ecd1b63f0d7..c83704788a803 100644 #include "chrome/browser/browser_process.h" #include "chrome/browser/enterprise/browser_management/management_service_factory.h" #include "chrome/browser/policy/configuration_policy_handler_list_factory.h" -@@ -79,6 +82,11 @@ +@@ -82,6 +85,11 @@ namespace policy { namespace { bool g_command_line_enabled_for_testing = false; @@ -135,7 +135,7 @@ index c2ecd1b63f0d7..c83704788a803 100644 } // namespace ChromeBrowserPolicyConnector::ChromeBrowserPolicyConnector() -@@ -270,6 +278,73 @@ void ChromeBrowserPolicyConnector::EnableCommandLineSupportForTesting() { +@@ -278,6 +286,73 @@ void ChromeBrowserPolicyConnector::EnableCommandLineSupportForTesting() { g_command_line_enabled_for_testing = true; } @@ -209,7 +209,7 @@ index c2ecd1b63f0d7..c83704788a803 100644 base::flat_set ChromeBrowserPolicyConnector::device_affiliation_ids() const { #if BUILDFLAG(IS_CHROMEOS_LACROS) -@@ -341,23 +416,22 @@ ChromeBrowserPolicyConnector::CreatePolicyProviders() { +@@ -349,23 +424,22 @@ ChromeBrowserPolicyConnector::CreatePolicyProviders() { std::unique_ptr ChromeBrowserPolicyConnector::CreatePlatformProvider() { #if BUILDFLAG(IS_WIN) @@ -242,7 +242,7 @@ index c2ecd1b63f0d7..c83704788a803 100644 auto loader = std::make_unique( base::ThreadPool::CreateSequencedTaskRunner( {base::MayBlock(), base::TaskPriority::BEST_EFFORT}), -@@ -367,7 +441,7 @@ ChromeBrowserPolicyConnector::CreatePlatformProvider() { +@@ -375,7 +449,7 @@ ChromeBrowserPolicyConnector::CreatePlatformProvider() { std::move(loader)); #elif BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID) base::FilePath config_dir_path; @@ -252,7 +252,7 @@ index c2ecd1b63f0d7..c83704788a803 100644 // If the folder containing the policy files doesn't exist, there's no need // to have a provider for them. Note that in verified boot, the folder diff --git chrome/browser/policy/chrome_browser_policy_connector.h chrome/browser/policy/chrome_browser_policy_connector.h -index f6147bc3c59a6..78b1170dd52bb 100644 +index 7d08b9b3a548e..c1acd530587a3 100644 --- chrome/browser/policy/chrome_browser_policy_connector.h +++ chrome/browser/policy/chrome_browser_policy_connector.h @@ -28,6 +28,10 @@ @@ -266,7 +266,7 @@ index f6147bc3c59a6..78b1170dd52bb 100644 class PrefService; namespace policy { -@@ -125,6 +129,25 @@ class ChromeBrowserPolicyConnector : public BrowserPolicyConnector { +@@ -135,6 +139,25 @@ class ChromeBrowserPolicyConnector : public BrowserPolicyConnector { static void EnableCommandLineSupportForTesting(); @@ -355,10 +355,10 @@ index 8dbf958c189dd..6eaccc6688eca 100644 *dir = base::FilePath(policy::path_parser::ExpandPathVariables(value)); return true; diff --git chrome/common/chrome_paths.cc chrome/common/chrome_paths.cc -index 94843ce782e80..0e3cc5bdb0bd5 100644 +index 54aca1f19f909..f93197a133dc2 100644 --- chrome/common/chrome_paths.cc +++ chrome/common/chrome_paths.cc -@@ -539,7 +539,8 @@ bool PathProvider(int key, base::FilePath* result) { +@@ -544,7 +544,8 @@ bool PathProvider(int key, base::FilePath* result) { return false; } break; diff --git a/patch/patches/chrome_browser_profile_menu.patch b/patch/patches/chrome_browser_profile_menu.patch index bbbd93128..f7ba906ef 100644 --- a/patch/patches/chrome_browser_profile_menu.patch +++ b/patch/patches/chrome_browser_profile_menu.patch @@ -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 3e46e2ce50219..ce905695bfe18 100644 +index e2dc163557bca..3c56bbc2881cc 100644 --- chrome/browser/ui/views/profiles/incognito_menu_view.cc +++ chrome/browser/ui/views/profiles/incognito_menu_view.cc @@ -36,7 +36,9 @@ diff --git a/patch/patches/chrome_browser_profiles.patch b/patch/patches/chrome_browser_profiles.patch index 06ae1a4c6..b52506c99 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 9bba6cea235e0..9dc5b40559207 100644 +index 2e67f8c97fab8..a3367979977c9 100644 --- chrome/browser/profiles/off_the_record_profile_impl.cc +++ chrome/browser/profiles/off_the_record_profile_impl.cc -@@ -650,7 +650,9 @@ std::unique_ptr Profile::CreateOffTheRecordProfile( +@@ -666,7 +666,9 @@ std::unique_ptr Profile::CreateOffTheRecordProfile( #endif if (!profile) profile = std::make_unique(parent, otr_profile_id); @@ -14,10 +14,10 @@ index 9bba6cea235e0..9dc5b40559207 100644 } diff --git chrome/browser/profiles/profile.cc chrome/browser/profiles/profile.cc -index 28b166f4f499c..5892638bb43c8 100644 +index 2ec2a791c4943..8573cac4111d6 100644 --- chrome/browser/profiles/profile.cc +++ chrome/browser/profiles/profile.cc -@@ -87,6 +87,7 @@ base::LazyInstance>::Leaky +@@ -91,6 +91,7 @@ base::LazyInstance>::Leaky namespace { @@ -25,7 +25,7 @@ index 28b166f4f499c..5892638bb43c8 100644 const char kDevToolsOTRProfileIDPrefix[] = "Devtools::BrowserContext"; const char kMediaRouterOTRProfileIDPrefix[] = "MediaRouter::Presentation"; const char kTestOTRProfileIDPrefix[] = "Test::OTR"; -@@ -107,6 +108,8 @@ bool Profile::OTRProfileID::AllowsBrowserWindows() const { +@@ -111,6 +112,8 @@ bool Profile::OTRProfileID::AllowsBrowserWindows() const { // DevTools::BrowserContext, MediaRouter::Presentation, and // CaptivePortal::Signin are exceptions to this ban. if (*this == PrimaryID() || @@ -34,7 +34,7 @@ index 28b166f4f499c..5892638bb43c8 100644 base::StartsWith(profile_id_, kDevToolsOTRProfileIDPrefix, base::CompareCase::SENSITIVE) || base::StartsWith(profile_id_, kMediaRouterOTRProfileIDPrefix, -@@ -144,6 +147,16 @@ Profile::OTRProfileID Profile::OTRProfileID::CreateUnique( +@@ -148,6 +151,16 @@ Profile::OTRProfileID Profile::OTRProfileID::CreateUnique( base::Uuid::GenerateRandomV4().AsLowercaseString().c_str())); } @@ -84,10 +84,10 @@ index 4bf4b36f01890..b8a966db377db 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 c70593cc14b9d..df5ba6a9432da 100644 +index 669c8ab31a549..eff71491eacfd 100644 --- chrome/browser/profiles/profile_impl.cc +++ chrome/browser/profiles/profile_impl.cc -@@ -1020,7 +1020,9 @@ Profile* ProfileImpl::GetOffTheRecordProfile(const OTRProfileID& otr_profile_id, +@@ -1036,7 +1036,9 @@ Profile* ProfileImpl::GetOffTheRecordProfile(const OTRProfileID& otr_profile_id, otr_profiles_[otr_profile_id] = std::move(otr_profile); @@ -99,10 +99,10 @@ index c70593cc14b9d..df5ba6a9432da 100644 return raw_otr_profile; } diff --git chrome/browser/profiles/profile_manager.cc chrome/browser/profiles/profile_manager.cc -index 2b7782afe7506..ed52e68ebdc91 100644 +index d6c0c3c9d5ad9..22bc9a7cf65f7 100644 --- chrome/browser/profiles/profile_manager.cc +++ chrome/browser/profiles/profile_manager.cc -@@ -439,7 +439,7 @@ ProfileManager::ProfileManager(const base::FilePath& user_data_dir) +@@ -438,7 +438,7 @@ ProfileManager::ProfileManager(const base::FilePath& user_data_dir) profile_manager_android_ = std::make_unique(this); #endif diff --git a/patch/patches/chrome_browser_safe_browsing.patch b/patch/patches/chrome_browser_safe_browsing.patch index ab6f39fd7..1e126dc6d 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 4a67fbf1512e0..8491024a30bf2 100644 +index df78bff8aeeb0..47d4f9ef83029 100644 --- chrome/browser/safe_browsing/BUILD.gn +++ chrome/browser/safe_browsing/BUILD.gn @@ -32,6 +32,7 @@ static_library("safe_browsing") { diff --git a/patch/patches/chrome_browser_startup.patch b/patch/patches/chrome_browser_startup.patch index 4e81e4a94..3063b3f01 100644 --- a/patch/patches/chrome_browser_startup.patch +++ b/patch/patches/chrome_browser_startup.patch @@ -1,9 +1,9 @@ diff --git chrome/browser/ui/startup/startup_browser_creator.cc chrome/browser/ui/startup/startup_browser_creator.cc -index ef53c8296d9af..659e077436bbe 100644 +index 3e2443d87a998..d751e0ad7c905 100644 --- chrome/browser/ui/startup/startup_browser_creator.cc +++ chrome/browser/ui/startup/startup_browser_creator.cc -@@ -580,6 +580,14 @@ void OpenNewWindowForFirstRun( - is_first_run, std::move(launch_mode_recorder)); +@@ -581,6 +581,14 @@ void OpenNewWindowForFirstRun( + /*restore_tabbed_browser=*/true); } #endif // BUILDFLAG(IS_CHROMEOS_LACROS) || BUILDFLAG(ENABLE_DICE_SUPPORT) + @@ -17,7 +17,7 @@ index ef53c8296d9af..659e077436bbe 100644 } // namespace StartupProfileMode StartupProfileModeFromReason( -@@ -1452,6 +1460,12 @@ void StartupBrowserCreator::ProcessCommandLineWithProfile( +@@ -1457,6 +1465,12 @@ void StartupBrowserCreator::ProcessCommandLineWithProfile( {profile, mode}, last_opened_profiles); } @@ -30,7 +30,7 @@ index ef53c8296d9af..659e077436bbe 100644 // static void StartupBrowserCreator::ProcessCommandLineAlreadyRunning( const base::CommandLine& command_line, -@@ -1461,6 +1475,11 @@ void StartupBrowserCreator::ProcessCommandLineAlreadyRunning( +@@ -1466,6 +1480,11 @@ void StartupBrowserCreator::ProcessCommandLineAlreadyRunning( return; } @@ -43,7 +43,7 @@ index ef53c8296d9af..659e077436bbe 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 5e961db0d6f21..f0c065b16d9f0 100644 +index 7ce113b2d3436..4d17c36beebd4 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_themes.patch b/patch/patches/chrome_browser_themes.patch index d8937d6b5..8ecddae74 100644 --- a/patch/patches/chrome_browser_themes.patch +++ b/patch/patches/chrome_browser_themes.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/themes/theme_service.cc chrome/browser/themes/theme_service.cc -index ae7735b2bee81..fc3ba3599db28 100644 +index 0b39e73c2a394..23b0bdcb7b7db 100644 --- chrome/browser/themes/theme_service.cc +++ chrome/browser/themes/theme_service.cc @@ -30,6 +30,7 @@ diff --git a/patch/patches/chrome_plugins.patch b/patch/patches/chrome_plugins.patch index 39906600c..5a0429d7d 100644 --- a/patch/patches/chrome_plugins.patch +++ b/patch/patches/chrome_plugins.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/plugins/plugin_info_host_impl.cc chrome/browser/plugins/plugin_info_host_impl.cc -index 95cd290b601a3..89e8ab892e5ea 100644 +index a1d7adcdd27c4..d3dc736a04286 100644 --- chrome/browser/plugins/plugin_info_host_impl.cc +++ chrome/browser/plugins/plugin_info_host_impl.cc @@ -140,6 +140,10 @@ bool IsPluginLoadingAccessibleResourceInWebView( @@ -42,10 +42,10 @@ index 438276b719c2f..69635e429be78 100644 const extensions::Extension* extension = registry->enabled_extensions().GetByID(extension_id); diff --git chrome/renderer/chrome_content_renderer_client.cc chrome/renderer/chrome_content_renderer_client.cc -index 1521706e2be6b..08f77de0886dd 100644 +index 04a7dbd25904c..41103cee6e47f 100644 --- chrome/renderer/chrome_content_renderer_client.cc +++ chrome/renderer/chrome_content_renderer_client.cc -@@ -999,6 +999,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -1002,6 +1002,7 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( if ((status == chrome::mojom::PluginStatus::kUnauthorized || status == chrome::mojom::PluginStatus::kBlocked) && @@ -53,7 +53,7 @@ index 1521706e2be6b..08f77de0886dd 100644 content_settings_agent_delegate->IsPluginTemporarilyAllowed( identifier)) { status = chrome::mojom::PluginStatus::kAllowed; -@@ -1161,7 +1162,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -1164,7 +1165,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( render_frame->GetRemoteAssociatedInterfaces()->GetInterface( plugin_auth_host.BindNewEndpointAndPassReceiver()); plugin_auth_host->BlockedUnauthorizedPlugin(group_name, identifier); @@ -63,7 +63,7 @@ index 1521706e2be6b..08f77de0886dd 100644 break; } case chrome::mojom::PluginStatus::kBlocked: { -@@ -1170,7 +1172,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -1173,7 +1175,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( l10n_util::GetStringFUTF16(IDS_PLUGIN_BLOCKED, group_name)); placeholder->AllowLoading(); RenderThread::Get()->RecordAction(UserMetricsAction("Plugin_Blocked")); @@ -73,7 +73,7 @@ index 1521706e2be6b..08f77de0886dd 100644 break; } case chrome::mojom::PluginStatus::kBlockedByPolicy: { -@@ -1180,7 +1183,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( +@@ -1183,7 +1186,8 @@ WebPlugin* ChromeContentRendererClient::CreatePlugin( group_name)); RenderThread::Get()->RecordAction( UserMetricsAction("Plugin_BlockedByPolicy")); diff --git a/patch/patches/chrome_pref_watcher.patch b/patch/patches/chrome_pref_watcher.patch index 5a7769513..b811920a0 100644 --- a/patch/patches/chrome_pref_watcher.patch +++ b/patch/patches/chrome_pref_watcher.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/ui/prefs/pref_watcher.h chrome/browser/ui/prefs/pref_watcher.h -index 81ccdbf504726..80f44f4a87881 100644 +index c442c6f50eada..e8a42a9d4948d 100644 --- chrome/browser/ui/prefs/pref_watcher.h +++ chrome/browser/ui/prefs/pref_watcher.h @@ -33,10 +33,10 @@ class PrefWatcher : public KeyedService, diff --git a/patch/patches/chrome_renderer.patch b/patch/patches/chrome_renderer.patch index b5de3e758..6f44237a8 100644 --- a/patch/patches/chrome_renderer.patch +++ b/patch/patches/chrome_renderer.patch @@ -1,5 +1,5 @@ diff --git chrome/renderer/BUILD.gn chrome/renderer/BUILD.gn -index da32ae82101ed..87342245c746f 100644 +index ddfdfd49ad2b2..1b53c56bb677f 100644 --- chrome/renderer/BUILD.gn +++ chrome/renderer/BUILD.gn @@ -5,6 +5,7 @@ @@ -18,7 +18,7 @@ index da32ae82101ed..87342245c746f 100644 "//chrome:resources", "//chrome:strings", "//chrome/common", -@@ -242,6 +244,10 @@ static_library("renderer") { +@@ -243,6 +245,10 @@ static_library("renderer") { configs += [ "//build/config/compiler:wexit_time_destructors" ] diff --git a/patch/patches/chrome_runtime.patch b/patch/patches/chrome_runtime.patch index e724baa2c..32d99ed66 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 227843d1197b0..eba67645bb16b 100644 +index 2b8628c707479..ffc5bfe8fd332 100644 --- chrome/app/chrome_main_delegate.cc +++ chrome/app/chrome_main_delegate.cc @@ -41,6 +41,7 @@ @@ -10,7 +10,7 @@ index 227843d1197b0..eba67645bb16b 100644 #include "chrome/browser/buildflags.h" #include "chrome/browser/chrome_content_browser_client.h" #include "chrome/browser/chrome_resource_bundle_helper.h" -@@ -608,6 +609,9 @@ struct MainFunction { +@@ -606,6 +607,9 @@ struct MainFunction { // Initializes the user data dir. Must be called before InitializeLocalState(). void InitializeUserDataDir(base::CommandLine* command_line) { @@ -20,7 +20,7 @@ index 227843d1197b0..eba67645bb16b 100644 #if BUILDFLAG(IS_CHROMEOS_LACROS) // In debug builds of Lacros, we keep track of when the user data dir // is initialized, to ensure the cryptohome is not accessed before login -@@ -823,6 +827,10 @@ ChromeMainDelegate::~ChromeMainDelegate() { +@@ -821,6 +825,10 @@ ChromeMainDelegate::~ChromeMainDelegate() { ChromeMainDelegate::~ChromeMainDelegate() = default; #endif // !BUILDFLAG(IS_ANDROID) @@ -31,7 +31,7 @@ index 227843d1197b0..eba67645bb16b 100644 std::optional ChromeMainDelegate::PostEarlyInitialization( InvokedIn invoked_in) { DUMP_WILL_BE_CHECK(base::ThreadPoolInstance::Get()); -@@ -857,7 +865,7 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( +@@ -846,7 +854,7 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( // future session's metrics. DeferBrowserMetrics(user_data_dir); @@ -40,7 +40,7 @@ index 227843d1197b0..eba67645bb16b 100644 // In the case the process is not the singleton process, the uninstall tasks // need to be executed here. A window will be displayed asking to close all // running instances. -@@ -1032,7 +1040,8 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( +@@ -1013,7 +1021,8 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( if (base::FeatureList::IsEnabled( features::kWriteBasicSystemProfileToPersistentHistogramsFile)) { @@ -50,7 +50,7 @@ index 227843d1197b0..eba67645bb16b 100644 #if BUILDFLAG(IS_ANDROID) record = base::FeatureList::IsEnabled(chrome::android::kUmaBackgroundSessions); -@@ -1487,6 +1496,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1473,6 +1482,7 @@ void ChromeMainDelegate::PreSandboxStartup() { std::string process_type = command_line.GetSwitchValueASCII(switches::kProcessType); @@ -58,7 +58,7 @@ index 227843d1197b0..eba67645bb16b 100644 crash_reporter::InitializeCrashKeys(); #if BUILDFLAG(IS_CHROMEOS_LACROS) -@@ -1505,6 +1515,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1491,6 +1501,7 @@ void ChromeMainDelegate::PreSandboxStartup() { InitMacCrashReporter(command_line, process_type); SetUpInstallerPreferences(command_line); #endif @@ -66,7 +66,7 @@ index 227843d1197b0..eba67645bb16b 100644 #if BUILDFLAG(IS_WIN) child_process_logging::Init(); -@@ -1717,6 +1728,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1703,6 +1714,7 @@ void ChromeMainDelegate::PreSandboxStartup() { CHECK(!loaded_locale.empty()) << "Locale could not be found for " << locale; } @@ -74,7 +74,7 @@ index 227843d1197b0..eba67645bb16b 100644 #if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) // Zygote needs to call InitCrashReporter() in RunZygote(). if (process_type != switches::kZygoteProcess) { -@@ -1760,6 +1772,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1738,6 +1750,7 @@ void ChromeMainDelegate::PreSandboxStartup() { // After all the platform Breakpads have been initialized, store the command // line for crash reporting. crash_keys::SetCrashKeysFromCommandLine(command_line); @@ -82,7 +82,7 @@ index 227843d1197b0..eba67645bb16b 100644 #if BUILDFLAG(ENABLE_PDF) MaybePatchGdiGetFontData(); -@@ -1885,6 +1898,7 @@ void ChromeMainDelegate::ZygoteForked() { +@@ -1863,6 +1876,7 @@ void ChromeMainDelegate::ZygoteForked() { SetUpProfilingShutdownHandler(); } @@ -90,7 +90,7 @@ index 227843d1197b0..eba67645bb16b 100644 // Needs to be called after we have chrome::DIR_USER_DATA. BrowserMain sets // this up for the browser process in a different manner. const base::CommandLine* command_line = -@@ -1907,6 +1921,7 @@ void ChromeMainDelegate::ZygoteForked() { +@@ -1875,6 +1889,7 @@ void ChromeMainDelegate::ZygoteForked() { // Reset the command line for the newly spawned process. crash_keys::SetCrashKeysFromCommandLine(*command_line); @@ -98,7 +98,7 @@ index 227843d1197b0..eba67645bb16b 100644 } #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) -@@ -2006,6 +2021,7 @@ void ChromeMainDelegate::InitializeMemorySystem() { +@@ -1974,6 +1989,7 @@ void ChromeMainDelegate::InitializeMemorySystem() { channel == version_info::Channel::DEV); const bool gwp_asan_boost_sampling = is_canary_dev || is_browser_process; @@ -106,7 +106,7 @@ index 227843d1197b0..eba67645bb16b 100644 memory_system::Initializer() .SetGwpAsanParameters(gwp_asan_boost_sampling, process_type) .SetProfilingClientParameters(channel, -@@ -2015,5 +2031,5 @@ void ChromeMainDelegate::InitializeMemorySystem() { +@@ -1983,5 +1999,5 @@ void ChromeMainDelegate::InitializeMemorySystem() { memory_system::DispatcherParameters:: AllocationTraceRecorderInclusion::kDynamic, process_type) @@ -136,7 +136,7 @@ index 3553377e96017..5207128b768f2 100644 #if BUILDFLAG(IS_CHROMEOS_LACROS) std::unique_ptr lacros_service_; diff --git chrome/browser/chrome_browser_main.cc chrome/browser/chrome_browser_main.cc -index b5859c06d56e9..3a702aad4f453 100644 +index 250bfa002ee25..e03ef004592d1 100644 --- chrome/browser/chrome_browser_main.cc +++ chrome/browser/chrome_browser_main.cc @@ -52,6 +52,7 @@ @@ -147,7 +147,7 @@ index b5859c06d56e9..3a702aad4f453 100644 #include "chrome/browser/about_flags.h" #include "chrome/browser/active_use_util.h" #include "chrome/browser/after_startup_task_utils.h" -@@ -503,7 +504,7 @@ void ProcessSingletonNotificationCallbackImpl( +@@ -504,7 +505,7 @@ void ProcessSingletonNotificationCallbackImpl( return; } @@ -156,7 +156,7 @@ index b5859c06d56e9..3a702aad4f453 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 -@@ -799,7 +800,7 @@ int ChromeBrowserMainParts::PreEarlyInitialization() { +@@ -800,7 +801,7 @@ int ChromeBrowserMainParts::PreEarlyInitialization() { return content::RESULT_CODE_NORMAL_EXIT; } @@ -165,7 +165,7 @@ index b5859c06d56e9..3a702aad4f453 100644 // If we are running stale binaries then relaunch and exit immediately. if (upgrade_util::IsRunningOldChrome()) { if (!upgrade_util::RelaunchChromeBrowser( -@@ -812,7 +813,7 @@ int ChromeBrowserMainParts::PreEarlyInitialization() { +@@ -813,7 +814,7 @@ int ChromeBrowserMainParts::PreEarlyInitialization() { // result in browser startup bailing. return chrome::RESULT_CODE_NORMAL_EXIT_UPGRADE_RELAUNCHED; } @@ -174,7 +174,7 @@ index b5859c06d56e9..3a702aad4f453 100644 return load_local_state_result; } -@@ -914,7 +915,7 @@ int ChromeBrowserMainParts::OnLocalStateLoaded( +@@ -919,7 +920,7 @@ int ChromeBrowserMainParts::OnLocalStateLoaded( browser_process_->local_state()); platform_management_service->RefreshCache(base::NullCallback()); @@ -183,7 +183,7 @@ index b5859c06d56e9..3a702aad4f453 100644 if (first_run::IsChromeFirstRun()) { bool stats_default; if (GoogleUpdateSettings::GetCollectStatsConsentDefault(&stats_default)) { -@@ -927,7 +928,7 @@ int ChromeBrowserMainParts::OnLocalStateLoaded( +@@ -932,7 +933,7 @@ int ChromeBrowserMainParts::OnLocalStateLoaded( : metrics::EnableMetricsDefault::OPT_IN); } } @@ -192,7 +192,7 @@ index b5859c06d56e9..3a702aad4f453 100644 std::string locale = startup_data_->chrome_feature_list_creator()->actual_locale(); -@@ -960,6 +961,7 @@ int ChromeBrowserMainParts::ApplyFirstRunPrefs() { +@@ -965,6 +966,7 @@ int ChromeBrowserMainParts::ApplyFirstRunPrefs() { #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) master_prefs_ = std::make_unique(); @@ -200,7 +200,7 @@ index b5859c06d56e9..3a702aad4f453 100644 std::unique_ptr installer_initial_prefs = startup_data_->chrome_feature_list_creator()->TakeInitialPrefs(); if (!installer_initial_prefs) -@@ -993,6 +995,7 @@ int ChromeBrowserMainParts::ApplyFirstRunPrefs() { +@@ -998,6 +1000,7 @@ int ChromeBrowserMainParts::ApplyFirstRunPrefs() { master_prefs_->confirm_to_quit); } #endif // BUILDFLAG(IS_MAC) @@ -208,7 +208,7 @@ index b5859c06d56e9..3a702aad4f453 100644 #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) return content::RESULT_CODE_NORMAL_EXIT; } -@@ -1059,6 +1062,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { +@@ -1064,6 +1067,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { browser_process_->browser_policy_connector()->OnResourceBundleCreated(); @@ -216,15 +216,15 @@ index b5859c06d56e9..3a702aad4f453 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) -@@ -1080,6 +1084,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { +@@ -1085,6 +1089,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { #endif // BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) } #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) +#endif // !BUILDFLAG(ENABLE_CEF) - #if BUILDFLAG(IS_CHROMEOS) - // Set the product channel for crash reports. -@@ -1458,6 +1463,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { + #if BUILDFLAG(IS_MAC) + #if defined(ARCH_CPU_X86_64) +@@ -1455,6 +1460,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { browser_process_->PreMainMessageLoopRun(); #if BUILDFLAG(IS_WIN) @@ -232,7 +232,7 @@ index b5859c06d56e9..3a702aad4f453 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)) { -@@ -1469,6 +1475,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1466,6 +1472,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { return ChromeBrowserMainPartsWin::HandleIconsCommands( *base::CommandLine::ForCurrentProcess()); } @@ -240,15 +240,15 @@ index b5859c06d56e9..3a702aad4f453 100644 ui::SelectFileDialog::SetFactory( std::make_unique()); -@@ -1486,6 +1493,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1491,6 +1498,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { } - #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN) || BUILDFLAG(IS_MAC) + #endif // BUILDFLAG(CHROME_FOR_TESTING) +#if !BUILDFLAG(ENABLE_CEF) if (base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kMakeDefaultBrowser)) { bool is_managed = g_browser_process->local_state()->IsManagedPreference( -@@ -1499,18 +1507,22 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1504,18 +1512,22 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { ? static_cast(content::RESULT_CODE_NORMAL_EXIT) : static_cast(chrome::RESULT_CODE_SHELL_INTEGRATION_FAILED); } @@ -271,16 +271,16 @@ index b5859c06d56e9..3a702aad4f453 100644 #if !BUILDFLAG(IS_ANDROID) && BUILDFLAG(ENABLE_DOWNGRADE_PROCESSING) // Begin relaunch processing immediately if User Data migration is required -@@ -1549,7 +1561,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1554,7 +1566,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { } - #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) + #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS) -#if BUILDFLAG(IS_WIN) +#if BUILDFLAG(IS_WIN) && !BUILDFLAG(ENABLE_CEF) // 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 -@@ -1558,7 +1570,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1563,7 +1575,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { // obtained but before potentially creating the first run sentinel). if (ChromeBrowserMainPartsWin::CheckMachineLevelInstall()) return chrome::RESULT_CODE_MACHINE_LEVEL_INSTALL_EXISTS; @@ -289,7 +289,7 @@ index b5859c06d56e9..3a702aad4f453 100644 // Desktop construction occurs here, (required before profile creation). PreProfileInit(); -@@ -1601,12 +1613,14 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1606,12 +1618,14 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { browser_process_->local_state()); } @@ -304,7 +304,7 @@ index b5859c06d56e9..3a702aad4f453 100644 #if BUILDFLAG(IS_ANDROID) page_info::SetPageInfoClient(new ChromePageInfoClient()); -@@ -1633,6 +1647,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1638,6 +1652,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { // Call `PostProfileInit()`and set it up for profiles created later. profile_init_manager_ = std::make_unique(this, profile); @@ -312,7 +312,7 @@ index b5859c06d56e9..3a702aad4f453 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 -@@ -1672,6 +1687,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1677,6 +1692,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { *base::CommandLine::ForCurrentProcess()); } #endif // BUILDFLAG(IS_WIN) @@ -320,7 +320,7 @@ index b5859c06d56e9..3a702aad4f453 100644 // Configure modules that need access to resources. net::NetModule::SetResourceProvider(ChromeNetResourceProvider); -@@ -1751,6 +1767,11 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1756,6 +1772,11 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { g_browser_process->profile_manager()->GetLastOpenedProfiles(); } #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -332,7 +332,7 @@ index b5859c06d56e9..3a702aad4f453 100644 // This step is costly. if (browser_creator_->Start(*base::CommandLine::ForCurrentProcess(), base::FilePath(), profile_info, -@@ -1783,11 +1804,14 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1788,11 +1809,14 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { // Create the RunLoop for MainMessageLoopRun() to use and transfer // ownership of the browser's lifetime to the BrowserProcess. @@ -348,7 +348,7 @@ index b5859c06d56e9..3a702aad4f453 100644 #endif // !BUILDFLAG(IS_ANDROID) diff --git chrome/browser/chrome_browser_main_mac.mm chrome/browser/chrome_browser_main_mac.mm -index 7c438a75e086c..f3088e0e6d564 100644 +index d39c7d82a6bd8..f3a4072b53cb1 100644 --- chrome/browser/chrome_browser_main_mac.mm +++ chrome/browser/chrome_browser_main_mac.mm @@ -16,6 +16,7 @@ @@ -359,7 +359,7 @@ index 7c438a75e086c..f3088e0e6d564 100644 #import "chrome/browser/app_controller_mac.h" #include "chrome/browser/apps/app_shim/app_shim_listener.h" #include "chrome/browser/browser_process.h" -@@ -100,6 +101,7 @@ void ChromeBrowserMainPartsMac::PreCreateMainMessageLoop() { +@@ -104,6 +105,7 @@ void ChromeBrowserMainPartsMac::PreCreateMainMessageLoop() { } #endif // !BUILDFLAG(CHROME_FOR_TESTING) @@ -367,7 +367,7 @@ index 7c438a75e086c..f3088e0e6d564 100644 // Create the app delegate by requesting the shared AppController. CHECK_EQ(nil, NSApp.delegate); AppController* app_controller = AppController.sharedController; -@@ -108,6 +110,7 @@ void ChromeBrowserMainPartsMac::PreCreateMainMessageLoop() { +@@ -112,6 +114,7 @@ void ChromeBrowserMainPartsMac::PreCreateMainMessageLoop() { chrome::BuildMainMenu(NSApp, app_controller, l10n_util::GetStringUTF16(IDS_PRODUCT_NAME), false); [app_controller mainMenuCreated]; @@ -375,7 +375,7 @@ index 7c438a75e086c..f3088e0e6d564 100644 ui::WarmScreenCapture(); -@@ -145,5 +148,7 @@ void ChromeBrowserMainPartsMac::PostProfileInit(Profile* profile, +@@ -149,5 +152,7 @@ void ChromeBrowserMainPartsMac::PostProfileInit(Profile* profile, } void ChromeBrowserMainPartsMac::DidEndMainMessageLoop() { @@ -384,18 +384,18 @@ index 7c438a75e086c..f3088e0e6d564 100644 +#endif } diff --git chrome/browser/chrome_content_browser_client.cc chrome/browser/chrome_content_browser_client.cc -index c8f705069d25b..aa9e0fd6efd0e 100644 +index 2edb319d98a50..79e89bbeb76d9 100644 --- chrome/browser/chrome_content_browser_client.cc +++ chrome/browser/chrome_content_browser_client.cc -@@ -46,6 +46,7 @@ +@@ -47,6 +47,7 @@ #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/accessibility/accessibility_labels_service.h" - #include "chrome/browser/accessibility/accessibility_labels_service_factory.h" #include "chrome/browser/after_startup_task_utils.h" -@@ -1409,6 +1410,8 @@ ChromeContentBrowserClient::GetPopupNavigationDelegateFactoryForTesting() { + #include "chrome/browser/app_mode/app_mode_utils.h" + #include "chrome/browser/bluetooth/chrome_bluetooth_delegate_impl_client.h" +@@ -1419,6 +1420,8 @@ ChromeContentBrowserClient::GetPopupNavigationDelegateFactoryForTesting() { } ChromeContentBrowserClient::ChromeContentBrowserClient() { @@ -404,7 +404,7 @@ index c8f705069d25b..aa9e0fd6efd0e 100644 #if BUILDFLAG(ENABLE_PLUGINS) extra_parts_.push_back( std::make_unique()); -@@ -1441,6 +1444,11 @@ ChromeContentBrowserClient::~ChromeContentBrowserClient() { +@@ -1451,6 +1454,11 @@ ChromeContentBrowserClient::~ChromeContentBrowserClient() { } } @@ -416,7 +416,7 @@ index c8f705069d25b..aa9e0fd6efd0e 100644 // static void ChromeContentBrowserClient::RegisterLocalStatePrefs( PrefRegistrySimple* registry) { -@@ -4299,9 +4307,11 @@ void ChromeContentBrowserClient::BrowserURLHandlerCreated( +@@ -4327,9 +4335,11 @@ void ChromeContentBrowserClient::BrowserURLHandlerCreated( &search::HandleNewTabURLReverseRewrite); #endif // BUILDFLAG(IS_ANDROID) @@ -428,7 +428,7 @@ index c8f705069d25b..aa9e0fd6efd0e 100644 } base::FilePath ChromeContentBrowserClient::GetDefaultDownloadDirectory() { -@@ -6373,7 +6383,7 @@ void ChromeContentBrowserClient::OnNetworkServiceCreated( +@@ -6424,7 +6434,7 @@ void ChromeContentBrowserClient::OnNetworkServiceCreated( #endif } @@ -437,7 +437,7 @@ index c8f705069d25b..aa9e0fd6efd0e 100644 content::BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -6391,6 +6401,8 @@ void ChromeContentBrowserClient::ConfigureNetworkContextParams( +@@ -6442,6 +6452,8 @@ void ChromeContentBrowserClient::ConfigureNetworkContextParams( network_context_params->user_agent = GetUserAgentBasedOnPolicy(context); network_context_params->accept_language = GetApplicationLocale(); } @@ -446,7 +446,7 @@ index c8f705069d25b..aa9e0fd6efd0e 100644 } std::vector -@@ -7535,10 +7547,10 @@ void ChromeContentBrowserClient::OnKeepaliveRequestStarted( +@@ -7570,10 +7582,10 @@ void ChromeContentBrowserClient::OnKeepaliveRequestStarted( const auto now = base::TimeTicks::Now(); const auto timeout = GetKeepaliveTimerTimeout(context); keepalive_deadline_ = std::max(keepalive_deadline_, now + timeout); @@ -459,7 +459,7 @@ index c8f705069d25b..aa9e0fd6efd0e 100644 FROM_HERE, keepalive_deadline_ - now, base::BindOnce( &ChromeContentBrowserClient::OnKeepaliveTimerFired, -@@ -7557,7 +7569,8 @@ void ChromeContentBrowserClient::OnKeepaliveRequestFinished() { +@@ -7592,7 +7604,8 @@ void ChromeContentBrowserClient::OnKeepaliveRequestFinished() { --num_keepalive_requests_; if (num_keepalive_requests_ == 0) { DVLOG(1) << "Stopping the keepalive timer"; @@ -469,7 +469,7 @@ index c8f705069d25b..aa9e0fd6efd0e 100644 // This deletes the keep alive handle attached to the timer function and // unblock the shutdown sequence. } -@@ -7699,7 +7712,7 @@ void ChromeContentBrowserClient::OnKeepaliveTimerFired( +@@ -7734,7 +7747,7 @@ void ChromeContentBrowserClient::OnKeepaliveTimerFired( const auto now = base::TimeTicks::Now(); const auto then = keepalive_deadline_; if (now < then) { @@ -479,10 +479,10 @@ index c8f705069d25b..aa9e0fd6efd0e 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 8ac74856217e4..e7632e1e08e96 100644 +index 19679fa14ef4e..d925433c974f3 100644 --- chrome/browser/chrome_content_browser_client.h +++ chrome/browser/chrome_content_browser_client.h -@@ -142,6 +142,8 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { +@@ -143,6 +143,8 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { ~ChromeContentBrowserClient() override; @@ -491,7 +491,7 @@ index 8ac74856217e4..e7632e1e08e96 100644 // TODO(https://crbug.com/787567): 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. -@@ -667,7 +669,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { +@@ -675,7 +677,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { override; void OnNetworkServiceCreated( network::mojom::NetworkService* network_service) override; @@ -500,7 +500,7 @@ index 8ac74856217e4..e7632e1e08e96 100644 content::BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -1160,7 +1162,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { +@@ -1174,7 +1176,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { #if !BUILDFLAG(IS_ANDROID) uint64_t num_keepalive_requests_ = 0; @@ -510,18 +510,18 @@ index 8ac74856217e4..e7632e1e08e96 100644 #endif diff --git chrome/browser/prefs/browser_prefs.cc chrome/browser/prefs/browser_prefs.cc -index 94a93ca5c715c..17cc9e515d99c 100644 +index 2ab6e767c3741..feb206b86b0fa 100644 --- chrome/browser/prefs/browser_prefs.cc +++ chrome/browser/prefs/browser_prefs.cc -@@ -15,6 +15,7 @@ +@@ -16,6 +16,7 @@ #include "build/build_config.h" #include "build/chromecast_buildflags.h" #include "build/chromeos_buildflags.h" +#include "cef/libcef/features/features.h" #include "chrome/browser/about_flags.h" #include "chrome/browser/accessibility/accessibility_labels_service.h" - #include "chrome/browser/accessibility/accessibility_ui.h" -@@ -194,6 +195,10 @@ + #include "chrome/browser/accessibility/invert_bubble_prefs.h" +@@ -195,6 +196,10 @@ #include "chrome/browser/background/background_mode_manager.h" #endif @@ -532,17 +532,17 @@ index 94a93ca5c715c..17cc9e515d99c 100644 #if BUILDFLAG(ENABLE_EXTENSIONS) #include "chrome/browser/accessibility/animation_policy_prefs.h" #include "chrome/browser/apps/platform_apps/shortcut_manager.h" -@@ -1626,7 +1631,9 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1659,7 +1664,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { + #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING) + #endif // BUILDFLAG(IS_WIN) - #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) - RegisterDefaultBrowserPromptPrefs(registry); -+#if BUILDFLAG(ENABLE_DOWNGRADE_PROCESSING) +-#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS) ++#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS) && \ ++ BUILDFLAG(ENABLE_DOWNGRADE_PROCESSING) downgrade::RegisterPrefs(registry); -+#endif - DeviceOAuth2TokenStoreDesktop::RegisterPrefs(registry); #endif -@@ -1649,6 +1656,11 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1691,6 +1697,11 @@ void RegisterLocalState(PrefRegistrySimple* registry) { // This is intentionally last. RegisterLocalStatePrefsForMigration(registry); @@ -554,7 +554,7 @@ index 94a93ca5c715c..17cc9e515d99c 100644 } // Register prefs applicable to all profiles. -@@ -2085,6 +2097,10 @@ void RegisterUserProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2126,6 +2137,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 290757895..75f4eb113 100644 --- a/patch/patches/chrome_runtime_views.patch +++ b/patch/patches/chrome_runtime_views.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/ui/browser_command_controller.cc chrome/browser/ui/browser_command_controller.cc -index 5664d44624283..e025126ed235f 100644 +index 81a995b02dd7b..c539455c80ccc 100644 --- chrome/browser/ui/browser_command_controller.cc +++ chrome/browser/ui/browser_command_controller.cc @@ -400,6 +400,7 @@ bool BrowserCommandController::ExecuteCommandWithDisposition( @@ -24,7 +24,7 @@ index 5664d44624283..e025126ed235f 100644 // The order of commands in this switch statement must match the function // declaration order in browser.h! switch (id) { -@@ -1172,11 +1180,13 @@ void BrowserCommandController::TabRestoreServiceLoaded( +@@ -1169,11 +1177,13 @@ void BrowserCommandController::TabRestoreServiceLoaded( // BrowserCommandController, private: bool BrowserCommandController::IsShowingMainUI() { @@ -41,10 +41,10 @@ index 5664d44624283..e025126ed235f 100644 bool BrowserCommandController::IsWebAppOrCustomTab() const { diff --git chrome/browser/ui/toolbar/app_menu_model.cc chrome/browser/ui/toolbar/app_menu_model.cc -index bb41ecd06518b..ab7d617e419ad 100644 +index 23eef8b20393f..023f1286636a5 100644 --- chrome/browser/ui/toolbar/app_menu_model.cc +++ chrome/browser/ui/toolbar/app_menu_model.cc -@@ -604,6 +604,57 @@ SaveAndShareSubMenuModel::SaveAndShareSubMenuModel( +@@ -603,6 +603,57 @@ SaveAndShareSubMenuModel::SaveAndShareSubMenuModel( } } @@ -102,7 +102,7 @@ index bb41ecd06518b..ab7d617e419ad 100644 } // namespace //////////////////////////////////////////////////////////////////////////////// -@@ -1470,7 +1521,7 @@ bool AppMenuModel::IsCommandIdChecked(int command_id) const { +@@ -1465,7 +1516,7 @@ bool AppMenuModel::IsCommandIdChecked(int command_id) const { return false; } @@ -111,7 +111,7 @@ index bb41ecd06518b..ab7d617e419ad 100644 GlobalError* error = GlobalErrorServiceFactory::GetForProfile(browser_->profile()) ->GetGlobalErrorByMenuItemCommandID(command_id); -@@ -1485,6 +1536,30 @@ bool AppMenuModel::IsCommandIdEnabled(int command_id) const { +@@ -1480,6 +1531,30 @@ bool AppMenuModel::IsCommandIdEnabled(int command_id) const { } } @@ -142,7 +142,7 @@ index bb41ecd06518b..ab7d617e419ad 100644 bool AppMenuModel::IsCommandIdAlerted(int command_id) const { if (command_id == IDC_VIEW_PASSWORDS || command_id == IDC_SHOW_PASSWORD_MANAGER) { -@@ -1652,11 +1727,15 @@ void AppMenuModel::Build() { +@@ -1647,11 +1722,15 @@ void AppMenuModel::Build() { kDefaultIconSize)); } @@ -163,7 +163,7 @@ index bb41ecd06518b..ab7d617e419ad 100644 AddItemWithStringId(IDC_PRINT, IDS_PRINT); -@@ -1762,9 +1841,13 @@ void AppMenuModel::Build() { +@@ -1757,9 +1836,13 @@ void AppMenuModel::Build() { kMoreToolsMenuItem); if (!features::IsChromeRefresh2023()) { @@ -180,7 +180,7 @@ index bb41ecd06518b..ab7d617e419ad 100644 } if (!features::IsChromeRefresh2023()) { -@@ -1853,6 +1936,11 @@ void AppMenuModel::Build() { +@@ -1848,6 +1931,11 @@ void AppMenuModel::Build() { SetCommandIcon(this, IDC_EXIT, kExitMenuIcon); } @@ -214,7 +214,7 @@ index d7c9df2e12df2..5dd6080454806 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 59024587ef6b7..0c30aa71768cf 100644 +index ec8ddcf73c5a4..f456d66886c0f 100644 --- chrome/browser/ui/views/find_bar_host.cc +++ chrome/browser/ui/views/find_bar_host.cc @@ -412,6 +412,12 @@ void FindBarHost::GetWidgetBounds(gfx::Rect* bounds) { @@ -231,7 +231,7 @@ index 59024587ef6b7..0c30aa71768cf 100644 void FindBarHost::RegisterAccelerators() { diff --git chrome/browser/ui/views/frame/browser_frame.cc chrome/browser/ui/views/frame/browser_frame.cc -index a52bb8913d37f..dd5030f9bfb74 100644 +index cce1835d35be3..5ac27ca62876a 100644 --- chrome/browser/ui/views/frame/browser_frame.cc +++ chrome/browser/ui/views/frame/browser_frame.cc @@ -114,15 +114,23 @@ ui::ColorProviderKey::SchemeVariant GetSchemeVariant( @@ -363,10 +363,10 @@ index 2e973c9e279b0..12b62efb8071f 100644 BrowserFrame(const BrowserFrame&) = delete; BrowserFrame& operator=(const BrowserFrame&) = delete; diff --git chrome/browser/ui/views/frame/browser_view.cc chrome/browser/ui/views/frame/browser_view.cc -index e2827eb98518f..3e33205a91f1b 100644 +index 874b4502f94e2..8c15da46dad67 100644 --- chrome/browser/ui/views/frame/browser_view.cc +++ chrome/browser/ui/views/frame/browser_view.cc -@@ -346,11 +346,10 @@ using content::NativeWebKeyboardEvent; +@@ -347,11 +347,10 @@ using content::NativeWebKeyboardEvent; using content::WebContents; using web_modal::WebContentsModalDialogHost; @@ -381,7 +381,7 @@ index e2827eb98518f..3e33205a91f1b 100644 #if BUILDFLAG(IS_CHROMEOS_ASH) // UMA histograms that record animation smoothness for tab loading animation. -@@ -677,6 +676,14 @@ class BrowserViewLayoutDelegateImpl : public BrowserViewLayoutDelegate { +@@ -678,6 +677,14 @@ class BrowserViewLayoutDelegateImpl : public BrowserViewLayoutDelegate { return browser_view_->frame()->GetTopInset() - browser_view_->y(); } @@ -396,7 +396,7 @@ index e2827eb98518f..3e33205a91f1b 100644 bool IsToolbarVisible() const override { return browser_view_->IsToolbarVisible(); } -@@ -835,11 +842,21 @@ class BrowserView::AccessibilityModeObserver : public ui::AXModeObserver { +@@ -829,11 +836,21 @@ class BrowserView::AccessibilityModeObserver : public ui::AXModeObserver { /////////////////////////////////////////////////////////////////////////////// // BrowserView, public: @@ -419,9 +419,9 @@ index e2827eb98518f..3e33205a91f1b 100644 // Store the actions so that the access is available for other classes. if (features::IsSidePanelPinningEnabled()) { browser_->SetUserData(BrowserActions::UserDataKey(), -@@ -933,8 +950,15 @@ BrowserView::BrowserView(std::unique_ptr browser) +@@ -938,8 +955,15 @@ BrowserView::BrowserView(std::unique_ptr browser) contents_container->SetLayoutManager(std::make_unique( - devtools_web_view_, contents_web_view_)); + devtools_web_view_, contents_web_view_, watermark_view)); - toolbar_ = top_container_->AddChildView( - std::make_unique(browser_.get(), this)); @@ -437,7 +437,7 @@ index e2827eb98518f..3e33205a91f1b 100644 contents_separator_ = top_container_->AddChildView(std::make_unique()); -@@ -1008,7 +1032,9 @@ BrowserView::~BrowserView() { +@@ -1013,7 +1037,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. @@ -447,7 +447,7 @@ index e2827eb98518f..3e33205a91f1b 100644 // Stop the animation timer explicitly here to avoid running it in a nested // message loop, which may run by Browser destructor. -@@ -1022,12 +1048,14 @@ BrowserView::~BrowserView() { +@@ -1027,12 +1053,14 @@ BrowserView::~BrowserView() { // child views and it is an observer for avatar toolbar button if any. autofill_bubble_handler_.reset(); @@ -462,7 +462,7 @@ index e2827eb98518f..3e33205a91f1b 100644 // The TabStrip attaches a listener to the model. Make sure we shut down the // TabStrip first so that it can cleanly remove the listener. -@@ -1045,7 +1073,9 @@ BrowserView::~BrowserView() { +@@ -1050,7 +1078,9 @@ BrowserView::~BrowserView() { // `SidePanelUI::RemoveSidePanelUIForBrowser()` deletes the // SidePanelCoordinator. @@ -472,7 +472,7 @@ index e2827eb98518f..3e33205a91f1b 100644 } // static -@@ -1966,9 +1996,14 @@ void BrowserView::OnExclusiveAccessUserInput() { +@@ -2003,9 +2033,14 @@ void BrowserView::OnExclusiveAccessUserInput() { bool BrowserView::ShouldHideUIForFullscreen() const { // Immersive mode needs UI for the slide-down top panel. @@ -488,7 +488,7 @@ index e2827eb98518f..3e33205a91f1b 100644 return frame_->GetFrameView()->ShouldHideTopUIForFullscreen(); } -@@ -3083,7 +3118,8 @@ DownloadShelf* BrowserView::GetDownloadShelf() { +@@ -3123,7 +3158,8 @@ DownloadShelf* BrowserView::GetDownloadShelf() { } DownloadBubbleUIController* BrowserView::GetDownloadBubbleUIController() { @@ -498,7 +498,7 @@ index e2827eb98518f..3e33205a91f1b 100644 if (auto* download_button = toolbar_button_provider_->GetDownloadButton()) return download_button->bubble_controller(); return nullptr; -@@ -3642,7 +3678,8 @@ void BrowserView::ReparentTopContainerForEndOfImmersive() { +@@ -3678,7 +3714,8 @@ void BrowserView::ReparentTopContainerForEndOfImmersive() { if (top_container()->parent() == this) return; @@ -508,7 +508,7 @@ index e2827eb98518f..3e33205a91f1b 100644 top_container()->DestroyLayer(); AddChildViewAt(top_container(), 0); EnsureFocusOrder(); -@@ -4123,11 +4160,38 @@ void BrowserView::GetAccessiblePanes(std::vector* panes) { +@@ -4159,11 +4196,38 @@ void BrowserView::GetAccessiblePanes(std::vector* panes) { bool BrowserView::ShouldDescendIntoChildForEventHandling( gfx::NativeView child, const gfx::Point& location) { @@ -549,7 +549,7 @@ index e2827eb98518f..3e33205a91f1b 100644 // Draggable regions are defined relative to the web contents. gfx::Point point_in_contents_web_view_coords(location); views::View::ConvertPointToTarget(GetWidget()->GetRootView(), -@@ -4136,7 +4200,7 @@ bool BrowserView::ShouldDescendIntoChildForEventHandling( +@@ -4172,7 +4236,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. @@ -558,7 +558,7 @@ index e2827eb98518f..3e33205a91f1b 100644 point_in_contents_web_view_coords.x(), point_in_contents_web_view_coords.y()) || WidgetOwnedByAnchorContainsPoint(point_in_contents_web_view_coords); -@@ -4247,8 +4311,10 @@ void BrowserView::Layout() { +@@ -4283,8 +4347,10 @@ void BrowserView::Layout(PassKey) { // TODO(jamescook): Why was this in the middle of layout code? toolbar_->location_bar()->omnibox_view()->SetFocusBehavior( @@ -571,7 +571,7 @@ index e2827eb98518f..3e33205a91f1b 100644 // Some of the situations when the BrowserView is laid out are: // - Enter/exit immersive fullscreen mode. -@@ -4314,6 +4380,11 @@ void BrowserView::AddedToWidget() { +@@ -4350,6 +4416,11 @@ void BrowserView::AddedToWidget() { SetThemeProfileForWindow(GetNativeWindow(), browser_->profile()); #endif @@ -583,7 +583,7 @@ index e2827eb98518f..3e33205a91f1b 100644 toolbar_->Init(); // TODO(pbos): Investigate whether the side panels should be creatable when -@@ -4362,13 +4433,9 @@ void BrowserView::AddedToWidget() { +@@ -4398,13 +4469,9 @@ void BrowserView::AddedToWidget() { EnsureFocusOrder(); @@ -599,7 +599,7 @@ index e2827eb98518f..3e33205a91f1b 100644 using_native_frame_ = frame_->ShouldUseNativeFrame(); MaybeInitializeWebUITabStrip(); -@@ -4793,7 +4860,8 @@ void BrowserView::ProcessFullscreen(bool fullscreen, +@@ -4830,7 +4897,8 @@ void BrowserView::ProcessFullscreen(bool fullscreen, // Undo our anti-jankiness hacks and force a re-layout. in_process_fullscreen_ = false; ToolbarSizeChanged(false); @@ -609,7 +609,7 @@ index e2827eb98518f..3e33205a91f1b 100644 } bool BrowserView::ShouldUseImmersiveFullscreenForUrl(const GURL& url) const { -@@ -5191,6 +5259,8 @@ Profile* BrowserView::GetProfile() { +@@ -5241,6 +5309,8 @@ Profile* BrowserView::GetProfile() { } void BrowserView::UpdateUIForTabFullscreen() { @@ -618,7 +618,7 @@ index e2827eb98518f..3e33205a91f1b 100644 frame()->GetFrameView()->UpdateFullscreenTopUI(); } -@@ -5213,6 +5283,8 @@ void BrowserView::HideDownloadShelf() { +@@ -5263,6 +5333,8 @@ void BrowserView::HideDownloadShelf() { } bool BrowserView::CanUserExitFullscreen() const { @@ -628,10 +628,10 @@ index e2827eb98518f..3e33205a91f1b 100644 } diff --git chrome/browser/ui/views/frame/browser_view.h chrome/browser/ui/views/frame/browser_view.h -index f3f5944785e5e..ec369e0fb2fe1 100644 +index 88686b784dac3..fc0e55b165626 100644 --- chrome/browser/ui/views/frame/browser_view.h +++ chrome/browser/ui/views/frame/browser_view.h -@@ -127,11 +127,16 @@ class BrowserView : public BrowserWindow, +@@ -132,11 +132,16 @@ class BrowserView : public BrowserWindow, METADATA_HEADER(BrowserView, views::ClientView) public: @@ -648,7 +648,7 @@ index f3f5944785e5e..ec369e0fb2fe1 100644 void set_frame(BrowserFrame* frame) { frame_ = frame; paint_as_active_subscription_ = -@@ -839,6 +844,9 @@ class BrowserView : public BrowserWindow, +@@ -847,6 +852,9 @@ class BrowserView : public BrowserWindow, const gfx::Rect& contents_webview_bounds, const gfx::Rect& local_webview_container_bounds); @@ -777,10 +777,10 @@ index 71445bfab1824..c77750ea2a820 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 8f8eae2b243b3..288d584c61548 100644 +index dfb8331c4126c..3f2bfe9354c4d 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 -@@ -590,6 +590,11 @@ PictureInPictureBrowserFrameView::PictureInPictureBrowserFrameView( +@@ -580,6 +580,11 @@ PictureInPictureBrowserFrameView::PictureInPictureBrowserFrameView( frame->GetNativeWindow()->SetEventTargeter( std::make_unique()); #endif @@ -792,7 +792,7 @@ index 8f8eae2b243b3..288d584c61548 100644 } PictureInPictureBrowserFrameView::~PictureInPictureBrowserFrameView() { -@@ -686,18 +691,42 @@ gfx::Rect PictureInPictureBrowserFrameView::GetWindowBoundsForClientBounds( +@@ -707,18 +712,42 @@ gfx::Rect PictureInPictureBrowserFrameView::GetWindowBoundsForClientBounds( int PictureInPictureBrowserFrameView::NonClientHitTest( const gfx::Point& point) { @@ -843,7 +843,7 @@ index 8f8eae2b243b3..288d584c61548 100644 // Allow dragging and resizing the window. int window_component = GetHTComponentForFrame( -@@ -764,7 +793,8 @@ void PictureInPictureBrowserFrameView::Layout() { +@@ -787,7 +816,8 @@ void PictureInPictureBrowserFrameView::Layout(PassKey) { gfx::Rect content_area = GetLocalBounds(); content_area.Inset(FrameBorderInsets()); gfx::Rect top_bar = content_area; @@ -853,7 +853,7 @@ index 8f8eae2b243b3..288d584c61548 100644 top_bar_container_view_->SetBoundsRect(top_bar); #if !BUILDFLAG(IS_ANDROID) if (auto_pip_setting_overlay_) { -@@ -1236,7 +1266,8 @@ gfx::Insets PictureInPictureBrowserFrameView::ResizeBorderInsets() const { +@@ -1259,7 +1289,8 @@ gfx::Insets PictureInPictureBrowserFrameView::ResizeBorderInsets() const { } int PictureInPictureBrowserFrameView::GetTopAreaHeight() const { @@ -895,10 +895,10 @@ index b6e4a01ae450d..14b7fd84ed7df 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 c592f23b0c972..adca2e8db1cc6 100644 +index e864e22e920c8..0b82bf831be8f 100644 --- chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc +++ chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc -@@ -558,29 +558,41 @@ gfx::Range BrowserTabStripController::ListTabsInGroup( +@@ -554,29 +554,41 @@ gfx::Range BrowserTabStripController::ListTabsInGroup( } bool BrowserTabStripController::IsFrameCondensed() const { @@ -941,7 +941,7 @@ index c592f23b0c972..adca2e8db1cc6 100644 } diff --git chrome/browser/ui/views/toolbar/toolbar_view.cc chrome/browser/ui/views/toolbar/toolbar_view.cc -index 0cf2fbd962501..ccdc0a92ccde1 100644 +index 8ee63a3430928..5a296e7dfe09c 100644 --- chrome/browser/ui/views/toolbar/toolbar_view.cc +++ chrome/browser/ui/views/toolbar/toolbar_view.cc @@ -191,7 +191,7 @@ class TabstripLikeBackground : public views::Background { @@ -953,7 +953,7 @@ index 0cf2fbd962501..ccdc0a92ccde1 100644 SkColor frame_color = browser_view_->frame()->GetFrameView()->GetFrameColor( BrowserFrameActiveState::kUseCurrent); -@@ -220,12 +220,13 @@ END_METADATA +@@ -221,12 +221,13 @@ END_METADATA //////////////////////////////////////////////////////////////////////////////// // ToolbarView, public: @@ -969,7 +969,7 @@ index 0cf2fbd962501..ccdc0a92ccde1 100644 SetID(VIEW_ID_TOOLBAR); container_view_ = AddChildView(std::make_unique()); -@@ -250,6 +251,19 @@ ToolbarView::~ToolbarView() { +@@ -251,6 +252,19 @@ ToolbarView::~ToolbarView() { } void ToolbarView::Init() { @@ -989,7 +989,7 @@ index 0cf2fbd962501..ccdc0a92ccde1 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 -@@ -274,12 +288,12 @@ void ToolbarView::Init() { +@@ -275,12 +289,12 @@ void ToolbarView::Init() { auto location_bar = std::make_unique( browser_, browser_->profile(), browser_->command_controller(), this, @@ -1004,7 +1004,7 @@ index 0cf2fbd962501..ccdc0a92ccde1 100644 download_button = std::make_unique(browser_view_); } -@@ -361,8 +375,10 @@ void ToolbarView::Init() { +@@ -362,8 +376,10 @@ void ToolbarView::Init() { } } std::unique_ptr cast; @@ -1016,7 +1016,7 @@ index 0cf2fbd962501..ccdc0a92ccde1 100644 std::unique_ptr media_button; if (base::FeatureList::IsEnabled(media::kGlobalMediaControls)) { -@@ -372,7 +388,8 @@ void ToolbarView::Init() { +@@ -373,7 +389,8 @@ void ToolbarView::Init() { std::unique_ptr send_tab_to_self_button; @@ -1026,7 +1026,7 @@ index 0cf2fbd962501..ccdc0a92ccde1 100644 send_tab_to_self_button = std::make_unique( browser_view_); -@@ -451,7 +468,7 @@ void ToolbarView::Init() { +@@ -452,7 +469,7 @@ void ToolbarView::Init() { send_tab_to_self_button_ = container_view_->AddChildView(std::move(send_tab_to_self_button)); @@ -1036,7 +1036,7 @@ index 0cf2fbd962501..ccdc0a92ccde1 100644 side_panel_container_ = container_view_->AddChildView( std::make_unique(browser_view_)); diff --git chrome/browser/ui/views/toolbar/toolbar_view.h chrome/browser/ui/views/toolbar/toolbar_view.h -index ec3e34a86f4c5..c10866a7b1ace 100644 +index 53f8ff18e0119..05d005f026d33 100644 --- chrome/browser/ui/views/toolbar/toolbar_view.h +++ chrome/browser/ui/views/toolbar/toolbar_view.h @@ -93,7 +93,8 @@ class ToolbarView : public views::AccessiblePaneView, diff --git a/patch/patches/chrome_utility_client.patch b/patch/patches/chrome_utility_client.patch index ffab700e6..5b4916b58 100644 --- a/patch/patches/chrome_utility_client.patch +++ b/patch/patches/chrome_utility_client.patch @@ -1,5 +1,5 @@ diff --git chrome/utility/chrome_content_utility_client.cc chrome/utility/chrome_content_utility_client.cc -index 9b666cd9c1989..dd0814403474c 100644 +index e070f862c3492..fdf448397fb3e 100644 --- chrome/utility/chrome_content_utility_client.cc +++ chrome/utility/chrome_content_utility_client.cc @@ -13,6 +13,7 @@ @@ -10,7 +10,7 @@ index 9b666cd9c1989..dd0814403474c 100644 #include "chrome/common/chrome_paths.h" #include "chrome/common/profiler/thread_profiler.h" #include "chrome/common/profiler/thread_profiler_configuration.h" -@@ -57,7 +58,8 @@ void ChromeContentUtilityClient::UtilityThreadStarted() { +@@ -61,7 +62,8 @@ void ChromeContentUtilityClient::UtilityThreadStarted() { command_line->GetSwitchValueASCII(switches::kProcessType); // An in-process utility thread may run in other processes, only set up // collector in a utility process. diff --git a/patch/patches/component_build.patch b/patch/patches/component_build.patch index 55ceffaa3..d9dbd20d6 100644 --- a/patch/patches/component_build.patch +++ b/patch/patches/component_build.patch @@ -1,16 +1,16 @@ diff --git content/browser/devtools/devtools_instrumentation.h content/browser/devtools/devtools_instrumentation.h -index 67b7e7ca509e1..de84b8f7ecde9 100644 +index 7c7589a393254..573c11adc21c7 100644 --- content/browser/devtools/devtools_instrumentation.h +++ content/browser/devtools/devtools_instrumentation.h -@@ -110,7 +110,7 @@ bool ApplyUserAgentMetadataOverrides( +@@ -115,7 +115,7 @@ bool ApplyUserAgentMetadataOverrides( FrameTreeNode* frame_tree_node, std::optional* override_out); --bool WillCreateURLLoaderFactory( -+CONTENT_EXPORT bool WillCreateURLLoaderFactory( - RenderFrameHostImpl* rfh, - bool is_navigation, - bool is_download, +-class WillCreateURLLoaderFactoryParams final { ++class CONTENT_EXPORT WillCreateURLLoaderFactoryParams final { + STACK_ALLOCATED(); + + public: diff --git content/browser/renderer_host/input/mouse_wheel_phase_handler.h content/browser/renderer_host/input/mouse_wheel_phase_handler.h index d69f9d4641613..e88aaf8617c52 100644 --- content/browser/renderer_host/input/mouse_wheel_phase_handler.h diff --git a/patch/patches/content_2015.patch b/patch/patches/content_2015.patch index 5802e3bfc..fe9f56f26 100644 --- a/patch/patches/content_2015.patch +++ b/patch/patches/content_2015.patch @@ -12,37 +12,37 @@ index b7430b7d7027f..721144dde86d8 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 5da07b9eff248..72fc63ba456c5 100644 +index 6e7e22ee886fa..97d0184ceae99 100644 --- content/browser/loader/navigation_url_loader_impl.cc +++ content/browser/loader/navigation_url_loader_impl.cc -@@ -751,6 +751,22 @@ NavigationURLLoaderImpl::PrepareForNonInterceptedRequest() { - : nullptr, - &loader_factory); +@@ -785,6 +785,22 @@ NavigationURLLoaderImpl::PrepareForNonInterceptedRequest() { + : nullptr, + &loader_factory); -+ if (!handled) { -+ handled = GetContentClient()->browser()->HandleExternalProtocol( -+ web_contents_getter_, frame_tree_node_id_, -+ navigation_ui_data_.get(), request_info_->is_primary_main_frame, -+ FrameTreeNode::GloballyFindByID(frame_tree_node_id_) -+ ->IsInFencedFrameTree(), -+ request_info_->sandbox_flags, -+ *resource_request_, initiating_origin, -+ request_info_->initiator_document_token -+ ? RenderFrameHostImpl::FromDocumentToken( -+ request_info_->initiator_process_id, -+ *request_info_->initiator_document_token) -+ : nullptr, -+ &loader_factory); -+ } ++ if (!handled) { ++ handled = GetContentClient()->browser()->HandleExternalProtocol( ++ web_contents_getter_, frame_tree_node_id_, ++ navigation_ui_data_.get(), request_info_->is_primary_main_frame, ++ FrameTreeNode::GloballyFindByID(frame_tree_node_id_) ++ ->IsInFencedFrameTree(), ++ request_info_->sandbox_flags, ++ *resource_request_, initiating_origin, ++ request_info_->initiator_document_token ++ ? RenderFrameHostImpl::FromDocumentToken( ++ request_info_->initiator_process_id, ++ *request_info_->initiator_document_token) ++ : nullptr, ++ &loader_factory); ++ } + - if (loader_factory) { - factory = base::MakeRefCounted( - std::move(loader_factory)); + if (loader_factory) { + factory = std::move(factory_builder).Finish(std::move(loader_factory)); + } else { diff --git content/public/browser/content_browser_client.cc content/public/browser/content_browser_client.cc -index d004abc6fe3da..3aeb9ab07d2a6 100644 +index 737dcbdee639d..1344e564a9d1f 100644 --- content/public/browser/content_browser_client.cc +++ content/public/browser/content_browser_client.cc -@@ -1070,7 +1070,7 @@ ContentBrowserClient::CreateURLLoaderHandlerForServiceWorkerNavigationPreload( +@@ -1071,7 +1071,7 @@ ContentBrowserClient::CreateURLLoaderHandlerForServiceWorkerNavigationPreload( void ContentBrowserClient::OnNetworkServiceCreated( network::mojom::NetworkService* network_service) {} @@ -51,7 +51,7 @@ index d004abc6fe3da..3aeb9ab07d2a6 100644 BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -1079,6 +1079,7 @@ void ContentBrowserClient::ConfigureNetworkContextParams( +@@ -1080,6 +1080,7 @@ void ContentBrowserClient::ConfigureNetworkContextParams( cert_verifier_creation_params) { network_context_params->user_agent = GetUserAgentBasedOnPolicy(context); network_context_params->accept_language = "en-us,en"; @@ -60,7 +60,7 @@ index d004abc6fe3da..3aeb9ab07d2a6 100644 std::vector diff --git content/public/browser/content_browser_client.h content/public/browser/content_browser_client.h -index d0a5dbc454670..0814479cf64e1 100644 +index 26999a1fa55c7..1c5fbd03212f1 100644 --- content/public/browser/content_browser_client.h +++ content/public/browser/content_browser_client.h @@ -43,6 +43,7 @@ @@ -71,7 +71,7 @@ index d0a5dbc454670..0814479cf64e1 100644 #include "content/public/common/alternative_error_page_override_info.mojom-forward.h" #include "content/public/common/page_visibility_state.h" #include "content/public/common/window_container_type.mojom-forward.h" -@@ -1989,7 +1990,7 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -2018,7 +2019,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. @@ -80,7 +80,7 @@ index d0a5dbc454670..0814479cf64e1 100644 BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -2210,6 +2211,19 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -2238,6 +2239,19 @@ class CONTENT_EXPORT ContentBrowserClient { RenderFrameHost* initiator_document, mojo::PendingRemote* out_factory); @@ -100,7 +100,7 @@ index d0a5dbc454670..0814479cf64e1 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. -@@ -2267,6 +2281,10 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -2295,6 +2309,10 @@ class CONTENT_EXPORT ContentBrowserClient { // Used as part of the user agent string. virtual std::string GetProduct(); @@ -137,7 +137,7 @@ index ff20508d76a60..03a83b28fd678 100644 // started. virtual void SetRuntimeFeaturesDefaultsBeforeBlinkInitialization() {} diff --git content/renderer/render_thread_impl.cc content/renderer/render_thread_impl.cc -index b67ee7e79eea7..13ac29a392b6e 100644 +index fef1829ebda85..23df06b6c60bb 100644 --- content/renderer/render_thread_impl.cc +++ content/renderer/render_thread_impl.cc @@ -545,6 +545,8 @@ void RenderThreadImpl::Init() { @@ -150,10 +150,10 @@ index b67ee7e79eea7..13ac29a392b6e 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 619323f485c6a..324017a67e989 100644 +index 132aca6cb29e9..39374c08425b1 100644 --- content/renderer/renderer_blink_platform_impl.cc +++ content/renderer/renderer_blink_platform_impl.cc -@@ -994,6 +994,15 @@ SkBitmap* RendererBlinkPlatformImpl::GetSadPageBitmap() { +@@ -1011,6 +1011,15 @@ SkBitmap* RendererBlinkPlatformImpl::GetSadPageBitmap() { //------------------------------------------------------------------------------ @@ -170,10 +170,10 @@ index 619323f485c6a..324017a67e989 100644 RendererBlinkPlatformImpl::CreateWebV8ValueConverter() { return std::make_unique(); diff --git content/renderer/renderer_blink_platform_impl.h content/renderer/renderer_blink_platform_impl.h -index ecbcf12493f77..2c529b2f07a14 100644 +index c1b86ec95d41c..8dca87a7201a4 100644 --- content/renderer/renderer_blink_platform_impl.h +++ content/renderer/renderer_blink_platform_impl.h -@@ -236,6 +236,9 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { +@@ -237,6 +237,9 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { InertAndMinimumIntervalOfUserLevelMemoryPressureSignal() override; #endif // BUILDFLAG(IS_ANDROID) @@ -184,19 +184,19 @@ index ecbcf12493f77..2c529b2f07a14 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 3e0b86f6834c5..624610b39a399 100644 +index 194a43ae9f6ee..77d6b4bf2a810 100644 --- content/shell/browser/shell_content_browser_client.cc +++ content/shell/browser/shell_content_browser_client.cc -@@ -703,7 +703,7 @@ void ShellContentBrowserClient::GetAdditionalMappedFilesForChildProcess( - #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || - // BUILDFLAG(IS_ANDROID) +@@ -728,7 +728,7 @@ void ShellContentBrowserClient::OnNetworkServiceCreated( + #endif + } -void ShellContentBrowserClient::ConfigureNetworkContextParams( +bool ShellContentBrowserClient::ConfigureNetworkContextParams( BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -712,6 +712,7 @@ void ShellContentBrowserClient::ConfigureNetworkContextParams( +@@ -737,6 +737,7 @@ void ShellContentBrowserClient::ConfigureNetworkContextParams( cert_verifier_creation_params) { ConfigureNetworkContextParamsForShell(context, network_context_params, cert_verifier_creation_params); @@ -205,23 +205,23 @@ index 3e0b86f6834c5..624610b39a399 100644 std::vector diff --git content/shell/browser/shell_content_browser_client.h content/shell/browser/shell_content_browser_client.h -index 83253e9feb3eb..ca0fd605ee613 100644 +index 0fa1c7c38a387..5d878d3fda793 100644 --- content/shell/browser/shell_content_browser_client.h +++ content/shell/browser/shell_content_browser_client.h -@@ -140,7 +140,7 @@ class ShellContentBrowserClient : public ContentBrowserClient { - #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) || - // BUILDFLAG(IS_ANDROID) +@@ -145,7 +145,7 @@ class ShellContentBrowserClient : public ContentBrowserClient { device::GeolocationManager* GetGeolocationManager() override; + void OnNetworkServiceCreated( + network::mojom::NetworkService* network_service) override; - void ConfigureNetworkContextParams( + bool ConfigureNetworkContextParams( BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, diff --git headless/lib/browser/headless_content_browser_client.cc headless/lib/browser/headless_content_browser_client.cc -index 6a118e43698a1..82df4466206d2 100644 +index c9c460444236d..0fbdbed1da9d7 100644 --- headless/lib/browser/headless_content_browser_client.cc +++ headless/lib/browser/headless_content_browser_client.cc -@@ -297,7 +297,7 @@ bool HeadlessContentBrowserClient::IsSharedStorageSelectURLAllowed( +@@ -299,7 +299,7 @@ bool HeadlessContentBrowserClient::IsSharedStorageSelectURLAllowed( return true; } @@ -230,7 +230,7 @@ index 6a118e43698a1..82df4466206d2 100644 content::BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -307,6 +307,7 @@ void HeadlessContentBrowserClient::ConfigureNetworkContextParams( +@@ -309,6 +309,7 @@ void HeadlessContentBrowserClient::ConfigureNetworkContextParams( HeadlessBrowserContextImpl::From(context)->ConfigureNetworkContextParams( in_memory, relative_partition_path, network_context_params, cert_verifier_creation_params); @@ -239,12 +239,12 @@ index 6a118e43698a1..82df4466206d2 100644 std::string HeadlessContentBrowserClient::GetProduct() { diff --git headless/lib/browser/headless_content_browser_client.h headless/lib/browser/headless_content_browser_client.h -index 18f90a11713b5..688549524fb17 100644 +index a460fe14c56e2..7c72cdec1193e 100644 --- headless/lib/browser/headless_content_browser_client.h +++ headless/lib/browser/headless_content_browser_client.h -@@ -80,7 +80,7 @@ class HeadlessContentBrowserClient : public content::ContentBrowserClient { - const url::Origin& top_frame_origin, - const url::Origin& accessing_origin) override; +@@ -83,7 +83,7 @@ class HeadlessContentBrowserClient : public content::ContentBrowserClient { + const url::Origin& accessing_origin, + std::string* out_debug_message = nullptr) override; - void ConfigureNetworkContextParams( + bool ConfigureNetworkContextParams( diff --git a/patch/patches/content_main_654986.patch b/patch/patches/content_main_654986.patch index 5b72cfff7..ac8239e76 100644 --- a/patch/patches/content_main_654986.patch +++ b/patch/patches/content_main_654986.patch @@ -90,7 +90,7 @@ index aebbccad2a503..2537281b0e872 100644 } diff --git content/app/content_main_runner_impl.cc content/app/content_main_runner_impl.cc -index 0e6cd686e0b05..a26433ccb9307 100644 +index f39a56eefbaa7..cb5f7370f1510 100644 --- content/app/content_main_runner_impl.cc +++ content/app/content_main_runner_impl.cc @@ -46,6 +46,7 @@ @@ -101,7 +101,7 @@ index 0e6cd686e0b05..a26433ccb9307 100644 #include "base/time/time.h" #include "base/trace_event/trace_event.h" #include "build/build_config.h" -@@ -1335,6 +1336,11 @@ void ContentMainRunnerImpl::Shutdown() { +@@ -1339,6 +1340,11 @@ void ContentMainRunnerImpl::Shutdown() { is_shutdown_ = true; } diff --git a/patch/patches/content_renderer_host_3617.patch b/patch/patches/content_renderer_host_3617.patch index ffef17495..cd88067f5 100644 --- a/patch/patches/content_renderer_host_3617.patch +++ b/patch/patches/content_renderer_host_3617.patch @@ -1,8 +1,8 @@ diff --git content/browser/renderer_host/render_process_host_impl.cc content/browser/renderer_host/render_process_host_impl.cc -index b656054d342f5..7889656173b0e 100644 +index fd63bad192e9b..262a286478b67 100644 --- content/browser/renderer_host/render_process_host_impl.cc +++ content/browser/renderer_host/render_process_host_impl.cc -@@ -1629,7 +1629,8 @@ bool RenderProcessHostImpl::Init() { +@@ -1623,7 +1623,8 @@ bool RenderProcessHostImpl::Init() { // initialized because in tests the factory may never have been initialized. if (!GetBrowserContext()->IsOffTheRecord() && !base::CommandLine::ForCurrentProcess()->HasSwitch( diff --git a/patch/patches/crashpad_1995.patch b/patch/patches/crashpad_1995.patch index 5fe352c63..f396ecbea 100644 --- a/patch/patches/crashpad_1995.patch +++ b/patch/patches/crashpad_1995.patch @@ -262,7 +262,7 @@ index a604df7a5ea6a..618fbde10a65c 100644 } // namespace crash_reporter diff --git components/crash/core/app/crashpad.cc components/crash/core/app/crashpad.cc -index 9ea9021f16006..cf187495ff3f0 100644 +index a18afed5b55c1..fabb36a299cd9 100644 --- components/crash/core/app/crashpad.cc +++ components/crash/core/app/crashpad.cc @@ -129,7 +129,8 @@ bool InitializeCrashpadImpl(bool initial_client, @@ -276,7 +276,7 @@ index 9ea9021f16006..cf187495ff3f0 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 99efa6b245b99..008eb397332c2 100644 +index dbe46081ebf43..8182c133e2934 100644 --- components/crash/core/app/crashpad_linux.cc +++ components/crash/core/app/crashpad_linux.cc @@ -23,6 +23,7 @@ @@ -287,7 +287,7 @@ index 99efa6b245b99..008eb397332c2 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" -@@ -107,11 +108,10 @@ bool PlatformCrashpadInitialization( +@@ -168,11 +169,10 @@ bool PlatformCrashpadInitialization( crash_reporter_client->GetCrashDumpLocation(database_path); crash_reporter_client->GetCrashMetricsLocation(&metrics_path); @@ -302,7 +302,7 @@ index 99efa6b245b99..008eb397332c2 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 -@@ -128,8 +128,8 @@ bool PlatformCrashpadInitialization( +@@ -189,8 +189,8 @@ bool PlatformCrashpadInitialization( &product_version, &channel); std::map annotations; @@ -313,7 +313,7 @@ index 99efa6b245b99..008eb397332c2 100644 #if BUILDFLAG(GOOGLE_CHROME_BRANDING) // Empty means stable. -@@ -146,7 +146,20 @@ bool PlatformCrashpadInitialization( +@@ -207,7 +207,20 @@ bool PlatformCrashpadInitialization( annotations["channel"] = channel; } @@ -335,7 +335,7 @@ index 99efa6b245b99..008eb397332c2 100644 #if BUILDFLAG(IS_CHROMEOS_LACROS) // "build_time_millis" is used on LaCros chrome to determine when to stop -@@ -191,6 +204,12 @@ bool PlatformCrashpadInitialization( +@@ -252,6 +265,12 @@ bool PlatformCrashpadInitialization( } #endif diff --git a/patch/patches/embedder_product_override.patch b/patch/patches/embedder_product_override.patch index 50d5ed8a8..37c50c094 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 44cf15e1b4703..b3f744454f6c3 100644 +index bcaff65ad5611..2512ab068034a 100644 --- components/embedder_support/user_agent_utils.cc +++ components/embedder_support/user_agent_utils.cc @@ -18,6 +18,7 @@ diff --git a/patch/patches/extensions_1947.patch b/patch/patches/extensions_1947.patch index 35a2c309a..132dead1a 100644 --- a/patch/patches/extensions_1947.patch +++ b/patch/patches/extensions_1947.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/extensions/api/streams_private/streams_private_api.cc chrome/browser/extensions/api/streams_private/streams_private_api.cc -index 8cea5bf4591cd..c5fca9dd1a9e8 100644 +index 5ee79cf7fefb1..a84750a496095 100644 --- chrome/browser/extensions/api/streams_private/streams_private_api.cc +++ chrome/browser/extensions/api/streams_private/streams_private_api.cc @@ -6,6 +6,7 @@ @@ -10,7 +10,7 @@ index 8cea5bf4591cd..c5fca9dd1a9e8 100644 #include "chrome/browser/extensions/extension_tab_util.h" #include "chrome/browser/preloading/prefetch/no_state_prefetch/chrome_no_state_prefetch_contents_delegate.h" #include "components/no_state_prefetch/browser/no_state_prefetch_contents.h" -@@ -26,6 +27,10 @@ +@@ -27,6 +28,10 @@ #include "pdf/pdf_features.h" #endif // BUILDFLAG(ENABLE_PDF) @@ -21,7 +21,7 @@ index 8cea5bf4591cd..c5fca9dd1a9e8 100644 namespace extensions { void StreamsPrivateAPI::SendExecuteMimeTypeHandlerEvent( -@@ -43,6 +48,7 @@ void StreamsPrivateAPI::SendExecuteMimeTypeHandlerEvent( +@@ -44,6 +49,7 @@ void StreamsPrivateAPI::SendExecuteMimeTypeHandlerEvent( if (!web_contents) return; @@ -29,7 +29,7 @@ index 8cea5bf4591cd..c5fca9dd1a9e8 100644 // If the request was for NoStatePrefetch, abort the prefetcher and do not // continue. This is because plugins cancel NoStatePrefetch, see // http://crbug.com/343590. -@@ -53,6 +59,7 @@ void StreamsPrivateAPI::SendExecuteMimeTypeHandlerEvent( +@@ -54,6 +60,7 @@ void StreamsPrivateAPI::SendExecuteMimeTypeHandlerEvent( no_state_prefetch_contents->Destroy(prerender::FINAL_STATUS_DOWNLOAD); return; } @@ -37,7 +37,7 @@ index 8cea5bf4591cd..c5fca9dd1a9e8 100644 auto* browser_context = web_contents->GetBrowserContext(); -@@ -79,9 +86,18 @@ void StreamsPrivateAPI::SendExecuteMimeTypeHandlerEvent( +@@ -80,9 +87,18 @@ void StreamsPrivateAPI::SendExecuteMimeTypeHandlerEvent( // forms of zooming won't work). // TODO(1042323): Present a coherent representation of a tab id for portal // contents. @@ -60,10 +60,10 @@ index 8cea5bf4591cd..c5fca9dd1a9e8 100644 std::unique_ptr stream_container( new StreamContainer(tab_id, embedded, handler_url, extension_id, diff --git extensions/browser/extension_host.cc extensions/browser/extension_host.cc -index 52e6a29f65a91..8e8f92a45526c 100644 +index 0035aedce82f0..861288525b291 100644 --- extensions/browser/extension_host.cc +++ extensions/browser/extension_host.cc -@@ -105,12 +105,13 @@ ExtensionHost::ExtensionHost(const Extension* extension, +@@ -104,12 +104,13 @@ ExtensionHost::ExtensionHost(const Extension* extension, host_type == mojom::ViewType::kOffscreenDocument || host_type == mojom::ViewType::kExtensionPopup || host_type == mojom::ViewType::kExtensionSidePanel); @@ -80,7 +80,7 @@ index 52e6a29f65a91..8e8f92a45526c 100644 main_frame_host_ = host_contents_->GetPrimaryMainFrame(); // Listen for when an extension is unloaded from the same profile, as it may -@@ -126,11 +127,49 @@ ExtensionHost::ExtensionHost(const Extension* extension, +@@ -125,11 +126,49 @@ ExtensionHost::ExtensionHost(const Extension* extension, // Create password reuse detection manager when new extension web contents are // created. ExtensionsBrowserClient::Get()->CreatePasswordReuseDetectionManager( @@ -132,7 +132,7 @@ index 52e6a29f65a91..8e8f92a45526c 100644 ExtensionRegistry::Get(browser_context_)->RemoveObserver(this); diff --git extensions/browser/extension_host.h extensions/browser/extension_host.h -index 94b02bca9b70b..5e3dacc34452a 100644 +index 28ba09319b047..2a097a5ae4c16 100644 --- extensions/browser/extension_host.h +++ extensions/browser/extension_host.h @@ -62,6 +62,12 @@ class ExtensionHost : public DeferredStartRenderHost, @@ -157,7 +157,7 @@ index 94b02bca9b70b..5e3dacc34452a 100644 content::RenderFrameHost* main_frame_host() const { return main_frame_host_; } content::RenderProcessHost* render_process_host() const; bool has_loaded_once() const { return has_loaded_once_; } -@@ -248,7 +254,8 @@ class ExtensionHost : public DeferredStartRenderHost, +@@ -244,7 +250,8 @@ class ExtensionHost : public DeferredStartRenderHost, raw_ptr browser_context_; // The host for our HTML content. @@ -199,7 +199,7 @@ index c3197eb4790fa..1e7ae767b0582 100644 } diff --git extensions/browser/extensions_browser_client.h extensions/browser/extensions_browser_client.h -index 5da1cae2970c6..4e193c09c54b1 100644 +index 1be758c66fe70..62f72c7c119d0 100644 --- extensions/browser/extensions_browser_client.h +++ extensions/browser/extensions_browser_client.h @@ -34,6 +34,7 @@ @@ -234,10 +234,10 @@ index 5da1cae2970c6..4e193c09c54b1 100644 // once each time the extensions system is loaded per browser_context. The // implementation may wish to use the BrowserContext to record the current diff --git extensions/browser/process_manager.cc extensions/browser/process_manager.cc -index 399eba92dc627..60ad5d7dd3831 100644 +index 3363f44f7c4fc..3eec0356c0c58 100644 --- extensions/browser/process_manager.cc +++ extensions/browser/process_manager.cc -@@ -379,9 +379,17 @@ bool ProcessManager::CreateBackgroundHost(const Extension* extension, +@@ -353,9 +353,17 @@ bool ProcessManager::CreateBackgroundHost(const Extension* extension, return true; // TODO(kalman): return false here? It might break things... DVLOG(1) << "CreateBackgroundHost " << extension->id(); diff --git a/patch/patches/gn_config.patch b/patch/patches/gn_config.patch index 38cd2d254..ab82e28b2 100644 --- a/patch/patches/gn_config.patch +++ b/patch/patches/gn_config.patch @@ -12,7 +12,7 @@ index afe0b3e90fafb..daae3b0e0e8d3 100644 # https://crbug.com/474506. "//clank/java/BUILD.gn", diff --git BUILD.gn BUILD.gn -index 067b08552d5fc..bbb280ef9e307 100644 +index 20ee94216cab0..0b7c7bc8479a6 100644 --- BUILD.gn +++ BUILD.gn @@ -19,6 +19,7 @@ import("//build/config/sanitizers/sanitizers.gni") @@ -20,10 +20,10 @@ index 067b08552d5fc..bbb280ef9e307 100644 import("//build/gn_logs.gni") import("//build/util/generate_wrapper.gni") +import("//cef/libcef/features/features.gni") - import("//chrome/browser/buildflags.gni") import("//components/enterprise/buildflags/buildflags.gni") import("//components/nacl/features.gni") -@@ -277,6 +278,10 @@ group("gn_all") { + import("//device/vr/buildflags/buildflags.gni") +@@ -274,6 +275,10 @@ group("gn_all") { deps += root_extra_deps @@ -76,7 +76,7 @@ index 1da479dd5eebc..ff9c7e467997c 100644 - visual_studio_runtime_dirs = [] } diff --git chrome/chrome_paks.gni chrome/chrome_paks.gni -index 95d82be2f9050..191232294b59f 100644 +index a6c3ac1645b4a..27fa1add81082 100644 --- chrome/chrome_paks.gni +++ chrome/chrome_paks.gni @@ -5,6 +5,7 @@ @@ -122,7 +122,7 @@ index c43aa5873d96a..68978caa5b96b 100644 source_patterns += [ "${root_gen_dir}/extensions/strings/extensions_strings_" ] diff --git chrome/installer/mini_installer/BUILD.gn chrome/installer/mini_installer/BUILD.gn -index 6a32fb624ea4c..923a92b478368 100644 +index b94944f6d5527..eecf0673e027e 100644 --- chrome/installer/mini_installer/BUILD.gn +++ chrome/installer/mini_installer/BUILD.gn @@ -7,6 +7,7 @@ import("//build/config/features.gni") @@ -133,7 +133,7 @@ index 6a32fb624ea4c..923a92b478368 100644 import("//chrome/process_version_rc_template.gni") import("//third_party/dawn/scripts/dawn_features.gni") import("//third_party/ffmpeg/ffmpeg_options.gni") -@@ -123,11 +124,13 @@ action("mini_installer_archive") { +@@ -145,11 +146,13 @@ action("mini_installer_archive") { inputs = [ "$root_out_dir/chrome.dll", "$root_out_dir/chrome.exe", diff --git a/patch/patches/gritsettings.patch b/patch/patches/gritsettings.patch index 0c8cdfc2a..915322b93 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 df93fa972dff6..3228d8377f597 100644 +index 5ee9c00afbdd7..d2a8050968468 100644 --- tools/gritsettings/resource_ids.spec +++ tools/gritsettings/resource_ids.spec -@@ -1269,6 +1269,15 @@ +@@ -1277,6 +1277,15 @@ # END "everything else" section. # Everything but chrome/, components/, content/, and ios/ diff --git a/patch/patches/light_mode_3534.patch b/patch/patches/light_mode_3534.patch index f6f6fc6f7..487d0f806 100644 --- a/patch/patches/light_mode_3534.patch +++ b/patch/patches/light_mode_3534.patch @@ -32,7 +32,7 @@ index 6b9d2c180c904..3570ef071ba07 100644 return (dark_mode_support.allow_dark_mode_for_app || dark_mode_support.set_preferred_app_mode) && diff --git ui/native_theme/native_theme_mac.mm ui/native_theme/native_theme_mac.mm -index be2f769afe2d1..51bcf353b8797 100644 +index e06aa51a8ebc9..fd1aa8e472f1f 100644 --- ui/native_theme/native_theme_mac.mm +++ ui/native_theme/native_theme_mac.mm @@ -50,6 +50,13 @@ bool InvertedColors() { @@ -49,7 +49,7 @@ index be2f769afe2d1..51bcf353b8797 100644 } // namespace // Helper object to respond to light mode/dark mode changeovers. -@@ -594,11 +601,15 @@ void NativeThemeMac::PaintSelectedMenuItem( +@@ -577,11 +584,15 @@ void NativeThemeMac::PaintSelectedMenuItem( void NativeThemeMac::InitializeDarkModeStateAndObserver() { __block auto theme = this; @@ -68,10 +68,10 @@ index be2f769afe2d1..51bcf353b8797 100644 theme->NotifyOnNativeThemeUpdated(); }]; diff --git ui/native_theme/native_theme_win.cc ui/native_theme/native_theme_win.cc -index 6af4df92820d5..c2ae96510d011 100644 +index 9830931142e76..62b8e4972a6b5 100644 --- ui/native_theme/native_theme_win.cc +++ ui/native_theme/native_theme_win.cc -@@ -653,14 +653,17 @@ bool NativeThemeWin::ShouldUseDarkColors() const { +@@ -659,14 +659,17 @@ 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. @@ -91,7 +91,7 @@ index 6af4df92820d5..c2ae96510d011 100644 return NativeTheme::CalculatePreferredColorScheme(); // According to the spec, the preferred color scheme for web content is 'dark' -@@ -1651,8 +1654,9 @@ void NativeThemeWin::RegisterColorFilteringRegkeyObserver() { +@@ -1657,8 +1660,9 @@ void NativeThemeWin::RegisterColorFilteringRegkeyObserver() { } void NativeThemeWin::UpdateDarkModeStatus() { diff --git a/patch/patches/linux_chrome_widevine_3149.patch b/patch/patches/linux_chrome_widevine_3149.patch index 3b4625142..84183ba6a 100644 --- a/patch/patches/linux_chrome_widevine_3149.patch +++ b/patch/patches/linux_chrome_widevine_3149.patch @@ -1,18 +1,18 @@ diff --git chrome/common/media/component_widevine_cdm_hint_file_linux.cc chrome/common/media/component_widevine_cdm_hint_file_linux.cc -index d529ecfb270c4..2e922ef345f04 100644 +index 60033bb10af50..afb0d23c07a34 100644 --- chrome/common/media/component_widevine_cdm_hint_file_linux.cc +++ chrome/common/media/component_widevine_cdm_hint_file_linux.cc -@@ -16,6 +16,7 @@ - #include "base/path_service.h" +@@ -18,6 +18,7 @@ #include "base/values.h" + #include "base/version.h" #include "chrome/common/chrome_paths.h" +#include "third_party/widevine/cdm/widevine_cdm_common.h" namespace { -@@ -35,14 +36,33 @@ base::FilePath GetPath(const base::Value::Dict& dict) { - return path; - } +@@ -25,12 +26,31 @@ namespace { + const char kPath[] = "Path"; + const char kLastBundledVersion[] = "LastBundledVersion"; +// On Linux the Widevine CDM is loaded into the zygote at startup. When the +// component updater runs sometime later and finds a newer version of the @@ -34,9 +34,17 @@ index d529ecfb270c4..2e922ef345f04 100644 + return true; +} + - } // namespace + // Returns the hint file contents as a Value::Dict. Returned result may be an + // empty dictionary if the hint file does not exist or is formatted incorrectly. + base::Value::Dict GetHintFileContents() { + base::FilePath hint_file_path; +- CHECK(base::PathService::Get(chrome::FILE_COMPONENT_WIDEVINE_CDM_HINT, +- &hint_file_path)); ++ CHECK(GetHintFilePath(&hint_file_path)); + DVLOG(1) << __func__ << " checking " << hint_file_path; - bool UpdateWidevineCdmHintFile(const base::FilePath& cdm_base_path) { + if (!base::PathExists(hint_file_path)) { +@@ -65,8 +85,7 @@ bool UpdateWidevineCdmHintFile(const base::FilePath& cdm_base_path, DCHECK(!cdm_base_path.empty()); base::FilePath hint_file_path; @@ -46,13 +54,3 @@ index d529ecfb270c4..2e922ef345f04 100644 base::Value::Dict dict; dict.Set(kPath, cdm_base_path.value()); -@@ -60,8 +80,7 @@ bool UpdateWidevineCdmHintFile(const base::FilePath& cdm_base_path) { - - base::FilePath GetLatestComponentUpdatedWidevineCdmDirectory() { - base::FilePath hint_file_path; -- CHECK(base::PathService::Get(chrome::FILE_COMPONENT_WIDEVINE_CDM_HINT, -- &hint_file_path)); -+ CHECK(GetHintFilePath(&hint_file_path)); - - if (!base::PathExists(hint_file_path)) { - DVLOG(2) << "CDM hint file at " << hint_file_path << " does not exist."; diff --git a/patch/patches/linux_glib_deprecated_volatile.patch b/patch/patches/linux_glib_deprecated_volatile.patch index d635f6e74..148267c71 100644 --- a/patch/patches/linux_glib_deprecated_volatile.patch +++ b/patch/patches/linux_glib_deprecated_volatile.patch @@ -1,5 +1,5 @@ diff --git ui/accessibility/platform/BUILD.gn ui/accessibility/platform/BUILD.gn -index 181b77f7ca411..79461dc7690ae 100644 +index fc99800e70eb2..23d38bf15155f 100644 --- ui/accessibility/platform/BUILD.gn +++ ui/accessibility/platform/BUILD.gn @@ -290,6 +290,10 @@ component("platform") { diff --git a/patch/patches/linux_printing_context.patch b/patch/patches/linux_printing_context.patch index e84e8e8ae..b40e45439 100644 --- a/patch/patches/linux_printing_context.patch +++ b/patch/patches/linux_printing_context.patch @@ -42,7 +42,7 @@ index 49f0ddab8318e..a3a9cd189fc2f 100644 if (print_dialog_) { // PrintDialogGtk::UpdateSettings() calls InitWithSettings() so settings_ will diff --git ui/linux/linux_ui.cc ui/linux/linux_ui.cc -index 29db798e8b171..f8b9546b90321 100644 +index 3408b6200d17a..5d91e65a2b40f 100644 --- ui/linux/linux_ui.cc +++ ui/linux/linux_ui.cc @@ -18,11 +18,29 @@ namespace ui { @@ -76,12 +76,12 @@ index 29db798e8b171..f8b9546b90321 100644 } diff --git ui/linux/linux_ui.h ui/linux/linux_ui.h -index 69f678a91012f..d518b476002b3 100644 +index b940382678ba7..c2fa9b7303e87 100644 --- ui/linux/linux_ui.h +++ ui/linux/linux_ui.h -@@ -19,6 +19,10 @@ +@@ -20,6 +20,10 @@ #include "printing/buildflags/buildflags.h" - #include "ui/gfx/geometry/rect.h" + #include "ui/display/types/display_config.h" +#if BUILDFLAG(ENABLE_PRINTING) +#include "printing/printing_context_linux.h" // nogncheck @@ -90,9 +90,9 @@ index 69f678a91012f..d518b476002b3 100644 // The main entrypoint into Linux toolkit specific code. GTK/QT code should only // be executed behind this interface. -@@ -92,9 +96,27 @@ inline DisplayConfig::DisplayConfig(DisplayConfig&& other) = default; - inline DisplayConfig& DisplayConfig::operator=(DisplayConfig&& other) = default; - inline DisplayConfig::~DisplayConfig() = default; +@@ -62,9 +66,27 @@ class TextEditCommandAuraLinux; + class WindowButtonOrderObserver; + class WindowFrameProvider; +class COMPONENT_EXPORT(LINUX_UI) PrintingContextLinuxDelegate { + public: @@ -119,7 +119,7 @@ index 69f678a91012f..d518b476002b3 100644 public: // Describes the window management actions that could be taken in response to // a middle click in the non client area. -@@ -161,14 +183,6 @@ class COMPONENT_EXPORT(LINUX_UI) LinuxUi { +@@ -150,14 +172,6 @@ class COMPONENT_EXPORT(LINUX_UI) LinuxUi { // Returns a map of KeyboardEvent code to KeyboardEvent key values. virtual base::flat_map GetKeyboardLayoutMap() = 0; diff --git a/patch/patches/mac_platform_style_bubble_893292.patch b/patch/patches/mac_platform_style_bubble_893292.patch index 63925dd0d..4078d44f5 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 1ea1910a5bfe1..c73433d1ad893 100644 +index ba0ed16724051..3e8c2990afdac 100644 --- chrome/browser/ui/views/profiles/profile_menu_view_base.cc +++ chrome/browser/ui/views/profiles/profile_menu_view_base.cc -@@ -1042,8 +1042,8 @@ int ProfileMenuViewBase::GetMaxHeight() const { +@@ -1072,8 +1072,8 @@ int ProfileMenuViewBase::GetMaxHeight() const { ->GetDisplayNearestPoint(anchor_rect.CenterPoint()) .work_area(); int available_space = screen_space.bottom() - anchor_rect.bottom(); @@ -14,7 +14,7 @@ index 1ea1910a5bfe1..c73433d1ad893 100644 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 fd780b3e97e84..9f915cc9c4615 100644 +index ace1e3b9864be..869d1f51700a1 100644 --- ui/views/style/platform_style_mac.mm +++ ui/views/style/platform_style_mac.mm @@ -43,7 +43,7 @@ const bool PlatformStyle::kTableViewSupportsKeyboardNavigationByCell = false; diff --git a/patch/patches/message_loop.patch b/patch/patches/message_loop.patch index 8bf834098..8a53eee67 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 c30066f515f63..450c67882ea91 100644 +index 2f07a9603504c..c8d0aece94dc5 100644 --- base/message_loop/message_pump_win.cc +++ base/message_loop/message_pump_win.cc @@ -2,6 +2,7 @@ @@ -10,7 +10,7 @@ index c30066f515f63..450c67882ea91 100644 #include "base/message_loop/message_pump_win.h" #include -@@ -496,7 +497,17 @@ bool MessagePumpForUI::ProcessNextWindowsMessage() { +@@ -501,7 +502,17 @@ bool MessagePumpForUI::ProcessNextWindowsMessage() { ctx.event()->set_chrome_message_pump(); msg_pump_data->set_sent_messages_in_queue(more_work_is_plausible); }); diff --git a/patch/patches/mime_handler_view_guest_1565_2727.patch b/patch/patches/mime_handler_view_guest_1565_2727.patch index e952a3e2f..86409ae39 100644 --- a/patch/patches/mime_handler_view_guest_1565_2727.patch +++ b/patch/patches/mime_handler_view_guest_1565_2727.patch @@ -1,8 +1,8 @@ diff --git content/browser/web_contents/web_contents_view.h content/browser/web_contents/web_contents_view.h -index 66c632b1818a6..fca4dcbb4a38b 100644 +index e0887cdb49c7c..d2bf0571793cf 100644 --- content/browser/web_contents/web_contents_view.h +++ content/browser/web_contents/web_contents_view.h -@@ -25,7 +25,7 @@ struct DropData; +@@ -26,7 +26,7 @@ struct DropData; // The `WebContentsView` is an interface that is implemented by the platform- // dependent web contents views. The `WebContents` uses this interface to talk // to them. @@ -12,10 +12,10 @@ index 66c632b1818a6..fca4dcbb4a38b 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 02f204564a67e..2500ebbc92cb3 100644 +index 39def4c0d8ad5..6e856ae9bcd96 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 -@@ -202,6 +202,8 @@ void MimeHandlerViewGuest::CreateWebContents( +@@ -203,6 +203,8 @@ void MimeHandlerViewGuest::CreateWebContents( WebContents::CreateParams params(browser_context(), guest_site_instance.get()); params.guest_delegate = this; @@ -24,7 +24,7 @@ index 02f204564a67e..2500ebbc92cb3 100644 std::move(callback).Run(std::move(owned_this), WebContents::CreateWithSessionStorage( params, owner_web_contents() -@@ -210,6 +212,10 @@ void MimeHandlerViewGuest::CreateWebContents( +@@ -211,6 +213,10 @@ void MimeHandlerViewGuest::CreateWebContents( } void MimeHandlerViewGuest::DidAttachToEmbedder() { @@ -35,7 +35,7 @@ index 02f204564a67e..2500ebbc92cb3 100644 DCHECK(stream_->handler_url().SchemeIs(extensions::kExtensionScheme)); GetController().LoadURL(stream_->handler_url(), content::Referrer(), ui::PAGE_TRANSITION_AUTO_TOPLEVEL, std::string()); -@@ -480,6 +486,14 @@ void MimeHandlerViewGuest::DidFinishNavigation( +@@ -481,6 +487,14 @@ void MimeHandlerViewGuest::DidFinishNavigation( } } @@ -51,7 +51,7 @@ index 02f204564a67e..2500ebbc92cb3 100644 mojo::PendingReceiver receiver) { if (!pending_before_unload_control_) diff --git extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h -index a5066da1a593c..880fc3c87e48f 100644 +index 5709e978f2d8e..c1f1720a31e1a 100644 --- extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h +++ extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h @@ -195,10 +195,12 @@ class MimeHandlerViewGuest diff --git a/patch/patches/net_cookie_flags.patch b/patch/patches/net_cookie_flags.patch index 8abfe3fe4..8faa63367 100644 --- a/patch/patches/net_cookie_flags.patch +++ b/patch/patches/net_cookie_flags.patch @@ -10,10 +10,10 @@ index 0e563dbb253ca..891b2bbc3785c 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 6eeea59318bbc..6e46770ca0f74 100644 +index d007b8623e02c..258f077803edd 100644 --- net/url_request/url_request_http_job.cc +++ net/url_request/url_request_http_job.cc -@@ -1850,7 +1850,8 @@ bool URLRequestHttpJob::ShouldAddCookieHeader() const { +@@ -1884,7 +1884,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,7 +24,7 @@ index 6eeea59318bbc..6e46770ca0f74 100644 bool URLRequestHttpJob::ShouldRecordPartitionedCookieUsage() const { diff --git services/network/public/cpp/resource_request.cc services/network/public/cpp/resource_request.cc -index 39c94526163d0..9e7bdd53e91be 100644 +index 435ded6852c97..9a430ec4c5695 100644 --- services/network/public/cpp/resource_request.cc +++ services/network/public/cpp/resource_request.cc @@ -312,7 +312,8 @@ bool ResourceRequest::EqualsForTesting(const ResourceRequest& request) const { diff --git a/patch/patches/net_test_server_3798752.patch b/patch/patches/net_test_server_3798752.patch index bc6633a41..f7f08413d 100644 --- a/patch/patches/net_test_server_3798752.patch +++ b/patch/patches/net_test_server_3798752.patch @@ -1,5 +1,5 @@ diff --git net/test/embedded_test_server/embedded_test_server.cc net/test/embedded_test_server/embedded_test_server.cc -index 3167953b790e5..bc328c0a1cedc 100644 +index 0f50e1fb328cf..5f610172279ac 100644 --- net/test/embedded_test_server/embedded_test_server.cc +++ net/test/embedded_test_server/embedded_test_server.cc @@ -1015,7 +1015,7 @@ bool EmbeddedTestServer::PostTaskToIOThreadAndWait(base::OnceClosure closure) { diff --git a/patch/patches/net_url_request_3596.patch b/patch/patches/net_url_request_3596.patch index 22ab04e83..10eff4942 100644 --- a/patch/patches/net_url_request_3596.patch +++ b/patch/patches/net_url_request_3596.patch @@ -1,5 +1,5 @@ diff --git net/url_request/url_request_job.cc net/url_request/url_request_job.cc -index dc6605dc280d3..86c4633cf7240 100644 +index e221b9dce73ec..ab566481896ba 100644 --- net/url_request/url_request_job.cc +++ net/url_request/url_request_job.cc @@ -34,6 +34,7 @@ diff --git a/patch/patches/osr_fling_2745.patch b/patch/patches/osr_fling_2745.patch index 96c379d14..48e06fcbc 100644 --- a/patch/patches/osr_fling_2745.patch +++ b/patch/patches/osr_fling_2745.patch @@ -13,10 +13,10 @@ index 431df5d50debe..0fcc9ea8fbb1a 100644 return nullptr; } diff --git content/browser/renderer_host/render_widget_host_impl.cc content/browser/renderer_host/render_widget_host_impl.cc -index b62442d2213a7..e7275588c01ce 100644 +index d07266a32e786..5a0baf4aa9c6d 100644 --- content/browser/renderer_host/render_widget_host_impl.cc +++ content/browser/renderer_host/render_widget_host_impl.cc -@@ -3305,6 +3305,11 @@ void RenderWidgetHostImpl::OnInvalidInputEventSource() { +@@ -3313,6 +3313,11 @@ void RenderWidgetHostImpl::OnInvalidInputEventSource() { GetProcess(), bad_message::INPUT_ROUTER_INVALID_EVENT_SOURCE); } @@ -29,10 +29,10 @@ index b62442d2213a7..e7275588c01ce 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 709246523b417..1245082f6016c 100644 +index 8e48429dbce98..daf8386513031 100644 --- content/browser/renderer_host/render_widget_host_impl.h +++ content/browser/renderer_host/render_widget_host_impl.h -@@ -808,6 +808,7 @@ class CONTENT_EXPORT RenderWidgetHostImpl +@@ -811,6 +811,7 @@ class CONTENT_EXPORT RenderWidgetHostImpl void ProgressFlingIfNeeded(base::TimeTicks current_time); void StopFling(); diff --git a/patch/patches/print_preview_123.patch b/patch/patches/print_preview_123.patch index aaf910606..bc0434811 100644 --- a/patch/patches/print_preview_123.patch +++ b/patch/patches/print_preview_123.patch @@ -34,7 +34,7 @@ index dc474d9ca5c3a..764ae7c3ddce2 100644 } diff --git chrome/browser/printing/print_preview_dialog_controller.cc chrome/browser/printing/print_preview_dialog_controller.cc -index a462e526f98a4..8b142f9e5d22a 100644 +index 54efe456fd86e..a685c4e0722cc 100644 --- chrome/browser/printing/print_preview_dialog_controller.cc +++ chrome/browser/printing/print_preview_dialog_controller.cc @@ -16,6 +16,7 @@ @@ -84,7 +84,7 @@ index c85248ab0d0a0..05b3454c0356d 100644 } diff --git chrome/browser/ui/webui/print_preview/print_preview_ui.cc chrome/browser/ui/webui/print_preview/print_preview_ui.cc -index ef26355bd31b8..6b00ae03e6ac8 100644 +index b02c2e2e9b050..de501fd2a07f9 100644 --- chrome/browser/ui/webui/print_preview/print_preview_ui.cc +++ chrome/browser/ui/webui/print_preview/print_preview_ui.cc @@ -25,6 +25,7 @@ diff --git a/patch/patches/renderer_host_1070713.patch b/patch/patches/renderer_host_1070713.patch index 45d8b0e6e..77a2270c0 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 caa732b8f72d3..ccddb59643734 100644 +index 78beefbdd4df3..de940aca40020 100644 --- content/browser/renderer_host/render_view_host_impl.cc +++ content/browser/renderer_host/render_view_host_impl.cc @@ -709,6 +709,8 @@ bool RenderViewHostImpl::IsRenderViewLive() const { diff --git a/patch/patches/resource_bundle_2512.patch b/patch/patches/resource_bundle_2512.patch index 5424d9715..436ec8b84 100644 --- a/patch/patches/resource_bundle_2512.patch +++ b/patch/patches/resource_bundle_2512.patch @@ -1,5 +1,5 @@ diff --git ui/base/resource/resource_bundle.cc ui/base/resource/resource_bundle.cc -index 6da2427c7e24a..a642c054fd1f3 100644 +index 1b34e73d28726..0b9c4b8006355 100644 --- ui/base/resource/resource_bundle.cc +++ ui/base/resource/resource_bundle.cc @@ -944,6 +944,12 @@ ResourceBundle::ResourceBundle(Delegate* delegate) @@ -28,7 +28,7 @@ index 6da2427c7e24a..a642c054fd1f3 100644 void ResourceBundle::InitSharedInstance(Delegate* delegate) { DCHECK(g_shared_instance_ == nullptr) << "ResourceBundle initialized twice"; diff --git ui/base/resource/resource_bundle.h ui/base/resource/resource_bundle.h -index c24f5faf14d3f..96d4f6be11588 100644 +index e5cd807134905..6d563565dca5e 100644 --- ui/base/resource/resource_bundle.h +++ ui/base/resource/resource_bundle.h @@ -219,6 +219,11 @@ class COMPONENT_EXPORT(UI_BASE) ResourceBundle { diff --git a/patch/patches/rfh_navigation_4829483.patch b/patch/patches/rfh_navigation_4829483.patch index a709d50ca..d405e6ce2 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 9b37b8a18c5c0..048e70377224c 100644 +index 04988fb23c26a..8d41d7b90f420 100644 --- content/browser/renderer_host/render_frame_host_impl.cc +++ content/browser/renderer_host/render_frame_host_impl.cc -@@ -10278,6 +10278,7 @@ void RenderFrameHostImpl::CommitNavigation( +@@ -10351,6 +10351,7 @@ void RenderFrameHostImpl::CommitNavigation( auto browser_calc_origin_to_commit = navigation_request->GetOriginToCommitWithDebugInfo(); if (!process_lock.is_error_page() && !is_mhtml_subframe && diff --git a/patch/patches/rwh_background_color_1984.patch b/patch/patches/rwh_background_color_1984.patch index 36a496f25..9e6437576 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 7942ee12c003c..a742da36eb1a6 100644 +index a1192dc007ae5..245b62a91f315 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 7942ee12c003c..a742da36eb1a6 100644 #include #include -@@ -725,10 +726,12 @@ gfx::Rect RenderWidgetHostViewAura::GetViewBounds() { +@@ -718,10 +719,12 @@ gfx::Rect RenderWidgetHostViewAura::GetViewBounds() { void RenderWidgetHostViewAura::UpdateBackgroundColor() { DCHECK(GetBackgroundColor()); @@ -27,7 +27,7 @@ index 7942ee12c003c..a742da36eb1a6 100644 } #if BUILDFLAG(IS_WIN) -@@ -2353,6 +2356,16 @@ void RenderWidgetHostViewAura::CreateAuraWindow(aura::client::WindowType type) { +@@ -2339,6 +2342,16 @@ void RenderWidgetHostViewAura::CreateAuraWindow(aura::client::WindowType type) { window_->layer()->SetColor(GetBackgroundColor() ? *GetBackgroundColor() : SK_ColorWHITE); UpdateFrameSinkIdRegistration(); diff --git a/patch/patches/screen_1443650.patch b/patch/patches/screen_1443650.patch index 1c576bf04..a1ce614eb 100644 --- a/patch/patches/screen_1443650.patch +++ b/patch/patches/screen_1443650.patch @@ -19,7 +19,7 @@ index 22747ebcf31c0..8fba5da85a656 100644 bool Screen::GetDisplayWithDisplayId(int64_t display_id, diff --git ui/display/win/screen_win.cc ui/display/win/screen_win.cc -index 6b6189a124e3f..02fc6c885d11d 100644 +index bbdd9a1151390..f9269a871d5e5 100644 --- ui/display/win/screen_win.cc +++ ui/display/win/screen_win.cc @@ -534,7 +534,7 @@ gfx::Rect ScreenWin::ScreenToDIPRect(HWND hwnd, const gfx::Rect& pixel_bounds) { diff --git a/patch/patches/services_network_2622.patch b/patch/patches/services_network_2622.patch index ed5f98998..edbaf781b 100644 --- a/patch/patches/services_network_2622.patch +++ b/patch/patches/services_network_2622.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc -index 101044d12aa89..795fb5f2d0738 100644 +index 6c5a89d8bc1d4..8ddebf1d72f9b 100644 --- chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc +++ chrome/browser/enterprise/connectors/analysis/content_analysis_delegate.cc @@ -23,6 +23,7 @@ @@ -10,7 +10,7 @@ index 101044d12aa89..795fb5f2d0738 100644 #include "chrome/browser/browser_process.h" #include "chrome/browser/enterprise/connectors/analysis/analysis_settings.h" #include "chrome/browser/enterprise/connectors/analysis/content_analysis_dialog.h" -@@ -265,6 +266,9 @@ bool ContentAnalysisDelegate::IsEnabled(Profile* profile, +@@ -317,6 +318,9 @@ bool ContentAnalysisDelegate::IsEnabled(Profile* profile, GURL url, Data* data, AnalysisConnector connector) { @@ -38,7 +38,7 @@ index 0509dabf8f421..35a0046a03c6c 100644 base::RepeatingCallback browser_context_getter = base::BindRepeating( diff --git chrome/browser/net/profile_network_context_service.cc chrome/browser/net/profile_network_context_service.cc -index 62d54608cfe39..f6edd65789aa2 100644 +index 0525b84f86b29..22d3108d5c7a9 100644 --- chrome/browser/net/profile_network_context_service.cc +++ chrome/browser/net/profile_network_context_service.cc @@ -23,6 +23,7 @@ @@ -161,10 +161,10 @@ index 77522f65b7b6e..51cc2d60d4b8d 100644 GetInstance()->GetServiceForBrowserContext(profile, true)); } diff --git net/cookies/cookie_monster.cc net/cookies/cookie_monster.cc -index 643279afbb341..aadd242e17cd0 100644 +index 545288009f1b0..988a882733c0d 100644 --- net/cookies/cookie_monster.cc +++ net/cookies/cookie_monster.cc -@@ -552,6 +552,25 @@ void CookieMonster::SetCookieableSchemes( +@@ -554,6 +554,25 @@ void CookieMonster::SetCookieableSchemes( MaybeRunCookieCallback(std::move(callback), true); } @@ -191,7 +191,7 @@ index 643279afbb341..aadd242e17cd0 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 6871ed30edce4..594c0c5b5f4d5 100644 +index e8202c955a8b3..9cef705807a1f 100644 --- net/cookies/cookie_monster.h +++ net/cookies/cookie_monster.h @@ -208,6 +208,8 @@ class NET_EXPORT CookieMonster : public CookieStore { @@ -200,11 +200,11 @@ index 6871ed30edce4..594c0c5b5f4d5 100644 SetCookieableSchemesCallback callback) override; + void AddCookieableSchemes(const std::vector& schemes, + SetCookieableSchemesCallback callback) override; - absl::optional SiteHasCookieInOtherPartition( + std::optional SiteHasCookieInOtherPartition( const net::SchemefulSite& site, - const absl::optional& partition_key) const override; + const std::optional& partition_key) const override; diff --git net/cookies/cookie_store.h net/cookies/cookie_store.h -index 61fd008fc067e..73909be088278 100644 +index 3f0be99e0e145..0462ebbe9bedc 100644 --- net/cookies/cookie_store.h +++ net/cookies/cookie_store.h @@ -163,6 +163,11 @@ class NET_EXPORT CookieStore { @@ -220,7 +220,7 @@ index 61fd008fc067e..73909be088278 100644 // reset to null. const CookieAccessDelegate* cookie_access_delegate() const { diff --git services/network/cookie_manager.cc services/network/cookie_manager.cc -index e5e410525d8a6..ca1225642ef64 100644 +index d0f230b581c8f..77b3551cc3fb5 100644 --- services/network/cookie_manager.cc +++ services/network/cookie_manager.cc @@ -310,14 +310,9 @@ void CookieManager::AllowFileSchemeCookies( @@ -242,10 +242,10 @@ index e5e410525d8a6..ca1225642ef64 100644 void CookieManager::SetForceKeepSessionState() { diff --git services/network/network_context.cc services/network/network_context.cc -index 4547a0dc69562..d03e771ee52b8 100644 +index c8fd97e2bb411..5682259085232 100644 --- services/network/network_context.cc +++ services/network/network_context.cc -@@ -2385,16 +2385,20 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( +@@ -2401,16 +2401,20 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( network_service_->network_quality_estimator()); } @@ -274,10 +274,10 @@ index 4547a0dc69562..d03e771ee52b8 100644 base::FeatureList::IsEnabled(features::kFledgePst)) { trust_token_store_ = std::make_unique(); diff --git services/network/public/mojom/network_context.mojom services/network/public/mojom/network_context.mojom -index 3096bd7d6719b..1c383acba0207 100644 +index 3240e5b9a1a61..27e086758b6e5 100644 --- services/network/public/mojom/network_context.mojom +++ services/network/public/mojom/network_context.mojom -@@ -358,6 +358,9 @@ struct NetworkContextParams { +@@ -359,6 +359,9 @@ struct NetworkContextParams { // cookies. Otherwise it should be false. bool persist_session_cookies = false; diff --git a/patch/patches/services_network_2718.patch b/patch/patches/services_network_2718.patch index 04f60a9b5..12a8ae48c 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 a1db5b377647e..3442371165570 100644 +index fe8318f3c4f6f..9c3a9cb356b0f 100644 --- content/browser/storage_partition_impl.cc +++ content/browser/storage_partition_impl.cc -@@ -3345,8 +3345,12 @@ void StoragePartitionImpl::GetQuotaSettings( +@@ -3267,8 +3267,12 @@ void StoragePartitionImpl::GetQuotaSettings( return; } @@ -16,7 +16,7 @@ index a1db5b377647e..3442371165570 100644 storage::GetDefaultDeviceInfoHelper(), std::move(callback)); } -@@ -3356,9 +3360,12 @@ void StoragePartitionImpl::InitNetworkContext() { +@@ -3278,9 +3282,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 3a4ca5ba2..31a4f989e 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 8df4e98500b1e..f649d016e1e5a 100644 +index 112c061004744..ee0ea41872823 100644 --- ui/views/controls/webview/webview.cc +++ ui/views/controls/webview/webview.cc @@ -159,6 +159,10 @@ void WebView::EnableSizingFromWebContents(const gfx::Size& min_size, @@ -14,7 +14,7 @@ index 8df4e98500b1e..f649d016e1e5a 100644 if (crashed_overlay_view_.view() == crashed_overlay_view) { return; diff --git ui/views/controls/webview/webview.h ui/views/controls/webview/webview.h -index 3b829d69e4254..6d58b64600c58 100644 +index 23ddefe2a75b7..5a7eea658ed28 100644 --- ui/views/controls/webview/webview.h +++ ui/views/controls/webview/webview.h @@ -93,6 +93,10 @@ class WEBVIEW_EXPORT WebView : public View, diff --git a/patch/patches/storage_incognito_2289.patch b/patch/patches/storage_incognito_2289.patch index 5608c35be..4beb437fe 100644 --- a/patch/patches/storage_incognito_2289.patch +++ b/patch/patches/storage_incognito_2289.patch @@ -58,10 +58,10 @@ index e82cdd66a2d5c..1816b2fe54ff5 100644 // static diff --git storage/browser/database/database_tracker.cc storage/browser/database/database_tracker.cc -index 2926db89bac41..8710578eee554 100644 +index 348245d4da651..81bb4b0671f8c 100644 --- storage/browser/database/database_tracker.cc +++ storage/browser/database/database_tracker.cc -@@ -569,7 +569,7 @@ bool DatabaseTracker::LazyInit() { +@@ -568,7 +568,7 @@ bool DatabaseTracker::LazyInit() { databases_table_ = std::make_unique(db_.get()); meta_table_ = std::make_unique(); diff --git a/patch/patches/trace_event.patch b/patch/patches/trace_event.patch index f789a5f7e..7521b9199 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 f82e41ee24e1d..b0b64ec7c249c 100644 +index 5f6efb0e93bce..626830a66b73c 100644 --- base/trace_event/builtin_categories.h +++ base/trace_event/builtin_categories.h @@ -65,6 +65,8 @@ diff --git a/patch/patches/ui_dragdrop_355390.patch b/patch/patches/ui_dragdrop_355390.patch index 8fc389480..3e599fc0d 100644 --- a/patch/patches/ui_dragdrop_355390.patch +++ b/patch/patches/ui_dragdrop_355390.patch @@ -1,5 +1,5 @@ diff --git ui/base/x/x11_os_exchange_data_provider.cc ui/base/x/x11_os_exchange_data_provider.cc -index 4a0397e34c1d3..af8be5329b5ff 100644 +index 8f7e26c6bfcfa..daf9e5e003f6a 100644 --- ui/base/x/x11_os_exchange_data_provider.cc +++ ui/base/x/x11_os_exchange_data_provider.cc @@ -163,7 +163,8 @@ void XOSExchangeDataProvider::SetURL(const GURL& url, diff --git a/patch/patches/views_1749_2102_3330.patch b/patch/patches/views_1749_2102_3330.patch index f69c66e39..f55b715bf 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 bd539436f7204..7fa48b6b3dba0 100644 +index 0e771ce8b219c..d1826cc2366dd 100644 --- chrome/browser/ui/views/toolbar/app_menu.cc +++ chrome/browser/ui/views/toolbar/app_menu.cc -@@ -999,7 +999,9 @@ void AppMenu::RunMenu(views::MenuButtonController* host) { +@@ -1004,7 +1004,9 @@ void AppMenu::RunMenu(views::MenuButtonController* host) { host->button()->GetWidget(), host, host->button()->GetAnchorBoundsInScreen(), views::MenuAnchorPosition::kTopRight, ui::MENU_SOURCE_NONE, @@ -14,7 +14,7 @@ index bd539436f7204..7fa48b6b3dba0 100644 } diff --git ui/base/models/menu_model.h ui/base/models/menu_model.h -index a6d70c71a1b3a..1b628f5284409 100644 +index fb795f76d3616..6e36a4c1e29da 100644 --- ui/base/models/menu_model.h +++ ui/base/models/menu_model.h @@ -17,8 +17,11 @@ @@ -58,10 +58,10 @@ index a6d70c71a1b3a..1b628f5284409 100644 virtual void MenuWillShow() {} diff --git ui/gfx/render_text.cc ui/gfx/render_text.cc -index cf08dd7f0a3ad..8366b2e4104d0 100644 +index 6f5682607d98f..88c4c445460a4 100644 --- ui/gfx/render_text.cc +++ ui/gfx/render_text.cc -@@ -671,6 +671,14 @@ void RenderText::SetWhitespaceElision(absl::optional whitespace_elision) { +@@ -671,6 +671,14 @@ void RenderText::SetWhitespaceElision(std::optional whitespace_elision) { } } @@ -97,12 +97,12 @@ index cf08dd7f0a3ad..8366b2e4104d0 100644 } diff --git ui/gfx/render_text.h ui/gfx/render_text.h -index 5b3eda36fa332..d307017905c7d 100644 +index 9bc3bd4e32283..0daf2c41cbb04 100644 --- ui/gfx/render_text.h +++ ui/gfx/render_text.h -@@ -347,6 +347,10 @@ class GFX_EXPORT RenderText { - return whitespace_elision_; - } +@@ -345,6 +345,10 @@ class GFX_EXPORT RenderText { + void SetWhitespaceElision(std::optional elide_whitespace); + std::optional whitespace_elision() const { return whitespace_elision_; } + // Get or set the flags that control display of accelerator characters. + void SetDrawStringsFlags(int flags); @@ -111,7 +111,7 @@ index 5b3eda36fa332..d307017905c7d 100644 const Rect& display_rect() const { return display_rect_; } void SetDisplayRect(const Rect& r); -@@ -1060,6 +1064,8 @@ class GFX_EXPORT RenderText { +@@ -1058,6 +1062,8 @@ class GFX_EXPORT RenderText { // Tell whether or not the |layout_text_| needs an update or is up to date. mutable bool layout_text_up_to_date_ = false; @@ -121,7 +121,7 @@ index 5b3eda36fa332..d307017905c7d 100644 } // namespace gfx diff --git ui/views/animation/ink_drop_host.h ui/views/animation/ink_drop_host.h -index c1c0631071a11..aa2c01ebce43e 100644 +index cbc1a0e7833fe..da451800b1a56 100644 --- ui/views/animation/ink_drop_host.h +++ ui/views/animation/ink_drop_host.h @@ -194,6 +194,8 @@ class VIEWS_EXPORT InkDropHost { @@ -134,10 +134,10 @@ index c1c0631071a11..aa2c01ebce43e 100644 friend class test::InkDropHostTestApi; diff --git ui/views/controls/button/label_button.cc ui/views/controls/button/label_button.cc -index 0181ca73b3545..5a36c3b7a0a22 100644 +index 30555a9c9c2a6..399eabb548184 100644 --- ui/views/controls/button/label_button.cc +++ ui/views/controls/button/label_button.cc -@@ -579,6 +579,12 @@ void LabelButton::OnThemeChanged() { +@@ -578,6 +578,12 @@ void LabelButton::OnThemeChanged() { SchedulePaint(); } @@ -151,10 +151,10 @@ index 0181ca73b3545..5a36c3b7a0a22 100644 Button::StateChanged(old_state); ResetLabelEnabledColor(); diff --git ui/views/controls/button/label_button.h ui/views/controls/button/label_button.h -index d5f56eb7b0bbf..65c8572b3f6d8 100644 +index 305fdcb678cf8..ce70df19c5eac 100644 --- ui/views/controls/button/label_button.h +++ ui/views/controls/button/label_button.h -@@ -173,6 +173,9 @@ class VIEWS_EXPORT LabelButton : public Button, public NativeThemeDelegate { +@@ -172,6 +172,9 @@ class VIEWS_EXPORT LabelButton : public Button, public NativeThemeDelegate { // widget, and the parent of the containing widget. ButtonState GetVisualState() const; @@ -165,7 +165,7 @@ index d5f56eb7b0bbf..65c8572b3f6d8 100644 LabelButtonImageContainer* image_container() { return image_container_.get(); diff --git ui/views/controls/label.cc ui/views/controls/label.cc -index bee3e8a14eb85..6246560284fe8 100644 +index 7c65e26445a8d..0c6ca927d3899 100644 --- ui/views/controls/label.cc +++ ui/views/controls/label.cc @@ -51,12 +51,29 @@ enum LabelPropertyKey { @@ -232,7 +232,7 @@ index bee3e8a14eb85..6246560284fe8 100644 } diff --git ui/views/controls/label.h ui/views/controls/label.h -index c51219fabae91..7a84f2bb266d8 100644 +index 273805cdee382..d3cfd2d5fe3a9 100644 --- ui/views/controls/label.h +++ ui/views/controls/label.h @@ -241,6 +241,10 @@ class VIEWS_EXPORT Label : public View, @@ -255,7 +255,7 @@ index c51219fabae91..7a84f2bb266d8 100644 std::unique_ptr selection_controller_; diff --git ui/views/controls/menu/menu_controller.cc ui/views/controls/menu/menu_controller.cc -index 50fd3ae4ff13e..12961bf3e8316 100644 +index 8428a296547e0..040f74170d20c 100644 --- ui/views/controls/menu/menu_controller.cc +++ ui/views/controls/menu/menu_controller.cc @@ -566,7 +566,8 @@ void MenuController::Run(Widget* parent, @@ -284,7 +284,7 @@ index 50fd3ae4ff13e..12961bf3e8316 100644 if (item->GetParentMenuItem()) { params.context = item->GetWidget(); // (crbug.com/1414232) The item to be open is a submenu. Make sure -@@ -2918,8 +2921,13 @@ MenuItemView* MenuController::FindInitialSelectableMenuItem( +@@ -2915,8 +2918,13 @@ MenuItemView* MenuController::FindInitialSelectableMenuItem( void MenuController::OpenSubmenuChangeSelectionIfCan() { MenuItemView* item = pending_state_.item; @@ -299,7 +299,7 @@ index 50fd3ae4ff13e..12961bf3e8316 100644 // Show the sub-menu. SetSelection(item, SELECTION_OPEN_SUBMENU | SELECTION_UPDATE_IMMEDIATELY); -@@ -2939,8 +2947,10 @@ void MenuController::OpenSubmenuChangeSelectionIfCan() { +@@ -2936,8 +2944,10 @@ void MenuController::OpenSubmenuChangeSelectionIfCan() { void MenuController::CloseSubmenu() { MenuItemView* item = state_.item; DCHECK(item); @@ -312,7 +312,7 @@ index 50fd3ae4ff13e..12961bf3e8316 100644 SetSelection(item, SELECTION_UPDATE_IMMEDIATELY); else if (item->GetParentMenuItem()->GetParentMenuItem()) diff --git ui/views/controls/menu/menu_controller.h ui/views/controls/menu/menu_controller.h -index 55d0bb090d221..3cf3054e4ad7b 100644 +index 43668ea5b4fcf..6e7d397a3b82f 100644 --- ui/views/controls/menu/menu_controller.h +++ ui/views/controls/menu/menu_controller.h @@ -139,7 +139,9 @@ class VIEWS_EXPORT MenuController @@ -336,12 +336,12 @@ index 55d0bb090d221..3cf3054e4ad7b 100644 bool possible_drag_ = false; diff --git ui/views/controls/menu/menu_delegate.h ui/views/controls/menu/menu_delegate.h -index b8fa1c116ebcd..015f15ed72385 100644 +index 0623d151ddd3e..243e8c573e474 100644 --- ui/views/controls/menu/menu_delegate.h +++ ui/views/controls/menu/menu_delegate.h @@ -73,6 +73,22 @@ class VIEWS_EXPORT MenuDelegate { virtual const gfx::FontList* GetLabelFontList(int id) const; - virtual absl::optional GetLabelColor(int id) const; + virtual std::optional GetLabelColor(int id) const; + // Override the text color of a given menu item dependent on the |command_id| + // and its |is_hovered| state. |is_minor| will be true for accelerator text. @@ -375,19 +375,19 @@ index b8fa1c116ebcd..015f15ed72385 100644 virtual int GetMaxWidthForMenu(MenuItemView* menu); diff --git ui/views/controls/menu/menu_host.cc ui/views/controls/menu/menu_host.cc -index 6e457f76955ce..041f1ead63339 100644 +index 305d9547abb5c..d9e0b6e698158 100644 --- ui/views/controls/menu/menu_host.cc +++ ui/views/controls/menu/menu_host.cc -@@ -141,6 +141,8 @@ void MenuHost::InitMenuHost(const InitParams& init_params) { - : gfx::NativeWindow(); - params.bounds = init_params.bounds; +@@ -146,6 +146,8 @@ void MenuHost::InitMenuHost(const InitParams& init_params) { + submenu_->GetScrollViewContainer()->outside_border_insets(); + #endif + params.parent_widget = init_params.parent_widget; + #if defined(USE_AURA) - // TODO(msisov): remove kMenutype once positioning of anchored windows - // finally migrates to a new path. -@@ -152,7 +154,8 @@ void MenuHost::InitMenuHost(const InitParams& init_params) { + params.init_properties_container.SetProperty(aura::client::kOwnedWindowAnchor, + init_params.owned_window_anchor); +@@ -153,7 +155,8 @@ void MenuHost::InitMenuHost(const InitParams& init_params) { // If MenuHost has no parent widget, it needs to be marked // Activatable, so that calling Show in ShowMenuHost will // get keyboard focus. @@ -398,10 +398,10 @@ index 6e457f76955ce..041f1ead63339 100644 #if BUILDFLAG(IS_WIN) diff --git ui/views/controls/menu/menu_host.h ui/views/controls/menu/menu_host.h -index aafbdb2535951..8a8e78be4a649 100644 +index 7e92e72c01d62..e3e1fe357a635 100644 --- ui/views/controls/menu/menu_host.h +++ ui/views/controls/menu/menu_host.h -@@ -55,6 +55,8 @@ class MenuHost : public Widget, public WidgetObserver { +@@ -53,6 +53,8 @@ class MenuHost : public Widget, public WidgetObserver { // Additional information that helps to position anchored windows in such // backends as Wayland. ui::OwnedWindowAnchor owned_window_anchor; @@ -411,7 +411,7 @@ index aafbdb2535951..8a8e78be4a649 100644 explicit MenuHost(SubmenuView* submenu); diff --git ui/views/controls/menu/menu_item_view.cc ui/views/controls/menu/menu_item_view.cc -index 372d0ce15587d..bbb7aec20c5e4 100644 +index fea71cd9602a1..d5aaa97716310 100644 --- ui/views/controls/menu/menu_item_view.cc +++ ui/views/controls/menu/menu_item_view.cc @@ -1072,6 +1072,15 @@ void MenuItemView::PaintBackground(gfx::Canvas* canvas, @@ -445,7 +445,7 @@ index 372d0ce15587d..bbb7aec20c5e4 100644 // use the default color. if (!paint_as_selected && foreground_color_id_.has_value()) { diff --git ui/views/controls/menu/menu_model_adapter.cc ui/views/controls/menu/menu_model_adapter.cc -index 7e8ea9764caf3..0f407cd4a129c 100644 +index 1109f107fa8c1..cb54fdd6071e1 100644 --- ui/views/controls/menu/menu_model_adapter.cc +++ ui/views/controls/menu/menu_model_adapter.cc @@ -4,6 +4,7 @@ @@ -559,7 +559,7 @@ index 30e11b5eee406..0c08301054ffa 100644 void WillHideMenu(MenuItemView* menu) override; void OnMenuClosed(MenuItemView* menu) override; diff --git ui/views/controls/menu/menu_runner.cc ui/views/controls/menu/menu_runner.cc -index d2d1ac027cfca..9f54154189f78 100644 +index 9f746392f6d83..fa37345b6e021 100644 --- ui/views/controls/menu/menu_runner.cc +++ ui/views/controls/menu/menu_runner.cc @@ -42,6 +42,7 @@ void MenuRunner::RunMenuAt( @@ -567,8 +567,8 @@ index d2d1ac027cfca..9f54154189f78 100644 ui::MenuSourceType source_type, gfx::NativeView native_view_for_gestures, + gfx::AcceleratedWidget parent_widget, - absl::optional corners, - absl::optional show_menu_host_duration_histogram) { + std::optional corners, + std::optional show_menu_host_duration_histogram) { // Do not attempt to show the menu if the application is currently shutting @@ -89,7 +90,7 @@ void MenuRunner::RunMenuAt( } @@ -580,7 +580,7 @@ index d2d1ac027cfca..9f54154189f78 100644 } diff --git ui/views/controls/menu/menu_runner.h ui/views/controls/menu/menu_runner.h -index 4531f4586d3dd..de78b3f8ac552 100644 +index c18d1c4d729e1..a73c48c02f1be 100644 --- ui/views/controls/menu/menu_runner.h +++ ui/views/controls/menu/menu_runner.h @@ -157,6 +157,8 @@ class VIEWS_EXPORT MenuRunner { @@ -589,11 +589,11 @@ index 4531f4586d3dd..de78b3f8ac552 100644 gfx::NativeView native_view_for_gestures = gfx::NativeView(), + gfx::AcceleratedWidget parent_widget = + gfx::kNullAcceleratedWidget, - absl::optional corners = absl::nullopt, - absl::optional show_menu_host_duration_histogram = - absl::nullopt); + std::optional corners = std::nullopt, + 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 8100d5e1b4a44..45036c43772ee 100644 +index 0ef0f5ed80dcd..2c2fefdc1b4d2 100644 --- ui/views/controls/menu/menu_runner_impl.cc +++ ui/views/controls/menu/menu_runner_impl.cc @@ -116,6 +116,7 @@ void MenuRunnerImpl::RunMenuAt( @@ -601,8 +601,8 @@ index 8100d5e1b4a44..45036c43772ee 100644 int32_t run_types, gfx::NativeView native_view_for_gestures, + gfx::AcceleratedWidget parent_widget, - absl::optional corners, - absl::optional show_menu_host_duration_histogram) { + std::optional corners, + std::optional show_menu_host_duration_histogram) { closing_event_time_ = base::TimeTicks(); @@ -189,7 +190,7 @@ void MenuRunnerImpl::RunMenuAt( controller->Run(parent, button_controller, menu_.get(), bounds, anchor, @@ -614,7 +614,7 @@ index 8100d5e1b4a44..45036c43772ee 100644 void MenuRunnerImpl::Cancel() { diff --git ui/views/controls/menu/menu_runner_impl.h ui/views/controls/menu/menu_runner_impl.h -index 9b2ac3f475acc..27c0bf33299d9 100644 +index c36540ede44a1..6e60ee28bad17 100644 --- ui/views/controls/menu/menu_runner_impl.h +++ ui/views/controls/menu/menu_runner_impl.h @@ -53,6 +53,7 @@ class VIEWS_EXPORT MenuRunnerImpl : public MenuRunnerImplInterface, @@ -622,11 +622,11 @@ index 9b2ac3f475acc..27c0bf33299d9 100644 int32_t run_types, gfx::NativeView native_view_for_gestures, + gfx::AcceleratedWidget parent_widget, - absl::optional corners = absl::nullopt, - absl::optional show_menu_host_duration_histogram = - absl::nullopt) override; + std::optional corners = std::nullopt, + std::optional show_menu_host_duration_histogram = + std::nullopt) override; diff --git ui/views/controls/menu/menu_runner_impl_adapter.cc ui/views/controls/menu/menu_runner_impl_adapter.cc -index 8ba01786963e4..70d3c3b9363af 100644 +index 35f1542e2162d..702ede49238af 100644 --- ui/views/controls/menu/menu_runner_impl_adapter.cc +++ ui/views/controls/menu/menu_runner_impl_adapter.cc @@ -36,10 +36,11 @@ void MenuRunnerImplAdapter::RunMenuAt( @@ -634,8 +634,8 @@ index 8ba01786963e4..70d3c3b9363af 100644 int32_t types, gfx::NativeView native_view_for_gestures, + gfx::AcceleratedWidget parent_widget, - absl::optional corners, - absl::optional show_menu_host_duration_histogram) { + std::optional corners, + std::optional show_menu_host_duration_histogram) { impl_->RunMenuAt(parent, button_controller, bounds, anchor, types, - native_view_for_gestures); + native_view_for_gestures, parent_widget); @@ -643,43 +643,43 @@ index 8ba01786963e4..70d3c3b9363af 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 8b2e1065dc9e9..c7f20c42a49ea 100644 +index 546818cef0120..8d2bccf62588e 100644 --- ui/views/controls/menu/menu_runner_impl_adapter.h +++ ui/views/controls/menu/menu_runner_impl_adapter.h @@ -44,6 +44,7 @@ class VIEWS_EXPORT MenuRunnerImplAdapter : public MenuRunnerImplInterface { MenuAnchorPosition anchor, int32_t types, gfx::NativeView native_view_for_gestures, -+ gfx::AcceleratedWidget parent_widget, - absl::optional corners = absl::nullopt, - absl::optional show_menu_host_duration_histogram = - absl::nullopt) override; ++ gfx::AcceleratedWidget parent_widget, + std::optional corners = std::nullopt, + std::optional show_menu_host_duration_histogram = + std::nullopt) override; diff --git ui/views/controls/menu/menu_runner_impl_cocoa.h ui/views/controls/menu/menu_runner_impl_cocoa.h -index 0d920c6857f8a..e3156a18dc8bc 100644 +index b0d0334939730..18a5a159ccaf4 100644 --- ui/views/controls/menu/menu_runner_impl_cocoa.h +++ ui/views/controls/menu/menu_runner_impl_cocoa.h -@@ -42,6 +42,7 @@ class VIEWS_EXPORT MenuRunnerImplCocoa : public MenuRunnerImplInterface { - MenuAnchorPosition anchor, - int32_t run_types, - gfx::NativeView native_view_for_gestures, -+ gfx::AcceleratedWidget parent_widget, - absl::optional corners = absl::nullopt, - absl::optional show_menu_host_duration_histogram = - absl::nullopt) override; +@@ -43,6 +43,7 @@ class VIEWS_EXPORT MenuRunnerImplCocoa : public MenuRunnerImplInterface { + MenuAnchorPosition anchor, + 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.mm ui/views/controls/menu/menu_runner_impl_cocoa.mm -index c7b2c7ae0bd9b..fc3c32e6ddb79 100644 +index c585f056973e2..02af08d23a9b9 100644 --- ui/views/controls/menu/menu_runner_impl_cocoa.mm +++ ui/views/controls/menu/menu_runner_impl_cocoa.mm -@@ -190,6 +190,7 @@ void MenuRunnerImplCocoa::RunMenuAt( +@@ -70,6 +70,7 @@ MenuAnchorPosition anchor, int32_t run_types, gfx::NativeView native_view_for_gestures, + gfx::AcceleratedWidget /*parent_widget*/, - absl::optional corners, - absl::optional show_menu_host_duration_histogram) { + std::optional corners, + 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 5db5ddfec3c1f..af0ee5a3ae030 100644 +index 972abab3bf46f..ce6b32b1524e8 100644 --- ui/views/controls/menu/menu_runner_impl_interface.h +++ ui/views/controls/menu/menu_runner_impl_interface.h @@ -47,6 +47,8 @@ class MenuRunnerImplInterface { @@ -688,11 +688,70 @@ index 5db5ddfec3c1f..af0ee5a3ae030 100644 gfx::NativeView native_view_for_gestures, + gfx::AcceleratedWidget parent_widget = + gfx::kNullAcceleratedWidget, - absl::optional corners = absl::nullopt, - absl::optional show_menu_host_duration_histogram = - absl::nullopt) = 0; + std::optional corners = std::nullopt, + std::optional show_menu_host_duration_histogram = + std::nullopt) = 0; +diff --git ui/views/controls/menu/menu_runner_impl_mac.h ui/views/controls/menu/menu_runner_impl_mac.h +index 799e03fd15794..bf6b95fb5797b 100644 +--- ui/views/controls/menu/menu_runner_impl_mac.h ++++ ui/views/controls/menu/menu_runner_impl_mac.h +@@ -40,6 +40,7 @@ class VIEWS_EXPORT MenuRunnerImplMac : public MenuRunnerImplInterface { + MenuAnchorPosition anchor, + int32_t run_types, + gfx::NativeView native_view_for_gestures, ++ gfx::AcceleratedWidget parent_widget, + absl::optional corners, + absl::optional show_menu_host_duration_histogram) override; + void Cancel() override; +diff --git ui/views/controls/menu/menu_runner_impl_mac.mm ui/views/controls/menu/menu_runner_impl_mac.mm +index 0fb98f56e84c8..1e332dc57b62f 100644 +--- ui/views/controls/menu/menu_runner_impl_mac.mm ++++ ui/views/controls/menu/menu_runner_impl_mac.mm +@@ -47,6 +47,7 @@ + MenuAnchorPosition anchor, + int32_t run_types, + gfx::NativeView native_view_for_gestures, ++ gfx::AcceleratedWidget parent_widget, + absl::optional corners, + absl::optional show_menu_host_duration_histogram) { + if (!implementation_) { +@@ -59,8 +60,8 @@ + } + } + implementation_->RunMenuAt(parent, button_controller, bounds, anchor, +- run_types, native_view_for_gestures, corners, +- show_menu_host_duration_histogram); ++ run_types, native_view_for_gestures, parent_widget, ++ corners, show_menu_host_duration_histogram); + } + + void MenuRunnerImplMac::Cancel() { +diff --git ui/views/controls/menu/menu_runner_impl_remote_cocoa.h ui/views/controls/menu/menu_runner_impl_remote_cocoa.h +index fe26b1070d1fc..5907de1e710ea 100644 +--- ui/views/controls/menu/menu_runner_impl_remote_cocoa.h ++++ ui/views/controls/menu/menu_runner_impl_remote_cocoa.h +@@ -58,6 +58,7 @@ class VIEWS_EXPORT MenuRunnerImplRemoteCocoa + MenuAnchorPosition anchor, + int32_t run_types, + gfx::NativeView native_view_for_gestures, ++ gfx::AcceleratedWidget parent_widget, + absl::optional corners, + absl::optional show_menu_host_duration_histogram) override; + void Cancel() override; +diff --git ui/views/controls/menu/menu_runner_impl_remote_cocoa.mm ui/views/controls/menu/menu_runner_impl_remote_cocoa.mm +index 92e105c78dec5..5a46ea93c5322 100644 +--- ui/views/controls/menu/menu_runner_impl_remote_cocoa.mm ++++ ui/views/controls/menu/menu_runner_impl_remote_cocoa.mm +@@ -70,6 +70,7 @@ + MenuAnchorPosition anchor, + int32_t run_types, + gfx::NativeView native_view_for_gestures, ++ gfx::AcceleratedWidget parent_widget, + absl::optional corners, + absl::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 28ec8796ddf48..91e0bb2cbc1d2 100644 +index 49ef1918236ec..f274df414558a 100644 --- ui/views/controls/menu/menu_scroll_view_container.cc +++ ui/views/controls/menu/menu_scroll_view_container.cc @@ -252,6 +252,11 @@ MenuScrollViewContainer::MenuScrollViewContainer(SubmenuView* content_view) @@ -708,10 +767,10 @@ index 28ec8796ddf48..91e0bb2cbc1d2 100644 content_view_->GetMenuItem()->GetMenuController()->GetAnchorPosition()); diff --git ui/views/test/ui_controls_factory_desktop_aura_ozone.cc ui/views/test/ui_controls_factory_desktop_aura_ozone.cc -index 616efdce0e7c5..e0e20fdb0f80b 100644 +index 9228af7f0b02e..a6957017fef5c 100644 --- ui/views/test/ui_controls_factory_desktop_aura_ozone.cc +++ ui/views/test/ui_controls_factory_desktop_aura_ozone.cc -@@ -15,6 +15,7 @@ +@@ -16,6 +16,7 @@ #include "base/task/single_thread_task_runner.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" @@ -719,7 +778,7 @@ index 616efdce0e7c5..e0e20fdb0f80b 100644 #include "ui/aura/client/screen_position_client.h" #include "ui/aura/env.h" #include "ui/aura/test/aura_test_utils.h" -@@ -180,9 +181,11 @@ bool SendMouseMoveNotifyWhenDone(int screen_x, +@@ -181,9 +182,11 @@ bool SendMouseMoveNotifyWhenDone(int screen_x, aura::test::QueryLatestMousePositionRequestInHost(host); host->ConvertPixelsToDIP(&root_current_location); @@ -732,18 +791,18 @@ index 616efdce0e7c5..e0e20fdb0f80b 100644 #if !BUILDFLAG(IS_CHROMEOS_LACROS) if (root_location != root_current_location && diff --git ui/views/view.h ui/views/view.h -index 73b9ef4f25337..aba651e745223 100644 +index 90905a70c39f1..59e1959efe352 100644 --- ui/views/view.h +++ ui/views/view.h -@@ -22,6 +22,7 @@ +@@ -25,6 +25,7 @@ #include "base/memory/safety_checks.h" #include "base/observer_list.h" #include "base/strings/string_piece.h" +#include "base/supports_user_data.h" + #include "base/types/pass_key.h" #include "build/build_config.h" - #include "third_party/abseil-cpp/absl/types/optional.h" #include "third_party/skia/include/core/SkPath.h" -@@ -284,7 +285,8 @@ class VIEWS_EXPORT View : public ui::LayerDelegate, +@@ -288,7 +289,8 @@ class VIEWS_EXPORT View : public ui::LayerDelegate, public ui::EventTarget, public ui::EventHandler, public ui::PropertyHandler, diff --git a/patch/patches/views_widget.patch b/patch/patches/views_widget.patch index 087166007..daae86744 100644 --- a/patch/patches/views_widget.patch +++ b/patch/patches/views_widget.patch @@ -23,7 +23,7 @@ index cef40af382b1e..a2cf4691edc37 100644 case ui::SHOW_STATE_END: return ui::SHOW_STATE_NORMAL; diff --git components/sessions/core/session_service_commands.cc components/sessions/core/session_service_commands.cc -index 70781f59a7528..65f30d4ff614d 100644 +index 6d7ab01569f49..27db605bd571a 100644 --- components/sessions/core/session_service_commands.cc +++ components/sessions/core/session_service_commands.cc @@ -165,9 +165,10 @@ enum PersistedWindowShowState { @@ -49,7 +49,7 @@ index 70781f59a7528..65f30d4ff614d 100644 case ui::SHOW_STATE_MAXIMIZED: return PERSISTED_SHOW_STATE_MAXIMIZED; diff --git components/sessions/core/tab_restore_service_impl.cc components/sessions/core/tab_restore_service_impl.cc -index 837fbd223fe94..0f751768e5e32 100644 +index e9ad2d5751f2d..e51381e8f2dbf 100644 --- components/sessions/core/tab_restore_service_impl.cc +++ components/sessions/core/tab_restore_service_impl.cc @@ -192,6 +192,7 @@ int SerializeWindowShowState(ui::WindowShowState show_state) { @@ -61,10 +61,10 @@ index 837fbd223fe94..0f751768e5e32 100644 case ui::SHOW_STATE_MAXIMIZED: return kSerializedShowStateMaximized; diff --git content/browser/renderer_host/render_widget_host_view_base.cc content/browser/renderer_host/render_widget_host_view_base.cc -index 6b51fa563b1b7..4dfac0e609ae6 100644 +index a6f1863cc5c8a..7e169bc3462fd 100644 --- content/browser/renderer_host/render_widget_host_view_base.cc +++ content/browser/renderer_host/render_widget_host_view_base.cc -@@ -651,6 +651,14 @@ float RenderWidgetHostViewBase::GetScaleOverrideForCapture() const { +@@ -653,6 +653,14 @@ float RenderWidgetHostViewBase::GetScaleOverrideForCapture() const { return scale_override_for_capture_; } @@ -80,10 +80,10 @@ index 6b51fa563b1b7..4dfac0e609ae6 100644 if (!GetMouseWheelPhaseHandler()) return; diff --git content/browser/renderer_host/render_widget_host_view_base.h content/browser/renderer_host/render_widget_host_view_base.h -index cc3738cade39a..acd61e28af374 100644 +index 03d6711927bd7..7c75fb30d66b8 100644 --- content/browser/renderer_host/render_widget_host_view_base.h +++ content/browser/renderer_host/render_widget_host_view_base.h -@@ -71,6 +71,7 @@ class CursorManager; +@@ -72,6 +72,7 @@ class DevicePosturePlatformProvider; class MouseWheelPhaseHandler; class RenderWidgetHostImpl; class RenderWidgetHostViewBaseObserver; @@ -91,7 +91,7 @@ index cc3738cade39a..acd61e28af374 100644 class SyntheticGestureTarget; class TextInputManager; class TouchSelectionControllerClientManager; -@@ -151,6 +152,8 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView, +@@ -152,6 +153,8 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView, const gfx::Size& max_size) override; void DisableAutoResize(const gfx::Size& new_size) override; float GetDeviceScaleFactor() const final; @@ -100,7 +100,7 @@ index cc3738cade39a..acd61e28af374 100644 TouchSelectionControllerClientManager* GetTouchSelectionControllerClientManager() override; ui::mojom::VirtualKeyboardMode GetVirtualKeyboardMode() override; -@@ -190,6 +193,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView, +@@ -191,6 +194,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView, // Called when screen information or native widget bounds change. virtual void UpdateScreenInfo(); @@ -111,7 +111,7 @@ index cc3738cade39a..acd61e28af374 100644 // Called by the TextInputManager to notify the view about being removed from // the list of registered views, i.e., TextInputManager is no longer tracking // TextInputState from this view. The RWHV should reset |text_input_manager_| -@@ -451,6 +458,12 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView, +@@ -452,6 +459,12 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView, const gfx::Rect& bounds, const gfx::Rect& anchor_rect) = 0; @@ -124,7 +124,7 @@ index cc3738cade39a..acd61e28af374 100644 // Sets the cursor for this view to the one specified. virtual void UpdateCursor(const ui::Cursor& cursor) = 0; -@@ -734,6 +747,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView, +@@ -737,6 +750,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView, // to all displays. gfx::Size system_cursor_size_; @@ -135,7 +135,7 @@ index cc3738cade39a..acd61e28af374 100644 private: FRIEND_TEST_ALL_PREFIXES( BrowserSideFlingBrowserTest, -@@ -755,10 +772,6 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView, +@@ -758,10 +775,6 @@ class CONTENT_EXPORT RenderWidgetHostViewBase : public RenderWidgetHostView, void SynchronizeVisualProperties(); @@ -147,7 +147,7 @@ index cc3738cade39a..acd61e28af374 100644 // renderer process changes. This method is called before notifying // RenderWidgetHostImpl in order to allow the view to allocate a new diff --git content/browser/renderer_host/render_widget_host_view_event_handler.cc content/browser/renderer_host/render_widget_host_view_event_handler.cc -index c3648f4e5158e..152f4fbcdac11 100644 +index 82bf8b2dba80d..7ac79b46da2b4 100644 --- content/browser/renderer_host/render_widget_host_view_event_handler.cc +++ content/browser/renderer_host/render_widget_host_view_event_handler.cc @@ -52,6 +52,10 @@ namespace { @@ -195,7 +195,7 @@ index c3648f4e5158e..152f4fbcdac11 100644 if (host_ && set_focus_on_mouse_down_or_key_event_) { set_focus_on_mouse_down_or_key_event_ = false; diff --git content/public/browser/render_widget_host_view.h content/public/browser/render_widget_host_view.h -index b3acdceb83879..7a2de7e7d0678 100644 +index 8effe5b2244a3..c36a5d3a6f7b3 100644 --- content/public/browser/render_widget_host_view.h +++ content/public/browser/render_widget_host_view.h @@ -259,6 +259,14 @@ class CONTENT_EXPORT RenderWidgetHostView { @@ -214,7 +214,7 @@ index b3acdceb83879..7a2de7e7d0678 100644 // Set the view's active state (i.e., tint state of controls). virtual void SetActive(bool active) = 0; diff --git ui/aura/native_window_occlusion_tracker_win.cc ui/aura/native_window_occlusion_tracker_win.cc -index 41c3d067b72d4..8463204012290 100644 +index 1a0b1ab293042..0a9e13d651ca5 100644 --- ui/aura/native_window_occlusion_tracker_win.cc +++ ui/aura/native_window_occlusion_tracker_win.cc @@ -102,6 +102,13 @@ void NativeWindowOcclusionTrackerWin::Enable(Window* window) { @@ -244,7 +244,7 @@ index 1d79fc2dc34cc..ce5bf0ebf531f 100644 case ui::SHOW_STATE_MAXIMIZED: return ui::mojom::WindowShowState::SHOW_STATE_MAXIMIZED; diff --git ui/base/ui_base_types.h ui/base/ui_base_types.h -index 8bfbd2d675db6..ee90ad2884db7 100644 +index 6076597470af9..871147e3e3a84 100644 --- ui/base/ui_base_types.h +++ ui/base/ui_base_types.h @@ -26,7 +26,8 @@ enum WindowShowState { @@ -258,21 +258,21 @@ index 8bfbd2d675db6..ee90ad2884db7 100644 // Specifies which edges of the window are tiled. diff --git ui/ozone/platform/x11/x11_window.cc ui/ozone/platform/x11/x11_window.cc -index 449f721727fb1..ab549b482bc36 100644 +index faa3c01acd505..0cad8751dbccc 100644 --- ui/ozone/platform/x11/x11_window.cc +++ ui/ozone/platform/x11/x11_window.cc -@@ -1846,7 +1846,8 @@ void X11Window::CreateXWindow(const PlatformWindowInitProperties& properties) { +@@ -1870,7 +1870,8 @@ void X11Window::CreateXWindow(const PlatformWindowInitProperties& properties) { req.border_pixel = 0; - last_set_bounds_px_ = SanitizeBounds(bounds); + bounds_in_pixels_ = SanitizeBounds(bounds); - req.parent = x_root_window_; + req.parent = properties.parent_widget == gfx::kNullAcceleratedWidget ? + x_root_window_ : static_cast(properties.parent_widget); - req.x = last_set_bounds_px_.x(); - req.y = last_set_bounds_px_.y(); - req.width = last_set_bounds_px_.width(); + req.x = bounds_in_pixels_.x(); + req.y = bounds_in_pixels_.y(); + req.width = bounds_in_pixels_.width(); diff --git ui/views/widget/desktop_aura/desktop_screen_win.cc ui/views/widget/desktop_aura/desktop_screen_win.cc -index e4e6d3104da9e..bb372b0cd2960 100644 +index e31c5b4cb6726..1b724948c2868 100644 --- ui/views/widget/desktop_aura/desktop_screen_win.cc +++ ui/views/widget/desktop_aura/desktop_screen_win.cc @@ -23,6 +23,8 @@ DesktopScreenWin::~DesktopScreenWin() { @@ -285,7 +285,7 @@ index e4e6d3104da9e..bb372b0cd2960 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 cb1601bffadd2..072ad958cc90c 100644 +index 946fce84291d4..558867c71737e 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc +++ ui/views/widget/desktop_aura/desktop_window_tree_host_linux.cc @@ -175,6 +175,18 @@ Widget::MoveLoopResult DesktopWindowTreeHostLinux::RunMoveLoop( @@ -349,10 +349,10 @@ index 3151a2c872f4e..e14caeb1e6645 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 f841bc5750537..aa2d4720c8152 100644 +index e1b6fbe325e76..cc45559423ce5 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc +++ ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc -@@ -287,8 +287,8 @@ void DesktopWindowTreeHostPlatform::Init(const Widget::InitParams& params) { +@@ -293,8 +293,8 @@ void DesktopWindowTreeHostPlatform::Init(const Widget::InitParams& params) { if (properties.parent_widget) { window_parent_ = DesktopWindowTreeHostPlatform::GetHostForWidget( properties.parent_widget); @@ -364,7 +364,7 @@ index f841bc5750537..aa2d4720c8152 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 d877d237b2c16..479f3bc1ac019 100644 +index 8a691273aa8af..ef43f5ee7ceca 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc +++ ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc @@ -21,6 +21,7 @@ @@ -498,7 +498,7 @@ index d877d237b2c16..479f3bc1ac019 100644 } diff --git ui/views/widget/desktop_aura/desktop_window_tree_host_win.h ui/views/widget/desktop_aura/desktop_window_tree_host_win.h -index e963c861f7099..68c6e02f2bbe5 100644 +index 8d5b01098915d..ae5b6a2193031 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_win.h +++ ui/views/widget/desktop_aura/desktop_window_tree_host_win.h @@ -322,6 +322,14 @@ class VIEWS_EXPORT DesktopWindowTreeHostWin @@ -517,7 +517,7 @@ index e963c861f7099..68c6e02f2bbe5 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 3a6617aefe420..6eeffcab6bb65 100644 +index cbe655d5879d6..a72c3450d1fa7 100644 --- ui/views/widget/native_widget_mac.mm +++ ui/views/widget/native_widget_mac.mm @@ -640,6 +640,7 @@ void NativeWidgetMac::Show(ui::WindowShowState show_state, @@ -529,7 +529,7 @@ index 3a6617aefe420..6eeffcab6bb65 100644 break; case ui::SHOW_STATE_END: diff --git ui/views/widget/widget.cc ui/views/widget/widget.cc -index 5093dee22b9da..df7f86de04259 100644 +index 257e4c1059db7..9a080524825c7 100644 --- ui/views/widget/widget.cc +++ ui/views/widget/widget.cc @@ -399,7 +399,8 @@ void Widget::Init(InitParams params) { @@ -542,7 +542,7 @@ index 5093dee22b9da..df7f86de04259 100644 is_headless_ = params.ShouldInitAsHeadless(); if (params.opacity == views::Widget::InitParams::WindowOpacity::kInferred && -@@ -497,14 +498,24 @@ void Widget::Init(InitParams params) { +@@ -497,9 +498,14 @@ void Widget::Init(InitParams params) { if (show_state == ui::SHOW_STATE_MAXIMIZED) { Maximize(); @@ -555,6 +555,9 @@ index 5093dee22b9da..df7f86de04259 100644 + } else if (show_state == ui::SHOW_STATE_HIDDEN) { + Hide(); } + + #if BUILDFLAG(IS_CHROMEOS_ASH) +@@ -513,7 +519,12 @@ void Widget::Init(InitParams params) { } else if (delegate) { SetContentsView(delegate->TransferOwnershipOfContentsView()); if (should_set_initial_bounds) { @@ -568,7 +571,7 @@ index 5093dee22b9da..df7f86de04259 100644 } } -@@ -1646,10 +1657,16 @@ void Widget::OnNativeWidgetParentChanged(gfx::NativeView parent) { +@@ -1655,10 +1666,16 @@ void Widget::OnNativeWidgetParentChanged(gfx::NativeView parent) { } gfx::Size Widget::GetMinimumSize() const { @@ -585,7 +588,7 @@ index 5093dee22b9da..df7f86de04259 100644 return non_client_view_ ? non_client_view_->GetMaximumSize() : gfx::Size(); } -@@ -1900,7 +1917,8 @@ bool Widget::SetInitialFocus(ui::WindowShowState show_state) { +@@ -1909,7 +1926,8 @@ bool Widget::SetInitialFocus(ui::WindowShowState show_state) { return false; View* v = widget_delegate_->GetInitiallyFocusedView(); if (!focus_on_creation_ || show_state == ui::SHOW_STATE_INACTIVE || @@ -596,7 +599,7 @@ index 5093dee22b9da..df7f86de04259 100644 // focus when the window is restored. if (v) diff --git ui/views/widget/widget.h ui/views/widget/widget.h -index 1939476d29da5..895df61324a2e 100644 +index 5d190896a1308..36322410b8373 100644 --- ui/views/widget/widget.h +++ ui/views/widget/widget.h @@ -356,6 +356,8 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, @@ -608,7 +611,7 @@ index 1939476d29da5..895df61324a2e 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 -@@ -752,7 +754,7 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, +@@ -754,7 +756,7 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, void ShowInactive(); // Activates the widget, assuming it already exists and is visible. @@ -618,7 +621,7 @@ index 1939476d29da5..895df61324a2e 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 30dfd721cceef..30831b22580a4 100644 +index dc81dccf6e446..c18ec44755a6a 100644 --- ui/views/widget/widget_delegate.h +++ ui/views/widget/widget_delegate.h @@ -375,6 +375,10 @@ class VIEWS_EXPORT WidgetDelegate @@ -647,10 +650,10 @@ index 3b9b00b7d79ae..e759e3c1a9f34 100644 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 36a6e980495ea..24d75fb85a65f 100644 +index 7516856fb9314..4e1fac6c686fe 100644 --- ui/views/win/hwnd_message_handler.cc +++ ui/views/win/hwnd_message_handler.cc -@@ -767,7 +767,11 @@ bool HWNDMessageHandler::IsVisible() const { +@@ -770,7 +770,11 @@ bool HWNDMessageHandler::IsVisible() const { } bool HWNDMessageHandler::IsActive() const { @@ -663,7 +666,7 @@ index 36a6e980495ea..24d75fb85a65f 100644 } bool HWNDMessageHandler::IsMinimized() const { -@@ -3207,10 +3211,13 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message, +@@ -3211,10 +3215,13 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message, } else if (event.type() == ui::ET_MOUSEWHEEL) { 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 463e97f08..ccf0fbba1 100644 --- a/patch/patches/viz_osr_2575.patch +++ b/patch/patches/viz_osr_2575.patch @@ -80,10 +80,10 @@ index 8af69cac78b74..9f74e511c263d 100644 private: const HWND hwnd_; diff --git components/viz/service/BUILD.gn components/viz/service/BUILD.gn -index 5a5791600d1aa..43cbd8abe4a75 100644 +index 5756139efd53e..a80a1504fbbce 100644 --- components/viz/service/BUILD.gn +++ components/viz/service/BUILD.gn -@@ -249,6 +249,8 @@ viz_component("service") { +@@ -247,6 +247,8 @@ viz_component("service") { "transitions/surface_animation_manager.h", "transitions/transferable_resource_tracker.cc", "transitions/transferable_resource_tracker.h", @@ -150,7 +150,7 @@ 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 516c7f65097f1..49e0fdc6b4109 100644 +index 36a762f6a8054..0e5983a4f011d 100644 --- content/browser/compositor/viz_process_transport_factory.cc +++ content/browser/compositor/viz_process_transport_factory.cc @@ -408,8 +408,13 @@ void VizProcessTransportFactory::OnEstablishedGpuChannel( @@ -223,7 +223,7 @@ index 2f462f0deb5fc..695869b83cefa 100644 + Draw(gfx.mojom.Rect damage_rect) => (); }; diff --git ui/compositor/compositor.h ui/compositor/compositor.h -index 86d021ca68674..26f6096b99c1f 100644 +index 2b5ec776d7d90..ad2c8d8796a7e 100644 --- ui/compositor/compositor.h +++ ui/compositor/compositor.h @@ -33,7 +33,9 @@ diff --git a/patch/patches/web_contents_1257_1565.patch b/patch/patches/web_contents_1257_1565.patch index 11db05f35..1ca85b6e4 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 21815a78d2429..bcad76251473b 100644 +index aa108c2e0aab5..0d51494508d87 100644 --- content/browser/web_contents/web_contents_impl.cc +++ content/browser/web_contents/web_contents_impl.cc -@@ -3471,6 +3471,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, +@@ -3459,6 +3459,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 21815a78d2429..bcad76251473b 100644 std::unique_ptr delegate = GetContentClient()->browser()->GetWebContentsViewDelegate(this); -@@ -3481,6 +3487,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, +@@ -3469,6 +3475,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, view_ = CreateWebContentsView(this, std::move(delegate), &render_view_host_delegate_view_); } @@ -23,7 +23,7 @@ index 21815a78d2429..bcad76251473b 100644 CHECK(render_view_host_delegate_view_); CHECK(view_.get()); -@@ -3676,6 +3683,9 @@ void WebContentsImpl::RenderWidgetCreated( +@@ -3664,6 +3671,9 @@ void WebContentsImpl::RenderWidgetCreated( OPTIONAL_TRACE_EVENT1("content", "WebContentsImpl::RenderWidgetCreated", "render_widget_host", render_widget_host); created_widgets_.insert(render_widget_host); @@ -33,7 +33,7 @@ index 21815a78d2429..bcad76251473b 100644 } void WebContentsImpl::RenderWidgetDeleted( -@@ -4480,6 +4490,15 @@ FrameTree* WebContentsImpl::CreateNewWindow( +@@ -4484,6 +4494,15 @@ FrameTree* WebContentsImpl::CreateNewWindow( create_params.picture_in_picture_options = *(params.pip_options); } @@ -49,7 +49,7 @@ index 21815a78d2429..bcad76251473b 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. -@@ -8679,6 +8698,9 @@ void WebContentsImpl::SetFocusedFrame(FrameTreeNode* node, +@@ -8703,6 +8722,9 @@ void WebContentsImpl::SetFocusedFrame(FrameTreeNode* node, } CloseListenerManager::DidChangeFocusedFrame(this); @@ -60,7 +60,7 @@ index 21815a78d2429..bcad76251473b 100644 void WebContentsImpl::DidCallFocus() { diff --git content/public/browser/web_contents.h content/public/browser/web_contents.h -index 943d2c2a16821..976c257189bda 100644 +index 2880552f5303c..5b034fbf8b036 100644 --- content/public/browser/web_contents.h +++ content/public/browser/web_contents.h @@ -101,10 +101,12 @@ class BrowserContext; @@ -88,10 +88,10 @@ index 943d2c2a16821..976c257189bda 100644 // the value that'll be returned by GetLastActiveTime(). If this is left // default initialized then the value is not passed on to the WebContents diff --git content/public/browser/web_contents_delegate.h content/public/browser/web_contents_delegate.h -index 0a80169aa10cf..8165b00da16c2 100644 +index cce26ecaccbfd..08f7108f68890 100644 --- content/public/browser/web_contents_delegate.h +++ content/public/browser/web_contents_delegate.h -@@ -60,9 +60,11 @@ class EyeDropperListener; +@@ -64,9 +64,11 @@ class EyeDropperListener; class FileSelectListener; class JavaScriptDialogManager; class RenderFrameHost; @@ -103,7 +103,7 @@ index 0a80169aa10cf..8165b00da16c2 100644 struct ContextMenuParams; struct DropData; struct MediaPlayerWatchTime; -@@ -345,6 +347,14 @@ class CONTENT_EXPORT WebContentsDelegate { +@@ -349,6 +351,14 @@ class CONTENT_EXPORT WebContentsDelegate { const StoragePartitionConfig& partition_config, SessionStorageNamespace* session_storage_namespace); @@ -119,7 +119,7 @@ index 0a80169aa10cf..8165b00da16c2 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 839fa5e82f140..891784b2f3e5a 100644 +index 67a814a07af1e..7b5e055d3c347 100644 --- content/public/browser/web_contents_observer.h +++ content/public/browser/web_contents_observer.h @@ -227,6 +227,9 @@ class CONTENT_EXPORT WebContentsObserver : public base::CheckedObserver { @@ -132,7 +132,7 @@ index 839fa5e82f140..891784b2f3e5a 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() {} -@@ -846,6 +849,10 @@ class CONTENT_EXPORT WebContentsObserver : public base::CheckedObserver { +@@ -848,6 +851,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 aaab561da..bbadc3977 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 52829e870d30a..bf87e1750cd3f 100644 +index 165bd4eae9e1b..dd4d7af0a561d 100644 --- third_party/blink/public/platform/platform.h +++ third_party/blink/public/platform/platform.h -@@ -781,6 +781,11 @@ class BLINK_PLATFORM_EXPORT Platform { +@@ -784,6 +784,11 @@ class BLINK_PLATFORM_EXPORT Platform { } #endif @@ -15,18 +15,18 @@ index 52829e870d30a..bf87e1750cd3f 100644 static void InitializeMainThreadCommon( Platform* platform, diff --git third_party/blink/renderer/core/inspector/devtools_session.cc third_party/blink/renderer/core/inspector/devtools_session.cc -index ae0907dfd95ec..63620f0aadc14 100644 +index 912eb6434368a..ae58f9e10355d 100644 --- third_party/blink/renderer/core/inspector/devtools_session.cc +++ third_party/blink/renderer/core/inspector/devtools_session.cc -@@ -10,6 +10,7 @@ - +@@ -11,6 +11,7 @@ #include "base/task/sequenced_task_runner.h" #include "base/task/single_thread_task_runner.h" + #include "base/trace_event/trace_event.h" +#include "third_party/blink/public/platform/platform.h" #include "third_party/blink/renderer/bindings/core/v8/script_controller.h" #include "third_party/blink/renderer/core/frame/local_frame.h" #include "third_party/blink/renderer/core/inspector/devtools_agent.h" -@@ -168,6 +169,7 @@ DevToolsSession::DevToolsSession( +@@ -169,6 +170,7 @@ DevToolsSession::DevToolsSession( for (wtf_size_t i = 0; i < agents_.size(); i++) agents_[i]->Restore(); } @@ -34,7 +34,7 @@ index ae0907dfd95ec..63620f0aadc14 100644 } DevToolsSession::~DevToolsSession() { -@@ -213,6 +215,7 @@ void DevToolsSession::Detach() { +@@ -214,6 +216,7 @@ void DevToolsSession::Detach() { agents_.clear(); v8_session_.reset(); agent_->client_->DebuggerTaskFinished(); diff --git a/patch/patches/webkit_popups.patch b/patch/patches/webkit_popups.patch index 30a8141cd..f215df963 100644 --- a/patch/patches/webkit_popups.patch +++ b/patch/patches/webkit_popups.patch @@ -1,8 +1,8 @@ diff --git third_party/blink/public/web/web_view.h third_party/blink/public/web/web_view.h -index 2ba868f0efb2e..4ec2a9ca69cab 100644 +index c4348be90db20..bf426c876b77a 100644 --- third_party/blink/public/web/web_view.h +++ third_party/blink/public/web/web_view.h -@@ -345,6 +345,7 @@ class BLINK_EXPORT WebView { +@@ -349,6 +349,7 @@ class BLINK_EXPORT WebView { // Sets whether select popup menus should be rendered by the browser. static void SetUseExternalPopupMenus(bool); @@ -11,7 +11,7 @@ index 2ba868f0efb2e..4ec2a9ca69cab 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 aafdfd4fffd0b..4215f48d15284 100644 +index e3d58bf5e51c9..2ba9f1be3d752 100644 --- third_party/blink/renderer/core/exported/web_view_impl.cc +++ third_party/blink/renderer/core/exported/web_view_impl.cc @@ -251,8 +251,13 @@ void WebView::SetUseExternalPopupMenus(bool use_external_popup_menus) { @@ -39,7 +39,7 @@ index aafdfd4fffd0b..4215f48d15284 100644 fullscreen_controller_(std::make_unique(this)), page_base_background_color_( diff --git third_party/blink/renderer/core/exported/web_view_impl.h third_party/blink/renderer/core/exported/web_view_impl.h -index 25566d1e5a367..6ad48660a42ee 100644 +index db7f1cb1b0f68..4c70aa22d0a34 100644 --- third_party/blink/renderer/core/exported/web_view_impl.h +++ third_party/blink/renderer/core/exported/web_view_impl.h @@ -139,7 +139,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, @@ -52,7 +52,7 @@ index 25566d1e5a367..6ad48660a42ee 100644 // Returns whether frames under this WebView are backed by a compositor. bool does_composite() const { return does_composite_; } -@@ -871,6 +872,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, +@@ -869,6 +870,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, float fake_page_scale_animation_page_scale_factor_ = 0.f; bool fake_page_scale_animation_use_anchor_ = false; @@ -62,15 +62,15 @@ index 25566d1e5a367..6ad48660a42ee 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 e8c40f756f746..d3738d1388c96 100644 +index 59f54f7f98dd6..481e1991a77ac 100644 --- third_party/blink/renderer/core/page/chrome_client_impl.cc +++ third_party/blink/renderer/core/page/chrome_client_impl.cc @@ -981,7 +981,7 @@ PopupMenu* ChromeClientImpl::OpenPopupMenu(LocalFrame& frame, HTMLSelectElement& select) { NotifyPopupOpeningObservers(); -- bool use_external_popup_menus = WebViewImpl::UseExternalPopupMenus(); -+ bool use_external_popup_menus = web_view_->UseExternalPopupMenus(); - #if BUILDFLAG(IS_MAC) - // There is a bug that is causing popup menus in PWA windows on macOS to - // sometimes not appear if using external popup menus. Until that bug is +- if (WebViewImpl::UseExternalPopupMenus()) { ++ if (web_view_->UseExternalPopupMenus()) { + return MakeGarbageCollected(frame, select); + } + diff --git a/patch/patches/webui_2037.patch b/patch/patches/webui_2037.patch index 4ebcf879f..53639eea5 100644 --- a/patch/patches/webui_2037.patch +++ b/patch/patches/webui_2037.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc -index 6f6a3c9c374f7..00caa794fdd26 100644 +index 95b2dd4972892..72e1b984ba689 100644 --- chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc +++ chrome/browser/feedback/system_logs/log_sources/chrome_internal_log_source.cc @@ -19,10 +19,12 @@ diff --git a/patch/patches/win_sandbox_3210.patch b/patch/patches/win_sandbox_3210.patch index 01f910992..584e0aeb9 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 714422bd2d088..3aa2e830e6148 100644 +index 6bf94fa65c5b6..f0953baa972f5 100644 --- sandbox/policy/win/sandbox_win.cc +++ sandbox/policy/win/sandbox_win.cc -@@ -993,6 +993,13 @@ ResultCode SandboxWin::StartSandboxedProcess( +@@ -1015,6 +1015,13 @@ ResultCode SandboxWin::StartSandboxedProcess( const base::HandlesToInheritVector& handles_to_inherit, SandboxDelegate* delegate, base::Process* process) { @@ -13,6 +13,6 @@ index 714422bd2d088..3aa2e830e6148 100644 + process); + } + - const base::ElapsedTimer timer; + SandboxLaunchTimer timer; // Avoid making a policy if we won't use it. diff --git a/patch/patches/win_sandbox_policy.patch b/patch/patches/win_sandbox_policy.patch index e908e3696..c2a89dadb 100644 --- a/patch/patches/win_sandbox_policy.patch +++ b/patch/patches/win_sandbox_policy.patch @@ -1,8 +1,8 @@ diff --git sandbox/win/src/sandbox_policy.h sandbox/win/src/sandbox_policy.h -index 57409176ff044..58bb027580bbb 100644 +index a2d801b370b01..b56de03637fec 100644 --- sandbox/win/src/sandbox_policy.h +++ sandbox/win/src/sandbox_policy.h -@@ -275,7 +275,7 @@ class [[clang::lto_visibility_public]] TargetPolicy { +@@ -285,7 +285,7 @@ class [[clang::lto_visibility_public]] TargetPolicy { // Adds a blob of data that will be made available in the child early in // startup via sandbox::GetDelegateData(). The contents of this data should // not vary between children with the same TargetConfig(). @@ -12,10 +12,10 @@ index 57409176ff044..58bb027580bbb 100644 } // namespace sandbox diff --git sandbox/win/src/sandbox_policy_base.cc sandbox/win/src/sandbox_policy_base.cc -index 1d5c93a0792b1..46600d1ae70cc 100644 +index 58f55c1398047..f980f67de4f9b 100644 --- sandbox/win/src/sandbox_policy_base.cc +++ sandbox/win/src/sandbox_policy_base.cc -@@ -189,12 +189,12 @@ PolicyGlobal* ConfigBase::policy() { +@@ -190,12 +190,12 @@ PolicyGlobal* ConfigBase::policy() { return policy_; } @@ -31,8 +31,8 @@ index 1d5c93a0792b1..46600d1ae70cc 100644 } return std::nullopt; } -@@ -756,19 +756,19 @@ bool PolicyBase::SetupHandleCloser(TargetProcess& target) { - return handle_closer->InitializeTargetHandles(target); +@@ -774,14 +774,14 @@ bool PolicyBase::SetupHandleCloser(TargetProcess& target) { + return (SBOX_ALL_OK == rc); } -std::optional> PolicyBase::delegate_data_span() { @@ -48,17 +48,11 @@ index 1d5c93a0792b1..46600d1ae70cc 100644 CHECK(data.size() > 0u); // Can only set this once - as there is only one region sent to the child. CHECK(!delegate_data_); - delegate_data_ = -- std::make_unique>(data.begin(), data.end()); -+ std::make_unique>(data.begin(), data.end()); - } - - } // namespace sandbox diff --git sandbox/win/src/sandbox_policy_base.h sandbox/win/src/sandbox_policy_base.h -index 090d51f701614..fb2aedd4aa0ec 100644 +index 6b4a9ec20f348..058bca8674177 100644 --- sandbox/win/src/sandbox_policy_base.h +++ sandbox/win/src/sandbox_policy_base.h -@@ -116,7 +116,7 @@ class ConfigBase final : public TargetConfig { +@@ -115,7 +115,7 @@ class ConfigBase final : public TargetConfig { // Should only be called once the object is configured. PolicyGlobal* policy(); @@ -67,7 +61,7 @@ index 090d51f701614..fb2aedd4aa0ec 100644 std::vector& blocklisted_dlls(); AppContainerBase* app_container(); IntegrityLevel integrity_level() { return integrity_level_; } -@@ -176,7 +176,7 @@ class PolicyBase final : public TargetPolicy { +@@ -170,7 +170,7 @@ class PolicyBase final : public TargetPolicy { ResultCode SetStdoutHandle(HANDLE handle) override; ResultCode SetStderrHandle(HANDLE handle) override; void AddHandleToShare(HANDLE handle) override; @@ -76,7 +70,7 @@ index 090d51f701614..fb2aedd4aa0ec 100644 // Creates a Job object with the level specified in a previous call to // SetJobLevel(). -@@ -238,13 +238,13 @@ class PolicyBase final : public TargetPolicy { +@@ -232,13 +232,13 @@ class PolicyBase final : public TargetPolicy { // time. // Returns nullopt if no data has been set, or a view into the data. @@ -87,7 +81,7 @@ index 090d51f701614..fb2aedd4aa0ec 100644 HANDLE stdout_handle_; HANDLE stderr_handle_; // An opaque blob of data the delegate uses to prime any pre-sandbox hooks. -- std::unique_ptr> delegate_data_; +- std::unique_ptr> delegate_data_; + std::unique_ptr> delegate_data_; std::unique_ptr dispatcher_; diff --git a/tests/ceftests/cookie_unittest.cc b/tests/ceftests/cookie_unittest.cc index b2e958060..b153c6ff8 100644 --- a/tests/ceftests/cookie_unittest.cc +++ b/tests/ceftests/cookie_unittest.cc @@ -2022,6 +2022,11 @@ class CookieRestartTestHandler : public RoutingTestHandler, CefRefPtr request, const CefCookie& cookie) override { EXPECT_IO_THREAD(); + const std::string& url = request->GetURL(); + if (IgnoreURL(url)) { + return true; + } + can_send_cookie_ct_++; // Called before the URL2 network requests. @@ -2036,6 +2041,11 @@ class CookieRestartTestHandler : public RoutingTestHandler, CefRefPtr response, const CefCookie& cookie) override { EXPECT_IO_THREAD(); + const std::string& url = request->GetURL(); + if (IgnoreURL(url)) { + return true; + } + can_save_cookie_ct_++; // Called after the successful URL1 network request. @@ -2054,9 +2064,12 @@ class CookieRestartTestHandler : public RoutingTestHandler, CefRefPtr request, CefRefPtr callback) override { EXPECT_IO_THREAD(); - before_resource_load_ct_++; - const std::string& url = request->GetURL(); + if (IgnoreURL(url)) { + return RV_CONTINUE; + } + + before_resource_load_ct_++; if (before_resource_load_ct_ <= 2) { EXPECT_STREQ(GetCookieAccessUrl1(scheme_, true).c_str(), url.c_str()); @@ -2086,9 +2099,13 @@ class CookieRestartTestHandler : public RoutingTestHandler, CefRefPtr request, CefRefPtr response) override { EXPECT_IO_THREAD(); + const std::string& url = request->GetURL(); + if (IgnoreURL(url)) { + return false; + } + resource_response_ct_++; - const std::string& url = request->GetURL(); const std::string& set_cookie_str = response->GetHeaderByName("Set-Cookie"); // Expect the network cookie with URL1 requests only.