[Provider Model] Show searching sub-title for 2 seconds am: 659b2885d3 am: 0213a55a0f

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15611729

Change-Id: Ifab715664c0575bc8a3055de74ac7563532de24c
This commit is contained in:
Weng Su
2021-08-26 11:39:10 +00:00
committed by Automerger Merge Worker
4 changed files with 91 additions and 14 deletions

View File

@@ -79,11 +79,11 @@ public class InternetDialog extends SystemUIDialog implements
InternetDialogController.InternetDialogCallback, Window.Callback { InternetDialogController.InternetDialogCallback, Window.Callback {
private static final String TAG = "InternetDialog"; private static final String TAG = "InternetDialog";
private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
static final long PROGRESS_DELAY_MS = 2000L;
private final Handler mHandler; private final Handler mHandler;
private final LinearLayoutManager mLayoutManager; private final LinearLayoutManager mLayoutManager;
private final Runnable mHideProgressBarRunnable = () -> {
setProgressBarVisible(false);
};
@VisibleForTesting @VisibleForTesting
protected InternetAdapter mAdapter; protected InternetAdapter mAdapter;
@@ -125,9 +125,19 @@ public class InternetDialog extends SystemUIDialog implements
private WifiEntry mConnectedWifiEntry; private WifiEntry mConnectedWifiEntry;
private int mListMaxHeight; private int mListMaxHeight;
private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID; private int mDefaultDataSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
private boolean mIsProgressBarVisible;
private boolean mCanConfigMobileData; 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 = () -> { private final ViewTreeObserver.OnGlobalLayoutListener mInternetListLayoutListener = () -> {
// Set max height for list // Set max height for list
if (mInternetListLayout.getHeight() > mListMaxHeight) { if (mInternetListLayout.getHeight() > mListMaxHeight) {
@@ -243,6 +253,7 @@ public class InternetDialog extends SystemUIDialog implements
Log.d(TAG, "onStop"); Log.d(TAG, "onStop");
} }
mHandler.removeCallbacks(mHideProgressBarRunnable); mHandler.removeCallbacks(mHideProgressBarRunnable);
mHandler.removeCallbacks(mHideSearchingRunnable);
mMobileNetworkLayout.setOnClickListener(null); mMobileNetworkLayout.setOnClickListener(null);
mMobileDataToggle.setOnCheckedChangeListener(null); mMobileDataToggle.setOnCheckedChangeListener(null);
mConnectedWifListLayout.setOnClickListener(null); mConnectedWifListLayout.setOnClickListener(null);
@@ -374,7 +385,8 @@ public class InternetDialog extends SystemUIDialog implements
} }
CharSequence getSubtitleText() { CharSequence getSubtitleText() {
return mInternetDialogController.getSubtitleText(mIsProgressBarVisible); return mInternetDialogController.getSubtitleText(
mIsProgressBarVisible && !mIsSearchingHidden);
} }
private Drawable getConnectedWifiDrawable() { private Drawable getConnectedWifiDrawable() {
@@ -406,7 +418,7 @@ public class InternetDialog extends SystemUIDialog implements
return mInternetDialogController.getConnectedWifiSummary(); return mInternetDialogController.getConnectedWifiSummary();
} }
private void showProgressBar() { protected void showProgressBar() {
if (mWifiManager == null || !mWifiManager.isWifiEnabled()) { if (mWifiManager == null || !mWifiManager.isWifiEnabled()) {
setProgressBarVisible(false); setProgressBarVisible(false);
return; return;
@@ -414,8 +426,9 @@ public class InternetDialog extends SystemUIDialog implements
setProgressBarVisible(true); setProgressBarVisible(true);
List<ScanResult> wifiScanResults = mWifiManager.getScanResults(); List<ScanResult> wifiScanResults = mWifiManager.getScanResults();
if (wifiScanResults != null && wifiScanResults.size() > 0) { if (wifiScanResults != null && wifiScanResults.size() > 0) {
mContext.getMainThreadHandler().postDelayed(mHideProgressBarRunnable, mHandler.postDelayed(mHideProgressBarRunnable, PROGRESS_DELAY_MS);
2000 /* delay millis */); } else if (!mIsSearchingHidden) {
mHandler.postDelayed(mHideSearchingRunnable, PROGRESS_DELAY_MS);
} }
} }

View File

@@ -269,17 +269,17 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
return mContext.getText(SUBTITLE_TEXT_WIFI_IS_OFF); return mContext.getText(SUBTITLE_TEXT_WIFI_IS_OFF);
} }
final List<ScanResult> wifiList = mWifiManager.getScanResults();
if (wifiList != null && wifiList.size() != 0) {
return mContext.getText(SUBTITLE_TEXT_TAP_A_NETWORK_TO_CONNECT);
}
if (isProgressBarVisible) { if (isProgressBarVisible) {
// When the Wi-Fi scan result callback is received // When the Wi-Fi scan result callback is received
// Sub-Title: Searching for networks... // Sub-Title: Searching for networks...
return mContext.getText(SUBTITLE_TEXT_SEARCHING_FOR_NETWORKS); return mContext.getText(SUBTITLE_TEXT_SEARCHING_FOR_NETWORKS);
} }
final List<ScanResult> wifiList = mWifiManager.getScanResults();
if (wifiList != null && wifiList.size() != 0) {
return mContext.getText(SUBTITLE_TEXT_TAP_A_NETWORK_TO_CONNECT);
}
// Sub-Title: // Sub-Title:
// show non_carrier_network_unavailable // show non_carrier_network_unavailable
// - while Wi-Fi on + no Wi-Fi item // - while Wi-Fi on + no Wi-Fi item

View File

@@ -138,9 +138,12 @@ public class InternetDialogControllerTest extends SysuiTestCase {
} }
@Test @Test
public void getSubtitleText_withWifiOn_returnSearchWifi() { public void getSubtitleText_withNoWifiEntry_returnSearchWifi() {
mInternetDialogController.setAirplaneModeEnabled(false); mInternetDialogController.setAirplaneModeEnabled(false);
when(mWifiManager.isWifiEnabled()).thenReturn(true); when(mWifiManager.isWifiEnabled()).thenReturn(true);
List<ScanResult> wifiScanResults = mock(ArrayList.class);
doReturn(0).when(wifiScanResults).size();
when(mWifiManager.getScanResults()).thenReturn(wifiScanResults);
assertTrue(TextUtils.equals(mInternetDialogController.getSubtitleText(true), assertTrue(TextUtils.equals(mInternetDialogController.getSubtitleText(true),
getResourcesString("wifi_empty_list_wifi_on"))); getResourcesString("wifi_empty_list_wifi_on")));

View File

@@ -2,8 +2,12 @@ package com.android.systemui.qs.tiles.dialog;
import static com.google.common.truth.Truth.assertThat; 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.doReturn;
import static org.mockito.Mockito.mock; import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;
@@ -11,6 +15,7 @@ import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.net.wifi.ScanResult;
import android.net.wifi.WifiInfo; import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager; import android.net.wifi.WifiManager;
import android.os.Handler; import android.os.Handler;
@@ -34,10 +39,13 @@ import org.junit.After;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.mockito.ArgumentCaptor;
import org.mockito.Mock; import org.mockito.Mock;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List;
@SmallTest @SmallTest
@RunWith(AndroidTestingRunner.class) @RunWith(AndroidTestingRunner.class)
@@ -170,6 +178,59 @@ public class InternetDialogTest extends SysuiTestCase {
verify(mInternetDialogController).launchNetworkSetting(); verify(mInternetDialogController).launchNetworkSetting();
} }
@Test
public void showProgressBar_wifiDisabled_hideProgressBar() {
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() {
when(mMockWifiManager.isWifiEnabled()).thenReturn(true);
List<ScanResult> wifiScanResults = mock(ArrayList.class);
when(wifiScanResults.size()).thenReturn(1);
when(mMockWifiManager.getScanResults()).thenReturn(wifiScanResults);
mInternetDialog.showProgressBar();
// Show progress bar
assertThat(mInternetDialog.mIsProgressBarVisible).isTrue();
ArgumentCaptor<Runnable> 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() {
when(mMockWifiManager.isWifiEnabled()).thenReturn(true);
List<ScanResult> wifiScanResults = mock(ArrayList.class);
when(wifiScanResults.size()).thenReturn(0);
when(mMockWifiManager.getScanResults()).thenReturn(wifiScanResults);
mInternetDialog.showProgressBar();
// Show progress bar
assertThat(mInternetDialog.mIsProgressBarVisible).isTrue();
ArgumentCaptor<Runnable> 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 class MockInternetDialog extends InternetDialog {
private String mMobileNetworkTitle; private String mMobileNetworkTitle;