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

Commit a898cc0c authored by Chaohui Wang's avatar Chaohui Wang Committed by Android (Google) Code Review
Browse files

Merge "Only show DeveloperOptionsController for admin" into main

parents fa4a0cac 8295743f
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -34,6 +34,7 @@ import com.android.settings.development.DevelopmentSettingsDashboardFragment
import com.android.settings.spa.preference.ComposePreferenceController
import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spa.widget.ui.SettingsIcon
import com.android.settingslib.spaprivileged.framework.common.userManager
import com.android.settingslib.spaprivileged.model.enterprise.Restrictions
import com.android.settingslib.spaprivileged.settingsprovider.settingsGlobalBooleanFlow
import com.android.settingslib.spaprivileged.template.preference.RestrictedPreference
@@ -41,7 +42,9 @@ import com.android.settingslib.spaprivileged.template.preference.RestrictedPrefe
class DeveloperOptionsController(context: Context, preferenceKey: String) :
    ComposePreferenceController(context, preferenceKey) {

    override fun getAvailabilityStatus() = AVAILABLE
    override fun getAvailabilityStatus() =
        if (mContext.userManager.isAdminUser) AVAILABLE
        else DISABLED_FOR_USER

    private val isDevelopmentSettingsEnabledFlow = context.settingsGlobalBooleanFlow(
        name = Settings.Global.DEVELOPMENT_SETTINGS_ENABLED,
+31 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.settings.system

import android.content.Context
import android.content.Intent
import android.os.UserManager
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.junit4.createComposeRule
import androidx.compose.ui.test.onNodeWithText
@@ -25,7 +26,9 @@ import androidx.compose.ui.test.performClick
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.settings.SettingsActivity
import com.android.settings.core.BasePreferenceController
import com.android.settings.development.DevelopmentSettingsDashboardFragment
import com.android.settingslib.spaprivileged.framework.common.userManager
import com.google.common.truth.Truth.assertThat
import org.junit.Rule
import org.junit.Test
@@ -33,7 +36,10 @@ import org.junit.runner.RunWith
import org.mockito.kotlin.any
import org.mockito.kotlin.argumentCaptor
import org.mockito.kotlin.doNothing
import org.mockito.kotlin.doReturn
import org.mockito.kotlin.mock
import org.mockito.kotlin.spy
import org.mockito.kotlin.stub
import org.mockito.kotlin.verify
import org.mockito.kotlin.whenever

@@ -42,12 +48,37 @@ class DeveloperOptionsControllerTest {
    @get:Rule
    val composeTestRule = createComposeRule()

    private val mockUserManager = mock<UserManager>()

    private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
        on { userManager } doReturn mockUserManager
        doNothing().whenever(mock).startActivity(any())
    }

    private val controller = DeveloperOptionsController(context, TEST_KEY)

    @Test
    fun getAvailabilityStatus_isAdminUser_returnAvailable() {
        mockUserManager.stub {
            on { isAdminUser } doReturn true
        }

        val availabilityStatus = controller.getAvailabilityStatus()

        assertThat(availabilityStatus).isEqualTo(BasePreferenceController.AVAILABLE)
    }

    @Test
    fun getAvailabilityStatus_notAdminUser_returnDisabledForUser() {
        mockUserManager.stub {
            on { isAdminUser } doReturn false
        }

        val availabilityStatus = controller.getAvailabilityStatus()

        assertThat(availabilityStatus).isEqualTo(BasePreferenceController.DISABLED_FOR_USER)
    }

    @Test
    fun title_isDisplayed() {
        composeTestRule.setContent {