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

Commit f9cbf902 authored by Pavel Grafov's avatar Pavel Grafov Committed by Automerger Merge Worker
Browse files

Merge "Enforce DevicePolicyManager.setUserControlDisabledPackages in...

Merge "Enforce DevicePolicyManager.setUserControlDisabledPackages in AppStandbyController" into sc-dev am: 84a6ab8a am: c126c640

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/22311042



Change-Id: I276f76eb69419de9362da68ccbd00f8edbfebb47
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents 595e0d12 c126c640
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -157,6 +157,8 @@ public interface AppStandbyInternal {

    void setActiveAdminApps(Set<String> adminPkgs, int userId);

    void setAdminProtectedPackages(Set<String> packageNames, int userId);

    void onAdminDataAvailable();

    void clearCarrierPrivilegedApps();
+40 −0
Original line number Diff line number Diff line
@@ -247,6 +247,10 @@ public class AppStandbyController
    @GuardedBy("mActiveAdminApps")
    private final SparseArray<Set<String>> mActiveAdminApps = new SparseArray<>();

    /** List of admin protected packages. Can contain {@link android.os.UserHandle#USER_ALL}. */
    @GuardedBy("mAdminProtectedPackages")
    private final SparseArray<Set<String>> mAdminProtectedPackages = new SparseArray<>();

    /**
     * Set of system apps that are headless (don't have any declared activities, enabled or
     * disabled). Presence in this map indicates that the app is a headless system app.
@@ -1088,6 +1092,9 @@ public class AppStandbyController
            synchronized (mActiveAdminApps) {
                mActiveAdminApps.remove(userId);
            }
            synchronized (mAdminProtectedPackages) {
                mAdminProtectedPackages.remove(userId);
            }
        }
    }

@@ -1177,6 +1184,10 @@ public class AppStandbyController
                return STANDBY_BUCKET_EXEMPTED;
            }

            if (isAdminProtectedPackages(packageName, userId)) {
                return STANDBY_BUCKET_EXEMPTED;
            }

            if (isActiveNetworkScorer(packageName)) {
                return STANDBY_BUCKET_EXEMPTED;
            }
@@ -1583,6 +1594,17 @@ public class AppStandbyController
        }
    }

    private boolean isAdminProtectedPackages(String packageName, int userId) {
        synchronized (mAdminProtectedPackages) {
            if (mAdminProtectedPackages.contains(UserHandle.USER_ALL)
                    && mAdminProtectedPackages.get(UserHandle.USER_ALL).contains(packageName)) {
                return true;
            }
            return mAdminProtectedPackages.contains(userId)
                    && mAdminProtectedPackages.get(userId).contains(packageName);
        }
    }

    @Override
    public void addActiveDeviceAdmin(String adminPkg, int userId) {
        synchronized (mActiveAdminApps) {
@@ -1606,6 +1628,17 @@ public class AppStandbyController
        }
    }

    @Override
    public void setAdminProtectedPackages(Set<String> packageNames, int userId) {
        synchronized (mAdminProtectedPackages) {
            if (packageNames == null || packageNames.isEmpty()) {
                mAdminProtectedPackages.remove(userId);
            } else {
                mAdminProtectedPackages.put(userId, packageNames);
            }
        }
    }

    @Override
    public void onAdminDataAvailable() {
        mAdminDataAvailableLatch.countDown();
@@ -1628,6 +1661,13 @@ public class AppStandbyController
        }
    }

    @VisibleForTesting
    Set<String> getAdminProtectedPackagesForTest(int userId) {
        synchronized (mAdminProtectedPackages) {
            return mAdminProtectedPackages.get(userId);
        }
    }

    /**
     * Returns {@code true} if the supplied package is the device provisioning app. Otherwise,
     * returns {@code false}.
+2 −1
Original line number Diff line number Diff line
@@ -13582,7 +13582,8 @@ public class DevicePolicyManager {
    /**
     * Called by Device owner to disable user control over apps. User will not be able to clear
     * app data or force-stop packages.
     * app data or force-stop packages. Packages with user control disabled are exempted from
     * App Standby Buckets.
     *
     * @param admin which {@link DeviceAdminReceiver} this request is associated with
     * @param packages The package names for the apps.
+10 −0
Original line number Diff line number Diff line
@@ -198,6 +198,16 @@ public abstract class UsageStatsManagerInternal {
     */
    public abstract void setActiveAdminApps(Set<String> adminApps, int userId);

    /**
     * Called by DevicePolicyManagerService to inform about the protected packages for a user.
     * User control will be disabled for protected packages.
     *
     * @param packageNames the set of protected packages for {@code userId}.
     * @param userId the userId to which the protected packages belong.
     */
    public abstract void setAdminProtectedPackages(@Nullable Set<String> packageNames,
            @UserIdInt int userId);

    /**
     * Called by DevicePolicyManagerService during boot to inform that admin data is loaded and
     * pushed to UsageStatsService.
+1 −1
Original line number Diff line number Diff line
@@ -1341,7 +1341,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager {
        Owners newOwners() {
            return new Owners(getUserManager(), getUserManagerInternal(),
                    getPackageManagerInternal(), getActivityTaskManagerInternal(),
                    getActivityManagerInternal());
                    getActivityManagerInternal(), getUsageStatsManagerInternal());
        }
        UserManager getUserManager() {
Loading