Merge "Display "MAC address is randomized" in Wifi Preference Page" into pi-dev

am: 8a022d8693

Change-Id: Id2c0523182ccbfb629f9a296bb8b6117651f2b4e
This commit is contained in:
Jong Wook Kim
2018-03-19 19:15:17 +00:00
committed by android-build-merger
2 changed files with 42 additions and 4 deletions

View File

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

View File

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