Merge "Implement new design of Wi-Fi card"

This commit is contained in:
TreeHugger Robot
2020-01-21 10:31:33 +00:00
committed by Android (Google) Code Review
6 changed files with 215 additions and 99 deletions

View File

@@ -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();
}
}

View File

@@ -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));