Loading core/java/android/app/ApplicationPackageManager.java +13 −13 Original line number Diff line number Diff line Loading @@ -632,22 +632,22 @@ public class ApplicationPackageManager extends PackageManager { private static final int SYS_FEATURE_CACHE_SIZE = 256; private static final String CACHE_KEY_SYS_FEATURE_PROPERTY = "cache_key.has_system_feature"; private class SystemFeatureQuery { private class HasSystemFeatureQuery { public final String name; public final int version; public SystemFeatureQuery(String n, int v) { public HasSystemFeatureQuery(String n, int v) { name = n; version = v; } @Override public String toString() { return String.format("SystemFeatureQuery(name=\"%s\", version=%d)", return String.format("HasSystemFeatureQuery(name=\"%s\", version=%d)", name, version); } @Override public boolean equals(Object o) { if (o instanceof SystemFeatureQuery) { SystemFeatureQuery r = (SystemFeatureQuery) o; if (o instanceof HasSystemFeatureQuery) { HasSystemFeatureQuery r = (HasSystemFeatureQuery) o; return Objects.equals(name, r.name) && version == r.version; } else { return false; Loading @@ -655,32 +655,32 @@ public class ApplicationPackageManager extends PackageManager { } @Override public int hashCode() { return Objects.hashCode(name) + version; return Objects.hashCode(name) * 13 + version; } } private final PropertyInvalidatedCache<SystemFeatureQuery, Boolean> mSysFeatureCache = new PropertyInvalidatedCache<SystemFeatureQuery, Boolean>( private final PropertyInvalidatedCache<HasSystemFeatureQuery, Boolean> mHasSystemFeatureCache = new PropertyInvalidatedCache<>( SYS_FEATURE_CACHE_SIZE, CACHE_KEY_SYS_FEATURE_PROPERTY) { @Override protected Boolean recompute(SystemFeatureQuery query) { protected Boolean recompute(HasSystemFeatureQuery query) { return hasSystemFeatureUncached(query.name, query.version); } }; @Override public boolean hasSystemFeature(String name, int version) { return mSysFeatureCache.query(new SystemFeatureQuery(name, version)).booleanValue(); return mHasSystemFeatureCache.query(new HasSystemFeatureQuery(name, version)); } /** @hide */ public void disableSysFeatureCache() { mSysFeatureCache.disableLocal(); public void disableHasSystemFeatureCache() { mHasSystemFeatureCache.disableLocal(); } /** @hide */ public static void invalidateSysFeatureCache() { public static void invalidateHasSystemFeatureCache() { PropertyInvalidatedCache.invalidateCache(CACHE_KEY_SYS_FEATURE_PROPERTY); } Loading services/core/java/com/android/server/pm/PackageManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -2725,7 +2725,7 @@ public class PackageManagerService extends IPackageManager.Stub t.traceBegin("get system config"); SystemConfig systemConfig = SystemConfig.getInstance(); mAvailableFeatures = systemConfig.getAvailableFeatures(); ApplicationPackageManager.invalidateSysFeatureCache(); ApplicationPackageManager.invalidateHasSystemFeatureCache(); t.traceEnd(); mProtectedPackages = new ProtectedPackages(mContext); Loading
core/java/android/app/ApplicationPackageManager.java +13 −13 Original line number Diff line number Diff line Loading @@ -632,22 +632,22 @@ public class ApplicationPackageManager extends PackageManager { private static final int SYS_FEATURE_CACHE_SIZE = 256; private static final String CACHE_KEY_SYS_FEATURE_PROPERTY = "cache_key.has_system_feature"; private class SystemFeatureQuery { private class HasSystemFeatureQuery { public final String name; public final int version; public SystemFeatureQuery(String n, int v) { public HasSystemFeatureQuery(String n, int v) { name = n; version = v; } @Override public String toString() { return String.format("SystemFeatureQuery(name=\"%s\", version=%d)", return String.format("HasSystemFeatureQuery(name=\"%s\", version=%d)", name, version); } @Override public boolean equals(Object o) { if (o instanceof SystemFeatureQuery) { SystemFeatureQuery r = (SystemFeatureQuery) o; if (o instanceof HasSystemFeatureQuery) { HasSystemFeatureQuery r = (HasSystemFeatureQuery) o; return Objects.equals(name, r.name) && version == r.version; } else { return false; Loading @@ -655,32 +655,32 @@ public class ApplicationPackageManager extends PackageManager { } @Override public int hashCode() { return Objects.hashCode(name) + version; return Objects.hashCode(name) * 13 + version; } } private final PropertyInvalidatedCache<SystemFeatureQuery, Boolean> mSysFeatureCache = new PropertyInvalidatedCache<SystemFeatureQuery, Boolean>( private final PropertyInvalidatedCache<HasSystemFeatureQuery, Boolean> mHasSystemFeatureCache = new PropertyInvalidatedCache<>( SYS_FEATURE_CACHE_SIZE, CACHE_KEY_SYS_FEATURE_PROPERTY) { @Override protected Boolean recompute(SystemFeatureQuery query) { protected Boolean recompute(HasSystemFeatureQuery query) { return hasSystemFeatureUncached(query.name, query.version); } }; @Override public boolean hasSystemFeature(String name, int version) { return mSysFeatureCache.query(new SystemFeatureQuery(name, version)).booleanValue(); return mHasSystemFeatureCache.query(new HasSystemFeatureQuery(name, version)); } /** @hide */ public void disableSysFeatureCache() { mSysFeatureCache.disableLocal(); public void disableHasSystemFeatureCache() { mHasSystemFeatureCache.disableLocal(); } /** @hide */ public static void invalidateSysFeatureCache() { public static void invalidateHasSystemFeatureCache() { PropertyInvalidatedCache.invalidateCache(CACHE_KEY_SYS_FEATURE_PROPERTY); } Loading
services/core/java/com/android/server/pm/PackageManagerService.java +1 −1 Original line number Diff line number Diff line Loading @@ -2725,7 +2725,7 @@ public class PackageManagerService extends IPackageManager.Stub t.traceBegin("get system config"); SystemConfig systemConfig = SystemConfig.getInstance(); mAvailableFeatures = systemConfig.getAvailableFeatures(); ApplicationPackageManager.invalidateSysFeatureCache(); ApplicationPackageManager.invalidateHasSystemFeatureCache(); t.traceEnd(); mProtectedPackages = new ProtectedPackages(mContext);