Merge "Add ADB shell command to set dim amount using an arbitrary UID"

This commit is contained in:
Vania Desmonda
2022-02-07 09:14:45 +00:00
committed by Android (Google) Code Review
2 changed files with 32 additions and 1 deletions

View File

@@ -2591,8 +2591,20 @@ public class WallpaperManagerService extends IWallpaperManager.Stub
*/
@Override
public void setWallpaperDimAmount(float dimAmount) throws RemoteException {
setWallpaperDimAmountForUid(Binder.getCallingUid(), dimAmount);
}
/**
* Sets wallpaper dim amount for a given UID. This only applies to FLAG_SYSTEM wallpaper as the
* lock screen does not have a wallpaper component, so we use mWallpaperMap.
*
* @param uid Caller UID that wants to set the wallpaper dim amount
* @param dimAmount Dim amount where 0f reverts any dimming applied by the caller (fully bright)
* and 1f is fully black
* @throws RemoteException
*/
public void setWallpaperDimAmountForUid(int uid, float dimAmount) {
checkPermission(android.Manifest.permission.SET_WALLPAPER_DIM_AMOUNT);
int uid = Binder.getCallingUid();
final long ident = Binder.clearCallingIdentity();
try {
synchronized (mLock) {

View File

@@ -43,6 +43,8 @@ public class WallpaperManagerShellCommand extends ShellCommand {
switch(cmd) {
case "set-dim-amount":
return setWallpaperDimAmount();
case "dim-with-uid":
return setDimmingWithUid();
case "get-dim-amount":
return getWallpaperDimAmount();
case "-h":
@@ -64,6 +66,10 @@ public class WallpaperManagerShellCommand extends ShellCommand {
pw.println(" set-dim-amount DIMMING");
pw.println(" Sets the current dimming value to DIMMING (a number between 0 and 1).");
pw.println();
pw.println(" dim-with-uid UID DIMMING");
pw.println(" Sets the wallpaper dim amount to DIMMING as if an app with uid, UID, "
+ "called it.");
pw.println();
pw.println(" get-dim-amount");
pw.println(" Get the current wallpaper dim amount.");
}
@@ -92,4 +98,17 @@ public class WallpaperManagerShellCommand extends ShellCommand {
getOutPrintWriter().println("The current wallpaper dim amount is: " + dimAmount);
return 0;
}
/**
* Sets the wallpaper dim amount for an arbitrary UID to simulate multiple applications setting
* a dim amount on the wallpaper.
*/
private int setDimmingWithUid() {
int mockUid = Integer.parseInt(getNextArgRequired());
float mockDimAmount = Float.parseFloat(getNextArgRequired());
mService.setWallpaperDimAmountForUid(mockUid, mockDimAmount);
getOutPrintWriter().println("Dimming the wallpaper for UID: " + mockUid + " to: "
+ mockDimAmount);
return 0;
}
}