Merge "[Provider Model] Add WiFi toggle in internet panel" into sc-dev am: 38df9ce8bb
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/14880638 Change-Id: I932797211f93696ef6fdbab14f6932d600a8a4d1
This commit is contained in:
@@ -20,6 +20,7 @@ package com.android.settings.network;
|
|||||||
import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
|
import static android.app.slice.Slice.EXTRA_TOGGLE_STATE;
|
||||||
|
|
||||||
import static com.android.settings.slices.CustomSliceRegistry.PROVIDER_MODEL_SLICE_URI;
|
import static com.android.settings.slices.CustomSliceRegistry.PROVIDER_MODEL_SLICE_URI;
|
||||||
|
import static com.android.settings.slices.CustomSliceRegistry.WIFI_SLICE_URI;
|
||||||
|
|
||||||
import android.annotation.ColorInt;
|
import android.annotation.ColorInt;
|
||||||
import android.app.PendingIntent;
|
import android.app.PendingIntent;
|
||||||
@@ -64,7 +65,6 @@ import java.util.stream.Collectors;
|
|||||||
public class ProviderModelSlice extends WifiSlice {
|
public class ProviderModelSlice extends WifiSlice {
|
||||||
|
|
||||||
private static final String TAG = "ProviderModelSlice";
|
private static final String TAG = "ProviderModelSlice";
|
||||||
protected static final String ACTION_TITLE_CONNECT_TO_CARRIER = "Connect_To_Carrier";
|
|
||||||
|
|
||||||
private final ProviderModelSliceHelper mHelper;
|
private final ProviderModelSliceHelper mHelper;
|
||||||
|
|
||||||
@@ -89,78 +89,77 @@ public class ProviderModelSlice extends WifiSlice {
|
|||||||
@Override
|
@Override
|
||||||
public Slice getSlice() {
|
public Slice getSlice() {
|
||||||
// The provider model slice step:
|
// The provider model slice step:
|
||||||
// First section: Add a Wi-Fi item which state is connected.
|
// First section: Add the Ethernet item.
|
||||||
// Second section: Add a carrier item.
|
// Second section: Add the carrier item.
|
||||||
// Third section: Add the Wi-Fi items which are not connected.
|
// Third section: Add the Wi-Fi toggle item.
|
||||||
// Fourth section: If device has connection problem, this row show the message for user.
|
// Fourth section: Add the connected Wi-Fi item.
|
||||||
@InternetUpdater.InternetType int internetType = getInternetType();
|
// Fifth section: Add the Wi-Fi items which are not connected.
|
||||||
|
// Sixth section: Add the See All item.
|
||||||
final ListBuilder listBuilder = mHelper.createListBuilder(getUri());
|
final ListBuilder listBuilder = mHelper.createListBuilder(getUri());
|
||||||
if (mHelper.isAirplaneModeEnabled() && !mWifiManager.isWifiEnabled()
|
|
||||||
&& internetType != InternetUpdater.INTERNET_ETHERNET) {
|
|
||||||
log("Airplane mode is enabled.");
|
|
||||||
return listBuilder.build();
|
|
||||||
}
|
|
||||||
|
|
||||||
int maxListSize = 0;
|
int maxListSize = 0;
|
||||||
List<WifiSliceItem> wifiList = null;
|
|
||||||
final NetworkProviderWorker worker = getWorker();
|
final NetworkProviderWorker worker = getWorker();
|
||||||
if (worker != null) {
|
if (worker != null) {
|
||||||
// get Wi-Fi list.
|
|
||||||
wifiList = worker.getResults();
|
|
||||||
maxListSize = worker.getApRowCount();
|
maxListSize = worker.getApRowCount();
|
||||||
} else {
|
} else {
|
||||||
log("network provider worker is null.");
|
log("network provider worker is null.");
|
||||||
}
|
}
|
||||||
|
|
||||||
final boolean hasCarrier = mHelper.hasCarrier();
|
// First section: Add the Ethernet item.
|
||||||
log("hasCarrier: " + hasCarrier);
|
if (getInternetType() == InternetUpdater.INTERNET_ETHERNET) {
|
||||||
|
|
||||||
// First section: Add a Ethernet or Wi-Fi item which state is connected.
|
|
||||||
boolean isConnectedWifiAddedTop = false;
|
|
||||||
final WifiSliceItem connectedWifiItem = mHelper.getConnectedWifiItem(wifiList);
|
|
||||||
if (internetType == InternetUpdater.INTERNET_ETHERNET) {
|
|
||||||
log("get Ethernet item which is connected");
|
log("get Ethernet item which is connected");
|
||||||
listBuilder.addRow(createEthernetRow());
|
listBuilder.addRow(createEthernetRow());
|
||||||
maxListSize--;
|
maxListSize--;
|
||||||
} else {
|
}
|
||||||
if (connectedWifiItem != null && internetType == InternetUpdater.INTERNET_WIFI) {
|
|
||||||
log("get Wi-Fi item which is connected to internet");
|
// Second section: Add the carrier item.
|
||||||
listBuilder.addRow(getWifiSliceItemRow(connectedWifiItem));
|
if (!mHelper.isAirplaneModeEnabled()) {
|
||||||
isConnectedWifiAddedTop = true;
|
final boolean hasCarrier = mHelper.hasCarrier();
|
||||||
|
log("hasCarrier: " + hasCarrier);
|
||||||
|
if (hasCarrier) {
|
||||||
|
mHelper.updateTelephony();
|
||||||
|
listBuilder.addRow(
|
||||||
|
mHelper.createCarrierRow(
|
||||||
|
worker != null ? worker.getNetworkTypeDescription() : ""));
|
||||||
maxListSize--;
|
maxListSize--;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Second section: Add a carrier item.
|
// Third section: Add the Wi-Fi toggle item.
|
||||||
if (hasCarrier) {
|
final boolean isWifiEnabled = mWifiManager.isWifiEnabled();
|
||||||
mHelper.updateTelephony();
|
listBuilder.addRow(createWifiToggleRow(mContext, isWifiEnabled));
|
||||||
listBuilder.addRow(
|
maxListSize--;
|
||||||
mHelper.createCarrierRow(
|
if (!isWifiEnabled) {
|
||||||
worker != null ? worker.getNetworkTypeDescription() : ""));
|
log("Wi-Fi is disabled");
|
||||||
maxListSize--;
|
return listBuilder.build();
|
||||||
|
}
|
||||||
|
List<WifiSliceItem> wifiList = (worker != null) ? worker.getResults() : null;
|
||||||
|
if (wifiList == null || wifiList.size() <= 0) {
|
||||||
|
log("Wi-Fi list is empty");
|
||||||
|
return listBuilder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Third section: Add the connected Wi-Fi item to Wi-Fi list if the Ethernet is connected.
|
// Fourth section: Add the connected Wi-Fi item.
|
||||||
if (connectedWifiItem != null && !isConnectedWifiAddedTop) {
|
final WifiSliceItem connectedWifiItem = mHelper.getConnectedWifiItem(wifiList);
|
||||||
|
if (connectedWifiItem != null) {
|
||||||
log("get Wi-Fi item which is connected");
|
log("get Wi-Fi item which is connected");
|
||||||
listBuilder.addRow(getWifiSliceItemRow(connectedWifiItem));
|
listBuilder.addRow(getWifiSliceItemRow(connectedWifiItem));
|
||||||
maxListSize--;
|
maxListSize--;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fourth section: Add the Wi-Fi items which are not connected.
|
// Fifth section: Add the Wi-Fi items which are not connected.
|
||||||
if (wifiList != null && wifiList.size() > 0) {
|
log("get Wi-Fi items which are not connected. Wi-Fi items : " + wifiList.size());
|
||||||
log("get Wi-Fi items which are not connected. Wi-Fi items : " + wifiList.size());
|
final List<WifiSliceItem> disconnectedWifiList = wifiList.stream()
|
||||||
|
.filter(item -> item.getConnectedState() != WifiEntry.CONNECTED_STATE_CONNECTED)
|
||||||
final List<WifiSliceItem> disconnectedWifiList = wifiList.stream()
|
.limit(maxListSize - 1)
|
||||||
.filter(wifiSliceItem -> wifiSliceItem.getConnectedState()
|
.collect(Collectors.toList());
|
||||||
!= WifiEntry.CONNECTED_STATE_CONNECTED)
|
for (WifiSliceItem item : disconnectedWifiList) {
|
||||||
.limit(maxListSize - 1)
|
listBuilder.addRow(getWifiSliceItemRow(item));
|
||||||
.collect(Collectors.toList());
|
|
||||||
for (WifiSliceItem item : disconnectedWifiList) {
|
|
||||||
listBuilder.addRow(getWifiSliceItemRow(item));
|
|
||||||
}
|
|
||||||
listBuilder.addRow(getSeeAllRow());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Sixth section: Add the See All item.
|
||||||
|
log("add See-All");
|
||||||
|
listBuilder.addRow(getSeeAllRow());
|
||||||
|
|
||||||
return listBuilder.build();
|
return listBuilder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -269,6 +268,26 @@ public class ProviderModelSlice extends WifiSlice {
|
|||||||
.setSubtitle(mContext.getText(R.string.to_switch_networks_disconnect_ethernet));
|
.setSubtitle(mContext.getText(R.string.to_switch_networks_disconnect_ethernet));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a {@link ListBuilder.RowBuilder} of the Wi-Fi toggle.
|
||||||
|
*/
|
||||||
|
protected ListBuilder.RowBuilder createWifiToggleRow(Context context, boolean isWifiEnabled) {
|
||||||
|
final Intent intent = new Intent(WIFI_SLICE_URI.toString())
|
||||||
|
.setData(WIFI_SLICE_URI)
|
||||||
|
.setClass(context, SliceBroadcastReceiver.class)
|
||||||
|
.putExtra(EXTRA_TOGGLE_STATE, !isWifiEnabled)
|
||||||
|
// The FLAG_RECEIVER_FOREGROUND flag is necessary to avoid the intent delay of
|
||||||
|
// the first sending after the device restarts
|
||||||
|
.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
|
||||||
|
final PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent,
|
||||||
|
PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE);
|
||||||
|
final SliceAction toggleSliceAction = SliceAction.createToggle(pendingIntent,
|
||||||
|
null /* actionTitle */, isWifiEnabled);
|
||||||
|
return new ListBuilder.RowBuilder()
|
||||||
|
.setTitle(context.getString(R.string.wifi_settings))
|
||||||
|
.setPrimaryAction(toggleSliceAction);
|
||||||
|
}
|
||||||
|
|
||||||
protected ListBuilder.RowBuilder getSeeAllRow() {
|
protected ListBuilder.RowBuilder getSeeAllRow() {
|
||||||
final CharSequence title = mContext.getText(R.string.previous_connected_see_all);
|
final CharSequence title = mContext.getText(R.string.previous_connected_see_all);
|
||||||
final IconCompat icon = getSeeAllIcon();
|
final IconCompat icon = getSeeAllIcon();
|
||||||
@@ -294,31 +313,6 @@ public class ProviderModelSlice extends WifiSlice {
|
|||||||
return SliceAction.createDeeplink(intent, icon, ListBuilder.ICON_IMAGE, title);
|
return SliceAction.createDeeplink(intent, icon, ListBuilder.ICON_IMAGE, title);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected ListBuilder.RowBuilder getWifiSliceItemRow(WifiSliceItem wifiSliceItem) {
|
|
||||||
final CharSequence title = wifiSliceItem.getTitle();
|
|
||||||
final IconCompat levelIcon = getWifiSliceItemLevelIcon(wifiSliceItem);
|
|
||||||
final ListBuilder.RowBuilder rowBuilder = new ListBuilder.RowBuilder()
|
|
||||||
.setTitleItem(levelIcon, ListBuilder.ICON_IMAGE)
|
|
||||||
.setTitle(title)
|
|
||||||
.setSubtitle(wifiSliceItem.getSummary())
|
|
||||||
.setContentDescription(wifiSliceItem.getContentDescription());
|
|
||||||
|
|
||||||
final IconCompat endIcon;
|
|
||||||
if (wifiSliceItem.hasInternetAccess()) {
|
|
||||||
rowBuilder.setPrimaryAction(SliceAction.create(getBroadcastIntent(mContext),
|
|
||||||
levelIcon, ListBuilder.ICON_IMAGE, ACTION_TITLE_CONNECT_TO_CARRIER));
|
|
||||||
endIcon = IconCompat.createWithResource(mContext, R.drawable.ic_settings_close);
|
|
||||||
} else {
|
|
||||||
rowBuilder.setPrimaryAction(getWifiEntryAction(wifiSliceItem, levelIcon, title));
|
|
||||||
endIcon = getEndIcon(wifiSliceItem);
|
|
||||||
}
|
|
||||||
if (endIcon != null) {
|
|
||||||
rowBuilder.addEndItem(endIcon, ListBuilder.ICON_IMAGE);
|
|
||||||
}
|
|
||||||
return rowBuilder;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected IconCompat getWifiSliceItemLevelIcon(WifiSliceItem wifiSliceItem) {
|
protected IconCompat getWifiSliceItemLevelIcon(WifiSliceItem wifiSliceItem) {
|
||||||
if (wifiSliceItem.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED
|
if (wifiSliceItem.getConnectedState() == WifiEntry.CONNECTED_STATE_CONNECTED
|
||||||
|
@@ -54,7 +54,7 @@ public class NetworkProviderWorker extends WifiScanWorker implements
|
|||||||
DataConnectivityListener.Client, InternetUpdater.InternetChangeListener,
|
DataConnectivityListener.Client, InternetUpdater.InternetChangeListener,
|
||||||
SubscriptionsChangeListener.SubscriptionsChangeListenerClient {
|
SubscriptionsChangeListener.SubscriptionsChangeListenerClient {
|
||||||
private static final String TAG = "NetworkProviderWorker";
|
private static final String TAG = "NetworkProviderWorker";
|
||||||
private static final int PROVIDER_MODEL_DEFAULT_EXPANDED_ROW_COUNT = 5;
|
private static final int PROVIDER_MODEL_DEFAULT_EXPANDED_ROW_COUNT = 6;
|
||||||
private DataContentObserver mMobileDataObserver;
|
private DataContentObserver mMobileDataObserver;
|
||||||
private SignalStrengthListener mSignalStrengthListener;
|
private SignalStrengthListener mSignalStrengthListener;
|
||||||
private SubscriptionsChangeListener mSubscriptionsListener;
|
private SubscriptionsChangeListener mSubscriptionsListener;
|
||||||
|
@@ -38,7 +38,6 @@ import android.text.TextUtils;
|
|||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.fragment.app.FragmentActivity;
|
|
||||||
import androidx.lifecycle.LifecycleObserver;
|
import androidx.lifecycle.LifecycleObserver;
|
||||||
import androidx.lifecycle.OnLifecycleEvent;
|
import androidx.lifecycle.OnLifecycleEvent;
|
||||||
|
|
||||||
@@ -84,12 +83,13 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (TextUtils.equals(intent.getAction(), WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
|
if (TextUtils.equals(intent.getAction(), WifiManager.SCAN_RESULTS_AVAILABLE_ACTION)) {
|
||||||
showProgressBar();
|
updateProgressBar();
|
||||||
updatePanelTitle();
|
updatePanelTitle();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TextUtils.equals(intent.getAction(), WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
|
if (TextUtils.equals(intent.getAction(), WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
|
||||||
|
updateProgressBar();
|
||||||
updatePanelTitle();
|
updatePanelTitle();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -110,13 +110,40 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
|
|||||||
private int mDefaultDataSubid = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
private int mDefaultDataSubid = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
|
||||||
|
|
||||||
// Wi-Fi scanning progress bar
|
// Wi-Fi scanning progress bar
|
||||||
|
protected HandlerInjector mHandlerInjector;
|
||||||
protected boolean mIsProgressBarVisible;
|
protected boolean mIsProgressBarVisible;
|
||||||
protected final Runnable mHideProgressBarRunnable = () -> {
|
protected boolean mIsScanningSubTitleShownOnce;
|
||||||
|
protected Runnable mHideProgressBarRunnable = () -> {
|
||||||
setProgressBarVisible(false);
|
setProgressBarVisible(false);
|
||||||
};
|
};
|
||||||
|
protected Runnable mHideScanningSubTitleRunnable = () -> {
|
||||||
|
mIsScanningSubTitleShownOnce = true;
|
||||||
|
updatePanelTitle();
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Wrapper for testing compatibility.
|
||||||
|
*/
|
||||||
|
@VisibleForTesting
|
||||||
|
static class HandlerInjector {
|
||||||
|
protected final Handler mHandler;
|
||||||
|
|
||||||
|
HandlerInjector(Context context) {
|
||||||
|
mHandler = context.getMainThreadHandler();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void postDelay(Runnable runnable) {
|
||||||
|
mHandler.postDelayed(runnable, 2000 /* delay millis */);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void removeCallbacks(Runnable runnable) {
|
||||||
|
mHandler.removeCallbacks(runnable);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private InternetConnectivityPanel(Context context) {
|
private InternetConnectivityPanel(Context context) {
|
||||||
mContext = context.getApplicationContext();
|
mContext = context.getApplicationContext();
|
||||||
|
mHandlerInjector = new HandlerInjector(context);
|
||||||
mIsProviderModelEnabled = Utils.isProviderModelEnabled(mContext);
|
mIsProviderModelEnabled = Utils.isProviderModelEnabled(mContext);
|
||||||
mInternetUpdater = new InternetUpdater(context, null /* Lifecycle */, this);
|
mInternetUpdater = new InternetUpdater(context, null /* Lifecycle */, this);
|
||||||
|
|
||||||
@@ -150,7 +177,7 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
|
|||||||
mTelephonyManager.registerTelephonyCallback(
|
mTelephonyManager.registerTelephonyCallback(
|
||||||
new HandlerExecutor(new Handler(Looper.getMainLooper())), mTelephonyCallback);
|
new HandlerExecutor(new Handler(Looper.getMainLooper())), mTelephonyCallback);
|
||||||
mContext.registerReceiver(mWifiStateReceiver, mWifiStateFilter);
|
mContext.registerReceiver(mWifiStateReceiver, mWifiStateFilter);
|
||||||
showProgressBar();
|
updateProgressBar();
|
||||||
updatePanelTitle();
|
updatePanelTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -165,7 +192,8 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
|
|||||||
mConnectivityListener.stop();
|
mConnectivityListener.stop();
|
||||||
mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback);
|
mTelephonyManager.unregisterTelephonyCallback(mTelephonyCallback);
|
||||||
mContext.unregisterReceiver(mWifiStateReceiver);
|
mContext.unregisterReceiver(mWifiStateReceiver);
|
||||||
mContext.getMainThreadHandler().removeCallbacks(mHideProgressBarRunnable);
|
mHandlerInjector.removeCallbacks(mHideProgressBarRunnable);
|
||||||
|
mHandlerInjector.removeCallbacks(mHideScanningSubTitleRunnable);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -209,23 +237,6 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isCustomizedButtonUsed() {
|
|
||||||
return mIsProviderModelEnabled;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public CharSequence getCustomizedButtonTitle() {
|
|
||||||
return mContext.getText(
|
|
||||||
mInternetUpdater.isWifiEnabled() ? R.string.turn_off_wifi : R.string.turn_on_wifi);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClickCustomizedButton(FragmentActivity panelActivity) {
|
|
||||||
// Don't finish the panel activity
|
|
||||||
mWifiManager.setWifiEnabled(!mInternetUpdater.isWifiEnabled());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isProgressBarVisible() {
|
public boolean isProgressBarVisible() {
|
||||||
return mIsProgressBarVisible;
|
return mIsProgressBarVisible;
|
||||||
@@ -246,6 +257,7 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onAirplaneModeChanged(boolean isAirplaneModeOn) {
|
public void onAirplaneModeChanged(boolean isAirplaneModeOn) {
|
||||||
|
log("onAirplaneModeChanged: isAirplaneModeOn:" + isAirplaneModeOn);
|
||||||
updatePanelTitle();
|
updatePanelTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -254,6 +266,7 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
|
|||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public void onWifiEnabledChanged(boolean enabled) {
|
public void onWifiEnabledChanged(boolean enabled) {
|
||||||
|
log("onWifiEnabledChanged: enabled:" + enabled);
|
||||||
updatePanelTitle();
|
updatePanelTitle();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -305,13 +318,6 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mIsProgressBarVisible) {
|
|
||||||
// When the Wi-Fi scan result callback is received
|
|
||||||
// Sub-Title: Searching for networks...
|
|
||||||
mSubtitle = SUBTITLE_TEXT_SEARCHING_FOR_NETWORKS;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mInternetUpdater.isAirplaneModeOn()) {
|
if (mInternetUpdater.isAirplaneModeOn()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -319,11 +325,18 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
|
|||||||
final List<ScanResult> wifiList = mWifiManager.getScanResults();
|
final List<ScanResult> wifiList = mWifiManager.getScanResults();
|
||||||
if (wifiList != null && wifiList.size() != 0) {
|
if (wifiList != null && wifiList.size() != 0) {
|
||||||
// When the Wi-Fi scan result is not empty
|
// When the Wi-Fi scan result is not empty
|
||||||
// Sub-Title: Select the network you want to use for data
|
// Sub-Title: Tap a network to connect
|
||||||
mSubtitle = SUBTITLE_TEXT_TAP_A_NETWORK_TO_CONNECT;
|
mSubtitle = SUBTITLE_TEXT_TAP_A_NETWORK_TO_CONNECT;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!mIsScanningSubTitleShownOnce && mIsProgressBarVisible) {
|
||||||
|
// When the Wi-Fi scan result callback is received
|
||||||
|
// Sub-Title: Searching for networks...
|
||||||
|
mSubtitle = SUBTITLE_TEXT_SEARCHING_FOR_NETWORKS;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// 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
|
||||||
@@ -353,7 +366,7 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
|
|||||||
mSubtitle = SUBTITLE_TEXT_NON_CARRIER_NETWORK_UNAVAILABLE;
|
mSubtitle = SUBTITLE_TEXT_NON_CARRIER_NETWORK_UNAVAILABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void showProgressBar() {
|
protected void updateProgressBar() {
|
||||||
if (mWifiManager == null || !mInternetUpdater.isWifiEnabled()) {
|
if (mWifiManager == null || !mInternetUpdater.isWifiEnabled()) {
|
||||||
setProgressBarVisible(false);
|
setProgressBarVisible(false);
|
||||||
return;
|
return;
|
||||||
@@ -362,8 +375,9 @@ public class InternetConnectivityPanel implements PanelContent, LifecycleObserve
|
|||||||
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,
|
mHandlerInjector.postDelay(mHideProgressBarRunnable);
|
||||||
2000 /* delay millis */);
|
} else if (!mIsScanningSubTitleShownOnce) {
|
||||||
|
mHandlerInjector.postDelay(mHideScanningSubTitleRunnable);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -16,8 +16,6 @@
|
|||||||
|
|
||||||
package com.android.settings.network;
|
package com.android.settings.network;
|
||||||
|
|
||||||
import static com.android.settings.network.ProviderModelSlice.ACTION_TITLE_CONNECT_TO_CARRIER;
|
|
||||||
|
|
||||||
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.any;
|
||||||
@@ -42,6 +40,8 @@ import android.telephony.SubscriptionManager;
|
|||||||
import android.telephony.TelephonyManager;
|
import android.telephony.TelephonyManager;
|
||||||
|
|
||||||
import androidx.slice.Slice;
|
import androidx.slice.Slice;
|
||||||
|
import androidx.slice.SliceItem;
|
||||||
|
import androidx.slice.SliceMetadata;
|
||||||
import androidx.slice.SliceProvider;
|
import androidx.slice.SliceProvider;
|
||||||
import androidx.slice.builders.ListBuilder;
|
import androidx.slice.builders.ListBuilder;
|
||||||
import androidx.slice.builders.SliceAction;
|
import androidx.slice.builders.SliceAction;
|
||||||
@@ -100,8 +100,6 @@ public class ProviderModelSliceTest {
|
|||||||
ListBuilder.RowBuilder mMockCarrierRowBuild;
|
ListBuilder.RowBuilder mMockCarrierRowBuild;
|
||||||
@Mock
|
@Mock
|
||||||
WifiPickerTracker mWifiPickerTracker;
|
WifiPickerTracker mWifiPickerTracker;
|
||||||
@Mock
|
|
||||||
WifiSliceItem mWifiSliceItem;
|
|
||||||
|
|
||||||
private FakeFeatureFactory mFeatureFactory;
|
private FakeFeatureFactory mFeatureFactory;
|
||||||
|
|
||||||
@@ -122,7 +120,7 @@ public class ProviderModelSliceTest {
|
|||||||
when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
|
when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
|
||||||
when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager);
|
when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager);
|
||||||
when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
|
when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
|
||||||
|
when(mWifiManager.isWifiEnabled()).thenReturn(true);
|
||||||
|
|
||||||
// Set-up specs for SliceMetadata.
|
// Set-up specs for SliceMetadata.
|
||||||
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
|
SliceProvider.setSpecs(SliceLiveData.SUPPORTED_SPECS);
|
||||||
@@ -182,7 +180,24 @@ public class ProviderModelSliceTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
@UiThreadTest
|
@UiThreadTest
|
||||||
public void getSlice_haveTwoWifiAndOneCarrier_getCarrierAndTwoWiFiAndSeeAll() {
|
public void getSlice_airplaneModeIsOn_oneWifiToggle() {
|
||||||
|
mWifiList.clear();
|
||||||
|
mMockNetworkProviderWorker.updateSelfResults(null);
|
||||||
|
mockHelperCondition(true, false, false, null);
|
||||||
|
|
||||||
|
final Slice slice = mMockProviderModelSlice.getSlice();
|
||||||
|
|
||||||
|
assertThat(slice).isNotNull();
|
||||||
|
verify(mListBuilder, times(1)).addRow(any(ListBuilder.RowBuilder.class));
|
||||||
|
final SliceItem sliceTitle =
|
||||||
|
SliceMetadata.from(mContext, slice).getListContent().getHeader().getTitleItem();
|
||||||
|
assertThat(sliceTitle.getText()).isEqualTo(
|
||||||
|
ResourcesUtils.getResourcesString(mContext, "wifi_settings"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@UiThreadTest
|
||||||
|
public void getSlice_haveTwoWifiAndOneCarrier_getFiveRow() {
|
||||||
mWifiList.clear();
|
mWifiList.clear();
|
||||||
mockWifiItemCondition(mMockWifiSliceItem1, "wifi1", "wifi1",
|
mockWifiItemCondition(mMockWifiSliceItem1, "wifi1", "wifi1",
|
||||||
WifiEntry.CONNECTED_STATE_CONNECTED, "wifi1_key", true);
|
WifiEntry.CONNECTED_STATE_CONNECTED, "wifi1_key", true);
|
||||||
@@ -197,13 +212,13 @@ public class ProviderModelSliceTest {
|
|||||||
|
|
||||||
assertThat(slice).isNotNull();
|
assertThat(slice).isNotNull();
|
||||||
verify(mListBuilder, times(1)).addRow(mMockCarrierRowBuild);
|
verify(mListBuilder, times(1)).addRow(mMockCarrierRowBuild);
|
||||||
verify(mListBuilder, times(4)).addRow(any(ListBuilder.RowBuilder.class));
|
verify(mListBuilder, times(5)).addRow(any(ListBuilder.RowBuilder.class));
|
||||||
assertThat(mMockProviderModelSlice.hasSeeAllRow()).isTrue();
|
assertThat(mMockProviderModelSlice.hasSeeAllRow()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@UiThreadTest
|
@UiThreadTest
|
||||||
public void getSlice_haveOneConnectedWifiAndTwoDisconnectedWifiAndNoCarrier_getFourRow() {
|
public void getSlice_haveOneConnectedWifiAndTwoDisconnectedWifiAndNoCarrier_getFiveRow() {
|
||||||
mWifiList.clear();
|
mWifiList.clear();
|
||||||
mockWifiItemCondition(mMockWifiSliceItem1, "wifi1", "wifi1",
|
mockWifiItemCondition(mMockWifiSliceItem1, "wifi1", "wifi1",
|
||||||
WifiEntry.CONNECTED_STATE_CONNECTED, "wifi1_key", true);
|
WifiEntry.CONNECTED_STATE_CONNECTED, "wifi1_key", true);
|
||||||
@@ -220,13 +235,13 @@ public class ProviderModelSliceTest {
|
|||||||
final Slice slice = mMockProviderModelSlice.getSlice();
|
final Slice slice = mMockProviderModelSlice.getSlice();
|
||||||
|
|
||||||
assertThat(slice).isNotNull();
|
assertThat(slice).isNotNull();
|
||||||
verify(mListBuilder, times(4)).addRow(any(ListBuilder.RowBuilder.class));
|
verify(mListBuilder, times(5)).addRow(any(ListBuilder.RowBuilder.class));
|
||||||
assertThat(mMockProviderModelSlice.hasSeeAllRow()).isTrue();
|
assertThat(mMockProviderModelSlice.hasSeeAllRow()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@UiThreadTest
|
@UiThreadTest
|
||||||
public void getSlice_haveTwoDisconnectedWifiAndNoCarrier_getThreeRow() {
|
public void getSlice_haveTwoDisconnectedWifiAndNoCarrier_getFourRow() {
|
||||||
mWifiList.clear();
|
mWifiList.clear();
|
||||||
mockWifiItemCondition(mMockWifiSliceItem1, "wifi1", "wifi1",
|
mockWifiItemCondition(mMockWifiSliceItem1, "wifi1", "wifi1",
|
||||||
WifiEntry.CONNECTED_STATE_DISCONNECTED, "wifi1_key", true);
|
WifiEntry.CONNECTED_STATE_DISCONNECTED, "wifi1_key", true);
|
||||||
@@ -240,13 +255,13 @@ public class ProviderModelSliceTest {
|
|||||||
final Slice slice = mMockProviderModelSlice.getSlice();
|
final Slice slice = mMockProviderModelSlice.getSlice();
|
||||||
|
|
||||||
assertThat(slice).isNotNull();
|
assertThat(slice).isNotNull();
|
||||||
verify(mListBuilder, times(3)).addRow(any(ListBuilder.RowBuilder.class));
|
verify(mListBuilder, times(4)).addRow(any(ListBuilder.RowBuilder.class));
|
||||||
assertThat(mMockProviderModelSlice.hasSeeAllRow()).isTrue();
|
assertThat(mMockProviderModelSlice.hasSeeAllRow()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@UiThreadTest
|
@UiThreadTest
|
||||||
public void getSlice_haveEthernetAndCarrierAndTwoDisconnectedWifi_getFiveRow() {
|
public void getSlice_haveEthernetAndCarrierAndTwoDisconnectedWifi_getSixRow() {
|
||||||
mWifiList.clear();
|
mWifiList.clear();
|
||||||
mockWifiItemCondition(mMockWifiSliceItem1, "wifi1", "wifi1",
|
mockWifiItemCondition(mMockWifiSliceItem1, "wifi1", "wifi1",
|
||||||
WifiEntry.CONNECTED_STATE_DISCONNECTED, "wifi1_key", true);
|
WifiEntry.CONNECTED_STATE_DISCONNECTED, "wifi1_key", true);
|
||||||
@@ -264,13 +279,13 @@ public class ProviderModelSliceTest {
|
|||||||
assertThat(slice).isNotNull();
|
assertThat(slice).isNotNull();
|
||||||
assertThat(mMockProviderModelSlice.hasCreateEthernetRow()).isTrue();
|
assertThat(mMockProviderModelSlice.hasCreateEthernetRow()).isTrue();
|
||||||
verify(mListBuilder, times(1)).addRow(mMockCarrierRowBuild);
|
verify(mListBuilder, times(1)).addRow(mMockCarrierRowBuild);
|
||||||
verify(mListBuilder, times(5)).addRow(any(ListBuilder.RowBuilder.class));
|
verify(mListBuilder, times(6)).addRow(any(ListBuilder.RowBuilder.class));
|
||||||
assertThat(mMockProviderModelSlice.hasSeeAllRow()).isTrue();
|
assertThat(mMockProviderModelSlice.hasSeeAllRow()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@UiThreadTest
|
@UiThreadTest
|
||||||
public void getSlice_haveEthernetAndCarrierAndConnectedWifiAndDisconnectedWifi_getFiveRow() {
|
public void getSlice_haveEthernetAndCarrierAndConnectedWifiAndDisconnectedWifi_getSixRow() {
|
||||||
mWifiList.clear();
|
mWifiList.clear();
|
||||||
mockWifiItemCondition(mMockWifiSliceItem1, "wifi1", "wifi1",
|
mockWifiItemCondition(mMockWifiSliceItem1, "wifi1", "wifi1",
|
||||||
WifiEntry.CONNECTED_STATE_CONNECTED, "wifi1_key", true);
|
WifiEntry.CONNECTED_STATE_CONNECTED, "wifi1_key", true);
|
||||||
@@ -288,7 +303,7 @@ public class ProviderModelSliceTest {
|
|||||||
assertThat(slice).isNotNull();
|
assertThat(slice).isNotNull();
|
||||||
assertThat(mMockProviderModelSlice.hasCreateEthernetRow()).isTrue();
|
assertThat(mMockProviderModelSlice.hasCreateEthernetRow()).isTrue();
|
||||||
verify(mListBuilder, times(1)).addRow(mMockCarrierRowBuild);
|
verify(mListBuilder, times(1)).addRow(mMockCarrierRowBuild);
|
||||||
verify(mListBuilder, times(5)).addRow(any(ListBuilder.RowBuilder.class));
|
verify(mListBuilder, times(6)).addRow(any(ListBuilder.RowBuilder.class));
|
||||||
assertThat(mMockProviderModelSlice.hasSeeAllRow()).isTrue();
|
assertThat(mMockProviderModelSlice.hasSeeAllRow()).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -380,6 +395,11 @@ public class ProviderModelSliceTest {
|
|||||||
return super.getSeeAllRow();
|
return super.getSeeAllRow();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ListBuilder.RowBuilder getWifiSliceItemRow(WifiSliceItem wifiSliceItem) {
|
||||||
|
return super.getWifiSliceItemRow(wifiSliceItem);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean hasCreateEthernetRow() {
|
public boolean hasCreateEthernetRow() {
|
||||||
return mHasCreateEthernetRow;
|
return mHasCreateEthernetRow;
|
||||||
}
|
}
|
||||||
@@ -420,29 +440,4 @@ public class ProviderModelSliceTest {
|
|||||||
|
|
||||||
verify(mMockNetworkProviderWorker, never()).connectCarrierNetwork();
|
verify(mMockNetworkProviderWorker, never()).connectCarrierNetwork();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getWifiSliceItemRow_wifiNoInternetAccess_actionConnectToWifiSsid() {
|
|
||||||
when(mWifiSliceItem.getKey()).thenReturn("wifi_key");
|
|
||||||
when(mWifiSliceItem.getTitle()).thenReturn("wifi_ssid");
|
|
||||||
when(mWifiSliceItem.hasInternetAccess()).thenReturn(false);
|
|
||||||
|
|
||||||
ListBuilder.RowBuilder rowBuilder =
|
|
||||||
mMockProviderModelSlice.getWifiSliceItemRow(mWifiSliceItem);
|
|
||||||
|
|
||||||
assertThat(rowBuilder.getPrimaryAction().getTitle())
|
|
||||||
.isEqualTo("wifi_ssid");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getWifiSliceItemRow_wifiHasInternetAccess_actionConnectToCarrier() {
|
|
||||||
when(mWifiSliceItem.getTitle()).thenReturn("wifi_ssid");
|
|
||||||
when(mWifiSliceItem.hasInternetAccess()).thenReturn(true);
|
|
||||||
|
|
||||||
ListBuilder.RowBuilder rowBuilder =
|
|
||||||
mMockProviderModelSlice.getWifiSliceItemRow(mWifiSliceItem);
|
|
||||||
|
|
||||||
assertThat(rowBuilder.getPrimaryAction().getTitle())
|
|
||||||
.isEqualTo(ACTION_TITLE_CONNECT_TO_CARRIER);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -18,12 +18,9 @@ package com.android.settings.panel;
|
|||||||
|
|
||||||
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.Mockito.clearInvocations;
|
import static org.mockito.Mockito.clearInvocations;
|
||||||
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.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -32,9 +29,7 @@ import android.content.Context;
|
|||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.net.wifi.ScanResult;
|
import android.net.wifi.ScanResult;
|
||||||
import android.net.wifi.WifiManager;
|
import android.net.wifi.WifiManager;
|
||||||
import android.os.Handler;
|
|
||||||
|
|
||||||
import androidx.fragment.app.FragmentActivity;
|
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
|
|
||||||
@@ -82,8 +77,6 @@ public class InternetConnectivityPanelTest {
|
|||||||
@Rule
|
@Rule
|
||||||
public final MockitoRule mMocks = MockitoJUnit.rule();
|
public final MockitoRule mMocks = MockitoJUnit.rule();
|
||||||
@Mock
|
@Mock
|
||||||
Handler mMainThreadHandler;
|
|
||||||
@Mock
|
|
||||||
PanelContentCallback mPanelContentCallback;
|
PanelContentCallback mPanelContentCallback;
|
||||||
@Mock
|
@Mock
|
||||||
InternetUpdater mInternetUpdater;
|
InternetUpdater mInternetUpdater;
|
||||||
@@ -91,17 +84,34 @@ public class InternetConnectivityPanelTest {
|
|||||||
private WifiManager mWifiManager;
|
private WifiManager mWifiManager;
|
||||||
@Mock
|
@Mock
|
||||||
private ProviderModelSliceHelper mProviderModelSliceHelper;
|
private ProviderModelSliceHelper mProviderModelSliceHelper;
|
||||||
@Mock
|
|
||||||
private FragmentActivity mPanelActivity;
|
|
||||||
|
|
||||||
private Context mContext;
|
private Context mContext;
|
||||||
|
private FakeHandlerInjector mFakeHandlerInjector;
|
||||||
private InternetConnectivityPanel mPanel;
|
private InternetConnectivityPanel mPanel;
|
||||||
|
|
||||||
|
private class FakeHandlerInjector extends InternetConnectivityPanel.HandlerInjector {
|
||||||
|
|
||||||
|
private Runnable mRunnable;
|
||||||
|
|
||||||
|
FakeHandlerInjector(Context context) {
|
||||||
|
super(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void postDelay(Runnable runnable) {
|
||||||
|
mRunnable = runnable;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Runnable getRunnable() {
|
||||||
|
return mRunnable;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Before
|
@Before
|
||||||
public void setUp() {
|
public void setUp() {
|
||||||
mContext = spy(ApplicationProvider.getApplicationContext());
|
mContext = spy(ApplicationProvider.getApplicationContext());
|
||||||
|
mFakeHandlerInjector = new FakeHandlerInjector(mContext);
|
||||||
when(mContext.getApplicationContext()).thenReturn(mContext);
|
when(mContext.getApplicationContext()).thenReturn(mContext);
|
||||||
when(mContext.getMainThreadHandler()).thenReturn(mMainThreadHandler);
|
|
||||||
when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
|
when(mContext.getSystemService(WifiManager.class)).thenReturn(mWifiManager);
|
||||||
|
|
||||||
mPanel = InternetConnectivityPanel.create(mContext);
|
mPanel = InternetConnectivityPanel.create(mContext);
|
||||||
@@ -109,6 +119,7 @@ public class InternetConnectivityPanelTest {
|
|||||||
mPanel.mIsProviderModelEnabled = true;
|
mPanel.mIsProviderModelEnabled = true;
|
||||||
mPanel.mInternetUpdater = mInternetUpdater;
|
mPanel.mInternetUpdater = mInternetUpdater;
|
||||||
mPanel.mProviderModelSliceHelper = mProviderModelSliceHelper;
|
mPanel.mProviderModelSliceHelper = mProviderModelSliceHelper;
|
||||||
|
mPanel.mHandlerInjector = mFakeHandlerInjector;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -203,20 +214,6 @@ public class InternetConnectivityPanelTest {
|
|||||||
assertThat(mPanel.getSubTitle()).isEqualTo(SUBTITLE_TEXT_TAP_A_NETWORK_TO_CONNECT);
|
assertThat(mPanel.getSubTitle()).isEqualTo(SUBTITLE_TEXT_TAP_A_NETWORK_TO_CONNECT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getCustomizedButtonTitle_wifiOff_turnOnWifi() {
|
|
||||||
doReturn(false).when(mInternetUpdater).isWifiEnabled();
|
|
||||||
|
|
||||||
assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_TURN_ON_WIFI);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getCustomizedButtonTitle_wifiOn_turnOffWifi() {
|
|
||||||
doReturn(true).when(mInternetUpdater).isWifiEnabled();
|
|
||||||
|
|
||||||
assertThat(mPanel.getCustomizedButtonTitle()).isEqualTo(BUTTON_TURN_OFF_WIFI);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void getSlices_providerModelDisabled_containsNecessarySlices() {
|
public void getSlices_providerModelDisabled_containsNecessarySlices() {
|
||||||
mPanel.mIsProviderModelEnabled = false;
|
mPanel.mIsProviderModelEnabled = false;
|
||||||
@@ -240,31 +237,6 @@ public class InternetConnectivityPanelTest {
|
|||||||
assertThat(mPanel.getSeeMoreIntent()).isNull();
|
assertThat(mPanel.getSeeMoreIntent()).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void onClickCustomizedButton_wifiOn_setWifiOff() {
|
|
||||||
doReturn(true).when(mInternetUpdater).isWifiEnabled();
|
|
||||||
|
|
||||||
mPanel.onClickCustomizedButton(mPanelActivity);
|
|
||||||
|
|
||||||
verify(mWifiManager).setWifiEnabled(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void onClickCustomizedButton_wifiOff_setWifiOn() {
|
|
||||||
doReturn(false).when(mInternetUpdater).isWifiEnabled();
|
|
||||||
|
|
||||||
mPanel.onClickCustomizedButton(mPanelActivity);
|
|
||||||
|
|
||||||
verify(mWifiManager).setWifiEnabled(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void onClickCustomizedButton_shouldNotFinishActivity() {
|
|
||||||
mPanel.onClickCustomizedButton(mPanelActivity);
|
|
||||||
|
|
||||||
verify(mPanelActivity, never()).finish();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void updatePanelTitle_onHeaderChanged() {
|
public void updatePanelTitle_onHeaderChanged() {
|
||||||
clearInvocations(mPanelContentCallback);
|
clearInvocations(mPanelContentCallback);
|
||||||
@@ -295,36 +267,41 @@ public class InternetConnectivityPanelTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void showProgressBar_wifiDisabled_hideProgress() {
|
public void updateProgressBar_wifiDisabled_hideProgress() {
|
||||||
mPanel.mIsProgressBarVisible = true;
|
mPanel.mIsProgressBarVisible = true;
|
||||||
doReturn(false).when(mInternetUpdater).isWifiEnabled();
|
doReturn(false).when(mInternetUpdater).isWifiEnabled();
|
||||||
clearInvocations(mPanelContentCallback);
|
clearInvocations(mPanelContentCallback);
|
||||||
|
|
||||||
mPanel.showProgressBar();
|
mPanel.updateProgressBar();
|
||||||
|
|
||||||
assertThat(mPanel.isProgressBarVisible()).isFalse();
|
assertThat(mPanel.isProgressBarVisible()).isFalse();
|
||||||
verify(mPanelContentCallback).onProgressBarVisibleChanged();
|
verify(mPanelContentCallback).onProgressBarVisibleChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void showProgressBar_noWifiScanResults_showProgressForever() {
|
public void updateProgressBar_noWifiScanResults_showProgressForever() {
|
||||||
|
mPanel.mIsScanningSubTitleShownOnce = false;
|
||||||
mPanel.mIsProgressBarVisible = false;
|
mPanel.mIsProgressBarVisible = false;
|
||||||
doReturn(true).when(mInternetUpdater).isWifiEnabled();
|
doReturn(true).when(mInternetUpdater).isWifiEnabled();
|
||||||
List<ScanResult> noWifiScanResults = new ArrayList<>();
|
List<ScanResult> noWifiScanResults = new ArrayList<>();
|
||||||
doReturn(noWifiScanResults).when(mWifiManager).getScanResults();
|
doReturn(noWifiScanResults).when(mWifiManager).getScanResults();
|
||||||
clearInvocations(mPanelContentCallback);
|
clearInvocations(mPanelContentCallback);
|
||||||
|
|
||||||
mPanel.showProgressBar();
|
mPanel.updateProgressBar();
|
||||||
|
|
||||||
assertThat(mPanel.isProgressBarVisible()).isTrue();
|
assertThat(mPanel.mIsProgressBarVisible).isTrue();
|
||||||
verify(mPanelContentCallback).onProgressBarVisibleChanged();
|
verify(mPanelContentCallback).onProgressBarVisibleChanged();
|
||||||
verify(mPanelContentCallback).onHeaderChanged();
|
verify(mPanelContentCallback).onHeaderChanged();
|
||||||
verify(mMainThreadHandler, never())
|
|
||||||
.postDelayed(any() /* mHideProgressBarRunnable */, anyLong());
|
assertThat(mFakeHandlerInjector.getRunnable())
|
||||||
|
.isEqualTo(mPanel.mHideScanningSubTitleRunnable);
|
||||||
|
mFakeHandlerInjector.getRunnable().run();
|
||||||
|
assertThat(mPanel.mIsScanningSubTitleShownOnce).isTrue();
|
||||||
|
assertThat(mPanel.mIsProgressBarVisible).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void showProgressBar_hasWifiScanResults_showProgressDelayedHide() {
|
public void updateProgressBar_hasWifiScanResults_showProgressDelayedHide() {
|
||||||
mPanel.mIsProgressBarVisible = false;
|
mPanel.mIsProgressBarVisible = false;
|
||||||
doReturn(true).when(mInternetUpdater).isWifiEnabled();
|
doReturn(true).when(mInternetUpdater).isWifiEnabled();
|
||||||
List<ScanResult> hasWifiScanResults = mock(ArrayList.class);
|
List<ScanResult> hasWifiScanResults = mock(ArrayList.class);
|
||||||
@@ -332,11 +309,15 @@ public class InternetConnectivityPanelTest {
|
|||||||
doReturn(hasWifiScanResults).when(mWifiManager).getScanResults();
|
doReturn(hasWifiScanResults).when(mWifiManager).getScanResults();
|
||||||
clearInvocations(mPanelContentCallback);
|
clearInvocations(mPanelContentCallback);
|
||||||
|
|
||||||
mPanel.showProgressBar();
|
mPanel.updateProgressBar();
|
||||||
|
|
||||||
assertThat(mPanel.isProgressBarVisible()).isTrue();
|
assertThat(mPanel.isProgressBarVisible()).isTrue();
|
||||||
verify(mPanelContentCallback).onProgressBarVisibleChanged();
|
verify(mPanelContentCallback).onProgressBarVisibleChanged();
|
||||||
verify(mMainThreadHandler).postDelayed(any() /* mHideProgressBarRunnable */, anyLong());
|
|
||||||
|
assertThat(mFakeHandlerInjector.getRunnable())
|
||||||
|
.isEqualTo(mPanel.mHideProgressBarRunnable);
|
||||||
|
mFakeHandlerInjector.getRunnable().run();
|
||||||
|
assertThat(mPanel.mIsProgressBarVisible).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
Reference in New Issue
Block a user