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

Side by Side Diff: ui/file_manager/file_manager/foreground/js/import_controller_unittest.js

Issue 1045663002: Cancel scans when directory changed. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Respond to review comments. Created 5 years, 8 months 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 unified diff | Download patch
« no previous file with comments | « ui/file_manager/file_manager/foreground/js/import_controller_unittest.html ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** @const {!Event} */ 5 /** @const {!Event} */
6 var EMPTY_EVENT = new Event('directory-changed'); 6 var EMPTY_EVENT = new Event('directory-changed');
7 7
8 /** @type {!MockVolumeManager} */ 8 /** @type {!MockVolumeManager} */
9 var volumeManager; 9 var volumeManager;
10 10
11 /** @type {!TestMediaScanner} */ 11 /** @type {!TestMediaScanner} */
12 var mediaScanner; 12 var mediaScanner;
13 13
14 /** @type {!TestImportRunner} */ 14 /** @type {!TestImportRunner} */
15 var mediaImporter; 15 var mediaImporter;
16 16
17 /** @type {!TestControllerEnvironment} */ 17 /** @type {!TestControllerEnvironment} */
18 var environment; 18 var environment;
19 19
20 /** @type {!VolumeInfo} */ 20 /** @type {!VolumeInfo} */
21 var sourceVolume; 21 var sourceVolume;
22 22
23 /** @type {!VolumeInfo} */ 23 /** @type {!VolumeInfo} */
24 var destinationVolume; 24 var destinationVolume;
25 25
26 /** @type {!importer.TestCommandWidget} */ 26 /** @type {!importer.TestCommandWidget} */
27 var widget; 27 var widget;
28 28
29 /** @type {!DirectoryEntry} */
30 var nonDcimDirectory;
31
29 /** 32 /**
30 * @enum {string} 33 * @enum {string}
31 */ 34 */
32 var MESSAGES = { 35 var MESSAGES = {
33 CLOUD_IMPORT_BUTTON_LABEL: 'Import it!', 36 CLOUD_IMPORT_BUTTON_LABEL: 'Import it!',
34 CLOUD_IMPORT_ACTIVE_IMPORT_BUTTON_LABEL: 'Already importing!', 37 CLOUD_IMPORT_ACTIVE_IMPORT_BUTTON_LABEL: 'Already importing!',
35 CLOUD_IMPORT_EMPTY_SCAN_BUTTON_LABEL: 'No new media', 38 CLOUD_IMPORT_EMPTY_SCAN_BUTTON_LABEL: 'No new media',
36 CLOUD_IMPORT_INSUFFICIENT_SPACE_BUTTON_LABEL: 'Not enough space!', 39 CLOUD_IMPORT_INSUFFICIENT_SPACE_BUTTON_LABEL: 'Not enough space!',
37 CLOUD_IMPORT_SCANNING_BUTTON_LABEL: 'Scanning... ...!', 40 CLOUD_IMPORT_SCANNING_BUTTON_LABEL: 'Scanning... ...!',
38 DRIVE_DIRECTORY_LABEL: 'My Drive', 41 DRIVE_DIRECTORY_LABEL: 'My Drive',
39 DOWNLOADS_DIRECTORY_LABEL: 'Downloads' 42 DOWNLOADS_DIRECTORY_LABEL: 'Downloads'
40 }; 43 };
41 44
42 // Set up string assets. 45 // Set up string assets.
43 loadTimeData.data = MESSAGES; 46 loadTimeData.data = MESSAGES;
44 47
45 function setUp() { 48 function setUp() {
46 new MockChromeStorageAPI(); 49 new MockChromeStorageAPI();
47 50
48 widget = new importer.TestCommandWidget(); 51 widget = new importer.TestCommandWidget();
49 52
53 nonDcimDirectory = new MockDirectoryEntry(
54 new MockFileSystem('testFs'),
55 '/jellybeans/');
56
50 volumeManager = new MockVolumeManager(); 57 volumeManager = new MockVolumeManager();
51 MockVolumeManager.installMockSingleton(volumeManager); 58 MockVolumeManager.installMockSingleton(volumeManager);
52 59
53 destinationVolume = volumeManager.getCurrentProfileVolumeInfo( 60 destinationVolume = volumeManager.getCurrentProfileVolumeInfo(
54 VolumeManagerCommon.VolumeType.DOWNLOADS); 61 VolumeManagerCommon.VolumeType.DOWNLOADS);
55 62
56 mediaScanner = new TestMediaScanner(); 63 mediaScanner = new TestMediaScanner();
57 mediaImporter = new TestImportRunner(); 64 mediaImporter = new TestImportRunner();
58 } 65 }
59 66
(...skipping 28 matching lines...) Expand all
88 '/DCIM/', 95 '/DCIM/',
89 '/DCIM/photos0/', 96 '/DCIM/photos0/',
90 '/DCIM/photos0/IMG00001.jpg', 97 '/DCIM/photos0/IMG00001.jpg',
91 '/DCIM/photos0/IMG00002.jpg', 98 '/DCIM/photos0/IMG00002.jpg',
92 '/DCIM/photos1/', 99 '/DCIM/photos1/',
93 '/DCIM/photos1/IMG00001.jpg', 100 '/DCIM/photos1/IMG00001.jpg',
94 '/DCIM/photos1/IMG00003.jpg' 101 '/DCIM/photos1/IMG00003.jpg'
95 ], 102 ],
96 '/DCIM'); 103 '/DCIM');
97 104
98 environment.directoryChangedListener_(EMPTY_EVENT); 105 var dcim = environment.getCurrentDirectory();
106
107 environment.directoryChangedListener(EMPTY_EVENT);
99 var promise = widget.updateResolver.promise.then( 108 var promise = widget.updateResolver.promise.then(
109 function() {
110 // Reset the promise so we can wait on a second widget update.
111 widget.resetPromises();
112 environment.setCurrentDirectory(nonDcimDirectory);
113 environment.simulateUnmount();
114
115 environment.setCurrentDirectory(dcim);
116 environment.directoryChangedListener(EMPTY_EVENT);
117 // Return the new promise, so subsequent "thens" only
118 // fire once the widget has been updated again.
119 return widget.updateResolver.promise;
120 }).then(
100 function() { 121 function() {
101 // Reset the promise so we can wait on a second widget update. 122 mediaScanner.assertScanCount(2);
102 widget.resetPromises(); 123 });
103
104 // Faux unmount the volume, then request an update again.
105 // A fresh new scan should be started.
106 environment.simulateUnmount();
107
108 environment.directoryChangedListener_(EMPTY_EVENT);
109 // Return the new promise, so subsequent "thens" only
110 // fire once the widget has been updated again.
111 return widget.updateResolver.promise;
112 }).then(
113 function() {
114 mediaScanner.assertScanCount(2);
115 });
116 124
117 reportPromise(promise, callback); 125 reportPromise(promise, callback);
118 } 126 }
119 127
120 function testDirectoryChange_TriggersUpdate(callback) { 128 function testDirectoryChange_TriggersUpdate(callback) {
121 var controller = createController( 129 var controller = createController(
122 VolumeManagerCommon.VolumeType.MTP, 130 VolumeManagerCommon.VolumeType.MTP,
123 'mtp-volume', 131 'mtp-volume',
124 [ 132 [
125 '/DCIM/', 133 '/DCIM/',
126 '/DCIM/photos0/', 134 '/DCIM/photos0/',
127 '/DCIM/photos0/IMG00001.jpg', 135 '/DCIM/photos0/IMG00001.jpg',
128 ], 136 ],
129 '/DCIM'); 137 '/DCIM');
130 138
131 environment.directoryChangedListener_(EMPTY_EVENT); 139 environment.directoryChangedListener(EMPTY_EVENT);
132 reportPromise(widget.updateResolver.promise, callback); 140 reportPromise(widget.updateResolver.promise, callback);
133 } 141 }
134 142
143 function testDirectoryChange_CancelsScan(callback) {
144 var controller = createController(
145 VolumeManagerCommon.VolumeType.MTP,
146 'mtp-volume',
147 [
148 '/DCIM/',
149 '/DCIM/photos0/',
150 '/DCIM/photos0/IMG00001.jpg',
151 '/DCIM/photos0/IMG00002.jpg',
152 '/DCIM/photos1/',
153 '/DCIM/photos1/IMG00001.jpg',
154 '/DCIM/photos1/IMG00003.jpg'
155 ],
156 '/DCIM');
157
158 environment.directoryChangedListener(EMPTY_EVENT);
159 var promise = widget.updateResolver.promise.then(
160 function() {
161 // Reset the promise so we can wait on a second widget update.
162 widget.resetPromises();
163 environment.setCurrentDirectory(nonDcimDirectory);
164 environment.directoryChangedListener(EMPTY_EVENT);
165 }).then(
166 function() {
167 mediaScanner.assertScanCount(1);
168 mediaScanner.assertLastScanCanceled();
169 });
170
171 reportPromise(promise, callback);
172 }
173
174 function testWindowClose_CancelsScan(callback) {
175 var controller = createController(
176 VolumeManagerCommon.VolumeType.MTP,
177 'mtp-volume',
178 [
179 '/DCIM/',
180 '/DCIM/photos0/',
181 '/DCIM/photos0/IMG00001.jpg',
182 '/DCIM/photos0/IMG00002.jpg',
183 '/DCIM/photos1/',
184 '/DCIM/photos1/IMG00001.jpg',
185 '/DCIM/photos1/IMG00003.jpg'
186 ],
187 '/DCIM');
188
189 environment.directoryChangedListener(EMPTY_EVENT);
190 var promise = widget.updateResolver.promise.then(
191 function() {
192 // Reset the promise so we can wait on a second widget update.
193 widget.resetPromises();
194 environment.windowCloseListener();
195 }).then(
196 function() {
197 mediaScanner.assertScanCount(1);
198 mediaScanner.assertLastScanCanceled();
199 });
200
201 reportPromise(promise, callback);
202 }
203
135 function testDirectoryChange_DetailsPanelVisibility_InitialChangeDir() { 204 function testDirectoryChange_DetailsPanelVisibility_InitialChangeDir() {
136 var controller = createController( 205 var controller = createController(
137 VolumeManagerCommon.VolumeType.MTP, 206 VolumeManagerCommon.VolumeType.MTP,
138 'mtp-volume', 207 'mtp-volume',
139 [ 208 [
140 '/DCIM/', 209 '/DCIM/',
141 '/DCIM/photos0/', 210 '/DCIM/photos0/',
142 '/DCIM/photos0/IMG00001.jpg', 211 '/DCIM/photos0/IMG00001.jpg',
143 ], 212 ],
144 '/DCIM'); 213 '/DCIM');
145 214
146 var event = new Event('directory-changed'); 215 var event = new Event('directory-changed');
147 event.newDirEntry = new MockDirectoryEntry( 216 event.newDirEntry = new MockDirectoryEntry(
148 new MockFileSystem('testFs'), 217 new MockFileSystem('testFs'),
149 '/DCIM/'); 218 '/DCIM/');
150 219
151 environment.directoryChangedListener_(event); 220 environment.directoryChangedListener(event);
152 assertTrue(widget.detailsVisible); 221 assertTrue(widget.detailsVisible);
153 } 222 }
154 223
155 function testDirectoryChange_DetailsPanelVisibility_SubsequentChangeDir() { 224 function testDirectoryChange_DetailsPanelVisibility_SubsequentChangeDir() {
156 var controller = createController( 225 var controller = createController(
157 VolumeManagerCommon.VolumeType.MTP, 226 VolumeManagerCommon.VolumeType.MTP,
158 'mtp-volume', 227 'mtp-volume',
159 [ 228 [
160 '/DCIM/', 229 '/DCIM/',
161 '/DCIM/photos0/', 230 '/DCIM/photos0/',
162 '/DCIM/photos0/IMG00001.jpg', 231 '/DCIM/photos0/IMG00001.jpg',
163 ], 232 ],
164 '/DCIM'); 233 '/DCIM');
165 234
166 var event = new Event('directory-changed'); 235 var event = new Event('directory-changed');
167 event.newDirEntry = new MockDirectoryEntry( 236 event.newDirEntry = new MockDirectoryEntry(
168 new MockFileSystem('testFs'), 237 new MockFileSystem('testFs'),
169 '/DCIM/'); 238 '/DCIM/');
170 // Any previous dir at all will skip the new window logic. 239 // Any previous dir at all will skip the new window logic.
171 event.previousDirEntry = event.newDirEntry; 240 event.previousDirEntry = event.newDirEntry;
172 241
173 environment.directoryChangedListener_(event); 242 environment.directoryChangedListener(event);
174 assertFalse(widget.detailsVisible); 243 assertFalse(widget.detailsVisible);
175 } 244 }
176 245
177 function testSelectionChange_TriggersUpdate(callback) { 246 function testSelectionChange_TriggersUpdate(callback) {
178 var controller = createController( 247 var controller = createController(
179 VolumeManagerCommon.VolumeType.MTP, 248 VolumeManagerCommon.VolumeType.MTP,
180 'mtp-volume', 249 'mtp-volume',
181 [ 250 [
182 '/DCIM/', 251 '/DCIM/',
183 '/DCIM/photos0/', 252 '/DCIM/photos0/',
184 '/DCIM/photos0/IMG00001.jpg', 253 '/DCIM/photos0/IMG00001.jpg',
185 ], 254 ],
186 '/DCIM'); 255 '/DCIM');
187 256
188 environment.selectionChangedListener_(); 257 var fileSystem = new MockFileSystem('testFs');
258 // ensure there is some content in the scan so the code that depends
259 // on this state doesn't croak which it finds it missing.
260 environment.selection.push(
261 new MockFileEntry(fileSystem, '/DCIM/photos0/IMG00001.jpg', {size: 0}));
262
263 environment.selectionChangedListener();
264 mediaScanner.finalizeScans();
189 reportPromise(widget.updateResolver.promise, callback); 265 reportPromise(widget.updateResolver.promise, callback);
190 } 266 }
191 267
192 function testFinalizeScans_TriggersUpdate(callback) { 268 function testFinalizeScans_TriggersUpdate(callback) {
193 var controller = createController( 269 var controller = createController(
194 VolumeManagerCommon.VolumeType.MTP, 270 VolumeManagerCommon.VolumeType.MTP,
195 'mtp-volume', 271 'mtp-volume',
196 [ 272 [
197 '/DCIM/', 273 '/DCIM/',
198 '/DCIM/photos0/', 274 '/DCIM/photos0/',
199 '/DCIM/photos0/IMG00001.jpg', 275 '/DCIM/photos0/IMG00001.jpg',
200 ], 276 ],
201 '/DCIM'); 277 '/DCIM');
202 278
203 var fileSystem = new MockFileSystem('testFs'); 279 var fileSystem = new MockFileSystem('testFs');
204 // ensure there is some content in the scan so the code that depends 280 // ensure there is some content in the scan so the code that depends
205 // on this state doesn't croak which it finds it missing. 281 // on this state doesn't croak which it finds it missing.
206 mediaScanner.fileEntries.push( 282 mediaScanner.fileEntries.push(
207 new MockFileEntry(fileSystem, '/DCIM/photos0/IMG00001.jpg', {size: 0})); 283 new MockFileEntry(fileSystem, '/DCIM/photos0/IMG00001.jpg', {size: 0}));
208 284
209 environment.directoryChangedListener_(EMPTY_EVENT); // initiates a scan. 285 environment.directoryChangedListener(EMPTY_EVENT); // initiates a scan.
210 widget.resetPromises(); 286 widget.resetPromises();
211 mediaScanner.finalizeScans(); 287 mediaScanner.finalizeScans();
212 288
213 reportPromise(widget.updateResolver.promise, callback); 289 reportPromise(widget.updateResolver.promise, callback);
214 } 290 }
215 291
216 function testClickDestination_ShowsRootPriorToImport(callback) { 292 function testClickDestination_ShowsRootPriorToImport(callback) {
217 var controller = createController( 293 var controller = createController(
218 VolumeManagerCommon.VolumeType.MTP, 294 VolumeManagerCommon.VolumeType.MTP,
219 'mtp-volume', 295 'mtp-volume',
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
256 ], 332 ],
257 '/DCIM'); 333 '/DCIM');
258 334
259 var fileSystem = new MockFileSystem('testFs'); 335 var fileSystem = new MockFileSystem('testFs');
260 // ensure there is some content in the scan so the code that depends 336 // ensure there is some content in the scan so the code that depends
261 // on this state doesn't croak which it finds it missing. 337 // on this state doesn't croak which it finds it missing.
262 mediaScanner.fileEntries.push( 338 mediaScanner.fileEntries.push(
263 new MockFileEntry(fileSystem, '/DCIM/photos0/IMG00001.jpg', {size: 0})); 339 new MockFileEntry(fileSystem, '/DCIM/photos0/IMG00001.jpg', {size: 0}));
264 340
265 // First we need to force the controller into a scanning state. 341 // First we need to force the controller into a scanning state.
266 environment.directoryChangedListener_(EMPTY_EVENT); 342 environment.directoryChangedListener(EMPTY_EVENT);
267 343
268 return widget.updateResolver.promise.then( 344 return widget.updateResolver.promise.then(
269 function() { 345 function() {
270 widget.resetPromises(); 346 widget.resetPromises();
271 mediaScanner.finalizeScans(); 347 mediaScanner.finalizeScans();
272 return widget.updateResolver.promise.then( 348 return widget.updateResolver.promise.then(
273 function() { 349 function() {
274 widget.resetPromises(); 350 widget.resetPromises();
275 widget.click(clickSource); 351 widget.click(clickSource);
276 return mediaImporter.importResolver.promise; 352 return mediaImporter.importResolver.promise;
277 }); 353 });
278 }); 354 });
279 } 355 }
280 356
281 /** 357 /**
282 * A stub that just provides interfaces from ImportTask that are required by 358 * A stub that just provides interfaces from ImportTask that are required by
283 * these tests. 359 * these tests.
284 * 360 *
285 * @constructor 361 * @constructor
286 * 362 *
287 * @param {!impoter.ScanResult} scan 363 * @param {!impoter.ScanResult} scan
288 * @param {!impoter.Destination} destination 364 * @param {!impoter.Destination} destination
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
387 * @param {!VolumeInfo} volumeInfo 463 * @param {!VolumeInfo} volumeInfo
388 * @param {!DirectoryEntry} directory 464 * @param {!DirectoryEntry} directory
389 */ 465 */
390 TestControllerEnvironment = function(volumeInfo, directory) { 466 TestControllerEnvironment = function(volumeInfo, directory) {
391 /** @private {!VolumeInfo} */ 467 /** @private {!VolumeInfo} */
392 this.volumeInfo_ = volumeInfo; 468 this.volumeInfo_ = volumeInfo;
393 469
394 /** @private {!DirectoryEntry} */ 470 /** @private {!DirectoryEntry} */
395 this.directory_ = directory; 471 this.directory_ = directory;
396 472
397 /** @private {function(string)} */ 473 /** @public {function()} */
398 this.volumeUnmountListener_; 474 this.windowCloseListener;
399 475
400 /** @private {function()} */ 476 /** @public {function(string)} */
401 this.directoryChangedListener_; 477 this.volumeUnmountListener;
402 478
403 /** @private {function()} */ 479 /** @public {function()} */
404 this.selectionChangedListener_; 480 this.directoryChangedListener;
481
482 /** @public {function()} */
483 this.selectionChangedListener;
405 484
406 /** @public {!Entry} */ 485 /** @public {!Entry} */
407 this.selection = []; 486 this.selection = [];
408 487
409 /** @public {boolean} */ 488 /** @public {boolean} */
410 this.isDriveMounted = true; 489 this.isDriveMounted = true;
411 490
412 /** @public {number} */ 491 /** @public {number} */
413 this.freeStorageSpace = 123456789; // bytes 492 this.freeStorageSpace = 123456789; // bytes
414 493
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 return this.isDriveMounted; 527 return this.isDriveMounted;
449 }; 528 };
450 529
451 /** @override */ 530 /** @override */
452 TestControllerEnvironment.prototype.getFreeStorageSpace = 531 TestControllerEnvironment.prototype.getFreeStorageSpace =
453 function() { 532 function() {
454 return Promise.resolve(this.freeStorageSpace); 533 return Promise.resolve(this.freeStorageSpace);
455 }; 534 };
456 535
457 /** @override */ 536 /** @override */
537 TestControllerEnvironment.prototype.addWindowCloseListener =
538 function(listener) {
539 this.windowCloseListener = listener;
540 };
541
542 /** @override */
458 TestControllerEnvironment.prototype.addVolumeUnmountListener = 543 TestControllerEnvironment.prototype.addVolumeUnmountListener =
459 function(listener) { 544 function(listener) {
460 this.volumeUnmountListener_ = listener; 545 this.volumeUnmountListener = listener;
461 }; 546 };
462 547
463 /** @override */ 548 /** @override */
464 TestControllerEnvironment.prototype.addDirectoryChangedListener = 549 TestControllerEnvironment.prototype.addDirectoryChangedListener =
465 function(listener) { 550 function(listener) {
466 this.directoryChangedListener_ = listener; 551 this.directoryChangedListener = listener;
467 }; 552 };
468 553
469 /** @override */ 554 /** @override */
470 TestControllerEnvironment.prototype.addSelectionChangedListener = 555 TestControllerEnvironment.prototype.addSelectionChangedListener =
471 function(listener) { 556 function(listener) {
472 this.selectionChangedListener_ = listener; 557 this.selectionChangedListener = listener;
473 }; 558 };
474 559
475 /** @override */ 560 /** @override */
476 TestControllerEnvironment.prototype.getImportDestination = 561 TestControllerEnvironment.prototype.getImportDestination =
477 function(date) { 562 function(date) {
478 var fileSystem = new MockFileSystem('testFs'); 563 var fileSystem = new MockFileSystem('testFs');
479 return new MockDirectoryEntry(fileSystem, '/abc/123'); 564 return new MockDirectoryEntry(fileSystem, '/abc/123');
480 }; 565 };
481 566
482 /** @override */ 567 /** @override */
483 TestControllerEnvironment.prototype.showImportDestination = function() { 568 TestControllerEnvironment.prototype.showImportDestination = function() {
484 this.showImportDestinationResolver.resolve(); 569 this.showImportDestinationResolver.resolve();
485 }; 570 };
486 571
487 /** @override */ 572 /** @override */
488 TestControllerEnvironment.prototype.showImportRoot = function() { 573 TestControllerEnvironment.prototype.showImportRoot = function() {
489 this.showImportRootResolver.resolve(); 574 this.showImportRootResolver.resolve();
490 }; 575 };
491 576
492 /** 577 /**
493 * Simulates an unmount event. 578 * Simulates an unmount event.
494 */ 579 */
495 TestControllerEnvironment.prototype.simulateUnmount = function() { 580 TestControllerEnvironment.prototype.simulateUnmount = function() {
496 this.volumeUnmountListener_(this.volumeInfo_.volumeId); 581 this.volumeUnmountListener(this.volumeInfo_.volumeId);
497 }; 582 };
498 583
499 /** 584 /**
500 * Test implementation of importer.CommandWidget. 585 * Test implementation of importer.CommandWidget.
501 * 586 *
502 * @constructor 587 * @constructor
503 * @implements {importer.CommandWidget} 588 * @implements {importer.CommandWidget}
504 * @struct 589 * @struct
505 */ 590 */
506 importer.TestCommandWidget = function() { 591 importer.TestCommandWidget = function() {
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
601 * @param {!Array.<string>} fileNames 686 * @param {!Array.<string>} fileNames
602 * @return {!VolumeInfo} 687 * @return {!VolumeInfo}
603 */ 688 */
604 function setupFileSystem(volumeType, volumeId, fileNames) { 689 function setupFileSystem(volumeType, volumeId, fileNames) {
605 var volumeInfo = volumeManager.createVolumeInfo( 690 var volumeInfo = volumeManager.createVolumeInfo(
606 volumeType, volumeId, 'A volume known as ' + volumeId); 691 volumeType, volumeId, 'A volume known as ' + volumeId);
607 assertTrue(volumeInfo != null); 692 assertTrue(volumeInfo != null);
608 volumeInfo.fileSystem.populate(fileNames); 693 volumeInfo.fileSystem.populate(fileNames);
609 return volumeInfo; 694 return volumeInfo;
610 } 695 }
OLDNEW
« no previous file with comments | « ui/file_manager/file_manager/foreground/js/import_controller_unittest.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698