Loading core/java/android/content/pm/IPackageManager.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -563,6 +563,7 @@ interface IPackageManager { void addOnPermissionsChangeListener(in IOnPermissionsChangeListener listener); void removeOnPermissionsChangeListener(in IOnPermissionsChangeListener listener); void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId); void grantDefaultPermissionsToEnabledImsServices(in String[] packageNames, int userId); boolean isPermissionRevokedByPolicy(String permission, String packageName, int userId); Loading services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java +17 −0 Original line number Diff line number Diff line Loading @@ -777,6 +777,23 @@ final class DefaultPermissionGrantPolicy { } } public void grantDefaultPermissionsToEnabledImsServicesLPr(String[] packageNames, int userId) { Log.i(TAG, "Granting permissions to enabled ImsServices for user:" + userId); if (packageNames == null) { return; } for (String packageName : packageNames) { PackageParser.Package imsServicePackage = getSystemPackageLPr(packageName); if (imsServicePackage != null && doesPackageSupportRuntimePermissions(imsServicePackage)) { grantRuntimePermissionsLPw(imsServicePackage, PHONE_PERMISSIONS, userId); grantRuntimePermissionsLPw(imsServicePackage, MICROPHONE_PERMISSIONS, userId); grantRuntimePermissionsLPw(imsServicePackage, LOCATION_PERMISSIONS, userId); grantRuntimePermissionsLPw(imsServicePackage, CAMERA_PERMISSIONS, userId); } } } public void grantDefaultPermissionsToDefaultBrowserLPr(String packageName, int userId) { Log.i(TAG, "Granting permissions to default browser for user:" + userId); if (packageName == null) { Loading services/core/java/com/android/server/pm/PackageManagerService.java +14 −0 Original line number Diff line number Diff line Loading @@ -21204,6 +21204,20 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); } } @Override public void grantDefaultPermissionsToEnabledImsServices(String[] packageNames, int userId) { enforceSystemOrPhoneCaller("grantDefaultPermissionsToEnabledImsServices"); synchronized (mPackages) { final long identity = Binder.clearCallingIdentity(); try { mDefaultPermissionPolicy.grantDefaultPermissionsToEnabledImsServicesLPr( packageNames, userId); } finally { Binder.restoreCallingIdentity(identity); } } } private static void enforceSystemOrPhoneCaller(String tag) { int callingUid = Binder.getCallingUid(); if (callingUid != Process.PHONE_UID && callingUid != Process.SYSTEM_UID) { Loading
core/java/android/content/pm/IPackageManager.aidl +1 −0 Original line number Diff line number Diff line Loading @@ -563,6 +563,7 @@ interface IPackageManager { void addOnPermissionsChangeListener(in IOnPermissionsChangeListener listener); void removeOnPermissionsChangeListener(in IOnPermissionsChangeListener listener); void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId); void grantDefaultPermissionsToEnabledImsServices(in String[] packageNames, int userId); boolean isPermissionRevokedByPolicy(String permission, String packageName, int userId); Loading
services/core/java/com/android/server/pm/DefaultPermissionGrantPolicy.java +17 −0 Original line number Diff line number Diff line Loading @@ -777,6 +777,23 @@ final class DefaultPermissionGrantPolicy { } } public void grantDefaultPermissionsToEnabledImsServicesLPr(String[] packageNames, int userId) { Log.i(TAG, "Granting permissions to enabled ImsServices for user:" + userId); if (packageNames == null) { return; } for (String packageName : packageNames) { PackageParser.Package imsServicePackage = getSystemPackageLPr(packageName); if (imsServicePackage != null && doesPackageSupportRuntimePermissions(imsServicePackage)) { grantRuntimePermissionsLPw(imsServicePackage, PHONE_PERMISSIONS, userId); grantRuntimePermissionsLPw(imsServicePackage, MICROPHONE_PERMISSIONS, userId); grantRuntimePermissionsLPw(imsServicePackage, LOCATION_PERMISSIONS, userId); grantRuntimePermissionsLPw(imsServicePackage, CAMERA_PERMISSIONS, userId); } } } public void grantDefaultPermissionsToDefaultBrowserLPr(String packageName, int userId) { Log.i(TAG, "Granting permissions to default browser for user:" + userId); if (packageName == null) { Loading
services/core/java/com/android/server/pm/PackageManagerService.java +14 −0 Original line number Diff line number Diff line Loading @@ -21204,6 +21204,20 @@ Slog.v(TAG, ":: stepped forward, applying functor at tag " + parser.getName()); } } @Override public void grantDefaultPermissionsToEnabledImsServices(String[] packageNames, int userId) { enforceSystemOrPhoneCaller("grantDefaultPermissionsToEnabledImsServices"); synchronized (mPackages) { final long identity = Binder.clearCallingIdentity(); try { mDefaultPermissionPolicy.grantDefaultPermissionsToEnabledImsServicesLPr( packageNames, userId); } finally { Binder.restoreCallingIdentity(identity); } } } private static void enforceSystemOrPhoneCaller(String tag) { int callingUid = Binder.getCallingUid(); if (callingUid != Process.PHONE_UID && callingUid != Process.SYSTEM_UID) {