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

Commit bf54835a authored by Yvonne Jiang's avatar Yvonne Jiang Committed by Android (Google) Code Review
Browse files

Merge "Add handling for main Supervision settings toggle." into main

parents 5035bede 4f74b50b
Loading
Loading
Loading
Loading
+5 −2
Original line number Original line Diff line number Diff line
@@ -49,7 +49,6 @@ class SupervisionMainSwitchPreference :
    override val sensitivityLevel: Int
    override val sensitivityLevel: Int
        get() = SensitivityLevel.HIGH_SENSITIVITY
        get() = SensitivityLevel.HIGH_SENSITIVITY


    // TODO(b/390505725): Listen for changes in supervision state.
    @Suppress("UNCHECKED_CAST")
    @Suppress("UNCHECKED_CAST")
    private class SupervisionMainSwitchStorage(private val context: Context) :
    private class SupervisionMainSwitchStorage(private val context: Context) :
        NoOpKeyedObservable<String>(), KeyValueStore {
        NoOpKeyedObservable<String>(), KeyValueStore {
@@ -61,7 +60,11 @@ class SupervisionMainSwitchPreference :
                as T
                as T


        override fun <T : Any> setValue(key: String, valueType: Class<T>, value: 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 Original line Diff line number Diff line
@@ -28,6 +28,7 @@ import org.junit.runner.RunWith
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock
import org.mockito.kotlin.mock
import org.mockito.kotlin.stub
import org.mockito.kotlin.stub
import org.mockito.kotlin.verify


@RunWith(AndroidJUnit4::class)
@RunWith(AndroidJUnit4::class)
class SupervisionMainSwitchPreferenceTest {
class SupervisionMainSwitchPreferenceTest {
@@ -59,6 +60,32 @@ class SupervisionMainSwitchPreferenceTest {
        assertThat(getMainSwitchPreference().isChecked).isFalse()
        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 =
    private fun getMainSwitchPreference(): MainSwitchPreference =
        preference.createAndBindWidget(context)
        preference.createAndBindWidget(context)