Merge "Show slice without toggle when there's no wifi permission" into tm-dev am: c5153183d8

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/18030884

Change-Id: I8a5a602eb88c8947ad1ba293e3477e05d5c99ed7
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Tsung-Mao Fang
2022-05-05 09:08:53 +00:00
committed by Automerger Merge Worker
2 changed files with 38 additions and 17 deletions

View File

@@ -97,14 +97,13 @@ public class WifiSlice implements CustomSliceable {
@Override
public Slice getSlice() {
// If external calling package doesn't have Wi-Fi permission.
if (!Utils.isSettingsIntelligence(mContext) && !isPermissionGranted(mContext)) {
Log.i(TAG, "No wifi permissions to control wifi slice.");
return null;
}
final boolean isPermissionGranted =
Utils.isSettingsIntelligence(mContext) || isPermissionGranted(mContext);
final boolean isWifiEnabled = isWifiEnabled();
ListBuilder listBuilder = getListBuilder(isWifiEnabled, null /* wifiSliceItem */);
if (!isWifiEnabled) {
ListBuilder listBuilder = getListBuilder(isWifiEnabled, null /* wifiSliceItem */,
isPermissionGranted);
// If the caller doesn't have the permission granted, just return a slice without a toggle.
if (!isWifiEnabled || !isPermissionGranted) {
return listBuilder.build();
}
@@ -116,7 +115,8 @@ public class WifiSlice implements CustomSliceable {
if (isFirstApActive) {
// refresh header subtext
listBuilder = getListBuilder(true /* isWifiEnabled */, apList.get(0));
listBuilder = getListBuilder(
true /* isWifiEnabled */, apList.get(0), true /* isWiFiPermissionGranted */);
}
if (isApRowCollapsed()) {
@@ -186,16 +186,21 @@ public class WifiSlice implements CustomSliceable {
return builder;
}
private ListBuilder getListBuilder(boolean isWifiEnabled, WifiSliceItem wifiSliceItem) {
private ListBuilder getListBuilder(boolean isWifiEnabled, WifiSliceItem wifiSliceItem,
boolean isWiFiPermissionGranted) {
final ListBuilder builder = new ListBuilder(mContext, getUri(), ListBuilder.INFINITY)
.setAccentColor(COLOR_NOT_TINTED)
.setKeywords(getKeywords())
.addRow(getHeaderRow(isWifiEnabled, wifiSliceItem));
if (mWifiRestriction.isChangeWifiStateAllowed(mContext)) {
builder.addAction(SliceAction.createToggle(
getBroadcastIntent(mContext), null /* actionTitle */, isWifiEnabled));
if (!isWiFiPermissionGranted || !mWifiRestriction.isChangeWifiStateAllowed(mContext)) {
return builder;
}
final PendingIntent toggleAction = getBroadcastIntent(mContext);
final SliceAction toggleSliceAction = SliceAction.createToggle(toggleAction,
null /* actionTitle */, isWifiEnabled);
builder.addAction(toggleSliceAction);
return builder;
}

View File

@@ -38,6 +38,7 @@ import androidx.slice.Slice;
import androidx.slice.SliceItem;
import androidx.slice.SliceMetadata;
import androidx.slice.SliceProvider;
import androidx.slice.core.SliceAction;
import androidx.slice.core.SliceQuery;
import androidx.slice.widget.ListContent;
import androidx.slice.widget.SliceLiveData;
@@ -120,6 +121,11 @@ public class WifiSliceTest {
final Slice wifiSlice = mWifiSlice.getSlice();
assertThat(wifiSlice).isNotNull();
final SliceMetadata metadata = SliceMetadata.from(mContext, wifiSlice);
final List<SliceAction> toggles = metadata.getToggles();
assertThat(toggles).hasSize(1);
}
@Test
@@ -128,18 +134,29 @@ public class WifiSliceTest {
ShadowWifiSlice.setWifiPermissible(true);
final Slice wifiSlice = mWifiSlice.getSlice();
assertThat(wifiSlice).isNotNull();
final SliceMetadata metadata = SliceMetadata.from(mContext, wifiSlice);
final List<SliceAction> toggles = metadata.getToggles();
assertThat(toggles).hasSize(1);
}
@Test
public void getWifiSlice_notFromSIPackageAndWithoutWifiPermission_shouldNoSlice() {
public void getWifiSlice_notFromSIPackageAndWithoutWifiPermission_shouldReturnNoToggle() {
when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{"com.test"});
ShadowWifiSlice.setWifiPermissible(false);
final Slice wifiSlice = mWifiSlice.getSlice();
final SliceMetadata metadata = SliceMetadata.from(mContext, wifiSlice);
final List<SliceAction> toggles = metadata.getToggles();
assertThat(wifiSlice).isNull();
assertThat(toggles).hasSize(0);
final int rows = SliceQuery.findAll(wifiSlice, FORMAT_SLICE, HINT_LIST_ITEM,
null /* nonHints */).size();
// Title row
assertThat(rows).isEqualTo(1);
}
@Test
@@ -150,7 +167,6 @@ public class WifiSliceTest {
final int rows = SliceQuery.findAll(wifiSlice, FORMAT_SLICE, HINT_LIST_ITEM,
null /* nonHints */).size();
// Title row
assertThat(rows).isEqualTo(1);
}