-
-
-
- ';
-
- eventBus.trigger(Events.MPD_EXPIRE_UPDATE, {
- xmlString: malformedXml
- });
- });
-
- it('should trigger INTERNAL_MANIFEST_LOADED with MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE when createParser returns null', function (done) {
- const errorHandler = function (event) {
- try {
- expect(event.manifest).to.be.null;
- expect(event.error).to.exist;
- expect(event.error.code).to.equal(Errors.MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE);
-
- eventBus.off(Events.INTERNAL_MANIFEST_LOADED, errorHandler);
- done();
- } catch (error) {
- done(error);
- }
- };
-
- eventBus.on(Events.INTERNAL_MANIFEST_LOADED, errorHandler, this);
-
- const unrecognizedFormat = 'This is not a valid manifest format';
-
- eventBus.trigger(Events.MPD_EXPIRE_UPDATE, {
- xmlString: unrecognizedFormat
- });
- });
-
- it('should not trigger INTERNAL_MANIFEST_LOADED when _updateManifest is called but xlinkController is null', function () {
- // Reset manifest loader to simulate xlinkController being null
- manifestLoader.reset();
-
- const spy = sinon.spy();
- eventBus.on(Events.INTERNAL_MANIFEST_LOADED, spy);
-
- eventBus.trigger(Events.MPD_EXPIRE_UPDATE, {
- xmlString: ' '
- });
-
- // Assert: No event should be triggered
- sinon.assert.notCalled(spy);
-
- eventBus.off(Events.INTERNAL_MANIFEST_LOADED, spy);
- });
-
- it('should successfully process valid DASH manifest and trigger INTERNAL_MANIFEST_LOADED without error', function (done) {
- const successHandler = function (event) {
- try {
- expect(event.manifest).to.exist;
- expect(event.error).to.be.undefined;
-
- eventBus.off(Events.INTERNAL_MANIFEST_LOADED, successHandler);
- done();
- } catch (error) {
- done(error);
- }
- };
-
- eventBus.on(Events.INTERNAL_MANIFEST_LOADED, successHandler, this);
-
- const validDashManifest = `
-
-
-
-
-
-
-
-
-
-
-
-
- `;
-
- eventBus.trigger(Events.MPD_EXPIRE_UPDATE, {
- xmlString: validDashManifest
- });
- });
- });
-});
\ No newline at end of file
diff --git a/test/unit/test/streaming/streaming.controllers.EventController.js b/test/unit/test/streaming/streaming.controllers.EventController.js
index 70e6967c5a..1d94d27306 100644
--- a/test/unit/test/streaming/streaming.controllers.EventController.js
+++ b/test/unit/test/streaming/streaming.controllers.EventController.js
@@ -1,13 +1,11 @@
import EventController from '../../../../src/streaming/controllers/EventController.js';
import EventBus from '../../../../src/core/EventBus.js';
-import Events from '../../../../src/core/events/Events.js';
import MediaPlayerEvents from '../../../../src/streaming/MediaPlayerEvents.js';
import PlaybackControllerMock from '../../mocks/PlaybackControllerMock.js';
import ManifestUpdaterMock from '../../mocks/ManifestUpdaterMock.js';
import Settings from '../../../../src/core/Settings.js';
import {expect} from 'chai';
-import sinon from 'sinon';
const context = {};
const eventBus = EventBus(context).getInstance();
@@ -577,60 +575,5 @@ describe('EventController', function () {
eventBus.off(MediaPlayerEvents.MANIFEST_VALIDITY_CHANGED, manifestValidityExpiredHandler, this);
});
-
- it('should fire MPD_EXPIRE_UPDATE events for value 3', async () => {
- let newManifestExpiredEventStub = {...manifestExpiredEventStub};
- newManifestExpiredEventStub.eventStream.value = '3';
- newManifestExpiredEventStub.duration = 1;
- newManifestExpiredEventStub.calculatedPresentationTime = 0;
- newManifestExpiredEventStub.parsedMessageData = `2024-03-24T15:30:45Z
-
- `;
-
- const spy = sinon.spy(eventBus, 'trigger');
- const mpdExpireUpdatePromise = new Promise((resolve) => {
- eventBus.on(Events.MPD_EXPIRE_UPDATE, () => {
- resolve();
- });
- });
-
- const timeoutPromise = new Promise((_, reject) =>
- setTimeout(() => reject(new Error('Timeout: MPD_EXPIRE_UPDATE event was not triggered')), 4000)
- );
-
- eventController.addInbandEvents([newManifestExpiredEventStub], 'periodId');
-
- await Promise.race([mpdExpireUpdatePromise, timeoutPromise]);
- sinon.assert.calledWith(spy, Events.MPD_EXPIRE_UPDATE, sinon.match.any);
- sinon.restore()
- });
-
- it('should fire MANIFEST_VALIDITY_CHANGED events for value 3', async () => {
- let newManifestExpiredEventStub = {...manifestExpiredEventStub};
- newManifestExpiredEventStub.eventStream.value = '3';
- newManifestExpiredEventStub.duration = 1;
- newManifestExpiredEventStub.calculatedPresentationTime = 0;
- newManifestExpiredEventStub.parsedMessageData = `2024-03-24T15:30:45Z
-
- `;
-
- const spy = sinon.spy(eventBus, 'trigger');
- const manifestValidityChanged = new Promise((resolve) => {
- eventBus.on(MediaPlayerEvents.MANIFEST_VALIDITY_CHANGED, () => {
- resolve();
- });
- });
-
- const timeoutPromise = new Promise((_, reject) =>
- setTimeout(() => reject(new Error('Timeout: MANIFEST_VALIDITY_CHANGED event was not triggered')), 4000)
- );
-
- eventController.addInbandEvents([newManifestExpiredEventStub], 'periodId');
-
- await Promise.race([manifestValidityChanged, timeoutPromise]);
- sinon.assert.calledWith(spy, MediaPlayerEvents.MANIFEST_VALIDITY_CHANGED, sinon.match.any);
- sinon.restore()
- });
-
});
});
-
-
-
-
-
-
-
- MPD Update Event
-This sample shows how DASH MPD Update Event signals a DASH client to perform a manifest update when an inband event is received with value 3.
-
-
-
-
-
- Manifest URL
-
-
-
-
-
-
-
-
-
-
-
-
-
- Manifest will appear here...
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/samples/samples.json b/samples/samples.json
index a39fe06256..b883f2f47b 100644
--- a/samples/samples.json
+++ b/samples/samples.json
@@ -197,23 +197,6 @@
}
]
},
- {
- "section": "MPD Update Event (value 3)",
- "samples": [
- {
- "title": "MPD Update Event implementation",
- "description": "A sample showing MPD Update Event (value 3) implementation",
- "href": "mpd-event/mpd-update-event.html",
- "image": "lib/img/bbb-1.jpg",
- "labels": [
- "VoD",
- "Video",
- "Audio",
- "Callback events"
- ]
- }
- ]
- },
{
"section": "ABR",
"samples": [
diff --git a/src/core/events/CoreEvents.js b/src/core/events/CoreEvents.js
index 1ec59913a9..8bffb0aa56 100644
--- a/src/core/events/CoreEvents.js
+++ b/src/core/events/CoreEvents.js
@@ -60,7 +60,6 @@ class CoreEvents extends EventsBase {
this.LOADING_DATA_PROGRESS = 'loadingDataProgress';
this.LOADING_ABANDONED = 'loadingAborted';
this.MANIFEST_UPDATED = 'manifestUpdated';
- this.MPD_EXPIRE_UPDATE = 'mpdExpireUpdate';
this.MEDIA_FRAGMENT_LOADED = 'mediaFragmentLoaded';
this.MEDIA_FRAGMENT_NEEDED = 'mediaFragmentNeeded';
this.MEDIAINFO_UPDATED = 'mediaInfoUpdated';
diff --git a/src/dash/DashAdapter.js b/src/dash/DashAdapter.js
index fba82c9bb1..16796cf4bc 100644
--- a/src/dash/DashAdapter.js
+++ b/src/dash/DashAdapter.js
@@ -40,7 +40,6 @@ import PatchManifestModel from './models/PatchManifestModel.js';
import Representation from './vo/Representation.js';
import {bcp47Normalize} from 'bcp-47-normalize';
import {getId3Frames} from '@svta/common-media-library/id3/getId3Frames.js';
-import {utf8ArrayToStr} from '@svta/common-media-library/utils/utf8ArrayToStr'
import Constants from '../streaming/constants/Constants.js';
/**
@@ -505,11 +504,8 @@ function DashAdapter() {
event.calculatedPresentationTime = calculatedPresentationTime;
event.messageData = messageData;
event.presentationTimeDelta = presentationTimeDelta;
- if (schemeIdUri === Constants.ID3_SCHEME_ID_URI) {
- event.parsedMessageData = getId3Frames(messageData);
- } else {
- event.parsedMessageData = (messageData instanceof Uint8Array) ? utf8ArrayToStr(messageData) : null;
- }
+ event.parsedMessageData = (schemeIdUri === Constants.ID3_SCHEME_ID_URI) ? getId3Frames(messageData) : null;
+
return event;
} catch (e) {
return null;
diff --git a/src/streaming/ManifestLoader.js b/src/streaming/ManifestLoader.js
index da8a04cea5..94b69b6876 100644
--- a/src/streaming/ManifestLoader.js
+++ b/src/streaming/ManifestLoader.js
@@ -43,6 +43,7 @@ import FactoryMaker from '../core/FactoryMaker.js';
import DashParser from '../dash/parser/DashParser.js';
function ManifestLoader(config) {
+
config = config || {};
const context = this.context;
const debug = config.debug;
@@ -58,12 +59,10 @@ function ManifestLoader(config) {
let mssHandler = config.mssHandler;
let errHandler = config.errHandler;
- let manifestModel = config.manifestModel;
function setup() {
logger = debug.getLogger(instance);
eventBus.on(Events.XLINK_READY, onXlinkReady, instance);
- eventBus.on(Events.MPD_EXPIRE_UPDATE, _updateManifest, instance);
urlLoader = URLLoader(context).create({
errHandler: config.errHandler,
@@ -250,79 +249,6 @@ function ManifestLoader(config) {
});
}
- function _updateManifest(e) {
- // Manage situations in which success is called after calling reset
- if (!xlinkController) {
- return;
- }
- const strManifest = e.xmlString
- let currentManifest = manifestModel.getValue();
- let manifest;
-
- // Create parser according to manifest type
- parser = createParser(strManifest);
-
- if (parser === null) {
- eventBus.trigger(Events.INTERNAL_MANIFEST_LOADED, {
- manifest: null,
- error: new DashJSError(
- Errors.MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE,
- )
- });
- return;
- }
- // init xlinkcontroller with created parser
- xlinkController.setParser(parser);
-
- try {
- manifest = parser.parse(strManifest);
- } catch (e) {
- eventBus.trigger(Events.INTERNAL_MANIFEST_LOADED, {
- manifest: null,
- error: new DashJSError(
- Errors.MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE,
- )
- });
- return;
- }
-
- if (manifest) {
- manifest.url = currentManifest.url;
-
- // URL from which the MPD was originally retrieved (MPD updates will not change this value)
- if (!manifest.originalUrl) {
- manifest.originalUrl = manifest.url;
- }
-
- // If there is a mismatch between the manifest's specified duration and the total duration of all periods,
- // and the specified duration is greater than the total duration of all periods,
- // overwrite the manifest's duration attribute. This is a patch for if a manifest is generated incorrectly.
- if (settings &&
- settings.get().streaming.enableManifestDurationMismatchFix &&
- manifest.mediaPresentationDuration &&
- manifest.Period.length > 1) {
- const sumPeriodDurations = manifest.Period.reduce((totalDuration, period) => totalDuration + period.duration, 0);
- if (!isNaN(sumPeriodDurations) && manifest.mediaPresentationDuration > sumPeriodDurations) {
- logger.warn('Media presentation duration greater than duration of all periods. Setting duration to total period duration');
- manifest.mediaPresentationDuration = sumPeriodDurations;
- }
- }
-
- // manifest.baseUri = baseUri;
- manifest.loadedTime = new Date();
- xlinkController.resolveManifestOnLoad(manifest);
-
- eventBus.trigger(Events.ORIGINAL_MANIFEST_LOADED, { originalManifest: e.xmlString });
- } else {
- eventBus.trigger(Events.INTERNAL_MANIFEST_LOADED, {
- manifest: null,
- error: new DashJSError(
- Errors.MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE,
- )
- });
- }
- }
-
function reset() {
eventBus.off(Events.XLINK_READY, onXlinkReady, instance);
diff --git a/src/streaming/ManifestUpdater.js b/src/streaming/ManifestUpdater.js
index 573f020503..27a161d7fc 100644
--- a/src/streaming/ManifestUpdater.js
+++ b/src/streaming/ManifestUpdater.js
@@ -60,7 +60,6 @@ function ManifestUpdater() {
manifestLoader,
manifestModel,
refreshDelay,
- refreshDisabled,
refreshTimer,
settings;
@@ -109,7 +108,6 @@ function ManifestUpdater() {
eventBus.on(MediaPlayerEvents.PLAYBACK_STARTED, _onPlaybackStarted, this);
eventBus.on(MediaPlayerEvents.PLAYBACK_PAUSED, _onPlaybackPaused, this);
eventBus.on(Events.INTERNAL_MANIFEST_LOADED, _onManifestLoaded, this);
- eventBus.on(MediaPlayerEvents.MANIFEST_VALIDITY_CHANGED, onManifestValidityChanged, this)
}
function setManifest(manifest) {
@@ -152,7 +150,7 @@ function ManifestUpdater() {
delay = refreshDelay * 1000;
}
- if (!isNaN(delay) && !refreshDisabled) {
+ if (!isNaN(delay)) {
logger.debug('Refresh manifest in ' + delay + ' milliseconds.');
refreshTimer = setTimeout(_onRefreshTimer, delay);
}
@@ -328,14 +326,6 @@ function ManifestUpdater() {
period.AdaptationSet.push(externalSubtitle.serializeToMpdParserFormat());
}
- function onManifestValidityChanged(e) {
- const { minimumUpdatePeriod } = manifestModel.getValue();
- if (minimumUpdatePeriod === 0 && e.inbandEvent) {
- _stopManifestRefreshTimer();
- refreshDisabled = true;
- }
- }
-
function _onPlaybackStarted(/*e*/) {
isPaused = false;
startManifestRefreshTimer();
diff --git a/src/streaming/MediaPlayer.js b/src/streaming/MediaPlayer.js
index c357391c9e..b47a1144e3 100644
--- a/src/streaming/MediaPlayer.js
+++ b/src/streaming/MediaPlayer.js
@@ -2574,13 +2574,12 @@ function MediaPlayer() {
function _createManifestLoader() {
return ManifestLoader(context).create({
- debug,
- errHandler,
- dashMetrics,
- mediaPlayerModel,
- mssHandler,
- manifestModel,
- settings
+ debug: debug,
+ errHandler: errHandler,
+ dashMetrics: dashMetrics,
+ mediaPlayerModel: mediaPlayerModel,
+ mssHandler: mssHandler,
+ settings: settings
});
}
diff --git a/src/streaming/constants/Constants.js b/src/streaming/constants/Constants.js
index abb900f4de..ce4443665b 100644
--- a/src/streaming/constants/Constants.js
+++ b/src/streaming/constants/Constants.js
@@ -340,12 +340,6 @@ export default {
ID3_SCHEME_ID_URI: 'https://aomedia.org/emsg/ID3',
COMMON_ACCESS_TOKEN_HEADER: 'common-access-token',
DASH_ROLE_SCHEME_ID : 'urn:mpeg:dash:role:2011',
- MPD_VALIDITY_EXPIRATION: {
- SCHEME: 'urn:mpeg:dash:event:2012',
- RELOAD_VALUE: 1,
- PATCH_VALUE: 2,
- UPDATE_VALUE: 3,
- },
CODEC_FAMILIES: {
MP3: 'mp3',
AAC: 'aac',
diff --git a/src/streaming/controllers/EventController.js b/src/streaming/controllers/EventController.js
index 9ad97d64c7..d5c39e5075 100644
--- a/src/streaming/controllers/EventController.js
+++ b/src/streaming/controllers/EventController.js
@@ -31,22 +31,17 @@
import FactoryMaker from '../../core/FactoryMaker.js';
import Debug from '../../core/Debug.js';
-import Events from '../../core/events/Events.js';
import EventBus from '../../core/EventBus.js';
import MediaPlayerEvents from '../../streaming/MediaPlayerEvents.js';
import XHRLoader from '../net/XHRLoader.js';
-import Constants from '../constants/Constants.js';
import Utils from '../../core/Utils.js';
import CommonMediaRequest from '../vo/CommonMediaRequest.js';
import CommonMediaResponse from '../vo/CommonMediaResponse.js';
function EventController() {
- const MPD_VALIDITY_EXPIRATION_VALUES = [
- Constants.MPD_VALIDITY_EXPIRATION.RELOAD_VALUE,
- Constants.MPD_VALIDITY_EXPIRATION.PATCH_VALUE,
- Constants.MPD_VALIDITY_EXPIRATION.UPDATE_VALUE
- ];
+ const MPD_RELOAD_SCHEME = 'urn:mpeg:dash:event:2012';
+ const MPD_RELOAD_VALUE = 1;
const MPD_CALLBACK_SCHEME = 'urn:mpeg:dash:event:callback:2015';
const MPD_CALLBACK_VALUE = 1;
@@ -270,8 +265,8 @@ function EventController() {
let result = _addOrUpdateEvent(event, inbandEvents[periodId], false);
if (result === EVENT_HANDLED_STATES.ADDED) {
- if (event.eventStream.schemeIdUri === Constants.MPD_VALIDITY_EXPIRATION.SCHEME) {
- _handleManifestReload(event);
+ if (event.eventStream.schemeIdUri === MPD_RELOAD_SCHEME) {
+ _handleManifestReloadEvent(event);
}
logger.debug(`Added inband event with id ${event.id} from period ${periodId}`);
_startEvent(event, MediaPlayerEvents.EVENT_MODE_ON_RECEIVE);
@@ -329,58 +324,27 @@ function EventController() {
}
/**
- * Refreshes, patches, or updates the manifest based on the InbandEventStream value attribute.
+ * Triggers an MPD reload
* @param {object} event
* @private
*/
- function _handleManifestValidityExpirationEvent(event, currentVideoTime) {
- switch (parseInt(event.eventStream.value)) {
- case Constants.MPD_VALIDITY_EXPIRATION.RELOAD_VALUE:
- logger.debug(`Starting manifest refresh event ${event.id} at ${currentVideoTime}`);
- _refreshManifest();
- break;
- case Constants.MPD_VALIDITY_EXPIRATION.PATCH_VALUE:
- logger.debug(`Starting manifest patch event ${event.id} at ${currentVideoTime}`);
- _patchManifest(event.parsedMessageData);
- break;
- case Constants.MPD_VALIDITY_EXPIRATION.UPDATE_VALUE:
- logger.debug(`Starting manifest update ${event.id} at ${currentVideoTime}`);
- _updateManifest(event.parsedMessageData);
- break;
- }
- }
- /**
- * Triggers an MPD reload.
- * @param {object} event
- * @private
- */
- function _handleManifestReload(event) {
+ function _handleManifestReloadEvent(event) {
try {
- const eventValue = parseInt(event.eventStream.value);
- if (MPD_VALIDITY_EXPIRATION_VALUES.includes(eventValue)) {
- let validityData = {
- id: event.id,
- newManifestValidAfter: NaN, //event.message_data - this is an arraybuffer with a timestring in it, but not used yet
- inbandEvent: true,
- }
-
- if (eventValue === Constants.MPD_VALIDITY_EXPIRATION.RELOAD_VALUE) {
- const validUntil = event.calculatedPresentationTime;
- let newDuration;
- if (validUntil == 0xFFFFFFFF) {//0xFF... means remaining duration unknown
- newDuration = NaN;
- } else {
- newDuration = validUntil + event.duration;
- }
- validityData = {
- ...validityData,
- validUntil: validUntil,
- newDuration: newDuration,
- }
- logger.info('Manifest validity changed: Valid until: ' + validUntil + '; remaining duration: ' + newDuration);
+ if (event.eventStream.value == MPD_RELOAD_VALUE) {
+ const validUntil = event.calculatedPresentationTime;
+ let newDuration;
+ if (event.calculatedPresentationTime == 0xFFFFFFFF) {//0xFF... means remaining duration unknown
+ newDuration = NaN;
+ } else {
+ newDuration = event.calculatedPresentationTime + event.duration;
}
-
- eventBus.trigger(MediaPlayerEvents.MANIFEST_VALIDITY_CHANGED, validityData, {
+ //logger.info('Manifest validity changed: Valid until: ' + validUntil + '; remaining duration: ' + newDuration);
+ eventBus.trigger(MediaPlayerEvents.MANIFEST_VALIDITY_CHANGED, {
+ id: event.id,
+ validUntil: validUntil,
+ newDuration: newDuration,
+ newManifestValidAfter: NaN //event.message_data - this is an arraybuffer with a timestring in it, but not used yet
+ }, {
mode: MediaPlayerEvents.EVENT_MODE_ON_START
});
}
@@ -518,10 +482,11 @@ function EventController() {
}
if (!event.triggeredStartEvent) {
- if (event.eventStream.schemeIdUri === Constants.MPD_VALIDITY_EXPIRATION.SCHEME) {
+ if (event.eventStream.schemeIdUri === MPD_RELOAD_SCHEME && event.eventStream.value == MPD_RELOAD_VALUE) {
//If both are set to zero, it indicates the media is over at this point. Don't reload the manifest.
if (event.duration !== 0 || event.presentationTimeDelta !== 0) {
- _handleManifestValidityExpirationEvent(event, currentVideoTime)
+ logger.debug(`Starting manifest refresh event ${eventId} at ${currentVideoTime}`);
+ _refreshManifest();
}
} else if (event.eventStream.schemeIdUri === MPD_CALLBACK_SCHEME && event.eventStream.value == MPD_CALLBACK_VALUE) {
logger.debug(`Starting callback event ${eventId} at ${currentVideoTime}`);
@@ -582,46 +547,6 @@ function EventController() {
}
}
- /**
- * Patch the manifest
- * @private
- */
- function _patchManifest(parsedMessageData) {
- try {
- checkConfig();
- const match = parsedMessageData.match(/^([\d-T:Z]+)(<.*)/);
- const publishTime = match[1];
- const patchXMLString = match[2]
- logger.info(`Patch manifest not supported yet: Publish time: ${publishTime}, MPD patch: ${patchXMLString}..`);
- } catch (e) {
- logger.error(e);
- }
- }
-
- /**
- * Update the manifest
- * @private
- */
- function _updateManifest(parsedMessageData) {
- try {
- checkConfig();
- const regex = /^(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z)(<\?xml[\s\S]*<\/MPD>)/;
- const match = parsedMessageData.match(regex);
- let publishTime
- let xmlString
- if (match) {
- publishTime = match[1];
- xmlString = match[2];
- } else {
- throw new Error('No MPD found in the message data.')
- }
- logger.info(`Updating current manifest. Publish time: ${publishTime}, MPD: ${xmlString}.`);
- eventBus.trigger(Events.MPD_EXPIRE_UPDATE, { xmlString });
- } catch (e) {
- logger.error(e);
- }
- }
-
/**
* Send a callback request
* @param {String} url
diff --git a/test/unit/test/dash/dash.DashAdapter.js b/test/unit/test/dash/dash.DashAdapter.js
index 5baf2c7360..f400637fcf 100644
--- a/test/unit/test/dash/dash.DashAdapter.js
+++ b/test/unit/test/dash/dash.DashAdapter.js
@@ -356,20 +356,6 @@ describe('DashAdapter', function () {
expect(event).to.be.an('object');
});
- it('should return an event with a valid parsedMessageData', function () {
- const representation = { presentationTimeOffset: 0, adaptation: { period: { start: 0 } } };
- const messageData = new Uint8Array([10, 20, 30]);
- const eventBox = {
- scheme_id_uri: 'id',
- value: 'value',
- message_data: messageData,
- }
-
- const event = dashAdapter.getEvent( eventBox, { 'id/value': {} }, 0, representation);
- expect(event.parsedMessageData).to.be.a('string').and.not.empty;
- expect(event.parsedMessageData).to.not.be.undefined;
- });
-
it('should calculate correct start time for a version 0 event without PTO', function () {
const representation = { adaptation: { period: { start: 10 } } };
const eventBox = { scheme_id_uri: 'id', value: 'value', presentation_time_delta: 12, version: 0 };
diff --git a/test/unit/test/streaming/streaming.ManifestLoader.js b/test/unit/test/streaming/streaming.ManifestLoader.js
deleted file mode 100644
index 4c72b3952c..0000000000
--- a/test/unit/test/streaming/streaming.ManifestLoader.js
+++ /dev/null
@@ -1,162 +0,0 @@
-import ManifestLoader from '../../../../src/streaming/ManifestLoader.js';
-import Events from '../../../../src/core/events/Events.js';
-import EventBus from '../../../../src/core/EventBus.js';
-import Errors from '../../../../src/core/errors/Errors.js';
-import Settings from '../../../../src/core/Settings.js';
-import ErrorHandlerMock from '../../mocks/ErrorHandlerMock.js';
-import ManifestModelMock from '../../mocks/ManifestModelMock.js';
-import DashMetricsMock from '../../mocks/DashMetricsMock.js';
-import MediaPlayerModelMock from '../../mocks/MediaPlayerModelMock.js';
-import DebugMock from '../../mocks/DebugMock.js';
-
-import {expect} from 'chai';
-import sinon from 'sinon';
-
-describe('ManifestLoader', function () {
- const context = {};
- const eventBus = EventBus(context).getInstance();
- let manifestLoader;
- let errorHandlerMock;
- let manifestModelMock;
- let dashMetricsMock;
- let mediaPlayerModelMock;
- let debugMock;
- let settings;
-
- beforeEach(function () {
- errorHandlerMock = new ErrorHandlerMock();
- manifestModelMock = new ManifestModelMock();
- dashMetricsMock = new DashMetricsMock();
- mediaPlayerModelMock = new MediaPlayerModelMock();
- debugMock = new DebugMock();
- settings = Settings(context).getInstance();
-
- manifestModelMock.setValue({
- url: 'http://example.com/manifest.mpd',
- originalUrl: 'http://example.com/manifest.mpd'
- });
-
- manifestLoader = ManifestLoader(context).create({
- errHandler: errorHandlerMock,
- manifestModel: manifestModelMock,
- dashMetrics: dashMetricsMock,
- mediaPlayerModel: mediaPlayerModelMock,
- debug: debugMock,
- settings: settings
- });
- });
-
- afterEach(function () {
- manifestLoader.reset();
- eventBus.reset();
- settings.reset();
- });
-
- describe('when MPD_EXPIRE_UPDATE event is triggered', function () {
-
- it('should trigger INTERNAL_MANIFEST_LOADED with MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE when parser.parse() throws an exception', function (done) {
- const errorHandler = function (event) {
- try {
- expect(event.manifest).to.be.null;
- expect(event.error).to.exist;
- expect(event.error.code).to.equal(Errors.MANIFEST_LOADER_PARSING_FAILURE_ERROR_CODE);
-
- eventBus.off(Events.INTERNAL_MANIFEST_LOADED, errorHandler);
- done();
- } catch (error) {
- done(error);
- }
- };
-
- eventBus.on(Events.INTERNAL_MANIFEST_LOADED, errorHandler, this);
-
- const malformedXml = '
-
-
-