New issue
Advanced search Search tips

Issue 631527 link

Starred by 3 users

Issue metadata

Status: Started
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 1
Type: Bug

Blocking:
issue 918537



Sign in to add a comment

SingleProcessMash: GBoard IME broken due to ui.mojom.TextInputClient unimplemented methods

Project Member Reported by moshayedi@chromium.org, Jul 26 2016

Issue description

Currently ui.mojom.TextInputClient doesn't contain functions to following sets from ui::TextInputClient:

* Input text confirmation
* Document content operations
* Miscellaneous functions

We should decide which of these functions we need to include in the mojom interface and add them.
 
Labels: Proj-Mustash
Components: Internals>MUS
Blocking: -548407 672587
Labels: -Pri-2 Pri-1
Project Member

Comment 4 by bugdroid1@chromium.org, Jan 13 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/744bfc85a783e50ac5ae830fcdd5a9204df60d66

commit 744bfc85a783e50ac5ae830fcdd5a9204df60d66
Author: moshayedi <moshayedi@chromium.org>
Date: Fri Jan 13 02:12:57 2017

IME for Mus: EnumTraits for TextInputMode and TextInputType.

 * Adds EnumTraits for TextInputMode and TextInputType.
 * Adds corresponding unittests.
 * Adds missing enum entries in ime.mojom.

BUG=631527

