Updating cache_.currentTime as soon as the currentTime is set avoids having to wait for the timeupdate event, which results in:
- making cache_.currentTime more reliable
- updating the progress bar on mouse up after dragging when the media is paused.
See also: #6232, #6234, #6370, #6372
* fix: replay button broken for native playback
* remove debug logging
* move fix to player
* comment
* add unit test
* add native browser stubs
* reset stubs and test currentTime
* remove duplicate icons from icon example
* create initial forward and back button classes
* add logic for back/forward buttons on click
* change icon used based on option passed into player
* move logic from forward and back buttons into one component
* add jsdoc comments for clarity
* create initial test file
* refactor button logic into separate files
* update skip button example and add test files
* test both the forward and backward buttons
* test handleClick fns for both forward and backward btns
* update skip buttons example
* update jsdocs for skip backward and forward buttons
* make control text accessible and use seekableEnd/Start when skipping forward/back
* update font version to use updated icons
* set control text only if config is valid
* add link to sandbox page & use localization
* update translations needed
This means that a retryOnError is removed and is no longer needed for
this behavior, which means that during source selection, if a source
fails, it'll try the next source that's available, to match the video
element.
BREAKING CHANGE: remove retryOnError option, turn it on by default
* remove statement that handles attributes in props argument
* clean up function
* add unit test
* add unit test
* remove duplicate set attr
* revert function cleanup
Don't call tech.paused() in the requestVideoFrameCallback fallback if the tech is not ready. I've seen this is an issue in the Flash tech, as its methods are set up after the swf loads. Yes, Flash, it's 2022, but in theory another tech could be impacted if it's also async.
Use the timeupdate event as well as the rvfc and raf callbacks to check cues. This is a bit overkill for "usual" playback but avoids edge cases. If the more preceise callback trigger first the cue will update but the timeupdate event should catch any that were missed, notwithstanding that timeupdate was always somewhat unpredictable.
Fixes#7910 (audio in video els and Samsung being weird) and fixes#7902 (no updates off screen).
Safari's requestVideoFrameCallback is (intentionally?) broken when DRM is playing, so in that case use the fallback with requestAnimationFrame instead.