Merge "Only show DeveloperOptionsController for admin" into main
This commit is contained in:
@@ -34,6 +34,7 @@ import com.android.settings.development.DevelopmentSettingsDashboardFragment
|
|||||||
import com.android.settings.spa.preference.ComposePreferenceController
|
import com.android.settings.spa.preference.ComposePreferenceController
|
||||||
import com.android.settingslib.spa.widget.preference.PreferenceModel
|
import com.android.settingslib.spa.widget.preference.PreferenceModel
|
||||||
import com.android.settingslib.spa.widget.ui.SettingsIcon
|
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.model.enterprise.Restrictions
|
||||||
import com.android.settingslib.spaprivileged.settingsprovider.settingsGlobalBooleanFlow
|
import com.android.settingslib.spaprivileged.settingsprovider.settingsGlobalBooleanFlow
|
||||||
import com.android.settingslib.spaprivileged.template.preference.RestrictedPreference
|
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) :
|
class DeveloperOptionsController(context: Context, preferenceKey: String) :
|
||||||
ComposePreferenceController(context, preferenceKey) {
|
ComposePreferenceController(context, preferenceKey) {
|
||||||
|
|
||||||
override fun getAvailabilityStatus() = AVAILABLE
|
override fun getAvailabilityStatus() =
|
||||||
|
if (mContext.userManager.isAdminUser) AVAILABLE
|
||||||
|
else DISABLED_FOR_USER
|
||||||
|
|
||||||
private val isDevelopmentSettingsEnabledFlow = context.settingsGlobalBooleanFlow(
|
private val isDevelopmentSettingsEnabledFlow = context.settingsGlobalBooleanFlow(
|
||||||
name = Settings.Global.DEVELOPMENT_SETTINGS_ENABLED,
|
name = Settings.Global.DEVELOPMENT_SETTINGS_ENABLED,
|
||||||
|
@@ -18,6 +18,7 @@ package com.android.settings.system
|
|||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.os.UserManager
|
||||||
import androidx.compose.ui.test.assertIsDisplayed
|
import androidx.compose.ui.test.assertIsDisplayed
|
||||||
import androidx.compose.ui.test.junit4.createComposeRule
|
import androidx.compose.ui.test.junit4.createComposeRule
|
||||||
import androidx.compose.ui.test.onNodeWithText
|
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.core.app.ApplicationProvider
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
||||||
import com.android.settings.SettingsActivity
|
import com.android.settings.SettingsActivity
|
||||||
|
import com.android.settings.core.BasePreferenceController
|
||||||
import com.android.settings.development.DevelopmentSettingsDashboardFragment
|
import com.android.settings.development.DevelopmentSettingsDashboardFragment
|
||||||
|
import com.android.settingslib.spaprivileged.framework.common.userManager
|
||||||
import com.google.common.truth.Truth.assertThat
|
import com.google.common.truth.Truth.assertThat
|
||||||
import org.junit.Rule
|
import org.junit.Rule
|
||||||
import org.junit.Test
|
import org.junit.Test
|
||||||
@@ -33,7 +36,10 @@ import org.junit.runner.RunWith
|
|||||||
import org.mockito.kotlin.any
|
import org.mockito.kotlin.any
|
||||||
import org.mockito.kotlin.argumentCaptor
|
import org.mockito.kotlin.argumentCaptor
|
||||||
import org.mockito.kotlin.doNothing
|
import org.mockito.kotlin.doNothing
|
||||||
|
import org.mockito.kotlin.doReturn
|
||||||
|
import org.mockito.kotlin.mock
|
||||||
import org.mockito.kotlin.spy
|
import org.mockito.kotlin.spy
|
||||||
|
import org.mockito.kotlin.stub
|
||||||
import org.mockito.kotlin.verify
|
import org.mockito.kotlin.verify
|
||||||
import org.mockito.kotlin.whenever
|
import org.mockito.kotlin.whenever
|
||||||
|
|
||||||
@@ -42,12 +48,37 @@ class DeveloperOptionsControllerTest {
|
|||||||
@get:Rule
|
@get:Rule
|
||||||
val composeTestRule = createComposeRule()
|
val composeTestRule = createComposeRule()
|
||||||
|
|
||||||
|
private val mockUserManager = mock<UserManager>()
|
||||||
|
|
||||||
private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
|
private val context: Context = spy(ApplicationProvider.getApplicationContext()) {
|
||||||
|
on { userManager } doReturn mockUserManager
|
||||||
doNothing().whenever(mock).startActivity(any())
|
doNothing().whenever(mock).startActivity(any())
|
||||||
}
|
}
|
||||||
|
|
||||||
private val controller = DeveloperOptionsController(context, TEST_KEY)
|
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
|
@Test
|
||||||
fun title_isDisplayed() {
|
fun title_isDisplayed() {
|
||||||
composeTestRule.setContent {
|
composeTestRule.setContent {
|
||||||
|
Reference in New Issue
Block a user