PersistentDataBlockService waits for MainUser

Currently, the PersistentDataBlockService fetches the mAllowedUid too
early for Headless System User Devices (HSUM) to work. On HSUM, the FRP
user (i.e. the MainUser) is created later, so PDBS must wait for then
before trying to find that user's allowed package.

Bug: 262438904

Test: manual: add account+PIN; factory reset into HSUM; SUW demands credentials post reboot
Test: atest FrameworksServicesTests:SyntheticPasswordTests FrameworksServicesTests:WeaverBasedSyntheticPasswordTests
Test: atest CtsPackageInstallTestCases:android.packageinstaller.install.cts
Change-Id: I4b31ba013fcfa36200402e5f57460aecb8325243
This commit is contained in:
Adam Bookatz
2023-02-01 20:45:13 -08:00
parent c0bcd9afb8
commit bcf29f093e

View File

@@ -182,7 +182,6 @@ public class PersistentDataBlockService extends SystemService {
public void onStart() {
// Do init on a separate thread, will join in PHASE_ACTIVITY_MANAGER_READY
SystemServerInitThreadPool.submit(() -> {
mAllowedUid = getAllowedUid();
enforceChecksumValidity();
formatIfOemUnlockEnabled();
publishBinderService(Context.PERSISTENT_DATA_BLOCK_SERVICE, mService);
@@ -202,6 +201,8 @@ public class PersistentDataBlockService extends SystemService {
Thread.currentThread().interrupt();
throw new IllegalStateException("Service " + TAG + " init interrupted", e);
}
// The user responsible for FRP should exist by now.
mAllowedUid = getAllowedUid();
LocalServices.addService(PersistentDataBlockManagerInternal.class, mInternalService);
}
super.onBootPhase(phase);