Skip to content

Commit

Permalink
[camera] Removed the microphone permission request from availableCame…
Browse files Browse the repository at this point in the history
…ras 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: flutter/flutter#112277
  • Loading branch information
maciejbrzezinski authored Jul 31, 2023
1 parent 60e9a54 commit 9074ea9
Show file tree
Hide file tree
Showing 4 changed files with 12 additions and 22 deletions.
4 changes: 4 additions & 0 deletions packages/camera/camera_web/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,24 +98,18 @@ void main() {
);
});

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;
Expand All @@ -124,11 +118,7 @@ void main() {
});

when(
() => cameraService.getMediaStreamForOptions(
const CameraOptions(
audio: AudioConstraints(enabled: true),
),
),
() => cameraService.getMediaStreamForOptions(const CameraOptions()),
).thenAnswer(
(_) => Future<MediaStream>.value(
FakeMediaStream(<MediaStreamTrack>[videoTrack]),
Expand Down
10 changes: 3 additions & 7 deletions packages/camera/camera_web/lib/src/camera_web.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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());
Expand Down
2 changes: 1 addition & 1 deletion packages/camera/camera_web/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down

0 comments on commit 9074ea9

Please sign in to comment.