Bugfix: set frame range in Preview

The value was incorrectly removed in aosp/2600745. Added a test to guard it.

Bug: 286817690
Test: manual test and ./gradlew bOS
Change-Id: Iebbc7cddd421c65d5ffcd53e19291e4049f34529
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/Preview.java b/camera/camera-core/src/main/java/androidx/camera/core/Preview.java
index 38faf0c..52c6e0d 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/Preview.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/Preview.java
@@ -266,6 +266,7 @@
         // Send the camera Surface to the camera2.
         SessionConfig.Builder sessionConfigBuilder = SessionConfig.Builder.createFrom(config,
                 streamSpec.getResolution());
+        sessionConfigBuilder.setExpectedFrameRateRange(streamSpec.getExpectedFrameRateRange());
         if (streamSpec.getImplementationOptions() != null) {
             sessionConfigBuilder.addImplementationOptions(streamSpec.getImplementationOptions());
         }
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/PreviewTest.kt b/camera/camera-core/src/test/java/androidx/camera/core/PreviewTest.kt
index 26333fb..b2692bc 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/PreviewTest.kt
+++ b/camera/camera-core/src/test/java/androidx/camera/core/PreviewTest.kt
@@ -88,6 +88,10 @@
 // *********************************************************************************************
 class PreviewTest {
 
+    companion object {
+        val FRAME_RATE_RANGE = Range(30, 60)
+    }
+
     private var cameraUseCaseAdapter: CameraUseCaseAdapter? = null
 
     private lateinit var appSurface: Surface
@@ -161,6 +165,17 @@
     }
 
     @Test
+    fun createPreview_sessionConfigMatchesStreamSpec() {
+        // Act: Create a preview use case.
+        val preview = createPreview()
+        // Assert: The session config matches the stream spec.
+        val sessionConfig = preview.sessionConfig
+        assertThat(sessionConfig.expectedFrameRateRange).isEqualTo(FRAME_RATE_RANGE)
+        assertThat(sessionConfig.implementationOptions.retrieveOption(testImplementationOption))
+            .isEqualTo(testImplementationOptionValue)
+    }
+
+    @Test
     fun verifySupportedEffects() {
         val preview = Preview.Builder().build()
         assertThat(preview.isEffectTargetsSupported(PREVIEW)).isTrue()
@@ -796,6 +811,7 @@
         val streamSpecOptions = MutableOptionsBundle.create()
         streamSpecOptions.insertOption(testImplementationOption, testImplementationOptionValue)
         val streamSpec = StreamSpec.builder(Size(640, 480))
+            .setExpectedFrameRateRange(FRAME_RATE_RANGE)
             .setImplementationOptions(streamSpecOptions).build()
         previewToDetach.sensorToBufferTransformMatrix = sensorToBufferTransform
         previewToDetach.updateSuggestedStreamSpec(streamSpec)