summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java13
-rw-r--r--packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/WifiMacAddressPreferenceControllerTest.java137
2 files changed, 119 insertions, 31 deletions
diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java
index 89d259507d8a..ffbda3ae76ae 100644
--- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java
+++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java
@@ -38,6 +38,10 @@ public abstract class AbstractWifiMacAddressPreferenceController
@VisibleForTesting
static final String KEY_WIFI_MAC_ADDRESS = "wifi_mac_address";
+ @VisibleForTesting
+ static final int OFF = 0;
+ @VisibleForTesting
+ static final int ON = 1;
private static final String[] CONNECTIVITY_INTENTS = {
ConnectivityManager.CONNECTIVITY_ACTION,
@@ -80,13 +84,14 @@ public abstract class AbstractWifiMacAddressPreferenceController
protected void updateConnectivity() {
WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
final int macRandomizationMode = Settings.Global.getInt(mContext.getContentResolver(),
- Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 0);
+ Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, OFF);
final String macAddress = wifiInfo == null ? null : wifiInfo.getMacAddress();
- if (TextUtils.isEmpty(macAddress)) {
- mWifiMacAddress.setSummary(R.string.status_unavailable);
- } else if (macRandomizationMode == 1 && WifiInfo.DEFAULT_MAC_ADDRESS.equals(macAddress)) {
+ if (macRandomizationMode == ON && WifiInfo.DEFAULT_MAC_ADDRESS.equals(macAddress)) {
mWifiMacAddress.setSummary(R.string.wifi_status_mac_randomized);
+ } else if (TextUtils.isEmpty(macAddress)
+ || WifiInfo.DEFAULT_MAC_ADDRESS.equals(macAddress)) {
+ mWifiMacAddress.setSummary(R.string.status_unavailable);
} else {
mWifiMacAddress.setSummary(macAddress);
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/WifiMacAddressPreferenceControllerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/WifiMacAddressPreferenceControllerTest.java
index ddbcb87725d1..757df5b12518 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/WifiMacAddressPreferenceControllerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/deviceinfo/WifiMacAddressPreferenceControllerTest.java
@@ -16,11 +16,10 @@
package com.android.settingslib.deviceinfo;
+import static com.google.common.truth.Truth.assertThat;
import static com.google.common.truth.Truth.assertWithMessage;
import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.spy;
import android.annotation.SuppressLint;
import android.content.Context;
@@ -40,6 +39,7 @@ import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
+import org.robolectric.RuntimeEnvironment;
import java.util.Arrays;
import java.util.List;
@@ -48,12 +48,16 @@ import java.util.List;
@RunWith(SettingsLibRobolectricTestRunner.class)
public class WifiMacAddressPreferenceControllerTest {
@Mock
- private Context mContext;
- @Mock
private Lifecycle mLifecycle;
@Mock
private PreferenceScreen mScreen;
@Mock
+ private WifiManager mWifiManager;
+ @Mock
+ private WifiInfo mWifiInfo;
+
+ private AbstractWifiMacAddressPreferenceController mController;
+ private Context mContext;
private Preference mPreference;
private static final String TEST_MAC_ADDRESS = "00:11:22:33:44:55";
@@ -61,14 +65,20 @@ public class WifiMacAddressPreferenceControllerTest {
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
+
+ mContext = spy(RuntimeEnvironment.application);
+ mPreference = new Preference(mContext);
+
doReturn(mPreference).when(mScreen)
.findPreference(AbstractWifiMacAddressPreferenceController.KEY_WIFI_MAC_ADDRESS);
+ doReturn(mWifiManager).when(mContext).getSystemService(WifiManager.class);
+ doReturn(mWifiInfo).when(mWifiManager).getConnectionInfo();
+
+ mController = new ConcreteWifiMacAddressPreferenceController(mContext, mLifecycle);
}
@Test
public void testHasIntentFilters() {
- final AbstractWifiMacAddressPreferenceController wifiMacAddressPreferenceController =
- new ConcreteWifiMacAddressPreferenceController(mContext, mLifecycle);
final List<String> expectedIntents = Arrays.asList(
ConnectivityManager.CONNECTIVITY_ACTION,
WifiManager.LINK_CONFIGURATION_CHANGED_ACTION,
@@ -76,37 +86,110 @@ public class WifiMacAddressPreferenceControllerTest {
assertWithMessage("Intent filter should contain expected intents")
- .that(wifiMacAddressPreferenceController.getConnectivityIntents())
+ .that(mController.getConnectivityIntents())
.asList().containsAllIn(expectedIntents);
}
@Test
- public void testWifiMacAddress() {
- final WifiManager wifiManager = mock(WifiManager.class);
- final WifiInfo wifiInfo = mock(WifiInfo.class);
+ public void updateConnectivity_nullWifiInfoWithMacRandomizationOff_setMacUnavailable() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED,
+ AbstractWifiMacAddressPreferenceController.OFF);
+ doReturn(null).when(mWifiManager).getConnectionInfo();
+
+ mController.displayPreference(mScreen);
+
+ assertThat(mPreference.getSummary())
+ .isEqualTo(mContext.getString(R.string.status_unavailable));
+ }
+
+ @Test
+ public void updateConnectivity_nullMacWithMacRandomizationOff_setMacUnavailable() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED,
+ AbstractWifiMacAddressPreferenceController.OFF);
+ doReturn(null).when(mWifiInfo).getMacAddress();
+
+ mController.displayPreference(mScreen);
+
+ assertThat(mPreference.getSummary())
+ .isEqualTo(mContext.getString(R.string.status_unavailable));
+ }
+
+ @Test
+ public void updateConnectivity_defaultMacWithMacRandomizationOff_setMacUnavailable() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED,
+ AbstractWifiMacAddressPreferenceController.OFF);
+ doReturn(WifiInfo.DEFAULT_MAC_ADDRESS).when(mWifiInfo).getMacAddress();
+
+ mController.displayPreference(mScreen);
+
+ assertThat(mPreference.getSummary())
+ .isEqualTo(mContext.getString(R.string.status_unavailable));
+ }
+
+ @Test
+ public void updateConnectivity_validMacWithMacRandomizationOff_setValidMac() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED,
+ AbstractWifiMacAddressPreferenceController.OFF);
+ doReturn(TEST_MAC_ADDRESS).when(mWifiInfo).getMacAddress();
+
+ mController.displayPreference(mScreen);
- doReturn(null).when(wifiManager).getConnectionInfo();
- doReturn(wifiManager).when(mContext).getSystemService(WifiManager.class);
+ assertThat(mPreference.getSummary()).isEqualTo(TEST_MAC_ADDRESS);
+ }
- final AbstractWifiMacAddressPreferenceController wifiMacAddressPreferenceController =
- new ConcreteWifiMacAddressPreferenceController(mContext, mLifecycle);
+ @Test
+ public void updateConnectivity_nullWifiInfoWithMacRandomizationOn_setMacUnavailable() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED,
+ AbstractWifiMacAddressPreferenceController.ON);
+ doReturn(null).when(mWifiManager).getConnectionInfo();
- wifiMacAddressPreferenceController.displayPreference(mScreen);
- verify(mPreference).setSummary(R.string.status_unavailable);
+ mController.displayPreference(mScreen);
- doReturn(wifiInfo).when(wifiManager).getConnectionInfo();
- doReturn(TEST_MAC_ADDRESS).when(wifiInfo).getMacAddress();
- wifiMacAddressPreferenceController.displayPreference(mScreen);
- verify(mPreference).setSummary(TEST_MAC_ADDRESS);
+ assertThat(mPreference.getSummary())
+ .isEqualTo(mContext.getString(R.string.status_unavailable));
+ }
+ @Test
+ public void updateConnectivity_nullMacWithMacRandomizationOn_setMacUnavailable() {
Settings.Global.putInt(mContext.getContentResolver(),
- Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 1);
- wifiMacAddressPreferenceController.displayPreference(mScreen);
- verify(mPreference, times(2)).setSummary(TEST_MAC_ADDRESS);
+ Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED,
+ AbstractWifiMacAddressPreferenceController.ON);
+ doReturn(null).when(mWifiInfo).getMacAddress();
+
+ mController.displayPreference(mScreen);
+
+ assertThat(mPreference.getSummary())
+ .isEqualTo(mContext.getString(R.string.status_unavailable));
+ }
+
+ @Test
+ public void updateConnectivity_defaultMacWithMacRandomizationOn_setMacRandomized() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED,
+ AbstractWifiMacAddressPreferenceController.ON);
+ doReturn(WifiInfo.DEFAULT_MAC_ADDRESS).when(mWifiInfo).getMacAddress();
+
+ mController.displayPreference(mScreen);
+
+ assertThat(mPreference.getSummary())
+ .isEqualTo(mContext.getString(R.string.wifi_status_mac_randomized));
+ }
+
+ @Test
+ public void updateConnectivity_validMacWithMacRandomizationOn_setValidMac() {
+ Settings.Global.putInt(mContext.getContentResolver(),
+ Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED,
+ AbstractWifiMacAddressPreferenceController.ON);
+ doReturn(TEST_MAC_ADDRESS).when(mWifiInfo).getMacAddress();
+
+ mController.displayPreference(mScreen);
- doReturn(WifiInfo.DEFAULT_MAC_ADDRESS).when(wifiInfo).getMacAddress();
- wifiMacAddressPreferenceController.displayPreference(mScreen);
- verify(mPreference).setSummary(R.string.wifi_status_mac_randomized);
+ assertThat(mPreference.getSummary()).isEqualTo(TEST_MAC_ADDRESS);
}
private static class ConcreteWifiMacAddressPreferenceController