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

Commit 3fafa626 authored by Hui Yu's avatar Hui Yu Committed by Automerger Merge Worker
Browse files

Merge "Allow deviceProvisioningPackage to start foreground service from the...

Merge "Allow deviceProvisioningPackage to start foreground service from the background." into udc-dev am: f338ffa8 am: ac18a475

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



Change-Id: I15cbf8ae46eda62eaecc0bf9ef27c523f044900f
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents a9ba6b35 ac18a475
Loading
Loading
Loading
Loading
+18 −2
Original line number Diff line number Diff line
@@ -406,6 +406,8 @@ public final class ActiveServices {
    // allowlisted packageName.
    ArraySet<String> mAllowListWhileInUsePermissionInFgs = new ArraySet<>();

    String mCachedDeviceProvisioningPackage;

    // TODO: remove this after feature development is done
    private static final SimpleDateFormat DATE_FORMATTER =
            new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@@ -480,7 +482,8 @@ public final class ActiveServices {
                // (REASON_ALARM_MANAGER_ALARM_CLOCK), allow it to continue and do not stop it,
                // even the app is background-restricted.
                if (r.isForeground
                        && r.mAllowStartForegroundAtEntering != REASON_ALARM_MANAGER_ALARM_CLOCK) {
                        && r.mAllowStartForegroundAtEntering != REASON_ALARM_MANAGER_ALARM_CLOCK
                        && !isDeviceProvisioningPackage(r.packageName)) {
                    toStop.add(r);
                }
            }
@@ -880,7 +883,8 @@ public final class ActiveServices {
        boolean forcedStandby = false;
        if (bgLaunch
                && appRestrictedAnyInBackground(appUid, appPackageName)
                && !isTempAllowedByAlarmClock(appUid)) {
                && !isTempAllowedByAlarmClock(appUid)
                && !isDeviceProvisioningPackage(appPackageName)) {
            if (DEBUG_FOREGROUND_SERVICE) {
                Slog.d(TAG, "Forcing bg-only service start only for " + r.shortInstanceName
                        + " : bgLaunch=" + bgLaunch + " callerFg=" + callerFg);
@@ -1926,6 +1930,9 @@ public final class ActiveServices {
     */
    private boolean isForegroundServiceAllowedInBackgroundRestricted(ProcessRecord app) {
        final ProcessStateRecord state = app.mState;
        if (isDeviceProvisioningPackage(app.info.packageName)) {
            return true;
        }
        if (!state.isBackgroundRestricted()
                || state.getSetProcState() <= ActivityManager.PROCESS_STATE_BOUND_TOP) {
            return true;
@@ -8405,4 +8412,13 @@ public final class ActiveServices {
        }
        return results;
    }

    private boolean isDeviceProvisioningPackage(String packageName) {
        if (mCachedDeviceProvisioningPackage == null) {
            mCachedDeviceProvisioningPackage = mAm.mContext.getResources().getString(
                    com.android.internal.R.string.config_deviceProvisioningPackage);
        }
        return mCachedDeviceProvisioningPackage != null
                && mCachedDeviceProvisioningPackage.equals(packageName);
    }
}