Merge "[1/n] Aspect ratio settings app list refinement" into udc-qpr-dev am: a3108d5b14

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/24854937

Change-Id: I9ed3cf613ae4b20c1465403be0c989a00be425fe
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Eghosa Ewansiha-Vlachavas
2023-09-28 11:08:02 +00:00
committed by Automerger Merge Worker
3 changed files with 52 additions and 42 deletions

View File

@@ -17,10 +17,10 @@
package com.android.settings.spa.app.appcompat
import android.content.Context
import android.content.pm.ActivityInfo
import android.content.pm.ApplicationInfo
import android.content.pm.LauncherActivityInfo
import android.content.pm.LauncherApps
import android.content.pm.PackageManager
import android.content.pm.ResolveInfo
import android.provider.DeviceConfig.NAMESPACE_WINDOW_MANAGER
import android.view.WindowManager.PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE
import androidx.compose.runtime.CompositionLocalProvider
@@ -46,9 +46,9 @@ import org.junit.Before
import org.junit.Rule
import org.junit.Test
import org.junit.runner.RunWith
import org.mockito.ArgumentMatchers.anyString
import org.mockito.Mock
import org.mockito.Mockito.any
import org.mockito.Mockito.anyInt
import org.mockito.MockitoSession
import org.mockito.Spy
import org.mockito.quality.Strictness
@@ -76,6 +76,12 @@ class UserAspectRatioAppPreferenceTest {
@Mock
private lateinit var packageManager: PackageManager
@Mock
private lateinit var launcherApps: LauncherApps
@Mock
private lateinit var launcherActivities: List<LauncherActivityInfo>
@Before
fun setUp() {
mockSession = ExtendedMockito.mockitoSession()
@@ -86,6 +92,8 @@ class UserAspectRatioAppPreferenceTest {
.startMocking()
whenever(context.resources).thenReturn(resources)
whenever(context.packageManager).thenReturn(packageManager)
whenever(context.getSystemService(Context.LAUNCHER_APPS_SERVICE)).thenReturn(launcherApps)
whenever(launcherApps.getActivityList(anyString(), any())).thenReturn(launcherActivities)
// True is ignored but need this here or getBoolean will complain null object
mockProperty(PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE, true)
}
@@ -107,6 +115,8 @@ class UserAspectRatioAppPreferenceTest {
@Test
fun whenCannotDisplayAspectRatioUi_notDisplayed() {
whenever(launcherActivities.isEmpty()).thenReturn(true)
setContent()
composeTestRule.onRoot().assertIsNotDisplayed()
@@ -115,8 +125,7 @@ class UserAspectRatioAppPreferenceTest {
@Test
fun whenCanDisplayAspectRatioUiAndConfigFalse_notDisplayed() {
setConfig(false)
whenever(packageManager.queryIntentActivities(any(), anyInt()))
.thenReturn(listOf(RESOLVE_INFO))
whenever(launcherActivities.isEmpty()).thenReturn(false)
setContent()
@@ -127,6 +136,8 @@ class UserAspectRatioAppPreferenceTest {
fun whenCannotDisplayAspectRatioUiAndConfigTrue_notDisplayed() {
setConfig(true)
whenever(launcherActivities.isEmpty()).thenReturn(true)
setContent()
composeTestRule.onRoot().assertIsNotDisplayed()
@@ -135,9 +146,7 @@ class UserAspectRatioAppPreferenceTest {
@Test
fun whenCanDisplayAspectRatioUiAndConfigTrue_Displayed() {
setConfig(true)
whenever(packageManager.queryIntentActivities(any(), anyInt()))
.thenReturn(listOf(RESOLVE_INFO))
whenever(launcherActivities.isEmpty()).thenReturn(false)
setContent()
composeTestRule.onNode(
@@ -151,8 +160,7 @@ class UserAspectRatioAppPreferenceTest {
@Test
fun onClick_startActivity() {
setConfig(true)
whenever(packageManager.queryIntentActivities(any(), anyInt()))
.thenReturn(listOf(RESOLVE_INFO))
whenever(launcherActivities.isEmpty()).thenReturn(false)
setContent()
composeTestRule.onRoot().performClick()
@@ -196,10 +204,5 @@ class UserAspectRatioAppPreferenceTest {
packageName = PACKAGE_NAME
uid = UID
}
private val RESOLVE_INFO = ResolveInfo().apply {
activityInfo = ActivityInfo().apply {
packageName = PACKAGE_NAME
}
}
}
}

View File

@@ -32,15 +32,18 @@ import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.LauncherActivityInfo;
import android.content.pm.LauncherApps;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.provider.DeviceConfig;
@@ -55,6 +58,8 @@ import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.List;
/**
* To run this test: atest SettingsUnitTests:UserAspectRatioManagerTest
*/
@@ -67,14 +72,23 @@ public class UserAspectRatioManagerTest {
private String mOriginalSettingsFlag;
private String mOriginalFullscreenFlag;
private String mPackageName = "com.test.mypackage";
private LauncherApps mLauncherApps;
private List<LauncherActivityInfo> mLauncherActivities;
@Before
public void setUp() {
mContext = spy(ApplicationProvider.getApplicationContext());
mResources = spy(mContext.getResources());
mUtils = new UserAspectRatioManager(mContext);
mLauncherApps = mock(LauncherApps.class);
mLauncherActivities = mock(List.class);
mUtils = new UserAspectRatioManager(mContext) {
@Override
LauncherApps getLauncherApps() {
return mLauncherApps;
}
};
when(mContext.getResources()).thenReturn(mResources);
doReturn(mLauncherActivities).when(mLauncherApps).getActivityList(anyString(), any());
mOriginalSettingsFlag = DeviceConfig.getProperty(
DeviceConfig.NAMESPACE_WINDOW_MANAGER, KEY_ENABLE_USER_ASPECT_RATIO_SETTINGS);
@@ -98,13 +112,14 @@ public class UserAspectRatioManagerTest {
public void testCanDisplayAspectRatioUi() {
final ApplicationInfo canDisplay = new ApplicationInfo();
canDisplay.packageName = "com.app.candisplay";
addResolveInfoLauncherEntry(canDisplay.packageName);
doReturn(false).when(mLauncherActivities).isEmpty();
assertTrue(mUtils.canDisplayAspectRatioUi(canDisplay));
final ApplicationInfo noLauncherEntry = new ApplicationInfo();
noLauncherEntry.packageName = "com.app.nolauncherentry";
doReturn(true).when(mLauncherActivities).isEmpty();
assertFalse(mUtils.canDisplayAspectRatioUi(noLauncherEntry));
}
@@ -112,10 +127,10 @@ public class UserAspectRatioManagerTest {
public void testCanDisplayAspectRatioUi_hasLauncher_propertyFalse_returnFalse()
throws PackageManager.NameNotFoundException {
mockProperty(PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE, false);
doReturn(true).when(mLauncherActivities).isEmpty();
final ApplicationInfo canDisplay = new ApplicationInfo();
canDisplay.packageName = mPackageName;
addResolveInfoLauncherEntry(canDisplay.packageName);
assertFalse(mUtils.canDisplayAspectRatioUi(canDisplay));
}
@@ -124,6 +139,7 @@ public class UserAspectRatioManagerTest {
public void testCanDisplayAspectRatioUi_noLauncher_propertyTrue_returnFalse()
throws PackageManager.NameNotFoundException {
mockProperty(PROPERTY_COMPAT_ALLOW_USER_ASPECT_RATIO_OVERRIDE, true);
doReturn(true).when(mLauncherActivities).isEmpty();
final ApplicationInfo noLauncherEntry = new ApplicationInfo();
noLauncherEntry.packageName = mPackageName;
@@ -267,12 +283,4 @@ public class UserAspectRatioManagerTest {
DeviceConfig.setProperty(DeviceConfig.NAMESPACE_WINDOW_MANAGER,
KEY_ENABLE_USER_ASPECT_RATIO_FULLSCREEN, enabled, makeDefault);
}
private void addResolveInfoLauncherEntry(String packageName) {
final ResolveInfo resolveInfo = mock(ResolveInfo.class);
final ActivityInfo activityInfo = mock(ActivityInfo.class);
activityInfo.packageName = packageName;
resolveInfo.activityInfo = activityInfo;
mUtils.addInfoHasLauncherEntry(resolveInfo);
}
}