Merge "Allow checking if a pkg is exempted from bcast response tracking." into main
This commit is contained in:
committed by
Android (Google) Code Review
commit
09d77832e0
@@ -87,6 +87,8 @@ interface IUsageStatsManager {
|
||||
int userId);
|
||||
@JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.ACCESS_BROADCAST_RESPONSE_STATS)")
|
||||
void clearBroadcastEvents(String callingPackage, int userId);
|
||||
@JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.DUMP)")
|
||||
boolean isPackageExemptedFromBroadcastResponseStats(String packageName, int userId);
|
||||
@JavaPassthrough(annotation="@android.annotation.RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG)")
|
||||
String getAppStandbyConstant(String key);
|
||||
}
|
||||
|
||||
@@ -1528,6 +1528,22 @@ public final class UsageStatsManager {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether the given {@code packageName} is exempted from broadcast response tracking.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
@RequiresPermission(android.Manifest.permission.DUMP)
|
||||
@UserHandleAware
|
||||
public boolean isPackageExemptedFromBroadcastResponseStats(@NonNull String packageName) {
|
||||
try {
|
||||
return mService.isPackageExemptedFromBroadcastResponseStats(packageName,
|
||||
mContext.getUserId());
|
||||
} catch (RemoteException re) {
|
||||
throw re.rethrowFromSystemServer();
|
||||
}
|
||||
}
|
||||
|
||||
/** @hide */
|
||||
@RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG)
|
||||
@Nullable
|
||||
|
||||
@@ -292,6 +292,19 @@ class BroadcastResponseStatsTracker {
|
||||
}
|
||||
}
|
||||
|
||||
boolean isPackageExemptedFromBroadcastResponseStats(@NonNull String packageName,
|
||||
@NonNull UserHandle user) {
|
||||
synchronized (mLock) {
|
||||
if (doesPackageHoldExemptedPermission(packageName, user)) {
|
||||
return true;
|
||||
}
|
||||
if (doesPackageHoldExemptedRole(packageName, user)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
boolean doesPackageHoldExemptedRole(@NonNull String packageName, @NonNull UserHandle user) {
|
||||
final List<String> exemptedRoles = mAppStandby.getBroadcastResponseExemptedRoles();
|
||||
synchronized (mLock) {
|
||||
|
||||
@@ -2866,6 +2866,18 @@ public class UsageStatsService extends SystemService implements
|
||||
mResponseStatsTracker.clearBroadcastEvents(callingUid, userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isPackageExemptedFromBroadcastResponseStats(@NonNull String callingPackage,
|
||||
@UserIdInt int userId) {
|
||||
Objects.requireNonNull(callingPackage);
|
||||
|
||||
getContext().enforceCallingOrSelfPermission(
|
||||
android.Manifest.permission.DUMP,
|
||||
"isPackageExemptedFromBroadcastResponseStats");
|
||||
return mResponseStatsTracker.isPackageExemptedFromBroadcastResponseStats(
|
||||
callingPackage, UserHandle.of(userId));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public String getAppStandbyConstant(@NonNull String key) {
|
||||
|
||||
Reference in New Issue
Block a user