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

Commit 5127b31d authored by Patrick Baumann's avatar Patrick Baumann
Browse files

Get compatibility immediately on initialization

This change acquires the CompatConfig directly. This cuts down on
unnecessary logging and more importantly, gets access to platform config
values earlier during initialization than it would having to wait for
the PlatformCompat instance to be registered in SystemService.

Bug: 142281062
Test: Device boots
Test: atest AppEnumerationTests
Change-Id: I236dde7d897869633eadd2830a9930be0aec0129
parent 9d9e19c5
Loading
Loading
Loading
Loading
+6 −13
Original line number Diff line number Diff line
@@ -41,7 +41,7 @@ import android.util.SparseArray;
import com.android.internal.R;
import com.android.internal.annotations.VisibleForTesting;
import com.android.server.FgThread;
import com.android.server.compat.PlatformCompat;
import com.android.server.compat.CompatConfig;

import java.io.PrintWriter;
import java.util.ArrayList;
@@ -131,24 +131,22 @@ public class AppsFilter {

    private static class FeatureConfigImpl implements FeatureConfig {
        private static final String FILTERING_ENABLED_NAME = "package_query_filtering_enabled";
        private final PackageManagerService.Injector mInjector;
        private volatile boolean mFeatureEnabled = true;
        private CompatConfig mCompatibility;

        private FeatureConfigImpl(PackageManagerService.Injector injector) {
            mInjector = injector;
            mCompatibility = injector.getCompatibility();
        }

        @Override
        public void onSystemReady() {
            mFeatureEnabled = DeviceConfig.getBoolean(
                    NAMESPACE_PACKAGE_MANAGER_SERVICE, FILTERING_ENABLED_NAME,
                    true);
                    NAMESPACE_PACKAGE_MANAGER_SERVICE, FILTERING_ENABLED_NAME, true);
            DeviceConfig.addOnPropertiesChangedListener(
                    NAMESPACE_PACKAGE_MANAGER_SERVICE, FgThread.getExecutor(),
                    properties -> {
                        synchronized (FeatureConfigImpl.this) {
                            mFeatureEnabled = properties.getBoolean(
                                    FILTERING_ENABLED_NAME, true);
                            mFeatureEnabled = properties.getBoolean(FILTERING_ENABLED_NAME, true);
                        }
                    });
        }
@@ -160,12 +158,7 @@ public class AppsFilter {

        @Override
        public boolean packageIsEnabled(PackageParser.Package pkg) {
            final PlatformCompat compatibility = mInjector.getCompatibility();
            if (compatibility == null) {
                Slog.wtf(TAG, "PlatformCompat is null");
                return mFeatureEnabled;
            }
            return compatibility.isChangeEnabled(
            return mCompatibility.isChangeEnabled(
                    PackageManager.FILTER_APPLICATION_QUERY, pkg.applicationInfo);
        }
    }
+5 −5
Original line number Diff line number Diff line
@@ -300,7 +300,7 @@ import com.android.server.ServiceThread;
import com.android.server.SystemConfig;
import com.android.server.SystemServerInitThreadPool;
import com.android.server.Watchdog;
import com.android.server.compat.PlatformCompat;
import com.android.server.compat.CompatConfig;
import com.android.server.net.NetworkPolicyManagerInternal;
import com.android.server.pm.Installer.InstallerException;
import com.android.server.pm.Settings.DatabaseVersion;
@@ -836,7 +836,7 @@ public class PackageManagerService extends IPackageManager.Stub
        private final Singleton<StorageManager> mStorageManagerProducer;
        private final Singleton<AppOpsManager> mAppOpsManagerProducer;
        private final Singleton<AppsFilter> mAppsFilterProducer;
        private final Singleton<PlatformCompat> mPlatformCompatProducer;
        private final Singleton<CompatConfig> mPlatformCompatProducer;
        Injector(Context context, Object lock, Installer installer,
                Object installLock, PackageAbiHelper abiHelper,
@@ -854,7 +854,7 @@ public class PackageManagerService extends IPackageManager.Stub
                Producer<StorageManager> storageManagerProducer,
                Producer<AppOpsManager> appOpsManagerProducer,
                Producer<AppsFilter> appsFilterProducer,
                Producer<PlatformCompat> platformCompatProducer) {
                Producer<CompatConfig> platformCompatProducer) {
            mContext = context;
            mLock = lock;
            mInstaller = installer;
@@ -965,7 +965,7 @@ public class PackageManagerService extends IPackageManager.Stub
            return mAppsFilterProducer.get(this, mPackageManager);
        }
        public PlatformCompat getCompatibility() {
        public CompatConfig getCompatibility() {
            return mPlatformCompatProducer.get(this, mPackageManager);
        }
    }
@@ -2467,7 +2467,7 @@ public class PackageManagerService extends IPackageManager.Stub
                new Injector.SystemServiceProducer<>(StorageManager.class),
                new Injector.SystemServiceProducer<>(AppOpsManager.class),
                (i, pm) -> AppsFilter.create(i),
                (i, pm) -> (PlatformCompat) ServiceManager.getService("platform_compat"));
                (i, pm) -> CompatConfig.get());
        PackageManagerService m = new PackageManagerService(injector, factoryTest, onlyCore);
        t.traceEnd(); // "create package manager"