Disable trust button when no screenlock is set

Remove button is still allowed as it has been allowed in MNC
(Trust button is new in NYC)

Bug: 28161447
Change-Id: I8df73e1008c2e805f4d0b2ec68d8a4aa3bf75aba
diff --git a/src/com/android/settings/TrustedCredentialsDialogBuilder.java b/src/com/android/settings/TrustedCredentialsDialogBuilder.java
index 22dc936..ed2ab09 100644
--- a/src/com/android/settings/TrustedCredentialsDialogBuilder.java
+++ b/src/com/android/settings/TrustedCredentialsDialogBuilder.java
@@ -20,6 +20,7 @@
 import android.app.AlertDialog;
 import android.app.admin.DevicePolicyManager;
 import android.content.DialogInterface;
+import android.content.pm.UserInfo;
 import android.net.http.SslCertificate;
 import android.os.UserHandle;
 import android.os.UserManager;
@@ -31,6 +32,7 @@
 import android.widget.LinearLayout;
 import android.widget.Spinner;
 
+import com.android.internal.widget.LockPatternUtils;
 import com.android.settings.TrustedCredentialsSettings.CertHolder;
 
 import java.security.cert.X509Certificate;
@@ -184,10 +186,26 @@
             updateNegativeButton();
         }
 
+        /**
+         * @return true if current user or parent user is guarded by screenlock
+         */
+        private boolean isUserSecure(int userId) {
+            final LockPatternUtils lockPatternUtils = new LockPatternUtils(mActivity);
+            if (lockPatternUtils.isSecure(userId)) {
+                return true;
+            }
+            UserInfo parentUser = mUserManager.getProfileParent(userId);
+            if (parentUser == null) {
+                return false;
+            }
+            return lockPatternUtils.isSecure(parentUser.id);
+        }
+
         private void updatePositiveButton() {
             final CertHolder certHolder = getCurrentCertInfo();
-            mNeedsApproval = !certHolder.isSystemCert() &&
-                    !mDpm.isCaCertApproved(certHolder.getAlias(), certHolder.getUserId());
+            mNeedsApproval = !certHolder.isSystemCert()
+                    && isUserSecure(certHolder.getUserId())
+                    && !mDpm.isCaCertApproved(certHolder.getAlias(), certHolder.getUserId());
 
             // The ok button is optional. User can still dismiss the dialog by other means.
             // Display it only when trust button is not displayed, because we want users to