Implement new design of Wi-Fi card
- always show Wi-Fi card - collapse the card in the new UI session when connecting to a stable network - hide toggle, show a level icon and subtext in the new collapsed mode - show loading row when the AP list is not full Test: robotest Fixes: 147473096 Change-Id: I893064ef04d40d8e7cb8e62c1e72a2cb5e97f6ac
This commit is contained in:
@@ -16,6 +16,9 @@
|
||||
|
||||
package com.android.settings.wifi.slice;
|
||||
|
||||
import static com.android.settings.wifi.slice.ContextualWifiSlice.COLLAPSED_ROW_COUNT;
|
||||
import static com.android.settings.wifi.slice.WifiSlice.DEFAULT_EXPANDED_ROW_COUNT;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
@@ -75,75 +78,87 @@ public class ContextualWifiSliceTest {
|
||||
mWifiManager.setWifiEnabled(true);
|
||||
|
||||
mWifiSlice = new ContextualWifiSlice(mContext);
|
||||
mWifiSlice.sPreviouslyDisplayed = false;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getWifiSlice_hasActiveConnection_shouldReturnNull() {
|
||||
mWifiSlice.sPreviouslyDisplayed = false;
|
||||
connectToWifi(makeValidatedNetworkCapabilities());
|
||||
|
||||
final Slice wifiSlice = mWifiSlice.getSlice();
|
||||
|
||||
assertThat(wifiSlice).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getWifiSlice_newSession_hasActiveConnection_shouldReturnNull() {
|
||||
// Session: use a non-active value
|
||||
// previous displayed: yes
|
||||
mWifiSlice.sPreviouslyDisplayed = true;
|
||||
public void getWifiSlice_newSession_hasActiveConnection_shouldCollapseSlice() {
|
||||
mWifiSlice.sActiveUiSession = ~mFeatureFactory.slicesFeatureProvider.getUiSessionToken();
|
||||
connectToWifi(makeValidatedNetworkCapabilities());
|
||||
|
||||
final Slice wifiSlice = mWifiSlice.getSlice();
|
||||
|
||||
assertThat(wifiSlice).isNull();
|
||||
assertTitleAndIcon(wifiSlice);
|
||||
assertNoToggle(wifiSlice);
|
||||
assertThat(ContextualWifiSlice.getApRowCount()).isEqualTo(COLLAPSED_ROW_COUNT);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getWifiSlice_previousDisplayed_hasActiveConnection_shouldHaveTitleAndToggle() {
|
||||
public void getWifiSlice_newSession_noConnection_shouldExpandSlice() {
|
||||
mWifiSlice.sActiveUiSession = ~mFeatureFactory.slicesFeatureProvider.getUiSessionToken();
|
||||
|
||||
final Slice wifiSlice = mWifiSlice.getSlice();
|
||||
|
||||
assertTitleAndIcon(wifiSlice);
|
||||
assertToggle(wifiSlice);
|
||||
assertThat(ContextualWifiSlice.getApRowCount()).isEqualTo(DEFAULT_EXPANDED_ROW_COUNT);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getWifiSlice_previousExpanded_hasActiveConnection_shouldExpandSlice() {
|
||||
mWifiSlice.sActiveUiSession = mFeatureFactory.slicesFeatureProvider.getUiSessionToken();
|
||||
mWifiSlice.sPreviouslyDisplayed = true;
|
||||
mWifiSlice.sToggleNeeded = true;
|
||||
connectToWifi(makeValidatedNetworkCapabilities());
|
||||
|
||||
final Slice wifiSlice = mWifiSlice.getSlice();
|
||||
|
||||
final SliceMetadata metadata = SliceMetadata.from(mContext, wifiSlice);
|
||||
assertThat(metadata.getTitle()).isEqualTo(mContext.getString(R.string.wifi_settings));
|
||||
|
||||
final List<SliceAction> toggles = metadata.getToggles();
|
||||
assertThat(toggles).hasSize(1);
|
||||
|
||||
final SliceAction primaryAction = metadata.getPrimaryAction();
|
||||
final IconCompat expectedToggleIcon = IconCompat.createWithResource(mContext,
|
||||
R.drawable.ic_settings_wireless);
|
||||
assertThat(primaryAction.getIcon().toString()).isEqualTo(expectedToggleIcon.toString());
|
||||
assertTitleAndIcon(wifiSlice);
|
||||
assertToggle(wifiSlice);
|
||||
assertThat(ContextualWifiSlice.getApRowCount()).isEqualTo(DEFAULT_EXPANDED_ROW_COUNT);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getWifiSlice_isCaptivePortal_shouldHaveTitleAndToggle() {
|
||||
mWifiSlice.sPreviouslyDisplayed = false;
|
||||
connectToWifi(WifiSliceTest.makeCaptivePortalNetworkCapabilities());
|
||||
public void getWifiSlice_previousExpanded_disableWifi_shouldHaveToggle() {
|
||||
mWifiSlice.sActiveUiSession = mFeatureFactory.slicesFeatureProvider.getUiSessionToken();
|
||||
mWifiSlice.sToggleNeeded = true;
|
||||
connectToWifi(makeValidatedNetworkCapabilities());
|
||||
|
||||
mWifiManager.setWifiEnabled(false);
|
||||
final Slice wifiSlice = mWifiSlice.getSlice();
|
||||
|
||||
final SliceMetadata metadata = SliceMetadata.from(mContext, wifiSlice);
|
||||
assertThat(metadata.getTitle()).isEqualTo(mContext.getString(R.string.wifi_settings));
|
||||
assertTitleAndIcon(wifiSlice);
|
||||
assertToggle(wifiSlice);
|
||||
}
|
||||
|
||||
final List<SliceAction> toggles = metadata.getToggles();
|
||||
assertThat(toggles).hasSize(1);
|
||||
@Test
|
||||
public void getWifiSlice_previousCollapsed_disableWifi_shouldHaveToggle() {
|
||||
mWifiSlice.sActiveUiSession = mFeatureFactory.slicesFeatureProvider.getUiSessionToken();
|
||||
mWifiSlice.sToggleNeeded = false;
|
||||
connectToWifi(makeValidatedNetworkCapabilities());
|
||||
|
||||
final SliceAction primaryAction = metadata.getPrimaryAction();
|
||||
final IconCompat expectedToggleIcon = IconCompat.createWithResource(mContext,
|
||||
R.drawable.ic_settings_wireless);
|
||||
assertThat(primaryAction.getIcon().toString()).isEqualTo(expectedToggleIcon.toString());
|
||||
mWifiManager.setWifiEnabled(false);
|
||||
final Slice wifiSlice = mWifiSlice.getSlice();
|
||||
|
||||
assertTitleAndIcon(wifiSlice);
|
||||
assertToggle(wifiSlice);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getWifiSlice_previousCollapsed_connectionLoss_shouldCollapseSlice() {
|
||||
mWifiSlice.sActiveUiSession = mFeatureFactory.slicesFeatureProvider.getUiSessionToken();
|
||||
mWifiSlice.sToggleNeeded = false;
|
||||
connectToWifi(makeValidatedNetworkCapabilities());
|
||||
|
||||
mWifiManager.disconnect();
|
||||
final Slice wifiSlice = mWifiSlice.getSlice();
|
||||
|
||||
assertTitleAndIcon(wifiSlice);
|
||||
assertNoToggle(wifiSlice);
|
||||
assertThat(ContextualWifiSlice.getApRowCount()).isEqualTo(COLLAPSED_ROW_COUNT);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getWifiSlice_contextualWifiSlice_shouldReturnContextualWifiSliceUri() {
|
||||
mWifiSlice.sActiveUiSession = mFeatureFactory.slicesFeatureProvider.getUiSessionToken();
|
||||
mWifiSlice.sPreviouslyDisplayed = true;
|
||||
|
||||
final Slice wifiSlice = mWifiSlice.getSlice();
|
||||
|
||||
@@ -165,4 +180,26 @@ public class ContextualWifiSliceTest {
|
||||
nc.addCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED);
|
||||
return nc;
|
||||
}
|
||||
|
||||
private void assertTitleAndIcon(Slice slice) {
|
||||
final SliceMetadata metadata = SliceMetadata.from(mContext, slice);
|
||||
assertThat(metadata.getTitle()).isEqualTo(mContext.getString(R.string.wifi_settings));
|
||||
|
||||
final SliceAction primaryAction = metadata.getPrimaryAction();
|
||||
final IconCompat expectedToggleIcon = IconCompat.createWithResource(mContext,
|
||||
R.drawable.ic_settings_wireless);
|
||||
assertThat(primaryAction.getIcon().toString()).isEqualTo(expectedToggleIcon.toString());
|
||||
}
|
||||
|
||||
private void assertToggle(Slice slice) {
|
||||
final SliceMetadata metadata = SliceMetadata.from(mContext, slice);
|
||||
final List<SliceAction> toggles = metadata.getToggles();
|
||||
assertThat(toggles).hasSize(1);
|
||||
}
|
||||
|
||||
private void assertNoToggle(Slice slice) {
|
||||
final SliceMetadata metadata = SliceMetadata.from(mContext, slice);
|
||||
final List<SliceAction> toggles = metadata.getToggles();
|
||||
assertThat(toggles).isEmpty();
|
||||
}
|
||||
}
|
||||
|
@@ -51,9 +51,6 @@ import com.android.settings.slices.SliceBackgroundWorker;
|
||||
import com.android.settings.testutils.SliceTester;
|
||||
import com.android.settingslib.wifi.AccessPoint;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
@@ -63,12 +60,16 @@ import org.robolectric.annotation.Config;
|
||||
import org.robolectric.annotation.Implementation;
|
||||
import org.robolectric.annotation.Implements;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@RunWith(RobolectricTestRunner.class)
|
||||
@Config(shadows = WifiSliceTest.ShadowSliceBackgroundWorker.class)
|
||||
public class WifiSliceTest {
|
||||
|
||||
private static final String AP1_NAME = "ap1";
|
||||
private static final String AP2_NAME = "ap2";
|
||||
private static final String AP3_NAME = "ap3";
|
||||
|
||||
private Context mContext;
|
||||
private ContentResolver mResolver;
|
||||
@@ -205,15 +206,15 @@ public class WifiSliceTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getWifiSlice_oneReachableAp_shouldNotReturnLoadingRow() {
|
||||
public void getWifiSlice_oneReachableAp_shouldReturnLoadingRow() {
|
||||
setWorkerResults(createAccessPoint(AP1_NAME, false, true));
|
||||
|
||||
final Slice wifiSlice = mWifiSlice.getSlice();
|
||||
final List<SliceItem> sliceItems = wifiSlice.getItems();
|
||||
|
||||
SliceTester.assertAnySliceItemContainsTitle(sliceItems, AP1_NAME);
|
||||
// No scanning text
|
||||
SliceTester.assertNoSliceItemContainsSubtitle(sliceItems,
|
||||
// Has scanning text
|
||||
SliceTester.assertAnySliceItemContainsSubtitle(sliceItems,
|
||||
mContext.getString(R.string.wifi_empty_list_wifi_on));
|
||||
}
|
||||
|
||||
@@ -221,13 +222,15 @@ public class WifiSliceTest {
|
||||
public void getWifiSlice_allReachableAps_shouldNotReturnLoadingRow() {
|
||||
setWorkerResults(
|
||||
createAccessPoint(AP1_NAME, false, true),
|
||||
createAccessPoint(AP2_NAME, false, true));
|
||||
createAccessPoint(AP2_NAME, false, true),
|
||||
createAccessPoint(AP3_NAME, false, true));
|
||||
|
||||
final Slice wifiSlice = mWifiSlice.getSlice();
|
||||
final List<SliceItem> sliceItems = wifiSlice.getItems();
|
||||
|
||||
SliceTester.assertAnySliceItemContainsTitle(sliceItems, AP1_NAME);
|
||||
SliceTester.assertAnySliceItemContainsTitle(sliceItems, AP2_NAME);
|
||||
SliceTester.assertAnySliceItemContainsTitle(sliceItems, AP3_NAME);
|
||||
// No scanning text
|
||||
SliceTester.assertNoSliceItemContainsSubtitle(sliceItems,
|
||||
mContext.getString(R.string.wifi_empty_list_wifi_on));
|
||||
|
Reference in New Issue
Block a user