diff --git a/src/js/tech/tech.js b/src/js/tech/tech.js index b58b194b6e..91886711a2 100644 --- a/src/js/tech/tech.js +++ b/src/js/tech/tech.js @@ -869,7 +869,7 @@ class Tech extends Component { requestVideoFrameCallback(cb) { const id = Guid.newGUID(); - if (this.paused()) { + if (!this.isReady_ || this.paused()) { this.queuedHanders_.add(id); this.one('playing', () => { if (this.queuedHanders_.has(id)) { diff --git a/test/unit/tech/tech.test.js b/test/unit/tech/tech.test.js index 4dc4e51b04..57fca449df 100644 --- a/test/unit/tech/tech.test.js +++ b/test/unit/tech/tech.test.js @@ -770,3 +770,21 @@ QUnit.test('returns an empty object for getVideoPlaybackQuality', function(asser assert.deepEqual(tech.getVideoPlaybackQuality(), {}, 'returns an empty object'); tech.dispose(); }); + +QUnit.test('requestVideoFrameCallback waits if tech not ready', function(assert) { + const tech = new Tech(); + const cbSpy = sinon.spy(); + + tech.paused = sinon.spy(); + tech.isReady_ = false; + + tech.requestVideoFrameCallback(cbSpy); + + assert.notOk(tech.paused.called, 'paused not called on tech that is not ready'); + + tech.trigger('playing'); + + assert.ok(cbSpy.called, 'callback was called on tech playing'); + + tech.dispose(); +});