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

Commit d732136e authored by Sudheer Shanka's avatar Sudheer Shanka Committed by android-build-merger
Browse files

Merge "Update ConnOnActivityStartTest to be hermetic." into oc-mr1-dev

am: 06668b5f

Change-Id: I34efad16363ca2b21374967bfabfc8fa2f36ee94
parents 88f3cb40 06668b5f
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -72,4 +72,6 @@ interface INetworkPolicyManager {
    void setSubscriptionPlans(int subId, in SubscriptionPlan[] plans, String callingPackage);

    void factoryReset(String subscriber);

    boolean isUidNetworkingBlocked(int uid, boolean meteredNetwork);
}
+2 −0
Original line number Diff line number Diff line
@@ -435,4 +435,6 @@ interface INetworkManagementService
    int removeRoutesFromLocalNetwork(in List<RouteInfo> routes);

    void setAllowOnlyVpnForUids(boolean enable, in UidRange[] uidRanges);

    boolean isNetworkRestricted(int uid);
}
+37 −27
Original line number Diff line number Diff line
@@ -2658,22 +2658,13 @@ public class NetworkManagementService extends INetworkManagementService.Stub
        return failures;
    }

    private void setFirewallChainState(int chain, boolean state) {
        synchronized (mRulesLock) {
            mFirewallChainStates.put(chain, state);
        }
    }

    private boolean getFirewallChainState(int chain) {
        synchronized (mRulesLock) {
            return mFirewallChainStates.get(chain);
        }
    @Override
    public boolean isNetworkRestricted(int uid) {
        mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG);
        return isNetworkRestrictedInternal(uid);
    }

    @VisibleForTesting
    class LocalService extends NetworkManagementInternal {
        @Override
        public boolean isNetworkRestrictedForUid(int uid) {
    private boolean isNetworkRestrictedInternal(int uid) {
        synchronized (mRulesLock) {
            if (getFirewallChainState(FIREWALL_CHAIN_STANDBY)
                    && mUidFirewallStandbyRules.get(uid) == FIREWALL_RULE_DENY) {
@@ -2702,6 +2693,25 @@ public class NetworkManagementService extends INetworkManagementService.Stub
            return false;
        }
    }

    private void setFirewallChainState(int chain, boolean state) {
        synchronized (mRulesLock) {
            mFirewallChainStates.put(chain, state);
        }
    }

    private boolean getFirewallChainState(int chain) {
        synchronized (mRulesLock) {
            return mFirewallChainStates.get(chain);
        }
    }

    @VisibleForTesting
    class LocalService extends NetworkManagementInternal {
        @Override
        public boolean isNetworkRestrictedForUid(int uid) {
            return isNetworkRestrictedInternal(uid);
        }
    }

    @VisibleForTesting
+44 −34
Original line number Diff line number Diff line
@@ -4315,6 +4315,47 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
        }
    }

    @Override
    public boolean isUidNetworkingBlocked(int uid, boolean isNetworkMetered) {
        mContext.enforceCallingOrSelfPermission(MANAGE_NETWORK_POLICY, TAG);
        return isUidNetworkingBlockedInternal(uid, isNetworkMetered);
    }

    private boolean isUidNetworkingBlockedInternal(int uid, boolean isNetworkMetered) {
        final int uidRules;
        final boolean isBackgroundRestricted;
        synchronized (mUidRulesFirstLock) {
            uidRules = mUidRules.get(uid, RULE_NONE);
            isBackgroundRestricted = mRestrictBackground;
        }
        if (hasRule(uidRules, RULE_REJECT_ALL)) {
            if (LOGV) logUidStatus(uid, "blocked by power restrictions");
            return true;
        }
        if (!isNetworkMetered) {
            if (LOGV) logUidStatus(uid, "allowed on unmetered network");
            return false;
        }
        if (hasRule(uidRules, RULE_REJECT_METERED)) {
            if (LOGV) logUidStatus(uid, "blacklisted on metered network");
            return true;
        }
        if (hasRule(uidRules, RULE_ALLOW_METERED)) {
            if (LOGV) logUidStatus(uid, "whitelisted on metered network");
            return false;
        }
        if (hasRule(uidRules, RULE_TEMPORARY_ALLOW_METERED)) {
            if (LOGV) logUidStatus(uid, "temporary whitelisted on metered network");
            return false;
        }
        if (isBackgroundRestricted) {
            if (LOGV) logUidStatus(uid, "blocked when background is restricted");
            return true;
        }
        if (LOGV) logUidStatus(uid, "allowed by default");
        return false;
    }

    private class NetworkPolicyManagerInternalImpl extends NetworkPolicyManagerInternal {

        @Override
@@ -4352,42 +4393,11 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub {
         */
        @Override
        public boolean isUidNetworkingBlocked(int uid, String ifname) {
            final int uidRules;
            final boolean isBackgroundRestricted;
            final boolean isNetworkMetered;
            synchronized (mUidRulesFirstLock) {
                uidRules = mUidRules.get(uid, RULE_NONE);
                isBackgroundRestricted = mRestrictBackground;
            synchronized (mNetworkPoliciesSecondLock) {
                isNetworkMetered = mMeteredIfaces.contains(ifname);
            }
            }
            if (hasRule(uidRules, RULE_REJECT_ALL)) {
                if (LOGV) logUidStatus(uid, "blocked by power restrictions");
                return true;
            }
            if (!isNetworkMetered) {
                if (LOGV) logUidStatus(uid, "allowed on unmetered network");
                return false;
            }
            if (hasRule(uidRules, RULE_REJECT_METERED)) {
                if (LOGV) logUidStatus(uid, "blacklisted on metered network");
                return true;
            }
            if (hasRule(uidRules, RULE_ALLOW_METERED)) {
                if (LOGV) logUidStatus(uid, "whitelisted on metered network");
                return false;
            }
            if (hasRule(uidRules, RULE_TEMPORARY_ALLOW_METERED)) {
                if (LOGV) logUidStatus(uid, "temporary whitelisted on metered network");
                return false;
            }
            if (isBackgroundRestricted) {
                if (LOGV) logUidStatus(uid, "blocked when background is restricted");
                return true;
            }
            if (LOGV) logUidStatus(uid, "allowed by default");
            return false;
            return isUidNetworkingBlockedInternal(uid, isNetworkMetered);
        }
    }

Loading