Merge "[pm] add DATA_LOADER_TYPE to broadcast intent for fresh installs" into rvc-dev am: c0ddf76bc5 am: 3169c8e4b9 am: 7f1961429d

Change-Id: I78f9d1034da98c45ccd8bab14357558c0def9a51
This commit is contained in:
Songchun Fan
2020-05-04 17:23:28 +00:00
committed by Automerger Merge Worker
2 changed files with 15 additions and 9 deletions

View File

@@ -2177,7 +2177,8 @@ public class PackageManagerService extends IPackageManager.Stub
int appId = UserHandle.getAppId(res.uid); int appId = UserHandle.getAppId(res.uid);
boolean isSystem = res.pkg.isSystem(); boolean isSystem = res.pkg.isSystem();
sendPackageAddedForNewUsers(packageName, isSystem || virtualPreload, sendPackageAddedForNewUsers(packageName, isSystem || virtualPreload,
virtualPreload /*startReceiver*/, appId, firstUserIds, firstInstantUserIds); virtualPreload /*startReceiver*/, appId, firstUserIds, firstInstantUserIds,
dataLoaderType);
// Send added for users that don't see the package for the first time // Send added for users that don't see the package for the first time
Bundle extras = new Bundle(1); Bundle extras = new Bundle(1);
@@ -12725,13 +12726,14 @@ public class PackageManagerService extends IPackageManager.Stub
} }
private void sendPackageAddedForUser(String packageName, PackageSetting pkgSetting, private void sendPackageAddedForUser(String packageName, PackageSetting pkgSetting,
int userId) { int userId, int dataLoaderType) {
final boolean isSystem = isSystemApp(pkgSetting) || isUpdatedSystemApp(pkgSetting); final boolean isSystem = isSystemApp(pkgSetting) || isUpdatedSystemApp(pkgSetting);
final boolean isInstantApp = pkgSetting.getInstantApp(userId); final boolean isInstantApp = pkgSetting.getInstantApp(userId);
final int[] userIds = isInstantApp ? EMPTY_INT_ARRAY : new int[] { userId }; final int[] userIds = isInstantApp ? EMPTY_INT_ARRAY : new int[] { userId };
final int[] instantUserIds = isInstantApp ? new int[] { userId } : EMPTY_INT_ARRAY; final int[] instantUserIds = isInstantApp ? new int[] { userId } : EMPTY_INT_ARRAY;
sendPackageAddedForNewUsers(packageName, isSystem /*sendBootCompleted*/, sendPackageAddedForNewUsers(packageName, isSystem /*sendBootCompleted*/,
false /*startReceiver*/, pkgSetting.appId, userIds, instantUserIds); false /*startReceiver*/, pkgSetting.appId, userIds, instantUserIds,
dataLoaderType);
// Send a session commit broadcast // Send a session commit broadcast
final PackageInstaller.SessionInfo info = new PackageInstaller.SessionInfo(); final PackageInstaller.SessionInfo info = new PackageInstaller.SessionInfo();
@@ -12742,7 +12744,8 @@ public class PackageManagerService extends IPackageManager.Stub
@Override @Override
public void sendPackageAddedForNewUsers(String packageName, boolean sendBootCompleted, public void sendPackageAddedForNewUsers(String packageName, boolean sendBootCompleted,
boolean includeStopped, @AppIdInt int appId, int[] userIds, int[] instantUserIds) { boolean includeStopped, @AppIdInt int appId, int[] userIds, int[] instantUserIds,
int dataLoaderType) {
if (ArrayUtils.isEmpty(userIds) && ArrayUtils.isEmpty(instantUserIds)) { if (ArrayUtils.isEmpty(userIds) && ArrayUtils.isEmpty(instantUserIds)) {
return; return;
} }
@@ -12751,6 +12754,7 @@ public class PackageManagerService extends IPackageManager.Stub
final int uid = UserHandle.getUid( final int uid = UserHandle.getUid(
(ArrayUtils.isEmpty(userIds) ? instantUserIds[0] : userIds[0]), appId); (ArrayUtils.isEmpty(userIds) ? instantUserIds[0] : userIds[0]), appId);
extras.putInt(Intent.EXTRA_UID, uid); extras.putInt(Intent.EXTRA_UID, uid);
extras.putInt(PackageInstaller.EXTRA_DATA_LOADER_TYPE, dataLoaderType);
sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED,
packageName, extras, 0, null, null, userIds, instantUserIds, packageName, extras, 0, null, null, userIds, instantUserIds,
@@ -12868,7 +12872,7 @@ public class PackageManagerService extends IPackageManager.Stub
} }
} }
if (sendAdded) { if (sendAdded) {
sendPackageAddedForUser(packageName, pkgSetting, userId); sendPackageAddedForUser(packageName, pkgSetting, userId, DataLoaderType.NONE);
return true; return true;
} }
if (sendRemoved) { if (sendRemoved) {
@@ -13101,7 +13105,7 @@ public class PackageManagerService extends IPackageManager.Stub
prepareAppDataAfterInstallLIF(pkgSetting.pkg); prepareAppDataAfterInstallLIF(pkgSetting.pkg);
} }
} }
sendPackageAddedForUser(packageName, pkgSetting, userId); sendPackageAddedForUser(packageName, pkgSetting, userId, DataLoaderType.NONE);
synchronized (mLock) { synchronized (mLock) {
updateSequenceNumberLP(pkgSetting, new int[]{ userId }); updateSequenceNumberLP(pkgSetting, new int[]{ userId });
} }
@@ -18406,7 +18410,8 @@ public class PackageManagerService extends IPackageManager.Stub
PackageInstalledInfo installedInfo = appearedChildPackages.valueAt(i); PackageInstalledInfo installedInfo = appearedChildPackages.valueAt(i);
packageSender.sendPackageAddedForNewUsers(installedInfo.name, packageSender.sendPackageAddedForNewUsers(installedInfo.name,
true /*sendBootCompleted*/, false /*startReceiver*/, true /*sendBootCompleted*/, false /*startReceiver*/,
UserHandle.getAppId(installedInfo.uid), installedInfo.newUsers, null); UserHandle.getAppId(installedInfo.uid), installedInfo.newUsers, null,
DataLoaderType.NONE);
} }
} }
@@ -25390,7 +25395,8 @@ interface PackageSender {
final IIntentReceiver finishedReceiver, final int[] userIds, int[] instantUserIds, final IIntentReceiver finishedReceiver, final int[] userIds, int[] instantUserIds,
@Nullable SparseArray<int[]> broadcastWhitelist); @Nullable SparseArray<int[]> broadcastWhitelist);
void sendPackageAddedForNewUsers(String packageName, boolean sendBootCompleted, void sendPackageAddedForNewUsers(String packageName, boolean sendBootCompleted,
boolean includeStopped, int appId, int[] userIds, int[] instantUserIds); boolean includeStopped, int appId, int[] userIds, int[] instantUserIds,
int dataLoaderType);
void notifyPackageAdded(String packageName, int uid); void notifyPackageAdded(String packageName, int uid);
void notifyPackageChanged(String packageName, int uid); void notifyPackageChanged(String packageName, int uid);
void notifyPackageRemoved(String packageName, int uid); void notifyPackageRemoved(String packageName, int uid);

View File

@@ -53,7 +53,7 @@ public class PackageManagerServiceTest {
public void sendPackageAddedForNewUsers(String packageName, public void sendPackageAddedForNewUsers(String packageName,
boolean sendBootComplete, boolean includeStopped, int appId, boolean sendBootComplete, boolean includeStopped, int appId,
int[] userIds, int[] instantUserIds) { int[] userIds, int[] instantUserIds, int dataLoaderType) {
} }
@Override @Override