diff --git a/CHROMIUM_BUILD_COMPATIBILITY.txt b/CHROMIUM_BUILD_COMPATIBILITY.txt index da8df990d..d2a7c4a08 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/130.0.6723.0' + 'chromium_checkout': 'refs/tags/131.0.6768.0' } diff --git a/include/cef_api_hash.h b/include/cef_api_hash.h index 955a45477..f7ede3c53 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 "0f72eb5c0deb1e48c1fd0ae0c41b28ed2f5a982b" +#define CEF_API_HASH_UNIVERSAL "c03f236dee7038722bce1e8587137769e4290ede" #if defined(OS_WIN) -#define CEF_API_HASH_PLATFORM "fc6006ffe5e37c2642b75e49e86d5697946181f2" +#define CEF_API_HASH_PLATFORM "105f106d66054db628e6de23af859c4559c8a15e" #elif defined(OS_MAC) -#define CEF_API_HASH_PLATFORM "e3d6ffd493f9e05aa201bdcedc602bbee1009f6d" +#define CEF_API_HASH_PLATFORM "5686d730d45e32899319dd79ecf2d6bf1aa7fdb1" #elif defined(OS_LINUX) -#define CEF_API_HASH_PLATFORM "bcb5ec16be5dcd38cf84cf7b0da93879fc21a0c3" +#define CEF_API_HASH_PLATFORM "eff187f603ff3cc18bde522f0d4f90c3c9ddc30e" #endif #ifdef __cplusplus diff --git a/include/internal/cef_types.h b/include/internal/cef_types.h index e24705c18..7e0410129 100644 --- a/include/internal/cef_types.h +++ b/include/internal/cef_types.h @@ -1070,7 +1070,7 @@ typedef enum { /// system state can't be recovered and will be unstable. CEF_RESULT_CODE_SYSTEM_RESOURCE_EXHAUSTED = 37, - CEF_RESULT_CODE_CHROME_LAST = 39, + CEF_RESULT_CODE_CHROME_LAST = 38, // The following values should be kept in sync with Chromium's // sandbox::TerminationCodes type. @@ -1101,6 +1101,9 @@ typedef enum { /// Windows sandbox failed to warmup. CEF_RESULT_CODE_SANDBOX_FATAL_WARMUP, + // Windows sandbox broker terminated in shutdown. + CEF_RESULT_CODE_SANDBOX_FATAL_BROKER_SHUTDOWN_HUNG, + CEF_RESULT_CODE_SANDBOX_FATAL_LAST, } cef_resultcode_t; @@ -2430,7 +2433,6 @@ typedef enum { DOM_FORM_CONTROL_TYPE_BUTTON_BUTTON, DOM_FORM_CONTROL_TYPE_BUTTON_SUBMIT, DOM_FORM_CONTROL_TYPE_BUTTON_RESET, - DOM_FORM_CONTROL_TYPE_BUTTON_SELECT_LIST, DOM_FORM_CONTROL_TYPE_BUTTON_POPOVER, DOM_FORM_CONTROL_TYPE_FIELDSET, DOM_FORM_CONTROL_TYPE_INPUT_BUTTON, @@ -2458,7 +2460,6 @@ typedef enum { DOM_FORM_CONTROL_TYPE_OUTPUT, DOM_FORM_CONTROL_TYPE_SELECT_ONE, DOM_FORM_CONTROL_TYPE_SELECT_MULTIPLE, - DOM_FORM_CONTROL_TYPE_SELECT_LIST, DOM_FORM_CONTROL_TYPE_TEXT_AREA, } cef_dom_form_control_type_t; @@ -3618,32 +3619,31 @@ typedef enum { /// typedef enum { CEF_PERMISSION_TYPE_NONE = 0, - CEF_PERMISSION_TYPE_ACCESSIBILITY_EVENTS = 1 << 0, - CEF_PERMISSION_TYPE_AR_SESSION = 1 << 1, - CEF_PERMISSION_TYPE_CAMERA_PAN_TILT_ZOOM = 1 << 2, - CEF_PERMISSION_TYPE_CAMERA_STREAM = 1 << 3, - CEF_PERMISSION_TYPE_CAPTURED_SURFACE_CONTROL = 1 << 4, - CEF_PERMISSION_TYPE_CLIPBOARD = 1 << 5, - CEF_PERMISSION_TYPE_TOP_LEVEL_STORAGE_ACCESS = 1 << 6, - CEF_PERMISSION_TYPE_DISK_QUOTA = 1 << 7, - CEF_PERMISSION_TYPE_LOCAL_FONTS = 1 << 8, - CEF_PERMISSION_TYPE_GEOLOCATION = 1 << 9, - 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_TYPE_AR_SESSION = 1 << 0, + CEF_PERMISSION_TYPE_CAMERA_PAN_TILT_ZOOM = 1 << 1, + CEF_PERMISSION_TYPE_CAMERA_STREAM = 1 << 2, + CEF_PERMISSION_TYPE_CAPTURED_SURFACE_CONTROL = 1 << 3, + CEF_PERMISSION_TYPE_CLIPBOARD = 1 << 4, + CEF_PERMISSION_TYPE_TOP_LEVEL_STORAGE_ACCESS = 1 << 5, + CEF_PERMISSION_TYPE_DISK_QUOTA = 1 << 6, + CEF_PERMISSION_TYPE_LOCAL_FONTS = 1 << 7, + CEF_PERMISSION_TYPE_GEOLOCATION = 1 << 8, + CEF_PERMISSION_TYPE_HAND_TRACKING = 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_WEB_APP_INSTALLATION = 1 << 22, + CEF_PERMISSION_TYPE_WINDOW_MANAGEMENT = 1 << 23, + CEF_PERMISSION_TYPE_FILE_SYSTEM_ACCESS = 1 << 24, } cef_permission_request_types_t; /// diff --git a/libcef/browser/alloy/alloy_browser_host_impl.cc b/libcef/browser/alloy/alloy_browser_host_impl.cc index 63d1ba47a..481e6facf 100644 --- a/libcef/browser/alloy/alloy_browser_host_impl.cc +++ b/libcef/browser/alloy/alloy_browser_host_impl.cc @@ -1337,14 +1337,15 @@ void AlloyBrowserHostImpl::AccessibilityEventReceived( } void AlloyBrowserHostImpl::AccessibilityLocationChangesReceived( - const std::vector& details) { + const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details) { // Only needed in windowless mode. if (IsWindowless()) { if (!web_contents() || !platform_delegate_) { return; } - platform_delegate_->AccessibilityLocationChangesReceived(details); + platform_delegate_->AccessibilityLocationChangesReceived(tree_id, details); } } diff --git a/libcef/browser/alloy/alloy_browser_host_impl.h b/libcef/browser/alloy/alloy_browser_host_impl.h index 6d3acc82e..de15ae05d 100644 --- a/libcef/browser/alloy/alloy_browser_host_impl.h +++ b/libcef/browser/alloy/alloy_browser_host_impl.h @@ -284,7 +284,8 @@ class AlloyBrowserHostImpl : public CefBrowserHostBase, void AccessibilityEventReceived( const ui::AXUpdatesAndEvents& details) override; void AccessibilityLocationChangesReceived( - const std::vector& details) override; + const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details) override; void WebContentsDestroyed() override; private: diff --git a/libcef/browser/browser_platform_delegate.cc b/libcef/browser/browser_platform_delegate.cc index 6d6ae2964..611ffbd74 100644 --- a/libcef/browser/browser_platform_delegate.cc +++ b/libcef/browser/browser_platform_delegate.cc @@ -482,7 +482,8 @@ void CefBrowserPlatformDelegate::AccessibilityEventReceived( } void CefBrowserPlatformDelegate::AccessibilityLocationChangesReceived( - const std::vector& details) { + const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details) { DCHECK(false); } diff --git a/libcef/browser/browser_platform_delegate.h b/libcef/browser/browser_platform_delegate.h index b238bc7fd..2cb32aa4e 100644 --- a/libcef/browser/browser_platform_delegate.h +++ b/libcef/browser/browser_platform_delegate.h @@ -57,7 +57,8 @@ struct NativeWebKeyboardEvent; } namespace ui { -struct AXLocationChanges; +class AXTreeID; +struct AXLocationAndScrollUpdates; struct AXUpdatesAndEvents; } // namespace ui @@ -352,7 +353,8 @@ class CefBrowserPlatformDelegate { virtual void AccessibilityEventReceived( const ui::AXUpdatesAndEvents& details); virtual void AccessibilityLocationChangesReceived( - const std::vector& details); + const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details); virtual gfx::Point GetDialogPosition(const gfx::Size& size); virtual gfx::Size GetMaximumDialogSize(); diff --git a/libcef/browser/chrome/chrome_content_browser_client_cef.cc b/libcef/browser/chrome/chrome_content_browser_client_cef.cc index 683f43fa3..1407d3394 100644 --- a/libcef/browser/chrome/chrome_content_browser_client_cef.cc +++ b/libcef/browser/chrome/chrome_content_browser_client_cef.cc @@ -138,7 +138,8 @@ void HandleExternalProtocolHelper( network::mojom::WebSandboxFlags sandbox_flags, const network::ResourceRequest& resource_request, const std::optional& initiating_origin, - content::WeakDocumentPtr initiator_document) { + content::WeakDocumentPtr initiator_document, + const net::IsolationInfo& isolation_info) { // May return nullptr if frame has been deleted or a cross-document navigation // has committed in the same RenderFrameHost. auto initiator_rfh = initiator_document.AsRenderFrameHostIfValid(); @@ -154,7 +155,7 @@ void HandleExternalProtocolHelper( sandbox_flags, static_cast(resource_request.transition_type), resource_request.has_user_gesture, initiating_origin, initiator_rfh, - nullptr); + isolation_info, nullptr); } } // namespace @@ -199,14 +200,14 @@ void ChromeContentBrowserClientCef::AppendExtraCommandLineSwitches( // associated values) if present in the browser command line. static const char* const kSwitchNames[] = { #if BUILDFLAG(IS_MAC) - switches::kFrameworkDirPath, - switches::kMainBundlePath, + switches::kFrameworkDirPath, + switches::kMainBundlePath, #endif - switches::kLocalesDirPath, - switches::kLogItems, - switches::kLogSeverity, - switches::kResourcesDirPath, - switches::kUserAgentProductAndVersion, + switches::kLocalesDirPath, + switches::kLogItems, + switches::kLogSeverity, + switches::kResourcesDirPath, + switches::kUserAgentProductAndVersion, }; command_line->CopySwitchesFrom(*browser_cmd, kSwitchNames); } @@ -490,6 +491,7 @@ bool ChromeContentBrowserClientCef::HandleExternalProtocol( bool has_user_gesture, const std::optional& initiating_origin, content::RenderFrameHost* initiator_document, + const net::IsolationInfo& isolation_info, mojo::PendingRemote* out_factory) { // |out_factory| will be non-nullptr when this method is initially called // from NavigationURLLoaderImpl::PrepareForNonInterceptedRequest. @@ -505,7 +507,7 @@ bool ChromeContentBrowserClientCef::HandleExternalProtocol( url, web_contents_getter, frame_tree_node_id, navigation_data, is_primary_main_frame, is_in_fenced_frame_tree, sandbox_flags, page_transition, has_user_gesture, initiating_origin, initiator_document, - nullptr); + isolation_info, nullptr); } bool ChromeContentBrowserClientCef::HandleExternalProtocol( @@ -515,9 +517,10 @@ bool ChromeContentBrowserClientCef::HandleExternalProtocol( bool is_primary_main_frame, bool is_in_fenced_frame_tree, network::mojom::WebSandboxFlags sandbox_flags, - const network::ResourceRequest& resource_request, + const network::ResourceRequest& request, const std::optional& initiating_origin, content::RenderFrameHost* initiator_document, + const net::IsolationInfo& isolation_info, mojo::PendingRemote* out_factory) { mojo::PendingReceiver receiver = out_factory->InitWithNewPipeAndPassReceiver(); @@ -528,13 +531,13 @@ bool ChromeContentBrowserClientCef::HandleExternalProtocol( // HandleExternalProtocolHelper may be called if nothing handles the request. auto request_handler = net_service::CreateInterceptedRequestHandler( - web_contents_getter, frame_tree_node_id, resource_request, + web_contents_getter, frame_tree_node_id, request, base::BindRepeating(HandleExternalProtocolHelper, base::Unretained(this), web_contents_getter, frame_tree_node_id, navigation_data, is_primary_main_frame, - is_in_fenced_frame_tree, sandbox_flags, - resource_request, initiating_origin, - std::move(weak_initiator_document))); + is_in_fenced_frame_tree, sandbox_flags, request, + initiating_origin, std::move(weak_initiator_document), + isolation_info)); net_service::ProxyURLLoaderFactory::CreateProxy( web_contents_getter, std::move(receiver), std::move(request_handler)); @@ -583,7 +586,8 @@ ChromeContentBrowserClientCef::CreateLoginDelegate( content::WebContents* web_contents, content::BrowserContext* browser_context, const content::GlobalRequestID& request_id, - bool is_request_for_main_frame, + bool is_request_for_primary_main_frame, + bool is_request_for_navigation, const GURL& url, scoped_refptr response_headers, bool first_auth_attempt, @@ -599,8 +603,8 @@ ChromeContentBrowserClientCef::CreateLoginDelegate( return ChromeContentBrowserClient::CreateLoginDelegate( auth_info, web_contents, browser_context, request_id, - is_request_for_main_frame, url, response_headers, first_auth_attempt, - std::move(auth_required_callback)); + is_request_for_primary_main_frame, is_request_for_navigation, url, + response_headers, first_auth_attempt, std::move(auth_required_callback)); } void ChromeContentBrowserClientCef::ExposeInterfacesToRenderer( diff --git a/libcef/browser/chrome/chrome_content_browser_client_cef.h b/libcef/browser/chrome/chrome_content_browser_client_cef.h index d09ccca65..9163b6ce1 100644 --- a/libcef/browser/chrome/chrome_content_browser_client_cef.h +++ b/libcef/browser/chrome/chrome_content_browser_client_cef.h @@ -94,6 +94,7 @@ class ChromeContentBrowserClientCef : public ChromeContentBrowserClient { bool has_user_gesture, const std::optional& initiating_origin, content::RenderFrameHost* initiator_document, + const net::IsolationInfo& isolation_info, mojo::PendingRemote* out_factory) override; bool HandleExternalProtocol( @@ -106,6 +107,7 @@ class ChromeContentBrowserClientCef : public ChromeContentBrowserClient { const network::ResourceRequest& request, const std::optional& initiating_origin, content::RenderFrameHost* initiator_document, + const net::IsolationInfo& isolation_info, mojo::PendingRemote* out_factory) override; std::vector> @@ -123,7 +125,8 @@ class ChromeContentBrowserClientCef : public ChromeContentBrowserClient { content::WebContents* web_contents, content::BrowserContext* browser_context, const content::GlobalRequestID& request_id, - bool is_request_for_main_frame, + bool is_request_for_primary_main_frame, + bool is_request_for_navigation, const GURL& url, scoped_refptr response_headers, bool first_auth_attempt, diff --git a/libcef/browser/osr/browser_platform_delegate_osr.cc b/libcef/browser/osr/browser_platform_delegate_osr.cc index 57a152026..44e49530f 100644 --- a/libcef/browser/osr/browser_platform_delegate_osr.cc +++ b/libcef/browser/osr/browser_platform_delegate_osr.cc @@ -626,28 +626,22 @@ void CefBrowserPlatformDelegateOsr::DragSourceSystemDragEnded() { void CefBrowserPlatformDelegateOsr::AccessibilityEventReceived( const ui::AXUpdatesAndEvents& details) { - CefRefPtr handler = browser_->client()->GetRenderHandler(); - if (handler.get()) { - CefRefPtr acchandler = - handler->GetAccessibilityHandler(); - - if (acchandler.get()) { - acchandler->OnAccessibilityTreeChange( + if (auto handler = browser_->client()->GetRenderHandler()) { + if (auto acc_handler = handler->GetAccessibilityHandler()) { + acc_handler->OnAccessibilityTreeChange( osr_accessibility_util::ParseAccessibilityEventData(details)); } } } void CefBrowserPlatformDelegateOsr::AccessibilityLocationChangesReceived( - const std::vector& details) { - CefRefPtr handler = browser_->client()->GetRenderHandler(); - if (handler.get()) { - CefRefPtr acchandler = - handler->GetAccessibilityHandler(); - - if (acchandler.get()) { - acchandler->OnAccessibilityLocationChange( - osr_accessibility_util::ParseAccessibilityLocationData(details)); + const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details) { + if (auto handler = browser_->client()->GetRenderHandler()) { + if (auto acc_handler = handler->GetAccessibilityHandler()) { + acc_handler->OnAccessibilityLocationChange( + osr_accessibility_util::ParseAccessibilityLocationData(tree_id, + details)); } } } diff --git a/libcef/browser/osr/browser_platform_delegate_osr.h b/libcef/browser/osr/browser_platform_delegate_osr.h index 5d0151361..cdc84ed35 100644 --- a/libcef/browser/osr/browser_platform_delegate_osr.h +++ b/libcef/browser/osr/browser_platform_delegate_osr.h @@ -89,7 +89,8 @@ class CefBrowserPlatformDelegateOsr void AccessibilityEventReceived( const ui::AXUpdatesAndEvents& details) override; void AccessibilityLocationChangesReceived( - const std::vector& details) override; + const ui::AXTreeID& tree_id, + ui::AXLocationAndScrollUpdates& details) override; // CefBrowserPlatformDelegateNative::WindowlessHandler methods: CefWindowHandle GetParentWindowHandle() const override; diff --git a/libcef/browser/osr/osr_accessibility_util.cc b/libcef/browser/osr/osr_accessibility_util.cc index 45370c005..a16a2ae83 100644 --- a/libcef/browser/osr/osr_accessibility_util.cc +++ b/libcef/browser/osr/osr_accessibility_util.cc @@ -14,7 +14,9 @@ #include "base/strings/stringprintf.h" #include "ui/accessibility/ax_enum_util.h" #include "ui/accessibility/ax_enums.mojom.h" +#include "ui/accessibility/ax_location_and_scroll_updates.h" #include "ui/accessibility/ax_text_utils.h" +#include "ui/accessibility/ax_tree_id.h" #include "ui/accessibility/ax_tree_update.h" #include "ui/accessibility/ax_updates_and_events.h" #include "ui/gfx/geometry/transform.h" @@ -235,6 +237,11 @@ struct PopulateAxNodeAttributes { attributes->SetString(ToString(attr.first), ToString(state)); } } break; + case ax::mojom::IntAttribute::kDetailsFrom: { + attributes->SetString( + ToString(attr.first), + ToString(static_cast(attr.second))); + } break; case ax::mojom::IntAttribute::kAriaCellColumnSpan: case ax::mojom::IntAttribute::kAriaCellRowSpan: case ax::mojom::IntAttribute::kImageAnnotationStatus: { @@ -525,15 +532,16 @@ CefRefPtr ToCefValue(const ui::AXRelativeBounds& location) { } // Convert AXLocationChangeNotificationDetails to CefDictionaryValue. -CefRefPtr ToCefValue(const ui::AXLocationChanges& locData) { +CefRefPtr ToCefValue(const ui::AXTreeID& tree_id, + const ui::AXLocationChange& locData) { CefRefPtr value = CefDictionaryValue::Create(); if (locData.id != -1) { value->SetInt("id", locData.id); } - if (!locData.ax_tree_id.ToString().empty()) { - value->SetString("ax_tree_id", locData.ax_tree_id.ToString()); + if (auto ax_tree_id = tree_id.ToString(); !ax_tree_id.empty()) { + value->SetString("ax_tree_id", ax_tree_id); } value->SetDictionary("new_location", ToCefValue(locData.new_location)); @@ -541,6 +549,16 @@ CefRefPtr ToCefValue(const ui::AXLocationChanges& locData) { return value; } +CefRefPtr ToCefValue( + const ui::AXTreeID& tree_id, + const std::vector& location_changes) { + CefRefPtr value = CefListValue::Create(); + for (size_t i = 0; i < location_changes.size(); i++) { + value->SetDictionary(i, ToCefValue(tree_id, location_changes[i])); + } + return value; +} + template CefRefPtr ToCefValue(const std::vector& vecData) { CefRefPtr value = CefListValue::Create(); @@ -564,9 +582,10 @@ CefRefPtr ParseAccessibilityEventData( } CefRefPtr ParseAccessibilityLocationData( - const std::vector& details) { + const ui::AXTreeID& tree_id, + const ui::AXLocationAndScrollUpdates& details) { CefRefPtr value = CefValue::Create(); - value->SetList(ToCefValue(details)); + value->SetList(ToCefValue(tree_id, details.location_changes)); return value; } diff --git a/libcef/browser/osr/osr_accessibility_util.h b/libcef/browser/osr/osr_accessibility_util.h index 290cf510d..4f51abf07 100644 --- a/libcef/browser/osr/osr_accessibility_util.h +++ b/libcef/browser/osr/osr_accessibility_util.h @@ -11,8 +11,9 @@ #include "cef/include/cef_values.h" namespace ui { -struct AXLocationChanges; +struct AXLocationAndScrollUpdates; struct AXUpdatesAndEvents; +class AXTreeID; } // namespace ui namespace osr_accessibility_util { @@ -23,7 +24,8 @@ CefRefPtr ParseAccessibilityEventData( const ui::AXUpdatesAndEvents& details); CefRefPtr ParseAccessibilityLocationData( - const std::vector& details); + const ui::AXTreeID& tree_id, + const ui::AXLocationAndScrollUpdates& details); } // namespace osr_accessibility_util diff --git a/libcef/browser/osr/render_widget_host_view_osr.cc b/libcef/browser/osr/render_widget_host_view_osr.cc index 01cd0549f..11b63c2f0 100644 --- a/libcef/browser/osr/render_widget_host_view_osr.cc +++ b/libcef/browser/osr/render_widget_host_view_osr.cc @@ -968,8 +968,8 @@ bool CefRenderWidgetHostViewOSR::TransformPointToCoordSpaceForView( return true; } - return target_view->TransformPointToLocalCoordSpace( - point, GetCurrentSurfaceId(), transformed_point); + return target_view->TransformPointToLocalCoordSpace(point, GetFrameSinkId(), + transformed_point); } void CefRenderWidgetHostViewOSR::DidNavigate() { diff --git a/libcef/browser/permission_prompt.cc b/libcef/browser/permission_prompt.cc index 46bc28c1f..1a3e0f08d 100644 --- a/libcef/browser/permission_prompt.cc +++ b/libcef/browser/permission_prompt.cc @@ -190,8 +190,6 @@ void ExecuteResult(CefRefPtr browser, cef_permission_request_types_t GetCefRequestType( permissions::RequestType type) { switch (type) { - case permissions::RequestType::kAccessibilityEvents: - return CEF_PERMISSION_TYPE_ACCESSIBILITY_EVENTS; case permissions::RequestType::kArSession: return CEF_PERMISSION_TYPE_AR_SESSION; case permissions::RequestType::kCameraPanTiltZoom: diff --git a/libcef/browser/views/window_view.cc b/libcef/browser/views/window_view.cc index 28fba57bd..849660434 100644 --- a/libcef/browser/views/window_view.cc +++ b/libcef/browser/views/window_view.cc @@ -453,22 +453,22 @@ void CefWindowView::CreateWidget(gfx::AcceleratedWidget parent_widget) { const auto show_state = cef_delegate()->GetInitialShowState(cef_window); switch (show_state) { case CEF_SHOW_STATE_NORMAL: - params.show_state = ui::SHOW_STATE_NORMAL; + params.show_state = ui::mojom::WindowShowState::kNormal; break; case CEF_SHOW_STATE_MINIMIZED: - params.show_state = ui::SHOW_STATE_MINIMIZED; + params.show_state = ui::mojom::WindowShowState::kMinimized; break; case CEF_SHOW_STATE_MAXIMIZED: - params.show_state = ui::SHOW_STATE_MAXIMIZED; + params.show_state = ui::mojom::WindowShowState::kMaximized; break; case CEF_SHOW_STATE_FULLSCREEN: - params.show_state = ui::SHOW_STATE_FULLSCREEN; + params.show_state = ui::mojom::WindowShowState::kFullscreen; break; case CEF_SHOW_STATE_HIDDEN: #if BUILDFLAG(IS_MAC) - params.show_state = ui::SHOW_STATE_HIDDEN; + params.show_state = ui::mojom::WindowShowState::kHidden; #else - params.show_state = ui::SHOW_STATE_MINIMIZED; + params.show_state = ui::mojom::WindowShowState::kMinimized; #endif break; } diff --git a/libcef/common/crash_reporter_client.cc b/libcef/common/crash_reporter_client.cc index d7f6dbba1..c6d91d258 100644 --- a/libcef/common/crash_reporter_client.cc +++ b/libcef/common/crash_reporter_client.cc @@ -581,7 +581,7 @@ void CefCrashReporterClient::InitializeCrashReportingForProcess() { return; } - std::wstring process_type = install_static::GetSwitchValueFromCommandLine( + std::wstring process_type = install_static::GetCommandLineSwitchValue( ::GetCommandLineW(), install_static::kProcessType); if (process_type != install_static::kCrashpadHandler) { crash_reporter::SetCrashReporterClient(g_crash_reporter_client); diff --git a/libcef/common/parser_impl.cc b/libcef/common/parser_impl.cc index 910ab1cb8..6f6c3eb73 100644 --- a/libcef/common/parser_impl.cc +++ b/libcef/common/parser_impl.cc @@ -117,12 +117,10 @@ CefString CefGetMimeType(const CefString& extension) { void CefGetExtensionsForMimeType(const CefString& mime_type, std::vector& extensions) { - using VectorType = std::vector; - VectorType ext; - net::GetExtensionsForMimeType(mime_type, &ext); - VectorType::const_iterator it = ext.begin(); - for (; it != ext.end(); ++it) { - extensions.push_back(*it); + std::vector buffer; + net::GetExtensionsForMimeType(mime_type.ToString(), &buffer); + for (const auto& extension : buffer) { + extensions.push_back(extension); } } diff --git a/libcef/renderer/dom_node_impl.cc b/libcef/renderer/dom_node_impl.cc index 7aaf45392..457938d7b 100644 --- a/libcef/renderer/dom_node_impl.cc +++ b/libcef/renderer/dom_node_impl.cc @@ -41,8 +41,6 @@ cef_dom_form_control_type_t GetCefFormControlType(FormControlType type) { return DOM_FORM_CONTROL_TYPE_BUTTON_SUBMIT; case FormControlType::kButtonReset: return DOM_FORM_CONTROL_TYPE_BUTTON_RESET; - case FormControlType::kButtonSelectList: - return DOM_FORM_CONTROL_TYPE_BUTTON_SELECT_LIST; case FormControlType::kButtonPopover: return DOM_FORM_CONTROL_TYPE_BUTTON_POPOVER; case FormControlType::kFieldset: @@ -97,8 +95,6 @@ cef_dom_form_control_type_t GetCefFormControlType(FormControlType type) { return DOM_FORM_CONTROL_TYPE_SELECT_ONE; case FormControlType::kSelectMultiple: return DOM_FORM_CONTROL_TYPE_SELECT_MULTIPLE; - case FormControlType::kSelectList: - return DOM_FORM_CONTROL_TYPE_SELECT_LIST; case FormControlType::kTextArea: return DOM_FORM_CONTROL_TYPE_TEXT_AREA; } diff --git a/patch/patch.cfg b/patch/patch.cfg index ef00cbdbb..dfe142f51 100644 --- a/patch/patch.cfg +++ b/patch/patch.cfg @@ -732,16 +732,5 @@ patches = [ # linux: Fix cannot allocate memory in static TLS block in dlopen libcef.so # https://github.com/chromiumembedded/cef/issues/3616 'name': 'third_party_sentencepiece_3616' - }, - { - # win: Add missing include for cef_sandbox build. - # https://chromium-review.googlesource.com/c/chromium/src/+/5891459 - 'name': 'win_base_pa_oom_5891459' - }, - { - # Fix dangling RenderProcessHost ptr in RenderProcessHostTaskProvider. - # https://github.com/chromiumembedded/cef/issues/3758 - # https://chromium-review.googlesource.com/c/chromium/src/+/5894650 - 'name': 'chrome_browser_task_manager_5894650' } ] diff --git a/patch/patches/base_sandbox_2743.patch b/patch/patches/base_sandbox_2743.patch index 66c9b3486..f64809304 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 d6dbc2c38b401..0e0a5cc086291 100644 +index 91b6fad048440..ead9819a9dfc6 100644 --- base/BUILD.gn +++ base/BUILD.gn @@ -41,6 +41,7 @@ import("//build/nocompile.gni") @@ -10,7 +10,7 @@ index d6dbc2c38b401..0e0a5cc086291 100644 import("//testing/libfuzzer/fuzzer_test.gni") import("//testing/test.gni") -@@ -1507,7 +1508,11 @@ component("base") { +@@ -1503,7 +1504,11 @@ component("base") { "hash/md5_constexpr_internal.h", "hash/sha1.h", ] @@ -23,7 +23,7 @@ index d6dbc2c38b401..0e0a5cc086291 100644 sources += [ "hash/md5_nacl.cc", "hash/md5_nacl.h", -@@ -1932,6 +1937,12 @@ component("base") { +@@ -1928,6 +1933,12 @@ component("base") { defines += [ "COM_INIT_CHECK_HOOK_DISABLED" ] } @@ -37,7 +37,7 @@ index d6dbc2c38b401..0e0a5cc086291 100644 "cfgmgr32.lib", "ntdll.lib", diff --git base/allocator/dispatcher/dispatcher.cc base/allocator/dispatcher/dispatcher.cc -index 3e47d1f5d35df..004eefac8bbf3 100644 +index 3dd632a89dc90..a64cd61ddb02b 100644 --- base/allocator/dispatcher/dispatcher.cc +++ base/allocator/dispatcher/dispatcher.cc @@ -8,6 +8,7 @@ @@ -54,7 +54,7 @@ index 3e47d1f5d35df..004eefac8bbf3 100644 void Reset() { -#if DCHECK_IS_ON() +#if DCHECK_IS_ON() && !BUILDFLAG(IS_CEF_SANDBOX_BUILD) - DCHECK([&]() { + DCHECK([&] { auto const was_set = is_initialized_check_flag_.test_and_set(); is_initialized_check_flag_.clear(); diff --git base/hash/md5.h base/hash/md5.h @@ -73,7 +73,7 @@ index 215d636fec275..922e88f31b999 100644 #else #include "base/hash/md5_boringssl.h" diff --git base/hash/sha1.h base/hash/sha1.h -index 857159d757637..63b5b396a00dd 100644 +index 2158b648ca58a..8a8cb13b2fd74 100644 --- base/hash/sha1.h +++ base/hash/sha1.h @@ -15,7 +15,9 @@ diff --git a/patch/patches/base_test_4396276.patch b/patch/patches/base_test_4396276.patch index 5229451ea..cf4f917d6 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 d26f4d09dd3dd..155814bff8425 100644 +index c37ba6534270c..e1a9443a746cd 100644 --- base/test/BUILD.gn +++ base/test/BUILD.gn @@ -199,11 +199,6 @@ static_library("test_support") { @@ -14,7 +14,7 @@ index d26f4d09dd3dd..155814bff8425 100644 deps += [ ":amalgamated_perfetto_sql_stdlib", ":gen_cc_chrome_track_event_descriptor", -@@ -596,7 +591,7 @@ if (enable_base_tracing) { +@@ -597,7 +592,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 d26f4d09dd3dd..155814bff8425 100644 if (is_ios) { _target_type = "ios_framework_bundle" } -@@ -605,6 +600,8 @@ if (enable_base_tracing) { +@@ -606,6 +601,8 @@ if (enable_base_tracing) { defines = [ "TEST_TRACE_PROCESSOR_IMPL" ] testonly = true sources = [ @@ -32,7 +32,7 @@ index d26f4d09dd3dd..155814bff8425 100644 "test_trace_processor_export.h", "test_trace_processor_impl.cc", "test_trace_processor_impl.h", -@@ -622,33 +619,6 @@ if (enable_base_tracing) { +@@ -623,33 +620,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 67a897af9cee3..f48b22d8f2e00 100644 +index ff1d38784abeb..2a29a80a19551 100644 --- content/shell/BUILD.gn +++ content/shell/BUILD.gn -@@ -912,7 +912,6 @@ if (is_mac) { +@@ -911,7 +911,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/browser_security_policy_1081397.patch b/patch/patches/browser_security_policy_1081397.patch index 3abcab06c..a09d3447b 100644 --- a/patch/patches/browser_security_policy_1081397.patch +++ b/patch/patches/browser_security_policy_1081397.patch @@ -1,30 +1,29 @@ diff --git content/browser/child_process_security_policy_impl.cc content/browser/child_process_security_policy_impl.cc -index 1bf903af89b3c..5471355376272 100644 +index eae60792ce033..6f6641e3fd3dd 100644 --- content/browser/child_process_security_policy_impl.cc +++ content/browser/child_process_security_policy_impl.cc -@@ -2084,6 +2084,17 @@ bool ChildProcessSecurityPolicyImpl::CanAccessMaybeOpaqueOrigin( - // DeclarativeApiTest.PersistRules. - if (actual_process_lock.matches_scheme(url::kDataScheme)) - return true; +@@ -2043,6 +2043,16 @@ bool ChildProcessSecurityPolicyImpl::PerformJailAndCitadelChecks( + if (actual_process_lock.matches_scheme(url::kDataScheme)) { + return true; + } + -+ // Allow other schemes that are non-standard, non-local and WebSafe. -+ if (lock_url.is_valid() && !lock_url.IsStandard() && -+ !base::Contains(url::GetLocalSchemes(), -+ lock_url.scheme_piece())) { -+ base::AutoLock schemes_lock(schemes_lock_); -+ if (base::Contains(schemes_okay_to_request_in_any_process_, -+ lock_url.scheme())) { -+ return true; -+ } -+ } - } ++ // Allow other schemes that are non-standard, non-local and WebSafe. ++ if (lock_url.is_valid() && !lock_url.IsStandard() && ++ !base::Contains(url::GetLocalSchemes(), lock_url.scheme_piece())) { ++ base::AutoLock schemes_lock(schemes_lock_); ++ if (base::Contains(schemes_okay_to_request_in_any_process_, ++ lock_url.scheme())) { ++ return true; ++ } ++ } + } - // Make an exception to allow most visited tiles to commit in + // Make an exception to allow most visited tiles to commit in third-party diff --git content/browser/renderer_host/navigation_request.cc content/browser/renderer_host/navigation_request.cc -index e6b11183c78bd..e6082d8873a0b 100644 +index 16784489df658..1d89a64a98b19 100644 --- content/browser/renderer_host/navigation_request.cc +++ content/browser/renderer_host/navigation_request.cc -@@ -8210,10 +8210,22 @@ NavigationRequest::GetOriginForURLLoaderFactoryBeforeResponseWithDebugInfo( +@@ -8237,10 +8237,22 @@ NavigationRequest::GetOriginForURLLoaderFactoryBeforeResponseWithDebugInfo( bool use_opaque_origin = (sandbox_flags & network::mojom::WebSandboxFlags::kOrigin) == network::mojom::WebSandboxFlags::kOrigin; @@ -48,7 +47,7 @@ index e6b11183c78bd..e6082d8873a0b 100644 } return origin_and_debug_info; -@@ -8321,6 +8333,15 @@ NavigationRequest::GetOriginForURLLoaderFactoryAfterResponseWithDebugInfo() { +@@ -8348,11 +8360,20 @@ NavigationRequest::GetOriginForURLLoaderFactoryAfterResponseWithDebugInfo() { DetermineInitiatorRelationship(initiator_rfh, frame_tree_node_->current_frame_host())); @@ -63,4 +62,11 @@ index e6b11183c78bd..e6082d8873a0b 100644 + // MHTML documents should commit as an opaque origin. They should not be able // to make network request on behalf of the real origin. - DCHECK(!IsMhtmlOrSubframe() || origin_with_debug_info.first.opaque()); + // TODO(crbug.com/370979008): Migrate to CHECK. +- DUMP_WILL_BE_CHECK(!IsMhtmlOrSubframe() || +- origin_with_debug_info.first.opaque()); ++ // DUMP_WILL_BE_CHECK(!IsMhtmlOrSubframe() || ++ // origin_with_debug_info.first.opaque()); + + // If the target of this navigation will be rendered in a RenderFrameHost, + // then verify that the chosen origin is allowed to be accessed from that diff --git a/patch/patches/build.patch b/patch/patches/build.patch index e6cabf164..21aa4419d 100644 --- a/patch/patches/build.patch +++ b/patch/patches/build.patch @@ -1,8 +1,8 @@ diff --git build/config/compiler/BUILD.gn build/config/compiler/BUILD.gn -index 5ec7492e06838..b22b50e8f175d 100644 +index 1c3802fa1b580..48e8316090fe6 100644 --- build/config/compiler/BUILD.gn +++ build/config/compiler/BUILD.gn -@@ -134,6 +134,9 @@ declare_args() { +@@ -133,6 +133,9 @@ declare_args() { # The cache can lead to non-determinism: https://crbug.com/1486045 thin_lto_enable_cache = true @@ -12,7 +12,7 @@ index 5ec7492e06838..b22b50e8f175d 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, -@@ -2267,11 +2270,13 @@ config("export_dynamic") { +@@ -2263,11 +2266,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 cd39f3d65..4f25db665 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 dd5c9db43d693..9a158633310fc 100644 +index 23e21f1ff0771..47df752caa9fb 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 dd5c9db43d693..9a158633310fc 100644 import("//chrome/browser/buildflags.gni") import("//chrome/browser/downgrade/buildflags.gni") import("//chrome/browser/request_header_integrity/buildflags.gni") -@@ -1880,6 +1881,7 @@ static_library("browser") { +@@ -1855,6 +1856,7 @@ static_library("browser") { "//build/config/chromebox_for_meetings:buildflags", "//build/config/compiler:compiler_buildflags", "//cc", @@ -18,7 +18,7 @@ index dd5c9db43d693..9a158633310fc 100644 "//chrome:extra_resources", "//chrome:resources", "//chrome:strings", -@@ -2524,6 +2526,10 @@ static_library("browser") { +@@ -2525,6 +2527,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 2820eabd4..3662321af 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 4de58876a9947..d1b0319482293 100644 +index 1c3e30115e006..c9b25fce563e6 100644 --- chrome/browser/browser_process_impl.cc +++ chrome/browser/browser_process_impl.cc -@@ -1141,18 +1141,14 @@ DownloadRequestLimiter* BrowserProcessImpl::download_request_limiter() { +@@ -1142,18 +1142,14 @@ DownloadRequestLimiter* BrowserProcessImpl::download_request_limiter() { return download_request_limiter_.get(); } diff --git a/patch/patches/chrome_browser_browser.patch b/patch/patches/chrome_browser_browser.patch index 73ffb8cd8..4430ac920 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 b4a11f0509df7..04f615abc4404 100644 +index 2900434a50cf1..a2e8c6161ced2 100644 --- chrome/browser/devtools/devtools_window.cc +++ chrome/browser/devtools/devtools_window.cc @@ -38,6 +38,7 @@ @@ -24,7 +24,7 @@ index b4a11f0509df7..04f615abc4404 100644 #include "chrome/browser/ui/browser_list.h" #include "chrome/browser/ui/browser_tabstrip.h" #include "chrome/browser/ui/browser_window.h" -@@ -1223,6 +1224,13 @@ DevToolsWindow* DevToolsWindow::Create( +@@ -1230,6 +1231,13 @@ DevToolsWindow* DevToolsWindow::Create( !browser->is_type_normal()) { can_dock = false; } @@ -38,7 +38,7 @@ index b4a11f0509df7..04f615abc4404 100644 } // Create WebContents with devtools. -@@ -1687,9 +1695,13 @@ void DevToolsWindow::OpenInNewTab(const GURL& url) { +@@ -1691,9 +1699,13 @@ void DevToolsWindow::OpenInNewTab(const GURL& url) { if (!inspected_web_contents || !inspected_web_contents->OpenURL(params, /*navigation_handle_callback=*/{})) { @@ -52,7 +52,7 @@ index b4a11f0509df7..04f615abc4404 100644 } } -@@ -1852,12 +1864,28 @@ void DevToolsWindow::CreateDevToolsBrowser() { +@@ -1856,12 +1868,28 @@ void DevToolsWindow::CreateDevToolsBrowser() { Browser::CreationStatus::kOk) { return; } @@ -88,7 +88,7 @@ index b4a11f0509df7..04f615abc4404 100644 } diff --git chrome/browser/ui/BUILD.gn chrome/browser/ui/BUILD.gn -index bc6e4008f2c5a..b8db5a4b59095 100644 +index f4a53774c709f..e12292ce25360 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 bc6e4008f2c5a..b8db5a4b59095 100644 import("//chrome/browser/buildflags.gni") import("//chrome/common/features.gni") import("//chromeos/ash/components/assistant/assistant.gni") -@@ -354,6 +355,10 @@ static_library("ui") { +@@ -311,6 +312,10 @@ static_library("ui") { "//build/config/compiler:wexit_time_destructors", ] @@ -110,7 +110,7 @@ index bc6e4008f2c5a..b8db5a4b59095 100644 public_deps = [ # WARNING WARNING WARNING # New dependencies outside of //chrome/browser should be added to -@@ -379,6 +384,7 @@ static_library("ui") { +@@ -337,6 +342,7 @@ static_library("ui") { "//build:chromeos_buildflags", "//build/config/chromebox_for_meetings:buildflags", "//cc/paint", @@ -118,7 +118,7 @@ index bc6e4008f2c5a..b8db5a4b59095 100644 "//chrome:resources", "//chrome:strings", "//chrome/app:chrome_dll_resources", -@@ -717,6 +723,10 @@ static_library("ui") { +@@ -692,6 +698,10 @@ static_library("ui") { deps += [ "//components/plus_addresses/resources:vector_icons" ] } @@ -129,7 +129,7 @@ index bc6e4008f2c5a..b8db5a4b59095 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. -@@ -5788,6 +5798,7 @@ static_library("ui") { +@@ -5505,6 +5515,7 @@ static_library("ui") { if (enable_printing) { deps += [ "//components/printing/browser", @@ -138,10 +138,10 @@ index bc6e4008f2c5a..b8db5a4b59095 100644 ] } diff --git chrome/browser/ui/browser.cc chrome/browser/ui/browser.cc -index e1ebde9b491c3..ce2a8d8a79747 100644 +index ccbe26ac35c30..a98e48ca874e1 100644 --- chrome/browser/ui/browser.cc +++ chrome/browser/ui/browser.cc -@@ -272,6 +272,25 @@ +@@ -273,6 +273,25 @@ #include "components/captive_portal/content/captive_portal_tab_helper.h" #endif @@ -178,7 +178,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 tab_strip_model_delegate_( std::make_unique(this)), tab_strip_model_(std::make_unique( -@@ -763,6 +786,12 @@ Browser::~Browser() { +@@ -767,6 +790,12 @@ Browser::~Browser() { // away so they don't try and call back to us. if (select_file_dialog_.get()) select_file_dialog_->ListenerDestroyed(); @@ -191,7 +191,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 } /////////////////////////////////////////////////////////////////////////////// -@@ -1305,6 +1334,8 @@ void Browser::WindowFullscreenStateChanged() { +@@ -1318,6 +1347,8 @@ void Browser::WindowFullscreenStateChanged() { ->WindowFullscreenStateChanged(); command_controller_->FullscreenStateChanged(); UpdateBookmarkBarState(BOOKMARK_BAR_STATE_CHANGE_TOGGLE_FULLSCREEN); @@ -200,7 +200,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 } void Browser::FullscreenTopUIStateChanged() { -@@ -1635,6 +1666,14 @@ content::KeyboardEventProcessingResult Browser::PreHandleKeyboardEvent( +@@ -1648,6 +1679,14 @@ content::KeyboardEventProcessingResult Browser::PreHandleKeyboardEvent( if (exclusive_access_manager_->HandleUserKeyEvent(event)) return content::KeyboardEventProcessingResult::HANDLED; @@ -215,7 +215,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 return window()->PreHandleKeyboardEvent(event); } -@@ -1642,8 +1681,18 @@ bool Browser::HandleKeyboardEvent(content::WebContents* source, +@@ -1655,8 +1694,18 @@ bool Browser::HandleKeyboardEvent(content::WebContents* source, const NativeWebKeyboardEvent& event) { DevToolsWindow* devtools_window = DevToolsWindow::GetInstanceForInspectedWebContents(source); @@ -236,7 +236,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 } bool Browser::TabsNeedBeforeUnloadFired() const { -@@ -1798,6 +1847,14 @@ WebContents* Browser::OpenURLFromTab( +@@ -1811,6 +1860,14 @@ WebContents* Browser::OpenURLFromTab( std::move(navigation_handle_callback)); } @@ -251,7 +251,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 NavigateParams nav_params(this, params.url, params.transition); nav_params.FillNavigateParamsFromOpenURLParams(params); nav_params.source_contents = source; -@@ -1964,6 +2021,8 @@ void Browser::LoadingStateChanged(WebContents* source, +@@ -1977,6 +2034,8 @@ void Browser::LoadingStateChanged(WebContents* source, bool should_show_loading_ui) { ScheduleUIUpdate(source, content::INVALIDATE_TYPE_LOAD); UpdateWindowForLoadingStateChanged(source, should_show_loading_ui); @@ -260,7 +260,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 } void Browser::CloseContents(WebContents* source) { -@@ -1992,6 +2051,8 @@ void Browser::SetContentsBounds(WebContents* source, const gfx::Rect& bounds) { +@@ -2005,6 +2064,8 @@ void Browser::SetContentsBounds(WebContents* source, const gfx::Rect& bounds) { } void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { @@ -269,7 +269,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 if (!GetStatusBubble()) return; -@@ -1999,6 +2060,17 @@ void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { +@@ -2012,6 +2073,17 @@ void Browser::UpdateTargetURL(WebContents* source, const GURL& url) { GetStatusBubble()->SetURL(url); } @@ -287,7 +287,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 void Browser::ContentsMouseEvent(WebContents* source, const ui::Event& event) { const ui::EventType type = event.type(); const bool exited = type == ui::EventType::kMouseExited; -@@ -2027,6 +2099,19 @@ bool Browser::TakeFocus(content::WebContents* source, bool reverse) { +@@ -2040,6 +2112,19 @@ bool Browser::TakeFocus(content::WebContents* source, bool reverse) { return false; } @@ -307,7 +307,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 void Browser::BeforeUnloadFired(WebContents* web_contents, bool proceed, bool* proceed_to_fire_unload) { -@@ -2126,12 +2211,24 @@ void Browser::WebContentsCreated(WebContents* source_contents, +@@ -2139,12 +2224,24 @@ void Browser::WebContentsCreated(WebContents* source_contents, // Make the tab show up in the task manager. task_manager::WebContentsTags::CreateForTabContents(new_contents); @@ -332,7 +332,7 @@ index e1ebde9b491c3..ce2a8d8a79747 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(); -@@ -2144,6 +2241,13 @@ void Browser::RendererUnresponsive( +@@ -2157,6 +2254,13 @@ void Browser::RendererUnresponsive( void Browser::RendererResponsive( WebContents* source, content::RenderWidgetHost* render_widget_host) { @@ -346,7 +346,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 RenderWidgetHostView* view = render_widget_host->GetView(); if (view && !render_widget_host->GetView()->IsHTMLFormPopup()) { TabDialogs::FromWebContents(source)->HideHungRendererDialog( -@@ -2153,6 +2257,15 @@ void Browser::RendererResponsive( +@@ -2166,6 +2270,15 @@ void Browser::RendererResponsive( content::JavaScriptDialogManager* Browser::GetJavaScriptDialogManager( WebContents* source) { @@ -362,7 +362,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 return javascript_dialogs::TabModalDialogManager::FromWebContents(source); } -@@ -2188,6 +2301,11 @@ void Browser::DraggableRegionsChanged( +@@ -2201,6 +2314,11 @@ void Browser::DraggableRegionsChanged( if (app_controller_) { app_controller_->DraggableRegionsChanged(regions, contents); } @@ -374,7 +374,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 } void Browser::DidFinishNavigation( -@@ -2268,11 +2386,15 @@ void Browser::EnterFullscreenModeForTab( +@@ -2281,11 +2399,15 @@ void Browser::EnterFullscreenModeForTab( const blink::mojom::FullscreenOptions& options) { exclusive_access_manager_->fullscreen_controller()->EnterFullscreenModeForTab( requesting_frame, options.display_id); @@ -390,7 +390,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 } bool Browser::IsFullscreenForTabOrPending(const WebContents* web_contents) { -@@ -2470,6 +2592,15 @@ void Browser::RequestMediaAccessPermission( +@@ -2488,6 +2610,15 @@ void Browser::RequestMediaAccessPermission( content::WebContents* web_contents, const content::MediaStreamRequest& request, content::MediaResponseCallback callback) { @@ -406,7 +406,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 const extensions::Extension* extension = GetExtensionForOrigin(profile_, request.security_origin); MediaCaptureDevicesDispatcher::GetInstance()->ProcessMediaAccessRequest( -@@ -3026,9 +3157,10 @@ void Browser::RemoveScheduledUpdatesFor(WebContents* contents) { +@@ -3048,9 +3179,10 @@ void Browser::RemoveScheduledUpdatesFor(WebContents* contents) { // Browser, Getters for UI (private): StatusBubble* Browser::GetStatusBubble() { @@ -418,7 +418,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 } // We hide the status bar for web apps windows as this matches native -@@ -3036,6 +3168,12 @@ StatusBubble* Browser::GetStatusBubble() { +@@ -3058,6 +3190,12 @@ StatusBubble* Browser::GetStatusBubble() { // mode, as the minimal browser UI includes the status bar. if (web_app::AppBrowserController::IsWebApp(this) && !app_controller()->HasMinimalUiButtons()) { @@ -431,7 +431,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 return nullptr; } -@@ -3185,6 +3323,8 @@ void Browser::SetAsDelegate(WebContents* web_contents, bool set_delegate) { +@@ -3207,6 +3345,8 @@ void Browser::SetAsDelegate(WebContents* web_contents, bool set_delegate) { BookmarkTabHelper::FromWebContents(web_contents)->RemoveObserver(this); web_contents_collection_.StopObserving(web_contents); } @@ -440,7 +440,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 } void Browser::TabDetachedAtImpl(content::WebContents* contents, -@@ -3339,6 +3479,14 @@ bool Browser::PictureInPictureBrowserSupportsWindowFeature( +@@ -3361,6 +3501,14 @@ bool Browser::PictureInPictureBrowserSupportsWindowFeature( bool Browser::SupportsWindowFeatureImpl(WindowFeature feature, bool check_can_support) const { @@ -456,7 +456,7 @@ index e1ebde9b491c3..ce2a8d8a79747 100644 case TYPE_NORMAL: return NormalBrowserSupportsWindowFeature(feature, check_can_support); diff --git chrome/browser/ui/browser.h chrome/browser/ui/browser.h -index 85b6845aa871c..b2975ce19ac95 100644 +index c4eb05c6194b3..22c800d52a269 100644 --- chrome/browser/ui/browser.h +++ chrome/browser/ui/browser.h @@ -24,6 +24,7 @@ @@ -467,7 +467,7 @@ index 85b6845aa871c..b2975ce19ac95 100644 #include "chrome/browser/tab_contents/web_contents_collection.h" #include "chrome/browser/themes/theme_service_observer.h" #include "chrome/browser/ui/bookmarks/bookmark_bar.h" -@@ -53,6 +54,10 @@ +@@ -55,6 +56,10 @@ #include "ui/gfx/geometry/rect.h" #include "ui/shell_dialogs/select_file_dialog.h" @@ -478,7 +478,7 @@ index 85b6845aa871c..b2975ce19ac95 100644 #if BUILDFLAG(IS_ANDROID) #error This file should only be included on desktop. #endif -@@ -337,6 +342,15 @@ class Browser : public TabStripModelObserver, +@@ -340,6 +345,15 @@ class Browser : public TabStripModelObserver, // Document Picture in Picture options, specific to TYPE_PICTURE_IN_PICTURE. std::optional pip_options; @@ -494,7 +494,7 @@ index 85b6845aa871c..b2975ce19ac95 100644 private: friend class Browser; friend class WindowSizerChromeOSTest; -@@ -418,6 +432,13 @@ class Browser : public TabStripModelObserver, +@@ -423,6 +437,13 @@ class Browser : public TabStripModelObserver, update_ui_immediately_for_testing_ = true; } @@ -508,7 +508,7 @@ index 85b6845aa871c..b2975ce19ac95 100644 // Accessors //////////////////////////////////////////////////////////////// const CreateParams& create_params() const { return create_params_; } -@@ -519,6 +540,12 @@ class Browser : public TabStripModelObserver, +@@ -524,6 +545,12 @@ class Browser : public TabStripModelObserver, base::WeakPtr AsWeakPtr(); base::WeakPtr AsWeakPtr() const; @@ -521,7 +521,7 @@ index 85b6845aa871c..b2975ce19ac95 100644 // Get the FindBarController for this browser, creating it if it does not // yet exist. FindBarController* GetFindBarController(); -@@ -947,10 +974,18 @@ class Browser : public TabStripModelObserver, +@@ -955,10 +982,18 @@ class Browser : public TabStripModelObserver, void SetContentsBounds(content::WebContents* source, const gfx::Rect& bounds) override; void UpdateTargetURL(content::WebContents* source, const GURL& url) override; @@ -540,7 +540,7 @@ index 85b6845aa871c..b2975ce19ac95 100644 void BeforeUnloadFired(content::WebContents* source, bool proceed, bool* proceed_to_fire_unload) override; -@@ -1285,6 +1320,10 @@ class Browser : public TabStripModelObserver, +@@ -1295,6 +1330,10 @@ class Browser : public TabStripModelObserver, // This Browser's window. raw_ptr window_; @@ -551,7 +551,7 @@ index 85b6845aa871c..b2975ce19ac95 100644 std::unique_ptr const tab_strip_model_delegate_; std::unique_ptr const tab_strip_model_; -@@ -1351,6 +1390,8 @@ class Browser : public TabStripModelObserver, +@@ -1361,6 +1400,8 @@ class Browser : public TabStripModelObserver, const std::string initial_workspace_; bool initial_visible_on_all_workspaces_state_; @@ -561,10 +561,10 @@ index 85b6845aa871c..b2975ce19ac95 100644 UnloadController unload_controller_; diff --git chrome/browser/ui/browser_navigator.cc chrome/browser/ui/browser_navigator.cc -index 061432f5974e1..46de9334a4daa 100644 +index 70d7f4fbda71c..103e9c1b2a8f2 100644 --- chrome/browser/ui/browser_navigator.cc +++ chrome/browser/ui/browser_navigator.cc -@@ -270,6 +270,10 @@ std::tuple GetBrowserAndTabForDisposition( +@@ -272,6 +272,10 @@ std::tuple GetBrowserAndTabForDisposition( browser_params.pip_options = pip_options; @@ -575,7 +575,7 @@ index 061432f5974e1..46de9334a4daa 100644 const BrowserWindow* const browser_window = params.browser->window(); const gfx::NativeWindow native_window = browser_window ? browser_window->GetNativeWindow() -@@ -558,6 +562,13 @@ std::unique_ptr CreateTargetContents( +@@ -560,6 +564,13 @@ std::unique_ptr CreateTargetContents( std::unique_ptr target_contents = WebContents::Create(create_params); diff --git a/patch/patches/chrome_browser_context_menus.patch b/patch/patches/chrome_browser_context_menus.patch index ee6f4b5a6..a82fa3034 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 348128d804493..5d893c71e55ea 100644 +index 4f655f74e289d..2c119831b6cd2 100644 --- chrome/browser/renderer_context_menu/render_view_context_menu.cc +++ chrome/browser/renderer_context_menu/render_view_context_menu.cc -@@ -360,6 +360,18 @@ base::OnceCallback* GetMenuShownCallback() { +@@ -361,6 +361,18 @@ base::OnceCallback* GetMenuShownCallback() { return callback.get(); } @@ -21,7 +21,7 @@ index 348128d804493..5d893c71e55ea 100644 enum class UmaEnumIdLookupType { GeneralEnumId, ContextSpecificEnumId, -@@ -626,6 +638,10 @@ int FindUMAEnumValueForCommand(int id, UmaEnumIdLookupType type) { +@@ -629,6 +641,10 @@ int FindUMAEnumValueForCommand(int id, UmaEnumIdLookupType type) { return 1; } @@ -32,7 +32,7 @@ index 348128d804493..5d893c71e55ea 100644 id = CollapseCommandsForUMA(id); const auto& map = GetIdcToUmaMap(type); auto it = map.find(id); -@@ -902,6 +918,14 @@ RenderViewContextMenu::RenderViewContextMenu( +@@ -910,6 +926,14 @@ RenderViewContextMenu::RenderViewContextMenu( : nullptr; #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -47,7 +47,7 @@ index 348128d804493..5d893c71e55ea 100644 observers_.AddObserver(&autofill_context_menu_manager_); } -@@ -1358,6 +1382,12 @@ void RenderViewContextMenu::InitMenu() { +@@ -1366,6 +1390,12 @@ void RenderViewContextMenu::InitMenu() { autofill_client->HideAutofillSuggestions( autofill::SuggestionHidingReason::kContextMenuOpened); } @@ -60,7 +60,7 @@ index 348128d804493..5d893c71e55ea 100644 } Profile* RenderViewContextMenu::GetProfile() const { -@@ -3648,6 +3678,26 @@ void RenderViewContextMenu::RegisterExecutePluginActionCallbackForTesting( +@@ -3667,6 +3697,26 @@ void RenderViewContextMenu::RegisterExecutePluginActionCallbackForTesting( execute_plugin_action_callback_ = std::move(cb); } @@ -88,7 +88,7 @@ index 348128d804493..5d893c71e55ea 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 6b3874524e87b..4e0fd1d7297f1 100644 +index 91de5780521af..571ad0260b4f7 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 6b3874524e87b..4e0fd1d7297f1 100644 Profile* GetProfile() const; // This may return nullptr (e.g. for WebUI dialogs). Virtual to allow tests to -@@ -477,6 +491,9 @@ class RenderViewContextMenu +@@ -478,6 +492,9 @@ class RenderViewContextMenu // built. bool is_protocol_submenu_valid_ = false; @@ -305,10 +305,10 @@ index 042428f77f4ad..e4efd98ca45d5 100644 raw_ptr web_contents_ = nullptr; }; diff --git components/renderer_context_menu/render_view_context_menu_base.cc components/renderer_context_menu/render_view_context_menu_base.cc -index c22b3a584bb54..542b838ba3a44 100644 +index 01a7fe089662d..5b67b639e3f09 100644 --- components/renderer_context_menu/render_view_context_menu_base.cc +++ components/renderer_context_menu/render_view_context_menu_base.cc -@@ -374,6 +374,17 @@ bool RenderViewContextMenuBase::IsCommandIdChecked(int id) const { +@@ -380,6 +380,17 @@ bool RenderViewContextMenuBase::IsCommandIdChecked(int id) const { return false; } @@ -327,7 +327,7 @@ index c22b3a584bb54..542b838ba3a44 100644 command_executed_ = true; RecordUsedItem(id); diff --git components/renderer_context_menu/render_view_context_menu_base.h components/renderer_context_menu/render_view_context_menu_base.h -index 57b288bc885e6..9909899e3b5fe 100644 +index b607544ab0a48..a389e96cf5182 100644 --- components/renderer_context_menu/render_view_context_menu_base.h +++ components/renderer_context_menu/render_view_context_menu_base.h @@ -85,8 +85,13 @@ class RenderViewContextMenuBase : public ui::SimpleMenuModel::Delegate, @@ -368,7 +368,7 @@ index 9fdda1636003d..538bd05a41296 100644 + return false; +} diff --git components/renderer_context_menu/render_view_context_menu_observer.h components/renderer_context_menu/render_view_context_menu_observer.h -index 0527c57abd51c..70bebcbb50461 100644 +index 05efbd822ab0a..f3dff27cdfd19 100644 --- components/renderer_context_menu/render_view_context_menu_observer.h +++ components/renderer_context_menu/render_view_context_menu_observer.h @@ -11,6 +11,10 @@ namespace content { diff --git a/patch/patches/chrome_browser_devtools_osr.patch b/patch/patches/chrome_browser_devtools_osr.patch index a08084f5f..c13abebf1 100644 --- a/patch/patches/chrome_browser_devtools_osr.patch +++ b/patch/patches/chrome_browser_devtools_osr.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/devtools/chrome_devtools_manager_delegate.cc chrome/browser/devtools/chrome_devtools_manager_delegate.cc -index 65041a6124766..06f1a300dbfde 100644 +index e84932c53009d..0e64ca8105f82 100644 --- chrome/browser/devtools/chrome_devtools_manager_delegate.cc +++ chrome/browser/devtools/chrome_devtools_manager_delegate.cc @@ -15,6 +15,7 @@ @@ -21,7 +21,7 @@ index 65041a6124766..06f1a300dbfde 100644 using content::DevToolsAgentHost; const char ChromeDevToolsManagerDelegate::kTypeApp[] = "app"; -@@ -284,6 +289,12 @@ std::string ChromeDevToolsManagerDelegate::GetTargetType( +@@ -285,6 +290,12 @@ std::string ChromeDevToolsManagerDelegate::GetTargetType( return DevToolsAgentHost::kTypePage; } diff --git a/patch/patches/chrome_browser_dialogs_widget.patch b/patch/patches/chrome_browser_dialogs_widget.patch index 17fbe2938..f091a9f94 100644 --- a/patch/patches/chrome_browser_dialogs_widget.patch +++ b/patch/patches/chrome_browser_dialogs_widget.patch @@ -210,7 +210,7 @@ index 51ed6bcf6b540..c6e1161140655 100644 virtual gfx::Point GetDialogPosition(const gfx::Size& size) = 0; // Returns whether a dialog currently about to be shown should be activated. diff --git ui/views/window/dialog_delegate.cc ui/views/window/dialog_delegate.cc -index d5d9010ca00fe..3a0e50a1cb2f0 100644 +index bc119f10f749e..d81c1ce4e786f 100644 --- ui/views/window/dialog_delegate.cc +++ ui/views/window/dialog_delegate.cc @@ -87,10 +87,12 @@ DialogDelegate::DialogDelegate() { diff --git a/patch/patches/chrome_browser_download.patch b/patch/patches/chrome_browser_download.patch index e68357637..c989ac8c0 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 f6cdc397b51cb..69847175527da 100644 +index 6b356ae53968e..da22286db5a3f 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 f6cdc397b51cb..69847175527da 100644 #include "chrome/browser/browser_process.h" #include "chrome/browser/download/bubble/download_bubble_prefs.h" #include "chrome/browser/download/download_core_service.h" -@@ -158,6 +159,10 @@ +@@ -159,6 +160,10 @@ #include "chrome/browser/ash/policy/skyvault/skyvault_rename_handler.h" #endif @@ -21,7 +21,7 @@ index f6cdc397b51cb..69847175527da 100644 using content::BrowserThread; using content::DownloadManager; using download::DownloadItem; -@@ -519,6 +524,11 @@ ChromeDownloadManagerDelegate::ChromeDownloadManagerDelegate(Profile* profile) +@@ -520,6 +525,11 @@ ChromeDownloadManagerDelegate::ChromeDownloadManagerDelegate(Profile* profile) download_dialog_bridge_ = std::make_unique(); download_message_bridge_ = std::make_unique(); #endif @@ -33,7 +33,7 @@ index f6cdc397b51cb..69847175527da 100644 } ChromeDownloadManagerDelegate::~ChromeDownloadManagerDelegate() { -@@ -578,6 +588,9 @@ void ChromeDownloadManagerDelegate::Shutdown() { +@@ -579,6 +589,9 @@ void ChromeDownloadManagerDelegate::Shutdown() { download_manager_->RemoveObserver(this); download_manager_ = nullptr; } @@ -43,7 +43,7 @@ index f6cdc397b51cb..69847175527da 100644 } void ChromeDownloadManagerDelegate::OnDownloadCanceledAtShutdown( -@@ -646,6 +659,12 @@ bool ChromeDownloadManagerDelegate::DetermineDownloadTarget( +@@ -647,6 +660,12 @@ bool ChromeDownloadManagerDelegate::DetermineDownloadTarget( ReportPDFLoadStatus(PDFLoadStatus::kTriggeredNoGestureDriveByDownload); } @@ -56,7 +56,7 @@ index f6cdc397b51cb..69847175527da 100644 DownloadTargetDeterminer::CompletionCallback target_determined_callback = base::BindOnce(&ChromeDownloadManagerDelegate::OnDownloadTargetDetermined, weak_ptr_factory_.GetWeakPtr(), download->GetId(), -@@ -1067,8 +1086,11 @@ void ChromeDownloadManagerDelegate::OpenDownload(DownloadItem* download) { +@@ -1080,8 +1099,11 @@ void ChromeDownloadManagerDelegate::OpenDownload(DownloadItem* download) { Browser* browser = web_contents ? chrome::FindBrowserWithTab(web_contents) : nullptr; std::unique_ptr browser_displayer; diff --git a/patch/patches/chrome_browser_extensions.patch b/patch/patches/chrome_browser_extensions.patch index 8542010ea..3a6a71746 100644 --- a/patch/patches/chrome_browser_extensions.patch +++ b/patch/patches/chrome_browser_extensions.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/extensions/api/chrome_extensions_api_client.cc chrome/browser/extensions/api/chrome_extensions_api_client.cc -index 4007e26f780c3..26d0d492cf176 100644 +index d1efdcb11d925..87fbfde83af42 100644 --- chrome/browser/extensions/api/chrome_extensions_api_client.cc +++ chrome/browser/extensions/api/chrome_extensions_api_client.cc -@@ -14,6 +14,7 @@ +@@ -15,6 +15,7 @@ #include "base/strings/string_util.h" #include "build/build_config.h" #include "build/chromeos_buildflags.h" @@ -10,7 +10,7 @@ index 4007e26f780c3..26d0d492cf176 100644 #include "chrome/browser/extensions/api/automation_internal/chrome_automation_internal_api_delegate.h" #include "chrome/browser/extensions/api/chrome_device_permissions_prompt.h" #include "chrome/browser/extensions/api/declarative_content/chrome_content_rules_registry.h" -@@ -92,6 +93,10 @@ +@@ -93,6 +94,10 @@ #include "chrome/browser/extensions/clipboard_extension_helper_chromeos.h" #endif @@ -21,7 +21,7 @@ index 4007e26f780c3..26d0d492cf176 100644 #if BUILDFLAG(ENABLE_PRINTING) #include "chrome/browser/printing/printing_init.h" #endif -@@ -314,7 +319,11 @@ ChromeExtensionsAPIClient::CreateGuestViewManagerDelegate() const { +@@ -316,7 +321,11 @@ ChromeExtensionsAPIClient::CreateGuestViewManagerDelegate() const { std::unique_ptr ChromeExtensionsAPIClient::CreateMimeHandlerViewGuestDelegate( MimeHandlerViewGuest* guest) const { @@ -34,11 +34,11 @@ 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 faefffb1010e8..ee3c11ffda006 100644 +index 14af722d7e382..c86b9f28689cc 100644 --- chrome/browser/extensions/api/tabs/tabs_api.cc +++ chrome/browser/extensions/api/tabs/tabs_api.cc -@@ -1577,7 +1577,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { - return RespondNow(Error(tabs_constants::kTabStripNotEditableError)); +@@ -1615,7 +1615,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { + return RespondNow(Error(ExtensionTabUtil::kTabStripNotEditableError)); } - if (tab_strip->active_index() != tab_index) { @@ -46,7 +46,7 @@ index faefffb1010e8..ee3c11ffda006 100644 tab_strip->ActivateTabAt(tab_index); DCHECK_EQ(contents, tab_strip->GetActiveWebContents()); } -@@ -1591,7 +1591,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { +@@ -1629,7 +1629,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { } bool highlighted = *params->update_properties.highlighted; @@ -55,8 +55,8 @@ index faefffb1010e8..ee3c11ffda006 100644 tab_strip->ToggleSelectionAt(tab_index); } } -@@ -1604,7 +1604,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { - base::NumberToString(tab_id)))); +@@ -1641,7 +1641,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { + kCannotUpdateMuteCaptured, base::NumberToString(tab_id)))); } - if (params->update_properties.opener_tab_id) { @@ -64,7 +64,7 @@ index faefffb1010e8..ee3c11ffda006 100644 int opener_id = *params->update_properties.opener_tab_id; WebContents* opener_contents = nullptr; if (opener_id == tab_id) { -@@ -1638,7 +1638,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { +@@ -1676,7 +1676,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { ->SetAutoDiscardable(state); } @@ -73,7 +73,7 @@ index faefffb1010e8..ee3c11ffda006 100644 // 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() { +@@ -1697,8 +1697,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; @@ -85,7 +85,7 @@ index faefffb1010e8..ee3c11ffda006 100644 return RespondNow(Error(ErrorUtils::FormatErrorMessage( tabs_constants::kURLsNotAllowedInIncognitoError, updated_url))); } -@@ -1674,7 +1675,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { +@@ -1712,7 +1713,7 @@ ExtensionFunction::ResponseAction TabsUpdateFunction::Run() { return RespondNow(Error(std::move(error))); } @@ -95,7 +95,7 @@ index faefffb1010e8..ee3c11ffda006 100644 current_url, updated_url, js_callstack()); } diff --git chrome/browser/extensions/extension_tab_util.cc chrome/browser/extensions/extension_tab_util.cc -index 1687e36dd5966..929e1fdf78611 100644 +index a896cb1079d97..6681661f788f6 100644 --- chrome/browser/extensions/extension_tab_util.cc +++ chrome/browser/extensions/extension_tab_util.cc @@ -20,6 +20,7 @@ @@ -104,9 +104,9 @@ index 1687e36dd5966..929e1fdf78611 100644 #include "base/types/expected_macros.h" +#include "cef/libcef/features/features.h" #include "chrome/browser/browser_process.h" - #include "chrome/browser/extensions/api/tabs/tabs_constants.h" #include "chrome/browser/extensions/browser_extension_window_controller.h" -@@ -75,6 +76,10 @@ + #include "chrome/browser/extensions/chrome_extension_function_details.h" +@@ -73,6 +74,10 @@ #include "third_party/blink/public/common/features.h" #include "url/gurl.h" @@ -117,7 +117,7 @@ index 1687e36dd5966..929e1fdf78611 100644 using content::NavigationEntry; using content::WebContents; using extensions::mojom::APIPermissionID; -@@ -698,6 +703,20 @@ bool ExtensionTabUtil::GetTabById(int tab_id, +@@ -696,6 +701,20 @@ bool ExtensionTabUtil::GetTabById(int tab_id, } } @@ -173,10 +173,10 @@ index 63848c93738ce..0358e098c7339 100644 // ones that need to call AttachTabHelpers; if you think you do, re-read the // design document linked above, especially the section "Reusing tab helpers". diff --git chrome/browser/ui/views/download/bubble/download_toolbar_button_view.cc chrome/browser/ui/views/download/bubble/download_toolbar_button_view.cc -index 101afe2d08189..f4f4479f5ee54 100644 +index 74af36a74f108..a4e1885388d16 100644 --- chrome/browser/ui/views/download/bubble/download_toolbar_button_view.cc +++ chrome/browser/ui/views/download/bubble/download_toolbar_button_view.cc -@@ -835,6 +835,10 @@ void DownloadToolbarButtonView::ShowPendingDownloadStartedAnimation() { +@@ -834,6 +834,10 @@ void DownloadToolbarButtonView::ShowPendingDownloadStartedAnimation() { if (!gfx::Animation::ShouldRenderRichAnimation()) { return; } diff --git a/patch/patches/chrome_browser_frame_mac.patch b/patch/patches/chrome_browser_frame_mac.patch index 5e102a3b7..a08992904 100644 --- a/patch/patches/chrome_browser_frame_mac.patch +++ b/patch/patches/chrome_browser_frame_mac.patch @@ -1,16 +1,16 @@ diff --git chrome/browser/ui/views/frame/browser_frame_mac.h chrome/browser/ui/views/frame/browser_frame_mac.h -index decd0b51ddc3d..17fce2da6ad0e 100644 +index 2245c931fbe4f..761ea6b3a6afb 100644 --- chrome/browser/ui/views/frame/browser_frame_mac.h +++ chrome/browser/ui/views/frame/browser_frame_mac.h @@ -11,6 +11,7 @@ - #include "chrome/browser/command_observer.h" + #include "ui/base/mojom/window_show_state.mojom-forward.h" #include "ui/views/widget/native_widget_mac.h" +class Browser; class BrowserFrame; class BrowserView; @class BrowserWindowTouchBarController; -@@ -53,6 +54,21 @@ class BrowserFrameMac : public views::NativeWidgetMac, +@@ -54,6 +55,21 @@ class BrowserFrameMac : public views::NativeWidgetMac, bool ShouldUseInitialVisibleOnAllWorkspaces() const override; void AnnounceTextInInProcessWindow(const std::u16string& text) override; @@ -33,10 +33,10 @@ index decd0b51ddc3d..17fce2da6ad0e 100644 ~BrowserFrameMac() override; diff --git chrome/browser/ui/views/frame/browser_frame_mac.mm chrome/browser/ui/views/frame/browser_frame_mac.mm -index 6763207c69ea5..c838a22f02387 100644 +index 1e5c56c02cace..71e91ab4f3fb7 100644 --- chrome/browser/ui/views/frame/browser_frame_mac.mm +++ chrome/browser/ui/views/frame/browser_frame_mac.mm -@@ -183,7 +183,14 @@ void BrowserFrameMac::OnWindowFullscreenTransitionComplete() { +@@ -184,7 +184,14 @@ void BrowserFrameMac::OnWindowFullscreenTransitionComplete() { void BrowserFrameMac::ValidateUserInterfaceItem( int32_t tag, remote_cocoa::mojom::ValidateUserInterfaceItemResult* result) { @@ -52,7 +52,7 @@ index 6763207c69ea5..c838a22f02387 100644 if (!chrome::SupportsCommand(browser, tag)) { result->enable = false; return; -@@ -306,8 +313,16 @@ bool BrowserFrameMac::WillExecuteCommand( +@@ -307,8 +314,16 @@ bool BrowserFrameMac::WillExecuteCommand( int32_t command, WindowOpenDisposition window_open_disposition, bool is_before_first_responder) { @@ -70,7 +70,7 @@ index 6763207c69ea5..c838a22f02387 100644 if (is_before_first_responder) { // The specification for this private extensions API is incredibly vague. // For now, we avoid triggering chrome commands prior to giving the -@@ -338,11 +353,20 @@ bool BrowserFrameMac::ExecuteCommand( +@@ -339,11 +354,20 @@ bool BrowserFrameMac::ExecuteCommand( int32_t command, WindowOpenDisposition window_open_disposition, bool is_before_first_responder) { diff --git a/patch/patches/chrome_browser_policy.patch b/patch/patches/chrome_browser_policy.patch index fa1dc483a..dc88464ea 100644 --- a/patch/patches/chrome_browser_policy.patch +++ b/patch/patches/chrome_browser_policy.patch @@ -1,5 +1,5 @@ diff --git chrome/browser/policy/browser_dm_token_storage_linux.cc chrome/browser/policy/browser_dm_token_storage_linux.cc -index 02c801eb35549..2fa2e336a8cf7 100644 +index cbad74b559c07..f3b4f6261d7c0 100644 --- chrome/browser/policy/browser_dm_token_storage_linux.cc +++ chrome/browser/policy/browser_dm_token_storage_linux.cc @@ -22,6 +22,7 @@ @@ -10,7 +10,7 @@ index 02c801eb35549..2fa2e336a8cf7 100644 #include "chrome/common/chrome_paths.h" #include "components/policy/core/common/policy_logger.h" -@@ -121,8 +122,8 @@ std::string BrowserDMTokenStorageLinux::InitEnrollmentToken() { +@@ -127,8 +128,8 @@ std::string BrowserDMTokenStorageLinux::InitEnrollmentToken() { std::string enrollment_token; base::FilePath dir_policy_files_path; @@ -21,7 +21,7 @@ index 02c801eb35549..2fa2e336a8cf7 100644 return std::string(); } -@@ -152,8 +153,8 @@ bool BrowserDMTokenStorageLinux::InitEnrollmentErrorOption() { +@@ -162,8 +163,8 @@ bool BrowserDMTokenStorageLinux::InitEnrollmentErrorOption() { std::string options; base::FilePath dir_policy_files_path; @@ -105,7 +105,7 @@ index d8fda08453256..466718e824503 100644 } diff --git chrome/browser/policy/chrome_browser_policy_connector.cc chrome/browser/policy/chrome_browser_policy_connector.cc -index b7dc08e42137f..50e196ff0251c 100644 +index cf3c9a1871a35..0577e8f8b60ec 100644 --- chrome/browser/policy/chrome_browser_policy_connector.cc +++ chrome/browser/policy/chrome_browser_policy_connector.cc @@ -13,11 +13,14 @@ @@ -246,13 +246,13 @@ index b7dc08e42137f..50e196ff0251c 100644 {base::MayBlock(), base::TaskPriority::BEST_EFFORT}), @@ -385,7 +457,7 @@ ChromeBrowserPolicyConnector::CreatePlatformProvider() { std::move(loader)); - #elif BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID) + #elif BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS) base::FilePath config_dir_path; - if (base::PathService::Get(chrome::DIR_POLICY_FILES, &config_dir_path)) { + if (GetDirPolicyFilesPath(&config_dir_path)) { - #if BUILDFLAG(IS_CHROMEOS) - // If the folder containing the policy files doesn't exist, there's no need - // to have a provider for them. Note that in verified boot, the folder + auto loader = std::make_unique( + base::ThreadPool::CreateSequencedTaskRunner( + {base::MayBlock(), base::TaskPriority::BEST_EFFORT}), diff --git chrome/browser/policy/chrome_browser_policy_connector.h chrome/browser/policy/chrome_browser_policy_connector.h index e4c6792766ae4..0a0c054d9e4d1 100644 --- chrome/browser/policy/chrome_browser_policy_connector.h @@ -357,10 +357,10 @@ index 8dbf958c189dd..6eaccc6688eca 100644 *dir = base::FilePath(policy::path_parser::ExpandPathVariables(value)); return true; diff --git chrome/common/chrome_paths.cc chrome/common/chrome_paths.cc -index 3c569bc610124..4f438a3d1f857 100644 +index ec09803ffabcf..9a39e6172293f 100644 --- chrome/common/chrome_paths.cc +++ chrome/common/chrome_paths.cc -@@ -541,7 +541,8 @@ bool PathProvider(int key, base::FilePath* result) { +@@ -535,7 +535,8 @@ bool PathProvider(int key, base::FilePath* result) { return false; } break; diff --git a/patch/patches/chrome_browser_profile_menu.patch b/patch/patches/chrome_browser_profile_menu.patch index f04a783ba..c168b9265 100644 --- a/patch/patches/chrome_browser_profile_menu.patch +++ b/patch/patches/chrome_browser_profile_menu.patch @@ -59,10 +59,10 @@ index 791ab794c8750..ca9e0851e2689 100644 ax::mojom::NameFrom::kAttribute); diff --git chrome/browser/ui/views/profiles/profile_menu_coordinator.cc chrome/browser/ui/views/profiles/profile_menu_coordinator.cc -index ce7e02f549ab3..338af80de71d6 100644 +index ee9f399e4c010..2182e42981f9d 100644 --- chrome/browser/ui/views/profiles/profile_menu_coordinator.cc +++ chrome/browser/ui/views/profiles/profile_menu_coordinator.cc -@@ -56,7 +56,9 @@ void ProfileMenuCoordinator::Show(bool is_source_accelerator) { +@@ -58,7 +58,9 @@ void ProfileMenuCoordinator::Show(bool is_source_accelerator) { is_incognito &= !browser.profile()->IsGuestSession(); #endif diff --git a/patch/patches/chrome_browser_profiles.patch b/patch/patches/chrome_browser_profiles.patch index c37814155..ae6db051e 100644 --- a/patch/patches/chrome_browser_profiles.patch +++ b/patch/patches/chrome_browser_profiles.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/profiles/off_the_record_profile_impl.cc chrome/browser/profiles/off_the_record_profile_impl.cc -index 5420ca8496773..74bdd5aa84c31 100644 +index 0b7e60d6742de..94af5f4d226bf 100644 --- chrome/browser/profiles/off_the_record_profile_impl.cc +++ chrome/browser/profiles/off_the_record_profile_impl.cc -@@ -658,7 +658,9 @@ std::unique_ptr Profile::CreateOffTheRecordProfile( +@@ -643,7 +643,9 @@ std::unique_ptr Profile::CreateOffTheRecordProfile( #endif if (!profile) profile = std::make_unique(parent, otr_profile_id); @@ -14,10 +14,10 @@ index 5420ca8496773..74bdd5aa84c31 100644 } diff --git chrome/browser/profiles/profile.cc chrome/browser/profiles/profile.cc -index 76e435416e7ca..594ef7ae92fed 100644 +index 89254771117da..eb35e4595d1ad 100644 --- chrome/browser/profiles/profile.cc +++ chrome/browser/profiles/profile.cc -@@ -91,6 +91,7 @@ base::LazyInstance>::Leaky +@@ -81,6 +81,7 @@ base::LazyInstance>::Leaky namespace { @@ -25,7 +25,7 @@ index 76e435416e7ca..594ef7ae92fed 100644 const char kDevToolsOTRProfileIDPrefix[] = "Devtools::BrowserContext"; const char kMediaRouterOTRProfileIDPrefix[] = "MediaRouter::Presentation"; const char kTestOTRProfileIDPrefix[] = "Test::OTR"; -@@ -111,6 +112,8 @@ bool Profile::OTRProfileID::AllowsBrowserWindows() const { +@@ -101,6 +102,8 @@ bool Profile::OTRProfileID::AllowsBrowserWindows() const { // DevTools::BrowserContext, MediaRouter::Presentation, and // CaptivePortal::Signin are exceptions to this ban. if (*this == PrimaryID() || @@ -34,7 +34,7 @@ index 76e435416e7ca..594ef7ae92fed 100644 base::StartsWith(profile_id_, kDevToolsOTRProfileIDPrefix, base::CompareCase::SENSITIVE) || base::StartsWith(profile_id_, kMediaRouterOTRProfileIDPrefix, -@@ -148,6 +151,16 @@ Profile::OTRProfileID Profile::OTRProfileID::CreateUnique( +@@ -138,6 +141,16 @@ Profile::OTRProfileID Profile::OTRProfileID::CreateUnique( base::Uuid::GenerateRandomV4().AsLowercaseString().c_str())); } @@ -52,7 +52,7 @@ index 76e435416e7ca..594ef7ae92fed 100644 Profile::OTRProfileID Profile::OTRProfileID::CreateUniqueForDevTools() { return CreateUnique(kDevToolsOTRProfileIDPrefix); diff --git chrome/browser/profiles/profile.h chrome/browser/profiles/profile.h -index 0c961e399183b..70a02994bd478 100644 +index f79b0cd32e4fb..c797e6659a43f 100644 --- chrome/browser/profiles/profile.h +++ chrome/browser/profiles/profile.h @@ -94,6 +94,10 @@ class Profile : public content::BrowserContext { @@ -66,7 +66,7 @@ index 0c961e399183b..70a02994bd478 100644 // Creates a unique OTR profile id to be used for DevTools browser contexts. static OTRProfileID CreateUniqueForDevTools(); -@@ -519,6 +523,9 @@ class Profile : public content::BrowserContext { +@@ -503,6 +507,9 @@ class Profile : public content::BrowserContext { static Profile* FromJavaObject(const jni_zero::JavaRef& obj); jni_zero::ScopedJavaLocalRef GetJavaObject() const; #endif // BUILDFLAG(IS_ANDROID) @@ -76,7 +76,7 @@ index 0c961e399183b..70a02994bd478 100644 protected: // Creates an OffTheRecordProfile which points to this Profile. static std::unique_ptr CreateOffTheRecordProfile( -@@ -530,7 +537,6 @@ class Profile : public content::BrowserContext { +@@ -514,7 +521,6 @@ class Profile : public content::BrowserContext { static PrefStore* CreateExtensionPrefStore(Profile*, bool incognito_pref_store); @@ -85,10 +85,10 @@ index 0c961e399183b..70a02994bd478 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 8eea00363de53..2167b1b8df4d2 100644 +index 26667af1eb648..79bb0289f6150 100644 --- chrome/browser/profiles/profile_impl.cc +++ chrome/browser/profiles/profile_impl.cc -@@ -1043,7 +1043,9 @@ Profile* ProfileImpl::GetOffTheRecordProfile(const OTRProfileID& otr_profile_id, +@@ -1012,7 +1012,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 c94d08901..09406fb23 100644 --- a/patch/patches/chrome_browser_safe_browsing.patch +++ b/patch/patches/chrome_browser_safe_browsing.patch @@ -1,11 +1,11 @@ diff --git chrome/browser/safe_browsing/BUILD.gn chrome/browser/safe_browsing/BUILD.gn -index fd47cd395ad8e..b9c9f1c0d438b 100644 +index 386e4b6b6e8a9..85b7e2b926e9c 100644 --- chrome/browser/safe_browsing/BUILD.gn +++ chrome/browser/safe_browsing/BUILD.gn -@@ -37,6 +37,7 @@ static_library("safe_browsing") { - "//components/enterprise:enterprise", +@@ -39,6 +39,7 @@ static_library("safe_browsing") { "//components/enterprise/buildflags", "//components/enterprise/common:strings", + "//components/enterprise/obfuscation/core:enterprise_obfuscation", + "//components/gcm_driver:gcm_buildflags", "//components/keyed_service/content", "//components/language/core/browser", diff --git a/patch/patches/chrome_browser_startup.patch b/patch/patches/chrome_browser_startup.patch index af356d2b4..36bcd82cd 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 c484e98959a22..db58381c66dc0 100644 +index 5e4078d747c74..e1c41cb1a8cda 100644 --- chrome/browser/ui/startup/startup_browser_creator.cc +++ chrome/browser/ui/startup/startup_browser_creator.cc -@@ -604,6 +604,13 @@ std::optional GetAppId(const base::CommandLine& command_line, +@@ -616,6 +616,13 @@ std::optional GetAppId(const base::CommandLine& command_line, } #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -16,7 +16,7 @@ index c484e98959a22..db58381c66dc0 100644 } // namespace StartupProfileMode StartupProfileModeFromReason( -@@ -1492,6 +1499,12 @@ void StartupBrowserCreator::ProcessCommandLineWithProfile( +@@ -1481,6 +1488,12 @@ void StartupBrowserCreator::ProcessCommandLineWithProfile( {profile, mode}, last_opened_profiles); } @@ -29,7 +29,7 @@ index c484e98959a22..db58381c66dc0 100644 // static void StartupBrowserCreator::ProcessCommandLineAlreadyRunning( const base::CommandLine& command_line, -@@ -1501,6 +1514,11 @@ void StartupBrowserCreator::ProcessCommandLineAlreadyRunning( +@@ -1490,6 +1503,11 @@ void StartupBrowserCreator::ProcessCommandLineAlreadyRunning( return; } diff --git a/patch/patches/chrome_browser_task_manager_5894650.patch b/patch/patches/chrome_browser_task_manager_5894650.patch deleted file mode 100644 index fa3399015..000000000 --- a/patch/patches/chrome_browser_task_manager_5894650.patch +++ /dev/null @@ -1,27 +0,0 @@ -diff --git chrome/browser/task_manager/providers/render_process_host_task_provider.cc chrome/browser/task_manager/providers/render_process_host_task_provider.cc -index 11b05cbfc6077..45a5b11158a21 100644 ---- chrome/browser/task_manager/providers/render_process_host_task_provider.cc -+++ chrome/browser/task_manager/providers/render_process_host_task_provider.cc -@@ -110,18 +110,14 @@ void RenderProcessHostTaskProvider::OnRenderProcessHostCreated( - void RenderProcessHostTaskProvider::RenderProcessExited( - content::RenderProcessHost* host, - const content::ChildProcessTerminationInfo& info) { -- if (is_updating_) { -- DeleteTask(host->GetID()); -- host_observation_.RemoveObservation(host); -- } -+ DeleteTask(host->GetID()); -+ host_observation_.RemoveObservation(host); - } - - void RenderProcessHostTaskProvider::RenderProcessHostDestroyed( - content::RenderProcessHost* host) { -- if (is_updating_) { -- DeleteTask(host->GetID()); -- host_observation_.RemoveObservation(host); -- } -+ DeleteTask(host->GetID()); -+ host_observation_.RemoveObservation(host); - } - - } // namespace task_manager diff --git a/patch/patches/chrome_browser_webui_license.patch b/patch/patches/chrome_browser_webui_license.patch index 6b0ab598a..4034cd174 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 b56981733057e..20386be211feb 100644 +index 089e3b7bfe055..ce5550a60b1dc 100644 --- chrome/browser/ui/webui/chrome_web_ui_configs.cc +++ chrome/browser/ui/webui/chrome_web_ui_configs.cc @@ -6,6 +6,7 @@ @@ -80,18 +80,18 @@ index b56981733057e..20386be211feb 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" -@@ -97,6 +98,9 @@ void RegisterChromeWebUIConfigs() { - map.AddWebUIConfig(std::make_unique()); +@@ -207,6 +208,9 @@ void RegisterChromeWebUIConfigs() { map.AddWebUIConfig(std::make_unique()); + map.AddWebUIConfig(std::make_unique()); map.AddWebUIConfig(std::make_unique()); +#if BUILDFLAG(ENABLE_CEF) + map.AddWebUIConfig(std::make_unique()); +#endif map.AddWebUIConfig(std::make_unique()); - map.AddWebUIConfig(std::make_unique()); - 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 743fd86a35a10..48b0488d8f56a 100644 +index 279f73938d406..c1bf263962e0c 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 743fd86a35a10..48b0488d8f56a 100644 #include "chrome/browser/about_flags.h" #include "chrome/browser/buildflags.h" #include "chrome/browser/commerce/shopping_service_factory.h" -@@ -927,6 +928,9 @@ ChromeWebUIControllerFactory::GetListOfAcceptableURLs() { +@@ -538,6 +539,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 d1a8dc8342177..8d3226adca3c4 100644 +index 77a617a6aac5a..6ecbed02d00f6 100644 --- chrome/common/webui_url_constants.h +++ chrome/common/webui_url_constants.h @@ -18,6 +18,7 @@ @@ -138,7 +138,7 @@ index d1a8dc8342177..8d3226adca3c4 100644 #include "chrome/common/buildflags.h" #include "components/lens/buildflags.h" #include "components/signin/public/base/signin_buildflags.h" -@@ -160,6 +161,10 @@ inline constexpr char kChromeUILauncherInternalsURL[] = +@@ -157,6 +158,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_renderer.patch b/patch/patches/chrome_renderer.patch index f5e171a4e..ddebb4d5e 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 3a4b21b9b90ab..abeee8364b65d 100644 +index ce023fa1c9ef0..10717d8ec7a90 100644 --- chrome/renderer/BUILD.gn +++ chrome/renderer/BUILD.gn @@ -5,6 +5,7 @@ @@ -10,7 +10,7 @@ index 3a4b21b9b90ab..abeee8364b65d 100644 import("//chrome/common/features.gni") import("//components/nacl/features.gni") import("//components/offline_pages/buildflags/features.gni") -@@ -137,6 +138,7 @@ static_library("renderer") { +@@ -138,6 +139,7 @@ static_library("renderer") { ":process_state", "//base/allocator:buildflags", "//build:chromeos_buildflags", @@ -18,7 +18,7 @@ index 3a4b21b9b90ab..abeee8364b65d 100644 "//chrome:resources", "//chrome:strings", "//chrome/common", -@@ -255,6 +257,10 @@ static_library("renderer") { +@@ -256,6 +258,10 @@ static_library("renderer") { ] } diff --git a/patch/patches/chrome_runtime.patch b/patch/patches/chrome_runtime.patch index 0cc15dc9c..12a937e41 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 9c1a840843c02..60c1643ec02b7 100644 +index 2fb2eb68d328b..f616ba827ea03 100644 --- chrome/app/chrome_main_delegate.cc +++ chrome/app/chrome_main_delegate.cc @@ -42,6 +42,7 @@ @@ -10,7 +10,7 @@ index 9c1a840843c02..60c1643ec02b7 100644 #include "chrome/browser/buildflags.h" #include "chrome/browser/chrome_content_browser_client.h" #include "chrome/browser/chrome_resource_bundle_helper.h" -@@ -608,6 +609,7 @@ struct MainFunction { +@@ -574,6 +575,7 @@ struct MainFunction { int (*function)(content::MainFunctionParams); }; @@ -18,15 +18,15 @@ index 9c1a840843c02..60c1643ec02b7 100644 // Initializes the user data dir. Must be called before InitializeLocalState(). void InitializeUserDataDir(base::CommandLine* command_line) { #if BUILDFLAG(IS_CHROMEOS_LACROS) -@@ -691,6 +693,7 @@ void InitializeUserDataDir(base::CommandLine* command_line) { +@@ -657,6 +659,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 -@@ -852,6 +855,10 @@ ChromeMainDelegate::~ChromeMainDelegate() { + #if !BUILDFLAG(IS_ANDROID) + void InitLogging(const std::string& process_type) { +@@ -789,6 +792,10 @@ ChromeMainDelegate::~ChromeMainDelegate() { ChromeMainDelegate::~ChromeMainDelegate() = default; #endif // !BUILDFLAG(IS_ANDROID) @@ -37,7 +37,7 @@ index 9c1a840843c02..60c1643ec02b7 100644 std::optional ChromeMainDelegate::PostEarlyInitialization( InvokedIn invoked_in) { DUMP_WILL_BE_CHECK(base::ThreadPoolInstance::Get()); -@@ -877,7 +884,7 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( +@@ -814,7 +821,7 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( // future session's metrics. DeferBrowserMetrics(user_data_dir); @@ -46,7 +46,7 @@ index 9c1a840843c02..60c1643ec02b7 100644 // In the case the process is not the singleton process, the uninstall tasks // need to be executed here. A window will be displayed asking to close all // running instances. -@@ -1037,7 +1044,8 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( +@@ -961,7 +968,8 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( // Initializes the resource bundle and determines the locale. std::string actual_locale = LoadLocalState( @@ -56,7 +56,7 @@ index 9c1a840843c02..60c1643ec02b7 100644 chrome_feature_list_creator->SetApplicationLocale(actual_locale); chrome_feature_list_creator->OverrideCachedUIStrings(); -@@ -1054,6 +1062,8 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( +@@ -978,6 +986,8 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( new net::NetworkChangeNotifierFactoryAndroid()); #endif @@ -65,7 +65,7 @@ index 9c1a840843c02..60c1643ec02b7 100644 if (base::FeatureList::IsEnabled( features::kWriteBasicSystemProfileToPersistentHistogramsFile)) { bool record = true; -@@ -1064,6 +1074,7 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( +@@ -988,6 +998,7 @@ std::optional ChromeMainDelegate::PostEarlyInitialization( if (record) chrome_content_browser_client_->startup_data()->RecordCoreSystemProfile(); } @@ -73,7 +73,7 @@ index 9c1a840843c02..60c1643ec02b7 100644 #if BUILDFLAG(IS_ANDROID) UmaSessionStats::OnStartup(); -@@ -1107,8 +1118,8 @@ void ChromeMainDelegate::CreateThreadPool(std::string_view name) { +@@ -1031,8 +1042,8 @@ void ChromeMainDelegate::CreateThreadPool(std::string_view name) { std::make_unique()); // `ChromeMainDelegateAndroid::PreSandboxStartup` creates the profiler a little @@ -84,7 +84,7 @@ index 9c1a840843c02..60c1643ec02b7 100644 // Start the sampling profiler as early as possible - namely, once the thread // pool has been created. sampling_profiler_ = std::make_unique(); -@@ -1515,6 +1526,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1439,6 +1450,7 @@ void ChromeMainDelegate::PreSandboxStartup() { std::string process_type = command_line.GetSwitchValueASCII(switches::kProcessType); @@ -92,31 +92,15 @@ index 9c1a840843c02..60c1643ec02b7 100644 crash_reporter::InitializeCrashKeys(); #if BUILDFLAG(IS_POSIX) -@@ -1525,6 +1537,7 @@ void ChromeMainDelegate::PreSandboxStartup() { - InitMacCrashReporter(command_line, process_type); - SetUpInstallerPreferences(command_line); - #endif -+#endif // !BUILDFLAG(ENABLE_CEF) - - #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) -@@ -1544,6 +1558,7 @@ void ChromeMainDelegate::PreSandboxStartup() { - if (initialize_user_data_dir) { +@@ -1454,6 +1466,7 @@ void ChromeMainDelegate::PreSandboxStartup() { + if (chrome::ProcessNeedsProfileDir(process_type)) { 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 -@@ -1695,7 +1710,8 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1605,7 +1618,8 @@ void ChromeMainDelegate::PreSandboxStartup() { #else const std::string loaded_locale = ui::ResourceBundle::InitSharedInstanceWithLocale( @@ -126,7 +110,7 @@ index 9c1a840843c02..60c1643ec02b7 100644 base::FilePath resources_pack_path; base::PathService::Get(chrome::FILE_RESOURCES_PACK, &resources_pack_path); -@@ -1725,6 +1741,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1635,6 +1649,7 @@ void ChromeMainDelegate::PreSandboxStartup() { CHECK(!loaded_locale.empty()) << "Locale could not be found for " << locale; } @@ -134,7 +118,7 @@ index 9c1a840843c02..60c1643ec02b7 100644 #if BUILDFLAG(IS_POSIX) && !BUILDFLAG(IS_MAC) // Zygote needs to call InitCrashReporter() in RunZygote(). if (process_type != switches::kZygoteProcess && -@@ -1761,6 +1778,7 @@ void ChromeMainDelegate::PreSandboxStartup() { +@@ -1671,6 +1686,7 @@ void ChromeMainDelegate::PreSandboxStartup() { // After all the platform Breakpads have been initialized, store the command // line for crash reporting. crash_keys::SetCrashKeysFromCommandLine(command_line); @@ -142,7 +126,7 @@ index 9c1a840843c02..60c1643ec02b7 100644 #if BUILDFLAG(ENABLE_PDF) MaybePatchGdiGetFontData(); -@@ -1888,6 +1906,7 @@ void ChromeMainDelegate::ZygoteForked() { +@@ -1791,6 +1807,7 @@ void ChromeMainDelegate::ZygoteForked() { SetUpProfilingShutdownHandler(); } @@ -150,7 +134,7 @@ index 9c1a840843c02..60c1643ec02b7 100644 // Needs to be called after we have chrome::DIR_USER_DATA. BrowserMain sets // this up for the browser process in a different manner. const base::CommandLine* command_line = -@@ -1900,6 +1919,7 @@ void ChromeMainDelegate::ZygoteForked() { +@@ -1803,6 +1820,7 @@ void ChromeMainDelegate::ZygoteForked() { // Reset the command line for the newly spawned process. crash_keys::SetCrashKeysFromCommandLine(*command_line); @@ -158,7 +142,7 @@ index 9c1a840843c02..60c1643ec02b7 100644 } #endif // BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) -@@ -2008,6 +2028,7 @@ void ChromeMainDelegate::InitializeMemorySystem() { +@@ -1913,6 +1931,7 @@ void ChromeMainDelegate::InitializeMemorySystem() { : memory_system::DispatcherParameters:: AllocationTraceRecorderInclusion::kIgnore; @@ -166,7 +150,7 @@ index 9c1a840843c02..60c1643ec02b7 100644 memory_system::Initializer() .SetGwpAsanParameters(gwp_asan_boost_sampling, process_type) .SetProfilingClientParameters(chrome::GetChannel(), -@@ -2015,5 +2036,5 @@ void ChromeMainDelegate::InitializeMemorySystem() { +@@ -1920,5 +1939,5 @@ void ChromeMainDelegate::InitializeMemorySystem() { .SetDispatcherParameters(memory_system::DispatcherParameters:: PoissonAllocationSamplerInclusion::kEnforce, allocation_recorder_inclusion, process_type) @@ -248,10 +232,10 @@ index ac1361bd6bc2e..a303ca169c7f7 100644 base::PathService::OverrideAndCreateIfNeeded( diff --git chrome/browser/chrome_browser_main.cc chrome/browser/chrome_browser_main.cc -index b85539a24653f..48c74152428cf 100644 +index a39ad24ec4f13..184c4532aa88f 100644 --- chrome/browser/chrome_browser_main.cc +++ chrome/browser/chrome_browser_main.cc -@@ -53,6 +53,7 @@ +@@ -52,6 +52,7 @@ #include "build/build_config.h" #include "build/chromeos_buildflags.h" #include "cc/base/switches.h" @@ -259,7 +243,7 @@ index b85539a24653f..48c74152428cf 100644 #include "chrome/browser/about_flags.h" #include "chrome/browser/active_use_util.h" #include "chrome/browser/after_startup_task_utils.h" -@@ -530,7 +531,7 @@ void ProcessSingletonNotificationCallbackImpl( +@@ -527,7 +528,7 @@ void ProcessSingletonNotificationCallbackImpl( return; } @@ -268,7 +252,7 @@ index b85539a24653f..48c74152428cf 100644 // The uninstall command-line switch is handled by the origin process; see // ChromeMainDelegate::PostEarlyInitialization(...). The other process won't // be able to become the singleton process and will display a window asking -@@ -843,7 +844,7 @@ int ChromeBrowserMainParts::PreEarlyInitialization() { +@@ -842,7 +843,7 @@ int ChromeBrowserMainParts::PreEarlyInitialization() { return content::RESULT_CODE_NORMAL_EXIT; } @@ -277,7 +261,7 @@ index b85539a24653f..48c74152428cf 100644 // If we are running stale binaries then relaunch and exit immediately. if (upgrade_util::IsRunningOldChrome()) { if (!upgrade_util::RelaunchChromeBrowser( -@@ -856,7 +857,7 @@ int ChromeBrowserMainParts::PreEarlyInitialization() { +@@ -855,7 +856,7 @@ int ChromeBrowserMainParts::PreEarlyInitialization() { // result in browser startup bailing. return chrome::RESULT_CODE_NORMAL_EXIT_UPGRADE_RELAUNCHED; } @@ -286,7 +270,7 @@ index b85539a24653f..48c74152428cf 100644 return load_local_state_result; } -@@ -966,7 +967,7 @@ int ChromeBrowserMainParts::OnLocalStateLoaded( +@@ -965,7 +966,7 @@ int ChromeBrowserMainParts::OnLocalStateLoaded( browser_process_->local_state()); platform_management_service->RefreshCache(base::NullCallback()); @@ -295,7 +279,7 @@ index b85539a24653f..48c74152428cf 100644 if (first_run::IsChromeFirstRun()) { bool stats_default; if (GoogleUpdateSettings::GetCollectStatsConsentDefault(&stats_default)) { -@@ -979,7 +980,7 @@ int ChromeBrowserMainParts::OnLocalStateLoaded( +@@ -978,7 +979,7 @@ int ChromeBrowserMainParts::OnLocalStateLoaded( : metrics::EnableMetricsDefault::OPT_IN); } } @@ -304,7 +288,7 @@ index b85539a24653f..48c74152428cf 100644 std::string locale = startup_data_->chrome_feature_list_creator()->actual_locale(); -@@ -1012,6 +1013,7 @@ int ChromeBrowserMainParts::ApplyFirstRunPrefs() { +@@ -1011,6 +1012,7 @@ int ChromeBrowserMainParts::ApplyFirstRunPrefs() { #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) master_prefs_ = std::make_unique(); @@ -312,7 +296,7 @@ index b85539a24653f..48c74152428cf 100644 std::unique_ptr installer_initial_prefs = startup_data_->chrome_feature_list_creator()->TakeInitialPrefs(); if (!installer_initial_prefs) -@@ -1045,6 +1047,7 @@ int ChromeBrowserMainParts::ApplyFirstRunPrefs() { +@@ -1044,6 +1046,7 @@ int ChromeBrowserMainParts::ApplyFirstRunPrefs() { master_prefs_->confirm_to_quit); } #endif // BUILDFLAG(IS_MAC) @@ -320,7 +304,7 @@ index b85539a24653f..48c74152428cf 100644 #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) return content::RESULT_CODE_NORMAL_EXIT; } -@@ -1106,6 +1109,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { +@@ -1105,6 +1108,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { browser_process_->browser_policy_connector()->OnResourceBundleCreated(); @@ -328,7 +312,7 @@ index b85539a24653f..48c74152428cf 100644 // Android does first run in Java instead of native. // Chrome OS has its own out-of-box-experience code. #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) -@@ -1127,6 +1131,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { +@@ -1126,6 +1130,7 @@ int ChromeBrowserMainParts::PreCreateThreadsImpl() { #endif // BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) } #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) @@ -336,7 +320,7 @@ index b85539a24653f..48c74152428cf 100644 #if BUILDFLAG(IS_MAC) #if defined(ARCH_CPU_X86_64) -@@ -1498,6 +1503,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1497,6 +1502,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { browser_process_->PreMainMessageLoopRun(); #if BUILDFLAG(IS_WIN) @@ -344,7 +328,7 @@ index b85539a24653f..48c74152428cf 100644 // If the command line specifies 'uninstall' then we need to work here // unless we detect another chrome browser running. if (base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kUninstall)) { -@@ -1509,6 +1515,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1508,6 +1514,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { return ChromeBrowserMainPartsWin::HandleIconsCommands( *base::CommandLine::ForCurrentProcess()); } @@ -352,7 +336,7 @@ index b85539a24653f..48c74152428cf 100644 ui::SelectFileDialog::SetFactory( std::make_unique()); -@@ -1534,6 +1541,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1530,6 +1537,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { } #endif // BUILDFLAG(CHROME_FOR_TESTING) @@ -360,7 +344,7 @@ index b85539a24653f..48c74152428cf 100644 if (base::CommandLine::ForCurrentProcess()->HasSwitch( switches::kMakeDefaultBrowser)) { bool is_managed = g_browser_process->local_state()->IsManagedPreference( -@@ -1547,18 +1555,22 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1543,18 +1551,22 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { ? static_cast(content::RESULT_CODE_NORMAL_EXIT) : static_cast(chrome::RESULT_CODE_SHELL_INTEGRATION_FAILED); } @@ -383,7 +367,7 @@ index b85539a24653f..48c74152428cf 100644 #if !BUILDFLAG(IS_ANDROID) && BUILDFLAG(ENABLE_DOWNGRADE_PROCESSING) // Begin relaunch processing immediately if User Data migration is required -@@ -1597,7 +1609,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1593,7 +1605,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { } #endif // !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS) @@ -392,7 +376,7 @@ index b85539a24653f..48c74152428cf 100644 // Check if there is any machine level Chrome installed on the current // machine. If yes and the current Chrome process is user level, we do not // allow the user level Chrome to run. So we notify the user and uninstall -@@ -1606,7 +1618,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1602,7 +1614,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { // obtained but before potentially creating the first run sentinel). if (ChromeBrowserMainPartsWin::CheckMachineLevelInstall()) return chrome::RESULT_CODE_MACHINE_LEVEL_INSTALL_EXISTS; @@ -401,7 +385,7 @@ index b85539a24653f..48c74152428cf 100644 // Desktop construction occurs here, (required before profile creation). PreProfileInit(); -@@ -1679,6 +1691,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1675,6 +1687,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { // Call `PostProfileInit()`and set it up for profiles created later. profile_init_manager_ = std::make_unique(this, profile); @@ -409,7 +393,7 @@ index b85539a24653f..48c74152428cf 100644 #if !BUILDFLAG(IS_ANDROID) && !BUILDFLAG(IS_CHROMEOS_ASH) // Execute first run specific code after the PrefService has been initialized // and preferences have been registered since some of the import code depends -@@ -1718,6 +1731,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1714,6 +1727,7 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { *base::CommandLine::ForCurrentProcess()); } #endif // BUILDFLAG(IS_WIN) @@ -417,7 +401,7 @@ index b85539a24653f..48c74152428cf 100644 // Configure modules that need access to resources. net::NetModule::SetResourceProvider(ChromeNetResourceProvider); -@@ -1809,6 +1823,11 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1805,6 +1819,11 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { g_browser_process->profile_manager()->GetLastOpenedProfiles(); } #endif // BUILDFLAG(IS_CHROMEOS_ASH) @@ -429,7 +413,7 @@ index b85539a24653f..48c74152428cf 100644 // This step is costly. if (browser_creator_->Start(*base::CommandLine::ForCurrentProcess(), base::FilePath(), profile_info, -@@ -1841,11 +1860,14 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { +@@ -1837,11 +1856,14 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunImpl() { // Create the RunLoop for MainMessageLoopRun() to use and transfer // ownership of the browser's lifetime to the BrowserProcess. @@ -481,7 +465,7 @@ index e26e3625c99c8..c0d4a95607e37 100644 +#endif } diff --git chrome/browser/chrome_content_browser_client.cc chrome/browser/chrome_content_browser_client.cc -index e5ce608907f72..ce49d755ce623 100644 +index 3ca6369dd6981..351d5e20dade6 100644 --- chrome/browser/chrome_content_browser_client.cc +++ chrome/browser/chrome_content_browser_client.cc @@ -48,6 +48,7 @@ @@ -492,7 +476,7 @@ index e5ce608907f72..ce49d755ce623 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" -@@ -1552,6 +1553,8 @@ ChromeContentBrowserClient::GetPopupNavigationDelegateFactoryForTesting() { +@@ -1514,6 +1515,8 @@ ChromeContentBrowserClient::GetPopupNavigationDelegateFactoryForTesting() { } ChromeContentBrowserClient::ChromeContentBrowserClient() { @@ -501,7 +485,7 @@ index e5ce608907f72..ce49d755ce623 100644 #if BUILDFLAG(ENABLE_PLUGINS) extra_parts_.push_back( std::make_unique()); -@@ -1589,6 +1592,11 @@ ChromeContentBrowserClient::~ChromeContentBrowserClient() { +@@ -1551,6 +1554,11 @@ ChromeContentBrowserClient::~ChromeContentBrowserClient() { } } @@ -513,7 +497,7 @@ index e5ce608907f72..ce49d755ce623 100644 // static void ChromeContentBrowserClient::RegisterLocalStatePrefs( PrefRegistrySimple* registry) { -@@ -3986,28 +3994,25 @@ bool UpdatePreferredColorScheme(WebPreferences* web_prefs, +@@ -3969,28 +3977,25 @@ bool UpdatePreferredColorScheme(WebPreferences* web_prefs, web_prefs->preferred_color_scheme; } #else @@ -559,7 +543,7 @@ index e5ce608907f72..ce49d755ce623 100644 #endif // BUILDFLAG(IS_ANDROID) // Reauth WebUI doesn't support dark mode yet because it shares the dialog -@@ -4761,9 +4766,11 @@ void ChromeContentBrowserClient::BrowserURLHandlerCreated( +@@ -4744,9 +4749,11 @@ void ChromeContentBrowserClient::BrowserURLHandlerCreated( &search::HandleNewTabURLReverseRewrite); #endif // BUILDFLAG(IS_ANDROID) @@ -571,7 +555,7 @@ index e5ce608907f72..ce49d755ce623 100644 } base::FilePath ChromeContentBrowserClient::GetDefaultDownloadDirectory() { -@@ -6900,7 +6907,7 @@ void ChromeContentBrowserClient::OnNetworkServiceCreated( +@@ -6883,7 +6890,7 @@ void ChromeContentBrowserClient::OnNetworkServiceCreated( #endif } @@ -580,7 +564,7 @@ index e5ce608907f72..ce49d755ce623 100644 content::BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -6918,6 +6925,8 @@ void ChromeContentBrowserClient::ConfigureNetworkContextParams( +@@ -6901,6 +6908,8 @@ void ChromeContentBrowserClient::ConfigureNetworkContextParams( network_context_params->user_agent = GetUserAgentBasedOnPolicy(context); network_context_params->accept_language = GetApplicationLocale(); } @@ -589,7 +573,7 @@ index e5ce608907f72..ce49d755ce623 100644 } std::vector -@@ -8072,11 +8081,11 @@ void ChromeContentBrowserClient::OnKeepaliveRequestStarted( +@@ -8063,11 +8072,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 +587,7 @@ index e5ce608907f72..ce49d755ce623 100644 FROM_HERE, keepalive_deadline_ - now, base::BindOnce( &ChromeContentBrowserClient::OnKeepaliveTimerFired, -@@ -8098,7 +8107,8 @@ void ChromeContentBrowserClient::OnKeepaliveRequestFinished() { +@@ -8089,7 +8098,8 @@ void ChromeContentBrowserClient::OnKeepaliveRequestFinished() { --num_keepalive_requests_; if (num_keepalive_requests_ == 0) { DVLOG(1) << "Stopping the keepalive timer"; @@ -613,7 +597,7 @@ index e5ce608907f72..ce49d755ce623 100644 // This deletes the keep alive handle attached to the timer function and // unblock the shutdown sequence. } -@@ -8262,7 +8272,7 @@ void ChromeContentBrowserClient::OnKeepaliveTimerFired( +@@ -8263,7 +8273,7 @@ void ChromeContentBrowserClient::OnKeepaliveTimerFired( const auto now = base::TimeTicks::Now(); const auto then = keepalive_deadline_; if (now < then) { @@ -623,10 +607,10 @@ index e5ce608907f72..ce49d755ce623 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 8a96e0b26a27a..2442bf7e7f88c 100644 +index b33a4b957d997..57942809579bf 100644 --- chrome/browser/chrome_content_browser_client.h +++ chrome/browser/chrome_content_browser_client.h -@@ -148,6 +148,8 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { +@@ -149,6 +149,8 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { ~ChromeContentBrowserClient() override; @@ -635,7 +619,7 @@ index 8a96e0b26a27a..2442bf7e7f88c 100644 // TODO(crbug.com/41356866): This file is about calls from content/ out // to chrome/ to get values or notify about events, but both of these // functions are from chrome/ to chrome/ and don't involve content/ at all. -@@ -707,7 +709,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { +@@ -713,7 +715,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { override; void OnNetworkServiceCreated( network::mojom::NetworkService* network_service) override; @@ -644,7 +628,7 @@ index 8a96e0b26a27a..2442bf7e7f88c 100644 content::BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -1255,7 +1257,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { +@@ -1272,7 +1274,7 @@ class ChromeContentBrowserClient : public content::ContentBrowserClient { #if !BUILDFLAG(IS_ANDROID) uint64_t num_keepalive_requests_ = 0; @@ -654,7 +638,7 @@ index 8a96e0b26a27a..2442bf7e7f88c 100644 #endif diff --git chrome/browser/prefs/browser_prefs.cc chrome/browser/prefs/browser_prefs.cc -index e408ae181c2eb..8a68d4556adf8 100644 +index f74be30365805..74be892e89645 100644 --- chrome/browser/prefs/browser_prefs.cc +++ chrome/browser/prefs/browser_prefs.cc @@ -16,6 +16,7 @@ @@ -665,7 +649,7 @@ index e408ae181c2eb..8a68d4556adf8 100644 #include "chrome/browser/about_flags.h" #include "chrome/browser/accessibility/accessibility_labels_service.h" #include "chrome/browser/accessibility/invert_bubble_prefs.h" -@@ -213,6 +214,10 @@ +@@ -212,6 +213,10 @@ #include "extensions/browser/pref_names.h" #endif // BUILDFLAG(ENABLE_EXTENSIONS_CORE) @@ -676,7 +660,7 @@ index e408ae181c2eb..8a68d4556adf8 100644 #if BUILDFLAG(ENABLE_EXTENSIONS) #include "chrome/browser/accessibility/animation_policy_prefs.h" #include "chrome/browser/apps/platform_apps/shortcut_manager.h" -@@ -1801,7 +1806,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1863,7 +1868,8 @@ void RegisterLocalState(PrefRegistrySimple* registry) { #endif // BUILDFLAG(GOOGLE_CHROME_BRANDING) #endif // BUILDFLAG(IS_WIN) @@ -686,7 +670,7 @@ index e408ae181c2eb..8a68d4556adf8 100644 downgrade::RegisterPrefs(registry); #endif -@@ -1854,6 +1860,11 @@ void RegisterLocalState(PrefRegistrySimple* registry) { +@@ -1916,6 +1922,11 @@ void RegisterLocalState(PrefRegistrySimple* registry) { // This is intentionally last. RegisterLocalStatePrefsForMigration(registry); @@ -698,7 +682,7 @@ index e408ae181c2eb..8a68d4556adf8 100644 } // Register prefs applicable to all profiles. -@@ -2305,6 +2316,10 @@ void RegisterUserProfilePrefs(user_prefs::PrefRegistrySyncable* registry, +@@ -2368,6 +2379,10 @@ void RegisterUserProfilePrefs(user_prefs::PrefRegistrySyncable* registry, const std::string& locale) { RegisterProfilePrefs(registry, locale); diff --git a/patch/patches/chrome_runtime_views.patch b/patch/patches/chrome_runtime_views.patch index daeaa4c0e..92a387d65 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 86af74569f013..99870eb532f35 100644 +index 14e7065d7dbd6..b01501b4253a3 100644 --- chrome/browser/ui/browser_command_controller.cc +++ chrome/browser/ui/browser_command_controller.cc -@@ -416,6 +416,7 @@ bool BrowserCommandController::ExecuteCommandWithDisposition( +@@ -414,6 +414,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 86af74569f013..99870eb532f35 100644 return false; } -@@ -432,6 +433,13 @@ bool BrowserCommandController::ExecuteCommandWithDisposition( +@@ -430,6 +431,13 @@ bool BrowserCommandController::ExecuteCommandWithDisposition( DCHECK(command_updater_.IsCommandEnabled(id)) << "Invalid/disabled command " << id; @@ -24,7 +24,7 @@ index 86af74569f013..99870eb532f35 100644 // The order of commands in this switch statement must match the function // declaration order in browser.h! switch (id) { -@@ -1206,11 +1214,13 @@ void BrowserCommandController::TabRestoreServiceLoaded( +@@ -1207,11 +1215,13 @@ void BrowserCommandController::TabRestoreServiceLoaded( // BrowserCommandController, private: bool BrowserCommandController::IsShowingMainUI() { @@ -41,10 +41,10 @@ index 86af74569f013..99870eb532f35 100644 void BrowserCommandController::InitCommandState() { diff --git chrome/browser/ui/toolbar/app_menu_model.cc chrome/browser/ui/toolbar/app_menu_model.cc -index 57fb7d50fafa5..bf43ebfba84b5 100644 +index feb6d2e1f5ab1..a65e1c938c116 100644 --- chrome/browser/ui/toolbar/app_menu_model.cc +++ chrome/browser/ui/toolbar/app_menu_model.cc -@@ -716,10 +716,12 @@ FindAndEditSubMenuModel::FindAndEditSubMenuModel( +@@ -717,10 +717,12 @@ FindAndEditSubMenuModel::FindAndEditSubMenuModel( ui::SimpleMenuModel::Delegate* delegate) : SimpleMenuModel(delegate) { AddItemWithStringIdAndVectorIcon(this, IDC_FIND, IDS_FIND, kSearchMenuIcon); @@ -57,7 +57,7 @@ index 57fb7d50fafa5..bf43ebfba84b5 100644 } class SaveAndShareSubMenuModel : public ui::SimpleMenuModel { -@@ -784,6 +786,57 @@ SaveAndShareSubMenuModel::SaveAndShareSubMenuModel( +@@ -785,6 +787,57 @@ SaveAndShareSubMenuModel::SaveAndShareSubMenuModel( } } @@ -115,7 +115,7 @@ index 57fb7d50fafa5..bf43ebfba84b5 100644 } // namespace //////////////////////////////////////////////////////////////////////////////// -@@ -1688,7 +1741,7 @@ bool AppMenuModel::IsCommandIdChecked(int command_id) const { +@@ -1700,7 +1753,7 @@ bool AppMenuModel::IsCommandIdChecked(int command_id) const { return false; } @@ -124,7 +124,7 @@ index 57fb7d50fafa5..bf43ebfba84b5 100644 GlobalError* error = GlobalErrorServiceFactory::GetForProfile(browser_->profile()) ->GetGlobalErrorByMenuItemCommandID(command_id); -@@ -1704,6 +1757,30 @@ bool AppMenuModel::IsCommandIdEnabled(int command_id) const { +@@ -1716,6 +1769,30 @@ bool AppMenuModel::IsCommandIdEnabled(int command_id) const { } } @@ -155,7 +155,7 @@ index 57fb7d50fafa5..bf43ebfba84b5 100644 bool AppMenuModel::IsCommandIdAlerted(int command_id) const { if (command_id == IDC_VIEW_PASSWORDS || command_id == IDC_SHOW_PASSWORD_MANAGER) { -@@ -1860,8 +1937,10 @@ void AppMenuModel::Build() { +@@ -1872,8 +1949,10 @@ void AppMenuModel::Build() { IDS_CLEAR_BROWSING_DATA, kTrashCanRefreshIcon); @@ -166,7 +166,7 @@ index 57fb7d50fafa5..bf43ebfba84b5 100644 AddSeparator(ui::NORMAL_SEPARATOR); AddItemWithStringIdAndVectorIcon(this, IDC_PRINT, IDS_PRINT, kPrintMenuIcon); -@@ -1964,6 +2043,11 @@ void AppMenuModel::Build() { +@@ -1976,6 +2055,11 @@ void AppMenuModel::Build() { } #endif // !BUILDFLAG(IS_CHROMEOS_ASH) @@ -219,10 +219,10 @@ index 81455e1765477..7357122b31b1d 100644 return gfx::Rect(); } diff --git chrome/browser/ui/views/frame/browser_frame.cc chrome/browser/ui/views/frame/browser_frame.cc -index ddf91f2444718..59a6057bda9f3 100644 +index 711d389229e08..780e1b9201c72 100644 --- chrome/browser/ui/views/frame/browser_frame.cc +++ chrome/browser/ui/views/frame/browser_frame.cc -@@ -114,15 +114,25 @@ ui::ColorProviderKey::SchemeVariant GetSchemeVariant( +@@ -115,15 +115,25 @@ ui::ColorProviderKey::SchemeVariant GetSchemeVariant( //////////////////////////////////////////////////////////////////////////////// // BrowserFrame, public: @@ -250,7 +250,7 @@ index ddf91f2444718..59a6057bda9f3 100644 } BrowserFrame::~BrowserFrame() {} -@@ -228,10 +238,20 @@ void BrowserFrame::LayoutWebAppWindowTitle( +@@ -229,10 +239,20 @@ void BrowserFrame::LayoutWebAppWindowTitle( } int BrowserFrame::GetTopInset() const { @@ -271,7 +271,7 @@ index ddf91f2444718..59a6057bda9f3 100644 browser_frame_view_->UpdateThrobber(running); } -@@ -240,6 +260,8 @@ BrowserNonClientFrameView* BrowserFrame::GetFrameView() const { +@@ -241,6 +261,8 @@ BrowserNonClientFrameView* BrowserFrame::GetFrameView() const { } bool BrowserFrame::UseCustomFrame() const { @@ -280,12 +280,12 @@ index ddf91f2444718..59a6057bda9f3 100644 return native_browser_frame_->UseCustomFrame(); } -@@ -253,20 +275,30 @@ bool BrowserFrame::ShouldDrawFrameHeader() const { - - void BrowserFrame::GetWindowPlacement(gfx::Rect* bounds, - ui::WindowShowState* show_state) const { +@@ -255,20 +277,30 @@ bool BrowserFrame::ShouldDrawFrameHeader() const { + void BrowserFrame::GetWindowPlacement( + gfx::Rect* bounds, + ui::mojom::WindowShowState* show_state) const { + if (!native_browser_frame_) { -+ *show_state = ui::SHOW_STATE_DEFAULT; ++ *show_state = ui::mojom::WindowShowState::kDefault; + return; + } return native_browser_frame_->GetWindowPlacement(bounds, show_state); @@ -311,7 +311,7 @@ index ddf91f2444718..59a6057bda9f3 100644 browser_frame_view_->OnBrowserViewInitViewsComplete(); } -@@ -367,6 +399,8 @@ ui::ColorProviderKey::ThemeInitializerSupplier* BrowserFrame::GetCustomTheme() +@@ -369,6 +401,8 @@ ui::ColorProviderKey::ThemeInitializerSupplier* BrowserFrame::GetCustomTheme() } void BrowserFrame::OnNativeWidgetWorkspaceChanged() { @@ -320,7 +320,7 @@ index ddf91f2444718..59a6057bda9f3 100644 chrome::SaveWindowWorkspace(browser_view_->browser(), GetWorkspace()); chrome::SaveWindowVisibleOnAllWorkspaces(browser_view_->browser(), IsVisibleOnAllWorkspaces()); -@@ -573,6 +607,13 @@ void BrowserFrame::SelectNativeTheme() { +@@ -575,6 +609,13 @@ void BrowserFrame::SelectNativeTheme() { return; } @@ -334,7 +334,7 @@ index ddf91f2444718..59a6057bda9f3 100644 // Ignore the system theme for web apps with window-controls-overlay as the // display_override so the web contents can blend with the overlay by using // the developer-provided theme color for a better experience. Context: -@@ -638,5 +679,8 @@ bool BrowserFrame::RegenerateFrameOnThemeChange( +@@ -640,5 +681,8 @@ bool BrowserFrame::RegenerateFrameOnThemeChange( } bool BrowserFrame::IsIncognitoBrowser() const { @@ -344,10 +344,10 @@ index ddf91f2444718..59a6057bda9f3 100644 return browser_view_->browser()->profile()->IsIncognitoProfile(); } diff --git chrome/browser/ui/views/frame/browser_frame.h chrome/browser/ui/views/frame/browser_frame.h -index 14a8a70d853f6..bf81594947886 100644 +index 532705a04c47b..0272f27596df6 100644 --- chrome/browser/ui/views/frame/browser_frame.h +++ chrome/browser/ui/views/frame/browser_frame.h -@@ -58,6 +58,7 @@ enum class TabDragKind { +@@ -59,6 +59,7 @@ enum class TabDragKind { // This is a virtual interface that allows system specific browser frames. class BrowserFrame : public views::Widget, public views::ContextMenuController { public: @@ -355,7 +355,7 @@ index 14a8a70d853f6..bf81594947886 100644 explicit BrowserFrame(BrowserView* browser_view); BrowserFrame(const BrowserFrame&) = delete; -@@ -137,7 +138,7 @@ class BrowserFrame : public views::Widget, public views::ContextMenuController { +@@ -138,7 +139,7 @@ class BrowserFrame : public views::Widget, public views::ContextMenuController { // ThemeService calls this when a user has changed their theme, indicating // that it's time to redraw everything. @@ -364,7 +364,7 @@ index 14a8a70d853f6..bf81594947886 100644 // views::Widget: views::internal::RootView* CreateRootView() override; -@@ -170,22 +171,26 @@ class BrowserFrame : public views::Widget, public views::ContextMenuController { +@@ -171,22 +172,26 @@ class BrowserFrame : public views::Widget, public views::ContextMenuController { void SetTabDragKind(TabDragKind tab_drag_kind); TabDragKind tab_drag_kind() const { return tab_drag_kind_; } @@ -397,10 +397,10 @@ 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 c3241e411d46d..f3842551f3c75 100644 +index 3b1fa8ba79fcb..77e681c8cbdc0 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 = { +@@ -367,10 +367,6 @@ constexpr base::FeatureParam kLoadingTabAnimationFrameDelay = { &kChangeFrameRateOfLoadingTabAnimation, "loading_tab_animation_frame_delay", base::Milliseconds(30)}; @@ -411,7 +411,7 @@ index c3241e411d46d..f3842551f3c75 100644 #if BUILDFLAG(IS_CHROMEOS_ASH) // UMA histograms that record animation smoothness for tab loading animation. constexpr char kTabLoadingSmoothnessHistogramName[] = -@@ -769,6 +765,14 @@ class BrowserViewLayoutDelegateImpl : public BrowserViewLayoutDelegate { +@@ -770,6 +766,14 @@ class BrowserViewLayoutDelegateImpl : public BrowserViewLayoutDelegate { return browser_view_->frame()->GetTopInset() - browser_view_->y(); } @@ -426,7 +426,7 @@ index c3241e411d46d..f3842551f3c75 100644 bool IsToolbarVisible() const override { return browser_view_->IsToolbarVisible(); } -@@ -920,11 +924,21 @@ class BrowserView::AccessibilityModeObserver : public ui::AXModeObserver { +@@ -921,11 +925,21 @@ class BrowserView::AccessibilityModeObserver : public ui::AXModeObserver { /////////////////////////////////////////////////////////////////////////////// // BrowserView, public: @@ -449,7 +449,7 @@ index c3241e411d46d..f3842551f3c75 100644 SetShowIcon( ::ShouldShowWindowIcon(browser_.get(), AppUsesWindowControlsOverlay())); -@@ -1014,8 +1028,15 @@ BrowserView::BrowserView(std::unique_ptr browser) +@@ -1015,8 +1029,15 @@ BrowserView::BrowserView(std::unique_ptr browser) contents_container->SetLayoutManager(std::make_unique( devtools_web_view_, contents_web_view_, watermark_view_)); @@ -508,9 +508,9 @@ index c3241e411d46d..f3842551f3c75 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. -@@ -1683,6 +1709,13 @@ gfx::Point BrowserView::GetThemeOffsetFromBrowserView() const { + // These are raw pointers to child views, so they need to be set to null + // before `RemoveAllChildViews()` is called to avoid dangling. +@@ -1704,6 +1730,13 @@ gfx::Point BrowserView::GetThemeOffsetFromBrowserView() const { ThemeProperties::kFrameHeightAboveTabs - browser_view_origin.y()); } @@ -524,7 +524,7 @@ index c3241e411d46d..f3842551f3c75 100644 // static: BrowserView::DevToolsDockedPlacement BrowserView::GetDevToolsDockedPlacement( const gfx::Rect& contents_webview_bounds, -@@ -2097,9 +2130,14 @@ void BrowserView::OnExclusiveAccessUserInput() { +@@ -2118,9 +2151,14 @@ void BrowserView::OnExclusiveAccessUserInput() { bool BrowserView::ShouldHideUIForFullscreen() const { // Immersive mode needs UI for the slide-down top panel. @@ -540,7 +540,7 @@ index c3241e411d46d..f3842551f3c75 100644 return frame_->GetFrameView()->ShouldHideTopUIForFullscreen(); } -@@ -3293,7 +3331,8 @@ views::View* BrowserView::GetTopContainer() { +@@ -3308,7 +3346,8 @@ views::View* BrowserView::GetTopContainer() { } DownloadBubbleUIController* BrowserView::GetDownloadBubbleUIController() { @@ -550,7 +550,7 @@ index c3241e411d46d..f3842551f3c75 100644 if (auto* download_button = toolbar_button_provider_->GetDownloadButton()) return download_button->bubble_controller(); return nullptr; -@@ -3861,7 +3900,8 @@ void BrowserView::ReparentTopContainerForEndOfImmersive() { +@@ -3876,7 +3915,8 @@ void BrowserView::ReparentTopContainerForEndOfImmersive() { if (top_container()->parent() == this) return; @@ -560,7 +560,7 @@ index c3241e411d46d..f3842551f3c75 100644 top_container()->DestroyLayer(); AddChildViewAt(top_container(), 0); EnsureFocusOrder(); -@@ -4348,11 +4388,38 @@ void BrowserView::GetAccessiblePanes(std::vector* panes) { +@@ -4366,11 +4406,38 @@ void BrowserView::GetAccessiblePanes(std::vector* panes) { bool BrowserView::ShouldDescendIntoChildForEventHandling( gfx::NativeView child, const gfx::Point& location) { @@ -601,7 +601,7 @@ index c3241e411d46d..f3842551f3c75 100644 // Draggable regions are defined relative to the web contents. gfx::Point point_in_contents_web_view_coords(location); views::View::ConvertPointToTarget(GetWidget()->GetRootView(), -@@ -4361,7 +4428,7 @@ bool BrowserView::ShouldDescendIntoChildForEventHandling( +@@ -4379,7 +4446,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 c3241e411d46d..f3842551f3c75 100644 point_in_contents_web_view_coords.x(), point_in_contents_web_view_coords.y()) || WidgetOwnedByAnchorContainsPoint(point_in_contents_web_view_coords); -@@ -4472,8 +4539,10 @@ void BrowserView::Layout(PassKey) { +@@ -4490,8 +4557,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 c3241e411d46d..f3842551f3c75 100644 // Some of the situations when the BrowserView is laid out are: // - Enter/exit immersive fullscreen mode. -@@ -4539,6 +4608,11 @@ void BrowserView::AddedToWidget() { +@@ -4557,6 +4626,11 @@ void BrowserView::AddedToWidget() { SetThemeProfileForWindow(GetNativeWindow(), browser_->profile()); #endif @@ -635,7 +635,7 @@ index c3241e411d46d..f3842551f3c75 100644 toolbar_->Init(); // TODO(pbos): Investigate whether the side panels should be creatable when -@@ -4581,13 +4655,9 @@ void BrowserView::AddedToWidget() { +@@ -4599,13 +4673,9 @@ void BrowserView::AddedToWidget() { EnsureFocusOrder(); @@ -651,7 +651,7 @@ index c3241e411d46d..f3842551f3c75 100644 using_native_frame_ = frame_->ShouldUseNativeFrame(); MaybeInitializeWebUITabStrip(); -@@ -4951,7 +5021,8 @@ void BrowserView::ProcessFullscreen(bool fullscreen, const int64_t display_id) { +@@ -4967,7 +5037,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 c3241e411d46d..f3842551f3c75 100644 } void BrowserView::RequestFullscreen(bool fullscreen, int64_t display_id) { -@@ -5443,6 +5514,8 @@ Profile* BrowserView::GetProfile() { +@@ -5468,6 +5539,8 @@ Profile* BrowserView::GetProfile() { } void BrowserView::UpdateUIForTabFullscreen() { @@ -670,7 +670,7 @@ index c3241e411d46d..f3842551f3c75 100644 frame()->GetFrameView()->UpdateFullscreenTopUI(); } -@@ -5465,6 +5538,8 @@ void BrowserView::HideDownloadShelf() { +@@ -5490,6 +5563,8 @@ void BrowserView::HideDownloadShelf() { } bool BrowserView::CanUserExitFullscreen() const { @@ -680,10 +680,10 @@ index c3241e411d46d..f3842551f3c75 100644 } diff --git chrome/browser/ui/views/frame/browser_view.h chrome/browser/ui/views/frame/browser_view.h -index 6fa57160f7193..4e10786e2c5a4 100644 +index 6422f5dfe3e31..4412e63d411c1 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, +@@ -139,11 +139,16 @@ class BrowserView : public BrowserWindow, METADATA_HEADER(BrowserView, views::ClientView) public: @@ -700,7 +700,7 @@ index 6fa57160f7193..4e10786e2c5a4 100644 void set_frame(BrowserFrame* frame) { frame_ = frame; paint_as_active_subscription_ = -@@ -831,6 +836,10 @@ class BrowserView : public BrowserWindow, +@@ -838,6 +843,10 @@ class BrowserView : public BrowserWindow, void Copy(); void Paste(); @@ -711,7 +711,7 @@ index 6fa57160f7193..4e10786e2c5a4 100644 protected: // Enumerates where the devtools are docked relative to the browser's main // web contents. -@@ -854,6 +863,8 @@ class BrowserView : public BrowserWindow, +@@ -861,6 +870,8 @@ class BrowserView : public BrowserWindow, const gfx::Rect& contents_webview_bounds, const gfx::Rect& local_webview_container_bounds); @@ -721,7 +721,7 @@ index 6fa57160f7193..4e10786e2c5a4 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 80dcf5b08c67c..d0aef3fc40b07 100644 +index 148c255ec04d3..edce177e093ac 100644 --- chrome/browser/ui/views/frame/browser_view_layout.cc +++ chrome/browser/ui/views/frame/browser_view_layout.cc @@ -53,6 +53,10 @@ @@ -735,8 +735,8 @@ index 80dcf5b08c67c..d0aef3fc40b07 100644 using views::View; using web_modal::ModalDialogHostObserver; using web_modal::WebContentsModalDialogHost; -@@ -104,6 +108,10 @@ class BrowserViewLayout::WebContentsModalDialogHostViews - observer.OnHostDestroying(); +@@ -103,6 +107,10 @@ class BrowserViewLayout::WebContentsModalDialogHostViews + observer_list_.Notify(&ModalDialogHostObserver::OnHostDestroying); } + bool HasObservers() const { @@ -744,9 +744,9 @@ index 80dcf5b08c67c..d0aef3fc40b07 100644 + } + void NotifyPositionRequiresUpdate() { - for (ModalDialogHostObserver& observer : observer_list_) - observer.OnPositionRequiresUpdate(); -@@ -114,7 +122,7 @@ class BrowserViewLayout::WebContentsModalDialogHostViews + observer_list_.Notify(&ModalDialogHostObserver::OnPositionRequiresUpdate); + } +@@ -112,7 +120,7 @@ class BrowserViewLayout::WebContentsModalDialogHostViews views::View* view = browser_view_layout_->contents_container_; gfx::Rect rect = view->ConvertRectToWidget(view->GetLocalBounds()); const int middle_x = rect.x() + rect.width() / 2; @@ -755,16 +755,16 @@ index 80dcf5b08c67c..d0aef3fc40b07 100644 return gfx::Point(middle_x - size.width() / 2, top); } -@@ -162,7 +170,7 @@ class BrowserViewLayout::WebContentsModalDialogHostViews +@@ -135,7 +143,7 @@ class BrowserViewLayout::WebContentsModalDialogHostViews // universally. views::View* view = browser_view_layout_->contents_container_; gfx::Rect content_area = view->ConvertRectToWidget(view->GetLocalBounds()); - const int top = browser_view_layout_->dialog_top_y_; + const int top = GetDialogTopY(); return gfx::Size(content_area.width(), content_area.bottom() - top); - #endif } -@@ -192,6 +200,13 @@ class BrowserViewLayout::WebContentsModalDialogHostViews + +@@ -164,6 +172,13 @@ class BrowserViewLayout::WebContentsModalDialogHostViews return host_widget ? host_widget->GetNativeView() : nullptr; } @@ -778,7 +778,7 @@ index 80dcf5b08c67c..d0aef3fc40b07 100644 // Add/remove observer. void AddObserver(ModalDialogHostObserver* observer) override { observer_list_.AddObserver(observer); -@@ -513,6 +528,8 @@ void BrowserViewLayout::Layout(views::View* browser_view) { +@@ -477,6 +492,8 @@ void BrowserViewLayout::Layout(views::View* browser_view) { if (exclusive_access_bubble) exclusive_access_bubble->RepositionIfVisible(); @@ -787,7 +787,7 @@ index 80dcf5b08c67c..d0aef3fc40b07 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()); -@@ -526,6 +543,7 @@ void BrowserViewLayout::Layout(views::View* browser_view) { +@@ -490,6 +507,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 80dcf5b08c67c..d0aef3fc40b07 100644 } gfx::Size BrowserViewLayout::GetPreferredSize( -@@ -667,6 +685,13 @@ int BrowserViewLayout::LayoutWebUITabStrip(int top) { +@@ -631,6 +649,13 @@ int BrowserViewLayout::LayoutWebUITabStrip(int top) { int BrowserViewLayout::LayoutToolbar(int top) { TRACE_EVENT0("ui", "BrowserViewLayout::LayoutToolbar"); @@ -839,10 +839,10 @@ index 71445bfab1824..c77750ea2a820 100644 ContentsWebView::~ContentsWebView() { diff --git chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.cc chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.cc -index 9dddf71ef05bd..18c43631ea288 100644 +index 3489ec2810cdf..db6881a0e2923 100644 --- chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.cc +++ chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view.cc -@@ -619,6 +619,11 @@ PictureInPictureBrowserFrameView::PictureInPictureBrowserFrameView( +@@ -618,6 +618,11 @@ PictureInPictureBrowserFrameView::PictureInPictureBrowserFrameView( return window->GetProperty(chromeos::kWindowStateTypeKey); }))); #endif @@ -854,7 +854,7 @@ index 9dddf71ef05bd..18c43631ea288 100644 } PictureInPictureBrowserFrameView::~PictureInPictureBrowserFrameView() { -@@ -746,18 +751,42 @@ gfx::Rect PictureInPictureBrowserFrameView::GetWindowBoundsForClientBounds( +@@ -745,18 +750,42 @@ gfx::Rect PictureInPictureBrowserFrameView::GetWindowBoundsForClientBounds( int PictureInPictureBrowserFrameView::NonClientHitTest( const gfx::Point& point) { @@ -905,7 +905,7 @@ index 9dddf71ef05bd..18c43631ea288 100644 // Allow dragging and resizing the window. int window_component = GetHTComponentForFrame( -@@ -826,7 +855,8 @@ void PictureInPictureBrowserFrameView::Layout(PassKey) { +@@ -825,7 +854,8 @@ void PictureInPictureBrowserFrameView::Layout(PassKey) { gfx::Rect content_area = GetLocalBounds(); content_area.Inset(FrameBorderInsets()); gfx::Rect top_bar = content_area; @@ -940,7 +940,7 @@ index 33c6444869375..d74818698d81a 100644 LocationBarView* location_bar_view = browser_view_->GetLocationBarView(); CHECK(location_bar_view); diff --git chrome/browser/ui/views/page_action/page_action_icon_controller.cc chrome/browser/ui/views/page_action/page_action_icon_controller.cc -index 0bd4cfc52548b..8515cec793563 100644 +index 40993f5460555..3bf4fb49b71f3 100644 --- chrome/browser/ui/views/page_action/page_action_icon_controller.cc +++ chrome/browser/ui/views/page_action/page_action_icon_controller.cc @@ -98,6 +98,12 @@ void PageActionIconController::Init(const PageActionIconParams& params, @@ -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 212b3047f107b..942ed77d0eb3f 100644 +index a80a496c99a26..7cb24bf8505de 100644 --- chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc +++ chrome/browser/ui/views/tabs/browser_tab_strip_controller.cc -@@ -608,29 +608,41 @@ gfx::Range BrowserTabStripController::ListTabsInGroup( +@@ -604,29 +604,41 @@ gfx::Range BrowserTabStripController::ListTabsInGroup( } bool BrowserTabStripController::IsFrameCondensed() const { @@ -1003,10 +1003,10 @@ index 212b3047f107b..942ed77d0eb3f 100644 } diff --git chrome/browser/ui/views/toolbar/toolbar_view.cc chrome/browser/ui/views/toolbar/toolbar_view.cc -index 577215577d9ac..a390c9f279f76 100644 +index 49a6e89aa17f0..e7ab5815890b8 100644 --- chrome/browser/ui/views/toolbar/toolbar_view.cc +++ chrome/browser/ui/views/toolbar/toolbar_view.cc -@@ -195,7 +195,7 @@ class TabstripLikeBackground : public views::Background { +@@ -194,7 +194,7 @@ class TabstripLikeBackground : public views::Background { void Paint(gfx::Canvas* canvas, views::View* view) const override { bool painted = TopContainerBackground::PaintThemeCustomImage(canvas, view, browser_view_); @@ -1015,7 +1015,7 @@ index 577215577d9ac..a390c9f279f76 100644 SkColor frame_color = browser_view_->frame()->GetFrameView()->GetFrameColor( BrowserFrameActiveState::kUseCurrent); -@@ -226,12 +226,13 @@ END_METADATA +@@ -225,12 +225,13 @@ END_METADATA //////////////////////////////////////////////////////////////////////////////// // ToolbarView, public: @@ -1031,7 +1031,7 @@ index 577215577d9ac..a390c9f279f76 100644 SetID(VIEW_ID_TOOLBAR); container_view_ = AddChildView(std::make_unique()); -@@ -260,9 +261,24 @@ ToolbarView::~ToolbarView() { +@@ -259,9 +260,24 @@ ToolbarView::~ToolbarView() { for (const auto& view_and_command : GetViewCommandMap()) chrome::RemoveCommandObserver(browser_, view_and_command.second, this); @@ -1056,7 +1056,7 @@ index 577215577d9ac..a390c9f279f76 100644 #if defined(USE_AURA) // Avoid generating too many occlusion tracking calculation events before this // function returns. The occlusion status will be computed only once once this -@@ -285,12 +301,12 @@ void ToolbarView::Init() { +@@ -284,12 +300,12 @@ void ToolbarView::Init() { auto location_bar = std::make_unique( browser_, browser_->profile(), browser_->command_controller(), this, @@ -1071,19 +1071,17 @@ index 577215577d9ac..a390c9f279f76 100644 download_button = std::make_unique(browser_view_); } -@@ -370,8 +386,10 @@ void ToolbarView::Init() { - toolbar_divider = std::make_unique(); +@@ -370,7 +386,8 @@ void ToolbarView::Init() { } std::unique_ptr cast; -- if (media_router::MediaRouterEnabled(browser_->profile())) -+ if (media_router::MediaRouterEnabled(browser_->profile()) && -+ BUTTON_VISIBLE(kCast)) { - cast = media_router::CastToolbarButton::Create(browser_); -+ } - - std::unique_ptr media_button; - if (base::FeatureList::IsEnabled(media::kGlobalMediaControls)) { -@@ -381,7 +399,8 @@ void ToolbarView::Init() { + if (!features::IsToolbarPinningEnabled()) { +- if (media_router::MediaRouterEnabled(browser_->profile())) { ++ if (media_router::MediaRouterEnabled(browser_->profile()) && ++ BUTTON_VISIBLE(kCast)) { + cast = media_router::CastToolbarButton::Create(browser_); + } + } +@@ -383,7 +400,8 @@ void ToolbarView::Init() { std::unique_ptr send_tab_to_self_button; @@ -1093,7 +1091,7 @@ index 577215577d9ac..a390c9f279f76 100644 send_tab_to_self_button = std::make_unique( browser_view_); -@@ -838,7 +857,8 @@ void ToolbarView::Layout(PassKey) { +@@ -844,7 +862,8 @@ void ToolbarView::Layout(PassKey) { if (display_mode_ == DisplayMode::NORMAL) { LayoutCommon(); @@ -1104,7 +1102,7 @@ index 577215577d9ac..a390c9f279f76 100644 if (toolbar_controller_) { diff --git chrome/browser/ui/views/toolbar/toolbar_view.h chrome/browser/ui/views/toolbar/toolbar_view.h -index 1688062ae52ab..eabf36e6bed8d 100644 +index b02224437ad20..81f639f5faf9f 100644 --- chrome/browser/ui/views/toolbar/toolbar_view.h +++ chrome/browser/ui/views/toolbar/toolbar_view.h @@ -94,7 +94,8 @@ class ToolbarView : public views::AccessiblePaneView, diff --git a/patch/patches/chrome_sad_tab_error.patch b/patch/patches/chrome_sad_tab_error.patch index 132199f2a..abc2f3a96 100644 --- a/patch/patches/chrome_sad_tab_error.patch +++ b/patch/patches/chrome_sad_tab_error.patch @@ -1,8 +1,8 @@ diff --git chrome/browser/ui/views/sad_tab_view.cc chrome/browser/ui/views/sad_tab_view.cc -index 0418f446e46ce..541b8389e7c88 100644 +index 28a1b08d6c699..22a43d559bec9 100644 --- chrome/browser/ui/views/sad_tab_view.cc +++ chrome/browser/ui/views/sad_tab_view.cc -@@ -684,6 +684,11 @@ void SadTabView::OnBoundsChanged(const gfx::Rect& previous_bounds) { +@@ -687,6 +687,11 @@ void SadTabView::OnBoundsChanged(const gfx::Rect& previous_bounds) { title_->SizeToFit(max_width); } diff --git a/patch/patches/content_2015.patch b/patch/patches/content_2015.patch index bf93c14eb..027dab4a1 100644 --- a/patch/patches/content_2015.patch +++ b/patch/patches/content_2015.patch @@ -12,10 +12,10 @@ 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 aea31f655d929..5a6633fd581e2 100644 +index 736d8ae6db4a3..372d6cb9eef7f 100644 --- content/browser/loader/navigation_url_loader_impl.cc +++ content/browser/loader/navigation_url_loader_impl.cc -@@ -860,7 +860,7 @@ NavigationURLLoaderImpl::CreateNonNetworkLoaderFactory( +@@ -863,7 +863,7 @@ NavigationURLLoaderImpl::CreateNonNetworkLoaderFactory( mojo::PendingRemote terminal_external_protocol; bool handled = GetContentClient()->browser()->HandleExternalProtocol( @@ -24,10 +24,10 @@ index aea31f655d929..5a6633fd581e2 100644 frame_tree_node->frame_tree_node_id(), navigation_ui_data, request_info.is_primary_main_frame, frame_tree_node->IsInFencedFrameTree(), request_info.sandbox_flags, -@@ -872,6 +872,21 @@ NavigationURLLoaderImpl::CreateNonNetworkLoaderFactory( +@@ -875,6 +875,21 @@ NavigationURLLoaderImpl::CreateNonNetworkLoaderFactory( *request_info.initiator_document_token) : nullptr, - &terminal_external_protocol); + request_info.isolation_info, &terminal_external_protocol); + + if (!handled) { + handled = GetContentClient()->browser()->HandleExternalProtocol( @@ -40,17 +40,17 @@ index aea31f655d929..5a6633fd581e2 100644 + request_info.initiator_process_id, + *request_info.initiator_document_token) + : nullptr, -+ &terminal_external_protocol); ++ request_info.isolation_info, &terminal_external_protocol); + } + if (terminal_external_protocol) { return std::make_pair( /*is_cacheable=*/false, diff --git content/public/browser/content_browser_client.cc content/public/browser/content_browser_client.cc -index 49ae7aa8bb754..b82b455749128 100644 +index a55557845dd85..ddbf8ce90227d 100644 --- content/public/browser/content_browser_client.cc +++ content/public/browser/content_browser_client.cc -@@ -1127,7 +1127,7 @@ ContentBrowserClient::CreateURLLoaderHandlerForServiceWorkerNavigationPreload( +@@ -1138,7 +1138,7 @@ ContentBrowserClient::CreateURLLoaderHandlerForServiceWorkerNavigationPreload( void ContentBrowserClient::OnNetworkServiceCreated( network::mojom::NetworkService* network_service) {} @@ -59,7 +59,7 @@ index 49ae7aa8bb754..b82b455749128 100644 BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -1136,6 +1136,7 @@ void ContentBrowserClient::ConfigureNetworkContextParams( +@@ -1147,6 +1147,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 49ae7aa8bb754..b82b455749128 100644 std::vector diff --git content/public/browser/content_browser_client.h content/public/browser/content_browser_client.h -index d99cccb1f99a8..fb11c0ee286bc 100644 +index 57f1179aad3c7..ad218cfa315d4 100644 --- content/public/browser/content_browser_client.h +++ content/public/browser/content_browser_client.h -@@ -2164,7 +2164,7 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -2188,7 +2188,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,8 +80,8 @@ index d99cccb1f99a8..fb11c0ee286bc 100644 BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -2383,6 +2383,21 @@ class CONTENT_EXPORT ContentBrowserClient { - RenderFrameHost* initiator_document, +@@ -2409,6 +2409,22 @@ class CONTENT_EXPORT ContentBrowserClient { + const net::IsolationInfo& isolation_info, mojo::PendingRemote* out_factory); + // Same as above, but exposing the whole ResourceRequest object. @@ -95,6 +95,7 @@ index d99cccb1f99a8..fb11c0ee286bc 100644 + const network::ResourceRequest& request, + const std::optional& initiating_origin, + RenderFrameHost* initiator_document, ++ const net::IsolationInfo& isolation_info, + mojo::PendingRemote* out_factory) { + return false; + } @@ -102,7 +103,7 @@ index d99cccb1f99a8..fb11c0ee286bc 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. -@@ -2443,6 +2458,10 @@ class CONTENT_EXPORT ContentBrowserClient { +@@ -2469,6 +2485,10 @@ class CONTENT_EXPORT ContentBrowserClient { // Used as part of the user agent string. virtual std::string GetProduct(); @@ -139,10 +140,10 @@ index 784e0a5166d6b..1fd1e9ee107f3 100644 // started. virtual void SetRuntimeFeaturesDefaultsBeforeBlinkInitialization() {} diff --git content/renderer/render_thread_impl.cc content/renderer/render_thread_impl.cc -index 34d250220f97f..2576aa09f5c44 100644 +index 1a13fc3eb3362..aa1f92cbf728e 100644 --- content/renderer/render_thread_impl.cc +++ content/renderer/render_thread_impl.cc -@@ -573,6 +573,8 @@ void RenderThreadImpl::Init() { +@@ -568,6 +568,8 @@ void RenderThreadImpl::Init() { GetContentClient()->renderer()->CreateURLLoaderThrottleProvider( blink::URLLoaderThrottleProviderType::kFrame); @@ -186,10 +187,10 @@ index 69c52cb8333fc..ac2bbc7459864 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 1d4bd5b055c1d..83f19e3ab19d1 100644 +index 552345eecf589..996dd96388372 100644 --- content/shell/browser/shell_content_browser_client.cc +++ content/shell/browser/shell_content_browser_client.cc -@@ -742,7 +742,7 @@ void ShellContentBrowserClient::OnNetworkServiceCreated( +@@ -756,7 +756,7 @@ void ShellContentBrowserClient::OnNetworkServiceCreated( #endif } @@ -198,7 +199,7 @@ index 1d4bd5b055c1d..83f19e3ab19d1 100644 BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -751,6 +751,7 @@ void ShellContentBrowserClient::ConfigureNetworkContextParams( +@@ -765,6 +765,7 @@ void ShellContentBrowserClient::ConfigureNetworkContextParams( cert_verifier_creation_params) { ConfigureNetworkContextParamsForShell(context, network_context_params, cert_verifier_creation_params); @@ -207,10 +208,10 @@ index 1d4bd5b055c1d..83f19e3ab19d1 100644 std::vector diff --git content/shell/browser/shell_content_browser_client.h content/shell/browser/shell_content_browser_client.h -index f41d94c62a1aa..5b1090046265e 100644 +index c6784075ed657..ebba4477dfa65 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 { +@@ -150,7 +150,7 @@ class ShellContentBrowserClient : public ContentBrowserClient { GetGeolocationSystemPermissionManager() override; void OnNetworkServiceCreated( network::mojom::NetworkService* network_service) override; @@ -220,10 +221,10 @@ index f41d94c62a1aa..5b1090046265e 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 c877347bdde3a..ceca828f491b1 100644 +index d871e4d79774d..1faf20d69df19 100644 --- headless/lib/browser/headless_content_browser_client.cc +++ headless/lib/browser/headless_content_browser_client.cc -@@ -358,7 +358,7 @@ bool HeadlessContentBrowserClient::IsSharedStorageSelectURLAllowed( +@@ -362,7 +362,7 @@ bool HeadlessContentBrowserClient::IsSharedStorageSelectURLAllowed( return true; } @@ -232,7 +233,7 @@ index c877347bdde3a..ceca828f491b1 100644 content::BrowserContext* context, bool in_memory, const base::FilePath& relative_partition_path, -@@ -368,6 +368,7 @@ void HeadlessContentBrowserClient::ConfigureNetworkContextParams( +@@ -372,6 +372,7 @@ void HeadlessContentBrowserClient::ConfigureNetworkContextParams( HeadlessBrowserContextImpl::From(context)->ConfigureNetworkContextParams( in_memory, relative_partition_path, network_context_params, cert_verifier_creation_params); @@ -241,10 +242,10 @@ index c877347bdde3a..ceca828f491b1 100644 std::string HeadlessContentBrowserClient::GetProduct() { diff --git headless/lib/browser/headless_content_browser_client.h headless/lib/browser/headless_content_browser_client.h -index f26634ec9ce1f..ba3bfcbe0c45e 100644 +index 8313eb0e4d6a9..7189e626cf5ed 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 { +@@ -101,7 +101,7 @@ class HeadlessContentBrowserClient : public content::ContentBrowserClient { std::string* out_debug_message, bool* out_block_is_site_setting_specific) override; diff --git a/patch/patches/content_main_654986.patch b/patch/patches/content_main_654986.patch index 967d5c6a8..a1474740a 100644 --- a/patch/patches/content_main_654986.patch +++ b/patch/patches/content_main_654986.patch @@ -12,7 +12,7 @@ index 79ba3ac1913f8..46bcb4366d2f8 100644 if (main_argv) setproctitle_init(main_argv); diff --git content/app/content_main.cc content/app/content_main.cc -index c37f18d794ae2..6d64483992d0c 100644 +index c37f18d794ae2..fd360f7698bcf 100644 --- content/app/content_main.cc +++ content/app/content_main.cc @@ -194,11 +194,8 @@ ContentMainParams::~ContentMainParams() = default; @@ -65,7 +65,7 @@ index c37f18d794ae2..6d64483992d0c 100644 InitializeMac(); #endif -@@ -353,12 +341,46 @@ NO_STACK_PROTECTOR int RunContentProcess( +@@ -353,12 +341,44 @@ NO_STACK_PROTECTOR int RunContentProcess( if (IsSubprocess()) CommonSubprocessInit(); @@ -76,8 +76,7 @@ index c37f18d794ae2..6d64483992d0c 100644 + +// 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 -+ContentMainRun(ContentMainRunner* content_main_runner) { ++NO_STACK_PROTECTOR int ContentMainRun(ContentMainRunner* content_main_runner) { + return content_main_runner->Run(); +} + @@ -89,8 +88,7 @@ index c37f18d794ae2..6d64483992d0c 100644 + +// 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, ++NO_STACK_PROTECTOR int RunContentProcess(ContentMainParams params, + ContentMainRunner* content_main_runner) { +#if BUILDFLAG(IS_MAC) + // We need this pool for all the objects created before we get to the event diff --git a/patch/patches/crashpad_1995.patch b/patch/patches/crashpad_1995.patch index 6d49ee902..39c188b94 100644 --- a/patch/patches/crashpad_1995.patch +++ b/patch/patches/crashpad_1995.patch @@ -147,7 +147,7 @@ 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 0e9fe8892af82..7c1ce4b94fba5 100644 +index 4abce141b758e..c2624423ed44e 100644 --- components/crash/core/app/crash_reporter_client.cc +++ components/crash/core/app/crash_reporter_client.cc @@ -93,7 +93,7 @@ bool CrashReporterClient::GetShouldDumpLargerDumps() { diff --git a/patch/patches/gn_config.patch b/patch/patches/gn_config.patch index 07c47475f..a709071db 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 097e59f46d07a..54096982660c6 100644 +index 7c46b25626512..1a438687b67e6 100644 --- BUILD.gn +++ BUILD.gn @@ -20,6 +20,7 @@ import("//build/config/sanitizers/sanitizers.gni") @@ -23,7 +23,7 @@ index 097e59f46d07a..54096982660c6 100644 import("//chrome/enterprise_companion/buildflags.gni") import("//components/enterprise/buildflags/buildflags.gni") import("//components/nacl/features.gni") -@@ -285,6 +286,10 @@ group("gn_all") { +@@ -286,6 +287,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 8e6a2401aab03..571951616dec1 100644 +index 17491efcceeee..5d54a58fb9651 100644 --- chrome/chrome_paks.gni +++ chrome/chrome_paks.gni @@ -6,6 +6,7 @@ import("//ash/ambient/resources/resources.gni") @@ -87,7 +87,7 @@ index 8e6a2401aab03..571951616dec1 100644 import("//chrome/browser/buildflags.gni") import("//chrome/common/features.gni") import("//components/compose/features.gni") -@@ -468,6 +469,10 @@ template("chrome_extra_paks") { +@@ -470,6 +471,10 @@ template("chrome_extra_paks") { ] deps += [ "//extensions:extensions_resources" ] } @@ -96,10 +96,10 @@ index 8e6a2401aab03..571951616dec1 100644 + deps += [ "//cef:cef_resources" ] + } if (enable_extensions) { - sources += [ - "$root_gen_dir/chrome/extensions_resources.pak", + sources += [ "$root_gen_dir/chrome/extensions_resources.pak" ] + deps += [ "//chrome/browser/resources/extensions:resources" ] diff --git chrome/chrome_repack_locales.gni chrome/chrome_repack_locales.gni -index e8f61e2fbf6f2..5de226ad5a8f2 100644 +index 736d258d04b95..b496c0d3a0e4e 100644 --- chrome/chrome_repack_locales.gni +++ chrome/chrome_repack_locales.gni @@ -6,6 +6,7 @@ import("//build/config/chrome_build.gni") @@ -110,7 +110,7 @@ index e8f61e2fbf6f2..5de226ad5a8f2 100644 import("//extensions/buildflags/buildflags.gni") import("//tools/grit/repack.gni") -@@ -105,6 +106,10 @@ template("chrome_repack_locales") { +@@ -107,6 +108,10 @@ template("chrome_repack_locales") { source_patterns += [ "${root_gen_dir}/components/strings/search_engine_descriptions_strings_" ] deps += [ "//components/strings:search_engine_descriptions_strings" ] } @@ -118,7 +118,7 @@ index e8f61e2fbf6f2..5de226ad5a8f2 100644 + source_patterns += [ "${root_gen_dir}/cef/cef_strings_" ] + deps += [ "//cef:cef_strings" ] + } - if (enable_extensions) { + if (enable_extensions_core) { source_patterns += [ "${root_gen_dir}/extensions/strings/extensions_strings_" ] diff --git chrome/installer/mini_installer/BUILD.gn chrome/installer/mini_installer/BUILD.gn diff --git a/patch/patches/gritsettings.patch b/patch/patches/gritsettings.patch index cf98ed026..675b8291f 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 ee2a113e2b778..f6f267829da4e 100644 +index 19809ccc43fae..bd5cb44b8ffc1 100644 --- tools/gritsettings/resource_ids.spec +++ tools/gritsettings/resource_ids.spec -@@ -1358,6 +1358,15 @@ +@@ -1368,6 +1368,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 72e06cebf..98803f9b6 100644 --- a/patch/patches/light_mode_3534.patch +++ b/patch/patches/light_mode_3534.patch @@ -67,18 +67,18 @@ index d059f86ddad39..592b4d7903f15 100644 // GTK doesn't have a native high contrast setting. Rather, it's implied by diff --git ui/native_theme/native_theme.cc ui/native_theme/native_theme.cc -index 9d108fe375fa6..49f7694355c9a 100644 +index 09aeff0a2303a..d5bb4283e3464 100644 --- ui/native_theme/native_theme.cc +++ ui/native_theme/native_theme.cc @@ -143,6 +143,7 @@ void NativeTheme::NotifyOnNativeThemeUpdated() { color_provider_manager.ResetColorProviderCache(); - for (NativeThemeObserver& observer : native_theme_observers_) - observer.OnNativeThemeUpdated(this); + native_theme_observers_.Notify(&NativeThemeObserver::OnNativeThemeUpdated, + this); + color_provider_manager.AfterNativeThemeUpdated(); RecordNumColorProvidersInitializedDuringOnNativeThemeUpdated( color_provider_manager.num_providers_initialized() - -@@ -276,6 +277,13 @@ bool NativeTheme::IsForcedDarkMode() { +@@ -275,6 +276,13 @@ bool NativeTheme::IsForcedDarkMode() { return kIsForcedDarkMode; } @@ -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 0ba23d2d8ea58..2934cfd37db91 100644 +index c8e200ba27bd5..a91635c24e213 100644 --- ui/native_theme/native_theme.h +++ ui/native_theme/native_theme.h -@@ -608,6 +608,9 @@ class NATIVE_THEME_EXPORT NativeTheme { +@@ -604,6 +604,9 @@ class NATIVE_THEME_EXPORT NativeTheme { // Whether dark mode is forced via command-line flag. static bool IsForcedDarkMode(); diff --git a/patch/patches/linux_glib_deprecated_volatile.patch b/patch/patches/linux_glib_deprecated_volatile.patch index ec475204a..e821d1418 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 2e24201fcdc1e..e93e1ef6458e2 100644 +index 2b3aad7a639c6..5188665feae79 100644 --- ui/accessibility/platform/BUILD.gn +++ ui/accessibility/platform/BUILD.gn -@@ -341,6 +341,10 @@ component("platform") { +@@ -342,6 +342,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 c9ab3cf41..2d1dc8a64 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 d215ab072131d..3405641a7f5b2 100644 +index 69fdf309dbb71..60c89be146d2a 100644 --- ui/gtk/gtk_ui.cc +++ ui/gtk/gtk_ui.cc @@ -31,6 +31,7 @@ @@ -10,7 +10,7 @@ index d215ab072131d..3405641a7f5b2 100644 #include "chrome/browser/themes/theme_properties.h" // nogncheck #include "third_party/skia/include/core/SkBitmap.h" #include "third_party/skia/include/core/SkColor.h" -@@ -249,10 +250,15 @@ bool GtkUi::Initialize() { +@@ -252,10 +253,15 @@ bool GtkUi::Initialize() { }; GtkSettings* settings = gtk_settings_get_default(); diff --git a/patch/patches/linux_printing_context.patch b/patch/patches/linux_printing_context.patch index 56ede05bc..35da06fce 100644 --- a/patch/patches/linux_printing_context.patch +++ b/patch/patches/linux_printing_context.patch @@ -1,8 +1,8 @@ diff --git printing/printing_context_linux.cc printing/printing_context_linux.cc -index d1ab2a72e0d11..c6be9f1ba1793 100644 +index fa55d2a1c5f42..9eaf306672220 100644 --- printing/printing_context_linux.cc +++ printing/printing_context_linux.cc -@@ -69,11 +69,11 @@ mojom::ResultCode PrintingContextLinux::UseDefaultSettings() { +@@ -67,11 +67,11 @@ mojom::ResultCode PrintingContextLinux::UseDefaultSettings() { ResetSettings(); #if BUILDFLAG(IS_LINUX) @@ -16,7 +16,7 @@ index d1ab2a72e0d11..c6be9f1ba1793 100644 if (print_dialog_) { print_dialog_->UseDefaultSettings(); -@@ -85,8 +85,8 @@ mojom::ResultCode PrintingContextLinux::UseDefaultSettings() { +@@ -83,8 +83,8 @@ mojom::ResultCode PrintingContextLinux::UseDefaultSettings() { gfx::Size PrintingContextLinux::GetPdfPaperSizeDeviceUnits() { #if BUILDFLAG(IS_LINUX) @@ -27,7 +27,7 @@ index d1ab2a72e0d11..c6be9f1ba1793 100644 #endif return gfx::Size(); -@@ -98,11 +98,11 @@ mojom::ResultCode PrintingContextLinux::UpdatePrinterSettings( +@@ -96,11 +96,11 @@ mojom::ResultCode PrintingContextLinux::UpdatePrinterSettings( DCHECK(!in_print_job_); #if BUILDFLAG(IS_LINUX) @@ -100,7 +100,7 @@ index 3ab395e3b0b45..c012641a5dc7e 100644 } diff --git ui/linux/linux_ui.h ui/linux/linux_ui.h -index 0a4c394b07a68..a726244ad3ea3 100644 +index 1e59679d20646..de7b4b573b057 100644 --- ui/linux/linux_ui.h +++ ui/linux/linux_ui.h @@ -20,6 +20,10 @@ diff --git a/patch/patches/mac_keyboard_conversion_1467329.patch b/patch/patches/mac_keyboard_conversion_1467329.patch index 2adde908b..d74cf90b9 100644 --- a/patch/patches/mac_keyboard_conversion_1467329.patch +++ b/patch/patches/mac_keyboard_conversion_1467329.patch @@ -1,8 +1,8 @@ diff --git ui/events/keycodes/keyboard_code_conversion_mac.mm ui/events/keycodes/keyboard_code_conversion_mac.mm -index e4ed714929627..47f3e6a4ccfe6 100644 +index 36053a7db4dd2..bbf6bc41edec3 100644 --- ui/events/keycodes/keyboard_code_conversion_mac.mm +++ ui/events/keycodes/keyboard_code_conversion_mac.mm -@@ -900,7 +900,7 @@ DomKey DomKeyFromNSEvent(NSEvent* event) { +@@ -895,7 +895,7 @@ DomKey DomKeyFromNSEvent(NSEvent* event) { return DomKeyFromKeyCode(event.keyCode); } default: diff --git a/patch/patches/mac_platform_style_bubble_893292.patch b/patch/patches/mac_platform_style_bubble_893292.patch index 010b63a39..d0e3a7fa5 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 06d73cdced8d9..727424e433cf4 100644 +index e4187c12a2d62..458be6c7fc9a8 100644 --- chrome/browser/ui/views/profiles/profile_menu_view_base.cc +++ chrome/browser/ui/views/profiles/profile_menu_view_base.cc -@@ -1088,8 +1088,8 @@ int ProfileMenuViewBase::GetMaxHeight() const { +@@ -1234,8 +1234,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 40fe4fa40..adfe609e2 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 89b5fb70f4efd..ac121fc96d136 100644 +index f7ead5e49e4ba..85fb9738cd980 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 44a319e87..04022e96a 100644 --- a/patch/patches/message_loop.patch +++ b/patch/patches/message_loop.patch @@ -1,5 +1,5 @@ diff --git base/message_loop/message_pump_win.cc base/message_loop/message_pump_win.cc -index 0367ed7d21fdf..7cf6dd6fb122b 100644 +index 94a1de886b530..dec2dd5f20721 100644 --- base/message_loop/message_pump_win.cc +++ base/message_loop/message_pump_win.cc @@ -2,6 +2,7 @@ @@ -10,7 +10,7 @@ index 0367ed7d21fdf..7cf6dd6fb122b 100644 #include "base/message_loop/message_pump_win.h" #include -@@ -572,7 +573,17 @@ bool MessagePumpForUI::ProcessNextWindowsMessage() { +@@ -569,7 +570,17 @@ bool MessagePumpForUI::ProcessNextWindowsMessage() { ctx.event()->set_chrome_message_pump(); msg_pump_data->set_sent_messages_in_queue(more_work_is_plausible); }); diff --git a/patch/patches/metrics_system_profile.patch b/patch/patches/metrics_system_profile.patch index 930934dc0..249fdd5a7 100644 --- a/patch/patches/metrics_system_profile.patch +++ b/patch/patches/metrics_system_profile.patch @@ -1,5 +1,5 @@ diff --git components/metrics/persistent_system_profile.cc components/metrics/persistent_system_profile.cc -index 8b453c667df7f..1ff8d67671fd7 100644 +index 5cfe0451159cf..96fdbcb5e8c09 100644 --- components/metrics/persistent_system_profile.cc +++ components/metrics/persistent_system_profile.cc @@ -400,6 +400,10 @@ bool PersistentSystemProfile::GetSystemProfile( @@ -14,7 +14,7 @@ index 8b453c667df7f..1ff8d67671fd7 100644 void PersistentSystemProfile::MergeUpdateRecords( const base::PersistentMemoryAllocator& memory_allocator, diff --git components/metrics/persistent_system_profile.h components/metrics/persistent_system_profile.h -index 5ef2afa1183a6..a2e00202f7b42 100644 +index 426ed30d15be2..088fffc40f8a0 100644 --- components/metrics/persistent_system_profile.h +++ components/metrics/persistent_system_profile.h @@ -64,6 +64,10 @@ class PersistentSystemProfile { diff --git a/patch/patches/mime_handler_view_guest_1565_2727.patch b/patch/patches/mime_handler_view_guest_1565_2727.patch index 45c11d393..96f08f0ee 100644 --- a/patch/patches/mime_handler_view_guest_1565_2727.patch +++ b/patch/patches/mime_handler_view_guest_1565_2727.patch @@ -12,7 +12,7 @@ index 446020ac6a831..6e3f6d048704c 100644 virtual ~WebContentsView() = default; diff --git extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc -index fad08e33e16e4..571b52332a198 100644 +index 6c8040666b520..d03d33415f033 100644 --- extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc +++ extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.cc @@ -204,6 +204,8 @@ void MimeHandlerViewGuest::CreateWebContents( diff --git a/patch/patches/net_cookie_flags.patch b/patch/patches/net_cookie_flags.patch index 02826f52b..af99512ff 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 60a3db0490f57..2183142341991 100644 +index 40c76f66d1500..29479608ba320 100644 --- net/url_request/url_request_http_job.cc +++ net/url_request/url_request_http_job.cc -@@ -2074,7 +2074,8 @@ bool URLRequestHttpJob::ShouldAddCookieHeader() const { +@@ -2079,7 +2079,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. diff --git a/patch/patches/net_test_server_3798752.patch b/patch/patches/net_test_server_3798752.patch index b92088348..a8e5c7e60 100644 --- a/patch/patches/net_test_server_3798752.patch +++ b/patch/patches/net_test_server_3798752.patch @@ -1,5 +1,5 @@ diff --git net/test/embedded_test_server/embedded_test_server.cc net/test/embedded_test_server/embedded_test_server.cc -index 0126378a5c6b8..8c9f9ae6db4b7 100644 +index 0ee26322fd5ce..25265759b31f3 100644 --- net/test/embedded_test_server/embedded_test_server.cc +++ net/test/embedded_test_server/embedded_test_server.cc @@ -1088,7 +1088,7 @@ bool EmbeddedTestServer::PostTaskToIOThreadAndWait(base::OnceClosure closure) { diff --git a/patch/patches/net_url_request_3596.patch b/patch/patches/net_url_request_3596.patch index b85ab2128..5c366fc92 100644 --- a/patch/patches/net_url_request_3596.patch +++ b/patch/patches/net_url_request_3596.patch @@ -1,5 +1,5 @@ diff --git net/url_request/url_request_job.cc net/url_request/url_request_job.cc -index a2aa3c3361410..c5e91f6ddebe7 100644 +index 10f3c6ca826bf..a1ce407076619 100644 --- net/url_request/url_request_job.cc +++ net/url_request/url_request_job.cc @@ -35,6 +35,7 @@ @@ -27,7 +27,7 @@ index a2aa3c3361410..c5e91f6ddebe7 100644 } // namespace // Each SourceStreams own the previous SourceStream in the chain, but the -@@ -343,8 +354,7 @@ GURL URLRequestJob::ComputeReferrerForPolicy( +@@ -338,8 +349,7 @@ GURL URLRequestJob::ComputeReferrerForPolicy( } bool secure_referrer_but_insecure_destination = diff --git a/patch/patches/osr_fling_2745.patch b/patch/patches/osr_fling_2745.patch index 7eaf74214..64695af03 100644 --- a/patch/patches/osr_fling_2745.patch +++ b/patch/patches/osr_fling_2745.patch @@ -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 5754c2bd33053..25688e64d712d 100644 +index 5a521aa5a6117..1a6454eb4f300 100644 --- content/browser/renderer_host/render_widget_host_impl.cc +++ content/browser/renderer_host/render_widget_host_impl.cc -@@ -3216,6 +3216,11 @@ void RenderWidgetHostImpl::DecrementInFlightEventCount( +@@ -3232,6 +3232,11 @@ void RenderWidgetHostImpl::DecrementInFlightEventCount( } } @@ -72,10 +72,10 @@ index 5754c2bd33053..25688e64d712d 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 3d03709303e22..1d162642a2f8a 100644 +index b8dadc4cca462..f5bbd83de86ab 100644 --- content/browser/renderer_host/render_widget_host_impl.h +++ content/browser/renderer_host/render_widget_host_impl.h -@@ -835,6 +835,7 @@ class CONTENT_EXPORT RenderWidgetHostImpl +@@ -836,6 +836,7 @@ class CONTENT_EXPORT RenderWidgetHostImpl void ProgressFlingIfNeeded(base::TimeTicks current_time); void StopFling(); diff --git a/patch/patches/osr_win_remove_keyed_mutex_2575.patch b/patch/patches/osr_win_remove_keyed_mutex_2575.patch index b7067b9f3..ff4c432c7 100644 --- a/patch/patches/osr_win_remove_keyed_mutex_2575.patch +++ b/patch/patches/osr_win_remove_keyed_mutex_2575.patch @@ -24,7 +24,7 @@ index 2096591596a26..5a0c3fd16eecf 100644 Microsoft::WRL::ComPtr d3d11_texture; diff --git media/video/renderable_gpu_memory_buffer_video_frame_pool.cc media/video/renderable_gpu_memory_buffer_video_frame_pool.cc -index cf5bde2e431fd..51552841427c8 100644 +index 596affaba0993..3c28ea80fc631 100644 --- media/video/renderable_gpu_memory_buffer_video_frame_pool.cc +++ media/video/renderable_gpu_memory_buffer_video_frame_pool.cc @@ -205,7 +205,7 @@ gfx::Size GetBufferSizeInPixelsForVideoPixelFormat( diff --git a/patch/patches/renderer_host_1070713.patch b/patch/patches/renderer_host_1070713.patch index 85a7990fd..c7d293fc0 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 f130879c92319..cf26aa2184e7a 100644 +index 52ce9d2c8c5e2..b94e96d0c5b52 100644 --- content/browser/renderer_host/render_view_host_impl.cc +++ content/browser/renderer_host/render_view_host_impl.cc -@@ -750,6 +750,8 @@ bool RenderViewHostImpl::IsRenderViewLive() const { +@@ -743,6 +743,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 6c54e6f25..a9ddbff99 100644 --- a/patch/patches/resource_bundle_2512.patch +++ b/patch/patches/resource_bundle_2512.patch @@ -1,5 +1,5 @@ diff --git ui/base/resource/resource_bundle.cc ui/base/resource/resource_bundle.cc -index fe923601f3eee..321a85b51d215 100644 +index f1e826da8bc65..d4a8c6f5a9290 100644 --- ui/base/resource/resource_bundle.cc +++ ui/base/resource/resource_bundle.cc @@ -932,6 +932,12 @@ ResourceBundle::ResourceBundle(Delegate* delegate) diff --git a/patch/patches/rfh_navigation_4829483.patch b/patch/patches/rfh_navigation_4829483.patch index 38883dc8c..9c3c9ca4d 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 0236631b56d79..aedc1c65a20f4 100644 +index 20ed48220d230..a8774d167bcad 100644 --- content/browser/renderer_host/render_frame_host_impl.cc +++ content/browser/renderer_host/render_frame_host_impl.cc -@@ -11277,6 +11277,7 @@ void RenderFrameHostImpl::CommitNavigation( +@@ -11466,6 +11466,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 a4b4bc4d9..b1a1e00fe 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 8d972bcdd27ee..1bacc1e05afb3 100644 +index 55548735a1d10..edca00d0d49d3 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 @@ diff --git a/patch/patches/services_network_2622.patch b/patch/patches/services_network_2622.patch index d6a78d945..99f248448 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 6b19478013bf5..acc6f2dcb4472 100644 +index b8506e1b025df..d18163053f430 100644 --- net/cookies/cookie_monster.cc +++ net/cookies/cookie_monster.cc @@ -635,6 +635,25 @@ void CookieMonster::SetCookieableSchemes( @@ -29,7 +29,7 @@ index 6b19478013bf5..acc6f2dcb4472 100644 void CookieMonster::SetPersistSessionCookies(bool persist_session_cookies) { DCHECK_CALLED_ON_VALID_THREAD(thread_checker_); diff --git net/cookies/cookie_monster.h net/cookies/cookie_monster.h -index bea9a3b81a538..78fbab874c436 100644 +index eaf790ed6050c..dfbe71c38204a 100644 --- net/cookies/cookie_monster.h +++ net/cookies/cookie_monster.h @@ -210,6 +210,8 @@ class NET_EXPORT CookieMonster : public CookieStore { @@ -80,10 +80,10 @@ index f78c6a467befc..97f1d21218eed 100644 void CookieManager::SetForceKeepSessionState() { diff --git services/network/network_context.cc services/network/network_context.cc -index 502cd4ac8b0e8..4532f67ceca70 100644 +index d18f5b091d33e..ff7f620d3750d 100644 --- services/network/network_context.cc +++ services/network/network_context.cc -@@ -2578,16 +2578,20 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( +@@ -2577,16 +2577,20 @@ URLRequestContextOwner NetworkContext::MakeURLRequestContext( network_service_->network_quality_estimator()); } @@ -112,7 +112,7 @@ index 502cd4ac8b0e8..4532f67ceca70 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 b3775284f55c7..66f1b5279c7b7 100644 +index 83bce4a3bf9dc..c6efc2e4333fc 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 fa23abba1..2c0701938 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 edbdcac55702f..ff1bb519e834a 100644 +index 8e5c22a3050d9..dd000e024d95d 100644 --- content/browser/storage_partition_impl.cc +++ content/browser/storage_partition_impl.cc -@@ -3346,9 +3346,12 @@ void StoragePartitionImpl::InitNetworkContext() { +@@ -3334,9 +3334,12 @@ void StoragePartitionImpl::InitNetworkContext() { cert_verifier::mojom::CertVerifierCreationParamsPtr cert_verifier_creation_params = cert_verifier::mojom::CertVerifierCreationParams::New(); diff --git a/patch/patches/trace_event.patch b/patch/patches/trace_event.patch index 912dd8d9b..93dd8b8ff 100644 --- a/patch/patches/trace_event.patch +++ b/patch/patches/trace_event.patch @@ -1,5 +1,5 @@ diff --git base/trace_event/builtin_categories.h base/trace_event/builtin_categories.h -index 5bbe83c8948a2..553446f04f9fc 100644 +index 5ba3046b83e88..66e1364a3110a 100644 --- base/trace_event/builtin_categories.h +++ base/trace_event/builtin_categories.h @@ -71,6 +71,8 @@ diff --git a/patch/patches/views_1749_2102_3330.patch b/patch/patches/views_1749_2102_3330.patch index 509f871b6..e129879af 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 477159889efb0..b984eee1ec4d8 100644 +index d7e3313414e5b..8691f6e1a4131 100644 --- chrome/browser/ui/views/toolbar/app_menu.cc +++ chrome/browser/ui/views/toolbar/app_menu.cc -@@ -1015,7 +1015,9 @@ void AppMenu::RunMenu(views::MenuButtonController* host) { +@@ -1014,7 +1014,9 @@ void AppMenu::RunMenu(views::MenuButtonController* host) { host->button()->GetWidget(), host, host->button()->GetAnchorBoundsInScreen(), views::MenuAnchorPosition::kTopRight, ui::MENU_SOURCE_NONE, @@ -133,10 +133,10 @@ index c579f65dce9f0..a04e0d1f66aaa 100644 friend class test::InkDropHostTestApi; diff --git ui/views/controls/button/label_button.cc ui/views/controls/button/label_button.cc -index 8fcf7575ebe4e..a8c8ab6927ba2 100644 +index 5b675ae814e09..bcea717c1a23b 100644 --- ui/views/controls/button/label_button.cc +++ ui/views/controls/button/label_button.cc -@@ -589,6 +589,12 @@ void LabelButton::OnThemeChanged() { +@@ -585,6 +585,12 @@ void LabelButton::OnThemeChanged() { SchedulePaint(); } @@ -150,10 +150,10 @@ index 8fcf7575ebe4e..a8c8ab6927ba2 100644 Button::StateChanged(old_state); ResetLabelEnabledColor(); diff --git ui/views/controls/button/label_button.h ui/views/controls/button/label_button.h -index 414087e088a4e..0d757f5e7933e 100644 +index 7586a6f089f62..4e3a40b33f535 100644 --- ui/views/controls/button/label_button.h +++ ui/views/controls/button/label_button.h -@@ -187,6 +187,9 @@ class VIEWS_EXPORT LabelButton : public Button, +@@ -186,6 +186,9 @@ class VIEWS_EXPORT LabelButton : public Button, // widget, and the parent of the containing widget. ButtonState GetVisualState() const; @@ -254,7 +254,7 @@ index bc315ed47b197..2c0f4deafb3c1 100644 std::unique_ptr selection_controller_; diff --git ui/views/controls/menu/menu_controller.cc ui/views/controls/menu/menu_controller.cc -index 4b753ff618598..ddb2506be9695 100644 +index c394177f4a19b..fd88fa8a89d91 100644 --- ui/views/controls/menu/menu_controller.cc +++ ui/views/controls/menu/menu_controller.cc @@ -578,7 +578,8 @@ void MenuController::Run(Widget* parent, @@ -283,7 +283,7 @@ index 4b753ff618598..ddb2506be9695 100644 if (item->GetParentMenuItem()) { params.context = item->GetWidget(); // (crbug.com/1414232) The item to be open is a submenu. Make sure -@@ -2954,8 +2957,13 @@ MenuItemView* MenuController::FindInitialSelectableMenuItem( +@@ -2940,8 +2943,13 @@ MenuItemView* MenuController::FindInitialSelectableMenuItem( void MenuController::OpenSubmenuChangeSelectionIfCan() { MenuItemView* item = pending_state_.item; @@ -298,7 +298,7 @@ index 4b753ff618598..ddb2506be9695 100644 // Show the sub-menu. SetSelection(item, SELECTION_OPEN_SUBMENU | SELECTION_UPDATE_IMMEDIATELY); -@@ -2975,8 +2983,10 @@ void MenuController::OpenSubmenuChangeSelectionIfCan() { +@@ -2961,8 +2969,10 @@ void MenuController::OpenSubmenuChangeSelectionIfCan() { void MenuController::CloseSubmenu() { MenuItemView* item = state_.item; DCHECK(item); @@ -374,10 +374,10 @@ index 7c6ff7acb08a7..91ababb3dccd8 100644 virtual int GetMaxWidthForMenu(MenuItemView* menu); diff --git ui/views/controls/menu/menu_host.cc ui/views/controls/menu/menu_host.cc -index c7c9deb69dbba..0edd342c9a713 100644 +index f315051d58d34..edffdf794b19d 100644 --- ui/views/controls/menu/menu_host.cc +++ ui/views/controls/menu/menu_host.cc -@@ -145,6 +145,8 @@ void MenuHost::InitMenuHost(const InitParams& init_params) { +@@ -148,6 +148,8 @@ void MenuHost::InitMenuHost(const InitParams& init_params) { : gfx::NativeWindow(); params.bounds = init_params.bounds; @@ -386,7 +386,7 @@ index c7c9deb69dbba..0edd342c9a713 100644 #if defined(USE_AURA) params.init_properties_container.SetProperty(aura::client::kOwnedWindowAnchor, init_params.owned_window_anchor); -@@ -152,7 +154,8 @@ void MenuHost::InitMenuHost(const InitParams& init_params) { +@@ -155,7 +157,8 @@ void MenuHost::InitMenuHost(const InitParams& init_params) { // If MenuHost has no parent widget, it needs to be marked // Activatable, so that calling Show in ShowMenuHost will // get keyboard focus. @@ -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 81fabd16b2ce3..90f1ec4fcaaec 100644 +index 14006cc21e5e2..a1e64d2b3aed1 100644 --- ui/views/controls/menu/menu_item_view.cc +++ ui/views/controls/menu/menu_item_view.cc -@@ -1102,6 +1102,15 @@ void MenuItemView::PaintBackground(gfx::Canvas* canvas, +@@ -1107,6 +1107,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 81fabd16b2ce3..90f1ec4fcaaec 100644 } else if (paint_as_selected) { gfx::Rect item_bounds = GetLocalBounds(); if (type_ == Type::kActionableSubMenu) { -@@ -1166,6 +1175,13 @@ void MenuItemView::PaintMinorIconAndText(gfx::Canvas* canvas, SkColor color) { +@@ -1171,6 +1180,13 @@ void MenuItemView::PaintMinorIconAndText(gfx::Canvas* canvas, SkColor color) { } SkColor MenuItemView::GetTextColor(bool minor, bool paint_as_selected) const { @@ -444,7 +444,7 @@ index 81fabd16b2ce3..90f1ec4fcaaec 100644 // use the default color. if (!paint_as_selected && foreground_color_id_.has_value()) { diff --git ui/views/controls/menu/menu_model_adapter.cc ui/views/controls/menu/menu_model_adapter.cc -index 9e6b9cc599691..51946fb5c50d4 100644 +index b6836ecbbeb13..56a7c14fb1f8c 100644 --- ui/views/controls/menu/menu_model_adapter.cc +++ ui/views/controls/menu/menu_model_adapter.cc @@ -4,6 +4,7 @@ @@ -455,7 +455,7 @@ index 9e6b9cc599691..51946fb5c50d4 100644 #include #include #include -@@ -240,6 +241,75 @@ bool MenuModelAdapter::IsItemChecked(int id) const { +@@ -241,6 +242,71 @@ bool MenuModelAdapter::IsItemChecked(int id) const { return model->IsItemCheckedAt(index); } @@ -465,8 +465,7 @@ index 9e6b9cc599691..51946fb5c50d4 100644 + bool* has_mnemonics, + MenuButton** button) { + // Look up the menu model for this menu. -+ const std::map::const_iterator map_iterator = -+ menu_map_.find(menu); ++ const auto map_iterator = menu_map_.find(menu); + if (map_iterator != menu_map_.end()) { + map_iterator->second->MouseOutsideMenu(screen_point); + return nullptr; @@ -475,11 +474,9 @@ index 9e6b9cc599691..51946fb5c50d4 100644 + NOTREACHED(); +} + -+void MenuModelAdapter::OnUnhandledOpenSubmenu(MenuItemView* menu, -+ bool is_rtl) { ++void MenuModelAdapter::OnUnhandledOpenSubmenu(MenuItemView* menu, bool is_rtl) { + // Look up the menu model for this menu. -+ const std::map::const_iterator map_iterator = -+ menu_map_.find(menu); ++ const auto map_iterator = menu_map_.find(menu); + if (map_iterator != menu_map_.end()) { + map_iterator->second->UnhandledOpenSubmenu(is_rtl); + return; @@ -491,8 +488,7 @@ index 9e6b9cc599691..51946fb5c50d4 100644 +void MenuModelAdapter::OnUnhandledCloseSubmenu(MenuItemView* menu, + bool is_rtl) { + // Look up the menu model for this menu. -+ const std::map::const_iterator map_iterator = -+ menu_map_.find(menu); ++ const auto map_iterator = menu_map_.find(menu); + if (map_iterator != menu_map_.end()) { + map_iterator->second->UnhandledCloseSubmenu(is_rtl); + return; @@ -530,9 +526,9 @@ index 9e6b9cc599691..51946fb5c50d4 100644 + void MenuModelAdapter::WillShowMenu(MenuItemView* menu) { // Look up the menu model for this menu. - const std::map::const_iterator map_iterator = + const std::map 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 37135f8ef2d73..459a3c2e60062 100644 +index 87427e16e1b60..eb5998419a8f3 100644 --- ui/views/controls/menu/menu_scroll_view_container.cc +++ ui/views/controls/menu/menu_scroll_view_container.cc @@ -254,6 +254,11 @@ MenuScrollViewContainer::MenuScrollViewContainer(SubmenuView* content_view) diff --git a/patch/patches/views_textfield_5399416.patch b/patch/patches/views_textfield_5399416.patch index 8c8b68743..4c4dbfe59 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 21589bc2904d7..da7a9915e77e5 100644 +index 4f90ed932bb64..b8abe99e7d07b 100644 --- ui/views/controls/textfield/textfield.cc +++ ui/views/controls/textfield/textfield.cc -@@ -3014,6 +3014,10 @@ void Textfield::OnCursorBlinkTimerFired() { +@@ -3015,6 +3015,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 d2ba19f2b..dc0958f70 100644 --- a/patch/patches/views_widget.patch +++ b/patch/patches/views_widget.patch @@ -1,27 +1,27 @@ diff --git chrome/browser/extensions/api/sessions/sessions_api.cc chrome/browser/extensions/api/sessions/sessions_api.cc -index 336481047adbb..e9848320bd560 100644 +index ac74d193287c9..c165d516d64be 100644 --- chrome/browser/extensions/api/sessions/sessions_api.cc +++ chrome/browser/extensions/api/sessions/sessions_api.cc @@ -341,6 +341,7 @@ SessionsGetDevicesFunction::CreateWindowModel( state = api::windows::WindowState::kNormal; break; - case ui::SHOW_STATE_MINIMIZED: -+ case ui::SHOW_STATE_HIDDEN: + case ui::mojom::WindowShowState::kMinimized: ++ case ui::mojom::WindowShowState::kHidden: state = api::windows::WindowState::kMinimized; break; - case ui::SHOW_STATE_MAXIMIZED: + case ui::mojom::WindowShowState::kMaximized: diff --git chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc -index cef40af382b1e..a2cf4691edc37 100644 +index 6156dd1ccab4c..a2721ea15863e 100644 --- chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc +++ chrome/browser/ui/views/apps/chrome_native_app_window_views_aura.cc -@@ -43,6 +43,7 @@ ChromeNativeAppWindowViewsAura::GetRestorableState( +@@ -43,6 +43,7 @@ ui::mojom::WindowShowState ChromeNativeAppWindowViewsAura::GetRestorableState( - case ui::SHOW_STATE_DEFAULT: - case ui::SHOW_STATE_MINIMIZED: -+ case ui::SHOW_STATE_HIDDEN: - case ui::SHOW_STATE_INACTIVE: - case ui::SHOW_STATE_END: - return ui::SHOW_STATE_NORMAL; + case ui::mojom::WindowShowState::kDefault: + case ui::mojom::WindowShowState::kMinimized: ++ case ui::mojom::WindowShowState::kHidden: + case ui::mojom::WindowShowState::kInactive: + case ui::mojom::WindowShowState::kEnd: + return ui::mojom::WindowShowState::kNormal; diff --git components/sessions/core/session_service_commands.cc components/sessions/core/session_service_commands.cc index 6b72cf19cf723..48f7f6f2c1f75 100644 --- components/sessions/core/session_service_commands.cc @@ -245,24 +245,11 @@ index 526b6129d6d01..1937a441b930d 100644 - [MinVersion=1] kEnd = 6, + [MinVersion=1] kEnd = 7, }; -diff --git ui/base/ui_base_types.h ui/base/ui_base_types.h -index c3f5337d50a09..8f95219e89259 100644 ---- ui/base/ui_base_types.h -+++ ui/base/ui_base_types.h -@@ -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; - diff --git ui/ozone/platform/x11/x11_window.cc ui/ozone/platform/x11/x11_window.cc -index e237b24eebe7c..39375a38fa680 100644 +index c21f3aa2e68f7..0a2443e772767 100644 --- ui/ozone/platform/x11/x11_window.cc +++ ui/ozone/platform/x11/x11_window.cc -@@ -1876,7 +1876,8 @@ void X11Window::CreateXWindow(const PlatformWindowInitProperties& properties) { +@@ -1860,7 +1860,8 @@ void X11Window::CreateXWindow(const PlatformWindowInitProperties& properties) { req.border_pixel = 0; bounds_in_pixels_ = SanitizeBounds(bounds); @@ -350,10 +337,10 @@ index 590f97eee1fda..3980e814e80b9 100644 base::WeakPtrFactory weak_factory_{this}; }; diff --git ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc -index 5f736a0efcdcf..53368d1a6ee35 100644 +index 628494b15591f..32cbfb8314439 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc +++ ui/views/widget/desktop_aura/desktop_window_tree_host_platform.cc -@@ -281,8 +281,8 @@ void DesktopWindowTreeHostPlatform::Init(const Widget::InitParams& params) { +@@ -282,8 +282,8 @@ void DesktopWindowTreeHostPlatform::Init(const Widget::InitParams& params) { if (properties.parent_widget) { window_parent_ = DesktopWindowTreeHostPlatform::GetHostForWidget( properties.parent_widget); @@ -365,7 +352,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 66e1c0fa50581..da5ab727a5dab 100644 +index 6cd2eace306cb..a6246e6cb6f3f 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 @@ @@ -376,7 +363,7 @@ index 66e1c0fa50581..da5ab727a5dab 100644 #include "ui/aura/window_event_dispatcher.h" #include "ui/base/class_property.h" #include "ui/base/cursor/cursor.h" -@@ -184,22 +185,42 @@ void DesktopWindowTreeHostWin::Init(const Widget::InitParams& params) { +@@ -185,22 +186,42 @@ void DesktopWindowTreeHostWin::Init(const Widget::InitParams& params) { native_widget_delegate_.get()); HWND parent_hwnd = nullptr; @@ -413,7 +400,7 @@ index 66e1c0fa50581..da5ab727a5dab 100644 InitHost(); window()->Show(); -+ if (params.show_state == ui::SHOW_STATE_MINIMIZED) { ++ if (params.show_state == ui::mojom::WindowShowState::kMinimized) { + // Delay enablement of native occlusion tracking until the + // initially-minimized window is restored for the first time. + // See CEF issue #3638. @@ -423,7 +410,7 @@ index 66e1c0fa50581..da5ab727a5dab 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. -@@ -1077,10 +1098,23 @@ void DesktopWindowTreeHostWin::HandleWindowMinimizedOrRestored(bool restored) { +@@ -1078,10 +1099,23 @@ void DesktopWindowTreeHostWin::HandleWindowMinimizedOrRestored(bool restored) { if (!native_widget_delegate_->IsNativeWidgetInitialized()) return; @@ -449,7 +436,7 @@ index 66e1c0fa50581..da5ab727a5dab 100644 } void DesktopWindowTreeHostWin::HandleClientSizeChanged( -@@ -1098,11 +1132,15 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() { +@@ -1099,11 +1133,15 @@ void DesktopWindowTreeHostWin::HandleFrameChanged() { } void DesktopWindowTreeHostWin::HandleNativeFocus(HWND last_focused_window) { @@ -467,7 +454,7 @@ index 66e1c0fa50581..da5ab727a5dab 100644 } bool DesktopWindowTreeHostWin::HandleMouseEvent(ui::MouseEvent* event) { -@@ -1110,6 +1148,12 @@ bool DesktopWindowTreeHostWin::HandleMouseEvent(ui::MouseEvent* event) { +@@ -1111,6 +1149,12 @@ bool DesktopWindowTreeHostWin::HandleMouseEvent(ui::MouseEvent* event) { if (ui::PlatformEventSource::ShouldIgnoreNativePlatformEvents()) return true; @@ -480,7 +467,7 @@ index 66e1c0fa50581..da5ab727a5dab 100644 SendEventToSink(event); return event->handled(); } -@@ -1292,9 +1336,17 @@ void DesktopWindowTreeHostWin::SetBoundsInDIP(const gfx::Rect& bounds) { +@@ -1293,9 +1337,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,10 +487,10 @@ index 66e1c0fa50581..da5ab727a5dab 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 286fcdf651131..a036eead2376a 100644 +index 1e2c5bb35cc31..e73afc2d303ac 100644 --- ui/views/widget/desktop_aura/desktop_window_tree_host_win.h +++ ui/views/widget/desktop_aura/desktop_window_tree_host_win.h -@@ -334,6 +334,14 @@ class VIEWS_EXPORT DesktopWindowTreeHostWin +@@ -336,6 +336,14 @@ class VIEWS_EXPORT DesktopWindowTreeHostWin // True if the window is allow to take screenshots, by default is true. bool allow_screenshots_ = true; @@ -519,22 +506,22 @@ index 286fcdf651131..a036eead2376a 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 4c9fcad42f8c7..79a13c77ea9a7 100644 +index 85c36216bbadf..2f6b48b656102 100644 --- ui/views/widget/native_widget_mac.mm +++ ui/views/widget/native_widget_mac.mm -@@ -661,6 +661,7 @@ void NativeWidgetMac::Show(ui::WindowShowState show_state, +@@ -662,6 +662,7 @@ void NativeWidgetMac::Show(ui::mojom::WindowShowState show_state, break; - case ui::SHOW_STATE_MAXIMIZED: - case ui::SHOW_STATE_FULLSCREEN: -+ case ui::SHOW_STATE_HIDDEN: + case ui::mojom::WindowShowState::kMaximized: + case ui::mojom::WindowShowState::kFullscreen: ++ case ui::mojom::WindowShowState::kHidden: NOTIMPLEMENTED(); break; - case ui::SHOW_STATE_END: + case ui::mojom::WindowShowState::kEnd: diff --git ui/views/widget/widget.cc ui/views/widget/widget.cc -index 0b36c074cb789..b706a99d3d889 100644 +index ed69823cc34d7..116588f1f9e45 100644 --- ui/views/widget/widget.cc +++ ui/views/widget/widget.cc -@@ -422,7 +422,8 @@ void Widget::Init(InitParams params) { +@@ -423,7 +423,8 @@ void Widget::Init(InitParams params) { } params.child |= (params.type == InitParams::TYPE_CONTROL); @@ -544,22 +531,22 @@ index 0b36c074cb789..b706a99d3d889 100644 is_headless_ = params.ShouldInitAsHeadless(); is_autosized_ = params.autosize; -@@ -529,9 +530,14 @@ void Widget::Init(InitParams params) { +@@ -530,9 +531,14 @@ void Widget::Init(InitParams params) { - if (show_state == ui::SHOW_STATE_MAXIMIZED) { + if (show_state == ui::mojom::WindowShowState::kMaximized) { Maximize(); -+ saved_show_state_ = ui::SHOW_STATE_MAXIMIZED; - } else if (show_state == ui::SHOW_STATE_MINIMIZED) { ++ saved_show_state_ = ui::mojom::WindowShowState::kMaximized; + } else if (show_state == ui::mojom::WindowShowState::kMinimized) { Minimize(); - saved_show_state_ = ui::SHOW_STATE_MINIMIZED; -+ } else if (show_state == ui::SHOW_STATE_FULLSCREEN) { + saved_show_state_ = ui::mojom::WindowShowState::kMinimized; ++ } else if (show_state == ui::mojom::WindowShowState::kFullscreen) { + SetFullscreen(true); -+ } else if (show_state == ui::SHOW_STATE_HIDDEN) { ++ } else if (show_state == ui::mojom::WindowShowState::kHidden) { + Hide(); } #if BUILDFLAG(IS_CHROMEOS_ASH) -@@ -545,7 +551,12 @@ void Widget::Init(InitParams params) { +@@ -546,7 +552,12 @@ void Widget::Init(InitParams params) { } else if (delegate) { SetContentsView(delegate->TransferOwnershipOfContentsView()); if (should_set_initial_bounds) { @@ -573,7 +560,7 @@ index 0b36c074cb789..b706a99d3d889 100644 } } -@@ -1744,10 +1755,16 @@ void Widget::OnNativeWidgetParentChanged(gfx::NativeView parent) { +@@ -1736,10 +1747,16 @@ void Widget::OnNativeWidgetParentChanged(gfx::NativeView parent) { } gfx::Size Widget::GetMinimumSize() const { @@ -590,18 +577,18 @@ index 0b36c074cb789..b706a99d3d889 100644 return non_client_view_ ? non_client_view_->GetMaximumSize() : gfx::Size(); } -@@ -1999,7 +2016,8 @@ bool Widget::SetInitialFocus(ui::WindowShowState show_state) { - return false; +@@ -1990,7 +2007,8 @@ bool Widget::SetInitialFocus(ui::mojom::WindowShowState show_state) { View* v = widget_delegate_->GetInitiallyFocusedView(); - if (!focus_on_creation_ || show_state == ui::SHOW_STATE_INACTIVE || -- show_state == ui::SHOW_STATE_MINIMIZED) { -+ show_state == ui::SHOW_STATE_MINIMIZED || -+ show_state == ui::SHOW_STATE_HIDDEN) { + if (!focus_on_creation_ || + show_state == ui::mojom::WindowShowState::kInactive || +- show_state == ui::mojom::WindowShowState::kMinimized) { ++ show_state == ui::mojom::WindowShowState::kMinimized || ++ show_state == ui::mojom::WindowShowState::kHidden) { // If not focusing the window now, tell the focus manager which view to // focus when the window is restored. if (v) diff --git ui/views/widget/widget.h ui/views/widget/widget.h -index c4c3d9b0443cc..d9b1661802d74 100644 +index 42c7ccb7a26f0..0483a550d415f 100644 --- ui/views/widget/widget.h +++ ui/views/widget/widget.h @@ -366,6 +366,8 @@ class VIEWS_EXPORT Widget : public internal::NativeWidgetDelegate, @@ -623,10 +610,10 @@ index c4c3d9b0443cc..d9b1661802d74 100644 // Deactivates the widget, making the next window in the Z order the active // window. diff --git ui/views/widget/widget_delegate.h ui/views/widget/widget_delegate.h -index fb32ce5680e28..59fac409aec4a 100644 +index 336b820e995f1..d08c1e7e7cd6e 100644 --- ui/views/widget/widget_delegate.h +++ ui/views/widget/widget_delegate.h -@@ -395,6 +395,10 @@ class VIEWS_EXPORT WidgetDelegate { +@@ -396,6 +396,10 @@ class VIEWS_EXPORT WidgetDelegate { // Returns true if the title text should be centered. bool ShouldCenterWindowTitleText() const; @@ -638,10 +625,10 @@ index fb32ce5680e28..59fac409aec4a 100644 bool enable_arrow_key_traversal() const { return params_.enable_arrow_key_traversal; diff --git ui/views/widget/widget_hwnd_utils.cc ui/views/widget/widget_hwnd_utils.cc -index b162f426dbceb..017eb2562f6eb 100644 +index f28c1d1fb5581..4e2390b94cbe9 100644 --- ui/views/widget/widget_hwnd_utils.cc +++ ui/views/widget/widget_hwnd_utils.cc -@@ -63,7 +63,8 @@ void CalculateWindowStylesFromInitParams( +@@ -64,7 +64,8 @@ void CalculateWindowStylesFromInitParams( if (!widget_delegate->CanResize()) *style &= static_cast(~(WS_THICKFRAME | WS_MAXIMIZEBOX)); if (params.remove_standard_frame) @@ -652,10 +639,10 @@ 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 cc7e087c50ea1..f4099bcdcdd18 100644 +index 328cf96499fa2..879fb9820ee38 100644 --- ui/views/win/hwnd_message_handler.cc +++ ui/views/win/hwnd_message_handler.cc -@@ -772,7 +772,11 @@ bool HWNDMessageHandler::IsVisible() const { +@@ -774,7 +774,11 @@ bool HWNDMessageHandler::IsVisible() const { } bool HWNDMessageHandler::IsActive() const { @@ -668,7 +655,7 @@ index cc7e087c50ea1..f4099bcdcdd18 100644 } bool HWNDMessageHandler::IsMinimized() const { -@@ -3217,10 +3221,13 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message, +@@ -3229,10 +3233,13 @@ LRESULT HWNDMessageHandler::HandleMouseEventInternal(UINT message, } else if (event.type() == ui::EventType::kMousewheel) { ui::MouseWheelEvent mouse_wheel_event(msg); // Reroute the mouse wheel to the window under the pointer if applicable. diff --git a/patch/patches/viz_osr_2575.patch b/patch/patches/viz_osr_2575.patch index a6cbfba72..b9dcff9bf 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 853a95c65674b..cc9ed39b3a236 100644 +index 050ff22c63d6a..f5f553df64bd4 100644 --- components/viz/service/BUILD.gn +++ components/viz/service/BUILD.gn -@@ -260,6 +260,8 @@ viz_component("service") { +@@ -264,6 +264,8 @@ viz_component("service") { "transitions/surface_animation_manager.h", "transitions/transferable_resource_tracker.cc", "transitions/transferable_resource_tracker.h", @@ -93,7 +93,7 @@ index 853a95c65674b..cc9ed39b3a236 100644 defines = [ "VIZ_SERVICE_IMPLEMENTATION" ] diff --git components/viz/service/display_embedder/output_surface_provider_impl.cc components/viz/service/display_embedder/output_surface_provider_impl.cc -index bddaacb09fcf9..9965df4a130de 100644 +index 87722045daafa..67c673ab71171 100644 --- components/viz/service/display_embedder/output_surface_provider_impl.cc +++ components/viz/service/display_embedder/output_surface_provider_impl.cc @@ -18,6 +18,7 @@ @@ -150,10 +150,10 @@ index 796ae2688436e..37a3406790210 100644 TRACE_EVENT_ASYNC_BEGIN0("viz", "SoftwareOutputDeviceWinProxy::Draw", this); diff --git content/browser/compositor/viz_process_transport_factory.cc content/browser/compositor/viz_process_transport_factory.cc -index 0a7aff6ee5b1c..05455d0cb2e9b 100644 +index 6ad03ff41c8ae..5d1add76f8aff 100644 --- content/browser/compositor/viz_process_transport_factory.cc +++ content/browser/compositor/viz_process_transport_factory.cc -@@ -396,8 +396,13 @@ void VizProcessTransportFactory::OnEstablishedGpuChannel( +@@ -387,8 +387,13 @@ void VizProcessTransportFactory::OnEstablishedGpuChannel( mojo::AssociatedRemote display_private; root_params->display_private = display_private.BindNewEndpointAndPassReceiver(); diff --git a/patch/patches/web_contents_1257_1565.patch b/patch/patches/web_contents_1257_1565.patch index 8accc36de..e0f5b2b07 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 c92c7744be691..bf09409fd374a 100644 +index 0e62bcaf1c171..2d6bde17f774c 100644 --- content/browser/web_contents/web_contents_impl.cc +++ content/browser/web_contents/web_contents_impl.cc -@@ -3675,6 +3675,12 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, +@@ -3650,6 +3650,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 c92c7744be691..bf09409fd374a 100644 std::unique_ptr delegate = GetContentClient()->browser()->GetWebContentsViewDelegate(this); -@@ -3685,6 +3691,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, +@@ -3660,6 +3666,7 @@ void WebContentsImpl::Init(const WebContents::CreateParams& params, view_ = CreateWebContentsView(this, std::move(delegate), &render_view_host_delegate_view_); } @@ -23,7 +23,7 @@ index c92c7744be691..bf09409fd374a 100644 CHECK(render_view_host_delegate_view_); CHECK(view_.get()); -@@ -3881,6 +3888,9 @@ void WebContentsImpl::RenderWidgetCreated( +@@ -3857,6 +3864,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 c92c7744be691..bf09409fd374a 100644 } void WebContentsImpl::RenderWidgetDeleted( -@@ -4753,6 +4763,15 @@ FrameTree* WebContentsImpl::CreateNewWindow( +@@ -4740,6 +4750,15 @@ FrameTree* WebContentsImpl::CreateNewWindow( create_params.picture_in_picture_options = *(params.pip_options); } @@ -49,7 +49,7 @@ index c92c7744be691..bf09409fd374a 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. -@@ -9194,6 +9213,9 @@ void WebContentsImpl::SetFocusedFrame(FrameTreeNode* node, +@@ -9155,6 +9174,9 @@ void WebContentsImpl::SetFocusedFrame(FrameTreeNode* node, } CloseListenerManager::DidChangeFocusedFrame(this); @@ -60,7 +60,7 @@ index c92c7744be691..bf09409fd374a 100644 FrameTree* WebContentsImpl::GetOwnedPictureInPictureFrameTree() { diff --git content/public/browser/web_contents.h content/public/browser/web_contents.h -index e3351da92040c..9bbde25e38564 100644 +index 09099f8ba7b05..7f4ef83efa8af 100644 --- content/public/browser/web_contents.h +++ content/public/browser/web_contents.h @@ -110,10 +110,12 @@ class BrowserContext; @@ -88,7 +88,7 @@ index e3351da92040c..9bbde25e38564 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 a080fb57f00c7..a3d3ddec14e67 100644 +index 19dff7ea3f62e..af796b114b3e1 100644 --- content/public/browser/web_contents_delegate.h +++ content/public/browser/web_contents_delegate.h @@ -65,9 +65,11 @@ class EyeDropperListener; @@ -119,10 +119,10 @@ index a080fb57f00c7..a3d3ddec14e67 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 01037a275ee9e..faa1871ebdd2e 100644 +index 58e3918a83b1a..d5e94d504bb2f 100644 --- content/public/browser/web_contents_observer.h +++ content/public/browser/web_contents_observer.h -@@ -242,6 +242,9 @@ class CONTENT_EXPORT WebContentsObserver : public base::CheckedObserver { +@@ -255,6 +255,9 @@ class CONTENT_EXPORT WebContentsObserver : public base::CheckedObserver { // controlled by the capturing tab. virtual void OnCapturedSurfaceControl() {} @@ -132,7 +132,7 @@ index 01037a275ee9e..faa1871ebdd2e 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() {} -@@ -909,6 +912,10 @@ class CONTENT_EXPORT WebContentsObserver : public base::CheckedObserver { +@@ -922,6 +925,10 @@ class CONTENT_EXPORT WebContentsObserver : public base::CheckedObserver { // WebContents has gained/lost focus. virtual void OnFocusChangedInPage(FocusedNodeDetails* details) {} diff --git a/patch/patches/webkit_popups.patch b/patch/patches/webkit_popups.patch index 4d7b5dd59..5dbf10d3b 100644 --- a/patch/patches/webkit_popups.patch +++ b/patch/patches/webkit_popups.patch @@ -11,7 +11,7 @@ index 746af7113a66d..63346d59fe411 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 8f3603538170a..70366efd02575 100644 +index b5281ba471641..f5704e97f557e 100644 --- third_party/blink/renderer/core/exported/web_view_impl.cc +++ third_party/blink/renderer/core/exported/web_view_impl.cc @@ -253,8 +253,13 @@ void WebView::SetUseExternalPopupMenus(bool use_external_popup_menus) { @@ -39,7 +39,7 @@ index 8f3603538170a..70366efd02575 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 69318d9676ed6..84c2d95694146 100644 +index e85443e4492d3..228fe7496b6d2 100644 --- third_party/blink/renderer/core/exported/web_view_impl.h +++ third_party/blink/renderer/core/exported/web_view_impl.h @@ -140,7 +140,8 @@ class CORE_EXPORT WebViewImpl final : public WebView, @@ -62,7 +62,7 @@ index 69318d9676ed6..84c2d95694146 100644 gfx::Transform device_emulation_transform_; diff --git third_party/blink/renderer/core/page/chrome_client_impl.cc third_party/blink/renderer/core/page/chrome_client_impl.cc -index 1536a0c7089d7..0376e3a663d98 100644 +index 81d3ec54e4dae..0fa937e36579a 100644 --- third_party/blink/renderer/core/page/chrome_client_impl.cc +++ third_party/blink/renderer/core/page/chrome_client_impl.cc @@ -973,7 +973,7 @@ PopupMenu* ChromeClientImpl::OpenPopupMenu(LocalFrame& frame, diff --git a/patch/patches/win_base_pa_oom_5891459.patch b/patch/patches/win_base_pa_oom_5891459.patch deleted file mode 100644 index 2da1b9723..000000000 --- a/patch/patches/win_base_pa_oom_5891459.patch +++ /dev/null @@ -1,12 +0,0 @@ -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 0d63f61b9..1e46e5a74 100644 --- a/patch/patches/win_sandbox_3210.patch +++ b/patch/patches/win_sandbox_3210.patch @@ -1,16 +1,20 @@ diff --git sandbox/policy/win/sandbox_win.cc sandbox/policy/win/sandbox_win.cc -index e6a3cd1e84b3b..e4eb19e6cc9a5 100644 +index b550651a8a981..f5664314075dc 100644 --- sandbox/policy/win/sandbox_win.cc +++ sandbox/policy/win/sandbox_win.cc -@@ -981,6 +981,13 @@ ResultCode SandboxWin::StartSandboxedProcess( +@@ -963,6 +963,17 @@ ResultCode SandboxWin::StartSandboxedProcess( const base::HandlesToInheritVector& handles_to_inherit, SandboxDelegate* delegate, - base::Process* process) { + StartSandboxedProcessCallback result_callback) { + // Will be nullptr if SandboxInterfaceInfo was not initialized by the CEF + // client, meaning that the sandbox is implicitly disabled. + if (!g_broker_services) { -+ return LaunchWithoutSandbox(cmd_line, handles_to_inherit, delegate, -+ process); ++ base::Process process; ++ ResultCode result = ++ LaunchWithoutSandbox(cmd_line, handles_to_inherit, delegate, &process); ++ DWORD last_error = GetLastError(); ++ std::move(result_callback).Run(std::move(process), last_error, result); ++ return SBOX_ALL_OK; + } + SandboxLaunchTimer timer; diff --git a/patch/patches/win_sandbox_policy.patch b/patch/patches/win_sandbox_policy.patch index 2b7de531a..cd4a25a7a 100644 --- a/patch/patches/win_sandbox_policy.patch +++ b/patch/patches/win_sandbox_policy.patch @@ -12,10 +12,10 @@ index 70c3179ee66ff..9493ee22c541e 100644 } // namespace sandbox diff --git sandbox/win/src/sandbox_policy_base.cc sandbox/win/src/sandbox_policy_base.cc -index 4731c8fac7950..434eef63e533e 100644 +index 1c8ae730e5dd3..5d04f11a770c5 100644 --- sandbox/win/src/sandbox_policy_base.cc +++ sandbox/win/src/sandbox_policy_base.cc -@@ -195,12 +195,12 @@ PolicyGlobal* ConfigBase::policy() { +@@ -194,12 +194,12 @@ PolicyGlobal* ConfigBase::policy() { return policy_; } @@ -31,7 +31,7 @@ index 4731c8fac7950..434eef63e533e 100644 } return std::nullopt; } -@@ -790,14 +790,14 @@ bool PolicyBase::SetupHandleCloser(TargetProcess& target) { +@@ -785,14 +785,14 @@ bool PolicyBase::SetupHandleCloser(TargetProcess& target) { return (SBOX_ALL_OK == rc); } @@ -49,7 +49,7 @@ index 4731c8fac7950..434eef63e533e 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 daaff5042a562..5f67342e1c48d 100644 +index 291dea81a1b18..1850dd502d74b 100644 --- sandbox/win/src/sandbox_policy_base.h +++ sandbox/win/src/sandbox_policy_base.h @@ -120,7 +120,7 @@ class ConfigBase final : public TargetConfig { diff --git a/tools/make_distrib.py b/tools/make_distrib.py index 963167a49..883966fb0 100644 --- a/tools/make_distrib.py +++ b/tools/make_distrib.py @@ -1144,6 +1144,7 @@ elif platform == 'windows': 'obj\\third_party\\abseil-cpp\\absl\\base\\**\\*.obj', 'obj\\third_party\\abseil-cpp\\absl\\debugging\\**\\*.obj', 'obj\\third_party\\abseil-cpp\\absl\\numeric\\**\\*.obj', + 'obj\\third_party\\abseil-cpp\\absl\\strings\\**\\*.obj', 'obj\\third_party\\abseil-cpp\\absl\\synchronization\\**\\*.obj', 'obj\\third_party\\abseil-cpp\\absl\\time\\**\\*.obj', 'obj\\third_party\\abseil-cpp\\absl\\types\\**\\*.obj',