Index: ui/file_manager/file_manager/foreground/js/import_controller_unittest.js |
diff --git a/ui/file_manager/file_manager/foreground/js/import_controller_unittest.js b/ui/file_manager/file_manager/foreground/js/import_controller_unittest.js |
index 3cd55df7f13233edf2837814e380cccaf6c53f2c..c03d227c63a6595c48ac096bc69ac1b91c309a1b 100644 |
--- a/ui/file_manager/file_manager/foreground/js/import_controller_unittest.js |
+++ b/ui/file_manager/file_manager/foreground/js/import_controller_unittest.js |
@@ -95,17 +95,21 @@ function testVolumeUnmount_InvalidatesScans(callback) { |
], |
'/DCIM'); |
- environment.directoryChangedListener_(EMPTY_EVENT); |
+ var dcim = environment.getCurrentDirectory(); |
+ var notDcim = new MockDirectoryEntry( |
+ new MockFileSystem('testFs'), |
mtomasz
2015/04/01 02:28:45
nit: indent
Steve McKay
2015/04/01 03:52:53
Done.
|
+ '/jellybeans/'); |
+ |
+ environment.directoryChangedListener(EMPTY_EVENT); |
var promise = widget.updateResolver.promise.then( |
function() { |
// Reset the promise so we can wait on a second widget update. |
widget.resetPromises(); |
- |
- // Faux unmount the volume, then request an update again. |
- // A fresh new scan should be started. |
+ environment.setCurrentDirectory(notDcim); |
environment.simulateUnmount(); |
- environment.directoryChangedListener_(EMPTY_EVENT); |
+ environment.setCurrentDirectory(dcim); |
+ environment.directoryChangedListener(EMPTY_EVENT); |
// Return the new promise, so subsequent "thens" only |
// fire once the widget has been updated again. |
return widget.updateResolver.promise; |
@@ -128,10 +132,75 @@ function testDirectoryChange_TriggersUpdate(callback) { |
], |
'/DCIM'); |
- environment.directoryChangedListener_(EMPTY_EVENT); |
+ environment.directoryChangedListener(EMPTY_EVENT); |
reportPromise(widget.updateResolver.promise, callback); |
} |
+function testDirectoryChange_CancelsScan(callback) { |
+ var controller = createController( |
+ VolumeManagerCommon.VolumeType.MTP, |
+ 'mtp-volume', |
+ [ |
+ '/DCIM/', |
+ '/DCIM/photos0/', |
+ '/DCIM/photos0/IMG00001.jpg', |
+ '/DCIM/photos0/IMG00002.jpg', |
+ '/DCIM/photos1/', |
+ '/DCIM/photos1/IMG00001.jpg', |
+ '/DCIM/photos1/IMG00003.jpg' |
+ ], |
+ '/DCIM'); |
+ |
+ var notDcim = new MockDirectoryEntry( |
+ new MockFileSystem('testFs'), |
mtomasz
2015/04/01 03:19:47
nit: indent
Steve McKay
2015/04/01 03:52:53
Done.
|
+ '/jellybeans/'); |
+ |
+ environment.directoryChangedListener(EMPTY_EVENT); |
+ var promise = widget.updateResolver.promise.then( |
+ function() { |
mtomasz
2015/04/01 03:19:47
nit: indent
Steve McKay
2015/04/01 03:52:53
Done.
|
+ // Reset the promise so we can wait on a second widget update. |
+ widget.resetPromises(); |
+ environment.setCurrentDirectory(notDcim); |
+ environment.directoryChangedListener(EMPTY_EVENT); |
+ }).then( |
+ function() { |
mtomasz
2015/04/01 03:19:47
nit: indent
Steve McKay
2015/04/01 03:52:53
Done.
|
+ mediaScanner.assertScanCount(1); |
+ mediaScanner.assertLastScanCanceled(); |
+ }); |
+ |
+ reportPromise(promise, callback); |
+} |
+ |
+function testWindowClose_CancelsScan(callback) { |
+ var controller = createController( |
+ VolumeManagerCommon.VolumeType.MTP, |
+ 'mtp-volume', |
+ [ |
+ '/DCIM/', |
+ '/DCIM/photos0/', |
+ '/DCIM/photos0/IMG00001.jpg', |
+ '/DCIM/photos0/IMG00002.jpg', |
+ '/DCIM/photos1/', |
+ '/DCIM/photos1/IMG00001.jpg', |
+ '/DCIM/photos1/IMG00003.jpg' |
+ ], |
+ '/DCIM'); |
+ |
+ environment.directoryChangedListener(EMPTY_EVENT); |
+ var promise = widget.updateResolver.promise.then( |
+ function() { |
mtomasz
2015/04/01 02:28:45
nit: 4 spaces indent
Steve McKay
2015/04/01 03:52:53
Done.
|
+ // Reset the promise so we can wait on a second widget update. |
+ widget.resetPromises(); |
+ environment.windowCloseListener(); |
+ }).then( |
+ function() { |
mtomasz
2015/04/01 02:28:45
nit: 4 spaces indent.
Steve McKay
2015/04/01 03:52:53
Done.
|
+ mediaScanner.assertScanCount(1); |
+ mediaScanner.assertLastScanCanceled(); |
+ }); |
+ |
+ reportPromise(promise, callback); |
+} |
+ |
function testDirectoryChange_DetailsPanelVisibility_InitialChangeDir() { |
var controller = createController( |
VolumeManagerCommon.VolumeType.MTP, |
@@ -148,7 +217,7 @@ function testDirectoryChange_DetailsPanelVisibility_InitialChangeDir() { |
new MockFileSystem('testFs'), |
'/DCIM/'); |
- environment.directoryChangedListener_(event); |
+ environment.directoryChangedListener(event); |
assertTrue(widget.detailsVisible); |
} |
@@ -170,7 +239,7 @@ function testDirectoryChange_DetailsPanelVisibility_SubsequentChangeDir() { |
// Any previous dir at all will skip the new window logic. |
event.previousDirEntry = event.newDirEntry; |
- environment.directoryChangedListener_(event); |
+ environment.directoryChangedListener(event); |
assertFalse(widget.detailsVisible); |
} |
@@ -185,7 +254,14 @@ function testSelectionChange_TriggersUpdate(callback) { |
], |
'/DCIM'); |
- environment.selectionChangedListener_(); |
+ var fileSystem = new MockFileSystem('testFs'); |
+ // ensure there is some content in the scan so the code that depends |
+ // on this state doesn't croak which it finds it missing. |
+ environment.selection.push( |
+ new MockFileEntry(fileSystem, '/DCIM/photos0/IMG00001.jpg', {size: 0})); |
+ |
+ environment.selectionChangedListener(); |
+ mediaScanner.finalizeScans(); |
reportPromise(widget.updateResolver.promise, callback); |
} |
@@ -206,7 +282,7 @@ function testFinalizeScans_TriggersUpdate(callback) { |
mediaScanner.fileEntries.push( |
new MockFileEntry(fileSystem, '/DCIM/photos0/IMG00001.jpg', {size: 0})); |
- environment.directoryChangedListener_(EMPTY_EVENT); // initiates a scan. |
+ environment.directoryChangedListener(EMPTY_EVENT); // initiates a scan. |
widget.resetPromises(); |
mediaScanner.finalizeScans(); |
@@ -263,7 +339,7 @@ function startImport(clickSource) { |
new MockFileEntry(fileSystem, '/DCIM/photos0/IMG00001.jpg', {size: 0})); |
// First we need to force the controller into a scanning state. |
- environment.directoryChangedListener_(EMPTY_EVENT); |
+ environment.directoryChangedListener(EMPTY_EVENT); |
return widget.updateResolver.promise.then( |
function() { |
@@ -394,14 +470,17 @@ TestControllerEnvironment = function(volumeInfo, directory) { |
/** @private {!DirectoryEntry} */ |
this.directory_ = directory; |
- /** @private {function(string)} */ |
- this.volumeUnmountListener_; |
+ /** @public {function()} */ |
+ this.windowCloseListener; |
+ |
+ /** @public {function(string)} */ |
+ this.volumeUnmountListener; |
- /** @private {function()} */ |
- this.directoryChangedListener_; |
+ /** @public {function()} */ |
+ this.directoryChangedListener; |
- /** @private {function()} */ |
- this.selectionChangedListener_; |
+ /** @public {function()} */ |
+ this.selectionChangedListener; |
/** @public {!Entry} */ |
this.selection = []; |
@@ -455,21 +534,27 @@ TestControllerEnvironment.prototype.getFreeStorageSpace = |
}; |
/** @override */ |
+TestControllerEnvironment.prototype.addWindowCloseListener = |
+ function(listener) { |
+ this.windowCloseListener = listener; |
+}; |
+ |
+/** @override */ |
TestControllerEnvironment.prototype.addVolumeUnmountListener = |
function(listener) { |
- this.volumeUnmountListener_ = listener; |
+ this.volumeUnmountListener = listener; |
}; |
/** @override */ |
TestControllerEnvironment.prototype.addDirectoryChangedListener = |
function(listener) { |
- this.directoryChangedListener_ = listener; |
+ this.directoryChangedListener = listener; |
}; |
/** @override */ |
TestControllerEnvironment.prototype.addSelectionChangedListener = |
function(listener) { |
- this.selectionChangedListener_ = listener; |
+ this.selectionChangedListener = listener; |
}; |
/** @override */ |
@@ -493,7 +578,7 @@ TestControllerEnvironment.prototype.showImportRoot = function() { |
* Simulates an unmount event. |
*/ |
TestControllerEnvironment.prototype.simulateUnmount = function() { |
- this.volumeUnmountListener_(this.volumeInfo_.volumeId); |
+ this.volumeUnmountListener(this.volumeInfo_.volumeId); |
}; |
/** |