Index: ui/file_manager/file_manager/background/js/task_queue.js |
diff --git a/ui/file_manager/file_manager/background/js/task_queue.js b/ui/file_manager/file_manager/background/js/task_queue.js |
index 9f2d539432627cd9e7ca58dd39a8552ca4f93b7f..ae0962519d7ed3a405254f268590cddb65a12e14 100644 |
--- a/ui/file_manager/file_manager/background/js/task_queue.js |
+++ b/ui/file_manager/file_manager/background/js/task_queue.js |
@@ -181,16 +181,18 @@ importer.TaskQueue.BaseTask = function(taskId) { |
this.taskId_ = taskId; |
/** @private {!Array<!importer.TaskQueue.Task.Observer>} */ |
this.observers_ = []; |
+ |
+ /** @private {!importer.Resolver} */ |
+ this.finishedResolver_ = new importer.Resolver(); |
}; |
/** @struct */ |
importer.TaskQueue.BaseTask.prototype = { |
- /** |
- * @return {string} The task ID. |
- */ |
- get taskId() { |
- return this.taskId_; |
- } |
+ /** @return {string} The task ID. */ |
+ get taskId() { return this.taskId_; }, |
+ |
+ /** @return {!Promise} Resolves when task is complete, rejects on error. */ |
+ get whenFinished() { return this.finishedResolver_.promise; } |
}; |
/** @override */ |
@@ -207,6 +209,13 @@ importer.TaskQueue.BaseTask.prototype.run = function() {}; |
* @protected |
*/ |
importer.TaskQueue.BaseTask.prototype.notify = function(updateType, opt_data) { |
+ switch (updateType) { |
+ case importer.TaskQueue.UpdateType.CANCELED: |
+ case importer.TaskQueue.UpdateType.ERROR: |
+ case importer.TaskQueue.UpdateType.SUCCESS: |
+ this.finishedResolver_.resolve(); |
+ } |
+ |
this.observers_.forEach( |
/** @param {!importer.TaskQueue.Task.Observer} callback */ |
function(callback) { |