Restrict WifiSlice functionality for guest user

- Hide Wi-Fi toggle and show Wi-Fi status only if the user is a guest.

Bug: 232798363
Test: manual test
make RunSettingsRoboTests ROBOTEST_FILTER=WifiSliceTest

Change-Id: I35418477808eb5082f4651f5689f018dbb8e42ac
This commit is contained in:
Weng Su
2022-06-09 06:07:55 +08:00
parent 7ab5a44498
commit 5f421125ab
2 changed files with 50 additions and 1 deletions

View File

@@ -33,6 +33,7 @@ import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.UserManager;
import androidx.slice.Slice;
import androidx.slice.SliceItem;
@@ -84,6 +85,8 @@ public class WifiSliceTest {
@Spy
Context mContext = ApplicationProvider.getApplicationContext();
@Mock
private UserManager mUserManager;
@Mock
private WifiManager mWifiManager;
@Mock
private PackageManager mPackageManager;
@@ -98,6 +101,8 @@ public class WifiSliceTest {
@Before
public void setUp() {
doReturn(mResolver).when(mContext).getContentResolver();
doReturn(mUserManager).when(mContext).getSystemService(UserManager.class);
doReturn(false).when(mUserManager).isGuestUser();
doReturn(mWifiManager).when(mContext).getSystemService(WifiManager.class);
doReturn(WifiManager.WIFI_STATE_ENABLED).when(mWifiManager).getWifiState();
when(mContext.getPackageManager()).thenReturn(mPackageManager);
@@ -113,6 +118,33 @@ public class WifiSliceTest {
mWifiSlice = new WifiSlice(mContext, mWifiRestriction);
}
@Test
public void getWifiSlice_isGuestUser_shouldReturnNoToggle() {
doReturn(true).when(mUserManager).isGuestUser();
final Slice wifiSlice = mWifiSlice.getSlice();
final SliceMetadata metadata = SliceMetadata.from(mContext, wifiSlice);
final List<SliceAction> toggles = metadata.getToggles();
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
public void getWifiSlice_isNotGuestUser_shouldHaveTitleAndToggle() {
doReturn(false).when(mUserManager).isGuestUser();
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_fromSIPackage_shouldHaveTitleAndToggle() {
when(mPackageManager.getPackagesForUid(USER_ID)).thenReturn(new String[]{mSIPackageName});