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

Commit 8edf3299 authored by Shai Barack's avatar Shai Barack
Browse files

Don't synchronize access to PM available features

mAvailableFeatures is never mutated after construction.
It's safe to access concurrently from instance methods.

Change-Id: Ie0bfb8c3d70d981a28e7967df53fb81bd6fb8792
parent a7bbb2f8
Loading
Loading
Loading
Loading
+8 −15
Original line number Diff line number Diff line
@@ -721,7 +721,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService

    PackageManagerInternal.ExternalSourcesPolicy mExternalSourcesPolicy;

    @GuardedBy("mAvailableFeatures")
    private final ArrayMap<String, FeatureInfo> mAvailableFeatures;

    @Watched
@@ -2983,7 +2982,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService

    public boolean hasSystemFeature(String name, int version) {
        // allow instant applications
        synchronized (mAvailableFeatures) {
        final FeatureInfo feat = mAvailableFeatures.get(name);
        if (feat == null) {
            return false;
@@ -2991,7 +2989,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService
            return feat.version >= version;
        }
    }
    }

    // NOTE: Can't remove due to unsupported app usage
    public int checkPermission(String permName, String pkgName, int userId) {
@@ -5335,10 +5332,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        public @NonNull ParceledListSlice<FeatureInfo> getSystemAvailableFeatures() {
            // allow instant applications
            ArrayList<FeatureInfo> res;
            synchronized (mAvailableFeatures) {
            res = new ArrayList<>(mAvailableFeatures.size() + 1);
            res.addAll(mAvailableFeatures.values());
            }
            final FeatureInfo fi = new FeatureInfo();
            fi.reqGlEsVersion = SystemProperties.getInt("ro.opengles.version",
                    FeatureInfo.GL_ES_VERSION_UNDEFINED);
@@ -6542,9 +6537,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
                    mOverlayConfigSignaturePackage,
                    mRecentsPackage);
            final ArrayMap<String, FeatureInfo> availableFeatures;
            synchronized (mAvailableFeatures) {
            availableFeatures = new ArrayMap<>(mAvailableFeatures);
            }
            final ArraySet<String> protectedBroadcasts;
            synchronized (mProtectedBroadcasts) {
                protectedBroadcasts = new ArraySet<>(mProtectedBroadcasts);