Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 // The PlayerUtils provides utility functions to binding common media events | 5 // The PlayerUtils provides utility functions to binding common media events |
| 6 // to specific player functions. It also provides functions to load media source | 6 // to specific player functions. It also provides functions to load media source |
| 7 // base on test configurations. | 7 // base on test configurations. |
| 8 var PlayerUtils = new function() { | 8 var PlayerUtils = new function() { |
| 9 } | 9 } |
| 10 | 10 |
| 11 // Prepares a video element for playback by setting default event handlers | 11 // Prepares a video element for playback by setting default event handlers |
| 12 // and source attribute. | 12 // and source attribute. |
| 13 PlayerUtils.registerDefaultEventListeners = function(player) { | 13 PlayerUtils.registerDefaultEventListeners = function(player) { |
| 14 Utils.timeLog('Registering video event handlers.'); | 14 Utils.timeLog('Registering video event handlers.'); |
| 15 // Map from event name to event listener function name. It is common for | 15 // Map from event name to event listener function name. It is common for |
| 16 // event listeners to be named onEventName. | 16 // event listeners to be named onEventName. |
| 17 var eventListenerMap = { | 17 var eventListenerMap = { |
| 18 'needkey': 'onNeedKey', | 18 s 'needkey': 'onNeedKey', |
|
jrummell
2014/10/14 22:44:53
Does this line start with 's'?
sandersd (OOO until July 31)
2014/10/14 22:52:51
Whoops, no, this line shouldn't exist at all.
| |
| 19 'encrypted': 'onEncrypted', | 19 'encrypted': 'onEncrypted', |
| 20 'webkitneedkey': 'onWebkitNeedKey', | 20 'webkitneedkey': 'onWebkitNeedKey', |
| 21 'webkitkeymessage': 'onWebkitKeyMessage', | 21 'webkitkeymessage': 'onWebkitKeyMessage', |
| 22 'webkitkeyadded': 'onWebkitKeyAdded', | 22 'webkitkeyadded': 'onWebkitKeyAdded', |
| 23 'webkitkeyerror': 'onWebkitKeyError' | 23 'webkitkeyerror': 'onWebkitKeyError' |
| 24 }; | 24 }; |
| 25 for (eventName in eventListenerMap) { | 25 for (eventName in eventListenerMap) { |
| 26 var eventListenerFunction = player[eventListenerMap[eventName]]; | 26 var eventListenerFunction = player[eventListenerMap[eventName]]; |
| 27 if (eventListenerFunction) { | 27 if (eventListenerFunction) { |
| 28 player.video.addEventListener(eventName, function(e) { | 28 player.video.addEventListener(eventName, function(e) { |
| 29 player[eventListenerMap[e.type]](e); | 29 player[eventListenerMap[e.type]](e); |
| 30 }); | 30 }); |
| 31 } | 31 } |
| 32 } | 32 } |
| 33 // List of events that fail tests. | 33 // List of events that fail tests. |
| 34 var failingEvents = ['error', 'abort']; | 34 var failingEvents = ['error', 'abort']; |
| 35 for (var i = 0; i < failingEvents.length; i++) { | 35 for (var i = 0; i < failingEvents.length; i++) { |
| 36 player.video.addEventListener(failingEvents[i], Utils.failTest); | 36 player.video.addEventListener(failingEvents[i], Utils.failTest); |
| 37 } | 37 } |
| 38 }; | 38 }; |
| 39 | 39 |
| 40 PlayerUtils.registerEMEEventListeners = function(player) { | 40 PlayerUtils.registerEMEEventListeners = function(player) { |
| 41 var encrypted_handler = function(message) { | 41 player.video.addEventListener('encrypted', function(message) { |
| 42 | 42 |
| 43 function addMediaKeySessionListeners(mediaKeySession) { | 43 function addMediaKeySessionListeners(mediaKeySession) { |
| 44 mediaKeySession.addEventListener('message', function(message) { | 44 mediaKeySession.addEventListener('message', function(message) { |
| 45 player.video.receivedKeyMessage = true; | 45 player.video.receivedKeyMessage = true; |
| 46 if (Utils.isHeartBeatMessage(message.message)) { | 46 if (Utils.isHeartBeatMessage(message.message)) { |
| 47 Utils.timeLog('MediaKeySession onMessage - heart beat', message); | 47 Utils.timeLog('MediaKeySession onMessage - heart beat', message); |
| 48 player.video.receivedHeartbeat = true; | 48 player.video.receivedHeartbeat = true; |
| 49 } | 49 } |
| 50 player.onMessage(message); | 50 player.onMessage(message); |
| 51 }); | 51 }); |
| 52 mediaKeySession.addEventListener('error', function(error) { | 52 mediaKeySession.addEventListener('error', function(error) { |
| 53 Utils.failTest(error, KEY_ERROR); | 53 Utils.failTest(error, KEY_ERROR); |
| 54 }); | 54 }); |
| 55 } | 55 } |
| 56 | 56 |
| 57 // TODO(sandersd): Stop checking contentType once we complete the switch to | |
| 58 // using the 'encrypted' event. | |
| 59 var init_data_type = message.initDataType || message.contentType; | |
| 60 Utils.timeLog('Creating new media key session for initDataType: ' + | 57 Utils.timeLog('Creating new media key session for initDataType: ' + |
| 61 init_data_type + ', initData: ' + | 58 message.initDataType + ', initData: ' + |
| 62 Utils.getHexString(new Uint8Array(message.initData))); | 59 Utils.getHexString(new Uint8Array(message.initData))); |
| 63 try { | 60 try { |
| 64 if (message.target.mediaKeys.createSession.length == 0) { | 61 if (message.target.mediaKeys.createSession.length == 0) { |
| 65 // FIXME(jrummell): Remove this test (and else branch) once blink | 62 // FIXME(jrummell): Remove this test (and else branch) once blink |
| 66 // uses the new API. | 63 // uses the new API. |
| 67 var session = message.target.mediaKeys.createSession(); | 64 var session = message.target.mediaKeys.createSession(); |
| 68 addMediaKeySessionListeners(session); | 65 addMediaKeySessionListeners(session); |
| 69 session.generateRequest(init_data_type, message.initData) | 66 session.generateRequest(message.initDataType, message.initData) |
| 70 .catch(function(error) { | 67 .catch(function(error) { |
| 71 Utils.failTest(error, KEY_ERROR); | 68 Utils.failTest(error, KEY_ERROR); |
| 72 }); | 69 }); |
| 73 } else { | 70 } else { |
| 74 var session = message.target.mediaKeys.createSession( | 71 var session = message.target.mediaKeys.createSession( |
| 75 init_data_type, message.initData); | 72 message.initDataType, message.initData); |
| 76 session.then(addMediaKeySessionListeners) | 73 session.then(addMediaKeySessionListeners) |
| 77 .catch(function(error) { | 74 .catch(function(error) { |
| 78 Utils.failTest(error, KEY_ERROR); | 75 Utils.failTest(error, KEY_ERROR); |
| 79 }); | 76 }); |
| 80 } | 77 } |
| 81 } catch (e) { | 78 } catch (e) { |
| 82 Utils.failTest(e); | 79 Utils.failTest(e); |
| 83 } | 80 } |
| 84 } | 81 }); |
| 85 | |
| 86 // TODO(sandersd): Stop registering 'needkey' after it is renamed to | |
| 87 // 'encrypted'. | |
| 88 if (player.video.onencrypted) { | |
| 89 player.video.addEventListener('encrypted', encrypted_handler); | |
| 90 } else { | |
| 91 player.video.addEventListener('needkey', encrypted_handler); | |
| 92 } | |
| 93 | 82 |
| 94 this.registerDefaultEventListeners(player); | 83 this.registerDefaultEventListeners(player); |
| 95 try { | 84 try { |
| 96 Utils.timeLog('Setting video media keys: ' + player.testConfig.keySystem); | 85 Utils.timeLog('Setting video media keys: ' + player.testConfig.keySystem); |
| 97 MediaKeys.create(player.testConfig.keySystem).then(function(mediaKeys) { | 86 MediaKeys.create(player.testConfig.keySystem).then(function(mediaKeys) { |
| 98 player.video.setMediaKeys(mediaKeys); | 87 player.video.setMediaKeys(mediaKeys); |
| 99 }).catch(function(error) { | 88 }).catch(function(error) { |
| 100 Utils.failTest(error, NOTSUPPORTEDERROR); | 89 Utils.failTest(error, NOTSUPPORTEDERROR); |
| 101 }); | 90 }); |
| 102 } catch (e) { | 91 } catch (e) { |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 193 default: | 182 default: |
| 194 Utils.timeLog(keySystem + ' is not a known key system'); | 183 Utils.timeLog(keySystem + ' is not a known key system'); |
| 195 if (usePrefixedEME) | 184 if (usePrefixedEME) |
| 196 return PrefixedClearKeyPlayer; | 185 return PrefixedClearKeyPlayer; |
| 197 return ClearKeyPlayer; | 186 return ClearKeyPlayer; |
| 198 } | 187 } |
| 199 } | 188 } |
| 200 var Player = getPlayerType(testConfig.keySystem); | 189 var Player = getPlayerType(testConfig.keySystem); |
| 201 return new Player(video, testConfig); | 190 return new Player(video, testConfig); |
| 202 }; | 191 }; |
| OLD | NEW |