From 5127b31dc13cdadfd404ddd26c01906c773efab9 Mon Sep 17 00:00:00 2001 From: Patrick Baumann Date: Tue, 8 Oct 2019 08:28:45 -0700 Subject: [PATCH] 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 --- .../com/android/server/pm/AppsFilter.java | 19 ++++++------------- .../server/pm/PackageManagerService.java | 10 +++++----- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/services/core/java/com/android/server/pm/AppsFilter.java b/services/core/java/com/android/server/pm/AppsFilter.java index 61ea84f9dc7f6..eb2e31d32beb9 100644 --- a/services/core/java/com/android/server/pm/AppsFilter.java +++ b/services/core/java/com/android/server/pm/AppsFilter.java @@ -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); } } diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index d07e2d232ea6c..828b3289cade2 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -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 mStorageManagerProducer; private final Singleton mAppOpsManagerProducer; private final Singleton mAppsFilterProducer; - private final Singleton mPlatformCompatProducer; + private final Singleton mPlatformCompatProducer; Injector(Context context, Object lock, Installer installer, Object installLock, PackageAbiHelper abiHelper, @@ -854,7 +854,7 @@ public class PackageManagerService extends IPackageManager.Stub Producer storageManagerProducer, Producer appOpsManagerProducer, Producer appsFilterProducer, - Producer platformCompatProducer) { + Producer 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"