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

Commit b1b0ff7d authored by Patrick Baumann's avatar Patrick Baumann Committed by Alex Buynytskyy
Browse files

Pull background executor back to pm.injector

This change pulls the background executor that AppsFilter uses to
populate its cache back to the PackageManagerService.Injector for
generic use by other components withing PMS.

Test: atest AppEnumerationTests AppsFilterTest
Change-Id: I94a38b4b8655d7421a119965efad4327aabfe7b3
parent 509f1c79
Loading
Loading
Loading
Loading
+2 −9
Original line number Diff line number Diff line
@@ -35,9 +35,6 @@ import android.content.pm.parsing.component.ParsedInstrumentation;
import android.content.pm.parsing.component.ParsedIntentInfo;
import android.content.pm.parsing.component.ParsedMainComponent;
import android.content.pm.parsing.component.ParsedProvider;
import android.os.Handler;
import android.os.HandlerExecutor;
import android.os.HandlerThread;
import android.os.Process;
import android.os.Trace;
import android.os.UserHandle;
@@ -353,13 +350,9 @@ public class AppsFilter {
                        injector.getUserManagerInternal().getUserInfos());
            }
        };
        HandlerThread appsFilterThread = new HandlerThread("appsFilter");
        appsFilterThread.start();
        Handler appsFilterHandler = new Handler(appsFilterThread.getLooper());
        Executor executor = new HandlerExecutor(appsFilterHandler);

        AppsFilter appsFilter = new AppsFilter(stateProvider, featureConfig,
                forcedQueryablePackageNames, forceSystemAppsQueryable, null, executor);
                forcedQueryablePackageNames, forceSystemAppsQueryable, null,
                injector.getBackgroundExecutor());
        featureConfig.setAppsFilter(appsFilter);
        return appsFilter;
    }
+18 −4
Original line number Diff line number Diff line
@@ -248,6 +248,8 @@ import android.os.Debug;
import android.os.Environment;
import android.os.FileUtils;
import android.os.Handler;
import android.os.HandlerExecutor;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.Looper;
import android.os.Message;
@@ -420,6 +422,7 @@ import java.util.Set;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
@@ -924,6 +927,7 @@ public class PackageManagerService extends IPackageManager.Stub
        private final Object mLock;
        private final Installer mInstaller;
        private final Object mInstallLock;
        private final Executor mBackgroundExecutor;
        // ----- producers -----
        private final Singleton<ComponentResolver> mComponentResolverProducer;
@@ -945,6 +949,7 @@ public class PackageManagerService extends IPackageManager.Stub
        Injector(Context context, Object lock, Installer installer,
                Object installLock, PackageAbiHelper abiHelper,
                Executor backgroundExecutor,
                Producer<ComponentResolver> componentResolverProducer,
                Producer<PermissionManagerServiceInternal> permissionManagerProducer,
                Producer<UserManagerService> userManagerProducer,
@@ -966,6 +971,7 @@ public class PackageManagerService extends IPackageManager.Stub
            mInstaller = installer;
            mAbiHelper = abiHelper;
            mInstallLock = installLock;
            mBackgroundExecutor = backgroundExecutor;
            mComponentResolverProducer = new Singleton<>(componentResolverProducer);
            mPermissionManagerProducer = new Singleton<>(permissionManagerProducer);
            mUserManagerProducer = new Singleton<>(userManagerProducer);
@@ -1079,6 +1085,10 @@ public class PackageManagerService extends IPackageManager.Stub
        public PlatformCompat getCompatibility() {
            return mPlatformCompatProducer.get(this, mPackageManager);
        }
        public Executor getBackgroundExecutor() {
            return mBackgroundExecutor;
        }
    }
    @VisibleForTesting(visibility = Visibility.PRIVATE)
@@ -2581,9 +2591,13 @@ public class PackageManagerService extends IPackageManager.Stub
        t.traceBegin("create package manager");
        final Object lock = new Object();
        final Object installLock = new Object();
        HandlerThread backgroundThread = new HandlerThread("PackageManagerBg");
        backgroundThread.start();
        Handler backgroundHandler = new Handler(backgroundThread.getLooper());
        Injector injector = new Injector(
                context, lock, installer, installLock, new PackageAbiHelperImpl(),
                new HandlerExecutor(backgroundHandler),
                (i, pm) ->
                        new ComponentResolver(i.getUserManagerService(), pm.mPmInternal, lock),
                (i, pm) ->