New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 164964 link

Starred by 7 users

Issue metadata

Status: Fixed
Owner:
Last visit > 30 days ago
Closed: Dec 2013
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 1
Type: Bug


Sign in to add a comment

Support basic functionality of IMEs in Chrome Metro ASH on Windows 8

Project Member Reported by ananta@chromium.org, Dec 7 2012

Issue description

OS: Windows 8
Environment. Chrome Metro Ash

We don't support keyboard input correctly in metro ASH today. IMEs, RTL layout, etc don't work. 


 
Project Member

Comment 1 by bugdroid1@chromium.org, Mar 10 2013

Labels: -Area-Internals -Internals-Aura Cr-Internals Cr-Internals-Aura

Comment 2 by nona@chromium.org, Sep 10 2013

Labels: -Pri-2 Pri-1 Cr-UI-Input-Text-IME
Owner: nona@chromium.org
Status: Started

Comment 3 by nona@chromium.org, Sep 10 2013

Cc: yukishiino@chromium.org mbollu@chromium.org songsuk@chromium.org pbomm...@chromium.org vivianz@chromium.org yukawa@chromium.org kochi@chromium.org
 Issue 281769  has been merged into this issue.
Project Member

Comment 4 by bugdroid1@chromium.org, Sep 17 2013

------------------------------------------------------------------------
r223589 | yukawa@chromium.org | 2013-09-17T12:04:20.514607Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/base/win/metro.cc?r1=223589&r2=223588&pathrev=223589

[Aura] Always use IMM32 on desktop Chrome (non-Ash mode)

This CL partially reverts r194205, which aimed to support
IME for Ash. With this partial rollback, we can assume
that all the instances of Aura-Win Chrome running in desktop
use IMM32 regardless of the OS version.

Given that Ash IME support is not functional yet, there is
no strong reason to force TSF only on Win8+. Actually our
IMM32 implemenation is more robust than that of TSF. This
way should lower the risk of successful launch of Aura for
Windows in M31.

BUG= 164964 
TEST=manually confirmed that we can use IME with Win8 Aura build

Review URL: https://chromiumcodereview.appspot.com/23875022
------------------------------------------------------------------------

Comment 5 by yukawa@chromium.org, Sep 28 2013

Cc: -yukawa@chromium.org yukawa@chromium.org

Comment 6 by nona@chromium.org, Oct 2 2013

Labels: Proj-Windows8
Owner: yukishiino@chromium.org
Status: Assigned
Assigning to yukishiino@ who is going to work on Metro Ash IME support.
FYI, I filed a Linux version of this issue as  Issue 304691 .
Cc: wiltzius@chromium.org
I'll take over now for this issue as I believe I have just finished stabilizing IME functionality on DesktopAura at the previous level. It is time to go deeper into Ash world.

Please note that Shiino-san (yukishiino@) is also working hard on implementing IME support for Linux Aura ( Issue 133476 ) and fixing a crash bug on Win (Issue 301516). I'll work closely with him and other IME experts in Tokyo so that we can deliver high quality text input experience to users on all the platforms supported by Aura/Ash.
(See  Issue 304691  for Linux/Aura/Ash)

Thanks!
Owner: yukawa@chromium.org
Status: Started
Project Member

Comment 11 by bugdroid1@chromium.org, Oct 22 2013

------------------------------------------------------------------------
r230001 | yukawa@chromium.org | 2013-10-22T01:44:39.802148Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/render_widget_host_view_win.cc?r1=230001&r2=230000&pathrev=230001
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/render_widget_host_view_win.h?r1=230001&r2=230000&pathrev=230001
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/views/ime/input_method_bridge.cc?r1=230001&r2=230000&pathrev=230001
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/views/ime/input_method_bridge.h?r1=230001&r2=230000&pathrev=230001
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/text_input_client.h?r1=230001&r2=230000&pathrev=230001
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/win/tsf_text_store_unittest.cc?r1=230001&r2=230000&pathrev=230001
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/views/controls/prefix_selector.cc?r1=230001&r2=230000&pathrev=230001
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/views/controls/prefix_selector.h?r1=230001&r2=230000&pathrev=230001
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/dummy_text_input_client.cc?r1=230001&r2=230000&pathrev=230001
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/dummy_text_input_client.h?r1=230001&r2=230000&pathrev=230001
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/keyboard/keyboard_controller_unittest.cc?r1=230001&r2=230000&pathrev=230001
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/views/controls/textfield/native_textfield_views.cc?r1=230001&r2=230000&pathrev=230001
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/render_widget_host_view_aura.cc?r1=230001&r2=230000&pathrev=230001
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/input_method_ibus_unittest.cc?r1=230001&r2=230000&pathrev=230001
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/views/controls/textfield/native_textfield_views.h?r1=230001&r2=230000&pathrev=230001
   M http://src.chromium.org/viewvc/chrome/trunk/src/content/browser/renderer_host/render_widget_host_view_aura.h?r1=230001&r2=230000&pathrev=230001

