Skip to content
This repository has been archived by the owner on Sep 26, 2023. It is now read-only.

Fall back to legacy getUserMedia for MediaStream instance #1991

Closed
wants to merge 1 commit into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 13 additions & 6 deletions custom-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1148,8 +1148,7 @@ api:
__base: var instance = createImageBitmap(document.getElementById('resource-image-black'));
ImageCapture:
__base: |-
<%api.MediaDevices:mediaDevices%>
var stream = mediaDevices.getUserMedia({video: true});
var stream = navigator.mediaDevices.getUserMedia({video: true});
stream.then(function() {});
var promise = stream.then(function(s) {
var tracks = s.getVideoTracks();
Expand Down Expand Up @@ -1195,7 +1194,6 @@ api:
__base: var instance = navigator.mediaCapabilities;
MediaDeviceInfo:
__base: |-
<%api.MediaDevices:mediaDevices%>
var promise = navigator.mediaDevices.enumerateDevices().then(
function(devices) {
return devices[0];
Expand Down Expand Up @@ -1233,9 +1231,18 @@ api:
isTypeSupported: return 'isTypeSupported' in MediaSource;
MediaStream:
__base: |-
<%api.MediaDevices:mediaDevices%>
var promise = mediaDevices.getUserMedia({audio: true});
promise.then(function() {});
// This string makes this a callback test: callback(
Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@queengooborg this isn't very nice. Do you have any thoughts on how to write the detection instead? Can we more explicitly mark tests as callback tests?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, this string isn't needed! As long as the string callback is present, then we're good to go, no open parenthesis needed!

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't this the code that determines if it's a callback test?

const callback = testbase.includes('callback(');

There's an open paren there...

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh I was looking at the functions above (we should probably split it off into its own function), hmm... We could perhaps turn it into a regex check to find a comma or right parenthesis afterwards as well?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add the test type as a bit of info in the YAML perhaps, to serve at least as an override for the detected type?

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So with #2253 I can drop the comment here.

if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
navigator.mediaDevices.getUserMedia({audio: true}).then(callback, fail);
} else if (navigator.getUserMedia) {
navigator.getUserMedia({audio: true}, callback, fail);
} else if (navigator.mozGetUserMedia) {
navigator.mozGetUserMedia({audio: true}, callback, fail);
} else if (navigator.webkitGetUserMedia) {
navigator.webkitGetUserMedia({audio: true}, callback, fail);
} else {
return false;
}
MediaStreamAudioDestinationNode:
__resources:
- audioContext
Expand Down