Merge "[Do Not Merge] Revert "Implement a global maximum on number of shortcuts an app can publish"" into rvc-dev
diff --git a/core/java/android/os/WorkSource.java b/core/java/android/os/WorkSource.java
index 6adba63..485d430 100644
--- a/core/java/android/os/WorkSource.java
+++ b/core/java/android/os/WorkSource.java
@@ -129,7 +129,7 @@
         mNames = in.createStringArray();
 
         int numChains = in.readInt();
-        if (numChains > 0) {
+        if (numChains >= 0) {
             mChains = new ArrayList<>(numChains);
             in.readParcelableList(mChains, WorkChain.class.getClassLoader());
         } else {
diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
index 2a07f8e..a1c9970 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -2347,7 +2347,7 @@
         final PackageSetting ps = (PackageSetting)
                 mPackageManagerInt.getPackageSetting(newPackage.getPackageName());
         if (grantSignaturePermission(Manifest.permission.SYSTEM_ALERT_WINDOW, newPackage, ps, saw,
-                ps.getPermissionsState())) {
+                ps.getPermissionsState(), true)) {
             return;
         }
         for (int userId : mUserManagerInt.getUserIds()) {
@@ -3588,6 +3588,13 @@
 
     private boolean grantSignaturePermission(String perm, AndroidPackage pkg,
             PackageSetting pkgSetting, BasePermission bp, PermissionsState origPermissions) {
+        return grantSignaturePermission(perm, pkg, pkgSetting, bp, origPermissions, false);
+    }
+
+
+    private boolean grantSignaturePermission(String perm, AndroidPackage pkg,
+            PackageSetting pkgSetting, BasePermission bp, PermissionsState origPermissions,
+            boolean isApi23Upgrade) {
         boolean oemPermission = bp.isOEM();
         boolean vendorPrivilegedPermission = bp.isVendorPrivileged();
         boolean privilegedPermission = bp.isPrivileged() || bp.isVendorPrivileged();
@@ -3762,7 +3769,7 @@
                 // Any pre-installed system app is allowed to get this permission.
                 allowed = true;
             }
-            if (!allowed && bp.isDevelopment()) {
+            if (!allowed && bp.isDevelopment() && !(bp.isPre23() && isApi23Upgrade)) {
                 // For development permissions, a development permission
                 // is granted only if it was already granted.
                 allowed = origPermissions.hasInstallPermission(perm);