diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml index fe785c2e5c915..589608a8caf86 100644 --- a/packages/SettingsLib/res/values/strings.xml +++ b/packages/SettingsLib/res/values/strings.xml @@ -1051,6 +1051,9 @@ Unavailable + + MAC is randomized + %1$d device connected diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java index d57b64f0c0cb4..2a86993124f65 100644 --- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java +++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java @@ -21,6 +21,7 @@ import android.content.Context; import android.net.ConnectivityManager; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; +import android.provider.Settings; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; @@ -78,11 +79,16 @@ public abstract class AbstractWifiMacAddressPreferenceController @Override protected void updateConnectivity() { WifiInfo wifiInfo = mWifiManager.getConnectionInfo(); - String macAddress = wifiInfo == null ? null : wifiInfo.getMacAddress(); - if (!TextUtils.isEmpty(macAddress)) { - mWifiMacAddress.setSummary(macAddress); - } else { + final int macRandomizationMode = Settings.Global.getInt(mContext.getContentResolver(), + Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 0); + 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)) { + mWifiMacAddress.setSummary(R.string.wifi_status_mac_randomized); + } 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 d546f11d9998d..b7bc661116e94 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 @@ -19,6 +19,7 @@ package com.android.settingslib.deviceinfo; 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 android.annotation.SuppressLint; @@ -26,6 +27,7 @@ import android.content.Context; import android.net.ConnectivityManager; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; +import android.provider.Settings; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceScreen; @@ -54,6 +56,8 @@ public class WifiMacAddressPreferenceControllerTest { @Mock private Preference mPreference; + private static final String TEST_MAC_ADDRESS = "00:11:22:33:44:55"; + @Before public void setUp() { MockitoAnnotations.initMocks(this); @@ -80,7 +84,6 @@ public class WifiMacAddressPreferenceControllerTest { public void testWifiMacAddress() { final WifiManager wifiManager = mock(WifiManager.class); final WifiInfo wifiInfo = mock(WifiInfo.class); - doReturn("00:11:22:33:44:55").when(wifiInfo).getMacAddress(); doReturn(null).when(wifiManager).getConnectionInfo(); doReturn(wifiManager).when(mContext).getSystemService(WifiManager.class); @@ -89,14 +92,21 @@ public class WifiMacAddressPreferenceControllerTest { new ConcreteWifiMacAddressPreferenceController(mContext, mLifecycle); wifiMacAddressPreferenceController.displayPreference(mScreen); - verify(mPreference).setSummary(R.string.status_unavailable); doReturn(wifiInfo).when(wifiManager).getConnectionInfo(); - + doReturn(TEST_MAC_ADDRESS).when(wifiInfo).getMacAddress(); wifiMacAddressPreferenceController.displayPreference(mScreen); + verify(mPreference).setSummary(TEST_MAC_ADDRESS); - verify(mPreference).setSummary("00:11:22:33:44:55"); + Settings.Global.putInt(mContext.getContentResolver(), + Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 1); + wifiMacAddressPreferenceController.displayPreference(mScreen); + verify(mPreference, times(2)).setSummary(TEST_MAC_ADDRESS); + + doReturn(WifiInfo.DEFAULT_MAC_ADDRESS).when(wifiInfo).getMacAddress(); + wifiMacAddressPreferenceController.displayPreference(mScreen); + verify(mPreference).setSummary(R.string.wifi_status_mac_randomized); } private static class ConcreteWifiMacAddressPreferenceController