Skip to content

Commit e5f8325

Browse files
[camera_android_camerax] Removes internal native library Dart proxy (#10536)
ProxyApis now * Generate a Dart `PigeonOverrides` class that can override constructors and static methods. * Use a test `PigeonInstanceManager` that doesn't make any message calls. This removes the manually written proxy and replaces its use in tests with `PigeonOverrides`. ## 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.
1 parent 33a9a81 commit e5f8325

File tree

10 files changed

+2051
-5739
lines changed

10 files changed

+2051
-5739
lines changed

packages/camera/camera_android_camerax/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
## 0.6.26
2+
3+
* Removes internal native library Dart proxy.
4+
15
## 0.6.25+1
26

37
* Bumps kotlin_version to 2.2.21.

packages/camera/camera_android_camerax/android/src/main/java/io/flutter/plugins/camerax/CameraXLibrary.g.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright 2013 The Flutter Authors
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
4-
// Autogenerated from Pigeon (v26.1.0), do not edit directly.
4+
// Autogenerated from Pigeon (v26.1.2), do not edit directly.
55
// See also: https://pub.dev/packages/pigeon
66
@file:Suppress("UNCHECKED_CAST", "ArrayInDataClass")
77

@@ -213,7 +213,7 @@ class CameraXLibraryPigeonInstanceManager(
213213
}
214214

215215
/** Retrieves the instance associated with identifier, if present, otherwise `null`. */
216-
fun <T> getInstance(identifier: Long): T? {
216+
fun <T : Any> getInstance(identifier: Long): T? {
217217
logWarningIfFinalizationListenerHasStopped()
218218
val instance = weakInstances[identifier] as IdentityWeakReference<T>?
219219
return instance?.get()

packages/camera/camera_android_camerax/lib/src/android_camera_camerax.dart

Lines changed: 70 additions & 94 deletions
Large diffs are not rendered by default.

packages/camera/camera_android_camerax/lib/src/camerax_library.dart

Lines changed: 40 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,46 @@ import 'camerax_library.g.dart' as camerax;
99

1010
export 'camerax_library.g.dart' hide CameraInfo, LiveData, Observer;
1111

12+
/// Provides overrides for the constructors and static members of classes that
13+
/// extend Dart proxy classes.
14+
///
15+
/// Intended to be similar to [camerax.PigeonOverrides].
16+
///
17+
/// This is only intended to be used with unit tests to prevent errors from
18+
/// making message calls in a unit test.
19+
///
20+
/// See [GenericsPigeonOverrides.reset] to set all overrides back to null.
21+
@visibleForTesting
22+
final class GenericsPigeonOverrides {
23+
/// Overrides [Observer.new].
24+
static Observer<T> Function<T>({
25+
required void Function(Observer<T> pigeonInstance, T value) onChanged,
26+
})?
27+
observerNew;
28+
29+
/// Sets all overridden ProxyApi class members to null.
30+
static void reset() {
31+
observerNew = null;
32+
}
33+
}
34+
1235
/// Handles adding support for generics to the API wrapper.
1336
///
1437
/// APIs wrapped with the pigeon ProxyAPI system doesn't support generics, so
1538
/// this handles using subclasses to add support.
16-
void setUpGenerics({
17-
BinaryMessenger? pigeonBinaryMessenger,
18-
camerax.PigeonInstanceManager? pigeonInstanceManager,
19-
}) {
39+
void setUpGenerics({BinaryMessenger? pigeonBinaryMessenger}) {
2040
camerax.LiveData.pigeon_setUpMessageHandlers(
2141
pigeon_newInstance: (camerax.LiveDataSupportedType type) {
2242
switch (type) {
2343
case camerax.LiveDataSupportedType.cameraState:
2444
return LiveData<camerax.CameraState>.detached(
2545
type: type,
2646
pigeon_binaryMessenger: pigeonBinaryMessenger,
27-
pigeon_instanceManager: pigeonInstanceManager,
2847
);
2948
case camerax.LiveDataSupportedType.zoomState:
3049
return LiveData<camerax.ZoomState>.detached(
3150
type: type,
3251
pigeon_binaryMessenger: pigeonBinaryMessenger,
33-
pigeon_instanceManager: pigeonInstanceManager,
3452
);
3553
}
3654
},
@@ -43,7 +61,6 @@ void setUpGenerics({
4361
sensorRotationDegrees: sensorRotationDegrees,
4462
exposureState: exposureState,
4563
pigeon_binaryMessenger: pigeonBinaryMessenger,
46-
pigeon_instanceManager: pigeonInstanceManager,
4764
);
4865
},
4966
);
@@ -87,8 +104,6 @@ class CameraInfo extends camerax.CameraInfo {
87104
required super.exposureState,
88105
// ignore: non_constant_identifier_names
89106
super.pigeon_binaryMessenger,
90-
// ignore: non_constant_identifier_names
91-
super.pigeon_instanceManager,
92107
}) : super.pigeon_detached();
93108

94109
@override
@@ -108,7 +123,6 @@ class CameraInfo extends camerax.CameraInfo {
108123
sensorRotationDegrees: sensorRotationDegrees,
109124
exposureState: exposureState,
110125
pigeon_binaryMessenger: pigeon_binaryMessenger,
111-
pigeon_instanceManager: pigeon_instanceManager,
112126
);
113127
}
114128
}
@@ -130,8 +144,6 @@ class LiveData<T> extends camerax.LiveData {
130144
required super.type,
131145
// ignore: non_constant_identifier_names
132146
super.pigeon_binaryMessenger,
133-
// ignore: non_constant_identifier_names
134-
super.pigeon_instanceManager,
135147
}) : super.pigeon_detached();
136148

137149
@override
@@ -150,7 +162,6 @@ class LiveData<T> extends camerax.LiveData {
150162
return LiveData<T>.detached(
151163
type: type,
152164
pigeon_binaryMessenger: pigeon_binaryMessenger,
153-
pigeon_instanceManager: pigeon_instanceManager,
154165
);
155166
}
156167
}
@@ -160,12 +171,25 @@ class LiveData<T> extends camerax.LiveData {
160171
/// See https://developer.android.com/reference/androidx/lifecycle/Observer.
161172
class Observer<T> extends camerax.Observer {
162173
/// Constructs an [Observer].
163-
Observer({
174+
factory Observer({
175+
required void Function(Observer<T> instance, T value) onChanged,
176+
BinaryMessenger? binaryMessenger,
177+
}) {
178+
if (GenericsPigeonOverrides.observerNew != null) {
179+
return GenericsPigeonOverrides.observerNew!(onChanged: onChanged);
180+
}
181+
return Observer<T>.pigeonNew(
182+
pigeon_binaryMessenger: binaryMessenger,
183+
onChanged: onChanged,
184+
);
185+
}
186+
187+
/// Constructs an [Observer].
188+
@protected
189+
Observer.pigeonNew({
164190
required void Function(Observer<T> instance, T value) onChanged,
165191
// ignore: non_constant_identifier_names
166192
super.pigeon_binaryMessenger,
167-
// ignore: non_constant_identifier_names
168-
super.pigeon_instanceManager,
169193
}) : _genericOnChanged = onChanged,
170194
super.pigeon_new(
171195
onChanged: (camerax.Observer instance, Object value) {
@@ -181,8 +205,6 @@ class Observer<T> extends camerax.Observer {
181205
required void Function(Observer<T> instance, T value) onChanged,
182206
// ignore: non_constant_identifier_names
183207
super.pigeon_binaryMessenger,
184-
// ignore: non_constant_identifier_names
185-
super.pigeon_instanceManager,
186208
}) : _genericOnChanged = onChanged,
187209
super.pigeon_detached(
188210
onChanged: (camerax.Observer instance, Object value) {
@@ -198,7 +220,6 @@ class Observer<T> extends camerax.Observer {
198220
return Observer<T>.detached(
199221
onChanged: _genericOnChanged,
200222
pigeon_binaryMessenger: pigeon_binaryMessenger,
201-
pigeon_instanceManager: pigeon_instanceManager,
202223
);
203224
}
204225
}

packages/camera/camera_android_camerax/lib/src/camerax_library.g.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
// Copyright 2013 The Flutter Authors
22
// Use of this source code is governed by a BSD-style license that can be
33
// found in the LICENSE file.
4-
// Autogenerated from Pigeon (v26.1.0), do not edit directly.
4+
// Autogenerated from Pigeon (v26.1.2), do not edit directly.
55
// See also: https://pub.dev/packages/pigeon
66
// ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import, no_leading_underscores_for_local_identifiers
77

0 commit comments

Comments
 (0)