From 9074ea9e382561c03be9f65fb5f853255f647e54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20Brzezi=C5=84ski?= <34410554+maciejbrzezinski@users.noreply.github.com> Date: Mon, 31 Jul 2023 17:27:51 +0200 Subject: [PATCH] [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 --- packages/camera/camera_web/CHANGELOG.md | 4 ++++ .../integration_test/camera_web_test.dart | 18 ++++-------------- .../camera/camera_web/lib/src/camera_web.dart | 10 +++------- packages/camera/camera_web/pubspec.yaml | 2 +- 4 files changed, 12 insertions(+), 22 deletions(-) diff --git a/packages/camera/camera_web/CHANGELOG.md b/packages/camera/camera_web/CHANGELOG.md index 1d736b0ac5..e820f450fe 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 784249e684..6c73bcf76b 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 @@ void main() { ); }); - testWidgets('requests video and audio permissions', - (WidgetTester tester) async { + testWidgets('requests video permissions', (WidgetTester tester) async { final List _ = 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 @@ void main() { }); when( - () => cameraService.getMediaStreamForOptions( - const CameraOptions( - audio: AudioConstraints(enabled: true), - ), - ), + () => cameraService.getMediaStreamForOptions(const CameraOptions()), ).thenAnswer( (_) => Future.value( FakeMediaStream([videoTrack]), diff --git a/packages/camera/camera_web/lib/src/camera_web.dart b/packages/camera/camera_web/lib/src/camera_web.dart index 52fdc1c3f8..be41e7b9a8 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 @@ class CameraPlugin extends CameraPlatform { ); } - // 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 382444d362..19148a4fcd 100644 --- a/packages/camera/camera_web/pubspec.yaml +++ b/packages/camera/camera_web/pubspec.yaml @@ -2,7 +2,7 @@ name: camera_web 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"