diff options
8 files changed, 27 insertions, 18 deletions
diff --git a/services/java/com/android/server/TelephonyRegistry.java b/services/java/com/android/server/TelephonyRegistry.java index a7a0c682d93a..689b1c6e7bbd 100644 --- a/services/java/com/android/server/TelephonyRegistry.java +++ b/services/java/com/android/server/TelephonyRegistry.java @@ -85,7 +85,7 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub { private int mDataActivity = TelephonyManager.DATA_ACTIVITY_NONE; - private int mDataConnectionState = TelephonyManager.DATA_CONNECTED; + private int mDataConnectionState = TelephonyManager.DATA_UNKNOWN; private boolean mDataConnectionPossible = false; @@ -401,13 +401,14 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub { } } } else { - mConnectedApns.remove(apnType); - if (mConnectedApns.isEmpty()) { - mDataConnectionState = state; - modified = true; - } else { - // leave mDataConnectionState as is and - // send out the new status for the APN in question. + if (mConnectedApns.remove(apnType)) { + if (mConnectedApns.isEmpty()) { + mDataConnectionState = state; + modified = true; + } else { + // leave mDataConnectionState as is and + // send out the new status for the APN in question. + } } } mDataConnectionPossible = isDataConnectivityPossible; @@ -416,9 +417,11 @@ class TelephonyRegistry extends ITelephonyRegistry.Stub { mDataConnectionLinkCapabilities = linkCapabilities; if (mDataConnectionNetworkType != networkType) { mDataConnectionNetworkType = networkType; + // need to tell registered listeners about the new network type modified = true; } if (modified) { + Slog.d(TAG, "onDataConnectionStateChanged(" + state + ", " + networkType + ")"); for (Record r : mRecords) { if ((r.events & PhoneStateListener.LISTEN_DATA_CONNECTION_STATE) != 0) { try { diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index 1cd3679d0368..9ef41f2ca1eb 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -802,6 +802,10 @@ public class TelephonyManager { } } + /** Data connection state: Unknown. Used before we know the state. + * @hide + */ + public static final int DATA_UNKNOWN = -1; /** Data connection state: Disconnected. IP traffic not available. */ public static final int DATA_DISCONNECTED = 0; /** Data connection state: Currently setting up a data connection. */ diff --git a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java index f8812ec43549..2a21f6d93399 100644 --- a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java @@ -659,6 +659,9 @@ public abstract class DataConnectionTracker extends Handler { protected abstract boolean isDataAllowed(); public boolean isApnTypeEnabled(String apnType) { + if (apnType == null) { + apnType = getActiveApnString(); + } return isApnIdEnabled(apnTypeToId(apnType)); } diff --git a/telephony/java/com/android/internal/telephony/DefaultPhoneNotifier.java b/telephony/java/com/android/internal/telephony/DefaultPhoneNotifier.java index 14808b6e37aa..52cbd7c4851b 100644 --- a/telephony/java/com/android/internal/telephony/DefaultPhoneNotifier.java +++ b/telephony/java/com/android/internal/telephony/DefaultPhoneNotifier.java @@ -94,10 +94,6 @@ public class DefaultPhoneNotifier implements PhoneNotifier { } } - public void notifyDataConnection(Phone sender, String reason, String apnType) { - doNotifyDataConnection(sender, reason, apnType, sender.getDataConnectionState(apnType)); - } - public void notifyDataConnection(Phone sender, String reason, String apnType, Phone.DataState state) { doNotifyDataConnection(sender, reason, apnType, state); diff --git a/telephony/java/com/android/internal/telephony/PhoneBase.java b/telephony/java/com/android/internal/telephony/PhoneBase.java index dddb493ab71e..83080ee9fcfd 100644 --- a/telephony/java/com/android/internal/telephony/PhoneBase.java +++ b/telephony/java/com/android/internal/telephony/PhoneBase.java @@ -742,7 +742,12 @@ public abstract class PhoneBase extends Handler implements Phone { } public void notifyDataConnection(String reason, String apnType) { - mNotifier.notifyDataConnection(this, reason, apnType); + mNotifier.notifyDataConnection(this, reason, apnType, getDataConnectionState(apnType)); + } + + public void notifyDataConnection() { + String apn = getActiveApn(); + mNotifier.notifyDataConnection(this, null, apn, getDataConnectionState(apn)); } public void notifyOtaspChanged(int otaspMode) { diff --git a/telephony/java/com/android/internal/telephony/PhoneNotifier.java b/telephony/java/com/android/internal/telephony/PhoneNotifier.java index b1cf953e5067..28a8d22bec0b 100644 --- a/telephony/java/com/android/internal/telephony/PhoneNotifier.java +++ b/telephony/java/com/android/internal/telephony/PhoneNotifier.java @@ -33,8 +33,7 @@ public interface PhoneNotifier { public void notifyCallForwardingChanged(Phone sender); - public void notifyDataConnection(Phone sender, String reason, String apnType); - + /** TODO - reason should never be null */ public void notifyDataConnection(Phone sender, String reason, String apnType, Phone.DataState state); diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java index 11e04d4d2525..c006fcf6da72 100755 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaServiceStateTracker.java @@ -1159,7 +1159,7 @@ final class CdmaServiceStateTracker extends ServiceStateTracker { } if (hasCdmaDataConnectionChanged || hasNetworkTypeChanged) { - phone.notifyDataConnection(null, null); + phone.notifyDataConnection(); } if (hasRoamingOn) { diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java index bc41b01bdc77..2cbd63cfbbb6 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmServiceStateTracker.java @@ -1033,8 +1033,7 @@ final class GsmServiceStateTracker extends ServiceStateTracker { } if (hasNetworkTypeChanged) { - // TODO - do we really want this? - phone.notifyDataConnection(null, null); + phone.notifyDataConnection(); } if (hasRoamingOn) { |