Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b6509bdc authored by Wu Ahan's avatar Wu Ahan
Browse files

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

This reverts commit 4d91b5aa.

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

Change-Id: I8691f47251157aae83d326eb808dd1c06b13a420
parent 4d91b5aa
Loading
Loading
Loading
Loading
+11 −29
Original line number Diff line number Diff line
@@ -1180,27 +1180,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);
                    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();
                    } else {
                        throw new IllegalArgumentException(
                                "Resource 0x" + Integer.toHexString(resid) + " is invalid");
                    }
                } 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) {
@@ -1442,22 +1433,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);
                    copyStreamToWallpaperFile(bitmapData, fos);
                    fos.close();
                    completion.waitForCompletion();
                    } else {
                        throw new IllegalArgumentException("InputStream is invalid");
                    }
                } finally {
                    IoUtils.closeQuietly(fos);
                    if (tmp != null) {
                        tmp.recycle();
                    }
                }
            }
        } catch (RemoteException e) {