• ananta's avatar
    Get IME's to work in Chrome OS mode on Windows 7. · dc1615b4
    ananta authored
    IME support in Chrome OS mode/Windows 8 mode is currently implemented in two parts.
    1. Metro driver (Viewer process):
       Here we rely on the Text services framework for IME notifications and relay those
       to the browser process.
    
    2. Chrome Browser:
       The browser initializes the input method via the RemoteInputMethodWin class which initializes
       the input method if the viewer is an immersive process.
    
    Fixes as below:-
    1. The metro driver initializes the text services framework by instantiating the CLSID_TF_ThreadMgr
       COM object and requests the ITfThreadMgr2 interface.
       This interface is not implemented for Windows 7. Fix is to use the ITfThreadMgr interface instead
       for Windows 7 and up. This provides all the functionality we need.
    
    2. The metro driver was instantiating a MTA COM apartment. The text services COM objects expect to be
       instantiated in a STA.
    
    3. The AppListService object on Windows attempts to bring up the app list bubble in ASH mode even if we are in desktop
    mode. Fix is to avoid that.
    
    4. The IsRemoteInputMethodWinRequired function initialized the remote input method if the viewer was an immersive process.
    To ensure that it also works on Windows 7 we check whether the browser process is launched with the kViewerConnect switch.
    
    BUG=421980
    
    Review URL: https://codereview.chromium.org/645683002
    
    Cr-Commit-Position: refs/heads/master@{#299203}
    dc1615b4
metro_driver_win7.cc 36.1 KB