Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

angular.merge fails with MediaStream objects #14941

Closed
matthieusieben opened this issue Jul 22, 2016 · 6 comments · Fixed by #16036
Closed

angular.merge fails with MediaStream objects #14941

matthieusieben opened this issue Jul 22, 2016 · 6 comments · Fixed by #16036

Comments

@matthieusieben
Copy link

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.

@Narretz
Copy link
Contributor

Narretz commented Jul 23, 2016

The angular.* helpers are mainly designed for the uses of Angular core, so we don't usually prioritize fixing bugs in them. Pull requests are welcome nevertheless.

Narretz added a commit to Narretz/angular.js that referenced this issue Jun 6, 2017
This function has problems with special object types but since it's not used in core,
it is not worth implementing fixes for these cases.
A general purpose library like lodash (provides `merge`) should be used instead.

Closes angular#12653
Closes angular#14941
Closes angular#15180
Closes angular#15992
Narretz added a commit to Narretz/angular.js that referenced this issue Jun 6, 2017
This function has problems with special object types but since it's not used in core,
it is not worth implementing fixes for these cases.
A general purpose library like lodash (provides `merge`) should be used instead.

Closes angular#12653
Closes angular#14941
Closes angular#15180
Closes angular#15992
Narretz added a commit that referenced this issue Jun 12, 2017
This function has problems with special object types but since it's not used in core,
it is not worth implementing fixes for these cases.
A general purpose library like lodash (provides `merge`) should be used instead.

Closes #12653
Closes #14941
Closes #15180
Closes #15992
Closes #16036
@matthieusieben
Copy link
Author

The issue still exists with angular.clone

@gkalpak
Copy link
Member

gkalpak commented Jun 12, 2017

What is angular.clone?

@matthieusieben
Copy link
Author

Il meant, angular.copy, sorry you were not able to figure that out...

@Narretz
Copy link
Contributor

Narretz commented Jun 15, 2017

Sorry you were not able to make yourself clear ... :D

So for copy this should probably be fixed as copy is used by scope.$watch
For extend ... maybe, because that's used in route where it extends the params object.

@Narretz
Copy link
Contributor

Narretz commented Jun 15, 2017

Actually, I can't see that extend is broken: https://plnkr.co/edit/B3LebuAQPoj6kRgS2eCG?p=preview

I created an issue for copy:
#16055

Narretz added a commit that referenced this issue Jun 29, 2017
This function has problems with special object types but since it's not used in core,
it is not worth implementing fixes for these cases.
A general purpose library like lodash (provides `merge`) should be used instead.

Closes #12653
Closes #14941
Closes #15180
Closes #15992
Closes #16036
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants