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