Display "MAC address is randomized" in Wifi Preference Page
When Connected MAC Randomization is enabled and the device is disconnected, there isn't a valid MAC address to display since we don't know what the device's next MAC address is going to be. Instead of displaying the MAC address used for previous connection, tell users that "MAC address is randomized." Bug: 73663275 Test: make -j40 RunSettingsRoboTests Change-Id: Id5352926f221e3215734d1c198f2072940f82695
This commit is contained in:
@@ -22,6 +22,7 @@ import android.content.Intent;
|
|||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.net.wifi.WifiInfo;
|
import android.net.wifi.WifiInfo;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
|
import android.provider.Settings;
|
||||||
import android.support.v4.text.BidiFormatter;
|
import android.support.v4.text.BidiFormatter;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.support.v7.preference.PreferenceScreen;
|
import android.support.v7.preference.PreferenceScreen;
|
||||||
@@ -96,10 +97,18 @@ public class WifiInfoPreferenceController extends AbstractPreferenceController
|
|||||||
public void updateWifiInfo() {
|
public void updateWifiInfo() {
|
||||||
if (mWifiMacAddressPref != null) {
|
if (mWifiMacAddressPref != null) {
|
||||||
final WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
|
final WifiInfo wifiInfo = mWifiManager.getConnectionInfo();
|
||||||
|
final int macRandomizationMode = Settings.Global.getInt(mContext.getContentResolver(),
|
||||||
|
Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 0);
|
||||||
final String macAddress = wifiInfo == null ? null : wifiInfo.getMacAddress();
|
final String macAddress = wifiInfo == null ? null : wifiInfo.getMacAddress();
|
||||||
mWifiMacAddressPref.setSummary(!TextUtils.isEmpty(macAddress)
|
|
||||||
? macAddress
|
if (TextUtils.isEmpty(macAddress)) {
|
||||||
: mContext.getString(R.string.status_unavailable));
|
mWifiMacAddressPref.setSummary(R.string.status_unavailable);
|
||||||
|
} else if (macRandomizationMode == 1
|
||||||
|
&& WifiInfo.DEFAULT_MAC_ADDRESS.equals(macAddress)) {
|
||||||
|
mWifiMacAddressPref.setSummary(R.string.wifi_status_mac_randomized);
|
||||||
|
} else {
|
||||||
|
mWifiMacAddressPref.setSummary(macAddress);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (mWifiIpAddressPref != null) {
|
if (mWifiIpAddressPref != null) {
|
||||||
final String ipAddress = Utils.getWifiIpAddresses(mContext);
|
final String ipAddress = Utils.getWifiIpAddresses(mContext);
|
||||||
|
@@ -28,10 +28,13 @@ import android.arch.lifecycle.LifecycleOwner;
|
|||||||
import android.content.BroadcastReceiver;
|
import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
|
import android.net.wifi.WifiInfo;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
|
import android.provider.Settings;
|
||||||
import android.support.v7.preference.Preference;
|
import android.support.v7.preference.Preference;
|
||||||
import android.support.v7.preference.PreferenceScreen;
|
import android.support.v7.preference.PreferenceScreen;
|
||||||
|
|
||||||
|
import com.android.settings.R;
|
||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||||
|
|
||||||
@@ -55,11 +58,15 @@ public class WifiInfoPreferenceControllerTest {
|
|||||||
private Preference mIpPreference;
|
private Preference mIpPreference;
|
||||||
@Mock
|
@Mock
|
||||||
private Preference mMacPreference;
|
private Preference mMacPreference;
|
||||||
|
@Mock
|
||||||
|
private WifiInfo mWifiInfo;
|
||||||
|
|
||||||
private Lifecycle mLifecycle;
|
private Lifecycle mLifecycle;
|
||||||
private LifecycleOwner mLifecycleOwner;
|
private LifecycleOwner mLifecycleOwner;
|
||||||
private WifiInfoPreferenceController mController;
|
private WifiInfoPreferenceController mController;
|
||||||
|
|
||||||
|
private static final String TEST_MAC_ADDRESS = "42:0a:23:43:ac:02";
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
MockitoAnnotations.initMocks(this);
|
MockitoAnnotations.initMocks(this);
|
||||||
@@ -70,6 +77,7 @@ public class WifiInfoPreferenceControllerTest {
|
|||||||
when(mScreen.findPreference(anyString()))
|
when(mScreen.findPreference(anyString()))
|
||||||
.thenReturn(mMacPreference)
|
.thenReturn(mMacPreference)
|
||||||
.thenReturn(mIpPreference);
|
.thenReturn(mIpPreference);
|
||||||
|
when(mWifiManager.getConnectionInfo()).thenReturn(mWifiInfo);
|
||||||
mController = new WifiInfoPreferenceController(mContext, mLifecycle, mWifiManager);
|
mController = new WifiInfoPreferenceController(mContext, mLifecycle, mWifiManager);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -95,11 +103,32 @@ public class WifiInfoPreferenceControllerTest {
|
|||||||
@Test
|
@Test
|
||||||
public void onResume_shouldUpdateWifiInfo() {
|
public void onResume_shouldUpdateWifiInfo() {
|
||||||
when(mWifiManager.getCurrentNetwork()).thenReturn(null);
|
when(mWifiManager.getCurrentNetwork()).thenReturn(null);
|
||||||
|
when(mWifiInfo.getMacAddress()).thenReturn(TEST_MAC_ADDRESS);
|
||||||
|
|
||||||
mController.displayPreference(mScreen);
|
mController.displayPreference(mScreen);
|
||||||
mController.onResume();
|
mController.onResume();
|
||||||
|
|
||||||
verify(mMacPreference).setSummary(any());
|
verify(mMacPreference).setSummary(TEST_MAC_ADDRESS);
|
||||||
verify(mIpPreference).setSummary(any());
|
verify(mIpPreference).setSummary(any());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testUpdateMacAddress() {
|
||||||
|
when(mWifiManager.getCurrentNetwork()).thenReturn(null);
|
||||||
|
Settings.Global.putInt(mContext.getContentResolver(),
|
||||||
|
Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 1);
|
||||||
|
mController.displayPreference(mScreen);
|
||||||
|
|
||||||
|
when(mWifiInfo.getMacAddress()).thenReturn(null);
|
||||||
|
mController.updateWifiInfo();
|
||||||
|
verify(mMacPreference).setSummary(R.string.status_unavailable);
|
||||||
|
|
||||||
|
when(mWifiInfo.getMacAddress()).thenReturn(WifiInfo.DEFAULT_MAC_ADDRESS);
|
||||||
|
mController.updateWifiInfo();
|
||||||
|
verify(mMacPreference).setSummary(R.string.wifi_status_mac_randomized);
|
||||||
|
|
||||||
|
when(mWifiInfo.getMacAddress()).thenReturn(TEST_MAC_ADDRESS);
|
||||||
|
mController.updateWifiInfo();
|
||||||
|
verify(mMacPreference).setSummary(TEST_MAC_ADDRESS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user