diff --git a/src/com/android/settings/security/trustagent/TrustAgentListPreferenceController.java b/src/com/android/settings/security/trustagent/TrustAgentListPreferenceController.java index f9e6a4c872b..0c591ede39d 100644 --- a/src/com/android/settings/security/trustagent/TrustAgentListPreferenceController.java +++ b/src/com/android/settings/security/trustagent/TrustAgentListPreferenceController.java @@ -146,6 +146,10 @@ public class TrustAgentListPreferenceController extends AbstractPreferenceContro mSecurityCategory.removePreference(oldAgent); } } + // If for some reason the preference is no longer available, don't proceed to add. + if (!isAvailable()) { + return; + } // Then add new ones. final boolean hasSecurity = mLockPatternUtils.isSecure(MY_USER_ID); final List agents = diff --git a/tests/robotests/src/com/android/settings/security/trustagent/TrustAgentListPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/trustagent/TrustAgentListPreferenceControllerTest.java index 11c3b3ffecf..7dd04c641e9 100644 --- a/tests/robotests/src/com/android/settings/security/trustagent/TrustAgentListPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/security/trustagent/TrustAgentListPreferenceControllerTest.java @@ -25,6 +25,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.atLeastOnce; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @@ -141,4 +142,24 @@ public class TrustAgentListPreferenceControllerTest { verify(mCategory, atLeastOnce()).addPreference(any(Preference.class)); } + + @Test + @Config(qualifiers = "mcc999") + public void onResume_ifNotAvailable_shouldNotAddNewAgents() { + final List agents = new ArrayList<>(); + final TrustAgentManager.TrustAgentComponentInfo agent = mock( + TrustAgentManager.TrustAgentComponentInfo.class); + agent.title = "Test_title"; + agent.summary = "test summary"; + agent.componentName = new ComponentName("pkg", "agent"); + agent.admin = null; + agents.add(agent); + when(mTrustAgentManager.getActiveTrustAgents(mActivity, mLockPatternUtils)) + .thenReturn(agents); + + mController.displayPreference(mScreen); + mController.onResume(); + + verify(mCategory, never()).addPreference(any(Preference.class)); + } }