Mark getter methods in ui::InputMethod as const

This CL marks following methods as "const-method"
as a preparation to fix  issue 164964 .
- ui::TextInputClient::GetCaretBounds
- ui::TextInputClient::GetCompositionCharacterBounds
- ui::TextInputClient::HasCompositionText
- ui::TextInputClient::GetTextRange
- ui::TextInputClient::GetCompositionTextRang
- ui::TextInputClient::GetSelectionRange
- ui::TextInputClient::GetTextFromRange

BUG= 164964 
TEST=none

Review URL: https://codereview.chromium.org/27812003
------------------------------------------------------------------------
Project Member

Comment 12 by bugdroid1@chromium.org, Oct 29 2013

------------------------------------------------------------------------
r231563 | yukawa@chromium.org | 2013-10-29T13:42:47.184066Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/input_method_ibus.cc?r1=231563&r2=231562&pathrev=231563
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/input_method_ibus.h?r1=231563&r2=231562&pathrev=231563
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/input_method_imm32.cc?r1=231563&r2=231562&pathrev=231563
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/input_method_linux_x11.cc?r1=231563&r2=231562&pathrev=231563
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/input_method_base_unittest.cc?r1=231563&r2=231562&pathrev=231563
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/input_method_base.cc?r1=231563&r2=231562&pathrev=231563
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/input_method_base.h?r1=231563&r2=231562&pathrev=231563
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/input_method_tsf.cc?r1=231563&r2=231562&pathrev=231563
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/input_method_win.cc?r1=231563&r2=231562&pathrev=231563

Add InputMethodObserver support into InputMethodBase

This is a preparation CL to fix  issue 164964 .

Following observer callbacks are defined but not yet
supported by ui::InputMethodBase and its sub classes.
- InputMethodObserver::OnCaretBoundsChanged
- InputMethodObserver::OnInputLocaleChanged

This CL makes these callbacks functional for each
sub class of ui::InputMethodBase.

BUG= 164964 
TEST=ui_unittests --gtest_filter=InputMethodBaseTest.*

Review URL: https://codereview.chromium.org/48393003
------------------------------------------------------------------------
Cc: karen@chromium.org
Labels: M-33
Per discussion with Karen and Carlos, we decided to wait M-32 branch cut instead of landing non-trivial changes at this timing.  I expect I can finish this task in M-33 release cycle.
Project Member

Comment 14 by bugdroid1@chromium.org, Nov 20 2013

------------------------------------------------------------------------
r236239 | yukawa@chromium.org | 2013-11-20T13:29:36.932564Z

Changed paths:
   A http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/remote_input_method_win.cc?r1=236239&r2=236238&pathrev=236239
   A http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/remote_input_method_win.h?r1=236239&r2=236238&pathrev=236239
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/ime.gypi?r1=236239&r2=236238&pathrev=236239
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/ime_unittests.gypi?r1=236239&r2=236238&pathrev=236239
   A http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/remote_input_method_delegate_win.h?r1=236239&r2=236238&pathrev=236239
   A http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/remote_input_method_win_unittest.cc?r1=236239&r2=236238&pathrev=236239

Introduce RemoteInputMethodWin

In order to enable IME support on Ash, we need a proxy
object which implements ui::InputMethod interface and works
as if it was the actual IME back-end running in the
metro_driver process.

This CL introduces RemoteInputMethodWin for this purpose.
RemoteInputMethodWin is not used in the production code yet.
So this CL never breaks existing functionary at the moment.

BUG= 164964 
TEST=ui_unittests --gtest_filter=RemoteInputMethodTest.*

Review URL: https://codereview.chromium.org/67503004
------------------------------------------------------------------------
Project Member

Comment 15 by bugdroid1@chromium.org, Nov 21 2013

------------------------------------------------------------------------
r236449 | yukawa@chromium.org | 2013-11-21T07:54:57.270150Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/remote_input_method_win_unittest.cc?r1=236449&r2=236448&pathrev=236449
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/remote_input_method_win.cc?r1=236449&r2=236448&pathrev=236449
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/remote_input_method_win.h?r1=236449&r2=236448&pathrev=236449

Support InputMethodObserver in RemoteInputMethodWin

Starting with r236186, InputMethodBridge relies on
InputMethodObserver::OnInputMethodDestroyed.

