| 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', 'abort']; |
| 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 video.addEventListener('needkey', 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 } |
| 58 }); |
| 51 mediaKeySession.addEventListener('error', function(error) { | 59 mediaKeySession.addEventListener('error', function(error) { |
| 52 Utils.failTest(error); | 60 Utils.failTest(error, KEY_ERROR); |
| 53 }); | 61 }); |
| 54 } catch (e) { | 62 } catch (e) { |
| 55 Utils.failTest(e); | 63 Utils.failTest(e); |
| 56 } | 64 } |
| 57 }; | 65 }); |
| 58 | 66 |
| 59 InitPlayer(player, video); | 67 InitPlayer(player, video); |
| 60 try { | 68 try { |
| 61 Utils.timeLog('Setting video media keys: ' + TestConfig.keySystem); | 69 Utils.timeLog('Setting video media keys: ' + TestConfig.keySystem); |
| 62 video.setMediaKeys(new MediaKeys(TestConfig.keySystem)); | 70 video.setMediaKeys(new MediaKeys(TestConfig.keySystem)); |
| 63 } catch (e) { | 71 } catch (e) { |
| 64 Utils.failTest(e); | 72 Utils.failTest(e); |
| 65 } | 73 } |
| 66 } | 74 } |
| 67 | 75 |
| 68 function InitPrefixedEMEPlayer(player, video) { | 76 function InitPrefixedEMEPlayer(player, video) { |
| 69 player.onWebkitNeedKey = function(message) { | 77 video.addEventListener('webkitneedkey', 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 } |
| 70 Utils.timeLog(TestConfig.keySystem + ' Generate key request, initData: ' + | 84 Utils.timeLog(TestConfig.keySystem + ' Generate key request, initData: ' + |
| 71 Utils.getHexString(message.initData)); | 85 Utils.getHexString(initData)); |
| 72 message.target.webkitGenerateKeyRequest( | 86 try { |
| 73 TestConfig.keySystem, message.initData); | 87 message.target.webkitGenerateKeyRequest(TestConfig.keySystem, initData); |
| 74 }; | 88 } catch(e) { |
| 89 Utils.failTest(e); |
| 90 } |
| 91 }); |
| 75 | 92 |
| 76 player.onWebkitKeyAdded = function(message) { | 93 video.addEventListener('webkitkeyadded', function(message) { |
| 77 Utils.timeLog('onWebkitKeyAdded', message); | 94 Utils.timeLog('onWebkitKeyAdded', message); |
| 78 message.target.hasKeyAdded = true; | 95 message.target.receivedKeyAdded = true; |
| 79 }; | 96 }); |
| 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 }); |
| 80 | 111 |
| 81 InitPlayer(player, video); | 112 InitPlayer(player, video); |
| 82 } | 113 } |
| OLD | NEW |