Revert "[camera] Add ProcessCameraProvider class to CameraX plugin (#6469)" (#6506)
This reverts commit 1c47c3b9d2788104985ebfc4660cafb390968b6e.
diff --git a/packages/camera/camera_android_camerax/CHANGELOG.md b/packages/camera/camera_android_camerax/CHANGELOG.md
index ce2fb90..2bdfa59 100644
--- a/packages/camera/camera_android_camerax/CHANGELOG.md
+++ b/packages/camera/camera_android_camerax/CHANGELOG.md
@@ -3,4 +3,3 @@
* Creates camera_android_camerax plugin for development.
* Adds CameraInfo class and removes unnecessary code from plugin.
* Adds CameraSelector class.
-* Adds ProcessCameraProvider class.
diff --git a/packages/camera/camera_android_camerax/android/build.gradle b/packages/camera/camera_android_camerax/android/build.gradle
index a193a29..1772afe 100644
--- a/packages/camera/camera_android_camerax/android/build.gradle
+++ b/packages/camera/camera_android_camerax/android/build.gradle
@@ -38,15 +38,13 @@
dependencies {
// CameraX core library using the camera2 implementation must use same version number.
- def camerax_version = "1.2.0-beta02"
+ def camerax_version = "1.2.0-beta01"
implementation "androidx.camera:camera-core:${camerax_version}"
implementation "androidx.camera:camera-camera2:${camerax_version}"
implementation "androidx.camera:camera-lifecycle:${camerax_version}"
- implementation 'com.google.guava:guava:28.1-android'
testImplementation 'junit:junit:4.13.2'
testImplementation 'org.mockito:mockito-inline:4.7.0'
testImplementation 'androidx.test:core:1.4.0'
- testImplementation 'org.robolectric:robolectric:4.3'
}
testOptions {
unitTests.includeAndroidResources = true
diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraAndroidCameraxPlugin.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraAndroidCameraxPlugin.java
index b8fbaf5..bb5756a 100644
--- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraAndroidCameraxPlugin.java
+++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraAndroidCameraxPlugin.java
@@ -15,7 +15,6 @@
public final class CameraAndroidCameraxPlugin implements FlutterPlugin, ActivityAware {
private InstanceManager instanceManager;
private FlutterPluginBinding pluginBinding;
- private ProcessCameraProviderHostApiImpl processCameraProviderHostApi;
/**
* Initialize this within the {@code #configureFlutterEngine} of a Flutter activity or fragment.
@@ -40,10 +39,6 @@
binaryMessenger, new JavaObjectHostApiImpl(instanceManager));
GeneratedCameraXLibrary.CameraSelectorHostApi.setup(
binaryMessenger, new CameraSelectorHostApiImpl(binaryMessenger, instanceManager));
- processCameraProviderHostApi =
- new ProcessCameraProviderHostApiImpl(binaryMessenger, instanceManager, context);
- GeneratedCameraXLibrary.ProcessCameraProviderHostApi.setup(
- binaryMessenger, processCameraProviderHostApi);
}
@Override
@@ -65,33 +60,15 @@
// Activity Lifecycle methods:
@Override
- public void onAttachedToActivity(@NonNull ActivityPluginBinding activityPluginBinding) {
- updateContext(activityPluginBinding.getActivity());
- }
+ public void onAttachedToActivity(@NonNull ActivityPluginBinding activityPluginBinding) {}
@Override
- public void onDetachedFromActivityForConfigChanges() {
- updateContext(pluginBinding.getApplicationContext());
- }
+ public void onDetachedFromActivityForConfigChanges() {}
@Override
public void onReattachedToActivityForConfigChanges(
- @NonNull ActivityPluginBinding activityPluginBinding) {
- updateContext(activityPluginBinding.getActivity());
- }
+ @NonNull ActivityPluginBinding activityPluginBinding) {}
@Override
- public void onDetachedFromActivity() {
- updateContext(pluginBinding.getApplicationContext());
- }
-
- /**
- * Updates context that is used to fetch the corresponding instance of a {@code
- * ProcessCameraProvider}.
- */
- private void updateContext(Context context) {
- if (processCameraProviderHostApi != null) {
- processCameraProviderHostApi.setContext(context);
- }
- }
+ public void onDetachedFromActivity() {}
}
diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraInfoFlutterApiImpl.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraInfoFlutterApiImpl.java
index c538e42..b5ba9fc 100644
--- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraInfoFlutterApiImpl.java
+++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraInfoFlutterApiImpl.java
@@ -18,6 +18,7 @@
}
void create(CameraInfo cameraInfo, Reply<Void> reply) {
- create(instanceManager.addHostCreatedInstance(cameraInfo), reply);
+ instanceManager.addHostCreatedInstance(cameraInfo);
+ create(instanceManager.getIdentifierForStrongReference(cameraInfo), reply);
}
}
diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/GeneratedCameraXLibrary.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/GeneratedCameraXLibrary.java
index 041564c..e87a80d 100644
--- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/GeneratedCameraXLibrary.java
+++ b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/GeneratedCameraXLibrary.java
@@ -22,13 +22,6 @@
/** Generated class from Pigeon. */
@SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSuppression"})
public class GeneratedCameraXLibrary {
-
- public interface Result<T> {
- void success(T result);
-
- void error(Throwable error);
- }
-
private static class JavaObjectHostApiCodec extends StandardMessageCodec {
public static final JavaObjectHostApiCodec INSTANCE = new JavaObjectHostApiCodec();
@@ -318,133 +311,6 @@
}
}
- private static class ProcessCameraProviderHostApiCodec extends StandardMessageCodec {
- public static final ProcessCameraProviderHostApiCodec INSTANCE =
- new ProcessCameraProviderHostApiCodec();
-
- private ProcessCameraProviderHostApiCodec() {}
- }
-
- /** Generated interface from Pigeon that represents a handler of messages from Flutter. */
- public interface ProcessCameraProviderHostApi {
- void getInstance(Result<Long> result);
-
- @NonNull
- List<Long> getAvailableCameraInfos(@NonNull Long identifier);
-
- /** The codec used by ProcessCameraProviderHostApi. */
- static MessageCodec<Object> getCodec() {
- return ProcessCameraProviderHostApiCodec.INSTANCE;
- }
-
- /**
- * Sets up an instance of `ProcessCameraProviderHostApi` to handle messages through the
- * `binaryMessenger`.
- */
- static void setup(BinaryMessenger binaryMessenger, ProcessCameraProviderHostApi api) {
- {
- BasicMessageChannel<Object> channel =
- new BasicMessageChannel<>(
- binaryMessenger,
- "dev.flutter.pigeon.ProcessCameraProviderHostApi.getInstance",
- getCodec());
- if (api != null) {
- channel.setMessageHandler(
- (message, reply) -> {
- Map<String, Object> wrapped = new HashMap<>();
- try {
- Result<Long> resultCallback =
- new Result<Long>() {
- public void success(Long result) {
- wrapped.put("result", result);
- reply.reply(wrapped);
- }
-
- public void error(Throwable error) {
- wrapped.put("error", wrapError(error));
- reply.reply(wrapped);
- }
- };
-
- api.getInstance(resultCallback);
- } catch (Error | RuntimeException exception) {
- wrapped.put("error", wrapError(exception));
- reply.reply(wrapped);
- }
- });
- } else {
- channel.setMessageHandler(null);
- }
- }
- {
- BasicMessageChannel<Object> channel =
- new BasicMessageChannel<>(
- binaryMessenger,
- "dev.flutter.pigeon.ProcessCameraProviderHostApi.getAvailableCameraInfos",
- getCodec());
- if (api != null) {
- channel.setMessageHandler(
- (message, reply) -> {
- Map<String, Object> wrapped = new HashMap<>();
- try {
- ArrayList<Object> args = (ArrayList<Object>) message;
- Number identifierArg = (Number) args.get(0);
- if (identifierArg == null) {
- throw new NullPointerException("identifierArg unexpectedly null.");
- }
- List<Long> output =
- api.getAvailableCameraInfos(
- (identifierArg == null) ? null : identifierArg.longValue());
- wrapped.put("result", output);
- } catch (Error | RuntimeException exception) {
- wrapped.put("error", wrapError(exception));
- }
- reply.reply(wrapped);
- });
- } else {
- channel.setMessageHandler(null);
- }
- }
- }
- }
-
- private static class ProcessCameraProviderFlutterApiCodec extends StandardMessageCodec {
- public static final ProcessCameraProviderFlutterApiCodec INSTANCE =
- new ProcessCameraProviderFlutterApiCodec();
-
- private ProcessCameraProviderFlutterApiCodec() {}
- }
-
- /** Generated class from Pigeon that represents Flutter messages that can be called from Java. */
- public static class ProcessCameraProviderFlutterApi {
- private final BinaryMessenger binaryMessenger;
-
- public ProcessCameraProviderFlutterApi(BinaryMessenger argBinaryMessenger) {
- this.binaryMessenger = argBinaryMessenger;
- }
-
- public interface Reply<T> {
- void reply(T reply);
- }
-
- static MessageCodec<Object> getCodec() {
- return ProcessCameraProviderFlutterApiCodec.INSTANCE;
- }
-
- public void create(@NonNull Long identifierArg, Reply<Void> callback) {
- BasicMessageChannel<Object> channel =
- new BasicMessageChannel<>(
- binaryMessenger,
- "dev.flutter.pigeon.ProcessCameraProviderFlutterApi.create",
- getCodec());
- channel.send(
- new ArrayList<Object>(Arrays.asList(identifierArg)),
- channelReply -> {
- callback.reply(null);
- });
- }
- }
-
private static Map<String, Object> wrapError(Throwable exception) {
Map<String, Object> errorMap = new HashMap<>();
errorMap.put("message", exception.toString());
diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderFlutterApiImpl.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderFlutterApiImpl.java
deleted file mode 100644
index 90c94d0..0000000
--- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderFlutterApiImpl.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package io.flutter.plugins.camerax;
-
-import androidx.camera.lifecycle.ProcessCameraProvider;
-import io.flutter.plugin.common.BinaryMessenger;
-import io.flutter.plugins.camerax.GeneratedCameraXLibrary.ProcessCameraProviderFlutterApi;
-
-public class ProcessCameraProviderFlutterApiImpl extends ProcessCameraProviderFlutterApi {
- public ProcessCameraProviderFlutterApiImpl(
- BinaryMessenger binaryMessenger, InstanceManager instanceManager) {
- super(binaryMessenger);
- this.instanceManager = instanceManager;
- }
-
- private final InstanceManager instanceManager;
-
- void create(ProcessCameraProvider processCameraProvider, Reply<Void> reply) {
- create(instanceManager.addHostCreatedInstance(processCameraProvider), reply);
- }
-}
diff --git a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderHostApiImpl.java b/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderHostApiImpl.java
deleted file mode 100644
index 19c5eb5..0000000
--- a/packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/ProcessCameraProviderHostApiImpl.java
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package io.flutter.plugins.camerax;
-
-import android.content.Context;
-import androidx.annotation.NonNull;
-import androidx.camera.core.CameraInfo;
-import androidx.camera.lifecycle.ProcessCameraProvider;
-import androidx.core.content.ContextCompat;
-import com.google.common.util.concurrent.ListenableFuture;
-import io.flutter.plugin.common.BinaryMessenger;
-import io.flutter.plugins.camerax.GeneratedCameraXLibrary.ProcessCameraProviderHostApi;
-import java.util.ArrayList;
-import java.util.List;
-
-public class ProcessCameraProviderHostApiImpl implements ProcessCameraProviderHostApi {
- private final BinaryMessenger binaryMessenger;
- private final InstanceManager instanceManager;
-
- private Context context;
-
- public ProcessCameraProviderHostApiImpl(
- BinaryMessenger binaryMessenger, InstanceManager instanceManager, Context context) {
- this.binaryMessenger = binaryMessenger;
- this.instanceManager = instanceManager;
- this.context = context;
- }
-
- /**
- * Sets the context that the {@code ProcessCameraProvider} will use to attach the lifecycle of the
- * camera to.
- *
- * <p>If using the camera plugin in an add-to-app context, ensure that a new instance of the
- * {@code ProcessCameraProvider} is fetched via {@code #getInstance} anytime the context changes.
- */
- public void setContext(Context context) {
- this.context = context;
- }
-
- /**
- * Returns the instance of the ProcessCameraProvider to manage the lifecycle of the camera for the
- * current {@code Context}.
- */
- @Override
- public void getInstance(GeneratedCameraXLibrary.Result<Long> result) {
- ListenableFuture<ProcessCameraProvider> processCameraProviderFuture =
- ProcessCameraProvider.getInstance(context);
-
- processCameraProviderFuture.addListener(
- () -> {
- try {
- // Camera provider is now guaranteed to be available.
- ProcessCameraProvider processCameraProvider = processCameraProviderFuture.get();
-
- if (!instanceManager.containsInstance(processCameraProvider)) {
- final ProcessCameraProviderFlutterApiImpl flutterApi =
- new ProcessCameraProviderFlutterApiImpl(binaryMessenger, instanceManager);
- flutterApi.create(processCameraProvider, reply -> {});
- }
- result.success(instanceManager.getIdentifierForStrongReference(processCameraProvider));
- } catch (Exception e) {
- result.error(e);
- }
- },
- ContextCompat.getMainExecutor(context));
- }
-
- /** Returns cameras available to the ProcessCameraProvider. */
- @Override
- public List<Long> getAvailableCameraInfos(@NonNull Long identifier) {
- ProcessCameraProvider processCameraProvider =
- (ProcessCameraProvider) instanceManager.getInstance(identifier);
-
- List<CameraInfo> availableCameras = processCameraProvider.getAvailableCameraInfos();
- List<Long> availableCamerasIds = new ArrayList<Long>();
- final CameraInfoFlutterApiImpl cameraInfoFlutterApi =
- new CameraInfoFlutterApiImpl(binaryMessenger, instanceManager);
-
- for (CameraInfo cameraInfo : availableCameras) {
- cameraInfoFlutterApi.create(cameraInfo, result -> {});
- availableCamerasIds.add(instanceManager.getIdentifierForStrongReference(cameraInfo));
- }
- return availableCamerasIds;
- }
-}
diff --git a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/ProcessCameraProviderTest.java b/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/ProcessCameraProviderTest.java
deleted file mode 100644
index ec321f8..0000000
--- a/packages/camera/camera_android_camerax/android/src/test/java/io/flutter/plugins/camerax/ProcessCameraProviderTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-package io.flutter.plugins.camerax;
-
-import static org.junit.Assert.assertEquals;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.content.Context;
-import androidx.camera.core.CameraInfo;
-import androidx.camera.lifecycle.ProcessCameraProvider;
-import androidx.test.core.app.ApplicationProvider;
-import com.google.common.util.concurrent.SettableFuture;
-import io.flutter.plugin.common.BinaryMessenger;
-import java.util.Arrays;
-import java.util.Objects;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockedStatic;
-import org.mockito.Mockito;
-import org.mockito.junit.MockitoJUnit;
-import org.mockito.junit.MockitoRule;
-import org.mockito.stubbing.Answer;
-import org.robolectric.RobolectricTestRunner;
-
-@RunWith(RobolectricTestRunner.class)
-public class ProcessCameraProviderTest {
- @Rule public MockitoRule mockitoRule = MockitoJUnit.rule();
-
- @Mock public ProcessCameraProvider processCameraProvider;
- @Mock public BinaryMessenger mockBinaryMessenger;
-
- InstanceManager testInstanceManager;
- private Context context;
-
- @Before
- public void setUp() {
- testInstanceManager = InstanceManager.open(identifier -> {});
- context = ApplicationProvider.getApplicationContext();
- }
-
- @After
- public void tearDown() {
- testInstanceManager.close();
- }
-
- @Test
- public void getInstanceTest() {
- final ProcessCameraProviderHostApiImpl processCameraProviderHostApi =
- new ProcessCameraProviderHostApiImpl(mockBinaryMessenger, testInstanceManager, context);
- SettableFuture processCameraProviderFuture = SettableFuture.create();
- processCameraProviderFuture.set(processCameraProvider);
- final GeneratedCameraXLibrary.Result<Long> mockResult =
- mock(GeneratedCameraXLibrary.Result.class);
-
- testInstanceManager.addDartCreatedInstance(processCameraProvider, 0);
-
- try (MockedStatic<ProcessCameraProvider> mockedProcessCameraProvider =
- Mockito.mockStatic(ProcessCameraProvider.class)) {
- mockedProcessCameraProvider
- .when(() -> ProcessCameraProvider.getInstance(context))
- .thenAnswer((Answer<SettableFuture>) invocation -> processCameraProviderFuture);
-
- processCameraProviderHostApi.getInstance(mockResult);
- verify(mockResult).success(0L);
- }
- }
-
- @Test
- public void getAvailableCameraInfosTest() {
- final ProcessCameraProviderHostApiImpl processCameraProviderHostApi =
- new ProcessCameraProviderHostApiImpl(mockBinaryMessenger, testInstanceManager, context);
- final CameraInfo mockCameraInfo = mock(CameraInfo.class);
-
- testInstanceManager.addDartCreatedInstance(processCameraProvider, 0);
- testInstanceManager.addDartCreatedInstance(mockCameraInfo, 1);
-
- when(processCameraProvider.getAvailableCameraInfos()).thenReturn(Arrays.asList(mockCameraInfo));
-
- assertEquals(processCameraProviderHostApi.getAvailableCameraInfos(0L), Arrays.asList(1L));
- verify(processCameraProvider).getAvailableCameraInfos();
- }
-
- @Test
- public void flutterApiCreateTest() {
- final ProcessCameraProviderFlutterApiImpl spyFlutterApi =
- spy(new ProcessCameraProviderFlutterApiImpl(mockBinaryMessenger, testInstanceManager));
-
- spyFlutterApi.create(processCameraProvider, reply -> {});
-
- final long identifier =
- Objects.requireNonNull(
- testInstanceManager.getIdentifierForStrongReference(processCameraProvider));
- verify(spyFlutterApi).create(eq(identifier), any());
- }
-}
diff --git a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax_flutter_api_impls.dart b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax_flutter_api_impls.dart
index 9c6564a..576260c 100644
--- a/packages/camera/camera_android_camerax/lib/src/android_camera_camerax_flutter_api_impls.dart
+++ b/packages/camera/camera_android_camerax/lib/src/android_camera_camerax_flutter_api_impls.dart
@@ -6,7 +6,6 @@
import 'camera_selector.dart';
import 'camerax_library.pigeon.dart';
import 'java_object.dart';
-import 'process_camera_provider.dart';
/// Handles initialization of Flutter APIs for the Android CameraX library.
class AndroidCameraXCameraFlutterApis {
@@ -15,7 +14,6 @@
JavaObjectFlutterApiImpl? javaObjectFlutterApi,
CameraInfoFlutterApiImpl? cameraInfoFlutterApi,
CameraSelectorFlutterApiImpl? cameraSelectorFlutterApi,
- ProcessCameraProviderFlutterApiImpl? processCameraProviderFlutterApi,
}) {
this.javaObjectFlutterApi =
javaObjectFlutterApi ?? JavaObjectFlutterApiImpl();
@@ -23,8 +21,6 @@
cameraInfoFlutterApi ?? CameraInfoFlutterApiImpl();
this.cameraSelectorFlutterApi =
cameraSelectorFlutterApi ?? CameraSelectorFlutterApiImpl();
- this.processCameraProviderFlutterApi = processCameraProviderFlutterApi ??
- ProcessCameraProviderFlutterApiImpl();
}
static bool _haveBeenSetUp = false;
@@ -44,17 +40,12 @@
/// Flutter Api for [CameraSelector].
late final CameraSelectorFlutterApiImpl cameraSelectorFlutterApi;
- /// Flutter Api for [ProcessCameraProvider].
- late final ProcessCameraProviderFlutterApiImpl
- processCameraProviderFlutterApi;
-
/// Ensures all the Flutter APIs have been setup to receive calls from native code.
void ensureSetUp() {
if (!_haveBeenSetUp) {
JavaObjectFlutterApi.setup(javaObjectFlutterApi);
CameraInfoFlutterApi.setup(cameraInfoFlutterApi);
CameraSelectorFlutterApi.setup(cameraSelectorFlutterApi);
- ProcessCameraProviderFlutterApi.setup(processCameraProviderFlutterApi);
_haveBeenSetUp = true;
}
}
diff --git a/packages/camera/camera_android_camerax/lib/src/camerax_library.pigeon.dart b/packages/camera/camera_android_camerax/lib/src/camerax_library.pigeon.dart
index c0b0523..a399001 100644
--- a/packages/camera/camera_android_camerax/lib/src/camerax_library.pigeon.dart
+++ b/packages/camera/camera_android_camerax/lib/src/camerax_library.pigeon.dart
@@ -263,112 +263,3 @@
}
}
}
-
-class _ProcessCameraProviderHostApiCodec extends StandardMessageCodec {
- const _ProcessCameraProviderHostApiCodec();
-}
-
-class ProcessCameraProviderHostApi {
- /// Constructor for [ProcessCameraProviderHostApi]. The [binaryMessenger] named argument is
- /// available for dependency injection. If it is left null, the default
- /// BinaryMessenger will be used which routes to the host platform.
- ProcessCameraProviderHostApi({BinaryMessenger? binaryMessenger})
- : _binaryMessenger = binaryMessenger;
-
- final BinaryMessenger? _binaryMessenger;
-
- static const MessageCodec<Object?> codec =
- _ProcessCameraProviderHostApiCodec();
-
- Future<int> getInstance() async {
- final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.ProcessCameraProviderHostApi.getInstance', codec,
- binaryMessenger: _binaryMessenger);
- final Map<Object?, Object?>? replyMap =
- await channel.send(null) as Map<Object?, Object?>?;
- if (replyMap == null) {
- throw PlatformException(
- code: 'channel-error',
- message: 'Unable to establish connection on channel.',
- );
- } else if (replyMap['error'] != null) {
- final Map<Object?, Object?> error =
- (replyMap['error'] as Map<Object?, Object?>?)!;
- throw PlatformException(
- code: (error['code'] as String?)!,
- message: error['message'] as String?,
- details: error['details'],
- );
- } else if (replyMap['result'] == null) {
- throw PlatformException(
- code: 'null-error',
- message: 'Host platform returned null value for non-null return value.',
- );
- } else {
- return (replyMap['result'] as int?)!;
- }
- }
-
- Future<List<int?>> getAvailableCameraInfos(int arg_identifier) async {
- final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.ProcessCameraProviderHostApi.getAvailableCameraInfos',
- codec,
- binaryMessenger: _binaryMessenger);
- final Map<Object?, Object?>? replyMap =
- await channel.send(<Object?>[arg_identifier]) as Map<Object?, Object?>?;
- if (replyMap == null) {
- throw PlatformException(
- code: 'channel-error',
- message: 'Unable to establish connection on channel.',
- );
- } else if (replyMap['error'] != null) {
- final Map<Object?, Object?> error =
- (replyMap['error'] as Map<Object?, Object?>?)!;
- throw PlatformException(
- code: (error['code'] as String?)!,
- message: error['message'] as String?,
- details: error['details'],
- );
- } else if (replyMap['result'] == null) {
- throw PlatformException(
- code: 'null-error',
- message: 'Host platform returned null value for non-null return value.',
- );
- } else {
- return (replyMap['result'] as List<Object?>?)!.cast<int?>();
- }
- }
-}
-
-class _ProcessCameraProviderFlutterApiCodec extends StandardMessageCodec {
- const _ProcessCameraProviderFlutterApiCodec();
-}
-
-abstract class ProcessCameraProviderFlutterApi {
- static const MessageCodec<Object?> codec =
- _ProcessCameraProviderFlutterApiCodec();
-
- void create(int identifier);
- static void setup(ProcessCameraProviderFlutterApi? api,
- {BinaryMessenger? binaryMessenger}) {
- {
- final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.ProcessCameraProviderFlutterApi.create', codec,
- binaryMessenger: binaryMessenger);
- if (api == null) {
- channel.setMessageHandler(null);
- } else {
- channel.setMessageHandler((Object? message) async {
- assert(message != null,
- 'Argument for dev.flutter.pigeon.ProcessCameraProviderFlutterApi.create was null.');
- final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_identifier = (args[0] as int?);
- assert(arg_identifier != null,
- 'Argument for dev.flutter.pigeon.ProcessCameraProviderFlutterApi.create was null, expected non-null int.');
- api.create(arg_identifier!);
- return;
- });
- }
- }
- }
-}
diff --git a/packages/camera/camera_android_camerax/lib/src/process_camera_provider.dart b/packages/camera/camera_android_camerax/lib/src/process_camera_provider.dart
deleted file mode 100644
index e2b588d..0000000
--- a/packages/camera/camera_android_camerax/lib/src/process_camera_provider.dart
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:flutter/services.dart';
-
-import 'android_camera_camerax_flutter_api_impls.dart';
-import 'camera_info.dart';
-import 'camerax_library.pigeon.dart';
-import 'instance_manager.dart';
-import 'java_object.dart';
-
-/// Provides an object to manage the camera.
-///
-/// See https://developer.android.com/reference/androidx/camera/lifecycle/ProcessCameraProvider.
-class ProcessCameraProvider extends JavaObject {
- /// Creates a detached [ProcessCameraProvider].
- ProcessCameraProvider.detached(
- {BinaryMessenger? binaryMessenger, InstanceManager? instanceManager})
- : super.detached(
- binaryMessenger: binaryMessenger,
- instanceManager: instanceManager) {
- _api = ProcessCameraProviderHostApiImpl(
- binaryMessenger: binaryMessenger, instanceManager: instanceManager);
- AndroidCameraXCameraFlutterApis.instance.ensureSetUp();
- }
-
- late final ProcessCameraProviderHostApiImpl _api;
-
- /// Gets an instance of [ProcessCameraProvider].
- static Future<ProcessCameraProvider> getInstance(
- {BinaryMessenger? binaryMessenger, InstanceManager? instanceManager}) {
- AndroidCameraXCameraFlutterApis.instance.ensureSetUp();
- final ProcessCameraProviderHostApiImpl api =
- ProcessCameraProviderHostApiImpl(
- binaryMessenger: binaryMessenger, instanceManager: instanceManager);
-
- return api.getInstancefromInstances();
- }
-
- /// Retrieves the cameras available to the device.
- Future<List<CameraInfo>> getAvailableCameraInfos() {
- return _api.getAvailableCameraInfosFromInstances(this);
- }
-}
-
-/// Host API implementation of [ProcessCameraProvider].
-class ProcessCameraProviderHostApiImpl extends ProcessCameraProviderHostApi {
- /// Creates a [ProcessCameraProviderHostApiImpl].
- ProcessCameraProviderHostApiImpl(
- {this.binaryMessenger, InstanceManager? instanceManager})
- : super(binaryMessenger: binaryMessenger) {
- this.instanceManager = instanceManager ?? JavaObject.globalInstanceManager;
- }
-
- /// Receives binary data across the Flutter platform barrier.
- ///
- /// If it is null, the default BinaryMessenger will be used which routes to
- /// the host platform.
- final BinaryMessenger? binaryMessenger;
-
- /// Maintains instances stored to communicate with native language objects.
- late final InstanceManager instanceManager;
-
- /// Retrieves an instance of a ProcessCameraProvider from the context of
- /// the FlutterActivity.
- Future<ProcessCameraProvider> getInstancefromInstances() async {
- return instanceManager.getInstanceWithWeakReference(await getInstance())!
- as ProcessCameraProvider;
- }
-
- /// Retrives the list of CameraInfos corresponding to the available cameras.
- Future<List<CameraInfo>> getAvailableCameraInfosFromInstances(
- ProcessCameraProvider instance) async {
- int? identifier = instanceManager.getIdentifier(instance);
- identifier ??= instanceManager.addDartCreatedInstance(instance,
- onCopy: (ProcessCameraProvider original) {
- return ProcessCameraProvider.detached(
- binaryMessenger: binaryMessenger, instanceManager: instanceManager);
- });
-
- final List<int?> cameraInfos = await getAvailableCameraInfos(identifier);
- return (cameraInfos.map<CameraInfo>((int? id) =>
- instanceManager.getInstanceWithWeakReference(id!)! as CameraInfo))
- .toList();
- }
-}
-
-/// Flutter API Implementation of [ProcessCameraProvider].
-class ProcessCameraProviderFlutterApiImpl
- implements ProcessCameraProviderFlutterApi {
- /// Constructs a [ProcessCameraProviderFlutterApiImpl].
- ProcessCameraProviderFlutterApiImpl({
- this.binaryMessenger,
- InstanceManager? instanceManager,
- }) : instanceManager = instanceManager ?? JavaObject.globalInstanceManager;
-
- /// Receives binary data across the Flutter platform barrier.
- ///
- /// If it is null, the default BinaryMessenger will be used which routes to
- /// the host platform.
- final BinaryMessenger? binaryMessenger;
-
- /// Maintains instances stored to communicate with native language objects.
- final InstanceManager instanceManager;
-
- @override
- void create(int identifier) {
- instanceManager.addHostCreatedInstance(
- ProcessCameraProvider.detached(
- binaryMessenger: binaryMessenger, instanceManager: instanceManager),
- identifier,
- onCopy: (ProcessCameraProvider original) {
- return ProcessCameraProvider.detached(
- binaryMessenger: binaryMessenger, instanceManager: instanceManager);
- },
- );
- }
-}
diff --git a/packages/camera/camera_android_camerax/pigeons/camerax_library.dart b/packages/camera/camera_android_camerax/pigeons/camerax_library.dart
index 4d7d969..aace7a0 100644
--- a/packages/camera/camera_android_camerax/pigeons/camerax_library.dart
+++ b/packages/camera/camera_android_camerax/pigeons/camerax_library.dart
@@ -57,16 +57,3 @@
abstract class CameraSelectorFlutterApi {
void create(int identifier, int? lensFacing);
}
-
-@HostApi(dartHostTestHandler: 'TestProcessCameraProviderHostApi')
-abstract class ProcessCameraProviderHostApi {
- @async
- int getInstance();
-
- List<int> getAvailableCameraInfos(int identifier);
-}
-
-@FlutterApi()
-abstract class ProcessCameraProviderFlutterApi {
- void create(int identifier);
-}
diff --git a/packages/camera/camera_android_camerax/test/process_camera_provider_test.dart b/packages/camera/camera_android_camerax/test/process_camera_provider_test.dart
deleted file mode 100644
index 65e7d00..0000000
--- a/packages/camera/camera_android_camerax/test/process_camera_provider_test.dart
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2013 The Flutter Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-import 'package:camera_android_camerax/src/camera_info.dart';
-import 'package:camera_android_camerax/src/instance_manager.dart';
-import 'package:camera_android_camerax/src/process_camera_provider.dart';
-import 'package:flutter_test/flutter_test.dart';
-import 'package:mockito/annotations.dart';
-import 'package:mockito/mockito.dart';
-
-import 'process_camera_provider_test.mocks.dart';
-import 'test_camerax_library.pigeon.dart';
-
-@GenerateMocks(<Type>[TestProcessCameraProviderHostApi])
-void main() {
- TestWidgetsFlutterBinding.ensureInitialized();
-
- group('ProcessCameraProvider', () {
- tearDown(() => TestProcessCameraProviderHostApi.setup(null));
-
- test('getInstanceTest', () async {
- final MockTestProcessCameraProviderHostApi mockApi =
- MockTestProcessCameraProviderHostApi();
- TestProcessCameraProviderHostApi.setup(mockApi);
-
- final InstanceManager instanceManager = InstanceManager(
- onWeakReferenceRemoved: (_) {},
- );
- final ProcessCameraProvider processCameraProvider =
- ProcessCameraProvider.detached(
- instanceManager: instanceManager,
- );
-
- instanceManager.addHostCreatedInstance(
- processCameraProvider,
- 0,
- onCopy: (_) => ProcessCameraProvider.detached(),
- );
-
- when(mockApi.getInstance()).thenAnswer((_) async => 0);
- expect(
- await ProcessCameraProvider.getInstance(
- instanceManager: instanceManager),
- equals(processCameraProvider));
- verify(mockApi.getInstance());
- });
-
- test('getAvailableCameraInfosTest', () async {
- final MockTestProcessCameraProviderHostApi mockApi =
- MockTestProcessCameraProviderHostApi();
- TestProcessCameraProviderHostApi.setup(mockApi);
-
- final InstanceManager instanceManager = InstanceManager(
- onWeakReferenceRemoved: (_) {},
- );
- final ProcessCameraProvider processCameraProvider =
- ProcessCameraProvider.detached(
- instanceManager: instanceManager,
- );
-
- instanceManager.addHostCreatedInstance(
- processCameraProvider,
- 0,
- onCopy: (_) => ProcessCameraProvider.detached(),
- );
- final CameraInfo fakeAvailableCameraInfo =
- CameraInfo.detached(instanceManager: instanceManager);
- instanceManager.addHostCreatedInstance(
- fakeAvailableCameraInfo,
- 1,
- onCopy: (_) => CameraInfo.detached(),
- );
-
- when(mockApi.getAvailableCameraInfos(0)).thenReturn(<int>[1]);
- expect(await processCameraProvider.getAvailableCameraInfos(),
- equals(<CameraInfo>[fakeAvailableCameraInfo]));
- verify(mockApi.getAvailableCameraInfos(0));
- });
-
- test('flutterApiCreateTest', () {
- final InstanceManager instanceManager = InstanceManager(
- onWeakReferenceRemoved: (_) {},
- );
- final ProcessCameraProviderFlutterApiImpl flutterApi =
- ProcessCameraProviderFlutterApiImpl(
- instanceManager: instanceManager,
- );
-
- flutterApi.create(0);
-
- expect(instanceManager.getInstanceWithWeakReference(0),
- isA<ProcessCameraProvider>());
- });
- });
-}
diff --git a/packages/camera/camera_android_camerax/test/process_camera_provider_test.mocks.dart b/packages/camera/camera_android_camerax/test/process_camera_provider_test.mocks.dart
deleted file mode 100644
index 9fcfe69..0000000
--- a/packages/camera/camera_android_camerax/test/process_camera_provider_test.mocks.dart
+++ /dev/null
@@ -1,40 +0,0 @@
-// Mocks generated by Mockito 5.3.0 from annotations
-// in camera_android_camerax/test/process_camera_provider_test.dart.
-// Do not manually edit this file.
-
-// ignore_for_file: no_leading_underscores_for_library_prefixes
-import 'dart:async' as _i3;
-
-import 'package:mockito/mockito.dart' as _i1;
-
-import 'test_camerax_library.pigeon.dart' as _i2;
-
-// ignore_for_file: type=lint
-// ignore_for_file: avoid_redundant_argument_values
-// ignore_for_file: avoid_setters_without_getters
-// ignore_for_file: comment_references
-// ignore_for_file: implementation_imports
-// ignore_for_file: invalid_use_of_visible_for_testing_member
-// ignore_for_file: prefer_const_constructors
-// ignore_for_file: unnecessary_parenthesis
-// ignore_for_file: camel_case_types
-// ignore_for_file: subtype_of_sealed_class
-
-/// A class which mocks [TestProcessCameraProviderHostApi].
-///
-/// See the documentation for Mockito's code generation for more information.
-class MockTestProcessCameraProviderHostApi extends _i1.Mock
- implements _i2.TestProcessCameraProviderHostApi {
- MockTestProcessCameraProviderHostApi() {
- _i1.throwOnMissingStub(this);
- }
-
- @override
- _i3.Future<int> getInstance() =>
- (super.noSuchMethod(Invocation.method(#getInstance, []),
- returnValue: _i3.Future<int>.value(0)) as _i3.Future<int>);
- @override
- List<int?> getAvailableCameraInfos(int? identifier) => (super.noSuchMethod(
- Invocation.method(#getAvailableCameraInfos, [identifier]),
- returnValue: <int?>[]) as List<int?>);
-}
diff --git a/packages/camera/camera_android_camerax/test/test_camerax_library.pigeon.dart b/packages/camera/camera_android_camerax/test/test_camerax_library.pigeon.dart
index 2196b73..b10e14e 100644
--- a/packages/camera/camera_android_camerax/test/test_camerax_library.pigeon.dart
+++ b/packages/camera/camera_android_camerax/test/test_camerax_library.pigeon.dart
@@ -135,53 +135,3 @@
}
}
}
-
-class _TestProcessCameraProviderHostApiCodec extends StandardMessageCodec {
- const _TestProcessCameraProviderHostApiCodec();
-}
-
-abstract class TestProcessCameraProviderHostApi {
- static const MessageCodec<Object?> codec =
- _TestProcessCameraProviderHostApiCodec();
-
- Future<int> getInstance();
- List<int?> getAvailableCameraInfos(int identifier);
- static void setup(TestProcessCameraProviderHostApi? api,
- {BinaryMessenger? binaryMessenger}) {
- {
- final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.ProcessCameraProviderHostApi.getInstance', codec,
- binaryMessenger: binaryMessenger);
- if (api == null) {
- channel.setMockMessageHandler(null);
- } else {
- channel.setMockMessageHandler((Object? message) async {
- // ignore message
- final int output = await api.getInstance();
- return <Object?, Object?>{'result': output};
- });
- }
- }
- {
- final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
- 'dev.flutter.pigeon.ProcessCameraProviderHostApi.getAvailableCameraInfos',
- codec,
- binaryMessenger: binaryMessenger);
- if (api == null) {
- channel.setMockMessageHandler(null);
- } else {
- channel.setMockMessageHandler((Object? message) async {
- assert(message != null,
- 'Argument for dev.flutter.pigeon.ProcessCameraProviderHostApi.getAvailableCameraInfos was null.');
- final List<Object?> args = (message as List<Object?>?)!;
- final int? arg_identifier = (args[0] as int?);
- assert(arg_identifier != null,
- 'Argument for dev.flutter.pigeon.ProcessCameraProviderHostApi.getAvailableCameraInfos was null, expected non-null int.');
- final List<int?> output =
- api.getAvailableCameraInfos(arg_identifier!);
- return <Object?, Object?>{'result': output};
- });
- }
- }
- }
-}