More fixes for async currentSrc behavior #2256
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Two main fixes here:
player.currentSrc
function didn't allow an empty string to be returned from techs - it would always usesrc
in that casecurrentSrc
should always be updated by the time any otherloadstart
listener is triggered which wasn't always the case using only a setTimeout of 0.The second bug has the potential to cause problems in plugins that rely on
currentSrc
being properly updated by the timeloadstart
is emitted. Since events are triggered synchronously, there are cases where thesetTimeout
is simply "too late" to match the video element's behavior.These changes bring it much more in-line with what the video element does
As an example, I ran the test @heff created http://jsbin.com/wulomalopu/1/edit?js,console,output (but modified to use video.js) and the output with these changes on Chrome 43 is:
..and that is very, very close to the test's output on Chrome.