Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2144f168 authored by Derek Jedral's avatar Derek Jedral
Browse files

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
parent 5622ee0f
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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);
+17 −0
Original line number Diff line number Diff line
@@ -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));
+2 −4
Original line number Diff line number Diff line
@@ -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);
        }
        utils.setEnabledTrustAgents(discoveredAgents, userId);
        Settings.Secure.putIntForUser(mContext.getContentResolver(),
                Settings.Secure.TRUST_AGENTS_INITIALIZED, 1, userId);