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

Commit 21c781e1 authored by Pavel Grafov's avatar Pavel Grafov
Browse files

Ensure user control disabled clears stopped state

Flag: android.app.admin.flags.disallow_user_control_stopped_state_fix
Bug: 330688482
Test: btest CtsDevicePolicyTestCases:android.devicepolicy.cts.UserControlDisabledPackagesTest
Change-Id: I6069245a6f7bddb4c97bc43afb105dcfa813e5c0
parent abf341c9
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -216,6 +216,16 @@ flag {
  }
}

flag {
  name: "disallow_user_control_stopped_state_fix"
  namespace: "enterprise"
  description: "Ensure DPM.setUserControlDisabledPackages() clears FLAG_STOPPED for the app"
  bug: "330688482"
  metadata {
    purpose: PURPOSE_BUGFIX
  }
}

flag {
  name: "esim_management_ux_enabled"
  namespace: "enterprise"
+14 −6
Original line number Diff line number Diff line
@@ -196,19 +196,27 @@ final class PolicyEnforcerCallbacks {
        Binder.withCleanCallingIdentity(() -> {
            PackageManagerInternal pmi =
                    LocalServices.getService(PackageManagerInternal.class);
            AppOpsManager appOpsManager = context.getSystemService(AppOpsManager.class);

            pmi.setOwnerProtectedPackages(userId,
                    packages == null ? null : packages.stream().toList());
            LocalServices.getService(UsageStatsManagerInternal.class)
                    .setAdminProtectedPackages(
                            packages == null ? null : new ArraySet<>(packages), userId);

            if (Flags.disallowUserControlBgUsageFix()) {
                if (packages == null) {
            if (packages == null || packages.isEmpty()) {
                return;
            }
                final AppOpsManager appOpsManager = context.getSystemService(AppOpsManager.class);
                resolveUsers(userId).forEach(
                        user -> setBgUsageAppOp(packages, pmi, user, appOpsManager));

            for (int user : resolveUsers(userId)) {
                if (Flags.disallowUserControlBgUsageFix()) {
                    setBgUsageAppOp(packages, pmi, user, appOpsManager);
                }
                if (Flags.disallowUserControlStoppedStateFix()) {
                    for (String packageName : packages) {
                        pmi.setPackageStoppedState(packageName, false, user);
                    }
                }
            }
        });
        return true;