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

Commit eb145df9 authored by Jack Yu's avatar Jack Yu Committed by Sarah Chin
Browse files

Added issue detector for incorrect unmetered flag

The non-NR devices are not supposed to see TEMPORARILY_NOT_METERED
capability, which should only be set on 5G networks.

Bug: 176119724
Test: Manual
Change-Id: I8b1dc41ee93fdb597c84172d9f55cb188f3fd3e4
Merged-In: I8b1dc41ee93fdb597c84172d9f55cb188f3fd3e4
parent 983b27b5
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -50,6 +50,7 @@ import android.telephony.AccessNetworkConstants;
import android.telephony.AccessNetworkConstants.TransportType;
import android.telephony.Annotation.ApnType;
import android.telephony.Annotation.DataFailureCause;
import android.telephony.AnomalyReporter;
import android.telephony.Annotation.DataState;
import android.telephony.Annotation.NetworkType;
import android.telephony.CarrierConfigManager;
@@ -108,6 +109,7 @@ import java.util.Collection;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
@@ -1648,6 +1650,16 @@ public class DataConnection extends StateMachine {
        if ((mUnmeteredUseOnly && !mRestrictedNetworkOverride) || mUnmeteredOverride
                || (mSubscriptionOverride & SUBSCRIPTION_OVERRIDE_UNMETERED) != 0) {
            result.addCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED);
            if (result.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                    && (mPhone.getRadioAccessFamily() & TelephonyManager.NETWORK_TYPE_BITMASK_NR)
                    == 0) {
                String message = "Unexpected TEMPORARILY_NOT_METERED on devices not supporting NR.";
                loge(message);
                // Using fixed UUID to avoid duplicate bugreport notification
                AnomalyReporter.reportAnomaly(
                        UUID.fromString("9151f0fc-01df-4afb-b744-9c4529055248"),
                        message);
            }
        } else {
            result.removeCapability(NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED);
        }