Loading core/java/android/util/IntArray.java +11 −0 Original line number Diff line number Diff line Loading @@ -143,6 +143,17 @@ public class IntArray implements Cloneable { mSize += count; } /** * Adds the values in the specified array to this array. */ public void addAll(int[] values) { final int count = values.length; ensureCapacity(count); System.arraycopy(values, 0, mValues, mSize, count); mSize += count; } /** * Ensures capacity to append at least <code>count</code> values. */ Loading services/core/java/com/android/server/pm/PackageManagerService.java +7 −10 Original line number Diff line number Diff line Loading @@ -1849,7 +1849,6 @@ public class PackageManagerService extends IPackageManager.Stub Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT); synchronized (mLock) { removeMessages(WRITE_PACKAGE_LIST); mPermissionManager.writeStateToPackageSettingsTEMP(); mSettings.writePackageListLPr(msg.arg1); } Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); Loading Loading @@ -2686,7 +2685,8 @@ public class PackageManagerService extends IPackageManager.Stub (i, pm) -> new Settings(Environment.getDataDirectory(), i.getPermissionManagerServiceInternal().getPermissionSettings(), RuntimePermissionsPersistence.createInstance(), lock), RuntimePermissionsPersistence.createInstance(), i.getPermissionManagerServiceInternal(), lock), new Injector.LocalServicesProducer<>(ActivityTaskManagerInternal.class), new Injector.LocalServicesProducer<>(ActivityManagerInternal.class), new Injector.LocalServicesProducer<>(DeviceIdleInternal.class), Loading Loading @@ -4486,8 +4486,8 @@ public class PackageManagerService extends IPackageManager.Stub AndroidPackage p = ps.pkg; if (p != null) { // Compute GIDs only if requested final int[] gids = (flags & PackageManager.GET_GIDS) == 0 ? EMPTY_INT_ARRAY : mPermissionManager.getPackageGids(ps.name, userId); final int[] gids = (flags & PackageManager.GET_GIDS) == 0 ? EMPTY_INT_ARRAY : mPermissionManager.getGidsForUid(UserHandle.getUid(userId, ps.appId)); // Compute granted permissions only if package has requested permissions final Set<String> permissions = ArrayUtils.isEmpty(p.getRequestedPermissions()) ? Collections.emptySet() Loading Loading @@ -4962,13 +4962,13 @@ public class PackageManagerService extends IPackageManager.Stub } // TODO: Shouldn't this be checking for package installed state for userId and // return null? return mPermissionManager.getPackageGids(packageName, userId); return mPermissionManager.getGidsForUid(UserHandle.getUid(userId, ps.appId)); } if ((flags & MATCH_KNOWN_PACKAGES) != 0) { final PackageSetting ps = mSettings.mPackages.get(packageName); if (ps != null && ps.isMatch(flags) && !shouldFilterApplicationLocked(ps, callingUid, userId)) { return mPermissionManager.getPackageGids(packageName, userId); return mPermissionManager.getGidsForUid(UserHandle.getUid(userId, ps.appId)); } } } Loading Loading @@ -18983,7 +18983,7 @@ public class PackageManagerService extends IPackageManager.Stub } if ((deletedPs.sharedUser == null || deletedPs.sharedUser.packages.size() == 0) && !isUpdatedSystemApp(deletedPs)) { mPermissionManager.removePermissionsStateTEMP(removedAppId); mPermissionManager.removeAppIdStateTEMP(removedAppId); } mPermissionManager.updatePermissions(deletedPs.name, null); if (deletedPs.sharedUser != null) { Loading Loading @@ -21854,8 +21854,6 @@ public class PackageManagerService extends IPackageManager.Stub protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (!DumpUtils.checkDumpAndUsageStatsPermission(mContext, TAG, pw)) return; mPermissionManager.writeStateToPackageSettingsTEMP(); DumpState dumpState = new DumpState(); boolean fullPreferred = false; boolean checkin = false; Loading Loading @@ -23734,7 +23732,6 @@ public class PackageManagerService extends IPackageManager.Stub mDirtyUsers.remove(userId); mUserNeedsBadging.delete(userId); mPermissionManager.onUserRemoved(userId); mPermissionManager.writeStateToPackageSettingsTEMP(); mSettings.removeUserLPw(userId); mPendingBroadcasts.remove(userId); mInstantAppRegistry.onUserRemovedLPw(userId); services/core/java/com/android/server/pm/PackageSetting.java +2 −2 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.VisibleForTesting; import com.android.server.pm.parsing.pkg.AndroidPackage; import com.android.server.pm.permission.PermissionsState; import com.android.server.pm.permission.AppIdPermissionState; import com.android.server.pm.pkg.PackageStateUnserialized; import java.io.File; Loading Loading @@ -215,7 +215,7 @@ public class PackageSetting extends PackageSettingBase { } @Override public PermissionsState getPermissionsState() { public AppIdPermissionState getPermissionsState() { return (sharedUser != null) ? sharedUser.getPermissionsState() : super.getPermissionsState(); Loading services/core/java/com/android/server/pm/SettingBase.java +5 −5 Original line number Diff line number Diff line Loading @@ -19,23 +19,23 @@ package com.android.server.pm; import android.content.pm.ApplicationInfo; import com.android.internal.annotations.VisibleForTesting; import com.android.server.pm.permission.PermissionsState; import com.android.server.pm.permission.AppIdPermissionState; @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) public abstract class SettingBase { int pkgFlags; int pkgPrivateFlags; protected final PermissionsState mPermissionsState; protected final AppIdPermissionState mPermissionsState; SettingBase(int pkgFlags, int pkgPrivateFlags) { setFlags(pkgFlags); setPrivateFlags(pkgPrivateFlags); mPermissionsState = new PermissionsState(); mPermissionsState = new AppIdPermissionState(); } SettingBase(SettingBase orig) { mPermissionsState = new PermissionsState(); mPermissionsState = new AppIdPermissionState(); doCopy(orig); } Loading @@ -49,7 +49,7 @@ public abstract class SettingBase { mPermissionsState.copyFrom(orig.mPermissionsState); } public PermissionsState getPermissionsState() { public AppIdPermissionState getPermissionsState() { return mPermissionsState; } Loading services/core/java/com/android/server/pm/Settings.java +103 −127 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
core/java/android/util/IntArray.java +11 −0 Original line number Diff line number Diff line Loading @@ -143,6 +143,17 @@ public class IntArray implements Cloneable { mSize += count; } /** * Adds the values in the specified array to this array. */ public void addAll(int[] values) { final int count = values.length; ensureCapacity(count); System.arraycopy(values, 0, mValues, mSize, count); mSize += count; } /** * Ensures capacity to append at least <code>count</code> values. */ Loading
services/core/java/com/android/server/pm/PackageManagerService.java +7 −10 Original line number Diff line number Diff line Loading @@ -1849,7 +1849,6 @@ public class PackageManagerService extends IPackageManager.Stub Process.setThreadPriority(Process.THREAD_PRIORITY_DEFAULT); synchronized (mLock) { removeMessages(WRITE_PACKAGE_LIST); mPermissionManager.writeStateToPackageSettingsTEMP(); mSettings.writePackageListLPr(msg.arg1); } Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); Loading Loading @@ -2686,7 +2685,8 @@ public class PackageManagerService extends IPackageManager.Stub (i, pm) -> new Settings(Environment.getDataDirectory(), i.getPermissionManagerServiceInternal().getPermissionSettings(), RuntimePermissionsPersistence.createInstance(), lock), RuntimePermissionsPersistence.createInstance(), i.getPermissionManagerServiceInternal(), lock), new Injector.LocalServicesProducer<>(ActivityTaskManagerInternal.class), new Injector.LocalServicesProducer<>(ActivityManagerInternal.class), new Injector.LocalServicesProducer<>(DeviceIdleInternal.class), Loading Loading @@ -4486,8 +4486,8 @@ public class PackageManagerService extends IPackageManager.Stub AndroidPackage p = ps.pkg; if (p != null) { // Compute GIDs only if requested final int[] gids = (flags & PackageManager.GET_GIDS) == 0 ? EMPTY_INT_ARRAY : mPermissionManager.getPackageGids(ps.name, userId); final int[] gids = (flags & PackageManager.GET_GIDS) == 0 ? EMPTY_INT_ARRAY : mPermissionManager.getGidsForUid(UserHandle.getUid(userId, ps.appId)); // Compute granted permissions only if package has requested permissions final Set<String> permissions = ArrayUtils.isEmpty(p.getRequestedPermissions()) ? Collections.emptySet() Loading Loading @@ -4962,13 +4962,13 @@ public class PackageManagerService extends IPackageManager.Stub } // TODO: Shouldn't this be checking for package installed state for userId and // return null? return mPermissionManager.getPackageGids(packageName, userId); return mPermissionManager.getGidsForUid(UserHandle.getUid(userId, ps.appId)); } if ((flags & MATCH_KNOWN_PACKAGES) != 0) { final PackageSetting ps = mSettings.mPackages.get(packageName); if (ps != null && ps.isMatch(flags) && !shouldFilterApplicationLocked(ps, callingUid, userId)) { return mPermissionManager.getPackageGids(packageName, userId); return mPermissionManager.getGidsForUid(UserHandle.getUid(userId, ps.appId)); } } } Loading Loading @@ -18983,7 +18983,7 @@ public class PackageManagerService extends IPackageManager.Stub } if ((deletedPs.sharedUser == null || deletedPs.sharedUser.packages.size() == 0) && !isUpdatedSystemApp(deletedPs)) { mPermissionManager.removePermissionsStateTEMP(removedAppId); mPermissionManager.removeAppIdStateTEMP(removedAppId); } mPermissionManager.updatePermissions(deletedPs.name, null); if (deletedPs.sharedUser != null) { Loading Loading @@ -21854,8 +21854,6 @@ public class PackageManagerService extends IPackageManager.Stub protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) { if (!DumpUtils.checkDumpAndUsageStatsPermission(mContext, TAG, pw)) return; mPermissionManager.writeStateToPackageSettingsTEMP(); DumpState dumpState = new DumpState(); boolean fullPreferred = false; boolean checkin = false; Loading Loading @@ -23734,7 +23732,6 @@ public class PackageManagerService extends IPackageManager.Stub mDirtyUsers.remove(userId); mUserNeedsBadging.delete(userId); mPermissionManager.onUserRemoved(userId); mPermissionManager.writeStateToPackageSettingsTEMP(); mSettings.removeUserLPw(userId); mPendingBroadcasts.remove(userId); mInstantAppRegistry.onUserRemovedLPw(userId);
services/core/java/com/android/server/pm/PackageSetting.java +2 −2 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.VisibleForTesting; import com.android.server.pm.parsing.pkg.AndroidPackage; import com.android.server.pm.permission.PermissionsState; import com.android.server.pm.permission.AppIdPermissionState; import com.android.server.pm.pkg.PackageStateUnserialized; import java.io.File; Loading Loading @@ -215,7 +215,7 @@ public class PackageSetting extends PackageSettingBase { } @Override public PermissionsState getPermissionsState() { public AppIdPermissionState getPermissionsState() { return (sharedUser != null) ? sharedUser.getPermissionsState() : super.getPermissionsState(); Loading
services/core/java/com/android/server/pm/SettingBase.java +5 −5 Original line number Diff line number Diff line Loading @@ -19,23 +19,23 @@ package com.android.server.pm; import android.content.pm.ApplicationInfo; import com.android.internal.annotations.VisibleForTesting; import com.android.server.pm.permission.PermissionsState; import com.android.server.pm.permission.AppIdPermissionState; @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE) public abstract class SettingBase { int pkgFlags; int pkgPrivateFlags; protected final PermissionsState mPermissionsState; protected final AppIdPermissionState mPermissionsState; SettingBase(int pkgFlags, int pkgPrivateFlags) { setFlags(pkgFlags); setPrivateFlags(pkgPrivateFlags); mPermissionsState = new PermissionsState(); mPermissionsState = new AppIdPermissionState(); } SettingBase(SettingBase orig) { mPermissionsState = new PermissionsState(); mPermissionsState = new AppIdPermissionState(); doCopy(orig); } Loading @@ -49,7 +49,7 @@ public abstract class SettingBase { mPermissionsState.copyFrom(orig.mPermissionsState); } public PermissionsState getPermissionsState() { public AppIdPermissionState getPermissionsState() { return mPermissionsState; } Loading
services/core/java/com/android/server/pm/Settings.java +103 −127 File changed.Preview size limit exceeded, changes collapsed. Show changes