diff --git a/CHROMIUM_BUILD_COMPATIBILITY.txt b/CHROMIUM_BUILD_COMPATIBILITY.txt index d13285ce3..da8df990d 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/129.0.6668.0' + 'chromium_checkout': 'refs/tags/130.0.6723.0' } diff --git a/include/cef_api_hash.h b/include/cef_api_hash.h index 20a14f0cd..93b4c5507 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 "3c4bef13c1801f001305b1bc3af84039b2426943" +#define CEF_API_HASH_UNIVERSAL "9717d7221d63adfd79ee52e2a31c9ac7acdd6d50" #if defined(OS_WIN) -#define CEF_API_HASH_PLATFORM "10e56374e7d422b45eec31ae5d2aa7ef5288621c" +#define CEF_API_HASH_PLATFORM "072a4fe61a512f21fd0d664495902fca6ec2193b" #elif defined(OS_MAC) -#define CEF_API_HASH_PLATFORM "ae9f14019f456db6ad8059f17d1dfd484d4a08d7" +#define CEF_API_HASH_PLATFORM "ee7f0e9247add8df0827d02da32559e38e8079d0" #elif defined(OS_LINUX) -#define CEF_API_HASH_PLATFORM "84dcdea90daf46d0ba611b1d0f3e42666fb3382d" +#define CEF_API_HASH_PLATFORM "88996e58ee062016efd054bfbafd03dd3daa99ed" #endif #ifdef __cplusplus diff --git a/include/internal/cef_types.h b/include/internal/cef_types.h index f4de7dea8..0da16a48b 100644 --- a/include/internal/cef_types.h +++ b/include/internal/cef_types.h @@ -3627,20 +3627,22 @@ typedef enum { CEF_PERMISSION_TYPE_DISK_QUOTA = 1 << 7, CEF_PERMISSION_TYPE_LOCAL_FONTS = 1 << 8, CEF_PERMISSION_TYPE_GEOLOCATION = 1 << 9, - CEF_PERMISSION_TYPE_IDENTITY_PROVIDER = 1 << 10, - CEF_PERMISSION_TYPE_IDLE_DETECTION = 1 << 11, - CEF_PERMISSION_TYPE_MIC_STREAM = 1 << 12, - CEF_PERMISSION_TYPE_MIDI_SYSEX = 1 << 13, - CEF_PERMISSION_TYPE_MULTIPLE_DOWNLOADS = 1 << 14, - CEF_PERMISSION_TYPE_NOTIFICATIONS = 1 << 15, - CEF_PERMISSION_TYPE_KEYBOARD_LOCK = 1 << 16, - CEF_PERMISSION_TYPE_POINTER_LOCK = 1 << 17, - CEF_PERMISSION_TYPE_PROTECTED_MEDIA_IDENTIFIER = 1 << 18, - CEF_PERMISSION_TYPE_REGISTER_PROTOCOL_HANDLER = 1 << 19, - CEF_PERMISSION_TYPE_STORAGE_ACCESS = 1 << 20, - CEF_PERMISSION_TYPE_VR_SESSION = 1 << 21, - CEF_PERMISSION_TYPE_WINDOW_MANAGEMENT = 1 << 22, - CEF_PERMISSION_TYPE_FILE_SYSTEM_ACCESS = 1 << 23, + CEF_PERMISSION_TYPE_HAND_TRACKING = 1 << 10, + CEF_PERMISSION_TYPE_IDENTITY_PROVIDER = 1 << 11, + CEF_PERMISSION_TYPE_IDLE_DETECTION = 1 << 12, + CEF_PERMISSION_TYPE_MIC_STREAM = 1 << 13, + CEF_PERMISSION_TYPE_MIDI_SYSEX = 1 << 14, + CEF_PERMISSION_TYPE_MULTIPLE_DOWNLOADS = 1 << 15, + CEF_PERMISSION_TYPE_NOTIFICATIONS = 1 << 16, + CEF_PERMISSION_TYPE_KEYBOARD_LOCK = 1 << 17, + CEF_PERMISSION_TYPE_POINTER_LOCK = 1 << 18, + CEF_PERMISSION_TYPE_PROTECTED_MEDIA_IDENTIFIER = 1 << 19, + CEF_PERMISSION_TYPE_REGISTER_PROTOCOL_HANDLER = 1 << 20, + CEF_PERMISSION_TYPE_STORAGE_ACCESS = 1 << 21, + CEF_PERMISSION_TYPE_VR_SESSION = 1 << 22, + CEF_PERMISSION_TYPE_WEB_APP_INSTALLATION = 1 << 23, + CEF_PERMISSION_TYPE_WINDOW_MANAGEMENT = 1 << 24, + CEF_PERMISSION_TYPE_FILE_SYSTEM_ACCESS = 1 << 25, } cef_permission_request_types_t; /// diff --git a/include/internal/cef_types_content_settings.h b/include/internal/cef_types_content_settings.h index 456246dbe..9fecc1a11 100644 --- a/include/internal/cef_types_content_settings.h +++ b/include/internal/cef_types_content_settings.h @@ -445,28 +445,35 @@ typedef enum { /// ALLOW: Protections disabled. CEF_CONTENT_SETTING_TYPE_TRACKING_PROTECTION, - // With this permission, when the application calls `getDisplayMedia()`, a - // system audio track can be returned without showing the display media - // selection picker. The application can explicitly specify - // `systemAudio: 'exclude'` or `video: true` to still show the display media - // selection picker if needed. Please note that the setting only works for - // WebUI. + /// With this permission, when the application calls `getDisplayMedia()`, a + /// system audio track can be returned without showing the display media + /// selection picker. The application can explicitly specify + /// `systemAudio: 'exclude'` or `video: true` to still show the display media + /// selection picker if needed. Please note that the setting only works for + /// WebUI. CEF_CONTENT_SETTING_TYPE_DISPLAY_MEDIA_SYSTEM_AUDIO, - // Whether to use the higher-tier v8 optimizers for running JavaScript on the - // page. + /// Whether to use the higher-tier v8 optimizers for running JavaScript on the + /// page. CEF_CONTENT_SETTING_TYPE_JAVASCRIPT_OPTIMIZER, - // Content Setting for the Storage Access Headers persistent origin trial that - // allows origins to opt into the storage access header behavior. Should be - // scoped to `REQUESTING_ORIGIN_AND_TOP_SCHEMEFUL_SITE_SCOPE` in order to - // correspond to the design of persistent origin trials. See also: - // https://github.com/cfredric/storage-access-headers - // ALLOW: storage access request headers will be attached to cross-site - // requests, and url requests will look for response headers from - // origins to retry a request or load with storage access. - // BLOCK (default): no effect. + /// Content Setting for the Storage Access Headers persistent origin trial + /// that allows origins to opt into the storage access header behavior. Should + /// be scoped to `REQUESTING_ORIGIN_AND_TOP_SCHEMEFUL_SITE_SCOPE` in order to + /// correspond to the design of persistent origin trials. See also: + /// https://github.com/cfredric/storage-access-headers + /// ALLOW: storage access request headers will be attached to cross-site + /// requests, and url requests will look for response headers from + /// origins to retry a request or load with storage access. + /// BLOCK (default): no effect. CEF_CONTENT_SETTING_TYPE_STORAGE_ACCESS_HEADER_ORIGIN_TRIAL, + + /// Whether or not sites can request Hand Tracking data within WebXR Sessions. + CEF_CONTENT_SETTING_TYPE_HAND_TRACKING, + + /// Website setting to indicate whether user has opted in to allow web apps to + /// install other web apps. + CEF_CONTENT_SETTING_TYPE_WEB_APP_INSTALLATION, } cef_content_setting_types_t; /// diff --git a/libcef/browser/alloy/alloy_browser_host_impl.cc b/libcef/browser/alloy/alloy_browser_host_impl.cc index 4d3c5c8d0..135b6cebb 100644 --- a/libcef/browser/alloy/alloy_browser_host_impl.cc +++ b/libcef/browser/alloy/alloy_browser_host_impl.cc @@ -940,7 +940,7 @@ content::WebContents* AlloyBrowserHostImpl::OpenURLFromTab( return nullptr; } -void AlloyBrowserHostImpl::AddNewContents( +content::WebContents* AlloyBrowserHostImpl::AddNewContents( content::WebContents* source, std::unique_ptr new_contents, const GURL& target_url, @@ -948,9 +948,11 @@ void AlloyBrowserHostImpl::AddNewContents( const blink::mojom::WindowFeatures& window_features, bool user_gesture, bool* was_blocked) { + auto* new_contents_ptr = new_contents.get(); platform_delegate_->AddNewContents(source, std::move(new_contents), target_url, disposition, window_features, user_gesture, was_blocked); + return new_contents_ptr; } void AlloyBrowserHostImpl::LoadingStateChanged(content::WebContents* source, diff --git a/libcef/browser/alloy/alloy_browser_host_impl.h b/libcef/browser/alloy/alloy_browser_host_impl.h index 8be00192e..9c2a409fd 100644 --- a/libcef/browser/alloy/alloy_browser_host_impl.h +++ b/libcef/browser/alloy/alloy_browser_host_impl.h @@ -179,13 +179,14 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase, const content::OpenURLParams& params, base::OnceCallback navigation_handle_callback) override; - void AddNewContents(content::WebContents* source, - std::unique_ptr new_contents, - const GURL& target_url, - WindowOpenDisposition disposition, - const blink::mojom::WindowFeatures& window_features, - bool user_gesture, - bool* was_blocked) override; + content::WebContents* AddNewContents( + content::WebContents* source, + std::unique_ptr new_contents, + const GURL& target_url, + WindowOpenDisposition disposition, + const blink::mojom::WindowFeatures& window_features, + bool user_gesture, + bool* was_blocked) override; void LoadingStateChanged(content::WebContents* source, bool should_show_loading_ui) override; void CloseContents(content::WebContents* source) override; diff --git a/libcef/browser/chrome/chrome_content_browser_client_cef.cc b/libcef/browser/chrome/chrome_content_browser_client_cef.cc index 5edbf46b9..f55bddeef 100644 --- a/libcef/browser/chrome/chrome_content_browser_client_cef.cc +++ b/libcef/browser/chrome/chrome_content_browser_client_cef.cc @@ -51,7 +51,7 @@ namespace { void HandleExternalProtocolHelper( ChromeContentBrowserClientCef* self, content::WebContents::Getter web_contents_getter, - int frame_tree_node_id, + content::FrameTreeNodeId frame_tree_node_id, content::NavigationUIData* navigation_data, bool is_primary_main_frame, bool is_in_fenced_frame_tree, @@ -343,7 +343,7 @@ void ChromeContentBrowserClientCef::WillCreateURLLoaderFactory( bool ChromeContentBrowserClientCef::HandleExternalProtocol( const GURL& url, content::WebContents::Getter web_contents_getter, - int frame_tree_node_id, + content::FrameTreeNodeId frame_tree_node_id, content::NavigationUIData* navigation_data, bool is_primary_main_frame, bool is_in_fenced_frame_tree, @@ -372,7 +372,7 @@ bool ChromeContentBrowserClientCef::HandleExternalProtocol( bool ChromeContentBrowserClientCef::HandleExternalProtocol( content::WebContents::Getter web_contents_getter, - int frame_tree_node_id, + content::FrameTreeNodeId frame_tree_node_id, content::NavigationUIData* navigation_data, bool is_primary_main_frame, bool is_in_fenced_frame_tree, diff --git a/libcef/browser/chrome/chrome_content_browser_client_cef.h b/libcef/browser/chrome/chrome_content_browser_client_cef.h index 8a62d1200..0de602b44 100644 --- a/libcef/browser/chrome/chrome_content_browser_client_cef.h +++ b/libcef/browser/chrome/chrome_content_browser_client_cef.h @@ -78,7 +78,7 @@ class ChromeContentBrowserClientCef : public ChromeContentBrowserClient { bool HandleExternalProtocol( const GURL& url, content::WebContents::Getter web_contents_getter, - int frame_tree_node_id, + content::FrameTreeNodeId frame_tree_node_id, content::NavigationUIData* navigation_data, bool is_primary_main_frame, bool is_in_fenced_frame_tree, @@ -91,7 +91,7 @@ class ChromeContentBrowserClientCef : public ChromeContentBrowserClient { override; bool HandleExternalProtocol( content::WebContents::Getter web_contents_getter, - int frame_tree_node_id, + content::FrameTreeNodeId frame_tree_node_id, content::NavigationUIData* navigation_data, bool is_primary_main_frame, bool is_in_fenced_frame_tree, diff --git a/libcef/browser/frame_host_impl.cc b/libcef/browser/frame_host_impl.cc index faa734738..001ccb298 100644 --- a/libcef/browser/frame_host_impl.cc +++ b/libcef/browser/frame_host_impl.cc @@ -469,8 +469,8 @@ void CefFrameHostImpl::ExecuteJavaScriptWithUserGestureForTests( content::RenderFrameHost* rfh = GetRenderFrameHost(); if (rfh) { - rfh->ExecuteJavaScriptWithUserGestureForTests(javascript, - base::NullCallback()); + rfh->ExecuteJavaScriptWithUserGestureForTests( + javascript, base::NullCallback(), content::ISOLATED_WORLD_ID_GLOBAL); } } diff --git a/libcef/browser/net_service/cookie_helper.cc b/libcef/browser/net_service/cookie_helper.cc index 8b73397f0..472d8bfe7 100644 --- a/libcef/browser/net_service/cookie_helper.cc +++ b/libcef/browser/net_service/cookie_helper.cc @@ -283,10 +283,7 @@ void SaveCookies(const CefBrowserContext::Getter& browser_context_getter, // Match the logic in // URLRequestHttpJob::SaveCookiesAndNotifyHeadersComplete. - base::Time response_date; - if (!headers->GetDateValue(&response_date)) { - response_date = base::Time(); - } + const auto response_date = headers->GetDateValue(); const std::string_view name(net_service::kHTTPSetCookieHeaderName); std::string cookie_string; @@ -299,8 +296,7 @@ void SaveCookies(const CefBrowserContext::Getter& browser_context_getter, net::CookieInclusionStatus returned_status; std::unique_ptr cookie = net::CanonicalCookie::Create( - request.url, cookie_string, base::Time::Now(), - std::make_optional(response_date), + request.url, cookie_string, base::Time::Now(), response_date, /*cookie_partition_key=*/std::nullopt, net::CookieSourceType::kHTTP, &returned_status); if (!returned_status.IsInclude()) { diff --git a/libcef/browser/net_service/resource_request_handler_wrapper.cc b/libcef/browser/net_service/resource_request_handler_wrapper.cc index 0958ab7d4..045f0229a 100644 --- a/libcef/browser/net_service/resource_request_handler_wrapper.cc +++ b/libcef/browser/net_service/resource_request_handler_wrapper.cc @@ -1360,7 +1360,7 @@ std::unique_ptr CreateInterceptedRequestHandler( std::unique_ptr CreateInterceptedRequestHandler( content::WebContents::Getter web_contents_getter, - int frame_tree_node_id, + content::FrameTreeNodeId frame_tree_node_id, const network::ResourceRequest& request, const base::RepeatingClosure& unhandled_request_callback) { CEF_REQUIRE_UIT(); diff --git a/libcef/browser/net_service/resource_request_handler_wrapper.h b/libcef/browser/net_service/resource_request_handler_wrapper.h index 6052a7675..65e7fb112 100644 --- a/libcef/browser/net_service/resource_request_handler_wrapper.h +++ b/libcef/browser/net_service/resource_request_handler_wrapper.h @@ -41,7 +41,7 @@ std::unique_ptr CreateInterceptedRequestHandler( // ProxyURLLoaderFactory::CreateProxy. Called on the UI thread only. std::unique_ptr CreateInterceptedRequestHandler( content::WebContents::Getter web_contents_getter, - int frame_tree_node_id, + content::FrameTreeNodeId frame_tree_node_id, const network::ResourceRequest& request, const base::RepeatingClosure& unhandled_request_callback); diff --git a/libcef/browser/osr/osr_accessibility_util.cc b/libcef/browser/osr/osr_accessibility_util.cc index c9ee9f93d..45370c005 100644 --- a/libcef/browser/osr/osr_accessibility_util.cc +++ b/libcef/browser/osr/osr_accessibility_util.cc @@ -107,7 +107,7 @@ struct PopulateAxNodeAttributes { case ax::mojom::IntAttribute::kActivedescendantId: case ax::mojom::IntAttribute::kInPageLinkTargetId: case ax::mojom::IntAttribute::kErrormessageIdDeprecated: - case ax::mojom::IntAttribute::kDOMNodeId: + case ax::mojom::IntAttribute::kDOMNodeIdDeprecated: case ax::mojom::IntAttribute::kDropeffectDeprecated: case ax::mojom::IntAttribute::kMemberOfId: case ax::mojom::IntAttribute::kNextFocusId: diff --git a/libcef/browser/permission_prompt.cc b/libcef/browser/permission_prompt.cc index ece99d6fd..46bc28c1f 100644 --- a/libcef/browser/permission_prompt.cc +++ b/libcef/browser/permission_prompt.cc @@ -208,6 +208,8 @@ cef_permission_request_types_t GetCefRequestType( return CEF_PERMISSION_TYPE_LOCAL_FONTS; case permissions::RequestType::kGeolocation: return CEF_PERMISSION_TYPE_GEOLOCATION; + case permissions::RequestType::kHandTracking: + return CEF_PERMISSION_TYPE_HAND_TRACKING; case permissions::RequestType::kIdentityProvider: return CEF_PERMISSION_TYPE_IDENTITY_PROVIDER; case permissions::RequestType::kIdleDetection: @@ -236,6 +238,8 @@ cef_permission_request_types_t GetCefRequestType( return CEF_PERMISSION_TYPE_TOP_LEVEL_STORAGE_ACCESS; case permissions::RequestType::kVrSession: return CEF_PERMISSION_TYPE_VR_SESSION; + case permissions::RequestType::kWebAppInstallation: + return CEF_PERMISSION_TYPE_WEB_APP_INSTALLATION; case permissions::RequestType::kWindowManagement: return CEF_PERMISSION_TYPE_WINDOW_MANAGEMENT; case permissions::RequestType::kFileSystemAccess: diff --git a/libcef_dll/cpptoc/views/window_delegate_cpptoc.cc b/libcef_dll/cpptoc/views/window_delegate_cpptoc.cc index 2b917681b..0ea15fe05 100644 --- a/libcef_dll/cpptoc/views/window_delegate_cpptoc.cc +++ b/libcef_dll/cpptoc/views/window_delegate_cpptoc.cc @@ -13,6 +13,7 @@ // #include "libcef_dll/cpptoc/views/window_delegate_cpptoc.h" + #include "libcef_dll/ctocpp/views/view_ctocpp.h" #include "libcef_dll/ctocpp/views/window_ctocpp.h" #include "libcef_dll/shutdown_checker.h" diff --git a/libcef_dll/ctocpp/views/window_delegate_ctocpp.cc b/libcef_dll/ctocpp/views/window_delegate_ctocpp.cc index 4a78c4d8f..a686632b1 100644 --- a/libcef_dll/ctocpp/views/window_delegate_ctocpp.cc +++ b/libcef_dll/ctocpp/views/window_delegate_ctocpp.cc @@ -13,6 +13,7 @@ // #include "libcef_dll/ctocpp/views/window_delegate_ctocpp.h" + #include "libcef_dll/cpptoc/views/view_cpptoc.h" #include "libcef_dll/cpptoc/views/window_cpptoc.h" #include "libcef_dll/shutdown_checker.h" diff --git a/patch/patch.cfg b/patch/patch.cfg index 151a25779..d2bdfffc6 100644 --- a/patch/patch.cfg +++ b/patch/patch.cfg @@ -184,6 +184,11 @@ patches = [ # # Route |parent_widget| to MenuHost for OSR context menu Widget creation. # https://github.com/chromiumembedded/cef/issues/3330 + # + # Make views::View::GetHeightForWidth virtual so that it can be overridden + # by CefViewView. Alternately, we could implement the same functionality + # by removing CefViewDelegate::GetHeightForWidth and adding an optional + # |available_size| argument to CefViewDelegate::GetPreferredSize. 'name': 'views_1749_2102_3330', }, { @@ -230,6 +235,13 @@ patches = [ # Linux: Fix duplicate symbol error for tab_network_state.cc # https://issuetracker.google.com/issues/353628440#comment8 # + # Linux: Fix duplicate symbol error for automation_manager_aura.cc + # https://chromium-review.googlesource.com/c/chromium/src/+/5893679 + # + # Linux: Fix duplicate symbol error for + # chrome_bluetooth_chooser_controller.cc + # https://chromium-review.googlesource.com/c/chromium/src/+/5894080 + # # Avoid duplicate window from DevTools when CEF handles the open via # OnOpenURLFromTab. # https://github.com/chromiumembedded/cef/issues/3735 @@ -741,8 +753,8 @@ patches = [ 'name': 'third_party_sentencepiece_3616' }, { - # Windows: Add missing check in base/profiler/stack_copier.cc to fix - # compilation error of cef_sandbox. - 'name': 'win_sandbox_stack_copier' + # win: Add missing include for cef_sandbox build. + # https://chromium-review.googlesource.com/c/chromium/src/+/5891459 + 'name': 'win_base_pa_oom_5891459' } ] diff --git a/patch/patches/base_command_line_1872.patch b/patch/patches/base_command_line_1872.patch index 0be93382b..1d949eafe 100644 --- a/patch/patches/base_command_line_1872.patch +++ b/patch/patches/base_command_line_1872.patch @@ -1,5 +1,5 @@ diff --git base/command_line.cc base/command_line.cc -index 853a7fa23c725..33654c0b63dc1 100644 +index fd6792a0599e2..4cf7bb3ceb226 100644 --- base/command_line.cc +++ base/command_line.cc @@ -389,11 +389,10 @@ void CommandLine::AppendSwitchNative(std::string_view switch_string, diff --git a/patch/patches/base_sandbox_2743.patch b/patch/patches/base_sandbox_2743.patch index 26562640e..2858e667c 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 2561c2726d27e..f666f5b804c4c 100644 +index d6dbc2c38b401..0e0a5cc086291 100644 --- base/BUILD.gn +++ base/BUILD.gn @@ -41,6 +41,7 @@ import("//build/nocompile.gni") @@ -10,7 +10,7 @@ index 2561c2726d27e..f666f5b804c4c 100644 import("//testing/libfuzzer/fuzzer_test.gni") import("//testing/test.gni") -@@ -1519,7 +1520,11 @@ component("base") { +@@ -1507,7 +1508,11 @@ component("base") { "hash/md5_constexpr_internal.h", "hash/sha1.h", ] @@ -23,7 +23,7 @@ index 2561c2726d27e..f666f5b804c4c 100644 sources += [ "hash/md5_nacl.cc", "hash/md5_nacl.h", -@@ -1942,6 +1947,12 @@ component("base") { +@@ -1932,6 +1937,12 @@ component("base") { defines += [ "COM_INIT_CHECK_HOOK_DISABLED" ] } diff --git a/patch/patches/base_test_4396276.patch b/patch/patches/base_test_4396276.patch index 985122b65..5229451ea 100644 --- a/patch/patches/base_test_4396276.patch +++ b/patch/patches/base_test_4396276.patch @@ -1,5 +1,5 @@ diff --git base/test/BUILD.gn base/test/BUILD.gn -index 911214ce799e0..82a59c4aa396d 100644 +index d26f4d09dd3dd..155814bff8425 100644 --- base/test/BUILD.gn +++ base/test/BUILD.gn @@ -199,11 +199,6 @@ static_library("test_support") { @@ -14,7 +14,7 @@ index 911214ce799e0..82a59c4aa396d 100644 deps += [ ":amalgamated_perfetto_sql_stdlib", ":gen_cc_chrome_track_event_descriptor", -@@ -583,7 +578,7 @@ if (enable_base_tracing) { +@@ -596,7 +591,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 911214ce799e0..82a59c4aa396d 100644 if (is_ios) { _target_type = "ios_framework_bundle" } -@@ -592,6 +587,8 @@ if (enable_base_tracing) { +@@ -605,6 +600,8 @@ if (enable_base_tracing) { defines = [ "TEST_TRACE_PROCESSOR_IMPL" ] testonly = true sources = [ @@ -32,7 +32,7 @@ index 911214ce799e0..82a59c4aa396d 100644 "test_trace_processor_export.h", "test_trace_processor_impl.cc", "test_trace_processor_impl.h", -@@ -609,33 +606,6 @@ if (enable_base_tracing) { +@@ -622,33 +619,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 9a7d9bf1ab786..e6dd973951c9b 100644 +index 67a897af9cee3..f48b22d8f2e00 100644 --- content/shell/BUILD.gn +++ content/shell/BUILD.gn -@@ -910,7 +910,6 @@ if (is_mac) { +@@ -912,7 +912,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 a3262c2f1..7c671c0d1 100644 --- a/patch/patches/blink_web_element_4200240.patch +++ b/patch/patches/blink_web_element_4200240.patch @@ -13,7 +13,7 @@ index 023ce7091b061..f175b3683f48f 100644 // Returns true if the element's computed writing suggestions value is true. // https://html.spec.whatwg.org/#writing-suggestions:computed-writing-suggestions-value diff --git third_party/blink/renderer/core/exported/web_element.cc third_party/blink/renderer/core/exported/web_element.cc -index da6ab6488ad80..7b23243e21a61 100644 +index def4b446fcbbb..d48998241f604 100644 --- third_party/blink/renderer/core/exported/web_element.cc +++ third_party/blink/renderer/core/exported/web_element.cc @@ -119,6 +119,24 @@ void WebElement::SetAttribute(const WebString& attr_name, diff --git a/patch/patches/browser_scheduler.patch b/patch/patches/browser_scheduler.patch index 6cd5852d3..0cad744fa 100644 --- a/patch/patches/browser_scheduler.patch +++ b/patch/patches/browser_scheduler.patch @@ -1,5 +1,5 @@ diff --git content/browser/scheduler/browser_task_executor.cc content/browser/scheduler/browser_task_executor.cc -index e8283fc396ec7..527e81fac898a 100644 +index 9572bef1de74f..8d67dc7ceca2e 100644 --- content/browser/scheduler/browser_task_executor.cc +++ content/browser/scheduler/browser_task_executor.cc @@ -209,7 +209,7 @@ BrowserTaskExecutor::OnUserInputStart() { diff --git a/patch/patches/browser_security_policy_1081397.patch b/patch/patches/browser_security_policy_1081397.patch index 74364bce0..3abcab06c 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 a5166365d192e..6ba33fc49d1a5 100644 +index 1bf903af89b3c..5471355376272 100644 --- content/browser/child_process_security_policy_impl.cc +++ content/browser/child_process_security_policy_impl.cc -@@ -2083,6 +2083,17 @@ bool ChildProcessSecurityPolicyImpl::CanAccessMaybeOpaqueOrigin( +@@ -2084,6 +2084,17 @@ bool ChildProcessSecurityPolicyImpl::CanAccessMaybeOpaqueOrigin( // DeclarativeApiTest.PersistRules. if (actual_process_lock.matches_scheme(url::kDataScheme)) return true; @@ -21,10 +21,10 @@ index a5166365d192e..6ba33fc49d1a5 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 877d0240bc916..f122939b9870f 100644 +index e6b11183c78bd..e6082d8873a0b 100644 --- content/browser/renderer_host/navigation_request.cc +++ content/browser/renderer_host/navigation_request.cc -@@ -8215,10 +8215,22 @@ NavigationRequest::GetOriginForURLLoaderFactoryBeforeResponseWithDebugInfo( +@@ -8210,10 +8210,22 @@ NavigationRequest::GetOriginForURLLoaderFactoryBeforeResponseWithDebugInfo( bool use_opaque_origin = (sandbox_flags & network::mojom::WebSandboxFlags::kOrigin) == network::mojom::WebSandboxFlags::kOrigin; @@ -48,7 +48,7 @@ index 877d0240bc916..f122939b9870f 100644 } return origin_and_debug_info; -@@ -8326,6 +8338,15 @@ NavigationRequest::GetOriginForURLLoaderFactoryAfterResponseWithDebugInfo() { +@@ -8321,6 +8333,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 42d17845c..e6cabf164 100644 --- a/patch/patches/build.patch +++ b/patch/patches/build.patch @@ -1,5 +1,5 @@ diff --git build/config/compiler/BUILD.gn build/config/compiler/BUILD.gn -index 3b809a3c065f6..d9a5b328db5ed 100644 +index 5ec7492e06838..b22b50e8f175d 100644 --- build/config/compiler/BUILD.gn +++ build/config/compiler/BUILD.gn @@ -134,6 +134,9 @@ declare_args() { @@ -12,7 +12,7 @@ index 3b809a3c065f6..d9a5b328db5ed 100644 # Initialize all local variables with a pattern. This flag will fill # uninitialized floating-point types (and 32-bit pointers) with 0xFF and the # rest with 0xAA. This makes behavior of uninitialized memory bugs consistent, -@@ -2260,11 +2263,13 @@ config("export_dynamic") { +@@ -2267,11 +2270,13 @@ config("export_dynamic") { config("thin_archive") { # The macOS and iOS default linker ld64 does not support reading thin # archives. diff --git a/patch/patches/chrome_browser.patch b/patch/patches/chrome_browser.patch index 45baa7f9a..cd39f3d65 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 59773d1765744..fded83a261c4b 100644 +index dd5c9db43d693..9a158633310fc 100644 --- chrome/browser/BUILD.gn +++ chrome/browser/BUILD.gn @@ -12,6 +12,7 @@ import("//build/config/compiler/pgo/pgo.gni") @@ -10,7 +10,7 @@ index 59773d1765744..fded83a261c4b 100644 import("//chrome/browser/buildflags.gni") import("//chrome/browser/downgrade/buildflags.gni") import("//chrome/browser/request_header_integrity/buildflags.gni") -@@ -1899,6 +1900,7 @@ static_library("browser") { +@@ -1880,6 +1881,7 @@ static_library("browser") { "//build/config/chromebox_for_meetings:buildflags", "//build/config/compiler:compiler_buildflags", "//cc", @@ -18,7 +18,7 @@ index 59773d1765744..fded83a261c4b 100644 "//chrome:extra_resources", "//chrome:resources", "//chrome:strings", -@@ -2514,6 +2516,10 @@ static_library("browser") { +@@ -2524,6 +2526,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 61cfc1c30..2820eabd4 100644 --- a/patch/patches/chrome_browser_background_mode_1100085.patch +++ b/patch/patches/chrome_browser_background_mode_1100085.patch @@ -14,10 +14,10 @@ index b7abca02f48f8..b595e9daa40eb 100644 std::unique_ptr manager) = 0; #endif diff --git chrome/browser/browser_process_impl.cc chrome/browser/browser_process_impl.cc -index 126516f5d5c28..ed8c126e78156 100644 +index 4de58876a9947..d1b0319482293 100644 --- chrome/browser/browser_process_impl.cc +++ chrome/browser/browser_process_impl.cc -@@ -1111,18 +1111,14 @@ DownloadRequestLimiter* BrowserProcessImpl::download_request_limiter() { +@@ -1141,18 +1141,14 @@ DownloadRequestLimiter* BrowserProcessImpl::download_request_limiter() { return download_request_limiter_.get(); } @@ -38,7 +38,7 @@ index 126516f5d5c28..ed8c126e78156 100644 std::unique_ptr manager) { background_mode_manager_ = std::move(manager); diff --git chrome/browser/browser_process_impl.h chrome/browser/browser_process_impl.h -index c73845ee5a52e..b60e60050666f 100644 +index 9b6380d7fe36c..839558f24a06e 100644 --- chrome/browser/browser_process_impl.h +++ chrome/browser/browser_process_impl.h @@ -193,8 +193,8 @@ class BrowserProcessImpl : public BrowserProcess, @@ -52,10 +52,10 @@ index c73845ee5a52e..b60e60050666f 100644 std::unique_ptr manager) override; #endif diff --git chrome/browser/lifetime/browser_close_manager.cc chrome/browser/lifetime/browser_close_manager.cc -index bfffa272e6458..460a35e0c708f 100644 +index 173f85fa144a1..43b8f2e2a18db 100644 --- chrome/browser/lifetime/browser_close_manager.cc +++ chrome/browser/lifetime/browser_close_manager.cc -@@ -158,12 +158,14 @@ void BrowserCloseManager::CloseBrowsers() { +@@ -158,6 +158,7 @@ void BrowserCloseManager::CloseBrowsers() { // exit can restore all browsers open before exiting. ProfileManager::ShutdownSessionServices(); #endif @@ -63,8 +63,9 @@ index bfffa272e6458..460a35e0c708f 100644 if (!browser_shutdown::IsTryingToQuit()) { BackgroundModeManager* background_mode_manager = g_browser_process->background_mode_manager(); - if (background_mode_manager) +@@ -165,6 +166,7 @@ void BrowserCloseManager::CloseBrowsers() { background_mode_manager->SuspendBackgroundMode(); + } } +#endif diff --git a/patch/patches/chrome_browser_browser.patch b/patch/patches/chrome_browser_browser.patch index 02f31042b..8672e88c3 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 9b388234f3dfe..95faf0c837833 100644 +index b4a11f0509df7..04f615abc4404 100644 --- chrome/browser/devtools/devtools_window.cc +++ chrome/browser/devtools/devtools_window.cc @@ -38,6 +38,7 @@ @@ -24,7 +24,7 @@ index 9b388234f3dfe..95faf0c837833 100644 #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/browser_tabstrip.h" #include "chrome/browser/ui/browser_window.h" -@@ -1225,6 +1226,13 @@ DevToolsWindow* DevToolsWindow::Create( +@@ -1223,6 +1224,13 @@ DevToolsWindow* DevToolsWindow::Create( !browser->is_type_normal()) { can_dock = false; } @@ -38,7 +38,7 @@ index 9b388234f3dfe..95faf0c837833 100644 } // Create WebContents with devtools. -@@ -1688,9 +1696,13 @@ void DevToolsWindow::OpenInNewTab(const GURL& url) { +@@ -1687,9 +1695,13 @@ void DevToolsWindow::OpenInNewTab(const GURL& url) { if (!inspected_web_contents || !inspected_web_contents->OpenURL(params, /*navigation_handle_callback=*/{})) { @@ -52,7 +52,7 @@ index 9b388234f3dfe..95faf0c837833 100644 } } -@@ -1853,12 +1865,28 @@ void DevToolsWindow::CreateDevToolsBrowser() { +@@ -1852,12 +1864,28 @@ void DevToolsWindow::CreateDevToolsBrowser() { Browser::CreationStatus::kOk) { return; } @@ -88,7 +88,7 @@ index 9b388234f3dfe..95faf0c837833 100644 } diff --git chrome/browser/ui/BUILD.gn chrome/browser/ui/BUILD.gn -index 94bcf99cf9e89..3e71e3189c290 100644 +index bc6e4008f2c5a..1b6b33e96b46c 100644 --- chrome/browser/ui/BUILD.gn +++ chrome/browser/ui/BUILD.gn @@ -8,6 +8,7 @@ import("//build/config/compiler/compiler.gni") @@ -99,7 +99,7 @@ index 94bcf99cf9e89..3e71e3189c290 100644 import("//chrome/browser/buildflags.gni") import("//chrome/common/features.gni") import("//chromeos/ash/components/assistant/assistant.gni") -@@ -409,6 +410,10 @@ static_library("ui") { +@@ -354,6 +355,10 @@ static_library("ui") { "//build/config/compiler:wexit_time_destructors", ] @@ -110,7 +110,7 @@ index 94bcf99cf9e89..3e71e3189c290 100644 public_deps = [ # WARNING WARNING WARNING # New dependencies outside of //chrome/browser should be added to -@@ -434,6 +439,7 @@ static_library("ui") { +@@ -379,6 +384,7 @@ static_library("ui") { "//build:chromeos_buildflags", "//build/config/chromebox_for_meetings:buildflags", "//cc/paint", @@ -118,7 +118,7 @@ index 94bcf99cf9e89..3e71e3189c290 100644 "//chrome:resources", "//chrome:strings", "//chrome/app:chrome_dll_resources", -@@ -744,6 +750,10 @@ static_library("ui") { +@@ -717,6 +723,10 @@ static_library("ui") { deps += [ "//components/plus_addresses/resources:vector_icons" ] } @@ -129,7 +129,16 @@ index 94bcf99cf9e89..3e71e3189c290 100644 # TODO(crbug.com/41437292): Remove this circular dependency. # Any circular includes must depend on the target "//chrome/browser:browser_public_dependencies". # These are all-platform circular includes. -@@ -1528,7 +1538,6 @@ static_library("ui") { +@@ -1009,8 +1019,6 @@ static_library("ui") { + sources += [ + "app_icon_loader.cc", + "app_icon_loader.h", +- "bluetooth/chrome_bluetooth_chooser_controller.cc", +- "bluetooth/chrome_bluetooth_chooser_controller.h", + "bookmarks/bookmark_bar.h", + "bookmarks/bookmark_context_menu_controller.cc", + "bookmarks/bookmark_context_menu_controller.h", +@@ -1466,7 +1474,6 @@ static_library("ui") { "tabs/tab_menu_model_factory.h", "tabs/tab_model.cc", "tabs/tab_model.h", @@ -137,16 +146,25 @@ index 94bcf99cf9e89..3e71e3189c290 100644 "tabs/tab_network_state.h", "tabs/tab_renderer_data.cc", "tabs/tab_renderer_data.h", -@@ -3236,8 +3245,6 @@ static_library("ui") { - "autofill/payments/webauthn_dialog_model.h", - "autofill/payments/webauthn_dialog_model_observer.h", - "autofill/payments/webauthn_dialog_state.h", +@@ -3208,8 +3215,6 @@ static_library("ui") { + + if (is_win || is_mac || is_linux || is_chromeos) { + sources += [ - "frame/window_frame_util.cc", - "frame/window_frame_util.h", "incognito_clear_browsing_data_dialog_interface.h", "passwords/password_cross_domain_confirmation_popup_controller_impl.cc", "passwords/password_cross_domain_confirmation_popup_controller_impl.h", -@@ -5875,6 +5882,7 @@ static_library("ui") { +@@ -5535,8 +5540,6 @@ static_library("ui") { + + if (use_aura) { + sources += [ +- "aura/accessibility/automation_manager_aura.cc", +- "aura/accessibility/automation_manager_aura.h", + "overscroll_pref_manager.cc", + "overscroll_pref_manager.h", + "views/accelerator_utils_aura.cc", +@@ -5788,6 +5791,7 @@ static_library("ui") { if (enable_printing) { deps += [ "//components/printing/browser", @@ -155,7 +173,7 @@ index 94bcf99cf9e89..3e71e3189c290 100644 ] } diff --git chrome/browser/ui/browser.cc chrome/browser/ui/browser.cc -index dc07c5029aa49..57d979ff377d6 100644 +index e1ebde9b491c3..ce2a8d8a79747 100644 --- chrome/browser/ui/browser.cc +++ chrome/browser/ui/browser.cc @@ -272,6 +272,25 @@ @@ -195,7 +213,7 @@ index dc07c5029aa49..57d979ff377d6 100644 tab_strip_model_delegate_( std::make_unique(this)), tab_strip_model_(std::make_unique( -@@ -775,6 +798,12 @@ Browser::~Browser() { +@@ -763,6 +786,12 @@ Browser::~Browser() { // away so they don't try and call back to us. if (select_file_dialog_.get()) select_file_dialog_->ListenerDestroyed(); @@ -208,7 +226,7 @@ index dc07c5029aa49..57d979ff377d6 100644 } /////////////////////////////////////////////////////////////////////////////// -@@ -1299,6 +1328,8 @@ void Browser::WindowFullscreenStateChanged() { +@@ -1305,6 +1334,8 @@ void Browser::WindowFullscreenStateChanged() { ->WindowFullscreenStateChanged(); command_controller_->FullscreenStateChanged(); UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_TOGGLE_FULLSCREEN); @@ -217,7 +235,7 @@ index dc07c5029aa49..57d979ff377d6 100644 } void Browser::FullscreenTopUIStateChanged() { -@@ -1672,6 +1703,14 @@ content::KeyboardEventProcessingResult Browser::PreHandleKeyboardEvent( +@@ -1635,6 +1666,14 @@ content::KeyboardEventProcessingResult Browser::PreHandleKeyboardEvent( if (exclusive_access_manager_->HandleUserKeyEvent(event)) return content::KeyboardEventProcessingResult::HANDLED; @@ -232,7 +250,7 @@ index dc07c5029aa49..57d979ff377d6 100644 return window()->PreHandleKeyboardEvent(event); } -@@ -1679,8 +1718,18 @@ bool Browser::HandleKeyboardEvent(content::WebContents* source, +@@ -1642,8 +1681,18 @@ bool Browser::HandleKeyboardEvent(content::WebContents* source, const NativeWebKeyboardEvent& event) { DevToolsWindow* devtools_window = DevToolsWindow::GetInstanceForInspectedWebContents(source); @@ -253,9 +271,9 @@ index dc07c5029aa49..57d979ff377d6 100644 } bool Browser::TabsNeedBeforeUnloadFired() const { -@@ -1842,6 +1891,14 @@ WebContents* Browser::OpenURLFromTab( +@@ -1798,6 +1847,14 @@ WebContents* Browser::OpenURLFromTab( + std::move(navigation_handle_callback)); } - #endif // BUILDFLAG(IS_CHROMEOS_ASH) +#if BUILDFLAG(ENABLE_CEF) + if (cef_browser_delegate_ && @@ -268,7 +286,7 @@ index dc07c5029aa49..57d979ff377d6 100644 NavigateParams nav_params(this, params.url, params.transition); nav_params.FillNavigateParamsFromOpenURLParams(params); nav_params.source_contents = source; -@@ -2005,6 +2062,8 @@ void Browser::LoadingStateChanged(WebContents* source, +@@ -1964,6 +2021,8 @@ void Browser::LoadingStateChanged(WebContents* source, bool should_show_loading_ui) { ScheduleUIUpdate(source, content::INVALIDATE_TYPE_LOAD); UpdateWindowForLoadingStateChanged(source, should_show_loading_ui); @@ -277,7 +295,7 @@ index dc07c5029aa49..57d979ff377d6 100644 } void Browser::CloseContents(WebContents* source) { -@@ -2033,6 +2092,8 @@ void Browser::SetContentsBounds(WebContents* source, const gfx::Rect& bounds) { +@@ -1992,6 +2051,8 @@ void Browser::SetContentsBounds(WebContents* source, const gfx::Rect& bounds) { } void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { @@ -286,7 +304,7 @@ index dc07c5029aa49..57d979ff377d6 100644 if (!GetStatusBubble()) return; -@@ -2040,6 +2101,17 @@ void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { +@@ -1999,6 +2060,17 @@ void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { GetStatusBubble()->SetURL(url); } @@ -304,7 +322,7 @@ index dc07c5029aa49..57d979ff377d6 100644 void Browser::ContentsMouseEvent(WebContents* source, const ui::Event& event) { const ui::EventType type = event.type(); const bool exited = type == ui::EventType::kMouseExited; -@@ -2068,6 +2140,19 @@ bool Browser::TakeFocus(content::WebContents* source, bool reverse) { +@@ -2027,6 +2099,19 @@ bool Browser::TakeFocus(content::WebContents* source, bool reverse) { return false; } @@ -324,7 +342,7 @@ index dc07c5029aa49..57d979ff377d6 100644 void Browser::BeforeUnloadFired(WebContents* web_contents, bool proceed, bool* proceed_to_fire_unload) { -@@ -2167,12 +2252,24 @@ void Browser::WebContentsCreated(WebContents* source_contents, +@@ -2126,12 +2211,24 @@ void Browser::WebContentsCreated(WebContents* source_contents, // Make the tab show up in the task manager. task_manager::WebContentsTags::CreateForTabContents(new_contents); @@ -349,7 +367,7 @@ index dc07c5029aa49..57d979ff377d6 100644 // Don't show the page hung dialog when a HTML popup hangs because // the dialog will take the focus and immediately close the popup. RenderWidgetHostView* view = render_widget_host->GetView(); -@@ -2185,6 +2282,13 @@ void Browser::RendererUnresponsive( +@@ -2144,6 +2241,13 @@ void Browser::RendererUnresponsive( void Browser::RendererResponsive( WebContents* source, content::RenderWidgetHost* render_widget_host) { @@ -363,7 +381,7 @@ index dc07c5029aa49..57d979ff377d6 100644 RenderWidgetHostView* view = render_widget_host->GetView(); if (view && !render_widget_host->GetView()->IsHTMLFormPopup()) { TabDialogs::FromWebContents(source)->HideHungRendererDialog( -@@ -2194,6 +2298,15 @@ void Browser::RendererResponsive( +@@ -2153,6 +2257,15 @@ void Browser::RendererResponsive( content::JavaScriptDialogManager* Browser::GetJavaScriptDialogManager( WebContents* source) { @@ -379,7 +397,7 @@ index dc07c5029aa49..57d979ff377d6 100644 return javascript_dialogs::TabModalDialogManager::FromWebContents(source); } -@@ -2229,6 +2342,11 @@ void Browser::DraggableRegionsChanged( +@@ -2188,6 +2301,11 @@ void Browser::DraggableRegionsChanged( if (app_controller_) { app_controller_->DraggableRegionsChanged(regions, contents); } @@ -391,7 +409,7 @@ index dc07c5029aa49..57d979ff377d6 100644 } void Browser::DidFinishNavigation( -@@ -2309,11 +2427,15 @@ void Browser::EnterFullscreenModeForTab( +@@ -2268,11 +2386,15 @@ void Browser::EnterFullscreenModeForTab( const blink::mojom::FullscreenOptions& options) { exclusive_access_manager_->fullscreen_controller()->EnterFullscreenModeForTab( requesting_frame, options.display_id); @@ -407,7 +425,7 @@ index dc07c5029aa49..57d979ff377d6 100644 } bool Browser::IsFullscreenForTabOrPending(const WebContents* web_contents) { -@@ -2513,6 +2635,15 @@ void Browser::RequestMediaAccessPermission( +@@ -2470,6 +2592,15 @@ void Browser::RequestMediaAccessPermission( content::WebContents* web_contents, const content::MediaStreamRequest& request, content::MediaResponseCallback callback) { @@ -423,7 +441,7 @@ index dc07c5029aa49..57d979ff377d6 100644 const extensions::Extension* extension = GetExtensionForOrigin(profile_, request.security_origin); MediaCaptureDevicesDispatcher::GetInstance()->ProcessMediaAccessRequest( -@@ -3069,9 +3200,10 @@ void Browser::RemoveScheduledUpdatesFor(WebContents* contents) { +@@ -3026,9 +3157,10 @@ void Browser::RemoveScheduledUpdatesFor(WebContents* contents) { // Browser, Getters for UI (private): StatusBubble* Browser::GetStatusBubble() { @@ -435,7 +453,7 @@ index dc07c5029aa49..57d979ff377d6 100644 } // We hide the status bar for web apps windows as this matches native -@@ -3079,6 +3211,12 @@ StatusBubble* Browser::GetStatusBubble() { +@@ -3036,6 +3168,12 @@ StatusBubble* Browser::GetStatusBubble() { // mode, as the minimal browser UI includes the status bar. if (web_app::AppBrowserController::IsWebApp(this) && !app_controller()->HasMinimalUiButtons()) { @@ -448,7 +466,7 @@ index dc07c5029aa49..57d979ff377d6 100644 return nullptr; } -@@ -3228,6 +3366,8 @@ void Browser::SetAsDelegate(WebContents* web_contents, bool set_delegate) { +@@ -3185,6 +3323,8 @@ void Browser::SetAsDelegate(WebContents* web_contents, bool set_delegate) { BookmarkTabHelper::FromWebContents(web_contents)->RemoveObserver(this); web_contents_collection_.StopObserving(web_contents); } @@ -457,7 +475,7 @@ index dc07c5029aa49..57d979ff377d6 100644 } void Browser::TabDetachedAtImpl(content::WebContents* contents, -@@ -3382,6 +3522,14 @@ bool Browser::PictureInPictureBrowserSupportsWindowFeature( +@@ -3339,6 +3479,14 @@ bool Browser::PictureInPictureBrowserSupportsWindowFeature( bool Browser::SupportsWindowFeatureImpl(WindowFeature feature, bool check_can_support) const { @@ -473,7 +491,7 @@ index dc07c5029aa49..57d979ff377d6 100644 case TYPE_NORMAL: return NormalBrowserSupportsWindowFeature(feature, check_can_support); diff --git chrome/browser/ui/browser.h chrome/browser/ui/browser.h -index 9081a0ed32b64..5fc21fd1c33a4 100644 +index 85b6845aa871c..b2975ce19ac95 100644 --- chrome/browser/ui/browser.h +++ chrome/browser/ui/browser.h @@ -24,6 +24,7 @@ @@ -495,7 +513,7 @@ index 9081a0ed32b64..5fc21fd1c33a4 100644 #if BUILDFLAG(IS_ANDROID) #error This file should only be included on desktop. #endif -@@ -335,6 +340,15 @@ class Browser : public TabStripModelObserver, +@@ -337,6 +342,15 @@ class Browser : public TabStripModelObserver, // Document Picture in Picture options, specific to TYPE_PICTURE_IN_PICTURE. std::optional pip_options; @@ -511,7 +529,7 @@ index 9081a0ed32b64..5fc21fd1c33a4 100644 private: friend class Browser; friend class WindowSizerChromeOSTest; -@@ -416,6 +430,13 @@ class Browser : public TabStripModelObserver, +@@ -418,6 +432,13 @@ class Browser : public TabStripModelObserver, update_ui_immediately_for_testing_ = true; } @@ -525,7 +543,7 @@ index 9081a0ed32b64..5fc21fd1c33a4 100644 // Accessors //////////////////////////////////////////////////////////////// const CreateParams& create_params() const { return create_params_; } -@@ -511,6 +532,12 @@ class Browser : public TabStripModelObserver, +@@ -519,6 +540,12 @@ class Browser : public TabStripModelObserver, base::WeakPtr AsWeakPtr(); base::WeakPtr AsWeakPtr() const; @@ -538,7 +556,7 @@ index 9081a0ed32b64..5fc21fd1c33a4 100644 // Get the FindBarController for this browser, creating it if it does not // yet exist. FindBarController* GetFindBarController(); -@@ -940,10 +967,18 @@ class Browser : public TabStripModelObserver, +@@ -947,10 +974,18 @@ class Browser : public TabStripModelObserver, void SetContentsBounds(content::WebContents* source, const gfx::Rect& bounds) override; void UpdateTargetURL(content::WebContents* source, const GURL& url) override; @@ -557,7 +575,7 @@ index 9081a0ed32b64..5fc21fd1c33a4 100644 void BeforeUnloadFired(content::WebContents* source, bool proceed, bool* proceed_to_fire_unload) override; -@@ -1280,6 +1315,10 @@ class Browser : public TabStripModelObserver, +@@ -1285,6 +1320,10 @@ class Browser : public TabStripModelObserver, // This Browser's window. raw_ptr window_; @@ -568,7 +586,7 @@ index 9081a0ed32b64..5fc21fd1c33a4 100644 std::unique_ptr const tab_strip_model_delegate_; std::unique_ptr const tab_strip_model_; -@@ -1346,6 +1385,8 @@ class Browser : public TabStripModelObserver, +@@ -1351,6 +1390,8 @@ class Browser : public TabStripModelObserver, const std::string initial_workspace_; bool initial_visible_on_all_workspaces_state_; @@ -578,10 +596,10 @@ index 9081a0ed32b64..5fc21fd1c33a4 100644 UnloadController unload_controller_; diff --git chrome/browser/ui/browser_navigator.cc chrome/browser/ui/browser_navigator.cc -index 31e27cfa516bc..e98078bf64c61 100644 +index 061432f5974e1..46de9334a4daa 100644 --- chrome/browser/ui/browser_navigator.cc +++ chrome/browser/ui/browser_navigator.cc -@@ -263,6 +263,10 @@ std::pair GetBrowserAndTabForDisposition( +@@ -270,6 +270,10 @@ std::tuple GetBrowserAndTabForDisposition( browser_params.pip_options = pip_options; @@ -592,7 +610,7 @@ index 31e27cfa516bc..e98078bf64c61 100644 const BrowserWindow* const browser_window = params.browser->window(); const gfx::NativeWindow native_window = browser_window ? browser_window->GetNativeWindow() -@@ -551,6 +555,13 @@ std::unique_ptr CreateTargetContents( +@@ -558,6 +562,13 @@ std::unique_ptr CreateTargetContents( std::unique_ptr target_contents = WebContents::Create(create_params); @@ -607,7 +625,7 @@ index 31e27cfa516bc..e98078bf64c61 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 e12f401ab7d11..59222cc9601ba 100644 +index e4b6094c5197e..4d2d12ae5725e 100644 --- chrome/browser/ui/browser_tabstrip.cc +++ chrome/browser/ui/browser_tabstrip.cc @@ -33,9 +33,13 @@ content::WebContents* AddAndReturnTabAt( @@ -625,7 +643,7 @@ index e12f401ab7d11..59222cc9601ba 100644 params.disposition = foreground ? WindowOpenDisposition::NEW_FOREGROUND_TAB : WindowOpenDisposition::NEW_BACKGROUND_TAB; params.tabstrip_index = idx; -@@ -81,6 +85,16 @@ void AddWebContents(Browser* browser, +@@ -82,6 +86,16 @@ content::WebContents* AddWebContents( // Can't create a new contents for the current tab - invalid case. DCHECK(disposition != WindowOpenDisposition::CURRENT_TAB); @@ -634,7 +652,7 @@ index e12f401ab7d11..59222cc9601ba 100644 + new_contents = browser->cef_delegate()->AddWebContents( + std::move(new_contents)); + if (!new_contents) { -+ return; ++ return nullptr; + } + } +#endif diff --git a/patch/patches/chrome_browser_content_settings.patch b/patch/patches/chrome_browser_content_settings.patch index 67e56baf2..ffc650954 100644 --- a/patch/patches/chrome_browser_content_settings.patch +++ b/patch/patches/chrome_browser_content_settings.patch @@ -1,8 +1,8 @@ diff --git components/content_settings/renderer/content_settings_agent_impl.cc components/content_settings/renderer/content_settings_agent_impl.cc -index fdc02b8b65544..825dba69168e3 100644 +index ba73101c05be3..f30ed2f3e9ab1 100644 --- components/content_settings/renderer/content_settings_agent_impl.cc +++ components/content_settings/renderer/content_settings_agent_impl.cc -@@ -148,7 +148,7 @@ ContentSetting GetContentSettingFromRules( +@@ -146,7 +146,7 @@ ContentSetting GetContentSettingFromRules( return rule.GetContentSetting(); } } diff --git a/patch/patches/chrome_browser_context_menus.patch b/patch/patches/chrome_browser_context_menus.patch index b41cff6cd..ee6f4b5a6 100644 --- a/patch/patches/chrome_browser_context_menus.patch +++ b/patch/patches/chrome_browser_context_menus.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/renderer_context_menu/render_view_context_menu.cc chrome/browser/renderer_context_menu/render_view_context_menu.cc -index aad2abb0c249a..09c7d5313dea0 100644 +index 348128d804493..5d893c71e55ea 100644 --- chrome/browser/renderer_context_menu/render_view_context_menu.cc +++ chrome/browser/renderer_context_menu/render_view_context_menu.cc -@@ -354,6 +354,18 @@ base::OnceCallback* GetMenuShownCallback() { +@@ -360,6 +360,18 @@ base::OnceCallback* GetMenuShownCallback() { return callback.get(); } @@ -21,7 +21,7 @@ index aad2abb0c249a..09c7d5313dea0 100644 enum class UmaEnumIdLookupType { GeneralEnumId, ContextSpecificEnumId, -@@ -620,6 +632,10 @@ int FindUMAEnumValueForCommand(int id, UmaEnumIdLookupType type) { +@@ -626,6 +638,10 @@ int FindUMAEnumValueForCommand(int id, UmaEnumIdLookupType type) { return 1; } @@ -32,7 +32,7 @@ index aad2abb0c249a..09c7d5313dea0 100644 id = CollapseCommandsForUMA(id); const auto& map = GetIdcToUmaMap(type); auto it = map.find(id); -@@ -896,6 +912,14 @@ RenderViewContextMenu::RenderViewContextMenu( +@@ -902,6 +918,14 @@ RenderViewContextMenu::RenderViewContextMenu( : nullptr; #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -47,7 +47,7 @@ index aad2abb0c249a..09c7d5313dea0 100644 observers_.AddObserver(&autofill_context_menu_manager_); } -@@ -1357,6 +1381,12 @@ void RenderViewContextMenu::InitMenu() { +@@ -1358,6 +1382,12 @@ void RenderViewContextMenu::InitMenu() { autofill_client->HideAutofillSuggestions( autofill::SuggestionHidingReason::kContextMenuOpened); } @@ -60,7 +60,7 @@ index aad2abb0c249a..09c7d5313dea0 100644 } Profile* RenderViewContextMenu::GetProfile() const { -@@ -3639,6 +3669,26 @@ void RenderViewContextMenu::RegisterExecutePluginActionCallbackForTesting( +@@ -3648,6 +3678,26 @@ void RenderViewContextMenu::RegisterExecutePluginActionCallbackForTesting( execute_plugin_action_callback_ = std::move(cb); } @@ -88,7 +88,7 @@ index aad2abb0c249a..09c7d5313dea0 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 f3abb9c4164f3..c4c14e820e566 100644 +index 6b3874524e87b..4e0fd1d7297f1 100644 --- chrome/browser/renderer_context_menu/render_view_context_menu.h +++ chrome/browser/renderer_context_menu/render_view_context_menu.h @@ -153,7 +153,21 @@ class RenderViewContextMenu @@ -113,7 +113,7 @@ index f3abb9c4164f3..c4c14e820e566 100644 Profile* GetProfile() const; // This may return nullptr (e.g. for WebUI dialogs). Virtual to allow tests to -@@ -476,6 +490,9 @@ class RenderViewContextMenu +@@ -477,6 +491,9 @@ class RenderViewContextMenu // built. bool is_protocol_submenu_valid_ = false; diff --git a/patch/patches/chrome_browser_devtools_osr.patch b/patch/patches/chrome_browser_devtools_osr.patch index d5f1c9ec2..a08084f5f 100644 --- a/patch/patches/chrome_browser_devtools_osr.patch +++ b/patch/patches/chrome_browser_devtools_osr.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/devtools/chrome_devtools_manager_delegate.cc chrome/browser/devtools/chrome_devtools_manager_delegate.cc -index c2850e124952c..0b5b32a70da71 100644 +index 65041a6124766..06f1a300dbfde 100644 --- chrome/browser/devtools/chrome_devtools_manager_delegate.cc +++ chrome/browser/devtools/chrome_devtools_manager_delegate.cc -@@ -14,6 +14,7 @@ +@@ -15,6 +15,7 @@ #include "base/strings/utf_string_conversions.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" @@ -10,7 +10,7 @@ index c2850e124952c..0b5b32a70da71 100644 #include "chrome/browser/browser_features.h" #include "chrome/browser/devtools/chrome_devtools_session.h" #include "chrome/browser/devtools/device/android_device_manager.h" -@@ -68,6 +69,10 @@ +@@ -69,6 +70,10 @@ #include "ash/constants/ash_switches.h" #endif @@ -21,7 +21,7 @@ index c2850e124952c..0b5b32a70da71 100644 using content::DevToolsAgentHost; const char ChromeDevToolsManagerDelegate::kTypeApp[] = "app"; -@@ -278,6 +283,12 @@ std::string ChromeDevToolsManagerDelegate::GetTargetType( +@@ -284,6 +289,12 @@ std::string ChromeDevToolsManagerDelegate::GetTargetType( return DevToolsAgentHost::kTypePage; } diff --git a/patch/patches/chrome_browser_dialogs_native.patch b/patch/patches/chrome_browser_dialogs_native.patch index 4ffaba70f..3db1a2d13 100644 --- a/patch/patches/chrome_browser_dialogs_native.patch +++ b/patch/patches/chrome_browser_dialogs_native.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/file_select_helper.cc chrome/browser/file_select_helper.cc -index b35b0303e723d..97d43a18a9bed 100644 +index 50fca3503b2a9..89a58b139af4a 100644 --- chrome/browser/file_select_helper.cc +++ chrome/browser/file_select_helper.cc -@@ -245,6 +245,13 @@ void FileSelectHelper::OnListFile( +@@ -239,6 +239,13 @@ void FileSelectHelper::OnListFile( void FileSelectHelper::LaunchConfirmationDialog( const base::FilePath& path, std::vector selected_files) { @@ -16,7 +16,7 @@ index b35b0303e723d..97d43a18a9bed 100644 ShowFolderUploadConfirmationDialog( path, base::BindOnce(&FileSelectHelper::ConvertToFileChooserFileInfoList, this), -@@ -472,31 +479,51 @@ FileSelectHelper::GetFileTypesFromAcceptType( +@@ -466,31 +473,51 @@ FileSelectHelper::GetFileTypesFromAcceptType( std::vector* extensions = &file_type->extensions.back(); @@ -72,7 +72,7 @@ index b35b0303e723d..97d43a18a9bed 100644 if (extensions->size() > old_extension_size) valid_type_count++; } -@@ -513,12 +540,28 @@ FileSelectHelper::GetFileTypesFromAcceptType( +@@ -507,12 +534,28 @@ FileSelectHelper::GetFileTypesFromAcceptType( // dialog uses the first extension in the list to form the description, // like "EHTML Files". This is not what we want. if (valid_type_count > 1 || @@ -105,7 +105,7 @@ index b35b0303e723d..97d43a18a9bed 100644 } return file_type; -@@ -528,7 +571,8 @@ FileSelectHelper::GetFileTypesFromAcceptType( +@@ -522,7 +565,8 @@ FileSelectHelper::GetFileTypesFromAcceptType( void FileSelectHelper::RunFileChooser( content::RenderFrameHost* render_frame_host, scoped_refptr listener, @@ -115,7 +115,7 @@ index b35b0303e723d..97d43a18a9bed 100644 Profile* profile = Profile::FromBrowserContext( render_frame_host->GetProcess()->GetBrowserContext()); -@@ -536,6 +580,7 @@ void FileSelectHelper::RunFileChooser( +@@ -530,6 +574,7 @@ void FileSelectHelper::RunFileChooser( // message. scoped_refptr file_select_helper( new FileSelectHelper(profile)); @@ -124,10 +124,10 @@ index b35b0303e723d..97d43a18a9bed 100644 params.Clone()); } diff --git chrome/browser/file_select_helper.h chrome/browser/file_select_helper.h -index a89c6ae3ea21a..0533cec2752bb 100644 +index 138889a07790b..73d480d4f2525 100644 --- chrome/browser/file_select_helper.h +++ chrome/browser/file_select_helper.h -@@ -62,7 +62,8 @@ class FileSelectHelper : public base::RefCountedThreadSafe< +@@ -63,7 +63,8 @@ class FileSelectHelper : public base::RefCountedThreadSafe< static void RunFileChooser( content::RenderFrameHost* render_frame_host, scoped_refptr listener, @@ -138,7 +138,7 @@ index a89c6ae3ea21a..0533cec2752bb 100644 // Enumerates all the files in directory. static void EnumerateDirectory( @@ -330,6 +331,9 @@ class FileSelectHelper : public base::RefCountedThreadSafe< - bool has_notified_picture_in_picture_window_manager_of_open_dialog_ = false; + scoped_disallow_picture_in_picture_; #endif // !BUILDFLAG(IS_ANDROID) + // Set to true if this dialog was triggered via CEF. diff --git a/patch/patches/chrome_browser_dialogs_widget.patch b/patch/patches/chrome_browser_dialogs_widget.patch index 27023b913..17fbe2938 100644 --- a/patch/patches/chrome_browser_dialogs_widget.patch +++ b/patch/patches/chrome_browser_dialogs_widget.patch @@ -12,10 +12,10 @@ index b169371e4d42f..509e4bda85b47 100644 // on the screen, we can't actually attach to it. parent_window = nullptr; diff --git components/constrained_window/constrained_window_views.cc components/constrained_window/constrained_window_views.cc -index a1242433efd31..d649bebf32d2a 100644 +index b82cb011d2359..e224eef611704 100644 --- components/constrained_window/constrained_window_views.cc +++ components/constrained_window/constrained_window_views.cc -@@ -101,10 +101,17 @@ class ModalDialogHostObserverViews : public ModalDialogHostObserver { +@@ -102,10 +102,17 @@ class ModalDialogHostObserverViews : public ModalDialogHostObserver { gfx::Rect GetModalDialogBounds(views::Widget* widget, web_modal::ModalDialogHost* dialog_host, const gfx::Size& size) { @@ -36,7 +36,7 @@ index a1242433efd31..d649bebf32d2a 100644 } gfx::Point position = dialog_host->GetDialogPosition(size); -@@ -113,43 +120,22 @@ gfx::Rect GetModalDialogBounds(views::Widget* widget, +@@ -114,43 +121,22 @@ gfx::Rect GetModalDialogBounds(views::Widget* widget, position.set_y(position.y() - widget->non_client_view()->frame_view()->GetInsets().top()); @@ -94,7 +94,7 @@ index a1242433efd31..d649bebf32d2a 100644 } void UpdateModalDialogPosition(views::Widget* widget, -@@ -160,15 +146,24 @@ void UpdateModalDialogPosition(views::Widget* widget, +@@ -161,15 +147,24 @@ void UpdateModalDialogPosition(views::Widget* widget, return; } @@ -121,7 +121,7 @@ index a1242433efd31..d649bebf32d2a 100644 return; } -@@ -298,8 +293,13 @@ views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog, +@@ -299,8 +294,13 @@ views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog, gfx::NativeView parent_view = parent ? CurrentBrowserModalClient()->GetDialogHostView(parent) : nullptr; @@ -136,7 +136,7 @@ index a1242433efd31..d649bebf32d2a 100644 widget->SetNativeWindowProperty( views::kWidgetIdentifierKey, const_cast(kConstrainedWindowWidgetIdentifier)); -@@ -316,8 +316,7 @@ views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog, +@@ -317,8 +317,7 @@ views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog, return widget; ModalDialogHost* host = @@ -146,7 +146,7 @@ index a1242433efd31..d649bebf32d2a 100644 if (host) { DCHECK_EQ(parent_view, host->GetHostView()); std::unique_ptr observer = -@@ -334,11 +333,17 @@ views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog, +@@ -335,11 +334,17 @@ views::Widget* CreateBrowserModalDialogViews(views::DialogDelegate* dialog, views::Widget* ShowBrowserModal(std::unique_ptr dialog_model, gfx::NativeWindow parent) { @@ -210,10 +210,10 @@ 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 c10c91a0d18eb..e66e2bfcf4ef5 100644 +index d5d9010ca00fe..3a0e50a1cb2f0 100644 --- ui/views/window/dialog_delegate.cc +++ ui/views/window/dialog_delegate.cc -@@ -86,10 +86,12 @@ DialogDelegate::DialogDelegate() { +@@ -87,10 +87,12 @@ DialogDelegate::DialogDelegate() { // static Widget* DialogDelegate::CreateDialogWidget(WidgetDelegate* delegate, gfx::NativeWindow context, @@ -228,7 +228,7 @@ index c10c91a0d18eb..e66e2bfcf4ef5 100644 widget->Init(std::move(params)); return widget; } -@@ -98,16 +100,18 @@ Widget* DialogDelegate::CreateDialogWidget(WidgetDelegate* delegate, +@@ -99,16 +101,18 @@ Widget* DialogDelegate::CreateDialogWidget(WidgetDelegate* delegate, Widget* DialogDelegate::CreateDialogWidget( std::unique_ptr delegate, gfx::NativeWindow context, @@ -251,7 +251,7 @@ index c10c91a0d18eb..e66e2bfcf4ef5 100644 #else return true; #endif -@@ -118,7 +122,8 @@ Widget::InitParams DialogDelegate::GetDialogWidgetInitParams( +@@ -119,7 +123,8 @@ Widget::InitParams DialogDelegate::GetDialogWidgetInitParams( WidgetDelegate* delegate, gfx::NativeWindow context, gfx::NativeView parent, @@ -261,7 +261,7 @@ index c10c91a0d18eb..e66e2bfcf4ef5 100644 DialogDelegate* dialog = delegate->AsDialogDelegate(); views::Widget::InitParams params( -@@ -128,7 +133,7 @@ Widget::InitParams DialogDelegate::GetDialogWidgetInitParams( +@@ -129,7 +134,7 @@ Widget::InitParams DialogDelegate::GetDialogWidgetInitParams( params.bounds = bounds; if (dialog) @@ -270,7 +270,7 @@ index c10c91a0d18eb..e66e2bfcf4ef5 100644 if (!dialog || dialog->use_custom_frame()) { params.opacity = Widget::InitParams::WindowOpacity::kTranslucent; -@@ -141,6 +146,7 @@ Widget::InitParams DialogDelegate::GetDialogWidgetInitParams( +@@ -142,6 +147,7 @@ Widget::InitParams DialogDelegate::GetDialogWidgetInitParams( } params.context = context; params.parent = parent; @@ -279,10 +279,10 @@ index c10c91a0d18eb..e66e2bfcf4ef5 100644 // Web-modal (ui::mojom::ModalType::kChild) dialogs with parents are marked as // child widgets to prevent top-level window behavior (independent movement, diff --git ui/views/window/dialog_delegate.h ui/views/window/dialog_delegate.h -index 2e18d38c8a71a..9d79b5bc53f78 100644 +index d64117586a5c3..c37d7a59c134e 100644 --- ui/views/window/dialog_delegate.h +++ ui/views/window/dialog_delegate.h -@@ -100,13 +100,18 @@ class VIEWS_EXPORT DialogDelegate : public WidgetDelegate { +@@ -106,13 +106,18 @@ class VIEWS_EXPORT DialogDelegate : public WidgetDelegate { // your use case. static Widget* CreateDialogWidget(std::unique_ptr delegate, gfx::NativeWindow context, @@ -304,7 +304,7 @@ index 2e18d38c8a71a..9d79b5bc53f78 100644 // Returns the dialog widget InitParams for a given |context| or |parent|. // If |bounds| is not empty, used to initially place the dialog, otherwise -@@ -114,7 +119,9 @@ class VIEWS_EXPORT DialogDelegate : public WidgetDelegate { +@@ -120,7 +125,9 @@ class VIEWS_EXPORT DialogDelegate : public WidgetDelegate { static Widget::InitParams GetDialogWidgetInitParams(WidgetDelegate* delegate, gfx::NativeWindow context, gfx::NativeView parent, diff --git a/patch/patches/chrome_browser_download.patch b/patch/patches/chrome_browser_download.patch index 1236aabbe..e68357637 100644 --- a/patch/patches/chrome_browser_download.patch +++ b/patch/patches/chrome_browser_download.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/download/chrome_download_manager_delegate.cc chrome/browser/download/chrome_download_manager_delegate.cc -index e9f68185e59c8..24bd2abbde36b 100644 +index f6cdc397b51cb..69847175527da 100644 --- chrome/browser/download/chrome_download_manager_delegate.cc +++ chrome/browser/download/chrome_download_manager_delegate.cc @@ -31,6 +31,7 @@ @@ -10,7 +10,7 @@ index e9f68185e59c8..24bd2abbde36b 100644 #include "chrome/browser/browser_process.h" #include "chrome/browser/download/bubble/download_bubble_prefs.h" #include "chrome/browser/download/download_core_service.h" -@@ -157,6 +158,10 @@ +@@ -158,6 +159,10 @@ #include "chrome/browser/ash/policy/skyvault/skyvault_rename_handler.h" #endif @@ -21,7 +21,7 @@ index e9f68185e59c8..24bd2abbde36b 100644 using content::BrowserThread; using content::DownloadManager; using download::DownloadItem; -@@ -518,6 +523,11 @@ ChromeDownloadManagerDelegate::ChromeDownloadManagerDelegate(Profile* profile) +@@ -519,6 +524,11 @@ ChromeDownloadManagerDelegate::ChromeDownloadManagerDelegate(Profile* profile) download_dialog_bridge_ = std::make_unique(); download_message_bridge_ = std::make_unique(); #endif @@ -33,7 +33,7 @@ index e9f68185e59c8..24bd2abbde36b 100644 } ChromeDownloadManagerDelegate::~ChromeDownloadManagerDelegate() { -@@ -577,6 +587,9 @@ void ChromeDownloadManagerDelegate::Shutdown() { +@@ -578,6 +588,9 @@ void ChromeDownloadManagerDelegate::Shutdown() { download_manager_->RemoveObserver(this); download_manager_ = nullptr; } @@ -43,7 +43,7 @@ index e9f68185e59c8..24bd2abbde36b 100644 } void ChromeDownloadManagerDelegate::OnDownloadCanceledAtShutdown( -@@ -645,6 +658,12 @@ bool ChromeDownloadManagerDelegate::DetermineDownloadTarget( +@@ -646,6 +659,12 @@ bool ChromeDownloadManagerDelegate::DetermineDownloadTarget( ReportPDFLoadStatus(PDFLoadStatus::kTriggeredNoGestureDriveByDownload); } @@ -56,7 +56,7 @@ index e9f68185e59c8..24bd2abbde36b 100644 DownloadTargetDeterminer::CompletionCallback target_determined_callback = base::BindOnce(&ChromeDownloadManagerDelegate::OnDownloadTargetDetermined, weak_ptr_factory_.GetWeakPtr(), download->GetId(), -@@ -1033,8 +1052,11 @@ void ChromeDownloadManagerDelegate::OpenDownload(DownloadItem* download) { +@@ -1067,8 +1086,11 @@ void ChromeDownloadManagerDelegate::OpenDownload(DownloadItem* download) { Browser* browser = web_contents ? chrome::FindBrowserWithTab(web_contents) : nullptr; std::unique_ptr browser_displayer; @@ -71,7 +71,7 @@ index e9f68185e59c8..24bd2abbde36b 100644 std::make_unique(profile_); browser = browser_displayer->browser(); diff --git chrome/browser/download/chrome_download_manager_delegate.h chrome/browser/download/chrome_download_manager_delegate.h -index 2c99baa2c9fa8..b721db7058d8f 100644 +index 32d23a0c98061..be6a99a33bdeb 100644 --- chrome/browser/download/chrome_download_manager_delegate.h +++ chrome/browser/download/chrome_download_manager_delegate.h @@ -19,6 +19,7 @@ @@ -95,7 +95,7 @@ index 2c99baa2c9fa8..b721db7058d8f 100644 // This is the Chrome side helper for the download system. class ChromeDownloadManagerDelegate : public content::DownloadManagerDelegate, -@@ -391,6 +398,10 @@ class ChromeDownloadManagerDelegate +@@ -393,6 +400,10 @@ class ChromeDownloadManagerDelegate // Whether a file picker dialog is showing. bool is_file_picker_showing_; diff --git a/patch/patches/chrome_browser_extensions.patch b/patch/patches/chrome_browser_extensions.patch index 75e207be3..8542010ea 100644 --- a/patch/patches/chrome_browser_extensions.patch +++ b/patch/patches/chrome_browser_extensions.patch @@ -34,19 +34,10 @@ index 4007e26f780c3..26d0d492cf176 100644 WebViewGuestDelegate* ChromeExtensionsAPIClient::CreateWebViewGuestDelegate( diff --git chrome/browser/extensions/api/tabs/tabs_api.cc chrome/browser/extensions/api/tabs/tabs_api.cc -index 723e68fdb68e0..604989e6bfd1a 100644 +index faefffb1010e8..ee3c11ffda006 100644 --- chrome/browser/extensions/api/tabs/tabs_api.cc +++ chrome/browser/extensions/api/tabs/tabs_api.cc -@@ -1552,7 +1552,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { - if (DevToolsWindow::IsDevToolsWindow(contents)) - return RespondNow(Error(tabs_constants::kNotAllowedForDevToolsError)); - -- if (!ExtensionTabUtil::BrowserSupportsTabs(browser)) -+ if (browser && !ExtensionTabUtil::BrowserSupportsTabs(browser)) - return RespondNow(Error(tabs_constants::kNoCurrentWindowError)); - - web_contents_ = contents; -@@ -1576,7 +1576,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { +@@ -1577,7 +1577,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { return RespondNow(Error(tabs_constants::kTabStripNotEditableError)); } @@ -55,7 +46,7 @@ index 723e68fdb68e0..604989e6bfd1a 100644 tab_strip->ActivateTabAt(tab_index); DCHECK_EQ(contents, tab_strip->GetActiveWebContents()); } -@@ -1590,7 +1590,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { +@@ -1591,7 +1591,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { } bool highlighted = *params->update_properties.highlighted; @@ -64,7 +55,7 @@ index 723e68fdb68e0..604989e6bfd1a 100644 tab_strip->ToggleSelectionAt(tab_index); } } -@@ -1603,7 +1603,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { +@@ -1604,7 +1604,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { base::NumberToString(tab_id)))); } @@ -73,23 +64,18 @@ index 723e68fdb68e0..604989e6bfd1a 100644 int opener_id = *params->update_properties.opener_tab_id; WebContents* opener_contents = nullptr; if (opener_id == tab_id) { -@@ -1638,11 +1638,11 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { +@@ -1638,7 +1638,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { + ->SetAutoDiscardable(state); } - const bool contents_in_an_uneditable_saved_group = -- contents && ExtensionTabUtil::TabIsInSavedTabGroup( -+ browser && contents && ExtensionTabUtil::TabIsInSavedTabGroup( - web_contents_, browser->tab_strip_model()) && - !ExtensionHasLockedFullscreenPermission(extension()); - - if (params->update_properties.pinned) { + if (tab_strip && params->update_properties.pinned) { - // Pinning will result in changes to the tabs index/group affiliation in - // some cases, Throw an error if a tab is attempting to be pinned. - if (contents_in_an_uneditable_saved_group) { -@@ -1673,8 +1673,9 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { - } - + // Bug fix for crbug.com/1197888. Don't let the extension update the tab if + // the user is dragging tabs. + if (!ExtensionTabUtil::IsTabStripEditable()) { +@@ -1659,8 +1659,9 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { + // Navigate the tab to a new location if the url is different. + if (params->update_properties.url) { std::string updated_url = *params->update_properties.url; - if (browser->profile()->IsIncognitoProfile() && - !IsURLAllowedInIncognito(GURL(updated_url), browser->profile())) { @@ -99,7 +85,7 @@ index 723e68fdb68e0..604989e6bfd1a 100644 return RespondNow(Error(ErrorUtils::FormatErrorMessage( tabs_constants::kURLsNotAllowedInIncognitoError, updated_url))); } -@@ -1688,7 +1689,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { +@@ -1674,7 +1675,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { return RespondNow(Error(std::move(error))); } @@ -109,18 +95,18 @@ index 723e68fdb68e0..604989e6bfd1a 100644 current_url, updated_url, js_callstack()); } diff --git chrome/browser/extensions/extension_tab_util.cc chrome/browser/extensions/extension_tab_util.cc -index 9d33f958ae540..40dc75ebc88b6 100644 +index 1687e36dd5966..929e1fdf78611 100644 --- chrome/browser/extensions/extension_tab_util.cc +++ chrome/browser/extensions/extension_tab_util.cc -@@ -18,6 +18,7 @@ +@@ -20,6 +20,7 @@ #include "base/strings/stringprintf.h" #include "base/strings/utf_string_conversions.h" #include "base/types/expected_macros.h" +#include "cef/libcef/features/features.h" #include "chrome/browser/browser_process.h" - #include "chrome/browser/extensions/api/tab_groups/tab_groups_util.h" #include "chrome/browser/extensions/api/tabs/tabs_constants.h" -@@ -72,6 +73,10 @@ + #include "chrome/browser/extensions/browser_extension_window_controller.h" +@@ -75,6 +76,10 @@ #include "third_party/blink/public/common/features.h" #include "url/gurl.h" @@ -131,7 +117,7 @@ index 9d33f958ae540..40dc75ebc88b6 100644 using content::NavigationEntry; using content::WebContents; using extensions::mojom::APIPermissionID; -@@ -758,6 +763,20 @@ bool ExtensionTabUtil::GetTabById(int tab_id, +@@ -698,6 +703,20 @@ bool ExtensionTabUtil::GetTabById(int tab_id, } } @@ -153,7 +139,7 @@ index 9d33f958ae540..40dc75ebc88b6 100644 // Prerendering tab is not visible and it cannot be in `TabStripModel`, if // the tab id exists as a prerendering tab, and the API will returns diff --git chrome/browser/ui/tab_helpers.h chrome/browser/ui/tab_helpers.h -index 4ca4ecd147267..dc8a8d004a1d6 100644 +index 63848c93738ce..0358e098c7339 100644 --- chrome/browser/ui/tab_helpers.h +++ chrome/browser/ui/tab_helpers.h @@ -6,6 +6,7 @@ @@ -164,9 +150,9 @@ index 4ca4ecd147267..dc8a8d004a1d6 100644 #if BUILDFLAG(IS_ANDROID) -@@ -37,6 +38,10 @@ namespace prerender { - class ChromeNoStatePrefetchContentsDelegate; - } +@@ -41,6 +42,10 @@ namespace tabs { + class TabModel; + } // namespace tabs +#if BUILDFLAG(ENABLE_CEF) +class CefBrowserPlatformDelegateAlloy; @@ -175,7 +161,7 @@ index 4ca4ecd147267..dc8a8d004a1d6 100644 // A "tab contents" is a WebContents that is used as a tab in a browser window // (or the equivalent on Android). The TabHelpers class allows specific classes // to attach the set of tab helpers that is used for tab contents. -@@ -74,6 +79,10 @@ class TabHelpers { +@@ -79,6 +84,10 @@ class TabHelpers { // Link Preview shows a preview of a page, then promote it as a new tab. friend class PreviewTab; @@ -187,10 +173,10 @@ index 4ca4ecd147267..dc8a8d004a1d6 100644 // ones that need to call AttachTabHelpers; if you think you do, re-read the // design document linked above, especially the section "Reusing tab helpers". diff --git chrome/browser/ui/views/download/bubble/download_toolbar_button_view.cc chrome/browser/ui/views/download/bubble/download_toolbar_button_view.cc -index 427988cdc5b24..f448bb8dac9b4 100644 +index 101afe2d08189..f4f4479f5ee54 100644 --- chrome/browser/ui/views/download/bubble/download_toolbar_button_view.cc +++ chrome/browser/ui/views/download/bubble/download_toolbar_button_view.cc -@@ -831,6 +831,10 @@ void DownloadToolbarButtonView::ShowPendingDownloadStartedAnimation() { +@@ -835,6 +835,10 @@ void DownloadToolbarButtonView::ShowPendingDownloadStartedAnimation() { if (!gfx::Animation::ShouldRenderRichAnimation()) { return; } diff --git a/patch/patches/chrome_browser_profile_menu.patch b/patch/patches/chrome_browser_profile_menu.patch index 7de1e8889..f04a783ba 100644 --- a/patch/patches/chrome_browser_profile_menu.patch +++ b/patch/patches/chrome_browser_profile_menu.patch @@ -14,10 +14,10 @@ index 7ae18c5a960b0..d48ba838efe6f 100644 ? profile_metrics::BrowserProfileType::kRegular : profile_metrics::BrowserProfileType::kIncognito; diff --git chrome/browser/ui/views/incognito_clear_browsing_data_dialog.cc chrome/browser/ui/views/incognito_clear_browsing_data_dialog.cc -index 826fa20afbb56..f08891c4aaa0d 100644 +index 3ac5ebf1b49b5..d41cffecb5603 100644 --- chrome/browser/ui/views/incognito_clear_browsing_data_dialog.cc +++ chrome/browser/ui/views/incognito_clear_browsing_data_dialog.cc -@@ -31,7 +31,9 @@ IncognitoClearBrowsingDataDialog::IncognitoClearBrowsingDataDialog( +@@ -32,7 +32,9 @@ IncognitoClearBrowsingDataDialog::IncognitoClearBrowsingDataDialog( dialog_type_(type), incognito_profile_(incognito_profile) { DCHECK(incognito_profile_); @@ -25,7 +25,7 @@ index 826fa20afbb56..f08891c4aaa0d 100644 + DCHECK(incognito_profile_->IsIncognitoProfile() || + (incognito_profile_->IsOffTheRecord() && + incognito_profile_->GetOTRProfileID().IsUniqueForCEF())); - SetButtons(ui::DIALOG_BUTTON_NONE); + SetButtons(static_cast(ui::mojom::DialogButton::kNone)); SetShowCloseButton(true); diff --git chrome/browser/ui/views/incognito_clear_browsing_data_dialog_coordinator.cc chrome/browser/ui/views/incognito_clear_browsing_data_dialog_coordinator.cc diff --git a/patch/patches/chrome_browser_profiles.patch b/patch/patches/chrome_browser_profiles.patch index 6b02373bc..c37814155 100644 --- a/patch/patches/chrome_browser_profiles.patch +++ b/patch/patches/chrome_browser_profiles.patch @@ -14,7 +14,7 @@ index 5420ca8496773..74bdd5aa84c31 100644 } diff --git chrome/browser/profiles/profile.cc chrome/browser/profiles/profile.cc -index e2db3688e3e0b..1772107cbdfc9 100644 +index 76e435416e7ca..594ef7ae92fed 100644 --- chrome/browser/profiles/profile.cc +++ chrome/browser/profiles/profile.cc @@ -91,6 +91,7 @@ base::LazyInstance>::Leaky @@ -52,7 +52,7 @@ index e2db3688e3e0b..1772107cbdfc9 100644 Profile::OTRProfileID Profile::OTRProfileID::CreateUniqueForDevTools() { return CreateUnique(kDevToolsOTRProfileIDPrefix); diff --git chrome/browser/profiles/profile.h chrome/browser/profiles/profile.h -index 02454f4e780b5..4641f33c26f5f 100644 +index 0c961e399183b..70a02994bd478 100644 --- chrome/browser/profiles/profile.h +++ chrome/browser/profiles/profile.h @@ -94,6 +94,10 @@ class Profile : public content::BrowserContext { @@ -85,10 +85,10 @@ index 02454f4e780b5..4641f33c26f5f 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 f64a27cfcb5c0..93d0670fa9455 100644 +index 8eea00363de53..2167b1b8df4d2 100644 --- chrome/browser/profiles/profile_impl.cc +++ chrome/browser/profiles/profile_impl.cc -@@ -1038,7 +1038,9 @@ Profile* ProfileImpl::GetOffTheRecordProfile(const OTRProfileID& otr_profile_id, +@@ -1043,7 +1043,9 @@ Profile* ProfileImpl::GetOffTheRecordProfile(const OTRProfileID& otr_profile_id, otr_profiles_[otr_profile_id] = std::move(otr_profile); diff --git a/patch/patches/chrome_browser_safe_browsing.patch b/patch/patches/chrome_browser_safe_browsing.patch index ec9ddf51c..c94d08901 100644 --- a/patch/patches/chrome_browser_safe_browsing.patch +++ b/patch/patches/chrome_browser_safe_browsing.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/safe_browsing/BUILD.gn chrome/browser/safe_browsing/BUILD.gn -index 75934762c580c..8081201acf5a1 100644 +index fd47cd395ad8e..b9c9f1c0d438b 100644 --- chrome/browser/safe_browsing/BUILD.gn +++ chrome/browser/safe_browsing/BUILD.gn -@@ -36,6 +36,7 @@ static_library("safe_browsing") { +@@ -37,6 +37,7 @@ static_library("safe_browsing") { "//components/enterprise:enterprise", "//components/enterprise/buildflags", "//components/enterprise/common:strings", diff --git a/patch/patches/chrome_browser_startup.patch b/patch/patches/chrome_browser_startup.patch index b77fc3f6a..af356d2b4 100644 --- a/patch/patches/chrome_browser_startup.patch +++ b/patch/patches/chrome_browser_startup.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/ui/startup/startup_browser_creator.cc chrome/browser/ui/startup/startup_browser_creator.cc -index 5286333070206..a25b8fd2c61b1 100644 +index c484e98959a22..db58381c66dc0 100644 --- chrome/browser/ui/startup/startup_browser_creator.cc +++ chrome/browser/ui/startup/startup_browser_creator.cc -@@ -606,6 +606,13 @@ std::optional GetAppId(const base::CommandLine& command_line, +@@ -604,6 +604,13 @@ std::optional GetAppId(const base::CommandLine& command_line, } #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -16,7 +16,7 @@ index 5286333070206..a25b8fd2c61b1 100644 } // namespace StartupProfileMode StartupProfileModeFromReason( -@@ -1503,6 +1510,12 @@ void StartupBrowserCreator::ProcessCommandLineWithProfile( +@@ -1492,6 +1499,12 @@ void StartupBrowserCreator::ProcessCommandLineWithProfile( {profile, mode}, last_opened_profiles); } @@ -29,7 +29,7 @@ index 5286333070206..a25b8fd2c61b1 100644 // static void StartupBrowserCreator::ProcessCommandLineAlreadyRunning( const base::CommandLine& command_line, -@@ -1512,6 +1525,11 @@ void StartupBrowserCreator::ProcessCommandLineAlreadyRunning( +@@ -1501,6 +1514,11 @@ void StartupBrowserCreator::ProcessCommandLineAlreadyRunning( return; } @@ -42,7 +42,7 @@ index 5286333070206..a25b8fd2c61b1 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 11a33a0bdec02..5a8146c95f99d 100644 +index 919bae5ccfeae..5c2dfbf955723 100644 --- chrome/browser/ui/startup/startup_browser_creator.h +++ chrome/browser/ui/startup/startup_browser_creator.h @@ -9,6 +9,7 @@ @@ -53,7 +53,7 @@ index 11a33a0bdec02..5a8146c95f99d 100644 #include "base/gtest_prod_util.h" #include "base/memory/raw_ptr.h" #include "build/build_config.h" -@@ -136,6 +137,13 @@ class StartupBrowserCreator { +@@ -135,6 +136,13 @@ class StartupBrowserCreator { StartupProfileInfo profile_info, const Profiles& last_opened_profiles); diff --git a/patch/patches/chrome_browser_webui_license.patch b/patch/patches/chrome_browser_webui_license.patch index 539cbce88..6b0ab598a 100644 --- a/patch/patches/chrome_browser_webui_license.patch +++ b/patch/patches/chrome_browser_webui_license.patch @@ -69,7 +69,7 @@ index 6548d519c3da9..645163f69f822 100644 // chrome://terms class TermsUIConfig : public AboutUIConfigBase { diff --git chrome/browser/ui/webui/chrome_web_ui_configs.cc chrome/browser/ui/webui/chrome_web_ui_configs.cc -index 07e648356a5fb..b284630f01b3a 100644 +index b56981733057e..20386be211feb 100644 --- chrome/browser/ui/webui/chrome_web_ui_configs.cc +++ chrome/browser/ui/webui/chrome_web_ui_configs.cc @@ -6,6 +6,7 @@ @@ -80,7 +80,7 @@ index 07e648356a5fb..b284630f01b3a 100644 #include "chrome/browser/ui/webui/about/about_ui.h" #include "chrome/browser/ui/webui/accessibility/accessibility_ui.h" #include "chrome/browser/ui/webui/autofill_and_password_manager_internals/autofill_internals_ui.h" -@@ -74,6 +75,9 @@ void RegisterChromeWebUIConfigs() { +@@ -97,6 +98,9 @@ void RegisterChromeWebUIConfigs() { map.AddWebUIConfig(std::make_unique()); map.AddWebUIConfig(std::make_unique()); map.AddWebUIConfig(std::make_unique()); @@ -91,7 +91,7 @@ index 07e648356a5fb..b284630f01b3a 100644 map.AddWebUIConfig(std::make_unique()); map.AddWebUIConfig(std::make_unique()); diff --git chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc -index af6d877f601d2..03c53be62e560 100644 +index 743fd86a35a10..48b0488d8f56a 100644 --- chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc +++ chrome/browser/ui/webui/chrome_web_ui_controller_factory.cc @@ -18,6 +18,7 @@ @@ -102,7 +102,7 @@ index af6d877f601d2..03c53be62e560 100644 #include "chrome/browser/about_flags.h" #include "chrome/browser/buildflags.h" #include "chrome/browser/commerce/shopping_service_factory.h" -@@ -980,6 +981,9 @@ ChromeWebUIControllerFactory::GetListOfAcceptableURLs() { +@@ -927,6 +928,9 @@ ChromeWebUIControllerFactory::GetListOfAcceptableURLs() { GURL(chrome::kChromeUIGpuURL), GURL(chrome::kChromeUIHistogramsURL), GURL(chrome::kChromeUIInspectURL), @@ -127,7 +127,7 @@ index 248b6795e8cbe..c957f9d55613d 100644 #if !BUILDFLAG(IS_ANDROID) kChromeUIManagementHost, diff --git chrome/common/webui_url_constants.h chrome/common/webui_url_constants.h -index 52672e0274345..cdcaf3deb3c32 100644 +index d1a8dc8342177..8d3226adca3c4 100644 --- chrome/common/webui_url_constants.h +++ chrome/common/webui_url_constants.h @@ -18,6 +18,7 @@ @@ -137,8 +137,8 @@ index 52672e0274345..cdcaf3deb3c32 100644 +#include "cef/libcef/features/features.h" #include "chrome/common/buildflags.h" #include "components/lens/buildflags.h" - #include "content/public/common/url_constants.h" -@@ -155,6 +156,10 @@ inline constexpr char kChromeUILauncherInternalsURL[] = + #include "components/signin/public/base/signin_buildflags.h" +@@ -160,6 +161,10 @@ inline constexpr char kChromeUILauncherInternalsURL[] = inline constexpr char kChromeUILensSearchBubbleHost[] = "lens-search-bubble"; inline constexpr char kChromeUILensSearchBubbleURL[] = "chrome://lens-search-bubble/"; diff --git a/patch/patches/chrome_common_logging.patch b/patch/patches/chrome_common_logging.patch index b7451207c..100e63609 100644 --- a/patch/patches/chrome_common_logging.patch +++ b/patch/patches/chrome_common_logging.patch @@ -1,5 +1,5 @@ diff --git chrome/common/features.gni chrome/common/features.gni -index a584f49ecfb1b..fdc7eceb76024 100644 +index 276e7fbde552c..1fddfa229eeed 100644 --- chrome/common/features.gni +++ chrome/common/features.gni @@ -7,6 +7,7 @@ import("//build/config/chromeos/ui_mode.gni") diff --git a/patch/patches/chrome_renderer.patch b/patch/patches/chrome_renderer.patch index 4b340b814..f5e171a4e 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 3b8b9a9eb5cbf..0fcb797674fc4 100644 +index 3a4b21b9b90ab..abeee8364b65d 100644 --- chrome/renderer/BUILD.gn +++ chrome/renderer/BUILD.gn @@ -5,6 +5,7 @@ @@ -10,15 +10,15 @@ index 3b8b9a9eb5cbf..0fcb797674fc4 100644 import("//chrome/common/features.gni") import("//components/nacl/features.gni") import("//components/offline_pages/buildflags/features.gni") -@@ -128,6 +129,7 @@ static_library("renderer") { - deps = [ +@@ -137,6 +138,7 @@ static_library("renderer") { + ":process_state", "//base/allocator:buildflags", "//build:chromeos_buildflags", + "//cef/libcef/features", "//chrome:resources", "//chrome:strings", "//chrome/common", -@@ -246,6 +248,10 @@ static_library("renderer") { +@@ -255,6 +257,10 @@ static_library("renderer") { ] } diff --git a/patch/patches/chrome_runtime.patch b/patch/patches/chrome_runtime.patch index e55bfc282..0cc15dc9c 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 67428f15a7c50..4e418019327e6 100644 +index 9c1a840843c02..60c1643ec02b7 100644 --- chrome/app/chrome_main_delegate.cc +++ chrome/app/chrome_main_delegate.cc @@ -42,6 +42,7 @@ @@ -10,26 +10,26 @@ index 67428f15a7c50..4e418019327e6 100644 #include "chrome/browser/buildflags.h" #include "chrome/browser/chrome_content_browser_client.h" #include "chrome/browser/chrome_resource_bundle_helper.h" -@@ -611,6 +612,7 @@ struct MainFunction { +@@ -608,6 +609,7 @@ struct MainFunction { int (*function)(content::MainFunctionParams); }; - + +#if !BUILDFLAG(ENABLE_CEF) // Initializes the user data dir. Must be called before InitializeLocalState(). void InitializeUserDataDir(base::CommandLine* command_line) { #if BUILDFLAG(IS_CHROMEOS_LACROS) -@@ -694,6 +696,7 @@ void InitializeUserDataDir(base::CommandLine* command_line) { +@@ -691,6 +693,7 @@ void InitializeUserDataDir(base::CommandLine* command_line) { command_line->AppendSwitchPath(switches::kUserDataDir, user_data_dir); #endif // BUILDFLAG(IS_WIN) } +#endif // !BUILDFLAG(ENABLE_CEF) - + #if BUILDFLAG(IS_CHROMEOS_LACROS) // If Lacros was prelaunched at login screen, this method blocks waiting -@@ -855,6 +858,10 @@ ChromeMainDelegate::~ChromeMainDelegate() { +@@ -852,6 +855,10 @@ ChromeMainDelegate::~ChromeMainDelegate() { ChromeMainDelegate::~ChromeMainDelegate() = default; #endif // !BUILDFLAG(IS_ANDROID) - + +void ChromeMainDelegate::CleanupOnUIThread() { + memory_system_.reset(); +} @@ -37,17 +37,17 @@ index 67428f15a7c50..4e418019327e6 100644 std::optional ChromeMainDelegate::PostEarlyInitialization( InvokedIn invoked_in) { DUMP_WILL_BE_CHECK(base::ThreadPoolInstance::Get()); -@@ -880,7 +887,7 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( +@@ -877,7 +884,7 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( // future session's metrics. DeferBrowserMetrics(user_data_dir); - + -#if BUILDFLAG(IS_WIN) +#if BUILDFLAG(IS_WIN) && !BUILDFLAG(ENABLE_CEF) // 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. -@@ -1040,7 +1047,8 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( - +@@ -1037,7 +1044,8 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( + // Initializes the resource bundle and determines the locale. std::string actual_locale = LoadLocalState( - chrome_feature_list_creator, invoked_in_browser->is_running_test); @@ -55,27 +55,27 @@ index 67428f15a7c50..4e418019327e6 100644 + invoked_in_browser->is_running_test); chrome_feature_list_creator->SetApplicationLocale(actual_locale); chrome_feature_list_creator->OverrideCachedUIStrings(); - -@@ -1057,6 +1065,8 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( + +@@ -1054,6 +1062,8 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( new net::NetworkChangeNotifierFactoryAndroid()); #endif - + +#if !BUILDFLAG(ENABLE_CEF) + // Avoid CEF crash with multi-threaded-message-loop. if (base::FeatureList::IsEnabled( features::kWriteBasicSystemProfileToPersistentHistogramsFile)) { bool record = true; -@@ -1067,6 +1077,7 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( +@@ -1064,6 +1074,7 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( if (record) chrome_content_browser_client_->startup_data()->RecordCoreSystemProfile(); } +#endif // !BUILDFLAG(ENABLE_CEF) - + #if BUILDFLAG(IS_ANDROID) UmaSessionStats::OnStartup(); -@@ -1104,8 +1115,8 @@ bool ChromeMainDelegate::ShouldInitializeMojo(InvokedIn invoked_in) { - void ChromeMainDelegate::CreateThreadPool(std::string_view name) { - base::ThreadPoolInstance::Create(name); +@@ -1107,8 +1118,8 @@ void ChromeMainDelegate::CreateThreadPool(std::string_view name) { + std::make_unique()); + // `ChromeMainDelegateAndroid::PreSandboxStartup` creates the profiler a little -// later. -#if !BUILDFLAG(IS_ANDROID) @@ -84,89 +84,89 @@ index 67428f15a7c50..4e418019327e6 100644 // Start the sampling profiler as early as possible - namely, once the thread // pool has been created. sampling_profiler_ = std::make_unique(); -@@ -1517,6 +1528,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1515,6 +1526,7 @@ void ChromeMainDelegate::PreSandboxStartup() { std::string process_type = command_line.GetSwitchValueASCII(switches::kProcessType); - + +#if !BUILDFLAG(ENABLE_CEF) crash_reporter::InitializeCrashKeys(); - + #if BUILDFLAG(IS_POSIX) -@@ -1527,6 +1539,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1525,6 +1537,7 @@ void ChromeMainDelegate::PreSandboxStartup() { InitMacCrashReporter(command_line, process_type); SetUpInstallerPreferences(command_line); #endif +#endif // !BUILDFLAG(ENABLE_CEF) - - #if BUILDFLAG(IS_WIN) - child_process_logging::Init(); -@@ -1538,6 +1551,7 @@ void ChromeMainDelegate::PreSandboxStartup() { + + #if defined(ARCH_CPU_ARM_FAMILY) && \ + (BUILDFLAG(IS_ANDROID) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS)) +@@ -1533,6 +1546,7 @@ void ChromeMainDelegate::PreSandboxStartup() { base::CPU cpu_info; #endif - + +#if !BUILDFLAG(ENABLE_CEF) // Initialize the user data dir for any process type that needs it. bool initialize_user_data_dir = chrome::ProcessNeedsProfileDir(process_type); #if BUILDFLAG(IS_CHROMEOS_LACROS) -@@ -1549,6 +1563,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1544,6 +1558,7 @@ void ChromeMainDelegate::PreSandboxStartup() { if (initialize_user_data_dir) { InitializeUserDataDir(base::CommandLine::ForCurrentProcess()); } +#endif // !BUILDFLAG(ENABLE_CEF) - + #if BUILDFLAG(IS_CHROMEOS_LACROS) // Generate shared resource file only on browser process. This is to avoid -@@ -1707,7 +1722,8 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1695,7 +1710,8 @@ void ChromeMainDelegate::PreSandboxStartup() { #else const std::string loaded_locale = ui::ResourceBundle::InitSharedInstanceWithLocale( - locale, nullptr, ui::ResourceBundle::LOAD_COMMON_RESOURCES); + locale, GetResourceBundleDelegate(), + ui::ResourceBundle::LOAD_COMMON_RESOURCES); - + base::FilePath resources_pack_path; base::PathService::Get(chrome::FILE_RESOURCES_PACK, &resources_pack_path); -@@ -1737,6 +1753,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1725,6 +1741,7 @@ void ChromeMainDelegate::PreSandboxStartup() { CHECK(!loaded_locale.empty()) << "Locale could not be found for " << locale; } - + +#if !BUILDFLAG(ENABLE_CEF) #if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) // Zygote needs to call InitCrashReporter() in RunZygote(). if (process_type != switches::kZygoteProcess && -@@ -1773,6 +1790,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1761,6 +1778,7 @@ void ChromeMainDelegate::PreSandboxStartup() { // After all the platform Breakpads have been initialized, store the command // line for crash reporting. crash_keys::SetCrashKeysFromCommandLine(command_line); +#endif // !BUILDFLAG(ENABLE_CEF) - + #if BUILDFLAG(ENABLE_PDF) MaybePatchGdiGetFontData(); -@@ -1900,6 +1918,7 @@ void ChromeMainDelegate::ZygoteForked() { +@@ -1888,6 +1906,7 @@ void ChromeMainDelegate::ZygoteForked() { SetUpProfilingShutdownHandler(); } - + +#if !BUILDFLAG(ENABLE_CEF) // 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 = -@@ -1912,6 +1931,7 @@ void ChromeMainDelegate::ZygoteForked() { - +@@ -1900,6 +1919,7 @@ void ChromeMainDelegate::ZygoteForked() { + // Reset the command line for the newly spawned process. crash_keys::SetCrashKeysFromCommandLine(*command_line); +#endif // !BUILDFLAG(ENABLE_CEF) } - + #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) -@@ -2020,6 +2040,7 @@ void ChromeMainDelegate::InitializeMemorySystem() { +@@ -2008,6 +2028,7 @@ void ChromeMainDelegate::InitializeMemorySystem() { : memory_system::DispatcherParameters:: AllocationTraceRecorderInclusion::kIgnore; - + + memory_system_ = std::make_unique(); memory_system::Initializer() .SetGwpAsanParameters(gwp_asan_boost_sampling, process_type) .SetProfilingClientParameters(chrome::GetChannel(), -@@ -2027,5 +2048,5 @@ void ChromeMainDelegate::InitializeMemorySystem() { +@@ -2015,5 +2036,5 @@ void ChromeMainDelegate::InitializeMemorySystem() { .SetDispatcherParameters(memory_system::DispatcherParameters:: PoissonAllocationSamplerInclusion::kEnforce, allocation_recorder_inclusion, process_type) @@ -182,22 +182,22 @@ index 521d5710b6387..8a5f3e6a312d2 100644 #include "components/memory_system/memory_system.h" #include "content/public/app/content_main_delegate.h" +#include "ui/base/resource/resource_bundle.h" - + namespace base { class CommandLine; @@ -55,6 +56,8 @@ class ChromeMainDelegate : public content::ContentMainDelegate { - + ~ChromeMainDelegate() override; - + + virtual void CleanupOnUIThread(); + protected: // content::ContentMainDelegate: std::optional BasicStartupComplete() override; @@ -99,13 +102,17 @@ class ChromeMainDelegate : public content::ContentMainDelegate { - + void InitializeMemorySystem(); - + + virtual ui::ResourceBundle::Delegate* GetResourceBundleDelegate() { + return nullptr; + } @@ -205,16 +205,16 @@ index 521d5710b6387..8a5f3e6a312d2 100644 std::unique_ptr chrome_content_browser_client_; std::unique_ptr chrome_content_utility_client_; std::unique_ptr tracing_sampler_profiler_; - + ChromeContentClient chrome_content_client_; - + - memory_system::MemorySystem memory_system_; + std::unique_ptr memory_system_; - + #if BUILDFLAG(IS_CHROMEOS_LACROS) std::unique_ptr lacros_service_; diff --git chrome/app_shim/BUILD.gn chrome/app_shim/BUILD.gn -index 8bf88eee16370..4c4d31d6a5451 100644 +index db17714f74137..23f9f2eb3eb8b 100644 --- chrome/app_shim/BUILD.gn +++ chrome/app_shim/BUILD.gn @@ -24,6 +24,7 @@ source_set("app_shim") { @@ -239,16 +239,16 @@ index ac1361bd6bc2e..a303ca169c7f7 100644 #include "chrome/app_shim/app_shim_delegate.h" @@ -171,7 +172,9 @@ int APP_SHIM_ENTRY_POINT_NAME(const app_mode::ChromeAppModeInfo* info) { base::FilePath(info->user_data_dir).DirName().DirName().DirName(); - + // TODO(crbug.com/40807881): Specify `user_data_dir` to CrashPad. +#if !BUILDFLAG(ENABLE_CEF) ChromeCrashReporterClient::Create(); +#endif crash_reporter::InitializeCrashpad(true, "app_shim"); - + base::PathService::OverrideAndCreateIfNeeded( diff --git chrome/browser/chrome_browser_main.cc chrome/browser/chrome_browser_main.cc -index bf8c5df67c1e3..61bf28f46b423 100644 +index b85539a24653f..48c74152428cf 100644 --- chrome/browser/chrome_browser_main.cc +++ chrome/browser/chrome_browser_main.cc @@ -53,6 +53,7 @@ @@ -259,60 +259,60 @@ index bf8c5df67c1e3..61bf28f46b423 100644 #include "chrome/browser/about_flags.h" #include "chrome/browser/active_use_util.h" #include "chrome/browser/after_startup_task_utils.h" -@@ -529,7 +530,7 @@ void ProcessSingletonNotificationCallbackImpl( +@@ -530,7 +531,7 @@ void ProcessSingletonNotificationCallbackImpl( return; } - + -#if BUILDFLAG(IS_WIN) +#if BUILDFLAG(IS_WIN) && !BUILDFLAG(ENABLE_CEF) // 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 -@@ -833,7 +834,7 @@ int ChromeBrowserMainParts::PreEarlyInitialization() { +@@ -843,7 +844,7 @@ int ChromeBrowserMainParts::PreEarlyInitialization() { return content::RESULT_CODE_NORMAL_EXIT; } - + -#if BUILDFLAG(IS_WIN) +#if BUILDFLAG(IS_WIN) && !BUILDFLAG(ENABLE_CEF) // If we are running stale binaries then relaunch and exit immediately. if (upgrade_util::IsRunningOldChrome()) { if (!upgrade_util::RelaunchChromeBrowser( -@@ -846,7 +847,7 @@ int ChromeBrowserMainParts::PreEarlyInitialization() { +@@ -856,7 +857,7 @@ int ChromeBrowserMainParts::PreEarlyInitialization() { // result in browser startup bailing. return chrome::RESULT_CODE_NORMAL_EXIT_UPGRADE_RELAUNCHED; } -#endif // BUILDFLAG(IS_WIN) +#endif // BUILDFLAG(IS_WIN) && !BUILDFLAG(ENABLE_CEF) - + return load_local_state_result; } -@@ -956,7 +957,7 @@ int ChromeBrowserMainParts::OnLocalStateLoaded( +@@ -966,7 +967,7 @@ int ChromeBrowserMainParts::OnLocalStateLoaded( browser_process_->local_state()); platform_management_service->RefreshCache(base::NullCallback()); - + -#if BUILDFLAG(IS_WIN) +#if BUILDFLAG(IS_WIN) && !BUILDFLAG(ENABLE_CEF) if (first_run::IsChromeFirstRun()) { bool stats_default; if (GoogleUpdateSettings::GetCollectStatsConsentDefault(&stats_default)) { -@@ -969,7 +970,7 @@ int ChromeBrowserMainParts::OnLocalStateLoaded( +@@ -979,7 +980,7 @@ int ChromeBrowserMainParts::OnLocalStateLoaded( : metrics::EnableMetricsDefault::OPT_IN); } } -#endif // BUILDFLAG(IS_WIN) +#endif // BUILDFLAG(IS_WIN) && !BUILDFLAG(ENABLE_CEF) - + std::string locale = startup_data_->chrome_feature_list_creator()->actual_locale(); -@@ -1002,6 +1003,7 @@ int ChromeBrowserMainParts::ApplyFirstRunPrefs() { +@@ -1012,6 +1013,7 @@ int ChromeBrowserMainParts::ApplyFirstRunPrefs() { #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) master_prefs_ = std::make_unique(); - + +#if !BUILDFLAG(ENABLE_CEF) std::unique_ptr installer_initial_prefs = startup_data_->chrome_feature_list_creator()->TakeInitialPrefs(); if (!installer_initial_prefs) -@@ -1035,6 +1037,7 @@ int ChromeBrowserMainParts::ApplyFirstRunPrefs() { +@@ -1045,6 +1047,7 @@ int ChromeBrowserMainParts::ApplyFirstRunPrefs() { master_prefs_->confirm_to_quit); } #endif // BUILDFLAG(IS_MAC) @@ -320,57 +320,57 @@ index bf8c5df67c1e3..61bf28f46b423 100644 #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) return content::RESULT_CODE_NORMAL_EXIT; } -@@ -1096,6 +1099,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { - +@@ -1106,6 +1109,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { + browser_process_->browser_policy_connector()->OnResourceBundleCreated(); - + +#if !BUILDFLAG(ENABLE_CEF) // 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) -@@ -1117,6 +1121,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { +@@ -1127,6 +1131,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_MAC) #if defined(ARCH_CPU_X86_64) -@@ -1479,6 +1484,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1498,6 +1503,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { browser_process_->PreMainMessageLoopRun(); - + #if BUILDFLAG(IS_WIN) +#if !BUILDFLAG(ENABLE_CEF) // 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)) { -@@ -1490,6 +1496,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1509,6 +1515,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { return ChromeBrowserMainPartsWin::HandleIconsCommands( *base::CommandLine::ForCurrentProcess()); } +#endif // !BUILDFLAG(ENABLE_CEF) - + ui::SelectFileDialog::SetFactory( std::make_unique()); -@@ -1515,6 +1522,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1534,6 +1541,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { } #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( -@@ -1528,18 +1536,22 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1547,18 +1555,22 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { ? static_cast(content::RESULT_CODE_NORMAL_EXIT) : static_cast(chrome::RESULT_CODE_SHELL_INTEGRATION_FAILED); } +#endif // !BUILDFLAG(ENABLE_CEF) - + #if defined(USE_AURA) // Make sure aura::Env has been initialized. CHECK(aura::Env::GetInstance()); #endif // defined(USE_AURA) - + + +#if !BUILDFLAG(ENABLE_CEF) #if BUILDFLAG(IS_WIN) @@ -380,44 +380,44 @@ index bf8c5df67c1e3..61bf28f46b423 100644 return chrome::RESULT_CODE_NORMAL_EXIT_UPGRADE_RELAUNCHED; #endif // BUILDFLAG(IS_WIN) +#endif // !BUILDFLAG(ENABLE_CEF) - + #if !BUILDFLAG(IS_ANDROID) && BUILDFLAG(ENABLE_DOWNGRADE_PROCESSING) // Begin relaunch processing immediately if User Data migration is required -@@ -1578,7 +1590,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1597,7 +1609,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { } #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 -@@ -1587,7 +1599,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1606,7 +1618,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { // obtained but before potentially creating the first run sentinel). if (ChromeBrowserMainPartsWin::CheckMachineLevelInstall()) return chrome::RESULT_CODE_MACHINE_LEVEL_INSTALL_EXISTS; -#endif // BUILDFLAG(IS_WIN) +#endif // BUILDFLAG(IS_WIN) && !BUILDFLAG(ENABLE_CEF) - + // Desktop construction occurs here, (required before profile creation). PreProfileInit(); -@@ -1660,6 +1672,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1679,6 +1691,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { // Call `PostProfileInit()`and set it up for profiles created later. profile_init_manager_ = std::make_unique(this, profile); - + +#if !BUILDFLAG(ENABLE_CEF) #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 -@@ -1699,6 +1712,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1718,6 +1731,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { *base::CommandLine::ForCurrentProcess()); } #endif // BUILDFLAG(IS_WIN) +#endif // !BUILDFLAG(ENABLE_CEF) - + // Configure modules that need access to resources. net::NetModule::SetResourceProvider(ChromeNetResourceProvider); -@@ -1790,6 +1804,11 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1809,6 +1823,11 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { g_browser_process->profile_manager()->GetLastOpenedProfiles(); } #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -429,8 +429,8 @@ index bf8c5df67c1e3..61bf28f46b423 100644 // This step is costly. if (browser_creator_->Start(*base::CommandLine::ForCurrentProcess(), base::FilePath(), profile_info, -@@ -1822,11 +1841,14 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { - +@@ -1841,11 +1860,14 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { + // Create the RunLoop for MainMessageLoopRun() to use and transfer // ownership of the browser's lifetime to the BrowserProcess. + // CEF with the Chrome runtime will create and manage its own RunLoop. @@ -443,7 +443,7 @@ index bf8c5df67c1e3..61bf28f46b423 100644 + browser_creator_.reset(); #endif // !BUILDFLAG(IS_ANDROID) - + diff --git chrome/browser/chrome_browser_main_mac.mm chrome/browser/chrome_browser_main_mac.mm index e26e3625c99c8..c0d4a95607e37 100644 --- chrome/browser/chrome_browser_main_mac.mm @@ -459,7 +459,7 @@ index e26e3625c99c8..c0d4a95607e37 100644 @@ -125,6 +126,7 @@ void ChromeBrowserMainPartsMac::PreCreateMainMessageLoop() { } #endif // !BUILDFLAG(CHROME_FOR_TESTING) - + +#if !BUILDFLAG(ENABLE_CEF) // Create the app delegate by requesting the shared AppController. CHECK_EQ(nil, NSApp.delegate); @@ -469,19 +469,19 @@ index e26e3625c99c8..c0d4a95607e37 100644 l10n_util::GetStringUTF16(IDS_PRODUCT_NAME), false); [app_controller mainMenuCreated]; +#endif // BUILDFLAG(ENABLE_CEF) - + ui::WarmScreenCapture(); - + @@ -187,5 +190,7 @@ void ChromeBrowserMainPartsMac::PostMainMessageLoopRun() { } - + void ChromeBrowserMainPartsMac::DidEndMainMessageLoop() { +#if !BUILDFLAG(ENABLE_CEF) [AppController.sharedController didEndMainMessageLoop]; +#endif } diff --git chrome/browser/chrome_content_browser_client.cc chrome/browser/chrome_content_browser_client.cc -index 4db37945148cb..56a31fecf00a2 100644 +index e5ce608907f72..ce49d755ce623 100644 --- chrome/browser/chrome_content_browser_client.cc +++ chrome/browser/chrome_content_browser_client.cc @@ -48,6 +48,7 @@ @@ -492,19 +492,19 @@ index 4db37945148cb..56a31fecf00a2 100644 #include "chrome/browser/after_startup_task_utils.h" #include "chrome/browser/ai/ai_manager_keyed_service_factory.h" #include "chrome/browser/app_mode/app_mode_utils.h" -@@ -1543,6 +1544,8 @@ ChromeContentBrowserClient::GetPopupNavigationDelegateFactoryForTesting() { +@@ -1552,6 +1553,8 @@ ChromeContentBrowserClient::GetPopupNavigationDelegateFactoryForTesting() { } - + ChromeContentBrowserClient::ChromeContentBrowserClient() { + keepalive_timer_.reset(new base::OneShotTimer()); + #if BUILDFLAG(ENABLE_PLUGINS) extra_parts_.push_back( std::make_unique()); -@@ -1580,6 +1583,11 @@ ChromeContentBrowserClient::~ChromeContentBrowserClient() { +@@ -1589,6 +1592,11 @@ ChromeContentBrowserClient::~ChromeContentBrowserClient() { } } - + +void ChromeContentBrowserClient::CleanupOnUIThread() { + DCHECK_CURRENTLY_ON(content::BrowserThread::UI); + keepalive_timer_.reset(); @@ -513,7 +513,7 @@ index 4db37945148cb..56a31fecf00a2 100644 // static void ChromeContentBrowserClient::RegisterLocalStatePrefs( PrefRegistrySimple* registry) { -@@ -3956,28 +3964,25 @@ bool UpdatePreferredColorScheme(WebPreferences* web_prefs, +@@ -3986,28 +3994,25 @@ bool UpdatePreferredColorScheme(WebPreferences* web_prefs, web_prefs->preferred_color_scheme; } #else @@ -543,7 +543,7 @@ index 4db37945148cb..56a31fecf00a2 100644 + ? ui::NativeTheme::PreferredColorScheme::kLight + : ui::NativeTheme::PreferredColorScheme::kDark; } - + - // Update based on the ColorProvider associated with `web_contents`. Depends - // on the browser color mode settings and whether the user profile has set a - // custom coloring for the browser ui. @@ -557,39 +557,39 @@ index 4db37945148cb..56a31fecf00a2 100644 + web_prefs->preferred_root_scrollbar_color_scheme = + ToBlinkPreferredColorScheme(preferred_color_scheme); #endif // BUILDFLAG(IS_ANDROID) - + // Reauth WebUI doesn't support dark mode yet because it shares the dialog -@@ -4748,9 +4753,11 @@ void ChromeContentBrowserClient::BrowserURLHandlerCreated( +@@ -4761,9 +4766,11 @@ void ChromeContentBrowserClient::BrowserURLHandlerCreated( &search::HandleNewTabURLReverseRewrite); #endif // BUILDFLAG(IS_ANDROID) - + +#if !BUILDFLAG(ENABLE_CEF) // chrome: & friends. handler->AddHandlerPair(&ChromeContentBrowserClient::HandleWebUI, &ChromeContentBrowserClient::HandleWebUIReverse); +#endif } - + base::FilePath ChromeContentBrowserClient::GetDefaultDownloadDirectory() { -@@ -6877,7 +6884,7 @@ void ChromeContentBrowserClient::OnNetworkServiceCreated( +@@ -6900,7 +6907,7 @@ void ChromeContentBrowserClient::OnNetworkServiceCreated( #endif } - + -void ChromeContentBrowserClient::ConfigureNetworkContextParams( +bool ChromeContentBrowserClient::ConfigureNetworkContextParams( content::BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -6895,6 +6902,8 @@ void ChromeContentBrowserClient::ConfigureNetworkContextParams( +@@ -6918,6 +6925,8 @@ void ChromeContentBrowserClient::ConfigureNetworkContextParams( network_context_params->user_agent = GetUserAgentBasedOnPolicy(context); network_context_params->accept_language = GetApplicationLocale(); } + + return true; } - + std::vector -@@ -8047,11 +8056,11 @@ void ChromeContentBrowserClient::OnKeepaliveRequestStarted( +@@ -8072,11 +8081,11 @@ void ChromeContentBrowserClient::OnKeepaliveRequestStarted( const auto now = base::TimeTicks::Now(); const auto timeout = GetKeepaliveTimerTimeout(context); keepalive_deadline_ = std::max(keepalive_deadline_, now + timeout); @@ -603,7 +603,7 @@ index 4db37945148cb..56a31fecf00a2 100644 FROM_HERE, keepalive_deadline_ - now, base::BindOnce( &ChromeContentBrowserClient::OnKeepaliveTimerFired, -@@ -8073,7 +8082,8 @@ void ChromeContentBrowserClient::OnKeepaliveRequestFinished() { +@@ -8098,7 +8107,8 @@ void ChromeContentBrowserClient::OnKeepaliveRequestFinished() { --num_keepalive_requests_; if (num_keepalive_requests_ == 0) { DVLOG(1) << "Stopping the keepalive timer"; @@ -613,7 +613,7 @@ index 4db37945148cb..56a31fecf00a2 100644 // This deletes the keep alive handle attached to the timer function and // unblock the shutdown sequence. } -@@ -8237,7 +8247,7 @@ void ChromeContentBrowserClient::OnKeepaliveTimerFired( +@@ -8262,7 +8272,7 @@ void ChromeContentBrowserClient::OnKeepaliveTimerFired( const auto now = base::TimeTicks::Now(); const auto then = keepalive_deadline_; if (now < then) { @@ -623,13 +623,13 @@ index 4db37945148cb..56a31fecf00a2 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 355d347c1ae84..8b1eb079ab348 100644 +index 8a96e0b26a27a..2442bf7e7f88c 100644 --- chrome/browser/chrome_content_browser_client.h +++ chrome/browser/chrome_content_browser_client.h -@@ -151,6 +151,8 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { - +@@ -148,6 +148,8 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { + ~ChromeContentBrowserClient() override; - + + virtual void CleanupOnUIThread(); + // TODO(crbug.com/41356866): This file is about calls from content/ out @@ -645,16 +645,16 @@ index 355d347c1ae84..8b1eb079ab348 100644 bool in_memory, const base::FilePath& relative_partition_path, @@ -1255,7 +1257,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { - + #if !BUILDFLAG(IS_ANDROID) uint64_t num_keepalive_requests_ = 0; - base::OneShotTimer keepalive_timer_; + std::unique_ptr keepalive_timer_; base::TimeTicks keepalive_deadline_; #endif - + diff --git chrome/browser/prefs/browser_prefs.cc chrome/browser/prefs/browser_prefs.cc -index 812bb38a0c53e..5fc84ff4b855e 100644 +index e408ae181c2eb..8a68d4556adf8 100644 --- chrome/browser/prefs/browser_prefs.cc +++ chrome/browser/prefs/browser_prefs.cc @@ -16,6 +16,7 @@ @@ -665,10 +665,10 @@ index 812bb38a0c53e..5fc84ff4b855e 100644 #include "chrome/browser/about_flags.h" #include "chrome/browser/accessibility/accessibility_labels_service.h" #include "chrome/browser/accessibility/invert_bubble_prefs.h" -@@ -205,6 +206,10 @@ - #include "chrome/browser/background/background_mode_manager.h" - #endif - +@@ -213,6 +214,10 @@ + #include "extensions/browser/pref_names.h" + #endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE) + +#if BUILDFLAG(ENABLE_CEF) +#include "cef/libcef/browser/prefs/browser_prefs.h" +#endif @@ -676,18 +676,18 @@ index 812bb38a0c53e..5fc84ff4b855e 100644 #if BUILDFLAG(ENABLE_EXTENSIONS) #include "chrome/browser/accessibility/animation_policy_prefs.h" #include "chrome/browser/apps/platform_apps/shortcut_manager.h" -@@ -1731,7 +1736,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1801,7 +1806,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING) #endif // BUILDFLAG(IS_WIN) - + -#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS) +#if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS) && \ + BUILDFLAG(ENABLE_DOWNGRADE_PROCESSING) downgrade::RegisterPrefs(registry); #endif - -@@ -1784,6 +1790,11 @@ void RegisterLocalState(PrefRegistrySimple* registry) { - + +@@ -1854,6 +1860,11 @@ void RegisterLocalState(PrefRegistrySimple* registry) { + // This is intentionally last. RegisterLocalStatePrefsForMigration(registry); + @@ -696,12 +696,12 @@ index 812bb38a0c53e..5fc84ff4b855e 100644 + browser_prefs::RegisterLocalStatePrefs(registry); +#endif } - + // Register prefs applicable to all profiles. -@@ -2233,6 +2244,10 @@ void RegisterUserProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2305,6 +2316,10 @@ void RegisterUserProfilePrefs(user_prefs::PrefRegistrySyncable* registry, const std::string& locale) { RegisterProfilePrefs(registry, locale); - + +#if BUILDFLAG(ENABLE_CEF) + browser_prefs::RegisterProfilePrefs(registry); +#endif diff --git a/patch/patches/chrome_runtime_views.patch b/patch/patches/chrome_runtime_views.patch index 86798fca3..daeaa4c0e 100644 --- a/patch/patches/chrome_runtime_views.patch +++ b/patch/patches/chrome_runtime_views.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/ui/browser_command_controller.cc chrome/browser/ui/browser_command_controller.cc -index c49b266e288ca..d1f9a1ab1e26d 100644 +index 86af74569f013..99870eb532f35 100644 --- chrome/browser/ui/browser_command_controller.cc +++ chrome/browser/ui/browser_command_controller.cc -@@ -413,6 +413,7 @@ bool BrowserCommandController::ExecuteCommandWithDisposition( +@@ -416,6 +416,7 @@ bool BrowserCommandController::ExecuteCommandWithDisposition( // choose to not implement CommandUpdaterDelegate inside this class and // therefore command_updater_ doesn't have the delegate set). if (!SupportsCommand(id) || !IsCommandEnabled(id)) { @@ -10,7 +10,7 @@ index c49b266e288ca..d1f9a1ab1e26d 100644 return false; } -@@ -429,6 +430,13 @@ bool BrowserCommandController::ExecuteCommandWithDisposition( +@@ -432,6 +433,13 @@ bool BrowserCommandController::ExecuteCommandWithDisposition( DCHECK(command_updater_.IsCommandEnabled(id)) << "Invalid/disabled command " << id; @@ -24,7 +24,7 @@ index c49b266e288ca..d1f9a1ab1e26d 100644 // The order of commands in this switch statement must match the function // declaration order in browser.h! switch (id) { -@@ -1221,11 +1229,13 @@ void BrowserCommandController::TabRestoreServiceLoaded( +@@ -1206,11 +1214,13 @@ void BrowserCommandController::TabRestoreServiceLoaded( // BrowserCommandController, private: bool BrowserCommandController::IsShowingMainUI() { @@ -41,10 +41,10 @@ index c49b266e288ca..d1f9a1ab1e26d 100644 void BrowserCommandController::InitCommandState() { diff --git chrome/browser/ui/toolbar/app_menu_model.cc chrome/browser/ui/toolbar/app_menu_model.cc -index 54b5fca016876..60138e6a13473 100644 +index 57fb7d50fafa5..bf43ebfba84b5 100644 --- chrome/browser/ui/toolbar/app_menu_model.cc +++ chrome/browser/ui/toolbar/app_menu_model.cc -@@ -723,10 +723,12 @@ FindAndEditSubMenuModel::FindAndEditSubMenuModel( +@@ -716,10 +716,12 @@ FindAndEditSubMenuModel::FindAndEditSubMenuModel( ui::SimpleMenuModel::Delegate* delegate) : SimpleMenuModel(delegate) { AddItemWithStringIdAndVectorIcon(this, IDC_FIND, IDS_FIND, kSearchMenuIcon); @@ -57,7 +57,7 @@ index 54b5fca016876..60138e6a13473 100644 } class SaveAndShareSubMenuModel : public ui::SimpleMenuModel { -@@ -791,6 +793,57 @@ SaveAndShareSubMenuModel::SaveAndShareSubMenuModel( +@@ -784,6 +786,57 @@ SaveAndShareSubMenuModel::SaveAndShareSubMenuModel( } } @@ -115,7 +115,7 @@ index 54b5fca016876..60138e6a13473 100644 } // namespace //////////////////////////////////////////////////////////////////////////////// -@@ -1687,7 +1740,7 @@ bool AppMenuModel::IsCommandIdChecked(int command_id) const { +@@ -1688,7 +1741,7 @@ bool AppMenuModel::IsCommandIdChecked(int command_id) const { return false; } @@ -124,7 +124,7 @@ index 54b5fca016876..60138e6a13473 100644 GlobalError* error = GlobalErrorServiceFactory::GetForProfile(browser_->profile()) ->GetGlobalErrorByMenuItemCommandID(command_id); -@@ -1703,6 +1756,30 @@ bool AppMenuModel::IsCommandIdEnabled(int command_id) const { +@@ -1704,6 +1757,30 @@ bool AppMenuModel::IsCommandIdEnabled(int command_id) const { } } @@ -155,7 +155,7 @@ index 54b5fca016876..60138e6a13473 100644 bool AppMenuModel::IsCommandIdAlerted(int command_id) const { if (command_id == IDC_VIEW_PASSWORDS || command_id == IDC_SHOW_PASSWORD_MANAGER) { -@@ -1865,8 +1942,10 @@ void AppMenuModel::Build() { +@@ -1860,8 +1937,10 @@ void AppMenuModel::Build() { IDS_CLEAR_BROWSING_DATA, kTrashCanRefreshIcon); @@ -166,7 +166,7 @@ index 54b5fca016876..60138e6a13473 100644 AddSeparator(ui::NORMAL_SEPARATOR); AddItemWithStringIdAndVectorIcon(this, IDC_PRINT, IDS_PRINT, kPrintMenuIcon); -@@ -1981,6 +2060,11 @@ void AppMenuModel::Build() { +@@ -1964,6 +2043,11 @@ void AppMenuModel::Build() { } #endif // !BUILDFLAG(IS_CHROMEOS_ASH) @@ -397,7 +397,7 @@ index 14a8a70d853f6..bf81594947886 100644 // regenerated. bool RegenerateFrameOnThemeChange(BrowserThemeChangeType theme_change_type); diff --git chrome/browser/ui/views/frame/browser_view.cc chrome/browser/ui/views/frame/browser_view.cc -index 79a944bab28e1..1c236bd829c05 100644 +index c3241e411d46d..f3842551f3c75 100644 --- chrome/browser/ui/views/frame/browser_view.cc +++ chrome/browser/ui/views/frame/browser_view.cc @@ -366,10 +366,6 @@ constexpr base::FeatureParam kLoadingTabAnimationFrameDelay = { @@ -411,7 +411,7 @@ index 79a944bab28e1..1c236bd829c05 100644 #if BUILDFLAG(IS_CHROMEOS_ASH) // UMA histograms that record animation smoothness for tab loading animation. constexpr char kTabLoadingSmoothnessHistogramName[] = -@@ -708,6 +704,14 @@ class BrowserViewLayoutDelegateImpl : public BrowserViewLayoutDelegate { +@@ -769,6 +765,14 @@ class BrowserViewLayoutDelegateImpl : public BrowserViewLayoutDelegate { return browser_view_->frame()->GetTopInset() - browser_view_->y(); } @@ -426,7 +426,7 @@ index 79a944bab28e1..1c236bd829c05 100644 bool IsToolbarVisible() const override { return browser_view_->IsToolbarVisible(); } -@@ -859,11 +863,21 @@ class BrowserView::AccessibilityModeObserver : public ui::AXModeObserver { +@@ -920,11 +924,21 @@ class BrowserView::AccessibilityModeObserver : public ui::AXModeObserver { /////////////////////////////////////////////////////////////////////////////// // BrowserView, public: @@ -449,7 +449,7 @@ index 79a944bab28e1..1c236bd829c05 100644 SetShowIcon( ::ShouldShowWindowIcon(browser_.get(), AppUsesWindowControlsOverlay())); -@@ -953,8 +967,15 @@ BrowserView::BrowserView(std::unique_ptr browser) +@@ -1014,8 +1028,15 @@ BrowserView::BrowserView(std::unique_ptr browser) contents_container->SetLayoutManager(std::make_unique( devtools_web_view_, contents_web_view_, watermark_view_)); @@ -467,7 +467,7 @@ index 79a944bab28e1..1c236bd829c05 100644 contents_separator_ = top_container_->AddChildView(std::make_unique()); -@@ -1035,7 +1056,9 @@ void BrowserView::ToggleCompactModeUI() { +@@ -1096,7 +1117,9 @@ void BrowserView::ToggleCompactModeUI() { } BrowserView::~BrowserView() { @@ -477,7 +477,7 @@ index 79a944bab28e1..1c236bd829c05 100644 // Destroy the top controls slide controller first as it depends on the // tabstrip model and the browser frame. -@@ -1043,7 +1066,9 @@ BrowserView::~BrowserView() { +@@ -1104,7 +1127,9 @@ BrowserView::~BrowserView() { // All the tabs should have been destroyed already. If we were closed by the // OS with some tabs than the NativeBrowserFrame should have destroyed them. @@ -487,7 +487,7 @@ index 79a944bab28e1..1c236bd829c05 100644 // Stop the animation timer explicitly here to avoid running it in a nested // message loop, which may run by Browser destructor. -@@ -1052,17 +1077,18 @@ BrowserView::~BrowserView() { +@@ -1113,17 +1138,18 @@ BrowserView::~BrowserView() { // Immersive mode may need to reparent views before they are removed/deleted. immersive_mode_controller_.reset(); @@ -510,7 +510,7 @@ index 79a944bab28e1..1c236bd829c05 100644 // `watermark_view_` is a raw pointer to a child view, so it needs to be set // to null before `RemoveAllChildViews()` is called to avoid dangling. -@@ -1622,6 +1648,13 @@ gfx::Point BrowserView::GetThemeOffsetFromBrowserView() const { +@@ -1683,6 +1709,13 @@ gfx::Point BrowserView::GetThemeOffsetFromBrowserView() const { ThemeProperties::kFrameHeightAboveTabs - browser_view_origin.y()); } @@ -524,7 +524,7 @@ index 79a944bab28e1..1c236bd829c05 100644 // static: BrowserView::DevToolsDockedPlacement BrowserView::GetDevToolsDockedPlacement( const gfx::Rect& contents_webview_bounds, -@@ -2036,9 +2069,14 @@ void BrowserView::OnExclusiveAccessUserInput() { +@@ -2097,9 +2130,14 @@ void BrowserView::OnExclusiveAccessUserInput() { bool BrowserView::ShouldHideUIForFullscreen() const { // Immersive mode needs UI for the slide-down top panel. @@ -540,7 +540,7 @@ index 79a944bab28e1..1c236bd829c05 100644 return frame_->GetFrameView()->ShouldHideTopUIForFullscreen(); } -@@ -3212,7 +3250,8 @@ views::View* BrowserView::GetTopContainer() { +@@ -3293,7 +3331,8 @@ views::View* BrowserView::GetTopContainer() { } DownloadBubbleUIController* BrowserView::GetDownloadBubbleUIController() { @@ -550,7 +550,7 @@ index 79a944bab28e1..1c236bd829c05 100644 if (auto* download_button = toolbar_button_provider_->GetDownloadButton()) return download_button->bubble_controller(); return nullptr; -@@ -3767,7 +3806,8 @@ void BrowserView::ReparentTopContainerForEndOfImmersive() { +@@ -3861,7 +3900,8 @@ void BrowserView::ReparentTopContainerForEndOfImmersive() { if (top_container()->parent() == this) return; @@ -560,7 +560,7 @@ index 79a944bab28e1..1c236bd829c05 100644 top_container()->DestroyLayer(); AddChildViewAt(top_container(), 0); EnsureFocusOrder(); -@@ -4254,11 +4294,38 @@ void BrowserView::GetAccessiblePanes(std::vector* panes) { +@@ -4348,11 +4388,38 @@ void BrowserView::GetAccessiblePanes(std::vector* panes) { bool BrowserView::ShouldDescendIntoChildForEventHandling( gfx::NativeView child, const gfx::Point& location) { @@ -601,7 +601,7 @@ index 79a944bab28e1..1c236bd829c05 100644 // Draggable regions are defined relative to the web contents. gfx::Point point_in_contents_web_view_coords(location); views::View::ConvertPointToTarget(GetWidget()->GetRootView(), -@@ -4267,7 +4334,7 @@ bool BrowserView::ShouldDescendIntoChildForEventHandling( +@@ -4361,7 +4428,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. @@ -610,7 +610,7 @@ index 79a944bab28e1..1c236bd829c05 100644 point_in_contents_web_view_coords.x(), point_in_contents_web_view_coords.y()) || WidgetOwnedByAnchorContainsPoint(point_in_contents_web_view_coords); -@@ -4378,8 +4445,10 @@ void BrowserView::Layout(PassKey) { +@@ -4472,8 +4539,10 @@ void BrowserView::Layout(PassKey) { // TODO(jamescook): Why was this in the middle of layout code? toolbar_->location_bar()->omnibox_view()->SetFocusBehavior( @@ -623,7 +623,7 @@ index 79a944bab28e1..1c236bd829c05 100644 // Some of the situations when the BrowserView is laid out are: // - Enter/exit immersive fullscreen mode. -@@ -4445,6 +4514,11 @@ void BrowserView::AddedToWidget() { +@@ -4539,6 +4608,11 @@ void BrowserView::AddedToWidget() { SetThemeProfileForWindow(GetNativeWindow(), browser_->profile()); #endif @@ -635,7 +635,7 @@ index 79a944bab28e1..1c236bd829c05 100644 toolbar_->Init(); // TODO(pbos): Investigate whether the side panels should be creatable when -@@ -4487,13 +4561,9 @@ void BrowserView::AddedToWidget() { +@@ -4581,13 +4655,9 @@ void BrowserView::AddedToWidget() { EnsureFocusOrder(); @@ -651,7 +651,7 @@ index 79a944bab28e1..1c236bd829c05 100644 using_native_frame_ = frame_->ShouldUseNativeFrame(); MaybeInitializeWebUITabStrip(); -@@ -4857,7 +4927,8 @@ void BrowserView::ProcessFullscreen(bool fullscreen, const int64_t display_id) { +@@ -4951,7 +5021,8 @@ void BrowserView::ProcessFullscreen(bool fullscreen, const int64_t display_id) { // Undo our anti-jankiness hacks and force a re-layout. in_process_fullscreen_ = false; ToolbarSizeChanged(false); @@ -661,7 +661,7 @@ index 79a944bab28e1..1c236bd829c05 100644 } void BrowserView::RequestFullscreen(bool fullscreen, int64_t display_id) { -@@ -5361,6 +5432,8 @@ Profile* BrowserView::GetProfile() { +@@ -5443,6 +5514,8 @@ Profile* BrowserView::GetProfile() { } void BrowserView::UpdateUIForTabFullscreen() { @@ -670,7 +670,7 @@ index 79a944bab28e1..1c236bd829c05 100644 frame()->GetFrameView()->UpdateFullscreenTopUI(); } -@@ -5383,6 +5456,8 @@ void BrowserView::HideDownloadShelf() { +@@ -5465,6 +5538,8 @@ void BrowserView::HideDownloadShelf() { } bool BrowserView::CanUserExitFullscreen() const { @@ -680,7 +680,7 @@ index 79a944bab28e1..1c236bd829c05 100644 } diff --git chrome/browser/ui/views/frame/browser_view.h chrome/browser/ui/views/frame/browser_view.h -index bff67fba31480..bf3c87a126457 100644 +index 6fa57160f7193..4e10786e2c5a4 100644 --- chrome/browser/ui/views/frame/browser_view.h +++ chrome/browser/ui/views/frame/browser_view.h @@ -137,11 +137,16 @@ class BrowserView : public BrowserWindow, @@ -700,9 +700,9 @@ index bff67fba31480..bf3c87a126457 100644 void set_frame(BrowserFrame* frame) { frame_ = frame; paint_as_active_subscription_ = -@@ -825,6 +830,10 @@ class BrowserView : public BrowserWindow, - void ApplyScreenshotSettings(bool allow); - #endif +@@ -831,6 +836,10 @@ class BrowserView : public BrowserWindow, + void Copy(); + void Paste(); + // Called during Toolbar destruction to remove dependent objects that have + // dangling references. @@ -711,7 +711,7 @@ index bff67fba31480..bf3c87a126457 100644 protected: // Enumerates where the devtools are docked relative to the browser's main // web contents. -@@ -848,6 +857,8 @@ class BrowserView : public BrowserWindow, +@@ -854,6 +863,8 @@ class BrowserView : public BrowserWindow, const gfx::Rect& contents_webview_bounds, const gfx::Rect& local_webview_container_bounds); @@ -721,7 +721,7 @@ index bff67fba31480..bf3c87a126457 100644 // Do not friend BrowserViewLayout. Use the BrowserViewLayoutDelegate // interface to keep these two classes decoupled and testable. diff --git chrome/browser/ui/views/frame/browser_view_layout.cc chrome/browser/ui/views/frame/browser_view_layout.cc -index 7359b0457bf17..e661e2af050f0 100644 +index 80dcf5b08c67c..d0aef3fc40b07 100644 --- chrome/browser/ui/views/frame/browser_view_layout.cc +++ chrome/browser/ui/views/frame/browser_view_layout.cc @@ -53,6 +53,10 @@ @@ -755,7 +755,7 @@ index 7359b0457bf17..e661e2af050f0 100644 return gfx::Point(middle_x - size.width() / 2, top); } -@@ -151,7 +159,7 @@ class BrowserViewLayout::WebContentsModalDialogHostViews +@@ -162,7 +170,7 @@ class BrowserViewLayout::WebContentsModalDialogHostViews // universally. views::View* view = browser_view_layout_->contents_container_; gfx::Rect content_area = view->ConvertRectToWidget(view->GetLocalBounds()); @@ -764,7 +764,7 @@ index 7359b0457bf17..e661e2af050f0 100644 return gfx::Size(content_area.width(), content_area.bottom() - top); #endif } -@@ -181,6 +189,13 @@ class BrowserViewLayout::WebContentsModalDialogHostViews +@@ -192,6 +200,13 @@ class BrowserViewLayout::WebContentsModalDialogHostViews return host_widget ? host_widget->GetNativeView() : nullptr; } @@ -778,7 +778,7 @@ index 7359b0457bf17..e661e2af050f0 100644 // Add/remove observer. void AddObserver(ModalDialogHostObserver* observer) override { observer_list_.AddObserver(observer); -@@ -502,6 +517,8 @@ void BrowserViewLayout::Layout(views::View* browser_view) { +@@ -513,6 +528,8 @@ void BrowserViewLayout::Layout(views::View* browser_view) { if (exclusive_access_bubble) exclusive_access_bubble->RepositionIfVisible(); @@ -787,7 +787,7 @@ index 7359b0457bf17..e661e2af050f0 100644 // Adjust any hosted dialogs if the browser's dialog hosting bounds changed. const gfx::Rect dialog_bounds(dialog_host_->GetDialogPosition(gfx::Size()), dialog_host_->GetMaximumDialogSize()); -@@ -515,6 +532,7 @@ void BrowserViewLayout::Layout(views::View* browser_view) { +@@ -526,6 +543,7 @@ void BrowserViewLayout::Layout(views::View* browser_view) { latest_dialog_bounds_in_screen_ = dialog_bounds_in_screen; dialog_host_->NotifyPositionRequiresUpdate(); } @@ -795,7 +795,7 @@ index 7359b0457bf17..e661e2af050f0 100644 } gfx::Size BrowserViewLayout::GetPreferredSize( -@@ -656,6 +674,13 @@ int BrowserViewLayout::LayoutWebUITabStrip(int top) { +@@ -667,6 +685,13 @@ int BrowserViewLayout::LayoutWebUITabStrip(int top) { int BrowserViewLayout::LayoutToolbar(int top) { TRACE_EVENT0("ui", "BrowserViewLayout::LayoutToolbar"); @@ -957,10 +957,10 @@ index 0bd4cfc52548b..8515cec793563 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 f4c711f411689..be422635719db 100644 +index 212b3047f107b..942ed77d0eb3f 100644 --- chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc +++ chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc -@@ -600,29 +600,41 @@ gfx::Range BrowserTabStripController::ListTabsInGroup( +@@ -608,29 +608,41 @@ gfx::Range BrowserTabStripController::ListTabsInGroup( } bool BrowserTabStripController::IsFrameCondensed() const { diff --git a/patch/patches/component_build.patch b/patch/patches/component_build.patch index dad880c75..d38be4509 100644 --- a/patch/patches/component_build.patch +++ b/patch/patches/component_build.patch @@ -1,5 +1,5 @@ diff --git content/browser/devtools/devtools_instrumentation.h content/browser/devtools/devtools_instrumentation.h -index c3fe3e246d225..df8676d7b5080 100644 +index 6253416703b73..66a482b46795b 100644 --- content/browser/devtools/devtools_instrumentation.h +++ content/browser/devtools/devtools_instrumentation.h @@ -114,7 +114,7 @@ bool ApplyUserAgentMetadataOverrides( diff --git a/patch/patches/content_2015.patch b/patch/patches/content_2015.patch index 529a3d765..bf93c14eb 100644 --- a/patch/patches/content_2015.patch +++ b/patch/patches/content_2015.patch @@ -12,7 +12,7 @@ index 11c9cd82d0392..9c700bc625cd5 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 27b688244b3af..aa50f40557874 100644 +index aea31f655d929..5a6633fd581e2 100644 --- content/browser/loader/navigation_url_loader_impl.cc +++ content/browser/loader/navigation_url_loader_impl.cc @@ -860,7 +860,7 @@ NavigationURLLoaderImpl::CreateNonNetworkLoaderFactory( @@ -47,10 +47,10 @@ index 27b688244b3af..aa50f40557874 100644 return std::make_pair( /*is_cacheable=*/false, diff --git content/public/browser/content_browser_client.cc content/public/browser/content_browser_client.cc -index 79c37e0aeb8aa..902133ac26661 100644 +index 49ae7aa8bb754..b82b455749128 100644 --- content/public/browser/content_browser_client.cc +++ content/public/browser/content_browser_client.cc -@@ -1128,7 +1128,7 @@ ContentBrowserClient::CreateURLLoaderHandlerForServiceWorkerNavigationPreload( +@@ -1127,7 +1127,7 @@ ContentBrowserClient::CreateURLLoaderHandlerForServiceWorkerNavigationPreload( void ContentBrowserClient::OnNetworkServiceCreated( network::mojom::NetworkService* network_service) {} @@ -59,7 +59,7 @@ index 79c37e0aeb8aa..902133ac26661 100644 BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -1137,6 +1137,7 @@ void ContentBrowserClient::ConfigureNetworkContextParams( +@@ -1136,6 +1136,7 @@ void ContentBrowserClient::ConfigureNetworkContextParams( cert_verifier_creation_params) { network_context_params->user_agent = GetUserAgentBasedOnPolicy(context); network_context_params->accept_language = "en-us,en"; @@ -68,10 +68,10 @@ index 79c37e0aeb8aa..902133ac26661 100644 std::vector diff --git content/public/browser/content_browser_client.h content/public/browser/content_browser_client.h -index ddca696e47412..82352a0fb71c4 100644 +index d99cccb1f99a8..fb11c0ee286bc 100644 --- content/public/browser/content_browser_client.h +++ content/public/browser/content_browser_client.h -@@ -2144,7 +2144,7 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -2164,7 +2164,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,14 +80,14 @@ index ddca696e47412..82352a0fb71c4 100644 BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -2363,6 +2363,21 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -2383,6 +2383,21 @@ class CONTENT_EXPORT ContentBrowserClient { RenderFrameHost* initiator_document, mojo::PendingRemote* out_factory); + // Same as above, but exposing the whole ResourceRequest object. + virtual bool HandleExternalProtocol( + base::RepeatingCallback web_contents_getter, -+ int frame_tree_node_id, ++ FrameTreeNodeId frame_tree_node_id, + NavigationUIData* navigation_data, + bool is_primary_main_frame, + bool is_in_fenced_frame_tree, @@ -102,7 +102,7 @@ index ddca696e47412..82352a0fb71c4 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. -@@ -2423,6 +2438,10 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -2443,6 +2458,10 @@ class CONTENT_EXPORT ContentBrowserClient { // Used as part of the user agent string. virtual std::string GetProduct(); @@ -139,7 +139,7 @@ index 784e0a5166d6b..1fd1e9ee107f3 100644 // started. virtual void SetRuntimeFeaturesDefaultsBeforeBlinkInitialization() {} diff --git content/renderer/render_thread_impl.cc content/renderer/render_thread_impl.cc -index c8bdd54e22b9b..8a7d4a6acbb93 100644 +index 34d250220f97f..2576aa09f5c44 100644 --- content/renderer/render_thread_impl.cc +++ content/renderer/render_thread_impl.cc @@ -573,6 +573,8 @@ void RenderThreadImpl::Init() { @@ -152,10 +152,10 @@ index c8bdd54e22b9b..8a7d4a6acbb93 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 8ad54eacf1ec5..6556b1c1d4734 100644 +index da2515e0067a9..e792751f278b4 100644 --- content/renderer/renderer_blink_platform_impl.cc +++ content/renderer/renderer_blink_platform_impl.cc -@@ -1058,6 +1058,15 @@ SkBitmap* RendererBlinkPlatformImpl::GetSadPageBitmap() { +@@ -1037,6 +1037,15 @@ SkBitmap* RendererBlinkPlatformImpl::GetSadPageBitmap() { //------------------------------------------------------------------------------ @@ -172,10 +172,10 @@ index 8ad54eacf1ec5..6556b1c1d4734 100644 RendererBlinkPlatformImpl::CreateWebV8ValueConverter() { return std::make_unique(); diff --git content/renderer/renderer_blink_platform_impl.h content/renderer/renderer_blink_platform_impl.h -index b2eae6bcf84a6..adf37a038888f 100644 +index 69c52cb8333fc..ac2bbc7459864 100644 --- content/renderer/renderer_blink_platform_impl.h +++ content/renderer/renderer_blink_platform_impl.h -@@ -247,6 +247,9 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { +@@ -245,6 +245,9 @@ class CONTENT_EXPORT RendererBlinkPlatformImpl : public BlinkPlatformImpl { InertAndMinimumIntervalOfUserLevelMemoryPressureSignal() override; #endif // BUILDFLAG(IS_ANDROID) @@ -186,10 +186,10 @@ index b2eae6bcf84a6..adf37a038888f 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 9064deed51d23..bea9f5e400c5f 100644 +index 1d4bd5b055c1d..83f19e3ab19d1 100644 --- content/shell/browser/shell_content_browser_client.cc +++ content/shell/browser/shell_content_browser_client.cc -@@ -743,7 +743,7 @@ void ShellContentBrowserClient::OnNetworkServiceCreated( +@@ -742,7 +742,7 @@ void ShellContentBrowserClient::OnNetworkServiceCreated( #endif } @@ -198,7 +198,7 @@ index 9064deed51d23..bea9f5e400c5f 100644 BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -752,6 +752,7 @@ void ShellContentBrowserClient::ConfigureNetworkContextParams( +@@ -751,6 +751,7 @@ void ShellContentBrowserClient::ConfigureNetworkContextParams( cert_verifier_creation_params) { ConfigureNetworkContextParamsForShell(context, network_context_params, cert_verifier_creation_params); @@ -207,7 +207,7 @@ index 9064deed51d23..bea9f5e400c5f 100644 std::vector diff --git content/shell/browser/shell_content_browser_client.h content/shell/browser/shell_content_browser_client.h -index adda0a797eb58..a83a9e048000c 100644 +index f41d94c62a1aa..5b1090046265e 100644 --- content/shell/browser/shell_content_browser_client.h +++ content/shell/browser/shell_content_browser_client.h @@ -149,7 +149,7 @@ class ShellContentBrowserClient : public ContentBrowserClient { @@ -220,10 +220,10 @@ index adda0a797eb58..a83a9e048000c 100644 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 4e4be62976342..d3d33a9910f8d 100644 +index c877347bdde3a..ceca828f491b1 100644 --- headless/lib/browser/headless_content_browser_client.cc +++ headless/lib/browser/headless_content_browser_client.cc -@@ -353,7 +353,7 @@ bool HeadlessContentBrowserClient::IsSharedStorageSelectURLAllowed( +@@ -358,7 +358,7 @@ bool HeadlessContentBrowserClient::IsSharedStorageSelectURLAllowed( return true; } @@ -232,7 +232,7 @@ index 4e4be62976342..d3d33a9910f8d 100644 content::BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -363,6 +363,7 @@ void HeadlessContentBrowserClient::ConfigureNetworkContextParams( +@@ -368,6 +368,7 @@ void HeadlessContentBrowserClient::ConfigureNetworkContextParams( HeadlessBrowserContextImpl::From(context)->ConfigureNetworkContextParams( in_memory, relative_partition_path, network_context_params, cert_verifier_creation_params); @@ -241,7 +241,7 @@ index 4e4be62976342..d3d33a9910f8d 100644 std::string HeadlessContentBrowserClient::GetProduct() { diff --git headless/lib/browser/headless_content_browser_client.h headless/lib/browser/headless_content_browser_client.h -index ab36d851474e3..fde125757d68f 100644 +index f26634ec9ce1f..ba3bfcbe0c45e 100644 --- headless/lib/browser/headless_content_browser_client.h +++ headless/lib/browser/headless_content_browser_client.h @@ -102,7 +102,7 @@ class HeadlessContentBrowserClient : public content::ContentBrowserClient { diff --git a/patch/patches/content_main_654986.patch b/patch/patches/content_main_654986.patch index 3eca405b7..967d5c6a8 100644 --- a/patch/patches/content_main_654986.patch +++ b/patch/patches/content_main_654986.patch @@ -12,24 +12,24 @@ index 79ba3ac1913f8..46bcb4366d2f8 100644 if (main_argv) setproctitle_init(main_argv); diff --git content/app/content_main.cc content/app/content_main.cc -index 92a5ef04a25bf..099c4e3772b87 100644 +index c37f18d794ae2..6d64483992d0c 100644 --- content/app/content_main.cc +++ content/app/content_main.cc -@@ -172,11 +172,8 @@ ContentMainParams::~ContentMainParams() = default; +@@ -194,11 +194,8 @@ ContentMainParams::~ContentMainParams() = default; ContentMainParams::ContentMainParams(ContentMainParams&&) = default; ContentMainParams& ContentMainParams::operator=(ContentMainParams&&) = default; -// This function must be marked with NO_STACK_PROTECTOR or it may crash on -// return, see the --change-stack-guard-on-fork command line flag. --int NO_STACK_PROTECTOR --RunContentProcess(ContentMainParams params, -- ContentMainRunner* content_main_runner) { +-NO_STACK_PROTECTOR int RunContentProcess( +- ContentMainParams params, +- ContentMainRunner* content_main_runner) { +int ContentMainInitialize(ContentMainParams params, + ContentMainRunner* content_main_runner) { base::FeatureList::FailOnFeatureAccessWithoutFeatureList(); #if BUILDFLAG(IS_CHROMEOS_LACROS) // Lacros is launched with inherited priority. Revert to normal priority -@@ -184,9 +181,6 @@ RunContentProcess(ContentMainParams params, +@@ -206,9 +203,6 @@ NO_STACK_PROTECTOR int RunContentProcess( base::PlatformThread::SetCurrentThreadType(base::ThreadType::kDefault); #endif int exit_code = -1; @@ -39,7 +39,7 @@ index 92a5ef04a25bf..099c4e3772b87 100644 // A flag to indicate whether Main() has been called before. On Android, we // may re-run Main() without restarting the browser process. This flag -@@ -265,7 +259,9 @@ RunContentProcess(ContentMainParams params, +@@ -287,7 +281,9 @@ NO_STACK_PROTECTOR int RunContentProcess( // default, "C", locale. setlocale(LC_NUMERIC, "C"); @@ -50,7 +50,7 @@ index 92a5ef04a25bf..099c4e3772b87 100644 #endif #if BUILDFLAG(IS_WIN) -@@ -273,14 +269,6 @@ RunContentProcess(ContentMainParams params, +@@ -295,14 +291,6 @@ NO_STACK_PROTECTOR int RunContentProcess( #endif #if BUILDFLAG(IS_MAC) @@ -65,7 +65,7 @@ index 92a5ef04a25bf..099c4e3772b87 100644 InitializeMac(); #endif -@@ -328,12 +316,46 @@ RunContentProcess(ContentMainParams params, +@@ -353,12 +341,46 @@ NO_STACK_PROTECTOR int RunContentProcess( if (IsSubprocess()) CommonSubprocessInit(); @@ -114,7 +114,7 @@ index 92a5ef04a25bf..099c4e3772b87 100644 } diff --git content/app/content_main_runner_impl.cc content/app/content_main_runner_impl.cc -index c0d3fc6c6ad03..7e64fd1346863 100644 +index 8fdd8d02e6496..436fbbdc4e4eb 100644 --- content/app/content_main_runner_impl.cc +++ content/app/content_main_runner_impl.cc @@ -52,6 +52,7 @@ @@ -125,7 +125,7 @@ index c0d3fc6c6ad03..7e64fd1346863 100644 #include "base/time/time.h" #include "base/trace_event/trace_event.h" #include "build/build_config.h" -@@ -1346,6 +1347,11 @@ void ContentMainRunnerImpl::Shutdown() { +@@ -1351,6 +1352,11 @@ void ContentMainRunnerImpl::Shutdown() { is_shutdown_ = true; } diff --git a/patch/patches/crashpad_1995.patch b/patch/patches/crashpad_1995.patch index 98d5c2520..6d49ee902 100644 --- a/patch/patches/crashpad_1995.patch +++ b/patch/patches/crashpad_1995.patch @@ -147,10 +147,10 @@ index a274b3e364084..3d995cf643399 100644 // on the given `command_line`. For non-browser processes, allocates crash keys // from the switch value set by AppendStringAnnotationsCommandLineSwitch(). diff --git components/crash/core/app/crash_reporter_client.cc components/crash/core/app/crash_reporter_client.cc -index 3f3ed53d48fc4..05bbc81db0c6a 100644 +index 0e9fe8892af82..7c1ce4b94fba5 100644 --- components/crash/core/app/crash_reporter_client.cc +++ components/crash/core/app/crash_reporter_client.cc -@@ -89,7 +89,7 @@ bool CrashReporterClient::GetShouldDumpLargerDumps() { +@@ -93,7 +93,7 @@ bool CrashReporterClient::GetShouldDumpLargerDumps() { } #endif @@ -159,7 +159,7 @@ index 3f3ed53d48fc4..05bbc81db0c6a 100644 void CrashReporterClient::GetProductNameAndVersion(const char** product_name, const char** version) { } -@@ -98,6 +98,7 @@ void CrashReporterClient::GetProductNameAndVersion(std::string* product_name, +@@ -102,6 +102,7 @@ void CrashReporterClient::GetProductNameAndVersion(std::string* product_name, std::string* version, std::string* channel) {} @@ -167,7 +167,7 @@ index 3f3ed53d48fc4..05bbc81db0c6a 100644 base::FilePath CrashReporterClient::GetReporterLogFilename() { return base::FilePath(); } -@@ -107,6 +108,7 @@ bool CrashReporterClient::HandleCrashDump(const char* crashdump_filename, +@@ -111,6 +112,7 @@ bool CrashReporterClient::HandleCrashDump(const char* crashdump_filename, return false; } #endif @@ -175,7 +175,7 @@ index 3f3ed53d48fc4..05bbc81db0c6a 100644 #if BUILDFLAG(IS_WIN) bool CrashReporterClient::GetCrashDumpLocation(std::wstring* crash_dir) { -@@ -141,6 +143,28 @@ bool CrashReporterClient::ReportingIsEnforcedByPolicy(bool* breakpad_enabled) { +@@ -145,6 +147,28 @@ bool CrashReporterClient::ReportingIsEnforcedByPolicy(bool* breakpad_enabled) { return false; } @@ -204,7 +204,7 @@ index 3f3ed53d48fc4..05bbc81db0c6a 100644 #if BUILDFLAG(IS_ANDROID) unsigned int CrashReporterClient::GetCrashDumpPercentage() { return 100; -@@ -197,9 +221,4 @@ bool CrashReporterClient::ShouldMonitorCrashHandlerExpensively() { +@@ -205,9 +229,4 @@ bool CrashReporterClient::ShouldMonitorCrashHandlerExpensively() { return false; } diff --git a/patch/patches/crashpad_tp_1995.patch b/patch/patches/crashpad_tp_1995.patch index 1b7a43235..d7fd07760 100644 --- a/patch/patches/crashpad_tp_1995.patch +++ b/patch/patches/crashpad_tp_1995.patch @@ -146,7 +146,7 @@ index 39b2de869d225..5a4e621c650ee 100644 struct Data; diff --git third_party/crashpad/crashpad/handler/BUILD.gn third_party/crashpad/crashpad/handler/BUILD.gn -index a2d6f7fb482a7..a5b6ae04f897b 100644 +index 104e8502908e2..45b0a92bb9d80 100644 --- third_party/crashpad/crashpad/handler/BUILD.gn +++ third_party/crashpad/crashpad/handler/BUILD.gn @@ -12,6 +12,7 @@ diff --git a/patch/patches/gn_config.patch b/patch/patches/gn_config.patch index b4fbc472c..07c47475f 100644 --- a/patch/patches/gn_config.patch +++ b/patch/patches/gn_config.patch @@ -12,7 +12,7 @@ index 44a11ec90ec9b..4c35b35a97f28 100644 # https://crbug.com/474506. "//clank/java/BUILD.gn", diff --git BUILD.gn BUILD.gn -index cec2b9df48ca1..b8e250e7376a2 100644 +index 097e59f46d07a..54096982660c6 100644 --- BUILD.gn +++ BUILD.gn @@ -20,6 +20,7 @@ import("//build/config/sanitizers/sanitizers.gni") @@ -23,7 +23,7 @@ index cec2b9df48ca1..b8e250e7376a2 100644 import("//chrome/enterprise_companion/buildflags.gni") import("//components/enterprise/buildflags/buildflags.gni") import("//components/nacl/features.gni") -@@ -279,6 +280,10 @@ group("gn_all") { +@@ -285,6 +286,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 f98782561d861..6361483e28a18 100644 +index 8e6a2401aab03..571951616dec1 100644 --- chrome/chrome_paks.gni +++ chrome/chrome_paks.gni @@ -6,6 +6,7 @@ import("//ash/ambient/resources/resources.gni") @@ -87,17 +87,17 @@ index f98782561d861..6361483e28a18 100644 import("//chrome/browser/buildflags.gni") import("//chrome/common/features.gni") import("//components/compose/features.gni") -@@ -89,6 +90,10 @@ template("chrome_repack_percent") { - ] - } +@@ -468,6 +469,10 @@ template("chrome_extra_paks") { + ] + deps += [ "//extensions:extensions_resources" ] } + if (enable_cef) { + sources += [ "$root_gen_dir/cef/cef_resources.pak" ] + deps += [ "//cef:cef_resources" ] + } if (enable_extensions) { - sources += [ "$root_gen_dir/extensions/extensions_browser_resources_${percent}_percent.pak" ] - deps += [ "//extensions:extensions_browser_resources" ] + sources += [ + "$root_gen_dir/chrome/extensions_resources.pak", diff --git chrome/chrome_repack_locales.gni chrome/chrome_repack_locales.gni index e8f61e2fbf6f2..5de226ad5a8f2 100644 --- chrome/chrome_repack_locales.gni diff --git a/patch/patches/gritsettings.patch b/patch/patches/gritsettings.patch index 8f461c9e4..cf98ed026 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 57ce06d745941..0038e95ce024b 100644 +index ee2a113e2b778..f6f267829da4e 100644 --- tools/gritsettings/resource_ids.spec +++ tools/gritsettings/resource_ids.spec -@@ -1350,6 +1350,15 @@ +@@ -1358,6 +1358,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 820d17f61..72e06cebf 100644 --- a/patch/patches/light_mode_3534.patch +++ b/patch/patches/light_mode_3534.patch @@ -93,10 +93,10 @@ index 9d108fe375fa6..49f7694355c9a 100644 static bool kIsForcedHighContrast = base::CommandLine::ForCurrentProcess()->HasSwitch( diff --git ui/native_theme/native_theme.h ui/native_theme/native_theme.h -index 9caf18c2106c7..e3ede1b32a010 100644 +index 0ba23d2d8ea58..2934cfd37db91 100644 --- ui/native_theme/native_theme.h +++ ui/native_theme/native_theme.h -@@ -604,6 +604,9 @@ class NATIVE_THEME_EXPORT NativeTheme { +@@ -608,6 +608,9 @@ class NATIVE_THEME_EXPORT NativeTheme { // Whether dark mode is forced via command-line flag. static bool IsForcedDarkMode(); @@ -107,7 +107,7 @@ index 9caf18c2106c7..e3ede1b32a010 100644 explicit NativeTheme( bool should_only_use_dark_colors, diff --git ui/native_theme/native_theme_mac.mm ui/native_theme/native_theme_mac.mm -index a2dbe84d61e09..aff4aad15e069 100644 +index 23491b97bb068..4aa1ecef92f5f 100644 --- ui/native_theme/native_theme_mac.mm +++ ui/native_theme/native_theme_mac.mm @@ -586,11 +586,15 @@ void NativeThemeMac::PaintSelectedMenuItem( diff --git a/patch/patches/linux_glib_deprecated_volatile.patch b/patch/patches/linux_glib_deprecated_volatile.patch index ad49d00ec..ec475204a 100644 --- a/patch/patches/linux_glib_deprecated_volatile.patch +++ b/patch/patches/linux_glib_deprecated_volatile.patch @@ -1,8 +1,8 @@ diff --git ui/accessibility/platform/BUILD.gn ui/accessibility/platform/BUILD.gn -index ad1807ebfa054..e52ed1d6e0ed9 100644 +index 2e24201fcdc1e..e93e1ef6458e2 100644 --- ui/accessibility/platform/BUILD.gn +++ ui/accessibility/platform/BUILD.gn -@@ -291,6 +291,10 @@ component("platform") { +@@ -341,6 +341,10 @@ component("platform") { if (use_gio) { configs += [ "//build/linux:gio_config" ] } diff --git a/patch/patches/linux_gtk_theme_3610.patch b/patch/patches/linux_gtk_theme_3610.patch index 5c5009ac8..c9ab3cf41 100644 --- a/patch/patches/linux_gtk_theme_3610.patch +++ b/patch/patches/linux_gtk_theme_3610.patch @@ -1,5 +1,5 @@ diff --git ui/gtk/gtk_ui.cc ui/gtk/gtk_ui.cc -index 3ad76e316d4dc..4719a64ded116 100644 +index d215ab072131d..3405641a7f5b2 100644 --- ui/gtk/gtk_ui.cc +++ ui/gtk/gtk_ui.cc @@ -31,6 +31,7 @@ diff --git a/patch/patches/mac_platform_style_bubble_893292.patch b/patch/patches/mac_platform_style_bubble_893292.patch index 398482471..010b63a39 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 cbc806f09f40c..b70fc0ec47dfb 100644 +index 06d73cdced8d9..727424e433cf4 100644 --- chrome/browser/ui/views/profiles/profile_menu_view_base.cc +++ chrome/browser/ui/views/profiles/profile_menu_view_base.cc -@@ -1108,8 +1108,8 @@ int ProfileMenuViewBase::GetMaxHeight() const { +@@ -1088,8 +1088,8 @@ int ProfileMenuViewBase::GetMaxHeight() const { ->GetDisplayNearestPoint(anchor_rect.CenterPoint()) .work_area(); int available_space = screen_space.bottom() - anchor_rect.bottom(); diff --git a/patch/patches/mac_render_widget_3680.patch b/patch/patches/mac_render_widget_3680.patch index cb87ce1e5..40fe4fa40 100644 --- a/patch/patches/mac_render_widget_3680.patch +++ b/patch/patches/mac_render_widget_3680.patch @@ -1,5 +1,5 @@ diff --git content/app_shim_remote_cocoa/render_widget_host_view_cocoa.mm content/app_shim_remote_cocoa/render_widget_host_view_cocoa.mm -index 4a476b69cf6b7..6f81f48aeb502 100644 +index 89b5fb70f4efd..ac121fc96d136 100644 --- content/app_shim_remote_cocoa/render_widget_host_view_cocoa.mm +++ content/app_shim_remote_cocoa/render_widget_host_view_cocoa.mm @@ -171,6 +171,13 @@ void ExtractUnderlines(NSAttributedString* string, diff --git a/patch/patches/message_loop.patch b/patch/patches/message_loop.patch index 9e5128822..44a319e87 100644 --- a/patch/patches/message_loop.patch +++ b/patch/patches/message_loop.patch @@ -43,7 +43,7 @@ index c4f8862b21ccf..c8c80509abc91 100644 current_->RemoveDestructionObserver(destruction_observer); } diff --git base/task/current_thread.h base/task/current_thread.h -index 66382e91c78b2..5129e284acaa1 100644 +index 0be6acd709e53..cdadebb201547 100644 --- base/task/current_thread.h +++ base/task/current_thread.h @@ -163,6 +163,12 @@ class BASE_EXPORT CurrentThread { @@ -59,7 +59,7 @@ index 66382e91c78b2..5129e284acaa1 100644 // Enables nested task processing in scope of an upcoming native message loop. // Some unwanted message loops may occur when using common controls or printer // functions. Hence, nested task processing is disabled by default to avoid -@@ -232,6 +238,13 @@ class BASE_EXPORT CurrentThread { +@@ -231,6 +237,13 @@ class BASE_EXPORT CurrentThread { friend class web::WebTaskEnvironment; raw_ptr current_; diff --git a/patch/patches/message_pump_mac_2495.patch b/patch/patches/message_pump_mac_2495.patch index ee975b86f..9bfb88819 100644 --- a/patch/patches/message_pump_mac_2495.patch +++ b/patch/patches/message_pump_mac_2495.patch @@ -1,8 +1,8 @@ diff --git base/message_loop/message_pump_apple.mm base/message_loop/message_pump_apple.mm -index 987a3ed711f33..95e058b0b8bbd 100644 +index 52ed68ac3150b..28c1c75bd3ada 100644 --- base/message_loop/message_pump_apple.mm +++ base/message_loop/message_pump_apple.mm -@@ -762,7 +762,8 @@ void MessagePumpUIApplication::Detach() { +@@ -761,7 +761,8 @@ void MessagePumpUIApplication::Detach() { #else ScopedPumpMessagesInPrivateModes::ScopedPumpMessagesInPrivateModes() { @@ -12,7 +12,7 @@ index 987a3ed711f33..95e058b0b8bbd 100644 DCHECK_EQ(kNSApplicationModalSafeModeMask, g_app_pump->GetModeMask()); // Pumping events in private runloop modes is known to interact badly with // app modal windows like NSAlert. -@@ -773,7 +774,8 @@ ScopedPumpMessagesInPrivateModes::ScopedPumpMessagesInPrivateModes() { +@@ -772,7 +773,8 @@ ScopedPumpMessagesInPrivateModes::ScopedPumpMessagesInPrivateModes() { } ScopedPumpMessagesInPrivateModes::~ScopedPumpMessagesInPrivateModes() { diff --git a/patch/patches/net_cookie_flags.patch b/patch/patches/net_cookie_flags.patch index d56859806..02826f52b 100644 --- a/patch/patches/net_cookie_flags.patch +++ b/patch/patches/net_cookie_flags.patch @@ -10,10 +10,10 @@ index aeb79b46f5d21..bd57e874c1240 100644 +// This load will not send any cookies. For CEF usage. +LOAD_FLAG(DO_NOT_SEND_COOKIES, 1 << 20) diff --git net/url_request/url_request_http_job.cc net/url_request/url_request_http_job.cc -index 59089072e7c97..09d0b6e64a4d6 100644 +index 60a3db0490f57..2183142341991 100644 --- net/url_request/url_request_http_job.cc +++ net/url_request/url_request_http_job.cc -@@ -2053,7 +2053,8 @@ bool URLRequestHttpJob::ShouldAddCookieHeader() const { +@@ -2074,7 +2074,8 @@ bool URLRequestHttpJob::ShouldAddCookieHeader() const { // Read cookies whenever allow_credentials() is true, even if the PrivacyMode // is being overridden by NetworkDelegate and will eventually block them, as // blocked cookies still need to be logged in that case. @@ -24,10 +24,10 @@ index 59089072e7c97..09d0b6e64a4d6 100644 bool URLRequestHttpJob::ShouldRecordPartitionedCookieUsage() const { diff --git services/network/public/cpp/resource_request.cc services/network/public/cpp/resource_request.cc -index b220ca953b1db..c9057833fe15b 100644 +index 28bf295032c89..e625f00f49603 100644 --- services/network/public/cpp/resource_request.cc +++ services/network/public/cpp/resource_request.cc -@@ -329,7 +329,8 @@ bool ResourceRequest::EqualsForTesting(const ResourceRequest& request) const { +@@ -324,7 +324,8 @@ bool ResourceRequest::EqualsForTesting(const ResourceRequest& request) const { } bool ResourceRequest::SendsCookies() const { diff --git a/patch/patches/net_test_server_3798752.patch b/patch/patches/net_test_server_3798752.patch index 2d065b2a9..b92088348 100644 --- a/patch/patches/net_test_server_3798752.patch +++ b/patch/patches/net_test_server_3798752.patch @@ -1,8 +1,8 @@ diff --git net/test/embedded_test_server/embedded_test_server.cc net/test/embedded_test_server/embedded_test_server.cc -index fcd55c845d90f..9ba1f2bcdf850 100644 +index 0126378a5c6b8..8c9f9ae6db4b7 100644 --- net/test/embedded_test_server/embedded_test_server.cc +++ net/test/embedded_test_server/embedded_test_server.cc -@@ -1046,7 +1046,7 @@ bool EmbeddedTestServer::PostTaskToIOThreadAndWait(base::OnceClosure closure) { +@@ -1088,7 +1088,7 @@ bool EmbeddedTestServer::PostTaskToIOThreadAndWait(base::OnceClosure closure) { if (!base::CurrentThread::Get()) temporary_loop = std::make_unique(); @@ -11,7 +11,7 @@ index fcd55c845d90f..9ba1f2bcdf850 100644 if (!io_thread_->task_runner()->PostTaskAndReply( FROM_HERE, std::move(closure), run_loop.QuitClosure())) { return false; -@@ -1073,7 +1073,7 @@ bool EmbeddedTestServer::PostTaskToIOThreadAndWaitWithResult( +@@ -1115,7 +1115,7 @@ bool EmbeddedTestServer::PostTaskToIOThreadAndWaitWithResult( if (!base::CurrentThread::Get()) temporary_loop = std::make_unique(); diff --git a/patch/patches/osr_fling_2745.patch b/patch/patches/osr_fling_2745.patch index 79b47ec5f..7eaf74214 100644 --- a/patch/patches/osr_fling_2745.patch +++ b/patch/patches/osr_fling_2745.patch @@ -30,7 +30,7 @@ index 76057b3e50f78..d3b63a3b07805 100644 } // namespace input diff --git components/input/render_input_router.h components/input/render_input_router.h -index 4234f63f5a717..ded170d0c5945 100644 +index 82f462173913b..05b4824ec8329 100644 --- components/input/render_input_router.h +++ components/input/render_input_router.h @@ -66,6 +66,7 @@ class COMPONENT_EXPORT(INPUT) RenderInputRouter @@ -56,10 +56,10 @@ index f1030a744809c..c222a209949e6 100644 return nullptr; } diff --git content/browser/renderer_host/render_widget_host_impl.cc content/browser/renderer_host/render_widget_host_impl.cc -index c77a3fa9a247c..611baceed3883 100644 +index 5754c2bd33053..25688e64d712d 100644 --- content/browser/renderer_host/render_widget_host_impl.cc +++ content/browser/renderer_host/render_widget_host_impl.cc -@@ -3190,6 +3190,11 @@ void RenderWidgetHostImpl::DecrementInFlightEventCount( +@@ -3216,6 +3216,11 @@ void RenderWidgetHostImpl::DecrementInFlightEventCount( } } @@ -72,10 +72,10 @@ index c77a3fa9a247c..611baceed3883 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 2852c10fc0de6..4a09b95e1309c 100644 +index 3d03709303e22..1d162642a2f8a 100644 --- content/browser/renderer_host/render_widget_host_impl.h +++ content/browser/renderer_host/render_widget_host_impl.h -@@ -834,6 +834,7 @@ class CONTENT_EXPORT RenderWidgetHostImpl +@@ -835,6 +835,7 @@ class CONTENT_EXPORT RenderWidgetHostImpl void ProgressFlingIfNeeded(base::TimeTicks current_time); void StopFling(); diff --git a/patch/patches/renderer_host_1070713.patch b/patch/patches/renderer_host_1070713.patch index ce7b5ad67..85a7990fd 100644 --- a/patch/patches/renderer_host_1070713.patch +++ b/patch/patches/renderer_host_1070713.patch @@ -1,8 +1,8 @@ diff --git content/browser/renderer_host/render_view_host_impl.cc content/browser/renderer_host/render_view_host_impl.cc -index 2dcb41397b68e..fe76d4e98c5f6 100644 +index f130879c92319..cf26aa2184e7a 100644 --- content/browser/renderer_host/render_view_host_impl.cc +++ content/browser/renderer_host/render_view_host_impl.cc -@@ -735,6 +735,8 @@ bool RenderViewHostImpl::IsRenderViewLive() const { +@@ -750,6 +750,8 @@ bool RenderViewHostImpl::IsRenderViewLive() const { } void RenderViewHostImpl::SetBackgroundOpaque(bool opaque) { diff --git a/patch/patches/resource_bundle_2512.patch b/patch/patches/resource_bundle_2512.patch index d22558a27..6c54e6f25 100644 --- a/patch/patches/resource_bundle_2512.patch +++ b/patch/patches/resource_bundle_2512.patch @@ -1,8 +1,8 @@ diff --git ui/base/resource/resource_bundle.cc ui/base/resource/resource_bundle.cc -index 7c222473c1b21..45ee9ed945f1d 100644 +index fe923601f3eee..321a85b51d215 100644 --- ui/base/resource/resource_bundle.cc +++ ui/base/resource/resource_bundle.cc -@@ -931,6 +931,12 @@ ResourceBundle::ResourceBundle(Delegate* delegate) +@@ -932,6 +932,12 @@ ResourceBundle::ResourceBundle(Delegate* delegate) : delegate_(delegate), locale_resources_data_lock_(new base::Lock), max_scale_factor_(k100Percent) { @@ -15,7 +15,7 @@ index 7c222473c1b21..45ee9ed945f1d 100644 mangle_localized_strings_ = base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kMangleLocalizedStrings); } -@@ -940,6 +946,11 @@ ResourceBundle::~ResourceBundle() { +@@ -941,6 +947,11 @@ ResourceBundle::~ResourceBundle() { UnloadLocaleResources(); } diff --git a/patch/patches/rfh_navigation_4829483.patch b/patch/patches/rfh_navigation_4829483.patch index 58a119bf8..38883dc8c 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 9c63417070d5a..2b60f10691a14 100644 +index 0236631b56d79..aedc1c65a20f4 100644 --- content/browser/renderer_host/render_frame_host_impl.cc +++ content/browser/renderer_host/render_frame_host_impl.cc -@@ -11181,6 +11181,7 @@ void RenderFrameHostImpl::CommitNavigation( +@@ -11277,6 +11277,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 5582eb3bb..a4b4bc4d9 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 ea5a519007ffd..1bb591bba1796 100644 +index 8d972bcdd27ee..1bacc1e05afb3 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 @@ @@ -18,7 +18,7 @@ index ea5a519007ffd..1bb591bba1796 100644 #include "content/public/common/page_visibility_state.h" #include "services/service_manager/public/cpp/interface_provider.h" #include "third_party/blink/public/common/input/web_input_event.h" -@@ -754,10 +756,12 @@ gfx::Rect RenderWidgetHostViewAura::GetViewBounds() { +@@ -759,10 +761,12 @@ gfx::Rect RenderWidgetHostViewAura::GetViewBounds() { void RenderWidgetHostViewAura::UpdateBackgroundColor() { CHECK(GetBackgroundColor()); @@ -35,7 +35,7 @@ index ea5a519007ffd..1bb591bba1796 100644 } #if BUILDFLAG(IS_WIN) -@@ -2371,6 +2375,16 @@ void RenderWidgetHostViewAura::CreateAuraWindow(aura::client::WindowType type) { +@@ -2460,6 +2464,16 @@ void RenderWidgetHostViewAura::CreateAuraWindow(aura::client::WindowType type) { window_->layer()->SetColor(GetBackgroundColor() ? *GetBackgroundColor() : SK_ColorWHITE); UpdateFrameSinkIdRegistration(); diff --git a/patch/patches/services_network_2622.patch b/patch/patches/services_network_2622.patch index 72616b9b2..d6a78d945 100644 --- a/patch/patches/services_network_2622.patch +++ b/patch/patches/services_network_2622.patch @@ -1,5 +1,5 @@ diff --git net/cookies/cookie_monster.cc net/cookies/cookie_monster.cc -index 98b23597fb61c..e476a9a86af35 100644 +index 6b19478013bf5..acc6f2dcb4472 100644 --- net/cookies/cookie_monster.cc +++ net/cookies/cookie_monster.cc @@ -635,6 +635,25 @@ void CookieMonster::SetCookieableSchemes( @@ -80,10 +80,10 @@ index f78c6a467befc..97f1d21218eed 100644 void CookieManager::SetForceKeepSessionState() { diff --git services/network/network_context.cc services/network/network_context.cc -index dff1afbe01fcd..7acfcec4b52ca 100644 +index 502cd4ac8b0e8..4532f67ceca70 100644 --- services/network/network_context.cc +++ services/network/network_context.cc -@@ -2576,16 +2576,20 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( +@@ -2578,16 +2578,20 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( network_service_->network_quality_estimator()); } @@ -112,7 +112,7 @@ index dff1afbe01fcd..7acfcec4b52ca 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 0678afc12458f..fa7763534dd89 100644 +index b3775284f55c7..66f1b5279c7b7 100644 --- services/network/public/mojom/network_context.mojom +++ services/network/public/mojom/network_context.mojom @@ -359,6 +359,9 @@ struct NetworkContextParams { diff --git a/patch/patches/services_network_2718.patch b/patch/patches/services_network_2718.patch index 282dc955d..fa23abba1 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 fce39a2f52ddb..d91e8abd393b8 100644 +index edbdcac55702f..ff1bb519e834a 100644 --- content/browser/storage_partition_impl.cc +++ content/browser/storage_partition_impl.cc -@@ -3316,9 +3316,12 @@ void StoragePartitionImpl::InitNetworkContext() { +@@ -3346,9 +3346,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 51c4f347d..2e2fe7c38 100644 --- a/patch/patches/set_resize_background_color.patch +++ b/patch/patches/set_resize_background_color.patch @@ -1,8 +1,8 @@ diff --git ui/views/controls/webview/webview.cc ui/views/controls/webview/webview.cc -index 06e6939826e5d..9cb98d3e6a991 100644 +index 73fdf31c0d277..e9abc3d664ca5 100644 --- ui/views/controls/webview/webview.cc +++ ui/views/controls/webview/webview.cc -@@ -163,6 +163,10 @@ void WebView::EnableSizingFromWebContents(const gfx::Size& min_size, +@@ -170,6 +170,10 @@ void WebView::EnableSizingFromWebContents(const gfx::Size& min_size, } } @@ -14,10 +14,10 @@ index 06e6939826e5d..9cb98d3e6a991 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 e5f3852898c46..47191c63a67bd 100644 +index de6fe5c099273..c34a2555b023d 100644 --- ui/views/controls/webview/webview.h +++ ui/views/controls/webview/webview.h -@@ -105,6 +105,10 @@ class WEBVIEW_EXPORT WebView : public View, +@@ -107,6 +107,10 @@ class WEBVIEW_EXPORT WebView : public View, void EnableSizingFromWebContents(const gfx::Size& min_size, const gfx::Size& max_size); diff --git a/patch/patches/views_1749_2102_3330.patch b/patch/patches/views_1749_2102_3330.patch index 375726300..509f871b6 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 eb308bd6fdc13..9a6cce98e8cb8 100644 +index 477159889efb0..b984eee1ec4d8 100644 --- chrome/browser/ui/views/toolbar/app_menu.cc +++ chrome/browser/ui/views/toolbar/app_menu.cc -@@ -1026,7 +1026,9 @@ void AppMenu::RunMenu(views::MenuButtonController* host) { +@@ -1015,7 +1015,9 @@ void AppMenu::RunMenu(views::MenuButtonController* host) { host->button()->GetWidget(), host, host->button()->GetAnchorBoundsInScreen(), views::MenuAnchorPosition::kTopRight, ui::MENU_SOURCE_NONE, @@ -58,10 +58,10 @@ index 393dc941d9543..75618d210585a 100644 virtual void MenuWillShow() {} diff --git ui/gfx/render_text.cc ui/gfx/render_text.cc -index 1f7d99933c10a..85934d5fa95f4 100644 +index c7d34b8b4e3d7..ce7a5c37e7b8a 100644 --- ui/gfx/render_text.cc +++ ui/gfx/render_text.cc -@@ -719,6 +719,14 @@ void RenderText::SetWhitespaceElision(std::optional whitespace_elision) { +@@ -707,6 +707,14 @@ void RenderText::SetWhitespaceElision(std::optional whitespace_elision) { } } @@ -76,7 +76,7 @@ index 1f7d99933c10a..85934d5fa95f4 100644 void RenderText::SetDisplayRect(const Rect& r) { if (r != display_rect_) { display_rect_ = r; -@@ -2157,6 +2165,18 @@ void RenderText::OnTextAttributeChanged() { +@@ -2145,6 +2153,18 @@ void RenderText::OnTextAttributeChanged() { text_elided_ = false; layout_text_up_to_date_ = false; @@ -96,10 +96,10 @@ index 1f7d99933c10a..85934d5fa95f4 100644 } diff --git ui/gfx/render_text.h ui/gfx/render_text.h -index cde3a89d52319..8b5cf3bd8a535 100644 +index ad2fb8c1a6078..d14890b136855 100644 --- ui/gfx/render_text.h +++ ui/gfx/render_text.h -@@ -366,6 +366,10 @@ class GFX_EXPORT RenderText { +@@ -360,6 +360,10 @@ class GFX_EXPORT RenderText { void SetWhitespaceElision(std::optional elide_whitespace); std::optional whitespace_elision() const { return whitespace_elision_; } @@ -110,7 +110,7 @@ index cde3a89d52319..8b5cf3bd8a535 100644 const Rect& display_rect() const { return display_rect_; } void SetDisplayRect(const Rect& r); -@@ -1110,6 +1114,8 @@ class GFX_EXPORT RenderText { +@@ -1107,6 +1111,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; @@ -164,7 +164,7 @@ index 414087e088a4e..0d757f5e7933e 100644 LabelButtonImageContainer* image_container() { return image_container_.get(); diff --git ui/views/controls/label.cc ui/views/controls/label.cc -index 288c81c28e14a..b70645e978007 100644 +index cd330fd0a56e1..f2a54c5c47068 100644 --- ui/views/controls/label.cc +++ ui/views/controls/label.cc @@ -51,12 +51,29 @@ enum LabelPropertyKey { @@ -197,7 +197,7 @@ index 288c81c28e14a..b70645e978007 100644 } // namespace namespace views { -@@ -493,6 +510,15 @@ void Label::SetElideBehavior(gfx::ElideBehavior elide_behavior) { +@@ -496,6 +513,15 @@ void Label::SetElideBehavior(gfx::ElideBehavior elide_behavior) { OnPropertyChanged(&elide_behavior_, kPropertyEffectsPreferredSizeChanged); } @@ -213,7 +213,7 @@ index 288c81c28e14a..b70645e978007 100644 std::u16string Label::GetTooltipText() const { return tooltip_text_; } -@@ -803,6 +829,16 @@ std::unique_ptr Label::CreateRenderText() const { +@@ -815,6 +841,16 @@ std::unique_ptr Label::CreateRenderText() const { render_text->SelectRange(stored_selection_range_); } @@ -231,7 +231,7 @@ index 288c81c28e14a..b70645e978007 100644 } diff --git ui/views/controls/label.h ui/views/controls/label.h -index 6d416cb05c5b0..3c695c36f5027 100644 +index bc315ed47b197..2c0f4deafb3c1 100644 --- ui/views/controls/label.h +++ ui/views/controls/label.h @@ -245,6 +245,10 @@ class VIEWS_EXPORT Label : public View, @@ -245,7 +245,7 @@ index 6d416cb05c5b0..3c695c36f5027 100644 // Gets/Sets the tooltip text. Default behavior for a label (single-line) is // to show the full text if it is wider than its bounds. Calling this // overrides the default behavior and lets you set a custom tooltip. To -@@ -526,6 +530,7 @@ class VIEWS_EXPORT Label : public View, +@@ -530,6 +534,7 @@ class VIEWS_EXPORT Label : public View, int max_width_ = 0; // This is used in single-line mode. int max_width_single_line_ = 0; @@ -254,7 +254,7 @@ index 6d416cb05c5b0..3c695c36f5027 100644 std::unique_ptr selection_controller_; diff --git ui/views/controls/menu/menu_controller.cc ui/views/controls/menu/menu_controller.cc -index 8e361bf829513..8f0e72c3e5559 100644 +index 4b753ff618598..ddb2506be9695 100644 --- ui/views/controls/menu/menu_controller.cc +++ ui/views/controls/menu/menu_controller.cc @@ -578,7 +578,8 @@ void MenuController::Run(Widget* parent, @@ -275,7 +275,7 @@ index 8e361bf829513..8f0e72c3e5559 100644 // Only create a MenuPreTargetHandler for non-nested menus. Nested menus // will use the existing one. -@@ -2257,6 +2259,7 @@ void MenuController::OpenMenuImpl(MenuItemView* item, bool show) { +@@ -2263,6 +2265,7 @@ void MenuController::OpenMenuImpl(MenuItemView* item, bool show) { params.do_capture = do_capture; params.native_view_for_gestures = native_view_for_gestures_; params.owned_window_anchor = anchor; @@ -283,7 +283,7 @@ index 8e361bf829513..8f0e72c3e5559 100644 if (item->GetParentMenuItem()) { params.context = item->GetWidget(); // (crbug.com/1414232) The item to be open is a submenu. Make sure -@@ -2948,8 +2951,13 @@ MenuItemView* MenuController::FindInitialSelectableMenuItem( +@@ -2954,8 +2957,13 @@ MenuItemView* MenuController::FindInitialSelectableMenuItem( void MenuController::OpenSubmenuChangeSelectionIfCan() { MenuItemView* item = pending_state_.item; @@ -298,7 +298,7 @@ index 8e361bf829513..8f0e72c3e5559 100644 // Show the sub-menu. SetSelection(item, SELECTION_OPEN_SUBMENU | SELECTION_UPDATE_IMMEDIATELY); -@@ -2969,8 +2977,10 @@ void MenuController::OpenSubmenuChangeSelectionIfCan() { +@@ -2975,8 +2983,10 @@ void MenuController::OpenSubmenuChangeSelectionIfCan() { void MenuController::CloseSubmenu() { MenuItemView* item = state_.item; DCHECK(item); @@ -410,10 +410,10 @@ index fc1d5fccc3845..c065cafcd537c 100644 explicit MenuHost(SubmenuView* submenu); diff --git ui/views/controls/menu/menu_item_view.cc ui/views/controls/menu/menu_item_view.cc -index ebbb2caaa89d9..1ac77741d6ebb 100644 +index 81fabd16b2ce3..90f1ec4fcaaec 100644 --- ui/views/controls/menu/menu_item_view.cc +++ ui/views/controls/menu/menu_item_view.cc -@@ -1114,6 +1114,15 @@ void MenuItemView::PaintBackground(gfx::Canvas* canvas, +@@ -1102,6 +1102,15 @@ void MenuItemView::PaintBackground(gfx::Canvas* canvas, spilling_rect.set_y(spilling_rect.y() - corner_radius_); spilling_rect.set_height(spilling_rect.height() + corner_radius_); canvas->DrawRoundRect(spilling_rect, corner_radius_, flags); @@ -429,7 +429,7 @@ index ebbb2caaa89d9..1ac77741d6ebb 100644 } else if (paint_as_selected) { gfx::Rect item_bounds = GetLocalBounds(); if (type_ == Type::kActionableSubMenu) { -@@ -1178,6 +1187,13 @@ void MenuItemView::PaintMinorIconAndText(gfx::Canvas* canvas, SkColor color) { +@@ -1166,6 +1175,13 @@ void MenuItemView::PaintMinorIconAndText(gfx::Canvas* canvas, SkColor color) { } SkColor MenuItemView::GetTextColor(bool minor, bool paint_as_selected) const { @@ -749,10 +749,10 @@ index e171461e28836..e137275a22a12 100644 std::optional show_menu_host_duration_histogram) { RunMenu(parent, bounds.CenterPoint()); diff --git ui/views/controls/menu/menu_scroll_view_container.cc ui/views/controls/menu/menu_scroll_view_container.cc -index 76f58311587d3..850a8d2c9197c 100644 +index 37135f8ef2d73..459a3c2e60062 100644 --- ui/views/controls/menu/menu_scroll_view_container.cc +++ ui/views/controls/menu/menu_scroll_view_container.cc -@@ -253,6 +253,11 @@ MenuScrollViewContainer::MenuScrollViewContainer(SubmenuView* content_view) +@@ -254,6 +254,11 @@ MenuScrollViewContainer::MenuScrollViewContainer(SubmenuView* content_view) scroll_down_button_ = background_view_->AddChildView( std::make_unique(content_view, false)); @@ -789,7 +789,7 @@ index dcf4b60ad92c2..64fa80edefc1b 100644 #if !BUILDFLAG(IS_CHROMEOS_LACROS) if (root_location != root_current_location && diff --git ui/views/view.h ui/views/view.h -index 3f138a3a7acc5..64efaf93a0cc2 100644 +index 4ce922b20a9d1..2505558b6428c 100644 --- ui/views/view.h +++ ui/views/view.h @@ -25,6 +25,7 @@ @@ -810,3 +810,12 @@ index 3f138a3a7acc5..64efaf93a0cc2 100644 // Do not remove this macro! // The macro is maintained by the memory safety team. ADVANCED_MEMORY_SAFETY_CHECKS(); +@@ -609,7 +611,7 @@ class VIEWS_EXPORT View : public ui::LayerDelegate, + + // Return the preferred height for a specific width. It is a helper function + // of GetPreferredSize(SizeBounds(w, SizeBound())).height(). +- int GetHeightForWidth(int w) const; ++ virtual int GetHeightForWidth(int w) const; + + // Returns a bound on the available space for a child view, for example, in + // case the child view wants to play an animation that would cause it to diff --git a/patch/patches/views_textfield_5399416.patch b/patch/patches/views_textfield_5399416.patch index 615a61a0d..8c8b68743 100644 --- a/patch/patches/views_textfield_5399416.patch +++ b/patch/patches/views_textfield_5399416.patch @@ -1,8 +1,8 @@ diff --git ui/views/controls/textfield/textfield.cc ui/views/controls/textfield/textfield.cc -index 404bb1abdfa68..dd9ed220b07f6 100644 +index 21589bc2904d7..da7a9915e77e5 100644 --- ui/views/controls/textfield/textfield.cc +++ ui/views/controls/textfield/textfield.cc -@@ -3016,6 +3016,10 @@ void Textfield::OnCursorBlinkTimerFired() { +@@ -3014,6 +3014,10 @@ void Textfield::OnCursorBlinkTimerFired() { void Textfield::OnEnabledChanged() { if (GetInputMethod()) GetInputMethod()->OnTextInputTypeChanged(this); diff --git a/patch/patches/views_widget.patch b/patch/patches/views_widget.patch index e16c2da91..d2ba19f2b 100644 --- a/patch/patches/views_widget.patch +++ b/patch/patches/views_widget.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/extensions/api/sessions/sessions_api.cc chrome/browser/extensions/api/sessions/sessions_api.cc -index 0efd00ba92039..7dc86733bcde3 100644 +index 336481047adbb..e9848320bd560 100644 --- chrome/browser/extensions/api/sessions/sessions_api.cc +++ chrome/browser/extensions/api/sessions/sessions_api.cc -@@ -334,6 +334,7 @@ SessionsGetDevicesFunction::CreateWindowModel( +@@ -341,6 +341,7 @@ SessionsGetDevicesFunction::CreateWindowModel( state = api::windows::WindowState::kNormal; break; case ui::SHOW_STATE_MINIMIZED: @@ -23,10 +23,10 @@ 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 5cd1fb6938b07..3eec7d48690ca 100644 +index 6b72cf19cf723..48f7f6f2c1f75 100644 --- components/sessions/core/session_service_commands.cc +++ components/sessions/core/session_service_commands.cc -@@ -165,9 +165,10 @@ enum PersistedWindowShowState { +@@ -166,9 +166,10 @@ enum PersistedWindowShowState { PERSISTED_SHOW_STATE_MAXIMIZED = 3, // SHOW_STATE_INACTIVE (4) never persisted. PERSISTED_SHOW_STATE_FULLSCREEN = 5, @@ -40,31 +40,31 @@ index 5cd1fb6938b07..3eec7d48690ca 100644 }; // TODO(crbug.com/40946710): Remove this around December 2024. This is part of a -@@ -191,6 +192,7 @@ PersistedWindowShowState ShowStateToPersistedShowState( - case ui::SHOW_STATE_NORMAL: +@@ -193,6 +194,7 @@ PersistedWindowShowState ShowStateToPersistedShowState( + case ui::mojom::WindowShowState::kNormal: return PERSISTED_SHOW_STATE_NORMAL; - case ui::SHOW_STATE_MINIMIZED: -+ case ui::SHOW_STATE_HIDDEN: + case ui::mojom::WindowShowState::kMinimized: ++ case ui::mojom::WindowShowState::kHidden: return PERSISTED_SHOW_STATE_MINIMIZED; - case ui::SHOW_STATE_MAXIMIZED: + case ui::mojom::WindowShowState::kMaximized: return PERSISTED_SHOW_STATE_MAXIMIZED; diff --git components/sessions/core/tab_restore_service_impl.cc components/sessions/core/tab_restore_service_impl.cc -index 791fc1874851e..db58beed440f8 100644 +index 514f81ee655f5..ba5ab6729b359 100644 --- components/sessions/core/tab_restore_service_impl.cc +++ components/sessions/core/tab_restore_service_impl.cc -@@ -197,6 +197,7 @@ int SerializeWindowShowState(ui::WindowShowState show_state) { - case ui::SHOW_STATE_NORMAL: +@@ -198,6 +198,7 @@ int SerializeWindowShowState(ui::mojom::WindowShowState show_state) { + case ui::mojom::WindowShowState::kNormal: return kSerializedShowStateNormal; - case ui::SHOW_STATE_MINIMIZED: -+ case ui::SHOW_STATE_HIDDEN: + case ui::mojom::WindowShowState::kMinimized: ++ case ui::mojom::WindowShowState::kHidden: return kSerializedShowStateMinimized; - case ui::SHOW_STATE_MAXIMIZED: + case ui::mojom::WindowShowState::kMaximized: 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 540ce029150ef..e1deecb21b39f 100644 +index 72c5c119911a6..7c1bccc2a048e 100644 --- content/browser/renderer_host/render_widget_host_view_base.cc +++ content/browser/renderer_host/render_widget_host_view_base.cc -@@ -709,6 +709,14 @@ float RenderWidgetHostViewBase::GetScaleOverrideForCapture() const { +@@ -590,6 +590,14 @@ float RenderWidgetHostViewBase::GetScaleOverrideForCapture() const { return scale_override_for_capture_; } @@ -80,10 +80,10 @@ index 540ce029150ef..e1deecb21b39f 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 177587d0a67ad..5d70ef26a16e1 100644 +index bdd8712db25a5..ae8a13e7f4c49 100644 --- content/browser/renderer_host/render_widget_host_view_base.h +++ content/browser/renderer_host/render_widget_host_view_base.h -@@ -76,6 +76,7 @@ namespace content { +@@ -70,6 +70,7 @@ namespace content { class DevicePosturePlatformProvider; class MouseWheelPhaseHandler; class RenderWidgetHostImpl; @@ -91,7 +91,7 @@ index 177587d0a67ad..5d70ef26a16e1 100644 class ScopedViewTransitionResources; class TextInputManager; class TouchSelectionControllerClientManager; -@@ -204,6 +205,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase +@@ -150,6 +151,9 @@ class CONTENT_EXPORT RenderWidgetHostViewBase float GetDeviceScaleFactor() const final; bool IsPointerLocked() override; @@ -101,7 +101,7 @@ index 177587d0a67ad..5d70ef26a16e1 100644 // Identical to `CopyFromSurface()`, except that this method issues the // `viz::CopyOutputRequest` against the exact `viz::Surface` currently // embedded by this View, while `CopyFromSurface()` may return a copy of any -@@ -265,6 +269,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase +@@ -211,6 +215,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase // Called when screen information or native widget bounds change. virtual void UpdateScreenInfo(); @@ -112,7 +112,7 @@ index 177587d0a67ad..5d70ef26a16e1 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_| -@@ -391,6 +399,12 @@ class CONTENT_EXPORT RenderWidgetHostViewBase +@@ -337,6 +345,12 @@ class CONTENT_EXPORT RenderWidgetHostViewBase const gfx::Rect& bounds, const gfx::Rect& anchor_rect) = 0; @@ -125,7 +125,7 @@ index 177587d0a67ad..5d70ef26a16e1 100644 // Indicates whether the page has finished loading. virtual void SetIsLoading(bool is_loading) = 0; -@@ -651,6 +665,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase +@@ -587,6 +601,10 @@ class CONTENT_EXPORT RenderWidgetHostViewBase // to all displays. gfx::Size system_cursor_size_; @@ -136,7 +136,7 @@ index 177587d0a67ad..5d70ef26a16e1 100644 private: FRIEND_TEST_ALL_PREFIXES( BrowserSideFlingBrowserTest, -@@ -672,10 +690,6 @@ class CONTENT_EXPORT RenderWidgetHostViewBase +@@ -608,10 +626,6 @@ class CONTENT_EXPORT RenderWidgetHostViewBase void SynchronizeVisualProperties(); @@ -232,37 +232,37 @@ index e9bb4ee5bccee..e6172b1a8d53f 100644 window->AddObserver(this); // Remember this mapping from hwnd to Window*. hwnd_root_window_map_[root_window_hwnd] = window; -diff --git ui/base/mojom/ui_base_types_mojom_traits.h ui/base/mojom/ui_base_types_mojom_traits.h -index fba41cdefe707..1ed9995ac574c 100644 ---- ui/base/mojom/ui_base_types_mojom_traits.h -+++ ui/base/mojom/ui_base_types_mojom_traits.h -@@ -129,6 +129,7 @@ struct EnumTraits { - case ui::SHOW_STATE_INACTIVE: - return ui::mojom::WindowShowState::SHOW_STATE_INACTIVE; - case ui::SHOW_STATE_MINIMIZED: -+ case ui::SHOW_STATE_HIDDEN: - return ui::mojom::WindowShowState::SHOW_STATE_MINIMIZED; - case ui::SHOW_STATE_MAXIMIZED: - return ui::mojom::WindowShowState::SHOW_STATE_MAXIMIZED; +diff --git ui/base/mojom/window_show_state.mojom ui/base/mojom/window_show_state.mojom +index 526b6129d6d01..1937a441b930d 100644 +--- ui/base/mojom/window_show_state.mojom ++++ ui/base/mojom/window_show_state.mojom +@@ -23,6 +23,7 @@ enum WindowShowState { + kMaximized = 3, + kInactive = 4, // Views only, not persisted. + kFullscreen = 5, ++ kHidden = 6, + // TODO(crbug.com/361560784): Investigate and Remove `kEnd` +- [MinVersion=1] kEnd = 6, ++ [MinVersion=1] kEnd = 7, + }; diff --git ui/base/ui_base_types.h ui/base/ui_base_types.h -index fc6bfb3c09f47..0b8910bd53c0d 100644 +index c3f5337d50a09..8f95219e89259 100644 --- ui/base/ui_base_types.h +++ ui/base/ui_base_types.h -@@ -26,7 +26,8 @@ enum WindowShowState { - SHOW_STATE_MAXIMIZED = 3, - SHOW_STATE_INACTIVE = 4, // Views only, not persisted. - SHOW_STATE_FULLSCREEN = 5, -- SHOW_STATE_END = 6 // The end of show state enum. -+ SHOW_STATE_HIDDEN = 6, // Views and MacOS only. -+ SHOW_STATE_END = 7 // The end of show state enum. - }; +@@ -29,6 +29,8 @@ inline constexpr WindowShowState SHOW_STATE_INACTIVE = + ui::mojom::WindowShowState::kInactive; + inline constexpr WindowShowState SHOW_STATE_FULLSCREEN = + ui::mojom::WindowShowState::kFullscreen; ++inline constexpr WindowShowState SHOW_STATE_HIDDEN = ++ ui::mojom::WindowShowState::kHidden; + inline constexpr WindowShowState SHOW_STATE_END = + ui::mojom::WindowShowState::kEnd; - // 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 79f348169de79..e1e7cb876f697 100644 +index e237b24eebe7c..39375a38fa680 100644 --- ui/ozone/platform/x11/x11_window.cc +++ ui/ozone/platform/x11/x11_window.cc -@@ -1874,7 +1874,8 @@ void X11Window::CreateXWindow(const PlatformWindowInitProperties& properties) { +@@ -1876,7 +1876,8 @@ void X11Window::CreateXWindow(const PlatformWindowInitProperties& properties) { req.border_pixel = 0; bounds_in_pixels_ = SanitizeBounds(bounds); @@ -365,7 +365,7 @@ index 5f736a0efcdcf..53368d1a6ee35 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 668b9bbb908a5..74a14a5fe6236 100644 +index 66e1c0fa50581..da5ab727a5dab 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc +++ ui/views/widget/desktop_aura/desktop_window_tree_host_win.cc @@ -20,6 +20,7 @@ @@ -423,7 +423,7 @@ index 668b9bbb908a5..74a14a5fe6236 100644 // Stack immediately above its parent so that it does not cover other // root-level windows, with the exception of menus, to allow them to be // displayed on top of other windows. -@@ -1073,10 +1094,23 @@ void DesktopWindowTreeHostWin::HandleWindowMinimizedOrRestored(bool restored) { +@@ -1077,10 +1098,23 @@ void DesktopWindowTreeHostWin::HandleWindowMinimizedOrRestored(bool restored) { if (!native_widget_delegate_->IsNativeWidgetInitialized()) return; @@ -449,7 +449,7 @@ index 668b9bbb908a5..74a14a5fe6236 100644 } void DesktopWindowTreeHostWin::HandleClientSizeChanged( -@@ -1094,11 +1128,15 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() { +@@ -1098,11 +1132,15 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() { } void DesktopWindowTreeHostWin::HandleNativeFocus(HWND last_focused_window) { @@ -467,7 +467,7 @@ index 668b9bbb908a5..74a14a5fe6236 100644 } bool DesktopWindowTreeHostWin::HandleMouseEvent(ui::MouseEvent* event) { -@@ -1106,6 +1144,12 @@ bool DesktopWindowTreeHostWin::HandleMouseEvent(ui::MouseEvent* event) { +@@ -1110,6 +1148,12 @@ bool DesktopWindowTreeHostWin::HandleMouseEvent(ui::MouseEvent* event) { if (ui::PlatformEventSource::ShouldIgnoreNativePlatformEvents()) return true; @@ -480,7 +480,7 @@ index 668b9bbb908a5..74a14a5fe6236 100644 SendEventToSink(event); return event->handled(); } -@@ -1288,9 +1332,17 @@ void DesktopWindowTreeHostWin::SetBoundsInDIP(const gfx::Rect& bounds) { +@@ -1292,9 +1336,17 @@ void DesktopWindowTreeHostWin::SetBoundsInDIP(const gfx::Rect& bounds) { // positions in variable-DPI situations. See https://crbug.com/1224715 for // details. aura::Window* root = nullptr; @@ -500,12 +500,12 @@ index 668b9bbb908a5..74a14a5fe6236 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 531c73e496ab8..453f354a04a75 100644 +index 286fcdf651131..a036eead2376a 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_win.h +++ ui/views/widget/desktop_aura/desktop_window_tree_host_win.h -@@ -328,6 +328,14 @@ class VIEWS_EXPORT DesktopWindowTreeHostWin - // True if the window should have the frame removed. - bool remove_standard_frame_; +@@ -334,6 +334,14 @@ class VIEWS_EXPORT DesktopWindowTreeHostWin + // True if the window is allow to take screenshots, by default is true. + bool allow_screenshots_ = true; + // True if the widget has a external parent view/window outside of the + // Chromium-controlled view/window hierarchy. @@ -519,10 +519,10 @@ index 531c73e496ab8..453f354a04a75 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 c4a8bc0390517..30afff712ad8e 100644 +index 4c9fcad42f8c7..79a13c77ea9a7 100644 --- ui/views/widget/native_widget_mac.mm +++ ui/views/widget/native_widget_mac.mm -@@ -660,6 +660,7 @@ void NativeWidgetMac::Show(ui::WindowShowState show_state, +@@ -661,6 +661,7 @@ void NativeWidgetMac::Show(ui::WindowShowState show_state, break; case ui::SHOW_STATE_MAXIMIZED: case ui::SHOW_STATE_FULLSCREEN: @@ -531,10 +531,10 @@ index c4a8bc0390517..30afff712ad8e 100644 break; case ui::SHOW_STATE_END: diff --git ui/views/widget/widget.cc ui/views/widget/widget.cc -index ef981eeb13aba..8457c7a8d2b8f 100644 +index 0b36c074cb789..b706a99d3d889 100644 --- ui/views/widget/widget.cc +++ ui/views/widget/widget.cc -@@ -411,7 +411,8 @@ void Widget::Init(InitParams params) { +@@ -422,7 +422,8 @@ void Widget::Init(InitParams params) { } params.child |= (params.type == InitParams::TYPE_CONTROL); @@ -544,7 +544,7 @@ index ef981eeb13aba..8457c7a8d2b8f 100644 is_headless_ = params.ShouldInitAsHeadless(); is_autosized_ = params.autosize; -@@ -518,9 +519,14 @@ void Widget::Init(InitParams params) { +@@ -529,9 +530,14 @@ void Widget::Init(InitParams params) { if (show_state == ui::SHOW_STATE_MAXIMIZED) { Maximize(); @@ -559,7 +559,7 @@ index ef981eeb13aba..8457c7a8d2b8f 100644 } #if BUILDFLAG(IS_CHROMEOS_ASH) -@@ -534,7 +540,12 @@ void Widget::Init(InitParams params) { +@@ -545,7 +551,12 @@ void Widget::Init(InitParams params) { } else if (delegate) { SetContentsView(delegate->TransferOwnershipOfContentsView()); if (should_set_initial_bounds) { @@ -573,7 +573,7 @@ index ef981eeb13aba..8457c7a8d2b8f 100644 } } -@@ -1733,10 +1744,16 @@ void Widget::OnNativeWidgetParentChanged(gfx::NativeView parent) { +@@ -1744,10 +1755,16 @@ void Widget::OnNativeWidgetParentChanged(gfx::NativeView parent) { } gfx::Size Widget::GetMinimumSize() const { @@ -590,7 +590,7 @@ index ef981eeb13aba..8457c7a8d2b8f 100644 return non_client_view_ ? non_client_view_->GetMaximumSize() : gfx::Size(); } -@@ -1988,7 +2005,8 @@ bool Widget::SetInitialFocus(ui::WindowShowState show_state) { +@@ -1999,7 +2016,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 || @@ -601,7 +601,7 @@ index ef981eeb13aba..8457c7a8d2b8f 100644 // focus when the window is restored. if (v) diff --git ui/views/widget/widget.h ui/views/widget/widget.h -index e0429200e216e..bc07e44566c8a 100644 +index c4c3d9b0443cc..d9b1661802d74 100644 --- ui/views/widget/widget.h +++ ui/views/widget/widget.h @@ -366,6 +366,8 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, @@ -652,7 +652,7 @@ index b162f426dbceb..017eb2562f6eb 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 6dac746517416..98e1ac1011bf6 100644 +index cc7e087c50ea1..f4099bcdcdd18 100644 --- ui/views/win/hwnd_message_handler.cc +++ ui/views/win/hwnd_message_handler.cc @@ -772,7 +772,11 @@ bool HWNDMessageHandler::IsVisible() const { diff --git a/patch/patches/viz_osr_2575.patch b/patch/patches/viz_osr_2575.patch index 64fe6dbfa..a6cbfba72 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 c72378fbfd823..22d113b0481fb 100644 +index 853a95c65674b..cc9ed39b3a236 100644 --- components/viz/service/BUILD.gn +++ components/viz/service/BUILD.gn -@@ -258,6 +258,8 @@ viz_component("service") { +@@ -260,6 +260,8 @@ viz_component("service") { "transitions/surface_animation_manager.h", "transitions/transferable_resource_tracker.cc", "transitions/transferable_resource_tracker.h", @@ -170,7 +170,7 @@ index 0a7aff6ee5b1c..05455d0cb2e9b 100644 compositor_data.display_client->GetBoundRemote(resize_task_runner_); mojo::AssociatedRemote diff --git mojo/public/cpp/bindings/sync_call_restrictions.h mojo/public/cpp/bindings/sync_call_restrictions.h -index 0173f9b181714..36a734d64738e 100644 +index 7962a863f488a..bca9de4548799 100644 --- mojo/public/cpp/bindings/sync_call_restrictions.h +++ mojo/public/cpp/bindings/sync_call_restrictions.h @@ -43,6 +43,7 @@ class Compositor; @@ -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 b6c784c612bcf..65e58ecb262ee 100644 +index 58da7f0697dd2..96e3f6358d9a4 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 cbf18750b..8accc36de 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 e8eb786e8f399..0ab5d8221087d 100644 +index c92c7744be691..bf09409fd374a 100644 --- content/browser/web_contents/web_contents_impl.cc +++ content/browser/web_contents/web_contents_impl.cc -@@ -3636,6 +3636,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, +@@ -3675,6 +3675,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 e8eb786e8f399..0ab5d8221087d 100644 std::unique_ptr delegate = GetContentClient()->browser()->GetWebContentsViewDelegate(this); -@@ -3646,6 +3652,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, +@@ -3685,6 +3691,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, view_ = CreateWebContentsView(this, std::move(delegate), &render_view_host_delegate_view_); } @@ -23,7 +23,7 @@ index e8eb786e8f399..0ab5d8221087d 100644 CHECK(render_view_host_delegate_view_); CHECK(view_.get()); -@@ -3842,6 +3849,9 @@ void WebContentsImpl::RenderWidgetCreated( +@@ -3881,6 +3888,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 e8eb786e8f399..0ab5d8221087d 100644 } void WebContentsImpl::RenderWidgetDeleted( -@@ -4715,6 +4725,15 @@ FrameTree* WebContentsImpl::CreateNewWindow( +@@ -4753,6 +4763,15 @@ FrameTree* WebContentsImpl::CreateNewWindow( create_params.picture_in_picture_options = *(params.pip_options); } @@ -49,7 +49,7 @@ index e8eb786e8f399..0ab5d8221087d 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. -@@ -9136,6 +9155,9 @@ void WebContentsImpl::SetFocusedFrame(FrameTreeNode* node, +@@ -9194,6 +9213,9 @@ void WebContentsImpl::SetFocusedFrame(FrameTreeNode* node, } CloseListenerManager::DidChangeFocusedFrame(this); @@ -60,10 +60,10 @@ index e8eb786e8f399..0ab5d8221087d 100644 FrameTree* WebContentsImpl::GetOwnedPictureInPictureFrameTree() { diff --git content/public/browser/web_contents.h content/public/browser/web_contents.h -index 73715da6824ef..185dc85834665 100644 +index e3351da92040c..9bbde25e38564 100644 --- content/public/browser/web_contents.h +++ content/public/browser/web_contents.h -@@ -109,10 +109,12 @@ class BrowserContext; +@@ -110,10 +110,12 @@ class BrowserContext; class BrowserPluginGuestDelegate; class RenderFrameHost; class RenderViewHost; @@ -76,7 +76,7 @@ index 73715da6824ef..185dc85834665 100644 class WebUI; struct DropData; struct MHTMLGenerationParams; -@@ -258,6 +260,10 @@ class WebContents : public PageNavigator, public base::SupportsUserData { +@@ -259,6 +261,10 @@ class WebContents : public PageNavigator, public base::SupportsUserData { network::mojom::WebSandboxFlags starting_sandbox_flags = network::mojom::WebSandboxFlags::kNone; @@ -88,10 +88,10 @@ index 73715da6824ef..185dc85834665 100644 // the value that'll be returned by GetLastActiveTimeTicks(). If this is // left default initialized then the value is not passed on to the diff --git content/public/browser/web_contents_delegate.h content/public/browser/web_contents_delegate.h -index 553a8726a5011..56ab81767e2c3 100644 +index a080fb57f00c7..a3d3ddec14e67 100644 --- content/public/browser/web_contents_delegate.h +++ content/public/browser/web_contents_delegate.h -@@ -64,9 +64,11 @@ class EyeDropperListener; +@@ -65,9 +65,11 @@ class EyeDropperListener; class FileSelectListener; class JavaScriptDialogManager; class RenderFrameHost; @@ -103,7 +103,7 @@ index 553a8726a5011..56ab81767e2c3 100644 struct ContextMenuParams; struct DropData; struct MediaPlayerWatchTime; -@@ -359,6 +361,14 @@ class CONTENT_EXPORT WebContentsDelegate { +@@ -366,6 +368,14 @@ class CONTENT_EXPORT WebContentsDelegate { const StoragePartitionConfig& partition_config, SessionStorageNamespace* session_storage_namespace); @@ -119,10 +119,10 @@ index 553a8726a5011..56ab81767e2c3 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 0fdc42b4c027e..cc71421f87bea 100644 +index 01037a275ee9e..faa1871ebdd2e 100644 --- content/public/browser/web_contents_observer.h +++ content/public/browser/web_contents_observer.h -@@ -239,6 +239,9 @@ class CONTENT_EXPORT WebContentsObserver : public base::CheckedObserver { +@@ -242,6 +242,9 @@ class CONTENT_EXPORT WebContentsObserver : public base::CheckedObserver { // controlled by the capturing tab. virtual void OnCapturedSurfaceControl() {} @@ -132,7 +132,7 @@ index 0fdc42b4c027e..cc71421f87bea 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() {} -@@ -895,6 +898,10 @@ class CONTENT_EXPORT WebContentsObserver : public base::CheckedObserver { +@@ -909,6 +912,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 dcdc74ca7..14434fa0c 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 cbc11108212e7..ff6c412c36713 100644 +index 700e93a9ed053..9d5d1f67adb07 100644 --- third_party/blink/public/platform/platform.h +++ third_party/blink/public/platform/platform.h -@@ -818,6 +818,11 @@ class BLINK_PLATFORM_EXPORT Platform { +@@ -810,6 +810,11 @@ class BLINK_PLATFORM_EXPORT Platform { } #endif diff --git a/patch/patches/webkit_popups.patch b/patch/patches/webkit_popups.patch index b6905e0a4..4d7b5dd59 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 4220a0aebf4a2..0bb15451c703f 100644 +index 746af7113a66d..63346d59fe411 100644 --- third_party/blink/public/web/web_view.h +++ third_party/blink/public/web/web_view.h -@@ -335,6 +335,7 @@ class BLINK_EXPORT WebView { +@@ -341,6 +341,7 @@ class BLINK_EXPORT WebView { // Sets whether select popup menus should be rendered by the browser. static void SetUseExternalPopupMenus(bool); @@ -11,10 +11,10 @@ index 4220a0aebf4a2..0bb15451c703f 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 42b00bd0b3c22..31b8da18cab0b 100644 +index 8f3603538170a..70366efd02575 100644 --- third_party/blink/renderer/core/exported/web_view_impl.cc +++ third_party/blink/renderer/core/exported/web_view_impl.cc -@@ -252,8 +252,13 @@ void WebView::SetUseExternalPopupMenus(bool use_external_popup_menus) { +@@ -253,8 +253,13 @@ void WebView::SetUseExternalPopupMenus(bool use_external_popup_menus) { g_should_use_external_popup_menus = use_external_popup_menus; } @@ -30,7 +30,7 @@ index 42b00bd0b3c22..31b8da18cab0b 100644 } namespace { -@@ -611,6 +616,7 @@ WebViewImpl::WebViewImpl( +@@ -616,6 +621,7 @@ WebViewImpl::WebViewImpl( blink::ZoomFactorToZoomLevel(kMinimumBrowserZoomFactor)), maximum_zoom_level_( blink::ZoomFactorToZoomLevel(kMaximumBrowserZoomFactor)), @@ -39,10 +39,10 @@ index 42b00bd0b3c22..31b8da18cab0b 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 d4f129c072ef1..956ad9beb22b4 100644 +index 69318d9676ed6..84c2d95694146 100644 --- third_party/blink/renderer/core/exported/web_view_impl.h +++ third_party/blink/renderer/core/exported/web_view_impl.h -@@ -138,7 +138,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, +@@ -140,7 +140,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, static HashSet& AllInstances(); // Returns true if popup menus should be rendered by the browser, false if // they should be rendered by WebKit (which is the default). @@ -52,7 +52,7 @@ index d4f129c072ef1..956ad9beb22b4 100644 // Returns whether frames under this WebView are backed by a compositor. bool does_composite() const { return does_composite_; } -@@ -870,6 +871,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, +@@ -873,6 +874,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; diff --git a/patch/patches/win_app_icon_3606.patch b/patch/patches/win_app_icon_3606.patch index a8212cc0a..981777a20 100644 --- a/patch/patches/win_app_icon_3606.patch +++ b/patch/patches/win_app_icon_3606.patch @@ -89,7 +89,7 @@ index db8209bbcc214..b50bce7fae5b5 100644 HICON GetSmallAppIcon(); diff --git chrome/common/chrome_constants.cc chrome/common/chrome_constants.cc -index 6d49c77d98046..1c60eb15b4f65 100644 +index ba30144d3e7be..ec2d3c5e7298c 100644 --- chrome/common/chrome_constants.cc +++ chrome/common/chrome_constants.cc @@ -6,6 +6,7 @@ diff --git a/patch/patches/win_base_pa_oom_5891459.patch b/patch/patches/win_base_pa_oom_5891459.patch new file mode 100644 index 000000000..2da1b9723 --- /dev/null +++ b/patch/patches/win_base_pa_oom_5891459.patch @@ -0,0 +1,12 @@ +diff --git base/allocator/partition_allocator/src/partition_alloc/oom.cc base/allocator/partition_allocator/src/partition_alloc/oom.cc +index 9b78dfb817139..89589784aa0aa 100644 +--- base/allocator/partition_allocator/src/partition_alloc/oom.cc ++++ base/allocator/partition_allocator/src/partition_alloc/oom.cc +@@ -15,6 +15,7 @@ + + #include + #include ++#include + #endif // PA_BUILDFLAG(IS_WIN) + + namespace partition_alloc { diff --git a/patch/patches/win_sandbox_3210.patch b/patch/patches/win_sandbox_3210.patch index 82cdc39ac..0d63f61b9 100644 --- a/patch/patches/win_sandbox_3210.patch +++ b/patch/patches/win_sandbox_3210.patch @@ -1,5 +1,5 @@ diff --git sandbox/policy/win/sandbox_win.cc sandbox/policy/win/sandbox_win.cc -index d25dc43074f15..4c713f6ef1761 100644 +index e6a3cd1e84b3b..e4eb19e6cc9a5 100644 --- sandbox/policy/win/sandbox_win.cc +++ sandbox/policy/win/sandbox_win.cc @@ -981,6 +981,13 @@ ResultCode SandboxWin::StartSandboxedProcess( diff --git a/patch/patches/win_sandbox_policy.patch b/patch/patches/win_sandbox_policy.patch index 89174c2bd..2b7de531a 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 ae3aafd2fe6e3..763ae43526762 100644 +index 70c3179ee66ff..9493ee22c541e 100644 --- sandbox/win/src/sandbox_policy.h +++ sandbox/win/src/sandbox_policy.h -@@ -295,7 +295,7 @@ class [[clang::lto_visibility_public]] TargetPolicy { +@@ -282,7 +282,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,7 +12,7 @@ index ae3aafd2fe6e3..763ae43526762 100644 } // namespace sandbox diff --git sandbox/win/src/sandbox_policy_base.cc sandbox/win/src/sandbox_policy_base.cc -index 84092ea3cf738..06cc6f6243c82 100644 +index 4731c8fac7950..434eef63e533e 100644 --- sandbox/win/src/sandbox_policy_base.cc +++ sandbox/win/src/sandbox_policy_base.cc @@ -195,12 +195,12 @@ PolicyGlobal* ConfigBase::policy() { @@ -31,7 +31,7 @@ index 84092ea3cf738..06cc6f6243c82 100644 } return std::nullopt; } -@@ -801,14 +801,14 @@ bool PolicyBase::SetupHandleCloser(TargetProcess& target) { +@@ -790,14 +790,14 @@ bool PolicyBase::SetupHandleCloser(TargetProcess& target) { return (SBOX_ALL_OK == rc); } @@ -49,10 +49,10 @@ index 84092ea3cf738..06cc6f6243c82 100644 // Can only set this once - as there is only one region sent to the child. CHECK(!delegate_data_); diff --git sandbox/win/src/sandbox_policy_base.h sandbox/win/src/sandbox_policy_base.h -index 1481dc3343ee0..bae1373bc8f1f 100644 +index daaff5042a562..5f67342e1c48d 100644 --- sandbox/win/src/sandbox_policy_base.h +++ sandbox/win/src/sandbox_policy_base.h -@@ -122,7 +122,7 @@ class ConfigBase final : public TargetConfig { +@@ -120,7 +120,7 @@ class ConfigBase final : public TargetConfig { // Should only be called once the object is configured. PolicyGlobal* policy(); @@ -61,7 +61,7 @@ index 1481dc3343ee0..bae1373bc8f1f 100644 std::vector& blocklisted_dlls(); AppContainerBase* app_container(); IntegrityLevel integrity_level() { return integrity_level_; } -@@ -177,7 +177,7 @@ class PolicyBase final : public TargetPolicy { +@@ -175,7 +175,7 @@ class PolicyBase final : public TargetPolicy { ResultCode SetStdoutHandle(HANDLE handle) override; ResultCode SetStderrHandle(HANDLE handle) override; void AddHandleToShare(HANDLE handle) override; @@ -70,7 +70,7 @@ index 1481dc3343ee0..bae1373bc8f1f 100644 // Creates a Job object with the level specified in a previous call to // SetJobLevel(). -@@ -241,13 +241,13 @@ class PolicyBase final : public TargetPolicy { +@@ -239,13 +239,13 @@ class PolicyBase final : public TargetPolicy { // time. // Returns nullopt if no data has been set, or a view into the data. diff --git a/patch/patches/win_sandbox_stack_copier.patch b/patch/patches/win_sandbox_stack_copier.patch deleted file mode 100644 index 22dcad8be..000000000 --- a/patch/patches/win_sandbox_stack_copier.patch +++ /dev/null @@ -1,28 +0,0 @@ -diff --git base/profiler/stack_copier.cc base/profiler/stack_copier.cc -index 6cc3a6acef3a5..bef6e2426d3f0 100644 ---- base/profiler/stack_copier.cc -+++ base/profiler/stack_copier.cc -@@ -14,7 +14,9 @@ - #include "base/bits.h" - #include "base/compiler_specific.h" - #include "base/profiler/stack_buffer.h" -+#if PA_BUILDFLAG(USE_PARTITION_ALLOC) - #include "partition_alloc/tagging.h" -+#endif - - namespace base { - -@@ -76,11 +78,13 @@ const uint8_t* StackCopier::CopyStackContentsAndRewritePointers( - const uintptr_t* original_stack_top, - size_t platform_stack_alignment, - uintptr_t* stack_buffer_bottom) { -+#if PA_BUILDFLAG(USE_PARTITION_ALLOC) - // Disable MTE during this function because this function indiscriminately - // reads stack frames, some of which belong to system libraries, not Chrome - // itself. With stack tagging, some bytes on the stack have MTE tags different - // from the stack pointer tag. - partition_alloc::SuspendTagCheckingScope suspend_tag_checking_scope; -+#endif - - const uint8_t* byte_src = original_stack_bottom; - // The first address in the stack with pointer alignment. Pointer-aligned diff --git a/tests/ceftests/media_access_unittest.cc b/tests/ceftests/media_access_unittest.cc index 4ad681058..04f1994a1 100644 --- a/tests/ceftests/media_access_unittest.cc +++ b/tests/ceftests/media_access_unittest.cc @@ -415,8 +415,7 @@ TEST(MediaAccessTest, DeviceFailureWhenRequestingAudioButReturningVideo) { EXPECT_TRUE(test_setup.got_request); EXPECT_TRUE(test_setup.got_js_error); - EXPECT_STREQ("NotAllowedError: Invalid state", - test_setup.js_error_str.c_str()); + EXPECT_STREQ("AbortError: Invalid state", test_setup.js_error_str.c_str()); EXPECT_FALSE(test_setup.got_change); } @@ -431,8 +430,7 @@ TEST(MediaAccessTest, DeviceFailureWhenRequestingVideoButReturningAudio) { EXPECT_TRUE(test_setup.got_request); EXPECT_TRUE(test_setup.got_js_error); - EXPECT_STREQ("NotAllowedError: Invalid state", - test_setup.js_error_str.c_str()); + EXPECT_STREQ("AbortError: Invalid state", test_setup.js_error_str.c_str()); EXPECT_FALSE(test_setup.got_change); } @@ -449,8 +447,7 @@ TEST(MediaAccessTest, DevicePartialFailureReturningVideo) { EXPECT_TRUE(test_setup.got_request); EXPECT_TRUE(test_setup.got_js_error); - EXPECT_STREQ("NotAllowedError: Invalid state", - test_setup.js_error_str.c_str()); + EXPECT_STREQ("AbortError: Invalid state", test_setup.js_error_str.c_str()); EXPECT_FALSE(test_setup.got_change); } @@ -467,8 +464,7 @@ TEST(MediaAccessTest, DevicePartialFailureReturningAudio) { EXPECT_TRUE(test_setup.got_request); EXPECT_TRUE(test_setup.got_js_error); - EXPECT_STREQ("NotAllowedError: Invalid state", - test_setup.js_error_str.c_str()); + EXPECT_STREQ("AbortError: Invalid state", test_setup.js_error_str.c_str()); EXPECT_FALSE(test_setup.got_change); } @@ -485,8 +481,7 @@ TEST(MediaAccessTest, DeviceFailureWhenReturningScreenCapture1) { EXPECT_TRUE(test_setup.got_request); EXPECT_TRUE(test_setup.got_js_error); - EXPECT_STREQ("NotAllowedError: Invalid state", - test_setup.js_error_str.c_str()); + EXPECT_STREQ("AbortError: Invalid state", test_setup.js_error_str.c_str()); EXPECT_FALSE(test_setup.got_change); } @@ -503,8 +498,7 @@ TEST(MediaAccessTest, DeviceFailureWhenReturningScreenCapture2) { EXPECT_TRUE(test_setup.got_request); EXPECT_TRUE(test_setup.got_js_error); - EXPECT_STREQ("NotAllowedError: Invalid state", - test_setup.js_error_str.c_str()); + EXPECT_STREQ("AbortError: Invalid state", test_setup.js_error_str.c_str()); EXPECT_FALSE(test_setup.got_change); } @@ -519,8 +513,7 @@ TEST(MediaAccessTest, DeviceFailureWhenReturningScreenCapture3) { EXPECT_TRUE(test_setup.got_request); EXPECT_TRUE(test_setup.got_js_error); - EXPECT_STREQ("NotAllowedError: Invalid state", - test_setup.js_error_str.c_str()); + EXPECT_STREQ("AbortError: Invalid state", test_setup.js_error_str.c_str()); EXPECT_FALSE(test_setup.got_change); } @@ -535,8 +528,7 @@ TEST(MediaAccessTest, DeviceFailureWhenReturningScreenCapture4) { EXPECT_TRUE(test_setup.got_request); EXPECT_TRUE(test_setup.got_js_error); - EXPECT_STREQ("NotAllowedError: Invalid state", - test_setup.js_error_str.c_str()); + EXPECT_STREQ("AbortError: Invalid state", test_setup.js_error_str.c_str()); EXPECT_FALSE(test_setup.got_change); } @@ -551,8 +543,7 @@ TEST(MediaAccessTest, DeviceFailureWhenReturningScreenCapture5) { EXPECT_TRUE(test_setup.got_request); EXPECT_TRUE(test_setup.got_js_error); - EXPECT_STREQ("NotAllowedError: Invalid state", - test_setup.js_error_str.c_str()); + EXPECT_STREQ("AbortError: Invalid state", test_setup.js_error_str.c_str()); EXPECT_FALSE(test_setup.got_change); } @@ -567,8 +558,7 @@ TEST(MediaAccessTest, DeviceFailureWhenReturningScreenCapture6) { EXPECT_TRUE(test_setup.got_request); EXPECT_TRUE(test_setup.got_js_error); - EXPECT_STREQ("NotAllowedError: Invalid state", - test_setup.js_error_str.c_str()); + EXPECT_STREQ("AbortError: Invalid state", test_setup.js_error_str.c_str()); EXPECT_FALSE(test_setup.got_change); } @@ -675,8 +665,7 @@ TEST(MediaAccessTest, DesktopFailureWhenRequestingVideoButReturningAudio) { EXPECT_TRUE(test_setup.got_request); EXPECT_TRUE(test_setup.got_js_error); - EXPECT_STREQ("NotAllowedError: Invalid state", - test_setup.js_error_str.c_str()); + EXPECT_STREQ("AbortError: Invalid state", test_setup.js_error_str.c_str()); EXPECT_FALSE(test_setup.got_change); } @@ -713,8 +702,7 @@ TEST(MediaAccessTest, DesktopPartialFailureReturningAudio) { EXPECT_TRUE(test_setup.got_request); EXPECT_TRUE(test_setup.got_js_error); - EXPECT_STREQ("NotAllowedError: Invalid state", - test_setup.js_error_str.c_str()); + EXPECT_STREQ("AbortError: Invalid state", test_setup.js_error_str.c_str()); EXPECT_FALSE(test_setup.got_change); } diff --git a/tests/ceftests/scheme_handler_unittest.cc b/tests/ceftests/scheme_handler_unittest.cc index 37ffae0d9..b1419de77 100644 --- a/tests/ceftests/scheme_handler_unittest.cc +++ b/tests/ceftests/scheme_handler_unittest.cc @@ -1399,7 +1399,7 @@ TEST(SchemeHandlerTest, CustomNonStandardXSSSameOrigin) { "customnonstd:xhr%20value"); test_results.console_messages.push_back( - "Error: Failed to read a named property 'getResult' from " + "SecurityError: Failed to read a named property 'getResult' from " "'Window': Blocked a frame with origin \"null\" from accessing a " "cross-origin frame."); @@ -1525,7 +1525,7 @@ TEST(SchemeHandlerTest, CustomStandardXSSDifferentOrigin) { "customstd://test2/iframe.html"); test_results.console_messages.push_back( - "Error: Failed to read a named property 'getResult' from " + "SecurityError: Failed to read a named property 'getResult' from " "'Window': Blocked a frame with origin \"customstd://test2\" from " "accessing a cross-origin frame."); @@ -1553,7 +1553,7 @@ TEST(SchemeHandlerTest, CustomStandardXSSDifferentProtocolHttp) { "https://test2/iframe.html"); test_results.console_messages.push_back( - "Error: Failed to read a named property 'getResult' from " + "SecurityError: Failed to read a named property 'getResult' from " "'Window': Blocked a frame with origin \"https://test2\" from accessing " "a cross-origin frame."); @@ -1582,7 +1582,7 @@ TEST(SchemeHandlerTest, CustomStandardXSSDifferentProtocolCustomNonStandard) { "customnonstd:some%20value"); test_results.console_messages.push_back( - "Error: Failed to read a named property 'getResult' from " + "SecurityError: Failed to read a named property 'getResult' from " "'Window': Blocked a frame with origin \"null\" from accessing a " "cross-origin frame."); @@ -1610,7 +1610,7 @@ TEST(SchemeHandlerTest, HttpXSSDifferentProtocolCustomStandard) { "customstd://test2/iframe.html"); test_results.console_messages.push_back( - "Error: Failed to read a named property 'getResult' from " + "SecurityError: Failed to read a named property 'getResult' from " "'Window': Blocked a frame with origin \"customstd://test2\" from " "accessing a cross-origin frame."); @@ -1638,7 +1638,7 @@ TEST(SchemeHandlerTest, HttpXSSDifferentProtocolCustomNonStandard) { "customnonstd:some%20value"); test_results.console_messages.push_back( - "Error: Failed to read a named property 'getResult' from " + "SecurityError: Failed to read a named property 'getResult' from " "'Window': Blocked a frame with origin \"null\" from accessing a " "cross-origin frame."); @@ -1764,7 +1764,7 @@ TEST(SchemeHandlerTest, HttpXSSDifferentOrigin) { SetUpXSS(&test_results, "https://test1/run.html", "https://test2/xss.html"); test_results.console_messages.push_back( - "Error: Failed to read a named property 'getResult' from " + "SecurityError: Failed to read a named property 'getResult' from " "'Window': Blocked a frame with origin \"https://test2\" from accessing " "a cross-origin frame."); diff --git a/tests/ceftests/v8_unittest.cc b/tests/ceftests/v8_unittest.cc index 43ee60555..25b39c704 100644 --- a/tests/ceftests/v8_unittest.cc +++ b/tests/ceftests/v8_unittest.cc @@ -951,8 +951,12 @@ class V8RendererTest : public ClientAppRenderer::Delegate, static const char* kName = "val"; static const char* kGetException = "My get exception"; static const char* kSetException = "My set exception"; - static const char* kGetExceptionMsg = "Uncaught Error: My get exception"; - static const char* kSetExceptionMsg = "Uncaught Error: My set exception"; + static const char* kGetExceptionMsg = + "Uncaught Error: Failed to read the 'val' property from 'Object': My " + "get exception"; + static const char* kSetExceptionMsg = + "Uncaught Error: Failed to set the 'val' property on 'Object': My set " + "exception"; class Accessor : public CefV8Accessor { public: @@ -1493,13 +1497,17 @@ class V8RendererTest : public ClientAppRenderer::Delegate, static const char* kSetByIndexException = "My set_byindex exception"; static const char* kGetByNameExceptionMsg = - "Uncaught Error: My get_byname exception"; + "Uncaught Error: Failed to read a named property 'val' from 'Object': " + "My get_byname exception"; static const char* kGetByIndexExceptionMsg = - "Uncaught Error: My get_byindex exception"; + "Uncaught Error: Failed to read an indexed property [1] from 'Object': " + "My get_byindex exception"; static const char* kSetByNameExceptionMsg = - "Uncaught Error: My set_byname exception"; + "Uncaught Error: Failed to set a named property 'val' on 'Object': My " + "set_byname exception"; static const char* kSetByIndexExceptionMsg = - "Uncaught Error: My set_byindex exception"; + "Uncaught Error: Failed to set an indexed property [1] on 'Object': My " + "set_byindex exception"; class Interceptor : public CefV8Interceptor { public: diff --git a/tests/ceftests/views/window_unittest.cc b/tests/ceftests/views/window_unittest.cc index b95e9c863..24e9ccf26 100644 --- a/tests/ceftests/views/window_unittest.cc +++ b/tests/ceftests/views/window_unittest.cc @@ -240,9 +240,9 @@ void CreateBoxLayout(CefRefPtr parent) { // The children should each take up 50% of the client area. ExpectCloseRects(CefRect(0, 0, kWSize, kWSize / 2), panel_child1->GetBounds(), - 2); + 3); ExpectCloseRects(CefRect(0, kWSize / 2, kWSize, kWSize / 2), - panel_child2->GetBounds(), 2); + panel_child2->GetBounds(), 3); } void RunWindowLayoutAndCoords(CefRefPtr window) { @@ -267,7 +267,7 @@ void RunWindowLayoutAndCoords(CefRefPtr window) { EXPECT_TRUE(view2->ConvertPointToScreen(point)); ExpectClosePoints(CefPoint(client_bounds_in_screen.x, client_bounds_in_screen.y + kWSize / 2), - point, 1); + point, 3); // Test view from screen coordinate conversions. point = CefPoint(client_bounds_in_screen.x, client_bounds_in_screen.y); @@ -276,7 +276,7 @@ void RunWindowLayoutAndCoords(CefRefPtr window) { point = CefPoint(client_bounds_in_screen.x, client_bounds_in_screen.y + kWSize / 2); EXPECT_TRUE(view2->ConvertPointFromScreen(point)); - ExpectClosePoints(CefPoint(0, 0), point, 1); + ExpectClosePoints(CefPoint(0, 0), point, 3); // Test view to window coordinate conversions. point = CefPoint(0, 0); @@ -284,7 +284,7 @@ void RunWindowLayoutAndCoords(CefRefPtr window) { EXPECT_EQ(CefPoint(0, 0), point); point = CefPoint(0, 0); EXPECT_TRUE(view2->ConvertPointToWindow(point)); - ExpectClosePoints(CefPoint(0, kWSize / 2), point, 1); + ExpectClosePoints(CefPoint(0, kWSize / 2), point, 3); // Test view from window coordinate conversions. point = CefPoint(0, 0); @@ -292,23 +292,23 @@ void RunWindowLayoutAndCoords(CefRefPtr window) { EXPECT_EQ(CefPoint(0, 0), point); point = CefPoint(0, kWSize / 2); EXPECT_TRUE(view2->ConvertPointFromWindow(point)); - ExpectClosePoints(CefPoint(0, 0), point, 1); + ExpectClosePoints(CefPoint(0, 0), point, 3); // Test view to view coordinate conversions. point = CefPoint(0, 0); EXPECT_TRUE(view1->ConvertPointToView(view2, point)); - ExpectClosePoints(CefPoint(0, -kWSize / 2), point, 1); + ExpectClosePoints(CefPoint(0, -kWSize / 2), point, 3); point = CefPoint(0, 0); EXPECT_TRUE(view2->ConvertPointToView(view1, point)); - ExpectClosePoints(CefPoint(0, kWSize / 2), point, 1); + ExpectClosePoints(CefPoint(0, kWSize / 2), point, 3); // Test view from view coordinate conversions. point = CefPoint(0, -kWSize / 2); EXPECT_TRUE(view1->ConvertPointFromView(view2, point)); - ExpectClosePoints(CefPoint(0, 0), point, 1); + ExpectClosePoints(CefPoint(0, 0), point, 3); point = CefPoint(0, kWSize / 2); EXPECT_TRUE(view2->ConvertPointFromView(view1, point)); - ExpectClosePoints(CefPoint(0, 0), point, 1); + ExpectClosePoints(CefPoint(0, 0), point, 3); CefRefPtr display = window->GetDisplay(); EXPECT_TRUE(display.get()); @@ -324,7 +324,7 @@ void RunWindowLayoutAndCoords(CefRefPtr window) { point = CefPoint(client_bounds_in_screen.x, client_bounds_in_screen.y); const auto pixels = CefDisplay::ConvertScreenPointToPixels(point); const auto dip = CefDisplay::ConvertScreenPointFromPixels(pixels); - EXPECT_EQ(point, dip); + ExpectClosePoints(point, dip, 1); } void WindowLayoutAndCoordsImpl(CefRefPtr event) { diff --git a/tools/make_distrib.py b/tools/make_distrib.py index 7b68fa41d..963167a49 100644 --- a/tools/make_distrib.py +++ b/tools/make_distrib.py @@ -1133,7 +1133,9 @@ elif platform == 'windows': sandbox_libs = [ 'obj\\base\\base.lib', 'obj\\base\\base_static.lib', + 'obj\\base\\third_party\\cityhash\\cityhash\\*.obj', 'obj\\base\\third_party\\double_conversion\\double_conversion.lib', + 'obj\\base\\third_party\\superfasthash\\superfasthash\\*.obj', 'obj\\base\\win\\pe_image.lib', cef_sandbox_lib, 'obj\\sandbox\\common\\*.obj',