summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Weng Su <wengsu@google.com> 2023-08-26 02:21:30 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2023-08-26 02:21:30 +0000
commit40e7b45bdb7bf46e71ddf012bca6ead7c00f57d4 (patch)
treee10af5e8c837de51849689d45abe02e1e284609a
parentbf8019c0fd2c60b4bc826fd7e7f4570da879617f (diff)
parent29ce308aad3f93a17b361c39d9a92337961244af (diff)
Merge "Show Hotspot network icon (QS Internet Dialog)" into udc-qpr-dev
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetAdapter.java16
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java31
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetAdapterTest.java31
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogControllerTest.java37
4 files changed, 66 insertions, 49 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetAdapter.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetAdapter.java
index 2cc3986c6e82..176983e4b444 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetAdapter.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetAdapter.java
@@ -132,9 +132,6 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern
final Context mContext;
final InternetDialogController mInternetDialogController;
- @VisibleForTesting
- protected WifiUtils.InternetIconInjector mWifiIconInjector;
-
InternetViewHolder(View view, InternetDialogController internetDialogController) {
super(view);
mContext = view.getContext();
@@ -146,12 +143,10 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern
mWifiTitleText = view.requireViewById(R.id.wifi_title);
mWifiSummaryText = view.requireViewById(R.id.wifi_summary);
mWifiEndIcon = view.requireViewById(R.id.wifi_end_icon);
- mWifiIconInjector = mInternetDialogController.getWifiIconInjector();
}
void onBind(@NonNull WifiEntry wifiEntry) {
- mWifiIcon.setImageDrawable(
- getWifiDrawable(wifiEntry.getLevel(), wifiEntry.shouldShowXLevelIcon()));
+ mWifiIcon.setImageDrawable(getWifiDrawable(wifiEntry));
setWifiNetworkLayout(wifiEntry.getTitle(),
Html.fromHtml(wifiEntry.getSummary(false), Html.FROM_HTML_MODE_LEGACY));
@@ -213,13 +208,8 @@ public class InternetAdapter extends RecyclerView.Adapter<InternetAdapter.Intern
}
@Nullable
- Drawable getWifiDrawable(int level, boolean hasNoInternet) {
- // If the Wi-Fi level is equal to WIFI_LEVEL_UNREACHABLE(-1), then a null drawable
- // will be returned.
- if (level == WifiEntry.WIFI_LEVEL_UNREACHABLE) {
- return null;
- }
- final Drawable drawable = mWifiIconInjector.getIcon(hasNoInternet, level);
+ Drawable getWifiDrawable(@NonNull WifiEntry wifiEntry) {
+ Drawable drawable = mInternetDialogController.getWifiDrawable(wifiEntry);
if (drawable == null) {
return null;
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java
index ec1258049486..871d9c26cacc 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialogController.java
@@ -18,6 +18,7 @@ package com.android.systemui.qs.tiles.dialog;
import static com.android.settingslib.mobile.MobileMappings.getIconKey;
import static com.android.settingslib.mobile.MobileMappings.mapIconSets;
+import static com.android.settingslib.wifi.WifiUtils.getHotspotIconResource;
import static com.android.wifitrackerlib.WifiEntry.CONNECTED_STATE_CONNECTED;
import android.animation.Animator;
@@ -89,6 +90,7 @@ import com.android.systemui.toast.SystemUIToast;
import com.android.systemui.toast.ToastFactory;
import com.android.systemui.util.CarrierConfigTracker;
import com.android.systemui.util.settings.GlobalSettings;
+import com.android.wifitrackerlib.HotspotNetworkEntry;
import com.android.wifitrackerlib.MergedCarrierEntry;
import com.android.wifitrackerlib.WifiEntry;
@@ -454,11 +456,7 @@ public class InternetDialogController implements AccessPointController.AccessPoi
@Nullable
Drawable getInternetWifiDrawable(@NonNull WifiEntry wifiEntry) {
- if (wifiEntry.getLevel() == WifiEntry.WIFI_LEVEL_UNREACHABLE) {
- return null;
- }
- final Drawable drawable =
- mWifiIconInjector.getIcon(wifiEntry.shouldShowXLevelIcon(), wifiEntry.getLevel());
+ Drawable drawable = getWifiDrawable(wifiEntry);
if (drawable == null) {
return null;
}
@@ -466,6 +464,25 @@ public class InternetDialogController implements AccessPointController.AccessPoi
return drawable;
}
+ /**
+ * Returns a Wi-Fi icon {@link Drawable}.
+ *
+ * @param wifiEntry {@link WifiEntry}
+ */
+ @Nullable
+ Drawable getWifiDrawable(@NonNull WifiEntry wifiEntry) {
+ if (wifiEntry instanceof HotspotNetworkEntry) {
+ int deviceType = ((HotspotNetworkEntry) wifiEntry).getDeviceType();
+ return mContext.getDrawable(getHotspotIconResource(deviceType));
+ }
+ // If the Wi-Fi level is equal to WIFI_LEVEL_UNREACHABLE(-1), then a null drawable
+ // will be returned.
+ if (wifiEntry.getLevel() == WifiEntry.WIFI_LEVEL_UNREACHABLE) {
+ return null;
+ }
+ return mWifiIconInjector.getIcon(wifiEntry.shouldShowXLevelIcon(), wifiEntry.getLevel());
+ }
+
Drawable getSignalStrengthDrawable(int subId) {
Drawable drawable = mContext.getDrawable(
R.drawable.ic_signal_strength_zero_bar_no_internet);
@@ -1314,10 +1331,6 @@ public class InternetDialogController implements AccessPointController.AccessPoi
mDefaultDataSubId = defaultDataSubId;
}
- public WifiUtils.InternetIconInjector getWifiIconInjector() {
- return mWifiIconInjector;
- }
-
interface InternetDialogCallback {
void onRefreshCarrierInfo();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetAdapterTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetAdapterTest.java
index f306fd601136..df037c0661f3 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetAdapterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetAdapterTest.java
@@ -5,14 +5,9 @@ import static com.android.systemui.qs.tiles.dialog.InternetDialogController.MAX_
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyBoolean;
-import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.anyString;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -25,7 +20,6 @@ import android.widget.LinearLayout;
import androidx.test.filters.SmallTest;
-import com.android.settingslib.wifi.WifiUtils;
import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
import com.android.wifitrackerlib.WifiEntry;
@@ -66,7 +60,7 @@ public class InternetAdapterTest extends SysuiTestCase {
@Mock
private InternetDialogController mInternetDialogController;
@Mock
- private WifiUtils.InternetIconInjector mWifiIconInjector;
+ private Drawable mWifiDrawable;
@Mock
private Drawable mGearIcon;
@Mock
@@ -90,7 +84,6 @@ public class InternetAdapterTest extends SysuiTestCase {
mInternetAdapter = new InternetAdapter(mInternetDialogController);
mViewHolder = mInternetAdapter.onCreateViewHolder(new LinearLayout(mContext), 0);
mInternetAdapter.setWifiEntries(Arrays.asList(mWifiEntry), 1 /* wifiEntriesCount */);
- mViewHolder.mWifiIconInjector = mWifiIconInjector;
}
@Test
@@ -125,31 +118,21 @@ public class InternetAdapterTest extends SysuiTestCase {
}
@Test
- public void onBindViewHolder_wifiLevelUnreachable_shouldNotGetWifiIcon() {
- reset(mWifiIconInjector);
- when(mWifiEntry.getLevel()).thenReturn(WifiEntry.WIFI_LEVEL_UNREACHABLE);
+ public void onBindViewHolder_getWifiDrawableNull_noCrash() {
+ when(mInternetDialogController.getWifiDrawable(any())).thenReturn(null);
mInternetAdapter.onBindViewHolder(mViewHolder, 0);
- verify(mWifiIconInjector, never()).getIcon(anyBoolean(), anyInt());
+ assertThat(mViewHolder.mWifiIcon.getDrawable()).isNull();
}
@Test
- public void onBindViewHolder_shouldNotShowXLevelIcon_getIconWithInternet() {
- when(mWifiEntry.shouldShowXLevelIcon()).thenReturn(false);
+ public void onBindViewHolder_getWifiDrawableNotNull_setWifiIconDrawable() {
+ when(mInternetDialogController.getWifiDrawable(any())).thenReturn(mWifiDrawable);
mInternetAdapter.onBindViewHolder(mViewHolder, 0);
- verify(mWifiIconInjector).getIcon(eq(false) /* noInternet */, anyInt());
- }
-
- @Test
- public void onBindViewHolder_shouldShowXLevelIcon_getIconWithNoInternet() {
- when(mWifiEntry.shouldShowXLevelIcon()).thenReturn(true);
-
- mInternetAdapter.onBindViewHolder(mViewHolder, 0);
-
- verify(mWifiIconInjector).getIcon(eq(true) /* noInternet */, anyInt());
+ assertThat(mViewHolder.mWifiIcon.getDrawable()).isEqualTo(mWifiDrawable);
}
@Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogControllerTest.java
index 5b3068744df0..8cddc1b8e7ab 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogControllerTest.java
@@ -1,11 +1,13 @@
package com.android.systemui.qs.tiles.dialog;
+import static android.net.wifi.sharedconnectivity.app.NetworkProviderInfo.DEVICE_TYPE_PHONE;
import static android.provider.Settings.Global.AIRPLANE_MODE_ON;
import static android.telephony.SignalStrength.NUM_SIGNAL_STRENGTH_BINS;
import static android.telephony.SignalStrength.SIGNAL_STRENGTH_GREAT;
import static android.telephony.SignalStrength.SIGNAL_STRENGTH_POOR;
import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
+import static com.android.settingslib.wifi.WifiUtils.getHotspotIconResource;
import static com.android.systemui.qs.tiles.dialog.InternetDialogController.TOAST_PARAMS_HORIZONTAL_WEIGHT;
import static com.android.systemui.qs.tiles.dialog.InternetDialogController.TOAST_PARAMS_VERTICAL_WEIGHT;
import static com.android.wifitrackerlib.WifiEntry.WIFI_LEVEL_MAX;
@@ -75,6 +77,7 @@ import com.android.systemui.util.CarrierConfigTracker;
import com.android.systemui.util.concurrency.FakeExecutor;
import com.android.systemui.util.settings.GlobalSettings;
import com.android.systemui.util.time.FakeSystemClock;
+import com.android.wifitrackerlib.HotspotNetworkEntry;
import com.android.wifitrackerlib.MergedCarrierEntry;
import com.android.wifitrackerlib.WifiEntry;
@@ -511,12 +514,40 @@ public class InternetDialogControllerTest extends SysuiTestCase {
}
@Test
- public void getInternetWifiDrawable_withWifiLevelUnreachable_returnNull() {
+ public void getWifiDrawable_withWifiLevelUnreachable_returnNull() {
when(mConnectedEntry.getLevel()).thenReturn(WIFI_LEVEL_UNREACHABLE);
- Drawable drawable = mInternetDialogController.getInternetWifiDrawable(mConnectedEntry);
+ assertThat(mInternetDialogController.getWifiDrawable(mConnectedEntry)).isNull();
+ }
+
+ @Test
+ public void getWifiDrawable_withHotspotNetworkEntry_returnHotspotDrawable() {
+ HotspotNetworkEntry entry = mock(HotspotNetworkEntry.class);
+ when(entry.getDeviceType()).thenReturn(DEVICE_TYPE_PHONE);
+ Drawable hotspotDrawable = mock(Drawable.class);
+ mTestableResources.addOverride(getHotspotIconResource(DEVICE_TYPE_PHONE), hotspotDrawable);
+
+ assertThat(mInternetDialogController.getWifiDrawable(entry)).isEqualTo(hotspotDrawable);
+ }
+
+ @Test
+ public void getWifiDrawable_withWifiEntryNotShowXLevelIcon_getIconWithInternet() {
+ when(mWifiEntry1.getLevel()).thenReturn(WIFI_LEVEL_MAX);
+ when(mWifiEntry1.shouldShowXLevelIcon()).thenReturn(false);
+
+ mInternetDialogController.getWifiDrawable(mWifiEntry1);
+
+ verify(mWifiIconInjector).getIcon(eq(false) /* noInternet */, anyInt());
+ }
+
+ @Test
+ public void getWifiDrawable_withWifiEntryShowXLevelIcon_getIconWithNoInternet() {
+ when(mWifiEntry1.getLevel()).thenReturn(WIFI_LEVEL_MAX);
+ when(mWifiEntry1.shouldShowXLevelIcon()).thenReturn(true);
+
+ mInternetDialogController.getWifiDrawable(mWifiEntry1);
- assertThat(drawable).isNull();
+ verify(mWifiIconInjector).getIcon(eq(true) /* noInternet */, anyInt());
}
@Test