From d1ca05152f68af514de8df0f7dd6aa114e0ffd46 Mon Sep 17 00:00:00 2001 From: Weng Su Date: Wed, 19 Jul 2023 06:42:25 +0800 Subject: [PATCH] Add Instant Tether network icon - Add hotspot device type icons without signal strength - DEVICE_TYPE_PHONE - DEVICE_TYPE_TABLET - DEVICE_TYPE_LAPTOP - DEVICE_TYPE_WATCH - DEVICE_TYPE_AUTO Bug: 268550769 Bug: 290805980 Test: manual test make RunSettingsLibRoboTests ROBOTEST_FILTER=WifiUtilsTest Change-Id: I02f9c5e5168cb353cf87b9d76576024d9a038bc3 --- .../res/drawable/ic_hotspot_auto.xml | 25 +++++++++++++++++++ .../res/drawable/ic_hotspot_laptop.xml | 25 +++++++++++++++++++ .../res/drawable/ic_hotspot_phone.xml | 25 +++++++++++++++++++ .../res/drawable/ic_hotspot_tablet.xml | 25 +++++++++++++++++++ .../res/drawable/ic_hotspot_watch.xml | 25 +++++++++++++++++++ .../android/settingslib/wifi/WifiUtils.java | 17 +++++++++++++ .../settingslib/wifi/WifiUtilsTest.java | 20 +++++++++++++++ 7 files changed, 162 insertions(+) create mode 100644 packages/SettingsLib/res/drawable/ic_hotspot_auto.xml create mode 100644 packages/SettingsLib/res/drawable/ic_hotspot_laptop.xml create mode 100644 packages/SettingsLib/res/drawable/ic_hotspot_phone.xml create mode 100644 packages/SettingsLib/res/drawable/ic_hotspot_tablet.xml create mode 100644 packages/SettingsLib/res/drawable/ic_hotspot_watch.xml diff --git a/packages/SettingsLib/res/drawable/ic_hotspot_auto.xml b/packages/SettingsLib/res/drawable/ic_hotspot_auto.xml new file mode 100644 index 0000000000000..ddd526ada46d4 --- /dev/null +++ b/packages/SettingsLib/res/drawable/ic_hotspot_auto.xml @@ -0,0 +1,25 @@ + + + + diff --git a/packages/SettingsLib/res/drawable/ic_hotspot_laptop.xml b/packages/SettingsLib/res/drawable/ic_hotspot_laptop.xml new file mode 100644 index 0000000000000..5e1b184c2a5ab --- /dev/null +++ b/packages/SettingsLib/res/drawable/ic_hotspot_laptop.xml @@ -0,0 +1,25 @@ + + + + diff --git a/packages/SettingsLib/res/drawable/ic_hotspot_phone.xml b/packages/SettingsLib/res/drawable/ic_hotspot_phone.xml new file mode 100644 index 0000000000000..baa793c0e9c15 --- /dev/null +++ b/packages/SettingsLib/res/drawable/ic_hotspot_phone.xml @@ -0,0 +1,25 @@ + + + + diff --git a/packages/SettingsLib/res/drawable/ic_hotspot_tablet.xml b/packages/SettingsLib/res/drawable/ic_hotspot_tablet.xml new file mode 100644 index 0000000000000..cf67cd9e2b778 --- /dev/null +++ b/packages/SettingsLib/res/drawable/ic_hotspot_tablet.xml @@ -0,0 +1,25 @@ + + + + diff --git a/packages/SettingsLib/res/drawable/ic_hotspot_watch.xml b/packages/SettingsLib/res/drawable/ic_hotspot_watch.xml new file mode 100644 index 0000000000000..252a0dbd62b22 --- /dev/null +++ b/packages/SettingsLib/res/drawable/ic_hotspot_watch.xml @@ -0,0 +1,25 @@ + + + + diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java index afab0469d114b..b9a4647528247 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java @@ -27,6 +27,7 @@ import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiConfiguration.NetworkSelectionStatus; import android.net.wifi.WifiInfo; +import android.net.wifi.sharedconnectivity.app.NetworkProviderInfo; import android.os.Bundle; import android.os.SystemClock; import android.util.Log; @@ -330,6 +331,22 @@ public class WifiUtils { return noInternet ? NO_INTERNET_WIFI_PIE[wifiLevel] : WIFI_PIE[wifiLevel]; } + /** + * Returns the Hotspot network icon resource. + * + * @param deviceType The device type of Hotspot network + */ + public static int getHotspotIconResource(int deviceType) { + return switch (deviceType) { + case NetworkProviderInfo.DEVICE_TYPE_PHONE -> R.drawable.ic_hotspot_phone; + case NetworkProviderInfo.DEVICE_TYPE_TABLET -> R.drawable.ic_hotspot_tablet; + case NetworkProviderInfo.DEVICE_TYPE_LAPTOP -> R.drawable.ic_hotspot_laptop; + case NetworkProviderInfo.DEVICE_TYPE_WATCH -> R.drawable.ic_hotspot_watch; + case NetworkProviderInfo.DEVICE_TYPE_AUTO -> R.drawable.ic_hotspot_auto; + default -> R.drawable.ic_hotspot_phone; // Return phone icon as default. + }; + } + /** * Wrapper the {@link #getInternetIconResource} for testing compatibility. */ diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/WifiUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/WifiUtilsTest.java index b60dc6ae8de1b..529301138da33 100644 --- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/WifiUtilsTest.java +++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/wifi/WifiUtilsTest.java @@ -35,6 +35,7 @@ import android.net.wifi.ScanResult; import android.net.wifi.WifiConfiguration; import android.net.wifi.WifiManager; import android.net.wifi.WifiNetworkScoreCache; +import android.net.wifi.sharedconnectivity.app.NetworkProviderInfo; import android.os.Bundle; import android.os.Parcelable; import android.os.SystemClock; @@ -200,6 +201,25 @@ public class WifiUtilsTest { WifiUtils.getInternetIconResource(level, true /* noInternet*/); } + @Test + public void getHotspotIconResource_deviceTypeUnknown_shouldNotCrash() { + WifiUtils.getHotspotIconResource(NetworkProviderInfo.DEVICE_TYPE_UNKNOWN); + } + + @Test + public void getHotspotIconResource_deviceTypeExists_shouldNotNull() { + assertThat(WifiUtils.getHotspotIconResource(NetworkProviderInfo.DEVICE_TYPE_PHONE)) + .isNotNull(); + assertThat(WifiUtils.getHotspotIconResource(NetworkProviderInfo.DEVICE_TYPE_TABLET)) + .isNotNull(); + assertThat(WifiUtils.getHotspotIconResource(NetworkProviderInfo.DEVICE_TYPE_LAPTOP)) + .isNotNull(); + assertThat(WifiUtils.getHotspotIconResource(NetworkProviderInfo.DEVICE_TYPE_WATCH)) + .isNotNull(); + assertThat(WifiUtils.getHotspotIconResource(NetworkProviderInfo.DEVICE_TYPE_AUTO)) + .isNotNull(); + } + @Test public void testInternetIconInjector_getIcon_returnsCorrectValues() { WifiUtils.InternetIconInjector iconInjector = new WifiUtils.InternetIconInjector(mContext);