Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(520)

Side by Side Diff: media/test/data/eme_player_js/player_utils.js

Issue 605243004: Extend EME player_utils.js to support onEncrypted. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 CL 600143005 lands.
ddorwin 2014/09/26 23:10:48 We don't reference Reitveld issue numbers in code.
sandersd (OOO until July 31) 2014/09/26 23:16:42 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 once CL 600143005 lands.
ddorwin 2014/09/26 23:10:49 ditto
sandersd (OOO until July 31) 2014/09/26 23:16:42 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
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 };
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698