From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Tue, 31 Mar 2020 14:32:33 -0700 Subject: fix: undo redo broken in webviews When propagating the undo and redo events from the menu, Chromium was not properly sending the events to the focused webcontents on macOS. This fixes that error. A crbug has been opened at https://bugs.chromium.org/p/chromium/issues/detail?id=1067284 and this patch will be removed when it has been resolved upstream. diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm index 472869202ff8a62d854c9ca39ca9f14e2f91e8cf..1be0ad4382c735b7dcb78715528148aa2ad2d2c1 100644 --- a/content/browser/renderer_host/render_widget_host_view_mac.mm +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm @@ -38,6 +38,7 @@ #include "content/browser/renderer_host/render_widget_host_input_event_router.h" #import "content/browser/renderer_host/text_input_client_mac.h" #import "content/browser/renderer_host/ui_events_helper.h" +#include "content/browser/web_contents/web_contents_impl.h" #include "content/common/text_input_state.h" #include "content/common/view_messages.h" #include "content/public/browser/browser_context.h" @@ -978,7 +979,12 @@ gfx::Range RenderWidgetHostViewMac::ConvertCharacterRangeToCompositionRange( } WebContents* RenderWidgetHostViewMac::GetWebContents() { - return WebContents::FromRenderViewHost(RenderViewHost::From(host())); + auto* wc = WebContents::FromRenderViewHost(RenderViewHost::From(host())); + if (wc) { + WebContentsImpl* web_contents_impl = static_cast(wc); + return web_contents_impl->GetFocusedWebContents(); + } + return wc; } bool RenderWidgetHostViewMac::GetCachedFirstRectForCharacterRange(