Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
73 commits
Select commit Hold shift + click to select a range
6125eca
Recreating image capture impl from flutter/plugins
camsim99 Feb 23, 2023
5be1371
Merge remote-tracking branch 'upstream/main' into camx_imgcap
camsim99 Feb 23, 2023
b2fce3d
Fix integration tesT
camsim99 Feb 23, 2023
ed62a9a
Merge branch 'main' into camx_imgcap
camsim99 Feb 23, 2023
2e3027b
Analyzer pt 2
camsim99 Feb 23, 2023
fbd3fe5
Merge branch 'camx_imgcap' of github.com:camsim99/packages into camx_…
camsim99 Feb 23, 2023
dfa477e
Personal cleanup
camsim99 Feb 23, 2023
a651b92
Add initialization of controller
camsim99 Feb 24, 2023
884fd6c
Merge remote-tracking branch 'upstream/main' into camx_imgcap
camsim99 Feb 24, 2023
d5f8b91
Modify some docs
camsim99 Feb 24, 2023
060b7e5
Address review
camsim99 Mar 2, 2023
ff50c70
Merge remote-tracking branch 'upstream/main' into camx_imgcap
camsim99 Mar 2, 2023
fe6f1fc
Fix analyze
camsim99 Mar 2, 2023
e2643ae
Update packages/camera/camera_android_camerax/android/src/main/java/i…
camsim99 Mar 3, 2023
b7194f7
Update packages/camera/camera_android_camerax/lib/src/image_capture.dart
camsim99 Mar 3, 2023
dadc230
Start addressing review
camsim99 Mar 6, 2023
d15e1d4
Finish addressing review
camsim99 Mar 7, 2023
6dc2b77
Fix analyze
camsim99 Mar 7, 2023
f826b62
Generate mocks on stable
camsim99 Mar 7, 2023
0f7f29a
Fix/add tests
camsim99 Mar 7, 2023
1e9739b
Add isBound dart test
camsim99 Mar 7, 2023
83d6969
Start impl
camsim99 Mar 13, 2023
0f387e2
Add image analysis files
camsim99 Mar 13, 2023
0bf4f9a
Start filling in image streaming info
camsim99 Mar 13, 2023
97912fc
More dev
camsim99 Mar 15, 2023
b889e98
Dev
camsim99 Mar 16, 2023
e96c2ec
Fix flutter api
camsim99 Mar 20, 2023
cc2fcbe
Binding refactor
camsim99 Mar 22, 2023
00c51b1
Merge remote-tracking branch 'upstream/main' into camx_imgstr
camsim99 Mar 24, 2023
1e13e53
Undo format changes and change to example
camsim99 Mar 24, 2023
c37db5c
Start fixing ci errors
camsim99 Mar 24, 2023
80753a9
Fix fl analyze
camsim99 Mar 24, 2023
9edf9ac
Merge remote-tracking branch 'upstream/main' into camx_imgstr
camsim99 Mar 27, 2023
7ce175e
Finish implementation
camsim99 Mar 27, 2023
cb62063
Generate mocks
camsim99 Mar 27, 2023
8ccc7ed
Start adding tests
camsim99 Mar 28, 2023
2220bda
Merge remote-tracking branch 'upstream/main' into camx_imgstr
camsim99 Mar 28, 2023
a27cd4c
Start adding tests
camsim99 Mar 28, 2023
9d74956
Add file
camsim99 Mar 28, 2023
64b190e
Add java test
camsim99 Mar 28, 2023
fea7e98
Add tests
camsim99 Mar 28, 2023
22f271b
self review
camsim99 Mar 28, 2023
3867ce0
Fix analyzer and formatting
camsim99 Mar 29, 2023
03a2f6d
Merge remote-tracking branch 'upstream/main' into camx_imgstr
camsim99 Mar 29, 2023
8d08cff
Wrapping with generator
camsim99 Apr 11, 2023
c7c2e2f
Add more implementation
camsim99 Apr 14, 2023
f478e31
Correct autogenerator on dart classes
camsim99 Apr 18, 2023
9877601
Correct generator on java files
camsim99 Apr 18, 2023
f334259
Fix plugin code minus todos
camsim99 Apr 19, 2023
752c8ba
Make fixes required to build apk
camsim99 Apr 19, 2023
3dbd87d
Merge remote-tracking branch 'upstream/main' into camx_imgstr
camsim99 Apr 19, 2023
62b1925
Fix java tests
camsim99 Apr 19, 2023
14cc602
Fix java test names
camsim99 Apr 19, 2023
1f420da
Get feature working
camsim99 Apr 19, 2023
c550fc0
Fix plugin test
camsim99 Apr 21, 2023
e3fa142
Fix analyzer test
camsim99 Apr 21, 2023
8dc333c
Fix plane proxy test
camsim99 Apr 21, 2023
d5bfdac
Fix image proxy test
camsim99 Apr 21, 2023
6034265
Fix image analysis test
camsim99 Apr 21, 2023
a719034
Fix analyze
camsim99 Apr 22, 2023
193ce9c
Format
camsim99 Apr 22, 2023
914e244
Change getters to params, fix java tests
camsim99 Apr 26, 2023
b704ff5
Fix analyze, dart tests
camsim99 Apr 26, 2023
6bae352
Add nonnull annotation for lint
camsim99 Apr 26, 2023
e4f522e
Bump test rerun
camsim99 Apr 26, 2023
9d70b2e
Merge remote-tracking branch 'upstream/main' into camx_imgstr
camsim99 Apr 26, 2023
f2a6167
Add annotations, try fix for test
camsim99 Apr 27, 2023
c42f7a1
Formatting
camsim99 Apr 27, 2023
402af7b
Add annotation
camsim99 Apr 27, 2023
c711743
Revert instance manager integration test changes
camsim99 Apr 27, 2023
5091aa3
Address review, mock test instance manager host api for failing test
camsim99 Apr 27, 2023
c6c5753
Remove asserts in plugin code
camsim99 Apr 27, 2023
619a165
Fix comment
camsim99 Apr 28, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Merge remote-tracking branch 'upstream/main' into camx_imgstr
  • Loading branch information
