[camera] Removed the microphone permission request from availableCameras on Web (#4263)
I've removed the microphone permission request from availableCameras on Web.
Adding an additional parameter would break either web or android/ios, so in my opinion it is better to change the web behavior.
Changes were made based on this issue: https://github.com/flutter/flutter/issues/112277
diff --git a/packages/camera/camera_web/CHANGELOG.md b/packages/camera/camera_web/CHANGELOG.md
index 1d736b0..e820f45 100644
--- a/packages/camera/camera_web/CHANGELOG.md
+++ b/packages/camera/camera_web/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.3.2
+
+* Changes `availableCameras` to not ask for the microphone permission.
+
## 0.3.1+4
* Removes obsolete null checks on non-nullable values.
diff --git a/packages/camera/camera_web/example/integration_test/camera_web_test.dart b/packages/camera/camera_web/example/integration_test/camera_web_test.dart
index 784249e..6c73bcf 100644
--- a/packages/camera/camera_web/example/integration_test/camera_web_test.dart
+++ b/packages/camera/camera_web/example/integration_test/camera_web_test.dart
@@ -98,24 +98,18 @@
);
});
- testWidgets('requests video and audio permissions',
- (WidgetTester tester) async {
+ testWidgets('requests video permissions', (WidgetTester tester) async {
final List<CameraDescription> _ =
await CameraPlatform.instance.availableCameras();
verify(
- () => cameraService.getMediaStreamForOptions(
- const CameraOptions(
- audio: AudioConstraints(enabled: true),
- ),
- ),
+ () => cameraService.getMediaStreamForOptions(const CameraOptions()),
).called(1);
});
testWidgets(
'releases the camera stream '
- 'used to request video and audio permissions',
- (WidgetTester tester) async {
+ 'used to request video permissions', (WidgetTester tester) async {
final MockMediaStreamTrack videoTrack = MockMediaStreamTrack();
bool videoTrackStopped = false;
@@ -124,11 +118,7 @@
});
when(
- () => cameraService.getMediaStreamForOptions(
- const CameraOptions(
- audio: AudioConstraints(enabled: true),
- ),
- ),
+ () => cameraService.getMediaStreamForOptions(const CameraOptions()),
).thenAnswer(
(_) => Future<MediaStream>.value(
FakeMediaStream(<MediaStreamTrack>[videoTrack]),
diff --git a/packages/camera/camera_web/lib/src/camera_web.dart b/packages/camera/camera_web/lib/src/camera_web.dart
index 52fdc1c..be41e7b 100644
--- a/packages/camera/camera_web/lib/src/camera_web.dart
+++ b/packages/camera/camera_web/lib/src/camera_web.dart
@@ -96,15 +96,11 @@
);
}
- // Request video and audio permissions.
+ // Request video permissions only.
final html.MediaStream cameraStream =
- await _cameraService.getMediaStreamForOptions(
- const CameraOptions(
- audio: AudioConstraints(enabled: true),
- ),
- );
+ await _cameraService.getMediaStreamForOptions(const CameraOptions());
- // Release the camera stream used to request video and audio permissions.
+ // Release the camera stream used to request video permissions.
cameraStream
.getVideoTracks()
.forEach((html.MediaStreamTrack videoTrack) => videoTrack.stop());
diff --git a/packages/camera/camera_web/pubspec.yaml b/packages/camera/camera_web/pubspec.yaml
index 382444d..19148a4 100644
--- a/packages/camera/camera_web/pubspec.yaml
+++ b/packages/camera/camera_web/pubspec.yaml
@@ -2,7 +2,7 @@
description: A Flutter plugin for getting information about and controlling the camera on Web.
repository: https://github.com/flutter/packages/tree/main/packages/camera/camera_web
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+camera%22
-version: 0.3.1+4
+version: 0.3.2
environment:
sdk: ">=2.18.0 <4.0.0"