diff options
| author | 2024-05-30 23:30:22 +0900 | |
|---|---|---|
| committer | 2024-05-30 23:30:22 +0900 | |
| commit | 67bd9adf5972c9020b789c6deb7d99baedb7a7d5 (patch) | |
| tree | 270c09e5c456783917ea5ff6603832a36a126e70 /libs/androidfw/FileStream.cpp | |
| parent | 61ed776f5f47368d562eefd41bd89accbcc435ce (diff) | |
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
Diffstat (limited to 'libs/androidfw/FileStream.cpp')
0 files changed, 0 insertions, 0 deletions