Loading src/java/com/android/internal/telephony/LocaleTracker.java +7 −0 Original line number Original line Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.telephony.CellInfoLte; import android.telephony.CellInfoWcdma; import android.telephony.CellInfoWcdma; import android.telephony.Rlog; import android.telephony.Rlog; import android.telephony.ServiceState; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.text.TextUtils; import android.util.LocalLog; import android.util.LocalLog; Loading Loading @@ -434,6 +435,12 @@ public class LocaleTracker extends Handler { // broadcast on forbidden channels. // broadcast on forbidden channels. ((WifiManager) mPhone.getContext().getSystemService(Context.WIFI_SERVICE)) ((WifiManager) mPhone.getContext().getSystemService(Context.WIFI_SERVICE)) .setCountryCode(countryIso); .setCountryCode(countryIso); Intent intent = new Intent(TelephonyManager.ACTION_NETWORK_COUNTRY_CHANGED); intent.putExtra(TelephonyManager.EXTRA_NETWORK_COUNTRY, countryIso); SubscriptionManager.putPhoneIdAndSubIdExtra(intent, mPhone.getPhoneId()); mPhone.getContext().sendBroadcast(intent); countryChanged = true; countryChanged = true; } } Loading tests/telephonytests/src/com/android/internal/telephony/LocaleTrackerTest.java +30 −6 Original line number Original line Diff line number Diff line Loading @@ -26,6 +26,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify; import android.content.Context; import android.content.Context; import android.content.Intent; import android.net.wifi.WifiManager; import android.net.wifi.WifiManager; import android.os.AsyncResult; import android.os.AsyncResult; import android.os.HandlerThread; import android.os.HandlerThread; Loading @@ -34,13 +35,16 @@ import android.telephony.CellIdentityGsm; import android.telephony.CellInfo; import android.telephony.CellInfo; import android.telephony.CellInfoGsm; import android.telephony.CellInfoGsm; import android.telephony.ServiceState; import android.telephony.ServiceState; import android.telephony.TelephonyManager; import android.test.suitebuilder.annotation.SmallTest; import android.test.suitebuilder.annotation.SmallTest; import org.junit.After; import org.junit.After; import org.junit.Before; import org.junit.Before; import org.junit.Test; import org.junit.Test; import org.mockito.ArgumentCaptor; import java.util.Arrays; import java.util.Arrays; import java.util.List; public class LocaleTrackerTest extends TelephonyTest { public class LocaleTrackerTest extends TelephonyTest { Loading Loading @@ -122,12 +126,31 @@ public class LocaleTrackerTest extends TelephonyTest { waitForHandlerAction(mLocaleTracker, 100); waitForHandlerAction(mLocaleTracker, 100); } } private void verifyCountryCodeNotified(String[] countryCodes) { ArgumentCaptor<String> stringArgumentCaptor = ArgumentCaptor.forClass(String.class); verify(mWifiManager, times(countryCodes.length)).setCountryCode( stringArgumentCaptor.capture()); List<String> strs = stringArgumentCaptor.getAllValues(); ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class); verify(mContext, times(countryCodes.length)).sendBroadcast(intentArgumentCaptor.capture()); List<Intent> intents = intentArgumentCaptor.getAllValues(); for (int i = 0; i < countryCodes.length; i++) { assertEquals(countryCodes[i], strs.get(i)); assertEquals(TelephonyManager.ACTION_NETWORK_COUNTRY_CHANGED, intents.get(i).getAction()); assertEquals(countryCodes[i], intents.get(i).getStringExtra( TelephonyManager.EXTRA_NETWORK_COUNTRY)); } } @Test @Test @SmallTest @SmallTest public void testUpdateOperatorNumericSync() throws Exception { public void testUpdateOperatorNumericSync() throws Exception { mLocaleTracker.updateOperatorNumeric(US_MCC + FAKE_MNC); mLocaleTracker.updateOperatorNumeric(US_MCC + FAKE_MNC); assertEquals(US_COUNTRY_CODE, mLocaleTracker.getCurrentCountry()); assertEquals(US_COUNTRY_CODE, mLocaleTracker.getCurrentCountry()); verify(mWifiManager).setCountryCode(US_COUNTRY_CODE); verifyCountryCodeNotified(new String[]{US_COUNTRY_CODE}); } } @Test @Test Loading @@ -137,7 +160,7 @@ public class LocaleTrackerTest extends TelephonyTest { sendGsmCellInfo(); sendGsmCellInfo(); sendServiceState(ServiceState.STATE_EMERGENCY_ONLY); sendServiceState(ServiceState.STATE_EMERGENCY_ONLY); assertEquals(US_COUNTRY_CODE, mLocaleTracker.getCurrentCountry()); assertEquals(US_COUNTRY_CODE, mLocaleTracker.getCurrentCountry()); verify(mWifiManager).setCountryCode(US_COUNTRY_CODE); verifyCountryCodeNotified(new String[]{COUNTRY_CODE_UNAVAILABLE, US_COUNTRY_CODE}); assertTrue(mLocaleTracker.isTracking()); assertTrue(mLocaleTracker.isTracking()); } } Loading @@ -147,7 +170,7 @@ public class LocaleTrackerTest extends TelephonyTest { mLocaleTracker.updateOperatorNumeric(""); mLocaleTracker.updateOperatorNumeric(""); sendServiceState(ServiceState.STATE_POWER_OFF); sendServiceState(ServiceState.STATE_POWER_OFF); assertEquals(COUNTRY_CODE_UNAVAILABLE, mLocaleTracker.getCurrentCountry()); assertEquals(COUNTRY_CODE_UNAVAILABLE, mLocaleTracker.getCurrentCountry()); verify(mWifiManager).setCountryCode(COUNTRY_CODE_UNAVAILABLE); verifyCountryCodeNotified(new String[]{COUNTRY_CODE_UNAVAILABLE}); assertFalse(mLocaleTracker.isTracking()); assertFalse(mLocaleTracker.isTracking()); } } Loading @@ -157,13 +180,14 @@ public class LocaleTrackerTest extends TelephonyTest { sendServiceState(ServiceState.STATE_IN_SERVICE); sendServiceState(ServiceState.STATE_IN_SERVICE); mLocaleTracker.updateOperatorNumeric(US_MCC + FAKE_MNC); mLocaleTracker.updateOperatorNumeric(US_MCC + FAKE_MNC); assertEquals(US_COUNTRY_CODE, mLocaleTracker.getCurrentCountry()); assertEquals(US_COUNTRY_CODE, mLocaleTracker.getCurrentCountry()); verify(mWifiManager).setCountryCode(US_COUNTRY_CODE); verifyCountryCodeNotified(new String[]{COUNTRY_CODE_UNAVAILABLE, US_COUNTRY_CODE}); assertFalse(mLocaleTracker.isTracking()); assertFalse(mLocaleTracker.isTracking()); mLocaleTracker.updateOperatorNumeric(""); mLocaleTracker.updateOperatorNumeric(""); waitForHandlerAction(mLocaleTracker, 100); waitForHandlerAction(mLocaleTracker, 100); assertEquals(COUNTRY_CODE_UNAVAILABLE, mLocaleTracker.getCurrentCountry()); assertEquals(COUNTRY_CODE_UNAVAILABLE, mLocaleTracker.getCurrentCountry()); verify(mWifiManager, times(2)).setCountryCode(COUNTRY_CODE_UNAVAILABLE); verifyCountryCodeNotified(new String[]{COUNTRY_CODE_UNAVAILABLE, US_COUNTRY_CODE, COUNTRY_CODE_UNAVAILABLE}); sendServiceState(ServiceState.STATE_POWER_OFF); sendServiceState(ServiceState.STATE_POWER_OFF); assertFalse(mLocaleTracker.isTracking()); assertFalse(mLocaleTracker.isTracking()); } } Loading @@ -175,7 +199,7 @@ public class LocaleTrackerTest extends TelephonyTest { mLocaleTracker.updateOperatorNumeric(""); mLocaleTracker.updateOperatorNumeric(""); waitForHandlerAction(mLocaleTracker, 100); waitForHandlerAction(mLocaleTracker, 100); assertEquals(COUNTRY_CODE_UNAVAILABLE, mLocaleTracker.getCurrentCountry()); assertEquals(COUNTRY_CODE_UNAVAILABLE, mLocaleTracker.getCurrentCountry()); verify(mWifiManager).setCountryCode(COUNTRY_CODE_UNAVAILABLE); verifyCountryCodeNotified(new String[]{COUNTRY_CODE_UNAVAILABLE}); assertFalse(mLocaleTracker.isTracking()); assertFalse(mLocaleTracker.isTracking()); sendServiceState(ServiceState.STATE_OUT_OF_SERVICE); sendServiceState(ServiceState.STATE_OUT_OF_SERVICE); Loading Loading
src/java/com/android/internal/telephony/LocaleTracker.java +7 −0 Original line number Original line Diff line number Diff line Loading @@ -36,6 +36,7 @@ import android.telephony.CellInfoLte; import android.telephony.CellInfoWcdma; import android.telephony.CellInfoWcdma; import android.telephony.Rlog; import android.telephony.Rlog; import android.telephony.ServiceState; import android.telephony.ServiceState; import android.telephony.SubscriptionManager; import android.telephony.TelephonyManager; import android.telephony.TelephonyManager; import android.text.TextUtils; import android.text.TextUtils; import android.util.LocalLog; import android.util.LocalLog; Loading Loading @@ -434,6 +435,12 @@ public class LocaleTracker extends Handler { // broadcast on forbidden channels. // broadcast on forbidden channels. ((WifiManager) mPhone.getContext().getSystemService(Context.WIFI_SERVICE)) ((WifiManager) mPhone.getContext().getSystemService(Context.WIFI_SERVICE)) .setCountryCode(countryIso); .setCountryCode(countryIso); Intent intent = new Intent(TelephonyManager.ACTION_NETWORK_COUNTRY_CHANGED); intent.putExtra(TelephonyManager.EXTRA_NETWORK_COUNTRY, countryIso); SubscriptionManager.putPhoneIdAndSubIdExtra(intent, mPhone.getPhoneId()); mPhone.getContext().sendBroadcast(intent); countryChanged = true; countryChanged = true; } } Loading
tests/telephonytests/src/com/android/internal/telephony/LocaleTrackerTest.java +30 −6 Original line number Original line Diff line number Diff line Loading @@ -26,6 +26,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify; import android.content.Context; import android.content.Context; import android.content.Intent; import android.net.wifi.WifiManager; import android.net.wifi.WifiManager; import android.os.AsyncResult; import android.os.AsyncResult; import android.os.HandlerThread; import android.os.HandlerThread; Loading @@ -34,13 +35,16 @@ import android.telephony.CellIdentityGsm; import android.telephony.CellInfo; import android.telephony.CellInfo; import android.telephony.CellInfoGsm; import android.telephony.CellInfoGsm; import android.telephony.ServiceState; import android.telephony.ServiceState; import android.telephony.TelephonyManager; import android.test.suitebuilder.annotation.SmallTest; import android.test.suitebuilder.annotation.SmallTest; import org.junit.After; import org.junit.After; import org.junit.Before; import org.junit.Before; import org.junit.Test; import org.junit.Test; import org.mockito.ArgumentCaptor; import java.util.Arrays; import java.util.Arrays; import java.util.List; public class LocaleTrackerTest extends TelephonyTest { public class LocaleTrackerTest extends TelephonyTest { Loading Loading @@ -122,12 +126,31 @@ public class LocaleTrackerTest extends TelephonyTest { waitForHandlerAction(mLocaleTracker, 100); waitForHandlerAction(mLocaleTracker, 100); } } private void verifyCountryCodeNotified(String[] countryCodes) { ArgumentCaptor<String> stringArgumentCaptor = ArgumentCaptor.forClass(String.class); verify(mWifiManager, times(countryCodes.length)).setCountryCode( stringArgumentCaptor.capture()); List<String> strs = stringArgumentCaptor.getAllValues(); ArgumentCaptor<Intent> intentArgumentCaptor = ArgumentCaptor.forClass(Intent.class); verify(mContext, times(countryCodes.length)).sendBroadcast(intentArgumentCaptor.capture()); List<Intent> intents = intentArgumentCaptor.getAllValues(); for (int i = 0; i < countryCodes.length; i++) { assertEquals(countryCodes[i], strs.get(i)); assertEquals(TelephonyManager.ACTION_NETWORK_COUNTRY_CHANGED, intents.get(i).getAction()); assertEquals(countryCodes[i], intents.get(i).getStringExtra( TelephonyManager.EXTRA_NETWORK_COUNTRY)); } } @Test @Test @SmallTest @SmallTest public void testUpdateOperatorNumericSync() throws Exception { public void testUpdateOperatorNumericSync() throws Exception { mLocaleTracker.updateOperatorNumeric(US_MCC + FAKE_MNC); mLocaleTracker.updateOperatorNumeric(US_MCC + FAKE_MNC); assertEquals(US_COUNTRY_CODE, mLocaleTracker.getCurrentCountry()); assertEquals(US_COUNTRY_CODE, mLocaleTracker.getCurrentCountry()); verify(mWifiManager).setCountryCode(US_COUNTRY_CODE); verifyCountryCodeNotified(new String[]{US_COUNTRY_CODE}); } } @Test @Test Loading @@ -137,7 +160,7 @@ public class LocaleTrackerTest extends TelephonyTest { sendGsmCellInfo(); sendGsmCellInfo(); sendServiceState(ServiceState.STATE_EMERGENCY_ONLY); sendServiceState(ServiceState.STATE_EMERGENCY_ONLY); assertEquals(US_COUNTRY_CODE, mLocaleTracker.getCurrentCountry()); assertEquals(US_COUNTRY_CODE, mLocaleTracker.getCurrentCountry()); verify(mWifiManager).setCountryCode(US_COUNTRY_CODE); verifyCountryCodeNotified(new String[]{COUNTRY_CODE_UNAVAILABLE, US_COUNTRY_CODE}); assertTrue(mLocaleTracker.isTracking()); assertTrue(mLocaleTracker.isTracking()); } } Loading @@ -147,7 +170,7 @@ public class LocaleTrackerTest extends TelephonyTest { mLocaleTracker.updateOperatorNumeric(""); mLocaleTracker.updateOperatorNumeric(""); sendServiceState(ServiceState.STATE_POWER_OFF); sendServiceState(ServiceState.STATE_POWER_OFF); assertEquals(COUNTRY_CODE_UNAVAILABLE, mLocaleTracker.getCurrentCountry()); assertEquals(COUNTRY_CODE_UNAVAILABLE, mLocaleTracker.getCurrentCountry()); verify(mWifiManager).setCountryCode(COUNTRY_CODE_UNAVAILABLE); verifyCountryCodeNotified(new String[]{COUNTRY_CODE_UNAVAILABLE}); assertFalse(mLocaleTracker.isTracking()); assertFalse(mLocaleTracker.isTracking()); } } Loading @@ -157,13 +180,14 @@ public class LocaleTrackerTest extends TelephonyTest { sendServiceState(ServiceState.STATE_IN_SERVICE); sendServiceState(ServiceState.STATE_IN_SERVICE); mLocaleTracker.updateOperatorNumeric(US_MCC + FAKE_MNC); mLocaleTracker.updateOperatorNumeric(US_MCC + FAKE_MNC); assertEquals(US_COUNTRY_CODE, mLocaleTracker.getCurrentCountry()); assertEquals(US_COUNTRY_CODE, mLocaleTracker.getCurrentCountry()); verify(mWifiManager).setCountryCode(US_COUNTRY_CODE); verifyCountryCodeNotified(new String[]{COUNTRY_CODE_UNAVAILABLE, US_COUNTRY_CODE}); assertFalse(mLocaleTracker.isTracking()); assertFalse(mLocaleTracker.isTracking()); mLocaleTracker.updateOperatorNumeric(""); mLocaleTracker.updateOperatorNumeric(""); waitForHandlerAction(mLocaleTracker, 100); waitForHandlerAction(mLocaleTracker, 100); assertEquals(COUNTRY_CODE_UNAVAILABLE, mLocaleTracker.getCurrentCountry()); assertEquals(COUNTRY_CODE_UNAVAILABLE, mLocaleTracker.getCurrentCountry()); verify(mWifiManager, times(2)).setCountryCode(COUNTRY_CODE_UNAVAILABLE); verifyCountryCodeNotified(new String[]{COUNTRY_CODE_UNAVAILABLE, US_COUNTRY_CODE, COUNTRY_CODE_UNAVAILABLE}); sendServiceState(ServiceState.STATE_POWER_OFF); sendServiceState(ServiceState.STATE_POWER_OFF); assertFalse(mLocaleTracker.isTracking()); assertFalse(mLocaleTracker.isTracking()); } } Loading @@ -175,7 +199,7 @@ public class LocaleTrackerTest extends TelephonyTest { mLocaleTracker.updateOperatorNumeric(""); mLocaleTracker.updateOperatorNumeric(""); waitForHandlerAction(mLocaleTracker, 100); waitForHandlerAction(mLocaleTracker, 100); assertEquals(COUNTRY_CODE_UNAVAILABLE, mLocaleTracker.getCurrentCountry()); assertEquals(COUNTRY_CODE_UNAVAILABLE, mLocaleTracker.getCurrentCountry()); verify(mWifiManager).setCountryCode(COUNTRY_CODE_UNAVAILABLE); verifyCountryCodeNotified(new String[]{COUNTRY_CODE_UNAVAILABLE}); assertFalse(mLocaleTracker.isTracking()); assertFalse(mLocaleTracker.isTracking()); sendServiceState(ServiceState.STATE_OUT_OF_SERVICE); sendServiceState(ServiceState.STATE_OUT_OF_SERVICE); Loading