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 // Prepares a video element for playback by setting default event handlers | 5 // Prepares a video element for playback by setting default event handlers |
| 6 // and source attribute. | 6 // and source attribute. |
| 7 function InitPlayer(player, video) { | 7 function InitPlayer(player, video) { |
| 8 Utils.timeLog('Registering video event handlers.'); | 8 Utils.timeLog('Registering video event handlers.'); |
| 9 | 9 |
| 10 // Map from event name to event listener function name. It is common for | 10 // Map from event name to event listener function name. It is common for |
| 11 // event listeners to be named onEventName. | 11 // event listeners to be named onEventName. |
| 12 var eventListenerMap = { | 12 var eventListenerMap = { |
| 13 'needkey': 'onNeedKey', | 13 'needkey': 'onNeedKey', |
| 14 'webkitneedkey': 'onWebkitNeedKey', | 14 'webkitneedkey': 'onWebkitNeedKey', |
| 15 'webkitkeymessage': 'onWebkitKeyMessage', | 15 'webkitkeymessage': 'onWebkitKeyMessage', |
| 16 'webkitkeyadded': 'onWebkitKeyAdded', | 16 'webkitkeyadded': 'onWebkitKeyAdded', |
| 17 'webkitkeyerror': 'onWebkitKeyError', | |
| 17 'error': 'onError', | 18 'error': 'onError', |
| 18 'abort': 'onAbort' | 19 'abort': 'onAbort' |
| 19 }; | 20 }; |
| 20 | 21 |
| 21 // List of events that fail tests. | 22 // List of events that fail tests. |
| 22 var failingEvents = ['error', 'onAbort']; | 23 var failingEvents = ['error', 'onAbort']; |
|
jrummell
2014/05/29 21:45:05
I'm confused. The first entry is event name, the s
shadi
2014/05/31 00:31:37
Done.
| |
| 23 | 24 |
| 24 for (eventName in eventListenerMap) { | 25 for (eventName in eventListenerMap) { |
| 25 video.addEventListener(eventName, | 26 video.addEventListener(eventName, |
| 26 player[eventListenerMap[eventName]] || function(){}); | 27 player[eventListenerMap[eventName]] || function(){}); |
| 27 } | 28 } |
| 28 | 29 |
| 29 for (var i = 0; i < failingEvents.length; i++) { | 30 for (var i = 0; i < failingEvents.length; i++) { |
| 30 video.addEventListener(failingEvents[i], Utils.failTest); | 31 video.addEventListener(failingEvents[i], Utils.failTest); |
| 31 } | 32 } |
| 32 | 33 |
| 33 if (TestConfig.useSRC) { | 34 if (TestConfig.useSRC) { |
| 34 Utils.timeLog('Loading media using src.'); | 35 Utils.timeLog('Loading media using src.'); |
| 35 video.src = TestConfig.mediaFile; | 36 video.src = TestConfig.mediaFile; |
| 36 } else { | 37 } else { |
| 37 var mediaSource = MediaSourceUtils.loadMediaSourceForTest(); | 38 var mediaSource = MediaSourceUtils.loadMediaSourceForTest(); |
| 38 video.src = window.URL.createObjectURL(mediaSource); | 39 video.src = window.URL.createObjectURL(mediaSource); |
| 39 } | 40 } |
| 40 } | 41 } |
| 41 | 42 |
| 42 function InitEMEPlayer(player, video) { | 43 function InitEMEPlayer(player, video) { |
| 43 player.onNeedKey = function(message) { | 44 player.onNeedKey = function(message) { |
| 44 Utils.timeLog('Creating new media key session for contentType: ' + | 45 Utils.timeLog('Creating new media key session for contentType: ' + |
| 45 message.contentType + ', initData: ' + | 46 message.contentType + ', initData: ' + |
| 46 Utils.getHexString(message.initData)); | 47 Utils.getHexString(message.initData)); |
| 47 try { | 48 try { |
| 48 var mediaKeySession = message.target.mediaKeys.createSession( | 49 var mediaKeySession = message.target.mediaKeys.createSession( |
| 49 message.contentType, message.initData); | 50 message.contentType, message.initData); |
| 50 mediaKeySession.addEventListener('message', player.onMessage); | 51 mediaKeySession.addEventListener('message', player.onMessage); |
| 52 mediaKeySession.addEventListener('message', function(message) { | |
| 53 video.receivedKeyMessage = true; | |
| 54 if (Utils.isHeartBeatMessage(message.message)) { | |
| 55 Utils.timeLog('MediaKeySession onMessage - heart beat', message); | |
| 56 video.receivedHeartbeat = true; | |
| 57 return; | |
|
jrummell
2014/05/29 21:45:05
The return is not really necessary.
shadi
2014/05/31 00:31:37
Done.
| |
| 58 } | |
| 59 }); | |
| 51 mediaKeySession.addEventListener('error', function(error) { | 60 mediaKeySession.addEventListener('error', function(error) { |
| 52 Utils.failTest(error); | 61 Utils.failTest(error, KEY_ERROR); |
| 53 }); | 62 }); |
| 54 } catch (e) { | 63 } catch (error) { |
|
ddorwin
2014/05/30 17:42:56
This is really an "exception". I think "e" is prob
shadi
2014/05/31 00:31:37
Done.
| |
| 55 Utils.failTest(e); | 64 Utils.failTest(error); |
| 56 } | 65 } |
| 57 }; | 66 }; |
| 58 | 67 |
| 59 InitPlayer(player, video); | 68 InitPlayer(player, video); |
| 60 try { | 69 try { |
| 61 Utils.timeLog('Setting video media keys: ' + TestConfig.keySystem); | 70 Utils.timeLog('Setting video media keys: ' + TestConfig.keySystem); |
| 62 video.setMediaKeys(new MediaKeys(TestConfig.keySystem)); | 71 video.setMediaKeys(new MediaKeys(TestConfig.keySystem)); |
| 63 } catch (e) { | 72 } catch (e) { |
| 64 Utils.failTest(e); | 73 Utils.failTest(e); |
| 65 } | 74 } |
| 66 } | 75 } |
| 67 | 76 |
| 68 function InitPrefixedEMEPlayer(player, video) { | 77 function InitPrefixedEMEPlayer(player, video) { |
| 69 player.onWebkitNeedKey = function(message) { | 78 player.onWebkitNeedKey = function(message) { |
| 70 Utils.timeLog(TestConfig.keySystem + ' Generate key request, initData: ' + | 79 Utils.timeLog(TestConfig.keySystem + ' Generate key request, initData: ' + |
| 71 Utils.getHexString(message.initData)); | 80 Utils.getHexString(message.initData)); |
| 72 message.target.webkitGenerateKeyRequest( | 81 try { |
| 73 TestConfig.keySystem, message.initData); | 82 message.target.webkitGenerateKeyRequest( |
| 83 TestConfig.keySystem, message.initData); | |
| 84 } catch(error) { | |
| 85 Utils.failTest(error); | |
| 86 } | |
| 74 }; | 87 }; |
| 75 | 88 |
| 76 player.onWebkitKeyAdded = function(message) { | 89 player.onWebkitKeyAdded = function(message) { |
| 77 Utils.timeLog('onWebkitKeyAdded', message); | 90 Utils.timeLog('onWebkitKeyAdded', message); |
| 78 message.target.hasKeyAdded = true; | 91 message.target.receivedKeyAdded = true; |
| 79 }; | 92 }; |
| 80 | 93 |
| 94 video.addEventListener('webkitkeyerror', function(error) { | |
|
jrummell
2014/05/29 21:45:05
Curious why some events are done as play.onWebKitx
shadi
2014/05/31 00:31:37
The disadvantage of using player.[event_name] here
| |
| 95 Utils.timeLog('onWebkitKeyError', error); | |
| 96 Utils.failTest(error, KEY_ERROR); | |
| 97 }); | |
| 98 | |
| 99 video.addEventListener('webkitkeymessage', function(message) { | |
| 100 Utils.timeLog('onWebkitKeyMessage', message); | |
| 101 message.target.receivedKeyMessage = true; | |
| 102 if (Utils.isHeartBeatMessage(message.message)) { | |
| 103 Utils.timeLog('onWebkitKeyMessage - heart beat', message); | |
| 104 message.target.receivedHeartbeat = true; | |
| 105 return; | |
| 106 } | |
| 107 }); | |
| 108 | |
| 81 InitPlayer(player, video); | 109 InitPlayer(player, video); |
| 82 } | 110 } |
| OLD | NEW |