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)