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

Side by Side Diff: chrome/test/data/media/eme_player_js/player.js

Issue 308553002: Integrate browser tests with new EME player. (Closed) Base URL: http://git.chromium.org/chromium/src.git@eme_player
Patch Set: Add support for FileIO and LoadSession test cases Created 6 years, 6 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 // 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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698