From 4f74b50b3aa4c4d4906f2149fc1c69d1e0cb9a2f Mon Sep 17 00:00:00 2001 From: Yvonne Jiang Date: Tue, 28 Jan 2025 02:32:44 -0800 Subject: [PATCH] Add handling for main Supervision settings toggle. This change introduces the basic behavior for the main toggle switch to enable supervision. There is currently no PIN setup dialog when the toggle is clicked. That will be added as a follow-up. Intake bug: b/379312924 Change-Id: I75d6b2de1a7234c6da26fcdcf1d933eed3106a8c Test: atest SupervisionMainSwitchPreferenceTest Bug: 392694561 Flag: android.app.supervision.flags.enable_supervision_settings_screen --- .../SupervisionMainSwitchPreference.kt | 7 +++-- .../SupervisionMainSwitchPreferenceTest.kt | 27 +++++++++++++++++++ 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/supervision/SupervisionMainSwitchPreference.kt b/src/com/android/settings/supervision/SupervisionMainSwitchPreference.kt index e7d1d7f25b0..eaf73a1d6ff 100644 --- a/src/com/android/settings/supervision/SupervisionMainSwitchPreference.kt +++ b/src/com/android/settings/supervision/SupervisionMainSwitchPreference.kt @@ -49,7 +49,6 @@ class SupervisionMainSwitchPreference : override val sensitivityLevel: Int get() = SensitivityLevel.HIGH_SENSITIVITY - // TODO(b/390505725): Listen for changes in supervision state. @Suppress("UNCHECKED_CAST") private class SupervisionMainSwitchStorage(private val context: Context) : NoOpKeyedObservable(), KeyValueStore { @@ -61,7 +60,11 @@ class SupervisionMainSwitchPreference : as T override fun setValue(key: String, valueType: Class, value: T?) { - // TODO(b/383402852): implement handling of main toggle. + // TODO(b/392694561): add PIN protection to main toggle. + if (key == KEY && value is Boolean) { + val supervisionManager = context.getSystemService(SupervisionManager::class.java) + supervisionManager.setSupervisionEnabled(value) + } } } diff --git a/tests/robotests/src/com/android/settings/supervision/SupervisionMainSwitchPreferenceTest.kt b/tests/robotests/src/com/android/settings/supervision/SupervisionMainSwitchPreferenceTest.kt index 4a4acfea7b1..8b15c29b869 100644 --- a/tests/robotests/src/com/android/settings/supervision/SupervisionMainSwitchPreferenceTest.kt +++ b/tests/robotests/src/com/android/settings/supervision/SupervisionMainSwitchPreferenceTest.kt @@ -28,6 +28,7 @@ import org.junit.runner.RunWith import org.mockito.kotlin.doReturn import org.mockito.kotlin.mock import org.mockito.kotlin.stub +import org.mockito.kotlin.verify @RunWith(AndroidJUnit4::class) class SupervisionMainSwitchPreferenceTest { @@ -59,6 +60,32 @@ class SupervisionMainSwitchPreferenceTest { assertThat(getMainSwitchPreference().isChecked).isFalse() } + @Test + fun toggleOn() { + setSupervisionEnabled(false) + val widget = getMainSwitchPreference() + + assertThat(widget.isChecked).isFalse() + + widget.performClick() + + assertThat(widget.isChecked).isTrue() + verify(mockSupervisionManager).setSupervisionEnabled(true) + } + + @Test + fun toggleOff() { + setSupervisionEnabled(true) + val widget = getMainSwitchPreference() + + assertThat(widget.isChecked).isTrue() + + widget.performClick() + + assertThat(widget.isChecked).isFalse() + verify(mockSupervisionManager).setSupervisionEnabled(false) + } + private fun getMainSwitchPreference(): MainSwitchPreference = preference.createAndBindWidget(context)