Merge "Display that MAC is randomized in About Phones" into pi-dev

This commit is contained in:
Jong Wook Kim
2018-03-19 18:14:08 +00:00
committed by Android (Google) Code Review
3 changed files with 27 additions and 8 deletions

View File

@@ -1051,6 +1051,9 @@
<!-- About phone, status item value if the actual value is not available. -->
<string name="status_unavailable">Unavailable</string>
<!-- About phone, status value for MAC address when MAC randomization feature is enabled and the device is disconnected. -->
<string name="wifi_status_mac_randomized">MAC is randomized</string>
<!-- Summary to show how many devices are connected in wifi hotspot [CHAR LIMIT=NONE] -->
<plurals name="wifi_tether_connected_summary">
<item quantity="one">%1$d device connected</item>

View File

@@ -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);
}
}
}

View File

@@ -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