Merge "Enable -Xjvm-default=all for camera-camera2-pipe" into androidx-main
diff --git a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
index 2abce3c..cdbd64e 100644
--- a/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
+++ b/buildSrc/private/src/main/kotlin/androidx/build/AndroidXImplPlugin.kt
@@ -530,14 +530,7 @@
project.tasks.withType(KotlinCompile::class.java).configureEach { task ->
val kotlinCompilerArgs =
project.provider {
- val args =
- mutableListOf(
- "-Xskip-metadata-version-check",
- )
- // TODO (b/259578592): enable -Xjvm-default=all for camera-camera2-pipe projects
- if (!project.name.contains("camera-camera2-pipe")) {
- args += "-Xjvm-default=all"
- }
+ val args = mutableListOf("-Xskip-metadata-version-check", "-Xjvm-default=all")
if (androidXExtension.type.targetsKotlinConsumersOnly) {
// The Kotlin Compiler adds intrinsic assertions which are only relevant
// when the code is consumed by Java users. Therefore we can turn this off
diff --git a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/compat/Camera2CameraControlCompat.kt b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/compat/Camera2CameraControlCompat.kt
index cc4813e..bf98070 100644
--- a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/compat/Camera2CameraControlCompat.kt
+++ b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/compat/Camera2CameraControlCompat.kt
@@ -40,6 +40,7 @@
private const val TAG_KEY = "Camera2CameraControl.tag"
+@JvmDefaultWithCompatibility
@ExperimentalCamera2Interop
public interface Camera2CameraControlCompat : Request.Listener {
public fun addRequestOption(bundle: CaptureRequestOptions)
diff --git a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/compat/quirk/CaptureIntentPreviewQuirk.kt b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/compat/quirk/CaptureIntentPreviewQuirk.kt
index 4ebe347..a8cf85c 100644
--- a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/compat/quirk/CaptureIntentPreviewQuirk.kt
+++ b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/compat/quirk/CaptureIntentPreviewQuirk.kt
@@ -26,6 +26,7 @@
* [CaptureRequest.CONTROL_CAPTURE_INTENT_VIDEO_RECORD].
* - Subclasses of this quirk may contain device specific information.
*/
+@JvmDefaultWithCompatibility
public interface CaptureIntentPreviewQuirk : Quirk {
/**
* Returns if the device specific issue can be workaround by using
diff --git a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/UseCaseCamera.kt b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/UseCaseCamera.kt
index b19bfe9..6fbcac4 100644
--- a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/UseCaseCamera.kt
+++ b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/UseCaseCamera.kt
@@ -47,6 +47,7 @@
internal val defaultOptionPriority = Config.OptionPriority.OPTIONAL
internal const val defaultTemplate = CameraDevice.TEMPLATE_PREVIEW
+@JvmDefaultWithCompatibility
public interface UseCaseCamera {
// UseCases
public var runningUseCases: Set<UseCase>
diff --git a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/UseCaseCameraRequestControl.kt b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/UseCaseCameraRequestControl.kt
index 9024f2d..6aa775b 100644
--- a/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/UseCaseCameraRequestControl.kt
+++ b/camera/camera-camera2-pipe-integration/src/main/java/androidx/camera/camera2/pipe/integration/impl/UseCaseCameraRequestControl.kt
@@ -57,6 +57,7 @@
* The parameters can be stored for the different types of config respectively. Each type of the
* config can be removed or overridden respectively without interfering with the other types.
*/
+@JvmDefaultWithCompatibility
public interface UseCaseCameraRequestControl {
/** The declaration order is the ordering to merge. */
public enum class Type {
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraBackend.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraBackend.kt
index 513473b..9ed683c 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraBackend.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraBackend.kt
@@ -57,6 +57,7 @@
* The lifecycle of an individual camera is managed by [CameraController]s, which may be created via
* [CameraBackend.createCameraController].
*/
+@JvmDefaultWithCompatibility
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public interface CameraBackend {
public val id: CameraBackendId
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraDevices.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraDevices.kt
index 90adc9c..db30b27 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraDevices.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraDevices.kt
@@ -23,6 +23,7 @@
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow
+@JvmDefaultWithCompatibility
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
/** Methods for querying, iterating, and selecting the Cameras that are available on the device. */
public interface CameraDevices {
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraGraph.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraGraph.kt
index f876917..e27775d 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraGraph.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/CameraGraph.kt
@@ -419,6 +419,7 @@
* While this object is thread-safe, it should not shared or held for long periods of time.
* Example: A [Session] should *not* be held during video recording.
*/
+ @JvmDefaultWithCompatibility
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public interface Session : AutoCloseable {
/**
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Frame.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Frame.kt
index 7485d71..163d890 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Frame.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Frame.kt
@@ -67,6 +67,7 @@
* }
* ```
*/
+@JvmDefaultWithCompatibility
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public interface Frame : FrameReference, AutoCloseable {
/**
@@ -264,6 +265,7 @@
* A FrameReference is a weak reference to a [Frame]. It will not prevent the underlying frame from
* being closed or released unless the frame is acquired via [acquire] or [tryAcquire].
*/
+@JvmDefaultWithCompatibility
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public interface FrameReference {
/**
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Frames.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Frames.kt
index 6079272..e9d51e2 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Frames.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Frames.kt
@@ -99,6 +99,7 @@
check(future >= 0)
}
+ @JvmDefaultWithCompatibility
public interface TransformFn {
public fun computeOverridesFor(
result: FrameInfo,
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Requests.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Requests.kt
index 36d683a..d75b9f9 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Requests.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Requests.kt
@@ -71,6 +71,7 @@
* in a repeating request may be issued multiple times within the same session, and should not
* rely on [onRequestSequenceSubmitted] from being invoked only once.
*/
+ @JvmDefaultWithCompatibility
public interface Listener {
/**
* This event indicates that the camera sensor has started exposing the frame associated
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/StreamGraph.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/StreamGraph.kt
index 775c4aa..8f7bdcf 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/StreamGraph.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/StreamGraph.kt
@@ -24,6 +24,7 @@
*
* [CameraStream]s can be used to build [Request]s that are sent to a [CameraGraph].
*/
+@JvmDefaultWithCompatibility
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public interface StreamGraph {
public val streams: List<CameraStream>
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Streams.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Streams.kt
index 805aff9..bb2cb3f 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Streams.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/Streams.kt
@@ -151,6 +151,7 @@
* the underlying HAL on the device may produce different sized images for the same request. This
* represents one of those potential outputs.
*/
+@JvmDefaultWithCompatibility
@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
public interface OutputStream {
// Every output comes from one, and exactly one, CameraStream
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2DeviceCloser.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2DeviceCloser.kt
index 0830885..54f4524 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2DeviceCloser.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/Camera2DeviceCloser.kt
@@ -31,6 +31,7 @@
import javax.inject.Singleton
import kotlinx.atomicfu.atomic
+@JvmDefaultWithCompatibility
internal interface Camera2DeviceCloser {
fun closeCamera(
cameraDeviceWrapper: CameraDeviceWrapper? = null,
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/VirtualCamera.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/VirtualCamera.kt
index a78a026..66b1de7 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/VirtualCamera.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/compat/VirtualCamera.kt
@@ -108,6 +108,7 @@
* Disconnecting the VirtualCamera will cause an artificial close events to be generated on the
* state property, but may not cause the underlying [CameraDevice] to be closed.
*/
+@JvmDefaultWithCompatibility
internal interface VirtualCamera {
val state: Flow<CameraState>
val value: CameraState
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/GraphListener.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/GraphListener.kt
index 3121d7e..03ad670 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/GraphListener.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/graph/GraphListener.kt
@@ -19,6 +19,7 @@
import androidx.camera.camera2.pipe.CameraGraph
import androidx.camera.camera2.pipe.GraphState.GraphStateError
+@JvmDefaultWithCompatibility
public interface GraphListener {
/**
* Used to indicate that the graph is starting. This is called immediately when a [CameraGraph]
diff --git a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/internal/CameraErrorListener.kt b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/internal/CameraErrorListener.kt
index f34f005..1b17870 100644
--- a/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/internal/CameraErrorListener.kt
+++ b/camera/camera-camera2-pipe/src/main/java/androidx/camera/camera2/pipe/internal/CameraErrorListener.kt
@@ -23,6 +23,7 @@
* Interface intended to be used to report camera errors. It will ensure only the current
* [androidx.camera.camera2.pipe.graph.GraphListener] is notified of the error.
*/
+@JvmDefaultWithCompatibility
public interface CameraErrorListener {
public fun onCameraError(
cameraId: CameraId,