BUG= 164964 
TEST=ui_unittest --gtest_filter=RemoteInputMethodWinTest.*

Review URL: https://codereview.chromium.org/78633002
------------------------------------------------------------------------
Project Member

Comment 16 by bugdroid1@chromium.org, Nov 22 2013

------------------------------------------------------------------------
r236708 | yukawa@chromium.org | 2013-11-22T07:20:26.559650Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/input_method_factory.cc?r1=236708&r2=236707&pathrev=236708
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/remote_input_method_win.cc?r1=236708&r2=236707&pathrev=236708
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/remote_input_method_win.h?r1=236708&r2=236707&pathrev=236708

Use RemoteInputMethodWin in production

With this CL, InputMethodIMM32 will be replaced with RemoteInputMethodWin when and only when the target window is remote window used by Metro/Ash.  There should be no effect for other platforms and desktop Chrome on Windows.

The goal of this CL is testing RemoteInputMethodWin in Canary channel. Ideally there should be no regression, even though subsequent CLs are still needed to enable IME under Ash mode. 

Sheriffs: Feel free to revert this CL if it breaks something.

BUG= 164964 
TEST=manually done on Windows 8.1

Review URL: https://codereview.chromium.org/80263005
------------------------------------------------------------------------
Project Member

Comment 17 by bugdroid1@chromium.org, Nov 24 2013

------------------------------------------------------------------------
r237010 | yukawa@chromium.org | 2013-11-24T22:41:21.483538Z

Changed paths:
   A http://src.chromium.org/viewvc/chrome/trunk/src/ui/metro_viewer/ime_types.cc?r1=237010&r2=237009&pathrev=237010
   A http://src.chromium.org/viewvc/chrome/trunk/src/ui/metro_viewer/ime_types.h?r1=237010&r2=237009&pathrev=237010
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/metro_viewer/metro_viewer_messages.h?r1=237010&r2=237009&pathrev=237010
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/metro_viewer/metro_viewer.gyp?r1=237010&r2=237009&pathrev=237010

[Ash] Introduces new IPC messages to support IME on Win-Ash

This CL introduces new IPC messages between the browser process and the metro_driver process
to support IME functionality on Windows Chrome running under Ash.

Why we need new IPC messages?:
In Ash mode on Windows, we need to use raw IME API (to be precise, Text Services Framework)
in the WinRT  process (hereafter we call it as "metro_driver" process) rather than the
browser process due to some API limitations. However most of platform-neutral, abstracted
IME event handling code are implemented in the browser process. To cope with this situation,
we will use a proxy mechanism between the metro_driver process and the browser process.
In fact, this is what we have been doing between the browser process and the renderer
processes.

Here is the entire WIP CL which describes how these new IPC will be used in the real world.
https://codereview.chromium.org/53553003/

BUG= 164964 
TEST=none

Review URL: https://codereview.chromium.org/74783010
------------------------------------------------------------------------
Project Member

Comment 18 by bugdroid1@chromium.org, Nov 25 2013

------------------------------------------------------------------------
r237047 | yukawa@chromium.org | 2013-11-25T08:41:22.862065Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/remote_input_method_win_unittest.cc?r1=237047&r2=237046&pathrev=237047
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/remote_input_method_win.cc?r1=237047&r2=237046&pathrev=237047
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/base/ime/remote_input_method_win.h?r1=237047&r2=237046&pathrev=237047

Add OnCompositionChanged and OnTextCommitted to RemoteInputMethodPrivateWin

This CL adds two new methods OnCompositionChanged and OnTextCommitted to RemoteInputMethodPrivateWin so that corresponding events occurred in the metro_driver process can be forwarded to RemoteInputMethodWin. These new methods will work as real handlelrs of MetroViewerHostMsg_ImeCompositionChanged and MetroViewerHostMsg_ImeTextCommitted messages.

In my first design, MetroViewerHostMsg_ImeCompositionChanged and MetroViewerHostMsg_ImeTextCommitted are directly handled in aura::RemoteRootWindowHostWin. However I changed my mind because how these IPC messages should be handled is a kind of implementation details of which only metro_driver::TextService implementation and ui::RemoteInputMethodWin should take care. This is why I moved these IPC handler from aura::RemoteRootWindowHostWin in ui::RemoteInputMethodPrivateWin.

BUG= 164964 

Review URL: https://codereview.chromium.org/85063002
------------------------------------------------------------------------
Project Member

Comment 19 by bugdroid1@chromium.org, Dec 5 2013

