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

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

Issue 1712903002: Remove prefixed EME. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix isRenewalMessage() in browser tests. Created 4 years, 10 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
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
(...skipping 20 matching lines...) Expand all
31 } 31 }
32 32
33 player.video.addEventListener('error', function(error) { 33 player.video.addEventListener('error', function(error) {
34 // This most likely happens on pipeline failures (e.g. when the CDM 34 // This most likely happens on pipeline failures (e.g. when the CDM
35 // crashes). 35 // crashes).
36 Utils.timeLog('onHTMLElementError', error); 36 Utils.timeLog('onHTMLElementError', error);
37 Utils.failTest(error); 37 Utils.failTest(error);
38 }); 38 });
39 }; 39 };
40 40
41 // Register the necessary event handlers needed when playing encrypted content 41 // Register the necessary event handlers needed when playing encrypted content.
42 // using the unprefixed API. Returns a promise that resolves to the player. 42 // Returns a promise that resolves to the player.
43 PlayerUtils.registerEMEEventListeners = function(player) { 43 PlayerUtils.registerEMEEventListeners = function(player) {
44 player.video.addEventListener('encrypted', function(message) { 44 player.video.addEventListener('encrypted', function(message) {
45 45
46 function addMediaKeySessionListeners(mediaKeySession) { 46 function addMediaKeySessionListeners(mediaKeySession) {
47 mediaKeySession.addEventListener('message', function(message) { 47 mediaKeySession.addEventListener('message', function(message) {
48 player.video.receivedKeyMessage = true; 48 player.video.receivedKeyMessage = true;
49 if (Utils.isRenewalMessage(message)) { 49 if (Utils.isRenewalMessage(message)) {
50 Utils.timeLog('MediaKeySession onMessage - renewal', message); 50 Utils.timeLog('MediaKeySession onMessage - renewal', message);
51 player.video.receivedRenewalMessage = true; 51 player.video.receivedRenewalMessage = true;
52 } else { 52 } else {
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 return navigator.requestMediaKeySystemAccess( 112 return navigator.requestMediaKeySystemAccess(
113 player.testConfig.keySystem, [config]) 113 player.testConfig.keySystem, [config])
114 .then(function(access) { return access.createMediaKeys(); }) 114 .then(function(access) { return access.createMediaKeys(); })
115 .then(function(mediaKeys) { 115 .then(function(mediaKeys) {
116 return player.video.setMediaKeys(mediaKeys); 116 return player.video.setMediaKeys(mediaKeys);
117 }) 117 })
118 .then(function(result) { return player; }) 118 .then(function(result) { return player; })
119 .catch(function(error) { Utils.failTest(error, NOTSUPPORTEDERROR); }); 119 .catch(function(error) { Utils.failTest(error, NOTSUPPORTEDERROR); });
120 }; 120 };
121 121
122 // Register the necessary event handlers needed when playing encrypted content
123 // using the prefixed API. Even though the prefixed API is all synchronous,
124 // returns a promise that resolves to the player.
125 PlayerUtils.registerPrefixedEMEEventListeners = function(player) {
126 player.video.addEventListener('webkitneedkey', function(message) {
127 var initData = message.initData;
128 if (player.testConfig.sessionToLoad) {
129 Utils.timeLog('Loading session: ' + player.testConfig.sessionToLoad);
130 initData =
131 Utils.convertToUint8Array(PREFIXED_EME_API_LOAD_SESSION_HEADER +
132 player.testConfig.sessionToLoad);
133 }
134 Utils.timeLog(player.testConfig.keySystem +
135 ' Generate key request, initData: ' +
136 Utils.getHexString(initData));
137 try {
138 message.target.webkitGenerateKeyRequest(player.testConfig.keySystem,
139 initData);
140 } catch (e) {
141 Utils.failTest(e);
142 }
143 });
144
145 player.video.addEventListener('webkitkeyadded', function(message) {
146 Utils.timeLog('onWebkitKeyAdded', message);
147 message.target.receivedKeyAdded = true;
148 });
149
150 player.video.addEventListener('webkitkeyerror', function(error) {
151 Utils.timeLog('onWebkitKeyError',
152 'KeySystem: ' + error.keySystem + ', sessionId: ' +
153 error.sessionId + ', errorCode: ' + error.errorCode.code +
154 ', systemCode: ' + error.systemCode);
155 Utils.failTest(error, PREFIXED_EME_ERROR_EVENT);
156 });
157
158 player.video.addEventListener('webkitkeymessage', function(message) {
159 Utils.timeLog('onWebkitKeyMessage', message);
160 message.target.receivedKeyMessage = true;
161 if (Utils.isRenewalMessagePrefixed(message.message)) {
162 Utils.timeLog('onWebkitKeyMessage - renewal', message);
163 message.target.receivedRenewalMessage = true;
164 }
165 });
166
167 // The prefixed API is all synchronous, so wrap the calls in a promise.
168 return new Promise(function(resolve, reject) {
169 PlayerUtils.registerDefaultEventListeners(player);
170 player.video.receivedKeyMessage = false;
171 resolve(player);
172 });
173 };
174
175 PlayerUtils.setVideoSource = function(player) { 122 PlayerUtils.setVideoSource = function(player) {
176 if (player.testConfig.useMSE) { 123 if (player.testConfig.useMSE) {
177 Utils.timeLog('Loading media using MSE.'); 124 Utils.timeLog('Loading media using MSE.');
178 var mediaSource = 125 var mediaSource =
179 MediaSourceUtils.loadMediaSourceFromTestConfig(player.testConfig); 126 MediaSourceUtils.loadMediaSourceFromTestConfig(player.testConfig);
180 player.video.src = window.URL.createObjectURL(mediaSource); 127 player.video.src = window.URL.createObjectURL(mediaSource);
181 } else { 128 } else {
182 Utils.timeLog('Loading media using src.'); 129 Utils.timeLog('Loading media using src.');
183 player.video.src = player.testConfig.mediaFile; 130 player.video.src = player.testConfig.mediaFile;
184 } 131 }
185 Utils.timeLog('video.src has been set to ' + player.video.src); 132 Utils.timeLog('video.src has been set to ' + player.video.src);
186 }; 133 };
187 134
188 // Initialize the player to play encrypted content. Returns a promise that 135 // Initialize the player to play encrypted content. Returns a promise that
189 // resolves to the player. 136 // resolves to the player.
190 PlayerUtils.initEMEPlayer = function(player) { 137 PlayerUtils.initEMEPlayer = function(player) {
191 return player.registerEventListeners().then(function(result) { 138 return player.registerEventListeners().then(function(result) {
192 PlayerUtils.setVideoSource(player); 139 PlayerUtils.setVideoSource(player);
193 Utils.timeLog('initEMEPlayer() done'); 140 Utils.timeLog('initEMEPlayer() done');
194 return player; 141 return player;
195 }); 142 });
196 }; 143 };
197 144
198 // Return the appropriate player based on test configuration. 145 // Return the appropriate player based on test configuration.
199 PlayerUtils.createPlayer = function(video, testConfig) { 146 PlayerUtils.createPlayer = function(video, testConfig) {
200 // Update keySystem if using prefixed Clear Key since it is not available as a
201 // separate key system to choose from; however it can be set in URL query.
202 var usePrefixedEME = testConfig.usePrefixedEME;
203 if (testConfig.keySystem == CLEARKEY && usePrefixedEME)
204 testConfig.keySystem = PREFIXED_CLEARKEY;
205
206 function getPlayerType(keySystem) { 147 function getPlayerType(keySystem) {
207 switch (keySystem) { 148 switch (keySystem) {
208 case WIDEVINE_KEYSYSTEM: 149 case WIDEVINE_KEYSYSTEM:
209 if (usePrefixedEME)
210 return PrefixedWidevinePlayer;
211 return WidevinePlayer; 150 return WidevinePlayer;
212 case PREFIXED_CLEARKEY:
213 return PrefixedClearKeyPlayer;
214 case EXTERNAL_CLEARKEY: 151 case EXTERNAL_CLEARKEY:
215 case CLEARKEY: 152 case CLEARKEY:
216 if (usePrefixedEME)
217 return PrefixedClearKeyPlayer;
218 return ClearKeyPlayer; 153 return ClearKeyPlayer;
219 case FILE_IO_TEST_KEYSYSTEM: 154 case FILE_IO_TEST_KEYSYSTEM:
220 return FileIOTestPlayer; 155 return FileIOTestPlayer;
221 default: 156 default:
222 Utils.timeLog(keySystem + ' is not a known key system'); 157 Utils.timeLog(keySystem + ' is not a known key system');
223 if (usePrefixedEME)
224 return PrefixedClearKeyPlayer;
225 return ClearKeyPlayer; 158 return ClearKeyPlayer;
226 } 159 }
227 } 160 }
228 var Player = getPlayerType(testConfig.keySystem); 161 var Player = getPlayerType(testConfig.keySystem);
229 return new Player(video, testConfig); 162 return new Player(video, testConfig);
230 }; 163 };
OLDNEW
« no previous file with comments | « media/test/data/eme_player_js/globals.js ('k') | media/test/data/eme_player_js/prefixed_clearkey_player.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698