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

Commit c546ba79 authored by Hai Zhang's avatar Hai Zhang
Browse files

Remove unnecessary locking around DefaultPermissionGrantPolicy.

DefaultPermissionGrantPolicy may call into package manager for package
information, so it cannot be called while holding permission's lock.

Bug: 158736025
Test: presubmit
Change-Id: I5cd9e6871c4e84849334076a54df6c165f2f1c67
parent 3d012cb5
Loading
Loading
Loading
Loading
+28 −66
Original line number Diff line number Diff line
@@ -1928,11 +1928,9 @@ public class PermissionManagerService extends IPermissionManager.Stub {
            }
        }
        if (doGrant && packageName != null) {
            synchronized (mLock) {
            mDefaultPermissionGrantPolicy.grantDefaultPermissionsToDefaultBrowser(packageName,
                    userId);
        }
        }
        return true;
    }

@@ -1941,22 +1939,18 @@ public class PermissionManagerService extends IPermissionManager.Stub {
        final int callingUid = Binder.getCallingUid();
        PackageManagerServiceUtils
                .enforceSystemOrPhoneCaller("grantPermissionsToEnabledCarrierApps", callingUid);
        synchronized (mLock) {
        Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy
                .grantDefaultPermissionsToEnabledCarrierApps(packageNames, userId));
    }
    }

    @Override
    public void grantDefaultPermissionsToEnabledImsServices(String[] packageNames, int userId) {
        final int callingUid = Binder.getCallingUid();
        PackageManagerServiceUtils.enforceSystemOrPhoneCaller(
                "grantDefaultPermissionsToEnabledImsServices", callingUid);
        synchronized (mLock) {
        Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy
                .grantDefaultPermissionsToEnabledImsServices(packageNames, userId));
    }
    }

    @Override
    public void grantDefaultPermissionsToEnabledTelephonyDataServices(
@@ -1964,11 +1958,8 @@ public class PermissionManagerService extends IPermissionManager.Stub {
        final int callingUid = Binder.getCallingUid();
        PackageManagerServiceUtils.enforceSystemOrPhoneCaller(
                "grantDefaultPermissionsToEnabledTelephonyDataServices", callingUid);
        synchronized (mLock) {
        Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy
                    .grantDefaultPermissionsToEnabledTelephonyDataServices(
                            packageNames, userId));
        }
                .grantDefaultPermissionsToEnabledTelephonyDataServices(packageNames, userId));
    }

    @Override
@@ -1977,11 +1968,8 @@ public class PermissionManagerService extends IPermissionManager.Stub {
        final int callingUid = Binder.getCallingUid();
        PackageManagerServiceUtils.enforceSystemOrPhoneCaller(
                "revokeDefaultPermissionsFromDisabledTelephonyDataServices", callingUid);
        synchronized (mLock) {
        Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy
                    .revokeDefaultPermissionsFromDisabledTelephonyDataServices(
                            packageNames, userId));
        }
                .revokeDefaultPermissionsFromDisabledTelephonyDataServices(packageNames, userId));
    }

    @Override
@@ -1989,22 +1977,18 @@ public class PermissionManagerService extends IPermissionManager.Stub {
        final int callingUid = Binder.getCallingUid();
        PackageManagerServiceUtils
                .enforceSystemOrPhoneCaller("grantDefaultPermissionsToActiveLuiApp", callingUid);
        synchronized (mLock) {
        Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy
                .grantDefaultPermissionsToActiveLuiApp(packageName, userId));
    }
    }

    @Override
    public void revokeDefaultPermissionsFromLuiApps(String[] packageNames, int userId) {
        final int callingUid = Binder.getCallingUid();
        PackageManagerServiceUtils
                .enforceSystemOrPhoneCaller("revokeDefaultPermissionsFromLuiApps", callingUid);
        synchronized (mLock) {
        Binder.withCleanCallingIdentity(() -> mDefaultPermissionGrantPolicy
                .revokeDefaultPermissionsFromLuiApps(packageNames, userId));
    }
    }

    @Override
    public void setPermissionEnforced(String permName, boolean enforced) {
@@ -4889,59 +4873,43 @@ public class PermissionManagerService extends IPermissionManager.Stub {

        @Override
        public void setDialerAppPackagesProvider(PackagesProvider provider) {
            synchronized (mLock) {
            mDefaultPermissionGrantPolicy.setDialerAppPackagesProvider(provider);
        }
        }

        @Override
        public void setLocationExtraPackagesProvider(PackagesProvider provider) {
            synchronized (mLock) {
            mDefaultPermissionGrantPolicy.setLocationExtraPackagesProvider(provider);
        }
        }

        @Override
        public void setLocationPackagesProvider(PackagesProvider provider) {
            synchronized (mLock) {
            mDefaultPermissionGrantPolicy.setLocationPackagesProvider(provider);
        }
        }

        @Override
        public void setSimCallManagerPackagesProvider(PackagesProvider provider) {
            synchronized (mLock) {
            mDefaultPermissionGrantPolicy.setSimCallManagerPackagesProvider(provider);
        }
        }

        @Override
        public void setSmsAppPackagesProvider(PackagesProvider provider) {
            synchronized (mLock) {
            mDefaultPermissionGrantPolicy.setSmsAppPackagesProvider(provider);
        }
        }

        @Override
        public void setSyncAdapterPackagesProvider(SyncAdapterPackagesProvider provider) {
            synchronized (mLock) {
            mDefaultPermissionGrantPolicy.setSyncAdapterPackagesProvider(provider);
        }
        }

        @Override
        public void setUseOpenWifiAppPackagesProvider(PackagesProvider provider) {
            synchronized (mLock) {
            mDefaultPermissionGrantPolicy.setUseOpenWifiAppPackagesProvider(provider);
        }
        }

        @Override
        public void setVoiceInteractionPackagesProvider(PackagesProvider provider) {
            synchronized (mLock) {
            mDefaultPermissionGrantPolicy.setVoiceInteractionPackagesProvider(provider);
        }
        }

        @Override
        public String getDefaultBrowser(int userId) {
@@ -4972,26 +4940,20 @@ public class PermissionManagerService extends IPermissionManager.Stub {

        @Override
        public void grantDefaultPermissionsToDefaultSimCallManager(String packageName, int userId) {
            synchronized (mLock) {
                mDefaultPermissionGrantPolicy
                        .grantDefaultPermissionsToDefaultSimCallManager(packageName, userId);
            }
            mDefaultPermissionGrantPolicy.grantDefaultPermissionsToDefaultSimCallManager(
                    packageName, userId);
        }

        @Override
        public void grantDefaultPermissionsToDefaultUseOpenWifiApp(String packageName, int userId) {
            synchronized (mLock) {
                mDefaultPermissionGrantPolicy
                        .grantDefaultPermissionsToDefaultUseOpenWifiApp(packageName, userId);
            }
            mDefaultPermissionGrantPolicy.grantDefaultPermissionsToDefaultUseOpenWifiApp(
                    packageName, userId);
        }

        @Override
        public void grantDefaultPermissionsToDefaultBrowser(String packageName, int userId) {
            synchronized (mLock) {
                mDefaultPermissionGrantPolicy
                        .grantDefaultPermissionsToDefaultBrowser(packageName, userId);
            }
            mDefaultPermissionGrantPolicy.grantDefaultPermissionsToDefaultBrowser(packageName,
                    userId);
        }

        @Override