Fix a race in spell checker session handling
This is a follow up CL to my previous CL [1] that eliminated synchronous IPCs from TextServicesManagerService (TSMS) to SpellCheckerService (SCS). One thing I missed was that even while TSMS is waiting for the response from SCS pending sessions can be terminated from the client application side (e.g. SpellCheckerSession#close() is explicitly called or the client application process gets killed). With this CL, SpellCheckerBindGroup#removeListener() can work even in such situations. [1]: I92e7aa40dc9ea14f67d355f0bfa15325b775d27b 7fa65eef Fix: 79082580 Test: Manually done as follows. 1. Create a custom spell checker service that can emulate the scenarios where following methods are blocked * SpellCheckerService#onCreate() * SpellCheckerService#createSession() * SpellCheckerService.Session#onGetSuggestions() * SpellCheckerService.Session#onGetSentenceSuggestionsMultiple() 2. By using such a test spell checker service, make sure that TSMS cleans up ISpellCheckerSessionListener and ITextServicesSessionListener binder proxies when either SpellCheckerSession#close() is called or the target app process is killed. Change-Id: Ie373095f20dd58273c764f1f732631bcfee758d7
Loading
Please register or sign in to comment