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

Commit 2cdeb11d authored by Hai Zhang's avatar Hai Zhang Committed by Android (Google) Code Review
Browse files

Merge "Use a separate fingerprint for DefaultPermissionGrantPolicy."

parents d81db227 d84e31b5
Loading
Loading
Loading
Loading
+10 −2
Original line number Original line Diff line number Diff line
@@ -4110,7 +4110,10 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        final int livingUserCount = livingUsers.size();
        final int livingUserCount = livingUsers.size();
        for (int i = 0; i < livingUserCount; i++) {
        for (int i = 0; i < livingUserCount; i++) {
            final int userId = livingUsers.get(i).id;
            final int userId = livingUsers.get(i).id;
            if (mSettings.isPermissionUpgradeNeeded(userId)) {
            final boolean isPermissionUpgradeNeeded = !Objects.equals(
                    mPermissionManager.getDefaultPermissionGrantFingerprint(userId),
                    Build.FINGERPRINT);
            if (isPermissionUpgradeNeeded) {
                grantPermissionsUserIds = ArrayUtils.appendInt(
                grantPermissionsUserIds = ArrayUtils.appendInt(
                        grantPermissionsUserIds, userId);
                        grantPermissionsUserIds, userId);
            }
            }
@@ -4118,6 +4121,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        // If we upgraded grant all default permissions before kicking off.
        // If we upgraded grant all default permissions before kicking off.
        for (int userId : grantPermissionsUserIds) {
        for (int userId : grantPermissionsUserIds) {
            mLegacyPermissionManager.grantDefaultPermissions(userId);
            mLegacyPermissionManager.grantDefaultPermissions(userId);
            mPermissionManager.setDefaultPermissionGrantFingerprint(Build.FINGERPRINT, userId);
        }
        }
        if (grantPermissionsUserIds == EMPTY_INT_ARRAY) {
        if (grantPermissionsUserIds == EMPTY_INT_ARRAY) {
            // If we did not grant default permissions, we preload from this the
            // If we did not grant default permissions, we preload from this the
@@ -4286,6 +4290,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        if (!convertedFromPreCreated || !readPermissionStateForUser(userId)) {
        if (!convertedFromPreCreated || !readPermissionStateForUser(userId)) {
            mPermissionManager.onUserCreated(userId);
            mPermissionManager.onUserCreated(userId);
            mLegacyPermissionManager.grantDefaultPermissions(userId);
            mLegacyPermissionManager.grantDefaultPermissions(userId);
            mPermissionManager.setDefaultPermissionGrantFingerprint(Build.FINGERPRINT, userId);
            mDomainVerificationManager.clearUser(userId);
            mDomainVerificationManager.clearUser(userId);
        }
        }
    }
    }
@@ -4295,7 +4300,10 @@ public class PackageManagerService implements PackageSender, TestUtilityService
            mPermissionManager.writeLegacyPermissionStateTEMP();
            mPermissionManager.writeLegacyPermissionStateTEMP();
            mSettings.readPermissionStateForUserSyncLPr(userId);
            mSettings.readPermissionStateForUserSyncLPr(userId);
            mPermissionManager.readLegacyPermissionStateTEMP();
            mPermissionManager.readLegacyPermissionStateTEMP();
            return mSettings.isPermissionUpgradeNeeded(userId);
            final boolean isPermissionUpgradeNeeded = !Objects.equals(
                    mPermissionManager.getDefaultPermissionGrantFingerprint(userId),
                    Build.FINGERPRINT);
            return isPermissionUpgradeNeeded;
        }
        }
    }
    }