camsim99 committed Mar 24, 2023
commit 00c51b1796db0702694bc1b435e70ed905d3ad43
3 changes: 3 additions & 0 deletions packages/camera/camera_android_camerax/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,7 @@
* Adds implementation of availableCameras().
* Implements camera preview, createCamera, initializeCamera, onCameraError, onDeviceOrientationChanged, and onCameraInitialized.
* Adds integration test to plugin.
* Bump CameraX version to 1.3.0-alpha04.
* Fixes instance manager hot restart behavior and fixes Java casting issue.
* Implements image capture.
* Implements image streaming.
Original file line number Diff line number Diff line change
Expand Up @@ -307,6 +307,43 @@ public interface Result<T> {
void success(T result);
void error(Throwable error);
}
private static class InstanceManagerHostApiCodec extends StandardMessageCodec {
public static final InstanceManagerHostApiCodec INSTANCE = new InstanceManagerHostApiCodec();
private InstanceManagerHostApiCodec() {}
}

/** Generated interface from Pigeon that represents a handler of messages from Flutter.*/
public interface InstanceManagerHostApi {
void clear();

/** The codec used by InstanceManagerHostApi. */
static MessageCodec<Object> getCodec() {
return InstanceManagerHostApiCodec.INSTANCE;
}

/** Sets up an instance of `InstanceManagerHostApi` to handle messages through the `binaryMessenger`. */
static void setup(BinaryMessenger binaryMessenger, InstanceManagerHostApi api) {
{
BasicMessageChannel<Object> channel =
new BasicMessageChannel<>(binaryMessenger, "dev.flutter.pigeon.InstanceManagerHostApi.clear", getCodec());
if (api != null) {
channel.setMessageHandler((message, reply) -> {
Map<String, Object> wrapped = new HashMap<>();
try {
api.clear();
wrapped.put("result", null);
}
catch (Error | RuntimeException exception) {
wrapped.put("error", wrapError(exception));
}
reply.reply(wrapped);
});
} else {
channel.setMessageHandler(null);
}
}
}
}
private static class JavaObjectHostApiCodec extends StandardMessageCodec {
public static final JavaObjectHostApiCodec INSTANCE = new JavaObjectHostApiCodec();
private JavaObjectHostApiCodec() {}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,7 @@ public void setFlashMode_setsFlashModeOfImageCaptureInstance() {
mock(ImageCapture.OutputFileOptions.class);
final ImageCapture.OnImageSavedCallback mockOnImageSavedCallback =
mock(ImageCapture.OnImageSavedCallback.class);
@SuppressWarnings("unchecked")
final GeneratedCameraXLibrary.Result<String> mockResult =
mock(GeneratedCameraXLibrary.Result.class);

Expand Down Expand Up @@ -148,6 +149,7 @@ public void takePicture_sendsErrorWhenTemporaryFileCannotBeCreated() {
final Long imageCaptureIdentifier = 6L;
final File mockOutputDir = mock(File.class);
final File mockTemporaryCaptureFile = mock(File.class);
@SuppressWarnings("unchecked")
final GeneratedCameraXLibrary.Result<String> mockResult =
mock(GeneratedCameraXLibrary.Result.class);
final IOException fileCreationException = new IOException();
Expand Down Expand Up @@ -181,6 +183,7 @@ public void takePicture_usesExpectedOnImageSavedCallback() {
final SystemServicesFlutterApiImpl mockSystemServicesFlutterApiImpl =
mock(SystemServicesFlutterApiImpl.class);
final File mockFile = mock(File.class);
@SuppressWarnings("unchecked")
final GeneratedCameraXLibrary.Result<String> mockResult =
mock(GeneratedCameraXLibrary.Result.class);
final ImageCapture.OutputFileResults mockOutputFileResults =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ class AndroidCameraCameraX extends CameraPlatform {
@visibleForTesting
ImageCapture? imageCapture;

///
/// The [ImageAnalysis] instance that can be configured to analyze individual
/// frames.
ImageAnalysis? imageAnalysis;

/// The [CameraSelector] used to configure the [processCameraProvider] to use
Expand Down Expand Up @@ -311,6 +312,7 @@ class AndroidCameraCameraX extends CameraPlatform {
/// listen again later.
///
/// [cameraId] and [options] are not used.
@override
Stream<CameraImageData> onStreamedFrameAvailable(int cameraId,
{CameraImageStreamOptions? options}) {
assert(processCameraProvider != null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,43 @@ class ImageInformation {
}
}

class _InstanceManagerHostApiCodec extends StandardMessageCodec {
const _InstanceManagerHostApiCodec();
}

class InstanceManagerHostApi {
/// Constructor for [InstanceManagerHostApi]. 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.
InstanceManagerHostApi({BinaryMessenger? binaryMessenger}) : _binaryMessenger = binaryMessenger;

final BinaryMessenger? _binaryMessenger;

static const MessageCodec<Object?> codec = _InstanceManagerHostApiCodec();

Future<void> clear() async {
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.InstanceManagerHostApi.clear', 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 {
return;
}
}
}

class _JavaObjectHostApiCodec extends StandardMessageCodec {
const _JavaObjectHostApiCodec();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,8 @@ class ImageCaptureHostApiImpl extends ImageCaptureHostApi {

/// Sets the flash mode for the specified [ImageCapture] instance to take
/// a picture with.
void setFlashModeFromInstance(ImageCapture instance, int flashMode) {
Future<void> setFlashModeFromInstance(
ImageCapture instance, int flashMode) async {
final int? identifier = instanceManager.getIdentifier(instance);
assert(identifier != null,
'No ImageCapture has the identifer of that requested to get the resolution information for.');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,14 @@ class ImageInformation {
List<ImagePlaneInformation?> imagePlanesInformation;
}

@HostApi(dartHostTestHandler: 'TestInstanceManagerHostApi')
abstract class InstanceManagerHostApi {
/// Clear the native `InstanceManager`.
///
/// This is typically only used after a hot restart.
void clear();
}

@HostApi(dartHostTestHandler: 'TestJavaObjectHostApi')
abstract class JavaObjectHostApi {
void dispose(int identifier);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ void main() {
instanceManager.addHostCreatedInstance(
imageCapture,
0,
onCopy: (_) => ImageCapture.detached(),
onCopy: (_) => ImageCapture.detached(instanceManager: instanceManager),
);

imageCapture.setFlashMode(flashMode);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,17 +16,14 @@ import 'package:camera_android_camerax/src/camerax_library.g.dart';
class _TestInstanceManagerHostApiCodec extends StandardMessageCodec {
const _TestInstanceManagerHostApiCodec();
}

abstract class TestInstanceManagerHostApi {
static const MessageCodec<Object?> codec = _TestInstanceManagerHostApiCodec();

void clear();
static void setup(TestInstanceManagerHostApi? api,
{BinaryMessenger? binaryMessenger}) {
static void setup(TestInstanceManagerHostApi? api, {BinaryMessenger? binaryMessenger}) {
{
final BasicMessageChannel<Object?> channel = BasicMessageChannel<Object?>(
'dev.flutter.pigeon.InstanceManagerHostApi.clear', codec,
binaryMessenger: binaryMessenger);
'dev.flutter.pigeon.InstanceManagerHostApi.clear', codec, binaryMessenger: binaryMessenger);
if (api == null) {
channel.setMockMessageHandler(null);
} else {
Expand Down
You are viewing a condensed version of this merge commit. You can view the full changes here.