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

Commit 2e994586 authored by Kazuhiro Ondo's avatar Kazuhiro Ondo Committed by Wink Saville
Browse files

Report data status from ApnContext even if data is detached

While in HO, data connection type may temporary become "unknown".
This triggers TelephonyRegistry picks up the wrong data connection
state, ending up notifying bogus state to ConnectivityService.

The patch is just to pick up the status from ApnContext which
should be maintaining the right state. Also cleaned up unnecessary
lines which was added earlier phase.

Change-Id: I07e74ce55f09ad31f2d8d09e2a144dc0b600eb0c
parent a558fdf1
Loading
Loading
Loading
Loading
+2 −22
Original line number Diff line number Diff line
@@ -65,32 +65,12 @@ public class CDMALTEPhone extends CDMAPhone {

    @Override
    public DataState getDataConnectionState(String apnType) {
        // TODO: Remove instanceof if possible.
        boolean isCdmaDataConnectionTracker = false;
        if (mDataConnectionTracker instanceof CdmaDataConnectionTracker) {
            log("getDataConnectionState isCdmaDataConnectionTracker");
            isCdmaDataConnectionTracker = true;
        } else {
            log("getDataConnectionState NOT CdmaDataConnectionTracker");
        }
        DataState ret = DataState.DISCONNECTED;

        if (!isCdmaDataConnectionTracker && (SystemProperties.get("adb.connected", "").length()
                > 0)) {
            // We're connected to an ADB host and we have USB networking
            // turned on. No matter what the radio state is,
            // we report data connected

            ret = DataState.CONNECTED;
        } else if (mSST == null) {
        if (mSST == null) {
            // Radio Technology Change is ongoning, dispose() and
            // removeReferences() have
            // already been called
            // removeReferences() have already been called

            ret = DataState.DISCONNECTED;
        } else if (mSST.getCurrentDataConnectionState() != ServiceState.STATE_IN_SERVICE) {
            // If we're out of service, open TCP sockets may still work
            // but no data will flow
            ret = DataState.DISCONNECTED;
        } else if (mDataConnectionTracker.isApnTypeEnabled(apnType) == false) {
            ret = DataState.DISCONNECTED;
+3 −0
Original line number Diff line number Diff line
@@ -301,6 +301,9 @@ public class GSMPhone extends PhoneBase {
            ret = DataState.DISCONNECTED;
        } else if (mDataConnectionTracker.isApnTypeEnabled(apnType) == false ||
                mDataConnectionTracker.isApnTypeActive(apnType) == false) {
            //TODO: isApnTypeActive() is just checking whether ApnContext holds
            //      Dataconnection or not. Checking each ApnState below should
            //      provide the same state. Calling isApnTypeActive() can be removed.
            ret = DataState.DISCONNECTED;
        } else { /* mSST.gprsState == ServiceState.STATE_IN_SERVICE */
            switch (mDataConnectionTracker.getState(apnType)) {