Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 56170c3f authored by Zhou Liu's avatar Zhou Liu Committed by Android (Google) Code Review
Browse files

Merge "Create "Manage PIN" settings UI menu" into main

parents bf54835a 82356f6e
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -14097,4 +14097,8 @@
    <string name="device_supervision_switch_no_pin_summary">Set up PIN to get started</string>
    <!-- Search keywords for supervision settings [CHAR LIMIT=NONE] -->
    <string name="keywords_supervision_settings">supervision, parental supervision, parental controls</string>
    <!-- Title for supervision PIN management settings entry [CHAR LIMIT=60] -->
    <string name="supervision_pin_management_preference_title">Manage PIN</string>
    <!-- Description for supervision PIN management settings entry, in the case of adding a PIN [CHAR LIMIT=NONE] -->
    <string name="supervision_pin_management_preference_summary_add">Add a PIN recovery method</string>
</resources>
+1 −0
Original line number Diff line number Diff line
@@ -60,6 +60,7 @@ class SupervisionDashboardScreen : PreferenceScreenCreator {
            +TitlelessPreferenceGroup("supervision_features_group_1") += {
                // Empty category for dynamic injection targeting.
            }
            +SupervisionPinManagementScreen.KEY
        }

    companion object {
+29 −0
Original line number Diff line number Diff line
/*
 * 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 com.android.settingslib.preference.PreferenceFragment

/**
 * Fragment to display the Supervision PIN management page (Settings > Supervision > Manage PIN).
 *
 * See [SupervisionPinManagementScreen] for details on the page contents.
 */
class SupervisionPinManagementFragment : PreferenceFragment() {
    override fun getPreferenceScreenBindingKey(context: Context) =
        SupervisionPinManagementScreen.KEY
}
+51 −0
Original line number Diff line number Diff line
/*
 * 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 com.android.settings.R
import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator

/** Pin Management landing page (Settings > Supervision > Manage Pin). */
@ProvidePreferenceScreen(SupervisionPinManagementScreen.KEY)
class SupervisionPinManagementScreen : PreferenceScreenCreator {
    override val key: String
        get() = KEY

    override val title: Int
        get() = R.string.supervision_pin_management_preference_title

    // TODO(b/391994031): dynamically update the summary according to PIN status.
    override val summary: Int
        get() = R.string.supervision_pin_management_preference_summary_add

    // TODO(b/391994031): dynamically update the icon according to PIN status.
    override val icon: Int
        get() = R.drawable.ic_pin

    override fun fragmentClass() = SupervisionPinManagementFragment::class.java

    override fun getPreferenceHierarchy(context: Context) =
        preferenceHierarchy(context, this) {
            // TODO(b/391992481) implement the screen.
        }

    companion object {
        const val KEY = "supervision_pin_management"
    }
}
+47 −0
Original line number Diff line number Diff line
/*
 * 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 SupervisionPinManagementScreenTest {
    private val context: Context = ApplicationProvider.getApplicationContext()

    private val supervisionPinManagementScreen = SupervisionPinManagementScreen()

    @Test
    fun key() {
        assertThat(supervisionPinManagementScreen.key).isEqualTo(SupervisionPinManagementScreen.KEY)
    }

    @Test
    fun getTitle() {
        assertThat(supervisionPinManagementScreen.getPreferenceTitle(context))
            .isEqualTo("Manage PIN")
    }

    @Test
    fun getSummary_addPin() {
        assertThat(supervisionPinManagementScreen.getPreferenceSummary(context))
            .isEqualTo("Add a PIN recovery method")
    }
}