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

Commit 1891ff6b authored by Jack Yu's avatar Jack Yu Committed by Android (Google) Code Review
Browse files

Merge "Added unsupported network capabilities" into main

parents c87c6f7a f6ae9889
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -1271,6 +1271,20 @@ public class DataConfigManager extends Handler {
        }
    }

    /**
     * @return The unsupported network capabilities. The unsupported capabilities will be removed
     * from the default network capabilities that {@link TelephonyNetworkProvider} use to inform
     * connectivity service what network capabilities are supported by telephony.
     */
    @NonNull
    @NetCapability
    public Set<Integer> getUnsupportedNetworkCapabilities() {
        return Arrays.stream(mResources.getStringArray(com.android.internal.R.array
                        .config_unsupported_network_capabilities))
                .map(DataUtils::getNetworkCapabilityFromString)
                .collect(Collectors.toSet());
    }

    /** Update handover rules from carrier config. */
    private void updateHandoverRules() {
        synchronized (this) {
+3 −1
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.telephony.SubscriptionManager;
import android.util.ArrayMap;
import android.util.LocalLog;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneFactory;
import com.android.internal.telephony.data.PhoneSwitcher.PhoneSwitcherCallback;
@@ -233,8 +234,9 @@ public class TelephonyNetworkProvider extends NetworkProvider implements Network
    /**
     * @return The maximal network capabilities that telephony can support.
     */
    @VisibleForTesting
    @NonNull
    private NetworkCapabilities makeNetworkFilter() {
    public NetworkCapabilities makeNetworkFilter() {
        final NetworkCapabilities.Builder builder = new NetworkCapabilities.Builder()
                .addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
                .addCapability(NetworkCapabilities.NET_CAPABILITY_IA)
+7 −1
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.telephony.data.TrafficDescriptor;
import android.telephony.data.TrafficDescriptor.OsAppId;

import com.android.internal.telephony.Phone;
import com.android.internal.telephony.PhoneFactory;
import com.android.internal.telephony.flags.FeatureFlags;

import java.lang.annotation.Retention;
@@ -41,6 +42,7 @@ import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;

/**
@@ -437,7 +439,11 @@ public class TelephonyNetworkRequest {
    @NonNull
    @NetCapability
    public static List<Integer> getAllSupportedNetworkCapabilities() {
        return CAPABILITY_ATTRIBUTE_MAP.keySet().stream().toList();
        Set<Integer> unsupportedCaps = PhoneFactory.getDefaultPhone()
                .getDataNetworkController().getDataConfigManager()
                .getUnsupportedNetworkCapabilities();
        return CAPABILITY_ATTRIBUTE_MAP.keySet().stream()
                .filter(cap -> !unsupportedCaps.contains(cap)).toList();
    }

    /**
+21 −0
Original line number Diff line number Diff line
@@ -391,4 +391,25 @@ public class TelephonyNetworkProviderTest extends TelephonyTest {
        verifyRequestReleasedOnPhone(1, request);
        verifyRequestSentOnPhone(0, request);
    }

    @Test
    public void testMakeNetworkFilter() {
        doReturn(Set.of(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH,
                NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY,
                NetworkCapabilities.NET_CAPABILITY_VSIM, NetworkCapabilities.NET_CAPABILITY_MMS,
                NetworkCapabilities.NET_CAPABILITY_XCAP)).when(mDataConfigManager)
                .getUnsupportedNetworkCapabilities();

        NetworkCapabilities caps = mTelephonyNetworkProvider.makeNetworkFilter();
        assertThat(caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)).isTrue();
        assertThat(caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_FOTA)).isTrue();
        assertThat(caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_IA)).isTrue();
        assertThat(caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH))
                .isFalse();
        assertThat(caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY))
                .isFalse();
        assertThat(caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_VSIM)).isFalse();
        assertThat(caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_MMS)).isFalse();
        assertThat(caps.hasCapability(NetworkCapabilities.NET_CAPABILITY_XCAP)).isFalse();
    }
}
+24 −0
Original line number Diff line number Diff line
@@ -35,6 +35,9 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.util.List;
import java.util.Set;

public class TelephonyNetworkRequestTest extends TelephonyTest {

    private static final ApnSetting INTERNET_APN_SETTING = new ApnSetting.Builder()
@@ -487,4 +490,25 @@ public class TelephonyNetworkRequestTest extends TelephonyTest {
        assertThat(cellularRequest.canBeSatisfiedBy(cellularInternetDataProfile)).isTrue();
        assertThat(generalRequest.canBeSatisfiedBy(cellularInternetDataProfile)).isTrue();
    }

    @Test
    public void testGetAllSupportedNetworkCapabilities() {
        doReturn(Set.of(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH,
                NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY,
                NetworkCapabilities.NET_CAPABILITY_VSIM, NetworkCapabilities.NET_CAPABILITY_MMS,
                NetworkCapabilities.NET_CAPABILITY_XCAP)).when(mDataConfigManager)
                .getUnsupportedNetworkCapabilities();

        List<Integer> caps = TelephonyNetworkRequest.getAllSupportedNetworkCapabilities();
        assertThat(caps).contains(NetworkCapabilities.NET_CAPABILITY_INTERNET);
        assertThat(caps).contains(NetworkCapabilities.NET_CAPABILITY_FOTA);
        assertThat(caps).contains(NetworkCapabilities.NET_CAPABILITY_SUPL);
        assertThat(caps).contains(NetworkCapabilities.NET_CAPABILITY_CBS);
        assertThat(caps).contains(NetworkCapabilities.NET_CAPABILITY_RCS);
        assertThat(caps).doesNotContain(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_BANDWIDTH);
        assertThat(caps).doesNotContain(NetworkCapabilities.NET_CAPABILITY_PRIORITIZE_LATENCY);
        assertThat(caps).doesNotContain(NetworkCapabilities.NET_CAPABILITY_VSIM);
        assertThat(caps).doesNotContain(NetworkCapabilities.NET_CAPABILITY_MMS);
        assertThat(caps).doesNotContain(NetworkCapabilities.NET_CAPABILITY_XCAP);
    }
}