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

Commit d986c609 authored by Wink Saville's avatar Wink Saville
Browse files

Remove isAnyActiveDataConnection and promote isDisconnected.

As Yoonsung Nam pointed out in the bug using isDisconnected
is more precise here and this was the only place
isAnyActiveDataConnection was used. So I've removed it
and promoted isDisconnected to DataConnectionTracker.

It should also be noted that although the Framework should
be as graceful as possible, it is still a requirement that
the radio must be turned off/on anytime the Framework
issues the appropriate command.

Bug: 5306201
Change-Id: I95130451e11c51e43406b57eb538d01f8dde61be
parent 31f971b5
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -1019,7 +1019,7 @@ public abstract class DataConnectionTracker extends Handler {
        sendMessage(msg);
    }

    public abstract boolean isAnyActiveDataConnections();
    public abstract boolean isDisconnected();

    protected void onSetUserDataEnabled(boolean enabled) {
        synchronized (mDataEnabledLock) {
+8 −5
Original line number Diff line number Diff line
@@ -403,7 +403,14 @@ public abstract class ServiceStateTracker extends Handler {
    public void powerOffRadioSafely(DataConnectionTracker dcTracker) {
        synchronized (this) {
            if (!mPendingRadioPowerOffAfterDataOff) {
                if (dcTracker.isAnyActiveDataConnections()) {
                // To minimize race conditions we call cleanUpAllConnections on
                // both if else paths instead of before this isDisconnected test.
                if (dcTracker.isDisconnected()) {
                    // To minimize race conditions we do this after isDisconnected
                    dcTracker.cleanUpAllConnections(Phone.REASON_RADIO_TURNED_OFF);
                    if (DBG) log("Data disconnected, turn off radio right away.");
                    hangupAndPowerOff();
                } else {
                    dcTracker.cleanUpAllConnections(Phone.REASON_RADIO_TURNED_OFF);
                    Message msg = Message.obtain(this);
                    msg.what = EVENT_SET_RADIO_POWER_OFF;
@@ -415,10 +422,6 @@ public abstract class ServiceStateTracker extends Handler {
                        log("Cannot send delayed Msg, turn off radio right away.");
                        hangupAndPowerOff();
                    }
                } else {
                    dcTracker.cleanUpAllConnections(Phone.REASON_RADIO_TURNED_OFF);
                    if (DBG) log("Data disconnected, turn off radio right away.");
                    hangupAndPowerOff();
                }
            }
        }
+2 −2
Original line number Diff line number Diff line
@@ -946,8 +946,8 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker {
    }

    @Override
    public boolean isAnyActiveDataConnections() {
        return (mState != State.IDLE);
    public boolean isDisconnected() {
        return ((mState == State.IDLE) || (mState == State.FAILED));
    }

    @Override
+2 −6
Original line number Diff line number Diff line
@@ -1961,7 +1961,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
        return false;
    }

    protected boolean isDisconnected() {
    @Override
    public boolean isDisconnected() {
        for (ApnContext apnContext : mApnContexts.values()) {
            if (!apnContext.isDisconnected()) {
                // At least one context was not disconnected return false
@@ -2347,11 +2348,6 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker {
        return cid;
    }

    @Override
    public boolean isAnyActiveDataConnections() {
        return isConnected();
    }

    @Override
    protected void log(String s) {
        Log.d(LOG_TAG, "[GsmDCT] "+ s);