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

Commit c3133de4 authored by Lee Shombert's avatar Lee Shombert
Browse files

Revert "Clean up hasSystemFeature binder cache"

Bug: 148370985

This reverts commit be9ba356.

Reason for revert: The change used <>, which is  supported in Java 9 but not in Java 8.

Change-Id: I06304dead0a54b33b37d6661f9446cc797785bf4
parent be9ba356
Loading
Loading
Loading
Loading
+13 −13
Original line number Diff line number Diff line
@@ -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 HasSystemFeatureQuery {
    private class SystemFeatureQuery {
        public final String name;
        public final int version;
        public HasSystemFeatureQuery(String n, int v) {
        public SystemFeatureQuery(String n, int v) {
            name = n;
            version = v;
        }
        @Override
        public String toString() {
            return String.format("HasSystemFeatureQuery(name=\"%s\", version=%d)",
            return String.format("SystemFeatureQuery(name=\"%s\", version=%d)",
                    name, version);
        }
        @Override
        public boolean equals(Object o) {
            if (o instanceof HasSystemFeatureQuery) {
                HasSystemFeatureQuery r = (HasSystemFeatureQuery) o;
            if (o instanceof SystemFeatureQuery) {
                SystemFeatureQuery r = (SystemFeatureQuery) o;
                return Objects.equals(name, r.name) &&  version == r.version;
            } else {
                return false;
@@ -655,32 +655,32 @@ public class ApplicationPackageManager extends PackageManager {
        }
        @Override
        public int hashCode() {
            return Objects.hashCode(name) * 13 + version;
            return Objects.hashCode(name) + version;
        }
    }

    private final PropertyInvalidatedCache<HasSystemFeatureQuery, Boolean> mHasSystemFeatureCache =
            new PropertyInvalidatedCache<>(
    private final PropertyInvalidatedCache<SystemFeatureQuery, Boolean> mSysFeatureCache =
            new PropertyInvalidatedCache<SystemFeatureQuery, Boolean>(
                SYS_FEATURE_CACHE_SIZE,
                CACHE_KEY_SYS_FEATURE_PROPERTY) {
                @Override
                protected Boolean recompute(HasSystemFeatureQuery query) {
                protected Boolean recompute(SystemFeatureQuery query) {
                    return hasSystemFeatureUncached(query.name, query.version);
                }
            };

    @Override
    public boolean hasSystemFeature(String name, int version) {
        return mHasSystemFeatureCache.query(new HasSystemFeatureQuery(name, version));
        return mSysFeatureCache.query(new SystemFeatureQuery(name, version)).booleanValue();
    }

    /** @hide */
    public void disableHasSystemFeatureCache() {
        mHasSystemFeatureCache.disableLocal();
    public void disableSysFeatureCache() {
        mSysFeatureCache.disableLocal();
    }

    /** @hide */
    public static void invalidateHasSystemFeatureCache() {
    public static void invalidateSysFeatureCache() {
        PropertyInvalidatedCache.invalidateCache(CACHE_KEY_SYS_FEATURE_PROPERTY);
    }

+1 −1
Original line number Diff line number Diff line
@@ -2723,7 +2723,7 @@ public class PackageManagerService extends IPackageManager.Stub
        t.traceBegin("get system config");
        SystemConfig systemConfig = SystemConfig.getInstance();
        mAvailableFeatures = systemConfig.getAvailableFeatures();
        ApplicationPackageManager.invalidateHasSystemFeatureCache();
        ApplicationPackageManager.invalidateSysFeatureCache();
        t.traceEnd();
        mProtectedPackages = new ProtectedPackages(mContext);