| OLD | NEW |
| 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 /** @type {!MockFileOperationManager} */ | 5 /** @type {!MockFileOperationManager} */ |
| 6 var progressCenter; | 6 var progressCenter; |
| 7 | 7 |
| 8 /** @type {!TestMediaScanner} */ | 8 /** @type {!TestMediaScanner} */ |
| 9 var mediaScanner; | 9 var mediaScanner; |
| 10 | 10 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 | 74 |
| 75 importHistory = new importer.TestImportHistory(); | 75 importHistory = new importer.TestImportHistory(); |
| 76 mediaScanner = new TestMediaScanner(); | 76 mediaScanner = new TestMediaScanner(); |
| 77 destinationFileSystem = new MockFileSystem('googleDriveFilesystem'); | 77 destinationFileSystem = new MockFileSystem('googleDriveFilesystem'); |
| 78 destinationFactory = Promise.resolve(destinationFileSystem.root); | 78 destinationFactory = Promise.resolve(destinationFileSystem.root); |
| 79 duplicateFinderFactory = new importer.TestDuplicateFinder.Factory(); | 79 duplicateFinderFactory = new importer.TestDuplicateFinder.Factory(); |
| 80 | 80 |
| 81 mediaImporter = new importer.MediaImportHandler( | 81 mediaImporter = new importer.MediaImportHandler( |
| 82 progressCenter, | 82 progressCenter, |
| 83 importHistory, | 83 importHistory, |
| 84 duplicateFinderFactory, | |
| 85 new TestTracker()); | 84 new TestTracker()); |
| 86 } | 85 } |
| 87 | 86 |
| 88 function testImportMedia(callback) { | 87 function testImportMedia(callback) { |
| 89 var media = setupFileSystem([ | 88 var media = setupFileSystem([ |
| 90 '/DCIM/photos0/IMG00001.jpg', | 89 '/DCIM/photos0/IMG00001.jpg', |
| 91 '/DCIM/photos0/IMG00002.jpg', | 90 '/DCIM/photos0/IMG00002.jpg', |
| 92 '/DCIM/photos0/IMG00003.jpg', | 91 '/DCIM/photos0/IMG00003.jpg', |
| 93 '/DCIM/photos1/IMG00004.jpg', | 92 '/DCIM/photos1/IMG00004.jpg', |
| 94 '/DCIM/photos1/IMG00005.jpg', | 93 '/DCIM/photos1/IMG00005.jpg', |
| (...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 364 whenImportCancelled.then( | 363 whenImportCancelled.then( |
| 365 function() { | 364 function() { |
| 366 var copiedEntries = destinationFileSystem.root.getAllChildren(); | 365 var copiedEntries = destinationFileSystem.root.getAllChildren(); |
| 367 assertEquals(EXPECTED_COPY_COUNT, copiedEntries.length); | 366 assertEquals(EXPECTED_COPY_COUNT, copiedEntries.length); |
| 368 }), | 367 }), |
| 369 callback); | 368 callback); |
| 370 | 369 |
| 371 scanResult.finalize(); | 370 scanResult.finalize(); |
| 372 } | 371 } |
| 373 | 372 |
| 374 function testImportWithDuplicates(callback) { | |
| 375 var media = setupFileSystem([ | |
| 376 '/DCIM/photos0/IMG00001.jpg', | |
| 377 '/DCIM/photos0/IMG00002.jpg', | |
| 378 '/DCIM/photos0/IMG00003.jpg', | |
| 379 '/DCIM/photos1/IMG00004.jpg', | |
| 380 '/DCIM/photos1/IMG00005.jpg', | |
| 381 '/DCIM/photos1/IMG00006.jpg' | |
| 382 ]); | |
| 383 | |
| 384 /** @const {number} */ | |
| 385 var EXPECTED_COPY_COUNT = 3; | |
| 386 | |
| 387 var scanResult = new TestScanResult(media); | |
| 388 var importTask = mediaImporter.importFromScanResult( | |
| 389 scanResult, | |
| 390 importer.Destination.GOOGLE_DRIVE, | |
| 391 destinationFactory); | |
| 392 var whenImportDone = new Promise( | |
| 393 function(resolve, reject) { | |
| 394 importTask.addObserver( | |
| 395 /** | |
| 396 * @param {!importer.TaskQueue.UpdateType} updateType | |
| 397 * @param {!importer.TaskQueue.Task} task | |
| 398 */ | |
| 399 function(updateType, task) { | |
| 400 switch (updateType) { | |
| 401 case importer.TaskQueue.UpdateType.COMPLETE: | |
| 402 resolve(); | |
| 403 break; | |
| 404 case importer.TaskQueue.UpdateType.ERROR: | |
| 405 reject(new Error(importer.TaskQueue.UpdateType.ERROR)); | |
| 406 break; | |
| 407 } | |
| 408 }); | |
| 409 }); | |
| 410 | |
| 411 // Simulate a known number of new imports followed by a bunch of duplicate | |
| 412 // imports. | |
| 413 var copyCount = 0; | |
| 414 importTask.addObserver(function(updateType) { | |
| 415 if (updateType === | |
| 416 importer.MediaImportHandler.ImportTask.UpdateType.ENTRY_CHANGED) { | |
| 417 copyCount++; | |
| 418 if (copyCount === EXPECTED_COPY_COUNT) { | |
| 419 duplicateFinderFactory.instances[0].returnValue = true; | |
| 420 } | |
| 421 } | |
| 422 }); | |
| 423 | |
| 424 reportPromise( | |
| 425 whenImportDone.then( | |
| 426 function() { | |
| 427 var copiedEntries = destinationFileSystem.root.getAllChildren(); | |
| 428 assertEquals(EXPECTED_COPY_COUNT, copiedEntries.length); | |
| 429 }), | |
| 430 callback); | |
| 431 | |
| 432 scanResult.finalize(); | |
| 433 } | |
| 434 | |
| 435 function testImportWithErrors(callback) { | 373 function testImportWithErrors(callback) { |
| 436 | 374 |
| 437 // Quiet the logger just in this test where we expect errors. | 375 // Quiet the logger just in this test where we expect errors. |
| 438 // Elsewhere, it's better for errors to be seen by test authors. | 376 // Elsewhere, it's better for errors to be seen by test authors. |
| 439 importer.setupTestLogger().quiet(); | 377 importer.setupTestLogger().quiet(); |
| 440 | 378 |
| 441 var media = setupFileSystem([ | 379 var media = setupFileSystem([ |
| 442 '/DCIM/photos0/IMG00001.jpg', | 380 '/DCIM/photos0/IMG00001.jpg', |
| 443 '/DCIM/photos0/IMG00002.jpg', | 381 '/DCIM/photos0/IMG00002.jpg', |
| 444 '/DCIM/photos0/IMG00003.jpg', | 382 '/DCIM/photos0/IMG00003.jpg', |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 575 }); | 513 }); |
| 576 source.copyTo( | 514 source.copyTo( |
| 577 parent, | 515 parent, |
| 578 newName, | 516 newName, |
| 579 function(newEntry) { | 517 function(newEntry) { |
| 580 this.entryChangedCallback_(source.toURL(), parent); | 518 this.entryChangedCallback_(source.toURL(), parent); |
| 581 this.successCallback_(newEntry); | 519 this.successCallback_(newEntry); |
| 582 }.bind(this), | 520 }.bind(this), |
| 583 this.errorCallback_.bind(this)); | 521 this.errorCallback_.bind(this)); |
| 584 }; | 522 }; |
| OLD | NEW |