summaryrefslogtreecommitdiff
path: root/java/com/android/dialer/callcomposer/camera
diff options
context:
space:
mode:
authorzachh <zachh@google.com>2017-07-20 10:38:56 -0700
committerEric Erfanian <erfanian@google.com>2017-07-25 16:43:39 +0000
commitce2a8c9c6b423b802a509a4966bcb03a8d0364eb (patch)
tree211e7c40ae533ecaefa55ccc30ff0181d94d5160 /java/com/android/dialer/callcomposer/camera
parent634e2ba297998fb44d5074e6c369eb0f840424d5 (diff)
Converted a few straggling instances of FallibleAsyncTask to DialerExecutors.
This is an effort to eventually delete FallibleAsyncTask, since people still occasionally use it by accident. There are still some instances of FallibleAsyncTask in p13n code which will be cleaned up in a later CL. Test: existing PiperOrigin-RevId: 162633637 Change-Id: I79b57dc6284952145f62f556799d15a31888bdea
Diffstat (limited to 'java/com/android/dialer/callcomposer/camera')
-rw-r--r--java/com/android/dialer/callcomposer/camera/CameraManager.java22
-rw-r--r--java/com/android/dialer/callcomposer/camera/ImagePersistWorker.java (renamed from java/com/android/dialer/callcomposer/camera/ImagePersistTask.java)61
2 files changed, 58 insertions, 25 deletions
diff --git a/java/com/android/dialer/callcomposer/camera/CameraManager.java b/java/com/android/dialer/callcomposer/camera/CameraManager.java
index 783b57ec3..f79f6548c 100644
--- a/java/com/android/dialer/callcomposer/camera/CameraManager.java
+++ b/java/com/android/dialer/callcomposer/camera/CameraManager.java
@@ -35,6 +35,7 @@ import com.android.dialer.callcomposer.camera.camerafocus.FocusOverlayManager;
import com.android.dialer.callcomposer.camera.camerafocus.RenderOverlay;
import com.android.dialer.common.Assert;
import com.android.dialer.common.LogUtil;
+import com.android.dialer.common.concurrent.DialerExecutors;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
@@ -457,9 +458,9 @@ public class CameraManager implements FocusOverlayManager.Listener {
int height;
if (mRotation == 90 || mRotation == 270) {
// Is rotated, so swapping dimensions is desired
- //noinspection SuspiciousNameCombination
+ // noinspection SuspiciousNameCombination
width = size.height;
- //noinspection SuspiciousNameCombination
+ // noinspection SuspiciousNameCombination
height = size.width;
} else {
width = size.width;
@@ -467,9 +468,20 @@ public class CameraManager implements FocusOverlayManager.Listener {
}
LogUtil.i(
"CameraManager.onPictureTaken", "taken picture size: " + bytes.length + " bytes");
- new ImagePersistTask(
- width, height, heightPercent, bytes, mCameraPreview.getContext(), callback)
- .execute();
+ DialerExecutors.createNonUiTaskBuilder(
+ new ImagePersistWorker(
+ width, height, heightPercent, bytes, mCameraPreview.getContext()))
+ .onSuccess(
+ (result) -> {
+ callback.onMediaReady(
+ result.getUri(), "image/jpeg", result.getWidth(), result.getHeight());
+ })
+ .onFailure(
+ (throwable) -> {
+ callback.onMediaFailed(new Exception("Persisting image failed", throwable));
+ })
+ .build()
+ .executeSerial(null);
}
};
diff --git a/java/com/android/dialer/callcomposer/camera/ImagePersistTask.java b/java/com/android/dialer/callcomposer/camera/ImagePersistWorker.java
index 8620701fe..26b0bde00 100644
--- a/java/com/android/dialer/callcomposer/camera/ImagePersistTask.java
+++ b/java/com/android/dialer/callcomposer/camera/ImagePersistWorker.java
@@ -22,13 +22,16 @@ import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
import android.os.Build.VERSION_CODES;
+import android.support.annotation.NonNull;
import android.support.v4.content.FileProvider;
+import com.android.dialer.callcomposer.camera.ImagePersistWorker.Result;
import com.android.dialer.callcomposer.camera.exif.ExifInterface;
import com.android.dialer.callcomposer.util.BitmapResizer;
import com.android.dialer.common.Assert;
-import com.android.dialer.common.concurrent.FallibleAsyncTask;
+import com.android.dialer.common.concurrent.DialerExecutor.Worker;
import com.android.dialer.constants.Constants;
import com.android.dialer.util.DialerUtils;
+import com.google.auto.value.AutoValue;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -36,52 +39,70 @@ import java.io.OutputStream;
/** Persisting image routine. */
@TargetApi(VERSION_CODES.M)
-public class ImagePersistTask extends FallibleAsyncTask<Void, Void, Uri> {
+public class ImagePersistWorker implements Worker<Void, Result> {
private int mWidth;
private int mHeight;
private final float mHeightPercent;
private final byte[] mBytes;
private final Context mContext;
- private final CameraManager.MediaCallback mCallback;
- ImagePersistTask(
+ @AutoValue
+ abstract static class Result {
+
+ public static Builder builder() {
+ return new AutoValue_ImagePersistWorker_Result.Builder();
+ }
+
+ @NonNull
+ abstract Uri getUri();
+
+ abstract int getWidth();
+
+ abstract int getHeight();
+
+ @AutoValue.Builder
+ abstract static class Builder {
+ abstract Builder setUri(@NonNull Uri uri);
+
+ abstract Builder setWidth(int width);
+
+ abstract Builder setHeight(int height);
+
+ abstract Result build();
+ }
+ }
+
+ ImagePersistWorker(
final int width,
final int height,
final float heightPercent,
final byte[] bytes,
- final Context context,
- final CameraManager.MediaCallback callback) {
+ final Context context) {
Assert.checkArgument(heightPercent >= 0 && heightPercent <= 1);
Assert.isNotNull(bytes);
Assert.isNotNull(context);
- Assert.isNotNull(callback);
mWidth = width;
mHeight = height;
mHeightPercent = heightPercent;
mBytes = bytes;
mContext = context;
- mCallback = callback;
}
@Override
- protected Uri doInBackgroundFallible(final Void... params) throws Exception {
+ public Result doInBackground(Void unused) throws Exception {
File outputFile = DialerUtils.createShareableFile(mContext);
try (OutputStream outputStream = new FileOutputStream(outputFile)) {
writeClippedBitmap(outputStream);
}
- return FileProvider.getUriForFile(
- mContext, Constants.get().getFileProviderAuthority(), outputFile);
- }
-
- @Override
- protected void onPostExecute(FallibleTaskResult<Uri> result) {
- if (result.isFailure()) {
- mCallback.onMediaFailed(new Exception("Persisting image failed", result.getThrowable()));
- } else {
- mCallback.onMediaReady(result.getResult(), "image/jpeg", mWidth, mHeight);
- }
+ return Result.builder()
+ .setUri(
+ FileProvider.getUriForFile(
+ mContext, Constants.get().getFileProviderAuthority(), outputFile))
+ .setWidth(mWidth)
+ .setHeight(mHeight)
+ .build();
}
private void writeClippedBitmap(OutputStream outputStream) throws IOException {