Loading src/java/com/android/internal/telephony/ServiceStateTracker.java +23 −20 Original line number Diff line number Diff line Loading @@ -473,15 +473,15 @@ public class ServiceStateTracker extends Handler { 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 */ Loading Loading @@ -2083,7 +2083,7 @@ public class ServiceStateTracker extends Handler { mEmergencyOnly = networkRegState.isEmergencyEnabled(); if (mPhone.isPhoneTypeGsm()) { mGsmRoaming = regCodeIsRoaming(registrationState); mGsmVoiceRoaming = regCodeIsRoaming(registrationState); mNewRejectCode = reasonForDenial; boolean isVoiceCapable = mPhone.getContext().getResources() Loading Loading @@ -2184,11 +2184,16 @@ public class ServiceStateTracker extends Handler { 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 Loading @@ -2210,6 +2215,9 @@ public class ServiceStateTracker extends Handler { // 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, Loading Loading @@ -2440,7 +2448,7 @@ public class ServiceStateTracker extends Handler { * 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))) { Loading @@ -2463,8 +2471,7 @@ public class ServiceStateTracker extends Handler { roaming = true; } mNewSS.setVoiceRoaming(roaming); mNewSS.setDataRoaming(roaming); mNewSS.setRoaming(roaming); } else { String systemId = Integer.toString(mNewSS.getCdmaSystemId()); Loading @@ -2485,22 +2492,19 @@ public class ServiceStateTracker extends Handler { 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); } Loading Loading @@ -3090,8 +3094,7 @@ public class ServiceStateTracker extends Handler { if (TelephonyUtils.IS_DEBUGGABLE && SystemProperties.getBoolean(PROP_FORCE_ROAMING, false)) { mNewSS.setVoiceRoaming(true); mNewSS.setDataRoaming(true); mNewSS.setRoaming(true); } useDataRegStateForDataOnlyDevices(); processIwlanRegistrationInfo(); Loading Loading @@ -5084,8 +5087,8 @@ public class ServiceStateTracker extends Handler { 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); Loading tests/telephonytests/src/com/android/internal/telephony/ServiceStateTest.java +5 −9 Original line number Diff line number Diff line Loading @@ -36,15 +36,6 @@ public class ServiceStateTest extends TestCase { @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()); Loading @@ -62,6 +53,9 @@ public class ServiceStateTest extends TestCase { 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()); Loading Loading @@ -240,6 +234,7 @@ public class ServiceStateTest extends TestCase { 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); Loading Loading @@ -283,6 +278,7 @@ public class ServiceStateTest extends TestCase { ss.setVoiceRoamingType(ServiceState.ROAMING_TYPE_INTERNATIONAL); ss.setDataRoamingType(ServiceState.ROAMING_TYPE_UNKNOWN); ss.setDataRoamingFromRegistration(true); ss.setOperatorName("long", "short", "numeric"); ss.setIsManualSelection(true); Loading Loading
src/java/com/android/internal/telephony/ServiceStateTracker.java +23 −20 Original line number Diff line number Diff line Loading @@ -473,15 +473,15 @@ public class ServiceStateTracker extends Handler { 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 */ Loading Loading @@ -2083,7 +2083,7 @@ public class ServiceStateTracker extends Handler { mEmergencyOnly = networkRegState.isEmergencyEnabled(); if (mPhone.isPhoneTypeGsm()) { mGsmRoaming = regCodeIsRoaming(registrationState); mGsmVoiceRoaming = regCodeIsRoaming(registrationState); mNewRejectCode = reasonForDenial; boolean isVoiceCapable = mPhone.getContext().getResources() Loading Loading @@ -2184,11 +2184,16 @@ public class ServiceStateTracker extends Handler { 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 Loading @@ -2210,6 +2215,9 @@ public class ServiceStateTracker extends Handler { // 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, Loading Loading @@ -2440,7 +2448,7 @@ public class ServiceStateTracker extends Handler { * 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))) { Loading @@ -2463,8 +2471,7 @@ public class ServiceStateTracker extends Handler { roaming = true; } mNewSS.setVoiceRoaming(roaming); mNewSS.setDataRoaming(roaming); mNewSS.setRoaming(roaming); } else { String systemId = Integer.toString(mNewSS.getCdmaSystemId()); Loading @@ -2485,22 +2492,19 @@ public class ServiceStateTracker extends Handler { 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); } Loading Loading @@ -3090,8 +3094,7 @@ public class ServiceStateTracker extends Handler { if (TelephonyUtils.IS_DEBUGGABLE && SystemProperties.getBoolean(PROP_FORCE_ROAMING, false)) { mNewSS.setVoiceRoaming(true); mNewSS.setDataRoaming(true); mNewSS.setRoaming(true); } useDataRegStateForDataOnlyDevices(); processIwlanRegistrationInfo(); Loading Loading @@ -5084,8 +5087,8 @@ public class ServiceStateTracker extends Handler { 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); Loading
tests/telephonytests/src/com/android/internal/telephony/ServiceStateTest.java +5 −9 Original line number Diff line number Diff line Loading @@ -36,15 +36,6 @@ public class ServiceStateTest extends TestCase { @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()); Loading @@ -62,6 +53,9 @@ public class ServiceStateTest extends TestCase { 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()); Loading Loading @@ -240,6 +234,7 @@ public class ServiceStateTest extends TestCase { 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); Loading Loading @@ -283,6 +278,7 @@ public class ServiceStateTest extends TestCase { ss.setVoiceRoamingType(ServiceState.ROAMING_TYPE_INTERNATIONAL); ss.setDataRoamingType(ServiceState.ROAMING_TYPE_UNKNOWN); ss.setDataRoamingFromRegistration(true); ss.setOperatorName("long", "short", "numeric"); ss.setIsManualSelection(true); Loading