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

Commit bcf29f09 authored by Adam Bookatz's avatar Adam Bookatz
Browse files

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
parent c0bcd9af
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -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);