Loading src/com/android/settings/wifi/slice/WifiSlice.java +18 −1 Original line number Diff line number Diff line Loading @@ -34,7 +34,9 @@ import android.net.Uri; import android.net.wifi.WifiManager; import android.os.Binder; import android.os.Bundle; import android.os.UserManager; import android.text.TextUtils; import android.util.EventLog; import android.util.Log; import androidx.annotation.Nullable; Loading Loading @@ -96,10 +98,18 @@ public class WifiSlice implements CustomSliceable { @Override public Slice getSlice() { final boolean isWifiEnabled = isWifiEnabled(); // If user is a guest just return a slice without a toggle. if (isGuestUser(mContext)) { Log.e(TAG, "Guest user is not allowed to configure Wi-Fi!"); EventLog.writeEvent(0x534e4554, "232798363", -1 /* UID */, "User is a guest"); return getListBuilder(isWifiEnabled, null /* wifiSliceItem */, false /* isWiFiPermissionGranted */).build(); } // If external calling package doesn't have Wi-Fi permission. final boolean isPermissionGranted = Utils.isSettingsIntelligence(mContext) || isPermissionGranted(mContext); final boolean isWifiEnabled = isWifiEnabled(); ListBuilder listBuilder = getListBuilder(isWifiEnabled, null /* wifiSliceItem */, isPermissionGranted); // If the caller doesn't have the permission granted, just return a slice without a toggle. Loading Loading @@ -139,6 +149,13 @@ public class WifiSlice implements CustomSliceable { return listBuilder.build(); } protected static boolean isGuestUser(Context context) { if (context == null) return false; final UserManager userManager = context.getSystemService(UserManager.class); if (userManager == null) return false; return userManager.isGuestUser(); } private static boolean isPermissionGranted(Context settingsContext) { final int callingUid = Binder.getCallingUid(); final String callingPackage = settingsContext.getPackageManager() Loading tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java +32 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -84,6 +85,8 @@ public class WifiSliceTest { @Spy Context mContext = ApplicationProvider.getApplicationContext(); @Mock private UserManager mUserManager; @Mock private WifiManager mWifiManager; @Mock private PackageManager mPackageManager; Loading @@ -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); Loading @@ -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}); Loading Loading
src/com/android/settings/wifi/slice/WifiSlice.java +18 −1 Original line number Diff line number Diff line Loading @@ -34,7 +34,9 @@ import android.net.Uri; import android.net.wifi.WifiManager; import android.os.Binder; import android.os.Bundle; import android.os.UserManager; import android.text.TextUtils; import android.util.EventLog; import android.util.Log; import androidx.annotation.Nullable; Loading Loading @@ -96,10 +98,18 @@ public class WifiSlice implements CustomSliceable { @Override public Slice getSlice() { final boolean isWifiEnabled = isWifiEnabled(); // If user is a guest just return a slice without a toggle. if (isGuestUser(mContext)) { Log.e(TAG, "Guest user is not allowed to configure Wi-Fi!"); EventLog.writeEvent(0x534e4554, "232798363", -1 /* UID */, "User is a guest"); return getListBuilder(isWifiEnabled, null /* wifiSliceItem */, false /* isWiFiPermissionGranted */).build(); } // If external calling package doesn't have Wi-Fi permission. final boolean isPermissionGranted = Utils.isSettingsIntelligence(mContext) || isPermissionGranted(mContext); final boolean isWifiEnabled = isWifiEnabled(); ListBuilder listBuilder = getListBuilder(isWifiEnabled, null /* wifiSliceItem */, isPermissionGranted); // If the caller doesn't have the permission granted, just return a slice without a toggle. Loading Loading @@ -139,6 +149,13 @@ public class WifiSlice implements CustomSliceable { return listBuilder.build(); } protected static boolean isGuestUser(Context context) { if (context == null) return false; final UserManager userManager = context.getSystemService(UserManager.class); if (userManager == null) return false; return userManager.isGuestUser(); } private static boolean isPermissionGranted(Context settingsContext) { final int callingUid = Binder.getCallingUid(); final String callingPackage = settingsContext.getPackageManager() Loading
tests/robotests/src/com/android/settings/wifi/slice/WifiSliceTest.java +32 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -84,6 +85,8 @@ public class WifiSliceTest { @Spy Context mContext = ApplicationProvider.getApplicationContext(); @Mock private UserManager mUserManager; @Mock private WifiManager mWifiManager; @Mock private PackageManager mPackageManager; Loading @@ -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); Loading @@ -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}); Loading