SecuritySubSettings: Show trust agent label on lock timeout setting

Fixes: 35475555
Test: Observe description of 'Automatically lock' and 'Power button instantly locks' options, should mention trust agent when one is enabled.
Change-Id: I7967e44d5155c6620dc44cc4d284a8470166d687
This commit is contained in:
Adrian Roos
2017-02-28 15:59:01 -08:00
parent d030d7b58f
commit 73c52f291d

View File

@@ -525,6 +525,14 @@ public class SecuritySettings extends SettingsPreferenceFragment
return result; return result;
} }
private static CharSequence getActiveTrustAgentLabel(Context context,
TrustAgentManager trustAgentManager, LockPatternUtils utils,
DevicePolicyManager dpm) {
ArrayList<TrustAgentComponentInfo> agents = getActiveTrustAgents(context,
trustAgentManager, utils, dpm);
return agents.isEmpty() ? null : agents.get(0).title;
}
@Override @Override
public void onGearClick(GearPreference p) { public void onGearClick(GearPreference p) {
if (KEY_UNLOCK_SET_OR_CHANGE.equals(p.getKey())) { if (KEY_UNLOCK_SET_OR_CHANGE.equals(p.getKey())) {
@@ -912,6 +920,7 @@ public class SecuritySettings extends SettingsPreferenceFragment
private SwitchPreference mPowerButtonInstantlyLocks; private SwitchPreference mPowerButtonInstantlyLocks;
private RestrictedPreference mOwnerInfoPref; private RestrictedPreference mOwnerInfoPref;
private TrustAgentManager mTrustAgentManager;
private LockPatternUtils mLockPatternUtils; private LockPatternUtils mLockPatternUtils;
private DevicePolicyManager mDPM; private DevicePolicyManager mDPM;
@@ -923,6 +932,9 @@ public class SecuritySettings extends SettingsPreferenceFragment
@Override @Override
public void onCreate(Bundle icicle) { public void onCreate(Bundle icicle) {
super.onCreate(icicle); super.onCreate(icicle);
SecurityFeatureProvider securityFeatureProvider =
FeatureFactory.getFactory(getActivity()).getSecurityFeatureProvider();
mTrustAgentManager = securityFeatureProvider.getTrustAgentManager();
mLockPatternUtils = new LockPatternUtils(getContext()); mLockPatternUtils = new LockPatternUtils(getContext());
mDPM = getContext().getSystemService(DevicePolicyManager.class); mDPM = getContext().getSystemService(DevicePolicyManager.class);
createPreferenceHierarchy(); createPreferenceHierarchy();
@@ -977,13 +989,12 @@ public class SecuritySettings extends SettingsPreferenceFragment
// lock instantly on power key press // lock instantly on power key press
mPowerButtonInstantlyLocks = (SwitchPreference) findPreference( mPowerButtonInstantlyLocks = (SwitchPreference) findPreference(
KEY_POWER_INSTANTLY_LOCKS); KEY_POWER_INSTANTLY_LOCKS);
Preference trustAgentPreference = findPreference(KEY_TRUST_AGENT); CharSequence trustAgentLabel = getActiveTrustAgentLabel(getContext(),
if (mPowerButtonInstantlyLocks != null && mTrustAgentManager, mLockPatternUtils, mDPM);
trustAgentPreference != null && if (mPowerButtonInstantlyLocks != null && !TextUtils.isEmpty(trustAgentLabel)) {
trustAgentPreference.getTitle().length() > 0) {
mPowerButtonInstantlyLocks.setSummary(getString( mPowerButtonInstantlyLocks.setSummary(getString(
R.string.lockpattern_settings_power_button_instantly_locks_summary, R.string.lockpattern_settings_power_button_instantly_locks_summary,
trustAgentPreference.getTitle())); trustAgentLabel));
} }
mOwnerInfoPref = (RestrictedPreference) findPreference(KEY_OWNER_INFO_SETTINGS); mOwnerInfoPref = (RestrictedPreference) findPreference(KEY_OWNER_INFO_SETTINGS);
@@ -1052,14 +1063,15 @@ public class SecuritySettings extends SettingsPreferenceFragment
} }
} }
Preference preference = findPreference(KEY_TRUST_AGENT); CharSequence trustAgentLabel = getActiveTrustAgentLabel(getContext(),
if (preference != null && preference.getTitle().length() > 0) { mTrustAgentManager, mLockPatternUtils, mDPM);
if (!TextUtils.isEmpty(trustAgentLabel)) {
if (Long.valueOf(values[best].toString()) == 0) { if (Long.valueOf(values[best].toString()) == 0) {
summary = getString(R.string.lock_immediately_summary_with_exception, summary = getString(R.string.lock_immediately_summary_with_exception,
preference.getTitle()); trustAgentLabel);
} else { } else {
summary = getString(R.string.lock_after_timeout_summary_with_exception, summary = getString(R.string.lock_after_timeout_summary_with_exception,
entries[best], preference.getTitle()); entries[best], trustAgentLabel);
} }
} else { } else {
summary = getString(R.string.lock_after_timeout_summary, entries[best]); summary = getString(R.string.lock_after_timeout_summary, entries[best]);