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

Commit 4f74b50b authored by Yvonne Jiang's avatar Yvonne Jiang
Browse files

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
parent 96d615ad
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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<String>(), KeyValueStore {
@@ -61,7 +60,11 @@ class SupervisionMainSwitchPreference :
                as T

        override fun <T : Any> setValue(key: String, valueType: Class<T>, 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)
            }
        }
    }

+27 −0
Original line number Diff line number Diff line
@@ -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)