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

Commit 6ae7afc1 authored by Patrick Baumann's avatar Patrick Baumann
Browse files

Passes Injector into PackageManagerService ctor

After migrating away from locking on the package map, we can now pass in
most of what we need to PackageManagerService via the new Injector
class. This change begins the process of passing that injector in so
that we can easily mock most dependencies in unit tests.

Fixes: 137881067
Test: atest ScanTests
Change-Id: I0b0f8cf2bf59c009f2ec98147206645c84a0becc
parent c7487391
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@ import java.io.File;
import java.util.Set;

@VisibleForTesting
interface PackageAbiHelper {
public interface PackageAbiHelper {
    /**
     * Derive and get the location of native libraries for the given package,
     * which varies depending on where and how the package was installed.
+162 −74

File changed.

Preview size limit exceeded, changes collapsed.

+8 −0
Original line number Diff line number Diff line
@@ -576,6 +576,14 @@ public class UserManagerService extends IUserManager.Stub {
                null, mHandler);
    }

    /**
     * This method retrieves the  {@link UserManagerInternal} only for the purpose of
     * PackageManagerService construction.
     */
    UserManagerInternal getInternalForInjectorOnly() {
        return mLocalService;
    }

    void cleanupPartialUsers() {
        // Prune out any partially created, partially removed and ephemeral users.
        ArrayList<UserInfo> partials = new ArrayList<>();
+10 −2
Original line number Diff line number Diff line
@@ -70,6 +70,14 @@ public class ScanTests {
    PackageAbiHelper mMockPackageAbiHelper;
    @Mock
    UserManagerInternal mMockUserManager;
    @Mock
    PackageManagerService.Injector mMockInjector;

    @Before
    public void setupInjector() {
        when(mMockInjector.getAbiHelper()).thenReturn(mMockPackageAbiHelper);
        when(mMockInjector.getUserManager()).thenReturn(mMockUserManager);
    }

    @Before
    public void setupDefaultUser() {
@@ -401,7 +409,7 @@ public class ScanTests {

        final PackageManagerService.ScanResult scanResult = PackageManagerService.scanPackageOnlyLI(
                createBasicScanRequestBuilder(basicPackage).build(),
                new PackageManagerService.Injector(mMockUserManager, mMockPackageAbiHelper),
                mMockInjector,
                true /*isUnderFactoryTest*/,
                System.currentTimeMillis());

@@ -448,7 +456,7 @@ public class ScanTests {
            PackageManagerService.ScanRequest scanRequest) throws PackageManagerException {
        return PackageManagerService.scanPackageOnlyLI(
                scanRequest,
                new PackageManagerService.Injector(mMockUserManager, mMockPackageAbiHelper),
                mMockInjector,
                false /*isUnderFactoryTest*/,
                System.currentTimeMillis());
    }