OSDN Git Service

Put package name in extra not data
authorPhilip P. Moltmann <moltmann@google.com>
Tue, 24 Sep 2019 19:33:46 +0000 (12:33 -0700)
committerPhilip P. Moltmann <moltmann@google.com>
Tue, 24 Sep 2019 21:10:38 +0000 (21:10 +0000)
as broadcast receivers filter on data, not on extras. Hence changing
data changes the API.

Fixes: 141452043
Test: Uninstalled updates from system app and saw correct app-ops method
      to be called
      atest CtsHostsideNetworkTests:com.android.cts.net.HostsideRestrictBackgroundNetworkTests#testDataSaverMode_reinstall

Change-Id: Icab1fcea6153d5bbf0bf2af51e71d7fd6b5cb3e5

services/core/java/com/android/server/am/ActivityManagerService.java
services/core/java/com/android/server/pm/PackageManagerService.java

index 6a9511f..078fcef 100644 (file)
@@ -14999,7 +14999,7 @@ public class ActivityManagerService extends IActivityManager.Stub
                                 mBatteryStatsService.removeUid(uid);
                                 if (intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) {
                                     mAppOpsService.resetAllModes(UserHandle.getUserId(uid),
-                                            intent.getData().getSchemeSpecificPart());
+                                            intent.getStringExtra(Intent.EXTRA_PACKAGE_NAME));
                                 } else {
                                     mAppOpsService.uidRemoved(uid);
                                 }
index 8bea916..aae4823 100644 (file)
@@ -18821,8 +18821,14 @@ public class PackageManagerService extends IPackageManager.Stub
                 }
             }
             if (removedAppId >= 0) {
+                // If a system app's updates are uninstalled the UID is not actually removed. Some
+                // services need to know the package name affected.
+                if (extras.getBoolean(Intent.EXTRA_REPLACING, false)) {
+                    extras.putString(Intent.EXTRA_PACKAGE_NAME, removedPackage);
+                }
+
                 packageSender.sendPackageBroadcast(Intent.ACTION_UID_REMOVED,
-                        removedPackage, extras, Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND,
+                        null, extras, Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND,
                     null, null, broadcastUsers, instantUserIds);
             }
         }