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

Unified Diff: ui/file_manager/file_manager/background/js/media_import_handler.js

Issue 795833002: MediaScanner improvements (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: pull 'n merge. Created 6 years 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: ui/file_manager/file_manager/background/js/media_import_handler.js
diff --git a/ui/file_manager/file_manager/background/js/media_import_handler.js b/ui/file_manager/file_manager/background/js/media_import_handler.js
index f5e3455d16366a3f518eb015022d2d1ded100964..fe0071b497d79ff29082e56ee22fb567faeb6359 100644
--- a/ui/file_manager/file_manager/background/js/media_import_handler.js
+++ b/ui/file_manager/file_manager/background/js/media_import_handler.js
@@ -7,17 +7,25 @@ var importer = importer || {};
/**
* Handler for importing media from removable devices into the user's Drive.
- * @param {!FileOperationManager} fileOperationManager
- * @param {!MediaScanner=} opt_scanner
+ *
* @constructor
* @struct
+ *
+ * @param {!FileOperationManager} fileOperationManager
+ * @param {!importer.MediaScanner} scanner
*/
-importer.MediaImportHandler = function(fileOperationManager, opt_scanner) {
+importer.MediaImportHandler = function(fileOperationManager, scanner) {
/** @private {!FileOperationManager} */
this.fileOperationManager_ = fileOperationManager;
- /** @private {!MediaScanner} */
- this.scanner_ = opt_scanner || new MediaScanner();
+ /** @private {!importer.MediaScanner} */
+ this.scanner_ = scanner;
+
+ /**
+ * If there is an active scan, this field will be set to a non-null value.
+ * @type {?importer.ScanResult}
+ */
+ this.activeScanResult_ = null;
};
/**
@@ -35,11 +43,20 @@ importer.MediaImportHandler.DestinationFactory;
*/
importer.MediaImportHandler.prototype.importMedia =
function(source, opt_destination) {
+
+ var scanResult = this.scanner_.scan([source]);
+ this.activeScanResult_ = scanResult;
+ scanResult.whenFinished()
+ .then(
+ function() {
+ this.activeScanResult_ = null;
+ }.bind(this));
+
var destination = opt_destination ||
importer.MediaImportHandler.defaultDestination.getImportDestination;
return new importer.MediaImportHandler.ImportTask(
this.fileOperationManager_,
- this.scanner_,
+ scanResult,
source,
destination);
};
@@ -53,38 +70,37 @@ importer.MediaImportHandler.prototype.importMedia =
* FileOperationManager, but instead actually performs the copy using the
* fileManagerPrivate API directly.
*
+ * @constructor
+ * @struct
+ *
* @param {!FileOperationManager} fileOperationManager
- * @param {!MediaScanner} mediaScanner
+ * @param {!importer.ScanResult} scanResult
* @param {!DirectoryEntry} source Source dir containing media for import.
* @param {!importer.MediaImportHandler.DestinationFactory} destination A
* function that returns the directory into which media will be imported.
- * @constructor
- * @struct
*/
importer.MediaImportHandler.ImportTask =
- function(fileOperationManager, mediaScanner, source, destination) {
+ function(fileOperationManager, scanResult, source, destination) {
/** @private {!DirectoryEntry} */
this.source_ = source;
- /** @private {!MediaScanner} */
- this.scanner_ = mediaScanner;
-
// Call fileOperationManager.requestTaskCancel to cancel this task.
// TODO(kenobi): Add task cancellation.
this.taskId_ = fileOperationManager.generateTaskId();
Promise.all([
destination(),
- this.scanner_.scan([source])
+ scanResult.whenFinished()
]).then(
function(args) {
/** @type {!DirectoryEntry} */
var destinationDir = args[0];
- /** @type {!Array<!FileEntry>} */
- var media = args[1];
+
+ /** @type {!importer.ScanResult} */
+ var scanResult = args[1];
fileOperationManager.paste(
- media,
+ scanResult.getFileEntries(),
destinationDir,
/* isMove */ false,
/* opt_taskId */ this.taskId_);

Powered by Google App Engine
This is Rietveld 408576698