Loading core/java/android/permission/IPermissionManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -98,6 +98,8 @@ interface IPermissionManager { IBinder registerAttributionSource(in AttributionSourceState source); int getNumRegisteredAttributionSources(int uid); boolean isRegisteredAttributionSource(in AttributionSourceState source); int checkPermission(String packageName, String permissionName, String persistentDeviceId, Loading core/java/android/permission/PermissionManager.java +15 −0 Original line number Diff line number Diff line Loading @@ -1674,6 +1674,21 @@ public final class PermissionManager { return false; } /** * Gets the number of currently registered attribution sources for a particular UID. This should * only be used for testing purposes. * @hide */ @RequiresPermission(Manifest.permission.UPDATE_APP_OPS_STATS) public int getNumRegisteredAttributionSourcesForTest(int uid) { try { return mPermissionManager.getNumRegisteredAttributionSources(uid); } catch (RemoteException e) { e.rethrowFromSystemServer(); } return -1; } /** * Revoke the POST_NOTIFICATIONS permission, without killing the app. This method must ONLY BE * USED in CTS or local tests. Loading services/core/java/com/android/server/pm/permission/PermissionManagerService.java +25 −0 Original line number Diff line number Diff line Loading @@ -461,6 +461,11 @@ public class PermissionManagerService extends IPermissionManager.Stub { .isRegisteredAttributionSource(new AttributionSource(source)); } @Override public int getNumRegisteredAttributionSources(int uid) { return mAttributionSourceRegistry.getNumRegisteredAttributionSources(uid); } @Override public List<String> getAutoRevokeExemptionRequestedPackages(int userId) { return getPackagesWithAutoRevokePolicy(AUTO_REVOKE_DISCOURAGED, userId); Loading Loading @@ -938,6 +943,26 @@ public class PermissionManagerService extends IPermissionManager.Stub { } } public int getNumRegisteredAttributionSources(int uid) { mContext.enforceCallingOrSelfPermission(UPDATE_APP_OPS_STATS, "getting the number of registered AttributionSources requires " + "UPDATE_APP_OPS_STATS"); // Influence the system to perform a garbage collection, so the provided number is as // accurate as possible System.gc(); System.gc(); synchronized (mLock) { int[] numForUid = { 0 }; mAttributions.forEach((key, value) -> { if (value.getUid() == uid) { numForUid[0]++; } }); return numForUid[0]; } } private int resolveUid(int uid) { final VoiceInteractionManagerInternal vimi = LocalServices .getService(VoiceInteractionManagerInternal.class); Loading Loading
core/java/android/permission/IPermissionManager.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -98,6 +98,8 @@ interface IPermissionManager { IBinder registerAttributionSource(in AttributionSourceState source); int getNumRegisteredAttributionSources(int uid); boolean isRegisteredAttributionSource(in AttributionSourceState source); int checkPermission(String packageName, String permissionName, String persistentDeviceId, Loading
core/java/android/permission/PermissionManager.java +15 −0 Original line number Diff line number Diff line Loading @@ -1674,6 +1674,21 @@ public final class PermissionManager { return false; } /** * Gets the number of currently registered attribution sources for a particular UID. This should * only be used for testing purposes. * @hide */ @RequiresPermission(Manifest.permission.UPDATE_APP_OPS_STATS) public int getNumRegisteredAttributionSourcesForTest(int uid) { try { return mPermissionManager.getNumRegisteredAttributionSources(uid); } catch (RemoteException e) { e.rethrowFromSystemServer(); } return -1; } /** * Revoke the POST_NOTIFICATIONS permission, without killing the app. This method must ONLY BE * USED in CTS or local tests. Loading
services/core/java/com/android/server/pm/permission/PermissionManagerService.java +25 −0 Original line number Diff line number Diff line Loading @@ -461,6 +461,11 @@ public class PermissionManagerService extends IPermissionManager.Stub { .isRegisteredAttributionSource(new AttributionSource(source)); } @Override public int getNumRegisteredAttributionSources(int uid) { return mAttributionSourceRegistry.getNumRegisteredAttributionSources(uid); } @Override public List<String> getAutoRevokeExemptionRequestedPackages(int userId) { return getPackagesWithAutoRevokePolicy(AUTO_REVOKE_DISCOURAGED, userId); Loading Loading @@ -938,6 +943,26 @@ public class PermissionManagerService extends IPermissionManager.Stub { } } public int getNumRegisteredAttributionSources(int uid) { mContext.enforceCallingOrSelfPermission(UPDATE_APP_OPS_STATS, "getting the number of registered AttributionSources requires " + "UPDATE_APP_OPS_STATS"); // Influence the system to perform a garbage collection, so the provided number is as // accurate as possible System.gc(); System.gc(); synchronized (mLock) { int[] numForUid = { 0 }; mAttributions.forEach((key, value) -> { if (value.getUid() == uid) { numForUid[0]++; } }); return numForUid[0]; } } private int resolveUid(int uid) { final VoiceInteractionManagerInternal vimi = LocalServices .getService(VoiceInteractionManagerInternal.class); Loading