diff --git a/packages/SystemUI/res/anim/progress_indeterminate_horizontal_rect.xml b/packages/SystemUI/res/anim/progress_indeterminate_horizontal_rect.xml
new file mode 100644
index 0000000000000..13133cb451e41
--- /dev/null
+++ b/packages/SystemUI/res/anim/progress_indeterminate_horizontal_rect.xml
@@ -0,0 +1,25 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/progress_indeterminate_horizontal_material_trimmed.xml b/packages/SystemUI/res/drawable/progress_indeterminate_horizontal_material_trimmed.xml
new file mode 100644
index 0000000000000..95209f8eb8abf
--- /dev/null
+++ b/packages/SystemUI/res/drawable/progress_indeterminate_horizontal_material_trimmed.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/vector_drawable_progress_indeterminate_horizontal_trimmed.xml b/packages/SystemUI/res/drawable/vector_drawable_progress_indeterminate_horizontal_trimmed.xml
new file mode 100644
index 0000000000000..aec204f45aa7c
--- /dev/null
+++ b/packages/SystemUI/res/drawable/vector_drawable_progress_indeterminate_horizontal_trimmed.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/internet_connectivity_dialog.xml b/packages/SystemUI/res/layout/internet_connectivity_dialog.xml
index 7f22b71832a3d..f23085a66903f 100644
--- a/packages/SystemUI/res/layout/internet_connectivity_dialog.xml
+++ b/packages/SystemUI/res/layout/internet_connectivity_dialog.xml
@@ -17,6 +17,7 @@
@@ -46,7 +47,7 @@
android:gravity="center_vertical|center_horizontal"
android:layout_width="wrap_content"
android:layout_height="20dp"
- android:layout_marginTop="8dp"
+ android:layout_marginTop="4dp"
android:ellipsize="end"
android:maxLines="1"
android:fontFamily="google-sans"
@@ -54,18 +55,20 @@
+ android:id="@+id/divider"
+ android:layout_gravity="center_vertical|center_horizontal"
+ android:layout_width="340dp"
+ android:layout_height="4dp"
+ android:background="?androidprv:attr/colorSurfaceVariant"/>
+ android:layout_gravity="center_horizontal"
+ android:visibility="gone"
+ style="@style/TrimmedHorizontalProgressBar"/>
+ android:layout_marginEnd="@dimen/settingslib_switchbar_margin"
+ android:layout_marginStart="@dimen/settingslib_switchbar_margin"
+ android:layout_marginTop="16dp"
+ android:paddingStart="22dp"
+ android:paddingEnd="22dp">
@@ -120,10 +123,11 @@
android:gravity="start|center_vertical">
+ android:layout_marginEnd="@dimen/settingslib_switchbar_margin"
+ android:layout_marginStart="@dimen/settingslib_switchbar_margin"
+ android:paddingStart="22dp"
+ android:paddingEnd="22dp">
+ android:layout_marginEnd="@dimen/settingslib_switchbar_margin"
+ android:layout_marginStart="@dimen/settingslib_switchbar_margin"
+ android:paddingStart="22dp"
+ android:paddingEnd="22dp">
+ android:paddingStart="22dp"
+ android:paddingEnd="22dp">
+ android:layout_marginStart="16dp">
+ android:paddingStart="22dp"
+ android:paddingEnd="22dp">
?androidprv:attr/colorAccentPrimaryVariant
?androidprv:attr/colorAccentSecondaryVariant
- #ff000000
- #808080
+ #191C18
+ #41493D
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index ca6fd4adbc084..d25474255bfc5 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -942,4 +942,13 @@
- @dimen/settingslib_min_switch_width
+
+
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 44c1b7bd7332f..e346044e746de 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
@@ -19,7 +19,6 @@ package com.android.systemui.qs.tiles.dialog;
import static com.android.wifitrackerlib.WifiEntry.SECURITY_NONE;
import static com.android.wifitrackerlib.WifiEntry.SECURITY_OWE;
-import android.annotation.ColorInt;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
@@ -35,10 +34,10 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
-import androidx.annotation.VisibleForTesting;
import androidx.recyclerview.widget.RecyclerView;
import com.android.settingslib.Utils;
+import com.android.settingslib.wifi.WifiUtils;
import com.android.systemui.R;
import com.android.wifitrackerlib.WifiEntry;
@@ -98,8 +97,7 @@ public class InternetAdapter extends RecyclerView.Adapter wifiAp.getConnectedState()
- != WifiEntry.CONNECTED_STATE_CONNECTED)
+ .filter(wifiEntry -> !wifiEntry.isDefaultNetwork())
.limit(getItemCount())
.collect(Collectors.toList());
}
@@ -109,21 +107,21 @@ public class InternetAdapter extends RecyclerView.Adapter shared = new AtomicReference<>();
- final @ColorInt int tint = Utils.getColorAttrDefaultColor(mContext,
- android.R.attr.colorControlNormal);
- Drawable signalDrawable = mContext.getDrawable(
- Utils.getWifiIconResource(wifiEntry.getLevel()));
- signalDrawable.setTint(tint);
- shared.set(signalDrawable);
- drawable = shared.get();
- return drawable;
+ Drawable getWifiDrawable(@NonNull WifiEntry wifiEntry) throws Throwable {
+ final Drawable drawable = mWifiIconInjector.getIcon(wifiEntry.shouldShowXLevelIcon(),
+ wifiEntry.getLevel());
+ if (drawable == null) {
+ return null;
+ }
+ drawable.setTint(
+ Utils.getColorAttrDefaultColor(mContext, android.R.attr.textColorTertiary));
+ final AtomicReference shared = new AtomicReference<>();
+ shared.set(drawable);
+ return shared.get();
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java
index ce1c2fd08a4d9..a63d1f80f3947 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/dialog/InternetDialog.java
@@ -79,11 +79,11 @@ public class InternetDialog extends SystemUIDialog implements
InternetDialogController.InternetDialogCallback, Window.Callback {
private static final String TAG = "InternetDialog";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+
+ static final long PROGRESS_DELAY_MS = 2000L;
+
private final Handler mHandler;
private final LinearLayoutManager mLayoutManager;
- private final Runnable mHideProgressBarRunnable = () -> {
- setProgressBarVisible(false);
- };
@VisibleForTesting
protected InternetAdapter mAdapter;
@@ -91,6 +91,8 @@ public class InternetDialog extends SystemUIDialog implements
protected WifiManager mWifiManager;
@VisibleForTesting
protected View mDialogView;
+ @VisibleForTesting
+ protected WifiEntry mConnectedWifiEntry;
private InternetDialogFactory mInternetDialogFactory;
private SubscriptionManager mSubscriptionManager;
@@ -101,6 +103,7 @@ public class InternetDialog extends SystemUIDialog implements
private InternetDialogController mInternetDialogController;
private TextView mInternetDialogTitle;
private TextView mInternetDialogSubTitle;
+ private View mDivider;
private ProgressBar mProgressBar;
private LinearLayout mInternetListLayout;
private LinearLayout mConnectedWifListLayout;
@@ -122,12 +125,21 @@ public class InternetDialog extends SystemUIDialog implements
private Switch mWiFiToggle;
private Button mDoneButton;
private Drawable mBackgroundOn;
- private WifiEntry mConnectedWifiEntry;
private int mListMaxHeight;
private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
- private boolean mIsProgressBarVisible;
private boolean mCanConfigMobileData;
+ // Wi-Fi scanning progress bar
+ protected boolean mIsProgressBarVisible;
+ protected boolean mIsSearchingHidden;
+ protected final Runnable mHideProgressBarRunnable = () -> {
+ setProgressBarVisible(false);
+ };
+ protected Runnable mHideSearchingRunnable = () -> {
+ mIsSearchingHidden = true;
+ mInternetDialogSubTitle.setText(getSubtitleText());
+ };
+
private final ViewTreeObserver.OnGlobalLayoutListener mInternetListLayoutListener = () -> {
// Set max height for list
if (mInternetListLayout.getHeight() > mListMaxHeight) {
@@ -195,6 +207,7 @@ public class InternetDialog extends SystemUIDialog implements
mInternetDialogTitle = mDialogView.requireViewById(R.id.internet_dialog_title);
mInternetDialogSubTitle = mDialogView.requireViewById(R.id.internet_dialog_subtitle);
+ mDivider = mDialogView.requireViewById(R.id.divider);
mProgressBar = mDialogView.requireViewById(R.id.wifi_searching_progress);
mInternetListLayout = mDialogView.requireViewById(R.id.internet_list);
mMobileNetworkLayout = mDialogView.requireViewById(R.id.mobile_network_layout);
@@ -243,6 +256,7 @@ public class InternetDialog extends SystemUIDialog implements
Log.d(TAG, "onStop");
}
mHandler.removeCallbacks(mHideProgressBarRunnable);
+ mHandler.removeCallbacks(mHideSearchingRunnable);
mMobileNetworkLayout.setOnClickListener(null);
mMobileDataToggle.setOnCheckedChangeListener(null);
mConnectedWifListLayout.setOnClickListener(null);
@@ -327,14 +341,17 @@ public class InternetDialog extends SystemUIDialog implements
mMobileSummaryText.setVisibility(View.GONE);
}
mSignalIcon.setImageDrawable(getSignalStrengthDrawable());
- int titleColor = isCellularNetwork ? mContext.getColor(
- R.color.connected_network_primary_color) : Utils.getColorAttrDefaultColor(
- mContext, android.R.attr.textColorPrimary);
- int summaryColor = isCellularNetwork ? mContext.getColor(
- R.color.connected_network_tertiary_color) : Utils.getColorAttrDefaultColor(
- mContext, android.R.attr.textColorTertiary);
- mMobileTitleText.setTextColor(titleColor);
- mMobileSummaryText.setTextColor(summaryColor);
+ if (mInternetDialogController.isNightMode()) {
+ int titleColor = isCellularNetwork ? mContext.getColor(
+ R.color.connected_network_primary_color) : Utils.getColorAttrDefaultColor(
+ mContext, android.R.attr.textColorPrimary);
+ int summaryColor = isCellularNetwork ? mContext.getColor(
+ R.color.connected_network_secondary_color) : Utils.getColorAttrDefaultColor(
+ mContext, android.R.attr.textColorSecondary);
+
+ mMobileTitleText.setTextColor(titleColor);
+ mMobileSummaryText.setTextColor(summaryColor);
+ }
mMobileNetworkLayout.setBackground(isCellularNetwork ? mBackgroundOn : null);
mMobileDataToggle.setVisibility(mCanConfigMobileData ? View.VISIBLE : View.INVISIBLE);
@@ -342,8 +359,7 @@ public class InternetDialog extends SystemUIDialog implements
}
private void setConnectedWifiLayout() {
- if (!mWifiManager.isWifiEnabled()
- || mInternetDialogController.getConnectedWifiEntry() == null) {
+ if (!mWifiManager.isWifiEnabled() || mConnectedWifiEntry == null) {
mConnectedWifListLayout.setBackground(null);
mConnectedWifListLayout.setVisibility(View.GONE);
return;
@@ -351,11 +367,14 @@ public class InternetDialog extends SystemUIDialog implements
mConnectedWifListLayout.setVisibility(View.VISIBLE);
mConnectedWifiTitleText.setText(getConnectedWifiTitle());
mConnectedWifiSummaryText.setText(getConnectedWifiSummary());
- mConnectedWifiIcon.setImageDrawable(getConnectedWifiDrawable());
- mConnectedWifiTitleText.setTextColor(
- mContext.getColor(R.color.connected_network_primary_color));
- mConnectedWifiSummaryText.setTextColor(
- mContext.getColor(R.color.connected_network_tertiary_color));
+ mConnectedWifiIcon.setImageDrawable(
+ mInternetDialogController.getConnectedWifiDrawable(mConnectedWifiEntry));
+ if (mInternetDialogController.isNightMode()) {
+ mConnectedWifiTitleText.setTextColor(
+ mContext.getColor(R.color.connected_network_primary_color));
+ mConnectedWifiSummaryText.setTextColor(
+ mContext.getColor(R.color.connected_network_secondary_color));
+ }
mWifiSettingsIcon.setColorFilter(
mContext.getColor(R.color.connected_network_primary_color));
mConnectedWifListLayout.setBackground(mBackgroundOn);
@@ -374,16 +393,8 @@ public class InternetDialog extends SystemUIDialog implements
}
CharSequence getSubtitleText() {
- return mInternetDialogController.getSubtitleText(mIsProgressBarVisible);
- }
-
- private Drawable getConnectedWifiDrawable() {
- try {
- return mInternetDialogController.getWifiConnectedDrawable(mConnectedWifiEntry);
- } catch (Throwable e) {
- e.printStackTrace();
- }
- return null;
+ return mInternetDialogController.getSubtitleText(
+ mIsProgressBarVisible && !mIsSearchingHidden);
}
private Drawable getSignalStrengthDrawable() {
@@ -399,14 +410,14 @@ public class InternetDialog extends SystemUIDialog implements
}
String getConnectedWifiTitle() {
- return mInternetDialogController.getConnectedWifiTitle();
+ return mInternetDialogController.getDefaultWifiTitle();
}
String getConnectedWifiSummary() {
- return mInternetDialogController.getConnectedWifiSummary();
+ return mInternetDialogController.getDefaultWifiSummary();
}
- private void showProgressBar() {
+ protected void showProgressBar() {
if (mWifiManager == null || !mWifiManager.isWifiEnabled()) {
setProgressBarVisible(false);
return;
@@ -414,8 +425,9 @@ public class InternetDialog extends SystemUIDialog implements
setProgressBarVisible(true);
List wifiScanResults = mWifiManager.getScanResults();
if (wifiScanResults != null && wifiScanResults.size() > 0) {
- mContext.getMainThreadHandler().postDelayed(mHideProgressBarRunnable,
- 2000 /* delay millis */);
+ mHandler.postDelayed(mHideProgressBarRunnable, PROGRESS_DELAY_MS);
+ } else if (!mIsSearchingHidden) {
+ mHandler.postDelayed(mHideSearchingRunnable, PROGRESS_DELAY_MS);
}
}
@@ -425,7 +437,8 @@ public class InternetDialog extends SystemUIDialog implements
mIsProgressBarVisible = true;
}
mIsProgressBarVisible = visible;
- mProgressBar.setVisibility(mIsProgressBarVisible ? View.VISIBLE : View.INVISIBLE);
+ mProgressBar.setVisibility(mIsProgressBarVisible ? View.VISIBLE : View.GONE);
+ mDivider.setVisibility(mIsProgressBarVisible ? View.GONE : View.VISIBLE);
mInternetDialogSubTitle.setText(getSubtitleText());
}
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 edab33aa6aff5..890dcfd46f78b 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
@@ -19,11 +19,11 @@ package com.android.systemui.qs.tiles.dialog;
import static com.android.settingslib.mobile.MobileMappings.getIconKey;
import static com.android.settingslib.mobile.MobileMappings.mapIconSets;
-import android.annotation.ColorInt;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.res.Configuration;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
@@ -134,6 +134,8 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
protected SubscriptionManager.OnSubscriptionsChangedListener mOnSubscriptionsChangedListener;
@VisibleForTesting
protected InternetTelephonyCallback mInternetTelephonyCallback;
+ @VisibleForTesting
+ protected WifiUtils.InternetIconInjector mWifiIconInjector;
private final KeyguardUpdateMonitorCallback mKeyguardUpdateCallback =
new KeyguardUpdateMonitorCallback() {
@@ -181,6 +183,7 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
mActivityStarter = starter;
mAccessPointController = accessPointController;
mConfig = MobileMappings.Config.readConfig(mContext);
+ mWifiIconInjector = new WifiUtils.InternetIconInjector(mContext);
}
void onStart(@NonNull InternetDialogCallback callback) {
@@ -269,17 +272,17 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
return mContext.getText(SUBTITLE_TEXT_WIFI_IS_OFF);
}
+ final List wifiList = mWifiManager.getScanResults();
+ if (wifiList != null && wifiList.size() != 0) {
+ return mContext.getText(SUBTITLE_TEXT_TAP_A_NETWORK_TO_CONNECT);
+ }
+
if (isProgressBarVisible) {
// When the Wi-Fi scan result callback is received
// Sub-Title: Searching for networks...
return mContext.getText(SUBTITLE_TEXT_SEARCHING_FOR_NETWORKS);
}
- final List wifiList = mWifiManager.getScanResults();
- if (wifiList != null && wifiList.size() != 0) {
- return mContext.getText(SUBTITLE_TEXT_TAP_A_NETWORK_TO_CONNECT);
- }
-
// Sub-Title:
// show non_carrier_network_unavailable
// - while Wi-Fi on + no Wi-Fi item
@@ -315,17 +318,21 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
return mContext.getText(SUBTITLE_TEXT_NON_CARRIER_NETWORK_UNAVAILABLE);
}
- Drawable getWifiConnectedDrawable(WifiEntry wifiEntry) throws Throwable {
- final @ColorInt int tint;
- tint = Utils.getColorAttrDefaultColor(mContext,
- com.android.internal.R.attr.colorAccentPrimaryVariant);
- final Drawable drawable = mContext.getDrawable(
- com.android.settingslib.Utils.getWifiIconResource(wifiEntry.getLevel()));
- drawable.setTint(tint);
-
+ Drawable getConnectedWifiDrawable(@NonNull WifiEntry wifiEntry) {
+ final Drawable drawable =
+ mWifiIconInjector.getIcon(false /* noInternet*/, wifiEntry.getLevel());
+ if (drawable == null) {
+ return null;
+ }
+ drawable.setTint(mContext.getColor(R.color.connected_network_primary_color));
return drawable;
}
+ boolean isNightMode() {
+ return (mContext.getResources().getConfiguration().uiMode
+ & Configuration.UI_MODE_NIGHT_MASK) == Configuration.UI_MODE_NIGHT_YES;
+ }
+
Drawable getSignalStrengthDrawable() {
Drawable drawable = mContext.getDrawable(
R.drawable.ic_signal_strength_zero_bar_no_internet);
@@ -343,13 +350,9 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
drawable = shared.get();
}
- drawable.setTint(
- Utils.getColorAttrDefaultColor(mContext, android.R.attr.colorControlNormal));
- if (activeNetworkIsCellular()) {
- drawable.setTint(Utils.getColorAttrDefaultColor(mContext,
- com.android.internal.R.attr.colorAccentPrimaryVariant));
- }
-
+ drawable.setTint(activeNetworkIsCellular() ? mContext.getColor(
+ R.color.connected_network_primary_color) : Utils.getColorAttrDefaultColor(
+ mContext, android.R.attr.textColorTertiary));
} catch (Throwable e) {
e.printStackTrace();
}
@@ -396,7 +399,7 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
// Set the signal strength icon at the bottom right
icons.setLayerGravity(1 /* index of SignalDrawable */, Gravity.BOTTOM | Gravity.RIGHT);
icons.setLayerSize(1 /* index of SignalDrawable */, iconSize, iconSize);
- icons.setTintList(Utils.getColorAttr(context, android.R.attr.colorControlNormal));
+ icons.setTintList(Utils.getColorAttr(context, android.R.attr.textColorTertiary));
return icons;
}
@@ -530,24 +533,24 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
return summary;
}
- String getConnectedWifiTitle() {
- if (getConnectedWifiEntry() == null) {
+ String getDefaultWifiTitle() {
+ if (getDefaultWifiEntry() == null) {
if (DEBUG) {
Log.d(TAG, "connected entry is null");
}
return "";
}
- return getConnectedWifiEntry().getTitle();
+ return getDefaultWifiEntry().getTitle();
}
- String getConnectedWifiSummary() {
- if (getConnectedWifiEntry() == null) {
+ String getDefaultWifiSummary() {
+ if (getDefaultWifiEntry() == null) {
if (DEBUG) {
Log.d(TAG, "connected entry is null");
}
return "";
}
- return getConnectedWifiEntry().getSummary(false);
+ return getDefaultWifiEntry().getSummary(false);
}
void launchNetworkSetting() {
@@ -575,8 +578,11 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
return mWifiEntry;
}
- WifiEntry getConnectedWifiEntry() {
- return mConnectedEntry;
+ WifiEntry getDefaultWifiEntry() {
+ if (mConnectedEntry != null && mConnectedEntry.isDefaultNetwork()) {
+ return mConnectedEntry;
+ }
+ return null;
}
WifiManager getWifiManager() {
@@ -775,7 +781,7 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
mConnectedEntry = null;
}
- mCallback.onAccessPointsChanged(mWifiEntry, mConnectedEntry);
+ mCallback.onAccessPointsChanged(mWifiEntry, getDefaultWifiEntry());
}
@Override
@@ -878,6 +884,10 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
}
}
+ 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 a8f6f5361d787..9c3301ef3dc48 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
@@ -2,7 +2,9 @@ package com.android.systemui.qs.tiles.dialog;
import static com.google.common.truth.Truth.assertThat;
-import static org.mockito.Mockito.mock;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.testing.AndroidTestingRunner;
@@ -11,6 +13,7 @@ import android.widget.LinearLayout;
import androidx.test.filters.SmallTest;
+import com.android.settingslib.wifi.WifiUtils;
import com.android.systemui.SysuiTestCase;
import com.android.wifitrackerlib.WifiEntry;
@@ -28,51 +31,55 @@ public class InternetAdapterTest extends SysuiTestCase {
private static final String WIFI_TITLE = "Wi-Fi Title";
private static final String WIFI_SUMMARY = "Wi-Fi Summary";
- private InternetDialogController mInternetDialogController = mock(
- InternetDialogController.class);
+
+ @Mock
+ private WifiEntry mWifiEntry;
+ @Mock
+ private InternetDialogController mInternetDialogController;
+ @Mock
+ private WifiUtils.InternetIconInjector mWifiIconInjector;
+
private InternetAdapter mInternetAdapter;
private InternetAdapter.InternetViewHolder mViewHolder;
- @Mock
- private WifiEntry mWifiEntry = mock(WifiEntry.class);
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
mInternetAdapter = new InternetAdapter(mInternetDialogController);
- mViewHolder = (InternetAdapter.InternetViewHolder) mInternetAdapter
- .onCreateViewHolder(new LinearLayout(mContext), 0);
+ mViewHolder = mInternetAdapter.onCreateViewHolder(new LinearLayout(mContext), 0);
when(mWifiEntry.getTitle()).thenReturn(WIFI_TITLE);
when(mWifiEntry.getSummary(false)).thenReturn(WIFI_SUMMARY);
when(mInternetDialogController.getWifiEntryList()).thenReturn(Arrays.asList(mWifiEntry));
+ mViewHolder.mWifiIconInjector = mWifiIconInjector;
}
@Test
- public void getItemCount_withApmOnWifiOnNoConnectedWifi_returnFour() {
+ public void getItemCount_withApmOnWifiOnNoDefaultWifi_returnFour() {
when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(true);
assertThat(mInternetAdapter.getItemCount()).isEqualTo(4);
}
@Test
- public void getItemCount_withApmOnWifiOnHasConnectedWifi_returnThree() {
- when(mWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
- when(mInternetDialogController.getConnectedWifiEntry()).thenReturn(mWifiEntry);
+ public void getItemCount_withApmOnWifiOnHasDefaultWifi_returnThree() {
+ when(mWifiEntry.isDefaultNetwork()).thenReturn(true);
+ when(mInternetDialogController.getDefaultWifiEntry()).thenReturn(mWifiEntry);
when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(true);
assertThat(mInternetAdapter.getItemCount()).isEqualTo(3);
}
@Test
- public void getItemCount_withApmOffWifiOnNoConnectedWifi_returnThree() {
+ public void getItemCount_withApmOffWifiOnNoDefaultWifi_returnThree() {
when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(false);
assertThat(mInternetAdapter.getItemCount()).isEqualTo(3);
}
@Test
- public void getItemCount_withApmOffWifiOnHasConnectedWifi_returnTwo() {
- when(mWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
- when(mInternetDialogController.getConnectedWifiEntry()).thenReturn(mWifiEntry);
+ public void getItemCount_withApmOffWifiOnHasDefaultWifi_returnTwo() {
+ when(mWifiEntry.isDefaultNetwork()).thenReturn(true);
+ when(mInternetDialogController.getDefaultWifiEntry()).thenReturn(mWifiEntry);
when(mInternetDialogController.isAirplaneModeEnabled()).thenReturn(false);
assertThat(mInternetAdapter.getItemCount()).isEqualTo(2);
@@ -99,4 +106,22 @@ public class InternetAdapterTest extends SysuiTestCase {
assertThat(mViewHolder.mWifiIcon.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mViewHolder.mWifiLockedIcon.getVisibility()).isEqualTo(View.VISIBLE);
}
+
+ @Test
+ public void onBindViewHolder_bindDefaultWifiNetwork_getIconWithInternet() {
+ when(mWifiEntry.shouldShowXLevelIcon()).thenReturn(false);
+
+ mInternetAdapter.onBindViewHolder(mViewHolder, 0);
+
+ verify(mWifiIconInjector).getIcon(eq(false) /* noInternet */, anyInt());
+ }
+
+ @Test
+ public void onBindViewHolder_bindNoDefaultWifiNetwork_getIconWithNoInternet() {
+ when(mWifiEntry.shouldShowXLevelIcon()).thenReturn(true);
+
+ mInternetAdapter.onBindViewHolder(mViewHolder, 0);
+
+ verify(mWifiIconInjector).getIcon(eq(true) /* noInternet */, anyInt());
+ }
}
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 facb19fae95a4..f876a43f75d40 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
@@ -4,7 +4,9 @@ import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertTrue;
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.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
@@ -13,6 +15,7 @@ import static org.mockito.Mockito.when;
import android.content.Context;
import android.content.Intent;
+import android.graphics.drawable.Drawable;
import android.net.ConnectivityManager;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiInfo;
@@ -30,6 +33,9 @@ import androidx.test.filters.SmallTest;
import com.android.internal.logging.UiEventLogger;
import com.android.keyguard.KeyguardUpdateMonitor;
+import com.android.settingslib.Utils;
+import com.android.settingslib.wifi.WifiUtils;
+import com.android.systemui.R;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dagger.qualifiers.Main;
@@ -60,16 +66,12 @@ public class InternetDialogControllerTest extends SysuiTestCase {
private static final String CONNECTED_TITLE = "Connected Wi-Fi Title";
private static final String CONNECTED_SUMMARY = "Connected Wi-Fi Summary";
- private final UiEventLogger mUiEventLogger = mock(UiEventLogger.class);
- private MockInternetDialogController mInternetDialogController;
- private InternetDialogController.InternetDialogCallback mCallback =
- mock(InternetDialogController.InternetDialogCallback.class);
- private ActivityStarter mStarter = mock(ActivityStarter.class);
- private WifiManager mWifiManager = mock(WifiManager.class);
- private ConnectivityManager mConnectivityManager = mock(ConnectivityManager.class);
- private TelephonyManager mTelephonyManager = mock(TelephonyManager.class);
- private SubscriptionManager mSubscriptionManager = mock(SubscriptionManager.class);
- private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());
+ @Mock
+ private WifiManager mWifiManager;
+ @Mock
+ private TelephonyManager mTelephonyManager;
+ @Mock
+ private SubscriptionManager mSubscriptionManager;
@Mock
private Handler mHandler;
@Mock
@@ -88,21 +90,31 @@ public class InternetDialogControllerTest extends SysuiTestCase {
private ServiceState mServiceState;
@Mock
private BroadcastDispatcher mBroadcastDispatcher;
+ @Mock
+ private WifiUtils.InternetIconInjector mWifiIconInjector;
+
+ private MockInternetDialogController mInternetDialogController;
+ private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());
@Before
public void setUp() {
MockitoAnnotations.initMocks(this);
doReturn(mTelephonyManager).when(mTelephonyManager).createForSubscriptionId(SUB_ID);
when(mWifiManager.getConnectionInfo()).thenReturn(mWifiInfo);
- mInternetDialogController = new MockInternetDialogController(mContext, mUiEventLogger,
- mStarter, mAccessPointController, mSubscriptionManager, mTelephonyManager,
- mWifiManager, mConnectivityManager, mHandler, mExecutor, mBroadcastDispatcher,
+ when(mConnectedEntry.isDefaultNetwork()).thenReturn(true);
+
+ mInternetDialogController = new MockInternetDialogController(mContext,
+ mock(UiEventLogger.class), mock(ActivityStarter.class), mAccessPointController,
+ mSubscriptionManager, mTelephonyManager, mWifiManager,
+ mock(ConnectivityManager.class), mHandler, mExecutor, mBroadcastDispatcher,
mKeyguardUpdateMonitor, mGlobalSettings);
mSubscriptionManager.addOnSubscriptionsChangedListener(mExecutor,
mInternetDialogController.mOnSubscriptionsChangedListener);
- mInternetDialogController.onStart(mCallback);
+ mInternetDialogController.onStart(
+ mock(InternetDialogController.InternetDialogCallback.class));
mInternetDialogController.mActivityStarter = mActivityStarter;
mInternetDialogController.mConnectedEntry = mConnectedEntry;
+ mInternetDialogController.mWifiIconInjector = mWifiIconInjector;
}
@Test
@@ -138,9 +150,12 @@ public class InternetDialogControllerTest extends SysuiTestCase {
}
@Test
- public void getSubtitleText_withWifiOn_returnSearchWifi() {
+ public void getSubtitleText_withNoWifiEntry_returnSearchWifi() {
mInternetDialogController.setAirplaneModeEnabled(false);
when(mWifiManager.isWifiEnabled()).thenReturn(true);
+ List wifiScanResults = mock(ArrayList.class);
+ doReturn(0).when(wifiScanResults).size();
+ when(mWifiManager.getScanResults()).thenReturn(wifiScanResults);
assertTrue(TextUtils.equals(mInternetDialogController.getSubtitleText(true),
getResourcesString("wifi_empty_list_wifi_on")));
@@ -196,35 +211,53 @@ public class InternetDialogControllerTest extends SysuiTestCase {
}
@Test
- public void getConnectedWifiTitle_withNoConnectedEntry_returnNull() {
+ public void getDefaultWifiEntry_connectedEntryIsNull_returnNull() {
mInternetDialogController.mConnectedEntry = null;
- assertTrue(TextUtils.equals(mInternetDialogController.getConnectedWifiTitle(),
- ""));
+ assertThat(mInternetDialogController.getDefaultWifiEntry()).isNull();
}
@Test
- public void getConnectedWifiTitle_withConnectedEntry_returnTitle() {
+ public void getDefaultWifiEntry_connectedEntryIsNotDefault_returnNull() {
+ when(mConnectedEntry.isDefaultNetwork()).thenReturn(false);
+
+ assertThat(mInternetDialogController.getDefaultWifiEntry()).isNull();
+ }
+
+ @Test
+ public void getDefaultWifiEntry_connectedEntryIsDefault_returnConnectedEntry() {
+ // The default conditions have been set in setUp().
+ // - The connected Wi-Fi entry with the default network condition.
+
+ assertThat(mInternetDialogController.getDefaultWifiEntry()).isEqualTo(mConnectedEntry);
+ }
+
+ @Test
+ public void getDefaultWifiTitle_withNoDefaultEntry_returnEmpty() {
+ mInternetDialogController.mConnectedEntry = null;
+
+ assertThat(mInternetDialogController.getDefaultWifiTitle()).isEmpty();
+ }
+
+ @Test
+ public void getDefaultWifiTitle_withDefaultEntry_returnTitle() {
when(mConnectedEntry.getTitle()).thenReturn(CONNECTED_TITLE);
- assertTrue(TextUtils.equals(mInternetDialogController.getConnectedWifiTitle(),
- CONNECTED_TITLE));
+ assertThat(mInternetDialogController.getDefaultWifiTitle()).isEqualTo(CONNECTED_TITLE);
}
@Test
- public void getConnectedWifiSummary_withNoConnectedEntry_returnNull() {
+ public void getDefaultWifiSummary_withNoDefaultEntry_returnEmpty() {
mInternetDialogController.mConnectedEntry = null;
- assertTrue(TextUtils.equals(mInternetDialogController.getConnectedWifiSummary(),
- ""));
+ assertThat(mInternetDialogController.getDefaultWifiSummary()).isEmpty();
}
@Test
- public void getConnectedWifiSummary_withConnectedEntry_returnSummary() {
+ public void getDefaultWifiSummary_withDefaultEntry_returnSummary() {
when(mConnectedEntry.getSummary(false)).thenReturn(CONNECTED_SUMMARY);
- assertTrue(TextUtils.equals(mInternetDialogController.getConnectedWifiSummary(),
- CONNECTED_SUMMARY));
+ assertThat(mInternetDialogController.getDefaultWifiSummary()).isEqualTo(CONNECTED_SUMMARY);
}
@Test
@@ -248,6 +281,17 @@ public class InternetDialogControllerTest extends SysuiTestCase {
assertThat(mInternetDialogController.getWifiDetailsSettingsIntent()).isNotNull();
}
+ @Test
+ public void getWifiConnectedDrawable_withConnectedEntry_returnIntentIconWithColorAccent() {
+ final Drawable drawable = mock(Drawable.class);
+ when(mWifiIconInjector.getIcon(anyBoolean(), anyInt())).thenReturn(drawable);
+
+ mInternetDialogController.getConnectedWifiDrawable(mConnectedEntry);
+
+ verify(mWifiIconInjector).getIcon(eq(false), anyInt());
+ verify(drawable).setTint(mContext.getColor(R.color.connected_network_primary_color));
+ }
+
@Test
public void launchWifiNetworkDetailsSetting_withNoConnectedEntry_doNothing() {
mInternetDialogController.mConnectedEntry = null;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogTest.java
index 94bd959c9585a..856e3a1281939 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/InternetDialogTest.java
@@ -2,8 +2,12 @@ package com.android.systemui.qs.tiles.dialog;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -11,6 +15,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.net.wifi.ScanResult;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Handler;
@@ -34,10 +39,14 @@ import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
import org.mockito.Mock;
+import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.List;
@SmallTest
@RunWith(AndroidTestingRunner.class)
@@ -133,11 +142,13 @@ public class InternetDialogTest extends SysuiTestCase {
when(mWifiEntry.getTitle()).thenReturn(WIFI_TITLE);
when(mWifiEntry.getSummary(false)).thenReturn(WIFI_SUMMARY);
when(mWifiEntry.getConnectedState()).thenReturn(WifiEntry.CONNECTED_STATE_CONNECTED);
- when(mInternetDialogController.getConnectedWifiEntry()).thenReturn(mWifiEntry);
+ when(mWifiEntry.isDefaultNetwork()).thenReturn(true);
+ mInternetDialog.mConnectedWifiEntry = mWifiEntry;
+
mInternetDialog.updateDialog();
+
final LinearLayout linearLayout = mInternetDialog.mDialogView.requireViewById(
R.id.wifi_connected_layout);
-
assertThat(linearLayout.getVisibility()).isEqualTo(View.VISIBLE);
}
@@ -170,6 +181,62 @@ public class InternetDialogTest extends SysuiTestCase {
verify(mInternetDialogController).launchNetworkSetting();
}
+ @Test
+ public void showProgressBar_wifiDisabled_hideProgressBar() {
+ Mockito.reset(mHandler);
+ when(mMockWifiManager.isWifiEnabled()).thenReturn(false);
+
+ mInternetDialog.showProgressBar();
+
+ assertThat(mInternetDialog.mIsProgressBarVisible).isFalse();
+ verify(mHandler, never()).postDelayed(any(Runnable.class), anyLong());
+ }
+
+ @Test
+ public void showProgressBar_wifiEnabledWithWifiEntry_showProgressBarThenHide() {
+ Mockito.reset(mHandler);
+ when(mMockWifiManager.isWifiEnabled()).thenReturn(true);
+ List wifiScanResults = mock(ArrayList.class);
+ when(wifiScanResults.size()).thenReturn(1);
+ when(mMockWifiManager.getScanResults()).thenReturn(wifiScanResults);
+
+ mInternetDialog.showProgressBar();
+
+ // Show progress bar
+ assertThat(mInternetDialog.mIsProgressBarVisible).isTrue();
+
+ ArgumentCaptor runnableCaptor = ArgumentCaptor.forClass(Runnable.class);
+ verify(mHandler).postDelayed(runnableCaptor.capture(),
+ eq(InternetDialog.PROGRESS_DELAY_MS));
+ runnableCaptor.getValue().run();
+
+ // Then hide progress bar
+ assertThat(mInternetDialog.mIsProgressBarVisible).isFalse();
+ }
+
+ @Test
+ public void showProgressBar_wifiEnabledWithoutWifiScanResults_showProgressBarThenHideSearch() {
+ Mockito.reset(mHandler);
+ when(mMockWifiManager.isWifiEnabled()).thenReturn(true);
+ List wifiScanResults = mock(ArrayList.class);
+ when(wifiScanResults.size()).thenReturn(0);
+ when(mMockWifiManager.getScanResults()).thenReturn(wifiScanResults);
+
+ mInternetDialog.showProgressBar();
+
+ // Show progress bar
+ assertThat(mInternetDialog.mIsProgressBarVisible).isTrue();
+
+ ArgumentCaptor runnableCaptor = ArgumentCaptor.forClass(Runnable.class);
+ verify(mHandler).postDelayed(runnableCaptor.capture(),
+ eq(InternetDialog.PROGRESS_DELAY_MS));
+ runnableCaptor.getValue().run();
+
+ // Then hide searching sub-title only
+ assertThat(mInternetDialog.mIsProgressBarVisible).isTrue();
+ assertThat(mInternetDialog.mIsSearchingHidden).isTrue();
+ }
+
private class MockInternetDialog extends InternetDialog {
private String mMobileNetworkTitle;