diff --git a/src/segment-loader.js b/src/segment-loader.js index e49af41e0..bded9301e 100644 --- a/src/segment-loader.js +++ b/src/segment-loader.js @@ -707,6 +707,9 @@ export default class SegmentLoader extends videojs.EventTarget { }); segmentXhr = this.hls_.xhr(segmentRequestOptions, this.handleResponse_.bind(this)); + segmentXhr.addEventListener('progress', (event) => { + this.trigger(event); + }); this.xhr_ = { keyXhr, diff --git a/test/segment-loader.test.js b/test/segment-loader.test.js index ec5c395b7..db242c997 100644 --- a/test/segment-loader.test.js +++ b/test/segment-loader.test.js @@ -258,6 +258,21 @@ QUnit.test('segment request timeouts reset bandwidth', function(assert) { assert.ok(isNaN(loader.roundTrip), 'reset round trip time'); }); +QUnit.test('progress on segment requests are redispatched', function(assert) { + let progressEvents = 0; + + loader.on('progress', function() { + progressEvents++; + }); + loader.playlist(playlistWithDuration(10)); + loader.mimeType(this.mimeType); + loader.load(); + this.clock.tick(1); + + this.requests[0].dispatchEvent({ type: 'progress' }); + assert.equal(progressEvents, 1, 'triggered progress'); +}); + QUnit.test('updates timestamps when segments do not start at zero', function(assert) { let playlist = playlistWithDuration(10);