Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0c3904eb authored by Jong Wook Kim's avatar Jong Wook Kim
Browse files

Display that MAC is randomized in About Phones

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.

In such cases, display "MAC address is randomized" instead of an invalid
MAC address in About Phones page.

Bug: 73663275
Test: make RunSettingsLibRoboTests -j40
Change-Id: I0a4df2b1b0823632b26f90e097c26f47dd5a0a67
parent f8cb545a
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -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>
+10 −4
Original line number Diff line number Diff line
@@ -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);
        }
    }
}
+13 −3
Original line number Diff line number Diff line
@@ -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);

        Settings.Global.putInt(mContext.getContentResolver(),
                Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, 1);
        wifiMacAddressPreferenceController.displayPreference(mScreen);
        verify(mPreference, times(2)).setSummary(TEST_MAC_ADDRESS);

        verify(mPreference).setSummary("00:11:22:33:44:55");
        doReturn(WifiInfo.DEFAULT_MAC_ADDRESS).when(wifiInfo).getMacAddress();
        wifiMacAddressPreferenceController.displayPreference(mScreen);
        verify(mPreference).setSummary(R.string.wifi_status_mac_randomized);
    }

    private static class ConcreteWifiMacAddressPreferenceController