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

Commit 0a761a95 authored by Ganesh Olekar's avatar Ganesh Olekar
Browse files

[conflict] DO NOT MERGE Fix auto-grant of AR runtime permission if device is...

[conflict] DO NOT MERGE Fix auto-grant of AR runtime permission if device is upgrading from pre-Q am: 84b1160c

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/18327410



Change-Id: I439bf33ed4be4f0bf2439f5565b57c9bdc398504
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents b302dca7 84b1160c
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -1011,4 +1011,10 @@ public abstract class PackageManagerInternal {
     * that b/141413692 is not reproducible on Q.
     */
    public abstract void userRemovedForTest();

    /**
     * Get installed SDK version of the package
     * @param pkg package for which to retrieve the installed sdk version
     */
    public abstract int getInstalledSdkVersion(PackageParser.Package pkg);
}
+5 −0
Original line number Diff line number Diff line
@@ -25246,6 +25246,11 @@ public class PackageManagerService extends IPackageManager.Stub
        public void userRemovedForTest() {
            mBlockDeleteOnUserRemoveForTest.open();
        }
        @Override
        public int getInstalledSdkVersion(PackageParser.Package pkg) {
            return PackageManagerService.this.getSettingsVersionForPackage(pkg).sdkVersion;
        }
    }
    @GuardedBy("mPackages")
+19 −16
Original line number Diff line number Diff line
@@ -1096,18 +1096,20 @@ public class PermissionManagerService {
                        // or has updated its target SDK and AR is no longer implicit to it.
                        // This is a compatibility workaround for apps when AR permission was
                        // split in Q.
                        final List<PermissionManager.SplitPermissionInfo> permissionList =
                                getSplitPermissions();
                        int numSplitPerms = permissionList.size();
                        for (int splitPermNum = 0; splitPermNum < numSplitPerms; splitPermNum++) {
                        // b/210065877: Check that the installed version is pre Q to auto-grant in
                        // case of OS update
                        if (mPackageManagerInt.getInstalledSdkVersion(pkg)
                                < Build.VERSION_CODES.Q) {
                            int numSplitPerms = PermissionManager.SPLIT_PERMISSIONS.size();
                            for (int splitPermNum = 0; splitPermNum < numSplitPerms;
                                    splitPermNum++) {
                                PermissionManager.SplitPermissionInfo sp =
                                    permissionList.get(splitPermNum);
                                        PermissionManager.SPLIT_PERMISSIONS.get(splitPermNum);
                                String splitPermName = sp.getSplitPermission();
                                if (sp.getNewPermissions().contains(permName)
                                        && origPermissions.hasInstallPermission(splitPermName)) {
                                    upgradedActivityRecognitionPermission = splitPermName;
                                    newImplicitPermissions.add(permName);

                                    if (DEBUG_PERMISSIONS) {
                                        Slog.i(TAG, permName + " is newly added for "
                                                + pkg.packageName);
@@ -1117,6 +1119,7 @@ public class PermissionManagerService {
                            }
                        }
                    }
                }

                // Limit ephemeral apps to ephemeral allowed permissions.
                if (pkg.applicationInfo.isInstantApp() && !bp.isInstant()) {