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

Commit 08f1115b authored by Rafael Prado's avatar Rafael Prado Committed by Android (Google) Code Review
Browse files

Merge "Add migration code for SetKeyguardDisabledFeatures()" into main

parents 69488549 7c5d345c
Loading
Loading
Loading
Loading
+33 −0
Original line number Diff line number Diff line
@@ -24191,6 +24191,7 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        String supervisionBackupId = "36.2.supervision-support";
        boolean supervisionMigrated = maybeMigrateResetPasswordTokenLocked(supervisionBackupId);
        supervisionMigrated |= maybeMigrateSuspendedPackagesLocked(supervisionBackupId);
        supervisionMigrated |= maybeMigrateSetKeyguardDisabledFeatures(supervisionBackupId);
        if (supervisionMigrated) {
            Slogf.i(LOG_TAG, "Backup made: " + supervisionBackupId);
        }
@@ -24204,6 +24205,38 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        // Additional migration steps should repeat the pattern above with a new backupId.
    }
    @GuardedBy("getLockObject()")
    private boolean maybeMigrateSetKeyguardDisabledFeatures(String backupId) {
        Slog.i(LOG_TAG, "Migrating set keyguard disabled features to policy engine");
        if (!Flags.setKeyguardDisabledFeaturesCoexistence()) {
            return false;
        }
        if (mOwners.isSetKeyguardDisabledFeaturesMigrated()) {
            return false;
        }
        // Create backup if none exists
        mDevicePolicyEngine.createBackup(backupId);
        try {
            iterateThroughDpcAdminsLocked((admin, enforcingAdmin) -> {
                if (admin.disabledKeyguardFeatures == 0) {
                    return;
                }
                int userId = enforcingAdmin.getUserId();
                mDevicePolicyEngine.setLocalPolicy(
                        PolicyDefinition.KEYGUARD_DISABLED_FEATURES,
                        enforcingAdmin,
                        new IntegerPolicyValue(admin.disabledKeyguardFeatures),
                        userId);
            });
        } catch (Exception e) {
            Slog.wtf(LOG_TAG, "Failed to migrate set keyguard disabled to policy engine", e);
        }
        Slog.i(LOG_TAG, "Marking set keyguard disabled features migration complete");
        mOwners.markSetKeyguardDisabledFeaturesMigrated();
        return true;
    }
    private void migratePermissionGrantStatePolicies() {
        Slogf.i(LOG_TAG, "Migrating PERMISSION_GRANT policy to device policy engine.");
        for (UserInfo userInfo : mUserManager.getUsers()) {
+13 −0
Original line number Diff line number Diff line
@@ -695,6 +695,19 @@ class Owners {
        }
    }

    void markSetKeyguardDisabledFeaturesMigrated() {
        synchronized (mData) {
            mData.mSetKeyguardDisabledFeaturesMigrated = true;
            mData.writeDeviceOwner();
        }
    }

    boolean isSetKeyguardDisabledFeaturesMigrated() {
        synchronized (mData) {
            return mData.mSetKeyguardDisabledFeaturesMigrated;
        }
    }

    @GuardedBy("mData")
    void pushToAppOpsLocked() {
        if (!mSystemReady) {
+11 −0
Original line number Diff line number Diff line
@@ -95,6 +95,8 @@ class OwnersData {
            "resetPasswordWithTokenMigrated";
    private static final String ATTR_MEMORY_TAGGING_MIGRATED =
            "memoryTaggingMigrated";
    private static final String ATTR_SET_KEYGUARD_DISABLED_FEATURES_MIGRATED =
            "setKeyguardDisabledFeaturesMigrated";

    private static final String ATTR_MIGRATED_POST_UPGRADE = "migratedPostUpgrade";

@@ -129,6 +131,7 @@ class OwnersData {
    boolean mSuspendedPackagesMigrated = false;
    boolean mResetPasswordWithTokenMigrated = false;
    boolean mMemoryTaggingMigrated = false;
    boolean mSetKeyguardDisabledFeaturesMigrated = false;

    boolean mPoliciesMigratedPostUpdate = false;

@@ -434,6 +437,10 @@ class OwnersData {
                out.attributeBoolean(null, ATTR_MEMORY_TAGGING_MIGRATED,
                        mMemoryTaggingMigrated);
            }
            if (Flags.setKeyguardDisabledFeaturesCoexistence()) {
                out.attributeBoolean(null, ATTR_SET_KEYGUARD_DISABLED_FEATURES_MIGRATED,
                        mSetKeyguardDisabledFeaturesMigrated);
            }
            out.endTag(null, TAG_POLICY_ENGINE_MIGRATION);

        }
@@ -510,6 +517,10 @@ class OwnersData {
                    mMemoryTaggingMigrated = Flags.setMtePolicyCoexistence()
                            && parser.getAttributeBoolean(null,
                            ATTR_MEMORY_TAGGING_MIGRATED, false);
                    mSetKeyguardDisabledFeaturesMigrated =
                            Flags.setKeyguardDisabledFeaturesCoexistence()
                                    && parser.getAttributeBoolean(null,
                                    ATTR_SET_KEYGUARD_DISABLED_FEATURES_MIGRATED, false);
                    break;
                default:
                    Slog.e(TAG, "Unexpected tag: " + tag);