summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/security
diff options
context:
space:
mode:
authorAlex Johnston <acjohnston@google.com>2019-10-14 17:50:21 +0100
committerAlex Johnston <acjohnston@google.com>2019-10-24 10:37:21 +0100
commit7659e53a9423affa3909e29067abdcb444c4662a (patch)
tree573a1c12606ff0c5891f47941f7e701ee42caf32 /src/com/android/settings/security
parentcf596519cb4278477e5ec8f5d3a3ad3aa26b920f (diff)
downloadpackages_apps_Settings-7659e53a9423affa3909e29067abdcb444c4662a.tar.gz
packages_apps_Settings-7659e53a9423affa3909e29067abdcb444c4662a.tar.bz2
packages_apps_Settings-7659e53a9423affa3909e29067abdcb444c4662a.zip
Added functionality to select type of certificate to be installed from the Settings app
This is part of the changes to improve the UX and language for installing certificates. Previously, the different types of certificate used the same installation flow. This CL introduces a new settings page, where the type of certificate to be installed can be selected. Bug: 139173976 Test: Atest com.android.settings.security manual testing from Settings by selecting the certificate type preference and ensuring the installation flow still worked as expected. Change-Id: Iea7c91aa3801e429f0e22d29469958f4151b3cba
Diffstat (limited to 'src/com/android/settings/security')
-rw-r--r--src/com/android/settings/security/EncryptionAndCredential.java2
-rw-r--r--src/com/android/settings/security/InstallCaCertificatePreferenceController.java42
-rw-r--r--src/com/android/settings/security/InstallCertificateFromStorage.java93
-rw-r--r--src/com/android/settings/security/InstallCertificatePreferenceController.java (renamed from src/com/android/settings/security/InstallCredentialsPreferenceController.java)8
-rw-r--r--src/com/android/settings/security/InstallUserCertificatePreferenceController.java42
-rw-r--r--src/com/android/settings/security/InstallWifiCertificatePreferenceController.java42
6 files changed, 224 insertions, 5 deletions
diff --git a/src/com/android/settings/security/EncryptionAndCredential.java b/src/com/android/settings/security/EncryptionAndCredential.java
index 3e88fa8e5f..d87327102d 100644
--- a/src/com/android/settings/security/EncryptionAndCredential.java
+++ b/src/com/android/settings/security/EncryptionAndCredential.java
@@ -75,7 +75,7 @@ public class EncryptionAndCredential extends DashboardFragment {
controllers.add(new CredentialStoragePreferenceController(context));
controllers.add(new UserCredentialsPreferenceController(context));
controllers.add(new ResetCredentialsPreferenceController(context, lifecycle));
- controllers.add(new InstallCredentialsPreferenceController(context));
+ controllers.add(new InstallCertificatePreferenceController(context));
return controllers;
}
diff --git a/src/com/android/settings/security/InstallCaCertificatePreferenceController.java b/src/com/android/settings/security/InstallCaCertificatePreferenceController.java
new file mode 100644
index 0000000000..b2ded85b2c
--- /dev/null
+++ b/src/com/android/settings/security/InstallCaCertificatePreferenceController.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.security;
+
+import android.content.Context;
+import android.os.UserManager;
+
+import com.android.settings.core.BasePreferenceController;
+
+public class InstallCaCertificatePreferenceController extends
+ BasePreferenceController {
+
+ private static final String KEY_INSTALL_CA_CERTIFICATE = "install_ca_certificate";
+
+ public InstallCaCertificatePreferenceController(Context context) {
+ super(context, UserManager.DISALLOW_CONFIG_CREDENTIALS);
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return AVAILABLE;
+ }
+
+ @Override
+ public String getPreferenceKey() {
+ return KEY_INSTALL_CA_CERTIFICATE;
+ }
+}
diff --git a/src/com/android/settings/security/InstallCertificateFromStorage.java b/src/com/android/settings/security/InstallCertificateFromStorage.java
new file mode 100644
index 0000000000..90e68d4116
--- /dev/null
+++ b/src/com/android/settings/security/InstallCertificateFromStorage.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.security;
+
+import android.app.settings.SettingsEnums;
+import android.content.Context;
+import android.os.UserManager;
+
+import com.android.settings.R;
+import com.android.settings.dashboard.DashboardFragment;
+import com.android.settings.search.BaseSearchIndexProvider;
+import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+import com.android.settingslib.search.SearchIndexable;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Install certificate from storage settings.
+ */
+@SearchIndexable
+public class InstallCertificateFromStorage extends DashboardFragment {
+
+ private static final String TAG = "InstallCertificateFromStorage";
+
+ @Override
+ public int getMetricsCategory() {
+ return SettingsEnums.INSTALL_CERTIFICATE_FROM_STORAGE;
+ }
+
+ @Override
+ protected int getPreferenceScreenResId() {
+ return R.xml.install_certificate_from_storage;
+ }
+
+ @Override
+ protected String getLogTag() {
+ return TAG;
+ }
+
+ @Override
+ protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
+ return new ArrayList<AbstractPreferenceController>();
+ }
+
+ private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
+ Lifecycle lifecycle) {
+ final List<AbstractPreferenceController> controllers = new ArrayList<>();
+ controllers.add(new InstallCaCertificatePreferenceController(context));
+ controllers.add(new InstallUserCertificatePreferenceController(context));
+ controllers.add(new InstallWifiCertificatePreferenceController(context));
+ return controllers;
+ }
+
+ @Override
+ public int getHelpResource() {
+ return R.string.help_url_install_certificate;
+ }
+
+ /**
+ * For Search. Please keep it in sync when updating "createPreferenceHierarchy()"
+ */
+ public static final BaseSearchIndexProvider SEARCH_INDEX_DATA_PROVIDER =
+ new BaseSearchIndexProvider(R.xml.install_certificate_from_storage) {
+ @Override
+ public List<AbstractPreferenceController> createPreferenceControllers(
+ Context context) {
+ return buildPreferenceControllers(context, null /* lifecycle */);
+ }
+
+ @Override
+ protected boolean isPageSearchEnabled(Context context) {
+ final UserManager um = (UserManager) context.getSystemService(
+ Context.USER_SERVICE);
+ return um.isAdminUser();
+ }
+ };
+}
diff --git a/src/com/android/settings/security/InstallCredentialsPreferenceController.java b/src/com/android/settings/security/InstallCertificatePreferenceController.java
index ca9ed2657a..2133069c94 100644
--- a/src/com/android/settings/security/InstallCredentialsPreferenceController.java
+++ b/src/com/android/settings/security/InstallCertificatePreferenceController.java
@@ -19,17 +19,17 @@ package com.android.settings.security;
import android.content.Context;
import android.os.UserManager;
-public class InstallCredentialsPreferenceController extends
+public class InstallCertificatePreferenceController extends
RestrictedEncryptionPreferenceController {
- private static final String KEY_CREDENTIALS_INSTALL = "credentials_install";
+ private static final String KEY_INSTALL_CERTIFICATE = "install_certificate";
- public InstallCredentialsPreferenceController(Context context) {
+ public InstallCertificatePreferenceController(Context context) {
super(context, UserManager.DISALLOW_CONFIG_CREDENTIALS);
}
@Override
public String getPreferenceKey() {
- return KEY_CREDENTIALS_INSTALL;
+ return KEY_INSTALL_CERTIFICATE;
}
}
diff --git a/src/com/android/settings/security/InstallUserCertificatePreferenceController.java b/src/com/android/settings/security/InstallUserCertificatePreferenceController.java
new file mode 100644
index 0000000000..ad2a6068d6
--- /dev/null
+++ b/src/com/android/settings/security/InstallUserCertificatePreferenceController.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.security;
+
+import android.content.Context;
+import android.os.UserManager;
+
+import com.android.settings.core.BasePreferenceController;
+
+public class InstallUserCertificatePreferenceController extends
+ BasePreferenceController {
+
+ private static final String KEY_INSTALL_USER_CERTIFICATE = "install_user_certificate";
+
+ public InstallUserCertificatePreferenceController(Context context) {
+ super(context, UserManager.DISALLOW_CONFIG_CREDENTIALS);
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return AVAILABLE;
+ }
+
+ @Override
+ public String getPreferenceKey() {
+ return KEY_INSTALL_USER_CERTIFICATE;
+ }
+}
diff --git a/src/com/android/settings/security/InstallWifiCertificatePreferenceController.java b/src/com/android/settings/security/InstallWifiCertificatePreferenceController.java
new file mode 100644
index 0000000000..c7df34efd0
--- /dev/null
+++ b/src/com/android/settings/security/InstallWifiCertificatePreferenceController.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.security;
+
+import android.content.Context;
+import android.os.UserManager;
+
+import com.android.settings.core.BasePreferenceController;
+
+public class InstallWifiCertificatePreferenceController extends
+ BasePreferenceController {
+
+ private static final String KEY_INSTALL_WIFI_CERTIFICATE = "install_wifi_certificate";
+
+ public InstallWifiCertificatePreferenceController(Context context) {
+ super(context, UserManager.DISALLOW_CONFIG_CREDENTIALS);
+ }
+
+ @Override
+ public int getAvailabilityStatus() {
+ return AVAILABLE;
+ }
+
+ @Override
+ public String getPreferenceKey() {
+ return KEY_INSTALL_WIFI_CERTIFICATE;
+ }
+}