diff options
author | Robert Greenwalt <rgreenwalt@google.com> | 2011-09-02 15:19:31 -0700 |
---|---|---|
committer | Robert Greenwalt <rgreenwalt@google.com> | 2011-09-08 12:01:59 -0700 |
commit | a6d4248e21bd62a51ac4aaadaa67fdb55b666d98 (patch) | |
tree | 48b0d760dc2294efd7fc45b48967dc089c0fb726 /telephony/java | |
parent | d6ede109841f95dc6b1a6d463ae1aab63ab47ac7 (diff) | |
download | frameworks_base-a6d4248e21bd62a51ac4aaadaa67fdb55b666d98.zip frameworks_base-a6d4248e21bd62a51ac4aaadaa67fdb55b666d98.tar.gz frameworks_base-a6d4248e21bd62a51ac4aaadaa67fdb55b666d98.tar.bz2 |
Pass roaming info to ConnectivityService.
bug:5215657
Change-Id: I77024141a7bbaa47eae021009e16b283699be53e
Diffstat (limited to 'telephony/java')
5 files changed, 25 insertions, 9 deletions
diff --git a/telephony/java/com/android/internal/telephony/DefaultPhoneNotifier.java b/telephony/java/com/android/internal/telephony/DefaultPhoneNotifier.java index aa7568b..f769157 100644 --- a/telephony/java/com/android/internal/telephony/DefaultPhoneNotifier.java +++ b/telephony/java/com/android/internal/telephony/DefaultPhoneNotifier.java @@ -113,10 +113,15 @@ public class DefaultPhoneNotifier implements PhoneNotifier { TelephonyManager telephony = TelephonyManager.getDefault(); LinkProperties linkProperties = null; LinkCapabilities linkCapabilities = null; + boolean roaming = false; + if (state == Phone.DataState.CONNECTED) { linkProperties = sender.getLinkProperties(apnType); linkCapabilities = sender.getLinkCapabilities(apnType); } + ServiceState ss = sender.getServiceState(); + if (ss != null) roaming = ss.getRoaming(); + try { mRegistry.notifyDataConnection( convertDataState(state), @@ -126,7 +131,8 @@ public class DefaultPhoneNotifier implements PhoneNotifier { linkProperties, linkCapabilities, ((telephony!=null) ? telephony.getNetworkType() : - TelephonyManager.NETWORK_TYPE_UNKNOWN)); + TelephonyManager.NETWORK_TYPE_UNKNOWN), + roaming); } catch (RemoteException ex) { // system process is dead } diff --git a/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl b/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl index 3c83e50..1f19282 100644 --- a/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl +++ b/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl @@ -35,7 +35,7 @@ interface ITelephonyRegistry { void notifyDataActivity(int state); void notifyDataConnection(int state, boolean isDataConnectivityPossible, String reason, String apn, String apnType, in LinkProperties linkProperties, - in LinkCapabilities linkCapabilities, int networkType); + in LinkCapabilities linkCapabilities, int networkType, boolean roaming); void notifyDataConnectionFailed(String reason, String apnType); void notifyCellLocation(in Bundle cellLocation); void notifyOtaspChanged(in int otaspMode); diff --git a/telephony/java/com/android/internal/telephony/Phone.java b/telephony/java/com/android/internal/telephony/Phone.java index 6347f37..5e64148 100644 --- a/telephony/java/com/android/internal/telephony/Phone.java +++ b/telephony/java/com/android/internal/telephony/Phone.java @@ -106,6 +106,7 @@ public interface Phone { static final String DATA_IFACE_NAME_KEY = "iface"; static final String NETWORK_UNAVAILABLE_KEY = "networkUnvailable"; + static final String DATA_NETWORK_ROAMING_KEY = "networkRoaming"; static final String PHONE_IN_ECM_STATE = "phoneinECMState"; /** diff --git a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java index 1a077d0..a728d0a 100644 --- a/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/cdma/CdmaDataConnectionTracker.java @@ -582,7 +582,12 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { */ @Override protected void onRoamingOff() { - trySetupData(Phone.REASON_ROAMING_OFF); + if (getDataOnRoamingEnabled() == false) { + notifyDataAvailability(Phone.REASON_ROAMING_OFF); + trySetupData(Phone.REASON_ROAMING_OFF); + } else { + notifyDataConnection(Phone.REASON_ROAMING_OFF); + } } /** @@ -592,9 +597,11 @@ public final class CdmaDataConnectionTracker extends DataConnectionTracker { protected void onRoamingOn() { if (getDataOnRoamingEnabled()) { trySetupData(Phone.REASON_ROAMING_ON); + notifyDataConnection(Phone.REASON_ROAMING_ON); } else { if (DBG) log("Tear down data connection on roaming."); cleanUpAllConnections(null); + notifyDataAvailability(Phone.REASON_ROAMING_ON); } } diff --git a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java index 00fb0e0..4e43fcd 100644 --- a/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java +++ b/telephony/java/com/android/internal/telephony/gsm/GsmDataConnectionTracker.java @@ -1681,23 +1681,25 @@ public final class GsmDataConnectionTracker extends DataConnectionTracker { @Override protected void onRoamingOff() { if (DBG) log("onRoamingOff"); - // Notify data availability so APN can be enabled. - notifyDataAvailability(Phone.REASON_ROAMING_OFF); - setupDataOnReadyApns(Phone.REASON_ROAMING_OFF); + if (getDataOnRoamingEnabled() == false) { + notifyDataAvailability(Phone.REASON_ROAMING_OFF); + setupDataOnReadyApns(Phone.REASON_ROAMING_OFF); + } else { + notifyDataConnection(Phone.REASON_ROAMING_OFF); + } } @Override protected void onRoamingOn() { - // Notify data availability so APN can be enabled. - notifyDataAvailability(Phone.REASON_ROAMING_ON); - if (getDataOnRoamingEnabled()) { if (DBG) log("onRoamingOn: setup data on roaming"); setupDataOnReadyApns(Phone.REASON_ROAMING_ON); + notifyDataConnection(Phone.REASON_ROAMING_ON); } else { if (DBG) log("onRoamingOn: Tear down data connection on roaming."); cleanUpAllConnections(true, Phone.REASON_ROAMING_ON); + notifyDataAvailability(Phone.REASON_ROAMING_ON); } } |