Avoid NPE when accessing to EnforcedAdmin
NPE happens when "modify" is tapped on the carrier wifi network connected using CarrierConfig information. null is passed to sendShowAdminSupportDetailsIntent method through 2nd argument. Bug: 128188146 Test: Manually verified the crash scenario Test: RunSettingsLibRoboTests Signed-off-by: Daichi Ueura <daichi.ueura@sony.com> (Cherry-pick from pa/1302748) Change-Id: If92c12041b91dbab0f083a1b49d263b201e87699
This commit is contained in:
@@ -76,11 +76,13 @@ public class RestrictedLockUtils {
|
||||
public static void sendShowAdminSupportDetailsIntent(Context context, EnforcedAdmin admin) {
|
||||
final Intent intent = getShowAdminSupportDetailsIntent(context, admin);
|
||||
int targetUserId = UserHandle.myUserId();
|
||||
if (admin != null && admin.user != null
|
||||
&& isCurrentUserOrProfile(context, admin.user.getIdentifier())) {
|
||||
targetUserId = admin.user.getIdentifier();
|
||||
if (admin != null) {
|
||||
if (admin.user != null
|
||||
&& isCurrentUserOrProfile(context, admin.user.getIdentifier())) {
|
||||
targetUserId = admin.user.getIdentifier();
|
||||
}
|
||||
intent.putExtra(DevicePolicyManager.EXTRA_RESTRICTION, admin.enforcedRestriction);
|
||||
}
|
||||
intent.putExtra(DevicePolicyManager.EXTRA_RESTRICTION, admin.enforcedRestriction);
|
||||
context.startActivityAsUser(intent, UserHandle.of(targetUserId));
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.settingslib;
|
||||
|
||||
import static android.app.admin.DevicePolicyManager.EXTRA_RESTRICTION;
|
||||
import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_FEATURES_NONE;
|
||||
import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT;
|
||||
import static android.app.admin.DevicePolicyManager.KEYGUARD_DISABLE_REMOTE_INPUT;
|
||||
@@ -28,11 +29,13 @@ import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.app.admin.DevicePolicyManager;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.content.pm.UserInfo;
|
||||
import android.os.UserHandle;
|
||||
@@ -42,6 +45,7 @@ import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.mockito.Answers;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.MockitoAnnotations;
|
||||
import org.robolectric.RobolectricTestRunner;
|
||||
@@ -283,6 +287,26 @@ public class RestrictedLockUtilsTest {
|
||||
assertThat(profile).isNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sendShowAdminSupportDetailsIntent_extraRestrictionProvided() {
|
||||
EnforcedAdmin enforcedAdmin = new EnforcedAdmin();
|
||||
enforcedAdmin.enforcedRestriction = "Dummy";
|
||||
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(mContext, enforcedAdmin);
|
||||
|
||||
ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||
verify(mContext).startActivityAsUser(intentCaptor.capture(), any());
|
||||
assertThat(intentCaptor.getValue().getExtra(EXTRA_RESTRICTION)).isEqualTo("Dummy");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void sendShowAdminSupportDetailsIntent_noExtraRestriction() {
|
||||
RestrictedLockUtils.sendShowAdminSupportDetailsIntent(mContext, null);
|
||||
|
||||
ArgumentCaptor<Intent> intentCaptor = ArgumentCaptor.forClass(Intent.class);
|
||||
verify(mContext).startActivityAsUser(intentCaptor.capture(), any());
|
||||
assertThat(intentCaptor.getValue().getExtra(EXTRA_RESTRICTION)).isNull();
|
||||
}
|
||||
|
||||
private UserInfo setUpUser(int userId, ComponentName[] admins) {
|
||||
UserInfo userInfo = new UserInfo(userId, "primary", 0);
|
||||
when(mUserManager.getUserInfo(userId)).thenReturn(userInfo);
|
||||
|
||||
Reference in New Issue
Block a user