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

Commit a1a58daa authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Fix the case where blocked reasons for dataSaver are not considered." am: 24b9401c

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

Change-Id: I4aa1faf4ecdbddc1a40eb8e841f821cfa91083a6
parents 738d6b3b 24b9401c
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -326,6 +326,20 @@ public class NetworkPolicyManager {
     * @hide
     */
    public static final int ALLOWED_METERED_REASON_USER_EXEMPTED = 1 << 16;
    /**
     * Flag to indicate that app is exempt from certain metered network restrictions because of it
     * being a system component.
     *
     * @hide
     */
    public static final int ALLOWED_METERED_REASON_SYSTEM = 1 << 17;
    /**
     * Flag to indicate that app is exempt from certain metered network restrictions because of it
     * being in the foreground.
     *
     * @hide
     */
    public static final int ALLOWED_METERED_REASON_FOREGROUND = 1 << 18;

    /** @hide */
    public static final int ALLOWED_METERED_REASON_MASK = 0xffff0000;
+21 −14
Original line number Diff line number Diff line
@@ -56,7 +56,9 @@ import static android.net.NetworkIdentity.OEM_NONE;
import static android.net.NetworkPolicy.LIMIT_DISABLED;
import static android.net.NetworkPolicy.SNOOZE_NEVER;
import static android.net.NetworkPolicy.WARNING_DISABLED;
import static android.net.NetworkPolicyManager.ALLOWED_METERED_REASON_FOREGROUND;
import static android.net.NetworkPolicyManager.ALLOWED_METERED_REASON_MASK;
import static android.net.NetworkPolicyManager.ALLOWED_METERED_REASON_SYSTEM;
import static android.net.NetworkPolicyManager.ALLOWED_METERED_REASON_USER_EXEMPTED;
import static android.net.NetworkPolicyManager.ALLOWED_REASON_FOREGROUND;
import static android.net.NetworkPolicyManager.ALLOWED_REASON_NONE;
@@ -4636,8 +4638,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
        newBlockedReasons |= (mRestrictBackground ? BLOCKED_METERED_REASON_DATA_SAVER : 0);
        newBlockedReasons |= (isDenied ? BLOCKED_METERED_REASON_USER_RESTRICTED : 0);

        newAllowedReasons |= (isSystem(uid) ? ALLOWED_REASON_SYSTEM : 0);
        newAllowedReasons |= (isForeground ? ALLOWED_REASON_FOREGROUND : 0);
        newAllowedReasons |= (isSystem(uid) ? ALLOWED_METERED_REASON_SYSTEM : 0);
        newAllowedReasons |= (isForeground ? ALLOWED_METERED_REASON_FOREGROUND : 0);
        newAllowedReasons |= (isAllowed ? ALLOWED_METERED_REASON_USER_EXEMPTED : 0);

        if (LOGV) {
@@ -4711,6 +4713,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {

            // Dispatch changed rule to existing listeners.
            mHandler.obtainMessage(MSG_RULES_CHANGED, uid, newUidRules).sendToTarget();
        }

        final int oldEffectiveBlockedReasons = uidBlockedState.effectiveBlockedReasons;
        uidBlockedState.blockedReasons = (uidBlockedState.blockedReasons
@@ -4724,7 +4727,6 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
                    .sendToTarget();
        }
    }
    }

    /**
     * Updates the power-related part of the {@link #mUidRules} for a given map, and notify external
@@ -5870,12 +5872,17 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
                return;
            }
            if ((allowedReasons & ALLOWED_REASON_SYSTEM) != 0) {
                effectiveBlockedReasons = BLOCKED_REASON_NONE;
                effectiveBlockedReasons = (blockedReasons & ALLOWED_METERED_REASON_MASK);
            }
            if ((allowedReasons & ALLOWED_METERED_REASON_SYSTEM) != 0) {
                effectiveBlockedReasons = (blockedReasons & ~ALLOWED_METERED_REASON_MASK);
            }
            if ((allowedReasons & ALLOWED_REASON_FOREGROUND) != 0) {
                effectiveBlockedReasons &= ~BLOCKED_REASON_BATTERY_SAVER;
                effectiveBlockedReasons &= ~BLOCKED_REASON_DOZE;
                effectiveBlockedReasons &= ~BLOCKED_REASON_APP_STANDBY;
            }
            if ((allowedReasons & ALLOWED_METERED_REASON_FOREGROUND) != 0) {
                effectiveBlockedReasons &= ~BLOCKED_METERED_REASON_DATA_SAVER;
                effectiveBlockedReasons &= ~BLOCKED_METERED_REASON_USER_RESTRICTED;
            }