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

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

Merge "Refactored DataProfile and ApnSetting" am: eaa057ff am: 1836ae25 am: bf8e802c

Original change: https://android-review.googlesource.com/c/platform/frameworks/opt/telephony/+/1883588

Change-Id: Ifdc6c085cace024c6053d095dcaac1e426770d32
parents 996c66cd bf8e802c
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -707,6 +707,7 @@ public class RIL extends BaseCommands implements CommandsInterface {

    private void handleRadioProxyExceptionForRR(RILRequest rr, String caller, Exception e) {
        riljLoge(caller + ": " + e);
        e.printStackTrace();
        resetProxyAndRequestList();
    }

+7 −5
Original line number Diff line number Diff line
@@ -742,9 +742,9 @@ public class DataConnection extends StateMachine {
            return;
        }

        if (apn != null && apn.getMtu() != PhoneConstants.UNSET_MTU) {
            lp.setMtu(apn.getMtu());
            if (DBG) log("MTU set by APN to: " + apn.getMtu());
        if (apn != null && apn.getMtuV4() != PhoneConstants.UNSET_MTU) {
            lp.setMtu(apn.getMtuV4());
            if (DBG) log("MTU set by APN to: " + apn.getMtuV4());
            return;
        }

@@ -881,8 +881,10 @@ public class DataConnection extends StateMachine {
        Message msg = obtainMessage(EVENT_SETUP_DATA_CONNECTION_DONE, cp);
        msg.obj = cp;

        DataProfile dp = DcTracker.createDataProfile(mApnSetting, cp.mProfileId,
                cp.mIsPreferredApn);
        DataProfile dp = new DataProfile.Builder()
                .setApnSetting(mApnSetting)
                .setPreferred(cp.mIsPreferredApn)
                .build();

        // We need to use the actual modem roaming state instead of the framework roaming state
        // here. This flag is only passed down to ril_service for picking the correct protocol (for
+39 −64
Original line number Diff line number Diff line
@@ -2016,14 +2016,6 @@ public class DcTracker extends Handler {
        ArrayList<ApnSetting> dunCandidates = new ArrayList<ApnSetting>();
        ArrayList<ApnSetting> retDunSettings = new ArrayList<ApnSetting>();

        // Places to look for tether APN in order: TETHER_DUN_APN setting (to be deprecated soon),
        // APN database
        String apnData = Settings.Global.getString(mResolver, Settings.Global.TETHER_DUN_APN);
        if (!TextUtils.isEmpty(apnData)) {
            dunCandidates.addAll(ApnSetting.arrayFromString(apnData));
            if (VDBG) log("fetchDunApns: dunCandidates from Setting: " + dunCandidates);
        }

        if (dunCandidates.isEmpty()) {
            if (!ArrayUtils.isEmpty(mAllApnSettings)) {
                for (ApnSetting apn : mAllApnSettings) {
@@ -2321,8 +2313,10 @@ public class DcTracker extends Handler {
            if (DBG) log("setInitialAttachApn: X There in no available apn.");
        } else {
            if (DBG) log("setInitialAttachApn: X selected APN=" + apnSetting);
            mDataServiceManager.setInitialAttachApn(createDataProfile(apnSetting,
                    apnSetting.equals(getPreferredApn())),
            mDataServiceManager.setInitialAttachApn(new DataProfile.Builder()
                    .setApnSetting(apnSetting)
                    .setPreferred(apnSetting.equals(getPreferredApn()))
                    .build(),
                    mPhone.getServiceState().getDataRoamingFromRegistration(), null);
        }
    }
@@ -3493,7 +3487,10 @@ public class DcTracker extends Handler {
        for (ApnSetting apn : mAllApnSettings) {
            if (apn.getApnSetId() == Telephony.Carriers.MATCH_ALL_APN_SET_ID
                    || preferredApnSetId == apn.getApnSetId()) {
                DataProfile dp = createDataProfile(apn, apn.equals(getPreferredApn()));
                DataProfile dp = new DataProfile.Builder()
                        .setApnSetting(apn)
                        .setPreferred(apn.equals(getPreferredApn()))
                        .build();
                if (!dataProfileList.contains(dp)) {
                    dataProfileList.add(dp);
                }
@@ -3609,15 +3606,37 @@ public class DcTracker extends Handler {
        int networkTypeBitmask = (dest.getNetworkTypeBitmask() == 0
                || src.getNetworkTypeBitmask() == 0)
                ? 0 : (dest.getNetworkTypeBitmask() | src.getNetworkTypeBitmask());

        return ApnSetting.makeApnSetting(id, dest.getOperatorNumeric(), dest.getEntryName(),
            dest.getApnName(), proxy, port, mmsc, mmsProxy, mmsPort, dest.getUser(),
            dest.getPassword(), dest.getAuthType(), resultApnType, protocol, roamingProtocol,
            dest.isEnabled(), networkTypeBitmask, dest.getProfileId(),
            (dest.isPersistent() || src.isPersistent()), dest.getMaxConns(),
            dest.getWaitTime(), dest.getMaxConnsTime(), dest.getMtu(), dest.getMvnoType(),
            dest.getMvnoMatchData(), dest.getApnSetId(), dest.getCarrierId(),
            dest.getSkip464Xlat());
        return new ApnSetting.Builder()
                .setId(id)
                .setOperatorNumeric(dest.getOperatorNumeric())
                .setEntryName(dest.getEntryName())
                .setApnName(dest.getApnName())
                .setProxyAddress(proxy)
                .setProxyPort(port)
                .setMmsc(mmsc)
                .setMmsProxyAddress(mmsProxy)
                .setMmsProxyPort(mmsPort)
                .setUser(dest.getUser())
                .setPassword(dest.getPassword())
                .setAuthType(dest.getAuthType())
                .setApnTypeBitmask(resultApnType)
                .setProtocol(protocol)
                .setRoamingProtocol(roamingProtocol)
                .setCarrierEnabled(dest.isEnabled())
                .setNetworkTypeBitmask(networkTypeBitmask)
                .setProfileId(dest.getProfileId())
                .setModemCognitive(dest.isPersistent() || src.isPersistent())
                .setMaxConns(dest.getMaxConns())
                .setWaitTime(dest.getWaitTime())
                .setMaxConnsTime(dest.getMaxConnsTime())
                .setMtuV4(dest.getMtuV4())
                .setMtuV6(dest.getMtuV6())
                .setMvnoType(dest.getMvnoType())
                .setMvnoMatchData(dest.getMvnoMatchData())
                .setApnSetId(dest.getApnSetId())
                .setCarrierId(dest.getCarrierId())
                .setSkip464Xlat(dest.getSkip464Xlat())
                .build();
    }

    private DataConnection createDataConnection() {
@@ -5488,50 +5507,6 @@ public class DcTracker extends Handler {
        mWatchdog = false;
    }

    private static DataProfile createDataProfile(ApnSetting apn, boolean isPreferred) {
        return createDataProfile(apn, apn.getProfileId(), isPreferred);
    }

    @VisibleForTesting
    public static DataProfile createDataProfile(ApnSetting apn, int profileId,
                                                boolean isPreferred) {
        int profileType;

        int networkTypeBitmask = apn.getNetworkTypeBitmask();

        if (networkTypeBitmask == 0) {
            profileType = DataProfile.TYPE_COMMON;
        } else if ((networkTypeBitmask & TelephonyManager.NETWORK_STANDARDS_FAMILY_BITMASK_3GPP2)
                == networkTypeBitmask) {
            profileType = DataProfile.TYPE_3GPP2;
        } else if ((networkTypeBitmask & TelephonyManager.NETWORK_STANDARDS_FAMILY_BITMASK_3GPP)
                == networkTypeBitmask) {
            profileType = DataProfile.TYPE_3GPP;
        } else {
            profileType = DataProfile.TYPE_COMMON;
        }

        return new DataProfile.Builder()
                .setProfileId(profileId)
                .setApn(apn.getApnName())
                .setProtocolType(apn.getProtocol())
                .setAuthType(apn.getAuthType())
                .setUserName(apn.getUser() == null ? "" : apn.getUser())
                .setPassword(apn.getPassword() == null ? "" : apn.getPassword())
                .setType(profileType)
                .setMaxConnectionsTime(apn.getMaxConnsTime())
                .setMaxConnections(apn.getMaxConns())
                .setWaitTime(apn.getWaitTime())
                .enable(apn.isEnabled())
                .setSupportedApnTypesBitmask(apn.getApnTypeBitmask())
                .setRoamingProtocolType(apn.getRoamingProtocol())
                .setBearerBitmask(networkTypeBitmask)
                .setMtu(apn.getMtu())
                .setPersistent(apn.isPersistent())
                .setPreferred(isPreferred)
                .build();
    }

    private void onDataServiceBindingChanged(boolean bound) {
        if (!bound) {
            if (mTransportType == AccessNetworkConstants.TRANSPORT_TYPE_WLAN) {
+38 −32
Original line number Diff line number Diff line
@@ -167,8 +167,6 @@ import android.testing.TestableLooper;

import androidx.test.filters.FlakyTest;

import com.android.internal.telephony.dataconnection.DcTracker;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -272,14 +270,14 @@ public class RILTest extends TelephonyTest {
    private static final int AUTH_TYPE = 0;
    private static final String USER_NAME = "username";
    private static final String PASSWORD = "password";
    private static final int TYPE = 0;
    private static final int MAX_CONNS_TIME = 1;
    private static final int MAX_CONNS = 3;
    private static final int WAIT_TIME = 10;
    private static final int TYPE = DataProfile.TYPE_3GPP;
    private static final boolean APN_ENABLED = true;
    private static final int SUPPORTED_APN_TYPES_BITMASK = 123456;
    private static final int SUPPORTED_APN_TYPES_BITMASK = ApnSetting.TYPE_CBS
            | ApnSetting.TYPE_IMS;
    private static final int SUPPORTED_NETWORK_TYPES_BITMASK =
            (int) (TelephonyManager.NETWORK_TYPE_BITMASK_UMTS
                    | TelephonyManager.NETWORK_TYPE_BITMASK_LTE);
    private static final int ROAMING_PROTOCOL = ApnSetting.PROTOCOL_IPV6;
    private static final int BEARER_BITMASK = 123123;
    private static final int MTU = 1234;
    private static final boolean PERSISTENT = true;

@@ -1024,12 +1022,21 @@ public class RILTest extends TelephonyTest {
    @FlakyTest
    @Test
    public void testSetInitialAttachApn() throws Exception {
        ApnSetting apnSetting = ApnSetting.makeApnSetting(
                -1, "22210", "Vodafone IT", "web.omnitel.it", null, -1,
                null, null, -1, "", "", 0, ApnSetting.TYPE_DUN, ApnSetting.PROTOCOL_IP,
                ApnSetting.PROTOCOL_IP, true, 0, 0, false, 0, 0, 0, 0, -1, "");
        DataProfile dataProfile = DcTracker.createDataProfile(
                apnSetting, apnSetting.getProfileId(), false);
        ApnSetting apnSetting = new ApnSetting.Builder()
                .setId(-1)
                .setOperatorNumeric("22210")
                .setEntryName("Vodafone IT")
                .setApnName("web.omnitel.it")
                .setApnTypeBitmask(ApnSetting.TYPE_DUN)
                .setProtocol(ApnSetting.PROTOCOL_IP)
                .setRoamingProtocol(ApnSetting.PROTOCOL_IP)
                .setCarrierEnabled(true)
                .build();

        DataProfile dataProfile = new DataProfile.Builder()
                .setApnSetting(apnSetting)
                .setPreferred(false)
                .build();
        boolean isRoaming = false;

        mRILUnderTest.setInitialAttachApn(dataProfile, isRoaming, obtainMessage());
@@ -2588,23 +2595,25 @@ public class RILTest extends TelephonyTest {

    @Test
    public void testSetupDataCall() throws Exception {
        DataProfile dp = new DataProfile.Builder()
        ApnSetting apn = new ApnSetting.Builder()
                .setId(1234)
                .setEntryName(APN)
                .setApnName(APN)
                .setApnTypeBitmask(SUPPORTED_APN_TYPES_BITMASK)
                .setProtocol(ApnSetting.PROTOCOL_IPV6)
                .setRoamingProtocol(ApnSetting.PROTOCOL_IPV6)
                .setCarrierEnabled(true)
                .setProfileId(PROFILE_ID)
                .setApn(APN)
                .setProtocolType(PROTOCOL)
                .setAuthType(AUTH_TYPE)
                .setUserName(USER_NAME)
                .setUser(USER_NAME)
                .setPassword(PASSWORD)
                .setType(TYPE)
                .setMaxConnectionsTime(MAX_CONNS_TIME)
                .setMaxConnections(MAX_CONNS)
                .setWaitTime(WAIT_TIME)
                .enable(APN_ENABLED)
                .setSupportedApnTypesBitmask(SUPPORTED_APN_TYPES_BITMASK)
                .setRoamingProtocolType(ROAMING_PROTOCOL)
                .setBearerBitmask(BEARER_BITMASK)
                .setMtu(MTU)
                .setPersistent(PERSISTENT)
                .setNetworkTypeBitmask(SUPPORTED_NETWORK_TYPES_BITMASK)
                .setMtuV4(MTU)
                .setModemCognitive(true)
                .build();

        DataProfile dp = new DataProfile.Builder()
                .setApnSetting(apn)
                .setPreferred(false)
                .build();

@@ -2625,14 +2634,11 @@ public class RILTest extends TelephonyTest {
        assertEquals(USER_NAME, dpi.user);
        assertEquals(PASSWORD, dpi.password);
        assertEquals(TYPE, dpi.type);
        assertEquals(MAX_CONNS_TIME, dpi.maxConnsTime);
        assertEquals(MAX_CONNS, dpi.maxConns);
        assertEquals(WAIT_TIME, dpi.waitTime);
        assertEquals(APN_ENABLED, dpi.enabled);
        assertEquals(SUPPORTED_APN_TYPES_BITMASK, dpi.supportedApnTypesBitmap);
        assertEquals(ROAMING_PROTOCOL, ApnSetting.getProtocolIntFromString(dpi.protocol));
        assertEquals(
                BEARER_BITMASK,
                SUPPORTED_NETWORK_TYPES_BITMASK,
                ServiceState.convertBearerBitmaskToNetworkTypeBitmask(dpi.bearerBitmap >> 1));
        assertEquals(MTU, dpi.mtu);
    }
+10 −26
Original line number Diff line number Diff line
@@ -198,32 +198,16 @@ public class ApnContextTest extends TelephonyTest {
    public void testProvisionApn() throws Exception {
        mContextFixture.putResource(R.string.mobile_provisioning_apn, "fake_apn");

        ApnSetting myApn = ApnSetting.makeApnSetting(
                2163,                   // id
                "44010",                // numeric
                "sp-mode",              // name
                "fake_apn",             // apn
                null,                     // proxy
                -1,                     // port
                null,                     // mmsc
                null,                     // mmsproxy
                -1,                     // mmsport
                "",                     // user
                "",                     // password
                -1,                     // authtype
                ApnSetting.TYPE_DEFAULT | ApnSetting.TYPE_SUPL,     // types
                ApnSetting.PROTOCOL_IP,                   // protocol
                ApnSetting.PROTOCOL_IP,                   // roaming_protocol
                true,                   // carrier_enabled
                0,                      // networktype_bismask
                0,                      // profile_id
                false,                  // modem_cognitive
                0,                      // max_conns
                0,                      // wait_time
                0,                      // max_conns_time
                0,                      // mtu
                -1,                     // mvno_type
                "");                    // mnvo_match_data
        ApnSetting myApn = new ApnSetting.Builder()
                .setId(2163)
                .setOperatorNumeric("44010")
                .setEntryName("sp-mode")
                .setApnName("fake_apn")
                .setApnTypeBitmask(ApnSetting.TYPE_DEFAULT | ApnSetting.TYPE_SUPL)
                .setProtocol(ApnSetting.PROTOCOL_IP)
                .setRoamingProtocol(ApnSetting.PROTOCOL_IP)
                .setCarrierEnabled(true)
                .build();

        mApnContext.setApnSetting(myApn);
        assertTrue(mApnContext.isProvisioningApn());
Loading