Wifi slice improvement

- always show toggle

Bug: 149666241
Test: robotest
Change-Id: I602d26abf2dfa631a939ee79e9adc63bed44ade0
This commit is contained in:
Jason Chiu
2020-02-20 17:38:01 +08:00
parent e6704dc37d
commit dd1fbd68d0
3 changed files with 22 additions and 62 deletions

View File

@@ -52,7 +52,7 @@ public class ContextualWifiSlice extends WifiSlice {
@VisibleForTesting @VisibleForTesting
static long sActiveUiSession = -1000; static long sActiveUiSession = -1000;
@VisibleForTesting @VisibleForTesting
static boolean sToggleNeeded = true; static boolean sApRowCollapsed;
public ContextualWifiSlice(Context context) { public ContextualWifiSlice(Context context) {
super(context); super(context);
@@ -69,26 +69,26 @@ public class ContextualWifiSlice extends WifiSlice {
.getSlicesFeatureProvider().getUiSessionToken(); .getSlicesFeatureProvider().getUiSessionToken();
if (currentUiSession != sActiveUiSession) { if (currentUiSession != sActiveUiSession) {
sActiveUiSession = currentUiSession; sActiveUiSession = currentUiSession;
sToggleNeeded = !hasWorkingNetwork(); sApRowCollapsed = hasWorkingNetwork();
} else if (!mWifiManager.isWifiEnabled()) { } else if (!mWifiManager.isWifiEnabled()) {
sToggleNeeded = true; sApRowCollapsed = false;
} }
return super.getSlice(); return super.getSlice();
} }
static int getApRowCount() { static int getApRowCount() {
return sToggleNeeded ? DEFAULT_EXPANDED_ROW_COUNT : COLLAPSED_ROW_COUNT; return sApRowCollapsed ? COLLAPSED_ROW_COUNT : DEFAULT_EXPANDED_ROW_COUNT;
} }
@Override @Override
protected boolean isToggleNeeded() { protected boolean isApRowCollapsed() {
return sToggleNeeded; return sApRowCollapsed;
} }
@Override @Override
protected ListBuilder.RowBuilder getHeaderRow(AccessPoint accessPoint) { protected ListBuilder.RowBuilder getHeaderRow(AccessPoint accessPoint) {
final ListBuilder.RowBuilder builder = super.getHeaderRow(accessPoint); final ListBuilder.RowBuilder builder = super.getHeaderRow(accessPoint);
if (!sToggleNeeded) { if (sApRowCollapsed) {
builder.setTitleItem(getLevelIcon(accessPoint), ListBuilder.ICON_IMAGE) builder.setTitleItem(getLevelIcon(accessPoint), ListBuilder.ICON_IMAGE)
.setSubtitle(getSubtitle(accessPoint)); .setSubtitle(getSubtitle(accessPoint));
} }

View File

@@ -107,7 +107,7 @@ public class WifiSlice implements CustomSliceable {
final boolean isFirstApActive = apCount > 0 && apList.get(0).isActive(); final boolean isFirstApActive = apCount > 0 && apList.get(0).isActive();
handleNetworkCallback(worker, isFirstApActive); handleNetworkCallback(worker, isFirstApActive);
if (!isToggleNeeded()) { if (isApRowCollapsed()) {
if (isFirstApActive) { if (isFirstApActive) {
// refresh header subtext // refresh header subtext
listBuilder = getListBuilder(true /* isWifiEnabled */, apList.get(0)); listBuilder = getListBuilder(true /* isWifiEnabled */, apList.get(0));
@@ -142,8 +142,8 @@ public class WifiSlice implements CustomSliceable {
} }
} }
protected boolean isToggleNeeded() { protected boolean isApRowCollapsed() {
return true; return false;
} }
protected ListBuilder.RowBuilder getHeaderRow(AccessPoint accessPoint) { protected ListBuilder.RowBuilder getHeaderRow(AccessPoint accessPoint) {
@@ -160,15 +160,14 @@ public class WifiSlice implements CustomSliceable {
} }
private ListBuilder getListBuilder(boolean isWifiEnabled, AccessPoint accessPoint) { private ListBuilder getListBuilder(boolean isWifiEnabled, AccessPoint accessPoint) {
final PendingIntent toggleAction = getBroadcastIntent(mContext);
final SliceAction toggleSliceAction = SliceAction.createToggle(toggleAction,
null /* actionTitle */, isWifiEnabled);
final ListBuilder builder = new ListBuilder(mContext, getUri(), ListBuilder.INFINITY) final ListBuilder builder = new ListBuilder(mContext, getUri(), ListBuilder.INFINITY)
.setAccentColor(COLOR_NOT_TINTED) .setAccentColor(COLOR_NOT_TINTED)
.setKeywords(getKeywords()) .setKeywords(getKeywords())
.addRow(getHeaderRow(accessPoint)); .addRow(getHeaderRow(accessPoint))
if (isToggleNeeded()) { .addAction(toggleSliceAction);
final PendingIntent toggleAction = getBroadcastIntent(mContext);
builder.addAction(SliceAction.createToggle(toggleAction, null /* actionTitle */,
isWifiEnabled));
}
return builder; return builder;
} }

View File

@@ -87,8 +87,7 @@ public class ContextualWifiSliceTest {
final Slice wifiSlice = mWifiSlice.getSlice(); final Slice wifiSlice = mWifiSlice.getSlice();
assertTitleAndIcon(wifiSlice); assertWifiHeader(wifiSlice);
assertNoToggle(wifiSlice);
assertThat(ContextualWifiSlice.getApRowCount()).isEqualTo(COLLAPSED_ROW_COUNT); assertThat(ContextualWifiSlice.getApRowCount()).isEqualTo(COLLAPSED_ROW_COUNT);
} }
@@ -98,61 +97,32 @@ public class ContextualWifiSliceTest {
final Slice wifiSlice = mWifiSlice.getSlice(); final Slice wifiSlice = mWifiSlice.getSlice();
assertTitleAndIcon(wifiSlice); assertWifiHeader(wifiSlice);
assertToggle(wifiSlice);
assertThat(ContextualWifiSlice.getApRowCount()).isEqualTo(DEFAULT_EXPANDED_ROW_COUNT); assertThat(ContextualWifiSlice.getApRowCount()).isEqualTo(DEFAULT_EXPANDED_ROW_COUNT);
} }
@Test @Test
public void getWifiSlice_previousExpanded_hasActiveConnection_shouldExpandSlice() { public void getWifiSlice_previousExpanded_hasActiveConnection_shouldExpandSlice() {
mWifiSlice.sActiveUiSession = mFeatureFactory.slicesFeatureProvider.getUiSessionToken(); mWifiSlice.sActiveUiSession = mFeatureFactory.slicesFeatureProvider.getUiSessionToken();
mWifiSlice.sToggleNeeded = true; mWifiSlice.sApRowCollapsed = false;
connectToWifi(makeValidatedNetworkCapabilities()); connectToWifi(makeValidatedNetworkCapabilities());
final Slice wifiSlice = mWifiSlice.getSlice(); final Slice wifiSlice = mWifiSlice.getSlice();
assertTitleAndIcon(wifiSlice); assertWifiHeader(wifiSlice);
assertToggle(wifiSlice);
assertThat(ContextualWifiSlice.getApRowCount()).isEqualTo(DEFAULT_EXPANDED_ROW_COUNT); assertThat(ContextualWifiSlice.getApRowCount()).isEqualTo(DEFAULT_EXPANDED_ROW_COUNT);
} }
@Test
public void getWifiSlice_previousExpanded_disableWifi_shouldHaveToggle() {
mWifiSlice.sActiveUiSession = mFeatureFactory.slicesFeatureProvider.getUiSessionToken();
mWifiSlice.sToggleNeeded = true;
connectToWifi(makeValidatedNetworkCapabilities());
mWifiManager.setWifiEnabled(false);
final Slice wifiSlice = mWifiSlice.getSlice();
assertTitleAndIcon(wifiSlice);
assertToggle(wifiSlice);
}
@Test
public void getWifiSlice_previousCollapsed_disableWifi_shouldHaveToggle() {
mWifiSlice.sActiveUiSession = mFeatureFactory.slicesFeatureProvider.getUiSessionToken();
mWifiSlice.sToggleNeeded = false;
connectToWifi(makeValidatedNetworkCapabilities());
mWifiManager.setWifiEnabled(false);
final Slice wifiSlice = mWifiSlice.getSlice();
assertTitleAndIcon(wifiSlice);
assertToggle(wifiSlice);
}
@Test @Test
public void getWifiSlice_previousCollapsed_connectionLoss_shouldCollapseSlice() { public void getWifiSlice_previousCollapsed_connectionLoss_shouldCollapseSlice() {
mWifiSlice.sActiveUiSession = mFeatureFactory.slicesFeatureProvider.getUiSessionToken(); mWifiSlice.sActiveUiSession = mFeatureFactory.slicesFeatureProvider.getUiSessionToken();
mWifiSlice.sToggleNeeded = false; mWifiSlice.sApRowCollapsed = true;
connectToWifi(makeValidatedNetworkCapabilities()); connectToWifi(makeValidatedNetworkCapabilities());
mWifiManager.disconnect(); mWifiManager.disconnect();
final Slice wifiSlice = mWifiSlice.getSlice(); final Slice wifiSlice = mWifiSlice.getSlice();
assertTitleAndIcon(wifiSlice); assertWifiHeader(wifiSlice);
assertNoToggle(wifiSlice);
assertThat(ContextualWifiSlice.getApRowCount()).isEqualTo(COLLAPSED_ROW_COUNT); assertThat(ContextualWifiSlice.getApRowCount()).isEqualTo(COLLAPSED_ROW_COUNT);
} }
@@ -181,7 +151,7 @@ public class ContextualWifiSliceTest {
return nc; return nc;
} }
private void assertTitleAndIcon(Slice slice) { private void assertWifiHeader(Slice slice) {
final SliceMetadata metadata = SliceMetadata.from(mContext, slice); final SliceMetadata metadata = SliceMetadata.from(mContext, slice);
assertThat(metadata.getTitle()).isEqualTo(mContext.getString(R.string.wifi_settings)); assertThat(metadata.getTitle()).isEqualTo(mContext.getString(R.string.wifi_settings));
@@ -189,17 +159,8 @@ public class ContextualWifiSliceTest {
final IconCompat expectedToggleIcon = IconCompat.createWithResource(mContext, final IconCompat expectedToggleIcon = IconCompat.createWithResource(mContext,
R.drawable.ic_settings_wireless); R.drawable.ic_settings_wireless);
assertThat(primaryAction.getIcon().toString()).isEqualTo(expectedToggleIcon.toString()); 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(); final List<SliceAction> toggles = metadata.getToggles();
assertThat(toggles).hasSize(1); 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();
}
} }