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

Commit c46c255f authored by Robert Greenwalt's avatar Robert Greenwalt
Browse files

Fix the reporting of ActiveApnTypes on CDMA

Previous fix limiting what was reported active was too strict, leading to
DISCONNECTED messages not being accepted (apn list was empty).

bug: 2151520
parent bd5b5722
Loading
Loading
Loading
Loading
+15 −5
Original line number Diff line number Diff line
@@ -76,6 +76,9 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
    /** Currently active CdmaDataConnection */
    private CdmaDataConnection mActiveDataConnection;

    /** mimic of GSM's mActiveApn */
    private boolean mIsApnActive = false;

    private boolean mPendingRestartRadio = false;
    private static final int TIME_DELAYED_TO_RESTART_RADIO =
            SystemProperties.getInt("ro.cdma.timetoradiorestart", 20000);
@@ -245,8 +248,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {

    @Override
    protected boolean isApnTypeActive(String type) {
        return (isApnTypeAvailable(type) &&
                (state != State.IDLE));
        return (mIsApnActive && isApnTypeAvailable(type));
    }

    @Override
@@ -260,10 +262,15 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
    }

    protected String[] getActiveApnTypes() {
        if (state != State.IDLE) {
            return mSupportedApnTypes.clone();
        String[] result;
        if (mIsApnActive) {
            result = mSupportedApnTypes.clone();
        } else {
            // TODO - should this return an empty array?  See GSM too.
            result = new String[1];
            result[0] = Phone.APN_TYPE_DEFAULT;
        }
        return new String[0];
        return result;
    }

    protected String getActiveApnString() {
@@ -386,6 +393,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
        if (!tearDown) {
            setState(State.IDLE);
            phone.notifyDataConnection(reason);
            mIsApnActive = false;
        }
    }

@@ -409,6 +417,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
        }

        mActiveDataConnection = conn;
        mIsApnActive = true;

        Message msg = obtainMessage();
        msg.what = EVENT_DATA_SETUP_COMPLETE;
@@ -742,6 +751,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
        }

        phone.notifyDataConnection(reason);
        mIsApnActive = false;
        if (retryAfterDisconnected(reason)) {
          trySetupData(reason);
      }
+12 −8
Original line number Diff line number Diff line
@@ -596,32 +596,36 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
    }

    protected String getInterfaceName(String apnType) {
        if (mActivePdp != null
                && (apnType == null || mActiveApn.canHandleType(apnType))) {
        if (mActivePdp != null &&
                (apnType == null ||
                (mActiveApn != null && mActiveApn.canHandleType(apnType)))) {
            return mActivePdp.getInterface();
        }
        return null;
    }

    protected String getIpAddress(String apnType) {
        if (mActivePdp != null
                && (apnType == null || mActiveApn.canHandleType(apnType))) {
        if (mActivePdp != null &&
                (apnType == null ||
                (mActiveApn != null && mActiveApn.canHandleType(apnType)))) {
            return mActivePdp.getIpAddress();
        }
        return null;
    }

    public String getGateway(String apnType) {
        if (mActivePdp != null
                && (apnType == null || mActiveApn.canHandleType(apnType))) {
        if (mActivePdp != null &&
                (apnType == null ||
                (mActiveApn != null && mActiveApn.canHandleType(apnType)))) {
            return mActivePdp.getGatewayAddress();
        }
        return null;
    }

    protected String[] getDnsServers(String apnType) {
        if (mActivePdp != null
                && (apnType == null || mActiveApn.canHandleType(apnType))) {
        if (mActivePdp != null &&
                (apnType == null ||
                (mActiveApn != null && mActiveApn.canHandleType(apnType)))) {
            return mActivePdp.getDnsServers();
        }
        return null;