diff --git a/patches/chromium/.patches b/patches/chromium/.patches index 093cace4d1..f00f4a82e1 100644 --- a/patches/chromium/.patches +++ b/patches/chromium/.patches @@ -127,3 +127,4 @@ chore_defer_usb_service_getdevices_request_until_usb_service_is.patch fix_remove_profiles_from_spellcheck_service.patch chore_patch_out_profile_methods_in_chrome_browser_pdf.patch chore_patch_out_profile_methods_in_titlebar_config.patch +fix_crash_on_nativetheme_change_during_context_menu_close.patch diff --git a/patches/chromium/fix_crash_on_nativetheme_change_during_context_menu_close.patch b/patches/chromium/fix_crash_on_nativetheme_change_during_context_menu_close.patch new file mode 100644 index 0000000000..c24e5dd59e --- /dev/null +++ b/patches/chromium/fix_crash_on_nativetheme_change_during_context_menu_close.patch @@ -0,0 +1,42 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Shelley Vohr +Date: Fri, 16 Jun 2023 11:15:57 +0200 +Subject: fix: crash on nativeTheme change during context menu close + +Refs https://chromium-review.googlesource.com/c/chromium/src/+/4363385 + +Fixes a crash seen when trying to change nativeTheme source during +a context menu close. This happens as a result of a change added in the +above CL, which doesn't check whether or not the menu controller could +possibly be null as can happen during a context menu close. This +only affects Windows 11, as Bubble Border is only enabled there. + +This should be upstreamed, as other uses of MenuController in this +file do check for menu controller being null. + +diff --git a/ui/views/controls/menu/menu_scroll_view_container.cc b/ui/views/controls/menu/menu_scroll_view_container.cc +index 76bb4863858fb1bde1288b3d1b1d07f151a2f801..f2ceb3b8d6cbcf4bb4af8b85573bba29a38e5abf 100644 +--- a/ui/views/controls/menu/menu_scroll_view_container.cc ++++ b/ui/views/controls/menu/menu_scroll_view_container.cc +@@ -402,8 +402,7 @@ void MenuScrollViewContainer::CreateDefaultBorder() { + MenuController* menu_controller = + content_view_->GetMenuItem()->GetMenuController(); + const MenuConfig& menu_config = MenuConfig::instance(); +- corner_radius_ = menu_config.CornerRadiusForMenu( +- content_view_->GetMenuItem()->GetMenuController()); ++ corner_radius_ = menu_config.CornerRadiusForMenu(menu_controller); + int padding = menu_config.use_outer_border && corner_radius_ > 0 + ? kBorderPaddingDueToRoundedCorners + : 0; +@@ -418,8 +417,9 @@ void MenuScrollViewContainer::CreateDefaultBorder() { + int bottom_inset = GetFootnote() ? 0 : vertical_inset; + + if (menu_config.use_outer_border) { +- if (menu_config.use_bubble_border && (corner_radius_ > 0) && +- !menu_controller->IsCombobox()) { ++ // Menu controller could be null during context menu being closed. ++ bool is_combobox = menu_controller && !menu_controller->IsCombobox(); ++ if (menu_config.use_bubble_border && (corner_radius_ > 0) && !is_combobox) { + CreateBubbleBorder(); + } else { + gfx::Insets insets = gfx::Insets::TLBR(vertical_inset, horizontal_inset,