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
This commit is contained in:
Kazuhiro Ondo
2011-06-03 19:13:35 -05:00
committed by Wink Saville
parent a558fdf156
commit 2e994586ed
2 changed files with 5 additions and 22 deletions

View File

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

View File

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