diff --git a/patches/chromium/.patches b/patches/chromium/.patches index 5f85c678b5..3924ba4a93 100644 --- a/patches/chromium/.patches +++ b/patches/chromium/.patches @@ -130,3 +130,4 @@ fix_font_face_resolution_when_renderer_is_blocked.patch feat_enable_passing_exit_code_on_service_process_crash.patch chore_remove_reference_to_chrome_browser_themes.patch feat_enable_customizing_symbol_color_in_framecaptionbutton.patch +fix_potential_draggable_region_crash_when_no_mainframeimpl.patch diff --git a/patches/chromium/fix_potential_draggable_region_crash_when_no_mainframeimpl.patch b/patches/chromium/fix_potential_draggable_region_crash_when_no_mainframeimpl.patch new file mode 100644 index 0000000000..8c01bb5c87 --- /dev/null +++ b/patches/chromium/fix_potential_draggable_region_crash_when_no_mainframeimpl.patch @@ -0,0 +1,35 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Shelley Vohr +Date: Thu, 1 Aug 2024 15:30:32 +0200 +Subject: Fix potential draggable region crash when no MainFrameImpl + +Fix a crash that can occur when SetSupportsDraggableRegions +is called with `true` and there is no MainFrameImpl. When MainFrameImpl +is nullptr, logic currently correctly returns early, but +supports_draggable_regions_ is set before that happens. As a +result, when SupportsDraggableRegions() is called, it will return +true, and thus LocalFrameView::UpdateDocumentDraggableRegions() will +call DraggableRegionsChanged(). This will trigger a crash in +WebViewImpl::DraggableRegionsChanged(), as it assumes that +MainFrameImpl is not null. + +Upstreamed in https://chromium-review.googlesource.com/c/chromium/src/+/5756619 + +diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc +index ef68f9cbc63772f50269520fb0198a95e4270947..948cf94e2e4af0bbbf1f9c2322d00075bdaca0b2 100644 +--- a/third_party/blink/renderer/core/exported/web_view_impl.cc ++++ b/third_party/blink/renderer/core/exported/web_view_impl.cc +@@ -4073,11 +4073,12 @@ bool WebViewImpl::IsFencedFrameRoot() const { + } + + void WebViewImpl::SetSupportsDraggableRegions(bool supports_draggable_regions) { +- supports_draggable_regions_ = supports_draggable_regions; + if (!MainFrameImpl() || !MainFrameImpl()->GetFrame()) { + return; + } + ++ supports_draggable_regions_ = supports_draggable_regions; ++ + LocalFrame* local_frame = MainFrameImpl()->GetFrame(); + + if (supports_draggable_regions_) {