diff options
| author | 2023-08-26 02:21:30 +0000 | |
|---|---|---|
| committer | 2023-08-26 02:21:30 +0000 | |
| commit | 40e7b45bdb7bf46e71ddf012bca6ead7c00f57d4 (patch) | |
| tree | e10af5e8c837de51849689d45abe02e1e284609a | |
| parent | bf8019c0fd2c60b4bc826fd7e7f4570da879617f (diff) | |
| parent | 29ce308aad3f93a17b361c39d9a92337961244af (diff) | |
Merge "Show Hotspot network icon (QS Internet Dialog)" into udc-qpr-dev
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 |