From 579fd5eb5e45c5193a2a331e2b9d114db2e6884e Mon Sep 17 00:00:00 2001 From: Doris Ling Date: Tue, 6 Feb 2018 14:08:47 -0800 Subject: [PATCH] Fix trust agent summary not being updated. - move the handling for enabling the trust agent preference and its summary from displayPreference() into updateState(), so that when user navigates to change screen lock or update trust agent and returns to the security settings page, the trust agent preference enabled state and summary will be refreshed correctly. Change-Id: I60bccfdff755a046a9f5453d39a7ac9d3ce0277c Fixes: 72420147 Test: make RunSettingsRoboTests --- .../ManageTrustAgentsPreferenceController.java | 10 +++------- ...ageTrustAgentsPreferenceControllerTest.java | 18 ++++++------------ 2 files changed, 9 insertions(+), 19 deletions(-) diff --git a/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceController.java b/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceController.java index 5bb8f75e578..3e39860d609 100644 --- a/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceController.java +++ b/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceController.java @@ -20,7 +20,6 @@ import android.content.Context; import android.os.UserHandle; import android.support.annotation.VisibleForTesting; import android.support.v7.preference.Preference; -import android.support.v7.preference.PreferenceScreen; import com.android.internal.widget.LockPatternUtils; import com.android.settings.R; @@ -52,21 +51,18 @@ public class ManageTrustAgentsPreferenceController extends BasePreferenceControl } @Override - public void displayPreference(PreferenceScreen screen) { - super.displayPreference(screen); - final Preference preference = screen.findPreference(getPreferenceKey()); - if (preference == null) { - return; - } + public void updateState(Preference preference) { final int numberOfTrustAgent = getTrustAgentCount(); if (!mLockPatternUtils.isSecure(MY_USER_ID)) { preference.setEnabled(false); preference.setSummary(R.string.disabled_because_no_backup_security); } else if (numberOfTrustAgent > 0) { + preference.setEnabled(true); preference.setSummary(mContext.getResources().getQuantityString( R.plurals.manage_trust_agents_summary_on, numberOfTrustAgent, numberOfTrustAgent)); } else { + preference.setEnabled(true); preference.setSummary(R.string.manage_trust_agents_summary); } } diff --git a/tests/robotests/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceControllerTest.java index 42d640a8a10..64a0cea41aa 100644 --- a/tests/robotests/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/security/trustagent/ManageTrustAgentsPreferenceControllerTest.java @@ -16,14 +16,12 @@ package com.android.settings.security.trustagent; -import static com.android.settings.core.BasePreferenceController.AVAILABLE; import static com.google.common.truth.Truth.assertThat; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.when; import android.content.Context; import android.support.v7.preference.Preference; -import android.support.v7.preference.PreferenceScreen; import com.android.internal.widget.LockPatternUtils; import com.android.settings.R; @@ -50,8 +48,6 @@ public class ManageTrustAgentsPreferenceControllerTest { private TrustAgentManager mTrustAgentManager; @Mock private LockPatternUtils mLockPatternUtils; - @Mock - private PreferenceScreen mScreen; private FakeFeatureFactory mFeatureFactory; private Context mContext; @@ -70,8 +66,6 @@ public class ManageTrustAgentsPreferenceControllerTest { mController = new ManageTrustAgentsPreferenceController(mContext); mPreference = new Preference(mContext); mPreference.setKey(mController.getPreferenceKey()); - when(mScreen.findPreference(mController.getPreferenceKey())) - .thenReturn(mPreference); } @Test @@ -86,10 +80,10 @@ public class ManageTrustAgentsPreferenceControllerTest { } @Test - public void displayPreference_isNotSecure_shouldDisablePreference() { + public void updateState_isNotSecure_shouldDisablePreference() { when(mLockPatternUtils.isSecure(anyInt())).thenReturn(false); - mController.displayPreference(mScreen); + mController.updateState(mPreference); assertThat(mPreference.isEnabled()).isFalse(); assertThat(mPreference.getSummary()) @@ -97,12 +91,12 @@ public class ManageTrustAgentsPreferenceControllerTest { } @Test - public void displayPreference_isSecure_noTrustAgent_shouldShowGenericSummary() { + public void updateState_isSecure_noTrustAgent_shouldShowGenericSummary() { when(mLockPatternUtils.isSecure(anyInt())).thenReturn(true); when(mTrustAgentManager.getActiveTrustAgents(mContext, mLockPatternUtils)) .thenReturn(new ArrayList<>()); - mController.displayPreference(mScreen); + mController.updateState(mPreference); assertThat(mPreference.isEnabled()).isTrue(); assertThat(mPreference.getSummary()) @@ -110,12 +104,12 @@ public class ManageTrustAgentsPreferenceControllerTest { } @Test - public void displayPreference_isSecure_hasTrustAgent_shouldShowDetailedSummary() { + public void updateState_isSecure_hasTrustAgent_shouldShowDetailedSummary() { when(mLockPatternUtils.isSecure(anyInt())).thenReturn(true); when(mTrustAgentManager.getActiveTrustAgents(mContext, mLockPatternUtils)) .thenReturn(Arrays.asList(new TrustAgentManager.TrustAgentComponentInfo())); - mController.displayPreference(mScreen); + mController.updateState(mPreference); assertThat(mPreference.isEnabled()).isTrue(); assertThat(mPreference.getSummary())