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

Commit 7756a9bd authored by mrulhania's avatar mrulhania Committed by Manjeet Rulhania
Browse files

Trigger role re-evaluation when package path change

The package path changes on every apk update. Instead
of adding more attributes, we will rely on package path
for role re-evaluation trigger. This will make sure
roles are granted or revoked correctly.

Test: atest CtsRoleTestCases
Test: atest RolePermissionOverrideTest
Bug: 351833816
Bug: 354187951
Bug: 354186073
FLAG: EXEMPT bug fix

Change-Id: I505831f220eb4aedce0c5bdd381a5fd304179828
parent 6988e7a4
Loading
Loading
Loading
Loading
+1 −13
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.PackageManagerInternal;
import android.content.pm.ResolveInfo;
import android.content.pm.Signature;
import android.os.Environment;
import android.permission.flags.Flags;
import android.provider.Settings;
@@ -312,17 +311,10 @@ public class RoleServicePlatformHelperImpl implements RoleServicePlatformHelper
        DataOutputStream dataOutputStream = new DataOutputStream(new BufferedOutputStream(mdos));
        packageManagerInternal.forEachInstalledPackage(pkg -> {
            try {
                dataOutputStream.writeUTF(pkg.getPackageName());
                dataOutputStream.writeLong(pkg.getLongVersionCode());
                dataOutputStream.writeUTF(pkg.getPath());
                dataOutputStream.writeInt(packageManagerInternal.getApplicationEnabledState(
                        pkg.getPackageName(), userId));

                final Set<String> requestedPermissions = pkg.getRequestedPermissions();
                dataOutputStream.writeInt(requestedPermissions.size());
                for (String permissionName : requestedPermissions) {
                    dataOutputStream.writeUTF(permissionName);
                }

                final ArraySet<String> enabledComponents =
                        packageManagerInternal.getEnabledComponents(pkg.getPackageName(), userId);
                final int enabledComponentsSize = CollectionUtils.size(enabledComponents);
@@ -337,10 +329,6 @@ public class RoleServicePlatformHelperImpl implements RoleServicePlatformHelper
                for (int i = 0; i < disabledComponentsSize; i++) {
                    dataOutputStream.writeUTF(disabledComponents.valueAt(i));
                }

                for (final Signature signature : pkg.getSigningDetails().getSignatures()) {
                    dataOutputStream.write(signature.toByteArray());
                }
            } catch (IOException e) {
                // Never happens for MessageDigestOutputStream and DataOutputStream.
                throw new AssertionError(e);