Chromium Code Reviews| 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 /** | 5 /** |
| 6 * Overrided metadata worker's path. | 6 * Overrided metadata worker's path. |
| 7 * @type {string} | 7 * @type {string} |
| 8 */ | 8 */ |
| 9 ContentProvider.WORKER_SCRIPT = '/js/metadata_worker.js'; | 9 ContentProvider.WORKER_SCRIPT = '/js/metadata_worker.js'; |
| 10 ContentMetadataProvider.WORKER_SCRIPT = '/js/metadata_worker.js'; | 10 ContentMetadataProvider.WORKER_SCRIPT = '/js/metadata_worker.js'; |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 50 }; | 50 }; |
| 51 this.container_ = queryRequiredElement(document, '.gallery'); | 51 this.container_ = queryRequiredElement(document, '.gallery'); |
| 52 this.document_ = document; | 52 this.document_ = document; |
| 53 this.metadataCache_ = this.context_.metadataCache; | 53 this.metadataCache_ = this.context_.metadataCache; |
| 54 this.volumeManager_ = volumeManager; | 54 this.volumeManager_ = volumeManager; |
| 55 /** | 55 /** |
| 56 * @private {!MetadataModel} | 56 * @private {!MetadataModel} |
| 57 * @const | 57 * @const |
| 58 */ | 58 */ |
| 59 this.metadataModel_ = MetadataModel.create(volumeManager); | 59 this.metadataModel_ = MetadataModel.create(volumeManager); |
| 60 /** | |
| 61 * @private {!ThumbnailModel} | |
| 62 * @const | |
| 63 */ | |
| 64 this.thumbnailModel_ = new ThumbnailModel(this.metadataModel_); | |
| 60 this.selectedEntry_ = null; | 65 this.selectedEntry_ = null; |
| 61 this.metadataCacheObserverId_ = null; | 66 this.metadataCacheObserverId_ = null; |
| 62 this.onExternallyUnmountedBound_ = this.onExternallyUnmounted_.bind(this); | 67 this.onExternallyUnmountedBound_ = this.onExternallyUnmounted_.bind(this); |
| 63 this.initialized_ = false; | 68 this.initialized_ = false; |
| 64 | 69 |
| 65 this.dataModel_ = new GalleryDataModel( | 70 this.dataModel_ = new GalleryDataModel( |
| 66 this.context_.metadataCache, | 71 this.context_.metadataCache, |
| 67 this.metadataModel_); | 72 this.metadataModel_); |
| 68 var downloadVolumeInfo = this.volumeManager_.getCurrentProfileVolumeInfo( | 73 var downloadVolumeInfo = this.volumeManager_.getCurrentProfileVolumeInfo( |
| 69 VolumeManagerCommon.VolumeType.DOWNLOADS); | 74 VolumeManagerCommon.VolumeType.DOWNLOADS); |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 156 this.volumeManager_, | 161 this.volumeManager_, |
| 157 this.toggleMode_.bind(this, undefined)); | 162 this.toggleMode_.bind(this, undefined)); |
| 158 | 163 |
| 159 this.slideMode_ = new SlideMode(this.container_, | 164 this.slideMode_ = new SlideMode(this.container_, |
| 160 content, | 165 content, |
| 161 this.toolbar_, | 166 this.toolbar_, |
| 162 this.prompt_, | 167 this.prompt_, |
| 163 this.errorBanner_, | 168 this.errorBanner_, |
| 164 this.dataModel_, | 169 this.dataModel_, |
| 165 this.selectionModel_, | 170 this.selectionModel_, |
| 171 this.metadataModel_, | |
| 172 this.thumbnailModel_, | |
| 166 this.context_, | 173 this.context_, |
| 167 this.volumeManager_, | 174 this.volumeManager_, |
| 168 this.toggleMode_.bind(this), | 175 this.toggleMode_.bind(this), |
| 169 str); | 176 str); |
| 170 | 177 |
| 171 this.slideMode_.addEventListener('image-displayed', function() { | 178 this.slideMode_.addEventListener('image-displayed', function() { |
| 172 cr.dispatchSimpleEvent(this, 'image-displayed'); | 179 cr.dispatchSimpleEvent(this, 'image-displayed'); |
| 173 }.bind(this)); | 180 }.bind(this)); |
| 174 this.slideMode_.addEventListener('image-saved', function() { | 181 this.slideMode_.addEventListener('image-saved', function() { |
| 175 cr.dispatchSimpleEvent(this, 'image-saved'); | 182 cr.dispatchSimpleEvent(this, 'image-saved'); |
| (...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 303 * Loads the content. | 310 * Loads the content. |
| 304 * | 311 * |
| 305 * @param {!Array.<!Entry>} entries Array of entries. | 312 * @param {!Array.<!Entry>} entries Array of entries. |
| 306 * @param {!Array.<!Entry>} selectedEntries Array of selected entries. | 313 * @param {!Array.<!Entry>} selectedEntries Array of selected entries. |
| 307 * @private | 314 * @private |
| 308 */ | 315 */ |
| 309 Gallery.prototype.loadInternal_ = function(entries, selectedEntries) { | 316 Gallery.prototype.loadInternal_ = function(entries, selectedEntries) { |
| 310 // Obtains max chank size. | 317 // Obtains max chank size. |
| 311 var maxChunkSize = 20; | 318 var maxChunkSize = 20; |
| 312 var volumeInfo = this.volumeManager_.getVolumeInfo(entries[0]); | 319 var volumeInfo = this.volumeManager_.getVolumeInfo(entries[0]); |
| 313 if (volumeInfo && | 320 if (volumeInfo) { |
| 314 volumeInfo.volumeType === VolumeManagerCommon.VolumeType.MTP) { | 321 if (volumeInfo.volumeType === VolumeManagerCommon.VolumeType.MTP) |
| 315 maxChunkSize = 1; | 322 maxChunkSize = 1; |
| 323 if (volumeInfo.isReadOnly) | |
| 324 this.context_.readonlyDirName = volumeInfo.label; | |
| 316 } | 325 } |
| 317 if (volumeInfo.isReadOnly) | |
| 318 this.context_.readonlyDirName = volumeInfo.label; | |
| 319 | 326 |
| 320 // Make loading list. | 327 // Make loading list. |
| 321 var entrySet = {}; | 328 var entrySet = {}; |
| 322 for (var i = 0; i < entries.length; i++) { | 329 for (var i = 0; i < entries.length; i++) { |
| 323 var entry = entries[i]; | 330 var entry = entries[i]; |
| 324 entrySet[entry.toURL()] = { | 331 entrySet[entry.toURL()] = { |
| 325 entry: entry, | 332 entry: entry, |
| 326 selected: false, | 333 selected: false, |
| 327 index: i | 334 index: i |
| 328 }; | 335 }; |
| (...skipping 25 matching lines...) Expand all Loading... | |
| 354 } | 361 } |
| 355 | 362 |
| 356 // Load entries. | 363 // Load entries. |
| 357 // Use the self variable capture-by-closure because it is faster than bind. | 364 // Use the self variable capture-by-closure because it is faster than bind. |
| 358 var self = this; | 365 var self = this; |
| 359 var loadChunk = function(firstChunk) { | 366 var loadChunk = function(firstChunk) { |
| 360 // Extract chunk. | 367 // Extract chunk. |
| 361 var chunk = loadingList.splice(0, maxChunkSize); | 368 var chunk = loadingList.splice(0, maxChunkSize); |
| 362 if (!chunk.length) | 369 if (!chunk.length) |
| 363 return; | 370 return; |
| 364 | 371 var entries = chunk.map(function(chunkItem) { |
| 365 return new Promise(function(fulfill) { | 372 return chunkItem.entry; |
| 373 }); | |
| 374 var oldMetadataPromise = new Promise(function(fulfill) { | |
| 366 // Obtains metadata for chunk. | 375 // Obtains metadata for chunk. |
| 367 var entries = chunk.map(function(chunkItem) { | |
| 368 return chunkItem.entry; | |
| 369 }); | |
| 370 self.metadataCache_.get(entries, Gallery.METADATA_TYPE, fulfill); | 376 self.metadataCache_.get(entries, Gallery.METADATA_TYPE, fulfill); |
| 371 }).then(function(metadataList) { | 377 }).then(function(metadataList) { |
| 372 if (chunk.length !== metadataList.length) | 378 if (chunk.length !== metadataList.length) |
| 373 return Promise.reject('Failed to load metadata.'); | 379 return Promise.reject('Failed to load metadata.'); |
| 374 | 380 return metadataList; |
| 381 }); | |
| 382 var metadataPromise = self.metadataModel_.get( | |
| 383 entries, ['imageWidth', 'imageHeight', 'size']); | |
| 384 return Promise.all([oldMetadataPromise, metadataPromise]).then( | |
| 385 function(metadataList) { | |
|
yawano
2015/03/03 04:14:50
very small nit: We uses metadataList in this funct
hirono
2015/03/04 05:07:04
Done.
| |
| 375 // Remove all the previous items if it's the first chunk. | 386 // Remove all the previous items if it's the first chunk. |
| 376 // Do it here because prevent a flicker between removing all the items | 387 // Do it here because prevent a flicker between removing all the items |
| 377 // and adding new ones. | 388 // and adding new ones. |
| 378 if (firstChunk) { | 389 if (firstChunk) { |
| 379 self.dataModel_.splice(0, self.dataModel_.length); | 390 self.dataModel_.splice(0, self.dataModel_.length); |
| 380 self.updateThumbnails_(); // Remove the caches. | 391 self.updateThumbnails_(); // Remove the caches. |
| 381 } | 392 } |
| 382 | 393 |
| 383 // Add items to the model. | 394 // Add items to the model. |
| 384 var items = []; | 395 var items = []; |
| 385 chunk.forEach(function(chunkItem, index) { | 396 chunk.forEach(function(chunkItem, index) { |
| 386 var locationInfo = self.volumeManager_.getLocationInfo(chunkItem.entry); | 397 var locationInfo = self.volumeManager_.getLocationInfo(chunkItem.entry); |
| 387 if (!locationInfo) // Skip the item, since gone. | 398 if (!locationInfo) // Skip the item, since gone. |
| 388 return; | 399 return; |
| 389 var clonedMetadata = MetadataCache.cloneMetadata(metadataList[index]); | 400 var clonedMetadata = |
| 401 MetadataCache.cloneMetadata(metadataList[0][index]); | |
| 390 items.push(new Gallery.Item( | 402 items.push(new Gallery.Item( |
| 391 chunkItem.entry, | 403 chunkItem.entry, |
| 392 locationInfo, | 404 locationInfo, |
| 393 clonedMetadata, | 405 clonedMetadata, |
| 406 metadataList[1][index], | |
| 394 self.metadataCache_, | 407 self.metadataCache_, |
| 395 self.metadataModel_, | 408 self.metadataModel_, |
| 396 /* original */ true)); | 409 /* original */ true)); |
| 397 }); | 410 }); |
| 398 self.dataModel_.push.apply(self.dataModel_, items); | 411 self.dataModel_.push.apply(self.dataModel_, items); |
| 399 | 412 |
| 400 // Apply the selection. | 413 // Apply the selection. |
| 401 var selectionUpdated = false; | 414 var selectionUpdated = false; |
| 402 for (var i = 0; i < chunk.length; i++) { | 415 for (var i = 0; i < chunk.length; i++) { |
| 403 if (!chunk[i].selected) | 416 if (!chunk[i].selected) |
| (...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 978 initializePromise.then(reload); | 991 initializePromise.then(reload); |
| 979 | 992 |
| 980 /** | 993 /** |
| 981 * Enteres the debug mode. | 994 * Enteres the debug mode. |
| 982 */ | 995 */ |
| 983 window.debugMe = function() { | 996 window.debugMe = function() { |
| 984 initializePromise.then(function() { | 997 initializePromise.then(function() { |
| 985 gallery.debugMe(); | 998 gallery.debugMe(); |
| 986 }); | 999 }); |
| 987 }; | 1000 }; |
| OLD | NEW |