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 navigator.requestMediaKeySystemAccess(player.testConfig.keySystem) | 83 return 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 MediaKeys.create(player.testConfig.keySystem) | 90 return 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)); }); |
96 } | 98 } |
97 }; | 99 }; |
98 | 100 |
99 PlayerUtils.registerPrefixedEMEEventListeners = function(player) { | 101 PlayerUtils.registerPrefixedEMEEventListeners = function(player) { |
100 player.video.addEventListener('webkitneedkey', function(message) { | 102 player.video.addEventListener('webkitneedkey', function(message) { |
101 var initData = message.initData; | 103 var initData = message.initData; |
102 if (player.testConfig.sessionToLoad) { | 104 if (player.testConfig.sessionToLoad) { |
103 Utils.timeLog('Loading session: ' + player.testConfig.sessionToLoad); | 105 Utils.timeLog('Loading session: ' + player.testConfig.sessionToLoad); |
104 initData = Utils.convertToUint8Array( | 106 initData = Utils.convertToUint8Array( |
105 PREFIXED_API_LOAD_SESSION_HEADER + player.testConfig.sessionToLoad); | 107 PREFIXED_API_LOAD_SESSION_HEADER + player.testConfig.sessionToLoad); |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 var mediaSource = | 144 var mediaSource = |
143 MediaSourceUtils.loadMediaSourceFromTestConfig(player.testConfig); | 145 MediaSourceUtils.loadMediaSourceFromTestConfig(player.testConfig); |
144 player.video.src = window.URL.createObjectURL(mediaSource); | 146 player.video.src = window.URL.createObjectURL(mediaSource); |
145 } else { | 147 } else { |
146 Utils.timeLog('Loading media using src.'); | 148 Utils.timeLog('Loading media using src.'); |
147 player.video.src = player.testConfig.mediaFile; | 149 player.video.src = player.testConfig.mediaFile; |
148 } | 150 } |
149 }; | 151 }; |
150 | 152 |
151 PlayerUtils.initEMEPlayer = function(player) { | 153 PlayerUtils.initEMEPlayer = function(player) { |
152 this.registerEMEEventListeners(player); | 154 var promise = this.registerEMEEventListeners(player); |
153 this.setVideoSource(player); | 155 promise.then(function(result) { PlayerUtils.setVideoSource(player); }) |
| 156 .catch(function(error) { Utils.failTest(error, NOTSUPPORTEDERROR); }); |
154 }; | 157 }; |
155 | 158 |
156 PlayerUtils.initPrefixedEMEPlayer = function(player) { | 159 PlayerUtils.initPrefixedEMEPlayer = function(player) { |
157 this.registerPrefixedEMEEventListeners(player); | 160 this.registerPrefixedEMEEventListeners(player); |
158 this.setVideoSource(player); | 161 this.setVideoSource(player); |
159 }; | 162 }; |
160 | 163 |
161 // Return the appropriate player based on test configuration. | 164 // Return the appropriate player based on test configuration. |
162 PlayerUtils.createPlayer = function(video, testConfig) { | 165 PlayerUtils.createPlayer = function(video, testConfig) { |
163 // Update keySystem if using prefixed Clear Key since it is not available as a | 166 // Update keySystem if using prefixed Clear Key since it is not available as a |
(...skipping 21 matching lines...) Expand all Loading... |
185 default: | 188 default: |
186 Utils.timeLog(keySystem + ' is not a known key system'); | 189 Utils.timeLog(keySystem + ' is not a known key system'); |
187 if (usePrefixedEME) | 190 if (usePrefixedEME) |
188 return PrefixedClearKeyPlayer; | 191 return PrefixedClearKeyPlayer; |
189 return ClearKeyPlayer; | 192 return ClearKeyPlayer; |
190 } | 193 } |
191 } | 194 } |
192 var Player = getPlayerType(testConfig.keySystem); | 195 var Player = getPlayerType(testConfig.keySystem); |
193 return new Player(video, testConfig); | 196 return new Player(video, testConfig); |
194 }; | 197 }; |
OLD | NEW |