Restrict ProviderModelSlice for guest user

- Don't show ProviderModelSlice if the user is a guest.

- Don't run background worker if the user is a guest.

Bug: 227470877
Test: manual test
atest -c ProviderModelSliceTest

Change-Id: Id9fd50add271513c396adfbc083a9d8ea5f7771f
This commit is contained in:
Weng Su
2022-06-17 02:17:20 +08:00
parent 909913ffc1
commit 88037e4f5e
2 changed files with 40 additions and 0 deletions

View File

@@ -34,6 +34,7 @@ import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.telephony.SubscriptionManager;
import android.util.EventLog;
import android.util.Log;
import android.view.WindowManager.LayoutParams;
@@ -103,6 +104,12 @@ public class ProviderModelSlice extends WifiSlice {
// Fifth section: Add the Wi-Fi items which are not connected.
// Sixth section: Add the See All item.
final ListBuilder listBuilder = mHelper.createListBuilder(getUri());
if (isGuestUser(mContext)) {
Log.e(TAG, "Guest user is not allowed to configure Internet!");
EventLog.writeEvent(0x534e4554, "227470877", -1 /* UID */, "User is a guest");
return listBuilder.build();
}
int maxListSize = 0;
final NetworkProviderWorker worker = getWorker();
if (worker != null) {
@@ -297,6 +304,8 @@ public class ProviderModelSlice extends WifiSlice {
@Override
public Class getBackgroundWorkerClass() {
if (isGuestUser(mContext)) return null;
return NetworkProviderWorker.class;
}

View File

@@ -42,6 +42,7 @@ import android.graphics.drawable.ColorDrawable;
import android.net.ConnectivityManager;
import android.net.Uri;
import android.net.wifi.WifiManager;
import android.os.UserManager;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
@@ -86,6 +87,8 @@ public class ProviderModelSliceTest {
private ListBuilder mListBuilder;
private MockNetworkProviderWorker mMockNetworkProviderWorker;
@Mock
private UserManager mUserManager;
@Mock
private SubscriptionManager mSubscriptionManager;
@Mock
@@ -122,6 +125,8 @@ public class ProviderModelSliceTest {
any(), any(), any(), any(), any(), anyLong(), anyLong(), any()))
.thenReturn(mWifiPickerTracker);
when(mContext.getSystemService(UserManager.class)).thenReturn(mUserManager);
when(mUserManager.isGuestUser()).thenReturn(false);
when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
when(mContext.getSystemService(ConnectivityManager.class)).thenReturn(mConnectivityManager);
when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
@@ -162,6 +167,17 @@ public class ProviderModelSliceTest {
.isEqualTo(Intent.FLAG_RECEIVER_FOREGROUND);
}
@Test
@UiThreadTest
public void getSlice_isGuestUser_shouldNotAddRow() {
when(mUserManager.isGuestUser()).thenReturn(true);
final Slice slice = mMockProviderModelSlice.getSlice();
assertThat(slice).isNotNull();
verify(mListBuilder, never()).addRow(any());
}
@Test
@UiThreadTest
public void getSlice_noWifiAndHasCarrierNoData_oneCarrier() {
@@ -319,6 +335,21 @@ public class ProviderModelSliceTest {
assertThat(mMockProviderModelSlice.hasSeeAllRow()).isTrue();
}
@Test
public void getBackgroundWorkerClass_isGuestUser_returnNull() {
when(mUserManager.isGuestUser()).thenReturn(true);
assertThat(mMockProviderModelSlice.getBackgroundWorkerClass()).isNull();
}
@Test
public void getBackgroundWorkerClass_notGuestUser_returnWorkerClass() {
when(mUserManager.isGuestUser()).thenReturn(false);
assertThat(mMockProviderModelSlice.getBackgroundWorkerClass())
.isEqualTo(NetworkProviderWorker.class);
}
@Test
public void providerModelSlice_hasCorrectUri() {
assertThat(mMockProviderModelSlice.getUri()).isEqualTo(PROVIDER_MODEL_SLICE_URI);