summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKumar Anand <kumaranand@google.com>2018-05-25 15:55:14 -0700
committerKumar Anand <kumaranand@google.com>2018-05-31 23:26:42 +0000
commit6a4ab81c8842bc1115c7078c8798899e3a2e217c (patch)
treebeac8c88c01e6e4204ce4828dbaa132f577919dd
parent7321b5dc86ba9f9de31588bf726008bf8a13138a (diff)
downloadwifi-6a4ab81c8842bc1115c7078c8798899e3a2e217c.tar.gz
wifi: do not reset country code on SIM removal
Telephony will set country code even in no sim case based on emergency cell information. Hence Wifi framework should not reset the country code set by telephony blindly upon sim removal event. Bug: 79955190 Test: ./frameworks/opt/net/wifi/tests/wifitests/runtests.sh Change-Id: Iebf7ce88d3d19ce1e00e3170e9809eb938201648
-rw-r--r--service/java/com/android/server/wifi/WifiCountryCode.java14
-rw-r--r--service/java/com/android/server/wifi/WifiServiceImpl.java2
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiCountryCodeTest.java44
-rw-r--r--tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java19
4 files changed, 19 insertions, 60 deletions
diff --git a/service/java/com/android/server/wifi/WifiCountryCode.java b/service/java/com/android/server/wifi/WifiCountryCode.java
index 6f61d474a..ff9ff0200 100644
--- a/service/java/com/android/server/wifi/WifiCountryCode.java
+++ b/service/java/com/android/server/wifi/WifiCountryCode.java
@@ -79,20 +79,6 @@ public class WifiCountryCode {
}
/**
- * This is called when sim card is removed.
- * In this case we should invalid all other country codes except the
- * phone default one.
- */
- public synchronized void simCardRemoved() {
- if (DBG) Log.d(TAG, "SIM Card Removed");
- // SIM card is removed, we need to reset the country code to phone default.
- mTelephonyCountryCode = null;
- if (mReady) {
- updateCountryCode();
- }
- }
-
- /**
* This is called when airplane mode is enabled.
* In this case we should invalidate all other country code except the
* phone default one.
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java
index ad5f133dc..e01266f2c 100644
--- a/service/java/com/android/server/wifi/WifiServiceImpl.java
+++ b/service/java/com/android/server/wifi/WifiServiceImpl.java
@@ -538,8 +538,6 @@ public class WifiServiceImpl extends IWifiManager.Stub {
if (IccCardConstants.INTENT_VALUE_ICC_ABSENT.equals(state)) {
Log.d(TAG, "resetting networks because SIM was removed");
mWifiStateMachine.resetSimAuthNetworks(false);
- Log.d(TAG, "resetting country code because SIM is removed");
- mCountryCode.simCardRemoved();
} else if (IccCardConstants.INTENT_VALUE_ICC_LOADED.equals(state)) {
Log.d(TAG, "resetting networks because SIM was loaded");
mWifiStateMachine.resetSimAuthNetworks(true);
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiCountryCodeTest.java b/tests/wifitests/src/com/android/server/wifi/WifiCountryCodeTest.java
index 69133428d..4ce5d5e40 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiCountryCodeTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiCountryCodeTest.java
@@ -126,50 +126,6 @@ public class WifiCountryCodeTest {
}
/**
- * Test if we can reset the country code upon sim card is removed.
- * @throws Exception
- */
- @Test
- public void resetCountryCodeWhenSIMCardRemoved() throws Exception {
- mWifiCountryCode.setCountryCode(mTelephonyCountryCode);
- // Supplicant started.
- mWifiCountryCode.setReadyForChange(true);
- // Wifi get L2 connected.
- mWifiCountryCode.setReadyForChange(false);
- assertEquals(mTelephonyCountryCode, mWifiCountryCode.getCountryCodeSentToDriver());
- // SIM card is removed.
- mWifiCountryCode.simCardRemoved();
- // Country code restting is not applied yet.
- assertEquals(mTelephonyCountryCode, mWifiCountryCode.getCountryCodeSentToDriver());
- mWifiCountryCode.setReadyForChange(true);
- // Country code restting is applied when supplicant is ready.
- verify(mWifiNative, times(2)).setCountryCode(any(), anyString());
- assertEquals(mDefaultCountryCode, mWifiCountryCode.getCountryCodeSentToDriver());
- }
-
- /**
- * Test if we can reset the country code upon airplane mode is enabled.
- * @throws Exception
- */
- @Test
- public void resetCountryCodeWhenAirplaneModeEnabled() throws Exception {
- mWifiCountryCode.setCountryCode(mTelephonyCountryCode);
- // Supplicant started.
- mWifiCountryCode.setReadyForChange(true);
- // Wifi get L2 connected.
- mWifiCountryCode.setReadyForChange(false);
- assertEquals(mTelephonyCountryCode, mWifiCountryCode.getCountryCodeSentToDriver());
- // Airplane mode is enabled.
- mWifiCountryCode.simCardRemoved();
- // Country code restting is not applied yet.
- assertEquals(mTelephonyCountryCode, mWifiCountryCode.getCountryCodeSentToDriver());
- mWifiCountryCode.setReadyForChange(true);
- // Country code restting is applied when supplicant is ready.
- verify(mWifiNative, times(2)).setCountryCode(any(), anyString());
- assertEquals(mDefaultCountryCode, mWifiCountryCode.getCountryCodeSentToDriver());
- }
-
- /**
* Test if we can reset to the default country code when phone is out of service, when
* |config_wifi_revert_country_code_on_cellular_loss| is set to true;
* Telephony service calls |setCountryCode| with an empty string when phone is out of service.
diff --git a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
index 102ebca15..f3d967e73 100644
--- a/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
+++ b/tests/wifitests/src/com/android/server/wifi/WifiServiceImplTest.java
@@ -94,6 +94,7 @@ import android.os.test.TestLooper;
import android.support.test.filters.SmallTest;
import com.android.internal.os.PowerProfile;
+import com.android.internal.telephony.TelephonyIntents;
import com.android.internal.util.AsyncChannel;
import com.android.server.wifi.WifiServiceImpl.LocalOnlyRequestorCallback;
import com.android.server.wifi.hotspot2.PasspointProvisioningTestUtil;
@@ -2768,4 +2769,22 @@ public class WifiServiceImplTest {
return apConfig;
}
+
+ /**
+ * Verifies that sim state change does not set or reset the country code
+ */
+ @Test
+ public void testSimStateChangeDoesNotResetCountryCode() {
+ mWifiServiceImpl.checkAndStartWifi();
+ verify(mContext).registerReceiver(mBroadcastReceiverCaptor.capture(),
+ (IntentFilter) argThat((IntentFilter filter) ->
+ filter.hasAction(TelephonyIntents.ACTION_SIM_STATE_CHANGED)));
+
+ int userHandle = TEST_USER_HANDLE;
+ // Send the broadcast
+ Intent intent = new Intent(TelephonyIntents.ACTION_SIM_STATE_CHANGED);
+ intent.putExtra(Intent.EXTRA_USER_HANDLE, userHandle);
+ mBroadcastReceiverCaptor.getValue().onReceive(mContext, intent);
+ verifyNoMoreInteractions(mWifiCountryCode);
+ }
}