diff options
| author | 2011-09-19 15:07:42 -0700 | |
|---|---|---|
| committer | 2011-09-19 15:07:42 -0700 | |
| commit | c69396973b8a496e298a7076842b0e34d193651e (patch) | |
| tree | 88fdf3565aa5950e2a127429eb3258a8f7d28bfd | |
| parent | f946c282c2fbe851d6157ed34bbacabdff8f76ba (diff) | |
| parent | d986c609074cda0737a6f06f10700e42fb1704e7 (diff) | |
Merge "Remove isAnyActiveDataConnection and promote isDisconnected." into ics-factoryrom
4 files changed, 13 insertions, 14 deletions
diff --git a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java index 42ea4f2984ec..ae152fb62da9 100644 --- a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java @@ -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) { diff --git a/telephony/java/com/android/internal/telephony/ServiceStateTracker.java b/telephony/java/com/android/internal/telephony/ServiceStateTracker.java index 01b807d62f15..1b3ee1ed0c90 100644 --- a/telephony/java/com/android/internal/telephony/ServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/ServiceStateTracker.java @@ -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(); } } } diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java index 078e51def07b..4dace82a371f 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java @@ -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 diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java index dd8a60ac4ffa..ebf5e65a3d9d 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java @@ -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 @@ -2348,11 +2349,6 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { } @Override - public boolean isAnyActiveDataConnections() { - return isConnected(); - } - - @Override protected void log(String s) { Log.d(LOG_TAG, "[GsmDCT] "+ s); } |