diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java index f83579207e316..521b2f6afa0fe 100644 --- a/core/java/com/android/internal/widget/LockPatternUtils.java +++ b/core/java/com/android/internal/widget/LockPatternUtils.java @@ -1135,7 +1135,7 @@ public class LockPatternUtils { public List getEnabledTrustAgents(int userId) { String serialized = getString(ENABLED_TRUST_AGENTS, userId); if (TextUtils.isEmpty(serialized)) { - return null; + return new ArrayList(); } String[] split = serialized.split(","); ArrayList activeTrustAgents = new ArrayList(split.length); diff --git a/core/tests/utiltests/src/com/android/internal/util/LockPatternUtilsTest.java b/core/tests/utiltests/src/com/android/internal/util/LockPatternUtilsTest.java index b659f37690a3a..940ca96fac4f2 100644 --- a/core/tests/utiltests/src/com/android/internal/util/LockPatternUtilsTest.java +++ b/core/tests/utiltests/src/com/android/internal/util/LockPatternUtilsTest.java @@ -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 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)); diff --git a/services/core/java/com/android/server/trust/TrustManagerService.java b/services/core/java/com/android/server/trust/TrustManagerService.java index bd4b8d15f453c..cc1d0e2ea6c85 100644 --- a/services/core/java/com/android/server/trust/TrustManagerService.java +++ b/services/core/java/com/android/server/trust/TrustManagerService.java @@ -715,7 +715,7 @@ public class TrustManagerService extends SystemService { (disabledFeatures & DevicePolicyManager.KEYGUARD_DISABLE_TRUST_AGENTS) != 0; List 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 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);