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
diff --git a/src/com/android/settings/SecuritySettings.java b/src/com/android/settings/SecuritySettings.java
index 7417516..f0acbdf 100644
--- a/src/com/android/settings/SecuritySettings.java
+++ b/src/com/android/settings/SecuritySettings.java
@@ -525,6 +525,14 @@
         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
     public void onGearClick(GearPreference p) {
         if (KEY_UNLOCK_SET_OR_CHANGE.equals(p.getKey())) {
@@ -912,6 +920,7 @@
         private SwitchPreference mPowerButtonInstantlyLocks;
         private RestrictedPreference mOwnerInfoPref;
 
+        private TrustAgentManager mTrustAgentManager;
         private LockPatternUtils mLockPatternUtils;
         private DevicePolicyManager mDPM;
 
@@ -923,6 +932,9 @@
         @Override
         public void onCreate(Bundle icicle) {
             super.onCreate(icicle);
+            SecurityFeatureProvider securityFeatureProvider =
+                    FeatureFactory.getFactory(getActivity()).getSecurityFeatureProvider();
+            mTrustAgentManager = securityFeatureProvider.getTrustAgentManager();
             mLockPatternUtils = new LockPatternUtils(getContext());
             mDPM = getContext().getSystemService(DevicePolicyManager.class);
             createPreferenceHierarchy();
@@ -977,13 +989,12 @@
             // lock instantly on power key press
             mPowerButtonInstantlyLocks = (SwitchPreference) findPreference(
                     KEY_POWER_INSTANTLY_LOCKS);
-            Preference trustAgentPreference = findPreference(KEY_TRUST_AGENT);
-            if (mPowerButtonInstantlyLocks != null &&
-                    trustAgentPreference != null &&
-                    trustAgentPreference.getTitle().length() > 0) {
+            CharSequence trustAgentLabel = getActiveTrustAgentLabel(getContext(),
+                    mTrustAgentManager, mLockPatternUtils, mDPM);
+            if (mPowerButtonInstantlyLocks != null && !TextUtils.isEmpty(trustAgentLabel)) {
                 mPowerButtonInstantlyLocks.setSummary(getString(
                         R.string.lockpattern_settings_power_button_instantly_locks_summary,
-                        trustAgentPreference.getTitle()));
+                        trustAgentLabel));
             }
 
             mOwnerInfoPref = (RestrictedPreference) findPreference(KEY_OWNER_INFO_SETTINGS);
@@ -1052,14 +1063,15 @@
                     }
                 }
 
-                Preference preference = findPreference(KEY_TRUST_AGENT);
-                if (preference != null && preference.getTitle().length() > 0) {
+                CharSequence trustAgentLabel = getActiveTrustAgentLabel(getContext(),
+                        mTrustAgentManager, mLockPatternUtils, mDPM);
+                if (!TextUtils.isEmpty(trustAgentLabel)) {
                     if (Long.valueOf(values[best].toString()) == 0) {
                         summary = getString(R.string.lock_immediately_summary_with_exception,
-                                preference.getTitle());
+                                trustAgentLabel);
                     } else {
                         summary = getString(R.string.lock_after_timeout_summary_with_exception,
-                                entries[best], preference.getTitle());
+                                entries[best], trustAgentLabel);
                     }
                 } else {
                     summary = getString(R.string.lock_after_timeout_summary, entries[best]);