diff --git a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java index 9699294df587b..71778215e0797 100644 --- a/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java +++ b/packages/SettingsLib/src/com/android/settingslib/deviceinfo/AbstractWifiMacAddressPreferenceController.java @@ -19,9 +19,7 @@ package com.android.settingslib.deviceinfo; import android.annotation.SuppressLint; import android.content.Context; import android.net.ConnectivityManager; -import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; -import android.provider.Settings; import android.text.TextUtils; import androidx.annotation.VisibleForTesting; @@ -83,15 +81,13 @@ public abstract class AbstractWifiMacAddressPreferenceController @SuppressLint("HardwareIds") @Override protected void updateConnectivity() { - WifiInfo wifiInfo = mWifiManager.getConnectionInfo(); - final int macRandomizationMode = Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, OFF); - final String macAddress = wifiInfo == null ? null : wifiInfo.getMacAddress(); + final String[] macAddresses = mWifiManager.getFactoryMacAddresses(); + String macAddress = null; + if (macAddresses != null && macAddresses.length > 0) { + macAddress = macAddresses[0]; + } - if (macRandomizationMode == ON && WifiInfo.DEFAULT_MAC_ADDRESS.equals(macAddress)) { - mWifiMacAddress.setSummary(R.string.wifi_status_mac_randomized); - } else if (TextUtils.isEmpty(macAddress) - || WifiInfo.DEFAULT_MAC_ADDRESS.equals(macAddress)) { + if (TextUtils.isEmpty(macAddress)) { mWifiMacAddress.setSummary(R.string.status_unavailable); } 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 74e5bf5a8034e..1f7f4bc1f6b62 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 @@ -27,7 +27,6 @@ import android.content.Context; import android.net.ConnectivityManager; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; -import android.provider.Settings; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; @@ -93,105 +92,23 @@ public class WifiMacAddressPreferenceControllerTest { } @Test - public void updateConnectivity_nullWifiInfoWithMacRandomizationOff_setMacUnavailable() { - Settings.Global.putInt(mContext.getContentResolver(), - Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, - AbstractWifiMacAddressPreferenceController.OFF); - doReturn(null).when(mWifiManager).getConnectionInfo(); - + public void updateConnectivity_null_setMacUnavailable() { + doReturn(null).when(mWifiManager).getFactoryMacAddresses(); mController.displayPreference(mScreen); - assertThat(mPreference.getSummary()) .isEqualTo(mContext.getString(R.string.status_unavailable)); } @Test - public void updateConnectivity_nullMacWithMacRandomizationOff_setMacUnavailable() { - Settings.Global.putInt(mContext.getContentResolver(), - Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, - AbstractWifiMacAddressPreferenceController.OFF); - doReturn(null).when(mWifiInfo).getMacAddress(); - + public void updateConnectivity_validMac_setValidMac() { + final String[] macAddresses = new String[]{TEST_MAC_ADDRESS}; + doReturn(macAddresses).when(mWifiManager).getFactoryMacAddresses(); mController.displayPreference(mScreen); - - assertThat(mPreference.getSummary()) - .isEqualTo(mContext.getString(R.string.status_unavailable)); - } - - @Test - public void updateConnectivity_defaultMacWithMacRandomizationOff_setMacUnavailable() { - Settings.Global.putInt(mContext.getContentResolver(), - Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, - AbstractWifiMacAddressPreferenceController.OFF); - doReturn(WifiInfo.DEFAULT_MAC_ADDRESS).when(mWifiInfo).getMacAddress(); - - mController.displayPreference(mScreen); - - assertThat(mPreference.getSummary()) - .isEqualTo(mContext.getString(R.string.status_unavailable)); - } - - @Test - public void updateConnectivity_validMacWithMacRandomizationOff_setValidMac() { - Settings.Global.putInt(mContext.getContentResolver(), - Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, - AbstractWifiMacAddressPreferenceController.OFF); - doReturn(TEST_MAC_ADDRESS).when(mWifiInfo).getMacAddress(); - - mController.displayPreference(mScreen); - assertThat(mPreference.getSummary()).isEqualTo(TEST_MAC_ADDRESS); - } - @Test - public void updateConnectivity_nullWifiInfoWithMacRandomizationOn_setMacUnavailable() { - Settings.Global.putInt(mContext.getContentResolver(), - Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, - AbstractWifiMacAddressPreferenceController.ON); - doReturn(null).when(mWifiManager).getConnectionInfo(); - mController.displayPreference(mScreen); - assertThat(mPreference.getSummary()) - .isEqualTo(mContext.getString(R.string.status_unavailable)); - } - @Test - public void updateConnectivity_nullMacWithMacRandomizationOn_setMacUnavailable() { - Settings.Global.putInt(mContext.getContentResolver(), - Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, - AbstractWifiMacAddressPreferenceController.ON); - doReturn(null).when(mWifiInfo).getMacAddress(); - - mController.displayPreference(mScreen); - - assertThat(mPreference.getSummary()) - .isEqualTo(mContext.getString(R.string.status_unavailable)); - } - - @Test - public void updateConnectivity_defaultMacWithMacRandomizationOn_setMacRandomized() { - Settings.Global.putInt(mContext.getContentResolver(), - Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, - AbstractWifiMacAddressPreferenceController.ON); - doReturn(WifiInfo.DEFAULT_MAC_ADDRESS).when(mWifiInfo).getMacAddress(); - - mController.displayPreference(mScreen); - - assertThat(mPreference.getSummary()) - .isEqualTo(mContext.getString(R.string.wifi_status_mac_randomized)); - } - - @Test - public void updateConnectivity_validMacWithMacRandomizationOn_setValidMac() { - Settings.Global.putInt(mContext.getContentResolver(), - Settings.Global.WIFI_CONNECTED_MAC_RANDOMIZATION_ENABLED, - AbstractWifiMacAddressPreferenceController.ON); - doReturn(TEST_MAC_ADDRESS).when(mWifiInfo).getMacAddress(); - - mController.displayPreference(mScreen); - - assertThat(mPreference.getSummary()).isEqualTo(TEST_MAC_ADDRESS); } private static class ConcreteWifiMacAddressPreferenceController