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

Unified Diff: chrome/browser/resources/file_manager/foreground/js/ui/progress_center_panel.js

Issue 247123002: Move Files.app files to ui/file_manager (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix the test failure on non-chromeos Created 6 years, 8 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/foreground/js/ui/progress_center_panel.js
diff --git a/chrome/browser/resources/file_manager/foreground/js/ui/progress_center_panel.js b/chrome/browser/resources/file_manager/foreground/js/ui/progress_center_panel.js
deleted file mode 100644
index 3ea5cb73bb5fa249908a3d515f1431db9713c26e..0000000000000000000000000000000000000000
--- a/chrome/browser/resources/file_manager/foreground/js/ui/progress_center_panel.js
+++ /dev/null
@@ -1,490 +0,0 @@
-// Copyright 2013 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';
-
-/**
- * Item element of the progress center.
- * @param {HTMLDocument} document Document which the new item belongs to.
- * @constructor
- */
-function ProgressCenterItemElement(document) {
- var label = document.createElement('label');
- label.className = 'label';
-
- var progressBarIndicator = document.createElement('div');
- progressBarIndicator.className = 'progress-track';
-
- var progressBar = document.createElement('div');
- progressBar.className = 'progress-bar';
- progressBar.appendChild(progressBarIndicator);
-
- var progressFrame = document.createElement('div');
- progressFrame.className = 'progress-frame';
- progressFrame.appendChild(label);
- progressFrame.appendChild(progressBar);
-
- var cancelButton = document.createElement('button');
- cancelButton.className = 'cancel';
- cancelButton.setAttribute('tabindex', '-1');
-
- var buttonFrame = document.createElement('div');
- buttonFrame.className = 'button-frame';
- buttonFrame.appendChild(cancelButton);
-
- var itemElement = document.createElement('li');
- itemElement.appendChild(progressFrame);
- itemElement.appendChild(buttonFrame);
-
- return ProgressCenterItemElement.decorate(itemElement);
-}
-
-/**
- * Ensures the animation triggers.
- *
- * @param {function()} callback Function to set the transition end properties.
- * @return {function()} Function to cancel the request.
- * @private
- */
-ProgressCenterItemElement.safelySetAnimation_ = function(callback) {
- var requestId = requestAnimationFrame(function() {
- // The transitoin start properties currently set are rendered at this frame.
- // And the transition end properties set by the callback is rendered at the
- // next frame.
- requestId = requestAnimationFrame(callback);
- });
- return function() {
- cancelAnimationFrame(requestId);
- };
-};
-
-/**
- * Event triggered when the item should be dismissed.
- * @type {string}
- * @const
- */
-ProgressCenterItemElement.PROGRESS_ANIMATION_END_EVENT = 'progressAnimationEnd';
-
-/**
- * Decoreates the given element as a progress item.
- * @param {HTMLElement} element Item to be decoreated.
- * @return {ProgressCenterItemElement} Decoreated item.
- */
-ProgressCenterItemElement.decorate = function(element) {
- element.__proto__ = ProgressCenterItemElement.prototype;
- element.state_ = ProgressItemState.PROGRESSING;
- element.track_ = element.querySelector('.progress-track');
- element.track_.addEventListener('webkitTransitionEnd',
- element.onTransitionEnd_.bind(element));
- element.cancelTransition_ = null;
- return element;
-};
-
-ProgressCenterItemElement.prototype = {
- __proto__: HTMLDivElement.prototype,
- get quiet() {
- return this.classList.contains('quiet');
- }
-};
-
-/**
- * Updates the element view according to the item.
- * @param {ProgressCenterItem} item Item to be referred for the update.
- * @param {boolean} animated Whether the progress width is applied as animated
- * or not.
- */
-ProgressCenterItemElement.prototype.update = function(item, animated) {
- // Set element attributes.
- this.state_ = item.state;
- this.setAttribute('data-progress-id', item.id);
- this.classList.toggle('error', item.state === ProgressItemState.ERROR);
- this.classList.toggle('cancelable', item.cancelable);
- this.classList.toggle('single', item.single);
- this.classList.toggle('quiet', item.quiet);
-
- // Set label.
- if (this.state_ === ProgressItemState.PROGRESSING ||
- this.state_ === ProgressItemState.ERROR) {
- this.querySelector('label').textContent = item.message;
- } else if (this.state_ === ProgressItemState.CANCELED) {
- this.querySelector('label').textContent = '';
- }
-
- // Cancel the previous property set.
- if (this.cancelTransition_) {
- this.cancelTransition_();
- this.cancelTransition_ = null;
- }
-
- // Set track width.
- var setWidth = function(nextWidthFrame) {
- var currentWidthRate = parseInt(this.track_.style.width);
- // Prevent assigning the same width to avoid stopping the animation.
- // animated == false may be intended to cancel the animation, so in that
- // case, the assignment should be done.
- if (currentWidthRate === nextWidthFrame && animated)
- return;
- this.track_.hidden = false;
- this.track_.style.width = nextWidthFrame + '%';
- this.track_.classList.toggle('animated', animated);
- }.bind(this, item.progressRateInPercent);
-
- if (animated) {
- this.cancelTransition_ =
- ProgressCenterItemElement.safelySetAnimation_(setWidth);
- } else {
- // For animated === false, we should call setWidth immediately to cancel the
- // animation, otherwise the animation may complete before canceling it.
- setWidth();
- }
-};
-
-/**
- * Resets the item.
- */
-ProgressCenterItemElement.prototype.reset = function() {
- this.track_.hidden = true;
- this.track_.width = '';
- this.state_ = ProgressItemState.PROGRESSING;
-};
-
-/**
- * Handles transition end events.
- * @param {Event} event Transition end event.
- * @private
- */
-ProgressCenterItemElement.prototype.onTransitionEnd_ = function(event) {
- if (event.propertyName !== 'width')
- return;
- this.track_.classList.remove('animated');
- this.dispatchEvent(new Event(
- ProgressCenterItemElement.PROGRESS_ANIMATION_END_EVENT,
- {bubbles: true}));
-};
-
-/**
- * Progress center panel.
- *
- * @param {HTMLElement} element DOM Element of the process center panel.
- * @constructor
- */
-function ProgressCenterPanel(element) {
- /**
- * Root element of the progress center.
- * @type {HTMLElement}
- * @private
- */
- this.element_ = element;
-
- /**
- * Open view containing multiple progress items.
- * @type {HTMLElement}
- * @private
- */
- this.openView_ = this.element_.querySelector('#progress-center-open-view');
-
- /**
- * Close view that is a summarized progress item.
- * @type {HTMLElement}
- * @private
- */
- this.closeView_ = ProgressCenterItemElement.decorate(
- this.element_.querySelector('#progress-center-close-view'));
-
- /**
- * Toggle animation rule of the progress center.
- * @type {CSSKeyFrameRule}
- * @private
- */
- this.toggleAnimation_ = ProgressCenterPanel.getToggleAnimation_(
- element.ownerDocument);
-
- /**
- * Item group for normal priority items.
- * @type {ProgressCenterItemGroup}
- * @private
- */
- this.normalItemGroup_ = new ProgressCenterItemGroup('normal', false);
-
- /**
- * Item group for low priority items.
- * @type {ProgressCenterItemGroup}
- * @private
- */
- this.quietItemGroup_ = new ProgressCenterItemGroup('quiet', true);
-
- /**
- * Queries to obtains items for each group.
- * @type {Object.<string, string>}
- * @private
- */
- this.itemQuery_ = Object.seal({
- normal: 'li:not(.quiet)',
- quiet: 'li.quiet'
- });
-
- /**
- * Timeout IDs of the inactive state of each group.
- * @type {Object.<string, number?>}
- * @private
- */
- this.timeoutId_ = Object.seal({
- normal: null,
- quiet: null
- });
-
- /**
- * Callback to becalled with the ID of the progress item when the cancel
- * button is clicked.
- */
- this.cancelCallback = null;
-
- Object.seal(this);
-
- // Register event handlers.
- element.addEventListener('click', this.onClick_.bind(this));
- element.addEventListener(
- 'webkitAnimationEnd', this.onToggleAnimationEnd_.bind(this));
- element.addEventListener(
- ProgressCenterItemElement.PROGRESS_ANIMATION_END_EVENT,
- this.onItemAnimationEnd_.bind(this));
-}
-
-/**
- * Obtains the toggle animation keyframes rule from the document.
- * @param {HTMLDocument} document Document containing the rule.
- * @return {CSSKeyFrameRules} Animation rule.
- * @private
- */
-ProgressCenterPanel.getToggleAnimation_ = function(document) {
- for (var i = 0; i < document.styleSheets.length; i++) {
- var styleSheet = document.styleSheets[i];
- for (var j = 0; j < styleSheet.cssRules.length; j++) {
- var rule = styleSheet.cssRules[j];
- if (rule.type === CSSRule.WEBKIT_KEYFRAMES_RULE &&
- rule.name === 'progress-center-toggle') {
- return rule;
- }
- }
- }
- throw new Error('The progress-center-toggle rules is not found.');
-};
-
-/**
- * The default amount of milliseconds time, before a progress item will reset
- * after the last complete.
- * @type {number}
- * @private
- * @const
- */
-ProgressCenterPanel.RESET_DELAY_TIME_MS_ = 5000;
-
-/**
- * Updates an item to the progress center panel.
- * @param {!ProgressCenterItem} item Item including new contents.
- */
-ProgressCenterPanel.prototype.updateItem = function(item) {
- var targetGroup = this.getGroupForItem_(item);
-
- // Update the item.
- var oldState = targetGroup.state;
- targetGroup.update(item);
- this.handleGroupStateChange_(targetGroup, oldState, targetGroup.state);
-
- // Update an open view item.
- var newItem = targetGroup.getItem(item.id);
- var itemElement = this.getItemElement_(item.id);
- if (newItem) {
- if (!itemElement) {
- itemElement = new ProgressCenterItemElement(this.element_.ownerDocument);
- this.openView_.insertBefore(itemElement, this.openView_.firstNode);
- }
- itemElement.update(newItem, targetGroup.isAnimated(item.id));
- } else {
- if (itemElement)
- itemElement.parentNode.removeChild(itemElement);
- }
-
- // Update the close view.
- this.updateCloseView_();
-};
-
-/**
- * Handles the item animation end.
- * @param {Event} event Item animation end event.
- * @private
- */
-ProgressCenterPanel.prototype.onItemAnimationEnd_ = function(event) {
- var targetGroup = event.target.classList.contains('quiet') ?
- this.quietItemGroup_ : this.normalItemGroup_;
- var oldState = targetGroup.state;
- if (event.target === this.closeView_) {
- targetGroup.completeSummarizedItemAnimation();
- } else {
- var itemId = event.target.getAttribute('data-progress-id');
- targetGroup.completeItemAnimation(itemId);
- var newItem = targetGroup.getItem(itemId);
- var itemElement = this.getItemElement_(itemId);
- if (!newItem && itemElement)
- itemElement.parentNode.removeChild(itemElement);
- }
- this.handleGroupStateChange_(targetGroup, oldState, targetGroup.state);
- this.updateCloseView_();
-};
-
-/**
- * Handles the state change of group.
- * @param {ProgressCenterItemGroup} group Item group.
- * @param {ProgressCenterItemGroup.State} oldState Old state of the group.
- * @param {ProgressCenterItemGroup.State} newState New state of the group.
- * @private
- */
-ProgressCenterPanel.prototype.handleGroupStateChange_ =
- function(group, oldState, newState) {
- if (oldState === ProgressCenterItemGroup.State.INACTIVE) {
- clearTimeout(this.timeoutId_[group.name]);
- this.timeoutId_[group.name] = null;
- var elements =
- this.openView_.querySelectorAll(this.itemQuery_[group.name]);
- for (var i = 0; i < elements.length; i++) {
- elements[i].parentNode.removeChild(elements[i]);
- }
- }
- if (newState === ProgressCenterItemGroup.State.INACTIVE) {
- this.timeoutId_[group.name] = setTimeout(function() {
- var inOldState = group.state;
- group.endInactive();
- this.handleGroupStateChange_(group, inOldState, group.state);
- this.updateCloseView_();
- }.bind(this), ProgressCenterPanel.RESET_DELAY_TIME_MS_);
- }
-};
-
-/**
- * Updates the close view.
- * @private
- */
-ProgressCenterPanel.prototype.updateCloseView_ = function() {
- // Try to use the normal summarized item.
- var normalSummarizedItem =
- this.normalItemGroup_.getSummarizedItem(this.quietItemGroup_.numErrors);
- if (normalSummarizedItem) {
- // If the quiet animation is overrided by normal summarized item, discard
- // the quiet animation.
- if (this.quietItemGroup_.isSummarizedAnimated()) {
- var oldState = this.quietItemGroup_.state;
- this.quietItemGroup_.completeSummarizedItemAnimation();
- this.handleGroupStateChange_(this.quietItemGroup_,
- oldState,
- this.quietItemGroup_.state);
- }
-
- // Update the view state.
- this.closeView_.update(normalSummarizedItem,
- this.normalItemGroup_.isSummarizedAnimated());
- this.element_.hidden = false;
- return;
- }
-
- // Try to use the quiet summarized item.
- var quietSummarizedItem =
- this.quietItemGroup_.getSummarizedItem(this.normalItemGroup_.numErrors);
- if (quietSummarizedItem) {
- this.closeView_.update(quietSummarizedItem,
- this.quietItemGroup_.isSummarizedAnimated());
- this.element_.hidden = false;
- return;
- }
-
- // Try to use the error summarized item.
- var errorSummarizedItem = ProgressCenterItemGroup.getSummarizedErrorItem(
- this.normalItemGroup_, this.quietItemGroup_);
- if (errorSummarizedItem) {
- this.closeView_.update(errorSummarizedItem, false);
- this.element_.hidden = false;
- return;
- }
-
- // Hide the progress center because there is no items to show.
- this.closeView_.reset();
- this.element_.hidden = true;
- this.element_.classList.remove('opened');
-};
-
-/**
- * Gets an item element having the specified ID.
- * @param {string} id progress item ID.
- * @return {HTMLElement} Item element having the ID.
- * @private
- */
-ProgressCenterPanel.prototype.getItemElement_ = function(id) {
- var query = 'li[data-progress-id="' + id + '"]';
- return this.openView_.querySelector(query);
-};
-
-/**
- * Obtains the group for the item.
- * @param {ProgressCenterItem} item Progress item.
- * @return {ProgressCenterItemGroup} Item group that should contain the item.
- * @private
- */
-ProgressCenterPanel.prototype.getGroupForItem_ = function(item) {
- return item.quiet ? this.quietItemGroup_ : this.normalItemGroup_;
-};
-
-/**
- * Handles the animation end event of the progress center.
- * @param {Event} event Animation end event.
- * @private
- */
-ProgressCenterPanel.prototype.onToggleAnimationEnd_ = function(event) {
- // Transition end of the root element's height.
- if (event.target === this.element_ &&
- event.animationName === 'progress-center-toggle') {
- this.element_.classList.remove('animated');
- return;
- }
-};
-
-/**
- * Handles the click event.
- * @param {Event} event Click event.
- * @private
- */
-ProgressCenterPanel.prototype.onClick_ = function(event) {
- // Toggle button.
- if (event.target.classList.contains('open') ||
- event.target.classList.contains('close')) {
- // If the progress center has already animated, just return.
- if (this.element_.classList.contains('animated'))
- return;
-
- // Obtains current and target height.
- var currentHeight;
- var targetHeight;
- if (this.element_.classList.contains('opened')) {
- currentHeight = this.openView_.getBoundingClientRect().height;
- targetHeight = this.closeView_.getBoundingClientRect().height;
- } else {
- currentHeight = this.closeView_.getBoundingClientRect().height;
- targetHeight = this.openView_.getBoundingClientRect().height;
- }
-
- // Set styles for animation.
- this.toggleAnimation_.cssRules[0].style.height = currentHeight + 'px';
- this.toggleAnimation_.cssRules[1].style.height = targetHeight + 'px';
- this.element_.classList.add('animated');
- this.element_.classList.toggle('opened');
- return;
- }
-
- // Cancel button.
- if (event.target.classList.contains('cancel')) {
- var itemElement = event.target.parentNode.parentNode;
- if (this.cancelCallback) {
- var id = itemElement.getAttribute('data-progress-id');
- this.cancelCallback(id);
- }
- }
-};

Powered by Google App Engine
This is Rietveld 408576698