diff options
author | Robert Greenwalt <robdroid@android.com> | 2009-09-30 16:07:39 -0700 |
---|---|---|
committer | Robert Greenwalt <robdroid@android.com> | 2009-09-30 16:36:12 -0700 |
commit | 984d22b180e68d6b9f8e2c81c4eb271deccfc94a (patch) | |
tree | 9a7c7b82175453649e567901bff4593eb63cd767 /telephony/java | |
parent | 48e9a0dd66b832cfaf668deba584394eba0ffdfc (diff) | |
download | frameworks_base-984d22b180e68d6b9f8e2c81c4eb271deccfc94a.zip frameworks_base-984d22b180e68d6b9f8e2c81c4eb271deccfc94a.tar.gz frameworks_base-984d22b180e68d6b9f8e2c81c4eb271deccfc94a.tar.bz2 |
Revert setDataEnabled to setting a master switch.
This is independent of whether or not the ConnectivityManager wanted any particular APN on
and allows us to track the two seperately - so when data is re-enabled we don't turn
things on that CM wants off.
bug: 2158290
Diffstat (limited to 'telephony/java')
4 files changed, 42 insertions, 13 deletions
diff --git a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java index 1f0e5a5..52c8b1f 100644 --- a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java @@ -100,6 +100,7 @@ public abstract class DataConnectionTracker extends Handler { public static final int EVENT_CLEAN_UP_CONNECTION = 34; protected static final int EVENT_CDMA_OTA_PROVISION = 35; protected static final int EVENT_RESTART_RADIO = 36; + protected static final int EVENT_SET_MASTER_DATA_ENABLE = 37; /***** Constants *****/ @@ -111,8 +112,11 @@ public abstract class DataConnectionTracker extends Handler { protected static final int APN_HIPRI_ID = 4; protected static final int APN_NUM_TYPES = 5; - protected static final int APN_DISABLED = 0; - protected static final int APN_ENABLED = 1; + protected static final int DISABLED = 0; + protected static final int ENABLED = 1; + + // responds to the setDataEnabled call - used independently from the APN requests + protected boolean mMasterDataEnabled = true; protected boolean[] dataEnabled = new boolean[APN_NUM_TYPES]; protected int enabledCount = 0; @@ -322,6 +326,11 @@ public abstract class DataConnectionTracker extends Handler { onCleanUpConnection(tearDown, (String)msg.obj); break; + case EVENT_SET_MASTER_DATA_ENABLE: + boolean enabled = (msg.arg1 == ENABLED) ? true : false; + onSetDataEnabled(enabled); + break; + default: Log.e("DATA", "Unidentified event = " + msg.what); break; @@ -486,7 +495,7 @@ public abstract class DataConnectionTracker extends Handler { Message msg = obtainMessage(EVENT_ENABLE_NEW_APN); msg.arg1 = id; - msg.arg2 = (enable ? APN_ENABLED : APN_DISABLED); + msg.arg2 = (enable ? ENABLED : DISABLED); sendMessage(msg); } @@ -497,7 +506,7 @@ public abstract class DataConnectionTracker extends Handler { ", enabledCount = " + enabledCount + ", isApnTypeActive = " + isApnTypeActive(apnIdToType(apnId))); } - if (enabled == APN_ENABLED) { + if (enabled == ENABLED) { if (!dataEnabled[apnId]) { dataEnabled[apnId] = true; enabledCount++; @@ -545,8 +554,24 @@ public abstract class DataConnectionTracker extends Handler { */ public boolean setDataEnabled(boolean enable) { if (DBG) Log.d(LOG_TAG, "setDataEnabled(" + enable + ")"); - setEnabled(APN_DEFAULT_ID, enable); + + Message msg = obtainMessage(EVENT_SET_MASTER_DATA_ENABLE); + msg.arg1 = (enable ? ENABLED : DISABLED); + sendMessage(msg); return true; } + protected void onSetDataEnabled(boolean enable) { + if (mMasterDataEnabled != enable) { + mMasterDataEnabled = enable; + if (enable) { + mRetryMgr.resetRetryCount(); + onTrySetupData(Phone.REASON_DATA_ENABLED); + } else { + onCleanUpConnection(true, Phone.REASON_DATA_DISABLED); + } + } + } + + } diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaCallTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaCallTracker.java index 9fe2038..1005d20 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaCallTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaCallTracker.java @@ -1039,8 +1039,8 @@ public final class CdmaCallTracker extends CallTracker { private void disableDataCallInEmergencyCall(String dialString) { if (PhoneNumberUtils.isEmergencyNumber(dialString)) { if (Phone.DEBUG_PHONE) log("disableDataCallInEmergencyCall"); - phone.disableDataConnectivity(); mIsInEmergencyCall = true; + phone.disableDataConnectivity(); } } @@ -1050,15 +1050,16 @@ public final class CdmaCallTracker extends CallTracker { */ private void checkAndEnableDataCallAfterEmergencyCallDropped() { if (mIsInEmergencyCall) { + mIsInEmergencyCall = false; String inEcm=SystemProperties.get(TelephonyProperties.PROPERTY_INECM_MODE, "false"); if (Phone.DEBUG_PHONE) { log("checkAndEnableDataCallAfterEmergencyCallDropped,inEcm=" + inEcm); } if (inEcm.compareTo("false") == 0) { // Re-initiate data connection + // TODO - can this be changed to phone.enableDataConnectivity(); phone.mDataConnection.setDataEnabled(true); } - mIsInEmergencyCall = false; } } diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java index d0a9337..c695dd7 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java @@ -302,7 +302,7 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { private boolean isDataAllowed() { boolean roaming = phone.getServiceState().getRoaming(); - return getAnyDataEnabled() && (!roaming || getDataOnRoamingEnabled()); + return getAnyDataEnabled() && (!roaming || getDataOnRoamingEnabled()) && mMasterDataEnabled; } private boolean trySetupData(String reason) { @@ -347,7 +347,8 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { " roaming=" + roaming + " dataOnRoamingEnable=" + getDataOnRoamingEnabled() + " desiredPowerState=" + desiredPowerState + - " PendingRestartRadio=" + mPendingRestartRadio); + " PendingRestartRadio=" + mPendingRestartRadio + + " MasterDataEnabled=" + mMasterDataEnabled); } return false; } diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java index 5bdf09f..ffd6dd3 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java @@ -391,7 +391,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { private boolean isDataAllowed() { boolean roaming = phone.getServiceState().getRoaming(); - return getAnyDataEnabled() && (!roaming || getDataOnRoamingEnabled()); + return getAnyDataEnabled() && (!roaming || getDataOnRoamingEnabled()) && + mMasterDataEnabled; } //****** Called from ServiceStateTracker @@ -475,7 +476,8 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { " roaming=" + phone.getServiceState().getRoaming() + " dataOnRoamingEnable=" + getDataOnRoamingEnabled() + " ps restricted=" + mIsPsRestricted + - " desiredPowerState=" + desiredPowerState); + " desiredPowerState=" + desiredPowerState + + " MasterDataEnabled=" + mMasterDataEnabled); return false; } } @@ -1039,7 +1041,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { if (!mRequestedApnType.equals(Phone.APN_TYPE_DEFAULT)) { // if no more retries on a secondary APN attempt, tell the world and revert. phone.notifyDataConnection(Phone.REASON_APN_FAILED); - onEnableApn(apnTypeToId(mRequestedApnType), APN_DISABLED); + onEnableApn(apnTypeToId(mRequestedApnType), DISABLED); return; } if (mReregisterOnReconnectFailure) { @@ -1203,7 +1205,7 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { notifyNoData(cause); if (!mRequestedApnType.equals(Phone.APN_TYPE_DEFAULT)) { phone.notifyDataConnection(Phone.REASON_APN_FAILED); - onEnableApn(apnTypeToId(mRequestedApnType), APN_DISABLED); + onEnableApn(apnTypeToId(mRequestedApnType), DISABLED); } return; } |