Review-Url: https://codereview.chromium.org/2626383002
Cr-Commit-Position: refs/heads/master@{#443463}

[modify] https://crrev.com/744bfc85a783e50ac5ae830fcdd5a9204df60d66/chrome/browser/ui/views/ime_driver/input_method_bridge_chromeos.cc
[modify] https://crrev.com/744bfc85a783e50ac5ae830fcdd5a9204df60d66/chrome/browser/ui/views/ime_driver/input_method_bridge_chromeos.h
[modify] https://crrev.com/744bfc85a783e50ac5ae830fcdd5a9204df60d66/chrome/browser/ui/views/ime_driver/simple_input_method.cc
[modify] https://crrev.com/744bfc85a783e50ac5ae830fcdd5a9204df60d66/chrome/browser/ui/views/ime_driver/simple_input_method.h
[modify] https://crrev.com/744bfc85a783e50ac5ae830fcdd5a9204df60d66/services/ui/ime/test_ime_driver/test_ime_driver.cc
[modify] https://crrev.com/744bfc85a783e50ac5ae830fcdd5a9204df60d66/services/ui/public/interfaces/ime/ime.mojom
[modify] https://crrev.com/744bfc85a783e50ac5ae830fcdd5a9204df60d66/services/ui/public/interfaces/ime/ime.typemap
[modify] https://crrev.com/744bfc85a783e50ac5ae830fcdd5a9204df60d66/services/ui/public/interfaces/ime/ime_struct_traits.cc
[modify] https://crrev.com/744bfc85a783e50ac5ae830fcdd5a9204df60d66/services/ui/public/interfaces/ime/ime_struct_traits.h
[modify] https://crrev.com/744bfc85a783e50ac5ae830fcdd5a9204df60d66/services/ui/public/interfaces/ime/ime_struct_traits_test.mojom
[modify] https://crrev.com/744bfc85a783e50ac5ae830fcdd5a9204df60d66/services/ui/public/interfaces/ime/ime_struct_traits_unittest.cc
[modify] https://crrev.com/744bfc85a783e50ac5ae830fcdd5a9204df60d66/ui/aura/mus/input_method_mus.cc

Project Member

Comment 5 by bugdroid1@chromium.org, Jan 16 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0869ab12cefea5628c54151869c88d8a21a78577

commit 0869ab12cefea5628c54151869c88d8a21a78577
Author: moshayedi <moshayedi@chromium.org>
Date: Mon Jan 16 19:13:06 2017

IME for Mus: Send TextInputClient information to IMEDriver.

Client sends type, mode, direction, flags, and caret bounds to IMEDriver
when initializing a session. It can update type and caret bounds later
using methods in InputMethod.

Almost all other NOTIMPLEMENED() functions in RemoteTextInputClient are
used solely by InputMethodChromeOS::OnCaretBoundsChanged() or its
callees, which we might be able to avoid implementing in the IMEDriver
side and handle in the client side. So we don't touch them in this CL
and leave them to other CLs.

BUG=631527

Review-Url: https://codereview.chromium.org/2626983003
Cr-Commit-Position: refs/heads/master@{#443929}

[modify] https://crrev.com/0869ab12cefea5628c54151869c88d8a21a78577/chrome/browser/ui/views/ime_driver/ime_driver_mus.cc
[modify] https://crrev.com/0869ab12cefea5628c54151869c88d8a21a78577/chrome/browser/ui/views/ime_driver/ime_driver_mus.h
[modify] https://crrev.com/0869ab12cefea5628c54151869c88d8a21a78577/chrome/browser/ui/views/ime_driver/input_method_bridge_chromeos.cc
[modify] https://crrev.com/0869ab12cefea5628c54151869c88d8a21a78577/chrome/browser/ui/views/ime_driver/input_method_bridge_chromeos.h
[modify] https://crrev.com/0869ab12cefea5628c54151869c88d8a21a78577/chrome/browser/ui/views/ime_driver/input_method_bridge_chromeos_unittest.cc
[modify] https://crrev.com/0869ab12cefea5628c54151869c88d8a21a78577/chrome/browser/ui/views/ime_driver/remote_text_input_client.cc
[modify] https://crrev.com/0869ab12cefea5628c54151869c88d8a21a78577/chrome/browser/ui/views/ime_driver/remote_text_input_client.h
[modify] https://crrev.com/0869ab12cefea5628c54151869c88d8a21a78577/services/ui/ime/ime_server_impl.cc
[modify] https://crrev.com/0869ab12cefea5628c54151869c88d8a21a78577/services/ui/ime/ime_server_impl.h
[modify] https://crrev.com/0869ab12cefea5628c54151869c88d8a21a78577/services/ui/ime/ime_unittest.cc
[modify] https://crrev.com/0869ab12cefea5628c54151869c88d8a21a78577/services/ui/ime/test_ime_driver/test_ime_driver.cc
[modify] https://crrev.com/0869ab12cefea5628c54151869c88d8a21a78577/services/ui/ime/test_ime_driver/test_ime_driver.h
[modify] https://crrev.com/0869ab12cefea5628c54151869c88d8a21a78577/services/ui/public/interfaces/ime/BUILD.gn
[modify] https://crrev.com/0869ab12cefea5628c54151869c88d8a21a78577/services/ui/public/interfaces/ime/ime.mojom
[modify] https://crrev.com/0869ab12cefea5628c54151869c88d8a21a78577/ui/aura/mus/input_method_mus.cc

Comment 6 by sky@chromium.org, Jul 24 2017

Owner: e...@chromium.org

Comment 7 by sky@chromium.org, Aug 8 2017

Owner: thanhph@chromium.org
Status: Started (was: Assigned)
Remaning functions that InputMethodChromeOS calls: OnInputMethodChanged(), HasCompositionText(), GetTextRange(), EnsureCaretNotInRect()

[4853:4853:1010/144245.077061:ERROR:remote_text_input_client.cc(148)] Not implemented reached in virtual void RemoteTextInputClient::OnInputMethodChanged()
[4853:4853:1010/144245.077083:ERROR:remote_text_input_client.cc(105)] Not implemented reached in virtual bool RemoteTextInputClient::HasCompositionText() const
[4853:4853:1010/144245.077089:ERROR:remote_text_input_client.cc(111)] Not implemented reached in virtual bool RemoteTextInputClient::GetTextRange(gfx::Range *) const
[4853:4853:1010/144245.077095:ERROR:remote_text_input_client.cc(166)] Not implemented reached in virtual void RemoteTextInputClient::EnsureCaretNotInRect(const gfx::Rect &)
Components: -Internals>MUS Internals>Services>WindowService
Components: -MUS
Labels: -Proj-Mustash Proj-Mash-SingleProcess OS-Chrome
Owner: xiy...@chromium.org
Status: Assigned (was: Started)
Blocking: -672587
Basically IME works without those functions. Removing as a blocker for  issue 672587 .
Labels: -Pri-1 -Proj-Mash-SingleProcess Proj-Mash-MultiProcess Pri-2
Xiyuan, if IME works without this, I'm removing as a blocker from single-process-mash. If I have that wrong, please update.
Project Member

Comment 15 by bugdroid1@chromium.org, Dec 10

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ffb4d235d408e6e06f749e65406c2e652e9fa10c

commit ffb4d235d408e6e06f749e65406c2e652e9fa10c
Author: Xiyuan Xia <xiyuan@chromium.org>
Date: Mon Dec 10 17:47:06 2018

SingleProcessMash: Fix browser window move with VK

- Wire up RemoteTextInputClient::EnsureCaretNotInRect to forward
  the call to the actual TextInputClient;
- Fix ime_util_chromeos to handle windows under MUS mode;
- Change ChromeKeyboardBoundsObserver to use WidgetObserver
  to get bounds change of toplevel browser window under mash;

Bug: 631527,  906888 ,  906859 
Change-Id: I1570f8e3254e025106a120cf5ee538c20367c405
Reviewed-on: https://chromium-review.googlesource.com/c/1366879
Commit-Queue: Xiyuan Xia <xiyuan@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Cr-Commit-Position: refs/heads/master@{#615164}
[modify] https://crrev.com/ffb4d235d408e6e06f749e65406c2e652e9fa10c/chrome/browser/ui/ash/keyboard/chrome_keyboard_bounds_observer.cc
[modify] https://crrev.com/ffb4d235d408e6e06f749e65406c2e652e9fa10c/chrome/browser/ui/ash/keyboard/chrome_keyboard_bounds_observer.h
[modify] https://crrev.com/ffb4d235d408e6e06f749e65406c2e652e9fa10c/chrome/browser/ui/views/ime_driver/input_method_bridge_chromeos_unittest.cc
[modify] https://crrev.com/ffb4d235d408e6e06f749e65406c2e652e9fa10c/chrome/browser/ui/views/ime_driver/remote_text_input_client.cc
[modify] https://crrev.com/ffb4d235d408e6e06f749e65406c2e652e9fa10c/services/ws/ime/ime_unittest.cc
[modify] https://crrev.com/ffb4d235d408e6e06f749e65406c2e652e9fa10c/services/ws/public/mojom/ime/ime.mojom
[modify] https://crrev.com/ffb4d235d408e6e06f749e65406c2e652e9fa10c/ui/aura/mus/text_input_client_impl.cc
[modify] https://crrev.com/ffb4d235d408e6e06f749e65406c2e652e9fa10c/ui/aura/mus/text_input_client_impl.h
[modify] https://crrev.com/ffb4d235d408e6e06f749e65406c2e652e9fa10c/ui/views/widget/desktop_aura/desktop_screen_position_client.cc
[modify] https://crrev.com/ffb4d235d408e6e06f749e65406c2e652e9fa10c/ui/wm/core/ime_util_chromeos.cc

Note: in SingleProcessMash the following tests still fail because focus requests are not getting handled correctly:

-KeyboardEndToEndFormTest.ChangeInputModeToNoneHidesKeyboard
-KeyboardEndToEndFocusTest.TriggerAsyncInputFocusFromUserGestureAfterBlurShowsKeyboard

Project Member

Comment 17 by bugdroid1@chromium.org, Dec 19

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/082e46c11e3aea6fb9d51eb3110d929c4cccf92b

commit 082e46c11e3aea6fb9d51eb3110d929c4cccf92b
Author: Xiyuan Xia <xiyuan@chromium.org>
Date: Wed Dec 19 23:22:14 2018

SPM: Send all text input states to IME

Make InputMethodMus to send all text input states except caret
bounds that is handled separately. Text input states other than
TextInputType are used in KeyboardController to decide its
visibility. This fixes a couple of KeyboardEndToEnd tests under
single process mash.

Bug: 631527
Change-Id: I26a920fa5a635b8af3683de3fb0a8f7be0c610f7
Reviewed-on: https://chromium-review.googlesource.com/c/1382854
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Reviewed-by: Steven Bennetts <stevenjb@chromium.org>
Commit-Queue: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#618004}
[modify] https://crrev.com/082e46c11e3aea6fb9d51eb3110d929c4cccf92b/chrome/browser/ui/ash/keyboard/keyboard_end_to_end_browsertest.cc
[modify] https://crrev.com/082e46c11e3aea6fb9d51eb3110d929c4cccf92b/chrome/browser/ui/views/ime_driver/ime_driver_mus.cc
[modify] https://crrev.com/082e46c11e3aea6fb9d51eb3110d929c4cccf92b/chrome/browser/ui/views/ime_driver/input_method_bridge_chromeos.cc
[modify] https://crrev.com/082e46c11e3aea6fb9d51eb3110d929c4cccf92b/chrome/browser/ui/views/ime_driver/input_method_bridge_chromeos.h
[modify] https://crrev.com/082e46c11e3aea6fb9d51eb3110d929c4cccf92b/chrome/browser/ui/views/ime_driver/input_method_bridge_chromeos_unittest.cc
[modify] https://crrev.com/082e46c11e3aea6fb9d51eb3110d929c4cccf92b/chrome/browser/ui/views/ime_driver/remote_text_input_client.cc
[modify] https://crrev.com/082e46c11e3aea6fb9d51eb3110d929c4cccf92b/chrome/browser/ui/views/ime_driver/remote_text_input_client.h
[modify] https://crrev.com/082e46c11e3aea6fb9d51eb3110d929c4cccf92b/chrome/browser/ui/views/ime_driver/simple_input_method.cc
[modify] https://crrev.com/082e46c11e3aea6fb9d51eb3110d929c4cccf92b/chrome/browser/ui/views/ime_driver/simple_input_method.h
[modify] https://crrev.com/082e46c11e3aea6fb9d51eb3110d929c4cccf92b/services/ws/ime/ime_unittest.cc
[modify] https://crrev.com/082e46c11e3aea6fb9d51eb3110d929c4cccf92b/services/ws/ime/test_ime_driver/test_ime_driver.cc
[modify] https://crrev.com/082e46c11e3aea6fb9d51eb3110d929c4cccf92b/services/ws/public/mojom/ime/ime.mojom
[modify] https://crrev.com/082e46c11e3aea6fb9d51eb3110d929c4cccf92b/ui/aura/mus/input_method_mus.cc
[modify] https://crrev.com/082e46c11e3aea6fb9d51eb3110d929c4cccf92b/ui/aura/mus/input_method_mus_unittest.cc

Cc: jamescook@chromium.org yhanada@chromium.org
Labels: Proj-Mash-SingleProcess
+jamescook@

Many methods in remote_text_input_client are still unimplemented, so Android IMEs on Chrome OS (which uses those methods extensively) don't work with SingleProcessMash.
Could you implement remaining methods before SingleProcessMash goes to stable?
How to test? Using cjk IME in an Android app ?
Just tried with a 73.0.3644.0 and seems working fine. See attached video.
spm_arc_ime.webm
1.4 MB View Download
The issue is around Android IME on Chrome OS. You can test it by installing Gboard (or some other Android IMEs) from PlayStore and enabled it in tablet mode.
When you use Gboard on Chrome browser window (not Android app), remote_text_input_client is used by input_connection_impl.cc
https://cs.chromium.org/chromium/src/chrome/browser/chromeos/arc/input_method_manager/input_connection_impl.cc?l=88
Blocking: 918537
Labels: -Pri-2 Pri-1
If this breaks GBoard in Chrome this is a blocker for SingleProcessMash.

Labels: M-73
Status: Started (was: Assigned)
Looking...
#21, how to enable gboard? I am on 73.0.3664.0. Installed gboard but somehow could not find it in settings. See attached screenshot.
no_gboard.png
436 KB View Download
Summary: SingleProcessMash: GBoard IME broken due to ui.mojom.TextInputClient unimplemented methods (was: Decide on functions to include in ui.mojom.TextInputClient)
Retitling to make it easier to track for SingleProcessMash rollout.

(FYI I am disabling SingleProcessMash for now.)

Many of the remaining unimplemented methods are getters. We are facing the familiar sync getter vs async getter problem. It is tough for RemoteTextInputClient to provide synchronous access to the data.
Android IME support on CrOS is enabled only with Android P and samus doesn't support Android P yet. Can you test this with eve or nocturne? eve and nocturne should have Android P on M-73.

Project Member

Comment 28 by bugdroid1@chromium.org, Jan 17 (6 days ago)

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e2e00417285ef47b2f81e7af6ada5d59ecebe0ab

commit e2e00417285ef47b2f81e7af6ada5d59ecebe0ab
Author: Xiyuan Xia <xiyuan@chromium.org>
Date: Thu Jan 17 19:32:30 2019

Implement RemoteTextInputClient::ShouldDoLearning etc

Pass focus reason, client source for metrics and should do
learning on starting IME session to RemoteTextInputClient
since these should not change during an IME session;

Bug: 631527
Change-Id: I707afd9a58a29d448d497d0e0c0c19dc983cd32a
Reviewed-on: https://chromium-review.googlesource.com/c/1409917
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Scott Violet <sky@chromium.org>
Commit-Queue: Xiyuan Xia <xiyuan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#623793}
[modify] https://crrev.com/e2e00417285ef47b2f81e7af6ada5d59ecebe0ab/chrome/browser/ui/views/ime_driver/ime_driver_mus.cc
[modify] https://crrev.com/e2e00417285ef47b2f81e7af6ada5d59ecebe0ab/chrome/browser/ui/views/ime_driver/ime_driver_mus.h
[modify] https://crrev.com/e2e00417285ef47b2f81e7af6ada5d59ecebe0ab/chrome/browser/ui/views/ime_driver/input_method_bridge_chromeos_unittest.cc
[modify] https://crrev.com/e2e00417285ef47b2f81e7af6ada5d59ecebe0ab/chrome/browser/ui/views/ime_driver/remote_text_input_client.cc
[modify] https://crrev.com/e2e00417285ef47b2f81e7af6ada5d59ecebe0ab/chrome/browser/ui/views/ime_driver/remote_text_input_client.h
[modify] https://crrev.com/e2e00417285ef47b2f81e7af6ada5d59ecebe0ab/services/ws/ime/ime_driver_bridge.cc
[modify] https://crrev.com/e2e00417285ef47b2f81e7af6ada5d59ecebe0ab/services/ws/ime/ime_driver_bridge.h
[modify] https://crrev.com/e2e00417285ef47b2f81e7af6ada5d59ecebe0ab/services/ws/ime/ime_unittest.cc
[modify] https://crrev.com/e2e00417285ef47b2f81e7af6ada5d59ecebe0ab/services/ws/ime/test_ime_driver/test_ime_driver.cc
[modify] https://crrev.com/e2e00417285ef47b2f81e7af6ada5d59ecebe0ab/services/ws/ime/test_ime_driver/test_ime_driver.h
[modify] https://crrev.com/e2e00417285ef47b2f81e7af6ada5d59ecebe0ab/services/ws/public/mojom/ime/ime.mojom
[modify] https://crrev.com/e2e00417285ef47b2f81e7af6ada5d59ecebe0ab/services/ws/public/mojom/ime/ime.typemap
[modify] https://crrev.com/e2e00417285ef47b2f81e7af6ada5d59ecebe0ab/services/ws/public/mojom/ime/ime_struct_traits.cc
[modify] https://crrev.com/e2e00417285ef47b2f81e7af6ada5d59ecebe0ab/services/ws/public/mojom/ime/ime_struct_traits.h
[modify] https://crrev.com/e2e00417285ef47b2f81e7af6ada5d59ecebe0ab/ui/aura/mus/input_method_mus.cc

Comment 29 by xiy...@chromium.org, Jan 18 (5 days ago)

yhanada@, I got an Eve and saw "Gboard" listed. But it stays disabled. Do you know what I am missing?
gboard_disable.png
513 KB View Download

Comment 30 by yhanada@chromium.org, Today (19 hours ago)

Sorry for the late reply. Installed Android IMEs can be enabled only in tablet mode. Can you try it in tablet mode?

Comment 31 by xiy...@chromium.org, Today (14 hours ago)

Re #30: That worked. Thanks. Looks like the work is still in progress tho since it is quite easy to break GBoard and make it not input anything even in classic.

Sign in to add a comment