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