Fix unwanted IME showing issue in Chrome 51/322851/3
authorYongGeol Jung <yg48.jung@samsung.com>
Wed, 16 Apr 2025 11:32:51 +0000 (20:32 +0900)
committerBot Blink <blinkbot@samsung.com>
Fri, 25 Apr 2025 06:44:46 +0000 (06:44 +0000)
IME appears unintentionally after loading a page in Chrome. This issue
was caused by the IME processing code for the Chrome UI area. Modified
it so that this behavior only applies to the Chrome UI.

Change-Id: I4be5e333e4481af2214f94d34c26bb03a813be19
Signed-off-by: YongGeol Jung <yg48.jung@samsung.com>
content/browser/renderer_host/render_widget_host_view_aura.cc
content/browser/renderer_host/render_widget_host_view_aura.h
tizen_src/chromium_impl/ui/ozone/platform/efl/efl_input_method_context.cc
tizen_src/chromium_impl/ui/ozone/platform/efl/im_context_efl.cc
tizen_src/chromium_impl/ui/ozone/platform/efl/im_context_efl.h
ui/base/ime/text_input_client.h

index 426de6e55a15604b49dc8aee7b612cfbe984ec57..7c2d772fc4d0e66f5ddc80eeb3e89ad8d16259eb 100644 (file)
@@ -1766,6 +1766,10 @@ bool RenderWidgetHostViewAura::HasFocusedTextInputClient(
   return false;
 }
 
+bool RenderWidgetHostViewAura::NeedShowVirtualKeyboard() const {
+  return false;
+}
+
 #endif  // IS_TIZEN_TV
 #endif  // IS_EFL
 
index 37e147e05df74e3ffe0b85134b66610ca6d2aaca..81d09fa941a44b553ec6af175e6b20c0bfd9ae94 100644 (file)
@@ -313,6 +313,8 @@ class CONTENT_EXPORT RenderWidgetHostViewAura
   int GetInputMaxLength() const override;
   ui::ImeStyle GetImeStyle() const override;
   bool HasFocusedTextInputClient(ui::TextInputClient* client) const override;
+
+  bool NeedShowVirtualKeyboard() const override;
 #endif  // IS_TIZEN_TV
 #endif  // IS_EFL
 
index 66dd534000026cf0e6aaab2a4c5cd79291ca8a30..7aa9cb06c572d7527ad1096d220dc93a163bf996 100644 (file)
@@ -62,8 +62,7 @@ void EflInputMethodContext::UpdateFocus(
       new_client_attributes.input_type == TEXT_INPUT_TYPE_NONE) {
     Blur();
   }
-  if (old_type == TEXT_INPUT_TYPE_NONE &&
-      new_client_attributes.input_type != TEXT_INPUT_TYPE_NONE) {
+  if (new_client_attributes.input_type != TEXT_INPUT_TYPE_NONE) {
     Focus();
   }
 }
@@ -86,8 +85,16 @@ void EflInputMethodContext::Focus() {
   if (im_context_ && !im_context_->IsFocused())
     im_context_->OnFocusIn();
 #if defined(BUILD_CHROME)
-  if (im_context_ && !im_context_->IsVisible())
+  if (im_context_ && !im_context_->IsVisible()) {
+#if BUILDFLAG(IS_TIZEN_TV)
+    if (im_context_->NeedShowVirtualKeyboard()) {
+      LOG(INFO) << "Show IME for Chrome UI";
+      im_context_->ShowPanel();
+    }
+#else
     im_context_->ShowPanel();
+#endif
+  }
 #endif
 }
 
index 63a9b222e49043be3cd4263556ca33525efdfb24..d5556e6d92a8d6dad9a75dbba61757da0fa11651 100644 (file)
@@ -1136,6 +1136,13 @@ bool IMContextEfl::IsChromeNonWebviewTextInputClient() {
                                            focused_text_input_client_))));
 }
 
+bool IMContextEfl::NeedShowVirtualKeyboard() {
+  if (!focused_text_input_client_) {
+    return false;
+  }
+  return focused_text_input_client_->NeedShowVirtualKeyboard();
+}
+
 #endif
 
 }  // namespace ui
index c57fb9bec4e2a1060f11a4637d36dc18857ee564..4dffb4d620b354aef5e4eed46ca1c3ed60a131dd 100644 (file)
@@ -87,6 +87,8 @@ class IMContextEfl {
   bool ImeHandleKeyEventEnabled();
   void SetIMEPositionAlign(int x, int y, IMEAlign align);
   void SetFocusedTextInputClient(TextInputClient* focused_client);
+
+  bool NeedShowVirtualKeyboard();
 #endif
 
  private:
index 0ac2ff9781da5c808cd8b50f37118a3211a496b7..c4b3ada48778955542dc7fb87017c7523f5681a0 100644 (file)
@@ -181,6 +181,8 @@ class COMPONENT_EXPORT(UI_BASE_IME) TextInputClient
   virtual bool HasFocusedTextInputClient(ui::TextInputClient* client) const {
     return false;
   }
+
+  virtual bool NeedShowVirtualKeyboard() const { return true; }
 #endif  // IS_TIZEN_TV
 #endif  // IS_EFL