From 827d6624602f4d9c52a23fe05a8b7f038aee0916 Mon Sep 17 00:00:00 2001 From: Zhou Liu Date: Fri, 31 Jan 2025 02:11:18 +0000 Subject: [PATCH] Create "Change PIN" settings UI Test: atest SupervisionChangePinPreferenceTest Test: manually on real device Bug: 393193125 Flag: android.app.supervision.flags.enable_supervision_settings_screen Change-Id: I9a9af5d502c45a7710bcb73455eae9a828f0f721 --- res/values/strings.xml | 2 + .../SupervisionChangePinPreference.kt | 38 +++++++++++++++++++ .../SupervisionPinManagementScreen.kt | 1 + .../SupervisionChangePinPreferenceTest.kt | 36 ++++++++++++++++++ 4 files changed, 77 insertions(+) create mode 100644 src/com/android/settings/supervision/SupervisionChangePinPreference.kt create mode 100644 tests/robotests/src/com/android/settings/supervision/SupervisionChangePinPreferenceTest.kt diff --git a/res/values/strings.xml b/res/values/strings.xml index c5a938e6f18..86a622df4da 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -14107,4 +14107,6 @@ Manage PIN Add a PIN recovery method + + Change PIN diff --git a/src/com/android/settings/supervision/SupervisionChangePinPreference.kt b/src/com/android/settings/supervision/SupervisionChangePinPreference.kt new file mode 100644 index 00000000000..aebcdc5985a --- /dev/null +++ b/src/com/android/settings/supervision/SupervisionChangePinPreference.kt @@ -0,0 +1,38 @@ +/* + * Copyright (C) 2025 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.supervision + +import android.content.Context +import android.content.Intent +import com.android.settings.R +import com.android.settingslib.metadata.PreferenceMetadata + +/** + * Setting on PIN Management screen (Settings > Supervision > Manage Pin) that invokes the flow to + * update the existing device supervision PIN. + */ +class SupervisionChangePinPreference : PreferenceMetadata { + override val key: String + get() = "supervision_change_pin" + + override val title: Int + get() = R.string.supervision_change_pin_preference_title + + override fun intent(context: Context): Intent? { + // TODO(b/393450922): implement handling of change pin intent. + return super.intent(context) + } +} diff --git a/src/com/android/settings/supervision/SupervisionPinManagementScreen.kt b/src/com/android/settings/supervision/SupervisionPinManagementScreen.kt index e087a284987..d7cdaae6a71 100644 --- a/src/com/android/settings/supervision/SupervisionPinManagementScreen.kt +++ b/src/com/android/settings/supervision/SupervisionPinManagementScreen.kt @@ -43,6 +43,7 @@ class SupervisionPinManagementScreen : PreferenceScreenCreator { override fun getPreferenceHierarchy(context: Context) = preferenceHierarchy(context, this) { // TODO(b/391992481) implement the screen. + +SupervisionChangePinPreference() } companion object { diff --git a/tests/robotests/src/com/android/settings/supervision/SupervisionChangePinPreferenceTest.kt b/tests/robotests/src/com/android/settings/supervision/SupervisionChangePinPreferenceTest.kt new file mode 100644 index 00000000000..4ad9c266123 --- /dev/null +++ b/tests/robotests/src/com/android/settings/supervision/SupervisionChangePinPreferenceTest.kt @@ -0,0 +1,36 @@ +/* + * Copyright (C) 2025 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.supervision + +import android.content.Context +import androidx.test.core.app.ApplicationProvider +import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.google.common.truth.Truth.assertThat +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class SupervisionChangePinPreferenceTest { + private val context: Context = ApplicationProvider.getApplicationContext() + + private val supervisionChangePinPreference = SupervisionChangePinPreference() + + @Test + fun getTitle() { + assertThat(supervisionChangePinPreference.getPreferenceTitle(context)) + .isEqualTo("Change PIN") + } +}