Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / media / test / data / eme_player_js / utils.js
index 491bac7..ca62cd1 100644 (file)
@@ -79,6 +79,28 @@ Utils.createJWKData = function(keyId, key) {
   return Utils.convertToUint8Array(createJWKSet(createJWK(keyId, key)));
 };
 
+Utils.extractFirstLicenseKey = function(message) {
+  // Decodes data (Uint8Array) from base64 string.
+  // TODO(jrummell): Update once the EME spec is updated to say base64url
+  // encoding.
+  function base64Decode(data) {
+    return atob(data);
+  }
+
+  function convertToString(data) {
+    return String.fromCharCode.apply(null, Utils.convertToUint8Array(data));
+  }
+
+  try {
+    var json = JSON.parse(convertToString(message));
+    // Decode the first element of 'kids', return it as an Uint8Array.
+    return Utils.convertToUint8Array(base64Decode(json.kids[0]));
+  } catch (error) {
+    // Not valid JSON, so return message untouched as Uint8Array.
+    return Utils.convertToUint8Array(message);
+  }
+}
+
 Utils.documentLog = function(log, success, time) {
   if (!docLogs)
     return;
@@ -154,13 +176,17 @@ Utils.getHexString = function(uintArray) {
   return hex_str;
 };
 
-Utils.getInitDataFromMessage = function(message, mediaType) {
-  var initData = Utils.convertToUint8Array(message.message);
+Utils.getInitDataFromMessage = function(message, mediaType, decodeJSONMessage) {
+  var initData;
   if (mediaType.indexOf('mp4') != -1) {
     // Temporary hack for Clear Key in v0.1.
     // If content uses mp4, then message.message is PSSH data. Instead of
     // parsing that data we hard code the initData.
     initData = Utils.convertToUint8Array(KEY_ID);
+  } else if (decodeJSONMessage) {
+    initData = Utils.extractFirstLicenseKey(message.message);
+  } else {
+    initData = Utils.convertToUint8Array(message.message);
   }
   return initData;
 };