Merge "Replace PackageManagerInternal with PackageManager." into tm-dev am: 0920a8d798
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17536788 Change-Id: Ib758562df45853efa4c55fde6e6964aa50a0994b Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -30,8 +30,6 @@ import android.content.IntentFilter;
|
|||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.PackageManagerInternal;
|
|
||||||
import android.os.Binder;
|
|
||||||
import android.os.HandlerThread;
|
import android.os.HandlerThread;
|
||||||
import android.os.LocaleList;
|
import android.os.LocaleList;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
@@ -78,7 +76,7 @@ class LocaleManagerBackupHelper {
|
|||||||
private static final Duration STAGE_DATA_RETENTION_PERIOD = Duration.ofDays(3);
|
private static final Duration STAGE_DATA_RETENTION_PERIOD = Duration.ofDays(3);
|
||||||
|
|
||||||
private final LocaleManagerService mLocaleManagerService;
|
private final LocaleManagerService mLocaleManagerService;
|
||||||
private final PackageManagerInternal mPackageManagerInternal;
|
private final PackageManager mPackageManager;
|
||||||
private final Clock mClock;
|
private final Clock mClock;
|
||||||
private final Context mContext;
|
private final Context mContext;
|
||||||
private final Object mStagedDataLock = new Object();
|
private final Object mStagedDataLock = new Object();
|
||||||
@@ -90,18 +88,18 @@ class LocaleManagerBackupHelper {
|
|||||||
private final BroadcastReceiver mUserMonitor;
|
private final BroadcastReceiver mUserMonitor;
|
||||||
|
|
||||||
LocaleManagerBackupHelper(LocaleManagerService localeManagerService,
|
LocaleManagerBackupHelper(LocaleManagerService localeManagerService,
|
||||||
PackageManagerInternal pmInternal, HandlerThread broadcastHandlerThread) {
|
PackageManager packageManager, HandlerThread broadcastHandlerThread) {
|
||||||
this(localeManagerService.mContext, localeManagerService, pmInternal, Clock.systemUTC(),
|
this(localeManagerService.mContext, localeManagerService, packageManager, Clock.systemUTC(),
|
||||||
new SparseArray<>(), broadcastHandlerThread);
|
new SparseArray<>(), broadcastHandlerThread);
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting LocaleManagerBackupHelper(Context context,
|
@VisibleForTesting LocaleManagerBackupHelper(Context context,
|
||||||
LocaleManagerService localeManagerService,
|
LocaleManagerService localeManagerService,
|
||||||
PackageManagerInternal pmInternal, Clock clock, SparseArray<StagedData> stagedData,
|
PackageManager packageManager, Clock clock, SparseArray<StagedData> stagedData,
|
||||||
HandlerThread broadcastHandlerThread) {
|
HandlerThread broadcastHandlerThread) {
|
||||||
mContext = context;
|
mContext = context;
|
||||||
mLocaleManagerService = localeManagerService;
|
mLocaleManagerService = localeManagerService;
|
||||||
mPackageManagerInternal = pmInternal;
|
mPackageManager = packageManager;
|
||||||
mClock = clock;
|
mClock = clock;
|
||||||
mStagedData = stagedData;
|
mStagedData = stagedData;
|
||||||
|
|
||||||
@@ -130,8 +128,8 @@ class LocaleManagerBackupHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
HashMap<String, String> pkgStates = new HashMap<>();
|
HashMap<String, String> pkgStates = new HashMap<>();
|
||||||
for (ApplicationInfo appInfo : mPackageManagerInternal.getInstalledApplications(/*flags*/0,
|
for (ApplicationInfo appInfo : mPackageManager.getInstalledApplicationsAsUser(
|
||||||
userId, Binder.getCallingUid())) {
|
PackageManager.ApplicationInfoFlags.of(0), userId)) {
|
||||||
try {
|
try {
|
||||||
LocaleList appLocales = mLocaleManagerService.getApplicationLocales(
|
LocaleList appLocales = mLocaleManagerService.getApplicationLocales(
|
||||||
appInfo.packageName,
|
appInfo.packageName,
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ import android.app.ILocaleManager;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.PackageManagerInternal;
|
import android.content.pm.PackageManager.PackageInfoFlags;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
import android.os.HandlerThread;
|
import android.os.HandlerThread;
|
||||||
@@ -60,7 +60,7 @@ public class LocaleManagerService extends SystemService {
|
|||||||
private final LocaleManagerService.LocaleManagerBinderService mBinderService;
|
private final LocaleManagerService.LocaleManagerBinderService mBinderService;
|
||||||
private ActivityTaskManagerInternal mActivityTaskManagerInternal;
|
private ActivityTaskManagerInternal mActivityTaskManagerInternal;
|
||||||
private ActivityManagerInternal mActivityManagerInternal;
|
private ActivityManagerInternal mActivityManagerInternal;
|
||||||
private PackageManagerInternal mPackageManagerInternal;
|
private PackageManager mPackageManager;
|
||||||
|
|
||||||
private LocaleManagerBackupHelper mBackupHelper;
|
private LocaleManagerBackupHelper mBackupHelper;
|
||||||
|
|
||||||
@@ -74,7 +74,7 @@ public class LocaleManagerService extends SystemService {
|
|||||||
mBinderService = new LocaleManagerBinderService();
|
mBinderService = new LocaleManagerBinderService();
|
||||||
mActivityTaskManagerInternal = LocalServices.getService(ActivityTaskManagerInternal.class);
|
mActivityTaskManagerInternal = LocalServices.getService(ActivityTaskManagerInternal.class);
|
||||||
mActivityManagerInternal = LocalServices.getService(ActivityManagerInternal.class);
|
mActivityManagerInternal = LocalServices.getService(ActivityManagerInternal.class);
|
||||||
mPackageManagerInternal = LocalServices.getService(PackageManagerInternal.class);
|
mPackageManager = mContext.getPackageManager();
|
||||||
|
|
||||||
HandlerThread broadcastHandlerThread = new HandlerThread(TAG,
|
HandlerThread broadcastHandlerThread = new HandlerThread(TAG,
|
||||||
Process.THREAD_PRIORITY_BACKGROUND);
|
Process.THREAD_PRIORITY_BACKGROUND);
|
||||||
@@ -90,7 +90,7 @@ public class LocaleManagerService extends SystemService {
|
|||||||
});
|
});
|
||||||
|
|
||||||
mBackupHelper = new LocaleManagerBackupHelper(this,
|
mBackupHelper = new LocaleManagerBackupHelper(this,
|
||||||
mPackageManagerInternal, broadcastHandlerThread);
|
mPackageManager, broadcastHandlerThread);
|
||||||
|
|
||||||
mPackageMonitor = new LocaleManagerServicePackageMonitor(mBackupHelper,
|
mPackageMonitor = new LocaleManagerServicePackageMonitor(mBackupHelper,
|
||||||
systemAppUpdateTracker);
|
systemAppUpdateTracker);
|
||||||
@@ -102,7 +102,7 @@ public class LocaleManagerService extends SystemService {
|
|||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
LocaleManagerService(Context context, ActivityTaskManagerInternal activityTaskManagerInternal,
|
LocaleManagerService(Context context, ActivityTaskManagerInternal activityTaskManagerInternal,
|
||||||
ActivityManagerInternal activityManagerInternal,
|
ActivityManagerInternal activityManagerInternal,
|
||||||
PackageManagerInternal packageManagerInternal,
|
PackageManager packageManager,
|
||||||
LocaleManagerBackupHelper localeManagerBackupHelper,
|
LocaleManagerBackupHelper localeManagerBackupHelper,
|
||||||
PackageMonitor packageMonitor) {
|
PackageMonitor packageMonitor) {
|
||||||
super(context);
|
super(context);
|
||||||
@@ -110,7 +110,7 @@ public class LocaleManagerService extends SystemService {
|
|||||||
mBinderService = new LocaleManagerBinderService();
|
mBinderService = new LocaleManagerBinderService();
|
||||||
mActivityTaskManagerInternal = activityTaskManagerInternal;
|
mActivityTaskManagerInternal = activityTaskManagerInternal;
|
||||||
mActivityManagerInternal = activityManagerInternal;
|
mActivityManagerInternal = activityManagerInternal;
|
||||||
mPackageManagerInternal = packageManagerInternal;
|
mPackageManager = packageManager;
|
||||||
mBackupHelper = localeManagerBackupHelper;
|
mBackupHelper = localeManagerBackupHelper;
|
||||||
mPackageMonitor = packageMonitor;
|
mPackageMonitor = packageMonitor;
|
||||||
}
|
}
|
||||||
@@ -419,8 +419,12 @@ public class LocaleManagerService extends SystemService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private int getPackageUid(String appPackageName, int userId) {
|
private int getPackageUid(String appPackageName, int userId) {
|
||||||
return mPackageManagerInternal
|
try {
|
||||||
.getPackageUid(appPackageName, /* flags */ 0, userId);
|
return mPackageManager
|
||||||
|
.getPackageUidAsUser(appPackageName, PackageInfoFlags.of(0), userId);
|
||||||
|
} catch (PackageManager.NameNotFoundException e) {
|
||||||
|
return Process.INVALID_UID;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import static junit.framework.Assert.assertNull;
|
|||||||
import static org.junit.Assert.assertNotNull;
|
import static org.junit.Assert.assertNotNull;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.ArgumentMatchers.anyLong;
|
|
||||||
import static org.mockito.ArgumentMatchers.anyString;
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.doNothing;
|
import static org.mockito.Mockito.doNothing;
|
||||||
@@ -39,7 +38,6 @@ import android.content.Intent;
|
|||||||
import android.content.pm.ApplicationInfo;
|
import android.content.pm.ApplicationInfo;
|
||||||
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.PackageManagerInternal;
|
|
||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
import android.os.HandlerThread;
|
import android.os.HandlerThread;
|
||||||
import android.os.LocaleList;
|
import android.os.LocaleList;
|
||||||
@@ -102,8 +100,6 @@ public class LocaleManagerBackupRestoreTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private Context mMockContext;
|
private Context mMockContext;
|
||||||
@Mock
|
@Mock
|
||||||
private PackageManagerInternal mMockPackageManagerInternal;
|
|
||||||
@Mock
|
|
||||||
private PackageManager mMockPackageManager;
|
private PackageManager mMockPackageManager;
|
||||||
@Mock
|
@Mock
|
||||||
private LocaleManagerService mMockLocaleManagerService;
|
private LocaleManagerService mMockLocaleManagerService;
|
||||||
@@ -129,7 +125,6 @@ public class LocaleManagerBackupRestoreTest {
|
|||||||
@Before
|
@Before
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
mMockContext = mock(Context.class);
|
mMockContext = mock(Context.class);
|
||||||
mMockPackageManagerInternal = mock(PackageManagerInternal.class);
|
|
||||||
mMockPackageManager = mock(PackageManager.class);
|
mMockPackageManager = mock(PackageManager.class);
|
||||||
mMockLocaleManagerService = mock(LocaleManagerService.class);
|
mMockLocaleManagerService = mock(LocaleManagerService.class);
|
||||||
SystemAppUpdateTracker systemAppUpdateTracker = mock(SystemAppUpdateTracker.class);
|
SystemAppUpdateTracker systemAppUpdateTracker = mock(SystemAppUpdateTracker.class);
|
||||||
@@ -141,7 +136,7 @@ public class LocaleManagerBackupRestoreTest {
|
|||||||
broadcastHandlerThread.start();
|
broadcastHandlerThread.start();
|
||||||
|
|
||||||
mBackupHelper = spy(new ShadowLocaleManagerBackupHelper(mMockContext,
|
mBackupHelper = spy(new ShadowLocaleManagerBackupHelper(mMockContext,
|
||||||
mMockLocaleManagerService, mMockPackageManagerInternal, mClock, STAGE_DATA,
|
mMockLocaleManagerService, mMockPackageManager, mClock, STAGE_DATA,
|
||||||
broadcastHandlerThread));
|
broadcastHandlerThread));
|
||||||
doNothing().when(mBackupHelper).notifyBackupManager();
|
doNothing().when(mBackupHelper).notifyBackupManager();
|
||||||
|
|
||||||
@@ -158,8 +153,8 @@ public class LocaleManagerBackupRestoreTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testBackupPayload_noAppsInstalled_returnsNull() throws Exception {
|
public void testBackupPayload_noAppsInstalled_returnsNull() throws Exception {
|
||||||
doReturn(List.of()).when(mMockPackageManagerInternal)
|
doReturn(List.of()).when(mMockPackageManager)
|
||||||
.getInstalledApplications(anyLong(), anyInt(), anyInt());
|
.getInstalledApplicationsAsUser(any(), anyInt());
|
||||||
|
|
||||||
assertNull(mBackupHelper.getBackupPayload(DEFAULT_USER_ID));
|
assertNull(mBackupHelper.getBackupPayload(DEFAULT_USER_ID));
|
||||||
}
|
}
|
||||||
@@ -198,8 +193,8 @@ public class LocaleManagerBackupRestoreTest {
|
|||||||
ApplicationInfo anotherAppInfo = new ApplicationInfo();
|
ApplicationInfo anotherAppInfo = new ApplicationInfo();
|
||||||
defaultAppInfo.packageName = DEFAULT_PACKAGE_NAME;
|
defaultAppInfo.packageName = DEFAULT_PACKAGE_NAME;
|
||||||
anotherAppInfo.packageName = "com.android.anotherapp";
|
anotherAppInfo.packageName = "com.android.anotherapp";
|
||||||
doReturn(List.of(defaultAppInfo, anotherAppInfo)).when(mMockPackageManagerInternal)
|
doReturn(List.of(defaultAppInfo, anotherAppInfo)).when(mMockPackageManager)
|
||||||
.getInstalledApplications(anyLong(), anyInt(), anyInt());
|
.getInstalledApplicationsAsUser(any(), anyInt());
|
||||||
|
|
||||||
setUpLocalesForPackage(DEFAULT_PACKAGE_NAME, DEFAULT_LOCALES);
|
setUpLocalesForPackage(DEFAULT_PACKAGE_NAME, DEFAULT_LOCALES);
|
||||||
// Exception when getting locales for anotherApp.
|
// Exception when getting locales for anotherApp.
|
||||||
@@ -447,8 +442,8 @@ public class LocaleManagerBackupRestoreTest {
|
|||||||
// Retention period has not elapsed.
|
// Retention period has not elapsed.
|
||||||
setCurrentTimeMillis(
|
setCurrentTimeMillis(
|
||||||
DEFAULT_CREATION_TIME_MILLIS + RETENTION_PERIOD.minusHours(1).toMillis());
|
DEFAULT_CREATION_TIME_MILLIS + RETENTION_PERIOD.minusHours(1).toMillis());
|
||||||
doReturn(List.of()).when(mMockPackageManagerInternal)
|
doReturn(List.of()).when(mMockPackageManager)
|
||||||
.getInstalledApplications(anyLong(), anyInt(), anyInt());
|
.getInstalledApplicationsAsUser(any(), anyInt());
|
||||||
assertNull(mBackupHelper.getBackupPayload(DEFAULT_USER_ID));
|
assertNull(mBackupHelper.getBackupPayload(DEFAULT_USER_ID));
|
||||||
|
|
||||||
checkStageDataExists(DEFAULT_USER_ID);
|
checkStageDataExists(DEFAULT_USER_ID);
|
||||||
@@ -456,8 +451,8 @@ public class LocaleManagerBackupRestoreTest {
|
|||||||
// Exactly RETENTION_PERIOD amount of time has passed so stage data should still not be
|
// Exactly RETENTION_PERIOD amount of time has passed so stage data should still not be
|
||||||
// removed.
|
// removed.
|
||||||
setCurrentTimeMillis(DEFAULT_CREATION_TIME_MILLIS + RETENTION_PERIOD.toMillis());
|
setCurrentTimeMillis(DEFAULT_CREATION_TIME_MILLIS + RETENTION_PERIOD.toMillis());
|
||||||
doReturn(List.of()).when(mMockPackageManagerInternal)
|
doReturn(List.of()).when(mMockPackageManager)
|
||||||
.getInstalledApplications(anyLong(), anyInt(), anyInt());
|
.getInstalledApplicationsAsUser(any(), anyInt());
|
||||||
assertNull(mBackupHelper.getBackupPayload(DEFAULT_USER_ID));
|
assertNull(mBackupHelper.getBackupPayload(DEFAULT_USER_ID));
|
||||||
|
|
||||||
checkStageDataExists(DEFAULT_USER_ID);
|
checkStageDataExists(DEFAULT_USER_ID);
|
||||||
@@ -465,8 +460,8 @@ public class LocaleManagerBackupRestoreTest {
|
|||||||
// Retention period has now expired, stage data should be deleted.
|
// Retention period has now expired, stage data should be deleted.
|
||||||
setCurrentTimeMillis(
|
setCurrentTimeMillis(
|
||||||
DEFAULT_CREATION_TIME_MILLIS + RETENTION_PERIOD.plusSeconds(1).toMillis());
|
DEFAULT_CREATION_TIME_MILLIS + RETENTION_PERIOD.plusSeconds(1).toMillis());
|
||||||
doReturn(List.of()).when(mMockPackageManagerInternal)
|
doReturn(List.of()).when(mMockPackageManager)
|
||||||
.getInstalledApplications(anyLong(), anyInt(), anyInt());
|
.getInstalledApplicationsAsUser(any(), anyInt());
|
||||||
assertNull(mBackupHelper.getBackupPayload(DEFAULT_USER_ID));
|
assertNull(mBackupHelper.getBackupPayload(DEFAULT_USER_ID));
|
||||||
|
|
||||||
checkStageDataDoesNotExist(DEFAULT_USER_ID);
|
checkStageDataDoesNotExist(DEFAULT_USER_ID);
|
||||||
@@ -577,8 +572,8 @@ public class LocaleManagerBackupRestoreTest {
|
|||||||
private void setUpDummyAppForPackageManager(String packageName) {
|
private void setUpDummyAppForPackageManager(String packageName) {
|
||||||
ApplicationInfo dummyApp = new ApplicationInfo();
|
ApplicationInfo dummyApp = new ApplicationInfo();
|
||||||
dummyApp.packageName = packageName;
|
dummyApp.packageName = packageName;
|
||||||
doReturn(List.of(dummyApp)).when(mMockPackageManagerInternal)
|
doReturn(List.of(dummyApp)).when(mMockPackageManager)
|
||||||
.getInstalledApplications(anyLong(), anyInt(), anyInt());
|
.getInstalledApplicationsAsUser(any(), anyInt());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -23,7 +23,6 @@ import static junit.framework.Assert.fail;
|
|||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.anyBoolean;
|
import static org.mockito.ArgumentMatchers.anyBoolean;
|
||||||
import static org.mockito.ArgumentMatchers.anyInt;
|
import static org.mockito.ArgumentMatchers.anyInt;
|
||||||
import static org.mockito.ArgumentMatchers.anyLong;
|
|
||||||
import static org.mockito.ArgumentMatchers.anyString;
|
import static org.mockito.ArgumentMatchers.anyString;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
import static org.mockito.Mockito.doNothing;
|
import static org.mockito.Mockito.doNothing;
|
||||||
@@ -40,7 +39,6 @@ import android.content.Context;
|
|||||||
import android.content.pm.InstallSourceInfo;
|
import android.content.pm.InstallSourceInfo;
|
||||||
import android.content.pm.PackageInstaller;
|
import android.content.pm.PackageInstaller;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.PackageManagerInternal;
|
|
||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
import android.os.LocaleList;
|
import android.os.LocaleList;
|
||||||
|
|
||||||
@@ -80,7 +78,7 @@ public class LocaleManagerServiceTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private Context mMockContext;
|
private Context mMockContext;
|
||||||
@Mock
|
@Mock
|
||||||
private PackageManagerInternal mMockPackageManagerInternal;
|
private PackageManager mMockPackageManager;
|
||||||
@Mock
|
@Mock
|
||||||
private FakePackageConfigurationUpdater mFakePackageConfigurationUpdater;
|
private FakePackageConfigurationUpdater mFakePackageConfigurationUpdater;
|
||||||
@Mock
|
@Mock
|
||||||
@@ -95,14 +93,13 @@ public class LocaleManagerServiceTest {
|
|||||||
mMockContext = mock(Context.class);
|
mMockContext = mock(Context.class);
|
||||||
mMockActivityTaskManager = mock(ActivityTaskManagerInternal.class);
|
mMockActivityTaskManager = mock(ActivityTaskManagerInternal.class);
|
||||||
mMockActivityManager = mock(ActivityManagerInternal.class);
|
mMockActivityManager = mock(ActivityManagerInternal.class);
|
||||||
mMockPackageManagerInternal = mock(PackageManagerInternal.class);
|
mMockPackageManager = mock(PackageManager.class);
|
||||||
mMockPackageMonitor = mock(PackageMonitor.class);
|
mMockPackageMonitor = mock(PackageMonitor.class);
|
||||||
|
|
||||||
// For unit tests, set the default installer info
|
// For unit tests, set the default installer info
|
||||||
PackageManager mockPackageManager = mock(PackageManager.class);
|
doReturn(DEFAULT_INSTALL_SOURCE_INFO).when(mMockPackageManager)
|
||||||
doReturn(DEFAULT_INSTALL_SOURCE_INFO).when(mockPackageManager)
|
|
||||||
.getInstallSourceInfo(anyString());
|
.getInstallSourceInfo(anyString());
|
||||||
doReturn(mockPackageManager).when(mMockContext).getPackageManager();
|
doReturn(mMockPackageManager).when(mMockContext).getPackageManager();
|
||||||
|
|
||||||
mFakePackageConfigurationUpdater = new FakePackageConfigurationUpdater();
|
mFakePackageConfigurationUpdater = new FakePackageConfigurationUpdater();
|
||||||
doReturn(mFakePackageConfigurationUpdater)
|
doReturn(mFakePackageConfigurationUpdater)
|
||||||
@@ -117,14 +114,14 @@ public class LocaleManagerServiceTest {
|
|||||||
|
|
||||||
mMockBackupHelper = mock(ShadowLocaleManagerBackupHelper.class);
|
mMockBackupHelper = mock(ShadowLocaleManagerBackupHelper.class);
|
||||||
mLocaleManagerService = new LocaleManagerService(mMockContext, mMockActivityTaskManager,
|
mLocaleManagerService = new LocaleManagerService(mMockContext, mMockActivityTaskManager,
|
||||||
mMockActivityManager, mMockPackageManagerInternal,
|
mMockActivityManager, mMockPackageManager,
|
||||||
mMockBackupHelper, mMockPackageMonitor);
|
mMockBackupHelper, mMockPackageMonitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test(expected = SecurityException.class)
|
@Test(expected = SecurityException.class)
|
||||||
public void testSetApplicationLocales_arbitraryAppWithoutPermissions_fails() throws Exception {
|
public void testSetApplicationLocales_arbitraryAppWithoutPermissions_fails() throws Exception {
|
||||||
doReturn(DEFAULT_UID)
|
doReturn(DEFAULT_UID)
|
||||||
.when(mMockPackageManagerInternal).getPackageUid(anyString(), anyLong(), anyInt());
|
.when(mMockPackageManager).getPackageUidAsUser(anyString(), any(), anyInt());
|
||||||
setUpFailingPermissionCheckFor(Manifest.permission.CHANGE_CONFIGURATION);
|
setUpFailingPermissionCheckFor(Manifest.permission.CHANGE_CONFIGURATION);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -170,7 +167,7 @@ public class LocaleManagerServiceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testSetApplicationLocales_arbitraryAppWithPermission_succeeds() throws Exception {
|
public void testSetApplicationLocales_arbitraryAppWithPermission_succeeds() throws Exception {
|
||||||
doReturn(DEFAULT_UID)
|
doReturn(DEFAULT_UID)
|
||||||
.when(mMockPackageManagerInternal).getPackageUid(anyString(), anyLong(), anyInt());
|
.when(mMockPackageManager).getPackageUidAsUser(anyString(), any(), anyInt());
|
||||||
// if package is not owned by the caller, the calling app should have the following
|
// if package is not owned by the caller, the calling app should have the following
|
||||||
// permission. We will mock this to succeed to imitate that.
|
// permission. We will mock this to succeed to imitate that.
|
||||||
setUpPassingPermissionCheckFor(Manifest.permission.CHANGE_CONFIGURATION);
|
setUpPassingPermissionCheckFor(Manifest.permission.CHANGE_CONFIGURATION);
|
||||||
@@ -186,7 +183,7 @@ public class LocaleManagerServiceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testSetApplicationLocales_callerOwnsPackage_succeeds() throws Exception {
|
public void testSetApplicationLocales_callerOwnsPackage_succeeds() throws Exception {
|
||||||
doReturn(Binder.getCallingUid())
|
doReturn(Binder.getCallingUid())
|
||||||
.when(mMockPackageManagerInternal).getPackageUid(anyString(), anyLong(), anyInt());
|
.when(mMockPackageManager).getPackageUidAsUser(anyString(), any(), anyInt());
|
||||||
|
|
||||||
mLocaleManagerService.setApplicationLocales(DEFAULT_PACKAGE_NAME, DEFAULT_USER_ID,
|
mLocaleManagerService.setApplicationLocales(DEFAULT_PACKAGE_NAME, DEFAULT_USER_ID,
|
||||||
DEFAULT_LOCALES);
|
DEFAULT_LOCALES);
|
||||||
@@ -197,8 +194,8 @@ public class LocaleManagerServiceTest {
|
|||||||
|
|
||||||
@Test(expected = IllegalArgumentException.class)
|
@Test(expected = IllegalArgumentException.class)
|
||||||
public void testSetApplicationLocales_invalidPackageOrUserId_fails() throws Exception {
|
public void testSetApplicationLocales_invalidPackageOrUserId_fails() throws Exception {
|
||||||
doReturn(INVALID_UID)
|
doThrow(new PackageManager.NameNotFoundException("Mock"))
|
||||||
.when(mMockPackageManagerInternal).getPackageUid(anyString(), anyLong(), anyInt());
|
.when(mMockPackageManager).getPackageUidAsUser(anyString(), any(), anyInt());
|
||||||
try {
|
try {
|
||||||
mLocaleManagerService.setApplicationLocales(DEFAULT_PACKAGE_NAME, DEFAULT_USER_ID,
|
mLocaleManagerService.setApplicationLocales(DEFAULT_PACKAGE_NAME, DEFAULT_USER_ID,
|
||||||
LocaleList.getEmptyLocaleList());
|
LocaleList.getEmptyLocaleList());
|
||||||
@@ -211,8 +208,8 @@ public class LocaleManagerServiceTest {
|
|||||||
|
|
||||||
@Test(expected = SecurityException.class)
|
@Test(expected = SecurityException.class)
|
||||||
public void testGetApplicationLocales_arbitraryAppWithoutPermission_fails() throws Exception {
|
public void testGetApplicationLocales_arbitraryAppWithoutPermission_fails() throws Exception {
|
||||||
doReturn(DEFAULT_UID).when(mMockPackageManagerInternal)
|
doReturn(DEFAULT_UID).when(mMockPackageManager)
|
||||||
.getPackageUid(anyString(), anyLong(), anyInt());
|
.getPackageUidAsUser(anyString(), any(), anyInt());
|
||||||
setUpFailingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES);
|
setUpFailingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@@ -229,8 +226,8 @@ public class LocaleManagerServiceTest {
|
|||||||
public void testGetApplicationLocales_appSpecificConfigAbsent_returnsEmptyList()
|
public void testGetApplicationLocales_appSpecificConfigAbsent_returnsEmptyList()
|
||||||
throws Exception {
|
throws Exception {
|
||||||
// any valid app calling for its own package or having appropriate permission
|
// any valid app calling for its own package or having appropriate permission
|
||||||
doReturn(DEFAULT_UID).when(mMockPackageManagerInternal)
|
doReturn(DEFAULT_UID).when(mMockPackageManager)
|
||||||
.getPackageUid(anyString(), anyLong(), anyInt());
|
.getPackageUidAsUser(anyString(), any(), anyInt());
|
||||||
setUpPassingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES);
|
setUpPassingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES);
|
||||||
doReturn(null)
|
doReturn(null)
|
||||||
.when(mMockActivityTaskManager).getApplicationConfig(anyString(), anyInt());
|
.when(mMockActivityTaskManager).getApplicationConfig(anyString(), anyInt());
|
||||||
@@ -244,8 +241,8 @@ public class LocaleManagerServiceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testGetApplicationLocales_appSpecificLocalesAbsent_returnsEmptyList()
|
public void testGetApplicationLocales_appSpecificLocalesAbsent_returnsEmptyList()
|
||||||
throws Exception {
|
throws Exception {
|
||||||
doReturn(DEFAULT_UID).when(mMockPackageManagerInternal)
|
doReturn(DEFAULT_UID).when(mMockPackageManager)
|
||||||
.getPackageUid(anyString(), anyLong(), anyInt());
|
.getPackageUidAsUser(anyString(), any(), anyInt());
|
||||||
setUpPassingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES);
|
setUpPassingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES);
|
||||||
doReturn(new PackageConfig(/* nightMode = */ 0, /* locales = */ null))
|
doReturn(new PackageConfig(/* nightMode = */ 0, /* locales = */ null))
|
||||||
.when(mMockActivityTaskManager).getApplicationConfig(any(), anyInt());
|
.when(mMockActivityTaskManager).getApplicationConfig(any(), anyInt());
|
||||||
@@ -259,8 +256,8 @@ public class LocaleManagerServiceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testGetApplicationLocales_callerOwnsAppAndConfigPresent_returnsLocales()
|
public void testGetApplicationLocales_callerOwnsAppAndConfigPresent_returnsLocales()
|
||||||
throws Exception {
|
throws Exception {
|
||||||
doReturn(Binder.getCallingUid()).when(mMockPackageManagerInternal)
|
doReturn(Binder.getCallingUid()).when(mMockPackageManager)
|
||||||
.getPackageUid(anyString(), anyLong(), anyInt());
|
.getPackageUidAsUser(anyString(), any(), anyInt());
|
||||||
doReturn(new PackageConfig(/* nightMode = */ 0, DEFAULT_LOCALES))
|
doReturn(new PackageConfig(/* nightMode = */ 0, DEFAULT_LOCALES))
|
||||||
.when(mMockActivityTaskManager).getApplicationConfig(anyString(), anyInt());
|
.when(mMockActivityTaskManager).getApplicationConfig(anyString(), anyInt());
|
||||||
|
|
||||||
@@ -273,8 +270,8 @@ public class LocaleManagerServiceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testGetApplicationLocales_arbitraryCallerWithPermissions_returnsLocales()
|
public void testGetApplicationLocales_arbitraryCallerWithPermissions_returnsLocales()
|
||||||
throws Exception {
|
throws Exception {
|
||||||
doReturn(DEFAULT_UID).when(mMockPackageManagerInternal)
|
doReturn(DEFAULT_UID).when(mMockPackageManager)
|
||||||
.getPackageUid(anyString(), anyLong(), anyInt());
|
.getPackageUidAsUser(anyString(), any(), anyInt());
|
||||||
setUpPassingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES);
|
setUpPassingPermissionCheckFor(Manifest.permission.READ_APP_SPECIFIC_LOCALES);
|
||||||
doReturn(new PackageConfig(/* nightMode = */ 0, DEFAULT_LOCALES))
|
doReturn(new PackageConfig(/* nightMode = */ 0, DEFAULT_LOCALES))
|
||||||
.when(mMockActivityTaskManager).getApplicationConfig(anyString(), anyInt());
|
.when(mMockActivityTaskManager).getApplicationConfig(anyString(), anyInt());
|
||||||
@@ -288,10 +285,10 @@ public class LocaleManagerServiceTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testGetApplicationLocales_callerIsInstaller_returnsLocales()
|
public void testGetApplicationLocales_callerIsInstaller_returnsLocales()
|
||||||
throws Exception {
|
throws Exception {
|
||||||
doReturn(DEFAULT_UID).when(mMockPackageManagerInternal)
|
doReturn(DEFAULT_UID).when(mMockPackageManager)
|
||||||
.getPackageUid(eq(DEFAULT_PACKAGE_NAME), anyLong(), anyInt());
|
.getPackageUidAsUser(eq(DEFAULT_PACKAGE_NAME), any(), anyInt());
|
||||||
doReturn(Binder.getCallingUid()).when(mMockPackageManagerInternal)
|
doReturn(Binder.getCallingUid()).when(mMockPackageManager)
|
||||||
.getPackageUid(eq(DEFAULT_INSTALLER_PACKAGE_NAME), anyLong(), anyInt());
|
.getPackageUidAsUser(eq(DEFAULT_INSTALLER_PACKAGE_NAME), any(), anyInt());
|
||||||
doReturn(new PackageConfig(/* nightMode = */ 0, DEFAULT_LOCALES))
|
doReturn(new PackageConfig(/* nightMode = */ 0, DEFAULT_LOCALES))
|
||||||
.when(mMockActivityTaskManager).getApplicationConfig(anyString(), anyInt());
|
.when(mMockActivityTaskManager).getApplicationConfig(anyString(), anyInt());
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
package com.android.server.locales;
|
package com.android.server.locales;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManagerInternal;
|
import android.content.pm.PackageManager;
|
||||||
import android.os.HandlerThread;
|
import android.os.HandlerThread;
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
|
|
||||||
@@ -31,9 +31,10 @@ import java.time.Clock;
|
|||||||
public class ShadowLocaleManagerBackupHelper extends LocaleManagerBackupHelper {
|
public class ShadowLocaleManagerBackupHelper extends LocaleManagerBackupHelper {
|
||||||
ShadowLocaleManagerBackupHelper(Context context,
|
ShadowLocaleManagerBackupHelper(Context context,
|
||||||
LocaleManagerService localeManagerService,
|
LocaleManagerService localeManagerService,
|
||||||
PackageManagerInternal pmInternal, Clock clock,
|
PackageManager packageManager, Clock clock,
|
||||||
SparseArray<LocaleManagerBackupHelper.StagedData> stagedData,
|
SparseArray<LocaleManagerBackupHelper.StagedData> stagedData,
|
||||||
HandlerThread broadcastHandlerThread) {
|
HandlerThread broadcastHandlerThread) {
|
||||||
super(context, localeManagerService, pmInternal, clock, stagedData, broadcastHandlerThread);
|
super(context, localeManagerService, packageManager, clock, stagedData,
|
||||||
|
broadcastHandlerThread);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,6 @@ import android.content.pm.ApplicationInfo;
|
|||||||
import android.content.pm.InstallSourceInfo;
|
import android.content.pm.InstallSourceInfo;
|
||||||
import android.content.pm.PackageInstaller;
|
import android.content.pm.PackageInstaller;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.content.pm.PackageManagerInternal;
|
|
||||||
import android.os.Binder;
|
import android.os.Binder;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.os.LocaleList;
|
import android.os.LocaleList;
|
||||||
@@ -93,8 +92,6 @@ public class SystemAppUpdateTrackerTest {
|
|||||||
@Mock
|
@Mock
|
||||||
PackageManager mMockPackageManager;
|
PackageManager mMockPackageManager;
|
||||||
@Mock
|
@Mock
|
||||||
private PackageManagerInternal mMockPackageManagerInternal;
|
|
||||||
@Mock
|
|
||||||
private ActivityTaskManagerInternal mMockActivityTaskManager;
|
private ActivityTaskManagerInternal mMockActivityTaskManager;
|
||||||
@Mock
|
@Mock
|
||||||
private ActivityManagerInternal mMockActivityManager;
|
private ActivityManagerInternal mMockActivityManager;
|
||||||
@@ -110,21 +107,20 @@ public class SystemAppUpdateTrackerTest {
|
|||||||
mMockContext = mock(Context.class);
|
mMockContext = mock(Context.class);
|
||||||
mMockActivityTaskManager = mock(ActivityTaskManagerInternal.class);
|
mMockActivityTaskManager = mock(ActivityTaskManagerInternal.class);
|
||||||
mMockActivityManager = mock(ActivityManagerInternal.class);
|
mMockActivityManager = mock(ActivityManagerInternal.class);
|
||||||
mMockPackageManagerInternal = mock(PackageManagerInternal.class);
|
mMockPackageManager = mock(PackageManager.class);
|
||||||
LocaleManagerBackupHelper mockLocaleManagerBackupHelper =
|
LocaleManagerBackupHelper mockLocaleManagerBackupHelper =
|
||||||
mock(ShadowLocaleManagerBackupHelper.class);
|
mock(ShadowLocaleManagerBackupHelper.class);
|
||||||
// PackageMonitor is not needed in LocaleManagerService for these tests hence it is
|
// PackageMonitor is not needed in LocaleManagerService for these tests hence it is
|
||||||
// passed as null.
|
// passed as null.
|
||||||
mLocaleManagerService = new LocaleManagerService(mMockContext,
|
mLocaleManagerService = new LocaleManagerService(mMockContext,
|
||||||
mMockActivityTaskManager, mMockActivityManager,
|
mMockActivityTaskManager, mMockActivityManager,
|
||||||
mMockPackageManagerInternal, mockLocaleManagerBackupHelper,
|
mMockPackageManager, mockLocaleManagerBackupHelper,
|
||||||
/* mPackageMonitor= */ null);
|
/* mPackageMonitor= */ null);
|
||||||
|
|
||||||
doReturn(DEFAULT_USER_ID).when(mMockActivityManager)
|
doReturn(DEFAULT_USER_ID).when(mMockActivityManager)
|
||||||
.handleIncomingUser(anyInt(), anyInt(), eq(DEFAULT_USER_ID), anyBoolean(), anyInt(),
|
.handleIncomingUser(anyInt(), anyInt(), eq(DEFAULT_USER_ID), anyBoolean(), anyInt(),
|
||||||
anyString(), anyString());
|
anyString(), anyString());
|
||||||
|
|
||||||
mMockPackageManager = mock(PackageManager.class);
|
|
||||||
doReturn(DEFAULT_INSTALL_SOURCE_INFO).when(mMockPackageManager)
|
doReturn(DEFAULT_INSTALL_SOURCE_INFO).when(mMockPackageManager)
|
||||||
.getInstallSourceInfo(anyString());
|
.getInstallSourceInfo(anyString());
|
||||||
doReturn(mMockPackageManager).when(mMockContext).getPackageManager();
|
doReturn(mMockPackageManager).when(mMockContext).getPackageManager();
|
||||||
|
|||||||
Reference in New Issue
Block a user