Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix: on-screen-keyboard hides on input blurred in webview (#35982)
* fix: on-screen-keyboard hides on input blurred in webview Co-authored-by: Kyrylo Hrechykhin <khrechykhin@microsoft.com> * chore: update patches Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com> Co-authored-by: Kyrylo Hrechykhin <khrechykhin@microsoft.com> Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com>
- Loading branch information
1 parent
9f99f4e
commit 77bc03e
Showing
2 changed files
with
60 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
59 changes: 59 additions & 0 deletions
59
patches/chromium/fix_on-screen-keyboard_hides_on_input_blur_in_webview.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 | ||
From: Kyrylo Hrechykhin <khrechykhin@microsoft.com> | ||
Date: Thu, 6 Oct 2022 18:30:53 +0200 | ||
Subject: fix: on-screen-keyboard hides on input blur in webview | ||
|
||
Changes introduced by this patch fix issue where OSK does not hide on | ||
input rendered inside webview is blurred. This patch should be removed | ||
when proper fix in chromium repo is available. | ||
|
||
Note: the issue still occurs if input rendered in webview blurred due | ||
to touch outside of webview. It is caused by webview implementation | ||
details. Specificaly due to webview has its own tree nodes and focused | ||
node does not change in this case. | ||
|
||
chromium-bug: https://crbug.com/1369605 | ||
|
||
diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.cc b/content/browser/renderer_host/render_widget_host_view_child_frame.cc | ||
index 4e6d62be68d59c8a49159fda4d1e68f101a6f0a3..cfd5a01ea84a1f454a5172da3e96e66a50c82939 100644 | ||
--- a/content/browser/renderer_host/render_widget_host_view_child_frame.cc | ||
+++ b/content/browser/renderer_host/render_widget_host_view_child_frame.cc | ||
@@ -992,6 +992,12 @@ RenderWidgetHostViewChildFrame::DidUpdateVisualProperties( | ||
return viz::ScopedSurfaceIdAllocator(std::move(allocation_task)); | ||
} | ||
|
||
+void RenderWidgetHostViewChildFrame::FocusedNodeChanged( | ||
+ bool is_editable_node, | ||
+ const gfx::Rect& node_bounds_in_screen) { | ||
+ NOTREACHED(); | ||
+} | ||
+ | ||
ui::TextInputType RenderWidgetHostViewChildFrame::GetTextInputType() const { | ||
if (!text_input_manager_) | ||
return ui::TEXT_INPUT_TYPE_NONE; | ||
diff --git a/content/browser/renderer_host/render_widget_host_view_child_frame.h b/content/browser/renderer_host/render_widget_host_view_child_frame.h | ||
index 70b151bcb8e3b1964d316bf2e169dbe0f28f24c7..c3857298974a0c2761efcd3924587607997e3117 100644 | ||
--- a/content/browser/renderer_host/render_widget_host_view_child_frame.h | ||
+++ b/content/browser/renderer_host/render_widget_host_view_child_frame.h | ||
@@ -181,6 +181,8 @@ class CONTENT_EXPORT RenderWidgetHostViewChildFrame | ||
void DisableAutoResize(const gfx::Size& new_size) override; | ||
viz::ScopedSurfaceIdAllocator DidUpdateVisualProperties( | ||
const cc::RenderFrameMetadata& metadata) override; | ||
+ void FocusedNodeChanged(bool is_editable_node, | ||
+ const gfx::Rect& node_bounds_in_screen) override; | ||
|
||
// RenderFrameMetadataProvider::Observer implementation. | ||
void OnRenderFrameMetadataChangedBeforeActivation( | ||
diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc | ||
index 74993d461cbd0885a709cf8b663b9c69650aa3cf..940045d9bbb62676811f55f5d30a93a352f43ede 100644 | ||
--- a/content/browser/web_contents/web_contents_impl.cc | ||
+++ b/content/browser/web_contents/web_contents_impl.cc | ||
@@ -7928,7 +7928,7 @@ void WebContentsImpl::OnFocusedElementChangedInFrame( | ||
"WebContentsImpl::OnFocusedElementChangedInFrame", | ||
"render_frame_host", frame); | ||
RenderWidgetHostViewBase* root_view = | ||
- static_cast<RenderWidgetHostViewBase*>(GetRenderWidgetHostView()); | ||
+ static_cast<RenderWidgetHostViewBase*>(GetTopLevelRenderWidgetHostView()); | ||
if (!root_view || !frame->GetView()) | ||
return; | ||
// Convert to screen coordinates from window coordinates by adding the |