------------------------------------------------------------------------
r238921 | yukawa@chromium.org | 2013-12-05T08:31:40.480134Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/aura/remote_root_window_host_win.cc?r1=238921&r2=238920&pathrev=238921
   A http://src.chromium.org/viewvc/chrome/trunk/src/win8/metro_driver/ime/text_service.cc?r1=238921&r2=238920&pathrev=238921
   M http://src.chromium.org/viewvc/chrome/trunk/src/ui/aura/remote_root_window_host_win.h?r1=238921&r2=238920&pathrev=238921
   A http://src.chromium.org/viewvc/chrome/trunk/src/win8/metro_driver/ime/text_service.h?r1=238921&r2=238920&pathrev=238921
   M http://src.chromium.org/viewvc/chrome/trunk/src/win8/metro_driver/chrome_app_view_ash.cc?r1=238921&r2=238920&pathrev=238921
   A http://src.chromium.org/viewvc/chrome/trunk/src/win8/metro_driver/ime/input_scope.cc?r1=238921&r2=238920&pathrev=238921
   M http://src.chromium.org/viewvc/chrome/trunk/src/win8/metro_driver/chrome_app_view_ash.h?r1=238921&r2=238920&pathrev=238921
   A http://src.chromium.org/viewvc/chrome/trunk/src/win8/metro_driver/ime/input_scope.h?r1=238921&r2=238920&pathrev=238921
   A http://src.chromium.org/viewvc/chrome/trunk/src/win8/metro_driver/ime?r1=238921&r2=238920&pathrev=238921
   A http://src.chromium.org/viewvc/chrome/trunk/src/win8/metro_driver/ime/text_store_delegate.h?r1=238921&r2=238920&pathrev=238921
   A http://src.chromium.org/viewvc/chrome/trunk/src/win8/metro_driver/ime/ime.gypi?r1=238921&r2=238920&pathrev=238921
   A http://src.chromium.org/viewvc/chrome/trunk/src/win8/metro_driver/ime/text_service_delegate.h?r1=238921&r2=238920&pathrev=238921
   A http://src.chromium.org/viewvc/chrome/trunk/src/win8/metro_driver/ime/text_store.cc?r1=238921&r2=238920&pathrev=238921
   M http://src.chromium.org/viewvc/chrome/trunk/src/win8/metro_driver/metro_driver.gyp?r1=238921&r2=238920&pathrev=238921
   A http://src.chromium.org/viewvc/chrome/trunk/src/win8/metro_driver/ime/text_store.h?r1=238921&r2=238920&pathrev=238921

Enable basic IME functionality under Ash on Windows

With this CL, IMEs become functional under Ash environment on Windows.
Some optional features for Chromium internal use (e.g., IME popup window detection, RTL language detection) will be covered by subsequent CLs.

DesignDoc:
https://docs.google.com/a/chromium.org/document/d/14TBE0LoamQz_MImcNWzeTIW_lo5EUrLJwNwmCi20V1o/edit#

Note:
In this CL, ui/base/ime/win/tsf_text_store.* is not moved but copied to win8/metro_driver/ime/text_store.* in order not to break non-Aura build.  That said, hereafter we will use win8/metro_driver/ime/text_store.* as primary implementation of TSF TextStore.  Anyway, ui/base/ime/win/tsf_text_store.* will be removed when Aura transition is successfully completed.
I also found some style issues in win8/metro_driver/ime/text_store.cc but I'd like to fix them in subsequent CLs to keep this CL as minimum as possible.

BUG= 164964 
TEST=manually done on Windows 8.1

Review URL: https://codereview.chromium.org/83233002
------------------------------------------------------------------------
Yey!  Now I'm able to use an IME under Ash mode.
Verified in following configuration.
- built-in MS-IME Japanese
- 33.0.1731.0 (Official Build 239072) canary
- Windows 8.1.

Blocking: chromium:271754
Blocking: chromium:168993
Blocking: chromium:326777
Status: Fixed
Summary: Support basic functionality of IMEs in Chrome Metro ASH on Windows 8 (was: Support IMEs and keyboard input correctly in Chrome Metro ASH on Windows 8)
OK, I believe it's time to close this issue as "Fixed" so that QA persons can start comprehensive manual testing. Please file a new bug if you find something broken in IME support or RTL support under Ash mode on Windows.

Here are ones I found:
-  Issue 168993 : Cannot commit text via IME on Google Document
-  Issue 326777 : Ctrl+{Left, Right}Shift does not flip the text direction

Blocking: chromium:326774
Oops, forgot to mention  Issue 326774 .

Here are ones I found:
-  Issue 168993 : Cannot commit text via IME on Google Document
-  Issue 326774 : IME candidate window overlaps OmniBox suggest
-  Issue 326777 : Ctrl+{Left, Right}Shift does not flip the text direction
Blocking: chromium:328237

Sign in to add a comment