Revert "DO NOT MERGE: Decode the input of both setStream and setResource calls first"

This reverts commit 51b874f628.

Reason for revert: will deliver a better fix for that, ag/16580245.

Change-Id: Icf2d0a656512e6b6bb46dd7ffef3e3cd71ac1a37
This commit is contained in:
Wu Ahan
2022-01-13 14:39:56 +00:00
parent 51b874f628
commit 4c5f09cab3

View File

@@ -1394,27 +1394,18 @@ public class WallpaperManager {
mContext.getUserId());
if (fd != null) {
FileOutputStream fos = null;
final Bitmap tmp = BitmapFactory.decodeStream(resources.openRawResource(resid));
boolean ok = false;
try {
// If the stream can't be decoded, treat it as an invalid input.
if (tmp != null) {
fos = new ParcelFileDescriptor.AutoCloseOutputStream(fd);
tmp.compress(Bitmap.CompressFormat.PNG, 100, fos);
// The 'close()' is the trigger for any server-side image manipulation,
// so we must do that before waiting for completion.
fos.close();
completion.waitForCompletion();
} else {
throw new IllegalArgumentException(
"Resource 0x" + Integer.toHexString(resid) + " is invalid");
}
fos = new ParcelFileDescriptor.AutoCloseOutputStream(fd);
copyStreamToWallpaperFile(resources.openRawResource(resid), fos);
// The 'close()' is the trigger for any server-side image manipulation,
// so we must do that before waiting for completion.
fos.close();
completion.waitForCompletion();
} finally {
// Might be redundant but completion shouldn't wait unless the write
// succeeded; this is a fallback if it threw past the close+wait.
IoUtils.closeQuietly(fos);
if (tmp != null) {
tmp.recycle();
}
}
}
} catch (RemoteException e) {
@@ -1656,22 +1647,13 @@ public class WallpaperManager {
result, which, completion, mContext.getUserId());
if (fd != null) {
FileOutputStream fos = null;
final Bitmap tmp = BitmapFactory.decodeStream(bitmapData);
try {
// If the stream can't be decoded, treat it as an invalid input.
if (tmp != null) {
fos = new ParcelFileDescriptor.AutoCloseOutputStream(fd);
tmp.compress(Bitmap.CompressFormat.PNG, 100, fos);
fos.close();
completion.waitForCompletion();
} else {
throw new IllegalArgumentException("InputStream is invalid");
}
fos = new ParcelFileDescriptor.AutoCloseOutputStream(fd);
copyStreamToWallpaperFile(bitmapData, fos);
fos.close();
completion.waitForCompletion();
} finally {
IoUtils.closeQuietly(fos);
if (tmp != null) {
tmp.recycle();
}
}
}
} catch (RemoteException e) {