Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 var keySystem = QueryString.keysystem; | 5 var keySystem = QueryString.keysystem; |
| 6 var mediaFile = QueryString.mediafile; | 6 var mediaFile = QueryString.mediafile; |
| 7 var mediaType = QueryString.mediatype || 'video/webm; codecs="vorbis, vp8"'; | 7 var mediaType = QueryString.mediatype || 'video/webm; codecs="vorbis, vp8"'; |
| 8 var useMSE = QueryString.usemse == 1; | 8 var useMSE = QueryString.usemse == 1; |
| 9 | 9 |
| 10 // Default key used to encrypt many media files used in browser tests. | 10 // Default key used to encrypt many media files used in browser tests. |
| 11 var KEY = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, | 11 var KEY = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, |
| 12 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); | 12 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); |
| 13 // KEY_ID constant used as init data while encrypting test media files. | 13 // KEY_ID constant used as init data while encrypting test media files. |
| 14 var KEY_ID = getInitDataFromKeyId("0123456789012345"); | 14 var KEY_ID = getInitDataFromKeyId("0123456789012345"); |
| 15 // Heart beat message header. | 15 // Heart beat message header. |
| 16 var HEART_BEAT_HEADER = 'HEARTBEAT'; | 16 var HEART_BEAT_HEADER = 'HEARTBEAT'; |
| 17 var EXTERNAL_CLEAR_KEY_KEY_SYSTEM = "org.chromium.externalclearkey"; | 17 var EXTERNAL_CLEAR_KEY_KEY_SYSTEM = "org.chromium.externalclearkey"; |
| 18 var DECRYPT_ONLY_EXTERNAL_CLEAR_KEY_KEY_SYSTEM = | |
|
ddorwin
2013/11/21 04:10:58
we don't need this (see below)
xhwang
2013/11/22 01:47:36
Done.
| |
| 19 "org.chromium.externalclearkey.decryptonly"; | |
| 18 // Note that his URL has been normalized from the one in clear_key_cdm.cc. | 20 // Note that his URL has been normalized from the one in clear_key_cdm.cc. |
| 19 var EXTERNAL_CLEAR_KEY_HEARTBEAT_URL = | 21 var EXTERNAL_CLEAR_KEY_HEARTBEAT_URL = |
| 20 'http://test.externalclearkey.chromium.org/'; | 22 'http://test.externalclearkey.chromium.org/'; |
| 21 | 23 |
| 22 function isHeartbeatMessage(msg) { | 24 function isHeartbeatMessage(msg) { |
| 23 if (msg.length < HEART_BEAT_HEADER.length) | 25 if (msg.length < HEART_BEAT_HEADER.length) |
| 24 return false; | 26 return false; |
| 25 for (var i = 0; i < HEART_BEAT_HEADER.length; ++i) { | 27 for (var i = 0; i < HEART_BEAT_HEADER.length; ++i) { |
| 26 if (String.fromCharCode(msg[i]) != HEART_BEAT_HEADER[i]) | 28 if (String.fromCharCode(msg[i]) != HEART_BEAT_HEADER[i]) |
| 27 return false; | 29 return false; |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 98 // keymessage in response to generateKeyRequest. Reply with key. | 100 // keymessage in response to generateKeyRequest. Reply with key. |
| 99 console.log('onKeyMessage - key request', e); | 101 console.log('onKeyMessage - key request', e); |
| 100 var initData = e.message; | 102 var initData = e.message; |
| 101 if (mediaType.indexOf('mp4') != -1) | 103 if (mediaType.indexOf('mp4') != -1) |
| 102 initData = KEY_ID; // Temporary hack for Clear Key in v0.1. | 104 initData = KEY_ID; // Temporary hack for Clear Key in v0.1. |
| 103 video.webkitAddKey(keySystem, key, initData); | 105 video.webkitAddKey(keySystem, key, initData); |
| 104 } | 106 } |
| 105 | 107 |
| 106 function verifyHeartbeatMessage(e) { | 108 function verifyHeartbeatMessage(e) { |
| 107 // Only External Clear Key sends a HEARTBEAT message. | 109 // Only External Clear Key sends a HEARTBEAT message. |
| 108 if (e.keySystem != EXTERNAL_CLEAR_KEY_KEY_SYSTEM) { | 110 if (e.keySystem != EXTERNAL_CLEAR_KEY_KEY_SYSTEM && |
| 111 e.keySystem != DECRYPT_ONLY_EXTERNAL_CLEAR_KEY_KEY_SYSTEM) { | |
|
ddorwin
2013/11/21 04:10:58
Just check the beginning.
xhwang
2013/11/22 01:47:36
Done.
| |
| 109 failTest('Unexpected heartbeat from ' + e.keySystem); | 112 failTest('Unexpected heartbeat from ' + e.keySystem); |
| 110 return; | 113 return; |
| 111 } | 114 } |
| 112 | 115 |
| 113 if (e.defaultURL != EXTERNAL_CLEAR_KEY_HEARTBEAT_URL) { | 116 if (e.defaultURL != EXTERNAL_CLEAR_KEY_HEARTBEAT_URL) { |
| 114 failTest('Heartbeat message with unexpected defaultURL: ' + e.defaultURL); | 117 failTest('Heartbeat message with unexpected defaultURL: ' + e.defaultURL); |
| 115 return; | 118 return; |
| 116 } | 119 } |
| 117 } | 120 } |
| 118 | 121 |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 133 } | 136 } |
| 134 } | 137 } |
| 135 | 138 |
| 136 function getInitDataFromKeyId(keyID) { | 139 function getInitDataFromKeyId(keyID) { |
| 137 var init_key_id = new Uint8Array(keyID.length); | 140 var init_key_id = new Uint8Array(keyID.length); |
| 138 for(var i = 0; i < keyID.length; i++) { | 141 for(var i = 0; i < keyID.length; i++) { |
| 139 init_key_id[i] = keyID.charCodeAt(i); | 142 init_key_id[i] = keyID.charCodeAt(i); |
| 140 } | 143 } |
| 141 return init_key_id; | 144 return init_key_id; |
| 142 } | 145 } |
| OLD | NEW |