Merge "Only show DeveloperOptionsController for admin" into main

This commit is contained in:
Chaohui Wang
2023-12-01 09:34:30 +00:00
committed by Android (Google) Code Review
2 changed files with 35 additions and 1 deletions

View File

@@ -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,

View File

@@ -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 {