| Index: ui/file_manager/file_manager/foreground/js/progress_center_item_group.js
|
| diff --git a/ui/file_manager/file_manager/foreground/js/progress_center_item_group.js b/ui/file_manager/file_manager/foreground/js/progress_center_item_group.js
|
| deleted file mode 100644
|
| index d556a8104115e4b532897533ff01ea3a0672103d..0000000000000000000000000000000000000000
|
| --- a/ui/file_manager/file_manager/foreground/js/progress_center_item_group.js
|
| +++ /dev/null
|
| @@ -1,423 +0,0 @@
|
| -// Copyright 2014 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';
|
| -
|
| -/**
|
| - * Group of progress item in the progress center panels.
|
| - *
|
| - * This is responsible for generating the summarized item and managing lifetime
|
| - * of error items.
|
| - * @param {string} name Name of the group.
|
| - * @param {boolean} quiet Whether the group is for quiet items or not.
|
| - * @constructor
|
| - */
|
| -function ProgressCenterItemGroup(name, quiet) {
|
| - /**
|
| - * Name of the group.
|
| - * @type {string}
|
| - */
|
| - this.name = name;
|
| -
|
| - /**
|
| - * Whether the group is for quiet items or not.
|
| - * @type {boolean}
|
| - * @private
|
| - */
|
| - this.quiet_ = quiet;
|
| -
|
| - /**
|
| - * State of the group.
|
| - * @type {ProgressCenterItemGroup.State}
|
| - * @private
|
| - */
|
| - this.state_ = ProgressCenterItemGroup.State.EMPTY;
|
| -
|
| - /**
|
| - * Items that are progressing, or completed but still animated.
|
| - * Key is item ID.
|
| - * @type {Object.<string, ProgressCenterItem>}
|
| - * @private
|
| - */
|
| - this.items_ = {};
|
| -
|
| - /**
|
| - * Set of animated state of items. Key is item ID and value is whether the
|
| - * item is animated or not.
|
| - * @type {Object.<string, boolean>}
|
| - * @private
|
| - */
|
| - this.animated_ = {};
|
| -
|
| - /**
|
| - * Last summarized item.
|
| - * @type {ProgressCenterItem}
|
| - * @private
|
| - */
|
| - this.summarizedItem_ = null;
|
| -
|
| - /**
|
| - * Whether the summarized item is animated or not.
|
| - * @type {boolean}
|
| - * @private
|
| - */
|
| - this.summarizedItemAnimated_ = false;
|
| -
|
| - /**
|
| - * Total maximum progress value of items already completed and removed from
|
| - * this.items_.
|
| - * @type {number}
|
| - * @private
|
| - */
|
| - this.totalProgressMax_ = 0;
|
| -
|
| - /**
|
| - * Total progress value of items already completed and removed from
|
| - * this.items_.
|
| - * @type {number}
|
| - * @private
|
| - */
|
| - this.totalProgressValue_ = 0;
|
| -
|
| - Object.seal(this);
|
| -}
|
| -
|
| -/**
|
| - * State of ProgressCenterItemGroup.
|
| - * @enum {string}
|
| - * @const
|
| - */
|
| -ProgressCenterItemGroup.State = {
|
| - // Group has no items.
|
| - EMPTY: 'empty',
|
| - // Group has at least 1 progressing item.
|
| - ACTIVE: 'active',
|
| - // Group has no progressing items but still shows error items.
|
| - INACTIVE: 'inactive'
|
| -};
|
| -Object.freeze(ProgressCenterItemGroup.State);
|
| -
|
| -/**
|
| - * Makes the summarized item for the groups.
|
| - *
|
| - * When a group has only error items, getSummarizedItem of the item returns
|
| - * null. Basically the first result of the groups that the progress center panel
|
| - * contains is used as a summarized item. But If all the group returns null, the
|
| - * progress center panel generates the summarized item by using the method.
|
| - *
|
| - * @param {...ProgressCenterItemGroup} var_args List of groups.
|
| - * @return {ProgressCenterItem} Summarized item.
|
| - */
|
| -ProgressCenterItemGroup.getSummarizedErrorItem = function(var_args) {
|
| - var groups = Array.prototype.slice.call(arguments);
|
| - var errorItems = [];
|
| - for (var i = 0; i < groups.length; i++) {
|
| - for (var id in groups[i].items_) {
|
| - var item = groups[i].items_[id];
|
| - if (item.state === ProgressItemState.ERROR)
|
| - errorItems.push(item);
|
| - }
|
| - }
|
| - if (errorItems.length === 0)
|
| - return null;
|
| -
|
| - if (errorItems.length === 1)
|
| - return errorItems[0].clone();
|
| -
|
| - var item = new ProgressCenterItem();
|
| - item.state = ProgressItemState.ERROR;
|
| - item.message = strf('ERROR_PROGRESS_SUMMARY_PLURAL',
|
| - errorItems.length);
|
| - item.single = false;
|
| - return item;
|
| -};
|
| -
|
| -/**
|
| - * Obtains Whether the item should be animated or not.
|
| - * @param {boolean} previousAnimated Whether the item is previously animated or
|
| - * not.
|
| - * @param {ProgressCenterItem} previousItem Item before updating.
|
| - * @param {ProgressCenterItem} item New item.
|
| - * @return {boolean} Whether the item should be animated or not.
|
| - * @private
|
| - */
|
| -ProgressCenterItemGroup.shouldAnimate_ = function(
|
| - previousAnimated, previousItem, item) {
|
| - if (!previousItem || !item || previousItem.quiet || item.quiet)
|
| - return false;
|
| - if (previousItem.progressRateInPercent < item.progressRateInPercent)
|
| - return true;
|
| - if (previousAnimated &&
|
| - previousItem.progressRateInPercent === item.progressRateInPercent)
|
| - return true;
|
| - return false;
|
| -};
|
| -
|
| -ProgressCenterItemGroup.prototype = {
|
| - /**
|
| - * @return {ProgressCenterItemGroup.State} State of the group.
|
| - */
|
| - get state() {
|
| - return this.state_;
|
| - },
|
| -
|
| - /**
|
| - * @return {number} Number of error items that the group contains.
|
| - */
|
| - get numErrors() {
|
| - var result = 0;
|
| - for (var id in this.items_) {
|
| - if (this.items_[id].state === ProgressItemState.ERROR)
|
| - result++;
|
| - }
|
| - return result;
|
| - }
|
| -};
|
| -
|
| -/**
|
| - * Obtains the progressing (or completed but animated) item.
|
| - *
|
| - * @param {string} id Item ID.
|
| - * @return {ProgressCenterItem} Item having the ID.
|
| - */
|
| -ProgressCenterItemGroup.prototype.getItem = function(id) {
|
| - return this.items_[id] || null;
|
| -};
|
| -
|
| -/**
|
| - * Obtains whether the item should be animated or not.
|
| - * @param {string} id Item ID.
|
| - * @return {boolean} Whether the item should be animated or not.
|
| - */
|
| -ProgressCenterItemGroup.prototype.isAnimated = function(id) {
|
| - return !!this.animated_[id];
|
| -};
|
| -
|
| -/**
|
| - * Obtains whether the summarized item should be animated or not.
|
| - * @return {boolean} Whether the summarized item should be animated or not.
|
| - */
|
| -ProgressCenterItemGroup.prototype.isSummarizedAnimated = function() {
|
| - return this.summarizedItemAnimated_;
|
| -};
|
| -
|
| -/**
|
| - * Starts item update.
|
| - * Marks the given item as updating.
|
| - * @param {ProgressCenterItem} item Item containing updated information.
|
| - */
|
| -ProgressCenterItemGroup.prototype.update = function(item) {
|
| - // If the group is inactive, go back to the empty state.
|
| - this.endInactive();
|
| -
|
| - // Compares the current state and the new state to check if the update is
|
| - // valid or not.
|
| - var previousItem = this.items_[item.id];
|
| - switch (item.state) {
|
| - case ProgressItemState.ERROR:
|
| - if (previousItem && previousItem.state !== ProgressItemState.PROGRESSING)
|
| - return;
|
| - if (this.state_ === ProgressCenterItemGroup.State.EMPTY)
|
| - this.state_ = ProgressCenterItemGroup.State.INACTIVE;
|
| - this.items_[item.id] = item.clone();
|
| - this.animated_[item.id] = false;
|
| - this.summarizedItem_ = null;
|
| - break;
|
| -
|
| - case ProgressItemState.PROGRESSING:
|
| - case ProgressItemState.COMPLETED:
|
| - if ((!previousItem && item.state === ProgressItemState.COMPLETED) ||
|
| - (previousItem &&
|
| - previousItem.state !== ProgressItemState.PROGRESSING))
|
| - return;
|
| - if (this.state_ === ProgressCenterItemGroup.State.EMPTY)
|
| - this.state_ = ProgressCenterItemGroup.State.ACTIVE;
|
| - this.items_[item.id] = item.clone();
|
| - this.animated_[item.id] = ProgressCenterItemGroup.shouldAnimate_(
|
| - !!this.animated_[item.id],
|
| - previousItem,
|
| - item);
|
| - if (!this.animated_[item.id])
|
| - this.completeItemAnimation(item.id);
|
| - break;
|
| -
|
| - case ProgressItemState.CANCELED:
|
| - if (!previousItem ||
|
| - previousItem.state !== ProgressItemState.PROGRESSING)
|
| - return;
|
| - delete this.items_[item.id];
|
| - this.animated_[item.id] = false;
|
| - this.summarizedItem_ = null;
|
| - }
|
| -
|
| - // Update the internal summarized item cache.
|
| - var previousSummarizedItem = this.summarizedItem_;
|
| - this.summarizedItem_ = this.getSummarizedItem(0);
|
| - this.summarizedItemAnimated_ = ProgressCenterItemGroup.shouldAnimate_(
|
| - !!this.summarizedItemAnimated_,
|
| - previousSummarizedItem,
|
| - this.summarizedItem_);
|
| - if (!this.summarizedItemAnimated_)
|
| - this.completeSummarizedItemAnimation();
|
| -};
|
| -
|
| -/**
|
| - * Notifies the end of the item's animation to the group.
|
| - * If all the items except error items completes, the group enter the inactive
|
| - * state.
|
| - * @param {string} id Item ID.
|
| - */
|
| -ProgressCenterItemGroup.prototype.completeItemAnimation = function(id) {
|
| - if (this.state_ !== ProgressCenterItemGroup.State.ACTIVE)
|
| - return;
|
| -
|
| - this.animated_[id] = false;
|
| - if (this.items_[id].state === ProgressItemState.COMPLETED) {
|
| - this.totalProgressValue_ += (this.items_[id].progressValue || 0.0);
|
| - this.totalProgressMax_ += (this.items_[id].progressMax || 0.0);
|
| - delete this.items_[id];
|
| - this.tryEndActive_();
|
| - }
|
| -};
|
| -
|
| -/**
|
| - * Notifies the end of the summarized item's animation.
|
| - * This may update summarized view. (1 progressing + 1 error -> 1 error)
|
| - */
|
| -ProgressCenterItemGroup.prototype.completeSummarizedItemAnimation = function() {
|
| - this.summarizedItemAnimated_ = false;
|
| - this.tryEndActive_();
|
| -};
|
| -
|
| -/**
|
| - * Obtains the summary of the set.
|
| - * @param {number} numOtherErrors Number of errors contained by other groups.
|
| - * @return {ProgressCenterItem} Item.
|
| - */
|
| -ProgressCenterItemGroup.prototype.getSummarizedItem =
|
| - function(numOtherErrors) {
|
| - if (this.state_ === ProgressCenterItemGroup.State.EMPTY ||
|
| - this.state_ === ProgressCenterItemGroup.State.INACTIVE)
|
| - return null;
|
| -
|
| - var summarizedItem = new ProgressCenterItem();
|
| - summarizedItem.quiet = this.quiet_;
|
| - summarizedItem.progressMax += this.totalProgressMax_;
|
| - summarizedItem.progressValue += this.totalProgressValue_;
|
| - var progressingItems = [];
|
| - var errorItems = [];
|
| - var numItems = 0;
|
| -
|
| - for (var id in this.items_) {
|
| - var item = this.items_[id];
|
| - numItems++;
|
| -
|
| - // Count states.
|
| - switch (item.state) {
|
| - case ProgressItemState.PROGRESSING:
|
| - case ProgressItemState.COMPLETED:
|
| - progressingItems.push(item);
|
| - break;
|
| - case ProgressItemState.ERROR:
|
| - errorItems.push(item);
|
| - continue;
|
| - }
|
| -
|
| - // If all of the progressing items have the same type, then use
|
| - // it. Otherwise use TRANSFER, since it is the most generic.
|
| - if (summarizedItem.type === null)
|
| - summarizedItem.type = item.type;
|
| - else if (summarizedItem.type !== item.type)
|
| - summarizedItem.type = ProgressItemType.TRANSFER;
|
| -
|
| - // Sum up the progress values.
|
| - summarizedItem.progressMax += item.progressMax;
|
| - summarizedItem.progressValue += item.progressValue;
|
| - }
|
| -
|
| - // Returns 1 item.
|
| - if (progressingItems.length === 1 &&
|
| - errorItems.length + numOtherErrors === 0) {
|
| - summarizedItem.id = progressingItems[0].id;
|
| - summarizedItem.cancelCallback = progressingItems[0].cancelCallback;
|
| - summarizedItem.message = progressingItems[0].message;
|
| - summarizedItem.state = progressingItems[0].state;
|
| - return summarizedItem;
|
| - }
|
| -
|
| - // Returns integrated items.
|
| - if (progressingItems.length > 0) {
|
| - var numErrors = errorItems.length + numOtherErrors;
|
| - var messages = [];
|
| - switch (summarizedItem.type) {
|
| - case ProgressItemType.COPY:
|
| - messages.push(str('COPY_PROGRESS_SUMMARY'));
|
| - break;
|
| - case ProgressItemType.MOVE:
|
| - messages.push(str('MOVE_PROGRESS_SUMMARY'));
|
| - break;
|
| - case ProgressItemType.DELETE:
|
| - messages.push(str('DELETE_PROGRESS_SUMMARY'));
|
| - break;
|
| - case ProgressItemType.ZIP:
|
| - messages.push(str('ZIP_PROGRESS_SUMMARY'));
|
| - break;
|
| - case ProgressItemType.SYNC:
|
| - messages.push(str('SYNC_PROGRESS_SUMMARY'));
|
| - break;
|
| - case ProgressItemType.TRANSFER:
|
| - messages.push(str('TRANSFER_PROGRESS_SUMMARY'));
|
| - break;
|
| - }
|
| - if (numErrors === 1)
|
| - messages.push(str('ERROR_PROGRESS_SUMMARY'));
|
| - else if (numErrors > 1)
|
| - messages.push(strf('ERROR_PROGRESS_SUMMARY_PLURAL', numErrors));
|
| - summarizedItem.single = false;
|
| - summarizedItem.message = messages.join(' ');
|
| - summarizedItem.state = ProgressItemState.PROGRESSING;
|
| - return summarizedItem;
|
| - }
|
| -
|
| - // Returns complete items.
|
| - summarizedItem.state = ProgressItemState.COMPLETED;
|
| - return summarizedItem;
|
| -};
|
| -
|
| -/**
|
| - * Goes back to the EMPTY state from the INACTIVE state. Removes all the items.
|
| - * If the current state is not the INACTIVE, nothing happens.
|
| - */
|
| -ProgressCenterItemGroup.prototype.endInactive = function() {
|
| - if (this.state_ !== ProgressCenterItemGroup.State.INACTIVE)
|
| - return;
|
| - this.items_ = {};
|
| - this.animated_ = {};
|
| - this.summarizedItem_ = null;
|
| - this.summarizedItemAnimated_ = false;
|
| - this.totalProgressValue_ = 0.0;
|
| - this.totalProgressMax_ = 0.0;
|
| - this.state_ = ProgressCenterItemGroup.State.EMPTY;
|
| -};
|
| -
|
| -/**
|
| - * Ends active state if there is no progressing and animated items.
|
| - * @private
|
| - */
|
| -ProgressCenterItemGroup.prototype.tryEndActive_ = function() {
|
| - if (this.state_ !== ProgressCenterItemGroup.State.ACTIVE ||
|
| - this.summarizedItemAnimated_)
|
| - return;
|
| - var hasError = false;
|
| - for (var id in this.items_) {
|
| - // If there is non-error item (progressing, or completed but still
|
| - // animated), we should stay the active state.
|
| - if (this.items_[id].state !== ProgressItemState.ERROR)
|
| - return;
|
| - hasError = true;
|
| - }
|
| - this.state_ = ProgressCenterItemGroup.State.INACTIVE;
|
| - if (!hasError)
|
| - this.endInactive();
|
| -};
|
|
|