Change LockPatternUtils to return empty list
LockPatternUtils currently returns null if there are no active trust agents. Changed to return an empty list instead to avoid possible NPEs Test: atest Bug: 222014696 Change-Id: I0100c6efec75d78e94797fa056b4be40acd11989
This commit is contained in:
@@ -1204,7 +1204,7 @@ public class LockPatternUtils {
|
||||
public List<ComponentName> getEnabledTrustAgents(int userId) {
|
||||
String serialized = getString(ENABLED_TRUST_AGENTS, userId);
|
||||
if (TextUtils.isEmpty(serialized)) {
|
||||
return null;
|
||||
return new ArrayList<ComponentName>();
|
||||
}
|
||||
String[] split = serialized.split(",");
|
||||
ArrayList<ComponentName> activeTrustAgents = new ArrayList<ComponentName>(split.length);
|
||||
|
||||
@@ -19,14 +19,20 @@ package com.android.internal.util;
|
||||
import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_MANAGED;
|
||||
import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertFalse;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.any;
|
||||
import static org.mockito.Mockito.anyInt;
|
||||
import static org.mockito.Mockito.anyString;
|
||||
import static org.mockito.Mockito.doReturn;
|
||||
import static org.mockito.Mockito.spy;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import android.content.ComponentName;
|
||||
import android.content.Context;
|
||||
import android.content.ContextWrapper;
|
||||
import android.content.pm.UserInfo;
|
||||
@@ -50,6 +56,7 @@ import org.junit.runner.RunWith;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.List;
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
@SmallTest
|
||||
@@ -164,6 +171,16 @@ public class LockPatternUtilsTest {
|
||||
verify(ils).isWeakEscrowTokenValid(eq(testHandle), eq(testToken), eq(testUserId));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetEnabledTrustAgentsNotNull() throws RemoteException {
|
||||
int testUserId = 10;
|
||||
ILockSettings ils = createTestLockSettings();
|
||||
when(ils.getString(anyString(), any(), anyInt())).thenReturn("");
|
||||
List<ComponentName> trustAgents = mLockPatternUtils.getEnabledTrustAgents(testUserId);
|
||||
assertNotNull(trustAgents);
|
||||
assertEquals(0, trustAgents.size());
|
||||
}
|
||||
|
||||
private ILockSettings createTestLockSettings() {
|
||||
final Context context = spy(new ContextWrapper(InstrumentationRegistry.getTargetContext()));
|
||||
mLockPatternUtils = spy(new LockPatternUtils(context));
|
||||
|
||||
@@ -715,7 +715,7 @@ public class TrustManagerService extends SystemService {
|
||||
(disabledFeatures & DevicePolicyManager.KEYGUARD_DISABLE_TRUST_AGENTS) != 0;
|
||||
|
||||
List<ComponentName> enabledAgents = lockPatternUtils.getEnabledTrustAgents(userInfo.id);
|
||||
if (enabledAgents == null) {
|
||||
if (enabledAgents.isEmpty()) {
|
||||
if (DEBUG) Slog.d(TAG, "refreshAgentList: skipping user " + userInfo.id
|
||||
+ ": no agents enabled by user");
|
||||
continue;
|
||||
@@ -1080,9 +1080,7 @@ public class TrustManagerService extends SystemService {
|
||||
}
|
||||
|
||||
List<ComponentName> previouslyEnabledAgents = utils.getEnabledTrustAgents(userId);
|
||||
if (previouslyEnabledAgents != null) {
|
||||
discoveredAgents.addAll(previouslyEnabledAgents);
|
||||
}
|
||||
discoveredAgents.addAll(previouslyEnabledAgents);
|
||||
utils.setEnabledTrustAgents(discoveredAgents, userId);
|
||||
Settings.Secure.putIntForUser(mContext.getContentResolver(),
|
||||
Settings.Secure.TRUST_AGENTS_INITIALIZED, 1, userId);
|
||||
|
||||
Reference in New Issue
Block a user