Commit 42f79db5 authored by jrummell's avatar jrummell Committed by Commit bot

Cleanup verifyKeyStatuses() to take KeyId/status pairs

As suggested in a previous CL, the status for each keyId should have it's own
status value rather than relying on all the KeyIds to have the same status.

No longer passing |unexpected|, as the size check verifies that the correct
number of expected KeyIds matches.

BUG=616166
TEST=modified tests pass

Review-Url: https://codereview.chromium.org/2847803005
Cr-Commit-Position: refs/heads/master@{#468105}
parent f9bf5ca8
......@@ -15,38 +15,39 @@
var initData;
// Create a list of multiple unique keyIds.
var keyIds = [ stringToUint8Array('keyid'),
stringToUint8Array('a really long keyid'),
new Uint8Array([0,1,2,3]),
new Uint8Array([0,1,2,3,4]),
new Uint8Array([0,1,2,3,4,5]),
new Uint8Array([0,1,2,3,4,6]),
stringToUint8Array('7'),
stringToUint8Array('8'),
stringToUint8Array('9'),
stringToUint8Array('10'),
stringToUint8Array('11'),
stringToUint8Array('12'),
stringToUint8Array('13'),
stringToUint8Array('14'),
stringToUint8Array('15'),
stringToUint8Array('16'),
stringToUint8Array('17'),
stringToUint8Array('18'),
stringToUint8Array('19'),
stringToUint8Array('20'),
stringToUint8Array('21'),
stringToUint8Array('22'),
stringToUint8Array('23'),
stringToUint8Array('24'),
stringToUint8Array('25')
];
const keyIds = [
{ keyId: stringToUint8Array('keyid'), status: 'usable' },
{ keyId: stringToUint8Array('a really long keyid'), status: 'usable' },
{ keyId: new Uint8Array([0,1,2,3]), status: 'usable' },
{ keyId: new Uint8Array([0,1,2,3,4]), status: 'usable' },
{ keyId: new Uint8Array([0,1,2,3,4,5]), status: 'usable' },
{ keyId: new Uint8Array([0,1,2,3,4,6]), status: 'usable' },
{ keyId: stringToUint8Array('7'), status: 'usable' },
{ keyId: stringToUint8Array('8'), status: 'usable' },
{ keyId: stringToUint8Array('9'), status: 'usable' },
{ keyId: stringToUint8Array('10'), status: 'usable' },
{ keyId: stringToUint8Array('11'), status: 'usable' },
{ keyId: stringToUint8Array('12'), status: 'usable' },
{ keyId: stringToUint8Array('13'), status: 'usable' },
{ keyId: stringToUint8Array('14'), status: 'usable' },
{ keyId: stringToUint8Array('15'), status: 'usable' },
{ keyId: stringToUint8Array('16'), status: 'usable' },
{ keyId: stringToUint8Array('17'), status: 'usable' },
{ keyId: stringToUint8Array('18'), status: 'usable' },
{ keyId: stringToUint8Array('19'), status: 'usable' },
{ keyId: stringToUint8Array('20'), status: 'usable' },
{ keyId: stringToUint8Array('21'), status: 'usable' },
{ keyId: stringToUint8Array('22'), status: 'usable' },
{ keyId: stringToUint8Array('23'), status: 'usable' },
{ keyId: stringToUint8Array('24'), status: 'usable' },
{ keyId: stringToUint8Array('25'), status: 'usable' }
];
function processKeyStatusesChange(event)
{
// All 25 keyIds should be returned in keyStatuses.
verifyKeyStatuses(mediaKeySession.keyStatuses, { expected: keyIds, unexpected: [] });
verifyKeyStatuses(mediaKeySession.keyStatuses, keyIds);
test.done();
}
......@@ -60,7 +61,7 @@
// Use the same key for all 25 keyIds.
var rawKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b,
0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]);
var jwks = keyIds.map(function(keyId) { return createJWK(keyId, rawKey); });
var jwks = keyIds.map(function(item) { return createJWK(item.keyId, rawKey); });
var jwkSet = stringToUint8Array(createJWKSet.apply(this, jwks));
mediaKeySession.update(jwkSet).catch(function(error) {
......
......@@ -30,7 +30,7 @@
assert_equals(event.target, mediaKeySession1);
// No keys added yet.
verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [], unexpected: [key1, key2] });
verifyKeyStatuses(mediaKeySession1.keyStatuses, []);
// Add key1 to session1.
var jwkSet = stringToUint8Array(createJWKSet(createJWK(key1, rawKey1)));
......@@ -46,7 +46,8 @@
// Check that keyStatuses contains the expected key1 only.
dumpKeyStatuses(mediaKeySession1.keyStatuses);
verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [key1], unexpected: [key2] });
verifyKeyStatuses(mediaKeySession1.keyStatuses,
[ { keyId: key1, status: 'usable' } ]);
// Now trigger a message event on session2.
mediaKeySession2.generateRequest(initDataType, initData).catch(function(error) {
......@@ -60,10 +61,11 @@
assert_equals(event.target, mediaKeySession2);
// session2 has no keys added yet.
verifyKeyStatuses(mediaKeySession2.keyStatuses, { expected: [], unexpected: [key1, key2] });
verifyKeyStatuses(mediaKeySession2.keyStatuses, []);
// session1 should still have 1 key.
verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [key1], unexpected: [key2] });
verifyKeyStatuses(mediaKeySession1.keyStatuses,
[ { keyId: key1, status: 'usable' } ]);
// Add key2 to session2.
var jwkSet = stringToUint8Array(createJWKSet(createJWK(key2, rawKey2)));
......@@ -79,10 +81,12 @@
// Check that keyStatuses contains the expected key2 only.
dumpKeyStatuses(mediaKeySession2.keyStatuses);
verifyKeyStatuses(mediaKeySession2.keyStatuses, { expected: [key2], unexpected: [key1] });
verifyKeyStatuses(mediaKeySession2.keyStatuses,
[ { keyId: key2, status: 'usable' } ]);
// session1 should still have 1 key.
verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [key1], unexpected: [key2] });
verifyKeyStatuses(mediaKeySession1.keyStatuses,
[ { keyId: key1, status: 'usable' } ]);
test.done();
}
......@@ -96,8 +100,8 @@
mediaKeySession2 = mediaKeys.createSession();
// There should be no keys defined on either session.
verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [], unexpected: [key1, key2] });
verifyKeyStatuses(mediaKeySession2.keyStatuses, { expected: [], unexpected: [key1, key2] });
verifyKeyStatuses(mediaKeySession1.keyStatuses, []);
verifyKeyStatuses(mediaKeySession2.keyStatuses, []);
// Bind all the event handlers now.
waitForEventAndRunStep('message', mediaKeySession1, processMessage1, test);
......
......@@ -27,7 +27,7 @@
function processMessage(event)
{
// No keys added yet.
verifyKeyStatuses(mediaKeySession.keyStatuses, { expected: [], unexpected: [key1, key2] });
verifyKeyStatuses(mediaKeySession.keyStatuses, []);
// Add key1 to the session.
firstEvent = true;
......@@ -42,7 +42,8 @@
if (firstEvent) {
// Verify that the session only contains key1.
dumpKeyStatuses(mediaKeySession.keyStatuses);
verifyKeyStatuses(mediaKeySession.keyStatuses, { expected: [key1], unexpected: [key2] });
verifyKeyStatuses(mediaKeySession.keyStatuses,
[ { keyId: key1, status: 'usable' } ]);
// Now add key2 to the session.
firstEvent = false;
......@@ -53,7 +54,8 @@
} else {
// Verify that the session now contains key1 and key2.
dumpKeyStatuses(mediaKeySession.keyStatuses);
verifyKeyStatuses(mediaKeySession.keyStatuses, { expected: [key1, key2] });
verifyKeyStatuses(mediaKeySession.keyStatuses,
[ { keyId: key1, status: 'usable' }, { keyId: key2, status: 'usable' } ]);
test.done();
}
......
......@@ -34,12 +34,12 @@
}).then(function() {
// After update() the session should have 1 usable key.
verifyKeyStatuses(mediaKeySession.keyStatuses,
{ expected: [keyId], unexpected: [] }, 'usable');
[ { keyId: keyId, status: 'usable' } ]);
return mediaKeySession.remove();
}).then(function() {
// After remove() all keys should be 'released'.
verifyKeyStatuses(mediaKeySession.keyStatuses,
{ expected: [keyId], unexpected: [] }, 'released');
[ { keyId: keyId, status: 'released' } ]);
// After remove() the session expiry should be NaN.
// ClearKey doesn't change set expiry times, but check
// anyway.
......@@ -47,8 +47,7 @@
return mediaKeySession.close();
}).then(function() {
// After close() there should be no keys.
verifyKeyStatuses(mediaKeySession.keyStatuses,
{ expected: [], unexpected: [keyId] });
verifyKeyStatuses(mediaKeySession.keyStatuses, []);
});
}, 'Test MediaKeySession remove() function on temporary sessions');
......
......@@ -181,28 +181,18 @@ function dumpKeyStatuses(keyStatuses)
});
}
// Verify that |keyStatuses| contains just the keys in |keys.expected|
// and none of the keys in |keys.unexpected|. All expected keys should have
// status |status|. Example call: verifyKeyStatuses(mediaKeySession.keyStatuses,
// { expected: [key1], unexpected: [key2] }, 'usable');
function verifyKeyStatuses(keyStatuses, keys, status) {
var expected = keys.expected || [];
var unexpected = keys.unexpected || [];
status = status || 'usable';
// Verify that |keyStatuses| contains just the keys in the array |expected|.
// Each entry specifies the keyId and status expected.
// Example call: verifyKeyStatuses(mediaKeySession.keyStatuses,
// [{keyId: key1, status: 'usable'}, {keyId: key2, status: 'released'}]);
function verifyKeyStatuses(keyStatuses, expected) {
// |keyStatuses| should have same size as number of |keys.expected|.
assert_equals(keyStatuses.size, expected.length);
// All |keys.expected| should be found.
expected.map(function(key) {
assert_true(keyStatuses.has(key));
assert_equals(keyStatuses.get(key), status);
});
// All |keys.unexpected| should not be found.
unexpected.map(function(key) {
assert_false(keyStatuses.has(key));
assert_equals(keyStatuses.get(key), undefined);
// All |expected| should be found.
expected.map(function(item) {
assert_true(keyStatuses.has(item.keyId));
assert_equals(keyStatuses.get(item.keyId), item.status);
});
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment