| 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', | |
| 18 'error': 'onError', | 17 'error': 'onError', |
| 19 'abort': 'onAbort' | 18 'abort': 'onAbort' |
| 20 }; | 19 }; |
| 21 | 20 |
| 22 // List of events that fail tests. | 21 // List of events that fail tests. |
| 23 var failingEvents = ['error', 'abort']; | 22 var failingEvents = ['error', 'onAbort']; |
| 24 | 23 |
| 25 for (eventName in eventListenerMap) { | 24 for (eventName in eventListenerMap) { |
| 26 video.addEventListener(eventName, | 25 video.addEventListener(eventName, |
| 27 player[eventListenerMap[eventName]] || function(){}); | 26 player[eventListenerMap[eventName]] || function(){}); |
| 28 } | 27 } |
| 29 | 28 |
| 30 for (var i = 0; i < failingEvents.length; i++) { | 29 for (var i = 0; i < failingEvents.length; i++) { |
| 31 video.addEventListener(failingEvents[i], Utils.failTest); | 30 video.addEventListener(failingEvents[i], Utils.failTest); |
| 32 } | 31 } |
| 33 | 32 |
| 34 if (TestConfig.useSRC) { | 33 if (TestConfig.useSRC) { |
| 35 Utils.timeLog('Loading media using src.'); | 34 Utils.timeLog('Loading media using src.'); |
| 36 video.src = TestConfig.mediaFile; | 35 video.src = TestConfig.mediaFile; |
| 37 } else { | 36 } else { |
| 38 var mediaSource = MediaSourceUtils.loadMediaSourceForTest(); | 37 var mediaSource = MediaSourceUtils.loadMediaSourceForTest(); |
| 39 video.src = window.URL.createObjectURL(mediaSource); | 38 video.src = window.URL.createObjectURL(mediaSource); |
| 40 } | 39 } |
| 41 } | 40 } |
| 42 | 41 |
| 43 function InitEMEPlayer(player, video) { | 42 function InitEMEPlayer(player, video) { |
| 44 video.addEventListener('needkey', function(message) { | 43 player.onNeedKey = function(message) { |
| 45 Utils.timeLog('Creating new media key session for contentType: ' + | 44 Utils.timeLog('Creating new media key session for contentType: ' + |
| 46 message.contentType + ', initData: ' + | 45 message.contentType + ', initData: ' + |
| 47 Utils.getHexString(message.initData)); | 46 Utils.getHexString(message.initData)); |
| 48 try { | 47 try { |
| 49 var mediaKeySession = message.target.mediaKeys.createSession( | 48 var mediaKeySession = message.target.mediaKeys.createSession( |
| 50 message.contentType, message.initData); | 49 message.contentType, message.initData); |
| 51 mediaKeySession.addEventListener('message', player.onMessage); | 50 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 } | |
| 58 }); | |
| 59 mediaKeySession.addEventListener('error', function(error) { | 51 mediaKeySession.addEventListener('error', function(error) { |
| 60 Utils.failTest(error, KEY_ERROR); | 52 Utils.failTest(error); |
| 61 }); | 53 }); |
| 62 } catch (e) { | 54 } catch (e) { |
| 63 Utils.failTest(e); | 55 Utils.failTest(e); |
| 64 } | 56 } |
| 65 }); | 57 }; |
| 66 | 58 |
| 67 InitPlayer(player, video); | 59 InitPlayer(player, video); |
| 68 try { | 60 try { |
| 69 Utils.timeLog('Setting video media keys: ' + TestConfig.keySystem); | 61 Utils.timeLog('Setting video media keys: ' + TestConfig.keySystem); |
| 70 video.setMediaKeys(new MediaKeys(TestConfig.keySystem)); | 62 video.setMediaKeys(new MediaKeys(TestConfig.keySystem)); |
| 71 } catch (e) { | 63 } catch (e) { |
| 72 Utils.failTest(e); | 64 Utils.failTest(e); |
| 73 } | 65 } |
| 74 } | 66 } |
| 75 | 67 |
| 76 function InitPrefixedEMEPlayer(player, video) { | 68 function InitPrefixedEMEPlayer(player, video) { |
| 77 video.addEventListener('webkitneedkey', function(message) { | 69 player.onWebkitNeedKey = function(message) { |
| 78 var initData = message.initData; | |
| 79 if (TestConfig.sessionToLoad) { | |
| 80 Utils.timeLog('Loading session: ' + TestConfig.sessionToLoad) | |
| 81 initData = Utils.convertToUint8Array( | |
| 82 PREFIXED_API_LOAD_SESSION_HEADER + TestConfig.sessionToLoad); | |
| 83 } | |
| 84 Utils.timeLog(TestConfig.keySystem + ' Generate key request, initData: ' + | 70 Utils.timeLog(TestConfig.keySystem + ' Generate key request, initData: ' + |
| 85 Utils.getHexString(initData)); | 71 Utils.getHexString(message.initData)); |
| 86 try { | 72 message.target.webkitGenerateKeyRequest( |
| 87 message.target.webkitGenerateKeyRequest(TestConfig.keySystem, initData); | 73 TestConfig.keySystem, message.initData); |
| 88 } catch(e) { | 74 }; |
| 89 Utils.failTest(e); | |
| 90 } | |
| 91 }); | |
| 92 | 75 |
| 93 video.addEventListener('webkitkeyadded', function(message) { | 76 player.onWebkitKeyAdded = function(message) { |
| 94 Utils.timeLog('onWebkitKeyAdded', message); | 77 Utils.timeLog('onWebkitKeyAdded', message); |
| 95 message.target.receivedKeyAdded = true; | 78 message.target.hasKeyAdded = true; |
| 96 }); | 79 }; |
| 97 | |
| 98 video.addEventListener('webkitkeyerror', function(error) { | |
| 99 Utils.timeLog('onWebkitKeyError', error); | |
| 100 Utils.failTest(error, KEY_ERROR); | |
| 101 }); | |
| 102 | |
| 103 video.addEventListener('webkitkeymessage', function(message) { | |
| 104 Utils.timeLog('onWebkitKeyMessage', message); | |
| 105 message.target.receivedKeyMessage = true; | |
| 106 if (Utils.isHeartBeatMessage(message.message)) { | |
| 107 Utils.timeLog('onWebkitKeyMessage - heart beat', message); | |
| 108 message.target.receivedHeartbeat = true; | |
| 109 } | |
| 110 }); | |
| 111 | 80 |
| 112 InitPlayer(player, video); | 81 InitPlayer(player, video); |
| 113 } | 82 } |
| OLD | NEW |