Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit 67bd9adf authored by Yohei Yukawa's avatar Yohei Yukawa
Browse files

Offload I/O writes to a bg thread in AdditionalSubtypeMapRepository

This is a part of our on-going effort to ensure that slow I/O
operations will not block the entire system in
InputMethodManagerService (Bug 343601565).

This CL introduces a dedicated worker thread to enable
AdditionalSubtypeMapRepository to

 A. reduce potential lock contentions and the risk of ANRs around
    ImfLock.class due to slow I/O.
 B. merge multiple write operations into a single write operation.

without changing user-observable semantics.

Of course there is a risk that additional subtypes can be lost if the
system_server is unexpectedly rebooted before the pending write
operations are fulfilled, but the overall benefits are supposed to be
much larger than such a risk, which can be easily recovered when the
IME calls InputMethodManager#setAdditionalInputMethodSubtypes() again.

Bug: 341158961
Test: presubmit
Test: Manually verified as follows
  1. Build aosp_cf_x86_64_only_phone-trunk_staging-eng and run it
  2. Wait until the device fully boots up
  3. adb reboot  # to avoid Bug 121259290
  4. adb root
  5. adb shell "abx2xml /data/system/inputmethod/subtypes.xml -"
      -> make sure the content looks as follows:
         <subtypes>
           <imi id="com.android.inputmethod.latin/.LatinIME">
             <subtype ....>
             <subtype ....>
           </imi/>
         </subtypes>
  6. Open AOSP Keyboard settings
  7. Go to "Appearance & Layouts" -> "Custom input styles"
  8. Remove all layouts
  9. adb shell "abx2xml /data/system/inputmethod/subtypes.xml -"
      -> make sure the file no longer exists
 10. adb shell ls /data/system/inputmethod
      -> make sure the directory no longer exists
 11. adb reboot
 12. adb logcat -s InputMethodManagerService:*
      -> no error message about /data/system/inputmethod
 13. Open AOSP Keyboard settings
 14. Go to "Appearance & Layouts" -> "Custom input styles"
 15. Add English (US) - Dvorak
 16. adb shell ls /data/system/inputmethod
      -> make sure the directory exists and only the system user can
         access it
Change-Id: If51063a272317907505964cf2947e239661cc4ae
parent 61ed776f
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment