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

Unified Diff: chrome/browser/resources/file_manager/js/media/video_player.js

Issue 39123003: [Files.app] Split the JavaScript files into subdirectories: common, background, and foreground (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fixed test failure. Created 7 years, 2 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 side-by-side diff with in-line comments
Download patch
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);

Powered by Google App Engine
This is Rietveld 408576698