Files
shaka-player/test/msf/msf_parser_unit.js
T
Álvaro Velad Galván 1a845ec353 feat(MSF): Provide a bandwidth estimate for ABR purposes (#10016)
Co-authored-by: Wojciech Tyczyński <tykus160@gmail.com>
2026-04-23 10:57:10 +02:00

81 lines
2.6 KiB
JavaScript

filterDescribe('shaka.msf.MSFParser', isMSFSupported, () => {
/** @type {!shaka.test.FakeNetworkingEngine} */
let fakeNetEngine;
/** @type {!shaka.msf.MSFParser} */
let parser;
/** @type {!jasmine.Spy} */
let onEventSpy;
/** @type {!jasmine.Spy} */
let newDrmInfoSpy;
/** @type {!jasmine.Spy} */
let onMetadataSpy;
/** @type {shaka.extern.ManifestParser.PlayerInterface} */
let playerInterface;
/** @type {shaka.extern.ManifestConfiguration} */
let config;
afterEach(() => {
parser.stop();
});
beforeEach(() => {
fakeNetEngine = new shaka.test.FakeNetworkingEngine();
const dConfig = shaka.util.PlayerConfiguration.createDefault();
config = dConfig.manifest;
onEventSpy = jasmine.createSpy('onEvent');
newDrmInfoSpy = jasmine.createSpy('newDrmInfo');
onMetadataSpy = jasmine.createSpy('onMetadata');
playerInterface = {
modifyManifestRequest: (request, manifestInfo) => {},
modifySegmentRequest: (request, segmentInfo) => {},
filter: () => Promise.resolve(),
makeTextStreamsForClosedCaptions: (manifest) => {},
networkingEngine: fakeNetEngine,
onError: fail,
onEvent: shaka.test.Util.spyFunc(onEventSpy),
onTimelineRegionAdded: fail,
isLowLatencyMode: () => false,
updateDuration: () => {},
newDrmInfo: shaka.test.Util.spyFunc(newDrmInfoSpy),
onManifestUpdated: () => {},
getBandwidthEstimate: () => 1e6,
onMetadata: shaka.test.Util.spyFunc(onMetadataSpy),
disableStream: (stream) => {},
addFont: (name, url) => {},
getStreamingRetryParameters: () => dConfig.streaming.retryParameters,
onSegmentReceived: (deltaTimeMs, numBytes) => {},
};
parser = new shaka.msf.MSFParser();
parser.configure(config);
});
it('fails when WebTransport is not available', async () => {
let originalWebTransport = null;
try {
originalWebTransport = window.WebTransport;
if (originalWebTransport) {
Object.defineProperty(window, 'WebTransport', {
configurable: true,
value: null,
});
}
const expectedError = shaka.test.Util.jasmineError(new shaka.util.Error(
shaka.util.Error.Severity.CRITICAL,
shaka.util.Error.Category.MANIFEST,
shaka.util.Error.Code.WEBTRANSPORT_NOT_AVAILABLE));
await expectAsync(parser.start('test:/msf', playerInterface))
.toBeRejectedWith(expectedError);
} finally {
if (originalWebTransport) {
Object.defineProperty(window, 'WebTransport', {
configurable: true,
value: originalWebTransport,
});
}
}
});
});