From 37c01304dd03c11505bbb38203ecbd2d654eeae2 Mon Sep 17 00:00:00 2001 From: wseymour Date: Wed, 19 Jul 2023 16:03:43 -0500 Subject: [PATCH 1/6] fix: check for vttcue --- src/js/tracks/text-track.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/tracks/text-track.js b/src/js/tracks/text-track.js index dee5688051..0b51691d80 100644 --- a/src/js/tracks/text-track.js +++ b/src/js/tracks/text-track.js @@ -391,7 +391,7 @@ class TextTrack extends Track { addCue(originalCue) { let cue = originalCue; - if (window.vttjs && !(originalCue instanceof window.vttjs.VTTCue)) { + if (cue.constructor.name !== 'VTTCue') { cue = new window.vttjs.VTTCue(originalCue.startTime, originalCue.endTime, originalCue.text); for (const prop in originalCue) { From 0fbaba4ca944830ba69452b4dcddf7c5fbe09df6 Mon Sep 17 00:00:00 2001 From: wseymour Date: Wed, 19 Jul 2023 17:04:05 -0500 Subject: [PATCH 2/6] add test to ensure we check non-VTTCue --- test/unit/tracks/text-track.test.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test/unit/tracks/text-track.test.js b/test/unit/tracks/text-track.test.js index 8a82f78803..c6bba9eef3 100644 --- a/test/unit/tracks/text-track.test.js +++ b/test/unit/tracks/text-track.test.js @@ -231,6 +231,21 @@ QUnit.test('original cue can be used to remove cue from cues list', function(ass assert.equal(tt.cues.length, 0, 'we have removed cue1'); }); +QUnit.test('non-VTTCue can be used to remove cue from cues list', function(assert) { + const tt = new TextTrack({ + tech: this.tech + }); + + const cue1 = { id: 1, text: 'test' }; + + assert.equal(tt.cues.length, 0, 'start with zero cues'); + tt.addCue(cue1); + assert.equal(tt.cues.length, 1, 'we have one cue'); + + tt.removeCue(cue1); + assert.equal(tt.cues.length, 0, 'we have removed cue1'); +}); + QUnit.test('can only remove one cue at a time', function(assert) { const tt = new TextTrack({ tech: this.tech From e44e44cad754a1191ddb49876e516f0348ca29a8 Mon Sep 17 00:00:00 2001 From: wseymour Date: Thu, 20 Jul 2023 09:00:24 -0500 Subject: [PATCH 3/6] add props for coverage --- test/unit/tracks/text-track.test.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/test/unit/tracks/text-track.test.js b/test/unit/tracks/text-track.test.js index c6bba9eef3..d0f2f8ed9c 100644 --- a/test/unit/tracks/text-track.test.js +++ b/test/unit/tracks/text-track.test.js @@ -256,6 +256,9 @@ QUnit.test('can only remove one cue at a time', function(assert) { const cue1 = new Cue(0, 1, 'some-cue'); + cue1.line = 15; + cue1.position = 10; + assert.equal(tt.cues.length, 0, 'start with zero cues'); tt.addCue(cue1); tt.addCue(cue1); From ca9f36a20cb2fcd50728b4fb4866fb49278e08c9 Mon Sep 17 00:00:00 2001 From: wseymour Date: Thu, 20 Jul 2023 10:16:06 -0500 Subject: [PATCH 4/6] upgrade to vtt.js v0.15.5 --- package-lock.json | 14 +++++++++++--- package.json | 2 +- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9b700c5059..20232ca9c5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15300,6 +15300,14 @@ "requires": { "global": "^4.4.0" } + }, + "videojs-vtt.js": { + "version": "0.15.4", + "resolved": "https://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.15.4.tgz", + "integrity": "sha512-r6IhM325fcLb1D6pgsMkTQT1PpFdUdYZa1iqk7wJEu+QlibBwATPfPc9Bg8Jiym0GE5yP1AG2rMLu+QMVWkYtA==", + "requires": { + "global": "^4.3.1" + } } } }, @@ -15618,9 +15626,9 @@ } }, "videojs-vtt.js": { - "version": "0.15.4", - "resolved": "https://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.15.4.tgz", - "integrity": "sha512-r6IhM325fcLb1D6pgsMkTQT1PpFdUdYZa1iqk7wJEu+QlibBwATPfPc9Bg8Jiym0GE5yP1AG2rMLu+QMVWkYtA==", + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.15.5.tgz", + "integrity": "sha512-yZbBxvA7QMYn15Lr/ZfhhLPrNpI/RmCSCqgIff57GC2gIrV5YfyzLfLyZMj0NnZSAz8syB4N0nHXpZg9MyrMOQ==", "requires": { "global": "^4.3.1" } diff --git a/package.json b/package.json index 35790d9dcd..84be14b3cc 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "safe-json-parse": "4.0.0", "videojs-contrib-quality-levels": "4.0.0", "videojs-font": "4.1.0", - "videojs-vtt.js": "0.15.4" + "videojs-vtt.js": "0.15.5" }, "devDependencies": { "@babel/core": "^7.9.0", From 67ed6a9e2c0ed885cd2b5847db523999a1696764 Mon Sep 17 00:00:00 2001 From: wseymour Date: Thu, 20 Jul 2023 10:32:12 -0500 Subject: [PATCH 5/6] remove unnecessary testing --- test/unit/tracks/text-track.test.js | 3 --- 1 file changed, 3 deletions(-) diff --git a/test/unit/tracks/text-track.test.js b/test/unit/tracks/text-track.test.js index d0f2f8ed9c..c6bba9eef3 100644 --- a/test/unit/tracks/text-track.test.js +++ b/test/unit/tracks/text-track.test.js @@ -256,9 +256,6 @@ QUnit.test('can only remove one cue at a time', function(assert) { const cue1 = new Cue(0, 1, 'some-cue'); - cue1.line = 15; - cue1.position = 10; - assert.equal(tt.cues.length, 0, 'start with zero cues'); tt.addCue(cue1); tt.addCue(cue1); From 93d413910d8b4004f409a02dae3824bc4681fbfb Mon Sep 17 00:00:00 2001 From: wseymour Date: Thu, 20 Jul 2023 10:37:23 -0500 Subject: [PATCH 6/6] ensure constructor exists --- src/js/tracks/text-track.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/js/tracks/text-track.js b/src/js/tracks/text-track.js index 0b51691d80..05ddd4db52 100644 --- a/src/js/tracks/text-track.js +++ b/src/js/tracks/text-track.js @@ -391,7 +391,7 @@ class TextTrack extends Track { addCue(originalCue) { let cue = originalCue; - if (cue.constructor.name !== 'VTTCue') { + if (cue.constructor && cue.constructor.name !== 'VTTCue') { cue = new window.vttjs.VTTCue(originalCue.startTime, originalCue.endTime, originalCue.text); for (const prop in originalCue) {