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

Commit 6e9344d2 authored by Mohammad Samiul Islam's avatar Mohammad Samiul Islam
Browse files

Use synchronized blocks to access lock protected fields

Bug: 160389747
Test: atest ApexManagerTest
Change-Id: I9cc19c84bc85c90a7b7aa7ce423ecfa0cb932c0b
parent b28e95e6
Loading
Loading
Loading
Loading
+62 −54
Original line number Original line Diff line number Diff line
@@ -563,8 +563,8 @@ public abstract class ApexManager {


        @Override
        @Override
        @Nullable
        @Nullable
        public PackageInfo getPackageInfo(String packageName,
        public PackageInfo getPackageInfo(String packageName, @PackageInfoFlags int flags) {
                @PackageInfoFlags int flags) {
            synchronized (mLock) {
                Preconditions.checkState(mAllPackagesCache != null,
                Preconditions.checkState(mAllPackagesCache != null,
                        "APEX packages have not been scanned");
                        "APEX packages have not been scanned");
                boolean matchActive = (flags & MATCH_ACTIVE_PACKAGE) != 0;
                boolean matchActive = (flags & MATCH_ACTIVE_PACKAGE) != 0;
@@ -581,9 +581,11 @@ public abstract class ApexManager {
                }
                }
                return null;
                return null;
            }
            }
        }


        @Override
        @Override
        List<PackageInfo> getActivePackages() {
        List<PackageInfo> getActivePackages() {
            synchronized (mLock) {
                Preconditions.checkState(mAllPackagesCache != null,
                Preconditions.checkState(mAllPackagesCache != null,
                        "APEX packages have not been scanned");
                        "APEX packages have not been scanned");
                final List<PackageInfo> activePackages = new ArrayList<>();
                final List<PackageInfo> activePackages = new ArrayList<>();
@@ -595,9 +597,11 @@ public abstract class ApexManager {
                }
                }
                return activePackages;
                return activePackages;
            }
            }
        }


        @Override
        @Override
        List<PackageInfo> getFactoryPackages() {
        List<PackageInfo> getFactoryPackages() {
            synchronized (mLock) {
                Preconditions.checkState(mAllPackagesCache != null,
                Preconditions.checkState(mAllPackagesCache != null,
                        "APEX packages have not been scanned");
                        "APEX packages have not been scanned");
                final List<PackageInfo> factoryPackages = new ArrayList<>();
                final List<PackageInfo> factoryPackages = new ArrayList<>();
@@ -609,9 +613,11 @@ public abstract class ApexManager {
                }
                }
                return factoryPackages;
                return factoryPackages;
            }
            }
        }


        @Override
        @Override
        List<PackageInfo> getInactivePackages() {
        List<PackageInfo> getInactivePackages() {
            synchronized (mLock) {
                Preconditions.checkState(mAllPackagesCache != null,
                Preconditions.checkState(mAllPackagesCache != null,
                        "APEX packages have not been scanned");
                        "APEX packages have not been scanned");
                final List<PackageInfo> inactivePackages = new ArrayList<>();
                final List<PackageInfo> inactivePackages = new ArrayList<>();
@@ -623,10 +629,12 @@ public abstract class ApexManager {
                }
                }
                return inactivePackages;
                return inactivePackages;
            }
            }
        }


        @Override
        @Override
        boolean isApexPackage(String packageName) {
        boolean isApexPackage(String packageName) {
            if (!isApexSupported()) return false;
            if (!isApexSupported()) return false;
            synchronized (mLock) {
                Preconditions.checkState(mAllPackagesCache != null,
                Preconditions.checkState(mAllPackagesCache != null,
                        "APEX packages have not been scanned");
                        "APEX packages have not been scanned");
                for (int i = 0, size = mAllPackagesCache.size(); i < size; i++) {
                for (int i = 0, size = mAllPackagesCache.size(); i < size; i++) {
@@ -635,19 +643,17 @@ public abstract class ApexManager {
                        return true;
                        return true;
                    }
                    }
                }
                }
            }
            return false;
            return false;
        }
        }


        @Override
        @Override
        @Nullable
        @Nullable
        public String getActiveApexPackageNameContainingPackage(
        public String getActiveApexPackageNameContainingPackage(AndroidPackage containedPackage) {
                @NonNull AndroidPackage containedPackage) {
            Preconditions.checkState(mPackageNameToApexModuleName != null,
                    "APEX packages have not been scanned");

            Objects.requireNonNull(containedPackage);
            Objects.requireNonNull(containedPackage);

            synchronized (mLock) {
            synchronized (mLock) {
                Preconditions.checkState(mPackageNameToApexModuleName != null,
                        "APEX packages have not been scanned");
                int numApksInApex = mApksInApex.size();
                int numApksInApex = mApksInApex.size();
                for (int apkInApexNum = 0; apkInApexNum < numApksInApex; apkInApexNum++) {
                for (int apkInApexNum = 0; apkInApexNum < numApksInApex; apkInApexNum++) {
                    if (mApksInApex.valueAt(apkInApexNum).contains(
                    if (mApksInApex.valueAt(apkInApexNum).contains(
@@ -982,10 +988,12 @@ public abstract class ApexManager {
                }
                }
                ipw.decreaseIndent();
                ipw.decreaseIndent();
                ipw.println();
                ipw.println();
                synchronized (mLock) {
                    if (mAllPackagesCache == null) {
                    if (mAllPackagesCache == null) {
                        ipw.println("APEX packages have not been scanned");
                        ipw.println("APEX packages have not been scanned");
                        return;
                        return;
                    }
                    }
                }
                ipw.println("Active APEX packages:");
                ipw.println("Active APEX packages:");
                dumpFromPackagesCache(getActivePackages(), packageName, ipw);
                dumpFromPackagesCache(getActivePackages(), packageName, ipw);
                ipw.println("Inactive APEX packages:");
                ipw.println("Inactive APEX packages:");