From 47cee977cb091e1b5b32f9d3e082bb8f10015637 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Thu, 29 May 2025 09:46:09 -0700 Subject: [PATCH 01/53] logging for debugging --- .../flutter/plugins/camerax/PreviewProxyApi.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java index 8fedd79f245..cb7f2506d38 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java @@ -15,6 +15,8 @@ import java.util.Map; import java.util.concurrent.Executors; +import android.util.Log; + /** * ProxyApi implementation for {@link Preview}. This class may handle instantiating native object * instances that are attached to a Dart instance or handle method calls on the associated native @@ -94,6 +96,9 @@ public void setTargetRotation(Preview pigeonInstance, long rotation) { pigeonInstance.setTargetRotation((int) rotation); } + int surfaceRequestNum = 0; + int resultNum = 0; + @NonNull Preview.SurfaceProvider createSurfaceProvider( @NonNull TextureRegistry.SurfaceProducer surfaceProducer, @@ -117,6 +122,7 @@ public void onSurfaceCleanup() { }); // Provide surface. + surfaceProducer.invalidateSurface(); surfaceProducer.setSize( request.getResolution().getWidth(), request.getResolution().getHeight()); Surface flutterSurface = surfaceProducer.getSurface(); @@ -124,6 +130,11 @@ public void onSurfaceCleanup() { flutterSurface, Executors.newSingleThreadExecutor(), (result) -> { + Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); + Log.e("CAMILLE RESULT #:", Integer.toString(resultNum)); + Log.e("CAMILLE SURFACE HASHCODE:", Integer.toString(flutterSurface.hashCode())); + Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); + resultNum++; // See // https://developer.android.com/reference/androidx/camera/core/SurfaceRequest.Result // for documentation. @@ -142,6 +153,11 @@ public void onSurfaceCleanup() { systemServicesManager.onCameraError(getProvideSurfaceErrorDescription(resultCode)); } }); + Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); + Log.e("CAMILLE SURFACE REQUEST #:", Integer.toString(surfaceRequestNum)); + Log.e("CAMILLE SURFACE HASHCODE:", Integer.toString(flutterSurface.hashCode())); + Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); + surfaceRequestNum++; }; } From c73110fcbac4a905ddedde1c7db90ef7b802ea15 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Thu, 29 May 2025 10:32:45 -0700 Subject: [PATCH 02/53] debugging logging pt 2 --- .../plugins/camerax/ProcessCameraProviderProxyApi.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java index 86e62ec661a..547939676ac 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java @@ -18,6 +18,8 @@ import kotlin.Unit; import kotlin.jvm.functions.Function1; +import android.util.Log; + /** * ProxyApi implementation for {@link ProcessCameraProvider}. This class may handle instantiating * native object instances that are attached to a Dart instance or handle method calls on the @@ -64,6 +66,7 @@ public Camera bindToLifecycle( @NonNull ProcessCameraProvider pigeonInstance, @NonNull CameraSelector cameraSelector, @NonNull List useCases) { + Log.e("CAMILLE"," BIND CALLED!!!!!!!!!!!!!!!****************************"); final LifecycleOwner lifecycleOwner = getPigeonRegistrar().getLifecycleOwner(); if (lifecycleOwner != null) { return pigeonInstance.bindToLifecycle( @@ -82,6 +85,7 @@ public boolean isBound(ProcessCameraProvider pigeonInstance, @NonNull UseCase us @Override public void unbind( ProcessCameraProvider pigeonInstance, @NonNull List useCases) { + Log.e("CAMILLE"," UNBIND CALLED!!!!!!!!!!!!!!!****************************"); pigeonInstance.unbind(useCases.toArray(new UseCase[0])); } From 8d5223dc8a2d9c032376cf4c597b715801f1f25e Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 2 Jun 2025 15:27:54 -0700 Subject: [PATCH 03/53] remove logs and add comment --- .../plugins/camerax/PreviewProxyApi.java | 18 +++--------------- .../camerax/ProcessCameraProviderProxyApi.java | 4 ---- 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java index cb7f2506d38..04877454088 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java @@ -15,8 +15,6 @@ import java.util.Map; import java.util.concurrent.Executors; -import android.util.Log; - /** * ProxyApi implementation for {@link Preview}. This class may handle instantiating native object * instances that are attached to a Dart instance or handle method calls on the associated native @@ -96,9 +94,6 @@ public void setTargetRotation(Preview pigeonInstance, long rotation) { pigeonInstance.setTargetRotation((int) rotation); } - int surfaceRequestNum = 0; - int resultNum = 0; - @NonNull Preview.SurfaceProvider createSurfaceProvider( @NonNull TextureRegistry.SurfaceProducer surfaceProducer, @@ -130,11 +125,9 @@ public void onSurfaceCleanup() { flutterSurface, Executors.newSingleThreadExecutor(), (result) -> { - Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); - Log.e("CAMILLE RESULT #:", Integer.toString(resultNum)); - Log.e("CAMILLE SURFACE HASHCODE:", Integer.toString(flutterSurface.hashCode())); - Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); - resultNum++; + // RACE CONDITION EXPLANATION: Sometimes, this callback is called after the next SurfaceRequest comes in, + // making a call on line 123 to get a `Surface`, which is the same `Surface` that was (potentially) + // successfully used and should not be re-used. // See // https://developer.android.com/reference/androidx/camera/core/SurfaceRequest.Result // for documentation. @@ -153,11 +146,6 @@ public void onSurfaceCleanup() { systemServicesManager.onCameraError(getProvideSurfaceErrorDescription(resultCode)); } }); - Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); - Log.e("CAMILLE SURFACE REQUEST #:", Integer.toString(surfaceRequestNum)); - Log.e("CAMILLE SURFACE HASHCODE:", Integer.toString(flutterSurface.hashCode())); - Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); - surfaceRequestNum++; }; } diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java index 547939676ac..86e62ec661a 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java @@ -18,8 +18,6 @@ import kotlin.Unit; import kotlin.jvm.functions.Function1; -import android.util.Log; - /** * ProxyApi implementation for {@link ProcessCameraProvider}. This class may handle instantiating * native object instances that are attached to a Dart instance or handle method calls on the @@ -66,7 +64,6 @@ public Camera bindToLifecycle( @NonNull ProcessCameraProvider pigeonInstance, @NonNull CameraSelector cameraSelector, @NonNull List useCases) { - Log.e("CAMILLE"," BIND CALLED!!!!!!!!!!!!!!!****************************"); final LifecycleOwner lifecycleOwner = getPigeonRegistrar().getLifecycleOwner(); if (lifecycleOwner != null) { return pigeonInstance.bindToLifecycle( @@ -85,7 +82,6 @@ public boolean isBound(ProcessCameraProvider pigeonInstance, @NonNull UseCase us @Override public void unbind( ProcessCameraProvider pigeonInstance, @NonNull List useCases) { - Log.e("CAMILLE"," UNBIND CALLED!!!!!!!!!!!!!!!****************************"); pigeonInstance.unbind(useCases.toArray(new UseCase[0])); } From 0b4dfa0c3d086754e7a7fdad9735aedafa0db162 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 16 Jun 2025 13:47:37 -0700 Subject: [PATCH 04/53] update wip --- .../java/io/flutter/plugins/camerax/PreviewProxyApi.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java index 04877454088..d3c140ff2c7 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java @@ -117,17 +117,18 @@ public void onSurfaceCleanup() { }); // Provide surface. - surfaceProducer.invalidateSurface(); surfaceProducer.setSize( request.getResolution().getWidth(), request.getResolution().getHeight()); - Surface flutterSurface = surfaceProducer.getSurface(); + Surface flutterSurface = surfaceProducer.getSurface(true); request.provideSurface( flutterSurface, Executors.newSingleThreadExecutor(), (result) -> { - // RACE CONDITION EXPLANATION: Sometimes, this callback is called after the next SurfaceRequest comes in, - // making a call on line 123 to get a `Surface`, which is the same `Surface` that was (potentially) + // RACE CONDITION EXPLANATION for https://github.com/flutter/flutter/pull/169899: + // Sometimes, this callback is called after the next SurfaceRequest comes in, + // making a call on line 122 to get a `Surface`, which is the same `Surface` that was (potentially) // successfully used and should not be re-used. + // // See // https://developer.android.com/reference/androidx/camera/core/SurfaceRequest.Result // for documentation. From f8cb2948ec52e0bc9409924fd9f3ffda96612377 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Fri, 20 Jun 2025 09:24:43 -0700 Subject: [PATCH 05/53] update pr based on engine changes + add tests --- .../java/io/flutter/plugins/camerax/PreviewProxyApi.java | 7 +------ .../test/java/io/flutter/plugins/camerax/PreviewTest.java | 4 ++-- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java index d3c140ff2c7..47e36d4107e 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java @@ -119,16 +119,11 @@ public void onSurfaceCleanup() { // Provide surface. surfaceProducer.setSize( request.getResolution().getWidth(), request.getResolution().getHeight()); - Surface flutterSurface = surfaceProducer.getSurface(true); + Surface flutterSurface = surfaceProducer.getForcedNewSurface(); request.provideSurface( flutterSurface, Executors.newSingleThreadExecutor(), (result) -> { - // RACE CONDITION EXPLANATION for https://github.com/flutter/flutter/pull/169899: - // Sometimes, this callback is called after the next SurfaceRequest comes in, - // making a call on line 122 to get a `Surface`, which is the same `Surface` that was (potentially) - // successfully used and should not be re-used. - // // See // https://developer.android.com/reference/androidx/camera/core/SurfaceRequest.Result // for documentation. diff --git a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java index 5c3f3578a24..45b6be96375 100644 --- a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java +++ b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java @@ -103,7 +103,7 @@ TextureRegistry getTextureRegistry() { ArgumentCaptor.forClass(TextureRegistry.SurfaceProducer.Callback.class); when(mockSurfaceRequest.getResolution()).thenReturn(new Size(5, 6)); - when(mockSurfaceProducer.getSurface()).thenReturn(mock(Surface.class)); + when(mockSurfaceProducer.getForcedNewSurface()).thenReturn(mock(Surface.class)); final Preview.SurfaceProvider previewSurfaceProvider = api.createSurfaceProvider(mockSurfaceProducer, mockSystemServicesManager); @@ -155,7 +155,7 @@ TextureRegistry getTextureRegistry() { when(mockSurfaceRequest.getResolution()) .thenReturn(new Size(resolutionWidth, resolutionHeight)); - when(mockSurfaceProducer.getSurface()).thenReturn(mockSurface); + when(mockSurfaceProducer.getForcedNewSurface()).thenReturn(mockSurface); final ArgumentCaptor surfaceCaptor = ArgumentCaptor.forClass(Surface.class); final ArgumentCaptor> consumerCaptor = From 7918cbc98a4ce78c8bd0254d4c94190e6eb3fac1 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Fri, 20 Jun 2025 09:49:48 -0700 Subject: [PATCH 06/53] bump version --- packages/camera/camera_android_camerax/CHANGELOG.md | 5 +++++ packages/camera/camera_android_camerax/pubspec.yaml | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index 5f9c3c2a36c..d90e7f1244e 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.6.19 + +* Ensures a new surface is provided every timethat one is requested to render the camera preview into + to fix pausing and resuming the preview. + ## 0.6.18+3 * Fixes incorrect camera preview mirroring for front cameras of devices using the Impeller backend. diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml index 0bf7e8a986a..09d8688b323 100644 --- a/packages/camera/camera_android_camerax/pubspec.yaml +++ b/packages/camera/camera_android_camerax/pubspec.yaml @@ -2,7 +2,7 @@ name: camera_android_camerax description: Android implementation of the camera plugin using the CameraX library. repository: https://github.com/flutter/packages/tree/main/packages/camera/camera_android_camerax issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 -version: 0.6.18+3 +version: 0.6.19 environment: sdk: ^3.7.0 From 7f3b5be37ad67abf0c35d050d1ef513ae5b1d9cc Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Tue, 24 Jun 2025 10:35:49 -0700 Subject: [PATCH 07/53] grammatical fixes --- packages/camera/camera_android_camerax/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index d90e7f1244e..abdfe257b71 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.6.19 -* Ensures a new surface is provided every timethat one is requested to render the camera preview into +* Ensures that a new surface is provided every time that one is requested to render the camera preview into to fix pausing and resuming the preview. ## 0.6.18+3 From f004fa95f966bc15574a03a34b00ad85b0cdcaa4 Mon Sep 17 00:00:00 2001 From: Camille Simon <43054281+camsim99@users.noreply.github.com> Date: Tue, 24 Jun 2025 11:05:04 -0700 Subject: [PATCH 08/53] Remove confusing word after preview --- packages/camera/camera_android_camerax/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index abdfe257b71..a7f96f80cfb 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.6.19 -* Ensures that a new surface is provided every time that one is requested to render the camera preview into +* Ensures that a new surface is provided every time that one is requested to render the camera preview to fix pausing and resuming the preview. ## 0.6.18+3 From b77d727471467fbcc9004a60089407836e35c07a Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 28 Jul 2025 10:01:24 -0700 Subject: [PATCH 09/53] Update min flutter version --- packages/camera/camera_android_camerax/CHANGELOG.md | 1 + packages/camera/camera_android_camerax/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index a7f96f80cfb..9a2c1c8e051 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -2,6 +2,7 @@ * Ensures that a new surface is provided every time that one is requested to render the camera preview to fix pausing and resuming the preview. +* Updates minimum supported SDK version to Flutter 3.32.8. ## 0.6.18+3 diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml index 09d8688b323..6ca9c1c2987 100644 --- a/packages/camera/camera_android_camerax/pubspec.yaml +++ b/packages/camera/camera_android_camerax/pubspec.yaml @@ -6,7 +6,7 @@ version: 0.6.19 environment: sdk: ^3.7.0 - flutter: ">=3.29.0" + flutter: ">=3.32.8" flutter: plugin: From 83fb7c47b7adcdb637c685453fe92d5e06f95625 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 28 Jul 2025 10:12:13 -0700 Subject: [PATCH 10/53] add 3.32.8 version --- script/tool/lib/src/common/core.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/script/tool/lib/src/common/core.dart b/script/tool/lib/src/common/core.dart index 484d864aecf..f4503693ad3 100644 --- a/script/tool/lib/src/common/core.dart +++ b/script/tool/lib/src/common/core.dart @@ -91,6 +91,7 @@ final Map _dartSdkForFlutterSdk = { Version(3, 29, 0): Version(3, 7, 0), Version(3, 29, 3): Version(3, 7, 2), Version(3, 32, 0): Version(3, 8, 0), + Version(3, 32, 8): Version(3, 8, 1), }; /// Returns the version of the Dart SDK that shipped with the given Flutter From 25f5d1162502dfb44a476f3fdeea43e862de85c8 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 28 Jul 2025 11:28:19 -0700 Subject: [PATCH 11/53] bump sdk version --- packages/camera/camera_android_camerax/CHANGELOG.md | 2 +- packages/camera/camera_android_camerax/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index b6e762f7c9f..493f44c4b67 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -2,7 +2,7 @@ * Ensures that a new surface is provided every time that one is requested to render the camera preview to fix pausing and resuming the preview. -* Updates minimum supported SDK version to Flutter 3.32.8. +* Updates minimum supported SDK version to Flutter 3.32.8/Dart 3.8.1. ## 0.6.19 diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml index bf429d50f16..fea407b822d 100644 --- a/packages/camera/camera_android_camerax/pubspec.yaml +++ b/packages/camera/camera_android_camerax/pubspec.yaml @@ -5,7 +5,7 @@ issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+ version: 0.6.20 environment: - sdk: ^3.7.0 + sdk: ^3.8.1 flutter: ">=3.32.8" flutter: From 560cdf7965eb330c95db32ddc742887c2506567c Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Tue, 29 Jul 2025 10:47:51 -0700 Subject: [PATCH 12/53] format --- .../lib/src/android_camera_camerax.dart | 92 +- .../lib/src/camerax_library.dart | 20 +- .../lib/src/camerax_library.g.dart | 4 +- .../lib/src/image_reader_rotated_preview.dart | 5 +- .../lib/src/rotated_preview_utils.dart | 7 +- .../src/surface_texture_rotated_preview.dart | 5 +- .../test/android_camera_camerax_test.dart | 3579 +++++++++-------- .../android_camera_camerax_test.mocks.dart | 172 +- .../test/preview_rotation_test.dart | 586 ++- 9 files changed, 2297 insertions(+), 2173 deletions(-) diff --git a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart index e52435b3b10..0f0dfb704f9 100644 --- a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart +++ b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart @@ -286,12 +286,14 @@ class AndroidCameraCameraX extends CameraPlatform { // Determine the lens direction by filtering the CameraInfo // TODO(gmackall): replace this with call to CameraInfo.getLensFacing when changes containing that method are available if ((await proxy - .newCameraSelector(requireLensFacing: LensFacing.back) - .filter([cameraInfo])).isNotEmpty) { + .newCameraSelector(requireLensFacing: LensFacing.back) + .filter([cameraInfo])) + .isNotEmpty) { cameraLensDirection = CameraLensDirection.back; } else if ((await proxy - .newCameraSelector(requireLensFacing: LensFacing.front) - .filter([cameraInfo])).isNotEmpty) { + .newCameraSelector(requireLensFacing: LensFacing.front) + .filter([cameraInfo])) + .isNotEmpty) { cameraLensDirection = CameraLensDirection.front; } else { //Skip this CameraInfo as its lens direction is unknown @@ -432,13 +434,13 @@ class AndroidCameraCameraX extends CameraPlatform { .toDouble(); sensorOrientationDegrees = cameraDescription.sensorOrientation.toDouble(); - _handlesCropAndRotation = - await preview!.surfaceProducerHandlesCropAndRotation(); + _handlesCropAndRotation = await preview! + .surfaceProducerHandlesCropAndRotation(); _initialDeviceOrientation = _deserializeDeviceOrientation( await deviceOrientationManager.getUiOrientation(), ); - _initialDefaultDisplayRotation = - await deviceOrientationManager.getDefaultDisplayRotation(); + _initialDefaultDisplayRotation = await deviceOrientationManager + .getDefaultDisplayRotation(); return flutterSurfaceTextureId; } @@ -469,8 +471,8 @@ class AndroidCameraCameraX extends CameraPlatform { ); } - final ResolutionInfo previewResolutionInfo = - (await preview!.getResolutionInfo())!; + final ResolutionInfo previewResolutionInfo = (await preview! + .getResolutionInfo())!; // Mark auto-focus, auto-exposure and setting points for focus & exposure // as available operations as CameraX does its best across devices to @@ -640,10 +642,9 @@ class AndroidCameraCameraX extends CameraPlatform { case FocusMode.auto: // Determine auto-focus point to restore, if any. We do not restore // default auto-focus point if set previously to lock focus. - final MeteringPoint? unLockedFocusPoint = - _defaultFocusPointLocked - ? null - : currentFocusMeteringAction!.meteringPointsAf.first; + final MeteringPoint? unLockedFocusPoint = _defaultFocusPointLocked + ? null + : currentFocusMeteringAction!.meteringPointsAf.first; _defaultFocusPointLocked = false; autoFocusPoint = unLockedFocusPoint; disableAutoCancel = false; @@ -654,10 +655,9 @@ class AndroidCameraCameraX extends CameraPlatform { if (currentFocusMeteringAction != null) { final List possibleCurrentAfPoints = currentFocusMeteringAction!.meteringPointsAf; - lockedFocusPoint = - possibleCurrentAfPoints.isEmpty - ? null - : possibleCurrentAfPoints.first; + lockedFocusPoint = possibleCurrentAfPoints.isEmpty + ? null + : possibleCurrentAfPoints.first; } // If there isn't, lock center of entire sensor area by default. @@ -1487,13 +1487,12 @@ class AndroidCameraCameraX extends CameraPlatform { ); final ResolutionFilter resolutionFilter = proxy .createWithOnePreferredSizeResolutionFilter(preferredSize: boundSize); - final AspectRatioStrategy? aspectRatioStrategy = - aspectRatio == null - ? null - : proxy.newAspectRatioStrategy( - preferredAspectRatio: aspectRatio, - fallbackRule: AspectRatioStrategyFallbackRule.auto, - ); + final AspectRatioStrategy? aspectRatioStrategy = aspectRatio == null + ? null + : proxy.newAspectRatioStrategy( + preferredAspectRatio: aspectRatio, + fallbackRule: AspectRatioStrategyFallbackRule.auto, + ); return proxy.newResolutionSelector( resolutionStrategy: resolutionStrategy, resolutionFilter: resolutionFilter, @@ -1610,17 +1609,17 @@ class AndroidCameraCameraX extends CameraPlatform { // Remove metering point with specified meteringMode from current focus // and metering action, as only one focus or exposure point may be set // at once in this plugin. - final List<(MeteringPoint, MeteringMode)> newMeteringPointInfos = - originalMeteringPoints - .where( - ((MeteringPoint, MeteringMode) meteringPointInfo) => - // meteringPointInfo may technically include points without a - // mode specified, but this logic is safe because this plugin - // only uses points that explicitly have mode - // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. - meteringPointInfo.$2 != meteringMode, - ) - .toList(); + final List<(MeteringPoint, MeteringMode)> + newMeteringPointInfos = originalMeteringPoints + .where( + ((MeteringPoint, MeteringMode) meteringPointInfo) => + // meteringPointInfo may technically include points without a + // mode specified, but this logic is safe because this plugin + // only uses points that explicitly have mode + // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. + meteringPointInfo.$2 != meteringMode, + ) + .toList(); if (newMeteringPointInfos.isEmpty) { // If no other metering points were specified, cancel any previously @@ -1657,17 +1656,16 @@ class AndroidCameraCameraX extends CameraPlatform { final Iterable<(MeteringPoint, MeteringMode)> originalMeteringPoints = _combineMeteringPoints(currentFocusMeteringAction!); - newMeteringPointInfos = - originalMeteringPoints - .where( - ((MeteringPoint, MeteringMode) meteringPointInfo) => - // meteringPointInfo may technically include points without a - // mode specified, but this logic is safe because this plugin - // only uses points that explicitly have mode - // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. - meteringPointInfo.$2 != meteringMode, - ) - .toList(); + newMeteringPointInfos = originalMeteringPoints + .where( + ((MeteringPoint, MeteringMode) meteringPointInfo) => + // meteringPointInfo may technically include points without a + // mode specified, but this logic is safe because this plugin + // only uses points that explicitly have mode + // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. + meteringPointInfo.$2 != meteringMode, + ) + .toList(); } newMeteringPointInfos.add((meteringPoint, meteringMode)); diff --git a/packages/camera/camera_android_camerax/lib/src/camerax_library.dart b/packages/camera/camera_android_camerax/lib/src/camerax_library.dart index 2c0d0a43747..e692d408fa2 100644 --- a/packages/camera/camera_android_camerax/lib/src/camerax_library.dart +++ b/packages/camera/camera_android_camerax/lib/src/camerax_library.dart @@ -37,17 +37,15 @@ void setUpGenerics({ ); camerax.CameraInfo.pigeon_setUpMessageHandlers( - pigeon_newInstance: ( - int sensorRotationDegrees, - camerax.ExposureState exposureState, - ) { - return CameraInfo.detached( - sensorRotationDegrees: sensorRotationDegrees, - exposureState: exposureState, - pigeon_binaryMessenger: pigeonBinaryMessenger, - pigeon_instanceManager: pigeonInstanceManager, - ); - }, + pigeon_newInstance: + (int sensorRotationDegrees, camerax.ExposureState exposureState) { + return CameraInfo.detached( + sensorRotationDegrees: sensorRotationDegrees, + exposureState: exposureState, + pigeon_binaryMessenger: pigeonBinaryMessenger, + pigeon_instanceManager: pigeonInstanceManager, + ); + }, ); } diff --git a/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart b/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart index 5d266c09ce7..0b0ffcb5295 100644 --- a/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart +++ b/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart @@ -384,8 +384,8 @@ class PigeonInstanceManager { final PigeonInternalProxyApiBaseClass? strongInstance = _strongInstances[identifier]; if (strongInstance != null) { - final PigeonInternalProxyApiBaseClass copy = - strongInstance.pigeon_copy(); + final PigeonInternalProxyApiBaseClass copy = strongInstance + .pigeon_copy(); _identifiers[copy] = identifier; _weakInstances[identifier] = WeakReference(copy); diff --git a/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart b/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart index 2cb8f44bf1a..49cf6c48509 100644 --- a/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart +++ b/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart @@ -78,8 +78,9 @@ final class _ImageReaderRotatedPreviewState late StreamSubscription deviceOrientationSubscription; Future _getCurrentDefaultDisplayRotationDegrees() async { - final int currentDefaultDisplayRotationQuarterTurns = - await widget.deviceOrientationManager.getDefaultDisplayRotation(); + final int currentDefaultDisplayRotationQuarterTurns = await widget + .deviceOrientationManager + .getDefaultDisplayRotation(); return getQuarterTurnsFromSurfaceRotationConstant( currentDefaultDisplayRotationQuarterTurns, ) * diff --git a/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart b/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart index cfebe6976d5..ae3152d7ff4 100644 --- a/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart +++ b/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart @@ -15,10 +15,9 @@ int getQuarterTurnsFromSurfaceRotationConstant(int surfaceRotationConstant) { Surface.rotation90 => 3, Surface.rotation180 => 2, Surface.rotation270 => 1, - int() => - throw ArgumentError( - '$surfaceRotationConstant is an unknown Surface rotation constant, so counter-clockwise quarter turns cannot be determined.', - ), + int() => throw ArgumentError( + '$surfaceRotationConstant is an unknown Surface rotation constant, so counter-clockwise quarter turns cannot be determined.', + ), }; } diff --git a/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart b/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart index bdfa3f7d2bd..a69e0359812 100644 --- a/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart +++ b/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart @@ -57,8 +57,9 @@ final class _SurfaceTextureRotatedPreviewState late Future defaultDisplayRotationQuarterTurns; Future _getCurrentDefaultDisplayRotationQuarterTurns() async { - final int currentDefaultDisplayRotationQuarterTurns = - await widget.deviceOrientationManager.getDefaultDisplayRotation(); + final int currentDefaultDisplayRotationQuarterTurns = await widget + .deviceOrientationManager + .getDefaultDisplayRotation(); return getQuarterTurnsFromSurfaceRotationConstant( currentDefaultDisplayRotationQuarterTurns, ); diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart index 6b2535cf437..a9034c7a116 100644 --- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart +++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart @@ -159,32 +159,34 @@ void main() { final ResolutionStrategy highestAvailableStrategyResolutionStrategy = MockResolutionStrategy(); proxy = CameraXProxy( - getInstanceProcessCameraProvider: ({ - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) async { - return mockProcessCameraProvider; - }, - newCameraSelector: ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return MockCameraSelector(); - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } + getInstanceProcessCameraProvider: + ({ + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) async { + return mockProcessCameraProvider; + }, + newCameraSelector: + ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return MockCameraSelector(); + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } - return MockCameraSelector(); - }, + return MockCameraSelector(); + }, newPreview: newPreview ?? ({ @@ -202,101 +204,107 @@ void main() { when(mockPreview.resolutionSelector).thenReturn(resolutionSelector); return mockPreview; }, - newImageCapture: ({ - int? targetRotation, - CameraXFlashMode? flashMode, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockImageCapture mockImageCapture = MockImageCapture(); - when( - mockImageCapture.resolutionSelector, - ).thenReturn(resolutionSelector); - return mockImageCapture; - }, - newRecorder: ({ - int? aspectRatio, - int? targetVideoEncodingBitRate, - QualitySelector? qualitySelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockRecorder mockRecorder = MockRecorder(); - when( - mockRecorder.getQualitySelector(), - ).thenAnswer((_) async => qualitySelector ?? MockQualitySelector()); - return mockRecorder; - }, - withOutputVideoCapture: ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockVideoCapture(); - }, - newImageAnalysis: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockImageAnalysis mockImageAnalysis = MockImageAnalysis(); - when( - mockImageAnalysis.resolutionSelector, - ).thenReturn(resolutionSelector); - return mockImageAnalysis; - }, - newResolutionStrategy: ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockResolutionStrategy resolutionStrategy = - MockResolutionStrategy(); - when( - resolutionStrategy.getBoundSize(), - ).thenAnswer((_) async => boundSize); - when( - resolutionStrategy.getFallbackRule(), - ).thenAnswer((_) async => fallbackRule); - return resolutionStrategy; - }, - newResolutionSelector: ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockResolutionSelector mockResolutionSelector = - MockResolutionSelector(); - when(mockResolutionSelector.getAspectRatioStrategy()).thenAnswer( - (_) async => - aspectRatioStrategy ?? - proxy.ratio_4_3FallbackAutoStrategyAspectRatioStrategy(), - ); - when( - mockResolutionSelector.resolutionStrategy, - ).thenReturn(resolutionStrategy); - when( - mockResolutionSelector.resolutionFilter, - ).thenReturn(resolutionFilter); - return mockResolutionSelector; - }, + newImageCapture: + ({ + int? targetRotation, + CameraXFlashMode? flashMode, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockImageCapture mockImageCapture = MockImageCapture(); + when( + mockImageCapture.resolutionSelector, + ).thenReturn(resolutionSelector); + return mockImageCapture; + }, + newRecorder: + ({ + int? aspectRatio, + int? targetVideoEncodingBitRate, + QualitySelector? qualitySelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockRecorder mockRecorder = MockRecorder(); + when( + mockRecorder.getQualitySelector(), + ).thenAnswer((_) async => qualitySelector ?? MockQualitySelector()); + return mockRecorder; + }, + withOutputVideoCapture: + ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockVideoCapture(); + }, + newImageAnalysis: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockImageAnalysis mockImageAnalysis = MockImageAnalysis(); + when( + mockImageAnalysis.resolutionSelector, + ).thenReturn(resolutionSelector); + return mockImageAnalysis; + }, + newResolutionStrategy: + ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockResolutionStrategy resolutionStrategy = + MockResolutionStrategy(); + when( + resolutionStrategy.getBoundSize(), + ).thenAnswer((_) async => boundSize); + when( + resolutionStrategy.getFallbackRule(), + ).thenAnswer((_) async => fallbackRule); + return resolutionStrategy; + }, + newResolutionSelector: + ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockResolutionSelector mockResolutionSelector = + MockResolutionSelector(); + when(mockResolutionSelector.getAspectRatioStrategy()).thenAnswer( + (_) async => + aspectRatioStrategy ?? + proxy.ratio_4_3FallbackAutoStrategyAspectRatioStrategy(), + ); + when( + mockResolutionSelector.resolutionStrategy, + ).thenReturn(resolutionStrategy); + when( + mockResolutionSelector.resolutionFilter, + ).thenReturn(resolutionFilter); + return mockResolutionSelector; + }, fromQualitySelector: fromQualitySelector ?? ({ @@ -309,62 +317,66 @@ void main() { }) { return MockQualitySelector(); }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, - newAspectRatioStrategy: ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockAspectRatioStrategy mockAspectRatioStrategy = - MockAspectRatioStrategy(); - when( - mockAspectRatioStrategy.getFallbackRule(), - ).thenAnswer((_) async => fallbackRule); - when( - mockAspectRatioStrategy.getPreferredAspectRatio(), - ).thenAnswer((_) async => preferredAspectRatio); - return mockAspectRatioStrategy; - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, + newAspectRatioStrategy: + ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockAspectRatioStrategy mockAspectRatioStrategy = + MockAspectRatioStrategy(); + when( + mockAspectRatioStrategy.getFallbackRule(), + ).thenAnswer((_) async => fallbackRule); + when( + mockAspectRatioStrategy.getPreferredAspectRatio(), + ).thenAnswer((_) async => preferredAspectRatio); + return mockAspectRatioStrategy; + }, createWithOnePreferredSizeResolutionFilter: createWithOnePreferredSizeResolutionFilter ?? ({ @@ -376,35 +388,38 @@ void main() { }) { return MockResolutionFilter(); }, - fromCamera2CameraInfo: ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo camera2cameraInfo = MockCamera2CameraInfo(); - when( - camera2cameraInfo.getCameraCharacteristic(any), - ).thenAnswer((_) async => 90); - return camera2cameraInfo; - }, - newCameraSize: ({ - required int width, - required int height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return CameraSize.pigeon_detached( - width: width, - height: height, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + fromCamera2CameraInfo: + ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo camera2cameraInfo = + MockCamera2CameraInfo(); + when( + camera2cameraInfo.getCameraCharacteristic(any), + ).thenAnswer((_) async => 90); + return camera2cameraInfo; + }, + newCameraSize: + ({ + required int width, + required int height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return CameraSize.pigeon_detached( + width: width, + height: height, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, sensorOrientationCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -422,17 +437,18 @@ void main() { highestAvailableStrategyResolutionStrategy: () { return highestAvailableStrategyResolutionStrategy; }, - ratio_4_3FallbackAutoStrategyAspectRatioStrategy: - () => ratio_4_3FallbackAutoStrategyAspectRatioStrategy, - lowerQualityThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, + ratio_4_3FallbackAutoStrategyAspectRatioStrategy: () => + ratio_4_3FallbackAutoStrategyAspectRatioStrategy, + lowerQualityThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, ); return proxy; @@ -602,28 +618,28 @@ void main() { BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) => - cameraControl == cameraControlForComparison - ? camera2cameraControl - : Camera2CameraControl.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ); - proxy.newCaptureRequestOptions = ({ - required Map options, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCaptureRequestOptions mockCaptureRequestOptions = - MockCaptureRequestOptions(); - options.forEach((CaptureRequestKey key, Object? value) { - when( - mockCaptureRequestOptions.getCaptureRequestOption(key), - ).thenAnswer((_) async => value); - }); - return mockCaptureRequestOptions; - }; + }) => cameraControl == cameraControlForComparison + ? camera2cameraControl + : Camera2CameraControl.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ); + proxy.newCaptureRequestOptions = + ({ + required Map options, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCaptureRequestOptions mockCaptureRequestOptions = + MockCaptureRequestOptions(); + options.forEach((CaptureRequestKey key, Object? value) { + when( + mockCaptureRequestOptions.getCaptureRequestOption(key), + ).thenAnswer((_) async => value); + }); + return mockCaptureRequestOptions; + }; final CaptureRequestKey controlAeLock = CaptureRequestKey.pigeon_detached( pigeon_instanceManager: testInstanceManager, ); @@ -673,33 +689,36 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, }) => Future.value(mockProcessCameraProvider), - newCameraSelector: ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return mockFrontCameraSelector; - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } - - return mockBackCameraSelector; - }, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, + newCameraSelector: + ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return mockFrontCameraSelector; + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } + + return mockBackCameraSelector; + }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, ); // Mock calls to native platform @@ -721,8 +740,8 @@ void main() { when(mockBackCameraInfo.sensorRotationDegrees).thenReturn(0); when(mockFrontCameraInfo.sensorRotationDegrees).thenReturn(90); - final List cameraDescriptions = - await camera.availableCameras(); + final List cameraDescriptions = await camera + .availableCameras(); expect(cameraDescriptions.length, returnData.length); for (int i = 0; i < returnData.length; i++) { @@ -730,10 +749,9 @@ void main() { (returnData[i] as Map).cast(); final CameraDescription cameraDescription = CameraDescription( name: typedData['name']! as String, - lensDirection: - (typedData['lensFacing']! as String) == 'front' - ? CameraLensDirection.front - : CameraLensDirection.back, + lensDirection: (typedData['lensFacing']! as String) == 'front' + ? CameraLensDirection.front + : CameraLensDirection.back, sensorOrientation: typedData['sensorOrientation']! as int, ); expect(cameraDescriptions[i], cameraDescription); @@ -777,220 +795,239 @@ void main() { bool startedListeningForDeviceOrientationChanges = false; camera.proxy = CameraXProxy( - getInstanceProcessCameraProvider: ({ - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) async { - return mockProcessCameraProvider; - }, - newCameraSelector: ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return MockCameraSelector(); - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } - - return mockBackCameraSelector; - }, - newPreview: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockPreview; - }, - newImageCapture: ({ - int? targetRotation, - CameraXFlashMode? flashMode, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageCapture; - }, - newRecorder: ({ - int? aspectRatio, - int? targetVideoEncodingBitRate, - QualitySelector? qualitySelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockRecorder; - }, - withOutputVideoCapture: ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockVideoCapture; - }, - newImageAnalysis: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageAnalysis; - }, - newResolutionStrategy: ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionStrategy(); - }, - newResolutionSelector: ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionSelector(); - }, - fromQualitySelector: ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockQualitySelector(); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - when( - mockSystemServicesManager.requestCameraPermissions(any), - ).thenAnswer((_) async { - cameraPermissionsRequested = true; - return null; - }); - return mockSystemServicesManager; - }, - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.startListeningForDeviceOrientationChange()).thenAnswer(( - _, - ) async { - startedListeningForDeviceOrientationChanges = true; - }); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, - newAspectRatioStrategy: ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockAspectRatioStrategy(); - }, - createWithOnePreferredSizeResolutionFilter: ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionFilter(); - }, - fromCamera2CameraInfo: ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo camera2cameraInfo = - MockCamera2CameraInfo(); - when( - camera2cameraInfo.getCameraCharacteristic( - mockCameraCharacteristicsKey, - ), - ).thenAnswer((_) async => testSensorOrientation); - return camera2cameraInfo; - }, - newCameraSize: ({ - required int width, - required int height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockCameraSize(); - }, + getInstanceProcessCameraProvider: + ({ + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) async { + return mockProcessCameraProvider; + }, + newCameraSelector: + ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return MockCameraSelector(); + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } + + return mockBackCameraSelector; + }, + newPreview: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockPreview; + }, + newImageCapture: + ({ + int? targetRotation, + CameraXFlashMode? flashMode, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageCapture; + }, + newRecorder: + ({ + int? aspectRatio, + int? targetVideoEncodingBitRate, + QualitySelector? qualitySelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockRecorder; + }, + withOutputVideoCapture: + ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockVideoCapture; + }, + newImageAnalysis: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageAnalysis; + }, + newResolutionStrategy: + ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionStrategy(); + }, + newResolutionSelector: + ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionSelector(); + }, + fromQualitySelector: + ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockQualitySelector(); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + when( + mockSystemServicesManager.requestCameraPermissions(any), + ).thenAnswer((_) async { + cameraPermissionsRequested = true; + return null; + }); + return mockSystemServicesManager; + }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when( + manager.startListeningForDeviceOrientationChange(), + ).thenAnswer((_) async { + startedListeningForDeviceOrientationChanges = true; + }); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, + newAspectRatioStrategy: + ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockAspectRatioStrategy(); + }, + createWithOnePreferredSizeResolutionFilter: + ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionFilter(); + }, + fromCamera2CameraInfo: + ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo camera2cameraInfo = + MockCamera2CameraInfo(); + when( + camera2cameraInfo.getCameraCharacteristic( + mockCameraCharacteristicsKey, + ), + ).thenAnswer((_) async => testSensorOrientation); + return camera2cameraInfo; + }, + newCameraSize: + ({ + required int width, + required int height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockCameraSize(); + }, sensorOrientationCameraCharacteristics: () { return mockCameraCharacteristicsKey; }, - lowerQualityOrHigherThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, + lowerQualityOrHigherThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, ); camera.processCameraProvider = mockProcessCameraProvider; @@ -1091,207 +1128,226 @@ void main() { // Tell plugin to create mock/detached objects and stub method calls for the // testing of createCamera. camera.proxy = CameraXProxy( - getInstanceProcessCameraProvider: ({ - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) async { - return mockProcessCameraProvider; - }, - newCameraSelector: ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return MockCameraSelector(); - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } - - return mockBackCameraSelector; - }, - newPreview: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockPreview; - }, - newImageCapture: ({ - int? targetRotation, - CameraXFlashMode? flashMode, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageCapture; - }, - newRecorder: ({ - int? aspectRatio, - int? targetVideoEncodingBitRate, - QualitySelector? qualitySelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockRecorder; - }, - withOutputVideoCapture: ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockVideoCapture; - }, - newImageAnalysis: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageAnalysis; - }, - newResolutionStrategy: ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionStrategy(); - }, - newResolutionSelector: ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionSelector(); - }, - fromQualitySelector: ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockQualitySelector(); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, - newAspectRatioStrategy: ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockAspectRatioStrategy(); - }, - createWithOnePreferredSizeResolutionFilter: ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionFilter(); - }, - fromCamera2CameraInfo: ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - when( - mockCamera2CameraInfo.getCameraCharacteristic( - mockCameraCharacteristicsKey, - ), - ).thenAnswer((_) async => testSensorOrientation); - return mockCamera2CameraInfo; - }, - newCameraSize: ({ - required int width, - required int height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockCameraSize(); - }, + getInstanceProcessCameraProvider: + ({ + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) async { + return mockProcessCameraProvider; + }, + newCameraSelector: + ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return MockCameraSelector(); + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } + + return mockBackCameraSelector; + }, + newPreview: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockPreview; + }, + newImageCapture: + ({ + int? targetRotation, + CameraXFlashMode? flashMode, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageCapture; + }, + newRecorder: + ({ + int? aspectRatio, + int? targetVideoEncodingBitRate, + QualitySelector? qualitySelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockRecorder; + }, + withOutputVideoCapture: + ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockVideoCapture; + }, + newImageAnalysis: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageAnalysis; + }, + newResolutionStrategy: + ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionStrategy(); + }, + newResolutionSelector: + ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionSelector(); + }, + fromQualitySelector: + ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockQualitySelector(); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, + newAspectRatioStrategy: + ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockAspectRatioStrategy(); + }, + createWithOnePreferredSizeResolutionFilter: + ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionFilter(); + }, + fromCamera2CameraInfo: + ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + when( + mockCamera2CameraInfo.getCameraCharacteristic( + mockCameraCharacteristicsKey, + ), + ).thenAnswer((_) async => testSensorOrientation); + return mockCamera2CameraInfo; + }, + newCameraSize: + ({ + required int width, + required int height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockCameraSize(); + }, sensorOrientationCameraCharacteristics: () { return mockCameraCharacteristicsKey; }, - lowerQualityOrHigherThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, + lowerQualityOrHigherThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, ); when( @@ -1421,9 +1477,11 @@ void main() { continue; } - final CameraSize? previewSize = - await camera.preview!.resolutionSelector!.resolutionStrategy! - .getBoundSize(); + final CameraSize? previewSize = await camera + .preview! + .resolutionSelector! + .resolutionStrategy! + .getBoundSize(); expect(previewSize?.width, equals(expectedBoundSize.width)); expect(previewSize?.height, equals(expectedBoundSize.height)); expect( @@ -1432,9 +1490,11 @@ void main() { ResolutionStrategyFallbackRule.closestLowerThenHigher, ); - final CameraSize? imageCaptureSize = - await camera.imageCapture!.resolutionSelector!.resolutionStrategy! - .getBoundSize(); + final CameraSize? imageCaptureSize = await camera + .imageCapture! + .resolutionSelector! + .resolutionStrategy! + .getBoundSize(); expect(imageCaptureSize?.width, equals(expectedBoundSize.width)); expect(imageCaptureSize?.height, equals(expectedBoundSize.height)); expect( @@ -1443,9 +1503,11 @@ void main() { ResolutionStrategyFallbackRule.closestLowerThenHigher, ); - final CameraSize? imageAnalysisSize = - await camera.imageAnalysis!.resolutionSelector!.resolutionStrategy! - .getBoundSize(); + final CameraSize? imageAnalysisSize = await camera + .imageAnalysis! + .resolutionSelector! + .resolutionStrategy! + .getBoundSize(); expect(imageAnalysisSize?.width, equals(expectedBoundSize.width)); expect(imageAnalysisSize?.height, equals(expectedBoundSize.height)); expect( @@ -1508,16 +1570,17 @@ void main() { CameraSize? lastSetPreferredSize; camera.proxy = getProxyForTestingResolutionPreset( mockProcessCameraProvider, - createWithOnePreferredSizeResolutionFilter: ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - lastSetPreferredSize = preferredSize; - return MockResolutionFilter(); - }, + createWithOnePreferredSizeResolutionFilter: + ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + lastSetPreferredSize = preferredSize; + return MockResolutionFilter(); + }, ); when( @@ -1598,9 +1661,11 @@ void main() { equals(expectedPreferredResolution.height), ); - final CameraSize? imageCaptureSize = - await camera.imageCapture!.resolutionSelector!.resolutionStrategy! - .getBoundSize(); + final CameraSize? imageCaptureSize = await camera + .imageCapture! + .resolutionSelector! + .resolutionStrategy! + .getBoundSize(); expect( imageCaptureSize?.width, equals(expectedPreferredResolution.width), @@ -1610,9 +1675,11 @@ void main() { equals(expectedPreferredResolution.height), ); - final CameraSize? imageAnalysisSize = - await camera.imageAnalysis!.resolutionSelector!.resolutionStrategy! - .getBoundSize(); + final CameraSize? imageAnalysisSize = await camera + .imageAnalysis! + .resolutionSelector! + .resolutionStrategy! + .getBoundSize(); expect( imageAnalysisSize?.width, equals(expectedPreferredResolution.width), @@ -1714,14 +1781,18 @@ void main() { continue; } - final AspectRatioStrategy previewStrategy = - await camera.preview!.resolutionSelector!.getAspectRatioStrategy(); - final AspectRatioStrategy imageCaptureStrategy = - await camera.imageCapture!.resolutionSelector! - .getAspectRatioStrategy(); - final AspectRatioStrategy imageAnalysisStrategy = - await camera.imageCapture!.resolutionSelector! - .getAspectRatioStrategy(); + final AspectRatioStrategy previewStrategy = await camera + .preview! + .resolutionSelector! + .getAspectRatioStrategy(); + final AspectRatioStrategy imageCaptureStrategy = await camera + .imageCapture! + .resolutionSelector! + .getAspectRatioStrategy(); + final AspectRatioStrategy imageAnalysisStrategy = await camera + .imageCapture! + .resolutionSelector! + .getAspectRatioStrategy(); // Check aspect ratio. expect( @@ -1789,28 +1860,30 @@ void main() { final MockQualitySelector mockQualitySelector = MockQualitySelector(); camera.proxy = getProxyForTestingResolutionPreset( mockProcessCameraProvider, - lowerQualityOrHigherThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - fallbackStrategyVideoQuality = quality; - return mockFallbackStrategy; - }, - fromQualitySelector: ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - qualitySelectorVideoQuality = quality; - setFallbackStrategy = fallbackStrategy; - return mockQualitySelector; - }, + lowerQualityOrHigherThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + fallbackStrategyVideoQuality = quality; + return mockFallbackStrategy; + }, + fromQualitySelector: + ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + qualitySelectorVideoQuality = quality; + setFallbackStrategy = fallbackStrategy; + return mockQualitySelector; + }, ); when( @@ -1893,21 +1966,24 @@ void main() { // UI orientation. camera.proxy = getProxyForTestingResolutionPreset( mockProcessCameraProvider, - newPreview: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockPreview mockPreview = MockPreview(); - when( - mockPreview.surfaceProducerHandlesCropAndRotation(), - ).thenAnswer((_) async => testHandlesCropAndRotation); - when(mockPreview.resolutionSelector).thenReturn(resolutionSelector); - return mockPreview; - }, + newPreview: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockPreview mockPreview = MockPreview(); + when( + mockPreview.surfaceProducerHandlesCropAndRotation(), + ).thenAnswer((_) async => testHandlesCropAndRotation); + when( + mockPreview.resolutionSelector, + ).thenReturn(resolutionSelector); + return mockPreview; + }, ); when( @@ -1985,20 +2061,21 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => Future.value(mockProcessCameraProvider), - newCameraSelector: ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return mockFrontCameraSelector; - case _: - return mockBackCameraSelector; - } - }, + newCameraSelector: + ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return mockFrontCameraSelector; + case _: + return mockBackCameraSelector; + } + }, newPreview: ({ int? targetRotation, @@ -2081,20 +2158,21 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockQualitySelector(), - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, newSystemServicesManager: ({ required void Function(SystemServicesManager, String) onCameraError, @@ -2103,21 +2181,22 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockSystemServicesManager(), - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, newAspectRatioStrategy: ({ required AspectRatio preferredAspectRatio, @@ -2135,20 +2214,21 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockResolutionFilter(), - fromCamera2CameraInfo: ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo mockCamera2CameraInfo = - MockCamera2CameraInfo(); - when( - mockCamera2CameraInfo.getCameraCharacteristic(any), - ).thenAnswer((_) async => 90); - return mockCamera2CameraInfo; - }, + fromCamera2CameraInfo: + ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo mockCamera2CameraInfo = + MockCamera2CameraInfo(); + when( + mockCamera2CameraInfo.getCameraCharacteristic(any), + ).thenAnswer((_) async => 90); + return mockCamera2CameraInfo; + }, newCameraSize: ({ required int width, @@ -2158,8 +2238,8 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockCameraSize(), - sensorOrientationCameraCharacteristics: - () => MockCameraCharacteristicsKey(), + sensorOrientationCameraCharacteristics: () => + MockCameraCharacteristicsKey(), ); final CameraInitializedEvent testCameraInitializedEvent = @@ -2219,24 +2299,25 @@ void main() { bool stoppedListeningForDeviceOrientationChange = false; final AndroidCameraCameraX camera = AndroidCameraCameraX(); camera.proxy = CameraXProxy( - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager mockDeviceOrientationManager = - MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager - .stopListeningForDeviceOrientationChange(), - ).thenAnswer((_) async { - stoppedListeningForDeviceOrientationChange = true; - }); - return mockDeviceOrientationManager; - }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager mockDeviceOrientationManager = + MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager + .stopListeningForDeviceOrientationChange(), + ).thenAnswer((_) async { + stoppedListeningForDeviceOrientationChange = true; + }); + return mockDeviceOrientationManager; + }, ); camera.preview = MockPreview(); @@ -2316,20 +2397,22 @@ void main() { StreamQueue(eventStream); camera.proxy = CameraXProxy( - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.onCameraError, - ).thenReturn(onCameraError); - return mockSystemServicesManager; - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.onCameraError, + ).thenReturn(onCameraError); + return mockSystemServicesManager; + }, ); camera.systemServicesManager.onCameraError( @@ -2352,29 +2435,30 @@ void main() { 'onDeviceOrientationChanged stream emits changes in device orientation detected by system services', () async { final AndroidCameraCameraX camera = AndroidCameraCameraX(); - final Stream eventStream = - camera.onDeviceOrientationChanged(); + final Stream eventStream = camera + .onDeviceOrientationChanged(); final StreamQueue streamQueue = StreamQueue(eventStream); const DeviceOrientationChangedEvent testEvent = DeviceOrientationChangedEvent(DeviceOrientation.portraitDown); camera.proxy = CameraXProxy( - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager mockDeviceOrientationManager = - MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager.onDeviceOrientationChanged, - ).thenReturn(onDeviceOrientationChanged); - return mockDeviceOrientationManager; - }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager mockDeviceOrientationManager = + MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager.onDeviceOrientationChanged, + ).thenReturn(onDeviceOrientationChanged); + return mockDeviceOrientationManager; + }, ); camera.deviceOrientationManager.onDeviceOrientationChanged( @@ -2486,20 +2570,21 @@ void main() { // track camera state once preview is bound to the lifecycle and needed to // test for expected updates. camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); when( @@ -2594,20 +2679,21 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -2616,38 +2702,44 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function( + VideoRecordEventListener, + VideoRecordEvent, + ) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -2753,20 +2845,21 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -2775,38 +2868,44 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function( + VideoRecordEventListener, + VideoRecordEvent, + ) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -2912,20 +3011,21 @@ void main() { // Tell plugin to create detached Analyzer for testing. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -2934,50 +3034,57 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function( + VideoRecordEventListener, + VideoRecordEvent, + ) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockAnalyzer(); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockAnalyzer(); + }, ); const int cameraId = 17; @@ -2985,9 +3092,8 @@ void main() { Completer(); final VideoCaptureOptions videoCaptureOptions = VideoCaptureOptions( cameraId, - streamCallback: - (CameraImageData imageData) => - imageDataCompleter.complete(imageData), + streamCallback: (CameraImageData imageData) => + imageDataCompleter.complete(imageData), ); // Mock method calls. @@ -3059,20 +3165,21 @@ void main() { // Tell plugin to mock call to get current video orientation and mock Camera2CameraInfo retrieval. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -3080,57 +3187,63 @@ void main() { BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) => - cameraInfo == initialCameraInfo - ? mockCamera2CameraInfo - : MockCamera2CameraInfo(), - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager mockDeviceOrientationManager = - MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager.getDefaultDisplayRotation(), - ).thenAnswer((_) async => defaultTargetRotation); - return mockDeviceOrientationManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + }) => cameraInfo == initialCameraInfo + ? mockCamera2CameraInfo + : MockCamera2CameraInfo(), + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager + mockDeviceOrientationManager = MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager.getDefaultDisplayRotation(), + ).thenAnswer((_) async => defaultTargetRotation); + return mockDeviceOrientationManager; + }, + newVideoRecordEventListener: + ({ + required void Function( + VideoRecordEventListener, + VideoRecordEvent, + ) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -3448,20 +3561,21 @@ void main() { // Tell plugin to create detached camera state observers. camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); when( @@ -3504,21 +3618,22 @@ void main() { // Tell plugin to mock call to get current photo orientation. camera.proxy = CameraXProxy( - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager mockDeviceOrientationManager = - MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager.getDefaultDisplayRotation(), - ).thenAnswer((_) async => defaultTargetRotation); - return mockDeviceOrientationManager; - }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager mockDeviceOrientationManager = + MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager.getDefaultDisplayRotation(), + ).thenAnswer((_) async => defaultTargetRotation); + return mockDeviceOrientationManager; + }, ); when( @@ -3853,20 +3968,21 @@ void main() { // Tell plugin to create detached Analyzer for testing. camera.proxy = CameraXProxy( - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); // Set directly for test versus calling createCamera. @@ -3913,20 +4029,21 @@ void main() { // Tell plugin to create detached Analyzer for testing. camera.proxy = CameraXProxy( - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); // Set directly for test versus calling createCamera. @@ -3987,34 +4104,36 @@ void main() { // Tell plugin to create detached Analyzer for testing. camera.proxy = CameraXProxy( - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); // Set directly for test versus calling createCamera. @@ -4146,21 +4265,22 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockAnalyzer(), - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getDefaultDisplayRotation()).thenAnswer((_) async { - return defaultTargetRotation; - }); - return manager; - }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getDefaultDisplayRotation()).thenAnswer((_) async { + return defaultTargetRotation; + }); + return manager; + }, ); when( @@ -4296,28 +4416,28 @@ void main() { BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) => - cameraControl == mockCameraControl - ? mockCamera2CameraControl - : Camera2CameraControl.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ), - newCaptureRequestOptions: ({ - required Map options, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCaptureRequestOptions mockCaptureRequestOptions = - MockCaptureRequestOptions(); - options.forEach((CaptureRequestKey key, Object? value) { - when( - mockCaptureRequestOptions.getCaptureRequestOption(key), - ).thenAnswer((_) async => value); - }); - return mockCaptureRequestOptions; - }, + }) => cameraControl == mockCameraControl + ? mockCamera2CameraControl + : Camera2CameraControl.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ), + newCaptureRequestOptions: + ({ + required Map options, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCaptureRequestOptions mockCaptureRequestOptions = + MockCaptureRequestOptions(); + options.forEach((CaptureRequestKey key, Object? value) { + when( + mockCaptureRequestOptions.getCaptureRequestOption(key), + ).thenAnswer((_) async => value); + }); + return mockCaptureRequestOptions; + }, controlAELockCaptureRequest: () => controlAELockKey, ); @@ -4383,18 +4503,19 @@ void main() { MeteringMode? actionBuilderMeteringMode; MeteringPoint? actionBuilderMeteringPoint; camera.proxy = getProxyForExposureAndFocus( - withModeFocusMeteringActionBuilder: ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + withModeFocusMeteringActionBuilder: + ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify nothing happens if no current focus and metering action has been @@ -4507,34 +4628,36 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(exposurePointX, exposurePointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: + ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(exposurePointX, exposurePointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: + ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify current auto-exposure metering point is removed if previously set. @@ -4646,34 +4769,36 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(exposurePointX, exposurePointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: + ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(exposurePointX, exposurePointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: + ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); await camera.setExposurePoint(cameraId, exposurePoint); @@ -4923,18 +5048,19 @@ void main() { MeteringMode? actionBuilderMeteringMode; MeteringPoint? actionBuilderMeteringPoint; camera.proxy = getProxyForExposureAndFocus( - withModeFocusMeteringActionBuilder: ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + withModeFocusMeteringActionBuilder: + ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify nothing happens if no current focus and metering action has been @@ -5047,34 +5173,36 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(focusPointX, focusPointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: + ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(focusPointX, focusPointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: + ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify current auto-exposure metering point is removed if previously set. @@ -5179,34 +5307,36 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(focusPointX, focusPointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: + ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(focusPointX, focusPointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: + ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); await camera.setFocusPoint(cameraId, focusPoint); @@ -5344,39 +5474,40 @@ void main() { camera.proxy = getProxyForSettingFocusandExposurePoints( mockCameraControl, mockCamera2CameraControl, - newDisplayOrientedMeteringPointFactory: ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(exposurePointX, exposurePointY), - ).thenAnswer((_) async { - final MeteringPoint createdMeteringPoint = - MeteringPoint.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ); - createdMeteringPoints.add(createdMeteringPoint); - return createdMeteringPoint; - }); - when(mockFactory.createPointWithSize(0.5, 0.5, 1)).thenAnswer(( - _, - ) async { - final MeteringPoint createdMeteringPoint = - MeteringPoint.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ); - createdMeteringPoints.add(createdMeteringPoint); - return createdMeteringPoint; - }); - return mockFactory; - }, + newDisplayOrientedMeteringPointFactory: + ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(exposurePointX, exposurePointY), + ).thenAnswer((_) async { + final MeteringPoint createdMeteringPoint = + MeteringPoint.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ); + createdMeteringPoints.add(createdMeteringPoint); + return createdMeteringPoint; + }); + when(mockFactory.createPointWithSize(0.5, 0.5, 1)).thenAnswer(( + _, + ) async { + final MeteringPoint createdMeteringPoint = + MeteringPoint.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ); + createdMeteringPoints.add(createdMeteringPoint); + return createdMeteringPoint; + }); + return mockFactory; + }, ); // Make setting focus and metering action successful for test. @@ -6023,20 +6154,21 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockAnalyzer(), - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); when( @@ -6095,20 +6227,21 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6117,38 +6250,41 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6232,20 +6368,21 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6254,38 +6391,41 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6369,20 +6509,21 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6391,38 +6532,41 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6511,34 +6655,36 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6547,38 +6693,41 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6671,34 +6820,36 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6707,38 +6858,41 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6823,34 +6977,36 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6859,38 +7015,41 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart index 8a709e6beff..49f6b45aa9f 100644 --- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart +++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart @@ -2070,16 +2070,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i2.CameraSelector Function() get defaultBackCameraCameraSelector => (super.noSuchMethod( Invocation.getter(#defaultBackCameraCameraSelector), - returnValue: - () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultBackCameraCameraSelector), - ), - returnValueForMissingStub: - () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultBackCameraCameraSelector), - ), + returnValue: () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultBackCameraCameraSelector), + ), + returnValueForMissingStub: () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultBackCameraCameraSelector), + ), ) as _i2.CameraSelector Function()); @@ -2087,16 +2085,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i2.CameraSelector Function() get defaultFrontCameraCameraSelector => (super.noSuchMethod( Invocation.getter(#defaultFrontCameraCameraSelector), - returnValue: - () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultFrontCameraCameraSelector), - ), - returnValueForMissingStub: - () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultFrontCameraCameraSelector), - ), + returnValue: () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultFrontCameraCameraSelector), + ), + returnValueForMissingStub: () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultFrontCameraCameraSelector), + ), ) as _i2.CameraSelector Function()); @@ -2105,20 +2101,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { get highestAvailableStrategyResolutionStrategy => (super.noSuchMethod( Invocation.getter(#highestAvailableStrategyResolutionStrategy), - returnValue: - () => _FakeResolutionStrategy_24( - this, - Invocation.getter( - #highestAvailableStrategyResolutionStrategy, - ), - ), - returnValueForMissingStub: - () => _FakeResolutionStrategy_24( - this, - Invocation.getter( - #highestAvailableStrategyResolutionStrategy, - ), - ), + returnValue: () => _FakeResolutionStrategy_24( + this, + Invocation.getter(#highestAvailableStrategyResolutionStrategy), + ), + returnValueForMissingStub: () => _FakeResolutionStrategy_24( + this, + Invocation.getter(#highestAvailableStrategyResolutionStrategy), + ), ) as _i2.ResolutionStrategy Function()); @@ -2129,20 +2119,18 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { Invocation.getter( #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, ), - returnValue: - () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, - ), - ), - returnValueForMissingStub: - () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, - ), - ), + returnValue: () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, + ), + ), + returnValueForMissingStub: () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, + ), + ), ) as _i2.AspectRatioStrategy Function()); @@ -2153,20 +2141,18 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { Invocation.getter( #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, ), - returnValue: - () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, - ), - ), - returnValueForMissingStub: - () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, - ), - ), + returnValue: () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, + ), + ), + returnValueForMissingStub: () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, + ), + ), ) as _i2.AspectRatioStrategy Function()); @@ -2174,16 +2160,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i2.CaptureRequestKey Function() get controlAELockCaptureRequest => (super.noSuchMethod( Invocation.getter(#controlAELockCaptureRequest), - returnValue: - () => _FakeCaptureRequestKey_34( - this, - Invocation.getter(#controlAELockCaptureRequest), - ), - returnValueForMissingStub: - () => _FakeCaptureRequestKey_34( - this, - Invocation.getter(#controlAELockCaptureRequest), - ), + returnValue: () => _FakeCaptureRequestKey_34( + this, + Invocation.getter(#controlAELockCaptureRequest), + ), + returnValueForMissingStub: () => _FakeCaptureRequestKey_34( + this, + Invocation.getter(#controlAELockCaptureRequest), + ), ) as _i2.CaptureRequestKey Function()); @@ -2192,20 +2176,18 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { get infoSupportedHardwareLevelCameraCharacteristics => (super.noSuchMethod( Invocation.getter(#infoSupportedHardwareLevelCameraCharacteristics), - returnValue: - () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter( - #infoSupportedHardwareLevelCameraCharacteristics, - ), - ), - returnValueForMissingStub: - () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter( - #infoSupportedHardwareLevelCameraCharacteristics, - ), - ), + returnValue: () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter( + #infoSupportedHardwareLevelCameraCharacteristics, + ), + ), + returnValueForMissingStub: () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter( + #infoSupportedHardwareLevelCameraCharacteristics, + ), + ), ) as _i2.CameraCharacteristicsKey Function()); @@ -2214,16 +2196,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { get sensorOrientationCameraCharacteristics => (super.noSuchMethod( Invocation.getter(#sensorOrientationCameraCharacteristics), - returnValue: - () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter(#sensorOrientationCameraCharacteristics), - ), - returnValueForMissingStub: - () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter(#sensorOrientationCameraCharacteristics), - ), + returnValue: () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter(#sensorOrientationCameraCharacteristics), + ), + returnValueForMissingStub: () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter(#sensorOrientationCameraCharacteristics), + ), ) as _i2.CameraCharacteristicsKey Function()); diff --git a/packages/camera/camera_android_camerax/test/preview_rotation_test.dart b/packages/camera/camera_android_camerax/test/preview_rotation_test.dart index e6921b29077..71ac413ae22 100644 --- a/packages/camera/camera_android_camerax/test/preview_rotation_test.dart +++ b/packages/camera/camera_android_camerax/test/preview_rotation_test.dart @@ -106,20 +106,21 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, }) async => mockProcessCameraProvider, newCameraSelector: createCameraSelector, - newPreview: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockPreview preview = MockPreview(); - when( - preview.surfaceProducerHandlesCropAndRotation(), - ).thenAnswer((_) async => handlesCropAndRotation); - return preview; - }, + newPreview: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockPreview preview = MockPreview(); + when( + preview.surfaceProducerHandlesCropAndRotation(), + ).thenAnswer((_) async => handlesCropAndRotation); + return preview; + }, newImageCapture: ({ int? targetRotation, @@ -140,110 +141,121 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockRecorder(), - withOutputVideoCapture: ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockVideoCapture(); - }, - newImageAnalysis: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockImageAnalysis(); - }, - newResolutionStrategy: ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionStrategy(); - }, - newResolutionSelector: ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionSelector(); - }, - lowerQualityOrHigherThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, - lowerQualityThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, - fromCamera2CameraInfo: ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo camera2cameraInfo = MockCamera2CameraInfo(); - when( - camera2cameraInfo.getCameraCharacteristic(any), - ).thenAnswer((_) async => 90); - return camera2cameraInfo; - }, - fromQualitySelector: ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockQualitySelector(); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, + withOutputVideoCapture: + ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockVideoCapture(); + }, + newImageAnalysis: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockImageAnalysis(); + }, + newResolutionStrategy: + ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionStrategy(); + }, + newResolutionSelector: + ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionSelector(); + }, + lowerQualityOrHigherThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, + lowerQualityThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, + fromCamera2CameraInfo: + ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo camera2cameraInfo = + MockCamera2CameraInfo(); + when( + camera2cameraInfo.getCameraCharacteristic(any), + ).thenAnswer((_) async => 90); + return camera2cameraInfo; + }, + fromQualitySelector: + ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockQualitySelector(); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, newDeviceOrientationManager: ({ required void Function(DeviceOrientationManager, String) @@ -253,33 +265,35 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => deviceOrientationManager, - newAspectRatioStrategy: ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockAspectRatioStrategy mockAspectRatioStrategy = - MockAspectRatioStrategy(); - when( - mockAspectRatioStrategy.getFallbackRule(), - ).thenAnswer((_) async => fallbackRule); - when( - mockAspectRatioStrategy.getPreferredAspectRatio(), - ).thenAnswer((_) async => preferredAspectRatio); - return mockAspectRatioStrategy; - }, - createWithOnePreferredSizeResolutionFilter: ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionFilter(); - }, + newAspectRatioStrategy: + ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockAspectRatioStrategy mockAspectRatioStrategy = + MockAspectRatioStrategy(); + when( + mockAspectRatioStrategy.getFallbackRule(), + ).thenAnswer((_) async => fallbackRule); + when( + mockAspectRatioStrategy.getPreferredAspectRatio(), + ).thenAnswer((_) async => preferredAspectRatio); + return mockAspectRatioStrategy; + }, + createWithOnePreferredSizeResolutionFilter: + ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionFilter(); + }, ); /// Returns CameraXProxy used to mock all calls to native Android in @@ -493,16 +507,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation0), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation0), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -547,16 +560,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation90), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation90), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -599,16 +611,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation180), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation180), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -651,16 +662,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation270), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation270), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -743,16 +753,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(DeviceOrientation.portraitUp), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.portraitUp), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -795,17 +804,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.landscapeLeft, - ), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeLeft), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -848,16 +855,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(DeviceOrientation.portraitDown), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.portraitDown), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -900,17 +906,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.landscapeRight, - ), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeRight), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -997,8 +1001,8 @@ void main() { ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1040,10 +1044,9 @@ void main() { final RotatedBox rotatedBox = tester.widget( find.byType(RotatedBox), ); - final int clockwiseQuarterTurns = - rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect(rotatedBox.child, isA()); expect((rotatedBox.child! as Texture).textureId, cameraId); expect( @@ -1093,13 +1096,13 @@ void main() { getUiOrientation: /* initial device orientation is irrelevant */ () async => _serializeDeviceOrientation(DeviceOrientation.portraitUp), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1137,10 +1140,9 @@ void main() { final RotatedBox rotatedBox = tester.widget( find.byType(RotatedBox), ); - final int clockwiseQuarterTurns = - rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect(rotatedBox.child, isA()); expect((rotatedBox.child! as Texture).textureId, cameraId); expect( @@ -1189,8 +1191,8 @@ void main() { mockCameraSelector: mockFrontCameraSelector, sensorRotationDegrees: 270, ); - proxyGetDefaultDisplayRotation = - () => Future.value(Surface.rotation0); + proxyGetDefaultDisplayRotation = () => + Future.value(Surface.rotation0); // Media settings to create camera; irrelevant for test. testMediaSettings = const MediaSettings(); @@ -1207,14 +1209,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(DeviceOrientation.portraitUp), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.portraitUp), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1267,15 +1268,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.landscapeRight, - ), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeRight), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1328,15 +1327,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.portraitDown, - ), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.portraitDown), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1389,15 +1386,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.landscapeLeft, - ), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeLeft), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1475,9 +1470,8 @@ void main() { mockCameraSelector: mockFrontCameraSelector, sensorRotationDegrees: 270, ); - proxyGetUiOrientation = - () async => - _serializeDeviceOrientation(DeviceOrientation.landscapeLeft); + proxyGetUiOrientation = () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeLeft); // Media settings to create camera; irrelevant for test. testMediaSettings = const MediaSettings(); @@ -1492,15 +1486,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: - () => Future.value(Surface.rotation0), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation0), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1551,15 +1545,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: - () => Future.value(Surface.rotation90), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation90), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1614,15 +1608,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: - () => Future.value(Surface.rotation180), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation180), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1675,15 +1669,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: - () => Future.value(Surface.rotation270), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation270), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1781,8 +1775,8 @@ void main() { ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1838,10 +1832,9 @@ void main() { checkXAxisIsMirrored(transformedPreviewMatrix); expect((transformedPreview.child! as Texture).textureId, cameraId); - final int clockwiseQuarterTurns = - rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect( clockwiseQuarterTurns, expectedQuarterTurns, @@ -1891,13 +1884,13 @@ void main() { getUiOrientation: /* initial device orientation irrelevant for test */ () async => _serializeDeviceOrientation(DeviceOrientation.landscapeLeft), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation90), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation90), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1954,10 +1947,9 @@ void main() { checkYAxisIsMirrored(transformedPreviewMatrix); } expect((transformedPreview.child! as Texture).textureId, cameraId); - final int clockwiseQuarterTurns = - rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect( clockwiseQuarterTurns, expectedQuarterTurns, @@ -2000,8 +1992,8 @@ void main() { mockBackCameraSelector = MockCameraSelector(); proxyCreateCameraSelectorForBackCamera = createCameraSelectorForBackCamera(mockBackCameraSelector); - proxyGetDefaultDisplayRotation = - () => Future.value(Surface.rotation270); + proxyGetDefaultDisplayRotation = () => + Future.value(Surface.rotation270); testMediaSettings = const MediaSettings(); }); @@ -2025,14 +2017,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForBackCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test back camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -2084,14 +2075,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForBackCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test back camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -2146,8 +2136,8 @@ void main() { testSensorOrientation = 90; // Create mock for seting initial default display rotation to 180 degrees. - proxyGetDefaultDisplayRotation = - () => Future.value(Surface.rotation90); + proxyGetDefaultDisplayRotation = () => + Future.value(Surface.rotation90); // Media settings to create camera; irrelevant for test. testMediaSettings = const MediaSettings(); @@ -2179,14 +2169,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -2257,14 +2246,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, From 73c9f6df75b7370d6480b025cc53d8c6781e0756 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Tue, 29 Jul 2025 10:49:52 -0700 Subject: [PATCH 13/53] Revert "format" This reverts commit 560cdf7965eb330c95db32ddc742887c2506567c. --- .../lib/src/android_camera_camerax.dart | 92 +- .../lib/src/camerax_library.dart | 20 +- .../lib/src/camerax_library.g.dart | 4 +- .../lib/src/image_reader_rotated_preview.dart | 5 +- .../lib/src/rotated_preview_utils.dart | 7 +- .../src/surface_texture_rotated_preview.dart | 5 +- .../test/android_camera_camerax_test.dart | 3579 ++++++++--------- .../android_camera_camerax_test.mocks.dart | 172 +- .../test/preview_rotation_test.dart | 586 +-- 9 files changed, 2173 insertions(+), 2297 deletions(-) diff --git a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart index 0f0dfb704f9..e52435b3b10 100644 --- a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart +++ b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart @@ -286,14 +286,12 @@ class AndroidCameraCameraX extends CameraPlatform { // Determine the lens direction by filtering the CameraInfo // TODO(gmackall): replace this with call to CameraInfo.getLensFacing when changes containing that method are available if ((await proxy - .newCameraSelector(requireLensFacing: LensFacing.back) - .filter([cameraInfo])) - .isNotEmpty) { + .newCameraSelector(requireLensFacing: LensFacing.back) + .filter([cameraInfo])).isNotEmpty) { cameraLensDirection = CameraLensDirection.back; } else if ((await proxy - .newCameraSelector(requireLensFacing: LensFacing.front) - .filter([cameraInfo])) - .isNotEmpty) { + .newCameraSelector(requireLensFacing: LensFacing.front) + .filter([cameraInfo])).isNotEmpty) { cameraLensDirection = CameraLensDirection.front; } else { //Skip this CameraInfo as its lens direction is unknown @@ -434,13 +432,13 @@ class AndroidCameraCameraX extends CameraPlatform { .toDouble(); sensorOrientationDegrees = cameraDescription.sensorOrientation.toDouble(); - _handlesCropAndRotation = await preview! - .surfaceProducerHandlesCropAndRotation(); + _handlesCropAndRotation = + await preview!.surfaceProducerHandlesCropAndRotation(); _initialDeviceOrientation = _deserializeDeviceOrientation( await deviceOrientationManager.getUiOrientation(), ); - _initialDefaultDisplayRotation = await deviceOrientationManager - .getDefaultDisplayRotation(); + _initialDefaultDisplayRotation = + await deviceOrientationManager.getDefaultDisplayRotation(); return flutterSurfaceTextureId; } @@ -471,8 +469,8 @@ class AndroidCameraCameraX extends CameraPlatform { ); } - final ResolutionInfo previewResolutionInfo = (await preview! - .getResolutionInfo())!; + final ResolutionInfo previewResolutionInfo = + (await preview!.getResolutionInfo())!; // Mark auto-focus, auto-exposure and setting points for focus & exposure // as available operations as CameraX does its best across devices to @@ -642,9 +640,10 @@ class AndroidCameraCameraX extends CameraPlatform { case FocusMode.auto: // Determine auto-focus point to restore, if any. We do not restore // default auto-focus point if set previously to lock focus. - final MeteringPoint? unLockedFocusPoint = _defaultFocusPointLocked - ? null - : currentFocusMeteringAction!.meteringPointsAf.first; + final MeteringPoint? unLockedFocusPoint = + _defaultFocusPointLocked + ? null + : currentFocusMeteringAction!.meteringPointsAf.first; _defaultFocusPointLocked = false; autoFocusPoint = unLockedFocusPoint; disableAutoCancel = false; @@ -655,9 +654,10 @@ class AndroidCameraCameraX extends CameraPlatform { if (currentFocusMeteringAction != null) { final List possibleCurrentAfPoints = currentFocusMeteringAction!.meteringPointsAf; - lockedFocusPoint = possibleCurrentAfPoints.isEmpty - ? null - : possibleCurrentAfPoints.first; + lockedFocusPoint = + possibleCurrentAfPoints.isEmpty + ? null + : possibleCurrentAfPoints.first; } // If there isn't, lock center of entire sensor area by default. @@ -1487,12 +1487,13 @@ class AndroidCameraCameraX extends CameraPlatform { ); final ResolutionFilter resolutionFilter = proxy .createWithOnePreferredSizeResolutionFilter(preferredSize: boundSize); - final AspectRatioStrategy? aspectRatioStrategy = aspectRatio == null - ? null - : proxy.newAspectRatioStrategy( - preferredAspectRatio: aspectRatio, - fallbackRule: AspectRatioStrategyFallbackRule.auto, - ); + final AspectRatioStrategy? aspectRatioStrategy = + aspectRatio == null + ? null + : proxy.newAspectRatioStrategy( + preferredAspectRatio: aspectRatio, + fallbackRule: AspectRatioStrategyFallbackRule.auto, + ); return proxy.newResolutionSelector( resolutionStrategy: resolutionStrategy, resolutionFilter: resolutionFilter, @@ -1609,17 +1610,17 @@ class AndroidCameraCameraX extends CameraPlatform { // Remove metering point with specified meteringMode from current focus // and metering action, as only one focus or exposure point may be set // at once in this plugin. - final List<(MeteringPoint, MeteringMode)> - newMeteringPointInfos = originalMeteringPoints - .where( - ((MeteringPoint, MeteringMode) meteringPointInfo) => - // meteringPointInfo may technically include points without a - // mode specified, but this logic is safe because this plugin - // only uses points that explicitly have mode - // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. - meteringPointInfo.$2 != meteringMode, - ) - .toList(); + final List<(MeteringPoint, MeteringMode)> newMeteringPointInfos = + originalMeteringPoints + .where( + ((MeteringPoint, MeteringMode) meteringPointInfo) => + // meteringPointInfo may technically include points without a + // mode specified, but this logic is safe because this plugin + // only uses points that explicitly have mode + // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. + meteringPointInfo.$2 != meteringMode, + ) + .toList(); if (newMeteringPointInfos.isEmpty) { // If no other metering points were specified, cancel any previously @@ -1656,16 +1657,17 @@ class AndroidCameraCameraX extends CameraPlatform { final Iterable<(MeteringPoint, MeteringMode)> originalMeteringPoints = _combineMeteringPoints(currentFocusMeteringAction!); - newMeteringPointInfos = originalMeteringPoints - .where( - ((MeteringPoint, MeteringMode) meteringPointInfo) => - // meteringPointInfo may technically include points without a - // mode specified, but this logic is safe because this plugin - // only uses points that explicitly have mode - // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. - meteringPointInfo.$2 != meteringMode, - ) - .toList(); + newMeteringPointInfos = + originalMeteringPoints + .where( + ((MeteringPoint, MeteringMode) meteringPointInfo) => + // meteringPointInfo may technically include points without a + // mode specified, but this logic is safe because this plugin + // only uses points that explicitly have mode + // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. + meteringPointInfo.$2 != meteringMode, + ) + .toList(); } newMeteringPointInfos.add((meteringPoint, meteringMode)); diff --git a/packages/camera/camera_android_camerax/lib/src/camerax_library.dart b/packages/camera/camera_android_camerax/lib/src/camerax_library.dart index e692d408fa2..2c0d0a43747 100644 --- a/packages/camera/camera_android_camerax/lib/src/camerax_library.dart +++ b/packages/camera/camera_android_camerax/lib/src/camerax_library.dart @@ -37,15 +37,17 @@ void setUpGenerics({ ); camerax.CameraInfo.pigeon_setUpMessageHandlers( - pigeon_newInstance: - (int sensorRotationDegrees, camerax.ExposureState exposureState) { - return CameraInfo.detached( - sensorRotationDegrees: sensorRotationDegrees, - exposureState: exposureState, - pigeon_binaryMessenger: pigeonBinaryMessenger, - pigeon_instanceManager: pigeonInstanceManager, - ); - }, + pigeon_newInstance: ( + int sensorRotationDegrees, + camerax.ExposureState exposureState, + ) { + return CameraInfo.detached( + sensorRotationDegrees: sensorRotationDegrees, + exposureState: exposureState, + pigeon_binaryMessenger: pigeonBinaryMessenger, + pigeon_instanceManager: pigeonInstanceManager, + ); + }, ); } diff --git a/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart b/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart index 0b0ffcb5295..5d266c09ce7 100644 --- a/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart +++ b/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart @@ -384,8 +384,8 @@ class PigeonInstanceManager { final PigeonInternalProxyApiBaseClass? strongInstance = _strongInstances[identifier]; if (strongInstance != null) { - final PigeonInternalProxyApiBaseClass copy = strongInstance - .pigeon_copy(); + final PigeonInternalProxyApiBaseClass copy = + strongInstance.pigeon_copy(); _identifiers[copy] = identifier; _weakInstances[identifier] = WeakReference(copy); diff --git a/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart b/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart index 49cf6c48509..2cb8f44bf1a 100644 --- a/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart +++ b/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart @@ -78,9 +78,8 @@ final class _ImageReaderRotatedPreviewState late StreamSubscription deviceOrientationSubscription; Future _getCurrentDefaultDisplayRotationDegrees() async { - final int currentDefaultDisplayRotationQuarterTurns = await widget - .deviceOrientationManager - .getDefaultDisplayRotation(); + final int currentDefaultDisplayRotationQuarterTurns = + await widget.deviceOrientationManager.getDefaultDisplayRotation(); return getQuarterTurnsFromSurfaceRotationConstant( currentDefaultDisplayRotationQuarterTurns, ) * diff --git a/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart b/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart index ae3152d7ff4..cfebe6976d5 100644 --- a/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart +++ b/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart @@ -15,9 +15,10 @@ int getQuarterTurnsFromSurfaceRotationConstant(int surfaceRotationConstant) { Surface.rotation90 => 3, Surface.rotation180 => 2, Surface.rotation270 => 1, - int() => throw ArgumentError( - '$surfaceRotationConstant is an unknown Surface rotation constant, so counter-clockwise quarter turns cannot be determined.', - ), + int() => + throw ArgumentError( + '$surfaceRotationConstant is an unknown Surface rotation constant, so counter-clockwise quarter turns cannot be determined.', + ), }; } diff --git a/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart b/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart index a69e0359812..bdfa3f7d2bd 100644 --- a/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart +++ b/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart @@ -57,9 +57,8 @@ final class _SurfaceTextureRotatedPreviewState late Future defaultDisplayRotationQuarterTurns; Future _getCurrentDefaultDisplayRotationQuarterTurns() async { - final int currentDefaultDisplayRotationQuarterTurns = await widget - .deviceOrientationManager - .getDefaultDisplayRotation(); + final int currentDefaultDisplayRotationQuarterTurns = + await widget.deviceOrientationManager.getDefaultDisplayRotation(); return getQuarterTurnsFromSurfaceRotationConstant( currentDefaultDisplayRotationQuarterTurns, ); diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart index a9034c7a116..6b2535cf437 100644 --- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart +++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart @@ -159,34 +159,32 @@ void main() { final ResolutionStrategy highestAvailableStrategyResolutionStrategy = MockResolutionStrategy(); proxy = CameraXProxy( - getInstanceProcessCameraProvider: - ({ - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) async { - return mockProcessCameraProvider; - }, - newCameraSelector: - ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return MockCameraSelector(); - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } - + getInstanceProcessCameraProvider: ({ + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) async { + return mockProcessCameraProvider; + }, + newCameraSelector: ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: return MockCameraSelector(); - }, + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } + + return MockCameraSelector(); + }, newPreview: newPreview ?? ({ @@ -204,107 +202,101 @@ void main() { when(mockPreview.resolutionSelector).thenReturn(resolutionSelector); return mockPreview; }, - newImageCapture: - ({ - int? targetRotation, - CameraXFlashMode? flashMode, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockImageCapture mockImageCapture = MockImageCapture(); - when( - mockImageCapture.resolutionSelector, - ).thenReturn(resolutionSelector); - return mockImageCapture; - }, - newRecorder: - ({ - int? aspectRatio, - int? targetVideoEncodingBitRate, - QualitySelector? qualitySelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockRecorder mockRecorder = MockRecorder(); - when( - mockRecorder.getQualitySelector(), - ).thenAnswer((_) async => qualitySelector ?? MockQualitySelector()); - return mockRecorder; - }, - withOutputVideoCapture: - ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockVideoCapture(); - }, - newImageAnalysis: - ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockImageAnalysis mockImageAnalysis = MockImageAnalysis(); - when( - mockImageAnalysis.resolutionSelector, - ).thenReturn(resolutionSelector); - return mockImageAnalysis; - }, - newResolutionStrategy: - ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockResolutionStrategy resolutionStrategy = - MockResolutionStrategy(); - when( - resolutionStrategy.getBoundSize(), - ).thenAnswer((_) async => boundSize); - when( - resolutionStrategy.getFallbackRule(), - ).thenAnswer((_) async => fallbackRule); - return resolutionStrategy; - }, - newResolutionSelector: - ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockResolutionSelector mockResolutionSelector = - MockResolutionSelector(); - when(mockResolutionSelector.getAspectRatioStrategy()).thenAnswer( - (_) async => - aspectRatioStrategy ?? - proxy.ratio_4_3FallbackAutoStrategyAspectRatioStrategy(), - ); - when( - mockResolutionSelector.resolutionStrategy, - ).thenReturn(resolutionStrategy); - when( - mockResolutionSelector.resolutionFilter, - ).thenReturn(resolutionFilter); - return mockResolutionSelector; - }, + newImageCapture: ({ + int? targetRotation, + CameraXFlashMode? flashMode, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockImageCapture mockImageCapture = MockImageCapture(); + when( + mockImageCapture.resolutionSelector, + ).thenReturn(resolutionSelector); + return mockImageCapture; + }, + newRecorder: ({ + int? aspectRatio, + int? targetVideoEncodingBitRate, + QualitySelector? qualitySelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockRecorder mockRecorder = MockRecorder(); + when( + mockRecorder.getQualitySelector(), + ).thenAnswer((_) async => qualitySelector ?? MockQualitySelector()); + return mockRecorder; + }, + withOutputVideoCapture: ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockVideoCapture(); + }, + newImageAnalysis: ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockImageAnalysis mockImageAnalysis = MockImageAnalysis(); + when( + mockImageAnalysis.resolutionSelector, + ).thenReturn(resolutionSelector); + return mockImageAnalysis; + }, + newResolutionStrategy: ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockResolutionStrategy resolutionStrategy = + MockResolutionStrategy(); + when( + resolutionStrategy.getBoundSize(), + ).thenAnswer((_) async => boundSize); + when( + resolutionStrategy.getFallbackRule(), + ).thenAnswer((_) async => fallbackRule); + return resolutionStrategy; + }, + newResolutionSelector: ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockResolutionSelector mockResolutionSelector = + MockResolutionSelector(); + when(mockResolutionSelector.getAspectRatioStrategy()).thenAnswer( + (_) async => + aspectRatioStrategy ?? + proxy.ratio_4_3FallbackAutoStrategyAspectRatioStrategy(), + ); + when( + mockResolutionSelector.resolutionStrategy, + ).thenReturn(resolutionStrategy); + when( + mockResolutionSelector.resolutionFilter, + ).thenReturn(resolutionFilter); + return mockResolutionSelector; + }, fromQualitySelector: fromQualitySelector ?? ({ @@ -317,66 +309,62 @@ void main() { }) { return MockQualitySelector(); }, - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, - newDeviceOrientationManager: - ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, - newAspectRatioStrategy: - ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockAspectRatioStrategy mockAspectRatioStrategy = - MockAspectRatioStrategy(); - when( - mockAspectRatioStrategy.getFallbackRule(), - ).thenAnswer((_) async => fallbackRule); - when( - mockAspectRatioStrategy.getPreferredAspectRatio(), - ).thenAnswer((_) async => preferredAspectRatio); - return mockAspectRatioStrategy; - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, + newAspectRatioStrategy: ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockAspectRatioStrategy mockAspectRatioStrategy = + MockAspectRatioStrategy(); + when( + mockAspectRatioStrategy.getFallbackRule(), + ).thenAnswer((_) async => fallbackRule); + when( + mockAspectRatioStrategy.getPreferredAspectRatio(), + ).thenAnswer((_) async => preferredAspectRatio); + return mockAspectRatioStrategy; + }, createWithOnePreferredSizeResolutionFilter: createWithOnePreferredSizeResolutionFilter ?? ({ @@ -388,38 +376,35 @@ void main() { }) { return MockResolutionFilter(); }, - fromCamera2CameraInfo: - ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo camera2cameraInfo = - MockCamera2CameraInfo(); - when( - camera2cameraInfo.getCameraCharacteristic(any), - ).thenAnswer((_) async => 90); - return camera2cameraInfo; - }, - newCameraSize: - ({ - required int width, - required int height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return CameraSize.pigeon_detached( - width: width, - height: height, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + fromCamera2CameraInfo: ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo camera2cameraInfo = MockCamera2CameraInfo(); + when( + camera2cameraInfo.getCameraCharacteristic(any), + ).thenAnswer((_) async => 90); + return camera2cameraInfo; + }, + newCameraSize: ({ + required int width, + required int height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return CameraSize.pigeon_detached( + width: width, + height: height, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, sensorOrientationCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -437,18 +422,17 @@ void main() { highestAvailableStrategyResolutionStrategy: () { return highestAvailableStrategyResolutionStrategy; }, - ratio_4_3FallbackAutoStrategyAspectRatioStrategy: () => - ratio_4_3FallbackAutoStrategyAspectRatioStrategy, - lowerQualityThanFallbackStrategy: - ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, + ratio_4_3FallbackAutoStrategyAspectRatioStrategy: + () => ratio_4_3FallbackAutoStrategyAspectRatioStrategy, + lowerQualityThanFallbackStrategy: ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, ); return proxy; @@ -618,28 +602,28 @@ void main() { BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) => cameraControl == cameraControlForComparison - ? camera2cameraControl - : Camera2CameraControl.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ); - proxy.newCaptureRequestOptions = - ({ - required Map options, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCaptureRequestOptions mockCaptureRequestOptions = - MockCaptureRequestOptions(); - options.forEach((CaptureRequestKey key, Object? value) { - when( - mockCaptureRequestOptions.getCaptureRequestOption(key), - ).thenAnswer((_) async => value); - }); - return mockCaptureRequestOptions; - }; + }) => + cameraControl == cameraControlForComparison + ? camera2cameraControl + : Camera2CameraControl.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ); + proxy.newCaptureRequestOptions = ({ + required Map options, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCaptureRequestOptions mockCaptureRequestOptions = + MockCaptureRequestOptions(); + options.forEach((CaptureRequestKey key, Object? value) { + when( + mockCaptureRequestOptions.getCaptureRequestOption(key), + ).thenAnswer((_) async => value); + }); + return mockCaptureRequestOptions; + }; final CaptureRequestKey controlAeLock = CaptureRequestKey.pigeon_detached( pigeon_instanceManager: testInstanceManager, ); @@ -689,36 +673,33 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, }) => Future.value(mockProcessCameraProvider), - newCameraSelector: - ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return mockFrontCameraSelector; - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } - - return mockBackCameraSelector; - }, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, + newCameraSelector: ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return mockFrontCameraSelector; + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } + + return mockBackCameraSelector; + }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, ); // Mock calls to native platform @@ -740,8 +721,8 @@ void main() { when(mockBackCameraInfo.sensorRotationDegrees).thenReturn(0); when(mockFrontCameraInfo.sensorRotationDegrees).thenReturn(90); - final List cameraDescriptions = await camera - .availableCameras(); + final List cameraDescriptions = + await camera.availableCameras(); expect(cameraDescriptions.length, returnData.length); for (int i = 0; i < returnData.length; i++) { @@ -749,9 +730,10 @@ void main() { (returnData[i] as Map).cast(); final CameraDescription cameraDescription = CameraDescription( name: typedData['name']! as String, - lensDirection: (typedData['lensFacing']! as String) == 'front' - ? CameraLensDirection.front - : CameraLensDirection.back, + lensDirection: + (typedData['lensFacing']! as String) == 'front' + ? CameraLensDirection.front + : CameraLensDirection.back, sensorOrientation: typedData['sensorOrientation']! as int, ); expect(cameraDescriptions[i], cameraDescription); @@ -795,239 +777,220 @@ void main() { bool startedListeningForDeviceOrientationChanges = false; camera.proxy = CameraXProxy( - getInstanceProcessCameraProvider: - ({ - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) async { - return mockProcessCameraProvider; - }, - newCameraSelector: - ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return MockCameraSelector(); - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } - - return mockBackCameraSelector; - }, - newPreview: - ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockPreview; - }, - newImageCapture: - ({ - int? targetRotation, - CameraXFlashMode? flashMode, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageCapture; - }, - newRecorder: - ({ - int? aspectRatio, - int? targetVideoEncodingBitRate, - QualitySelector? qualitySelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockRecorder; - }, - withOutputVideoCapture: - ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockVideoCapture; - }, - newImageAnalysis: - ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageAnalysis; - }, - newResolutionStrategy: - ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionStrategy(); - }, - newResolutionSelector: - ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionSelector(); - }, - fromQualitySelector: - ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockQualitySelector(); - }, - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - when( - mockSystemServicesManager.requestCameraPermissions(any), - ).thenAnswer((_) async { - cameraPermissionsRequested = true; - return null; - }); - return mockSystemServicesManager; - }, - newDeviceOrientationManager: - ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when( - manager.startListeningForDeviceOrientationChange(), - ).thenAnswer((_) async { - startedListeningForDeviceOrientationChanges = true; - }); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, - newAspectRatioStrategy: - ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockAspectRatioStrategy(); - }, - createWithOnePreferredSizeResolutionFilter: - ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionFilter(); - }, - fromCamera2CameraInfo: - ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo camera2cameraInfo = - MockCamera2CameraInfo(); - when( - camera2cameraInfo.getCameraCharacteristic( - mockCameraCharacteristicsKey, - ), - ).thenAnswer((_) async => testSensorOrientation); - return camera2cameraInfo; - }, - newCameraSize: - ({ - required int width, - required int height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockCameraSize(); - }, + getInstanceProcessCameraProvider: ({ + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) async { + return mockProcessCameraProvider; + }, + newCameraSelector: ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return MockCameraSelector(); + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } + + return mockBackCameraSelector; + }, + newPreview: ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockPreview; + }, + newImageCapture: ({ + int? targetRotation, + CameraXFlashMode? flashMode, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageCapture; + }, + newRecorder: ({ + int? aspectRatio, + int? targetVideoEncodingBitRate, + QualitySelector? qualitySelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockRecorder; + }, + withOutputVideoCapture: ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockVideoCapture; + }, + newImageAnalysis: ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageAnalysis; + }, + newResolutionStrategy: ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionStrategy(); + }, + newResolutionSelector: ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionSelector(); + }, + fromQualitySelector: ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockQualitySelector(); + }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + when( + mockSystemServicesManager.requestCameraPermissions(any), + ).thenAnswer((_) async { + cameraPermissionsRequested = true; + return null; + }); + return mockSystemServicesManager; + }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.startListeningForDeviceOrientationChange()).thenAnswer(( + _, + ) async { + startedListeningForDeviceOrientationChanges = true; + }); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, + newAspectRatioStrategy: ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockAspectRatioStrategy(); + }, + createWithOnePreferredSizeResolutionFilter: ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionFilter(); + }, + fromCamera2CameraInfo: ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo camera2cameraInfo = + MockCamera2CameraInfo(); + when( + camera2cameraInfo.getCameraCharacteristic( + mockCameraCharacteristicsKey, + ), + ).thenAnswer((_) async => testSensorOrientation); + return camera2cameraInfo; + }, + newCameraSize: ({ + required int width, + required int height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockCameraSize(); + }, sensorOrientationCameraCharacteristics: () { return mockCameraCharacteristicsKey; }, - lowerQualityOrHigherThanFallbackStrategy: - ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, + lowerQualityOrHigherThanFallbackStrategy: ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, ); camera.processCameraProvider = mockProcessCameraProvider; @@ -1128,226 +1091,207 @@ void main() { // Tell plugin to create mock/detached objects and stub method calls for the // testing of createCamera. camera.proxy = CameraXProxy( - getInstanceProcessCameraProvider: - ({ - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) async { - return mockProcessCameraProvider; - }, - newCameraSelector: - ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return MockCameraSelector(); - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } - - return mockBackCameraSelector; - }, - newPreview: - ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockPreview; - }, - newImageCapture: - ({ - int? targetRotation, - CameraXFlashMode? flashMode, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageCapture; - }, - newRecorder: - ({ - int? aspectRatio, - int? targetVideoEncodingBitRate, - QualitySelector? qualitySelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockRecorder; - }, - withOutputVideoCapture: - ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockVideoCapture; - }, - newImageAnalysis: - ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageAnalysis; - }, - newResolutionStrategy: - ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionStrategy(); - }, - newResolutionSelector: - ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionSelector(); - }, - fromQualitySelector: - ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockQualitySelector(); - }, - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, - newDeviceOrientationManager: - ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, - newAspectRatioStrategy: - ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockAspectRatioStrategy(); - }, - createWithOnePreferredSizeResolutionFilter: - ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionFilter(); - }, - fromCamera2CameraInfo: - ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - when( - mockCamera2CameraInfo.getCameraCharacteristic( - mockCameraCharacteristicsKey, - ), - ).thenAnswer((_) async => testSensorOrientation); - return mockCamera2CameraInfo; - }, - newCameraSize: - ({ - required int width, - required int height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockCameraSize(); - }, + getInstanceProcessCameraProvider: ({ + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) async { + return mockProcessCameraProvider; + }, + newCameraSelector: ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return MockCameraSelector(); + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } + + return mockBackCameraSelector; + }, + newPreview: ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockPreview; + }, + newImageCapture: ({ + int? targetRotation, + CameraXFlashMode? flashMode, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageCapture; + }, + newRecorder: ({ + int? aspectRatio, + int? targetVideoEncodingBitRate, + QualitySelector? qualitySelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockRecorder; + }, + withOutputVideoCapture: ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockVideoCapture; + }, + newImageAnalysis: ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageAnalysis; + }, + newResolutionStrategy: ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionStrategy(); + }, + newResolutionSelector: ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionSelector(); + }, + fromQualitySelector: ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockQualitySelector(); + }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, + newAspectRatioStrategy: ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockAspectRatioStrategy(); + }, + createWithOnePreferredSizeResolutionFilter: ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionFilter(); + }, + fromCamera2CameraInfo: ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + when( + mockCamera2CameraInfo.getCameraCharacteristic( + mockCameraCharacteristicsKey, + ), + ).thenAnswer((_) async => testSensorOrientation); + return mockCamera2CameraInfo; + }, + newCameraSize: ({ + required int width, + required int height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockCameraSize(); + }, sensorOrientationCameraCharacteristics: () { return mockCameraCharacteristicsKey; }, - lowerQualityOrHigherThanFallbackStrategy: - ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, + lowerQualityOrHigherThanFallbackStrategy: ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, ); when( @@ -1477,11 +1421,9 @@ void main() { continue; } - final CameraSize? previewSize = await camera - .preview! - .resolutionSelector! - .resolutionStrategy! - .getBoundSize(); + final CameraSize? previewSize = + await camera.preview!.resolutionSelector!.resolutionStrategy! + .getBoundSize(); expect(previewSize?.width, equals(expectedBoundSize.width)); expect(previewSize?.height, equals(expectedBoundSize.height)); expect( @@ -1490,11 +1432,9 @@ void main() { ResolutionStrategyFallbackRule.closestLowerThenHigher, ); - final CameraSize? imageCaptureSize = await camera - .imageCapture! - .resolutionSelector! - .resolutionStrategy! - .getBoundSize(); + final CameraSize? imageCaptureSize = + await camera.imageCapture!.resolutionSelector!.resolutionStrategy! + .getBoundSize(); expect(imageCaptureSize?.width, equals(expectedBoundSize.width)); expect(imageCaptureSize?.height, equals(expectedBoundSize.height)); expect( @@ -1503,11 +1443,9 @@ void main() { ResolutionStrategyFallbackRule.closestLowerThenHigher, ); - final CameraSize? imageAnalysisSize = await camera - .imageAnalysis! - .resolutionSelector! - .resolutionStrategy! - .getBoundSize(); + final CameraSize? imageAnalysisSize = + await camera.imageAnalysis!.resolutionSelector!.resolutionStrategy! + .getBoundSize(); expect(imageAnalysisSize?.width, equals(expectedBoundSize.width)); expect(imageAnalysisSize?.height, equals(expectedBoundSize.height)); expect( @@ -1570,17 +1508,16 @@ void main() { CameraSize? lastSetPreferredSize; camera.proxy = getProxyForTestingResolutionPreset( mockProcessCameraProvider, - createWithOnePreferredSizeResolutionFilter: - ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - lastSetPreferredSize = preferredSize; - return MockResolutionFilter(); - }, + createWithOnePreferredSizeResolutionFilter: ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + lastSetPreferredSize = preferredSize; + return MockResolutionFilter(); + }, ); when( @@ -1661,11 +1598,9 @@ void main() { equals(expectedPreferredResolution.height), ); - final CameraSize? imageCaptureSize = await camera - .imageCapture! - .resolutionSelector! - .resolutionStrategy! - .getBoundSize(); + final CameraSize? imageCaptureSize = + await camera.imageCapture!.resolutionSelector!.resolutionStrategy! + .getBoundSize(); expect( imageCaptureSize?.width, equals(expectedPreferredResolution.width), @@ -1675,11 +1610,9 @@ void main() { equals(expectedPreferredResolution.height), ); - final CameraSize? imageAnalysisSize = await camera - .imageAnalysis! - .resolutionSelector! - .resolutionStrategy! - .getBoundSize(); + final CameraSize? imageAnalysisSize = + await camera.imageAnalysis!.resolutionSelector!.resolutionStrategy! + .getBoundSize(); expect( imageAnalysisSize?.width, equals(expectedPreferredResolution.width), @@ -1781,18 +1714,14 @@ void main() { continue; } - final AspectRatioStrategy previewStrategy = await camera - .preview! - .resolutionSelector! - .getAspectRatioStrategy(); - final AspectRatioStrategy imageCaptureStrategy = await camera - .imageCapture! - .resolutionSelector! - .getAspectRatioStrategy(); - final AspectRatioStrategy imageAnalysisStrategy = await camera - .imageCapture! - .resolutionSelector! - .getAspectRatioStrategy(); + final AspectRatioStrategy previewStrategy = + await camera.preview!.resolutionSelector!.getAspectRatioStrategy(); + final AspectRatioStrategy imageCaptureStrategy = + await camera.imageCapture!.resolutionSelector! + .getAspectRatioStrategy(); + final AspectRatioStrategy imageAnalysisStrategy = + await camera.imageCapture!.resolutionSelector! + .getAspectRatioStrategy(); // Check aspect ratio. expect( @@ -1860,30 +1789,28 @@ void main() { final MockQualitySelector mockQualitySelector = MockQualitySelector(); camera.proxy = getProxyForTestingResolutionPreset( mockProcessCameraProvider, - lowerQualityOrHigherThanFallbackStrategy: - ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - fallbackStrategyVideoQuality = quality; - return mockFallbackStrategy; - }, - fromQualitySelector: - ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - qualitySelectorVideoQuality = quality; - setFallbackStrategy = fallbackStrategy; - return mockQualitySelector; - }, + lowerQualityOrHigherThanFallbackStrategy: ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + fallbackStrategyVideoQuality = quality; + return mockFallbackStrategy; + }, + fromQualitySelector: ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + qualitySelectorVideoQuality = quality; + setFallbackStrategy = fallbackStrategy; + return mockQualitySelector; + }, ); when( @@ -1966,24 +1893,21 @@ void main() { // UI orientation. camera.proxy = getProxyForTestingResolutionPreset( mockProcessCameraProvider, - newPreview: - ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockPreview mockPreview = MockPreview(); - when( - mockPreview.surfaceProducerHandlesCropAndRotation(), - ).thenAnswer((_) async => testHandlesCropAndRotation); - when( - mockPreview.resolutionSelector, - ).thenReturn(resolutionSelector); - return mockPreview; - }, + newPreview: ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockPreview mockPreview = MockPreview(); + when( + mockPreview.surfaceProducerHandlesCropAndRotation(), + ).thenAnswer((_) async => testHandlesCropAndRotation); + when(mockPreview.resolutionSelector).thenReturn(resolutionSelector); + return mockPreview; + }, ); when( @@ -2061,21 +1985,20 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => Future.value(mockProcessCameraProvider), - newCameraSelector: - ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return mockFrontCameraSelector; - case _: - return mockBackCameraSelector; - } - }, + newCameraSelector: ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return mockFrontCameraSelector; + case _: + return mockBackCameraSelector; + } + }, newPreview: ({ int? targetRotation, @@ -2158,21 +2081,20 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockQualitySelector(), - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, newSystemServicesManager: ({ required void Function(SystemServicesManager, String) onCameraError, @@ -2181,22 +2103,21 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockSystemServicesManager(), - newDeviceOrientationManager: - ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, newAspectRatioStrategy: ({ required AspectRatio preferredAspectRatio, @@ -2214,21 +2135,20 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockResolutionFilter(), - fromCamera2CameraInfo: - ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo mockCamera2CameraInfo = - MockCamera2CameraInfo(); - when( - mockCamera2CameraInfo.getCameraCharacteristic(any), - ).thenAnswer((_) async => 90); - return mockCamera2CameraInfo; - }, + fromCamera2CameraInfo: ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo mockCamera2CameraInfo = + MockCamera2CameraInfo(); + when( + mockCamera2CameraInfo.getCameraCharacteristic(any), + ).thenAnswer((_) async => 90); + return mockCamera2CameraInfo; + }, newCameraSize: ({ required int width, @@ -2238,8 +2158,8 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockCameraSize(), - sensorOrientationCameraCharacteristics: () => - MockCameraCharacteristicsKey(), + sensorOrientationCameraCharacteristics: + () => MockCameraCharacteristicsKey(), ); final CameraInitializedEvent testCameraInitializedEvent = @@ -2299,25 +2219,24 @@ void main() { bool stoppedListeningForDeviceOrientationChange = false; final AndroidCameraCameraX camera = AndroidCameraCameraX(); camera.proxy = CameraXProxy( - newDeviceOrientationManager: - ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager mockDeviceOrientationManager = - MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager - .stopListeningForDeviceOrientationChange(), - ).thenAnswer((_) async { - stoppedListeningForDeviceOrientationChange = true; - }); - return mockDeviceOrientationManager; - }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager mockDeviceOrientationManager = + MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager + .stopListeningForDeviceOrientationChange(), + ).thenAnswer((_) async { + stoppedListeningForDeviceOrientationChange = true; + }); + return mockDeviceOrientationManager; + }, ); camera.preview = MockPreview(); @@ -2397,22 +2316,20 @@ void main() { StreamQueue(eventStream); camera.proxy = CameraXProxy( - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.onCameraError, - ).thenReturn(onCameraError); - return mockSystemServicesManager; - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.onCameraError, + ).thenReturn(onCameraError); + return mockSystemServicesManager; + }, ); camera.systemServicesManager.onCameraError( @@ -2435,30 +2352,29 @@ void main() { 'onDeviceOrientationChanged stream emits changes in device orientation detected by system services', () async { final AndroidCameraCameraX camera = AndroidCameraCameraX(); - final Stream eventStream = camera - .onDeviceOrientationChanged(); + final Stream eventStream = + camera.onDeviceOrientationChanged(); final StreamQueue streamQueue = StreamQueue(eventStream); const DeviceOrientationChangedEvent testEvent = DeviceOrientationChangedEvent(DeviceOrientation.portraitDown); camera.proxy = CameraXProxy( - newDeviceOrientationManager: - ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager mockDeviceOrientationManager = - MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager.onDeviceOrientationChanged, - ).thenReturn(onDeviceOrientationChanged); - return mockDeviceOrientationManager; - }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager mockDeviceOrientationManager = + MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager.onDeviceOrientationChanged, + ).thenReturn(onDeviceOrientationChanged); + return mockDeviceOrientationManager; + }, ); camera.deviceOrientationManager.onDeviceOrientationChanged( @@ -2570,21 +2486,20 @@ void main() { // track camera state once preview is bound to the lifecycle and needed to // test for expected updates. camera.proxy = CameraXProxy( - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); when( @@ -2679,21 +2594,20 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -2702,44 +2616,38 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: - ({ - required void Function( - VideoRecordEventListener, - VideoRecordEvent, - ) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -2845,21 +2753,20 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -2868,44 +2775,38 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: - ({ - required void Function( - VideoRecordEventListener, - VideoRecordEvent, - ) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -3011,21 +2912,20 @@ void main() { // Tell plugin to create detached Analyzer for testing. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -3034,57 +2934,50 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: - ({ - required void Function( - VideoRecordEventListener, - VideoRecordEvent, - ) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, - newAnalyzer: - ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockAnalyzer(); - }, + newAnalyzer: ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockAnalyzer(); + }, ); const int cameraId = 17; @@ -3092,8 +2985,9 @@ void main() { Completer(); final VideoCaptureOptions videoCaptureOptions = VideoCaptureOptions( cameraId, - streamCallback: (CameraImageData imageData) => - imageDataCompleter.complete(imageData), + streamCallback: + (CameraImageData imageData) => + imageDataCompleter.complete(imageData), ); // Mock method calls. @@ -3165,21 +3059,20 @@ void main() { // Tell plugin to mock call to get current video orientation and mock Camera2CameraInfo retrieval. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -3187,63 +3080,57 @@ void main() { BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) => cameraInfo == initialCameraInfo - ? mockCamera2CameraInfo - : MockCamera2CameraInfo(), - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newDeviceOrientationManager: - ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager - mockDeviceOrientationManager = MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager.getDefaultDisplayRotation(), - ).thenAnswer((_) async => defaultTargetRotation); - return mockDeviceOrientationManager; - }, - newVideoRecordEventListener: - ({ - required void Function( - VideoRecordEventListener, - VideoRecordEvent, - ) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + }) => + cameraInfo == initialCameraInfo + ? mockCamera2CameraInfo + : MockCamera2CameraInfo(), + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager mockDeviceOrientationManager = + MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager.getDefaultDisplayRotation(), + ).thenAnswer((_) async => defaultTargetRotation); + return mockDeviceOrientationManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -3561,21 +3448,20 @@ void main() { // Tell plugin to create detached camera state observers. camera.proxy = CameraXProxy( - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); when( @@ -3618,22 +3504,21 @@ void main() { // Tell plugin to mock call to get current photo orientation. camera.proxy = CameraXProxy( - newDeviceOrientationManager: - ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager mockDeviceOrientationManager = - MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager.getDefaultDisplayRotation(), - ).thenAnswer((_) async => defaultTargetRotation); - return mockDeviceOrientationManager; - }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager mockDeviceOrientationManager = + MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager.getDefaultDisplayRotation(), + ).thenAnswer((_) async => defaultTargetRotation); + return mockDeviceOrientationManager; + }, ); when( @@ -3968,21 +3853,20 @@ void main() { // Tell plugin to create detached Analyzer for testing. camera.proxy = CameraXProxy( - newAnalyzer: - ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); // Set directly for test versus calling createCamera. @@ -4029,21 +3913,20 @@ void main() { // Tell plugin to create detached Analyzer for testing. camera.proxy = CameraXProxy( - newAnalyzer: - ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); // Set directly for test versus calling createCamera. @@ -4104,36 +3987,34 @@ void main() { // Tell plugin to create detached Analyzer for testing. camera.proxy = CameraXProxy( - newAnalyzer: - ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); // Set directly for test versus calling createCamera. @@ -4265,22 +4146,21 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockAnalyzer(), - newDeviceOrientationManager: - ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getDefaultDisplayRotation()).thenAnswer((_) async { - return defaultTargetRotation; - }); - return manager; - }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getDefaultDisplayRotation()).thenAnswer((_) async { + return defaultTargetRotation; + }); + return manager; + }, ); when( @@ -4416,28 +4296,28 @@ void main() { BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) => cameraControl == mockCameraControl - ? mockCamera2CameraControl - : Camera2CameraControl.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ), - newCaptureRequestOptions: - ({ - required Map options, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCaptureRequestOptions mockCaptureRequestOptions = - MockCaptureRequestOptions(); - options.forEach((CaptureRequestKey key, Object? value) { - when( - mockCaptureRequestOptions.getCaptureRequestOption(key), - ).thenAnswer((_) async => value); - }); - return mockCaptureRequestOptions; - }, + }) => + cameraControl == mockCameraControl + ? mockCamera2CameraControl + : Camera2CameraControl.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ), + newCaptureRequestOptions: ({ + required Map options, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCaptureRequestOptions mockCaptureRequestOptions = + MockCaptureRequestOptions(); + options.forEach((CaptureRequestKey key, Object? value) { + when( + mockCaptureRequestOptions.getCaptureRequestOption(key), + ).thenAnswer((_) async => value); + }); + return mockCaptureRequestOptions; + }, controlAELockCaptureRequest: () => controlAELockKey, ); @@ -4503,19 +4383,18 @@ void main() { MeteringMode? actionBuilderMeteringMode; MeteringPoint? actionBuilderMeteringPoint; camera.proxy = getProxyForExposureAndFocus( - withModeFocusMeteringActionBuilder: - ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + withModeFocusMeteringActionBuilder: ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify nothing happens if no current focus and metering action has been @@ -4628,36 +4507,34 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: - ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(exposurePointX, exposurePointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: - ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(exposurePointX, exposurePointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify current auto-exposure metering point is removed if previously set. @@ -4769,36 +4646,34 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: - ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(exposurePointX, exposurePointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: - ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(exposurePointX, exposurePointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); await camera.setExposurePoint(cameraId, exposurePoint); @@ -5048,19 +4923,18 @@ void main() { MeteringMode? actionBuilderMeteringMode; MeteringPoint? actionBuilderMeteringPoint; camera.proxy = getProxyForExposureAndFocus( - withModeFocusMeteringActionBuilder: - ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + withModeFocusMeteringActionBuilder: ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify nothing happens if no current focus and metering action has been @@ -5173,36 +5047,34 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: - ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(focusPointX, focusPointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: - ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(focusPointX, focusPointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify current auto-exposure metering point is removed if previously set. @@ -5307,36 +5179,34 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: - ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(focusPointX, focusPointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: - ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(focusPointX, focusPointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); await camera.setFocusPoint(cameraId, focusPoint); @@ -5474,40 +5344,39 @@ void main() { camera.proxy = getProxyForSettingFocusandExposurePoints( mockCameraControl, mockCamera2CameraControl, - newDisplayOrientedMeteringPointFactory: - ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(exposurePointX, exposurePointY), - ).thenAnswer((_) async { - final MeteringPoint createdMeteringPoint = - MeteringPoint.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ); - createdMeteringPoints.add(createdMeteringPoint); - return createdMeteringPoint; - }); - when(mockFactory.createPointWithSize(0.5, 0.5, 1)).thenAnswer(( - _, - ) async { - final MeteringPoint createdMeteringPoint = - MeteringPoint.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ); - createdMeteringPoints.add(createdMeteringPoint); - return createdMeteringPoint; - }); - return mockFactory; - }, + newDisplayOrientedMeteringPointFactory: ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(exposurePointX, exposurePointY), + ).thenAnswer((_) async { + final MeteringPoint createdMeteringPoint = + MeteringPoint.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ); + createdMeteringPoints.add(createdMeteringPoint); + return createdMeteringPoint; + }); + when(mockFactory.createPointWithSize(0.5, 0.5, 1)).thenAnswer(( + _, + ) async { + final MeteringPoint createdMeteringPoint = + MeteringPoint.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ); + createdMeteringPoints.add(createdMeteringPoint); + return createdMeteringPoint; + }); + return mockFactory; + }, ); // Make setting focus and metering action successful for test. @@ -6154,21 +6023,20 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockAnalyzer(), - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); when( @@ -6227,21 +6095,20 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6250,41 +6117,38 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: - ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6368,21 +6232,20 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6391,41 +6254,38 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: - ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6509,21 +6369,20 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6532,41 +6391,38 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: - ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6655,36 +6511,34 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newAnalyzer: - ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6693,41 +6547,38 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: - ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6820,36 +6671,34 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newAnalyzer: - ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6858,41 +6707,38 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: - ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6977,36 +6823,34 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newAnalyzer: - ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -7015,41 +6859,38 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: - ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart index 49f6b45aa9f..8a709e6beff 100644 --- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart +++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart @@ -2070,14 +2070,16 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i2.CameraSelector Function() get defaultBackCameraCameraSelector => (super.noSuchMethod( Invocation.getter(#defaultBackCameraCameraSelector), - returnValue: () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultBackCameraCameraSelector), - ), - returnValueForMissingStub: () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultBackCameraCameraSelector), - ), + returnValue: + () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultBackCameraCameraSelector), + ), + returnValueForMissingStub: + () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultBackCameraCameraSelector), + ), ) as _i2.CameraSelector Function()); @@ -2085,14 +2087,16 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i2.CameraSelector Function() get defaultFrontCameraCameraSelector => (super.noSuchMethod( Invocation.getter(#defaultFrontCameraCameraSelector), - returnValue: () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultFrontCameraCameraSelector), - ), - returnValueForMissingStub: () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultFrontCameraCameraSelector), - ), + returnValue: + () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultFrontCameraCameraSelector), + ), + returnValueForMissingStub: + () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultFrontCameraCameraSelector), + ), ) as _i2.CameraSelector Function()); @@ -2101,14 +2105,20 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { get highestAvailableStrategyResolutionStrategy => (super.noSuchMethod( Invocation.getter(#highestAvailableStrategyResolutionStrategy), - returnValue: () => _FakeResolutionStrategy_24( - this, - Invocation.getter(#highestAvailableStrategyResolutionStrategy), - ), - returnValueForMissingStub: () => _FakeResolutionStrategy_24( - this, - Invocation.getter(#highestAvailableStrategyResolutionStrategy), - ), + returnValue: + () => _FakeResolutionStrategy_24( + this, + Invocation.getter( + #highestAvailableStrategyResolutionStrategy, + ), + ), + returnValueForMissingStub: + () => _FakeResolutionStrategy_24( + this, + Invocation.getter( + #highestAvailableStrategyResolutionStrategy, + ), + ), ) as _i2.ResolutionStrategy Function()); @@ -2119,18 +2129,20 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { Invocation.getter( #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, ), - returnValue: () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, - ), - ), - returnValueForMissingStub: () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, - ), - ), + returnValue: + () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, + ), + ), + returnValueForMissingStub: + () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, + ), + ), ) as _i2.AspectRatioStrategy Function()); @@ -2141,18 +2153,20 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { Invocation.getter( #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, ), - returnValue: () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, - ), - ), - returnValueForMissingStub: () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, - ), - ), + returnValue: + () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, + ), + ), + returnValueForMissingStub: + () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, + ), + ), ) as _i2.AspectRatioStrategy Function()); @@ -2160,14 +2174,16 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i2.CaptureRequestKey Function() get controlAELockCaptureRequest => (super.noSuchMethod( Invocation.getter(#controlAELockCaptureRequest), - returnValue: () => _FakeCaptureRequestKey_34( - this, - Invocation.getter(#controlAELockCaptureRequest), - ), - returnValueForMissingStub: () => _FakeCaptureRequestKey_34( - this, - Invocation.getter(#controlAELockCaptureRequest), - ), + returnValue: + () => _FakeCaptureRequestKey_34( + this, + Invocation.getter(#controlAELockCaptureRequest), + ), + returnValueForMissingStub: + () => _FakeCaptureRequestKey_34( + this, + Invocation.getter(#controlAELockCaptureRequest), + ), ) as _i2.CaptureRequestKey Function()); @@ -2176,18 +2192,20 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { get infoSupportedHardwareLevelCameraCharacteristics => (super.noSuchMethod( Invocation.getter(#infoSupportedHardwareLevelCameraCharacteristics), - returnValue: () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter( - #infoSupportedHardwareLevelCameraCharacteristics, - ), - ), - returnValueForMissingStub: () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter( - #infoSupportedHardwareLevelCameraCharacteristics, - ), - ), + returnValue: + () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter( + #infoSupportedHardwareLevelCameraCharacteristics, + ), + ), + returnValueForMissingStub: + () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter( + #infoSupportedHardwareLevelCameraCharacteristics, + ), + ), ) as _i2.CameraCharacteristicsKey Function()); @@ -2196,14 +2214,16 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { get sensorOrientationCameraCharacteristics => (super.noSuchMethod( Invocation.getter(#sensorOrientationCameraCharacteristics), - returnValue: () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter(#sensorOrientationCameraCharacteristics), - ), - returnValueForMissingStub: () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter(#sensorOrientationCameraCharacteristics), - ), + returnValue: + () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter(#sensorOrientationCameraCharacteristics), + ), + returnValueForMissingStub: + () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter(#sensorOrientationCameraCharacteristics), + ), ) as _i2.CameraCharacteristicsKey Function()); diff --git a/packages/camera/camera_android_camerax/test/preview_rotation_test.dart b/packages/camera/camera_android_camerax/test/preview_rotation_test.dart index 71ac413ae22..e6921b29077 100644 --- a/packages/camera/camera_android_camerax/test/preview_rotation_test.dart +++ b/packages/camera/camera_android_camerax/test/preview_rotation_test.dart @@ -106,21 +106,20 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, }) async => mockProcessCameraProvider, newCameraSelector: createCameraSelector, - newPreview: - ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockPreview preview = MockPreview(); - when( - preview.surfaceProducerHandlesCropAndRotation(), - ).thenAnswer((_) async => handlesCropAndRotation); - return preview; - }, + newPreview: ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockPreview preview = MockPreview(); + when( + preview.surfaceProducerHandlesCropAndRotation(), + ).thenAnswer((_) async => handlesCropAndRotation); + return preview; + }, newImageCapture: ({ int? targetRotation, @@ -141,121 +140,110 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockRecorder(), - withOutputVideoCapture: - ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockVideoCapture(); - }, - newImageAnalysis: - ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockImageAnalysis(); - }, - newResolutionStrategy: - ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionStrategy(); - }, - newResolutionSelector: - ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionSelector(); - }, - lowerQualityOrHigherThanFallbackStrategy: - ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, - lowerQualityThanFallbackStrategy: - ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, - fromCamera2CameraInfo: - ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo camera2cameraInfo = - MockCamera2CameraInfo(); - when( - camera2cameraInfo.getCameraCharacteristic(any), - ).thenAnswer((_) async => 90); - return camera2cameraInfo; - }, - fromQualitySelector: - ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockQualitySelector(); - }, - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, + withOutputVideoCapture: ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockVideoCapture(); + }, + newImageAnalysis: ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockImageAnalysis(); + }, + newResolutionStrategy: ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionStrategy(); + }, + newResolutionSelector: ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionSelector(); + }, + lowerQualityOrHigherThanFallbackStrategy: ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, + lowerQualityThanFallbackStrategy: ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, + fromCamera2CameraInfo: ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo camera2cameraInfo = MockCamera2CameraInfo(); + when( + camera2cameraInfo.getCameraCharacteristic(any), + ).thenAnswer((_) async => 90); + return camera2cameraInfo; + }, + fromQualitySelector: ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockQualitySelector(); + }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, newDeviceOrientationManager: ({ required void Function(DeviceOrientationManager, String) @@ -265,35 +253,33 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => deviceOrientationManager, - newAspectRatioStrategy: - ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockAspectRatioStrategy mockAspectRatioStrategy = - MockAspectRatioStrategy(); - when( - mockAspectRatioStrategy.getFallbackRule(), - ).thenAnswer((_) async => fallbackRule); - when( - mockAspectRatioStrategy.getPreferredAspectRatio(), - ).thenAnswer((_) async => preferredAspectRatio); - return mockAspectRatioStrategy; - }, - createWithOnePreferredSizeResolutionFilter: - ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionFilter(); - }, + newAspectRatioStrategy: ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockAspectRatioStrategy mockAspectRatioStrategy = + MockAspectRatioStrategy(); + when( + mockAspectRatioStrategy.getFallbackRule(), + ).thenAnswer((_) async => fallbackRule); + when( + mockAspectRatioStrategy.getPreferredAspectRatio(), + ).thenAnswer((_) async => preferredAspectRatio); + return mockAspectRatioStrategy; + }, + createWithOnePreferredSizeResolutionFilter: ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionFilter(); + }, ); /// Returns CameraXProxy used to mock all calls to native Android in @@ -507,15 +493,16 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: () => - Future.value(Surface.rotation0), + getUiOrientation: + () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: + () => Future.value(Surface.rotation0), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -560,15 +547,16 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: () => - Future.value(Surface.rotation90), + getUiOrientation: + () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: + () => Future.value(Surface.rotation90), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -611,15 +599,16 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: () => - Future.value(Surface.rotation180), + getUiOrientation: + () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: + () => Future.value(Surface.rotation180), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -662,15 +651,16 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: () => - Future.value(Surface.rotation270), + getUiOrientation: + () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: + () => Future.value(Surface.rotation270), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -753,15 +743,16 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: () async => - _serializeDeviceOrientation(DeviceOrientation.portraitUp), - getDefaultDisplayRotation: () => - Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: + () async => + _serializeDeviceOrientation(DeviceOrientation.portraitUp), + getDefaultDisplayRotation: + () => Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -804,15 +795,17 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: () async => - _serializeDeviceOrientation(DeviceOrientation.landscapeLeft), - getDefaultDisplayRotation: () => - Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: + () async => _serializeDeviceOrientation( + DeviceOrientation.landscapeLeft, + ), + getDefaultDisplayRotation: + () => Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -855,15 +848,16 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: () async => - _serializeDeviceOrientation(DeviceOrientation.portraitDown), - getDefaultDisplayRotation: () => - Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: + () async => + _serializeDeviceOrientation(DeviceOrientation.portraitDown), + getDefaultDisplayRotation: + () => Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -906,15 +900,17 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: () async => - _serializeDeviceOrientation(DeviceOrientation.landscapeRight), - getDefaultDisplayRotation: () => - Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: + () async => _serializeDeviceOrientation( + DeviceOrientation.landscapeRight, + ), + getDefaultDisplayRotation: + () => Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1001,8 +997,8 @@ void main() { ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1044,9 +1040,10 @@ void main() { final RotatedBox rotatedBox = tester.widget( find.byType(RotatedBox), ); - final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = + rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect(rotatedBox.child, isA()); expect((rotatedBox.child! as Texture).textureId, cameraId); expect( @@ -1096,13 +1093,13 @@ void main() { getUiOrientation: /* initial device orientation is irrelevant */ () async => _serializeDeviceOrientation(DeviceOrientation.portraitUp), - getDefaultDisplayRotation: () => - Future.value(testInitialDefaultDisplayRotation), + getDefaultDisplayRotation: + () => Future.value(testInitialDefaultDisplayRotation), ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1140,9 +1137,10 @@ void main() { final RotatedBox rotatedBox = tester.widget( find.byType(RotatedBox), ); - final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = + rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect(rotatedBox.child, isA()); expect((rotatedBox.child! as Texture).textureId, cameraId); expect( @@ -1191,8 +1189,8 @@ void main() { mockCameraSelector: mockFrontCameraSelector, sensorRotationDegrees: 270, ); - proxyGetDefaultDisplayRotation = () => - Future.value(Surface.rotation0); + proxyGetDefaultDisplayRotation = + () => Future.value(Surface.rotation0); // Media settings to create camera; irrelevant for test. testMediaSettings = const MediaSettings(); @@ -1209,13 +1207,14 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: () async => - _serializeDeviceOrientation(DeviceOrientation.portraitUp), + getUiOrientation: + () async => + _serializeDeviceOrientation(DeviceOrientation.portraitUp), ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1268,13 +1267,15 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: () async => - _serializeDeviceOrientation(DeviceOrientation.landscapeRight), + getUiOrientation: + () async => _serializeDeviceOrientation( + DeviceOrientation.landscapeRight, + ), ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1327,13 +1328,15 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: () async => - _serializeDeviceOrientation(DeviceOrientation.portraitDown), + getUiOrientation: + () async => _serializeDeviceOrientation( + DeviceOrientation.portraitDown, + ), ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1386,13 +1389,15 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: () async => - _serializeDeviceOrientation(DeviceOrientation.landscapeLeft), + getUiOrientation: + () async => _serializeDeviceOrientation( + DeviceOrientation.landscapeLeft, + ), ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1470,8 +1475,9 @@ void main() { mockCameraSelector: mockFrontCameraSelector, sensorRotationDegrees: 270, ); - proxyGetUiOrientation = () async => - _serializeDeviceOrientation(DeviceOrientation.landscapeLeft); + proxyGetUiOrientation = + () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeLeft); // Media settings to create camera; irrelevant for test. testMediaSettings = const MediaSettings(); @@ -1486,15 +1492,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: () => - Future.value(Surface.rotation0), + getDefaultDisplayRotation: + () => Future.value(Surface.rotation0), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1545,15 +1551,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: () => - Future.value(Surface.rotation90), + getDefaultDisplayRotation: + () => Future.value(Surface.rotation90), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1608,15 +1614,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: () => - Future.value(Surface.rotation180), + getDefaultDisplayRotation: + () => Future.value(Surface.rotation180), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1669,15 +1675,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: () => - Future.value(Surface.rotation270), + getDefaultDisplayRotation: + () => Future.value(Surface.rotation270), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1775,8 +1781,8 @@ void main() { ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1832,9 +1838,10 @@ void main() { checkXAxisIsMirrored(transformedPreviewMatrix); expect((transformedPreview.child! as Texture).textureId, cameraId); - final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = + rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect( clockwiseQuarterTurns, expectedQuarterTurns, @@ -1884,13 +1891,13 @@ void main() { getUiOrientation: /* initial device orientation irrelevant for test */ () async => _serializeDeviceOrientation(DeviceOrientation.landscapeLeft), - getDefaultDisplayRotation: () => - Future.value(Surface.rotation90), + getDefaultDisplayRotation: + () => Future.value(Surface.rotation90), ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1947,9 +1954,10 @@ void main() { checkYAxisIsMirrored(transformedPreviewMatrix); } expect((transformedPreview.child! as Texture).textureId, cameraId); - final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = + rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect( clockwiseQuarterTurns, expectedQuarterTurns, @@ -1992,8 +2000,8 @@ void main() { mockBackCameraSelector = MockCameraSelector(); proxyCreateCameraSelectorForBackCamera = createCameraSelectorForBackCamera(mockBackCameraSelector); - proxyGetDefaultDisplayRotation = () => - Future.value(Surface.rotation270); + proxyGetDefaultDisplayRotation = + () => Future.value(Surface.rotation270); testMediaSettings = const MediaSettings(); }); @@ -2017,13 +2025,14 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForBackCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: + () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test back camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -2075,13 +2084,14 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForBackCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: + () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test back camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -2136,8 +2146,8 @@ void main() { testSensorOrientation = 90; // Create mock for seting initial default display rotation to 180 degrees. - proxyGetDefaultDisplayRotation = () => - Future.value(Surface.rotation90); + proxyGetDefaultDisplayRotation = + () => Future.value(Surface.rotation90); // Media settings to create camera; irrelevant for test. testMediaSettings = const MediaSettings(); @@ -2169,13 +2179,14 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: + () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -2246,13 +2257,14 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: + () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, From dd6d4497b06dd6aa71bdd3f1efa186f02efdc89f Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Thu, 29 May 2025 09:46:09 -0700 Subject: [PATCH 14/53] logging for debugging --- .../flutter/plugins/camerax/PreviewProxyApi.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java index 5ebb5fbb739..9271ea25630 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java @@ -16,6 +16,8 @@ import java.util.Map; import java.util.concurrent.Executors; +import android.util.Log; + /** * ProxyApi implementation for {@link Preview}. This class may handle instantiating native object * instances that are attached to a Dart instance or handle method calls on the associated native @@ -95,6 +97,9 @@ public void setTargetRotation(Preview pigeonInstance, long rotation) { pigeonInstance.setTargetRotation((int) rotation); } + int surfaceRequestNum = 0; + int resultNum = 0; + @NonNull Preview.SurfaceProvider createSurfaceProvider( @NonNull TextureRegistry.SurfaceProducer surfaceProducer, @@ -119,6 +124,7 @@ public void onSurfaceCleanup() { }); // Provide surface. + surfaceProducer.invalidateSurface(); surfaceProducer.setSize( request.getResolution().getWidth(), request.getResolution().getHeight()); Surface flutterSurface = surfaceProducer.getSurface(); @@ -126,6 +132,11 @@ public void onSurfaceCleanup() { flutterSurface, Executors.newSingleThreadExecutor(), (result) -> { + Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); + Log.e("CAMILLE RESULT #:", Integer.toString(resultNum)); + Log.e("CAMILLE SURFACE HASHCODE:", Integer.toString(flutterSurface.hashCode())); + Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); + resultNum++; // See // https://developer.android.com/reference/androidx/camera/core/SurfaceRequest.Result // for documentation. @@ -144,6 +155,11 @@ public void onSurfaceCleanup() { systemServicesManager.onCameraError(getProvideSurfaceErrorDescription(resultCode)); } }); + Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); + Log.e("CAMILLE SURFACE REQUEST #:", Integer.toString(surfaceRequestNum)); + Log.e("CAMILLE SURFACE HASHCODE:", Integer.toString(flutterSurface.hashCode())); + Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); + surfaceRequestNum++; }; } From 071e2b22f4b35b4ff956d2e40a58f19bb5998e69 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Thu, 29 May 2025 10:32:45 -0700 Subject: [PATCH 15/53] debugging logging pt 2 --- .../plugins/camerax/ProcessCameraProviderProxyApi.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java index 05bf25209e4..5546dcb9b35 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java @@ -19,6 +19,8 @@ import kotlin.Unit; import kotlin.jvm.functions.Function1; +import android.util.Log; + /** * ProxyApi implementation for {@link ProcessCameraProvider}. This class may handle instantiating * native object instances that are attached to a Dart instance or handle method calls on the @@ -65,6 +67,7 @@ public Camera bindToLifecycle( @NonNull ProcessCameraProvider pigeonInstance, @NonNull CameraSelector cameraSelector, @NonNull List useCases) { + Log.e("CAMILLE"," BIND CALLED!!!!!!!!!!!!!!!****************************"); final LifecycleOwner lifecycleOwner = getPigeonRegistrar().getLifecycleOwner(); if (lifecycleOwner != null) { return pigeonInstance.bindToLifecycle( @@ -83,6 +86,7 @@ public boolean isBound(ProcessCameraProvider pigeonInstance, @NonNull UseCase us @Override public void unbind( ProcessCameraProvider pigeonInstance, @NonNull List useCases) { + Log.e("CAMILLE"," UNBIND CALLED!!!!!!!!!!!!!!!****************************"); pigeonInstance.unbind(useCases.toArray(new UseCase[0])); } From 3d1456535ad0f3b3fa26d0942c69aa6531b0b04d Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 2 Jun 2025 15:27:54 -0700 Subject: [PATCH 16/53] remove logs and add comment --- .../plugins/camerax/PreviewProxyApi.java | 18 +++--------------- .../camerax/ProcessCameraProviderProxyApi.java | 4 ---- 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java index 9271ea25630..969ec80866c 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java @@ -16,8 +16,6 @@ import java.util.Map; import java.util.concurrent.Executors; -import android.util.Log; - /** * ProxyApi implementation for {@link Preview}. This class may handle instantiating native object * instances that are attached to a Dart instance or handle method calls on the associated native @@ -97,9 +95,6 @@ public void setTargetRotation(Preview pigeonInstance, long rotation) { pigeonInstance.setTargetRotation((int) rotation); } - int surfaceRequestNum = 0; - int resultNum = 0; - @NonNull Preview.SurfaceProvider createSurfaceProvider( @NonNull TextureRegistry.SurfaceProducer surfaceProducer, @@ -132,11 +127,9 @@ public void onSurfaceCleanup() { flutterSurface, Executors.newSingleThreadExecutor(), (result) -> { - Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); - Log.e("CAMILLE RESULT #:", Integer.toString(resultNum)); - Log.e("CAMILLE SURFACE HASHCODE:", Integer.toString(flutterSurface.hashCode())); - Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); - resultNum++; + // RACE CONDITION EXPLANATION: Sometimes, this callback is called after the next SurfaceRequest comes in, + // making a call on line 123 to get a `Surface`, which is the same `Surface` that was (potentially) + // successfully used and should not be re-used. // See // https://developer.android.com/reference/androidx/camera/core/SurfaceRequest.Result // for documentation. @@ -155,11 +148,6 @@ public void onSurfaceCleanup() { systemServicesManager.onCameraError(getProvideSurfaceErrorDescription(resultCode)); } }); - Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); - Log.e("CAMILLE SURFACE REQUEST #:", Integer.toString(surfaceRequestNum)); - Log.e("CAMILLE SURFACE HASHCODE:", Integer.toString(flutterSurface.hashCode())); - Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); - surfaceRequestNum++; }; } diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java index 5546dcb9b35..05bf25209e4 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java @@ -19,8 +19,6 @@ import kotlin.Unit; import kotlin.jvm.functions.Function1; -import android.util.Log; - /** * ProxyApi implementation for {@link ProcessCameraProvider}. This class may handle instantiating * native object instances that are attached to a Dart instance or handle method calls on the @@ -67,7 +65,6 @@ public Camera bindToLifecycle( @NonNull ProcessCameraProvider pigeonInstance, @NonNull CameraSelector cameraSelector, @NonNull List useCases) { - Log.e("CAMILLE"," BIND CALLED!!!!!!!!!!!!!!!****************************"); final LifecycleOwner lifecycleOwner = getPigeonRegistrar().getLifecycleOwner(); if (lifecycleOwner != null) { return pigeonInstance.bindToLifecycle( @@ -86,7 +83,6 @@ public boolean isBound(ProcessCameraProvider pigeonInstance, @NonNull UseCase us @Override public void unbind( ProcessCameraProvider pigeonInstance, @NonNull List useCases) { - Log.e("CAMILLE"," UNBIND CALLED!!!!!!!!!!!!!!!****************************"); pigeonInstance.unbind(useCases.toArray(new UseCase[0])); } From 04ed8079e505f3f725b189333ee66b94c022bec8 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 16 Jun 2025 13:47:37 -0700 Subject: [PATCH 17/53] update wip --- .../java/io/flutter/plugins/camerax/PreviewProxyApi.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java index 969ec80866c..7b1a0c0c03c 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java @@ -119,17 +119,18 @@ public void onSurfaceCleanup() { }); // Provide surface. - surfaceProducer.invalidateSurface(); surfaceProducer.setSize( request.getResolution().getWidth(), request.getResolution().getHeight()); - Surface flutterSurface = surfaceProducer.getSurface(); + Surface flutterSurface = surfaceProducer.getSurface(true); request.provideSurface( flutterSurface, Executors.newSingleThreadExecutor(), (result) -> { - // RACE CONDITION EXPLANATION: Sometimes, this callback is called after the next SurfaceRequest comes in, - // making a call on line 123 to get a `Surface`, which is the same `Surface` that was (potentially) + // RACE CONDITION EXPLANATION for https://github.com/flutter/flutter/pull/169899: + // Sometimes, this callback is called after the next SurfaceRequest comes in, + // making a call on line 122 to get a `Surface`, which is the same `Surface` that was (potentially) // successfully used and should not be re-used. + // // See // https://developer.android.com/reference/androidx/camera/core/SurfaceRequest.Result // for documentation. From 201a6dd825bdd85fa5ccfa58d945100503c616e5 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Fri, 20 Jun 2025 09:24:43 -0700 Subject: [PATCH 18/53] update pr based on engine changes + add tests --- .../java/io/flutter/plugins/camerax/PreviewProxyApi.java | 7 +------ .../test/java/io/flutter/plugins/camerax/PreviewTest.java | 4 ++-- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java index 7b1a0c0c03c..48d94b65e10 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java @@ -121,16 +121,11 @@ public void onSurfaceCleanup() { // Provide surface. surfaceProducer.setSize( request.getResolution().getWidth(), request.getResolution().getHeight()); - Surface flutterSurface = surfaceProducer.getSurface(true); + Surface flutterSurface = surfaceProducer.getForcedNewSurface(); request.provideSurface( flutterSurface, Executors.newSingleThreadExecutor(), (result) -> { - // RACE CONDITION EXPLANATION for https://github.com/flutter/flutter/pull/169899: - // Sometimes, this callback is called after the next SurfaceRequest comes in, - // making a call on line 122 to get a `Surface`, which is the same `Surface` that was (potentially) - // successfully used and should not be re-used. - // // See // https://developer.android.com/reference/androidx/camera/core/SurfaceRequest.Result // for documentation. diff --git a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java index 5c3f3578a24..45b6be96375 100644 --- a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java +++ b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java @@ -103,7 +103,7 @@ TextureRegistry getTextureRegistry() { ArgumentCaptor.forClass(TextureRegistry.SurfaceProducer.Callback.class); when(mockSurfaceRequest.getResolution()).thenReturn(new Size(5, 6)); - when(mockSurfaceProducer.getSurface()).thenReturn(mock(Surface.class)); + when(mockSurfaceProducer.getForcedNewSurface()).thenReturn(mock(Surface.class)); final Preview.SurfaceProvider previewSurfaceProvider = api.createSurfaceProvider(mockSurfaceProducer, mockSystemServicesManager); @@ -155,7 +155,7 @@ TextureRegistry getTextureRegistry() { when(mockSurfaceRequest.getResolution()) .thenReturn(new Size(resolutionWidth, resolutionHeight)); - when(mockSurfaceProducer.getSurface()).thenReturn(mockSurface); + when(mockSurfaceProducer.getForcedNewSurface()).thenReturn(mockSurface); final ArgumentCaptor surfaceCaptor = ArgumentCaptor.forClass(Surface.class); final ArgumentCaptor> consumerCaptor = From 0d6d35b3aeede488d2f336e8d1b2d1c5f773f798 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Fri, 20 Jun 2025 09:49:48 -0700 Subject: [PATCH 19/53] bump version --- packages/camera/camera_android_camerax/CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index be098207753..59270f40eef 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -1,3 +1,9 @@ +## 0.6.20 + +* Ensures a new surface is provided every timethat one is requested to render the camera preview into + to fix pausing and resuming the preview. + + ## 0.6.19 * Changes target rotation of captured images to current default display rotation to fix captured From 2b4241ce719d57aba00db98021c1b94e1c0c19fd Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Tue, 24 Jun 2025 10:35:49 -0700 Subject: [PATCH 20/53] grammatical fixes --- packages/camera/camera_android_camerax/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index 59270f40eef..b55406d9d4f 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.6.20 -* Ensures a new surface is provided every timethat one is requested to render the camera preview into +* Ensures that a new surface is provided every time that one is requested to render the camera preview into to fix pausing and resuming the preview. From 9dab656350ceb2169907d578091e609d767560fb Mon Sep 17 00:00:00 2001 From: Camille Simon <43054281+camsim99@users.noreply.github.com> Date: Tue, 24 Jun 2025 11:05:04 -0700 Subject: [PATCH 21/53] Remove confusing word after preview --- packages/camera/camera_android_camerax/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index b55406d9d4f..f64bd458d71 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.6.20 -* Ensures that a new surface is provided every time that one is requested to render the camera preview into +* Ensures that a new surface is provided every time that one is requested to render the camera preview to fix pausing and resuming the preview. From 2ce311d629d7695e0686c18ecce76e65db606d59 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 28 Jul 2025 10:01:24 -0700 Subject: [PATCH 22/53] Update min flutter version --- packages/camera/camera_android_camerax/CHANGELOG.md | 1 + packages/camera/camera_android_camerax/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index f64bd458d71..f9616babd0b 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -2,6 +2,7 @@ * Ensures that a new surface is provided every time that one is requested to render the camera preview to fix pausing and resuming the preview. +* Updates minimum supported SDK version to Flutter 3.32.8. ## 0.6.19 diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml index 09d8688b323..6ca9c1c2987 100644 --- a/packages/camera/camera_android_camerax/pubspec.yaml +++ b/packages/camera/camera_android_camerax/pubspec.yaml @@ -6,7 +6,7 @@ version: 0.6.19 environment: sdk: ^3.7.0 - flutter: ">=3.29.0" + flutter: ">=3.32.8" flutter: plugin: From f097100a429cdb0aaecc4cb49560aaa385982285 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 28 Jul 2025 10:12:13 -0700 Subject: [PATCH 23/53] add 3.32.8 version --- script/tool/lib/src/common/core.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/script/tool/lib/src/common/core.dart b/script/tool/lib/src/common/core.dart index 484d864aecf..f4503693ad3 100644 --- a/script/tool/lib/src/common/core.dart +++ b/script/tool/lib/src/common/core.dart @@ -91,6 +91,7 @@ final Map _dartSdkForFlutterSdk = { Version(3, 29, 0): Version(3, 7, 0), Version(3, 29, 3): Version(3, 7, 2), Version(3, 32, 0): Version(3, 8, 0), + Version(3, 32, 8): Version(3, 8, 1), }; /// Returns the version of the Dart SDK that shipped with the given Flutter From a1643632e9474bf884cc6d6da1ac5271b3e22002 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 28 Jul 2025 11:28:19 -0700 Subject: [PATCH 24/53] bump sdk version --- packages/camera/camera_android_camerax/CHANGELOG.md | 2 +- packages/camera/camera_android_camerax/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index f9616babd0b..62cb23a646f 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -2,7 +2,7 @@ * Ensures that a new surface is provided every time that one is requested to render the camera preview to fix pausing and resuming the preview. -* Updates minimum supported SDK version to Flutter 3.32.8. +* Updates minimum supported SDK version to Flutter 3.32.8/Dart 3.8.1. ## 0.6.19 diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml index 6ca9c1c2987..c39b599f6bc 100644 --- a/packages/camera/camera_android_camerax/pubspec.yaml +++ b/packages/camera/camera_android_camerax/pubspec.yaml @@ -5,7 +5,7 @@ issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+ version: 0.6.19 environment: - sdk: ^3.7.0 + sdk: ^3.8.1 flutter: ">=3.32.8" flutter: From e03328e14333a3d8b573c9022dfef29583a7b30c Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Tue, 29 Jul 2025 10:52:23 -0700 Subject: [PATCH 25/53] format for real --- .../camera_android_camerax/CHANGELOG.md | 1 - .../lib/src/android_camera_camerax.dart | 92 +- .../lib/src/camerax_library.dart | 20 +- .../lib/src/camerax_library.g.dart | 4 +- .../lib/src/image_reader_rotated_preview.dart | 5 +- .../lib/src/rotated_preview_utils.dart | 7 +- .../src/surface_texture_rotated_preview.dart | 5 +- .../camera_android_camerax/pubspec.yaml | 2 +- .../test/android_camera_camerax_test.dart | 3579 +++++++++-------- .../android_camera_camerax_test.mocks.dart | 172 +- .../test/preview_rotation_test.dart | 586 ++- 11 files changed, 2298 insertions(+), 2175 deletions(-) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index 62cb23a646f..493f44c4b67 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -4,7 +4,6 @@ to fix pausing and resuming the preview. * Updates minimum supported SDK version to Flutter 3.32.8/Dart 3.8.1. - ## 0.6.19 * Changes target rotation of captured images to current default display rotation to fix captured diff --git a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart index e52435b3b10..0f0dfb704f9 100644 --- a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart +++ b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart @@ -286,12 +286,14 @@ class AndroidCameraCameraX extends CameraPlatform { // Determine the lens direction by filtering the CameraInfo // TODO(gmackall): replace this with call to CameraInfo.getLensFacing when changes containing that method are available if ((await proxy - .newCameraSelector(requireLensFacing: LensFacing.back) - .filter([cameraInfo])).isNotEmpty) { + .newCameraSelector(requireLensFacing: LensFacing.back) + .filter([cameraInfo])) + .isNotEmpty) { cameraLensDirection = CameraLensDirection.back; } else if ((await proxy - .newCameraSelector(requireLensFacing: LensFacing.front) - .filter([cameraInfo])).isNotEmpty) { + .newCameraSelector(requireLensFacing: LensFacing.front) + .filter([cameraInfo])) + .isNotEmpty) { cameraLensDirection = CameraLensDirection.front; } else { //Skip this CameraInfo as its lens direction is unknown @@ -432,13 +434,13 @@ class AndroidCameraCameraX extends CameraPlatform { .toDouble(); sensorOrientationDegrees = cameraDescription.sensorOrientation.toDouble(); - _handlesCropAndRotation = - await preview!.surfaceProducerHandlesCropAndRotation(); + _handlesCropAndRotation = await preview! + .surfaceProducerHandlesCropAndRotation(); _initialDeviceOrientation = _deserializeDeviceOrientation( await deviceOrientationManager.getUiOrientation(), ); - _initialDefaultDisplayRotation = - await deviceOrientationManager.getDefaultDisplayRotation(); + _initialDefaultDisplayRotation = await deviceOrientationManager + .getDefaultDisplayRotation(); return flutterSurfaceTextureId; } @@ -469,8 +471,8 @@ class AndroidCameraCameraX extends CameraPlatform { ); } - final ResolutionInfo previewResolutionInfo = - (await preview!.getResolutionInfo())!; + final ResolutionInfo previewResolutionInfo = (await preview! + .getResolutionInfo())!; // Mark auto-focus, auto-exposure and setting points for focus & exposure // as available operations as CameraX does its best across devices to @@ -640,10 +642,9 @@ class AndroidCameraCameraX extends CameraPlatform { case FocusMode.auto: // Determine auto-focus point to restore, if any. We do not restore // default auto-focus point if set previously to lock focus. - final MeteringPoint? unLockedFocusPoint = - _defaultFocusPointLocked - ? null - : currentFocusMeteringAction!.meteringPointsAf.first; + final MeteringPoint? unLockedFocusPoint = _defaultFocusPointLocked + ? null + : currentFocusMeteringAction!.meteringPointsAf.first; _defaultFocusPointLocked = false; autoFocusPoint = unLockedFocusPoint; disableAutoCancel = false; @@ -654,10 +655,9 @@ class AndroidCameraCameraX extends CameraPlatform { if (currentFocusMeteringAction != null) { final List possibleCurrentAfPoints = currentFocusMeteringAction!.meteringPointsAf; - lockedFocusPoint = - possibleCurrentAfPoints.isEmpty - ? null - : possibleCurrentAfPoints.first; + lockedFocusPoint = possibleCurrentAfPoints.isEmpty + ? null + : possibleCurrentAfPoints.first; } // If there isn't, lock center of entire sensor area by default. @@ -1487,13 +1487,12 @@ class AndroidCameraCameraX extends CameraPlatform { ); final ResolutionFilter resolutionFilter = proxy .createWithOnePreferredSizeResolutionFilter(preferredSize: boundSize); - final AspectRatioStrategy? aspectRatioStrategy = - aspectRatio == null - ? null - : proxy.newAspectRatioStrategy( - preferredAspectRatio: aspectRatio, - fallbackRule: AspectRatioStrategyFallbackRule.auto, - ); + final AspectRatioStrategy? aspectRatioStrategy = aspectRatio == null + ? null + : proxy.newAspectRatioStrategy( + preferredAspectRatio: aspectRatio, + fallbackRule: AspectRatioStrategyFallbackRule.auto, + ); return proxy.newResolutionSelector( resolutionStrategy: resolutionStrategy, resolutionFilter: resolutionFilter, @@ -1610,17 +1609,17 @@ class AndroidCameraCameraX extends CameraPlatform { // Remove metering point with specified meteringMode from current focus // and metering action, as only one focus or exposure point may be set // at once in this plugin. - final List<(MeteringPoint, MeteringMode)> newMeteringPointInfos = - originalMeteringPoints - .where( - ((MeteringPoint, MeteringMode) meteringPointInfo) => - // meteringPointInfo may technically include points without a - // mode specified, but this logic is safe because this plugin - // only uses points that explicitly have mode - // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. - meteringPointInfo.$2 != meteringMode, - ) - .toList(); + final List<(MeteringPoint, MeteringMode)> + newMeteringPointInfos = originalMeteringPoints + .where( + ((MeteringPoint, MeteringMode) meteringPointInfo) => + // meteringPointInfo may technically include points without a + // mode specified, but this logic is safe because this plugin + // only uses points that explicitly have mode + // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. + meteringPointInfo.$2 != meteringMode, + ) + .toList(); if (newMeteringPointInfos.isEmpty) { // If no other metering points were specified, cancel any previously @@ -1657,17 +1656,16 @@ class AndroidCameraCameraX extends CameraPlatform { final Iterable<(MeteringPoint, MeteringMode)> originalMeteringPoints = _combineMeteringPoints(currentFocusMeteringAction!); - newMeteringPointInfos = - originalMeteringPoints - .where( - ((MeteringPoint, MeteringMode) meteringPointInfo) => - // meteringPointInfo may technically include points without a - // mode specified, but this logic is safe because this plugin - // only uses points that explicitly have mode - // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. - meteringPointInfo.$2 != meteringMode, - ) - .toList(); + newMeteringPointInfos = originalMeteringPoints + .where( + ((MeteringPoint, MeteringMode) meteringPointInfo) => + // meteringPointInfo may technically include points without a + // mode specified, but this logic is safe because this plugin + // only uses points that explicitly have mode + // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. + meteringPointInfo.$2 != meteringMode, + ) + .toList(); } newMeteringPointInfos.add((meteringPoint, meteringMode)); diff --git a/packages/camera/camera_android_camerax/lib/src/camerax_library.dart b/packages/camera/camera_android_camerax/lib/src/camerax_library.dart index 2c0d0a43747..e692d408fa2 100644 --- a/packages/camera/camera_android_camerax/lib/src/camerax_library.dart +++ b/packages/camera/camera_android_camerax/lib/src/camerax_library.dart @@ -37,17 +37,15 @@ void setUpGenerics({ ); camerax.CameraInfo.pigeon_setUpMessageHandlers( - pigeon_newInstance: ( - int sensorRotationDegrees, - camerax.ExposureState exposureState, - ) { - return CameraInfo.detached( - sensorRotationDegrees: sensorRotationDegrees, - exposureState: exposureState, - pigeon_binaryMessenger: pigeonBinaryMessenger, - pigeon_instanceManager: pigeonInstanceManager, - ); - }, + pigeon_newInstance: + (int sensorRotationDegrees, camerax.ExposureState exposureState) { + return CameraInfo.detached( + sensorRotationDegrees: sensorRotationDegrees, + exposureState: exposureState, + pigeon_binaryMessenger: pigeonBinaryMessenger, + pigeon_instanceManager: pigeonInstanceManager, + ); + }, ); } diff --git a/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart b/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart index 5d266c09ce7..0b0ffcb5295 100644 --- a/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart +++ b/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart @@ -384,8 +384,8 @@ class PigeonInstanceManager { final PigeonInternalProxyApiBaseClass? strongInstance = _strongInstances[identifier]; if (strongInstance != null) { - final PigeonInternalProxyApiBaseClass copy = - strongInstance.pigeon_copy(); + final PigeonInternalProxyApiBaseClass copy = strongInstance + .pigeon_copy(); _identifiers[copy] = identifier; _weakInstances[identifier] = WeakReference(copy); diff --git a/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart b/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart index 2cb8f44bf1a..49cf6c48509 100644 --- a/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart +++ b/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart @@ -78,8 +78,9 @@ final class _ImageReaderRotatedPreviewState late StreamSubscription deviceOrientationSubscription; Future _getCurrentDefaultDisplayRotationDegrees() async { - final int currentDefaultDisplayRotationQuarterTurns = - await widget.deviceOrientationManager.getDefaultDisplayRotation(); + final int currentDefaultDisplayRotationQuarterTurns = await widget + .deviceOrientationManager + .getDefaultDisplayRotation(); return getQuarterTurnsFromSurfaceRotationConstant( currentDefaultDisplayRotationQuarterTurns, ) * diff --git a/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart b/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart index cfebe6976d5..ae3152d7ff4 100644 --- a/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart +++ b/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart @@ -15,10 +15,9 @@ int getQuarterTurnsFromSurfaceRotationConstant(int surfaceRotationConstant) { Surface.rotation90 => 3, Surface.rotation180 => 2, Surface.rotation270 => 1, - int() => - throw ArgumentError( - '$surfaceRotationConstant is an unknown Surface rotation constant, so counter-clockwise quarter turns cannot be determined.', - ), + int() => throw ArgumentError( + '$surfaceRotationConstant is an unknown Surface rotation constant, so counter-clockwise quarter turns cannot be determined.', + ), }; } diff --git a/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart b/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart index bdfa3f7d2bd..a69e0359812 100644 --- a/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart +++ b/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart @@ -57,8 +57,9 @@ final class _SurfaceTextureRotatedPreviewState late Future defaultDisplayRotationQuarterTurns; Future _getCurrentDefaultDisplayRotationQuarterTurns() async { - final int currentDefaultDisplayRotationQuarterTurns = - await widget.deviceOrientationManager.getDefaultDisplayRotation(); + final int currentDefaultDisplayRotationQuarterTurns = await widget + .deviceOrientationManager + .getDefaultDisplayRotation(); return getQuarterTurnsFromSurfaceRotationConstant( currentDefaultDisplayRotationQuarterTurns, ); diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml index c39b599f6bc..fea407b822d 100644 --- a/packages/camera/camera_android_camerax/pubspec.yaml +++ b/packages/camera/camera_android_camerax/pubspec.yaml @@ -2,7 +2,7 @@ name: camera_android_camerax description: Android implementation of the camera plugin using the CameraX library. repository: https://github.com/flutter/packages/tree/main/packages/camera/camera_android_camerax issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 -version: 0.6.19 +version: 0.6.20 environment: sdk: ^3.8.1 diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart index 6b2535cf437..a9034c7a116 100644 --- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart +++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart @@ -159,32 +159,34 @@ void main() { final ResolutionStrategy highestAvailableStrategyResolutionStrategy = MockResolutionStrategy(); proxy = CameraXProxy( - getInstanceProcessCameraProvider: ({ - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) async { - return mockProcessCameraProvider; - }, - newCameraSelector: ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return MockCameraSelector(); - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } + getInstanceProcessCameraProvider: + ({ + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) async { + return mockProcessCameraProvider; + }, + newCameraSelector: + ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return MockCameraSelector(); + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } - return MockCameraSelector(); - }, + return MockCameraSelector(); + }, newPreview: newPreview ?? ({ @@ -202,101 +204,107 @@ void main() { when(mockPreview.resolutionSelector).thenReturn(resolutionSelector); return mockPreview; }, - newImageCapture: ({ - int? targetRotation, - CameraXFlashMode? flashMode, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockImageCapture mockImageCapture = MockImageCapture(); - when( - mockImageCapture.resolutionSelector, - ).thenReturn(resolutionSelector); - return mockImageCapture; - }, - newRecorder: ({ - int? aspectRatio, - int? targetVideoEncodingBitRate, - QualitySelector? qualitySelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockRecorder mockRecorder = MockRecorder(); - when( - mockRecorder.getQualitySelector(), - ).thenAnswer((_) async => qualitySelector ?? MockQualitySelector()); - return mockRecorder; - }, - withOutputVideoCapture: ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockVideoCapture(); - }, - newImageAnalysis: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockImageAnalysis mockImageAnalysis = MockImageAnalysis(); - when( - mockImageAnalysis.resolutionSelector, - ).thenReturn(resolutionSelector); - return mockImageAnalysis; - }, - newResolutionStrategy: ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockResolutionStrategy resolutionStrategy = - MockResolutionStrategy(); - when( - resolutionStrategy.getBoundSize(), - ).thenAnswer((_) async => boundSize); - when( - resolutionStrategy.getFallbackRule(), - ).thenAnswer((_) async => fallbackRule); - return resolutionStrategy; - }, - newResolutionSelector: ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockResolutionSelector mockResolutionSelector = - MockResolutionSelector(); - when(mockResolutionSelector.getAspectRatioStrategy()).thenAnswer( - (_) async => - aspectRatioStrategy ?? - proxy.ratio_4_3FallbackAutoStrategyAspectRatioStrategy(), - ); - when( - mockResolutionSelector.resolutionStrategy, - ).thenReturn(resolutionStrategy); - when( - mockResolutionSelector.resolutionFilter, - ).thenReturn(resolutionFilter); - return mockResolutionSelector; - }, + newImageCapture: + ({ + int? targetRotation, + CameraXFlashMode? flashMode, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockImageCapture mockImageCapture = MockImageCapture(); + when( + mockImageCapture.resolutionSelector, + ).thenReturn(resolutionSelector); + return mockImageCapture; + }, + newRecorder: + ({ + int? aspectRatio, + int? targetVideoEncodingBitRate, + QualitySelector? qualitySelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockRecorder mockRecorder = MockRecorder(); + when( + mockRecorder.getQualitySelector(), + ).thenAnswer((_) async => qualitySelector ?? MockQualitySelector()); + return mockRecorder; + }, + withOutputVideoCapture: + ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockVideoCapture(); + }, + newImageAnalysis: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockImageAnalysis mockImageAnalysis = MockImageAnalysis(); + when( + mockImageAnalysis.resolutionSelector, + ).thenReturn(resolutionSelector); + return mockImageAnalysis; + }, + newResolutionStrategy: + ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockResolutionStrategy resolutionStrategy = + MockResolutionStrategy(); + when( + resolutionStrategy.getBoundSize(), + ).thenAnswer((_) async => boundSize); + when( + resolutionStrategy.getFallbackRule(), + ).thenAnswer((_) async => fallbackRule); + return resolutionStrategy; + }, + newResolutionSelector: + ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockResolutionSelector mockResolutionSelector = + MockResolutionSelector(); + when(mockResolutionSelector.getAspectRatioStrategy()).thenAnswer( + (_) async => + aspectRatioStrategy ?? + proxy.ratio_4_3FallbackAutoStrategyAspectRatioStrategy(), + ); + when( + mockResolutionSelector.resolutionStrategy, + ).thenReturn(resolutionStrategy); + when( + mockResolutionSelector.resolutionFilter, + ).thenReturn(resolutionFilter); + return mockResolutionSelector; + }, fromQualitySelector: fromQualitySelector ?? ({ @@ -309,62 +317,66 @@ void main() { }) { return MockQualitySelector(); }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, - newAspectRatioStrategy: ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockAspectRatioStrategy mockAspectRatioStrategy = - MockAspectRatioStrategy(); - when( - mockAspectRatioStrategy.getFallbackRule(), - ).thenAnswer((_) async => fallbackRule); - when( - mockAspectRatioStrategy.getPreferredAspectRatio(), - ).thenAnswer((_) async => preferredAspectRatio); - return mockAspectRatioStrategy; - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, + newAspectRatioStrategy: + ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockAspectRatioStrategy mockAspectRatioStrategy = + MockAspectRatioStrategy(); + when( + mockAspectRatioStrategy.getFallbackRule(), + ).thenAnswer((_) async => fallbackRule); + when( + mockAspectRatioStrategy.getPreferredAspectRatio(), + ).thenAnswer((_) async => preferredAspectRatio); + return mockAspectRatioStrategy; + }, createWithOnePreferredSizeResolutionFilter: createWithOnePreferredSizeResolutionFilter ?? ({ @@ -376,35 +388,38 @@ void main() { }) { return MockResolutionFilter(); }, - fromCamera2CameraInfo: ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo camera2cameraInfo = MockCamera2CameraInfo(); - when( - camera2cameraInfo.getCameraCharacteristic(any), - ).thenAnswer((_) async => 90); - return camera2cameraInfo; - }, - newCameraSize: ({ - required int width, - required int height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return CameraSize.pigeon_detached( - width: width, - height: height, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + fromCamera2CameraInfo: + ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo camera2cameraInfo = + MockCamera2CameraInfo(); + when( + camera2cameraInfo.getCameraCharacteristic(any), + ).thenAnswer((_) async => 90); + return camera2cameraInfo; + }, + newCameraSize: + ({ + required int width, + required int height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return CameraSize.pigeon_detached( + width: width, + height: height, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, sensorOrientationCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -422,17 +437,18 @@ void main() { highestAvailableStrategyResolutionStrategy: () { return highestAvailableStrategyResolutionStrategy; }, - ratio_4_3FallbackAutoStrategyAspectRatioStrategy: - () => ratio_4_3FallbackAutoStrategyAspectRatioStrategy, - lowerQualityThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, + ratio_4_3FallbackAutoStrategyAspectRatioStrategy: () => + ratio_4_3FallbackAutoStrategyAspectRatioStrategy, + lowerQualityThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, ); return proxy; @@ -602,28 +618,28 @@ void main() { BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) => - cameraControl == cameraControlForComparison - ? camera2cameraControl - : Camera2CameraControl.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ); - proxy.newCaptureRequestOptions = ({ - required Map options, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCaptureRequestOptions mockCaptureRequestOptions = - MockCaptureRequestOptions(); - options.forEach((CaptureRequestKey key, Object? value) { - when( - mockCaptureRequestOptions.getCaptureRequestOption(key), - ).thenAnswer((_) async => value); - }); - return mockCaptureRequestOptions; - }; + }) => cameraControl == cameraControlForComparison + ? camera2cameraControl + : Camera2CameraControl.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ); + proxy.newCaptureRequestOptions = + ({ + required Map options, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCaptureRequestOptions mockCaptureRequestOptions = + MockCaptureRequestOptions(); + options.forEach((CaptureRequestKey key, Object? value) { + when( + mockCaptureRequestOptions.getCaptureRequestOption(key), + ).thenAnswer((_) async => value); + }); + return mockCaptureRequestOptions; + }; final CaptureRequestKey controlAeLock = CaptureRequestKey.pigeon_detached( pigeon_instanceManager: testInstanceManager, ); @@ -673,33 +689,36 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, }) => Future.value(mockProcessCameraProvider), - newCameraSelector: ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return mockFrontCameraSelector; - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } - - return mockBackCameraSelector; - }, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, + newCameraSelector: + ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return mockFrontCameraSelector; + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } + + return mockBackCameraSelector; + }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, ); // Mock calls to native platform @@ -721,8 +740,8 @@ void main() { when(mockBackCameraInfo.sensorRotationDegrees).thenReturn(0); when(mockFrontCameraInfo.sensorRotationDegrees).thenReturn(90); - final List cameraDescriptions = - await camera.availableCameras(); + final List cameraDescriptions = await camera + .availableCameras(); expect(cameraDescriptions.length, returnData.length); for (int i = 0; i < returnData.length; i++) { @@ -730,10 +749,9 @@ void main() { (returnData[i] as Map).cast(); final CameraDescription cameraDescription = CameraDescription( name: typedData['name']! as String, - lensDirection: - (typedData['lensFacing']! as String) == 'front' - ? CameraLensDirection.front - : CameraLensDirection.back, + lensDirection: (typedData['lensFacing']! as String) == 'front' + ? CameraLensDirection.front + : CameraLensDirection.back, sensorOrientation: typedData['sensorOrientation']! as int, ); expect(cameraDescriptions[i], cameraDescription); @@ -777,220 +795,239 @@ void main() { bool startedListeningForDeviceOrientationChanges = false; camera.proxy = CameraXProxy( - getInstanceProcessCameraProvider: ({ - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) async { - return mockProcessCameraProvider; - }, - newCameraSelector: ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return MockCameraSelector(); - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } - - return mockBackCameraSelector; - }, - newPreview: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockPreview; - }, - newImageCapture: ({ - int? targetRotation, - CameraXFlashMode? flashMode, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageCapture; - }, - newRecorder: ({ - int? aspectRatio, - int? targetVideoEncodingBitRate, - QualitySelector? qualitySelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockRecorder; - }, - withOutputVideoCapture: ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockVideoCapture; - }, - newImageAnalysis: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageAnalysis; - }, - newResolutionStrategy: ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionStrategy(); - }, - newResolutionSelector: ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionSelector(); - }, - fromQualitySelector: ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockQualitySelector(); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - when( - mockSystemServicesManager.requestCameraPermissions(any), - ).thenAnswer((_) async { - cameraPermissionsRequested = true; - return null; - }); - return mockSystemServicesManager; - }, - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.startListeningForDeviceOrientationChange()).thenAnswer(( - _, - ) async { - startedListeningForDeviceOrientationChanges = true; - }); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, - newAspectRatioStrategy: ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockAspectRatioStrategy(); - }, - createWithOnePreferredSizeResolutionFilter: ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionFilter(); - }, - fromCamera2CameraInfo: ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo camera2cameraInfo = - MockCamera2CameraInfo(); - when( - camera2cameraInfo.getCameraCharacteristic( - mockCameraCharacteristicsKey, - ), - ).thenAnswer((_) async => testSensorOrientation); - return camera2cameraInfo; - }, - newCameraSize: ({ - required int width, - required int height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockCameraSize(); - }, + getInstanceProcessCameraProvider: + ({ + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) async { + return mockProcessCameraProvider; + }, + newCameraSelector: + ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return MockCameraSelector(); + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } + + return mockBackCameraSelector; + }, + newPreview: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockPreview; + }, + newImageCapture: + ({ + int? targetRotation, + CameraXFlashMode? flashMode, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageCapture; + }, + newRecorder: + ({ + int? aspectRatio, + int? targetVideoEncodingBitRate, + QualitySelector? qualitySelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockRecorder; + }, + withOutputVideoCapture: + ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockVideoCapture; + }, + newImageAnalysis: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageAnalysis; + }, + newResolutionStrategy: + ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionStrategy(); + }, + newResolutionSelector: + ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionSelector(); + }, + fromQualitySelector: + ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockQualitySelector(); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + when( + mockSystemServicesManager.requestCameraPermissions(any), + ).thenAnswer((_) async { + cameraPermissionsRequested = true; + return null; + }); + return mockSystemServicesManager; + }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when( + manager.startListeningForDeviceOrientationChange(), + ).thenAnswer((_) async { + startedListeningForDeviceOrientationChanges = true; + }); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, + newAspectRatioStrategy: + ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockAspectRatioStrategy(); + }, + createWithOnePreferredSizeResolutionFilter: + ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionFilter(); + }, + fromCamera2CameraInfo: + ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo camera2cameraInfo = + MockCamera2CameraInfo(); + when( + camera2cameraInfo.getCameraCharacteristic( + mockCameraCharacteristicsKey, + ), + ).thenAnswer((_) async => testSensorOrientation); + return camera2cameraInfo; + }, + newCameraSize: + ({ + required int width, + required int height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockCameraSize(); + }, sensorOrientationCameraCharacteristics: () { return mockCameraCharacteristicsKey; }, - lowerQualityOrHigherThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, + lowerQualityOrHigherThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, ); camera.processCameraProvider = mockProcessCameraProvider; @@ -1091,207 +1128,226 @@ void main() { // Tell plugin to create mock/detached objects and stub method calls for the // testing of createCamera. camera.proxy = CameraXProxy( - getInstanceProcessCameraProvider: ({ - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) async { - return mockProcessCameraProvider; - }, - newCameraSelector: ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return MockCameraSelector(); - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } - - return mockBackCameraSelector; - }, - newPreview: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockPreview; - }, - newImageCapture: ({ - int? targetRotation, - CameraXFlashMode? flashMode, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageCapture; - }, - newRecorder: ({ - int? aspectRatio, - int? targetVideoEncodingBitRate, - QualitySelector? qualitySelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockRecorder; - }, - withOutputVideoCapture: ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockVideoCapture; - }, - newImageAnalysis: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageAnalysis; - }, - newResolutionStrategy: ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionStrategy(); - }, - newResolutionSelector: ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionSelector(); - }, - fromQualitySelector: ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockQualitySelector(); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, - newAspectRatioStrategy: ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockAspectRatioStrategy(); - }, - createWithOnePreferredSizeResolutionFilter: ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionFilter(); - }, - fromCamera2CameraInfo: ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - when( - mockCamera2CameraInfo.getCameraCharacteristic( - mockCameraCharacteristicsKey, - ), - ).thenAnswer((_) async => testSensorOrientation); - return mockCamera2CameraInfo; - }, - newCameraSize: ({ - required int width, - required int height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockCameraSize(); - }, + getInstanceProcessCameraProvider: + ({ + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) async { + return mockProcessCameraProvider; + }, + newCameraSelector: + ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return MockCameraSelector(); + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } + + return mockBackCameraSelector; + }, + newPreview: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockPreview; + }, + newImageCapture: + ({ + int? targetRotation, + CameraXFlashMode? flashMode, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageCapture; + }, + newRecorder: + ({ + int? aspectRatio, + int? targetVideoEncodingBitRate, + QualitySelector? qualitySelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockRecorder; + }, + withOutputVideoCapture: + ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockVideoCapture; + }, + newImageAnalysis: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageAnalysis; + }, + newResolutionStrategy: + ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionStrategy(); + }, + newResolutionSelector: + ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionSelector(); + }, + fromQualitySelector: + ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockQualitySelector(); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, + newAspectRatioStrategy: + ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockAspectRatioStrategy(); + }, + createWithOnePreferredSizeResolutionFilter: + ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionFilter(); + }, + fromCamera2CameraInfo: + ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + when( + mockCamera2CameraInfo.getCameraCharacteristic( + mockCameraCharacteristicsKey, + ), + ).thenAnswer((_) async => testSensorOrientation); + return mockCamera2CameraInfo; + }, + newCameraSize: + ({ + required int width, + required int height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockCameraSize(); + }, sensorOrientationCameraCharacteristics: () { return mockCameraCharacteristicsKey; }, - lowerQualityOrHigherThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, + lowerQualityOrHigherThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, ); when( @@ -1421,9 +1477,11 @@ void main() { continue; } - final CameraSize? previewSize = - await camera.preview!.resolutionSelector!.resolutionStrategy! - .getBoundSize(); + final CameraSize? previewSize = await camera + .preview! + .resolutionSelector! + .resolutionStrategy! + .getBoundSize(); expect(previewSize?.width, equals(expectedBoundSize.width)); expect(previewSize?.height, equals(expectedBoundSize.height)); expect( @@ -1432,9 +1490,11 @@ void main() { ResolutionStrategyFallbackRule.closestLowerThenHigher, ); - final CameraSize? imageCaptureSize = - await camera.imageCapture!.resolutionSelector!.resolutionStrategy! - .getBoundSize(); + final CameraSize? imageCaptureSize = await camera + .imageCapture! + .resolutionSelector! + .resolutionStrategy! + .getBoundSize(); expect(imageCaptureSize?.width, equals(expectedBoundSize.width)); expect(imageCaptureSize?.height, equals(expectedBoundSize.height)); expect( @@ -1443,9 +1503,11 @@ void main() { ResolutionStrategyFallbackRule.closestLowerThenHigher, ); - final CameraSize? imageAnalysisSize = - await camera.imageAnalysis!.resolutionSelector!.resolutionStrategy! - .getBoundSize(); + final CameraSize? imageAnalysisSize = await camera + .imageAnalysis! + .resolutionSelector! + .resolutionStrategy! + .getBoundSize(); expect(imageAnalysisSize?.width, equals(expectedBoundSize.width)); expect(imageAnalysisSize?.height, equals(expectedBoundSize.height)); expect( @@ -1508,16 +1570,17 @@ void main() { CameraSize? lastSetPreferredSize; camera.proxy = getProxyForTestingResolutionPreset( mockProcessCameraProvider, - createWithOnePreferredSizeResolutionFilter: ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - lastSetPreferredSize = preferredSize; - return MockResolutionFilter(); - }, + createWithOnePreferredSizeResolutionFilter: + ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + lastSetPreferredSize = preferredSize; + return MockResolutionFilter(); + }, ); when( @@ -1598,9 +1661,11 @@ void main() { equals(expectedPreferredResolution.height), ); - final CameraSize? imageCaptureSize = - await camera.imageCapture!.resolutionSelector!.resolutionStrategy! - .getBoundSize(); + final CameraSize? imageCaptureSize = await camera + .imageCapture! + .resolutionSelector! + .resolutionStrategy! + .getBoundSize(); expect( imageCaptureSize?.width, equals(expectedPreferredResolution.width), @@ -1610,9 +1675,11 @@ void main() { equals(expectedPreferredResolution.height), ); - final CameraSize? imageAnalysisSize = - await camera.imageAnalysis!.resolutionSelector!.resolutionStrategy! - .getBoundSize(); + final CameraSize? imageAnalysisSize = await camera + .imageAnalysis! + .resolutionSelector! + .resolutionStrategy! + .getBoundSize(); expect( imageAnalysisSize?.width, equals(expectedPreferredResolution.width), @@ -1714,14 +1781,18 @@ void main() { continue; } - final AspectRatioStrategy previewStrategy = - await camera.preview!.resolutionSelector!.getAspectRatioStrategy(); - final AspectRatioStrategy imageCaptureStrategy = - await camera.imageCapture!.resolutionSelector! - .getAspectRatioStrategy(); - final AspectRatioStrategy imageAnalysisStrategy = - await camera.imageCapture!.resolutionSelector! - .getAspectRatioStrategy(); + final AspectRatioStrategy previewStrategy = await camera + .preview! + .resolutionSelector! + .getAspectRatioStrategy(); + final AspectRatioStrategy imageCaptureStrategy = await camera + .imageCapture! + .resolutionSelector! + .getAspectRatioStrategy(); + final AspectRatioStrategy imageAnalysisStrategy = await camera + .imageCapture! + .resolutionSelector! + .getAspectRatioStrategy(); // Check aspect ratio. expect( @@ -1789,28 +1860,30 @@ void main() { final MockQualitySelector mockQualitySelector = MockQualitySelector(); camera.proxy = getProxyForTestingResolutionPreset( mockProcessCameraProvider, - lowerQualityOrHigherThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - fallbackStrategyVideoQuality = quality; - return mockFallbackStrategy; - }, - fromQualitySelector: ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - qualitySelectorVideoQuality = quality; - setFallbackStrategy = fallbackStrategy; - return mockQualitySelector; - }, + lowerQualityOrHigherThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + fallbackStrategyVideoQuality = quality; + return mockFallbackStrategy; + }, + fromQualitySelector: + ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + qualitySelectorVideoQuality = quality; + setFallbackStrategy = fallbackStrategy; + return mockQualitySelector; + }, ); when( @@ -1893,21 +1966,24 @@ void main() { // UI orientation. camera.proxy = getProxyForTestingResolutionPreset( mockProcessCameraProvider, - newPreview: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockPreview mockPreview = MockPreview(); - when( - mockPreview.surfaceProducerHandlesCropAndRotation(), - ).thenAnswer((_) async => testHandlesCropAndRotation); - when(mockPreview.resolutionSelector).thenReturn(resolutionSelector); - return mockPreview; - }, + newPreview: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockPreview mockPreview = MockPreview(); + when( + mockPreview.surfaceProducerHandlesCropAndRotation(), + ).thenAnswer((_) async => testHandlesCropAndRotation); + when( + mockPreview.resolutionSelector, + ).thenReturn(resolutionSelector); + return mockPreview; + }, ); when( @@ -1985,20 +2061,21 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => Future.value(mockProcessCameraProvider), - newCameraSelector: ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return mockFrontCameraSelector; - case _: - return mockBackCameraSelector; - } - }, + newCameraSelector: + ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return mockFrontCameraSelector; + case _: + return mockBackCameraSelector; + } + }, newPreview: ({ int? targetRotation, @@ -2081,20 +2158,21 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockQualitySelector(), - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, newSystemServicesManager: ({ required void Function(SystemServicesManager, String) onCameraError, @@ -2103,21 +2181,22 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockSystemServicesManager(), - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, newAspectRatioStrategy: ({ required AspectRatio preferredAspectRatio, @@ -2135,20 +2214,21 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockResolutionFilter(), - fromCamera2CameraInfo: ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo mockCamera2CameraInfo = - MockCamera2CameraInfo(); - when( - mockCamera2CameraInfo.getCameraCharacteristic(any), - ).thenAnswer((_) async => 90); - return mockCamera2CameraInfo; - }, + fromCamera2CameraInfo: + ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo mockCamera2CameraInfo = + MockCamera2CameraInfo(); + when( + mockCamera2CameraInfo.getCameraCharacteristic(any), + ).thenAnswer((_) async => 90); + return mockCamera2CameraInfo; + }, newCameraSize: ({ required int width, @@ -2158,8 +2238,8 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockCameraSize(), - sensorOrientationCameraCharacteristics: - () => MockCameraCharacteristicsKey(), + sensorOrientationCameraCharacteristics: () => + MockCameraCharacteristicsKey(), ); final CameraInitializedEvent testCameraInitializedEvent = @@ -2219,24 +2299,25 @@ void main() { bool stoppedListeningForDeviceOrientationChange = false; final AndroidCameraCameraX camera = AndroidCameraCameraX(); camera.proxy = CameraXProxy( - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager mockDeviceOrientationManager = - MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager - .stopListeningForDeviceOrientationChange(), - ).thenAnswer((_) async { - stoppedListeningForDeviceOrientationChange = true; - }); - return mockDeviceOrientationManager; - }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager mockDeviceOrientationManager = + MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager + .stopListeningForDeviceOrientationChange(), + ).thenAnswer((_) async { + stoppedListeningForDeviceOrientationChange = true; + }); + return mockDeviceOrientationManager; + }, ); camera.preview = MockPreview(); @@ -2316,20 +2397,22 @@ void main() { StreamQueue(eventStream); camera.proxy = CameraXProxy( - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.onCameraError, - ).thenReturn(onCameraError); - return mockSystemServicesManager; - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.onCameraError, + ).thenReturn(onCameraError); + return mockSystemServicesManager; + }, ); camera.systemServicesManager.onCameraError( @@ -2352,29 +2435,30 @@ void main() { 'onDeviceOrientationChanged stream emits changes in device orientation detected by system services', () async { final AndroidCameraCameraX camera = AndroidCameraCameraX(); - final Stream eventStream = - camera.onDeviceOrientationChanged(); + final Stream eventStream = camera + .onDeviceOrientationChanged(); final StreamQueue streamQueue = StreamQueue(eventStream); const DeviceOrientationChangedEvent testEvent = DeviceOrientationChangedEvent(DeviceOrientation.portraitDown); camera.proxy = CameraXProxy( - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager mockDeviceOrientationManager = - MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager.onDeviceOrientationChanged, - ).thenReturn(onDeviceOrientationChanged); - return mockDeviceOrientationManager; - }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager mockDeviceOrientationManager = + MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager.onDeviceOrientationChanged, + ).thenReturn(onDeviceOrientationChanged); + return mockDeviceOrientationManager; + }, ); camera.deviceOrientationManager.onDeviceOrientationChanged( @@ -2486,20 +2570,21 @@ void main() { // track camera state once preview is bound to the lifecycle and needed to // test for expected updates. camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); when( @@ -2594,20 +2679,21 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -2616,38 +2702,44 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function( + VideoRecordEventListener, + VideoRecordEvent, + ) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -2753,20 +2845,21 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -2775,38 +2868,44 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function( + VideoRecordEventListener, + VideoRecordEvent, + ) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -2912,20 +3011,21 @@ void main() { // Tell plugin to create detached Analyzer for testing. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -2934,50 +3034,57 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function( + VideoRecordEventListener, + VideoRecordEvent, + ) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockAnalyzer(); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockAnalyzer(); + }, ); const int cameraId = 17; @@ -2985,9 +3092,8 @@ void main() { Completer(); final VideoCaptureOptions videoCaptureOptions = VideoCaptureOptions( cameraId, - streamCallback: - (CameraImageData imageData) => - imageDataCompleter.complete(imageData), + streamCallback: (CameraImageData imageData) => + imageDataCompleter.complete(imageData), ); // Mock method calls. @@ -3059,20 +3165,21 @@ void main() { // Tell plugin to mock call to get current video orientation and mock Camera2CameraInfo retrieval. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -3080,57 +3187,63 @@ void main() { BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) => - cameraInfo == initialCameraInfo - ? mockCamera2CameraInfo - : MockCamera2CameraInfo(), - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager mockDeviceOrientationManager = - MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager.getDefaultDisplayRotation(), - ).thenAnswer((_) async => defaultTargetRotation); - return mockDeviceOrientationManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + }) => cameraInfo == initialCameraInfo + ? mockCamera2CameraInfo + : MockCamera2CameraInfo(), + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager + mockDeviceOrientationManager = MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager.getDefaultDisplayRotation(), + ).thenAnswer((_) async => defaultTargetRotation); + return mockDeviceOrientationManager; + }, + newVideoRecordEventListener: + ({ + required void Function( + VideoRecordEventListener, + VideoRecordEvent, + ) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -3448,20 +3561,21 @@ void main() { // Tell plugin to create detached camera state observers. camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); when( @@ -3504,21 +3618,22 @@ void main() { // Tell plugin to mock call to get current photo orientation. camera.proxy = CameraXProxy( - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager mockDeviceOrientationManager = - MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager.getDefaultDisplayRotation(), - ).thenAnswer((_) async => defaultTargetRotation); - return mockDeviceOrientationManager; - }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager mockDeviceOrientationManager = + MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager.getDefaultDisplayRotation(), + ).thenAnswer((_) async => defaultTargetRotation); + return mockDeviceOrientationManager; + }, ); when( @@ -3853,20 +3968,21 @@ void main() { // Tell plugin to create detached Analyzer for testing. camera.proxy = CameraXProxy( - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); // Set directly for test versus calling createCamera. @@ -3913,20 +4029,21 @@ void main() { // Tell plugin to create detached Analyzer for testing. camera.proxy = CameraXProxy( - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); // Set directly for test versus calling createCamera. @@ -3987,34 +4104,36 @@ void main() { // Tell plugin to create detached Analyzer for testing. camera.proxy = CameraXProxy( - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); // Set directly for test versus calling createCamera. @@ -4146,21 +4265,22 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockAnalyzer(), - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getDefaultDisplayRotation()).thenAnswer((_) async { - return defaultTargetRotation; - }); - return manager; - }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getDefaultDisplayRotation()).thenAnswer((_) async { + return defaultTargetRotation; + }); + return manager; + }, ); when( @@ -4296,28 +4416,28 @@ void main() { BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) => - cameraControl == mockCameraControl - ? mockCamera2CameraControl - : Camera2CameraControl.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ), - newCaptureRequestOptions: ({ - required Map options, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCaptureRequestOptions mockCaptureRequestOptions = - MockCaptureRequestOptions(); - options.forEach((CaptureRequestKey key, Object? value) { - when( - mockCaptureRequestOptions.getCaptureRequestOption(key), - ).thenAnswer((_) async => value); - }); - return mockCaptureRequestOptions; - }, + }) => cameraControl == mockCameraControl + ? mockCamera2CameraControl + : Camera2CameraControl.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ), + newCaptureRequestOptions: + ({ + required Map options, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCaptureRequestOptions mockCaptureRequestOptions = + MockCaptureRequestOptions(); + options.forEach((CaptureRequestKey key, Object? value) { + when( + mockCaptureRequestOptions.getCaptureRequestOption(key), + ).thenAnswer((_) async => value); + }); + return mockCaptureRequestOptions; + }, controlAELockCaptureRequest: () => controlAELockKey, ); @@ -4383,18 +4503,19 @@ void main() { MeteringMode? actionBuilderMeteringMode; MeteringPoint? actionBuilderMeteringPoint; camera.proxy = getProxyForExposureAndFocus( - withModeFocusMeteringActionBuilder: ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + withModeFocusMeteringActionBuilder: + ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify nothing happens if no current focus and metering action has been @@ -4507,34 +4628,36 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(exposurePointX, exposurePointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: + ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(exposurePointX, exposurePointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: + ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify current auto-exposure metering point is removed if previously set. @@ -4646,34 +4769,36 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(exposurePointX, exposurePointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: + ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(exposurePointX, exposurePointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: + ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); await camera.setExposurePoint(cameraId, exposurePoint); @@ -4923,18 +5048,19 @@ void main() { MeteringMode? actionBuilderMeteringMode; MeteringPoint? actionBuilderMeteringPoint; camera.proxy = getProxyForExposureAndFocus( - withModeFocusMeteringActionBuilder: ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + withModeFocusMeteringActionBuilder: + ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify nothing happens if no current focus and metering action has been @@ -5047,34 +5173,36 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(focusPointX, focusPointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: + ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(focusPointX, focusPointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: + ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify current auto-exposure metering point is removed if previously set. @@ -5179,34 +5307,36 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(focusPointX, focusPointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: + ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(focusPointX, focusPointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: + ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); await camera.setFocusPoint(cameraId, focusPoint); @@ -5344,39 +5474,40 @@ void main() { camera.proxy = getProxyForSettingFocusandExposurePoints( mockCameraControl, mockCamera2CameraControl, - newDisplayOrientedMeteringPointFactory: ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(exposurePointX, exposurePointY), - ).thenAnswer((_) async { - final MeteringPoint createdMeteringPoint = - MeteringPoint.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ); - createdMeteringPoints.add(createdMeteringPoint); - return createdMeteringPoint; - }); - when(mockFactory.createPointWithSize(0.5, 0.5, 1)).thenAnswer(( - _, - ) async { - final MeteringPoint createdMeteringPoint = - MeteringPoint.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ); - createdMeteringPoints.add(createdMeteringPoint); - return createdMeteringPoint; - }); - return mockFactory; - }, + newDisplayOrientedMeteringPointFactory: + ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(exposurePointX, exposurePointY), + ).thenAnswer((_) async { + final MeteringPoint createdMeteringPoint = + MeteringPoint.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ); + createdMeteringPoints.add(createdMeteringPoint); + return createdMeteringPoint; + }); + when(mockFactory.createPointWithSize(0.5, 0.5, 1)).thenAnswer(( + _, + ) async { + final MeteringPoint createdMeteringPoint = + MeteringPoint.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ); + createdMeteringPoints.add(createdMeteringPoint); + return createdMeteringPoint; + }); + return mockFactory; + }, ); // Make setting focus and metering action successful for test. @@ -6023,20 +6154,21 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockAnalyzer(), - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); when( @@ -6095,20 +6227,21 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6117,38 +6250,41 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6232,20 +6368,21 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6254,38 +6391,41 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6369,20 +6509,21 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6391,38 +6532,41 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6511,34 +6655,36 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6547,38 +6693,41 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6671,34 +6820,36 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6707,38 +6858,41 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6823,34 +6977,36 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6859,38 +7015,41 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart index 8a709e6beff..49f6b45aa9f 100644 --- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart +++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart @@ -2070,16 +2070,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i2.CameraSelector Function() get defaultBackCameraCameraSelector => (super.noSuchMethod( Invocation.getter(#defaultBackCameraCameraSelector), - returnValue: - () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultBackCameraCameraSelector), - ), - returnValueForMissingStub: - () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultBackCameraCameraSelector), - ), + returnValue: () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultBackCameraCameraSelector), + ), + returnValueForMissingStub: () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultBackCameraCameraSelector), + ), ) as _i2.CameraSelector Function()); @@ -2087,16 +2085,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i2.CameraSelector Function() get defaultFrontCameraCameraSelector => (super.noSuchMethod( Invocation.getter(#defaultFrontCameraCameraSelector), - returnValue: - () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultFrontCameraCameraSelector), - ), - returnValueForMissingStub: - () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultFrontCameraCameraSelector), - ), + returnValue: () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultFrontCameraCameraSelector), + ), + returnValueForMissingStub: () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultFrontCameraCameraSelector), + ), ) as _i2.CameraSelector Function()); @@ -2105,20 +2101,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { get highestAvailableStrategyResolutionStrategy => (super.noSuchMethod( Invocation.getter(#highestAvailableStrategyResolutionStrategy), - returnValue: - () => _FakeResolutionStrategy_24( - this, - Invocation.getter( - #highestAvailableStrategyResolutionStrategy, - ), - ), - returnValueForMissingStub: - () => _FakeResolutionStrategy_24( - this, - Invocation.getter( - #highestAvailableStrategyResolutionStrategy, - ), - ), + returnValue: () => _FakeResolutionStrategy_24( + this, + Invocation.getter(#highestAvailableStrategyResolutionStrategy), + ), + returnValueForMissingStub: () => _FakeResolutionStrategy_24( + this, + Invocation.getter(#highestAvailableStrategyResolutionStrategy), + ), ) as _i2.ResolutionStrategy Function()); @@ -2129,20 +2119,18 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { Invocation.getter( #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, ), - returnValue: - () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, - ), - ), - returnValueForMissingStub: - () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, - ), - ), + returnValue: () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, + ), + ), + returnValueForMissingStub: () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, + ), + ), ) as _i2.AspectRatioStrategy Function()); @@ -2153,20 +2141,18 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { Invocation.getter( #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, ), - returnValue: - () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, - ), - ), - returnValueForMissingStub: - () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, - ), - ), + returnValue: () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, + ), + ), + returnValueForMissingStub: () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, + ), + ), ) as _i2.AspectRatioStrategy Function()); @@ -2174,16 +2160,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i2.CaptureRequestKey Function() get controlAELockCaptureRequest => (super.noSuchMethod( Invocation.getter(#controlAELockCaptureRequest), - returnValue: - () => _FakeCaptureRequestKey_34( - this, - Invocation.getter(#controlAELockCaptureRequest), - ), - returnValueForMissingStub: - () => _FakeCaptureRequestKey_34( - this, - Invocation.getter(#controlAELockCaptureRequest), - ), + returnValue: () => _FakeCaptureRequestKey_34( + this, + Invocation.getter(#controlAELockCaptureRequest), + ), + returnValueForMissingStub: () => _FakeCaptureRequestKey_34( + this, + Invocation.getter(#controlAELockCaptureRequest), + ), ) as _i2.CaptureRequestKey Function()); @@ -2192,20 +2176,18 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { get infoSupportedHardwareLevelCameraCharacteristics => (super.noSuchMethod( Invocation.getter(#infoSupportedHardwareLevelCameraCharacteristics), - returnValue: - () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter( - #infoSupportedHardwareLevelCameraCharacteristics, - ), - ), - returnValueForMissingStub: - () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter( - #infoSupportedHardwareLevelCameraCharacteristics, - ), - ), + returnValue: () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter( + #infoSupportedHardwareLevelCameraCharacteristics, + ), + ), + returnValueForMissingStub: () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter( + #infoSupportedHardwareLevelCameraCharacteristics, + ), + ), ) as _i2.CameraCharacteristicsKey Function()); @@ -2214,16 +2196,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { get sensorOrientationCameraCharacteristics => (super.noSuchMethod( Invocation.getter(#sensorOrientationCameraCharacteristics), - returnValue: - () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter(#sensorOrientationCameraCharacteristics), - ), - returnValueForMissingStub: - () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter(#sensorOrientationCameraCharacteristics), - ), + returnValue: () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter(#sensorOrientationCameraCharacteristics), + ), + returnValueForMissingStub: () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter(#sensorOrientationCameraCharacteristics), + ), ) as _i2.CameraCharacteristicsKey Function()); diff --git a/packages/camera/camera_android_camerax/test/preview_rotation_test.dart b/packages/camera/camera_android_camerax/test/preview_rotation_test.dart index e6921b29077..71ac413ae22 100644 --- a/packages/camera/camera_android_camerax/test/preview_rotation_test.dart +++ b/packages/camera/camera_android_camerax/test/preview_rotation_test.dart @@ -106,20 +106,21 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, }) async => mockProcessCameraProvider, newCameraSelector: createCameraSelector, - newPreview: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockPreview preview = MockPreview(); - when( - preview.surfaceProducerHandlesCropAndRotation(), - ).thenAnswer((_) async => handlesCropAndRotation); - return preview; - }, + newPreview: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockPreview preview = MockPreview(); + when( + preview.surfaceProducerHandlesCropAndRotation(), + ).thenAnswer((_) async => handlesCropAndRotation); + return preview; + }, newImageCapture: ({ int? targetRotation, @@ -140,110 +141,121 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockRecorder(), - withOutputVideoCapture: ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockVideoCapture(); - }, - newImageAnalysis: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockImageAnalysis(); - }, - newResolutionStrategy: ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionStrategy(); - }, - newResolutionSelector: ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionSelector(); - }, - lowerQualityOrHigherThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, - lowerQualityThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, - fromCamera2CameraInfo: ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo camera2cameraInfo = MockCamera2CameraInfo(); - when( - camera2cameraInfo.getCameraCharacteristic(any), - ).thenAnswer((_) async => 90); - return camera2cameraInfo; - }, - fromQualitySelector: ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockQualitySelector(); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, + withOutputVideoCapture: + ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockVideoCapture(); + }, + newImageAnalysis: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockImageAnalysis(); + }, + newResolutionStrategy: + ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionStrategy(); + }, + newResolutionSelector: + ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionSelector(); + }, + lowerQualityOrHigherThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, + lowerQualityThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, + fromCamera2CameraInfo: + ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo camera2cameraInfo = + MockCamera2CameraInfo(); + when( + camera2cameraInfo.getCameraCharacteristic(any), + ).thenAnswer((_) async => 90); + return camera2cameraInfo; + }, + fromQualitySelector: + ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockQualitySelector(); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, newDeviceOrientationManager: ({ required void Function(DeviceOrientationManager, String) @@ -253,33 +265,35 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => deviceOrientationManager, - newAspectRatioStrategy: ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockAspectRatioStrategy mockAspectRatioStrategy = - MockAspectRatioStrategy(); - when( - mockAspectRatioStrategy.getFallbackRule(), - ).thenAnswer((_) async => fallbackRule); - when( - mockAspectRatioStrategy.getPreferredAspectRatio(), - ).thenAnswer((_) async => preferredAspectRatio); - return mockAspectRatioStrategy; - }, - createWithOnePreferredSizeResolutionFilter: ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionFilter(); - }, + newAspectRatioStrategy: + ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockAspectRatioStrategy mockAspectRatioStrategy = + MockAspectRatioStrategy(); + when( + mockAspectRatioStrategy.getFallbackRule(), + ).thenAnswer((_) async => fallbackRule); + when( + mockAspectRatioStrategy.getPreferredAspectRatio(), + ).thenAnswer((_) async => preferredAspectRatio); + return mockAspectRatioStrategy; + }, + createWithOnePreferredSizeResolutionFilter: + ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionFilter(); + }, ); /// Returns CameraXProxy used to mock all calls to native Android in @@ -493,16 +507,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation0), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation0), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -547,16 +560,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation90), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation90), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -599,16 +611,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation180), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation180), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -651,16 +662,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation270), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation270), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -743,16 +753,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(DeviceOrientation.portraitUp), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.portraitUp), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -795,17 +804,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.landscapeLeft, - ), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeLeft), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -848,16 +855,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(DeviceOrientation.portraitDown), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.portraitDown), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -900,17 +906,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.landscapeRight, - ), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeRight), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -997,8 +1001,8 @@ void main() { ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1040,10 +1044,9 @@ void main() { final RotatedBox rotatedBox = tester.widget( find.byType(RotatedBox), ); - final int clockwiseQuarterTurns = - rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect(rotatedBox.child, isA()); expect((rotatedBox.child! as Texture).textureId, cameraId); expect( @@ -1093,13 +1096,13 @@ void main() { getUiOrientation: /* initial device orientation is irrelevant */ () async => _serializeDeviceOrientation(DeviceOrientation.portraitUp), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1137,10 +1140,9 @@ void main() { final RotatedBox rotatedBox = tester.widget( find.byType(RotatedBox), ); - final int clockwiseQuarterTurns = - rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect(rotatedBox.child, isA()); expect((rotatedBox.child! as Texture).textureId, cameraId); expect( @@ -1189,8 +1191,8 @@ void main() { mockCameraSelector: mockFrontCameraSelector, sensorRotationDegrees: 270, ); - proxyGetDefaultDisplayRotation = - () => Future.value(Surface.rotation0); + proxyGetDefaultDisplayRotation = () => + Future.value(Surface.rotation0); // Media settings to create camera; irrelevant for test. testMediaSettings = const MediaSettings(); @@ -1207,14 +1209,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(DeviceOrientation.portraitUp), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.portraitUp), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1267,15 +1268,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.landscapeRight, - ), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeRight), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1328,15 +1327,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.portraitDown, - ), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.portraitDown), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1389,15 +1386,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.landscapeLeft, - ), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeLeft), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1475,9 +1470,8 @@ void main() { mockCameraSelector: mockFrontCameraSelector, sensorRotationDegrees: 270, ); - proxyGetUiOrientation = - () async => - _serializeDeviceOrientation(DeviceOrientation.landscapeLeft); + proxyGetUiOrientation = () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeLeft); // Media settings to create camera; irrelevant for test. testMediaSettings = const MediaSettings(); @@ -1492,15 +1486,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: - () => Future.value(Surface.rotation0), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation0), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1551,15 +1545,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: - () => Future.value(Surface.rotation90), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation90), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1614,15 +1608,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: - () => Future.value(Surface.rotation180), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation180), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1675,15 +1669,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: - () => Future.value(Surface.rotation270), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation270), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1781,8 +1775,8 @@ void main() { ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1838,10 +1832,9 @@ void main() { checkXAxisIsMirrored(transformedPreviewMatrix); expect((transformedPreview.child! as Texture).textureId, cameraId); - final int clockwiseQuarterTurns = - rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect( clockwiseQuarterTurns, expectedQuarterTurns, @@ -1891,13 +1884,13 @@ void main() { getUiOrientation: /* initial device orientation irrelevant for test */ () async => _serializeDeviceOrientation(DeviceOrientation.landscapeLeft), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation90), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation90), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1954,10 +1947,9 @@ void main() { checkYAxisIsMirrored(transformedPreviewMatrix); } expect((transformedPreview.child! as Texture).textureId, cameraId); - final int clockwiseQuarterTurns = - rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect( clockwiseQuarterTurns, expectedQuarterTurns, @@ -2000,8 +1992,8 @@ void main() { mockBackCameraSelector = MockCameraSelector(); proxyCreateCameraSelectorForBackCamera = createCameraSelectorForBackCamera(mockBackCameraSelector); - proxyGetDefaultDisplayRotation = - () => Future.value(Surface.rotation270); + proxyGetDefaultDisplayRotation = () => + Future.value(Surface.rotation270); testMediaSettings = const MediaSettings(); }); @@ -2025,14 +2017,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForBackCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test back camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -2084,14 +2075,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForBackCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test back camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -2146,8 +2136,8 @@ void main() { testSensorOrientation = 90; // Create mock for seting initial default display rotation to 180 degrees. - proxyGetDefaultDisplayRotation = - () => Future.value(Surface.rotation90); + proxyGetDefaultDisplayRotation = () => + Future.value(Surface.rotation90); // Media settings to create camera; irrelevant for test. testMediaSettings = const MediaSettings(); @@ -2179,14 +2169,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -2257,14 +2246,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, From 792b70bb2782c98c6a5b3de64583b5940f5badfa Mon Sep 17 00:00:00 2001 From: stuartmorgan-g Date: Tue, 29 Jul 2025 12:14:10 -0700 Subject: [PATCH 26/53] Update CODEOWNERS (#9692) Set myself as the CODEOWNER of Linux and Windows plugins, as I currently have the most experience with them. Other minor changes to owners to reflect current owners. --- CODEOWNERS | 120 ++++++++++++++++++++++++++--------------------------- 1 file changed, 60 insertions(+), 60 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index 6a8439a4fb9..cb9b5761722 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -22,7 +22,7 @@ packages/image_picker/** @tarrinneal packages/interactive_media_ads/** @bparrishMines packages/in_app_purchase/** @bparrishMines packages/local_auth/** @stuartmorgan-g -packages/metrics_center/** @christopherfujino +packages/metrics_center/** @bkonyi packages/multicast_dns/** @vashworth packages/path_provider/** @stuartmorgan-g packages/pigeon/** @tarrinneal @@ -32,12 +32,12 @@ packages/pointer_interceptor/** @ditman packages/quick_actions/** @bparrishMines packages/rfw/** @Hixie packages/shared_preferences/** @tarrinneal -packages/standard_message_codec/** @jonahwilliams +packages/standard_message_codec/** @stuartmorgan-g packages/two_dimensional_scrollables/** @Piinks packages/url_launcher/** @stuartmorgan-g -packages/vector_graphics/** @jonahwilliams -packages/vector_graphics_codec/** @jonahwilliams -packages/vector_graphics_compiler/** @jonahwilliams +packages/vector_graphics/** @jtmcdole +packages/vector_graphics_codec/** @jtmcdole +packages/vector_graphics_compiler/** @jtmcdole packages/video_player/** @tarrinneal packages/web_benchmarks/** @yjbanov packages/webview_flutter/** @bparrishMines @@ -52,71 +52,71 @@ third_party/packages/path_parsing/** @domesticmouse # matching entry takes precedence. # - Web -packages/camera/camera_web/** @ditman -packages/file_selector/file_selector_web/** @ditman -packages/google_maps_flutter/google_maps_flutter_web/** @ditman -packages/google_sign_in/google_sign_in_web/** @ditman -packages/image_picker/image_picker_for_web/** @ditman -packages/pointer_interceptor/pointer_interceptor_web/** @ditman -packages/shared_preferences/shared_preferences_web/** @ditman -packages/url_launcher/url_launcher_web/** @ditman -packages/video_player/video_player_web/** @ditman -packages/webview_flutter/webview_flutter_web/** @ditman +packages/camera/camera_web/** @ditman +packages/file_selector/file_selector_web/** @ditman +packages/google_maps_flutter/google_maps_flutter_web/** @ditman +packages/google_sign_in/google_sign_in_web/** @ditman +packages/image_picker/image_picker_for_web/** @ditman +packages/pointer_interceptor/pointer_interceptor_web/** @ditman +packages/shared_preferences/shared_preferences_web/** @ditman +packages/url_launcher/url_launcher_web/** @ditman +packages/video_player/video_player_web/** @ditman +packages/webview_flutter/webview_flutter_web/** @ditman # - Android -packages/camera/camera_android/** @camsim99 -packages/camera/camera_android_camerax/** @camsim99 -packages/espresso/** @jesswrd -packages/file_selector/file_selector_android/** @mboetger -packages/flutter_plugin_android_lifecycle/** @reidbaker -packages/google_maps_flutter/google_maps_flutter_android/** @reidbaker -packages/google_sign_in/google_sign_in_android/** @ash2moon -packages/image_picker/image_picker_android/** @gmackall -packages/in_app_purchase/in_app_purchase_android/** @gmackall -packages/local_auth/local_auth_android/** @mboetger -packages/path_provider/path_provider_android/** @camsim99 -packages/quick_actions/quick_actions_android/** @ash2moon -packages/shared_preferences/shared_preferences_android/** @jesswrd -packages/url_launcher/url_launcher_android/** @gmackall -packages/video_player/video_player_android/** @ash2moon +packages/camera/camera_android/** @camsim99 +packages/camera/camera_android_camerax/** @camsim99 +packages/espresso/** @jesswrd +packages/file_selector/file_selector_android/** @mboetger +packages/flutter_plugin_android_lifecycle/** @reidbaker +packages/google_maps_flutter/google_maps_flutter_android/** @reidbaker +packages/google_sign_in/google_sign_in_android/** @ash2moon +packages/image_picker/image_picker_android/** @gmackall +packages/in_app_purchase/in_app_purchase_android/** @gmackall +packages/local_auth/local_auth_android/** @mboetger +packages/path_provider/path_provider_android/** @camsim99 +packages/quick_actions/quick_actions_android/** @ash2moon +packages/shared_preferences/shared_preferences_android/** @jesswrd +packages/url_launcher/url_launcher_android/** @gmackall +packages/video_player/video_player_android/** @ash2moon # Owned by ecosystem team for now during the wrapper evaluation. -packages/webview_flutter/webview_flutter_android/** @bparrishMines +packages/webview_flutter/webview_flutter_android/** @bparrishMines # - Darwin -packages/camera/camera_avfoundation/** @hellohuanlin @vashworth -packages/file_selector/file_selector_ios/** @vashworth @cbracken -packages/file_selector/file_selector_macos/** @vashworth @cbracken -packages/google_maps_flutter/google_maps_flutter_ios/** @vashworth @cbracken -packages/google_sign_in/google_sign_in_ios/** @LongCatIsLooong @cbracken -packages/image_picker/image_picker_ios/** @vashworth @louisehsu -packages/image_picker/image_picker_macos/** @vashworth @louisehsu -packages/in_app_purchase/in_app_purchase_storekit/** @louisehsu @LongCatIsLooong -packages/local_auth/local_auth_darwin/** @cbracken @vashworth -packages/path_provider/path_provider_foundation/** @cbracken @vashworth -packages/pointer_interceptor/pointer_interceptor_ios/** @louisehsu @hellohuanlin -packages/quick_actions/quick_actions_ios/** @LongCatIsLooong @hellohuanlin +packages/camera/camera_avfoundation/** @hellohuanlin @vashworth +packages/file_selector/file_selector_ios/** @vashworth @cbracken +packages/file_selector/file_selector_macos/** @vashworth @cbracken +packages/google_maps_flutter/google_maps_flutter_ios/** @vashworth @cbracken +packages/google_sign_in/google_sign_in_ios/** @LongCatIsLooong @cbracken +packages/image_picker/image_picker_ios/** @vashworth @louisehsu +packages/image_picker/image_picker_macos/** @vashworth @louisehsu +packages/in_app_purchase/in_app_purchase_storekit/** @louisehsu @LongCatIsLooong +packages/local_auth/local_auth_darwin/** @cbracken @vashworth +packages/path_provider/path_provider_foundation/** @cbracken @vashworth +packages/pointer_interceptor/pointer_interceptor_ios/** @louisehsu @hellohuanlin +packages/quick_actions/quick_actions_ios/** @LongCatIsLooong @hellohuanlin packages/shared_preferences/shared_preferences_foundation/** @tarrinneal -packages/url_launcher/url_launcher_ios/** @hellohuanlin @LongCatIsLooong -packages/url_launcher/url_launcher_macos/** @hellohuanlin @LongCatIsLooong -packages/video_player/video_player_avfoundation/** @LongCatIsLooong @hellohuanlin -packages/webview_flutter/webview_flutter_wkwebview/** @cbracken @louisehsu +packages/url_launcher/url_launcher_ios/** @hellohuanlin @LongCatIsLooong +packages/url_launcher/url_launcher_macos/** @hellohuanlin @LongCatIsLooong +packages/video_player/video_player_avfoundation/** @LongCatIsLooong @hellohuanlin +packages/webview_flutter/webview_flutter_wkwebview/** @cbracken @louisehsu # - Linux -packages/file_selector/file_selector_linux/** @cbracken -packages/image_picker/image_picker_linux/** @cbracken -packages/path_provider/path_provider_linux/** @cbracken -packages/shared_preferences/shared_preferences_linux/** @cbracken -packages/url_launcher/url_launcher_linux/** @cbracken +packages/file_selector/file_selector_linux/** @stuartmorgan-g +packages/image_picker/image_picker_linux/** @stuartmorgan-g +packages/path_provider/path_provider_linux/** @stuartmorgan-g +packages/shared_preferences/shared_preferences_linux/** @stuartmorgan-g +packages/url_launcher/url_launcher_linux/** @stuartmorgan-g # - Windows -packages/camera/camera_windows/** @cbracken -packages/file_selector/file_selector_windows/** @cbracken -packages/image_picker/image_picker_windows/** @cbracken -packages/local_auth/local_auth_windows/** @cbracken -packages/path_provider/path_provider_windows/** @cbracken -packages/shared_preferences/shared_preferences_windows/** @cbracken -packages/url_launcher/url_launcher_windows/** @cbracken +packages/camera/camera_windows/** @stuartmorgan-g +packages/file_selector/file_selector_windows/** @stuartmorgan-g +packages/image_picker/image_picker_windows/** @stuartmorgan-g +packages/local_auth/local_auth_windows/** @stuartmorgan-g +packages/path_provider/path_provider_windows/** @stuartmorgan-g +packages/shared_preferences/shared_preferences_windows/** @stuartmorgan-g +packages/url_launcher/url_launcher_windows/** @stuartmorgan-g # - DevTools extensions # @adsonpleal is the actual maintainer of shared_preferences_tool but is not yet a committer, so can't be listed as the owner. -packages/shared_preferences/shared_preferences_tool/** @tarrinneal +packages/shared_preferences/shared_preferences_tool/** @tarrinneal From 5d2a10fc1bb1d3eb8cbeb65f0a38236b16f77fd5 Mon Sep 17 00:00:00 2001 From: stuartmorgan-g Date: Tue, 29 Jul 2025 13:59:47 -0700 Subject: [PATCH 27/53] [video_player] Move more Obj-C logic to Dart (#9685) Moves some logic from native code to Dart: - Asset -> URL lookup. - Conversion from native buffer range format (start+duration) to Dart range format (start+end). Also does some minor native cleanup: - Removes unnecessary state from `FVPVideoPlayerPlugin`; several registrar-vended objects were being stored, and later changes required storing the registrar itself, so now we can just get those from the registrar on demand. - Removes nil player handling; the player can never return nil now. - Removes `formatHint` from the Pigeon interface; it was only ever used on Android, so doesn't need to be sent across the language boundary. Part of https://github.com/flutter/flutter/issues/172763 ## Pre-Review Checklist **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. --- .../video_player_avfoundation/CHANGELOG.md | 4 + .../darwin/RunnerTests/VideoPlayerTests.m | 135 +++++------------- .../FVPTextureBasedVideoPlayer.m | 12 -- .../FVPVideoPlayer.m | 27 +--- .../FVPVideoPlayerPlugin.m | 95 +++++------- .../FVPTextureBasedVideoPlayer.h | 8 -- .../FVPVideoPlayer.h | 6 - .../FVPVideoPlayer_Internal.h | 4 - .../video_player_avfoundation/messages.g.h | 17 +-- .../video_player_avfoundation/messages.g.m | 49 ++++--- .../example/lib/main.dart | 6 +- .../lib/src/avfoundation_video_player.dart | 96 ++++++------- .../lib/src/messages.g.dart | 51 ++++--- .../pigeons/messages.dart | 8 +- .../video_player_avfoundation/pubspec.yaml | 2 +- .../test/avfoundation_video_player_test.dart | 48 +++++-- .../avfoundation_video_player_test.mocks.dart | 17 +++ 17 files changed, 261 insertions(+), 324 deletions(-) diff --git a/packages/video_player/video_player_avfoundation/CHANGELOG.md b/packages/video_player/video_player_avfoundation/CHANGELOG.md index bccc6346903..e98f438609f 100644 --- a/packages/video_player/video_player_avfoundation/CHANGELOG.md +++ b/packages/video_player/video_player_avfoundation/CHANGELOG.md @@ -1,3 +1,7 @@ +## 2.8.1 + +* Restructures internal logic to move more code to Dart. + ## 2.8.0 * Adds platform view support for macOS. diff --git a/packages/video_player/video_player_avfoundation/darwin/RunnerTests/VideoPlayerTests.m b/packages/video_player/video_player_avfoundation/darwin/RunnerTests/VideoPlayerTests.m index 0dd84c55149..58ad53674d0 100644 --- a/packages/video_player/video_player_avfoundation/darwin/RunnerTests/VideoPlayerTests.m +++ b/packages/video_player/video_player_avfoundation/darwin/RunnerTests/VideoPlayerTests.m @@ -168,32 +168,6 @@ - (instancetype)init { @implementation VideoPlayerTests -- (void)testCreateWithOptionsReturnsErrorForInvalidAssetPath { - NSObject *registrar = OCMProtocolMock(@protocol(FlutterPluginRegistrar)); - OCMStub([registrar lookupKeyForAsset:[OCMArg any]]).andReturn(nil); - FVPVideoPlayerPlugin *videoPlayerPlugin = - [[FVPVideoPlayerPlugin alloc] initWithRegistrar:registrar]; - - FlutterError *initializationError; - [videoPlayerPlugin initialize:&initializationError]; - XCTAssertNil(initializationError); - - FVPCreationOptions *create = - [FVPCreationOptions makeWithAsset:@"invalid/path/to/asset" - uri:nil - packageName:nil - formatHint:nil - httpHeaders:@{} - viewType:FVPPlatformVideoViewTypeTextureView]; - - FlutterError *createError; - NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&createError]; - - XCTAssertNil(playerIdentifier); - XCTAssertNotNil(createError); - XCTAssertEqualObjects(createError.code, @"video_player"); -} - - (void)testBlankVideoBugWithEncryptedVideoStreamAndInvertedAspectRatioBugForSomeVideoStream { // This is to fix 2 bugs: 1. blank video for encrypted video streams on iOS 16 // (https://github.com/flutter/flutter/issues/111457) and 2. swapped width and height for some @@ -218,12 +192,9 @@ - (void)testBlankVideoBugWithEncryptedVideoStreamAndInvertedAspectRatioBugForSom XCTAssertNil(error); FVPCreationOptions *create = [FVPCreationOptions - makeWithAsset:nil - uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4" - packageName:nil - formatHint:nil - httpHeaders:@{} - viewType:FVPPlatformVideoViewTypeTextureView]; + makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4" + httpHeaders:@{} + viewType:FVPPlatformVideoViewTypeTextureView]; NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&error]; XCTAssertNil(error); XCTAssertNotNil(playerIdentifier); @@ -253,12 +224,9 @@ - (void)testPlayerForPlatformViewDoesNotRegisterTexture { [videoPlayerPlugin initialize:&initalizationError]; XCTAssertNil(initalizationError); FVPCreationOptions *create = [FVPCreationOptions - makeWithAsset:nil - uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8" - packageName:nil - formatHint:nil - httpHeaders:@{} - viewType:FVPPlatformVideoViewTypePlatformView]; + makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8" + httpHeaders:@{} + viewType:FVPPlatformVideoViewTypePlatformView]; FlutterError *createError; [videoPlayerPlugin createWithOptions:create error:&createError]; @@ -284,12 +252,9 @@ - (void)testSeekToWhilePausedStartsDisplayLinkTemporarily { [videoPlayerPlugin initialize:&initalizationError]; XCTAssertNil(initalizationError); FVPCreationOptions *create = [FVPCreationOptions - makeWithAsset:nil - uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8" - packageName:nil - formatHint:nil - httpHeaders:@{} - viewType:FVPPlatformVideoViewTypeTextureView]; + makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8" + httpHeaders:@{} + viewType:FVPPlatformVideoViewTypeTextureView]; FlutterError *createError; NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&createError]; FVPTextureBasedVideoPlayer *player = @@ -344,12 +309,9 @@ - (void)testInitStartsDisplayLinkTemporarily { [videoPlayerPlugin initialize:&initalizationError]; XCTAssertNil(initalizationError); FVPCreationOptions *create = [FVPCreationOptions - makeWithAsset:nil - uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8" - packageName:nil - formatHint:nil - httpHeaders:@{} - viewType:FVPPlatformVideoViewTypeTextureView]; + makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8" + httpHeaders:@{} + viewType:FVPPlatformVideoViewTypeTextureView]; FlutterError *createError; NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&createError]; @@ -393,12 +355,9 @@ - (void)testSeekToWhilePlayingDoesNotStopDisplayLink { [videoPlayerPlugin initialize:&initalizationError]; XCTAssertNil(initalizationError); FVPCreationOptions *create = [FVPCreationOptions - makeWithAsset:nil - uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8" - packageName:nil - formatHint:nil - httpHeaders:@{} - viewType:FVPPlatformVideoViewTypeTextureView]; + makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8" + httpHeaders:@{} + viewType:FVPPlatformVideoViewTypeTextureView]; FlutterError *createError; NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&createError]; FVPTextureBasedVideoPlayer *player = @@ -451,12 +410,9 @@ - (void)testPauseWhileWaitingForFrameDoesNotStopDisplayLink { [videoPlayerPlugin initialize:&initalizationError]; XCTAssertNil(initalizationError); FVPCreationOptions *create = [FVPCreationOptions - makeWithAsset:nil - uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8" - packageName:nil - formatHint:nil - httpHeaders:@{} - viewType:FVPPlatformVideoViewTypeTextureView]; + makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/hls/bee.m3u8" + httpHeaders:@{} + viewType:FVPPlatformVideoViewTypeTextureView]; FlutterError *createError; NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&createError]; FVPTextureBasedVideoPlayer *player = @@ -481,12 +437,9 @@ - (void)testDeregistersFromPlayer { XCTAssertNil(error); FVPCreationOptions *create = [FVPCreationOptions - makeWithAsset:nil - uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4" - packageName:nil - formatHint:nil - httpHeaders:@{} - viewType:FVPPlatformVideoViewTypeTextureView]; + makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4" + httpHeaders:@{} + viewType:FVPPlatformVideoViewTypeTextureView]; NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&error]; XCTAssertNil(error); XCTAssertNotNil(playerIdentifier); @@ -513,12 +466,9 @@ - (void)testBufferingStateFromPlayer { XCTAssertNil(error); FVPCreationOptions *create = [FVPCreationOptions - makeWithAsset:nil - uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4" - packageName:nil - formatHint:nil - httpHeaders:@{} - viewType:FVPPlatformVideoViewTypeTextureView]; + makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4" + httpHeaders:@{} + viewType:FVPPlatformVideoViewTypeTextureView]; NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&error]; XCTAssertNil(error); XCTAssertNotNil(playerIdentifier); @@ -709,12 +659,9 @@ - (void)testDoesNotCrashOnRateObservationAfterDisposal { XCTAssertNil(error); FVPCreationOptions *create = [FVPCreationOptions - makeWithAsset:nil - uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4" - packageName:nil - formatHint:nil - httpHeaders:@{} - viewType:FVPPlatformVideoViewTypeTextureView]; + makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4" + httpHeaders:@{} + viewType:FVPPlatformVideoViewTypeTextureView]; NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&error]; XCTAssertNil(error); XCTAssertNotNil(playerIdentifier); @@ -763,12 +710,9 @@ - (void)testHotReloadDoesNotCrash { XCTAssertNil(error); FVPCreationOptions *create = [FVPCreationOptions - makeWithAsset:nil - uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4" - packageName:nil - formatHint:nil - httpHeaders:@{} - viewType:FVPPlatformVideoViewTypeTextureView]; + makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4" + httpHeaders:@{} + viewType:FVPPlatformVideoViewTypeTextureView]; NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&error]; XCTAssertNil(error); XCTAssertNotNil(playerIdentifier); @@ -830,13 +774,9 @@ - (void)testFailedToLoadVideoEventShouldBeAlwaysSent { [videoPlayerPlugin initialize:&error]; - FVPCreationOptions *create = - [FVPCreationOptions makeWithAsset:nil - uri:@"" - packageName:nil - formatHint:nil - httpHeaders:@{} - viewType:FVPPlatformVideoViewTypeTextureView]; + FVPCreationOptions *create = [FVPCreationOptions makeWithUri:@"" + httpHeaders:@{} + viewType:FVPPlatformVideoViewTypeTextureView]; NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&error]; FVPVideoPlayer *player = videoPlayerPlugin.playersByIdentifier[playerIdentifier]; XCTAssertNotNil(player); @@ -896,12 +836,9 @@ - (void)testPlayerShouldNotDropEverySecondFrame { [videoPlayerPlugin initialize:&error]; XCTAssertNil(error); FVPCreationOptions *create = [FVPCreationOptions - makeWithAsset:nil - uri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4" - packageName:nil - formatHint:nil - httpHeaders:@{} - viewType:FVPPlatformVideoViewTypeTextureView]; + makeWithUri:@"https://flutter.github.io/assets-for-api-docs/assets/videos/bee.mp4" + httpHeaders:@{} + viewType:FVPPlatformVideoViewTypeTextureView]; NSNumber *playerIdentifier = [videoPlayerPlugin createWithOptions:create error:&error]; FVPTextureBasedVideoPlayer *player = (FVPTextureBasedVideoPlayer *)videoPlayerPlugin.playersByIdentifier[playerIdentifier]; diff --git a/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/FVPTextureBasedVideoPlayer.m b/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/FVPTextureBasedVideoPlayer.m index 071518e36f2..d8ef40c456e 100644 --- a/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/FVPTextureBasedVideoPlayer.m +++ b/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/FVPTextureBasedVideoPlayer.m @@ -31,18 +31,6 @@ @interface FVPTextureBasedVideoPlayer () @end @implementation FVPTextureBasedVideoPlayer -- (instancetype)initWithAsset:(NSString *)asset - frameUpdater:(FVPFrameUpdater *)frameUpdater - displayLink:(NSObject *)displayLink - avFactory:(id)avFactory - viewProvider:(NSObject *)viewProvider { - return [self initWithURL:[NSURL fileURLWithPath:[FVPVideoPlayer absolutePathForAssetName:asset]] - frameUpdater:frameUpdater - displayLink:displayLink - httpHeaders:@{} - avFactory:avFactory - viewProvider:viewProvider]; -} - (instancetype)initWithURL:(NSURL *)url frameUpdater:(FVPFrameUpdater *)frameUpdater diff --git a/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/FVPVideoPlayer.m b/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/FVPVideoPlayer.m index 77a7195c873..acf5bf60805 100644 --- a/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/FVPVideoPlayer.m +++ b/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/FVPVideoPlayer.m @@ -17,14 +17,6 @@ static void *rateContext = &rateContext; @implementation FVPVideoPlayer -- (instancetype)initWithAsset:(NSString *)asset - avFactory:(id)avFactory - viewProvider:(NSObject *)viewProvider { - return [self initWithURL:[NSURL fileURLWithPath:[FVPVideoPlayer absolutePathForAssetName:asset]] - httpHeaders:@{} - avFactory:avFactory - viewProvider:viewProvider]; -} - (instancetype)initWithURL:(NSURL *)url httpHeaders:(nonnull NSDictionary *)headers @@ -122,19 +114,6 @@ - (void)dispose { [_eventChannel setStreamHandler:nil]; } -+ (NSString *)absolutePathForAssetName:(NSString *)assetName { - NSString *path = [[NSBundle mainBundle] pathForResource:assetName ofType:nil]; -#if TARGET_OS_OSX - // See https://github.com/flutter/flutter/issues/135302 - // TODO(stuartmorgan): Remove this if the asset APIs are adjusted to work better for macOS. - if (!path) { - path = [NSURL URLWithString:assetName relativeToURL:NSBundle.mainBundle.bundleURL].path; - } -#endif - - return path; -} - - (void)addObserversForItem:(AVPlayerItem *)item player:(AVPlayer *)player { [item addObserver:self forKeyPath:@"loadedTimeRanges" @@ -250,8 +229,10 @@ - (void)observeValueForKeyPath:(NSString *)path NSMutableArray *> *values = [[NSMutableArray alloc] init]; for (NSValue *rangeValue in [object loadedTimeRanges]) { CMTimeRange range = [rangeValue CMTimeRangeValue]; - int64_t start = FVPCMTimeToMillis(range.start); - [values addObject:@[ @(start), @(start + FVPCMTimeToMillis(range.duration)) ]]; + [values addObject:@[ + @(FVPCMTimeToMillis(range.start)), + @(FVPCMTimeToMillis(range.duration)), + ]]; } _eventSink(@{@"event" : @"bufferingUpdate", @"values" : values}); } diff --git a/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/FVPVideoPlayerPlugin.m b/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/FVPVideoPlayerPlugin.m index 114bba8552a..4c53923cd42 100644 --- a/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/FVPVideoPlayerPlugin.m +++ b/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/FVPVideoPlayerPlugin.m @@ -43,8 +43,6 @@ @implementation FVPDefaultDisplayLinkFactory #pragma mark - @interface FVPVideoPlayerPlugin () -@property(readonly, weak, nonatomic) NSObject *registry; -@property(readonly, weak, nonatomic) NSObject *messenger; @property(readonly, strong, nonatomic) NSObject *registrar; @property(nonatomic, strong) id displayLinkFactory; @property(nonatomic, strong) id avFactory; @@ -79,8 +77,6 @@ - (instancetype)initWithAVFactory:(id)avFactory registrar:(NSObject *)registrar { self = [super init]; NSAssert(self, @"super init cannot be nil"); - _registry = [registrar textures]; - _messenger = [registrar messenger]; _registrar = registrar; _viewProvider = viewProvider; _displayLinkFactory = displayLinkFactory ?: [[FVPDefaultDisplayLinkFactory alloc] init]; @@ -108,13 +104,13 @@ - (int64_t)onPlayerSetup:(FVPVideoPlayer *)player { int64_t playerIdentifier; if (textureBasedPlayer) { - playerIdentifier = [self.registry registerTexture:textureBasedPlayer]; + playerIdentifier = [self.registrar.textures registerTexture:textureBasedPlayer]; [textureBasedPlayer setTextureIdentifier:playerIdentifier]; } else { playerIdentifier = self.nextNonTexturePlayerIdentifier--; } - NSObject *messenger = self.messenger; + NSObject *messenger = self.registrar.messenger; NSString *channelSuffix = [NSString stringWithFormat:@"%lld", playerIdentifier]; // Set up the player-specific API handler, and its onDispose unregistration. SetUpFVPVideoPlayerInstanceApiWithSuffix(messenger, player, channelSuffix); @@ -123,7 +119,7 @@ - (int64_t)onPlayerSetup:(FVPVideoPlayer *)player { player.onDisposed = ^() { SetUpFVPVideoPlayerInstanceApiWithSuffix(messenger, nil, channelSuffix); if (isTextureBased) { - [weakSelf.registry unregisterTexture:playerIdentifier]; + [weakSelf.registrar.textures unregisterTexture:playerIdentifier]; } }; // Set up the event channel. @@ -196,12 +192,6 @@ - (nullable NSNumber *)createWithOptions:(nonnull FVPCreationOptions *)options @try { FVPVideoPlayer *player = textureBased ? [self texturePlayerWithOptions:options] : [self platformViewPlayerWithOptions:options]; - - if (player == nil) { - *error = [FlutterError errorWithCode:@"video_player" message:@"not implemented" details:nil]; - return nil; - } - return @([self onPlayerSetup:player]); } @catch (NSException *exception) { *error = [FlutterError errorWithCode:@"video_player" message:exception.reason details:nil]; @@ -209,59 +199,30 @@ - (nullable NSNumber *)createWithOptions:(nonnull FVPCreationOptions *)options } } -- (nullable FVPTextureBasedVideoPlayer *)texturePlayerWithOptions: +- (nonnull FVPTextureBasedVideoPlayer *)texturePlayerWithOptions: (nonnull FVPCreationOptions *)options { - FVPFrameUpdater *frameUpdater = [[FVPFrameUpdater alloc] initWithRegistry:_registry]; + FVPFrameUpdater *frameUpdater = + [[FVPFrameUpdater alloc] initWithRegistry:self.registrar.textures]; NSObject *displayLink = [self.displayLinkFactory displayLinkWithRegistrar:_registrar callback:^() { [frameUpdater displayLinkFired]; }]; - if (options.asset) { - NSString *assetPath = [self assetPathFromCreationOptions:options]; - return [[FVPTextureBasedVideoPlayer alloc] initWithAsset:assetPath - frameUpdater:frameUpdater - displayLink:displayLink - avFactory:self.avFactory - viewProvider:self.viewProvider]; - } else if (options.uri) { - return [[FVPTextureBasedVideoPlayer alloc] initWithURL:[NSURL URLWithString:options.uri] - frameUpdater:frameUpdater - displayLink:displayLink - httpHeaders:options.httpHeaders - avFactory:self.avFactory - viewProvider:self.viewProvider]; - } - - return nil; + return [[FVPTextureBasedVideoPlayer alloc] initWithURL:[NSURL URLWithString:options.uri] + frameUpdater:frameUpdater + displayLink:displayLink + httpHeaders:options.httpHeaders + avFactory:self.avFactory + viewProvider:self.viewProvider]; } -- (nullable FVPVideoPlayer *)platformViewPlayerWithOptions:(nonnull FVPCreationOptions *)options { +- (nonnull FVPVideoPlayer *)platformViewPlayerWithOptions:(nonnull FVPCreationOptions *)options { // FVPVideoPlayer contains all required logic for platform views. - if (options.asset) { - NSString *assetPath = [self assetPathFromCreationOptions:options]; - return [[FVPVideoPlayer alloc] initWithAsset:assetPath - avFactory:self.avFactory - viewProvider:self.viewProvider]; - } else if (options.uri) { - return [[FVPVideoPlayer alloc] initWithURL:[NSURL URLWithString:options.uri] - httpHeaders:options.httpHeaders - avFactory:self.avFactory - viewProvider:self.viewProvider]; - } - - return nil; -} - -- (NSString *)assetPathFromCreationOptions:(nonnull FVPCreationOptions *)options { - NSString *assetPath; - if (options.packageName) { - assetPath = [self.registrar lookupKeyForAsset:options.asset fromPackage:options.packageName]; - } else { - assetPath = [self.registrar lookupKeyForAsset:options.asset]; - } - return assetPath; + return [[FVPVideoPlayer alloc] initWithURL:[NSURL URLWithString:options.uri] + httpHeaders:options.httpHeaders + avFactory:self.avFactory + viewProvider:self.viewProvider]; } - (void)disposePlayer:(NSInteger)playerIdentifier error:(FlutterError **)error { @@ -286,4 +247,26 @@ - (void)setMixWithOthers:(BOOL)mixWithOthers #endif } +- (nullable NSString *)fileURLForAssetWithName:(NSString *)asset + package:(nullable NSString *)package + error:(FlutterError *_Nullable *_Nonnull)error { + NSString *resource = package == nil + ? [self.registrar lookupKeyForAsset:asset] + : [self.registrar lookupKeyForAsset:asset fromPackage:package]; + + NSString *path = [[NSBundle mainBundle] pathForResource:resource ofType:nil]; +#if TARGET_OS_OSX + // See https://github.com/flutter/flutter/issues/135302 + // TODO(stuartmorgan): Remove this if the asset APIs are adjusted to work better for macOS. + if (!path) { + path = [NSURL URLWithString:resource relativeToURL:NSBundle.mainBundle.bundleURL].path; + } +#endif + + if (!path) { + return nil; + } + return [NSURL fileURLWithPath:path].absoluteString; +} + @end diff --git a/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/include/video_player_avfoundation/FVPTextureBasedVideoPlayer.h b/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/include/video_player_avfoundation/FVPTextureBasedVideoPlayer.h index 229fd78ca24..bae9105039e 100644 --- a/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/include/video_player_avfoundation/FVPTextureBasedVideoPlayer.h +++ b/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/include/video_player_avfoundation/FVPTextureBasedVideoPlayer.h @@ -23,14 +23,6 @@ NS_ASSUME_NONNULL_BEGIN avFactory:(id)avFactory viewProvider:(NSObject *)viewProvider; -/// Initializes a new instance of FVPTextureBasedVideoPlayer with the given asset, frame updater, -/// display link, AV factory, and registrar. -- (instancetype)initWithAsset:(NSString *)asset - frameUpdater:(FVPFrameUpdater *)frameUpdater - displayLink:(NSObject *)displayLink - avFactory:(id)avFactory - viewProvider:(NSObject *)viewProvider; - /// Sets the texture Identifier for the frame updater. This method should be called once the texture /// identifier is obtained from the texture registry. - (void)setTextureIdentifier:(int64_t)textureIdentifier; diff --git a/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/include/video_player_avfoundation/FVPVideoPlayer.h b/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/include/video_player_avfoundation/FVPVideoPlayer.h index 9a18197ee24..469dda24a61 100644 --- a/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/include/video_player_avfoundation/FVPVideoPlayer.h +++ b/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/include/video_player_avfoundation/FVPVideoPlayer.h @@ -35,12 +35,6 @@ NS_ASSUME_NONNULL_BEGIN /// A block that will be called when dispose is called. @property(nonatomic, nullable, copy) void (^onDisposed)(void); -/// Initializes a new instance of FVPVideoPlayer with the given asset, AV factory, and view -/// provider. -- (instancetype)initWithAsset:(NSString *)asset - avFactory:(id)avFactory - viewProvider:(NSObject *)viewProvider; - /// Initializes a new instance of FVPVideoPlayer with the given URL, HTTP headers, AV factory, and /// view provider. - (instancetype)initWithURL:(NSURL *)url diff --git a/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/include/video_player_avfoundation/FVPVideoPlayer_Internal.h b/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/include/video_player_avfoundation/FVPVideoPlayer_Internal.h index 7b282be4c06..c03736e62f5 100644 --- a/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/include/video_player_avfoundation/FVPVideoPlayer_Internal.h +++ b/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/include/video_player_avfoundation/FVPVideoPlayer_Internal.h @@ -40,10 +40,6 @@ NS_ASSUME_NONNULL_BEGIN /// Updates the playing state of the video player. - (void)updatePlayingState; - -/// Returns the absolute file path for a given asset name. -/// This method attempts to locate the specified asset within the app bundle. -+ (NSString *)absolutePathForAssetName:(NSString *)assetName; @end NS_ASSUME_NONNULL_END diff --git a/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/include/video_player_avfoundation/messages.g.h b/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/include/video_player_avfoundation/messages.g.h index 1f3966d6e77..b895043931e 100644 --- a/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/include/video_player_avfoundation/messages.g.h +++ b/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/include/video_player_avfoundation/messages.g.h @@ -39,16 +39,10 @@ typedef NS_ENUM(NSUInteger, FVPPlatformVideoViewType) { @interface FVPCreationOptions : NSObject /// `init` unavailable to enforce nonnull fields, see the `make` class method. - (instancetype)init NS_UNAVAILABLE; -+ (instancetype)makeWithAsset:(nullable NSString *)asset - uri:(nullable NSString *)uri - packageName:(nullable NSString *)packageName - formatHint:(nullable NSString *)formatHint - httpHeaders:(NSDictionary *)httpHeaders - viewType:(FVPPlatformVideoViewType)viewType; -@property(nonatomic, copy, nullable) NSString *asset; -@property(nonatomic, copy, nullable) NSString *uri; -@property(nonatomic, copy, nullable) NSString *packageName; -@property(nonatomic, copy, nullable) NSString *formatHint; ++ (instancetype)makeWithUri:(NSString *)uri + httpHeaders:(NSDictionary *)httpHeaders + viewType:(FVPPlatformVideoViewType)viewType; +@property(nonatomic, copy) NSString *uri; @property(nonatomic, copy) NSDictionary *httpHeaders; @property(nonatomic, assign) FVPPlatformVideoViewType viewType; @end @@ -63,6 +57,9 @@ NSObject *FVPGetMessagesCodec(void); error:(FlutterError *_Nullable *_Nonnull)error; - (void)disposePlayer:(NSInteger)playerId error:(FlutterError *_Nullable *_Nonnull)error; - (void)setMixWithOthers:(BOOL)mixWithOthers error:(FlutterError *_Nullable *_Nonnull)error; +- (nullable NSString *)fileURLForAssetWithName:(NSString *)asset + package:(nullable NSString *)package + error:(FlutterError *_Nullable *_Nonnull)error; @end extern void SetUpFVPAVFoundationVideoPlayerApi( diff --git a/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/messages.g.m b/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/messages.g.m index 90519755c2e..13076be0e91 100644 --- a/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/messages.g.m +++ b/packages/video_player/video_player_avfoundation/darwin/video_player_avfoundation/Sources/video_player_avfoundation/messages.g.m @@ -77,29 +77,20 @@ + (nullable FVPPlatformVideoViewCreationParams *)nullableFromList:(NSArray * @end @implementation FVPCreationOptions -+ (instancetype)makeWithAsset:(nullable NSString *)asset - uri:(nullable NSString *)uri - packageName:(nullable NSString *)packageName - formatHint:(nullable NSString *)formatHint - httpHeaders:(NSDictionary *)httpHeaders - viewType:(FVPPlatformVideoViewType)viewType { ++ (instancetype)makeWithUri:(NSString *)uri + httpHeaders:(NSDictionary *)httpHeaders + viewType:(FVPPlatformVideoViewType)viewType { FVPCreationOptions *pigeonResult = [[FVPCreationOptions alloc] init]; - pigeonResult.asset = asset; pigeonResult.uri = uri; - pigeonResult.packageName = packageName; - pigeonResult.formatHint = formatHint; pigeonResult.httpHeaders = httpHeaders; pigeonResult.viewType = viewType; return pigeonResult; } + (FVPCreationOptions *)fromList:(NSArray *)list { FVPCreationOptions *pigeonResult = [[FVPCreationOptions alloc] init]; - pigeonResult.asset = GetNullableObjectAtIndex(list, 0); - pigeonResult.uri = GetNullableObjectAtIndex(list, 1); - pigeonResult.packageName = GetNullableObjectAtIndex(list, 2); - pigeonResult.formatHint = GetNullableObjectAtIndex(list, 3); - pigeonResult.httpHeaders = GetNullableObjectAtIndex(list, 4); - FVPPlatformVideoViewTypeBox *boxedFVPPlatformVideoViewType = GetNullableObjectAtIndex(list, 5); + pigeonResult.uri = GetNullableObjectAtIndex(list, 0); + pigeonResult.httpHeaders = GetNullableObjectAtIndex(list, 1); + FVPPlatformVideoViewTypeBox *boxedFVPPlatformVideoViewType = GetNullableObjectAtIndex(list, 2); pigeonResult.viewType = boxedFVPPlatformVideoViewType.value; return pigeonResult; } @@ -108,10 +99,7 @@ + (nullable FVPCreationOptions *)nullableFromList:(NSArray *)list { } - (NSArray *)toList { return @[ - self.asset ?: [NSNull null], self.uri ?: [NSNull null], - self.packageName ?: [NSNull null], - self.formatHint ?: [NSNull null], self.httpHeaders ?: [NSNull null], [[FVPPlatformVideoViewTypeBox alloc] initWithValue:self.viewType], ]; @@ -284,6 +272,31 @@ void SetUpFVPAVFoundationVideoPlayerApiWithSuffix(id bin [channel setMessageHandler:nil]; } } + { + FlutterBasicMessageChannel *channel = [[FlutterBasicMessageChannel alloc] + initWithName:[NSString stringWithFormat:@"%@%@", + @"dev.flutter.pigeon.video_player_avfoundation." + @"AVFoundationVideoPlayerApi.getAssetUrl", + messageChannelSuffix] + binaryMessenger:binaryMessenger + codec:FVPGetMessagesCodec()]; + if (api) { + NSCAssert([api respondsToSelector:@selector(fileURLForAssetWithName:package:error:)], + @"FVPAVFoundationVideoPlayerApi api (%@) doesn't respond to " + @"@selector(fileURLForAssetWithName:package:error:)", + api); + [channel setMessageHandler:^(id _Nullable message, FlutterReply callback) { + NSArray *args = message; + NSString *arg_asset = GetNullableObjectAtIndex(args, 0); + NSString *arg_package = GetNullableObjectAtIndex(args, 1); + FlutterError *error; + NSString *output = [api fileURLForAssetWithName:arg_asset package:arg_package error:&error]; + callback(wrapResult(output, error)); + }]; + } else { + [channel setMessageHandler:nil]; + } + } } void SetUpFVPVideoPlayerInstanceApi(id binaryMessenger, NSObject *api) { diff --git a/packages/video_player/video_player_avfoundation/example/lib/main.dart b/packages/video_player/video_player_avfoundation/example/lib/main.dart index f98516b2003..c3b61debf30 100644 --- a/packages/video_player/video_player_avfoundation/example/lib/main.dart +++ b/packages/video_player/video_player_avfoundation/example/lib/main.dart @@ -269,9 +269,9 @@ class _BumbleBeeEncryptedLiveStreamState _controller.addListener(() { setState(() {}); }); - _controller.initialize(); - - _controller.play(); + _controller.initialize().then((_) { + _controller.play(); + }); } @override diff --git a/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart b/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart index bd89408eeb7..3558dccd67c 100644 --- a/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart +++ b/packages/video_player/video_player_avfoundation/lib/src/avfoundation_video_player.dart @@ -74,30 +74,38 @@ class AVFoundationVideoPlayer extends VideoPlayerPlatform { final DataSource dataSource = options.dataSource; final VideoViewType viewType = options.viewType; - String? asset; - String? packageName; String? uri; - String? formatHint; - Map httpHeaders = {}; switch (dataSource.sourceType) { case DataSourceType.asset: - asset = dataSource.asset; - packageName = dataSource.package; + final String? asset = dataSource.asset; + if (asset == null) { + throw ArgumentError( + '"asset" must be non-null for an asset data source', + ); + } + uri = await _api.getAssetUrl( + asset, + dataSource.package, + ); + if (uri == null) { + // Throw a platform exception for compatibility with the previous + // implementation, which threw on the native side. + throw PlatformException( + code: 'video_player', + message: + 'Asset $asset not found in package ${dataSource.package}.'); + } case DataSourceType.network: - uri = dataSource.uri; - formatHint = _videoFormatStringMap[dataSource.formatHint]; - httpHeaders = dataSource.httpHeaders; case DataSourceType.file: - uri = dataSource.uri; case DataSourceType.contentUri: uri = dataSource.uri; } + if (uri == null) { + throw ArgumentError('Unable to construct a video asset from $options'); + } final CreationOptions pigeonCreationOptions = CreationOptions( - asset: asset, - packageName: packageName, uri: uri, - httpHeaders: httpHeaders, - formatHint: formatHint, + httpHeaders: dataSource.httpHeaders, viewType: _platformVideoViewTypeFromVideoViewType(viewType), ); @@ -166,37 +174,33 @@ class AVFoundationVideoPlayer extends VideoPlayerPlatform { .receiveBroadcastStream() .map((dynamic event) { final Map map = event as Map; - switch (map['event']) { - case 'initialized': - return VideoEvent( + return switch (map['event']) { + 'initialized' => VideoEvent( eventType: VideoEventType.initialized, duration: Duration(milliseconds: map['duration'] as int), - size: Size((map['width'] as num?)?.toDouble() ?? 0.0, - (map['height'] as num?)?.toDouble() ?? 0.0), - ); - case 'completed': - return VideoEvent( + size: Size( + (map['width'] as num?)?.toDouble() ?? 0.0, + (map['height'] as num?)?.toDouble() ?? 0.0, + ), + ), + 'completed' => VideoEvent( eventType: VideoEventType.completed, - ); - case 'bufferingUpdate': - final List values = map['values'] as List; - - return VideoEvent( - buffered: values.map(_toDurationRange).toList(), + ), + 'bufferingUpdate' => VideoEvent( + buffered: (map['values'] as List) + .map(_toDurationRange) + .toList(), eventType: VideoEventType.bufferingUpdate, - ); - case 'bufferingStart': - return VideoEvent(eventType: VideoEventType.bufferingStart); - case 'bufferingEnd': - return VideoEvent(eventType: VideoEventType.bufferingEnd); - case 'isPlayingStateUpdate': - return VideoEvent( + ), + 'bufferingStart' => + VideoEvent(eventType: VideoEventType.bufferingStart), + 'bufferingEnd' => VideoEvent(eventType: VideoEventType.bufferingEnd), + 'isPlayingStateUpdate' => VideoEvent( eventType: VideoEventType.isPlayingStateUpdate, isPlaying: map['isPlaying'] as bool, - ); - default: - return VideoEvent(eventType: VideoEventType.unknown); - } + ), + _ => VideoEvent(eventType: VideoEventType.unknown), + }; }); } @@ -250,19 +254,13 @@ class AVFoundationVideoPlayer extends VideoPlayerPlatform { return player ?? (throw StateError('No active player with ID $id.')); } - static const Map _videoFormatStringMap = - { - VideoFormat.ss: 'ss', - VideoFormat.hls: 'hls', - VideoFormat.dash: 'dash', - VideoFormat.other: 'other', - }; - DurationRange _toDurationRange(dynamic value) { final List pair = value as List; + final int startMilliseconds = pair[0] as int; + final int durationMilliseconds = pair[1] as int; return DurationRange( - Duration(milliseconds: pair[0] as int), - Duration(milliseconds: pair[1] as int), + Duration(milliseconds: startMilliseconds), + Duration(milliseconds: startMilliseconds + durationMilliseconds), ); } } diff --git a/packages/video_player/video_player_avfoundation/lib/src/messages.g.dart b/packages/video_player/video_player_avfoundation/lib/src/messages.g.dart index cc184ae7db0..ae5ec1d9f6c 100644 --- a/packages/video_player/video_player_avfoundation/lib/src/messages.g.dart +++ b/packages/video_player/video_player_avfoundation/lib/src/messages.g.dart @@ -84,21 +84,12 @@ class PlatformVideoViewCreationParams { class CreationOptions { CreationOptions({ - this.asset, - this.uri, - this.packageName, - this.formatHint, + required this.uri, required this.httpHeaders, required this.viewType, }); - String? asset; - - String? uri; - - String? packageName; - - String? formatHint; + String uri; Map httpHeaders; @@ -106,10 +97,7 @@ class CreationOptions { List _toList() { return [ - asset, uri, - packageName, - formatHint, httpHeaders, viewType, ]; @@ -122,13 +110,10 @@ class CreationOptions { static CreationOptions decode(Object result) { result as List; return CreationOptions( - asset: result[0] as String?, - uri: result[1] as String?, - packageName: result[2] as String?, - formatHint: result[3] as String?, + uri: result[0]! as String, httpHeaders: - (result[4] as Map?)!.cast(), - viewType: result[5]! as PlatformVideoViewType, + (result[1] as Map?)!.cast(), + viewType: result[2]! as PlatformVideoViewType, ); } @@ -308,6 +293,32 @@ class AVFoundationVideoPlayerApi { return; } } + + Future getAssetUrl(String asset, String? package) async { + final String pigeonVar_channelName = + 'dev.flutter.pigeon.video_player_avfoundation.AVFoundationVideoPlayerApi.getAssetUrl$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = + BasicMessageChannel( + pigeonVar_channelName, + pigeonChannelCodec, + binaryMessenger: pigeonVar_binaryMessenger, + ); + final Future pigeonVar_sendFuture = + pigeonVar_channel.send([asset, package]); + final List? pigeonVar_replyList = + await pigeonVar_sendFuture as List?; + if (pigeonVar_replyList == null) { + throw _createConnectionError(pigeonVar_channelName); + } else if (pigeonVar_replyList.length > 1) { + throw PlatformException( + code: pigeonVar_replyList[0]! as String, + message: pigeonVar_replyList[1] as String?, + details: pigeonVar_replyList[2], + ); + } else { + return (pigeonVar_replyList[0] as String?); + } + } } class VideoPlayerInstanceApi { diff --git a/packages/video_player/video_player_avfoundation/pigeons/messages.dart b/packages/video_player/video_player_avfoundation/pigeons/messages.dart index c01fc094f1f..4b336cca5e6 100644 --- a/packages/video_player/video_player_avfoundation/pigeons/messages.dart +++ b/packages/video_player/video_player_avfoundation/pigeons/messages.dart @@ -34,14 +34,12 @@ class PlatformVideoViewCreationParams { class CreationOptions { CreationOptions({ + required this.uri, required this.httpHeaders, required this.viewType, }); - String? asset; - String? uri; - String? packageName; - String? formatHint; + String uri; Map httpHeaders; PlatformVideoViewType viewType; } @@ -57,6 +55,8 @@ abstract class AVFoundationVideoPlayerApi { void dispose(int playerId); @ObjCSelector('setMixWithOthers:') void setMixWithOthers(bool mixWithOthers); + @ObjCSelector('fileURLForAssetWithName:package:') + String? getAssetUrl(String asset, String? package); } @HostApi() diff --git a/packages/video_player/video_player_avfoundation/pubspec.yaml b/packages/video_player/video_player_avfoundation/pubspec.yaml index 1482e8a5457..29e56655cac 100644 --- a/packages/video_player/video_player_avfoundation/pubspec.yaml +++ b/packages/video_player/video_player_avfoundation/pubspec.yaml @@ -2,7 +2,7 @@ name: video_player_avfoundation description: iOS and macOS implementation of the video_player plugin. repository: https://github.com/flutter/packages/tree/main/packages/video_player/video_player_avfoundation issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+video_player%22 -version: 2.8.0 +version: 2.8.1 environment: sdk: ^3.6.0 diff --git a/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart b/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart index 6862e999616..fb367310ec1 100644 --- a/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart +++ b/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.dart @@ -75,6 +75,11 @@ void main() { const String asset = 'someAsset'; const String package = 'somePackage'; + const String assetUrl = 'file:///some/asset/path'; + when( + api.getAssetUrl(asset, package), + ).thenAnswer((_) async => assetUrl); + final int? playerId = await player.create( DataSource( sourceType: DataSourceType.asset, @@ -86,13 +91,37 @@ void main() { final VerificationResult verification = verify(api.create(captureAny)); final CreationOptions creationOptions = verification.captured[0] as CreationOptions; - expect(creationOptions.asset, asset); - expect(creationOptions.packageName, package); + expect(creationOptions.uri, assetUrl); expect(playerId, newPlayerId); expect(player.playerViewStates[newPlayerId], const VideoPlayerTextureViewState(textureId: newPlayerId)); }); + test('create with asset throws PlatformException for missing asset', + () async { + final ( + AVFoundationVideoPlayer player, + MockAVFoundationVideoPlayerApi api, + _, + ) = setUpMockPlayer(playerId: 1); + + const String asset = 'someAsset'; + const String package = 'somePackage'; + when( + api.getAssetUrl(asset, package), + ).thenAnswer((_) async => null); + + expect( + player.create( + DataSource( + sourceType: DataSourceType.asset, + asset: asset, + package: package, + ), + ), + throwsA(isA())); + }); + test('create with network', () async { final ( AVFoundationVideoPlayer player, @@ -114,10 +143,7 @@ void main() { final VerificationResult verification = verify(api.create(captureAny)); final CreationOptions creationOptions = verification.captured[0] as CreationOptions; - expect(creationOptions.asset, null); expect(creationOptions.uri, uri); - expect(creationOptions.packageName, null); - expect(creationOptions.formatHint, 'dash'); expect(creationOptions.httpHeaders, {}); expect(playerId, newPlayerId); expect(player.playerViewStates[newPlayerId], @@ -181,6 +207,10 @@ void main() { const String asset = 'someAsset'; const String package = 'somePackage'; + const String assetUrl = 'file:///some/asset/path'; + when( + api.getAssetUrl(asset, package), + ).thenAnswer((_) async => assetUrl); final int? playerId = await player.createWithOptions( VideoCreationOptions( dataSource: DataSource( @@ -195,8 +225,7 @@ void main() { final VerificationResult verification = verify(api.create(captureAny)); final CreationOptions creationOptions = verification.captured[0] as CreationOptions; - expect(creationOptions.asset, asset); - expect(creationOptions.packageName, package); + expect(creationOptions.uri, assetUrl); expect(playerId, newPlayerId); expect(player.playerViewStates[newPlayerId], const VideoPlayerTextureViewState(textureId: newPlayerId)); @@ -226,10 +255,7 @@ void main() { final VerificationResult verification = verify(api.create(captureAny)); final CreationOptions creationOptions = verification.captured[0] as CreationOptions; - expect(creationOptions.asset, null); expect(creationOptions.uri, uri); - expect(creationOptions.packageName, null); - expect(creationOptions.formatHint, 'dash'); expect(creationOptions.httpHeaders, {}); expect(playerId, newPlayerId); expect(player.playerViewStates[newPlayerId], @@ -550,7 +576,7 @@ void main() { ), DurationRange( const Duration(milliseconds: 1235), - const Duration(milliseconds: 4000), + const Duration(milliseconds: 1235 + 4000), ), ]), VideoEvent(eventType: VideoEventType.bufferingStart), diff --git a/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.mocks.dart b/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.mocks.dart index 1e9968cf0d7..76199b56c02 100644 --- a/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.mocks.dart +++ b/packages/video_player/video_player_avfoundation/test/avfoundation_video_player_test.mocks.dart @@ -81,6 +81,23 @@ class MockAVFoundationVideoPlayerApi extends _i1.Mock returnValue: _i4.Future.value(), returnValueForMissingStub: _i4.Future.value(), ) as _i4.Future); + + @override + _i4.Future getAssetUrl( + String? asset, + String? package, + ) => + (super.noSuchMethod( + Invocation.method( + #getAssetUrl, + [ + asset, + package, + ], + ), + returnValue: _i4.Future.value(), + returnValueForMissingStub: _i4.Future.value(), + ) as _i4.Future); } /// A class which mocks [VideoPlayerInstanceApi]. From d91412017a015b5add95dca90505c1c2ec803b27 Mon Sep 17 00:00:00 2001 From: engine-flutter-autoroll Date: Wed, 30 Jul 2025 11:53:27 -0400 Subject: [PATCH 28/53] Roll Flutter from 46b097a3070d to c3279caa127d (18 revisions) (#9699) https://github.com/flutter/flutter/compare/46b097a3070d...c3279caa127d 2025-07-30 engine-flutter-autoroll@skia.org Roll Skia from 00765f238077 to da5a6704f8a3 (1 revision) (flutter/flutter#172966) 2025-07-30 engine-flutter-autoroll@skia.org Roll Skia from 62476cd444d2 to 00765f238077 (3 revisions) (flutter/flutter#172955) 2025-07-30 engine-flutter-autoroll@skia.org Roll Skia from 34693354289f to 62476cd444d2 (1 revision) (flutter/flutter#172950) 2025-07-30 engine-flutter-autoroll@skia.org Roll Skia from f72bd01a49b1 to 34693354289f (1 revision) (flutter/flutter#172946) 2025-07-30 yjbanov@google.com [a11y] add RangeSlider to a11y test app as additional use-case (flutter/flutter#172922) 2025-07-30 engine-flutter-autoroll@skia.org Roll Skia from a42898e5d622 to f72bd01a49b1 (21 revisions) (flutter/flutter#172944) 2025-07-29 bruno.leroux@gmail.com Fix SegmentedButton border doesn't reflect states (flutter/flutter#172754) 2025-07-29 robert.ancell@canonical.com Fix documentation for FlutterEngineRunTask (flutter/flutter#172889) 2025-07-29 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from tK_PAaLeo0pUxi8hv... to bQVQlLssTxxLjoDU0... (flutter/flutter#172925) 2025-07-29 31685655+SalehTZ@users.noreply.github.com fix(scrollbar): Update padding type to EdgeInsetsGeometry (flutter/flutter#172056) 2025-07-29 34871572+gmackall@users.noreply.github.com Refactor Android platform view code in advance of enabling HCPP on existing PV widgets (behind a flag) (flutter/flutter#170553) 2025-07-29 engine-flutter-autoroll@skia.org Roll Packages from 6b2e34edba3c to ed235d11b7fd (4 revisions) (flutter/flutter#172905) 2025-07-29 stuartmorgan@google.com Add package PR triage note (flutter/flutter#172898) 2025-07-29 30870216+gaaclarke@users.noreply.github.com Roll Skia from 409e1c7ba09b to a42898e5d622 (29 revisions) (flutter/flutter#172906) 2025-07-29 30870216+gaaclarke@users.noreply.github.com Made `android_gradle_print_build_variants_test.dart` more robust (flutter/flutter#172910) 2025-07-29 98614782+auto-submit[bot]@users.noreply.github.com Reverts "Reland licenses cpp switch (#172671)" (flutter/flutter#172912) 2025-07-29 magder@google.com Fix Gemini Code Assist for GitHub config yaml (flutter/flutter#172887) 2025-07-29 fluttergithubbot@gmail.com Marks Linux_android_emu_unstable android_defines_test to be unflaky (flutter/flutter#171856) If this roll has caused a breakage, revert this CL and stop the roller using the controls here: https://autoroll.skia.org/r/flutter-packages Please CC muhatashim@google.com,stuartmorgan@google.com on the revert to ensure that a human is aware of the problem. To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose To report a problem with the AutoRoller itself, please file a bug: https://issues.skia.org/issues/new?component=1389291&template=1850622 Documentation for the AutoRoller is here: https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md --- .ci/flutter_master.version | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.ci/flutter_master.version b/.ci/flutter_master.version index d0d4262d062..272901ab871 100644 --- a/.ci/flutter_master.version +++ b/.ci/flutter_master.version @@ -1 +1 @@ -46b097a3070d9941a729a201b972c65414c40b37 +c3279caa127d44914069326cd287c012bb3f2783 From 7a9e9ceee821c13e851a09c65d3e9da38564748f Mon Sep 17 00:00:00 2001 From: jesswrd Date: Wed, 30 Jul 2025 09:19:31 -0700 Subject: [PATCH 29/53] Fixed Camera Switching Bug (#9671) Fixed camera switching issue where phones with multiple back cameras could not correctly switch to some other chosen camera. Fixed by specifying a camera via its CameraInfo instead of its direction. Fixes https://github.com/flutter/flutter/issues/164963 ## Pre-Review Checklist **Note**: The Flutter team is currently trialing the use of [Gemini Code Assist for GitHub](https://developers.google.com/gemini-code-assist/docs/review-github-code). Comments from the `gemini-code-assist` bot should not be taken as authoritative feedback from the Flutter team. If you find its comments useful you can update your code accordingly, but if you are unsure or disagree with the feedback, please feel free to wait for a Flutter team member's review for guidance on which automated comments should be addressed. [^1]: Regular contributors who have demonstrated familiarity with the repository guidelines only need to comment if the PR is not auto-exempted by repo tooling. --- .../camera_android_camerax/CHANGELOG.md | 4 + .../camerax/CameraSelectorProxyApi.java | 7 +- .../plugins/camerax/CameraXLibrary.g.kt | 7 +- .../plugins/camerax/CameraSelectorTest.java | 22 +- .../lib/src/android_camera_camerax.dart | 9 +- .../lib/src/camerax_library.g.dart | 7 +- .../lib/src/camerax_proxy.dart | 1 + .../pigeons/camerax_library.dart | 5 +- .../camera_android_camerax/pubspec.yaml | 2 +- .../test/android_camera_camerax_test.dart | 370 ++++++++++++++++++ .../android_camera_camerax_test.mocks.dart | 4 + .../test/preview_rotation_test.dart | 17 + 12 files changed, 446 insertions(+), 9 deletions(-) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index be098207753..02a72cd9cd0 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.6.19+1 + +* Fixes incorrect camera switching by selecting a camera via its CameraInfo. + ## 0.6.19 * Changes target rotation of captured images to current default display rotation to fix captured diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraSelectorProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraSelectorProxyApi.java index a84e16bcfc2..ba48bd6937a 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraSelectorProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraSelectorProxyApi.java @@ -9,6 +9,7 @@ import androidx.camera.core.CameraInfo; import androidx.camera.core.CameraSelector; import androidx.camera.core.ExperimentalLensFacing; +import java.util.Collections; import java.util.List; /** @@ -24,7 +25,8 @@ class CameraSelectorProxyApi extends PigeonApiCameraSelector { @ExperimentalLensFacing @NonNull @Override - public CameraSelector pigeon_defaultConstructor(@Nullable LensFacing requireLensFacing) { + public CameraSelector pigeon_defaultConstructor( + @Nullable LensFacing requireLensFacing, @Nullable CameraInfo cameraInfoForFilter) { final CameraSelector.Builder builder = new CameraSelector.Builder(); if (requireLensFacing != null) { switch (requireLensFacing) { @@ -42,6 +44,9 @@ public CameraSelector pigeon_defaultConstructor(@Nullable LensFacing requireLens break; } } + if (cameraInfoForFilter != null) { + builder.addCameraFilter(cameraInfos -> Collections.singletonList(cameraInfoForFilter)); + } return builder.build(); } diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraXLibrary.g.kt b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraXLibrary.g.kt index 1eeb0e98de8..71041b05add 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraXLibrary.g.kt +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraXLibrary.g.kt @@ -2027,7 +2027,8 @@ abstract class PigeonApiCameraSelector( open val pigeonRegistrar: CameraXLibraryPigeonProxyApiRegistrar ) { abstract fun pigeon_defaultConstructor( - requireLensFacing: LensFacing? + requireLensFacing: LensFacing?, + cameraInfoForFilter: androidx.camera.core.CameraInfo? ): androidx.camera.core.CameraSelector /** A static `CameraSelector` that selects the default back facing camera. */ @@ -2057,10 +2058,12 @@ abstract class PigeonApiCameraSelector( val args = message as List val pigeon_identifierArg = args[0] as Long val requireLensFacingArg = args[1] as LensFacing? + val cameraInfoForFilterArg = args[2] as androidx.camera.core.CameraInfo? val wrapped: List = try { api.pigeonRegistrar.instanceManager.addDartCreatedInstance( - api.pigeon_defaultConstructor(requireLensFacingArg), pigeon_identifierArg) + api.pigeon_defaultConstructor(requireLensFacingArg, cameraInfoForFilterArg), + pigeon_identifierArg) listOf(null) } catch (exception: Throwable) { CameraXLibraryPigeonUtils.wrapError(exception) diff --git a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/CameraSelectorTest.java b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/CameraSelectorTest.java index 93ab0014edd..2d01c749d44 100644 --- a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/CameraSelectorTest.java +++ b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/CameraSelectorTest.java @@ -10,6 +10,7 @@ import androidx.camera.core.CameraInfo; import androidx.camera.core.CameraSelector; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.junit.Test; @@ -18,13 +19,30 @@ public class CameraSelectorTest { @Test public void pigeon_defaultConstructor_createsCameraSelectorInstanceWithLensFacing() { final PigeonApiCameraSelector api = new TestProxyApiRegistrar().getPigeonApiCameraSelector(); - final CameraSelector selector = - api.pigeon_defaultConstructor(io.flutter.plugins.camerax.LensFacing.FRONT); + api.pigeon_defaultConstructor(io.flutter.plugins.camerax.LensFacing.FRONT, null); assertEquals(selector.getLensFacing(), (Integer) CameraSelector.LENS_FACING_FRONT); } + @Test + public void pigeon_defaultConstructor_createsCameraSelectorInstanceWithCameraInfo() { + final PigeonApiCameraSelector api = new TestProxyApiRegistrar().getPigeonApiCameraSelector(); + final androidx.camera.core.CameraInfo cameraInfo = mock(CameraInfo.class); + final androidx.camera.core.CameraInfo cameraInfoToSelect = mock(CameraInfo.class); + + final CameraSelector selector = api.pigeon_defaultConstructor(null, cameraInfoToSelect); + + final List cameraInfosList = new ArrayList<>(); + cameraInfosList.add(cameraInfo); + cameraInfosList.add(cameraInfoToSelect); + + final List filteredCameraInfosList = + selector.filter(new ArrayList<>(cameraInfosList)); + assertEquals(1, filteredCameraInfosList.size()); + assertEquals(cameraInfoToSelect, filteredCameraInfosList.get(0)); + } + @Test public void filter_callsFilterWithMethodParameters() { final PigeonApiCameraSelector api = new TestProxyApiRegistrar().getPigeonApiCameraSelector(); diff --git a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart index e52435b3b10..47502f865c1 100644 --- a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart +++ b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart @@ -266,6 +266,9 @@ class AndroidCameraCameraX extends CameraPlatform { @visibleForTesting late bool enableRecordingAudio; + /// A map to associate a [CameraInfo] with its camera name. + final Map _savedCameras = {}; + /// Returns list of all available cameras and their descriptions. @override Future> availableCameras() async { @@ -302,6 +305,8 @@ class AndroidCameraCameraX extends CameraPlatform { cameraName = 'Camera $cameraCount'; cameraCount++; + _savedCameras[cameraName] = cameraInfo; + // TODO(camsim99): Use camera ID retrieved from Camera2CameraInfo as // camera name: https://github.com/flutter/flutter/issues/147545. cameraDescriptions.add( @@ -357,13 +362,15 @@ class AndroidCameraCameraX extends CameraPlatform { if (error != null) { throw CameraException(error.errorCode, error.description); } + // Choose CameraInfo to create CameraSelector by name associated with desired camera. + final CameraInfo? chosenCameraInfo = _savedCameras[cameraDescription.name]; // Save CameraSelector that matches cameraDescription. final LensFacing cameraSelectorLensDirection = _getCameraSelectorLensDirection(cameraDescription.lensDirection); cameraIsFrontFacing = cameraSelectorLensDirection == LensFacing.front; cameraSelector = proxy.newCameraSelector( - requireLensFacing: cameraSelectorLensDirection, + cameraInfoForFilter: chosenCameraInfo, ); // Start listening for device orientation changes preceding camera creation. unawaited( diff --git a/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart b/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart index 5d266c09ce7..ddbdbcc94d3 100644 --- a/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart +++ b/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart @@ -1964,6 +1964,7 @@ class CameraSelector extends PigeonInternalProxyApiBaseClass { super.pigeon_binaryMessenger, super.pigeon_instanceManager, LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, }) { final int pigeonVar_instanceIdentifier = pigeon_instanceManager .addDartCreatedInstance(this); @@ -1979,7 +1980,11 @@ class CameraSelector extends PigeonInternalProxyApiBaseClass { binaryMessenger: pigeonVar_binaryMessenger, ); final Future pigeonVar_sendFuture = pigeonVar_channel.send( - [pigeonVar_instanceIdentifier, requireLensFacing], + [ + pigeonVar_instanceIdentifier, + requireLensFacing, + cameraInfoForFilter, + ], ); () async { final List? pigeonVar_replyList = diff --git a/packages/camera/camera_android_camerax/lib/src/camerax_proxy.dart b/packages/camera/camera_android_camerax/lib/src/camerax_proxy.dart index 123a2f6804f..6ad4e335ecc 100644 --- a/packages/camera/camera_android_camerax/lib/src/camerax_proxy.dart +++ b/packages/camera/camera_android_camerax/lib/src/camerax_proxy.dart @@ -108,6 +108,7 @@ class CameraXProxy { /// Constructs [CameraSelector]. final CameraSelector Function({ LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, BinaryMessenger? pigeon_binaryMessenger, PigeonInstanceManager? pigeon_instanceManager, }) diff --git a/packages/camera/camera_android_camerax/pigeons/camerax_library.dart b/packages/camera/camera_android_camerax/pigeons/camerax_library.dart index 80253e11dd9..102fcd2d288 100644 --- a/packages/camera/camera_android_camerax/pigeons/camerax_library.dart +++ b/packages/camera/camera_android_camerax/pigeons/camerax_library.dart @@ -290,7 +290,10 @@ enum LensFacing { ), ) abstract class CameraSelector { - CameraSelector(LensFacing? requireLensFacing); + CameraSelector( + LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, + ); /// A static `CameraSelector` that selects the default back facing camera. @static diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml index 09d8688b323..4238defac16 100644 --- a/packages/camera/camera_android_camerax/pubspec.yaml +++ b/packages/camera/camera_android_camerax/pubspec.yaml @@ -2,7 +2,7 @@ name: camera_android_camerax description: Android implementation of the camera plugin using the CameraX library. repository: https://github.com/flutter/packages/tree/main/packages/camera/camera_android_camerax issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 -version: 0.6.19 +version: 0.6.19+1 environment: sdk: ^3.7.0 diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart index 6b2535cf437..e9b1bb7598c 100644 --- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart +++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart @@ -169,6 +169,7 @@ void main() { }, newCameraSelector: ({ LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names @@ -675,6 +676,7 @@ void main() { Future.value(mockProcessCameraProvider), newCameraSelector: ({ LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names @@ -787,6 +789,7 @@ void main() { }, newCameraSelector: ({ LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names @@ -1101,6 +1104,7 @@ void main() { }, newCameraSelector: ({ LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names @@ -1929,6 +1933,371 @@ void main() { }, ); + test( + 'createCamera properly selects specific back camera by specifying a CameraInfo', + () async { + // Arrange + final AndroidCameraCameraX camera = AndroidCameraCameraX(); + final List returnData = [ + { + 'name': 'Camera 0', + 'lensFacing': 'back', + 'sensorOrientation': 0, + }, + { + 'name': 'Camera 1', + 'lensFacing': 'back', + 'sensorOrientation': 0, + }, + { + 'name': 'Camera 2', + 'lensFacing': 'front', + 'sensorOrientation': 0, + }, + ]; + + List mockCameraInfosList = []; + final Map cameraNameToInfos = + {}; + + const int testSensorOrientation = 0; + + // Mocks for objects created by availableCameras. + final MockProcessCameraProvider mockProcessCameraProvider = + MockProcessCameraProvider(); + final MockCameraSelector mockFrontCameraSelector = MockCameraSelector(); + final MockCameraSelector mockBackCameraSelector = MockCameraSelector(); + final MockCameraSelector mockChosenCameraInfoCameraSelector = + MockCameraSelector(); + + final MockCameraInfo mockFrontCameraInfo = MockCameraInfo(); + final MockCameraInfo mockBackCameraInfoOne = MockCameraInfo(); + final MockCameraInfo mockBackCameraInfoTwo = MockCameraInfo(); + + // Mock/Detached objects for (typically attached) objects created by + // createCamera. + final MockPreview mockPreview = MockPreview(); + final MockImageCapture mockImageCapture = MockImageCapture(); + final MockImageAnalysis mockImageAnalysis = MockImageAnalysis(); + final MockRecorder mockRecorder = MockRecorder(); + final MockVideoCapture mockVideoCapture = MockVideoCapture(); + final MockCamera mockCamera = MockCamera(); + final MockCameraInfo mockCameraInfo = MockCameraInfo(); + final MockCameraControl mockCameraControl = MockCameraControl(); + final MockCamera2CameraInfo mockCamera2CameraInfo = + MockCamera2CameraInfo(); + final MockCameraCharacteristicsKey mockCameraCharacteristicsKey = + MockCameraCharacteristicsKey(); + + // Tell plugin to create mock/detached objects and stub method calls for the + // testing of availableCameras and createCamera. + camera.proxy = CameraXProxy( + setUpGenericsProxy: + ({ + BinaryMessenger? pigeonBinaryMessenger, + PigeonInstanceManager? pigeonInstanceManager, + }) {}, + getInstanceProcessCameraProvider: ({ + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Future.value(mockProcessCameraProvider); + }, + newCameraSelector: ({ + LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return mockFrontCameraSelector; + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } + if (cameraInfoForFilter == mockBackCameraInfoOne) { + return mockChosenCameraInfoCameraSelector; + } + + return mockBackCameraSelector; + }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, + newPreview: ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockPreview; + }, + newImageCapture: ({ + int? targetRotation, + CameraXFlashMode? flashMode, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageCapture; + }, + newRecorder: ({ + int? aspectRatio, + int? targetVideoEncodingBitRate, + QualitySelector? qualitySelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockRecorder; + }, + withOutputVideoCapture: ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockVideoCapture; + }, + newImageAnalysis: ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageAnalysis; + }, + newResolutionStrategy: ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionStrategy(); + }, + newResolutionSelector: ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionSelector(); + }, + fromQualitySelector: ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockQualitySelector(); + }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, + newAspectRatioStrategy: ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockAspectRatioStrategy(); + }, + createWithOnePreferredSizeResolutionFilter: ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionFilter(); + }, + fromCamera2CameraInfo: ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + when( + mockCamera2CameraInfo.getCameraCharacteristic( + mockCameraCharacteristicsKey, + ), + ).thenAnswer((_) async => testSensorOrientation); + return mockCamera2CameraInfo; + }, + newCameraSize: ({ + required int width, + required int height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockCameraSize(); + }, + sensorOrientationCameraCharacteristics: () { + return mockCameraCharacteristicsKey; + }, + lowerQualityOrHigherThanFallbackStrategy: ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, + ); + + // Mock calls to native platform + when(mockProcessCameraProvider.getAvailableCameraInfos()).thenAnswer(( + _, + ) async { + mockCameraInfosList = [ + mockBackCameraInfoOne, + mockBackCameraInfoTwo, + mockFrontCameraInfo, + ]; + return [ + mockBackCameraInfoOne, + mockBackCameraInfoTwo, + mockFrontCameraInfo, + ]; + }); + when( + mockBackCameraSelector.filter([mockBackCameraInfoOne]), + ).thenAnswer((_) async => [mockBackCameraInfoOne]); + when( + mockBackCameraSelector.filter([mockBackCameraInfoTwo]), + ).thenAnswer((_) async => [mockBackCameraInfoTwo]); + when( + mockBackCameraSelector.filter([mockFrontCameraInfo]), + ).thenAnswer((_) async => []); + when( + mockFrontCameraSelector.filter([mockBackCameraInfoOne]), + ).thenAnswer((_) async => []); + when( + mockFrontCameraSelector.filter([mockBackCameraInfoTwo]), + ).thenAnswer((_) async => []); + when( + mockFrontCameraSelector.filter([mockFrontCameraInfo]), + ).thenAnswer((_) async => [mockFrontCameraInfo]); + + final List cameraDescriptions = + await camera.availableCameras(); + expect(cameraDescriptions.length, returnData.length); + + for (int i = 0; i < returnData.length; i++) { + final Map savedData = + (returnData[i] as Map).cast(); + + cameraNameToInfos[savedData['name']! as String] = + mockCameraInfosList[i]; + final CameraDescription cameraDescription = CameraDescription( + name: savedData['name']! as String, + lensDirection: + (savedData['lensFacing']! as String) == 'front' + ? CameraLensDirection.front + : CameraLensDirection.back, + sensorOrientation: savedData['sensorOrientation']! as int, + ); + expect(cameraDescriptions[i], cameraDescription); + expect(cameraNameToInfos.containsKey(cameraDescription.name), isTrue); + } + + when( + mockProcessCameraProvider.bindToLifecycle( + mockChosenCameraInfoCameraSelector, + [mockPreview, mockImageCapture, mockImageAnalysis], + ), + ).thenAnswer((_) async => mockCamera); + when(mockCamera.getCameraInfo()).thenAnswer((_) async => mockCameraInfo); + when( + mockCameraInfo.getCameraState(), + ).thenAnswer((_) async => MockLiveCameraState()); + when(mockCamera.cameraControl).thenAnswer((_) => mockCameraControl); + + camera.processCameraProvider = mockProcessCameraProvider; + + // Verify the camera name used to create camera is associated with mockBackCameraInfoOne. + expect( + cameraNameToInfos[cameraDescriptions[0].name], + mockBackCameraInfoOne, + ); + + // Creating a camera with settings using a specific camera from + // available cameras. + await camera.createCameraWithSettings( + cameraDescriptions[0], + const MediaSettings( + resolutionPreset: ResolutionPreset.low, + fps: 15, + videoBitrate: 200000, + audioBitrate: 32000, + enableAudio: true, + ), + ); + + // Verify CameraSelector is chosen based on specified cameraInfo. + expect(camera.cameraSelector, equals(mockChosenCameraInfoCameraSelector)); + }, + ); + test( 'initializeCamera throws a CameraException when createCamera has not been called before initializedCamera', () async { @@ -1987,6 +2356,7 @@ void main() { }) => Future.value(mockProcessCameraProvider), newCameraSelector: ({ LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart index 8a709e6beff..ad9b05fbac0 100644 --- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart +++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart @@ -1052,6 +1052,7 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { @override _i2.CameraSelector Function({ + _i3.CameraInfo? cameraInfoForFilter, _i8.BinaryMessenger? pigeon_binaryMessenger, _i2.PigeonInstanceManager? pigeon_instanceManager, _i2.LensFacing? requireLensFacing, @@ -1061,6 +1062,7 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { Invocation.getter(#newCameraSelector), returnValue: ({ + _i3.CameraInfo? cameraInfoForFilter, _i8.BinaryMessenger? pigeon_binaryMessenger, _i2.PigeonInstanceManager? pigeon_instanceManager, _i2.LensFacing? requireLensFacing, @@ -1070,6 +1072,7 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { ), returnValueForMissingStub: ({ + _i3.CameraInfo? cameraInfoForFilter, _i8.BinaryMessenger? pigeon_binaryMessenger, _i2.PigeonInstanceManager? pigeon_instanceManager, _i2.LensFacing? requireLensFacing, @@ -1079,6 +1082,7 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { ), ) as _i2.CameraSelector Function({ + _i3.CameraInfo? cameraInfoForFilter, _i8.BinaryMessenger? pigeon_binaryMessenger, _i2.PigeonInstanceManager? pigeon_instanceManager, _i2.LensFacing? requireLensFacing, diff --git a/packages/camera/camera_android_camerax/test/preview_rotation_test.dart b/packages/camera/camera_android_camerax/test/preview_rotation_test.dart index e6921b29077..e427b971c15 100644 --- a/packages/camera/camera_android_camerax/test/preview_rotation_test.dart +++ b/packages/camera/camera_android_camerax/test/preview_rotation_test.dart @@ -90,6 +90,7 @@ void main() { required MockProcessCameraProvider mockProcessCameraProvider, required CameraSelector Function({ LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names @@ -292,6 +293,7 @@ void main() { required MockProcessCameraProvider mockProcessCameraProvider, required CameraSelector Function({ LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names @@ -321,6 +323,7 @@ void main() { /// Returns function that a CameraXProxy can use to select the front camera. MockCameraSelector Function({ LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names @@ -329,6 +332,7 @@ void main() { createCameraSelectorForFrontCamera(MockCameraSelector mockCameraSelector) { return ({ LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names @@ -349,6 +353,7 @@ void main() { /// Returns function that a CameraXProxy can use to select the back camera. MockCameraSelector Function({ LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names @@ -357,6 +362,7 @@ void main() { createCameraSelectorForBackCamera(MockCameraSelector mockCameraSelector) { return ({ LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names @@ -459,6 +465,7 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, }) fakeCreateCameraSelector; late MediaSettings testMediaSettings; @@ -709,6 +716,7 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, }) fakeCreateCameraSelector; late MediaSettings testMediaSettings; @@ -964,6 +972,7 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, }) proxyCreateCameraSelectorForFrontCamera = createCameraSelectorForFrontCamera(mockFrontCameraSelector); @@ -1073,6 +1082,7 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, }) proxyCreateCameraSelectorForFrontCamera = createCameraSelectorForFrontCamera(mockFrontCameraSelector); @@ -1164,6 +1174,7 @@ void main() { late MockCameraSelector mockFrontCameraSelector; late MockCameraSelector Function({ LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names @@ -1455,6 +1466,7 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, }) proxyCreateCameraSelectorForFrontCamera; late Future Function() proxyGetUiOrientation; @@ -1749,6 +1761,7 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, }) proxyCreateCameraSelectorForFrontCamera = createCameraSelectorForFrontCamera(mockFrontCameraSelector); @@ -1864,6 +1877,7 @@ void main() { final MockCameraSelector mockFrontCameraSelector = MockCameraSelector(); final MockCameraSelector Function({ LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names @@ -1982,6 +1996,7 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, }) proxyCreateCameraSelectorForBackCamera; late Future Function() proxyGetDefaultDisplayRotation; @@ -2171,6 +2186,7 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, }) proxyCreateCameraSelectorForFrontCamera = createCameraSelectorForFrontCamera(mockFrontCameraSelector); @@ -2249,6 +2265,7 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, }) proxyCreateCameraSelectorForFrontCamera = createCameraSelectorForBackCamera(mockBackCameraSelector); From 90df93b0b2cc41e32fd382e17dc6faff01bc8818 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Tue, 29 Jul 2025 10:47:51 -0700 Subject: [PATCH 30/53] format --- .../lib/src/android_camera_camerax.dart | 92 ++- .../lib/src/camerax_library.dart | 20 +- .../lib/src/camerax_library.g.dart | 4 +- .../lib/src/image_reader_rotated_preview.dart | 5 +- .../lib/src/rotated_preview_utils.dart | 7 +- .../src/surface_texture_rotated_preview.dart | 5 +- .../android_camera_camerax_test.mocks.dart | 172 +++-- .../test/preview_rotation_test.dart | 586 +++++++++--------- 8 files changed, 428 insertions(+), 463 deletions(-) diff --git a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart index 47502f865c1..2055e87ae49 100644 --- a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart +++ b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart @@ -289,12 +289,14 @@ class AndroidCameraCameraX extends CameraPlatform { // Determine the lens direction by filtering the CameraInfo // TODO(gmackall): replace this with call to CameraInfo.getLensFacing when changes containing that method are available if ((await proxy - .newCameraSelector(requireLensFacing: LensFacing.back) - .filter([cameraInfo])).isNotEmpty) { + .newCameraSelector(requireLensFacing: LensFacing.back) + .filter([cameraInfo])) + .isNotEmpty) { cameraLensDirection = CameraLensDirection.back; } else if ((await proxy - .newCameraSelector(requireLensFacing: LensFacing.front) - .filter([cameraInfo])).isNotEmpty) { + .newCameraSelector(requireLensFacing: LensFacing.front) + .filter([cameraInfo])) + .isNotEmpty) { cameraLensDirection = CameraLensDirection.front; } else { //Skip this CameraInfo as its lens direction is unknown @@ -439,13 +441,13 @@ class AndroidCameraCameraX extends CameraPlatform { .toDouble(); sensorOrientationDegrees = cameraDescription.sensorOrientation.toDouble(); - _handlesCropAndRotation = - await preview!.surfaceProducerHandlesCropAndRotation(); + _handlesCropAndRotation = await preview! + .surfaceProducerHandlesCropAndRotation(); _initialDeviceOrientation = _deserializeDeviceOrientation( await deviceOrientationManager.getUiOrientation(), ); - _initialDefaultDisplayRotation = - await deviceOrientationManager.getDefaultDisplayRotation(); + _initialDefaultDisplayRotation = await deviceOrientationManager + .getDefaultDisplayRotation(); return flutterSurfaceTextureId; } @@ -476,8 +478,8 @@ class AndroidCameraCameraX extends CameraPlatform { ); } - final ResolutionInfo previewResolutionInfo = - (await preview!.getResolutionInfo())!; + final ResolutionInfo previewResolutionInfo = (await preview! + .getResolutionInfo())!; // Mark auto-focus, auto-exposure and setting points for focus & exposure // as available operations as CameraX does its best across devices to @@ -647,10 +649,9 @@ class AndroidCameraCameraX extends CameraPlatform { case FocusMode.auto: // Determine auto-focus point to restore, if any. We do not restore // default auto-focus point if set previously to lock focus. - final MeteringPoint? unLockedFocusPoint = - _defaultFocusPointLocked - ? null - : currentFocusMeteringAction!.meteringPointsAf.first; + final MeteringPoint? unLockedFocusPoint = _defaultFocusPointLocked + ? null + : currentFocusMeteringAction!.meteringPointsAf.first; _defaultFocusPointLocked = false; autoFocusPoint = unLockedFocusPoint; disableAutoCancel = false; @@ -661,10 +662,9 @@ class AndroidCameraCameraX extends CameraPlatform { if (currentFocusMeteringAction != null) { final List possibleCurrentAfPoints = currentFocusMeteringAction!.meteringPointsAf; - lockedFocusPoint = - possibleCurrentAfPoints.isEmpty - ? null - : possibleCurrentAfPoints.first; + lockedFocusPoint = possibleCurrentAfPoints.isEmpty + ? null + : possibleCurrentAfPoints.first; } // If there isn't, lock center of entire sensor area by default. @@ -1494,13 +1494,12 @@ class AndroidCameraCameraX extends CameraPlatform { ); final ResolutionFilter resolutionFilter = proxy .createWithOnePreferredSizeResolutionFilter(preferredSize: boundSize); - final AspectRatioStrategy? aspectRatioStrategy = - aspectRatio == null - ? null - : proxy.newAspectRatioStrategy( - preferredAspectRatio: aspectRatio, - fallbackRule: AspectRatioStrategyFallbackRule.auto, - ); + final AspectRatioStrategy? aspectRatioStrategy = aspectRatio == null + ? null + : proxy.newAspectRatioStrategy( + preferredAspectRatio: aspectRatio, + fallbackRule: AspectRatioStrategyFallbackRule.auto, + ); return proxy.newResolutionSelector( resolutionStrategy: resolutionStrategy, resolutionFilter: resolutionFilter, @@ -1617,17 +1616,17 @@ class AndroidCameraCameraX extends CameraPlatform { // Remove metering point with specified meteringMode from current focus // and metering action, as only one focus or exposure point may be set // at once in this plugin. - final List<(MeteringPoint, MeteringMode)> newMeteringPointInfos = - originalMeteringPoints - .where( - ((MeteringPoint, MeteringMode) meteringPointInfo) => - // meteringPointInfo may technically include points without a - // mode specified, but this logic is safe because this plugin - // only uses points that explicitly have mode - // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. - meteringPointInfo.$2 != meteringMode, - ) - .toList(); + final List<(MeteringPoint, MeteringMode)> + newMeteringPointInfos = originalMeteringPoints + .where( + ((MeteringPoint, MeteringMode) meteringPointInfo) => + // meteringPointInfo may technically include points without a + // mode specified, but this logic is safe because this plugin + // only uses points that explicitly have mode + // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. + meteringPointInfo.$2 != meteringMode, + ) + .toList(); if (newMeteringPointInfos.isEmpty) { // If no other metering points were specified, cancel any previously @@ -1664,17 +1663,16 @@ class AndroidCameraCameraX extends CameraPlatform { final Iterable<(MeteringPoint, MeteringMode)> originalMeteringPoints = _combineMeteringPoints(currentFocusMeteringAction!); - newMeteringPointInfos = - originalMeteringPoints - .where( - ((MeteringPoint, MeteringMode) meteringPointInfo) => - // meteringPointInfo may technically include points without a - // mode specified, but this logic is safe because this plugin - // only uses points that explicitly have mode - // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. - meteringPointInfo.$2 != meteringMode, - ) - .toList(); + newMeteringPointInfos = originalMeteringPoints + .where( + ((MeteringPoint, MeteringMode) meteringPointInfo) => + // meteringPointInfo may technically include points without a + // mode specified, but this logic is safe because this plugin + // only uses points that explicitly have mode + // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. + meteringPointInfo.$2 != meteringMode, + ) + .toList(); } newMeteringPointInfos.add((meteringPoint, meteringMode)); diff --git a/packages/camera/camera_android_camerax/lib/src/camerax_library.dart b/packages/camera/camera_android_camerax/lib/src/camerax_library.dart index 2c0d0a43747..e692d408fa2 100644 --- a/packages/camera/camera_android_camerax/lib/src/camerax_library.dart +++ b/packages/camera/camera_android_camerax/lib/src/camerax_library.dart @@ -37,17 +37,15 @@ void setUpGenerics({ ); camerax.CameraInfo.pigeon_setUpMessageHandlers( - pigeon_newInstance: ( - int sensorRotationDegrees, - camerax.ExposureState exposureState, - ) { - return CameraInfo.detached( - sensorRotationDegrees: sensorRotationDegrees, - exposureState: exposureState, - pigeon_binaryMessenger: pigeonBinaryMessenger, - pigeon_instanceManager: pigeonInstanceManager, - ); - }, + pigeon_newInstance: + (int sensorRotationDegrees, camerax.ExposureState exposureState) { + return CameraInfo.detached( + sensorRotationDegrees: sensorRotationDegrees, + exposureState: exposureState, + pigeon_binaryMessenger: pigeonBinaryMessenger, + pigeon_instanceManager: pigeonInstanceManager, + ); + }, ); } diff --git a/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart b/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart index ddbdbcc94d3..b2f730b89c1 100644 --- a/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart +++ b/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart @@ -384,8 +384,8 @@ class PigeonInstanceManager { final PigeonInternalProxyApiBaseClass? strongInstance = _strongInstances[identifier]; if (strongInstance != null) { - final PigeonInternalProxyApiBaseClass copy = - strongInstance.pigeon_copy(); + final PigeonInternalProxyApiBaseClass copy = strongInstance + .pigeon_copy(); _identifiers[copy] = identifier; _weakInstances[identifier] = WeakReference(copy); diff --git a/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart b/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart index 2cb8f44bf1a..49cf6c48509 100644 --- a/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart +++ b/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart @@ -78,8 +78,9 @@ final class _ImageReaderRotatedPreviewState late StreamSubscription deviceOrientationSubscription; Future _getCurrentDefaultDisplayRotationDegrees() async { - final int currentDefaultDisplayRotationQuarterTurns = - await widget.deviceOrientationManager.getDefaultDisplayRotation(); + final int currentDefaultDisplayRotationQuarterTurns = await widget + .deviceOrientationManager + .getDefaultDisplayRotation(); return getQuarterTurnsFromSurfaceRotationConstant( currentDefaultDisplayRotationQuarterTurns, ) * diff --git a/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart b/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart index cfebe6976d5..ae3152d7ff4 100644 --- a/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart +++ b/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart @@ -15,10 +15,9 @@ int getQuarterTurnsFromSurfaceRotationConstant(int surfaceRotationConstant) { Surface.rotation90 => 3, Surface.rotation180 => 2, Surface.rotation270 => 1, - int() => - throw ArgumentError( - '$surfaceRotationConstant is an unknown Surface rotation constant, so counter-clockwise quarter turns cannot be determined.', - ), + int() => throw ArgumentError( + '$surfaceRotationConstant is an unknown Surface rotation constant, so counter-clockwise quarter turns cannot be determined.', + ), }; } diff --git a/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart b/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart index bdfa3f7d2bd..a69e0359812 100644 --- a/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart +++ b/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart @@ -57,8 +57,9 @@ final class _SurfaceTextureRotatedPreviewState late Future defaultDisplayRotationQuarterTurns; Future _getCurrentDefaultDisplayRotationQuarterTurns() async { - final int currentDefaultDisplayRotationQuarterTurns = - await widget.deviceOrientationManager.getDefaultDisplayRotation(); + final int currentDefaultDisplayRotationQuarterTurns = await widget + .deviceOrientationManager + .getDefaultDisplayRotation(); return getQuarterTurnsFromSurfaceRotationConstant( currentDefaultDisplayRotationQuarterTurns, ); diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart index ad9b05fbac0..4a2df856f15 100644 --- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart +++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart @@ -2074,16 +2074,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i2.CameraSelector Function() get defaultBackCameraCameraSelector => (super.noSuchMethod( Invocation.getter(#defaultBackCameraCameraSelector), - returnValue: - () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultBackCameraCameraSelector), - ), - returnValueForMissingStub: - () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultBackCameraCameraSelector), - ), + returnValue: () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultBackCameraCameraSelector), + ), + returnValueForMissingStub: () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultBackCameraCameraSelector), + ), ) as _i2.CameraSelector Function()); @@ -2091,16 +2089,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i2.CameraSelector Function() get defaultFrontCameraCameraSelector => (super.noSuchMethod( Invocation.getter(#defaultFrontCameraCameraSelector), - returnValue: - () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultFrontCameraCameraSelector), - ), - returnValueForMissingStub: - () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultFrontCameraCameraSelector), - ), + returnValue: () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultFrontCameraCameraSelector), + ), + returnValueForMissingStub: () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultFrontCameraCameraSelector), + ), ) as _i2.CameraSelector Function()); @@ -2109,20 +2105,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { get highestAvailableStrategyResolutionStrategy => (super.noSuchMethod( Invocation.getter(#highestAvailableStrategyResolutionStrategy), - returnValue: - () => _FakeResolutionStrategy_24( - this, - Invocation.getter( - #highestAvailableStrategyResolutionStrategy, - ), - ), - returnValueForMissingStub: - () => _FakeResolutionStrategy_24( - this, - Invocation.getter( - #highestAvailableStrategyResolutionStrategy, - ), - ), + returnValue: () => _FakeResolutionStrategy_24( + this, + Invocation.getter(#highestAvailableStrategyResolutionStrategy), + ), + returnValueForMissingStub: () => _FakeResolutionStrategy_24( + this, + Invocation.getter(#highestAvailableStrategyResolutionStrategy), + ), ) as _i2.ResolutionStrategy Function()); @@ -2133,20 +2123,18 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { Invocation.getter( #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, ), - returnValue: - () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, - ), - ), - returnValueForMissingStub: - () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, - ), - ), + returnValue: () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, + ), + ), + returnValueForMissingStub: () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, + ), + ), ) as _i2.AspectRatioStrategy Function()); @@ -2157,20 +2145,18 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { Invocation.getter( #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, ), - returnValue: - () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, - ), - ), - returnValueForMissingStub: - () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, - ), - ), + returnValue: () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, + ), + ), + returnValueForMissingStub: () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, + ), + ), ) as _i2.AspectRatioStrategy Function()); @@ -2178,16 +2164,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i2.CaptureRequestKey Function() get controlAELockCaptureRequest => (super.noSuchMethod( Invocation.getter(#controlAELockCaptureRequest), - returnValue: - () => _FakeCaptureRequestKey_34( - this, - Invocation.getter(#controlAELockCaptureRequest), - ), - returnValueForMissingStub: - () => _FakeCaptureRequestKey_34( - this, - Invocation.getter(#controlAELockCaptureRequest), - ), + returnValue: () => _FakeCaptureRequestKey_34( + this, + Invocation.getter(#controlAELockCaptureRequest), + ), + returnValueForMissingStub: () => _FakeCaptureRequestKey_34( + this, + Invocation.getter(#controlAELockCaptureRequest), + ), ) as _i2.CaptureRequestKey Function()); @@ -2196,20 +2180,18 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { get infoSupportedHardwareLevelCameraCharacteristics => (super.noSuchMethod( Invocation.getter(#infoSupportedHardwareLevelCameraCharacteristics), - returnValue: - () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter( - #infoSupportedHardwareLevelCameraCharacteristics, - ), - ), - returnValueForMissingStub: - () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter( - #infoSupportedHardwareLevelCameraCharacteristics, - ), - ), + returnValue: () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter( + #infoSupportedHardwareLevelCameraCharacteristics, + ), + ), + returnValueForMissingStub: () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter( + #infoSupportedHardwareLevelCameraCharacteristics, + ), + ), ) as _i2.CameraCharacteristicsKey Function()); @@ -2218,16 +2200,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { get sensorOrientationCameraCharacteristics => (super.noSuchMethod( Invocation.getter(#sensorOrientationCameraCharacteristics), - returnValue: - () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter(#sensorOrientationCameraCharacteristics), - ), - returnValueForMissingStub: - () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter(#sensorOrientationCameraCharacteristics), - ), + returnValue: () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter(#sensorOrientationCameraCharacteristics), + ), + returnValueForMissingStub: () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter(#sensorOrientationCameraCharacteristics), + ), ) as _i2.CameraCharacteristicsKey Function()); diff --git a/packages/camera/camera_android_camerax/test/preview_rotation_test.dart b/packages/camera/camera_android_camerax/test/preview_rotation_test.dart index e427b971c15..6a9eff3d11d 100644 --- a/packages/camera/camera_android_camerax/test/preview_rotation_test.dart +++ b/packages/camera/camera_android_camerax/test/preview_rotation_test.dart @@ -107,20 +107,21 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, }) async => mockProcessCameraProvider, newCameraSelector: createCameraSelector, - newPreview: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockPreview preview = MockPreview(); - when( - preview.surfaceProducerHandlesCropAndRotation(), - ).thenAnswer((_) async => handlesCropAndRotation); - return preview; - }, + newPreview: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockPreview preview = MockPreview(); + when( + preview.surfaceProducerHandlesCropAndRotation(), + ).thenAnswer((_) async => handlesCropAndRotation); + return preview; + }, newImageCapture: ({ int? targetRotation, @@ -141,110 +142,121 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockRecorder(), - withOutputVideoCapture: ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockVideoCapture(); - }, - newImageAnalysis: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockImageAnalysis(); - }, - newResolutionStrategy: ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionStrategy(); - }, - newResolutionSelector: ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionSelector(); - }, - lowerQualityOrHigherThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, - lowerQualityThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, - fromCamera2CameraInfo: ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo camera2cameraInfo = MockCamera2CameraInfo(); - when( - camera2cameraInfo.getCameraCharacteristic(any), - ).thenAnswer((_) async => 90); - return camera2cameraInfo; - }, - fromQualitySelector: ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockQualitySelector(); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, + withOutputVideoCapture: + ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockVideoCapture(); + }, + newImageAnalysis: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockImageAnalysis(); + }, + newResolutionStrategy: + ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionStrategy(); + }, + newResolutionSelector: + ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionSelector(); + }, + lowerQualityOrHigherThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, + lowerQualityThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, + fromCamera2CameraInfo: + ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo camera2cameraInfo = + MockCamera2CameraInfo(); + when( + camera2cameraInfo.getCameraCharacteristic(any), + ).thenAnswer((_) async => 90); + return camera2cameraInfo; + }, + fromQualitySelector: + ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockQualitySelector(); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, newDeviceOrientationManager: ({ required void Function(DeviceOrientationManager, String) @@ -254,33 +266,35 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => deviceOrientationManager, - newAspectRatioStrategy: ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockAspectRatioStrategy mockAspectRatioStrategy = - MockAspectRatioStrategy(); - when( - mockAspectRatioStrategy.getFallbackRule(), - ).thenAnswer((_) async => fallbackRule); - when( - mockAspectRatioStrategy.getPreferredAspectRatio(), - ).thenAnswer((_) async => preferredAspectRatio); - return mockAspectRatioStrategy; - }, - createWithOnePreferredSizeResolutionFilter: ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionFilter(); - }, + newAspectRatioStrategy: + ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockAspectRatioStrategy mockAspectRatioStrategy = + MockAspectRatioStrategy(); + when( + mockAspectRatioStrategy.getFallbackRule(), + ).thenAnswer((_) async => fallbackRule); + when( + mockAspectRatioStrategy.getPreferredAspectRatio(), + ).thenAnswer((_) async => preferredAspectRatio); + return mockAspectRatioStrategy; + }, + createWithOnePreferredSizeResolutionFilter: + ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionFilter(); + }, ); /// Returns CameraXProxy used to mock all calls to native Android in @@ -500,16 +514,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation0), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation0), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -554,16 +567,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation90), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation90), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -606,16 +618,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation180), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation180), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -658,16 +669,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation270), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation270), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -751,16 +761,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(DeviceOrientation.portraitUp), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.portraitUp), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -803,17 +812,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.landscapeLeft, - ), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeLeft), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -856,16 +863,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(DeviceOrientation.portraitDown), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.portraitDown), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -908,17 +914,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.landscapeRight, - ), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeRight), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1006,8 +1010,8 @@ void main() { ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1049,10 +1053,9 @@ void main() { final RotatedBox rotatedBox = tester.widget( find.byType(RotatedBox), ); - final int clockwiseQuarterTurns = - rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect(rotatedBox.child, isA()); expect((rotatedBox.child! as Texture).textureId, cameraId); expect( @@ -1103,13 +1106,13 @@ void main() { getUiOrientation: /* initial device orientation is irrelevant */ () async => _serializeDeviceOrientation(DeviceOrientation.portraitUp), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1147,10 +1150,9 @@ void main() { final RotatedBox rotatedBox = tester.widget( find.byType(RotatedBox), ); - final int clockwiseQuarterTurns = - rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect(rotatedBox.child, isA()); expect((rotatedBox.child! as Texture).textureId, cameraId); expect( @@ -1200,8 +1202,8 @@ void main() { mockCameraSelector: mockFrontCameraSelector, sensorRotationDegrees: 270, ); - proxyGetDefaultDisplayRotation = - () => Future.value(Surface.rotation0); + proxyGetDefaultDisplayRotation = () => + Future.value(Surface.rotation0); // Media settings to create camera; irrelevant for test. testMediaSettings = const MediaSettings(); @@ -1218,14 +1220,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(DeviceOrientation.portraitUp), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.portraitUp), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1278,15 +1279,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.landscapeRight, - ), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeRight), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1339,15 +1338,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.portraitDown, - ), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.portraitDown), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1400,15 +1397,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.landscapeLeft, - ), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeLeft), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1487,9 +1482,8 @@ void main() { mockCameraSelector: mockFrontCameraSelector, sensorRotationDegrees: 270, ); - proxyGetUiOrientation = - () async => - _serializeDeviceOrientation(DeviceOrientation.landscapeLeft); + proxyGetUiOrientation = () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeLeft); // Media settings to create camera; irrelevant for test. testMediaSettings = const MediaSettings(); @@ -1504,15 +1498,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: - () => Future.value(Surface.rotation0), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation0), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1563,15 +1557,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: - () => Future.value(Surface.rotation90), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation90), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1626,15 +1620,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: - () => Future.value(Surface.rotation180), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation180), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1687,15 +1681,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: - () => Future.value(Surface.rotation270), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation270), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1794,8 +1788,8 @@ void main() { ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1851,10 +1845,9 @@ void main() { checkXAxisIsMirrored(transformedPreviewMatrix); expect((transformedPreview.child! as Texture).textureId, cameraId); - final int clockwiseQuarterTurns = - rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect( clockwiseQuarterTurns, expectedQuarterTurns, @@ -1905,13 +1898,13 @@ void main() { getUiOrientation: /* initial device orientation irrelevant for test */ () async => _serializeDeviceOrientation(DeviceOrientation.landscapeLeft), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation90), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation90), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1968,10 +1961,9 @@ void main() { checkYAxisIsMirrored(transformedPreviewMatrix); } expect((transformedPreview.child! as Texture).textureId, cameraId); - final int clockwiseQuarterTurns = - rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect( clockwiseQuarterTurns, expectedQuarterTurns, @@ -2015,8 +2007,8 @@ void main() { mockBackCameraSelector = MockCameraSelector(); proxyCreateCameraSelectorForBackCamera = createCameraSelectorForBackCamera(mockBackCameraSelector); - proxyGetDefaultDisplayRotation = - () => Future.value(Surface.rotation270); + proxyGetDefaultDisplayRotation = () => + Future.value(Surface.rotation270); testMediaSettings = const MediaSettings(); }); @@ -2040,14 +2032,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForBackCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test back camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -2099,14 +2090,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForBackCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test back camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -2161,8 +2151,8 @@ void main() { testSensorOrientation = 90; // Create mock for seting initial default display rotation to 180 degrees. - proxyGetDefaultDisplayRotation = - () => Future.value(Surface.rotation90); + proxyGetDefaultDisplayRotation = () => + Future.value(Surface.rotation90); // Media settings to create camera; irrelevant for test. testMediaSettings = const MediaSettings(); @@ -2195,14 +2185,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -2274,14 +2263,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, From 98e0404ac970d1faf0f9ebc0b1fce4abf16fb4e6 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Tue, 29 Jul 2025 10:49:52 -0700 Subject: [PATCH 31/53] Revert "format" This reverts commit 560cdf7965eb330c95db32ddc742887c2506567c. --- .../lib/src/android_camera_camerax.dart | 92 +-- .../lib/src/camerax_library.dart | 20 +- .../lib/src/camerax_library.g.dart | 4 +- .../lib/src/image_reader_rotated_preview.dart | 5 +- .../lib/src/rotated_preview_utils.dart | 7 +- .../src/surface_texture_rotated_preview.dart | 5 +- .../android_camera_camerax_test.mocks.dart | 172 ++--- .../test/preview_rotation_test.dart | 586 +++++++++--------- 8 files changed, 463 insertions(+), 428 deletions(-) diff --git a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart index 2055e87ae49..47502f865c1 100644 --- a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart +++ b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart @@ -289,14 +289,12 @@ class AndroidCameraCameraX extends CameraPlatform { // Determine the lens direction by filtering the CameraInfo // TODO(gmackall): replace this with call to CameraInfo.getLensFacing when changes containing that method are available if ((await proxy - .newCameraSelector(requireLensFacing: LensFacing.back) - .filter([cameraInfo])) - .isNotEmpty) { + .newCameraSelector(requireLensFacing: LensFacing.back) + .filter([cameraInfo])).isNotEmpty) { cameraLensDirection = CameraLensDirection.back; } else if ((await proxy - .newCameraSelector(requireLensFacing: LensFacing.front) - .filter([cameraInfo])) - .isNotEmpty) { + .newCameraSelector(requireLensFacing: LensFacing.front) + .filter([cameraInfo])).isNotEmpty) { cameraLensDirection = CameraLensDirection.front; } else { //Skip this CameraInfo as its lens direction is unknown @@ -441,13 +439,13 @@ class AndroidCameraCameraX extends CameraPlatform { .toDouble(); sensorOrientationDegrees = cameraDescription.sensorOrientation.toDouble(); - _handlesCropAndRotation = await preview! - .surfaceProducerHandlesCropAndRotation(); + _handlesCropAndRotation = + await preview!.surfaceProducerHandlesCropAndRotation(); _initialDeviceOrientation = _deserializeDeviceOrientation( await deviceOrientationManager.getUiOrientation(), ); - _initialDefaultDisplayRotation = await deviceOrientationManager - .getDefaultDisplayRotation(); + _initialDefaultDisplayRotation = + await deviceOrientationManager.getDefaultDisplayRotation(); return flutterSurfaceTextureId; } @@ -478,8 +476,8 @@ class AndroidCameraCameraX extends CameraPlatform { ); } - final ResolutionInfo previewResolutionInfo = (await preview! - .getResolutionInfo())!; + final ResolutionInfo previewResolutionInfo = + (await preview!.getResolutionInfo())!; // Mark auto-focus, auto-exposure and setting points for focus & exposure // as available operations as CameraX does its best across devices to @@ -649,9 +647,10 @@ class AndroidCameraCameraX extends CameraPlatform { case FocusMode.auto: // Determine auto-focus point to restore, if any. We do not restore // default auto-focus point if set previously to lock focus. - final MeteringPoint? unLockedFocusPoint = _defaultFocusPointLocked - ? null - : currentFocusMeteringAction!.meteringPointsAf.first; + final MeteringPoint? unLockedFocusPoint = + _defaultFocusPointLocked + ? null + : currentFocusMeteringAction!.meteringPointsAf.first; _defaultFocusPointLocked = false; autoFocusPoint = unLockedFocusPoint; disableAutoCancel = false; @@ -662,9 +661,10 @@ class AndroidCameraCameraX extends CameraPlatform { if (currentFocusMeteringAction != null) { final List possibleCurrentAfPoints = currentFocusMeteringAction!.meteringPointsAf; - lockedFocusPoint = possibleCurrentAfPoints.isEmpty - ? null - : possibleCurrentAfPoints.first; + lockedFocusPoint = + possibleCurrentAfPoints.isEmpty + ? null + : possibleCurrentAfPoints.first; } // If there isn't, lock center of entire sensor area by default. @@ -1494,12 +1494,13 @@ class AndroidCameraCameraX extends CameraPlatform { ); final ResolutionFilter resolutionFilter = proxy .createWithOnePreferredSizeResolutionFilter(preferredSize: boundSize); - final AspectRatioStrategy? aspectRatioStrategy = aspectRatio == null - ? null - : proxy.newAspectRatioStrategy( - preferredAspectRatio: aspectRatio, - fallbackRule: AspectRatioStrategyFallbackRule.auto, - ); + final AspectRatioStrategy? aspectRatioStrategy = + aspectRatio == null + ? null + : proxy.newAspectRatioStrategy( + preferredAspectRatio: aspectRatio, + fallbackRule: AspectRatioStrategyFallbackRule.auto, + ); return proxy.newResolutionSelector( resolutionStrategy: resolutionStrategy, resolutionFilter: resolutionFilter, @@ -1616,17 +1617,17 @@ class AndroidCameraCameraX extends CameraPlatform { // Remove metering point with specified meteringMode from current focus // and metering action, as only one focus or exposure point may be set // at once in this plugin. - final List<(MeteringPoint, MeteringMode)> - newMeteringPointInfos = originalMeteringPoints - .where( - ((MeteringPoint, MeteringMode) meteringPointInfo) => - // meteringPointInfo may technically include points without a - // mode specified, but this logic is safe because this plugin - // only uses points that explicitly have mode - // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. - meteringPointInfo.$2 != meteringMode, - ) - .toList(); + final List<(MeteringPoint, MeteringMode)> newMeteringPointInfos = + originalMeteringPoints + .where( + ((MeteringPoint, MeteringMode) meteringPointInfo) => + // meteringPointInfo may technically include points without a + // mode specified, but this logic is safe because this plugin + // only uses points that explicitly have mode + // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. + meteringPointInfo.$2 != meteringMode, + ) + .toList(); if (newMeteringPointInfos.isEmpty) { // If no other metering points were specified, cancel any previously @@ -1663,16 +1664,17 @@ class AndroidCameraCameraX extends CameraPlatform { final Iterable<(MeteringPoint, MeteringMode)> originalMeteringPoints = _combineMeteringPoints(currentFocusMeteringAction!); - newMeteringPointInfos = originalMeteringPoints - .where( - ((MeteringPoint, MeteringMode) meteringPointInfo) => - // meteringPointInfo may technically include points without a - // mode specified, but this logic is safe because this plugin - // only uses points that explicitly have mode - // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. - meteringPointInfo.$2 != meteringMode, - ) - .toList(); + newMeteringPointInfos = + originalMeteringPoints + .where( + ((MeteringPoint, MeteringMode) meteringPointInfo) => + // meteringPointInfo may technically include points without a + // mode specified, but this logic is safe because this plugin + // only uses points that explicitly have mode + // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. + meteringPointInfo.$2 != meteringMode, + ) + .toList(); } newMeteringPointInfos.add((meteringPoint, meteringMode)); diff --git a/packages/camera/camera_android_camerax/lib/src/camerax_library.dart b/packages/camera/camera_android_camerax/lib/src/camerax_library.dart index e692d408fa2..2c0d0a43747 100644 --- a/packages/camera/camera_android_camerax/lib/src/camerax_library.dart +++ b/packages/camera/camera_android_camerax/lib/src/camerax_library.dart @@ -37,15 +37,17 @@ void setUpGenerics({ ); camerax.CameraInfo.pigeon_setUpMessageHandlers( - pigeon_newInstance: - (int sensorRotationDegrees, camerax.ExposureState exposureState) { - return CameraInfo.detached( - sensorRotationDegrees: sensorRotationDegrees, - exposureState: exposureState, - pigeon_binaryMessenger: pigeonBinaryMessenger, - pigeon_instanceManager: pigeonInstanceManager, - ); - }, + pigeon_newInstance: ( + int sensorRotationDegrees, + camerax.ExposureState exposureState, + ) { + return CameraInfo.detached( + sensorRotationDegrees: sensorRotationDegrees, + exposureState: exposureState, + pigeon_binaryMessenger: pigeonBinaryMessenger, + pigeon_instanceManager: pigeonInstanceManager, + ); + }, ); } diff --git a/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart b/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart index b2f730b89c1..ddbdbcc94d3 100644 --- a/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart +++ b/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart @@ -384,8 +384,8 @@ class PigeonInstanceManager { final PigeonInternalProxyApiBaseClass? strongInstance = _strongInstances[identifier]; if (strongInstance != null) { - final PigeonInternalProxyApiBaseClass copy = strongInstance - .pigeon_copy(); + final PigeonInternalProxyApiBaseClass copy = + strongInstance.pigeon_copy(); _identifiers[copy] = identifier; _weakInstances[identifier] = WeakReference(copy); diff --git a/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart b/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart index 49cf6c48509..2cb8f44bf1a 100644 --- a/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart +++ b/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart @@ -78,9 +78,8 @@ final class _ImageReaderRotatedPreviewState late StreamSubscription deviceOrientationSubscription; Future _getCurrentDefaultDisplayRotationDegrees() async { - final int currentDefaultDisplayRotationQuarterTurns = await widget - .deviceOrientationManager - .getDefaultDisplayRotation(); + final int currentDefaultDisplayRotationQuarterTurns = + await widget.deviceOrientationManager.getDefaultDisplayRotation(); return getQuarterTurnsFromSurfaceRotationConstant( currentDefaultDisplayRotationQuarterTurns, ) * diff --git a/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart b/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart index ae3152d7ff4..cfebe6976d5 100644 --- a/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart +++ b/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart @@ -15,9 +15,10 @@ int getQuarterTurnsFromSurfaceRotationConstant(int surfaceRotationConstant) { Surface.rotation90 => 3, Surface.rotation180 => 2, Surface.rotation270 => 1, - int() => throw ArgumentError( - '$surfaceRotationConstant is an unknown Surface rotation constant, so counter-clockwise quarter turns cannot be determined.', - ), + int() => + throw ArgumentError( + '$surfaceRotationConstant is an unknown Surface rotation constant, so counter-clockwise quarter turns cannot be determined.', + ), }; } diff --git a/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart b/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart index a69e0359812..bdfa3f7d2bd 100644 --- a/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart +++ b/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart @@ -57,9 +57,8 @@ final class _SurfaceTextureRotatedPreviewState late Future defaultDisplayRotationQuarterTurns; Future _getCurrentDefaultDisplayRotationQuarterTurns() async { - final int currentDefaultDisplayRotationQuarterTurns = await widget - .deviceOrientationManager - .getDefaultDisplayRotation(); + final int currentDefaultDisplayRotationQuarterTurns = + await widget.deviceOrientationManager.getDefaultDisplayRotation(); return getQuarterTurnsFromSurfaceRotationConstant( currentDefaultDisplayRotationQuarterTurns, ); diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart index 4a2df856f15..ad9b05fbac0 100644 --- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart +++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart @@ -2074,14 +2074,16 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i2.CameraSelector Function() get defaultBackCameraCameraSelector => (super.noSuchMethod( Invocation.getter(#defaultBackCameraCameraSelector), - returnValue: () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultBackCameraCameraSelector), - ), - returnValueForMissingStub: () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultBackCameraCameraSelector), - ), + returnValue: + () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultBackCameraCameraSelector), + ), + returnValueForMissingStub: + () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultBackCameraCameraSelector), + ), ) as _i2.CameraSelector Function()); @@ -2089,14 +2091,16 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i2.CameraSelector Function() get defaultFrontCameraCameraSelector => (super.noSuchMethod( Invocation.getter(#defaultFrontCameraCameraSelector), - returnValue: () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultFrontCameraCameraSelector), - ), - returnValueForMissingStub: () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultFrontCameraCameraSelector), - ), + returnValue: + () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultFrontCameraCameraSelector), + ), + returnValueForMissingStub: + () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultFrontCameraCameraSelector), + ), ) as _i2.CameraSelector Function()); @@ -2105,14 +2109,20 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { get highestAvailableStrategyResolutionStrategy => (super.noSuchMethod( Invocation.getter(#highestAvailableStrategyResolutionStrategy), - returnValue: () => _FakeResolutionStrategy_24( - this, - Invocation.getter(#highestAvailableStrategyResolutionStrategy), - ), - returnValueForMissingStub: () => _FakeResolutionStrategy_24( - this, - Invocation.getter(#highestAvailableStrategyResolutionStrategy), - ), + returnValue: + () => _FakeResolutionStrategy_24( + this, + Invocation.getter( + #highestAvailableStrategyResolutionStrategy, + ), + ), + returnValueForMissingStub: + () => _FakeResolutionStrategy_24( + this, + Invocation.getter( + #highestAvailableStrategyResolutionStrategy, + ), + ), ) as _i2.ResolutionStrategy Function()); @@ -2123,18 +2133,20 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { Invocation.getter( #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, ), - returnValue: () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, - ), - ), - returnValueForMissingStub: () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, - ), - ), + returnValue: + () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, + ), + ), + returnValueForMissingStub: + () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, + ), + ), ) as _i2.AspectRatioStrategy Function()); @@ -2145,18 +2157,20 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { Invocation.getter( #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, ), - returnValue: () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, - ), - ), - returnValueForMissingStub: () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, - ), - ), + returnValue: + () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, + ), + ), + returnValueForMissingStub: + () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, + ), + ), ) as _i2.AspectRatioStrategy Function()); @@ -2164,14 +2178,16 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i2.CaptureRequestKey Function() get controlAELockCaptureRequest => (super.noSuchMethod( Invocation.getter(#controlAELockCaptureRequest), - returnValue: () => _FakeCaptureRequestKey_34( - this, - Invocation.getter(#controlAELockCaptureRequest), - ), - returnValueForMissingStub: () => _FakeCaptureRequestKey_34( - this, - Invocation.getter(#controlAELockCaptureRequest), - ), + returnValue: + () => _FakeCaptureRequestKey_34( + this, + Invocation.getter(#controlAELockCaptureRequest), + ), + returnValueForMissingStub: + () => _FakeCaptureRequestKey_34( + this, + Invocation.getter(#controlAELockCaptureRequest), + ), ) as _i2.CaptureRequestKey Function()); @@ -2180,18 +2196,20 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { get infoSupportedHardwareLevelCameraCharacteristics => (super.noSuchMethod( Invocation.getter(#infoSupportedHardwareLevelCameraCharacteristics), - returnValue: () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter( - #infoSupportedHardwareLevelCameraCharacteristics, - ), - ), - returnValueForMissingStub: () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter( - #infoSupportedHardwareLevelCameraCharacteristics, - ), - ), + returnValue: + () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter( + #infoSupportedHardwareLevelCameraCharacteristics, + ), + ), + returnValueForMissingStub: + () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter( + #infoSupportedHardwareLevelCameraCharacteristics, + ), + ), ) as _i2.CameraCharacteristicsKey Function()); @@ -2200,14 +2218,16 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { get sensorOrientationCameraCharacteristics => (super.noSuchMethod( Invocation.getter(#sensorOrientationCameraCharacteristics), - returnValue: () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter(#sensorOrientationCameraCharacteristics), - ), - returnValueForMissingStub: () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter(#sensorOrientationCameraCharacteristics), - ), + returnValue: + () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter(#sensorOrientationCameraCharacteristics), + ), + returnValueForMissingStub: + () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter(#sensorOrientationCameraCharacteristics), + ), ) as _i2.CameraCharacteristicsKey Function()); diff --git a/packages/camera/camera_android_camerax/test/preview_rotation_test.dart b/packages/camera/camera_android_camerax/test/preview_rotation_test.dart index 6a9eff3d11d..e427b971c15 100644 --- a/packages/camera/camera_android_camerax/test/preview_rotation_test.dart +++ b/packages/camera/camera_android_camerax/test/preview_rotation_test.dart @@ -107,21 +107,20 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, }) async => mockProcessCameraProvider, newCameraSelector: createCameraSelector, - newPreview: - ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockPreview preview = MockPreview(); - when( - preview.surfaceProducerHandlesCropAndRotation(), - ).thenAnswer((_) async => handlesCropAndRotation); - return preview; - }, + newPreview: ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockPreview preview = MockPreview(); + when( + preview.surfaceProducerHandlesCropAndRotation(), + ).thenAnswer((_) async => handlesCropAndRotation); + return preview; + }, newImageCapture: ({ int? targetRotation, @@ -142,121 +141,110 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockRecorder(), - withOutputVideoCapture: - ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockVideoCapture(); - }, - newImageAnalysis: - ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockImageAnalysis(); - }, - newResolutionStrategy: - ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionStrategy(); - }, - newResolutionSelector: - ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionSelector(); - }, - lowerQualityOrHigherThanFallbackStrategy: - ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, - lowerQualityThanFallbackStrategy: - ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, - fromCamera2CameraInfo: - ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo camera2cameraInfo = - MockCamera2CameraInfo(); - when( - camera2cameraInfo.getCameraCharacteristic(any), - ).thenAnswer((_) async => 90); - return camera2cameraInfo; - }, - fromQualitySelector: - ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockQualitySelector(); - }, - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, + withOutputVideoCapture: ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockVideoCapture(); + }, + newImageAnalysis: ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockImageAnalysis(); + }, + newResolutionStrategy: ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionStrategy(); + }, + newResolutionSelector: ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionSelector(); + }, + lowerQualityOrHigherThanFallbackStrategy: ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, + lowerQualityThanFallbackStrategy: ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, + fromCamera2CameraInfo: ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo camera2cameraInfo = MockCamera2CameraInfo(); + when( + camera2cameraInfo.getCameraCharacteristic(any), + ).thenAnswer((_) async => 90); + return camera2cameraInfo; + }, + fromQualitySelector: ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockQualitySelector(); + }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, newDeviceOrientationManager: ({ required void Function(DeviceOrientationManager, String) @@ -266,35 +254,33 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => deviceOrientationManager, - newAspectRatioStrategy: - ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockAspectRatioStrategy mockAspectRatioStrategy = - MockAspectRatioStrategy(); - when( - mockAspectRatioStrategy.getFallbackRule(), - ).thenAnswer((_) async => fallbackRule); - when( - mockAspectRatioStrategy.getPreferredAspectRatio(), - ).thenAnswer((_) async => preferredAspectRatio); - return mockAspectRatioStrategy; - }, - createWithOnePreferredSizeResolutionFilter: - ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionFilter(); - }, + newAspectRatioStrategy: ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockAspectRatioStrategy mockAspectRatioStrategy = + MockAspectRatioStrategy(); + when( + mockAspectRatioStrategy.getFallbackRule(), + ).thenAnswer((_) async => fallbackRule); + when( + mockAspectRatioStrategy.getPreferredAspectRatio(), + ).thenAnswer((_) async => preferredAspectRatio); + return mockAspectRatioStrategy; + }, + createWithOnePreferredSizeResolutionFilter: ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionFilter(); + }, ); /// Returns CameraXProxy used to mock all calls to native Android in @@ -514,15 +500,16 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: () => - Future.value(Surface.rotation0), + getUiOrientation: + () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: + () => Future.value(Surface.rotation0), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -567,15 +554,16 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: () => - Future.value(Surface.rotation90), + getUiOrientation: + () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: + () => Future.value(Surface.rotation90), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -618,15 +606,16 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: () => - Future.value(Surface.rotation180), + getUiOrientation: + () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: + () => Future.value(Surface.rotation180), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -669,15 +658,16 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: () => - Future.value(Surface.rotation270), + getUiOrientation: + () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: + () => Future.value(Surface.rotation270), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -761,15 +751,16 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: () async => - _serializeDeviceOrientation(DeviceOrientation.portraitUp), - getDefaultDisplayRotation: () => - Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: + () async => + _serializeDeviceOrientation(DeviceOrientation.portraitUp), + getDefaultDisplayRotation: + () => Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -812,15 +803,17 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: () async => - _serializeDeviceOrientation(DeviceOrientation.landscapeLeft), - getDefaultDisplayRotation: () => - Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: + () async => _serializeDeviceOrientation( + DeviceOrientation.landscapeLeft, + ), + getDefaultDisplayRotation: + () => Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -863,15 +856,16 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: () async => - _serializeDeviceOrientation(DeviceOrientation.portraitDown), - getDefaultDisplayRotation: () => - Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: + () async => + _serializeDeviceOrientation(DeviceOrientation.portraitDown), + getDefaultDisplayRotation: + () => Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -914,15 +908,17 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: () async => - _serializeDeviceOrientation(DeviceOrientation.landscapeRight), - getDefaultDisplayRotation: () => - Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: + () async => _serializeDeviceOrientation( + DeviceOrientation.landscapeRight, + ), + getDefaultDisplayRotation: + () => Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1010,8 +1006,8 @@ void main() { ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1053,9 +1049,10 @@ void main() { final RotatedBox rotatedBox = tester.widget( find.byType(RotatedBox), ); - final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = + rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect(rotatedBox.child, isA()); expect((rotatedBox.child! as Texture).textureId, cameraId); expect( @@ -1106,13 +1103,13 @@ void main() { getUiOrientation: /* initial device orientation is irrelevant */ () async => _serializeDeviceOrientation(DeviceOrientation.portraitUp), - getDefaultDisplayRotation: () => - Future.value(testInitialDefaultDisplayRotation), + getDefaultDisplayRotation: + () => Future.value(testInitialDefaultDisplayRotation), ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1150,9 +1147,10 @@ void main() { final RotatedBox rotatedBox = tester.widget( find.byType(RotatedBox), ); - final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = + rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect(rotatedBox.child, isA()); expect((rotatedBox.child! as Texture).textureId, cameraId); expect( @@ -1202,8 +1200,8 @@ void main() { mockCameraSelector: mockFrontCameraSelector, sensorRotationDegrees: 270, ); - proxyGetDefaultDisplayRotation = () => - Future.value(Surface.rotation0); + proxyGetDefaultDisplayRotation = + () => Future.value(Surface.rotation0); // Media settings to create camera; irrelevant for test. testMediaSettings = const MediaSettings(); @@ -1220,13 +1218,14 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: () async => - _serializeDeviceOrientation(DeviceOrientation.portraitUp), + getUiOrientation: + () async => + _serializeDeviceOrientation(DeviceOrientation.portraitUp), ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1279,13 +1278,15 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: () async => - _serializeDeviceOrientation(DeviceOrientation.landscapeRight), + getUiOrientation: + () async => _serializeDeviceOrientation( + DeviceOrientation.landscapeRight, + ), ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1338,13 +1339,15 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: () async => - _serializeDeviceOrientation(DeviceOrientation.portraitDown), + getUiOrientation: + () async => _serializeDeviceOrientation( + DeviceOrientation.portraitDown, + ), ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1397,13 +1400,15 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: () async => - _serializeDeviceOrientation(DeviceOrientation.landscapeLeft), + getUiOrientation: + () async => _serializeDeviceOrientation( + DeviceOrientation.landscapeLeft, + ), ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1482,8 +1487,9 @@ void main() { mockCameraSelector: mockFrontCameraSelector, sensorRotationDegrees: 270, ); - proxyGetUiOrientation = () async => - _serializeDeviceOrientation(DeviceOrientation.landscapeLeft); + proxyGetUiOrientation = + () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeLeft); // Media settings to create camera; irrelevant for test. testMediaSettings = const MediaSettings(); @@ -1498,15 +1504,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: () => - Future.value(Surface.rotation0), + getDefaultDisplayRotation: + () => Future.value(Surface.rotation0), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1557,15 +1563,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: () => - Future.value(Surface.rotation90), + getDefaultDisplayRotation: + () => Future.value(Surface.rotation90), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1620,15 +1626,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: () => - Future.value(Surface.rotation180), + getDefaultDisplayRotation: + () => Future.value(Surface.rotation180), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1681,15 +1687,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: () => - Future.value(Surface.rotation270), + getDefaultDisplayRotation: + () => Future.value(Surface.rotation270), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1788,8 +1794,8 @@ void main() { ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1845,9 +1851,10 @@ void main() { checkXAxisIsMirrored(transformedPreviewMatrix); expect((transformedPreview.child! as Texture).textureId, cameraId); - final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = + rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect( clockwiseQuarterTurns, expectedQuarterTurns, @@ -1898,13 +1905,13 @@ void main() { getUiOrientation: /* initial device orientation irrelevant for test */ () async => _serializeDeviceOrientation(DeviceOrientation.landscapeLeft), - getDefaultDisplayRotation: () => - Future.value(Surface.rotation90), + getDefaultDisplayRotation: + () => Future.value(Surface.rotation90), ); // Get and create test front camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1961,9 +1968,10 @@ void main() { checkYAxisIsMirrored(transformedPreviewMatrix); } expect((transformedPreview.child! as Texture).textureId, cameraId); - final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = + rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect( clockwiseQuarterTurns, expectedQuarterTurns, @@ -2007,8 +2015,8 @@ void main() { mockBackCameraSelector = MockCameraSelector(); proxyCreateCameraSelectorForBackCamera = createCameraSelectorForBackCamera(mockBackCameraSelector); - proxyGetDefaultDisplayRotation = () => - Future.value(Surface.rotation270); + proxyGetDefaultDisplayRotation = + () => Future.value(Surface.rotation270); testMediaSettings = const MediaSettings(); }); @@ -2032,13 +2040,14 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForBackCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: + () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test back camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -2090,13 +2099,14 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForBackCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: + () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test back camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -2151,8 +2161,8 @@ void main() { testSensorOrientation = 90; // Create mock for seting initial default display rotation to 180 degrees. - proxyGetDefaultDisplayRotation = () => - Future.value(Surface.rotation90); + proxyGetDefaultDisplayRotation = + () => Future.value(Surface.rotation90); // Media settings to create camera; irrelevant for test. testMediaSettings = const MediaSettings(); @@ -2185,13 +2195,14 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: + () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -2263,13 +2274,14 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: + () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test camera. - final List availableCameras = await camera - .availableCameras(); + final List availableCameras = + await camera.availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, From 6a9145b91ef7981480f8022bcd9057179fa5433c Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Thu, 29 May 2025 09:46:09 -0700 Subject: [PATCH 32/53] logging for debugging --- .../flutter/plugins/camerax/PreviewProxyApi.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java index 5ebb5fbb739..9271ea25630 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java @@ -16,6 +16,8 @@ import java.util.Map; import java.util.concurrent.Executors; +import android.util.Log; + /** * ProxyApi implementation for {@link Preview}. This class may handle instantiating native object * instances that are attached to a Dart instance or handle method calls on the associated native @@ -95,6 +97,9 @@ public void setTargetRotation(Preview pigeonInstance, long rotation) { pigeonInstance.setTargetRotation((int) rotation); } + int surfaceRequestNum = 0; + int resultNum = 0; + @NonNull Preview.SurfaceProvider createSurfaceProvider( @NonNull TextureRegistry.SurfaceProducer surfaceProducer, @@ -119,6 +124,7 @@ public void onSurfaceCleanup() { }); // Provide surface. + surfaceProducer.invalidateSurface(); surfaceProducer.setSize( request.getResolution().getWidth(), request.getResolution().getHeight()); Surface flutterSurface = surfaceProducer.getSurface(); @@ -126,6 +132,11 @@ public void onSurfaceCleanup() { flutterSurface, Executors.newSingleThreadExecutor(), (result) -> { + Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); + Log.e("CAMILLE RESULT #:", Integer.toString(resultNum)); + Log.e("CAMILLE SURFACE HASHCODE:", Integer.toString(flutterSurface.hashCode())); + Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); + resultNum++; // See // https://developer.android.com/reference/androidx/camera/core/SurfaceRequest.Result // for documentation. @@ -144,6 +155,11 @@ public void onSurfaceCleanup() { systemServicesManager.onCameraError(getProvideSurfaceErrorDescription(resultCode)); } }); + Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); + Log.e("CAMILLE SURFACE REQUEST #:", Integer.toString(surfaceRequestNum)); + Log.e("CAMILLE SURFACE HASHCODE:", Integer.toString(flutterSurface.hashCode())); + Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); + surfaceRequestNum++; }; } From a737309acc94a708e79275b11895ad1a4eea30ed Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Thu, 29 May 2025 10:32:45 -0700 Subject: [PATCH 33/53] debugging logging pt 2 --- .../plugins/camerax/ProcessCameraProviderProxyApi.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java index 05bf25209e4..5546dcb9b35 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java @@ -19,6 +19,8 @@ import kotlin.Unit; import kotlin.jvm.functions.Function1; +import android.util.Log; + /** * ProxyApi implementation for {@link ProcessCameraProvider}. This class may handle instantiating * native object instances that are attached to a Dart instance or handle method calls on the @@ -65,6 +67,7 @@ public Camera bindToLifecycle( @NonNull ProcessCameraProvider pigeonInstance, @NonNull CameraSelector cameraSelector, @NonNull List useCases) { + Log.e("CAMILLE"," BIND CALLED!!!!!!!!!!!!!!!****************************"); final LifecycleOwner lifecycleOwner = getPigeonRegistrar().getLifecycleOwner(); if (lifecycleOwner != null) { return pigeonInstance.bindToLifecycle( @@ -83,6 +86,7 @@ public boolean isBound(ProcessCameraProvider pigeonInstance, @NonNull UseCase us @Override public void unbind( ProcessCameraProvider pigeonInstance, @NonNull List useCases) { + Log.e("CAMILLE"," UNBIND CALLED!!!!!!!!!!!!!!!****************************"); pigeonInstance.unbind(useCases.toArray(new UseCase[0])); } From ae38c069517297837c567845cb8c22e3be539c02 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 2 Jun 2025 15:27:54 -0700 Subject: [PATCH 34/53] remove logs and add comment --- .../plugins/camerax/PreviewProxyApi.java | 18 +++--------------- .../camerax/ProcessCameraProviderProxyApi.java | 4 ---- 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java index 9271ea25630..969ec80866c 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java @@ -16,8 +16,6 @@ import java.util.Map; import java.util.concurrent.Executors; -import android.util.Log; - /** * ProxyApi implementation for {@link Preview}. This class may handle instantiating native object * instances that are attached to a Dart instance or handle method calls on the associated native @@ -97,9 +95,6 @@ public void setTargetRotation(Preview pigeonInstance, long rotation) { pigeonInstance.setTargetRotation((int) rotation); } - int surfaceRequestNum = 0; - int resultNum = 0; - @NonNull Preview.SurfaceProvider createSurfaceProvider( @NonNull TextureRegistry.SurfaceProducer surfaceProducer, @@ -132,11 +127,9 @@ public void onSurfaceCleanup() { flutterSurface, Executors.newSingleThreadExecutor(), (result) -> { - Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); - Log.e("CAMILLE RESULT #:", Integer.toString(resultNum)); - Log.e("CAMILLE SURFACE HASHCODE:", Integer.toString(flutterSurface.hashCode())); - Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); - resultNum++; + // RACE CONDITION EXPLANATION: Sometimes, this callback is called after the next SurfaceRequest comes in, + // making a call on line 123 to get a `Surface`, which is the same `Surface` that was (potentially) + // successfully used and should not be re-used. // See // https://developer.android.com/reference/androidx/camera/core/SurfaceRequest.Result // for documentation. @@ -155,11 +148,6 @@ public void onSurfaceCleanup() { systemServicesManager.onCameraError(getProvideSurfaceErrorDescription(resultCode)); } }); - Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); - Log.e("CAMILLE SURFACE REQUEST #:", Integer.toString(surfaceRequestNum)); - Log.e("CAMILLE SURFACE HASHCODE:", Integer.toString(flutterSurface.hashCode())); - Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); - surfaceRequestNum++; }; } diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java index 5546dcb9b35..05bf25209e4 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java @@ -19,8 +19,6 @@ import kotlin.Unit; import kotlin.jvm.functions.Function1; -import android.util.Log; - /** * ProxyApi implementation for {@link ProcessCameraProvider}. This class may handle instantiating * native object instances that are attached to a Dart instance or handle method calls on the @@ -67,7 +65,6 @@ public Camera bindToLifecycle( @NonNull ProcessCameraProvider pigeonInstance, @NonNull CameraSelector cameraSelector, @NonNull List useCases) { - Log.e("CAMILLE"," BIND CALLED!!!!!!!!!!!!!!!****************************"); final LifecycleOwner lifecycleOwner = getPigeonRegistrar().getLifecycleOwner(); if (lifecycleOwner != null) { return pigeonInstance.bindToLifecycle( @@ -86,7 +83,6 @@ public boolean isBound(ProcessCameraProvider pigeonInstance, @NonNull UseCase us @Override public void unbind( ProcessCameraProvider pigeonInstance, @NonNull List useCases) { - Log.e("CAMILLE"," UNBIND CALLED!!!!!!!!!!!!!!!****************************"); pigeonInstance.unbind(useCases.toArray(new UseCase[0])); } From 5d7042a0989c8f4e2d8768279a7f507bd070472e Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 16 Jun 2025 13:47:37 -0700 Subject: [PATCH 35/53] update wip --- .../java/io/flutter/plugins/camerax/PreviewProxyApi.java | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java index 969ec80866c..7b1a0c0c03c 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java @@ -119,17 +119,18 @@ public void onSurfaceCleanup() { }); // Provide surface. - surfaceProducer.invalidateSurface(); surfaceProducer.setSize( request.getResolution().getWidth(), request.getResolution().getHeight()); - Surface flutterSurface = surfaceProducer.getSurface(); + Surface flutterSurface = surfaceProducer.getSurface(true); request.provideSurface( flutterSurface, Executors.newSingleThreadExecutor(), (result) -> { - // RACE CONDITION EXPLANATION: Sometimes, this callback is called after the next SurfaceRequest comes in, - // making a call on line 123 to get a `Surface`, which is the same `Surface` that was (potentially) + // RACE CONDITION EXPLANATION for https://github.com/flutter/flutter/pull/169899: + // Sometimes, this callback is called after the next SurfaceRequest comes in, + // making a call on line 122 to get a `Surface`, which is the same `Surface` that was (potentially) // successfully used and should not be re-used. + // // See // https://developer.android.com/reference/androidx/camera/core/SurfaceRequest.Result // for documentation. From 12eb3a94261f95be799de3f764c0a29bf64fda49 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Fri, 20 Jun 2025 09:24:43 -0700 Subject: [PATCH 36/53] update pr based on engine changes + add tests --- .../java/io/flutter/plugins/camerax/PreviewProxyApi.java | 7 +------ .../test/java/io/flutter/plugins/camerax/PreviewTest.java | 4 ++-- 2 files changed, 3 insertions(+), 8 deletions(-) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java index 7b1a0c0c03c..48d94b65e10 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java @@ -121,16 +121,11 @@ public void onSurfaceCleanup() { // Provide surface. surfaceProducer.setSize( request.getResolution().getWidth(), request.getResolution().getHeight()); - Surface flutterSurface = surfaceProducer.getSurface(true); + Surface flutterSurface = surfaceProducer.getForcedNewSurface(); request.provideSurface( flutterSurface, Executors.newSingleThreadExecutor(), (result) -> { - // RACE CONDITION EXPLANATION for https://github.com/flutter/flutter/pull/169899: - // Sometimes, this callback is called after the next SurfaceRequest comes in, - // making a call on line 122 to get a `Surface`, which is the same `Surface` that was (potentially) - // successfully used and should not be re-used. - // // See // https://developer.android.com/reference/androidx/camera/core/SurfaceRequest.Result // for documentation. diff --git a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java index 5c3f3578a24..45b6be96375 100644 --- a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java +++ b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/PreviewTest.java @@ -103,7 +103,7 @@ TextureRegistry getTextureRegistry() { ArgumentCaptor.forClass(TextureRegistry.SurfaceProducer.Callback.class); when(mockSurfaceRequest.getResolution()).thenReturn(new Size(5, 6)); - when(mockSurfaceProducer.getSurface()).thenReturn(mock(Surface.class)); + when(mockSurfaceProducer.getForcedNewSurface()).thenReturn(mock(Surface.class)); final Preview.SurfaceProvider previewSurfaceProvider = api.createSurfaceProvider(mockSurfaceProducer, mockSystemServicesManager); @@ -155,7 +155,7 @@ TextureRegistry getTextureRegistry() { when(mockSurfaceRequest.getResolution()) .thenReturn(new Size(resolutionWidth, resolutionHeight)); - when(mockSurfaceProducer.getSurface()).thenReturn(mockSurface); + when(mockSurfaceProducer.getForcedNewSurface()).thenReturn(mockSurface); final ArgumentCaptor surfaceCaptor = ArgumentCaptor.forClass(Surface.class); final ArgumentCaptor> consumerCaptor = From cf1cc977e1932a52fd01941616a5714c0a31bd71 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Fri, 20 Jun 2025 09:49:48 -0700 Subject: [PATCH 37/53] bump version --- packages/camera/camera_android_camerax/CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index 02a72cd9cd0..92dcf081032 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -1,3 +1,8 @@ +## 0.6.20 + +* Ensures a new surface is provided every timethat one is requested to render the camera preview into + to fix pausing and resuming the preview. + ## 0.6.19+1 * Fixes incorrect camera switching by selecting a camera via its CameraInfo. From 0a67dd0adb23851b3a727fd2f7a35d22e1ce6249 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Tue, 24 Jun 2025 10:35:49 -0700 Subject: [PATCH 38/53] grammatical fixes --- packages/camera/camera_android_camerax/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index 92dcf081032..a43e2887fba 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.6.20 -* Ensures a new surface is provided every timethat one is requested to render the camera preview into +* Ensures that a new surface is provided every time that one is requested to render the camera preview into to fix pausing and resuming the preview. ## 0.6.19+1 From 85a762414ab86c1db485b7dedd4ae54f98352af2 Mon Sep 17 00:00:00 2001 From: Camille Simon <43054281+camsim99@users.noreply.github.com> Date: Tue, 24 Jun 2025 11:05:04 -0700 Subject: [PATCH 39/53] Remove confusing word after preview --- packages/camera/camera_android_camerax/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index a43e2887fba..31f1653d2a9 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -1,6 +1,6 @@ ## 0.6.20 -* Ensures that a new surface is provided every time that one is requested to render the camera preview into +* Ensures that a new surface is provided every time that one is requested to render the camera preview to fix pausing and resuming the preview. ## 0.6.19+1 From 7cf96d9829019cb76d642cb0c2cc5493d68a0c44 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 28 Jul 2025 10:01:24 -0700 Subject: [PATCH 40/53] Update min flutter version --- packages/camera/camera_android_camerax/CHANGELOG.md | 3 ++- packages/camera/camera_android_camerax/pubspec.yaml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index 31f1653d2a9..21f7efe6ef3 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -2,9 +2,10 @@ * Ensures that a new surface is provided every time that one is requested to render the camera preview to fix pausing and resuming the preview. +* Updates minimum supported SDK version to Flutter 3.32.8. + ## 0.6.19+1 - * Fixes incorrect camera switching by selecting a camera via its CameraInfo. ## 0.6.19 diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml index 4238defac16..654e1f54ac4 100644 --- a/packages/camera/camera_android_camerax/pubspec.yaml +++ b/packages/camera/camera_android_camerax/pubspec.yaml @@ -6,7 +6,7 @@ version: 0.6.19+1 environment: sdk: ^3.7.0 - flutter: ">=3.29.0" + flutter: ">=3.32.8" flutter: plugin: From 0ab3285c3fecb5d2d27487087a18730752d9decb Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 28 Jul 2025 10:12:13 -0700 Subject: [PATCH 41/53] add 3.32.8 version --- script/tool/lib/src/common/core.dart | 1 + 1 file changed, 1 insertion(+) diff --git a/script/tool/lib/src/common/core.dart b/script/tool/lib/src/common/core.dart index 484d864aecf..f4503693ad3 100644 --- a/script/tool/lib/src/common/core.dart +++ b/script/tool/lib/src/common/core.dart @@ -91,6 +91,7 @@ final Map _dartSdkForFlutterSdk = { Version(3, 29, 0): Version(3, 7, 0), Version(3, 29, 3): Version(3, 7, 2), Version(3, 32, 0): Version(3, 8, 0), + Version(3, 32, 8): Version(3, 8, 1), }; /// Returns the version of the Dart SDK that shipped with the given Flutter From 772826bad9da2d862603693fc061af34ba1e4269 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 28 Jul 2025 11:28:19 -0700 Subject: [PATCH 42/53] bump sdk version --- packages/camera/camera_android_camerax/CHANGELOG.md | 2 +- packages/camera/camera_android_camerax/pubspec.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index 21f7efe6ef3..1f79e0e57c5 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -2,7 +2,7 @@ * Ensures that a new surface is provided every time that one is requested to render the camera preview to fix pausing and resuming the preview. -* Updates minimum supported SDK version to Flutter 3.32.8. +* Updates minimum supported SDK version to Flutter 3.32.8/Dart 3.8.1. ## 0.6.19+1 diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml index 654e1f54ac4..87981d6f3a1 100644 --- a/packages/camera/camera_android_camerax/pubspec.yaml +++ b/packages/camera/camera_android_camerax/pubspec.yaml @@ -5,7 +5,7 @@ issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+ version: 0.6.19+1 environment: - sdk: ^3.7.0 + sdk: ^3.8.1 flutter: ">=3.32.8" flutter: From ca10fc6fa453f0e276b8c1e45663c620ede15bd1 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Tue, 29 Jul 2025 10:52:23 -0700 Subject: [PATCH 43/53] format for real --- .../camera_android_camerax/CHANGELOG.md | 2 +- .../lib/src/android_camera_camerax.dart | 92 +- .../lib/src/camerax_library.dart | 20 +- .../lib/src/camerax_library.g.dart | 4 +- .../lib/src/image_reader_rotated_preview.dart | 5 +- .../lib/src/rotated_preview_utils.dart | 7 +- .../src/surface_texture_rotated_preview.dart | 5 +- .../camera_android_camerax/pubspec.yaml | 4 + .../test/android_camera_camerax_test.dart | 3628 +++++++++-------- .../android_camera_camerax_test.mocks.dart | 172 +- .../test/preview_rotation_test.dart | 586 ++- 11 files changed, 2383 insertions(+), 2142 deletions(-) diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md index 1f79e0e57c5..4e8c96aaa21 100644 --- a/packages/camera/camera_android_camerax/CHANGELOG.md +++ b/packages/camera/camera_android_camerax/CHANGELOG.md @@ -4,8 +4,8 @@ to fix pausing and resuming the preview. * Updates minimum supported SDK version to Flutter 3.32.8/Dart 3.8.1. - ## 0.6.19+1 + * Fixes incorrect camera switching by selecting a camera via its CameraInfo. ## 0.6.19 diff --git a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart index 47502f865c1..2055e87ae49 100644 --- a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart +++ b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart @@ -289,12 +289,14 @@ class AndroidCameraCameraX extends CameraPlatform { // Determine the lens direction by filtering the CameraInfo // TODO(gmackall): replace this with call to CameraInfo.getLensFacing when changes containing that method are available if ((await proxy - .newCameraSelector(requireLensFacing: LensFacing.back) - .filter([cameraInfo])).isNotEmpty) { + .newCameraSelector(requireLensFacing: LensFacing.back) + .filter([cameraInfo])) + .isNotEmpty) { cameraLensDirection = CameraLensDirection.back; } else if ((await proxy - .newCameraSelector(requireLensFacing: LensFacing.front) - .filter([cameraInfo])).isNotEmpty) { + .newCameraSelector(requireLensFacing: LensFacing.front) + .filter([cameraInfo])) + .isNotEmpty) { cameraLensDirection = CameraLensDirection.front; } else { //Skip this CameraInfo as its lens direction is unknown @@ -439,13 +441,13 @@ class AndroidCameraCameraX extends CameraPlatform { .toDouble(); sensorOrientationDegrees = cameraDescription.sensorOrientation.toDouble(); - _handlesCropAndRotation = - await preview!.surfaceProducerHandlesCropAndRotation(); + _handlesCropAndRotation = await preview! + .surfaceProducerHandlesCropAndRotation(); _initialDeviceOrientation = _deserializeDeviceOrientation( await deviceOrientationManager.getUiOrientation(), ); - _initialDefaultDisplayRotation = - await deviceOrientationManager.getDefaultDisplayRotation(); + _initialDefaultDisplayRotation = await deviceOrientationManager + .getDefaultDisplayRotation(); return flutterSurfaceTextureId; } @@ -476,8 +478,8 @@ class AndroidCameraCameraX extends CameraPlatform { ); } - final ResolutionInfo previewResolutionInfo = - (await preview!.getResolutionInfo())!; + final ResolutionInfo previewResolutionInfo = (await preview! + .getResolutionInfo())!; // Mark auto-focus, auto-exposure and setting points for focus & exposure // as available operations as CameraX does its best across devices to @@ -647,10 +649,9 @@ class AndroidCameraCameraX extends CameraPlatform { case FocusMode.auto: // Determine auto-focus point to restore, if any. We do not restore // default auto-focus point if set previously to lock focus. - final MeteringPoint? unLockedFocusPoint = - _defaultFocusPointLocked - ? null - : currentFocusMeteringAction!.meteringPointsAf.first; + final MeteringPoint? unLockedFocusPoint = _defaultFocusPointLocked + ? null + : currentFocusMeteringAction!.meteringPointsAf.first; _defaultFocusPointLocked = false; autoFocusPoint = unLockedFocusPoint; disableAutoCancel = false; @@ -661,10 +662,9 @@ class AndroidCameraCameraX extends CameraPlatform { if (currentFocusMeteringAction != null) { final List possibleCurrentAfPoints = currentFocusMeteringAction!.meteringPointsAf; - lockedFocusPoint = - possibleCurrentAfPoints.isEmpty - ? null - : possibleCurrentAfPoints.first; + lockedFocusPoint = possibleCurrentAfPoints.isEmpty + ? null + : possibleCurrentAfPoints.first; } // If there isn't, lock center of entire sensor area by default. @@ -1494,13 +1494,12 @@ class AndroidCameraCameraX extends CameraPlatform { ); final ResolutionFilter resolutionFilter = proxy .createWithOnePreferredSizeResolutionFilter(preferredSize: boundSize); - final AspectRatioStrategy? aspectRatioStrategy = - aspectRatio == null - ? null - : proxy.newAspectRatioStrategy( - preferredAspectRatio: aspectRatio, - fallbackRule: AspectRatioStrategyFallbackRule.auto, - ); + final AspectRatioStrategy? aspectRatioStrategy = aspectRatio == null + ? null + : proxy.newAspectRatioStrategy( + preferredAspectRatio: aspectRatio, + fallbackRule: AspectRatioStrategyFallbackRule.auto, + ); return proxy.newResolutionSelector( resolutionStrategy: resolutionStrategy, resolutionFilter: resolutionFilter, @@ -1617,17 +1616,17 @@ class AndroidCameraCameraX extends CameraPlatform { // Remove metering point with specified meteringMode from current focus // and metering action, as only one focus or exposure point may be set // at once in this plugin. - final List<(MeteringPoint, MeteringMode)> newMeteringPointInfos = - originalMeteringPoints - .where( - ((MeteringPoint, MeteringMode) meteringPointInfo) => - // meteringPointInfo may technically include points without a - // mode specified, but this logic is safe because this plugin - // only uses points that explicitly have mode - // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. - meteringPointInfo.$2 != meteringMode, - ) - .toList(); + final List<(MeteringPoint, MeteringMode)> + newMeteringPointInfos = originalMeteringPoints + .where( + ((MeteringPoint, MeteringMode) meteringPointInfo) => + // meteringPointInfo may technically include points without a + // mode specified, but this logic is safe because this plugin + // only uses points that explicitly have mode + // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. + meteringPointInfo.$2 != meteringMode, + ) + .toList(); if (newMeteringPointInfos.isEmpty) { // If no other metering points were specified, cancel any previously @@ -1664,17 +1663,16 @@ class AndroidCameraCameraX extends CameraPlatform { final Iterable<(MeteringPoint, MeteringMode)> originalMeteringPoints = _combineMeteringPoints(currentFocusMeteringAction!); - newMeteringPointInfos = - originalMeteringPoints - .where( - ((MeteringPoint, MeteringMode) meteringPointInfo) => - // meteringPointInfo may technically include points without a - // mode specified, but this logic is safe because this plugin - // only uses points that explicitly have mode - // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. - meteringPointInfo.$2 != meteringMode, - ) - .toList(); + newMeteringPointInfos = originalMeteringPoints + .where( + ((MeteringPoint, MeteringMode) meteringPointInfo) => + // meteringPointInfo may technically include points without a + // mode specified, but this logic is safe because this plugin + // only uses points that explicitly have mode + // FocusMeteringAction.flagAe or FocusMeteringAction.flagAf. + meteringPointInfo.$2 != meteringMode, + ) + .toList(); } newMeteringPointInfos.add((meteringPoint, meteringMode)); diff --git a/packages/camera/camera_android_camerax/lib/src/camerax_library.dart b/packages/camera/camera_android_camerax/lib/src/camerax_library.dart index 2c0d0a43747..e692d408fa2 100644 --- a/packages/camera/camera_android_camerax/lib/src/camerax_library.dart +++ b/packages/camera/camera_android_camerax/lib/src/camerax_library.dart @@ -37,17 +37,15 @@ void setUpGenerics({ ); camerax.CameraInfo.pigeon_setUpMessageHandlers( - pigeon_newInstance: ( - int sensorRotationDegrees, - camerax.ExposureState exposureState, - ) { - return CameraInfo.detached( - sensorRotationDegrees: sensorRotationDegrees, - exposureState: exposureState, - pigeon_binaryMessenger: pigeonBinaryMessenger, - pigeon_instanceManager: pigeonInstanceManager, - ); - }, + pigeon_newInstance: + (int sensorRotationDegrees, camerax.ExposureState exposureState) { + return CameraInfo.detached( + sensorRotationDegrees: sensorRotationDegrees, + exposureState: exposureState, + pigeon_binaryMessenger: pigeonBinaryMessenger, + pigeon_instanceManager: pigeonInstanceManager, + ); + }, ); } diff --git a/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart b/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart index ddbdbcc94d3..b2f730b89c1 100644 --- a/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart +++ b/packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart @@ -384,8 +384,8 @@ class PigeonInstanceManager { final PigeonInternalProxyApiBaseClass? strongInstance = _strongInstances[identifier]; if (strongInstance != null) { - final PigeonInternalProxyApiBaseClass copy = - strongInstance.pigeon_copy(); + final PigeonInternalProxyApiBaseClass copy = strongInstance + .pigeon_copy(); _identifiers[copy] = identifier; _weakInstances[identifier] = WeakReference(copy); diff --git a/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart b/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart index 2cb8f44bf1a..49cf6c48509 100644 --- a/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart +++ b/packages/camera/camera_android_camerax/lib/src/image_reader_rotated_preview.dart @@ -78,8 +78,9 @@ final class _ImageReaderRotatedPreviewState late StreamSubscription deviceOrientationSubscription; Future _getCurrentDefaultDisplayRotationDegrees() async { - final int currentDefaultDisplayRotationQuarterTurns = - await widget.deviceOrientationManager.getDefaultDisplayRotation(); + final int currentDefaultDisplayRotationQuarterTurns = await widget + .deviceOrientationManager + .getDefaultDisplayRotation(); return getQuarterTurnsFromSurfaceRotationConstant( currentDefaultDisplayRotationQuarterTurns, ) * diff --git a/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart b/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart index cfebe6976d5..ae3152d7ff4 100644 --- a/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart +++ b/packages/camera/camera_android_camerax/lib/src/rotated_preview_utils.dart @@ -15,10 +15,9 @@ int getQuarterTurnsFromSurfaceRotationConstant(int surfaceRotationConstant) { Surface.rotation90 => 3, Surface.rotation180 => 2, Surface.rotation270 => 1, - int() => - throw ArgumentError( - '$surfaceRotationConstant is an unknown Surface rotation constant, so counter-clockwise quarter turns cannot be determined.', - ), + int() => throw ArgumentError( + '$surfaceRotationConstant is an unknown Surface rotation constant, so counter-clockwise quarter turns cannot be determined.', + ), }; } diff --git a/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart b/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart index bdfa3f7d2bd..a69e0359812 100644 --- a/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart +++ b/packages/camera/camera_android_camerax/lib/src/surface_texture_rotated_preview.dart @@ -57,8 +57,9 @@ final class _SurfaceTextureRotatedPreviewState late Future defaultDisplayRotationQuarterTurns; Future _getCurrentDefaultDisplayRotationQuarterTurns() async { - final int currentDefaultDisplayRotationQuarterTurns = - await widget.deviceOrientationManager.getDefaultDisplayRotation(); + final int currentDefaultDisplayRotationQuarterTurns = await widget + .deviceOrientationManager + .getDefaultDisplayRotation(); return getQuarterTurnsFromSurfaceRotationConstant( currentDefaultDisplayRotationQuarterTurns, ); diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml index 87981d6f3a1..fe97ed64e45 100644 --- a/packages/camera/camera_android_camerax/pubspec.yaml +++ b/packages/camera/camera_android_camerax/pubspec.yaml @@ -2,7 +2,11 @@ name: camera_android_camerax description: Android implementation of the camera plugin using the CameraX library. repository: https://github.com/flutter/packages/tree/main/packages/camera/camera_android_camerax issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 +<<<<<<< HEAD version: 0.6.19+1 +======= +version: 0.6.20 +>>>>>>> e03328e14 (format for real) environment: sdk: ^3.8.1 diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart index e9b1bb7598c..49a31252e7c 100644 --- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart +++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart @@ -159,6 +159,7 @@ void main() { final ResolutionStrategy highestAvailableStrategyResolutionStrategy = MockResolutionStrategy(); proxy = CameraXProxy( +<<<<<<< HEAD getInstanceProcessCameraProvider: ({ // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, @@ -183,9 +184,36 @@ void main() { case LensFacing.unknown: case null: } +======= + getInstanceProcessCameraProvider: + ({ + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) async { + return mockProcessCameraProvider; + }, + newCameraSelector: + ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return MockCameraSelector(); + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } +>>>>>>> e03328e14 (format for real) - return MockCameraSelector(); - }, + return MockCameraSelector(); + }, newPreview: newPreview ?? ({ @@ -203,101 +231,107 @@ void main() { when(mockPreview.resolutionSelector).thenReturn(resolutionSelector); return mockPreview; }, - newImageCapture: ({ - int? targetRotation, - CameraXFlashMode? flashMode, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockImageCapture mockImageCapture = MockImageCapture(); - when( - mockImageCapture.resolutionSelector, - ).thenReturn(resolutionSelector); - return mockImageCapture; - }, - newRecorder: ({ - int? aspectRatio, - int? targetVideoEncodingBitRate, - QualitySelector? qualitySelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockRecorder mockRecorder = MockRecorder(); - when( - mockRecorder.getQualitySelector(), - ).thenAnswer((_) async => qualitySelector ?? MockQualitySelector()); - return mockRecorder; - }, - withOutputVideoCapture: ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockVideoCapture(); - }, - newImageAnalysis: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockImageAnalysis mockImageAnalysis = MockImageAnalysis(); - when( - mockImageAnalysis.resolutionSelector, - ).thenReturn(resolutionSelector); - return mockImageAnalysis; - }, - newResolutionStrategy: ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockResolutionStrategy resolutionStrategy = - MockResolutionStrategy(); - when( - resolutionStrategy.getBoundSize(), - ).thenAnswer((_) async => boundSize); - when( - resolutionStrategy.getFallbackRule(), - ).thenAnswer((_) async => fallbackRule); - return resolutionStrategy; - }, - newResolutionSelector: ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockResolutionSelector mockResolutionSelector = - MockResolutionSelector(); - when(mockResolutionSelector.getAspectRatioStrategy()).thenAnswer( - (_) async => - aspectRatioStrategy ?? - proxy.ratio_4_3FallbackAutoStrategyAspectRatioStrategy(), - ); - when( - mockResolutionSelector.resolutionStrategy, - ).thenReturn(resolutionStrategy); - when( - mockResolutionSelector.resolutionFilter, - ).thenReturn(resolutionFilter); - return mockResolutionSelector; - }, + newImageCapture: + ({ + int? targetRotation, + CameraXFlashMode? flashMode, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockImageCapture mockImageCapture = MockImageCapture(); + when( + mockImageCapture.resolutionSelector, + ).thenReturn(resolutionSelector); + return mockImageCapture; + }, + newRecorder: + ({ + int? aspectRatio, + int? targetVideoEncodingBitRate, + QualitySelector? qualitySelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockRecorder mockRecorder = MockRecorder(); + when( + mockRecorder.getQualitySelector(), + ).thenAnswer((_) async => qualitySelector ?? MockQualitySelector()); + return mockRecorder; + }, + withOutputVideoCapture: + ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockVideoCapture(); + }, + newImageAnalysis: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockImageAnalysis mockImageAnalysis = MockImageAnalysis(); + when( + mockImageAnalysis.resolutionSelector, + ).thenReturn(resolutionSelector); + return mockImageAnalysis; + }, + newResolutionStrategy: + ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockResolutionStrategy resolutionStrategy = + MockResolutionStrategy(); + when( + resolutionStrategy.getBoundSize(), + ).thenAnswer((_) async => boundSize); + when( + resolutionStrategy.getFallbackRule(), + ).thenAnswer((_) async => fallbackRule); + return resolutionStrategy; + }, + newResolutionSelector: + ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockResolutionSelector mockResolutionSelector = + MockResolutionSelector(); + when(mockResolutionSelector.getAspectRatioStrategy()).thenAnswer( + (_) async => + aspectRatioStrategy ?? + proxy.ratio_4_3FallbackAutoStrategyAspectRatioStrategy(), + ); + when( + mockResolutionSelector.resolutionStrategy, + ).thenReturn(resolutionStrategy); + when( + mockResolutionSelector.resolutionFilter, + ).thenReturn(resolutionFilter); + return mockResolutionSelector; + }, fromQualitySelector: fromQualitySelector ?? ({ @@ -310,62 +344,66 @@ void main() { }) { return MockQualitySelector(); }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, - newAspectRatioStrategy: ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockAspectRatioStrategy mockAspectRatioStrategy = - MockAspectRatioStrategy(); - when( - mockAspectRatioStrategy.getFallbackRule(), - ).thenAnswer((_) async => fallbackRule); - when( - mockAspectRatioStrategy.getPreferredAspectRatio(), - ).thenAnswer((_) async => preferredAspectRatio); - return mockAspectRatioStrategy; - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, + newAspectRatioStrategy: + ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockAspectRatioStrategy mockAspectRatioStrategy = + MockAspectRatioStrategy(); + when( + mockAspectRatioStrategy.getFallbackRule(), + ).thenAnswer((_) async => fallbackRule); + when( + mockAspectRatioStrategy.getPreferredAspectRatio(), + ).thenAnswer((_) async => preferredAspectRatio); + return mockAspectRatioStrategy; + }, createWithOnePreferredSizeResolutionFilter: createWithOnePreferredSizeResolutionFilter ?? ({ @@ -377,35 +415,38 @@ void main() { }) { return MockResolutionFilter(); }, - fromCamera2CameraInfo: ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo camera2cameraInfo = MockCamera2CameraInfo(); - when( - camera2cameraInfo.getCameraCharacteristic(any), - ).thenAnswer((_) async => 90); - return camera2cameraInfo; - }, - newCameraSize: ({ - required int width, - required int height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return CameraSize.pigeon_detached( - width: width, - height: height, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + fromCamera2CameraInfo: + ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo camera2cameraInfo = + MockCamera2CameraInfo(); + when( + camera2cameraInfo.getCameraCharacteristic(any), + ).thenAnswer((_) async => 90); + return camera2cameraInfo; + }, + newCameraSize: + ({ + required int width, + required int height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return CameraSize.pigeon_detached( + width: width, + height: height, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, sensorOrientationCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -423,17 +464,18 @@ void main() { highestAvailableStrategyResolutionStrategy: () { return highestAvailableStrategyResolutionStrategy; }, - ratio_4_3FallbackAutoStrategyAspectRatioStrategy: - () => ratio_4_3FallbackAutoStrategyAspectRatioStrategy, - lowerQualityThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, + ratio_4_3FallbackAutoStrategyAspectRatioStrategy: () => + ratio_4_3FallbackAutoStrategyAspectRatioStrategy, + lowerQualityThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, ); return proxy; @@ -603,28 +645,28 @@ void main() { BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) => - cameraControl == cameraControlForComparison - ? camera2cameraControl - : Camera2CameraControl.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ); - proxy.newCaptureRequestOptions = ({ - required Map options, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCaptureRequestOptions mockCaptureRequestOptions = - MockCaptureRequestOptions(); - options.forEach((CaptureRequestKey key, Object? value) { - when( - mockCaptureRequestOptions.getCaptureRequestOption(key), - ).thenAnswer((_) async => value); - }); - return mockCaptureRequestOptions; - }; + }) => cameraControl == cameraControlForComparison + ? camera2cameraControl + : Camera2CameraControl.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ); + proxy.newCaptureRequestOptions = + ({ + required Map options, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCaptureRequestOptions mockCaptureRequestOptions = + MockCaptureRequestOptions(); + options.forEach((CaptureRequestKey key, Object? value) { + when( + mockCaptureRequestOptions.getCaptureRequestOption(key), + ).thenAnswer((_) async => value); + }); + return mockCaptureRequestOptions; + }; final CaptureRequestKey controlAeLock = CaptureRequestKey.pigeon_detached( pigeon_instanceManager: testInstanceManager, ); @@ -674,6 +716,7 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, }) => Future.value(mockProcessCameraProvider), +<<<<<<< HEAD newCameraSelector: ({ LensFacing? requireLensFacing, CameraInfo? cameraInfoForFilter, @@ -690,18 +733,38 @@ void main() { case LensFacing.unknown: case null: } - - return mockBackCameraSelector; - }, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, +======= + newCameraSelector: + ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return mockFrontCameraSelector; + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } +>>>>>>> e03328e14 (format for real) + + return mockBackCameraSelector; + }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, ); // Mock calls to native platform @@ -723,8 +786,8 @@ void main() { when(mockBackCameraInfo.sensorRotationDegrees).thenReturn(0); when(mockFrontCameraInfo.sensorRotationDegrees).thenReturn(90); - final List cameraDescriptions = - await camera.availableCameras(); + final List cameraDescriptions = await camera + .availableCameras(); expect(cameraDescriptions.length, returnData.length); for (int i = 0; i < returnData.length; i++) { @@ -732,10 +795,9 @@ void main() { (returnData[i] as Map).cast(); final CameraDescription cameraDescription = CameraDescription( name: typedData['name']! as String, - lensDirection: - (typedData['lensFacing']! as String) == 'front' - ? CameraLensDirection.front - : CameraLensDirection.back, + lensDirection: (typedData['lensFacing']! as String) == 'front' + ? CameraLensDirection.front + : CameraLensDirection.back, sensorOrientation: typedData['sensorOrientation']! as int, ); expect(cameraDescriptions[i], cameraDescription); @@ -779,6 +841,7 @@ void main() { bool startedListeningForDeviceOrientationChanges = false; camera.proxy = CameraXProxy( +<<<<<<< HEAD getInstanceProcessCameraProvider: ({ // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, @@ -803,197 +866,241 @@ void main() { case LensFacing.unknown: case null: } - - return mockBackCameraSelector; - }, - newPreview: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockPreview; - }, - newImageCapture: ({ - int? targetRotation, - CameraXFlashMode? flashMode, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageCapture; - }, - newRecorder: ({ - int? aspectRatio, - int? targetVideoEncodingBitRate, - QualitySelector? qualitySelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockRecorder; - }, - withOutputVideoCapture: ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockVideoCapture; - }, - newImageAnalysis: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageAnalysis; - }, - newResolutionStrategy: ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionStrategy(); - }, - newResolutionSelector: ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionSelector(); - }, - fromQualitySelector: ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockQualitySelector(); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - when( - mockSystemServicesManager.requestCameraPermissions(any), - ).thenAnswer((_) async { - cameraPermissionsRequested = true; - return null; - }); - return mockSystemServicesManager; - }, - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.startListeningForDeviceOrientationChange()).thenAnswer(( - _, - ) async { - startedListeningForDeviceOrientationChanges = true; - }); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, - newAspectRatioStrategy: ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockAspectRatioStrategy(); - }, - createWithOnePreferredSizeResolutionFilter: ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionFilter(); - }, - fromCamera2CameraInfo: ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo camera2cameraInfo = - MockCamera2CameraInfo(); - when( - camera2cameraInfo.getCameraCharacteristic( - mockCameraCharacteristicsKey, - ), - ).thenAnswer((_) async => testSensorOrientation); - return camera2cameraInfo; - }, - newCameraSize: ({ - required int width, - required int height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockCameraSize(); - }, +======= + getInstanceProcessCameraProvider: + ({ + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) async { + return mockProcessCameraProvider; + }, + newCameraSelector: + ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return MockCameraSelector(); + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } +>>>>>>> e03328e14 (format for real) + + return mockBackCameraSelector; + }, + newPreview: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockPreview; + }, + newImageCapture: + ({ + int? targetRotation, + CameraXFlashMode? flashMode, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageCapture; + }, + newRecorder: + ({ + int? aspectRatio, + int? targetVideoEncodingBitRate, + QualitySelector? qualitySelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockRecorder; + }, + withOutputVideoCapture: + ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockVideoCapture; + }, + newImageAnalysis: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageAnalysis; + }, + newResolutionStrategy: + ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionStrategy(); + }, + newResolutionSelector: + ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionSelector(); + }, + fromQualitySelector: + ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockQualitySelector(); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + when( + mockSystemServicesManager.requestCameraPermissions(any), + ).thenAnswer((_) async { + cameraPermissionsRequested = true; + return null; + }); + return mockSystemServicesManager; + }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when( + manager.startListeningForDeviceOrientationChange(), + ).thenAnswer((_) async { + startedListeningForDeviceOrientationChanges = true; + }); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, + newAspectRatioStrategy: + ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockAspectRatioStrategy(); + }, + createWithOnePreferredSizeResolutionFilter: + ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionFilter(); + }, + fromCamera2CameraInfo: + ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo camera2cameraInfo = + MockCamera2CameraInfo(); + when( + camera2cameraInfo.getCameraCharacteristic( + mockCameraCharacteristicsKey, + ), + ).thenAnswer((_) async => testSensorOrientation); + return camera2cameraInfo; + }, + newCameraSize: + ({ + required int width, + required int height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockCameraSize(); + }, sensorOrientationCameraCharacteristics: () { return mockCameraCharacteristicsKey; }, - lowerQualityOrHigherThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, + lowerQualityOrHigherThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, ); camera.processCameraProvider = mockProcessCameraProvider; @@ -1054,248 +1161,293 @@ void main() { verify(mockLiveCameraState.observe(captureAny)).captured.single as Observer, ), - isTrue, - ); - }, - ); - - test( - 'createCamera binds Preview and ImageCapture use cases to ProcessCameraProvider instance', - () async { - final AndroidCameraCameraX camera = AndroidCameraCameraX(); - const CameraLensDirection testLensDirection = CameraLensDirection.back; - const int testSensorOrientation = 90; - const CameraDescription testCameraDescription = CameraDescription( - name: 'cameraName', - lensDirection: testLensDirection, - sensorOrientation: testSensorOrientation, - ); - const ResolutionPreset testResolutionPreset = ResolutionPreset.veryHigh; - const bool enableAudio = true; - - // Mock/Detached objects for (typically attached) objects created by - // createCamera. - final MockProcessCameraProvider mockProcessCameraProvider = - MockProcessCameraProvider(); - final MockPreview mockPreview = MockPreview(); - final MockCameraSelector mockBackCameraSelector = MockCameraSelector(); - final MockImageCapture mockImageCapture = MockImageCapture(); - final MockImageAnalysis mockImageAnalysis = MockImageAnalysis(); - final MockRecorder mockRecorder = MockRecorder(); - final MockVideoCapture mockVideoCapture = MockVideoCapture(); - final MockCamera mockCamera = MockCamera(); - final MockCameraInfo mockCameraInfo = MockCameraInfo(); - final MockCameraControl mockCameraControl = MockCameraControl(); - final MockCamera2CameraInfo mockCamera2CameraInfo = - MockCamera2CameraInfo(); - final MockCameraCharacteristicsKey mockCameraCharacteristicsKey = - MockCameraCharacteristicsKey(); - - // Tell plugin to create mock/detached objects and stub method calls for the - // testing of createCamera. - camera.proxy = CameraXProxy( - getInstanceProcessCameraProvider: ({ - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) async { - return mockProcessCameraProvider; - }, - newCameraSelector: ({ - LensFacing? requireLensFacing, - CameraInfo? cameraInfoForFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return MockCameraSelector(); - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } - - return mockBackCameraSelector; - }, - newPreview: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockPreview; - }, - newImageCapture: ({ - int? targetRotation, - CameraXFlashMode? flashMode, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageCapture; - }, - newRecorder: ({ - int? aspectRatio, - int? targetVideoEncodingBitRate, - QualitySelector? qualitySelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockRecorder; - }, - withOutputVideoCapture: ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockVideoCapture; - }, - newImageAnalysis: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageAnalysis; - }, - newResolutionStrategy: ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionStrategy(); - }, - newResolutionSelector: ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionSelector(); - }, - fromQualitySelector: ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockQualitySelector(); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, - newAspectRatioStrategy: ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockAspectRatioStrategy(); - }, - createWithOnePreferredSizeResolutionFilter: ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionFilter(); - }, - fromCamera2CameraInfo: ({ - required CameraInfo cameraInfo, + isTrue, + ); + }, + ); + + test( + 'createCamera binds Preview and ImageCapture use cases to ProcessCameraProvider instance', + () async { + final AndroidCameraCameraX camera = AndroidCameraCameraX(); + const CameraLensDirection testLensDirection = CameraLensDirection.back; + const int testSensorOrientation = 90; + const CameraDescription testCameraDescription = CameraDescription( + name: 'cameraName', + lensDirection: testLensDirection, + sensorOrientation: testSensorOrientation, + ); + const ResolutionPreset testResolutionPreset = ResolutionPreset.veryHigh; + const bool enableAudio = true; + + // Mock/Detached objects for (typically attached) objects created by + // createCamera. + final MockProcessCameraProvider mockProcessCameraProvider = + MockProcessCameraProvider(); + final MockPreview mockPreview = MockPreview(); + final MockCameraSelector mockBackCameraSelector = MockCameraSelector(); + final MockImageCapture mockImageCapture = MockImageCapture(); + final MockImageAnalysis mockImageAnalysis = MockImageAnalysis(); + final MockRecorder mockRecorder = MockRecorder(); + final MockVideoCapture mockVideoCapture = MockVideoCapture(); + final MockCamera mockCamera = MockCamera(); + final MockCameraInfo mockCameraInfo = MockCameraInfo(); + final MockCameraControl mockCameraControl = MockCameraControl(); + final MockCamera2CameraInfo mockCamera2CameraInfo = + MockCamera2CameraInfo(); + final MockCameraCharacteristicsKey mockCameraCharacteristicsKey = + MockCameraCharacteristicsKey(); + + // Tell plugin to create mock/detached objects and stub method calls for the + // testing of createCamera. + camera.proxy = CameraXProxy( +<<<<<<< HEAD + getInstanceProcessCameraProvider: ({ // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) { - when( - mockCamera2CameraInfo.getCameraCharacteristic( - mockCameraCharacteristicsKey, - ), - ).thenAnswer((_) async => testSensorOrientation); - return mockCamera2CameraInfo; + }) async { + return mockProcessCameraProvider; }, - newCameraSize: ({ - required int width, - required int height, + newCameraSelector: ({ + LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) { - return MockCameraSize(); - }, + switch (requireLensFacing) { + case LensFacing.front: + return MockCameraSelector(); + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } +======= + getInstanceProcessCameraProvider: + ({ + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) async { + return mockProcessCameraProvider; + }, + newCameraSelector: + ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return MockCameraSelector(); + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } +>>>>>>> e03328e14 (format for real) + + return mockBackCameraSelector; + }, + newPreview: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockPreview; + }, + newImageCapture: + ({ + int? targetRotation, + CameraXFlashMode? flashMode, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageCapture; + }, + newRecorder: + ({ + int? aspectRatio, + int? targetVideoEncodingBitRate, + QualitySelector? qualitySelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockRecorder; + }, + withOutputVideoCapture: + ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockVideoCapture; + }, + newImageAnalysis: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageAnalysis; + }, + newResolutionStrategy: + ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionStrategy(); + }, + newResolutionSelector: + ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionSelector(); + }, + fromQualitySelector: + ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockQualitySelector(); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, + newAspectRatioStrategy: + ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockAspectRatioStrategy(); + }, + createWithOnePreferredSizeResolutionFilter: + ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionFilter(); + }, + fromCamera2CameraInfo: + ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + when( + mockCamera2CameraInfo.getCameraCharacteristic( + mockCameraCharacteristicsKey, + ), + ).thenAnswer((_) async => testSensorOrientation); + return mockCamera2CameraInfo; + }, + newCameraSize: + ({ + required int width, + required int height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockCameraSize(); + }, sensorOrientationCameraCharacteristics: () { return mockCameraCharacteristicsKey; }, - lowerQualityOrHigherThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, + lowerQualityOrHigherThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, ); when( @@ -1425,9 +1577,11 @@ void main() { continue; } - final CameraSize? previewSize = - await camera.preview!.resolutionSelector!.resolutionStrategy! - .getBoundSize(); + final CameraSize? previewSize = await camera + .preview! + .resolutionSelector! + .resolutionStrategy! + .getBoundSize(); expect(previewSize?.width, equals(expectedBoundSize.width)); expect(previewSize?.height, equals(expectedBoundSize.height)); expect( @@ -1436,9 +1590,11 @@ void main() { ResolutionStrategyFallbackRule.closestLowerThenHigher, ); - final CameraSize? imageCaptureSize = - await camera.imageCapture!.resolutionSelector!.resolutionStrategy! - .getBoundSize(); + final CameraSize? imageCaptureSize = await camera + .imageCapture! + .resolutionSelector! + .resolutionStrategy! + .getBoundSize(); expect(imageCaptureSize?.width, equals(expectedBoundSize.width)); expect(imageCaptureSize?.height, equals(expectedBoundSize.height)); expect( @@ -1447,9 +1603,11 @@ void main() { ResolutionStrategyFallbackRule.closestLowerThenHigher, ); - final CameraSize? imageAnalysisSize = - await camera.imageAnalysis!.resolutionSelector!.resolutionStrategy! - .getBoundSize(); + final CameraSize? imageAnalysisSize = await camera + .imageAnalysis! + .resolutionSelector! + .resolutionStrategy! + .getBoundSize(); expect(imageAnalysisSize?.width, equals(expectedBoundSize.width)); expect(imageAnalysisSize?.height, equals(expectedBoundSize.height)); expect( @@ -1512,16 +1670,17 @@ void main() { CameraSize? lastSetPreferredSize; camera.proxy = getProxyForTestingResolutionPreset( mockProcessCameraProvider, - createWithOnePreferredSizeResolutionFilter: ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - lastSetPreferredSize = preferredSize; - return MockResolutionFilter(); - }, + createWithOnePreferredSizeResolutionFilter: + ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + lastSetPreferredSize = preferredSize; + return MockResolutionFilter(); + }, ); when( @@ -1602,9 +1761,11 @@ void main() { equals(expectedPreferredResolution.height), ); - final CameraSize? imageCaptureSize = - await camera.imageCapture!.resolutionSelector!.resolutionStrategy! - .getBoundSize(); + final CameraSize? imageCaptureSize = await camera + .imageCapture! + .resolutionSelector! + .resolutionStrategy! + .getBoundSize(); expect( imageCaptureSize?.width, equals(expectedPreferredResolution.width), @@ -1614,9 +1775,11 @@ void main() { equals(expectedPreferredResolution.height), ); - final CameraSize? imageAnalysisSize = - await camera.imageAnalysis!.resolutionSelector!.resolutionStrategy! - .getBoundSize(); + final CameraSize? imageAnalysisSize = await camera + .imageAnalysis! + .resolutionSelector! + .resolutionStrategy! + .getBoundSize(); expect( imageAnalysisSize?.width, equals(expectedPreferredResolution.width), @@ -1718,14 +1881,18 @@ void main() { continue; } - final AspectRatioStrategy previewStrategy = - await camera.preview!.resolutionSelector!.getAspectRatioStrategy(); - final AspectRatioStrategy imageCaptureStrategy = - await camera.imageCapture!.resolutionSelector! - .getAspectRatioStrategy(); - final AspectRatioStrategy imageAnalysisStrategy = - await camera.imageCapture!.resolutionSelector! - .getAspectRatioStrategy(); + final AspectRatioStrategy previewStrategy = await camera + .preview! + .resolutionSelector! + .getAspectRatioStrategy(); + final AspectRatioStrategy imageCaptureStrategy = await camera + .imageCapture! + .resolutionSelector! + .getAspectRatioStrategy(); + final AspectRatioStrategy imageAnalysisStrategy = await camera + .imageCapture! + .resolutionSelector! + .getAspectRatioStrategy(); // Check aspect ratio. expect( @@ -1793,28 +1960,30 @@ void main() { final MockQualitySelector mockQualitySelector = MockQualitySelector(); camera.proxy = getProxyForTestingResolutionPreset( mockProcessCameraProvider, - lowerQualityOrHigherThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - fallbackStrategyVideoQuality = quality; - return mockFallbackStrategy; - }, - fromQualitySelector: ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - qualitySelectorVideoQuality = quality; - setFallbackStrategy = fallbackStrategy; - return mockQualitySelector; - }, + lowerQualityOrHigherThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + fallbackStrategyVideoQuality = quality; + return mockFallbackStrategy; + }, + fromQualitySelector: + ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + qualitySelectorVideoQuality = quality; + setFallbackStrategy = fallbackStrategy; + return mockQualitySelector; + }, ); when( @@ -1897,21 +2066,24 @@ void main() { // UI orientation. camera.proxy = getProxyForTestingResolutionPreset( mockProcessCameraProvider, - newPreview: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockPreview mockPreview = MockPreview(); - when( - mockPreview.surfaceProducerHandlesCropAndRotation(), - ).thenAnswer((_) async => testHandlesCropAndRotation); - when(mockPreview.resolutionSelector).thenReturn(resolutionSelector); - return mockPreview; - }, + newPreview: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockPreview mockPreview = MockPreview(); + when( + mockPreview.surfaceProducerHandlesCropAndRotation(), + ).thenAnswer((_) async => testHandlesCropAndRotation); + when( + mockPreview.resolutionSelector, + ).thenReturn(resolutionSelector); + return mockPreview; + }, ); when( @@ -2354,6 +2526,7 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => Future.value(mockProcessCameraProvider), +<<<<<<< HEAD newCameraSelector: ({ LensFacing? requireLensFacing, CameraInfo? cameraInfoForFilter, @@ -2369,6 +2542,23 @@ void main() { return mockBackCameraSelector; } }, +======= + newCameraSelector: + ({ + LensFacing? requireLensFacing, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return mockFrontCameraSelector; + case _: + return mockBackCameraSelector; + } + }, +>>>>>>> e03328e14 (format for real) newPreview: ({ int? targetRotation, @@ -2444,50 +2634,52 @@ void main() { }) => MockFallbackStrategy(), fromQualitySelector: ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) => MockQualitySelector(), + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) onCameraError, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) => MockQualitySelector(), - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: + }) => MockSystemServicesManager(), + newDeviceOrientationManager: ({ - required void Function(SystemServicesManager, String) onCameraError, + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) => MockSystemServicesManager(), - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, newAspectRatioStrategy: ({ required AspectRatio preferredAspectRatio, @@ -2505,20 +2697,21 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockResolutionFilter(), - fromCamera2CameraInfo: ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo mockCamera2CameraInfo = - MockCamera2CameraInfo(); - when( - mockCamera2CameraInfo.getCameraCharacteristic(any), - ).thenAnswer((_) async => 90); - return mockCamera2CameraInfo; - }, + fromCamera2CameraInfo: + ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo mockCamera2CameraInfo = + MockCamera2CameraInfo(); + when( + mockCamera2CameraInfo.getCameraCharacteristic(any), + ).thenAnswer((_) async => 90); + return mockCamera2CameraInfo; + }, newCameraSize: ({ required int width, @@ -2528,8 +2721,8 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockCameraSize(), - sensorOrientationCameraCharacteristics: - () => MockCameraCharacteristicsKey(), + sensorOrientationCameraCharacteristics: () => + MockCameraCharacteristicsKey(), ); final CameraInitializedEvent testCameraInitializedEvent = @@ -2589,24 +2782,25 @@ void main() { bool stoppedListeningForDeviceOrientationChange = false; final AndroidCameraCameraX camera = AndroidCameraCameraX(); camera.proxy = CameraXProxy( - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager mockDeviceOrientationManager = - MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager - .stopListeningForDeviceOrientationChange(), - ).thenAnswer((_) async { - stoppedListeningForDeviceOrientationChange = true; - }); - return mockDeviceOrientationManager; - }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager mockDeviceOrientationManager = + MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager + .stopListeningForDeviceOrientationChange(), + ).thenAnswer((_) async { + stoppedListeningForDeviceOrientationChange = true; + }); + return mockDeviceOrientationManager; + }, ); camera.preview = MockPreview(); @@ -2686,20 +2880,22 @@ void main() { StreamQueue(eventStream); camera.proxy = CameraXProxy( - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.onCameraError, - ).thenReturn(onCameraError); - return mockSystemServicesManager; - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.onCameraError, + ).thenReturn(onCameraError); + return mockSystemServicesManager; + }, ); camera.systemServicesManager.onCameraError( @@ -2722,29 +2918,30 @@ void main() { 'onDeviceOrientationChanged stream emits changes in device orientation detected by system services', () async { final AndroidCameraCameraX camera = AndroidCameraCameraX(); - final Stream eventStream = - camera.onDeviceOrientationChanged(); + final Stream eventStream = camera + .onDeviceOrientationChanged(); final StreamQueue streamQueue = StreamQueue(eventStream); const DeviceOrientationChangedEvent testEvent = DeviceOrientationChangedEvent(DeviceOrientation.portraitDown); camera.proxy = CameraXProxy( - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager mockDeviceOrientationManager = - MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager.onDeviceOrientationChanged, - ).thenReturn(onDeviceOrientationChanged); - return mockDeviceOrientationManager; - }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager mockDeviceOrientationManager = + MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager.onDeviceOrientationChanged, + ).thenReturn(onDeviceOrientationChanged); + return mockDeviceOrientationManager; + }, ); camera.deviceOrientationManager.onDeviceOrientationChanged( @@ -2856,20 +3053,21 @@ void main() { // track camera state once preview is bound to the lifecycle and needed to // test for expected updates. camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); when( @@ -2964,20 +3162,21 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -2986,38 +3185,44 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function( + VideoRecordEventListener, + VideoRecordEvent, + ) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -3123,20 +3328,21 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -3145,38 +3351,44 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function( + VideoRecordEventListener, + VideoRecordEvent, + ) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -3282,20 +3494,21 @@ void main() { // Tell plugin to create detached Analyzer for testing. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -3304,50 +3517,57 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function( + VideoRecordEventListener, + VideoRecordEvent, + ) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockAnalyzer(); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockAnalyzer(); + }, ); const int cameraId = 17; @@ -3355,9 +3575,8 @@ void main() { Completer(); final VideoCaptureOptions videoCaptureOptions = VideoCaptureOptions( cameraId, - streamCallback: - (CameraImageData imageData) => - imageDataCompleter.complete(imageData), + streamCallback: (CameraImageData imageData) => + imageDataCompleter.complete(imageData), ); // Mock method calls. @@ -3429,20 +3648,21 @@ void main() { // Tell plugin to mock call to get current video orientation and mock Camera2CameraInfo retrieval. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -3450,57 +3670,63 @@ void main() { BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) => - cameraInfo == initialCameraInfo - ? mockCamera2CameraInfo - : MockCamera2CameraInfo(), - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager mockDeviceOrientationManager = - MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager.getDefaultDisplayRotation(), - ).thenAnswer((_) async => defaultTargetRotation); - return mockDeviceOrientationManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + }) => cameraInfo == initialCameraInfo + ? mockCamera2CameraInfo + : MockCamera2CameraInfo(), + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager + mockDeviceOrientationManager = MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager.getDefaultDisplayRotation(), + ).thenAnswer((_) async => defaultTargetRotation); + return mockDeviceOrientationManager; + }, + newVideoRecordEventListener: + ({ + required void Function( + VideoRecordEventListener, + VideoRecordEvent, + ) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -3818,20 +4044,21 @@ void main() { // Tell plugin to create detached camera state observers. camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); when( @@ -3874,21 +4101,22 @@ void main() { // Tell plugin to mock call to get current photo orientation. camera.proxy = CameraXProxy( - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager mockDeviceOrientationManager = - MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager.getDefaultDisplayRotation(), - ).thenAnswer((_) async => defaultTargetRotation); - return mockDeviceOrientationManager; - }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager mockDeviceOrientationManager = + MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager.getDefaultDisplayRotation(), + ).thenAnswer((_) async => defaultTargetRotation); + return mockDeviceOrientationManager; + }, ); when( @@ -4223,20 +4451,21 @@ void main() { // Tell plugin to create detached Analyzer for testing. camera.proxy = CameraXProxy( - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); // Set directly for test versus calling createCamera. @@ -4283,20 +4512,21 @@ void main() { // Tell plugin to create detached Analyzer for testing. camera.proxy = CameraXProxy( - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); // Set directly for test versus calling createCamera. @@ -4357,34 +4587,36 @@ void main() { // Tell plugin to create detached Analyzer for testing. camera.proxy = CameraXProxy( - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); // Set directly for test versus calling createCamera. @@ -4516,21 +4748,22 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockAnalyzer(), - newDeviceOrientationManager: ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getDefaultDisplayRotation()).thenAnswer((_) async { - return defaultTargetRotation; - }); - return manager; - }, + newDeviceOrientationManager: + ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getDefaultDisplayRotation()).thenAnswer((_) async { + return defaultTargetRotation; + }); + return manager; + }, ); when( @@ -4666,28 +4899,28 @@ void main() { BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) => - cameraControl == mockCameraControl - ? mockCamera2CameraControl - : Camera2CameraControl.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ), - newCaptureRequestOptions: ({ - required Map options, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCaptureRequestOptions mockCaptureRequestOptions = - MockCaptureRequestOptions(); - options.forEach((CaptureRequestKey key, Object? value) { - when( - mockCaptureRequestOptions.getCaptureRequestOption(key), - ).thenAnswer((_) async => value); - }); - return mockCaptureRequestOptions; - }, + }) => cameraControl == mockCameraControl + ? mockCamera2CameraControl + : Camera2CameraControl.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ), + newCaptureRequestOptions: + ({ + required Map options, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCaptureRequestOptions mockCaptureRequestOptions = + MockCaptureRequestOptions(); + options.forEach((CaptureRequestKey key, Object? value) { + when( + mockCaptureRequestOptions.getCaptureRequestOption(key), + ).thenAnswer((_) async => value); + }); + return mockCaptureRequestOptions; + }, controlAELockCaptureRequest: () => controlAELockKey, ); @@ -4753,18 +4986,19 @@ void main() { MeteringMode? actionBuilderMeteringMode; MeteringPoint? actionBuilderMeteringPoint; camera.proxy = getProxyForExposureAndFocus( - withModeFocusMeteringActionBuilder: ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + withModeFocusMeteringActionBuilder: + ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify nothing happens if no current focus and metering action has been @@ -4874,37 +5108,39 @@ void main() { meteringPointsAwb: const [], isAutoCancelEnabled: false, pigeon_instanceManager: testInstanceManager, - ), - ); - camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(exposurePointX, exposurePointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + ), + ); + camera.proxy = getProxyForExposureAndFocus( + newDisplayOrientedMeteringPointFactory: + ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(exposurePointX, exposurePointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: + ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify current auto-exposure metering point is removed if previously set. @@ -5016,34 +5252,36 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(exposurePointX, exposurePointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: + ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(exposurePointX, exposurePointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: + ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); await camera.setExposurePoint(cameraId, exposurePoint); @@ -5293,18 +5531,19 @@ void main() { MeteringMode? actionBuilderMeteringMode; MeteringPoint? actionBuilderMeteringPoint; camera.proxy = getProxyForExposureAndFocus( - withModeFocusMeteringActionBuilder: ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + withModeFocusMeteringActionBuilder: + ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify nothing happens if no current focus and metering action has been @@ -5417,34 +5656,36 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(focusPointX, focusPointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: + ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(focusPointX, focusPointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: + ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify current auto-exposure metering point is removed if previously set. @@ -5549,34 +5790,36 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(focusPointX, focusPointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: + ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(focusPointX, focusPointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: + ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); await camera.setFocusPoint(cameraId, focusPoint); @@ -5714,39 +5957,40 @@ void main() { camera.proxy = getProxyForSettingFocusandExposurePoints( mockCameraControl, mockCamera2CameraControl, - newDisplayOrientedMeteringPointFactory: ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(exposurePointX, exposurePointY), - ).thenAnswer((_) async { - final MeteringPoint createdMeteringPoint = - MeteringPoint.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ); - createdMeteringPoints.add(createdMeteringPoint); - return createdMeteringPoint; - }); - when(mockFactory.createPointWithSize(0.5, 0.5, 1)).thenAnswer(( - _, - ) async { - final MeteringPoint createdMeteringPoint = - MeteringPoint.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ); - createdMeteringPoints.add(createdMeteringPoint); - return createdMeteringPoint; - }); - return mockFactory; - }, + newDisplayOrientedMeteringPointFactory: + ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(exposurePointX, exposurePointY), + ).thenAnswer((_) async { + final MeteringPoint createdMeteringPoint = + MeteringPoint.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ); + createdMeteringPoints.add(createdMeteringPoint); + return createdMeteringPoint; + }); + when(mockFactory.createPointWithSize(0.5, 0.5, 1)).thenAnswer(( + _, + ) async { + final MeteringPoint createdMeteringPoint = + MeteringPoint.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ); + createdMeteringPoints.add(createdMeteringPoint); + return createdMeteringPoint; + }); + return mockFactory; + }, ); // Make setting focus and metering action successful for test. @@ -6393,20 +6637,21 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockAnalyzer(), - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); when( @@ -6465,20 +6710,21 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6487,38 +6733,41 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6602,60 +6851,64 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) => mockCamera2CameraInfo, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6739,20 +6992,21 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6761,38 +7015,41 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6881,34 +7138,36 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6917,38 +7176,41 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -7041,34 +7303,36 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -7077,38 +7341,41 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -7193,34 +7460,36 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newAnalyzer: ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: + ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -7229,38 +7498,41 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) + onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: + ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart index ad9b05fbac0..4a2df856f15 100644 --- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart +++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.mocks.dart @@ -2074,16 +2074,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i2.CameraSelector Function() get defaultBackCameraCameraSelector => (super.noSuchMethod( Invocation.getter(#defaultBackCameraCameraSelector), - returnValue: - () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultBackCameraCameraSelector), - ), - returnValueForMissingStub: - () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultBackCameraCameraSelector), - ), + returnValue: () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultBackCameraCameraSelector), + ), + returnValueForMissingStub: () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultBackCameraCameraSelector), + ), ) as _i2.CameraSelector Function()); @@ -2091,16 +2089,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i2.CameraSelector Function() get defaultFrontCameraCameraSelector => (super.noSuchMethod( Invocation.getter(#defaultFrontCameraCameraSelector), - returnValue: - () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultFrontCameraCameraSelector), - ), - returnValueForMissingStub: - () => _FakeCameraSelector_14( - this, - Invocation.getter(#defaultFrontCameraCameraSelector), - ), + returnValue: () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultFrontCameraCameraSelector), + ), + returnValueForMissingStub: () => _FakeCameraSelector_14( + this, + Invocation.getter(#defaultFrontCameraCameraSelector), + ), ) as _i2.CameraSelector Function()); @@ -2109,20 +2105,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { get highestAvailableStrategyResolutionStrategy => (super.noSuchMethod( Invocation.getter(#highestAvailableStrategyResolutionStrategy), - returnValue: - () => _FakeResolutionStrategy_24( - this, - Invocation.getter( - #highestAvailableStrategyResolutionStrategy, - ), - ), - returnValueForMissingStub: - () => _FakeResolutionStrategy_24( - this, - Invocation.getter( - #highestAvailableStrategyResolutionStrategy, - ), - ), + returnValue: () => _FakeResolutionStrategy_24( + this, + Invocation.getter(#highestAvailableStrategyResolutionStrategy), + ), + returnValueForMissingStub: () => _FakeResolutionStrategy_24( + this, + Invocation.getter(#highestAvailableStrategyResolutionStrategy), + ), ) as _i2.ResolutionStrategy Function()); @@ -2133,20 +2123,18 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { Invocation.getter( #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, ), - returnValue: - () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, - ), - ), - returnValueForMissingStub: - () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, - ), - ), + returnValue: () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, + ), + ), + returnValueForMissingStub: () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_16_9FallbackAutoStrategyAspectRatioStrategy, + ), + ), ) as _i2.AspectRatioStrategy Function()); @@ -2157,20 +2145,18 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { Invocation.getter( #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, ), - returnValue: - () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, - ), - ), - returnValueForMissingStub: - () => _FakeAspectRatioStrategy_2( - this, - Invocation.getter( - #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, - ), - ), + returnValue: () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, + ), + ), + returnValueForMissingStub: () => _FakeAspectRatioStrategy_2( + this, + Invocation.getter( + #ratio_4_3FallbackAutoStrategyAspectRatioStrategy, + ), + ), ) as _i2.AspectRatioStrategy Function()); @@ -2178,16 +2164,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { _i2.CaptureRequestKey Function() get controlAELockCaptureRequest => (super.noSuchMethod( Invocation.getter(#controlAELockCaptureRequest), - returnValue: - () => _FakeCaptureRequestKey_34( - this, - Invocation.getter(#controlAELockCaptureRequest), - ), - returnValueForMissingStub: - () => _FakeCaptureRequestKey_34( - this, - Invocation.getter(#controlAELockCaptureRequest), - ), + returnValue: () => _FakeCaptureRequestKey_34( + this, + Invocation.getter(#controlAELockCaptureRequest), + ), + returnValueForMissingStub: () => _FakeCaptureRequestKey_34( + this, + Invocation.getter(#controlAELockCaptureRequest), + ), ) as _i2.CaptureRequestKey Function()); @@ -2196,20 +2180,18 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { get infoSupportedHardwareLevelCameraCharacteristics => (super.noSuchMethod( Invocation.getter(#infoSupportedHardwareLevelCameraCharacteristics), - returnValue: - () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter( - #infoSupportedHardwareLevelCameraCharacteristics, - ), - ), - returnValueForMissingStub: - () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter( - #infoSupportedHardwareLevelCameraCharacteristics, - ), - ), + returnValue: () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter( + #infoSupportedHardwareLevelCameraCharacteristics, + ), + ), + returnValueForMissingStub: () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter( + #infoSupportedHardwareLevelCameraCharacteristics, + ), + ), ) as _i2.CameraCharacteristicsKey Function()); @@ -2218,16 +2200,14 @@ class MockCameraXProxy extends _i1.Mock implements _i7.CameraXProxy { get sensorOrientationCameraCharacteristics => (super.noSuchMethod( Invocation.getter(#sensorOrientationCameraCharacteristics), - returnValue: - () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter(#sensorOrientationCameraCharacteristics), - ), - returnValueForMissingStub: - () => _FakeCameraCharacteristicsKey_9( - this, - Invocation.getter(#sensorOrientationCameraCharacteristics), - ), + returnValue: () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter(#sensorOrientationCameraCharacteristics), + ), + returnValueForMissingStub: () => _FakeCameraCharacteristicsKey_9( + this, + Invocation.getter(#sensorOrientationCameraCharacteristics), + ), ) as _i2.CameraCharacteristicsKey Function()); diff --git a/packages/camera/camera_android_camerax/test/preview_rotation_test.dart b/packages/camera/camera_android_camerax/test/preview_rotation_test.dart index e427b971c15..6a9eff3d11d 100644 --- a/packages/camera/camera_android_camerax/test/preview_rotation_test.dart +++ b/packages/camera/camera_android_camerax/test/preview_rotation_test.dart @@ -107,20 +107,21 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, }) async => mockProcessCameraProvider, newCameraSelector: createCameraSelector, - newPreview: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockPreview preview = MockPreview(); - when( - preview.surfaceProducerHandlesCropAndRotation(), - ).thenAnswer((_) async => handlesCropAndRotation); - return preview; - }, + newPreview: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockPreview preview = MockPreview(); + when( + preview.surfaceProducerHandlesCropAndRotation(), + ).thenAnswer((_) async => handlesCropAndRotation); + return preview; + }, newImageCapture: ({ int? targetRotation, @@ -141,110 +142,121 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockRecorder(), - withOutputVideoCapture: ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockVideoCapture(); - }, - newImageAnalysis: ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockImageAnalysis(); - }, - newResolutionStrategy: ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionStrategy(); - }, - newResolutionSelector: ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionSelector(); - }, - lowerQualityOrHigherThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, - lowerQualityThanFallbackStrategy: ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, - fromCamera2CameraInfo: ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo camera2cameraInfo = MockCamera2CameraInfo(); - when( - camera2cameraInfo.getCameraCharacteristic(any), - ).thenAnswer((_) async => 90); - return camera2cameraInfo; - }, - fromQualitySelector: ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockQualitySelector(); - }, - newObserver: ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, + withOutputVideoCapture: + ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockVideoCapture(); + }, + newImageAnalysis: + ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockImageAnalysis(); + }, + newResolutionStrategy: + ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionStrategy(); + }, + newResolutionSelector: + ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionSelector(); + }, + lowerQualityOrHigherThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, + lowerQualityThanFallbackStrategy: + ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, + fromCamera2CameraInfo: + ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo camera2cameraInfo = + MockCamera2CameraInfo(); + when( + camera2cameraInfo.getCameraCharacteristic(any), + ).thenAnswer((_) async => 90); + return camera2cameraInfo; + }, + fromQualitySelector: + ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockQualitySelector(); + }, + newObserver: + ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: + ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, newDeviceOrientationManager: ({ required void Function(DeviceOrientationManager, String) @@ -254,33 +266,35 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => deviceOrientationManager, - newAspectRatioStrategy: ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockAspectRatioStrategy mockAspectRatioStrategy = - MockAspectRatioStrategy(); - when( - mockAspectRatioStrategy.getFallbackRule(), - ).thenAnswer((_) async => fallbackRule); - when( - mockAspectRatioStrategy.getPreferredAspectRatio(), - ).thenAnswer((_) async => preferredAspectRatio); - return mockAspectRatioStrategy; - }, - createWithOnePreferredSizeResolutionFilter: ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionFilter(); - }, + newAspectRatioStrategy: + ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockAspectRatioStrategy mockAspectRatioStrategy = + MockAspectRatioStrategy(); + when( + mockAspectRatioStrategy.getFallbackRule(), + ).thenAnswer((_) async => fallbackRule); + when( + mockAspectRatioStrategy.getPreferredAspectRatio(), + ).thenAnswer((_) async => preferredAspectRatio); + return mockAspectRatioStrategy; + }, + createWithOnePreferredSizeResolutionFilter: + ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionFilter(); + }, ); /// Returns CameraXProxy used to mock all calls to native Android in @@ -500,16 +514,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation0), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation0), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -554,16 +567,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation90), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation90), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -606,16 +618,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation180), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation180), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -658,16 +669,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation270), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation270), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -751,16 +761,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(DeviceOrientation.portraitUp), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.portraitUp), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -803,17 +812,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.landscapeLeft, - ), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeLeft), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -856,16 +863,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => - _serializeDeviceOrientation(DeviceOrientation.portraitDown), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.portraitDown), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -908,17 +914,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProvider, createCameraSelector: fakeCreateCameraSelector, handlesCropAndRotation: true, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.landscapeRight, - ), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeRight), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1006,8 +1010,8 @@ void main() { ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1049,10 +1053,9 @@ void main() { final RotatedBox rotatedBox = tester.widget( find.byType(RotatedBox), ); - final int clockwiseQuarterTurns = - rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect(rotatedBox.child, isA()); expect((rotatedBox.child! as Texture).textureId, cameraId); expect( @@ -1103,13 +1106,13 @@ void main() { getUiOrientation: /* initial device orientation is irrelevant */ () async => _serializeDeviceOrientation(DeviceOrientation.portraitUp), - getDefaultDisplayRotation: - () => Future.value(testInitialDefaultDisplayRotation), + getDefaultDisplayRotation: () => + Future.value(testInitialDefaultDisplayRotation), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1147,10 +1150,9 @@ void main() { final RotatedBox rotatedBox = tester.widget( find.byType(RotatedBox), ); - final int clockwiseQuarterTurns = - rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect(rotatedBox.child, isA()); expect((rotatedBox.child! as Texture).textureId, cameraId); expect( @@ -1200,8 +1202,8 @@ void main() { mockCameraSelector: mockFrontCameraSelector, sensorRotationDegrees: 270, ); - proxyGetDefaultDisplayRotation = - () => Future.value(Surface.rotation0); + proxyGetDefaultDisplayRotation = () => + Future.value(Surface.rotation0); // Media settings to create camera; irrelevant for test. testMediaSettings = const MediaSettings(); @@ -1218,14 +1220,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(DeviceOrientation.portraitUp), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.portraitUp), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1278,15 +1279,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.landscapeRight, - ), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeRight), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1339,15 +1338,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.portraitDown, - ), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.portraitDown), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1400,15 +1397,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => _serializeDeviceOrientation( - DeviceOrientation.landscapeLeft, - ), + getUiOrientation: () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeLeft), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1487,9 +1482,8 @@ void main() { mockCameraSelector: mockFrontCameraSelector, sensorRotationDegrees: 270, ); - proxyGetUiOrientation = - () async => - _serializeDeviceOrientation(DeviceOrientation.landscapeLeft); + proxyGetUiOrientation = () async => + _serializeDeviceOrientation(DeviceOrientation.landscapeLeft); // Media settings to create camera; irrelevant for test. testMediaSettings = const MediaSettings(); @@ -1504,15 +1498,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: - () => Future.value(Surface.rotation0), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation0), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1563,15 +1557,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: - () => Future.value(Surface.rotation90), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation90), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1626,15 +1620,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: - () => Future.value(Surface.rotation180), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation180), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1687,15 +1681,15 @@ void main() { mockProcessCameraProvider: mockProcessCameraProviderForFrontCamera, createCameraSelector: proxyCreateCameraSelectorForFrontCamera, - getDefaultDisplayRotation: - () => Future.value(Surface.rotation270), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation270), handlesCropAndRotation: false, getUiOrientation: proxyGetUiOrientation, ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1794,8 +1788,8 @@ void main() { ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1851,10 +1845,9 @@ void main() { checkXAxisIsMirrored(transformedPreviewMatrix); expect((transformedPreview.child! as Texture).textureId, cameraId); - final int clockwiseQuarterTurns = - rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect( clockwiseQuarterTurns, expectedQuarterTurns, @@ -1905,13 +1898,13 @@ void main() { getUiOrientation: /* initial device orientation irrelevant for test */ () async => _serializeDeviceOrientation(DeviceOrientation.landscapeLeft), - getDefaultDisplayRotation: - () => Future.value(Surface.rotation90), + getDefaultDisplayRotation: () => + Future.value(Surface.rotation90), ); // Get and create test front camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -1968,10 +1961,9 @@ void main() { checkYAxisIsMirrored(transformedPreviewMatrix); } expect((transformedPreview.child! as Texture).textureId, cameraId); - final int clockwiseQuarterTurns = - rotatedBox.quarterTurns < 0 - ? rotatedBox.quarterTurns + 4 - : rotatedBox.quarterTurns; + final int clockwiseQuarterTurns = rotatedBox.quarterTurns < 0 + ? rotatedBox.quarterTurns + 4 + : rotatedBox.quarterTurns; expect( clockwiseQuarterTurns, expectedQuarterTurns, @@ -2015,8 +2007,8 @@ void main() { mockBackCameraSelector = MockCameraSelector(); proxyCreateCameraSelectorForBackCamera = createCameraSelectorForBackCamera(mockBackCameraSelector); - proxyGetDefaultDisplayRotation = - () => Future.value(Surface.rotation270); + proxyGetDefaultDisplayRotation = () => + Future.value(Surface.rotation270); testMediaSettings = const MediaSettings(); }); @@ -2040,14 +2032,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForBackCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test back camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -2099,14 +2090,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForBackCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test back camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -2161,8 +2151,8 @@ void main() { testSensorOrientation = 90; // Create mock for seting initial default display rotation to 180 degrees. - proxyGetDefaultDisplayRotation = - () => Future.value(Surface.rotation90); + proxyGetDefaultDisplayRotation = () => + Future.value(Surface.rotation90); // Media settings to create camera; irrelevant for test. testMediaSettings = const MediaSettings(); @@ -2195,14 +2185,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, @@ -2274,14 +2263,13 @@ void main() { createCameraSelector: proxyCreateCameraSelectorForFrontCamera, getDefaultDisplayRotation: proxyGetDefaultDisplayRotation, handlesCropAndRotation: false, - getUiOrientation: - () async => - _serializeDeviceOrientation(testInitialDeviceOrientation), + getUiOrientation: () async => + _serializeDeviceOrientation(testInitialDeviceOrientation), ); // Get and create test camera. - final List availableCameras = - await camera.availableCameras(); + final List availableCameras = await camera + .availableCameras(); expect(availableCameras.length, 1); await camera.createCameraWithSettings( availableCameras.first, From 1f857bd22195a48317e481c2ffee48eeef9edf81 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Thu, 29 May 2025 09:46:09 -0700 Subject: [PATCH 44/53] logging for debugging --- .../flutter/plugins/camerax/PreviewProxyApi.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java index 48d94b65e10..9bb7070a4e9 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java @@ -16,6 +16,8 @@ import java.util.Map; import java.util.concurrent.Executors; +import android.util.Log; + /** * ProxyApi implementation for {@link Preview}. This class may handle instantiating native object * instances that are attached to a Dart instance or handle method calls on the associated native @@ -95,6 +97,9 @@ public void setTargetRotation(Preview pigeonInstance, long rotation) { pigeonInstance.setTargetRotation((int) rotation); } + int surfaceRequestNum = 0; + int resultNum = 0; + @NonNull Preview.SurfaceProvider createSurfaceProvider( @NonNull TextureRegistry.SurfaceProducer surfaceProducer, @@ -119,6 +124,7 @@ public void onSurfaceCleanup() { }); // Provide surface. + surfaceProducer.invalidateSurface(); surfaceProducer.setSize( request.getResolution().getWidth(), request.getResolution().getHeight()); Surface flutterSurface = surfaceProducer.getForcedNewSurface(); @@ -126,6 +132,11 @@ public void onSurfaceCleanup() { flutterSurface, Executors.newSingleThreadExecutor(), (result) -> { + Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); + Log.e("CAMILLE RESULT #:", Integer.toString(resultNum)); + Log.e("CAMILLE SURFACE HASHCODE:", Integer.toString(flutterSurface.hashCode())); + Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); + resultNum++; // See // https://developer.android.com/reference/androidx/camera/core/SurfaceRequest.Result // for documentation. @@ -144,6 +155,11 @@ public void onSurfaceCleanup() { systemServicesManager.onCameraError(getProvideSurfaceErrorDescription(resultCode)); } }); + Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); + Log.e("CAMILLE SURFACE REQUEST #:", Integer.toString(surfaceRequestNum)); + Log.e("CAMILLE SURFACE HASHCODE:", Integer.toString(flutterSurface.hashCode())); + Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); + surfaceRequestNum++; }; } From 7cc197e888ecd7beddc39b3146b9652efcc5f9f9 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Thu, 29 May 2025 10:32:45 -0700 Subject: [PATCH 45/53] debugging logging pt 2 --- .../plugins/camerax/ProcessCameraProviderProxyApi.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java index 05bf25209e4..5546dcb9b35 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java @@ -19,6 +19,8 @@ import kotlin.Unit; import kotlin.jvm.functions.Function1; +import android.util.Log; + /** * ProxyApi implementation for {@link ProcessCameraProvider}. This class may handle instantiating * native object instances that are attached to a Dart instance or handle method calls on the @@ -65,6 +67,7 @@ public Camera bindToLifecycle( @NonNull ProcessCameraProvider pigeonInstance, @NonNull CameraSelector cameraSelector, @NonNull List useCases) { + Log.e("CAMILLE"," BIND CALLED!!!!!!!!!!!!!!!****************************"); final LifecycleOwner lifecycleOwner = getPigeonRegistrar().getLifecycleOwner(); if (lifecycleOwner != null) { return pigeonInstance.bindToLifecycle( @@ -83,6 +86,7 @@ public boolean isBound(ProcessCameraProvider pigeonInstance, @NonNull UseCase us @Override public void unbind( ProcessCameraProvider pigeonInstance, @NonNull List useCases) { + Log.e("CAMILLE"," UNBIND CALLED!!!!!!!!!!!!!!!****************************"); pigeonInstance.unbind(useCases.toArray(new UseCase[0])); } From f19e7d36cdf99ad7b784793e4c9df264b1f2354a Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 2 Jun 2025 15:27:54 -0700 Subject: [PATCH 46/53] remove logs and add comment --- .../plugins/camerax/PreviewProxyApi.java | 18 +++--------------- .../camerax/ProcessCameraProviderProxyApi.java | 4 ---- 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java index 9bb7070a4e9..737449d7ddf 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java @@ -16,8 +16,6 @@ import java.util.Map; import java.util.concurrent.Executors; -import android.util.Log; - /** * ProxyApi implementation for {@link Preview}. This class may handle instantiating native object * instances that are attached to a Dart instance or handle method calls on the associated native @@ -97,9 +95,6 @@ public void setTargetRotation(Preview pigeonInstance, long rotation) { pigeonInstance.setTargetRotation((int) rotation); } - int surfaceRequestNum = 0; - int resultNum = 0; - @NonNull Preview.SurfaceProvider createSurfaceProvider( @NonNull TextureRegistry.SurfaceProducer surfaceProducer, @@ -132,11 +127,9 @@ public void onSurfaceCleanup() { flutterSurface, Executors.newSingleThreadExecutor(), (result) -> { - Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); - Log.e("CAMILLE RESULT #:", Integer.toString(resultNum)); - Log.e("CAMILLE SURFACE HASHCODE:", Integer.toString(flutterSurface.hashCode())); - Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); - resultNum++; + // RACE CONDITION EXPLANATION: Sometimes, this callback is called after the next SurfaceRequest comes in, + // making a call on line 123 to get a `Surface`, which is the same `Surface` that was (potentially) + // successfully used and should not be re-used. // See // https://developer.android.com/reference/androidx/camera/core/SurfaceRequest.Result // for documentation. @@ -155,11 +148,6 @@ public void onSurfaceCleanup() { systemServicesManager.onCameraError(getProvideSurfaceErrorDescription(resultCode)); } }); - Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); - Log.e("CAMILLE SURFACE REQUEST #:", Integer.toString(surfaceRequestNum)); - Log.e("CAMILLE SURFACE HASHCODE:", Integer.toString(flutterSurface.hashCode())); - Log.e("CAMILLE RESULT #:", "--------------------------------------------------------------"); - surfaceRequestNum++; }; } diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java index 5546dcb9b35..05bf25209e4 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderProxyApi.java @@ -19,8 +19,6 @@ import kotlin.Unit; import kotlin.jvm.functions.Function1; -import android.util.Log; - /** * ProxyApi implementation for {@link ProcessCameraProvider}. This class may handle instantiating * native object instances that are attached to a Dart instance or handle method calls on the @@ -67,7 +65,6 @@ public Camera bindToLifecycle( @NonNull ProcessCameraProvider pigeonInstance, @NonNull CameraSelector cameraSelector, @NonNull List useCases) { - Log.e("CAMILLE"," BIND CALLED!!!!!!!!!!!!!!!****************************"); final LifecycleOwner lifecycleOwner = getPigeonRegistrar().getLifecycleOwner(); if (lifecycleOwner != null) { return pigeonInstance.bindToLifecycle( @@ -86,7 +83,6 @@ public boolean isBound(ProcessCameraProvider pigeonInstance, @NonNull UseCase us @Override public void unbind( ProcessCameraProvider pigeonInstance, @NonNull List useCases) { - Log.e("CAMILLE"," UNBIND CALLED!!!!!!!!!!!!!!!****************************"); pigeonInstance.unbind(useCases.toArray(new UseCase[0])); } From e6d775180231088d4d3b4bb500592cfc6a3d108f Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 16 Jun 2025 13:47:37 -0700 Subject: [PATCH 47/53] update wip --- .../java/io/flutter/plugins/camerax/PreviewProxyApi.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java index 737449d7ddf..89105708138 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java @@ -119,7 +119,6 @@ public void onSurfaceCleanup() { }); // Provide surface. - surfaceProducer.invalidateSurface(); surfaceProducer.setSize( request.getResolution().getWidth(), request.getResolution().getHeight()); Surface flutterSurface = surfaceProducer.getForcedNewSurface(); @@ -127,9 +126,11 @@ public void onSurfaceCleanup() { flutterSurface, Executors.newSingleThreadExecutor(), (result) -> { - // RACE CONDITION EXPLANATION: Sometimes, this callback is called after the next SurfaceRequest comes in, - // making a call on line 123 to get a `Surface`, which is the same `Surface` that was (potentially) + // RACE CONDITION EXPLANATION for https://github.com/flutter/flutter/pull/169899: + // Sometimes, this callback is called after the next SurfaceRequest comes in, + // making a call on line 122 to get a `Surface`, which is the same `Surface` that was (potentially) // successfully used and should not be re-used. + // // See // https://developer.android.com/reference/androidx/camera/core/SurfaceRequest.Result // for documentation. From 5af21003570c376be861ea9bf6b921cb1d051019 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Fri, 20 Jun 2025 09:24:43 -0700 Subject: [PATCH 48/53] update pr based on engine changes + add tests --- .../java/io/flutter/plugins/camerax/PreviewProxyApi.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java index 89105708138..48d94b65e10 100644 --- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java +++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/PreviewProxyApi.java @@ -126,11 +126,6 @@ public void onSurfaceCleanup() { flutterSurface, Executors.newSingleThreadExecutor(), (result) -> { - // RACE CONDITION EXPLANATION for https://github.com/flutter/flutter/pull/169899: - // Sometimes, this callback is called after the next SurfaceRequest comes in, - // making a call on line 122 to get a `Surface`, which is the same `Surface` that was (potentially) - // successfully used and should not be re-used. - // // See // https://developer.android.com/reference/androidx/camera/core/SurfaceRequest.Result // for documentation. From 711cbaec460bea1b3f42f73b69d8f188fbf19756 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Fri, 20 Jun 2025 09:49:48 -0700 Subject: [PATCH 49/53] bump version --- packages/camera/camera_android_camerax/pubspec.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml index fe97ed64e45..fea407b822d 100644 --- a/packages/camera/camera_android_camerax/pubspec.yaml +++ b/packages/camera/camera_android_camerax/pubspec.yaml @@ -2,11 +2,7 @@ name: camera_android_camerax description: Android implementation of the camera plugin using the CameraX library. repository: https://github.com/flutter/packages/tree/main/packages/camera/camera_android_camerax issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22 -<<<<<<< HEAD -version: 0.6.19+1 -======= version: 0.6.20 ->>>>>>> e03328e14 (format for real) environment: sdk: ^3.8.1 From 3fddb2b6a9af747c3da8fe6f23665e7ecee48c5f Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 28 Jul 2025 10:01:24 -0700 Subject: [PATCH 50/53] Update min flutter version --- packages/camera/camera_android_camerax/pubspec.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml index fea407b822d..ffa5b97e301 100644 --- a/packages/camera/camera_android_camerax/pubspec.yaml +++ b/packages/camera/camera_android_camerax/pubspec.yaml @@ -5,7 +5,11 @@ issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+ version: 0.6.20 environment: +<<<<<<< HEAD sdk: ^3.8.1 +======= + sdk: ^3.7.0 +>>>>>>> b77d72747 (Update min flutter version) flutter: ">=3.32.8" flutter: From 36c367c17ab9c694efff8bf6204a7fec839d018d Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Mon, 28 Jul 2025 11:28:19 -0700 Subject: [PATCH 51/53] bump sdk version --- packages/camera/camera_android_camerax/pubspec.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml index ffa5b97e301..6553b6eba49 100644 --- a/packages/camera/camera_android_camerax/pubspec.yaml +++ b/packages/camera/camera_android_camerax/pubspec.yaml @@ -5,11 +5,15 @@ issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+ version: 0.6.20 environment: +<<<<<<< HEAD <<<<<<< HEAD sdk: ^3.8.1 ======= sdk: ^3.7.0 >>>>>>> b77d72747 (Update min flutter version) +======= + sdk: ^3.8.1 +>>>>>>> 25f5d1162 (bump sdk version) flutter: ">=3.32.8" flutter: From 49877ce14d7cd19e0786aef24794a23c173cd75e Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Wed, 30 Jul 2025 14:03:12 -0700 Subject: [PATCH 52/53] idk --- .../camera_android_camerax/pubspec.yaml | 8 - .../test/android_camera_camerax_test.dart | 138 ------------------ 2 files changed, 146 deletions(-) diff --git a/packages/camera/camera_android_camerax/pubspec.yaml b/packages/camera/camera_android_camerax/pubspec.yaml index 6553b6eba49..fea407b822d 100644 --- a/packages/camera/camera_android_camerax/pubspec.yaml +++ b/packages/camera/camera_android_camerax/pubspec.yaml @@ -5,15 +5,7 @@ issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+ version: 0.6.20 environment: -<<<<<<< HEAD -<<<<<<< HEAD sdk: ^3.8.1 -======= - sdk: ^3.7.0 ->>>>>>> b77d72747 (Update min flutter version) -======= - sdk: ^3.8.1 ->>>>>>> 25f5d1162 (bump sdk version) flutter: ">=3.32.8" flutter: diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart index 49a31252e7c..c80abdfada2 100644 --- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart +++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart @@ -159,7 +159,6 @@ void main() { final ResolutionStrategy highestAvailableStrategyResolutionStrategy = MockResolutionStrategy(); proxy = CameraXProxy( -<<<<<<< HEAD getInstanceProcessCameraProvider: ({ // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, @@ -184,33 +183,6 @@ void main() { case LensFacing.unknown: case null: } -======= - getInstanceProcessCameraProvider: - ({ - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) async { - return mockProcessCameraProvider; - }, - newCameraSelector: - ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return MockCameraSelector(); - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } ->>>>>>> e03328e14 (format for real) return MockCameraSelector(); }, @@ -716,7 +688,6 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, }) => Future.value(mockProcessCameraProvider), -<<<<<<< HEAD newCameraSelector: ({ LensFacing? requireLensFacing, CameraInfo? cameraInfoForFilter, @@ -733,24 +704,6 @@ void main() { case LensFacing.unknown: case null: } -======= - newCameraSelector: - ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return mockFrontCameraSelector; - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } ->>>>>>> e03328e14 (format for real) return mockBackCameraSelector; }, @@ -841,7 +794,6 @@ void main() { bool startedListeningForDeviceOrientationChanges = false; camera.proxy = CameraXProxy( -<<<<<<< HEAD getInstanceProcessCameraProvider: ({ // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, @@ -866,33 +818,6 @@ void main() { case LensFacing.unknown: case null: } -======= - getInstanceProcessCameraProvider: - ({ - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) async { - return mockProcessCameraProvider; - }, - newCameraSelector: - ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return MockCameraSelector(); - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } ->>>>>>> e03328e14 (format for real) return mockBackCameraSelector; }, @@ -1201,7 +1126,6 @@ void main() { // Tell plugin to create mock/detached objects and stub method calls for the // testing of createCamera. camera.proxy = CameraXProxy( -<<<<<<< HEAD getInstanceProcessCameraProvider: ({ // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, @@ -1226,33 +1150,6 @@ void main() { case LensFacing.unknown: case null: } -======= - getInstanceProcessCameraProvider: - ({ - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) async { - return mockProcessCameraProvider; - }, - newCameraSelector: - ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return MockCameraSelector(); - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } ->>>>>>> e03328e14 (format for real) return mockBackCameraSelector; }, @@ -2526,7 +2423,6 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => Future.value(mockProcessCameraProvider), -<<<<<<< HEAD newCameraSelector: ({ LensFacing? requireLensFacing, CameraInfo? cameraInfoForFilter, @@ -2542,23 +2438,6 @@ void main() { return mockBackCameraSelector; } }, -======= - newCameraSelector: - ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return mockFrontCameraSelector; - case _: - return mockBackCameraSelector; - } - }, ->>>>>>> e03328e14 (format for real) newPreview: ({ int? targetRotation, @@ -2570,23 +2449,6 @@ void main() { }) => mockPreview, newImageCapture: ({ - int? targetRotation, - CameraXFlashMode? flashMode, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) => mockImageCapture, - newRecorder: - ({ - int? aspectRatio, - int? targetVideoEncodingBitRate, - QualitySelector? qualitySelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, }) => MockRecorder(), withOutputVideoCapture: ({ From 126f02df51d4b5e73e36838f5599486c35c5f460 Mon Sep 17 00:00:00 2001 From: Camille Simon Date: Wed, 30 Jul 2025 14:04:40 -0700 Subject: [PATCH 53/53] undo changes to test --- .../test/android_camera_camerax_test.dart | 3615 ++++++++--------- 1 file changed, 1739 insertions(+), 1876 deletions(-) diff --git a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart index 2d34b631af9..e9b1bb7598c 100644 --- a/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart +++ b/packages/camera/camera_android_camerax/test/android_camera_camerax_test.dart @@ -159,34 +159,33 @@ void main() { final ResolutionStrategy highestAvailableStrategyResolutionStrategy = MockResolutionStrategy(); proxy = CameraXProxy( - getInstanceProcessCameraProvider: - ({ - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) async { - return mockProcessCameraProvider; - }, - newCameraSelector: - ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return MockCameraSelector(); - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } - + getInstanceProcessCameraProvider: ({ + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) async { + return mockProcessCameraProvider; + }, + newCameraSelector: ({ + LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: return MockCameraSelector(); - }, + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } + + return MockCameraSelector(); + }, newPreview: newPreview ?? ({ @@ -204,107 +203,101 @@ void main() { when(mockPreview.resolutionSelector).thenReturn(resolutionSelector); return mockPreview; }, - newImageCapture: - ({ - int? targetRotation, - CameraXFlashMode? flashMode, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockImageCapture mockImageCapture = MockImageCapture(); - when( - mockImageCapture.resolutionSelector, - ).thenReturn(resolutionSelector); - return mockImageCapture; - }, - newRecorder: - ({ - int? aspectRatio, - int? targetVideoEncodingBitRate, - QualitySelector? qualitySelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockRecorder mockRecorder = MockRecorder(); - when( - mockRecorder.getQualitySelector(), - ).thenAnswer((_) async => qualitySelector ?? MockQualitySelector()); - return mockRecorder; - }, - withOutputVideoCapture: - ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockVideoCapture(); - }, - newImageAnalysis: - ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockImageAnalysis mockImageAnalysis = MockImageAnalysis(); - when( - mockImageAnalysis.resolutionSelector, - ).thenReturn(resolutionSelector); - return mockImageAnalysis; - }, - newResolutionStrategy: - ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockResolutionStrategy resolutionStrategy = - MockResolutionStrategy(); - when( - resolutionStrategy.getBoundSize(), - ).thenAnswer((_) async => boundSize); - when( - resolutionStrategy.getFallbackRule(), - ).thenAnswer((_) async => fallbackRule); - return resolutionStrategy; - }, - newResolutionSelector: - ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockResolutionSelector mockResolutionSelector = - MockResolutionSelector(); - when(mockResolutionSelector.getAspectRatioStrategy()).thenAnswer( - (_) async => - aspectRatioStrategy ?? - proxy.ratio_4_3FallbackAutoStrategyAspectRatioStrategy(), - ); - when( - mockResolutionSelector.resolutionStrategy, - ).thenReturn(resolutionStrategy); - when( - mockResolutionSelector.resolutionFilter, - ).thenReturn(resolutionFilter); - return mockResolutionSelector; - }, + newImageCapture: ({ + int? targetRotation, + CameraXFlashMode? flashMode, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockImageCapture mockImageCapture = MockImageCapture(); + when( + mockImageCapture.resolutionSelector, + ).thenReturn(resolutionSelector); + return mockImageCapture; + }, + newRecorder: ({ + int? aspectRatio, + int? targetVideoEncodingBitRate, + QualitySelector? qualitySelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockRecorder mockRecorder = MockRecorder(); + when( + mockRecorder.getQualitySelector(), + ).thenAnswer((_) async => qualitySelector ?? MockQualitySelector()); + return mockRecorder; + }, + withOutputVideoCapture: ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockVideoCapture(); + }, + newImageAnalysis: ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockImageAnalysis mockImageAnalysis = MockImageAnalysis(); + when( + mockImageAnalysis.resolutionSelector, + ).thenReturn(resolutionSelector); + return mockImageAnalysis; + }, + newResolutionStrategy: ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockResolutionStrategy resolutionStrategy = + MockResolutionStrategy(); + when( + resolutionStrategy.getBoundSize(), + ).thenAnswer((_) async => boundSize); + when( + resolutionStrategy.getFallbackRule(), + ).thenAnswer((_) async => fallbackRule); + return resolutionStrategy; + }, + newResolutionSelector: ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockResolutionSelector mockResolutionSelector = + MockResolutionSelector(); + when(mockResolutionSelector.getAspectRatioStrategy()).thenAnswer( + (_) async => + aspectRatioStrategy ?? + proxy.ratio_4_3FallbackAutoStrategyAspectRatioStrategy(), + ); + when( + mockResolutionSelector.resolutionStrategy, + ).thenReturn(resolutionStrategy); + when( + mockResolutionSelector.resolutionFilter, + ).thenReturn(resolutionFilter); + return mockResolutionSelector; + }, fromQualitySelector: fromQualitySelector ?? ({ @@ -317,66 +310,62 @@ void main() { }) { return MockQualitySelector(); }, - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, - newDeviceOrientationManager: - ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, - newAspectRatioStrategy: - ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockAspectRatioStrategy mockAspectRatioStrategy = - MockAspectRatioStrategy(); - when( - mockAspectRatioStrategy.getFallbackRule(), - ).thenAnswer((_) async => fallbackRule); - when( - mockAspectRatioStrategy.getPreferredAspectRatio(), - ).thenAnswer((_) async => preferredAspectRatio); - return mockAspectRatioStrategy; - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, + newAspectRatioStrategy: ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockAspectRatioStrategy mockAspectRatioStrategy = + MockAspectRatioStrategy(); + when( + mockAspectRatioStrategy.getFallbackRule(), + ).thenAnswer((_) async => fallbackRule); + when( + mockAspectRatioStrategy.getPreferredAspectRatio(), + ).thenAnswer((_) async => preferredAspectRatio); + return mockAspectRatioStrategy; + }, createWithOnePreferredSizeResolutionFilter: createWithOnePreferredSizeResolutionFilter ?? ({ @@ -388,38 +377,35 @@ void main() { }) { return MockResolutionFilter(); }, - fromCamera2CameraInfo: - ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo camera2cameraInfo = - MockCamera2CameraInfo(); - when( - camera2cameraInfo.getCameraCharacteristic(any), - ).thenAnswer((_) async => 90); - return camera2cameraInfo; - }, - newCameraSize: - ({ - required int width, - required int height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return CameraSize.pigeon_detached( - width: width, - height: height, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + fromCamera2CameraInfo: ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo camera2cameraInfo = MockCamera2CameraInfo(); + when( + camera2cameraInfo.getCameraCharacteristic(any), + ).thenAnswer((_) async => 90); + return camera2cameraInfo; + }, + newCameraSize: ({ + required int width, + required int height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return CameraSize.pigeon_detached( + width: width, + height: height, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, sensorOrientationCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -437,18 +423,17 @@ void main() { highestAvailableStrategyResolutionStrategy: () { return highestAvailableStrategyResolutionStrategy; }, - ratio_4_3FallbackAutoStrategyAspectRatioStrategy: () => - ratio_4_3FallbackAutoStrategyAspectRatioStrategy, - lowerQualityThanFallbackStrategy: - ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, + ratio_4_3FallbackAutoStrategyAspectRatioStrategy: + () => ratio_4_3FallbackAutoStrategyAspectRatioStrategy, + lowerQualityThanFallbackStrategy: ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, ); return proxy; @@ -618,28 +603,28 @@ void main() { BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) => cameraControl == cameraControlForComparison - ? camera2cameraControl - : Camera2CameraControl.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ); - proxy.newCaptureRequestOptions = - ({ - required Map options, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCaptureRequestOptions mockCaptureRequestOptions = - MockCaptureRequestOptions(); - options.forEach((CaptureRequestKey key, Object? value) { - when( - mockCaptureRequestOptions.getCaptureRequestOption(key), - ).thenAnswer((_) async => value); - }); - return mockCaptureRequestOptions; - }; + }) => + cameraControl == cameraControlForComparison + ? camera2cameraControl + : Camera2CameraControl.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ); + proxy.newCaptureRequestOptions = ({ + required Map options, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCaptureRequestOptions mockCaptureRequestOptions = + MockCaptureRequestOptions(); + options.forEach((CaptureRequestKey key, Object? value) { + when( + mockCaptureRequestOptions.getCaptureRequestOption(key), + ).thenAnswer((_) async => value); + }); + return mockCaptureRequestOptions; + }; final CaptureRequestKey controlAeLock = CaptureRequestKey.pigeon_detached( pigeon_instanceManager: testInstanceManager, ); @@ -689,46 +674,44 @@ void main() { PigeonInstanceManager? pigeon_instanceManager, }) => Future.value(mockProcessCameraProvider), - newCameraSelector: - ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return mockFrontCameraSelector; - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } - - return mockBackCameraSelector; - }, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, - ); + newCameraSelector: ({ + LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return mockFrontCameraSelector; + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } - // Mock calls to native platform - when(mockProcessCameraProvider.getAvailableCameraInfos()).thenAnswer( - (_) async => [mockBackCameraInfo, mockFrontCameraInfo], - ); - when( - mockBackCameraSelector.filter([mockFrontCameraInfo]), - ).thenAnswer((_) async => []); - when( + return mockBackCameraSelector; + }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, + ); + + // Mock calls to native platform + when(mockProcessCameraProvider.getAvailableCameraInfos()).thenAnswer( + (_) async => [mockBackCameraInfo, mockFrontCameraInfo], + ); + when( + mockBackCameraSelector.filter([mockFrontCameraInfo]), + ).thenAnswer((_) async => []); + when( mockBackCameraSelector.filter([mockBackCameraInfo]), ).thenAnswer((_) async => [mockBackCameraInfo]); when( @@ -740,8 +723,8 @@ void main() { when(mockBackCameraInfo.sensorRotationDegrees).thenReturn(0); when(mockFrontCameraInfo.sensorRotationDegrees).thenReturn(90); - final List cameraDescriptions = await camera - .availableCameras(); + final List cameraDescriptions = + await camera.availableCameras(); expect(cameraDescriptions.length, returnData.length); for (int i = 0; i < returnData.length; i++) { @@ -749,9 +732,10 @@ void main() { (returnData[i] as Map).cast(); final CameraDescription cameraDescription = CameraDescription( name: typedData['name']! as String, - lensDirection: (typedData['lensFacing']! as String) == 'front' - ? CameraLensDirection.front - : CameraLensDirection.back, + lensDirection: + (typedData['lensFacing']! as String) == 'front' + ? CameraLensDirection.front + : CameraLensDirection.back, sensorOrientation: typedData['sensorOrientation']! as int, ); expect(cameraDescriptions[i], cameraDescription); @@ -795,239 +779,221 @@ void main() { bool startedListeningForDeviceOrientationChanges = false; camera.proxy = CameraXProxy( - getInstanceProcessCameraProvider: - ({ - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) async { - return mockProcessCameraProvider; - }, - newCameraSelector: - ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return MockCameraSelector(); - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } - - return mockBackCameraSelector; - }, - newPreview: - ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockPreview; - }, - newImageCapture: - ({ - int? targetRotation, - CameraXFlashMode? flashMode, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageCapture; - }, - newRecorder: - ({ - int? aspectRatio, - int? targetVideoEncodingBitRate, - QualitySelector? qualitySelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockRecorder; - }, - withOutputVideoCapture: - ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockVideoCapture; - }, - newImageAnalysis: - ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageAnalysis; - }, - newResolutionStrategy: - ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionStrategy(); - }, - newResolutionSelector: - ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionSelector(); - }, - fromQualitySelector: - ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockQualitySelector(); - }, - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - when( - mockSystemServicesManager.requestCameraPermissions(any), - ).thenAnswer((_) async { - cameraPermissionsRequested = true; - return null; - }); - return mockSystemServicesManager; - }, - newDeviceOrientationManager: - ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when( - manager.startListeningForDeviceOrientationChange(), - ).thenAnswer((_) async { - startedListeningForDeviceOrientationChanges = true; - }); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, - newAspectRatioStrategy: - ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockAspectRatioStrategy(); - }, - createWithOnePreferredSizeResolutionFilter: - ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionFilter(); - }, - fromCamera2CameraInfo: - ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo camera2cameraInfo = - MockCamera2CameraInfo(); - when( - camera2cameraInfo.getCameraCharacteristic( - mockCameraCharacteristicsKey, - ), - ).thenAnswer((_) async => testSensorOrientation); - return camera2cameraInfo; - }, - newCameraSize: - ({ - required int width, - required int height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockCameraSize(); - }, + getInstanceProcessCameraProvider: ({ + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) async { + return mockProcessCameraProvider; + }, + newCameraSelector: ({ + LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return MockCameraSelector(); + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } + + return mockBackCameraSelector; + }, + newPreview: ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockPreview; + }, + newImageCapture: ({ + int? targetRotation, + CameraXFlashMode? flashMode, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageCapture; + }, + newRecorder: ({ + int? aspectRatio, + int? targetVideoEncodingBitRate, + QualitySelector? qualitySelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockRecorder; + }, + withOutputVideoCapture: ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockVideoCapture; + }, + newImageAnalysis: ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageAnalysis; + }, + newResolutionStrategy: ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionStrategy(); + }, + newResolutionSelector: ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionSelector(); + }, + fromQualitySelector: ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockQualitySelector(); + }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + when( + mockSystemServicesManager.requestCameraPermissions(any), + ).thenAnswer((_) async { + cameraPermissionsRequested = true; + return null; + }); + return mockSystemServicesManager; + }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.startListeningForDeviceOrientationChange()).thenAnswer(( + _, + ) async { + startedListeningForDeviceOrientationChanges = true; + }); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, + newAspectRatioStrategy: ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockAspectRatioStrategy(); + }, + createWithOnePreferredSizeResolutionFilter: ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionFilter(); + }, + fromCamera2CameraInfo: ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo camera2cameraInfo = + MockCamera2CameraInfo(); + when( + camera2cameraInfo.getCameraCharacteristic( + mockCameraCharacteristicsKey, + ), + ).thenAnswer((_) async => testSensorOrientation); + return camera2cameraInfo; + }, + newCameraSize: ({ + required int width, + required int height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockCameraSize(); + }, sensorOrientationCameraCharacteristics: () { return mockCameraCharacteristicsKey; }, - lowerQualityOrHigherThanFallbackStrategy: - ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, + lowerQualityOrHigherThanFallbackStrategy: ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, ); camera.processCameraProvider = mockProcessCameraProvider; @@ -1128,226 +1094,208 @@ void main() { // Tell plugin to create mock/detached objects and stub method calls for the // testing of createCamera. camera.proxy = CameraXProxy( - getInstanceProcessCameraProvider: - ({ - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) async { - return mockProcessCameraProvider; - }, - newCameraSelector: - ({ - LensFacing? requireLensFacing, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return MockCameraSelector(); - case LensFacing.back: - case LensFacing.external: - case LensFacing.unknown: - case null: - } - - return mockBackCameraSelector; - }, - newPreview: - ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockPreview; - }, - newImageCapture: - ({ - int? targetRotation, - CameraXFlashMode? flashMode, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageCapture; - }, - newRecorder: - ({ - int? aspectRatio, - int? targetVideoEncodingBitRate, - QualitySelector? qualitySelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockRecorder; - }, - withOutputVideoCapture: - ({ - required VideoOutput videoOutput, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockVideoCapture; - }, - newImageAnalysis: - ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return mockImageAnalysis; - }, - newResolutionStrategy: - ({ - required CameraSize boundSize, - required ResolutionStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionStrategy(); - }, - newResolutionSelector: - ({ - AspectRatioStrategy? aspectRatioStrategy, - ResolutionStrategy? resolutionStrategy, - ResolutionFilter? resolutionFilter, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionSelector(); - }, - fromQualitySelector: - ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockQualitySelector(); - }, - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockSystemServicesManager(); - }, - newDeviceOrientationManager: - ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, - newAspectRatioStrategy: - ({ - required AspectRatio preferredAspectRatio, - required AspectRatioStrategyFallbackRule fallbackRule, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockAspectRatioStrategy(); - }, - createWithOnePreferredSizeResolutionFilter: - ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockResolutionFilter(); - }, - fromCamera2CameraInfo: - ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - when( - mockCamera2CameraInfo.getCameraCharacteristic( - mockCameraCharacteristicsKey, - ), - ).thenAnswer((_) async => testSensorOrientation); - return mockCamera2CameraInfo; - }, - newCameraSize: - ({ - required int width, - required int height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockCameraSize(); - }, + getInstanceProcessCameraProvider: ({ + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) async { + return mockProcessCameraProvider; + }, + newCameraSelector: ({ + LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return MockCameraSelector(); + case LensFacing.back: + case LensFacing.external: + case LensFacing.unknown: + case null: + } + + return mockBackCameraSelector; + }, + newPreview: ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockPreview; + }, + newImageCapture: ({ + int? targetRotation, + CameraXFlashMode? flashMode, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageCapture; + }, + newRecorder: ({ + int? aspectRatio, + int? targetVideoEncodingBitRate, + QualitySelector? qualitySelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockRecorder; + }, + withOutputVideoCapture: ({ + required VideoOutput videoOutput, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockVideoCapture; + }, + newImageAnalysis: ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return mockImageAnalysis; + }, + newResolutionStrategy: ({ + required CameraSize boundSize, + required ResolutionStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionStrategy(); + }, + newResolutionSelector: ({ + AspectRatioStrategy? aspectRatioStrategy, + ResolutionStrategy? resolutionStrategy, + ResolutionFilter? resolutionFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionSelector(); + }, + fromQualitySelector: ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockQualitySelector(); + }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockSystemServicesManager(); + }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, + newAspectRatioStrategy: ({ + required AspectRatio preferredAspectRatio, + required AspectRatioStrategyFallbackRule fallbackRule, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockAspectRatioStrategy(); + }, + createWithOnePreferredSizeResolutionFilter: ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockResolutionFilter(); + }, + fromCamera2CameraInfo: ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + when( + mockCamera2CameraInfo.getCameraCharacteristic( + mockCameraCharacteristicsKey, + ), + ).thenAnswer((_) async => testSensorOrientation); + return mockCamera2CameraInfo; + }, + newCameraSize: ({ + required int width, + required int height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockCameraSize(); + }, sensorOrientationCameraCharacteristics: () { return mockCameraCharacteristicsKey; }, - lowerQualityOrHigherThanFallbackStrategy: - ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockFallbackStrategy(); - }, + lowerQualityOrHigherThanFallbackStrategy: ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockFallbackStrategy(); + }, ); when( @@ -1477,11 +1425,9 @@ void main() { continue; } - final CameraSize? previewSize = await camera - .preview! - .resolutionSelector! - .resolutionStrategy! - .getBoundSize(); + final CameraSize? previewSize = + await camera.preview!.resolutionSelector!.resolutionStrategy! + .getBoundSize(); expect(previewSize?.width, equals(expectedBoundSize.width)); expect(previewSize?.height, equals(expectedBoundSize.height)); expect( @@ -1490,11 +1436,9 @@ void main() { ResolutionStrategyFallbackRule.closestLowerThenHigher, ); - final CameraSize? imageCaptureSize = await camera - .imageCapture! - .resolutionSelector! - .resolutionStrategy! - .getBoundSize(); + final CameraSize? imageCaptureSize = + await camera.imageCapture!.resolutionSelector!.resolutionStrategy! + .getBoundSize(); expect(imageCaptureSize?.width, equals(expectedBoundSize.width)); expect(imageCaptureSize?.height, equals(expectedBoundSize.height)); expect( @@ -1503,11 +1447,9 @@ void main() { ResolutionStrategyFallbackRule.closestLowerThenHigher, ); - final CameraSize? imageAnalysisSize = await camera - .imageAnalysis! - .resolutionSelector! - .resolutionStrategy! - .getBoundSize(); + final CameraSize? imageAnalysisSize = + await camera.imageAnalysis!.resolutionSelector!.resolutionStrategy! + .getBoundSize(); expect(imageAnalysisSize?.width, equals(expectedBoundSize.width)); expect(imageAnalysisSize?.height, equals(expectedBoundSize.height)); expect( @@ -1570,17 +1512,16 @@ void main() { CameraSize? lastSetPreferredSize; camera.proxy = getProxyForTestingResolutionPreset( mockProcessCameraProvider, - createWithOnePreferredSizeResolutionFilter: - ({ - required CameraSize preferredSize, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - lastSetPreferredSize = preferredSize; - return MockResolutionFilter(); - }, + createWithOnePreferredSizeResolutionFilter: ({ + required CameraSize preferredSize, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + lastSetPreferredSize = preferredSize; + return MockResolutionFilter(); + }, ); when( @@ -1661,11 +1602,9 @@ void main() { equals(expectedPreferredResolution.height), ); - final CameraSize? imageCaptureSize = await camera - .imageCapture! - .resolutionSelector! - .resolutionStrategy! - .getBoundSize(); + final CameraSize? imageCaptureSize = + await camera.imageCapture!.resolutionSelector!.resolutionStrategy! + .getBoundSize(); expect( imageCaptureSize?.width, equals(expectedPreferredResolution.width), @@ -1675,11 +1614,9 @@ void main() { equals(expectedPreferredResolution.height), ); - final CameraSize? imageAnalysisSize = await camera - .imageAnalysis! - .resolutionSelector! - .resolutionStrategy! - .getBoundSize(); + final CameraSize? imageAnalysisSize = + await camera.imageAnalysis!.resolutionSelector!.resolutionStrategy! + .getBoundSize(); expect( imageAnalysisSize?.width, equals(expectedPreferredResolution.width), @@ -1781,18 +1718,14 @@ void main() { continue; } - final AspectRatioStrategy previewStrategy = await camera - .preview! - .resolutionSelector! - .getAspectRatioStrategy(); - final AspectRatioStrategy imageCaptureStrategy = await camera - .imageCapture! - .resolutionSelector! - .getAspectRatioStrategy(); - final AspectRatioStrategy imageAnalysisStrategy = await camera - .imageCapture! - .resolutionSelector! - .getAspectRatioStrategy(); + final AspectRatioStrategy previewStrategy = + await camera.preview!.resolutionSelector!.getAspectRatioStrategy(); + final AspectRatioStrategy imageCaptureStrategy = + await camera.imageCapture!.resolutionSelector! + .getAspectRatioStrategy(); + final AspectRatioStrategy imageAnalysisStrategy = + await camera.imageCapture!.resolutionSelector! + .getAspectRatioStrategy(); // Check aspect ratio. expect( @@ -1860,30 +1793,28 @@ void main() { final MockQualitySelector mockQualitySelector = MockQualitySelector(); camera.proxy = getProxyForTestingResolutionPreset( mockProcessCameraProvider, - lowerQualityOrHigherThanFallbackStrategy: - ({ - required VideoQuality quality, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - fallbackStrategyVideoQuality = quality; - return mockFallbackStrategy; - }, - fromQualitySelector: - ({ - required VideoQuality quality, - FallbackStrategy? fallbackStrategy, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - qualitySelectorVideoQuality = quality; - setFallbackStrategy = fallbackStrategy; - return mockQualitySelector; - }, + lowerQualityOrHigherThanFallbackStrategy: ({ + required VideoQuality quality, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + fallbackStrategyVideoQuality = quality; + return mockFallbackStrategy; + }, + fromQualitySelector: ({ + required VideoQuality quality, + FallbackStrategy? fallbackStrategy, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + qualitySelectorVideoQuality = quality; + setFallbackStrategy = fallbackStrategy; + return mockQualitySelector; + }, ); when( @@ -1966,24 +1897,21 @@ void main() { // UI orientation. camera.proxy = getProxyForTestingResolutionPreset( mockProcessCameraProvider, - newPreview: - ({ - int? targetRotation, - ResolutionSelector? resolutionSelector, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockPreview mockPreview = MockPreview(); - when( - mockPreview.surfaceProducerHandlesCropAndRotation(), - ).thenAnswer((_) async => testHandlesCropAndRotation); - when( - mockPreview.resolutionSelector, - ).thenReturn(resolutionSelector); - return mockPreview; - }, + newPreview: ({ + int? targetRotation, + ResolutionSelector? resolutionSelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockPreview mockPreview = MockPreview(); + when( + mockPreview.surfaceProducerHandlesCropAndRotation(), + ).thenAnswer((_) async => testHandlesCropAndRotation); + when(mockPreview.resolutionSelector).thenReturn(resolutionSelector); + return mockPreview; + }, ); when( @@ -2426,32 +2354,49 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => Future.value(mockProcessCameraProvider), - newCameraSelector: + newCameraSelector: ({ + LensFacing? requireLensFacing, + CameraInfo? cameraInfoForFilter, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + switch (requireLensFacing) { + case LensFacing.front: + return mockFrontCameraSelector; + case _: + return mockBackCameraSelector; + } + }, + newPreview: ({ - LensFacing? requireLensFacing, + int? targetRotation, + ResolutionSelector? resolutionSelector, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) { - switch (requireLensFacing) { - case LensFacing.front: - return mockFrontCameraSelector; - case _: - return mockBackCameraSelector; - } - }, - newPreview: + }) => mockPreview, + newImageCapture: ({ int? targetRotation, + CameraXFlashMode? flashMode, ResolutionSelector? resolutionSelector, // ignore: non_constant_identifier_names BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) => mockPreview, - newImageCapture: + }) => mockImageCapture, + newRecorder: ({ + int? aspectRatio, + int? targetVideoEncodingBitRate, + QualitySelector? qualitySelector, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, }) => MockRecorder(), withOutputVideoCapture: ({ @@ -2506,21 +2451,20 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockQualitySelector(), - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, newSystemServicesManager: ({ required void Function(SystemServicesManager, String) onCameraError, @@ -2529,22 +2473,21 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockSystemServicesManager(), - newDeviceOrientationManager: - ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getUiOrientation()).thenAnswer((_) async { - return 'PORTRAIT_UP'; - }); - return manager; - }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getUiOrientation()).thenAnswer((_) async { + return 'PORTRAIT_UP'; + }); + return manager; + }, newAspectRatioStrategy: ({ required AspectRatio preferredAspectRatio, @@ -2562,21 +2505,20 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockResolutionFilter(), - fromCamera2CameraInfo: - ({ - required CameraInfo cameraInfo, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCamera2CameraInfo mockCamera2CameraInfo = - MockCamera2CameraInfo(); - when( - mockCamera2CameraInfo.getCameraCharacteristic(any), - ).thenAnswer((_) async => 90); - return mockCamera2CameraInfo; - }, + fromCamera2CameraInfo: ({ + required CameraInfo cameraInfo, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCamera2CameraInfo mockCamera2CameraInfo = + MockCamera2CameraInfo(); + when( + mockCamera2CameraInfo.getCameraCharacteristic(any), + ).thenAnswer((_) async => 90); + return mockCamera2CameraInfo; + }, newCameraSize: ({ required int width, @@ -2586,8 +2528,8 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockCameraSize(), - sensorOrientationCameraCharacteristics: () => - MockCameraCharacteristicsKey(), + sensorOrientationCameraCharacteristics: + () => MockCameraCharacteristicsKey(), ); final CameraInitializedEvent testCameraInitializedEvent = @@ -2647,25 +2589,24 @@ void main() { bool stoppedListeningForDeviceOrientationChange = false; final AndroidCameraCameraX camera = AndroidCameraCameraX(); camera.proxy = CameraXProxy( - newDeviceOrientationManager: - ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager mockDeviceOrientationManager = - MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager - .stopListeningForDeviceOrientationChange(), - ).thenAnswer((_) async { - stoppedListeningForDeviceOrientationChange = true; - }); - return mockDeviceOrientationManager; - }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager mockDeviceOrientationManager = + MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager + .stopListeningForDeviceOrientationChange(), + ).thenAnswer((_) async { + stoppedListeningForDeviceOrientationChange = true; + }); + return mockDeviceOrientationManager; + }, ); camera.preview = MockPreview(); @@ -2745,22 +2686,20 @@ void main() { StreamQueue(eventStream); camera.proxy = CameraXProxy( - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.onCameraError, - ).thenReturn(onCameraError); - return mockSystemServicesManager; - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.onCameraError, + ).thenReturn(onCameraError); + return mockSystemServicesManager; + }, ); camera.systemServicesManager.onCameraError( @@ -2783,30 +2722,29 @@ void main() { 'onDeviceOrientationChanged stream emits changes in device orientation detected by system services', () async { final AndroidCameraCameraX camera = AndroidCameraCameraX(); - final Stream eventStream = camera - .onDeviceOrientationChanged(); + final Stream eventStream = + camera.onDeviceOrientationChanged(); final StreamQueue streamQueue = StreamQueue(eventStream); const DeviceOrientationChangedEvent testEvent = DeviceOrientationChangedEvent(DeviceOrientation.portraitDown); camera.proxy = CameraXProxy( - newDeviceOrientationManager: - ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager mockDeviceOrientationManager = - MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager.onDeviceOrientationChanged, - ).thenReturn(onDeviceOrientationChanged); - return mockDeviceOrientationManager; - }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager mockDeviceOrientationManager = + MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager.onDeviceOrientationChanged, + ).thenReturn(onDeviceOrientationChanged); + return mockDeviceOrientationManager; + }, ); camera.deviceOrientationManager.onDeviceOrientationChanged( @@ -2918,21 +2856,20 @@ void main() { // track camera state once preview is bound to the lifecycle and needed to // test for expected updates. camera.proxy = CameraXProxy( - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); when( @@ -3027,21 +2964,20 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -3050,44 +2986,38 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: - ({ - required void Function( - VideoRecordEventListener, - VideoRecordEvent, - ) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -3193,21 +3123,20 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -3216,44 +3145,38 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: - ({ - required void Function( - VideoRecordEventListener, - VideoRecordEvent, - ) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -3359,21 +3282,20 @@ void main() { // Tell plugin to create detached Analyzer for testing. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -3382,57 +3304,50 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: - ({ - required void Function( - VideoRecordEventListener, - VideoRecordEvent, - ) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, - newAnalyzer: - ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return MockAnalyzer(); - }, + newAnalyzer: ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return MockAnalyzer(); + }, ); const int cameraId = 17; @@ -3440,8 +3355,9 @@ void main() { Completer(); final VideoCaptureOptions videoCaptureOptions = VideoCaptureOptions( cameraId, - streamCallback: (CameraImageData imageData) => - imageDataCompleter.complete(imageData), + streamCallback: + (CameraImageData imageData) => + imageDataCompleter.complete(imageData), ); // Mock method calls. @@ -3513,21 +3429,20 @@ void main() { // Tell plugin to mock call to get current video orientation and mock Camera2CameraInfo retrieval. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -3535,63 +3450,57 @@ void main() { BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) => cameraInfo == initialCameraInfo - ? mockCamera2CameraInfo - : MockCamera2CameraInfo(), - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newDeviceOrientationManager: - ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager - mockDeviceOrientationManager = MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager.getDefaultDisplayRotation(), - ).thenAnswer((_) async => defaultTargetRotation); - return mockDeviceOrientationManager; - }, - newVideoRecordEventListener: - ({ - required void Function( - VideoRecordEventListener, - VideoRecordEvent, - ) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + }) => + cameraInfo == initialCameraInfo + ? mockCamera2CameraInfo + : MockCamera2CameraInfo(), + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager mockDeviceOrientationManager = + MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager.getDefaultDisplayRotation(), + ).thenAnswer((_) async => defaultTargetRotation); + return mockDeviceOrientationManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -3909,21 +3818,20 @@ void main() { // Tell plugin to create detached camera state observers. camera.proxy = CameraXProxy( - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); when( @@ -3966,22 +3874,21 @@ void main() { // Tell plugin to mock call to get current photo orientation. camera.proxy = CameraXProxy( - newDeviceOrientationManager: - ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager mockDeviceOrientationManager = - MockDeviceOrientationManager(); - when( - mockDeviceOrientationManager.getDefaultDisplayRotation(), - ).thenAnswer((_) async => defaultTargetRotation); - return mockDeviceOrientationManager; - }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager mockDeviceOrientationManager = + MockDeviceOrientationManager(); + when( + mockDeviceOrientationManager.getDefaultDisplayRotation(), + ).thenAnswer((_) async => defaultTargetRotation); + return mockDeviceOrientationManager; + }, ); when( @@ -4316,21 +4223,20 @@ void main() { // Tell plugin to create detached Analyzer for testing. camera.proxy = CameraXProxy( - newAnalyzer: - ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); // Set directly for test versus calling createCamera. @@ -4377,21 +4283,20 @@ void main() { // Tell plugin to create detached Analyzer for testing. camera.proxy = CameraXProxy( - newAnalyzer: - ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); // Set directly for test versus calling createCamera. @@ -4452,36 +4357,34 @@ void main() { // Tell plugin to create detached Analyzer for testing. camera.proxy = CameraXProxy( - newAnalyzer: - ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); // Set directly for test versus calling createCamera. @@ -4613,22 +4516,21 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockAnalyzer(), - newDeviceOrientationManager: - ({ - required void Function(DeviceOrientationManager, String) - onDeviceOrientationChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDeviceOrientationManager manager = - MockDeviceOrientationManager(); - when(manager.getDefaultDisplayRotation()).thenAnswer((_) async { - return defaultTargetRotation; - }); - return manager; - }, + newDeviceOrientationManager: ({ + required void Function(DeviceOrientationManager, String) + onDeviceOrientationChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDeviceOrientationManager manager = + MockDeviceOrientationManager(); + when(manager.getDefaultDisplayRotation()).thenAnswer((_) async { + return defaultTargetRotation; + }); + return manager; + }, ); when( @@ -4764,28 +4666,28 @@ void main() { BinaryMessenger? pigeon_binaryMessenger, // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, - }) => cameraControl == mockCameraControl - ? mockCamera2CameraControl - : Camera2CameraControl.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ), - newCaptureRequestOptions: - ({ - required Map options, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockCaptureRequestOptions mockCaptureRequestOptions = - MockCaptureRequestOptions(); - options.forEach((CaptureRequestKey key, Object? value) { - when( - mockCaptureRequestOptions.getCaptureRequestOption(key), - ).thenAnswer((_) async => value); - }); - return mockCaptureRequestOptions; - }, + }) => + cameraControl == mockCameraControl + ? mockCamera2CameraControl + : Camera2CameraControl.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ), + newCaptureRequestOptions: ({ + required Map options, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockCaptureRequestOptions mockCaptureRequestOptions = + MockCaptureRequestOptions(); + options.forEach((CaptureRequestKey key, Object? value) { + when( + mockCaptureRequestOptions.getCaptureRequestOption(key), + ).thenAnswer((_) async => value); + }); + return mockCaptureRequestOptions; + }, controlAELockCaptureRequest: () => controlAELockKey, ); @@ -4851,19 +4753,18 @@ void main() { MeteringMode? actionBuilderMeteringMode; MeteringPoint? actionBuilderMeteringPoint; camera.proxy = getProxyForExposureAndFocus( - withModeFocusMeteringActionBuilder: - ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + withModeFocusMeteringActionBuilder: ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify nothing happens if no current focus and metering action has been @@ -4976,36 +4877,34 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: - ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(exposurePointX, exposurePointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: - ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(exposurePointX, exposurePointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify current auto-exposure metering point is removed if previously set. @@ -5117,36 +5016,34 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: - ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(exposurePointX, exposurePointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: - ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(exposurePointX, exposurePointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); await camera.setExposurePoint(cameraId, exposurePoint); @@ -5396,19 +5293,18 @@ void main() { MeteringMode? actionBuilderMeteringMode; MeteringPoint? actionBuilderMeteringPoint; camera.proxy = getProxyForExposureAndFocus( - withModeFocusMeteringActionBuilder: - ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + withModeFocusMeteringActionBuilder: ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify nothing happens if no current focus and metering action has been @@ -5521,36 +5417,34 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: - ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(focusPointX, focusPointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: - ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(focusPointX, focusPointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); // Verify current auto-exposure metering point is removed if previously set. @@ -5655,36 +5549,34 @@ void main() { ), ); camera.proxy = getProxyForExposureAndFocus( - newDisplayOrientedMeteringPointFactory: - ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(focusPointX, focusPointY), - ).thenAnswer((_) async => createdMeteringPoint); - return mockFactory; - }, - withModeFocusMeteringActionBuilder: - ({ - required MeteringMode mode, - required MeteringPoint point, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - actionBuilderMeteringMode = mode; - actionBuilderMeteringPoint = point; - return mockActionBuilder; - }, + newDisplayOrientedMeteringPointFactory: ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(focusPointX, focusPointY), + ).thenAnswer((_) async => createdMeteringPoint); + return mockFactory; + }, + withModeFocusMeteringActionBuilder: ({ + required MeteringMode mode, + required MeteringPoint point, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + actionBuilderMeteringMode = mode; + actionBuilderMeteringPoint = point; + return mockActionBuilder; + }, ); await camera.setFocusPoint(cameraId, focusPoint); @@ -5822,40 +5714,39 @@ void main() { camera.proxy = getProxyForSettingFocusandExposurePoints( mockCameraControl, mockCamera2CameraControl, - newDisplayOrientedMeteringPointFactory: - ({ - required CameraInfo cameraInfo, - required double width, - required double height, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockDisplayOrientedMeteringPointFactory mockFactory = - MockDisplayOrientedMeteringPointFactory(); - when( - mockFactory.createPoint(exposurePointX, exposurePointY), - ).thenAnswer((_) async { - final MeteringPoint createdMeteringPoint = - MeteringPoint.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ); - createdMeteringPoints.add(createdMeteringPoint); - return createdMeteringPoint; - }); - when(mockFactory.createPointWithSize(0.5, 0.5, 1)).thenAnswer(( - _, - ) async { - final MeteringPoint createdMeteringPoint = - MeteringPoint.pigeon_detached( - pigeon_instanceManager: testInstanceManager, - ); - createdMeteringPoints.add(createdMeteringPoint); - return createdMeteringPoint; - }); - return mockFactory; - }, + newDisplayOrientedMeteringPointFactory: ({ + required CameraInfo cameraInfo, + required double width, + required double height, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockDisplayOrientedMeteringPointFactory mockFactory = + MockDisplayOrientedMeteringPointFactory(); + when( + mockFactory.createPoint(exposurePointX, exposurePointY), + ).thenAnswer((_) async { + final MeteringPoint createdMeteringPoint = + MeteringPoint.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ); + createdMeteringPoints.add(createdMeteringPoint); + return createdMeteringPoint; + }); + when(mockFactory.createPointWithSize(0.5, 0.5, 1)).thenAnswer(( + _, + ) async { + final MeteringPoint createdMeteringPoint = + MeteringPoint.pigeon_detached( + pigeon_instanceManager: testInstanceManager, + ); + createdMeteringPoints.add(createdMeteringPoint); + return createdMeteringPoint; + }); + return mockFactory; + }, ); // Make setting focus and metering action successful for test. @@ -6502,21 +6393,20 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => MockAnalyzer(), - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, ); when( @@ -6575,21 +6465,20 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6598,41 +6487,38 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: - ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6716,21 +6602,20 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6739,41 +6624,38 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: - ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -6857,21 +6739,20 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -6880,41 +6761,38 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: - ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -7003,36 +6881,34 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newAnalyzer: - ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -7041,41 +6917,38 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: - ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -7168,36 +7041,34 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newAnalyzer: - ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -7206,41 +7077,38 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: - ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); }, @@ -7325,36 +7193,34 @@ void main() { // Tell plugin to create detached Observer when camera info updated. const String outputPath = '/temp/REC123.temp'; camera.proxy = CameraXProxy( - newAnalyzer: - ({ - required void Function(Analyzer, ImageProxy) analyze, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Analyzer.pigeon_detached( - analyze: analyze, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, - newObserver: - ({ - required void Function(Observer, T) onChanged, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return Observer.detached( - onChanged: onChanged, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newAnalyzer: ({ + required void Function(Analyzer, ImageProxy) analyze, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Analyzer.pigeon_detached( + analyze: analyze, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, + newObserver: ({ + required void Function(Observer, T) onChanged, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return Observer.detached( + onChanged: onChanged, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, fromCamera2CameraInfo: ({ required CameraInfo cameraInfo, @@ -7363,41 +7229,38 @@ void main() { // ignore: non_constant_identifier_names PigeonInstanceManager? pigeon_instanceManager, }) => mockCamera2CameraInfo, - newSystemServicesManager: - ({ - required void Function(SystemServicesManager, String) - onCameraError, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - final MockSystemServicesManager mockSystemServicesManager = - MockSystemServicesManager(); - when( - mockSystemServicesManager.getTempFilePath( - camera.videoPrefix, - '.temp', - ), - ).thenAnswer((_) async => outputPath); - return mockSystemServicesManager; - }, - newVideoRecordEventListener: - ({ - required void Function(VideoRecordEventListener, VideoRecordEvent) - onEvent, - // ignore: non_constant_identifier_names - BinaryMessenger? pigeon_binaryMessenger, - // ignore: non_constant_identifier_names - PigeonInstanceManager? pigeon_instanceManager, - }) { - return VideoRecordEventListener.pigeon_detached( - onEvent: onEvent, - pigeon_instanceManager: PigeonInstanceManager( - onWeakReferenceRemoved: (_) {}, - ), - ); - }, + newSystemServicesManager: ({ + required void Function(SystemServicesManager, String) onCameraError, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + final MockSystemServicesManager mockSystemServicesManager = + MockSystemServicesManager(); + when( + mockSystemServicesManager.getTempFilePath( + camera.videoPrefix, + '.temp', + ), + ).thenAnswer((_) async => outputPath); + return mockSystemServicesManager; + }, + newVideoRecordEventListener: ({ + required void Function(VideoRecordEventListener, VideoRecordEvent) + onEvent, + // ignore: non_constant_identifier_names + BinaryMessenger? pigeon_binaryMessenger, + // ignore: non_constant_identifier_names + PigeonInstanceManager? pigeon_instanceManager, + }) { + return VideoRecordEventListener.pigeon_detached( + onEvent: onEvent, + pigeon_instanceManager: PigeonInstanceManager( + onWeakReferenceRemoved: (_) {}, + ), + ); + }, infoSupportedHardwareLevelCameraCharacteristics: () { return MockCameraCharacteristicsKey(); },