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 'use strict'; | 5 'use strict'; |
6 | 6 |
7 /** | 7 /** |
8 * @param {Element} playerContainer Main container. | 8 * @param {Element} playerContainer Main container. |
9 * @param {Element} videoContainer Container for the video element. | 9 * @param {Element} videoContainer Container for the video element. |
10 * @param {Element} controlsContainer Container for video controls. | 10 * @param {Element} controlsContainer Container for video controls. |
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
257 loadTimeData.getString('VIDEO_PLAYER_PLAY_ON')); | 257 loadTimeData.getString('VIDEO_PLAYER_PLAY_ON')); |
258 | 258 |
259 document.addEventListener('keydown', reloadVideo); | 259 document.addEventListener('keydown', reloadVideo); |
260 document.addEventListener('click', reloadVideo); | 260 document.addEventListener('click', reloadVideo); |
261 }; | 261 }; |
262 | 262 |
263 /** | 263 /** |
264 * Unloads the player. | 264 * Unloads the player. |
265 */ | 265 */ |
266 function unload() { | 266 function unload() { |
| 267 // Releases keep awake just in case (should be released on unloading video). |
| 268 chrome.power.releaseKeepAwake(); |
| 269 |
267 if (!player.controls || !player.controls.getMedia()) | 270 if (!player.controls || !player.controls.getMedia()) |
268 return; | 271 return; |
269 | 272 |
270 player.controls.savePosition(true /* exiting */); | 273 player.controls.savePosition(true /* exiting */); |
271 player.controls.cleanup(); | 274 player.controls.cleanup(); |
272 } | 275 } |
273 | 276 |
274 /** | 277 /** |
275 * Loads the video file. | 278 * Loads the video file. |
276 * @param {Object} video Data of the video file. | 279 * @param {Object} video Data of the video file. |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
373 if (opt_callback) | 376 if (opt_callback) |
374 opt_callback(); | 377 opt_callback(); |
375 videoPlayerElement.removeAttribute('loading'); | 378 videoPlayerElement.removeAttribute('loading'); |
376 this.controls.inactivityWatcher.disabled = false; | 379 this.controls.inactivityWatcher.disabled = false; |
377 } | 380 } |
378 | 381 |
379 this.videoElement_.removeEventListener('loadedmetadata', handler); | 382 this.videoElement_.removeEventListener('loadedmetadata', handler); |
380 }.wrap(this, this.currentPos_); | 383 }.wrap(this, this.currentPos_); |
381 | 384 |
382 this.videoElement_.addEventListener('loadedmetadata', handler); | 385 this.videoElement_.addEventListener('loadedmetadata', handler); |
| 386 |
| 387 this.videoElement_.addEventListener('play', function() { |
| 388 chrome.power.requestKeepAwake('display'); |
| 389 }.wrap()); |
| 390 this.videoElement_.addEventListener('pause', function() { |
| 391 chrome.power.releaseKeepAwake(); |
| 392 }.wrap()); |
| 393 |
383 this.videoElement_.load(); | 394 this.videoElement_.load(); |
384 callback(); | 395 callback(); |
385 }.bind(this)). | 396 }.bind(this)). |
386 // In case of error. | 397 // In case of error. |
387 catch(function(error) { | 398 catch(function(error) { |
388 videoPlayerElement.removeAttribute('loading'); | 399 videoPlayerElement.removeAttribute('loading'); |
389 console.error('Failed to initialize the video element.', | 400 console.error('Failed to initialize the video element.', |
390 error.stack || error); | 401 error.stack || error); |
391 this.controls_.showErrorMessage('GALLERY_VIDEO_ERROR'); | 402 this.controls_.showErrorMessage('GALLERY_VIDEO_ERROR'); |
392 callback(); | 403 callback(); |
393 }.bind(this)); | 404 }.bind(this)); |
394 }.wrap(this)); | 405 }.wrap(this)); |
395 }; | 406 }; |
396 | 407 |
397 /** | 408 /** |
398 * Plays the first video. | 409 * Plays the first video. |
399 */ | 410 */ |
400 VideoPlayer.prototype.playFirstVideo = function() { | 411 VideoPlayer.prototype.playFirstVideo = function() { |
401 this.currentPos_ = 0; | 412 this.currentPos_ = 0; |
402 this.reloadCurrentVideo(this.onFirstVideoReady_.wrap(this)); | 413 this.reloadCurrentVideo(this.onFirstVideoReady_.wrap(this)); |
403 }; | 414 }; |
404 | 415 |
405 /** | 416 /** |
406 * Unloads the current video. | 417 * Unloads the current video. |
407 * @param {boolean=} opt_keepSession If true, keep using the current session. | 418 * @param {boolean=} opt_keepSession If true, keep using the current session. |
408 * Otherwise, discards the session. | 419 * Otherwise, discards the session. |
409 */ | 420 */ |
410 VideoPlayer.prototype.unloadVideo = function(opt_keepSession) { | 421 VideoPlayer.prototype.unloadVideo = function(opt_keepSession) { |
411 this.loadQueue_.run(function(callback) { | 422 this.loadQueue_.run(function(callback) { |
| 423 chrome.power.releaseKeepAwake(); |
| 424 |
412 if (this.videoElement_) { | 425 if (this.videoElement_) { |
413 // If the element has dispose method, call it (CastVideoElement has it). | 426 // If the element has dispose method, call it (CastVideoElement has it). |
414 if (this.videoElement_.dispose) | 427 if (this.videoElement_.dispose) |
415 this.videoElement_.dispose(); | 428 this.videoElement_.dispose(); |
416 // Detach the previous video element, if exists. | 429 // Detach the previous video element, if exists. |
417 if (this.videoElement_.parentNode) | 430 if (this.videoElement_.parentNode) |
418 this.videoElement_.parentNode.removeChild(this.videoElement_); | 431 this.videoElement_.parentNode.removeChild(this.videoElement_); |
419 } | 432 } |
420 this.videoElement_ = null; | 433 this.videoElement_ = null; |
421 | 434 |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
647 var initPromise = Promise.all( | 660 var initPromise = Promise.all( |
648 [new Promise(initVideos.wrap(null)), | 661 [new Promise(initVideos.wrap(null)), |
649 new Promise(initStrings.wrap(null)), | 662 new Promise(initStrings.wrap(null)), |
650 new Promise(util.addPageLoadHandler.wrap(null))]); | 663 new Promise(util.addPageLoadHandler.wrap(null))]); |
651 | 664 |
652 initPromise.then(function(results) { | 665 initPromise.then(function(results) { |
653 var videos = results[0]; | 666 var videos = results[0]; |
654 player.prepare(videos); | 667 player.prepare(videos); |
655 return new Promise(player.playFirstVideo.wrap(player)); | 668 return new Promise(player.playFirstVideo.wrap(player)); |
656 }.wrap(null)); | 669 }.wrap(null)); |
OLD | NEW |