From 7a9b3ec709b5f7fa1f7216ff53e59e9b4c9e2248 Mon Sep 17 00:00:00 2001 From: Louis-Michel Mathurin Date: Thu, 15 Oct 2020 14:24:32 -0400 Subject: [PATCH 1/2] Replace html_dart2js implementation with JS --- lib/src/web/mediadevices_impl.dart | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/lib/src/web/mediadevices_impl.dart b/lib/src/web/mediadevices_impl.dart index 702e36b83c..383eee6756 100644 --- a/lib/src/web/mediadevices_impl.dart +++ b/lib/src/web/mediadevices_impl.dart @@ -24,8 +24,20 @@ class MediaDevicesWeb extends MediaDevices { mediaConstraints.putIfAbsent('audio', () => false); final mediaDevices = html.window.navigator.mediaDevices; - final jsStream = await mediaDevices.getUserMedia(mediaConstraints); - return MediaStreamWeb(jsStream, 'local'); + + if (jsutil.hasProperty(mediaDevices, 'getUserMedia')) { + var args = jsutil.jsify(mediaConstraints); + final jsStream = await jsutil.promiseToFuture( + jsutil.callMethod(mediaDevices, 'getUserMedia', [args])); + + return MediaStreamWeb(jsStream, 'local'); + } else { + final jsStream = await html.window.navigator.getUserMedia( + audio: mediaConstraints['audio'], + video: mediaConstraints['video'], + ); + return MediaStreamWeb(jsStream, 'local'); + } } catch (e) { throw 'Unable to getUserMedia: ${e.toString()}'; } @@ -56,13 +68,16 @@ class MediaDevicesWeb extends MediaDevices { @override Future> getSources() async { final devices = await html.window.navigator.mediaDevices.enumerateDevices(); + final result = []; for (final device in devices) { + var input = device as html.MediaDeviceInfo; + // info result.add({ - 'deviceId': device.deviceId, - 'groupId': device.groupId, - 'kind': device.kind, - 'label': device.label + 'deviceId': input.deviceId, + 'groupId': input.groupId, + 'kind': input.kind, + 'label': input.label }); } return result; From acbb769f57049d46c5a9bd91752a6157bacf2c74 Mon Sep 17 00:00:00 2001 From: Louis-Michel Mathurin Date: Thu, 15 Oct 2020 14:24:54 -0400 Subject: [PATCH 2/2] add launch.json to gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 0899a2388d..527a94a7d0 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,5 @@ example/ios/Runner/GeneratedPluginRegistrant.m example/ios/Runner/GeneratedPluginRegistrant.h example/ios/Flutter/Generated.xcconfig example/ios/Flutter/flutter_export_environment.sh +.vscode/launch.json +example/.vscode/launch.json