Merge "Support App details for work profile apps" into main

This commit is contained in:
Yanting Yang
2023-08-02 20:12:32 +00:00
committed by Android (Google) Code Review
4 changed files with 2 additions and 45 deletions

View File

@@ -18,7 +18,6 @@ package com.android.settings.applications.appinfo;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.UserManager;
import androidx.preference.Preference; import androidx.preference.Preference;
@@ -39,10 +38,6 @@ public class AppInstallerInfoPreferenceController extends AppInfoPreferenceContr
@Override @Override
public int getAvailabilityStatus() { public int getAvailabilityStatus() {
if (UserManager.get(mContext).isManagedProfile()) {
return DISABLED_FOR_USER;
}
if (AppUtils.isMainlineModule(mContext.getPackageManager(), mPackageName)) { if (AppUtils.isMainlineModule(mContext.getPackageManager(), mPackageName)) {
return DISABLED_FOR_USER; return DISABLED_FOR_USER;
} }

View File

@@ -32,9 +32,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.settingslib.spa.widget.preference.Preference import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spaprivileged.framework.common.asUser import com.android.settingslib.spaprivileged.framework.common.asUser
import com.android.settingslib.spaprivileged.framework.common.userManager
import com.android.settingslib.spaprivileged.model.app.userHandle import com.android.settingslib.spaprivileged.model.app.userHandle
import com.android.settingslib.spaprivileged.model.app.userId
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
@@ -71,7 +69,6 @@ private class AppInstallerInfoPresenter(
) { ) {
private val userContext = context.asUser(app.userHandle) private val userContext = context.asUser(app.userHandle)
private val packageManager = userContext.packageManager private val packageManager = userContext.packageManager
private val userManager = context.userManager
private val installerPackageFlow = flow { private val installerPackageFlow = flow {
emit(withContext(Dispatchers.IO) { emit(withContext(Dispatchers.IO) {
@@ -88,9 +85,8 @@ private class AppInstallerInfoPresenter(
val isAvailableFlow = installerLabelFlow.map { installerLabel -> val isAvailableFlow = installerLabelFlow.map { installerLabel ->
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
!userManager.isManagedProfile(app.userId) && !AppUtils.isMainlineModule(packageManager, app.packageName) &&
!AppUtils.isMainlineModule(packageManager, app.packageName) && installerLabel != null
installerLabel != null
} }
} }

View File

@@ -37,7 +37,6 @@ import android.content.pm.ModuleInfo;
import android.content.pm.PackageInfo; import android.content.pm.PackageInfo;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo; import android.content.pm.ResolveInfo;
import android.os.UserManager;
import androidx.preference.Preference; import androidx.preference.Preference;
@@ -54,8 +53,6 @@ import org.robolectric.RuntimeEnvironment;
@RunWith(RobolectricTestRunner.class) @RunWith(RobolectricTestRunner.class)
public class AppInstallerInfoPreferenceControllerTest { public class AppInstallerInfoPreferenceControllerTest {
@Mock
private UserManager mUserManager;
@Mock @Mock
private PackageManager mPackageManager; private PackageManager mPackageManager;
@Mock @Mock
@@ -74,7 +71,6 @@ public class AppInstallerInfoPreferenceControllerTest {
public void setUp() throws PackageManager.NameNotFoundException { public void setUp() throws PackageManager.NameNotFoundException {
MockitoAnnotations.initMocks(this); MockitoAnnotations.initMocks(this);
mContext = spy(RuntimeEnvironment.application); mContext = spy(RuntimeEnvironment.application);
when(mContext.getSystemService(Context.USER_SERVICE)).thenReturn(mUserManager);
when(mContext.getPackageManager()).thenReturn(mPackageManager); when(mContext.getPackageManager()).thenReturn(mPackageManager);
final String installerPackage = "Installer1"; final String installerPackage = "Installer1";
when(mPackageManager.getInstallSourceInfo(anyString())).thenReturn(mInstallSourceInfo); when(mPackageManager.getInstallSourceInfo(anyString())).thenReturn(mInstallSourceInfo);
@@ -86,18 +82,8 @@ public class AppInstallerInfoPreferenceControllerTest {
mController.setParentFragment(mFragment); mController.setParentFragment(mFragment);
} }
@Test
public void getAvailabilityStatus_managedProfile_shouldReturnDisabled() {
when(mUserManager.isManagedProfile()).thenReturn(true);
assertThat(mController.getAvailabilityStatus())
.isEqualTo(BasePreferenceController.DISABLED_FOR_USER);
}
@Test @Test
public void getAvailabilityStatus_noAppLabel_shouldReturnDisabled() { public void getAvailabilityStatus_noAppLabel_shouldReturnDisabled() {
when(mUserManager.isManagedProfile()).thenReturn(false);
assertThat(mController.getAvailabilityStatus()) assertThat(mController.getAvailabilityStatus())
.isEqualTo(BasePreferenceController.DISABLED_FOR_USER); .isEqualTo(BasePreferenceController.DISABLED_FOR_USER);
} }
@@ -106,7 +92,6 @@ public class AppInstallerInfoPreferenceControllerTest {
public void getAvailabilityStatus_hasAppLabel_shouldReturnAvailable() public void getAvailabilityStatus_hasAppLabel_shouldReturnAvailable()
throws PackageManager.NameNotFoundException { throws PackageManager.NameNotFoundException {
final String packageName = "Package1"; final String packageName = "Package1";
when(mUserManager.isManagedProfile()).thenReturn(false);
when(mAppInfo.loadLabel(mPackageManager)).thenReturn("Label1"); when(mAppInfo.loadLabel(mPackageManager)).thenReturn("Label1");
mController = new AppInstallerInfoPreferenceController(mContext, "test_key"); mController = new AppInstallerInfoPreferenceController(mContext, "test_key");
mController.setPackageName(packageName); mController.setPackageName(packageName);
@@ -161,7 +146,6 @@ public class AppInstallerInfoPreferenceControllerTest {
public void getAvailabilityStatus_isMainlineModule_shouldReturnDisabled() public void getAvailabilityStatus_isMainlineModule_shouldReturnDisabled()
throws PackageManager.NameNotFoundException { throws PackageManager.NameNotFoundException {
final String packageName = "Package"; final String packageName = "Package";
when(mUserManager.isManagedProfile()).thenReturn(false);
when(mAppInfo.loadLabel(mPackageManager)).thenReturn("Label"); when(mAppInfo.loadLabel(mPackageManager)).thenReturn("Label");
mController.setPackageName(packageName); mController.setPackageName(packageName);
mockMainlineModule(packageName, true /* isMainlineModule */); mockMainlineModule(packageName, true /* isMainlineModule */);

View File

@@ -19,7 +19,6 @@ package com.android.settings.spa.app.appinfo
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.pm.ApplicationInfo import android.content.pm.ApplicationInfo
import android.os.UserManager
import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.assertIsDisplayed
@@ -40,16 +39,13 @@ import com.android.settings.Utils
import com.android.settings.applications.AppStoreUtil import com.android.settings.applications.AppStoreUtil
import com.android.settingslib.applications.AppUtils import com.android.settingslib.applications.AppUtils
import com.android.settingslib.spa.testutils.waitUntilExists import com.android.settingslib.spa.testutils.waitUntilExists
import com.android.settingslib.spaprivileged.framework.common.userManager
import com.android.settingslib.spaprivileged.model.app.userHandle import com.android.settingslib.spaprivileged.model.app.userHandle
import org.junit.After import org.junit.After
import org.junit.Before import org.junit.Before
import org.junit.Rule import org.junit.Rule
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mockito.Mock
import org.mockito.Mockito.any import org.mockito.Mockito.any
import org.mockito.Mockito.anyInt
import org.mockito.Mockito.eq import org.mockito.Mockito.eq
import org.mockito.Mockito.verify import org.mockito.Mockito.verify
import org.mockito.MockitoSession import org.mockito.MockitoSession
@@ -67,9 +63,6 @@ class AppInstallerInfoPreferenceTest {
@Spy @Spy
private val context: Context = ApplicationProvider.getApplicationContext() private val context: Context = ApplicationProvider.getApplicationContext()
@Mock
private lateinit var userManager: UserManager
@Before @Before
fun setUp() { fun setUp() {
mockSession = mockitoSession() mockSession = mockitoSession()
@@ -79,8 +72,6 @@ class AppInstallerInfoPreferenceTest {
.mockStatic(AppUtils::class.java) .mockStatic(AppUtils::class.java)
.strictness(Strictness.LENIENT) .strictness(Strictness.LENIENT)
.startMocking() .startMocking()
whenever(context.userManager).thenReturn(userManager)
whenever(userManager.isManagedProfile(anyInt())).thenReturn(false)
whenever(AppStoreUtil.getInstallerPackageName(any(), eq(PACKAGE_NAME))) whenever(AppStoreUtil.getInstallerPackageName(any(), eq(PACKAGE_NAME)))
.thenReturn(INSTALLER_PACKAGE_NAME) .thenReturn(INSTALLER_PACKAGE_NAME)
whenever(AppStoreUtil.getAppStoreLink(context, INSTALLER_PACKAGE_NAME, PACKAGE_NAME)) whenever(AppStoreUtil.getAppStoreLink(context, INSTALLER_PACKAGE_NAME, PACKAGE_NAME))
@@ -114,15 +105,6 @@ class AppInstallerInfoPreferenceTest {
composeTestRule.onRoot().assertIsNotDisplayed() composeTestRule.onRoot().assertIsNotDisplayed()
} }
@Test
fun whenIsManagedProfile_notDisplayed() {
whenever(userManager.isManagedProfile(anyInt())).thenReturn(true)
setContent()
composeTestRule.onRoot().assertIsNotDisplayed()
}
@Test @Test
fun whenIsMainlineModule_notDisplayed() { fun whenIsMainlineModule_notDisplayed() {
whenever(AppUtils.isMainlineModule(any(), eq(PACKAGE_NAME))).thenReturn(true) whenever(AppUtils.isMainlineModule(any(), eq(PACKAGE_NAME))).thenReturn(true)