Add opt-out properties for aspect ratio settings

Don't display aspect ratio options if app has opted out. If app has
opted out only for fullscreen, other aspect ratio options should still
be shown.

Bug: 292583399
Test: UserAspectRatioManagerTest
Change-Id: Ia0b223536407f703826d775468c8f8a0b4822e23
This commit is contained in:
Graciela Wissen Putri
2023-08-03 20:56:22 +00:00
parent a277f78789
commit 08983e8e63
6 changed files with 144 additions and 54 deletions

View File

@@ -21,7 +21,8 @@ import android.content.pm.ActivityInfo
import android.content.pm.ApplicationInfo
import android.content.pm.PackageManager
import android.content.pm.ResolveInfo
import android.os.Build
import android.provider.DeviceConfig.NAMESPACE_WINDOW_MANAGER
import android.view.WindowManager.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.test.assertIsDisplayed
@@ -34,15 +35,13 @@ import androidx.compose.ui.test.performClick
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.android.dx.mockito.inline.extended.ExtendedMockito
import android.provider.DeviceConfig.NAMESPACE_WINDOW_MANAGER
import com.android.settings.R
import com.android.settings.applications.appinfo.AppInfoDashboardFragment
import com.android.settings.applications.appcompat.UserAspectRatioDetails
import com.android.settings.applications.appcompat.UserAspectRatioManager
import com.android.settings.applications.appinfo.AppInfoDashboardFragment
import com.android.settings.spa.app.appinfo.AppInfoSettingsProvider
import com.android.settings.testutils.TestDeviceConfig
import com.android.settingslib.spa.testutils.delay
import com.android.settingslib.spa.testutils.waitUntilExists
import org.junit.After
import org.junit.Before
import org.junit.Rule
@@ -51,8 +50,6 @@ import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.any
import org.mockito.Mockito.anyInt
import org.mockito.Mockito.eq
import org.mockito.Mockito.mock
import org.mockito.MockitoSession
import org.mockito.Spy
import org.mockito.quality.Strictness
@@ -77,8 +74,6 @@ class UserAspectRatioAppPreferenceTest {
private val aspectRatioEnabledConfig =
TestDeviceConfig(NAMESPACE_WINDOW_MANAGER, "enable_app_compat_user_aspect_ratio_settings")
private lateinit var userAspectRatioManager: UserAspectRatioManager
@Mock
private lateinit var packageManager: PackageManager
@@ -92,7 +87,6 @@ class UserAspectRatioAppPreferenceTest {
.startMocking()
whenever(context.resources).thenReturn(resources)
whenever(context.packageManager).thenReturn(packageManager)
userAspectRatioManager = mock(UserAspectRatioManager::class.java)
}
@After
@@ -130,6 +124,8 @@ class UserAspectRatioAppPreferenceTest {
@Test
fun whenCannotDisplayAspectRatioUiAndConfigTrue_notDisplayed() {
// True is ignored but need this here or getBoolean will complain null object
mockProperty(PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE, true)
setConfig(true)
setContent()
@@ -139,6 +135,8 @@ class UserAspectRatioAppPreferenceTest {
@Test
fun whenCanDisplayAspectRatioUiAndConfigTrue_Displayed() {
// True is ignored but need this here or getBoolean will complain null object
mockProperty(PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE, true)
setConfig(true)
whenever(packageManager.queryIntentActivities(any(), anyInt()))
.thenReturn(listOf(RESOLVE_INFO))
@@ -155,6 +153,8 @@ class UserAspectRatioAppPreferenceTest {
@Test
fun onClick_startActivity() {
// True is ignored but need this here or getBoolean will complain null object
mockProperty(PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE, true)
setConfig(true)
whenever(packageManager.queryIntentActivities(any(), anyInt()))
.thenReturn(listOf(RESOLVE_INFO))
@@ -188,8 +188,14 @@ class UserAspectRatioAppPreferenceTest {
composeTestRule.delay()
}
private fun mockProperty(propertyName: String, value: Boolean) {
val prop = PackageManager.Property(
propertyName, value, PACKAGE_NAME, "" /* className */)
whenever(packageManager.getProperty(propertyName, PACKAGE_NAME)).thenReturn(prop)
}
private companion object {
const val PACKAGE_NAME = "package.name"
const val PACKAGE_NAME = "com.test.mypackage"
const val UID = 123
val APP = ApplicationInfo().apply {
packageName = PACKAGE_NAME

View File

@@ -154,14 +154,14 @@ class UserAspectRatioAppsPageProviderTest {
.isEqualTo(context.getString(R.string.user_aspect_ratio_half_screen))
}
private fun setSummaryState(override: Int): State<String> {
private fun setSummaryState(userOverride: Int): State<String> {
val listModel = UserAspectRatioAppListModel(context)
lateinit var summaryState: State<String>
composeTestRule.setContent {
summaryState = listModel.getSummary(option = 0,
record = UserAspectRatioAppListItemModel(
app = APP,
override = override,
userOverride = userOverride,
suggested = false,
canDisplay = true,
))
@@ -182,13 +182,13 @@ class UserAspectRatioAppsPageProviderTest {
}
private val APP_RECORD_SUGGESTED = UserAspectRatioAppListItemModel(
APP,
override = USER_MIN_ASPECT_RATIO_UNSET,
userOverride = USER_MIN_ASPECT_RATIO_UNSET,
suggested = true,
canDisplay = true
)
private val APP_RECORD_NOT_DISPLAYED = UserAspectRatioAppListItemModel(
APP,
override = USER_MIN_ASPECT_RATIO_UNSET,
userOverride = USER_MIN_ASPECT_RATIO_UNSET,
suggested = true,
canDisplay = false
)