angular.merge fails with MediaStream objects #14941
Description
Do you want to request a feature or report a bug?
Bug
What is the current behavior?
angular.merge
transforms MediaStream objects in src
into plain JavaScript Objects.
If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via https://plnkr.co or similar (template: http://plnkr.co/edit/tpl:yBpEi4).
With the template: https://plnkr.co/edit/4cBUxjdB4kya0s5Wtbxd?p=preview
Simpler: https://plnkr.co/edit/LGUAcCTbYyf4UTxSbvBC?p=preview
navigator.mediaDevices.getUserMedia({ audio: true }).then(function (stream) {
var dst = angular.merge({}, { stream: stream });
console.error('Is valid ?', stream === dst.stream); // false
})
What is the expected behavior?
angular.merge
(and derived) should not alter MediaStream objects.
What is the motivation / use case for changing the behavior?
Allow writing simpler/cleaner code. The workaround is simply to manually set the stream objects.
Which versions of Angular, and which browser / OS are affected by this issue? Did this work in previous versions of Angular? Please also test with the latest stable and snapshot (https://code.angularjs.org/snapshot/) versions.
Google Chrome - Version 51.0.2704.106 (64-bit)
Other browsers probably also affected.
Other information (e.g. stacktraces, related issues, suggestions how to fix)
MediaStream objects should be cloned properly (MDN: MediaStream.clone()
) in the case of angular.clone
, or copied as is in angular.merge
and angular.extend
.