[Provider Model] Show searching sub-title for 2 seconds am: 659b2885d3
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15611729 Change-Id: I7771748578b80b13d5f187a92c4b18ff6b6c6059
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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")));
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user