+12 −0
Original line number Original line Diff line number Diff line
@@ -687,6 +687,18 @@ public class PermissionManagerService extends IPermissionManager.Stub {
            mPermissionManagerServiceImpl.writeLegacyPermissionsTEMP(legacyPermissionSettings);
            mPermissionManagerServiceImpl.writeLegacyPermissionsTEMP(legacyPermissionSettings);
        }
        }


        @Nullable
        @Override
        public String getDefaultPermissionGrantFingerprint(@UserIdInt int userId) {
            return mPermissionManagerServiceImpl.getDefaultPermissionGrantFingerprint(userId);
        }

        @Override
        public void setDefaultPermissionGrantFingerprint(@NonNull String fingerprint,
                @UserIdInt int userId) {
            mPermissionManagerServiceImpl.setDefaultPermissionGrantFingerprint(fingerprint, userId);
        }

        @Override
        @Override
        public void onPackageAdded(@NonNull PackageState packageState, boolean isInstantApp,
        public void onPackageAdded(@NonNull PackageState packageState, boolean isInstantApp,
                @Nullable AndroidPackage oldPkg) {
                @Nullable AndroidPackage oldPkg) {
+13 −0
Original line number Original line Diff line number Diff line
@@ -4599,6 +4599,19 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt
        }
        }
    }
    }


    @Nullable
    @Override
    public String getDefaultPermissionGrantFingerprint(@UserIdInt int userId) {
        return mPackageManagerInt.isPermissionUpgradeNeeded(userId) ? null : Build.FINGERPRINT;
    }

    @Override
    public void setDefaultPermissionGrantFingerprint(@NonNull String fingerprint,
            @UserIdInt int userId) {
        // Ignored - default permission grant here shares the same version with runtime permission
        // upgrade, and the new version is set by that later.
    }

    private void onPackageAddedInternal(@NonNull PackageState packageState,
    private void onPackageAddedInternal(@NonNull PackageState packageState,
            @NonNull AndroidPackage pkg, boolean isInstantApp, @Nullable AndroidPackage oldPkg) {
            @NonNull AndroidPackage pkg, boolean isInstantApp, @Nullable AndroidPackage oldPkg) {
        if (!pkg.getAdoptPermissions().isEmpty()) {
        if (!pkg.getAdoptPermissions().isEmpty()) {
+12 −1
Original line number Original line Diff line number Diff line
@@ -522,6 +522,17 @@ public interface PermissionManagerServiceInterface extends PermissionManagerInte
     */
     */
    void writeLegacyPermissionsTEMP(@NonNull LegacyPermissionSettings legacyPermissionSettings);
    void writeLegacyPermissionsTEMP(@NonNull LegacyPermissionSettings legacyPermissionSettings);


    /**
     * Get the fingerprint for default permission grants.
     */
    @Nullable
    String getDefaultPermissionGrantFingerprint(@UserIdInt int userId);

    /**
     * Set the fingerprint for default permission grants.
     */
    void setDefaultPermissionGrantFingerprint(@NonNull String fingerprint, @UserIdInt int userId);

    /**
    /**
     * Callback when the system is ready.
     * Callback when the system is ready.
     */
     */
@@ -603,6 +614,6 @@ public interface PermissionManagerServiceInterface extends PermissionManagerInte
     * @param userId the user ID the package is uninstalled for
     * @param userId the user ID the package is uninstalled for
     */
     */
    void onPackageUninstalled(@NonNull String packageName, int appId,
    void onPackageUninstalled(@NonNull String packageName, int appId,
            @NonNull PackageState packageState, @NonNull AndroidPackage pkg,
            @NonNull PackageState packageState, @Nullable AndroidPackage pkg,
            @NonNull List<AndroidPackage> sharedUserPkgs, @UserIdInt int userId);
            @NonNull List<AndroidPackage> sharedUserPkgs, @UserIdInt int userId);
}
}
+11 −0
Original line number Original line Diff line number Diff line
@@ -214,6 +214,17 @@ public interface PermissionManagerServiceInternal extends PermissionManagerInter
     */
     */
    void writeLegacyPermissionsTEMP(@NonNull LegacyPermissionSettings legacyPermissionSettings);
    void writeLegacyPermissionsTEMP(@NonNull LegacyPermissionSettings legacyPermissionSettings);


    /**
     * Get the fingerprint for default permission grants.
     */
    @Nullable
    String getDefaultPermissionGrantFingerprint(@UserIdInt int userId);

    /**
     * Set the fingerprint for default permission grants.
     */
    void setDefaultPermissionGrantFingerprint(@NonNull String fingerprint, @UserIdInt int userId);

    /**
    /**
     * Callback when the system is ready.
     * Callback when the system is ready.
     */
     */
Loading