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:
committed by
Wink Saville
parent
a558fdf156
commit
2e994586ed
@@ -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;
|
||||
|
||||
@@ -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)) {
|
||||
|
||||
Reference in New Issue
Block a user