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

Commit 2fd963f3 authored by Winson Chiu's avatar Winson Chiu Committed by Android (Google) Code Review
Browse files

Merge "Build splitPermissions manually for PackageParser"

parents a49e26c2 d0fb8ac8
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -8035,6 +8035,7 @@ public abstract class PackageManager {
            return PackageParser.generatePackageInfo(pkg, null, (int) flagsBits, 0, 0, null,
                    FrameworkPackageUserState.DEFAULT);
        } catch (PackageParser.PackageParserException e) {
            Log.w(TAG, "Failure to parse package archive", e);
            return null;
        }
    }
+23 −3
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@ import android.content.IntentFilter;
import android.content.pm.overlay.OverlayPaths;
import android.content.pm.parsing.result.ParseResult;
import android.content.pm.parsing.result.ParseTypeImpl;
import android.content.pm.permission.SplitPermissionInfoParcelable;
import android.content.pm.pkg.FrameworkPackageUserState;
import android.content.res.ApkAssets;
import android.content.res.AssetManager;
@@ -2417,9 +2418,28 @@ public class PackageParser {
            Slog.i(TAG, newPermsMsg.toString());
        }

        final List<PermissionManager.SplitPermissionInfo> splitPermissions =
                ActivityThread.currentApplication().getSystemService(PermissionManager.class)
        // Must build permission info manually for legacy code, which can be called before
        // Appication is available through the app process, so the normal API doesn't work.
        List<SplitPermissionInfoParcelable> splitPermissionParcelables;
        try {
            splitPermissionParcelables = ActivityThread.getPermissionManager()
                    .getSplitPermissions();
        } catch (RemoteException e) {
            splitPermissionParcelables = Collections.emptyList();
        }

        int splitPermissionsSize = splitPermissionParcelables.size();
        List<PermissionManager.SplitPermissionInfo> splitPermissions =
                new ArrayList<>(splitPermissionsSize);
        for (int index = 0; index < splitPermissionsSize; index++) {
            SplitPermissionInfoParcelable splitPermissionParcelable =
                    splitPermissionParcelables.get(index);
            splitPermissions.add(new PermissionManager.SplitPermissionInfo(
                    splitPermissionParcelable.getSplitPermission(),
                    splitPermissionParcelable.getNewPermissions(),
                    splitPermissionParcelable.getTargetSdk()
            ));
        }

        final int listSize = splitPermissions.size();
        for (int is = 0; is < listSize; is++) {