Wifi slice improvement
- always show toggle Bug: 149666241 Test: robotest Change-Id: I602d26abf2dfa631a939ee79e9adc63bed44ade0
This commit is contained in:
@@ -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));
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user