Index: LayoutTests/media/encrypted-media/encrypted-media-utils.js |
diff --git a/LayoutTests/media/encrypted-media/encrypted-media-utils.js b/LayoutTests/media/encrypted-media/encrypted-media-utils.js |
index ed59afe2881e47190e86f15365f91b7ab7d90c78..a91023926f119eaab05070103c33f55359286d26 100644 |
--- a/LayoutTests/media/encrypted-media/encrypted-media-utils.js |
+++ b/LayoutTests/media/encrypted-media/encrypted-media-utils.js |
@@ -123,3 +123,24 @@ function forceTestFailureFromPromise(test, error, message) |
test.force_timeout(); |
test.done(); |
} |
+ |
+function extractSingleKeyIdFromMessage(message) |
+{ |
+ try { |
+ var json = JSON.parse(String.fromCharCode.apply(null, new Uint8Array(message))); |
+ // Decode the first element of 'kids'. |
+ // FIXME: Switch to base64url. See |
+ // https://dvcs.w3.org/hg/html-media/raw-file/default/encrypted-media/encrypted-media.html#using-base64url |
+ assert_equals(1, json.kids.length); |
+ var decoded_key = atob(json.kids[0]); |
+ // Convert to an Uint8Array and return it. |
+ return stringToUint8Array(decoded_key); |
+ } |
+ catch (o) { |
+ // Not valid JSON, so return message untouched as Uint8Array. |
+ // This is for backwards compatibility. |
+ // FIXME: Remove this once the code is switched to return JSON all |
+ // the time. |
+ return new Uint8Array(message); |
+ } |
+} |