From 1b5211033cea0260dd763c73960d4e27be618c86 Mon Sep 17 00:00:00 2001 From: Mike Wiedenbauer Date: Tue, 21 Apr 2020 18:30:52 +0000 Subject: [PATCH] Fix OSR keyboard input for editable PDF (fixes issue #2907) --- libcef/browser/osr/render_widget_host_view_osr.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/libcef/browser/osr/render_widget_host_view_osr.cc b/libcef/browser/osr/render_widget_host_view_osr.cc index 13edc7074..578156a5f 100644 --- a/libcef/browser/osr/render_widget_host_view_osr.cc +++ b/libcef/browser/osr/render_widget_host_view_osr.cc @@ -1074,9 +1074,18 @@ void CefRenderWidgetHostViewOSR::SendExternalBeginFrame() { void CefRenderWidgetHostViewOSR::SendKeyEvent( const content::NativeWebKeyboardEvent& event) { TRACE_EVENT0("cef", "CefRenderWidgetHostViewOSR::SendKeyEvent"); - if (render_widget_host_ && render_widget_host_->GetView()) { + content::RenderWidgetHostImpl* target_host = render_widget_host_; + + // If there are multiple widgets on the page (such as when there are + // out-of-process iframes), pick the one that should process this event. + if (render_widget_host_ && render_widget_host_->delegate()) { + target_host = render_widget_host_->delegate()->GetFocusedRenderWidgetHost( + render_widget_host_); + } + + if (target_host && target_host->GetView()) { // Direct routing requires that events go directly to the View. - render_widget_host_->ForwardKeyboardEventWithLatencyInfo( + target_host->ForwardKeyboardEventWithLatencyInfo( event, ui::LatencyInfo(event.GetType() == blink::WebInputEvent::kChar || event.GetType() == blink::WebInputEvent::kRawKeyDown