Merge "Add the "Smart Lock" item to dynamic index." into rvc-dev
diff --git a/src/com/android/settings/security/trustagent/TrustAgentListPreferenceController.java b/src/com/android/settings/security/trustagent/TrustAgentListPreferenceController.java
index eb50b7c..6067b77 100644
--- a/src/com/android/settings/security/trustagent/TrustAgentListPreferenceController.java
+++ b/src/com/android/settings/security/trustagent/TrustAgentListPreferenceController.java
@@ -44,6 +44,7 @@
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;
@@ -134,34 +135,68 @@
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.
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 d9202d4..c0fbff7 100644
--- a/tests/robotests/src/com/android/settings/security/trustagent/TrustAgentListPreferenceControllerTest.java
+++ b/tests/robotests/src/com/android/settings/security/trustagent/TrustAgentListPreferenceControllerTest.java
@@ -44,6 +44,7 @@
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;
@@ -111,10 +112,20 @@
@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();
@@ -160,4 +171,24 @@
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);
+ }
+
}