Chromium Code Reviews| 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); |
| }; |
| /** |