Use futures for binding and talking to the ExternalStorageService.
The existing CountdownLatch logic had some corner cases where it would
continue waiting for the latch to count down, even when it was already
clear that the operation couldn't succeed (eg, a bind failed).
To fix this, as well as try and simplify some of this code, switch to
using futures, which have a nicely defined way of cancelling outstanding
operations.
Additionally, switch to using a dedicated handler thread for receiving
bind events for all users, not just demo users. This avoids having to
wait for a long time when the system_server main thread is busy.
Bug: 170284679
Test: atest AdoptableHostTest
atest CtsScopedStorageHostTest
atest android.multiuser.UserLifecycleTests#managedProfileUnlock
atest android.multiuser.UserLifecycleTests#managedProfileUnlockAndLaunchApp_stopped
Change-Id: I1b7fde2f6ed1074b9c814d56808ab1614f25aead
1 file changed