From abe846e1a3456b029822ea42eb0520dec547fda6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Velad=20Galv=C3=A1n?= Date: Wed, 16 Mar 2022 19:10:33 +0100 Subject: [PATCH] feat(DRM): add drmInfo to license requests (#4030) Adds drmInfo field to all LICENSE-type requests. Based on comments here: https://github.com/shaka-project/shaka-player/issues/4001#issuecomment-1050655197 --- externs/shaka/net.js | 4 ++++ lib/media/drm_engine.js | 1 + lib/net/networking_engine.js | 1 + test/util/cmcd_manager_unit.js | 1 + 4 files changed, 7 insertions(+) diff --git a/externs/shaka/net.js b/externs/shaka/net.js index 3a7f17db65..44c80a6431 100644 --- a/externs/shaka/net.js +++ b/externs/shaka/net.js @@ -60,6 +60,7 @@ shaka.extern.RetryParameters; * retryParameters: !shaka.extern.RetryParameters, * licenseRequestType: ?string, * sessionId: ?string, + * drmInfo: ?shaka.extern.DrmInfo, * streamDataCallback: ?function(BufferSource):!Promise * }} * @@ -90,6 +91,9 @@ shaka.extern.RetryParameters; * @property {?string} sessionId * If this is a LICENSE request, this field contains the session ID of the * EME session that made the request. + * @property {?shaka.extern.DrmInfo} drmInfo + * If this is a LICENSE request, this field contains the DRM info used to + * initialize EME. * @property {?function(BufferSource):!Promise} streamDataCallback * A callback function to handle the chunked data of the ReadableStream. * @exportDoc diff --git a/lib/media/drm_engine.js b/lib/media/drm_engine.js index ccd0152e4e..1762f5c5fe 100644 --- a/lib/media/drm_engine.js +++ b/lib/media/drm_engine.js @@ -1385,6 +1385,7 @@ shaka.media.DrmEngine = class { request.method = 'POST'; request.licenseRequestType = event.messageType; request.sessionId = session.sessionId; + request.drmInfo = this.currentDrmInfo_; // NOTE: allowCrossSiteCredentials can be set in a request filter. if (shaka.media.DrmEngine.isPlayReadyKeySystem( diff --git a/lib/net/networking_engine.js b/lib/net/networking_engine.js index 6586085330..04a7ca4265 100644 --- a/lib/net/networking_engine.js +++ b/lib/net/networking_engine.js @@ -220,6 +220,7 @@ shaka.net.NetworkingEngine = class extends shaka.util.FakeEventTarget { retryParameters: retryParams, licenseRequestType: null, sessionId: null, + drmInfo: null, streamDataCallback: streamDataCallback, }; } diff --git a/test/util/cmcd_manager_unit.js b/test/util/cmcd_manager_unit.js index 76799531af..5150a36c58 100644 --- a/test/util/cmcd_manager_unit.js +++ b/test/util/cmcd_manager_unit.js @@ -123,6 +123,7 @@ describe('CmcdManager', () => { retryParameters: /** @type {shaka.extern.RetryParameters} */({}), licenseRequestType: null, sessionId: null, + drmInfo: null, streamDataCallback: null, };