diff --git a/core/camera/postprocess/src/main/java/com/google/jetpackcamera/core/camera/postprocess/ImagePostProcessor.kt b/core/camera/postprocess/src/main/java/com/google/jetpackcamera/core/camera/postprocess/ImagePostProcessor.kt index a65ff6063..f307f4b02 100644 --- a/core/camera/postprocess/src/main/java/com/google/jetpackcamera/core/camera/postprocess/ImagePostProcessor.kt +++ b/core/camera/postprocess/src/main/java/com/google/jetpackcamera/core/camera/postprocess/ImagePostProcessor.kt @@ -15,6 +15,7 @@ */ package com.google.jetpackcamera.core.camera.postprocess +import android.content.ContentResolver import android.net.Uri /** @@ -29,6 +30,7 @@ interface ImagePostProcessor { * performing the post-processing. * * @param uri The [Uri] of the saved image that needs to be processed. + * @param contentResolver The [ContentResolver] used for post processing. */ - suspend fun postProcessImage(uri: Uri) + suspend fun postProcessImage(uri: Uri, contentResolver: ContentResolver) } diff --git a/core/camera/src/androidTest/java/com/google/jetpackcamera/core/camera/CameraXCameraSystemTest.kt b/core/camera/src/androidTest/java/com/google/jetpackcamera/core/camera/CameraXCameraSystemTest.kt index a4f34d8a4..81ad60fc1 100644 --- a/core/camera/src/androidTest/java/com/google/jetpackcamera/core/camera/CameraXCameraSystemTest.kt +++ b/core/camera/src/androidTest/java/com/google/jetpackcamera/core/camera/CameraXCameraSystemTest.kt @@ -140,6 +140,7 @@ class CameraXCameraSystemTest { // Assert. assertThat(imagePostProcessor.postProcessImageCalled).isTrue() + assertThat(imagePostProcessor.savedContentResolver).isEqualTo(contentResolver) } @Test @@ -160,6 +161,7 @@ class CameraXCameraSystemTest { // Assert. assertThat(imagePostProcessor.postProcessImageCalled).isFalse() + assertThat(imagePostProcessor.savedContentResolver).isNull() } @Test @@ -177,6 +179,7 @@ class CameraXCameraSystemTest { } catch (e: RuntimeException) { // Assert. assertThat(imagePostProcessor.postProcessImageCalled).isTrue() + assertThat(imagePostProcessor.savedContentResolver).isEqualTo(contentResolver) val savedUri = imagePostProcessor.savedUri assertThat(savedUri).isNotNull() @@ -405,9 +408,11 @@ object FakeImagePostProcessorFeatureKey : ImagePostProcessorFeatureKey class FakeImagePostProcessor(val shouldError: Boolean = false) : ImagePostProcessor { var postProcessImageCalled = false var savedUri: Uri? = null - override suspend fun postProcessImage(uri: Uri) { + var savedContentResolver: ContentResolver? = null + override suspend fun postProcessImage(uri: Uri, contentResolver: ContentResolver) { postProcessImageCalled = true savedUri = uri + savedContentResolver = contentResolver if (shouldError) throw RuntimeException("Post process failed") } } diff --git a/core/camera/src/main/java/com/google/jetpackcamera/core/camera/CameraXCameraSystem.kt b/core/camera/src/main/java/com/google/jetpackcamera/core/camera/CameraXCameraSystem.kt index 36f262c6d..4bc00bc72 100644 --- a/core/camera/src/main/java/com/google/jetpackcamera/core/camera/CameraXCameraSystem.kt +++ b/core/camera/src/main/java/com/google/jetpackcamera/core/camera/CameraXCameraSystem.kt @@ -620,7 +620,7 @@ constructor( }.also { outputFileResults -> outputFileResults.savedUri?.let { for ((key, value) in imagePostProcessors) { - value.get().postProcessImage(it) + value.get().postProcessImage(it, contentResolver) Log.d(TAG, "Post processed image with $key") } Log.d(TAG, "Saved image to $it")