| Index: chrome/browser/resources/file_manager/js/media/video_player.js
|
| diff --git a/chrome/browser/resources/file_manager/js/media/video_player.js b/chrome/browser/resources/file_manager/js/media/video_player.js
|
| deleted file mode 100644
|
| index c93c389acb035e6582ddd6996d85bc974dff8d52..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/resources/file_manager/js/media/video_player.js
|
| +++ /dev/null
|
| @@ -1,279 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -'use strict';
|
| -
|
| -/**
|
| - * Display error message.
|
| - * @param {string} message Message id.
|
| - */
|
| -function showErrorMessage(message) {
|
| - var errorBanner = document.querySelector('#error');
|
| - errorBanner.textContent =
|
| - loadTimeData.getString(message);
|
| - errorBanner.setAttribute('visible', 'true');
|
| -
|
| - // The window is hidden if the video has not loaded yet.
|
| - chrome.app.window.current().show();
|
| -}
|
| -
|
| -/**
|
| - * Handles playback (decoder) errors.
|
| - */
|
| -function onPlaybackError() {
|
| - showErrorMessage('GALLERY_VIDEO_DECODING_ERROR');
|
| - decodeErrorOccured = true;
|
| -
|
| - // Disable inactivity watcher, and disable the ui, by hiding tools manually.
|
| - controls.inactivityWatcher.disabled = true;
|
| - document.querySelector('#video-player').setAttribute('disabled', 'true');
|
| -
|
| - // Detach the video element, since it may be unreliable and reset stored
|
| - // current playback time.
|
| - controls.cleanup();
|
| - controls.clearState();
|
| -
|
| - // Avoid reusing a video element.
|
| - video.parentNode.removeChild(video);
|
| - video = null;
|
| -}
|
| -
|
| -/**
|
| - * @param {Element} playerContainer Main container.
|
| - * @param {Element} videoContainer Container for the video element.
|
| - * @param {Element} controlsContainer Container for video controls.
|
| - * @constructor
|
| - */
|
| -function FullWindowVideoControls(
|
| - playerContainer, videoContainer, controlsContainer) {
|
| - VideoControls.call(this,
|
| - controlsContainer,
|
| - onPlaybackError,
|
| - loadTimeData.getString.bind(loadTimeData),
|
| - this.toggleFullScreen_.bind(this),
|
| - videoContainer);
|
| -
|
| - this.playerContainer_ = playerContainer;
|
| -
|
| - this.updateStyle();
|
| - window.addEventListener('resize', this.updateStyle.bind(this));
|
| -
|
| - document.addEventListener('keydown', function(e) {
|
| - if (e.keyIdentifier == 'U+0020') { // Space
|
| - this.togglePlayStateWithFeedback();
|
| - e.preventDefault();
|
| - }
|
| - if (e.keyIdentifier == 'U+001B') { // Escape
|
| - util.toggleFullScreen(
|
| - chrome.app.window.current(),
|
| - false); // Leave the full screen mode.
|
| - e.preventDefault();
|
| - }
|
| - }.bind(this));
|
| -
|
| - // TODO(mtomasz): Simplify. crbug.com/254318.
|
| - videoContainer.addEventListener('click', function(e) {
|
| - if (e.ctrlKey) {
|
| - this.toggleLoopedModeWithFeedback(true);
|
| - if (!this.isPlaying())
|
| - this.togglePlayStateWithFeedback();
|
| - } else {
|
| - this.togglePlayStateWithFeedback();
|
| - }
|
| - }.bind(this));
|
| -
|
| - this.inactivityWatcher_ = new MouseInactivityWatcher(playerContainer);
|
| - this.__defineGetter__('inactivityWatcher', function() {
|
| - return this.inactivityWatcher_;
|
| - });
|
| -
|
| - this.inactivityWatcher_.check();
|
| -}
|
| -
|
| -FullWindowVideoControls.prototype = { __proto__: VideoControls.prototype };
|
| -
|
| -/**
|
| - * Save the current state so that it survives page/app reload.
|
| - */
|
| -FullWindowVideoControls.prototype.onPlayStateChanged = function() {
|
| - this.encodeState();
|
| -};
|
| -
|
| -/**
|
| - * Restore the state after the video is loaded.
|
| - */
|
| -FullWindowVideoControls.prototype.restorePlayState = function() {
|
| - if (!this.decodeState()) {
|
| - VideoControls.prototype.restorePlayState.apply(this, arguments);
|
| - this.play();
|
| - }
|
| -};
|
| -
|
| -/**
|
| - * Toggles the full screen mode.
|
| - * @private
|
| - */
|
| -FullWindowVideoControls.prototype.toggleFullScreen_ = function() {
|
| - var appWindow = chrome.app.window.current();
|
| - util.toggleFullScreen(appWindow, !util.isFullScreen(appWindow));
|
| -};
|
| -
|
| -// TODO(mtomasz): Convert it to class members: crbug.com/171191.
|
| -var decodeErrorOccured;
|
| -var video;
|
| -var controls;
|
| -var metadataCache;
|
| -var volumeManager;
|
| -var selectedItemFilesystemPath;
|
| -
|
| -/**
|
| - * Initialize the video player window.
|
| - */
|
| -function loadVideoPlayer() {
|
| - document.ondragstart = function(e) { e.preventDefault() };
|
| -
|
| - chrome.fileBrowserPrivate.getStrings(function(strings) {
|
| - loadTimeData.data = strings;
|
| -
|
| - controls = new FullWindowVideoControls(
|
| - document.querySelector('#video-player'),
|
| - document.querySelector('#video-container'),
|
| - document.querySelector('#controls'));
|
| -
|
| - metadataCache = MetadataCache.createFull();
|
| - volumeManager = new VolumeManagerWrapper(
|
| - VolumeManagerWrapper.DriveEnabledStatus.DRIVE_ENABLED);
|
| - volumeManager.addEventListener('externally-unmounted',
|
| - onExternallyUnmounted);
|
| -
|
| - // If the video player is starting before the first instance of the File
|
| - // Manager then it does not have access to filesystem URLs.
|
| - // Request it now.
|
| - volumeManager.ensureInitialized(reload);
|
| - var reloadVideo = function(e) {
|
| - if (decodeErrorOccured) {
|
| - reload();
|
| - e.preventDefault();
|
| - }
|
| - };
|
| -
|
| - document.addEventListener('keydown', reloadVideo, true);
|
| - document.addEventListener('click', reloadVideo, true);
|
| - });
|
| -}
|
| -
|
| -/**
|
| - * Closes video player when a volume containing the played item is unmounted.
|
| - * @param {Event} event The unmount event.
|
| - */
|
| -function onExternallyUnmounted(event) {
|
| - if (!selectedItemFilesystemPath)
|
| - return;
|
| - if (selectedItemFilesystemPath.indexOf(event.mountPath) == 0)
|
| - window.close();
|
| -}
|
| -
|
| -/**
|
| - * Unload the player.
|
| - */
|
| -function unload() {
|
| - if (volumeManager)
|
| - volumeManager.dispose();
|
| -
|
| - if (!controls.getMedia())
|
| - return;
|
| -
|
| - controls.savePosition(true /* exiting */);
|
| - controls.cleanup();
|
| -}
|
| -
|
| -/**
|
| - * Reload the player.
|
| - */
|
| -function reload() {
|
| - // Re-enable ui and hide error message if already displayed.
|
| - document.querySelector('#video-player').removeAttribute('disabled');
|
| - document.querySelector('#error').removeAttribute('visible');
|
| - controls.inactivityWatcher.disabled = false;
|
| - decodeErrorOccured = false;
|
| -
|
| - var src;
|
| - if (window.appState) {
|
| - util.saveAppState();
|
| - src = window.appState.url;
|
| - } else {
|
| - src = document.location.search.substr(1);
|
| - }
|
| - if (!src) {
|
| - showErrorMessage('GALLERY_VIDEO_ERROR');
|
| - return;
|
| - }
|
| -
|
| - document.title = decodeURIComponent(src.split('/').pop());
|
| -
|
| - metadataCache.get(src, 'streaming', function(streaming) {
|
| - if (streaming && !navigator.onLine) {
|
| - showErrorMessage('GALLERY_VIDEO_OFFLINE');
|
| - return;
|
| - }
|
| -
|
| - // Detach the previous video element, if exists.
|
| - if (video)
|
| - video.parentNode.removeChild(video);
|
| -
|
| - video = document.createElement('video');
|
| - document.querySelector('#video-container').appendChild(video);
|
| - controls.attachMedia(video);
|
| -
|
| - video.src = src;
|
| - video.load();
|
| - video.addEventListener('loadedmetadata', function() {
|
| - // TODO: chrome.app.window soon will be able to resize the content area.
|
| - // Until then use approximate title bar height.
|
| - var TITLE_HEIGHT = 28;
|
| -
|
| - var aspect = video.videoWidth / video.videoHeight;
|
| - var newWidth = video.videoWidth;
|
| - var newHeight = video.videoHeight + TITLE_HEIGHT;
|
| -
|
| - var shrinkX = newWidth / window.screen.availWidth;
|
| - var shrinkY = newHeight / window.screen.availHeight;
|
| - if (shrinkX > 1 || shrinkY > 1) {
|
| - if (shrinkY > shrinkX) {
|
| - newHeight = newHeight / shrinkY;
|
| - newWidth = (newHeight - TITLE_HEIGHT) * aspect;
|
| - } else {
|
| - newWidth = newWidth / shrinkX;
|
| - newHeight = newWidth / aspect + TITLE_HEIGHT;
|
| - }
|
| - }
|
| -
|
| - var oldLeft = window.screenX;
|
| - var oldTop = window.screenY;
|
| - var oldWidth = window.outerWidth;
|
| - var oldHeight = window.outerHeight;
|
| -
|
| - if (!oldWidth && !oldHeight) {
|
| - oldLeft = window.screen.availWidth / 2;
|
| - oldTop = window.screen.availHeight / 2;
|
| - }
|
| -
|
| - var appWindow = chrome.app.window.current();
|
| - appWindow.resizeTo(newWidth, newHeight);
|
| - appWindow.moveTo(oldLeft - (newWidth - oldWidth) / 2,
|
| - oldTop - (newHeight - oldHeight) / 2);
|
| - appWindow.show();
|
| - });
|
| -
|
| - // Resolve real filesystem path of the current video.
|
| - selectedItemFilesystemPath = null;
|
| - webkitResolveLocalFileSystemURL(src,
|
| - function(entry) {
|
| - if (video && video.src != src) return;
|
| - selectedItemFilesystemPath = entry.fullPath;
|
| - });
|
| - });
|
| -}
|
| -
|
| -util.addPageLoadHandler(loadVideoPlayer);
|
|
|