Skip to content

Commit

Permalink
fix: only getLicense on license-request or license-renewal (#116)
Browse files Browse the repository at this point in the history
  • Loading branch information
brandonocasey committed Aug 3, 2020
1 parent 9721bcc commit c15d1ca
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 8 deletions.
4 changes: 4 additions & 0 deletions src/eme.js
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,10 @@ export const makeNewRequest = ({
return new Promise((resolve, reject) => {

keySession.addEventListener('message', (event) => {
// all other types will be handled by keystatuseschange
if (event.messageType !== 'license-request' && event.messageType !== 'license-renewal') {
return;
}
getLicense(options, event.message)
.then((license) => {
resolve(keySession.update(license));
Expand Down
67 changes: 59 additions & 8 deletions test/eme.test.js
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,8 @@ QUnit.test('accepts a license URL as an option', function(assert) {
setTimeout(() => {
session.trigger({
type: 'message',
message: 'the-message'
message: 'the-message',
messageType: 'license-request'
});

assert.equal(xhrCalls.length, 1, 'made one XHR');
Expand Down Expand Up @@ -334,7 +335,8 @@ QUnit.test('accepts a license URL as property', function(assert) {
setTimeout(() => {
session.trigger({
type: 'message',
message: 'the-message'
message: 'the-message',
messageType: 'license-request'
});

assert.equal(xhrCalls.length, 1, 'made one XHR');
Expand Down Expand Up @@ -466,7 +468,7 @@ QUnit.test('5 July 2016 lifecycle', function(assert) {
assert.equal(callCounts.licenseRequestAttempts, 0,
'license request event not triggered (since no callback yet)');

keySessionEventListeners.message({});
keySessionEventListeners.message({messageType: 'license-request'});

// Step 3: get license
assert.equal(callCounts.getCertificate, 1, 'certificate requested');
Expand Down Expand Up @@ -676,6 +678,53 @@ QUnit.test('rejects promise when addPendingSessions rejects', function(assert) {

});

QUnit.test('getLicense not called for messageType that isnt license-request or license-renewal', function(assert) {
const done = assert.async();
let getLicenseCalls = 0;
const options = {
keySystems: {
'com.widevine.alpha': {
url: 'some-url',
getLicense(emeOptions, keyMessage, callback) {
getLicenseCalls++;
}
}
}
};
const keySystemAccess = {
keySystem: 'com.widevine.alpha',
createMediaKeys: () => {
return Promise.resolve({
setServerCertificate: () => Promise.resolve(),
createSession: () => {
return {
addEventListener: (event, callback) => {
if (event === 'message') {
setTimeout(() => {
callback({message: 'whatever', messageType: 'do-not-request-license'});
assert.equal(getLicenseCalls, 0, 'did not call getLicense');
done();
});
}
},
keyStatuses: [],
generateRequest: () => Promise.resolve()
};
}
});
}
};
const video = {
setMediaKeys: () => Promise.resolve()
};

standard5July2016({
video,
keySystemAccess,
options
});
});

QUnit.test('getLicense promise rejection', function(assert) {
const options = {
keySystems: {
Expand All @@ -696,7 +745,7 @@ QUnit.test('getLicense promise rejection', function(assert) {
return {
addEventListener: (event, callback) => {
setTimeout(() => {
callback(options, {message: 'whatever'});
callback({message: 'whatever', messageType: 'license-request'});
});
},
keyStatuses: [],
Expand Down Expand Up @@ -794,7 +843,7 @@ QUnit.test('keySession.update promise rejection', function(assert) {
return {
addEventListener: (event, callback) => {
setTimeout(() => {
callback({message: 'whatever'});
callback({messageType: 'license-request', message: 'whatever'});
});
},
keyStatuses: [],
Expand Down Expand Up @@ -860,7 +909,8 @@ QUnit.test('emeHeaders option sets headers on default license xhr request', func
setTimeout(() => {
session.trigger({
type: 'message',
message: 'the-message'
message: 'the-message',
messageType: 'license-request'
});

assert.equal(xhrCalls.length, 1, 'made one XHR');
Expand Down Expand Up @@ -925,7 +975,8 @@ QUnit.test('licenseHeaders keySystems property overrides emeHeaders value', func
setTimeout(() => {
session.trigger({
type: 'message',
message: 'the-message'
message: 'the-message',
messageType: 'license-request'
});

assert.equal(xhrCalls.length, 1, 'made one XHR');
Expand Down Expand Up @@ -1028,7 +1079,7 @@ QUnit.test('addPendingSessions reuses saved options', function(assert) {
'added listener for message event'
);
// callback should call getLicense, which continues this test
eventListeners[0].callback({ message: 'test message' });
eventListeners[0].callback({messageType: 'license-request', message: 'test message'});
return Promise.resolve();
},
// this call and everything after is beyond the scope of this test
Expand Down

0 comments on commit c15d1ca

Please sign in to comment.