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 'needkey': 'onNeedKey', |
19 'encrypted': 'onEncrypted', | |
19 'webkitneedkey': 'onWebkitNeedKey', | 20 'webkitneedkey': 'onWebkitNeedKey', |
20 'webkitkeymessage': 'onWebkitKeyMessage', | 21 'webkitkeymessage': 'onWebkitKeyMessage', |
21 'webkitkeyadded': 'onWebkitKeyAdded', | 22 'webkitkeyadded': 'onWebkitKeyAdded', |
22 'webkitkeyerror': 'onWebkitKeyError' | 23 'webkitkeyerror': 'onWebkitKeyError' |
23 }; | 24 }; |
24 for (eventName in eventListenerMap) { | 25 for (eventName in eventListenerMap) { |
25 var eventListenerFunction = player[eventListenerMap[eventName]]; | 26 var eventListenerFunction = player[eventListenerMap[eventName]]; |
26 if (eventListenerFunction) { | 27 if (eventListenerFunction) { |
27 player.video.addEventListener(eventName, function(e) { | 28 player.video.addEventListener(eventName, function(e) { |
28 player[eventListenerMap[e.type]](e); | 29 player[eventListenerMap[e.type]](e); |
29 }); | 30 }); |
30 } | 31 } |
31 } | 32 } |
32 // List of events that fail tests. | 33 // List of events that fail tests. |
33 var failingEvents = ['error', 'abort']; | 34 var failingEvents = ['error', 'abort']; |
34 for (var i = 0; i < failingEvents.length; i++) { | 35 for (var i = 0; i < failingEvents.length; i++) { |
35 player.video.addEventListener(failingEvents[i], Utils.failTest); | 36 player.video.addEventListener(failingEvents[i], Utils.failTest); |
36 } | 37 } |
37 }; | 38 }; |
38 | 39 |
39 PlayerUtils.registerEMEEventListeners = function(player) { | 40 PlayerUtils.registerEMEEventListeners = function(player) { |
40 player.video.addEventListener('needkey', function(message) { | 41 var encrypted_handler = function(message) { |
41 | 42 |
42 function addMediaKeySessionListeners(mediaKeySession) { | 43 function addMediaKeySessionListeners(mediaKeySession) { |
43 mediaKeySession.addEventListener('message', function(message) { | 44 mediaKeySession.addEventListener('message', function(message) { |
44 player.video.receivedKeyMessage = true; | 45 player.video.receivedKeyMessage = true; |
45 if (Utils.isHeartBeatMessage(message.message)) { | 46 if (Utils.isHeartBeatMessage(message.message)) { |
46 Utils.timeLog('MediaKeySession onMessage - heart beat', message); | 47 Utils.timeLog('MediaKeySession onMessage - heart beat', message); |
47 player.video.receivedHeartbeat = true; | 48 player.video.receivedHeartbeat = true; |
48 } | 49 } |
49 player.onMessage(message); | 50 player.onMessage(message); |
50 }); | 51 }); |
51 mediaKeySession.addEventListener('error', function(error) { | 52 mediaKeySession.addEventListener('error', function(error) { |
52 Utils.failTest(error, KEY_ERROR); | 53 Utils.failTest(error, KEY_ERROR); |
53 }); | 54 }); |
54 } | 55 } |
55 | 56 |
56 Utils.timeLog('Creating new media key session for contentType: ' + | 57 // TODO(sandersd): Stop checking contentType once needkey is gone. |
ddorwin
2014/09/26 23:51:46
nit: It's really once we switch to the new encrypt
sandersd (OOO until July 31)
2014/09/26 23:57:15
Done.
| |
57 message.contentType + ', initData: ' + | 58 var init_data_type = message.initDataType || message.contentType; |
58 Utils.getHexString(message.initData)); | 59 Utils.timeLog('Creating new media key session for initDataType: ' + |
60 init_data_type + ', initData: ' + | |
61 Utils.getHexString(new Uint8Array(message.initData))); | |
59 try { | 62 try { |
60 if (message.target.mediaKeys.createSession.length == 0) { | 63 if (message.target.mediaKeys.createSession.length == 0) { |
61 // FIXME(jrummell): Remove this test (and else branch) once blink | 64 // FIXME(jrummell): Remove this test (and else branch) once blink |
62 // uses the new API. | 65 // uses the new API. |
63 var session = message.target.mediaKeys.createSession(); | 66 var session = message.target.mediaKeys.createSession(); |
64 addMediaKeySessionListeners(session); | 67 addMediaKeySessionListeners(session); |
65 session.generateRequest(message.contentType, message.initData) | 68 session.generateRequest(init_data_type, message.initData) |
66 .catch(function(error) { | 69 .catch(function(error) { |
67 Utils.failTest(error, KEY_ERROR); | 70 Utils.failTest(error, KEY_ERROR); |
68 }); | 71 }); |
69 } else { | 72 } else { |
70 var session = message.target.mediaKeys.createSession( | 73 var session = message.target.mediaKeys.createSession( |
71 message.contentType, message.initData); | 74 init_data_type, message.initData); |
72 session.then(addMediaKeySessionListeners) | 75 session.then(addMediaKeySessionListeners) |
73 .catch(function(error) { | 76 .catch(function(error) { |
74 Utils.failTest(error, KEY_ERROR); | 77 Utils.failTest(error, KEY_ERROR); |
75 }); | 78 }); |
76 } | 79 } |
77 } catch (e) { | 80 } catch (e) { |
78 Utils.failTest(e); | 81 Utils.failTest(e); |
79 } | 82 } |
80 }); | 83 } |
84 | |
85 // TODO(sandersd): Stop registering needkey. | |
ddorwin
2014/09/26 23:51:46
... after it is renamed.
sandersd (OOO until July 31)
2014/09/26 23:57:15
Done.
| |
86 if (player.video.onencrypted) { | |
87 player.video.addEventListener('encrypted', encrypted_handler); | |
88 } else { | |
89 player.video.addEventListener('needkey', encrypted_handler); | |
90 } | |
91 | |
81 this.registerDefaultEventListeners(player); | 92 this.registerDefaultEventListeners(player); |
82 try { | 93 try { |
83 Utils.timeLog('Setting video media keys: ' + player.testConfig.keySystem); | 94 Utils.timeLog('Setting video media keys: ' + player.testConfig.keySystem); |
84 MediaKeys.create(player.testConfig.keySystem).then(function(mediaKeys) { | 95 MediaKeys.create(player.testConfig.keySystem).then(function(mediaKeys) { |
85 player.video.setMediaKeys(mediaKeys); | 96 player.video.setMediaKeys(mediaKeys); |
86 }).catch(function(error) { | 97 }).catch(function(error) { |
87 Utils.failTest(error, NOTSUPPORTEDERROR); | 98 Utils.failTest(error, NOTSUPPORTEDERROR); |
88 }); | 99 }); |
89 } catch (e) { | 100 } catch (e) { |
90 Utils.failTest(e); | 101 Utils.failTest(e); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
180 default: | 191 default: |
181 Utils.timeLog(keySystem + ' is not a known key system'); | 192 Utils.timeLog(keySystem + ' is not a known key system'); |
182 if (usePrefixedEME) | 193 if (usePrefixedEME) |
183 return PrefixedClearKeyPlayer; | 194 return PrefixedClearKeyPlayer; |
184 return ClearKeyPlayer; | 195 return ClearKeyPlayer; |
185 } | 196 } |
186 } | 197 } |
187 var Player = getPlayerType(testConfig.keySystem); | 198 var Player = getPlayerType(testConfig.keySystem); |
188 return new Player(video, testConfig); | 199 return new Player(video, testConfig); |
189 }; | 200 }; |
OLD | NEW |