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
This commit is contained in:
Wink Saville
2011-09-19 14:35:30 -07:00
parent 31f971b57f
commit d986c60907
4 changed files with 13 additions and 14 deletions

View File

@@ -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) {

View File

@@ -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();
}
}
}

View File

@@ -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

View File

@@ -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);