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
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user