From 6b93d8339a26b6e5610bd9792460ba8117c88d91 Mon Sep 17 00:00:00 2001 From: xshu Date: Fri, 14 Dec 2018 13:15:34 -0800 Subject: [PATCH] About phone page getFactoryMacAddress Currently, the about phone page is displaying whatever the current MAC address is, and with MAC randomization enabled by default, this MAC could change arbitrarily and depending on the currently connect network's settings. Instead of showing the current MAC, we should be displaying the factory MAC address, which is more relevant in the about phone page. Bug: 111634904 Test: atest WifiMacAddressPreferenceControllerTest Test: enable mac randomizations and verify that in the about phone page the factory MAC is displayed instead of the randomized MAC. Change-Id: Ia658ae86ee7807e226aa6f560b935af27774fcf1 --- ...actWifiMacAddressPreferenceController.java | 16 ++-- ...ifiMacAddressPreferenceControllerTest.java | 93 +------------------ 2 files changed, 11 insertions(+), 98 deletions(-) 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