Merge "Re-expose raw data roaming state"
diff --git a/src/java/com/android/internal/telephony/ServiceStateTracker.java b/src/java/com/android/internal/telephony/ServiceStateTracker.java
index 72edb54..adee879 100755
--- a/src/java/com/android/internal/telephony/ServiceStateTracker.java
+++ b/src/java/com/android/internal/telephony/ServiceStateTracker.java
@@ -473,15 +473,15 @@
private int mNewRejectCode;
/**
- * GSM roaming status solely based on TS 27.007 7.2 CREG. Only used by
+ * GSM voice roaming status solely based on TS 27.007 7.2 CREG. Only used by
* handlePollStateResult to store CREG roaming result.
*/
- private boolean mGsmRoaming = false;
+ private boolean mGsmVoiceRoaming = false;
/**
- * Data roaming status solely based on TS 27.007 10.1.19 CGREG. Only used by
+ * Gsm data roaming status solely based on TS 27.007 10.1.19 CGREG. Only used by
* handlePollStateResult to store CGREG roaming result.
*/
- private boolean mDataRoaming = false;
+ private boolean mGsmDataRoaming = false;
/**
* Mark when service state is in emergency call only mode
*/
@@ -2083,7 +2083,7 @@
mEmergencyOnly = networkRegState.isEmergencyEnabled();
if (mPhone.isPhoneTypeGsm()) {
- mGsmRoaming = regCodeIsRoaming(registrationState);
+ mGsmVoiceRoaming = regCodeIsRoaming(registrationState);
mNewRejectCode = reasonForDenial;
boolean isVoiceCapable = mPhone.getContext().getResources()
@@ -2184,11 +2184,16 @@
mNewReasonDataDenied = networkRegState.getRejectCause();
mNewMaxDataCalls = dataSpecificStates.maxDataCalls;
- mDataRoaming = regCodeIsRoaming(registrationState);
+ mGsmDataRoaming = regCodeIsRoaming(registrationState);
+ // Save the data roaming state reported by modem registration before resource
+ // overlay or carrier config possibly overrides it.
+ mNewSS.setDataRoamingFromRegistration(mGsmDataRoaming);
} else if (mPhone.isPhoneTypeCdma()) {
-
boolean isDataRoaming = regCodeIsRoaming(registrationState);
mNewSS.setDataRoaming(isDataRoaming);
+ // Save the data roaming state reported by modem registration before resource
+ // overlay or carrier config possibly overrides it.
+ mNewSS.setDataRoamingFromRegistration(isDataRoaming);
} else {
// If the unsolicited signal strength comes just before data RAT family changes
@@ -2210,6 +2215,9 @@
// voice roaming state in done while handling EVENT_POLL_STATE_REGISTRATION_CDMA
boolean isDataRoaming = regCodeIsRoaming(registrationState);
mNewSS.setDataRoaming(isDataRoaming);
+ // Save the data roaming state reported by modem registration before resource
+ // overlay or carrier config possibly overrides it.
+ mNewSS.setDataRoamingFromRegistration(isDataRoaming);
}
updateServiceStateLteEarfcnBoost(mNewSS,
@@ -2440,7 +2448,7 @@
* The test for the operators is to handle special roaming
* agreements and MVNO's.
*/
- boolean roaming = (mGsmRoaming || mDataRoaming);
+ boolean roaming = (mGsmVoiceRoaming || mGsmDataRoaming);
if (roaming && !isOperatorConsideredRoaming(mNewSS)
&& (isSameNamedOperators(mNewSS) || isOperatorConsideredNonRoaming(mNewSS))) {
@@ -2463,8 +2471,7 @@
roaming = true;
}
- mNewSS.setVoiceRoaming(roaming);
- mNewSS.setDataRoaming(roaming);
+ mNewSS.setRoaming(roaming);
} else {
String systemId = Integer.toString(mNewSS.getCdmaSystemId());
@@ -2485,22 +2492,19 @@
if (TelephonyUtils.IS_DEBUGGABLE
&& SystemProperties.getBoolean(PROP_FORCE_ROAMING, false)) {
- mNewSS.setVoiceRoaming(true);
- mNewSS.setDataRoaming(true);
+ mNewSS.setRoaming(true);
}
}
}
private void setRoamingOn() {
- mNewSS.setVoiceRoaming(true);
- mNewSS.setDataRoaming(true);
+ mNewSS.setRoaming(true);
mNewSS.setCdmaEriIconIndex(EriInfo.ROAMING_INDICATOR_ON);
mNewSS.setCdmaEriIconMode(EriInfo.ROAMING_ICON_MODE_NORMAL);
}
private void setRoamingOff() {
- mNewSS.setVoiceRoaming(false);
- mNewSS.setDataRoaming(false);
+ mNewSS.setRoaming(false);
mNewSS.setCdmaEriIconIndex(EriInfo.ROAMING_INDICATOR_OFF);
}
@@ -3090,8 +3094,7 @@
if (TelephonyUtils.IS_DEBUGGABLE
&& SystemProperties.getBoolean(PROP_FORCE_ROAMING, false)) {
- mNewSS.setVoiceRoaming(true);
- mNewSS.setDataRoaming(true);
+ mNewSS.setRoaming(true);
}
useDataRegStateForDataOnlyDevices();
processIwlanRegistrationInfo();
@@ -5084,8 +5087,8 @@
pw.println(" mNewMaxDataCalls=" + mNewMaxDataCalls);
pw.println(" mReasonDataDenied=" + mReasonDataDenied);
pw.println(" mNewReasonDataDenied=" + mNewReasonDataDenied);
- pw.println(" mGsmRoaming=" + mGsmRoaming);
- pw.println(" mDataRoaming=" + mDataRoaming);
+ pw.println(" mGsmVoiceRoaming=" + mGsmVoiceRoaming);
+ pw.println(" mGsmDataRoaming=" + mGsmDataRoaming);
pw.println(" mEmergencyOnly=" + mEmergencyOnly);
pw.flush();
mNitzState.dumpState(pw);
diff --git a/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTest.java b/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTest.java
index ae5f6a3..8fad853 100644
--- a/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTest.java
+++ b/tests/telephonytests/src/com/android/internal/telephony/ServiceStateTest.java
@@ -36,15 +36,6 @@
@SmallTest
public void testRoaming() {
ServiceState ss = new ServiceState();
- // add data registration state
- NetworkRegistrationInfo nri = new NetworkRegistrationInfo.Builder()
- .setDomain(NetworkRegistrationInfo.DOMAIN_PS)
- .setTransportType(AccessNetworkConstants.TRANSPORT_TYPE_WWAN)
- .setRegistrationState(NetworkRegistrationInfo.REGISTRATION_STATE_ROAMING)
- .build();
- ss.addNetworkRegistrationInfo(nri);
-
- assertTrue(ss.getDataRoamingFromRegistration());
ss.setCdmaDefaultRoamingIndicator(1);
assertEquals(1, ss.getCdmaDefaultRoamingIndicator());
@@ -62,6 +53,9 @@
assertTrue(ss.getDataRoaming());
assertEquals(ServiceState.ROAMING_TYPE_DOMESTIC, ss.getDataRoamingType());
+ ss.setDataRoamingFromRegistration(true);
+ assertTrue(ss.getDataRoamingFromRegistration());
+
ss.setVoiceRoamingType(ServiceState.ROAMING_TYPE_DOMESTIC);
assertTrue(ss.getVoiceRoaming());
assertEquals(ServiceState.ROAMING_TYPE_DOMESTIC, ss.getVoiceRoamingType());
@@ -240,6 +234,7 @@
ss.setDataRegState(ServiceState.STATE_OUT_OF_SERVICE);
ss.setVoiceRoamingType(ServiceState.ROAMING_TYPE_INTERNATIONAL);
ss.setDataRoamingType(ServiceState.ROAMING_TYPE_UNKNOWN);
+ ss.setDataRoamingFromRegistration(true);
ss.setOperatorName("long", "short", "numeric");
ss.setIsManualSelection(true);
ss.setCssIndicator(1);
@@ -283,6 +278,7 @@
ss.setVoiceRoamingType(ServiceState.ROAMING_TYPE_INTERNATIONAL);
ss.setDataRoamingType(ServiceState.ROAMING_TYPE_UNKNOWN);
+ ss.setDataRoamingFromRegistration(true);
ss.setOperatorName("long", "short", "numeric");
ss.setIsManualSelection(true);