Merge "Disallow the app to enable extension modes when binding VideoCapture" into androidx-main
diff --git a/camera/camera-extensions/build.gradle b/camera/camera-extensions/build.gradle
index 5833337..d16ef32 100644
--- a/camera/camera-extensions/build.gradle
+++ b/camera/camera-extensions/build.gradle
@@ -56,6 +56,7 @@
androidTestImplementation(libs.multidex)
androidTestImplementation(project(":camera:camera-lifecycle"))
androidTestImplementation(project(":camera:camera-testing"))
+ androidTestImplementation(project(":camera:camera-video"))
androidTestImplementation(project(":internal-testutils-truth"))
androidTestImplementation(project(":camera:camera-testlib-extensions"))
// To use the testlib to have the implementation of the extensions-stub interface.
diff --git a/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ExtensionsManagerTest.kt b/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ExtensionsManagerTest.kt
index 81efa20..e883ed5 100644
--- a/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ExtensionsManagerTest.kt
+++ b/camera/camera-extensions/src/androidTest/java/androidx/camera/extensions/ExtensionsManagerTest.kt
@@ -21,6 +21,7 @@
import androidx.camera.core.Camera
import androidx.camera.core.CameraInfo
import androidx.camera.core.CameraSelector
+import androidx.camera.core.VideoCapture
import androidx.camera.core.impl.CameraInfoInternal
import androidx.camera.extensions.internal.ExtensionVersion
import androidx.camera.extensions.internal.Version
@@ -430,6 +431,23 @@
}
}
+ @Test
+ fun throwIllegalArgumentException_whenBindingVideoCapture(): Unit = runBlocking {
+ val extensionCameraSelector = checkExtensionAvailabilityAndInit()
+
+ withContext(Dispatchers.Main) {
+ val fakeLifecycleOwner = FakeLifecycleOwner()
+
+ assertThrows<IllegalArgumentException> {
+ cameraProvider.bindToLifecycle(
+ fakeLifecycleOwner,
+ extensionCameraSelector,
+ VideoCapture.Builder().build()
+ )
+ }
+ }
+ }
+
private fun checkExtensionAvailabilityAndInit(): CameraSelector {
extensionsManager = ExtensionsManager.getInstanceAsync(
context,
diff --git a/camera/camera-extensions/src/main/java/androidx/camera/extensions/internal/ExtensionsUseCaseConfigFactory.java b/camera/camera-extensions/src/main/java/androidx/camera/extensions/internal/ExtensionsUseCaseConfigFactory.java
index b792fe7..fc383e5 100644
--- a/camera/camera-extensions/src/main/java/androidx/camera/extensions/internal/ExtensionsUseCaseConfigFactory.java
+++ b/camera/camera-extensions/src/main/java/androidx/camera/extensions/internal/ExtensionsUseCaseConfigFactory.java
@@ -62,6 +62,9 @@
mutableOptionsBundle =
MutableOptionsBundle.from(mPreviewConfigProvider.getConfig());
break;
+ case VIDEO_CAPTURE:
+ throw new IllegalArgumentException("CameraX Extensions doesn't support "
+ + "VideoCapture!");
default:
return null;
}