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 |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 } | 73 } |
74 } catch (e) { | 74 } catch (e) { |
75 Utils.failTest(e); | 75 Utils.failTest(e); |
76 } | 76 } |
77 }); | 77 }); |
78 | 78 |
79 this.registerDefaultEventListeners(player); | 79 this.registerDefaultEventListeners(player); |
80 try { | 80 try { |
81 Utils.timeLog('Setting video media keys: ' + player.testConfig.keySystem); | 81 Utils.timeLog('Setting video media keys: ' + player.testConfig.keySystem); |
82 if (typeof navigator.requestMediaKeySystemAccess == 'function') { | 82 if (typeof navigator.requestMediaKeySystemAccess == 'function') { |
83 return navigator.requestMediaKeySystemAccess(player.testConfig.keySystem) | 83 navigator.requestMediaKeySystemAccess(player.testConfig.keySystem) |
84 .then(function(access) { return access.createMediaKeys(); }) | 84 .then(function(access) { return access.createMediaKeys(); }) |
85 .then(function(mediaKeys) { player.video.setMediaKeys(mediaKeys); }) | 85 .then(function(mediaKeys) { player.video.setMediaKeys(mediaKeys); }) |
86 .catch(function(error) { Utils.failTest(error, NOTSUPPORTEDERROR); }); | 86 .catch(function(error) { Utils.failTest(error, NOTSUPPORTEDERROR); }); |
87 } else { | 87 } else { |
88 // TODO(jrummell): Remove this once the blink change for | 88 // TODO(jrummell): Remove this once the blink change for |
89 // requestMediaKeySystemAccess lands. | 89 // requestMediaKeySystemAccess lands. |
90 return MediaKeys.create(player.testConfig.keySystem) | 90 MediaKeys.create(player.testConfig.keySystem) |
91 .then(function(mediaKeys) { player.video.setMediaKeys(mediaKeys); }) | 91 .then(function(mediaKeys) { player.video.setMediaKeys(mediaKeys); }) |
92 .catch(function(error) { Utils.failTest(error, NOTSUPPORTEDERROR); }); | 92 .catch(function(error) { Utils.failTest(error, NOTSUPPORTEDERROR); }); |
93 } | 93 } |
94 } catch (e) { | 94 } catch (e) { |
95 Utils.failTest(e); | 95 Utils.failTest(e); |
96 // Return a failing promise. | |
97 return new Promise(function(resolve, reject) { reject(Error(e)); }); | |
98 } | 96 } |
99 }; | 97 }; |
100 | 98 |
101 PlayerUtils.registerPrefixedEMEEventListeners = function(player) { | 99 PlayerUtils.registerPrefixedEMEEventListeners = function(player) { |
102 player.video.addEventListener('webkitneedkey', function(message) { | 100 player.video.addEventListener('webkitneedkey', function(message) { |
103 var initData = message.initData; | 101 var initData = message.initData; |
104 if (player.testConfig.sessionToLoad) { | 102 if (player.testConfig.sessionToLoad) { |
105 Utils.timeLog('Loading session: ' + player.testConfig.sessionToLoad); | 103 Utils.timeLog('Loading session: ' + player.testConfig.sessionToLoad); |
106 initData = Utils.convertToUint8Array( | 104 initData = Utils.convertToUint8Array( |
107 PREFIXED_API_LOAD_SESSION_HEADER + player.testConfig.sessionToLoad); | 105 PREFIXED_API_LOAD_SESSION_HEADER + player.testConfig.sessionToLoad); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 var mediaSource = | 142 var mediaSource = |
145 MediaSourceUtils.loadMediaSourceFromTestConfig(player.testConfig); | 143 MediaSourceUtils.loadMediaSourceFromTestConfig(player.testConfig); |
146 player.video.src = window.URL.createObjectURL(mediaSource); | 144 player.video.src = window.URL.createObjectURL(mediaSource); |
147 } else { | 145 } else { |
148 Utils.timeLog('Loading media using src.'); | 146 Utils.timeLog('Loading media using src.'); |
149 player.video.src = player.testConfig.mediaFile; | 147 player.video.src = player.testConfig.mediaFile; |
150 } | 148 } |
151 }; | 149 }; |
152 | 150 |
153 PlayerUtils.initEMEPlayer = function(player) { | 151 PlayerUtils.initEMEPlayer = function(player) { |
154 var promise = this.registerEMEEventListeners(player); | 152 this.registerEMEEventListeners(player); |
155 promise.then(function(result) { PlayerUtils.setVideoSource(player); }) | 153 this.setVideoSource(player); |
156 .catch(function(error) { Utils.failTest(error, NOTSUPPORTEDERROR); }); | |
157 }; | 154 }; |
158 | 155 |
159 PlayerUtils.initPrefixedEMEPlayer = function(player) { | 156 PlayerUtils.initPrefixedEMEPlayer = function(player) { |
160 this.registerPrefixedEMEEventListeners(player); | 157 this.registerPrefixedEMEEventListeners(player); |
161 this.setVideoSource(player); | 158 this.setVideoSource(player); |
162 }; | 159 }; |
163 | 160 |
164 // Return the appropriate player based on test configuration. | 161 // Return the appropriate player based on test configuration. |
165 PlayerUtils.createPlayer = function(video, testConfig) { | 162 PlayerUtils.createPlayer = function(video, testConfig) { |
166 // Update keySystem if using prefixed Clear Key since it is not available as a | 163 // Update keySystem if using prefixed Clear Key since it is not available as a |
(...skipping 21 matching lines...) Expand all Loading... |
188 default: | 185 default: |
189 Utils.timeLog(keySystem + ' is not a known key system'); | 186 Utils.timeLog(keySystem + ' is not a known key system'); |
190 if (usePrefixedEME) | 187 if (usePrefixedEME) |
191 return PrefixedClearKeyPlayer; | 188 return PrefixedClearKeyPlayer; |
192 return ClearKeyPlayer; | 189 return ClearKeyPlayer; |
193 } | 190 } |
194 } | 191 } |
195 var Player = getPlayerType(testConfig.keySystem); | 192 var Player = getPlayerType(testConfig.keySystem); |
196 return new Player(video, testConfig); | 193 return new Player(video, testConfig); |
197 }; | 194 }; |
OLD | NEW |