Merge "[Provider Model] Show searching sub-title for 2 seconds"
This commit is contained in:
@@ -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;
|
||||
@@ -125,9 +125,19 @@ public class InternetDialog extends SystemUIDialog implements
|
||||
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) {
|
||||
@@ -243,6 +253,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);
|
||||
@@ -374,7 +385,8 @@ public class InternetDialog extends SystemUIDialog implements
|
||||
}
|
||||
|
||||
CharSequence getSubtitleText() {
|
||||
return mInternetDialogController.getSubtitleText(mIsProgressBarVisible);
|
||||
return mInternetDialogController.getSubtitleText(
|
||||
mIsProgressBarVisible && !mIsSearchingHidden);
|
||||
}
|
||||
|
||||
private Drawable getConnectedWifiDrawable() {
|
||||
@@ -406,7 +418,7 @@ public class InternetDialog extends SystemUIDialog implements
|
||||
return mInternetDialogController.getConnectedWifiSummary();
|
||||
}
|
||||
|
||||
private void showProgressBar() {
|
||||
protected void showProgressBar() {
|
||||
if (mWifiManager == null || !mWifiManager.isWifiEnabled()) {
|
||||
setProgressBarVisible(false);
|
||||
return;
|
||||
@@ -414,8 +426,9 @@ public class InternetDialog extends SystemUIDialog implements
|
||||
setProgressBarVisible(true);
|
||||
List<ScanResult> 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -269,17 +269,17 @@ public class InternetDialogController implements WifiEntry.DisconnectCallback,
|
||||
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) {
|
||||
// When the Wi-Fi scan result callback is received
|
||||
// Sub-Title: 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:
|
||||
// show non_carrier_network_unavailable
|
||||
// - while Wi-Fi on + no Wi-Fi item
|
||||
|
||||
@@ -138,9 +138,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<ScanResult> 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")));
|
||||
|
||||
@@ -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,13 @@ 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.MockitoAnnotations;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
@SmallTest
|
||||
@RunWith(AndroidTestingRunner.class)
|
||||
@@ -170,6 +178,59 @@ public class InternetDialogTest extends SysuiTestCase {
|
||||
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 String mMobileNetworkTitle;
|
||||
|
||||
Reference in New Issue
Block a user