Loading src/com/android/settings/security/trustagent/TrustAgentListPreferenceController.java +48 −13 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnCreate; import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState; import com.android.settingslib.search.SearchIndexableRaw; import java.util.List; Loading Loading @@ -134,34 +135,68 @@ public class TrustAgentListPreferenceController extends AbstractPreferenceContro updateTrustAgents(); } @Override public void updateDynamicRawDataToIndex(List<SearchIndexableRaw> rawData) { if (!isAvailable()) { return; } final List<TrustAgentManager.TrustAgentComponentInfo> agents = getActiveTrustAgents( mContext); if (agents == null) { return; } for (int i = 0, size = agents.size(); i < size; i++) { final SearchIndexableRaw raw = new SearchIndexableRaw(mContext); final TrustAgentManager.TrustAgentComponentInfo agent = agents.get(i); raw.key = PREF_KEY_TRUST_AGENT + i; raw.title = agent.title; rawData.add(raw); } } /** * @return The active trust agents from TrustAgentManager. */ private List<TrustAgentManager.TrustAgentComponentInfo> getActiveTrustAgents(Context context) { return mTrustAgentManager.getActiveTrustAgents(context, mLockPatternUtils); } private void updateTrustAgents() { if (mSecurityCategory == null) { return; } // If for some reason the preference is no longer available, don't proceed to add. if (!isAvailable()) { return; } final List<TrustAgentManager.TrustAgentComponentInfo> agents = getActiveTrustAgents( mContext); if (agents == null) { return; } // First remove all old trust agents. while (true) { final Preference oldAgent = mSecurityCategory.findPreference(PREF_KEY_TRUST_AGENT); for (int i = 0, size = agents.size(); i < size; i++) { String key = PREF_KEY_TRUST_AGENT + i; final Preference oldAgent = mSecurityCategory.findPreference(key); if (oldAgent == null) { break; } else { 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<TrustAgentManager.TrustAgentComponentInfo> agents = mTrustAgentManager.getActiveTrustAgents(mContext, mLockPatternUtils); if (agents == null) { return; } for (TrustAgentManager.TrustAgentComponentInfo agent : agents) { for (int i = 0, size = agents.size(); i < size; i++) { final RestrictedPreference trustAgentPreference = new RestrictedPreference(mSecurityCategory.getContext()); trustAgentPreference.setKey(PREF_KEY_TRUST_AGENT); TrustAgentManager.TrustAgentComponentInfo agent = agents.get(i); trustAgentPreference.setKey(PREF_KEY_TRUST_AGENT + i); trustAgentPreference.setTitle(agent.title); trustAgentPreference.setSummary(agent.summary); // Create intent for this preference. Loading tests/robotests/src/com/android/settings/security/trustagent/TrustAgentListPreferenceControllerTest.java +33 −2 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.security.SecuritySettings; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.search.SearchIndexableRaw; import org.junit.Before; import org.junit.Test; Loading Loading @@ -111,10 +112,20 @@ public class TrustAgentListPreferenceControllerTest { @Test public void onResume_shouldClearOldAgents() { final Preference oldAgent = new Preference(mActivity); oldAgent.setKey(PREF_KEY_TRUST_AGENT); when(mCategory.findPreference(PREF_KEY_TRUST_AGENT)) oldAgent.setKey(PREF_KEY_TRUST_AGENT + 0); when(mCategory.findPreference(PREF_KEY_TRUST_AGENT + 0)) .thenReturn(oldAgent) .thenReturn(null); final List<TrustAgentManager.TrustAgentComponentInfo> 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(); Loading Loading @@ -160,4 +171,24 @@ public class TrustAgentListPreferenceControllerTest { verify(mCategory, never()).addPreference(any(Preference.class)); } @Test public void updateDynamicRawDataToIndex_shouldIndexAgents() { final List<TrustAgentManager.TrustAgentComponentInfo> 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); final List<SearchIndexableRaw> indexRaws = new ArrayList<>(); mController.updateDynamicRawDataToIndex(indexRaws); assertThat(indexRaws).hasSize(1); } } Loading
src/com/android/settings/security/trustagent/TrustAgentListPreferenceController.java +48 −13 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnCreate; import com.android.settingslib.core.lifecycle.events.OnResume; import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState; import com.android.settingslib.search.SearchIndexableRaw; import java.util.List; Loading Loading @@ -134,34 +135,68 @@ public class TrustAgentListPreferenceController extends AbstractPreferenceContro updateTrustAgents(); } @Override public void updateDynamicRawDataToIndex(List<SearchIndexableRaw> rawData) { if (!isAvailable()) { return; } final List<TrustAgentManager.TrustAgentComponentInfo> agents = getActiveTrustAgents( mContext); if (agents == null) { return; } for (int i = 0, size = agents.size(); i < size; i++) { final SearchIndexableRaw raw = new SearchIndexableRaw(mContext); final TrustAgentManager.TrustAgentComponentInfo agent = agents.get(i); raw.key = PREF_KEY_TRUST_AGENT + i; raw.title = agent.title; rawData.add(raw); } } /** * @return The active trust agents from TrustAgentManager. */ private List<TrustAgentManager.TrustAgentComponentInfo> getActiveTrustAgents(Context context) { return mTrustAgentManager.getActiveTrustAgents(context, mLockPatternUtils); } private void updateTrustAgents() { if (mSecurityCategory == null) { return; } // If for some reason the preference is no longer available, don't proceed to add. if (!isAvailable()) { return; } final List<TrustAgentManager.TrustAgentComponentInfo> agents = getActiveTrustAgents( mContext); if (agents == null) { return; } // First remove all old trust agents. while (true) { final Preference oldAgent = mSecurityCategory.findPreference(PREF_KEY_TRUST_AGENT); for (int i = 0, size = agents.size(); i < size; i++) { String key = PREF_KEY_TRUST_AGENT + i; final Preference oldAgent = mSecurityCategory.findPreference(key); if (oldAgent == null) { break; } else { 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<TrustAgentManager.TrustAgentComponentInfo> agents = mTrustAgentManager.getActiveTrustAgents(mContext, mLockPatternUtils); if (agents == null) { return; } for (TrustAgentManager.TrustAgentComponentInfo agent : agents) { for (int i = 0, size = agents.size(); i < size; i++) { final RestrictedPreference trustAgentPreference = new RestrictedPreference(mSecurityCategory.getContext()); trustAgentPreference.setKey(PREF_KEY_TRUST_AGENT); TrustAgentManager.TrustAgentComponentInfo agent = agents.get(i); trustAgentPreference.setKey(PREF_KEY_TRUST_AGENT + i); trustAgentPreference.setTitle(agent.title); trustAgentPreference.setSummary(agent.summary); // Create intent for this preference. Loading
tests/robotests/src/com/android/settings/security/trustagent/TrustAgentListPreferenceControllerTest.java +33 −2 Original line number Diff line number Diff line Loading @@ -44,6 +44,7 @@ import com.android.settings.core.PreferenceControllerMixin; import com.android.settings.security.SecuritySettings; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.search.SearchIndexableRaw; import org.junit.Before; import org.junit.Test; Loading Loading @@ -111,10 +112,20 @@ public class TrustAgentListPreferenceControllerTest { @Test public void onResume_shouldClearOldAgents() { final Preference oldAgent = new Preference(mActivity); oldAgent.setKey(PREF_KEY_TRUST_AGENT); when(mCategory.findPreference(PREF_KEY_TRUST_AGENT)) oldAgent.setKey(PREF_KEY_TRUST_AGENT + 0); when(mCategory.findPreference(PREF_KEY_TRUST_AGENT + 0)) .thenReturn(oldAgent) .thenReturn(null); final List<TrustAgentManager.TrustAgentComponentInfo> 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(); Loading Loading @@ -160,4 +171,24 @@ public class TrustAgentListPreferenceControllerTest { verify(mCategory, never()).addPreference(any(Preference.class)); } @Test public void updateDynamicRawDataToIndex_shouldIndexAgents() { final List<TrustAgentManager.TrustAgentComponentInfo> 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); final List<SearchIndexableRaw> indexRaws = new ArrayList<>(); mController.updateDynamicRawDataToIndex(indexRaws); assertThat(indexRaws).hasSize(1); } }