| Index: ui/file_manager/file_manager/background/js/file_operation_manager.js
|
| diff --git a/ui/file_manager/file_manager/background/js/file_operation_manager.js b/ui/file_manager/file_manager/background/js/file_operation_manager.js
|
| index 82e20e5471cadc62f2fe3102d8d6a37e8debf817..2400ed18d7b0717885405e488647d1ccfed080a4 100644
|
| --- a/ui/file_manager/file_manager/background/js/file_operation_manager.js
|
| +++ b/ui/file_manager/file_manager/background/js/file_operation_manager.js
|
| @@ -376,6 +376,10 @@ function FileOperationManager() {
|
| * @extends {cr.EventTarget}
|
| */
|
| FileOperationManager.EventRouter = function() {
|
| + this.pendingDeletedEntries_ = [];
|
| + this.pendingCreatedEntries_ = [];
|
| + this.entryChangedEventRateLimiter_ = new AsyncUtil.RateLimiter(
|
| + this.dispatchEntryChangedEvent_.bind(this), 500);
|
| };
|
|
|
| /**
|
| @@ -407,17 +411,42 @@ FileOperationManager.EventRouter.prototype.sendProgressEvent = function(
|
| };
|
|
|
| /**
|
| - * Dispatches an event to notify that an entry is changed (created or deleted).
|
| + * Stores changed (created or deleted) entry temporarily, and maybe dispatch
|
| + * entries-changed event with stored entries.
|
| * @param {util.EntryChangedKind} kind The enum to represent if the entry is
|
| * created or deleted.
|
| * @param {Entry} entry The changed entry.
|
| */
|
| FileOperationManager.EventRouter.prototype.sendEntryChangedEvent = function(
|
| kind, entry) {
|
| - var event = new Event('entry-changed');
|
| - event.kind = kind;
|
| - event.entry = entry;
|
| - this.dispatchEvent(event);
|
| + if (kind === util.EntryChangedKind.DELETED)
|
| + this.pendingDeletedEntries_.push(entry);
|
| + if (kind === util.EntryChangedKind.CREATED)
|
| + this.pendingCreatedEntries_.push(entry);
|
| +
|
| + this.entryChangedEventRateLimiter_.run();
|
| +};
|
| +
|
| +/**
|
| + * Dispatches an event to notify that entries are changed (created or deleted).
|
| + * @private
|
| + */
|
| +FileOperationManager.EventRouter.prototype.dispatchEntryChangedEvent_ =
|
| + function() {
|
| + if (this.pendingDeletedEntries_.length > 0) {
|
| + var event = new Event('entries-changed');
|
| + event.kind = util.EntryChangedKind.DELETED;
|
| + event.entries = this.pendingDeletedEntries_;
|
| + this.dispatchEvent(event);
|
| + this.pendingDeletedEntries_ = [];
|
| + }
|
| + if (this.pendingCreatedEntries_.length > 0) {
|
| + var event = new Event('entries-changed');
|
| + event.kind = util.EntryChangedKind.CREATED;
|
| + event.entries = this.pendingCreatedEntries_;
|
| + this.dispatchEvent(event);
|
| + this.pendingCreatedEntries_ = [];
|
| + }
|
| };
|
|
|
| /**
|
|
|