diff --git a/lib/util/player_configuration.js b/lib/util/player_configuration.js index b75e8e9fce..19eb2b2ed1 100644 --- a/lib/util/player_configuration.js +++ b/lib/util/player_configuration.js @@ -314,6 +314,7 @@ shaka.util.PlayerConfiguration = class { */ static mergeConfigObjects(destination, updates, template) { const overrides = { + '.drm.keySystemsMapping': '', '.drm.servers': '', '.drm.clearKeys': '', '.drm.advanced': { diff --git a/test/media/drm_engine_unit.js b/test/media/drm_engine_unit.js index 5077388e08..a45d577f02 100644 --- a/test/media/drm_engine_unit.js +++ b/test/media/drm_engine_unit.js @@ -677,6 +677,35 @@ describe('DrmEngine', () => { .toBeRejectedWith(expected); }); + it('uses key system IDs from keySystemsMapping config', async () => { + manifest = shaka.test.ManifestGenerator.generate((manifest) => { + manifest.addVariant(0, (variant) => { + variant.addVideo(1, (stream) => { + stream.encrypted = true; + stream.addDrmInfo('drm.abc'); + }); + }); + }); + + setDecodingInfoSpy([]); + + config.keySystemsMapping['drm.abc'] = 'drm.def'; + drmEngine.configure(config); + + const variants = manifest.variants; + await expectAsync( + drmEngine.initForPlayback(variants, manifest.offlineSessionIds)) + .toBeRejected(); + + expect(drmEngine.initialized()).toBe(false); + expect(decodingInfoSpy).toHaveBeenCalledTimes(1); + expect(decodingInfoSpy).toHaveBeenCalledWith(containing({ + keySystemConfiguration: containing({ + keySystem: 'drm.def', + }), + })); + }); + it('maps TS MIME types through the transmuxer', async () => { const originalIsSupported = shaka.media.Transmuxer.isSupported;