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

Side by Side Diff: ui/file_manager/gallery/js/gallery.js

Issue 420743002: Gallery: Store image caches in Gallery items. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 4 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 | Annotate | Revision Log
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 'use strict'; 5 'use strict';
6 6
7 /** 7 /**
8 * Called from the main frame when unloading. 8 * Called from the main frame when unloading.
9 * @param {boolean=} opt_exiting True if the app is exiting. 9 * @param {boolean=} opt_exiting True if the app is exiting.
10 */ 10 */
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 // correctly. 127 // correctly.
128 this.splice(this.indexOf(item) + 1, 0, anotherItem); 128 this.splice(this.indexOf(item) + 1, 0, anotherItem);
129 } 129 }
130 130
131 fulfill(); 131 fulfill();
132 }.bind(this)); 132 }.bind(this));
133 }.bind(this)); 133 }.bind(this));
134 }; 134 };
135 135
136 /** 136 /**
137 * Evicts image caches in the items.
138 * @param {Gallery.Item} currentSelectedItem Current selected item.
139 */
140 GalleryDataModel.prototype.evictCache = function(currentSelectedItem) {
141 // Updates the last accessed date.
142 if (currentSelectedItem)
143 currentSelectedItem.lastAccessed = Date.now();
144
145 // Sort the item by the last accessed date.
146 var sorted = this.slice().sort(function(a, b) {
147 return b.lastAccessed - a.lastAccessed;
148 });
149
150 // Evict caches.
151 var contentCacheCount = 2;
mtomasz 2014/07/28 05:13:01 I think the code is too complicated. contentCacheC
hirono 2014/07/28 06:50:32 Done.
152 var screenCacheCount = 5;
153 for (var i = 0; i < sorted.length; i++) {
154 if (sorted[i].contentImage) {
155 if (contentCacheCount-- <= 0) {
156 if (sorted[i].contentImage.parentNode) {
157 console.error('The content image has a parent node.');
158 } else {
159 sorted[i].contentImage.width = 0;
mtomasz 2014/07/28 05:13:01 Please add a comment, that this is needed to force
hirono 2014/07/28 06:50:32 Done.
160 sorted[i].contentImage.height = 0;
161 sorted[i].contentImage = null;
162 }
163 }
164 }
165 if (sorted[i].screenImage) {
166 if (screenCacheCount-- <= 0) {
167 if (sorted[i].screenImage.parentNode) {
168 console.error('The screen image has a parent node.');
169 } else {
170 sorted[i].screenImage.width = 0;
171 sorted[i].screenImage.height = 0;
172 sorted[i].screenImage = null;
173 }
174 }
175 }
176 }
177 };
178
179 /**
137 * Gallery for viewing and editing image files. 180 * Gallery for viewing and editing image files.
138 * 181 *
139 * @param {!VolumeManager} volumeManager The VolumeManager instance of the 182 * @param {!VolumeManager} volumeManager The VolumeManager instance of the
140 * system. 183 * system.
141 * @constructor 184 * @constructor
142 */ 185 */
143 function Gallery(volumeManager) { 186 function Gallery(volumeManager) {
144 this.context_ = { 187 this.context_ = {
145 appWindow: chrome.app.window.current(), 188 appWindow: chrome.app.window.current(),
146 onClose: function() { close(); }, 189 onClose: function() { close(); },
(...skipping 492 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 return items[0]; 682 return items[0];
640 }; 683 };
641 684
642 /** 685 /**
643 * Selection change event handler. 686 * Selection change event handler.
644 * @private 687 * @private
645 */ 688 */
646 Gallery.prototype.onSelection_ = function() { 689 Gallery.prototype.onSelection_ = function() {
647 this.updateSelectionAndState_(); 690 this.updateSelectionAndState_();
648 this.updateShareMenu_(); 691 this.updateShareMenu_();
692 this.dataModel_.evictCache(this.getSelectedItems()[0]);
649 }; 693 };
650 694
651 /** 695 /**
652 * Data model splice event handler. 696 * Data model splice event handler.
653 * @private 697 * @private
654 */ 698 */
655 Gallery.prototype.onSplice_ = function() { 699 Gallery.prototype.onSplice_ = function() {
656 this.selectionModel_.adjustLength(this.dataModel_.length); 700 this.selectionModel_.adjustLength(this.dataModel_.length);
657 }; 701 };
658 702
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after
969 window.loadTimeData.data = backgroundComponents.stringData; 1013 window.loadTimeData.data = backgroundComponents.stringData;
970 gallery = new Gallery(backgroundComponents.volumeManager); 1014 gallery = new Gallery(backgroundComponents.volumeManager);
971 }; 1015 };
972 1016
973 /** 1017 /**
974 * Loads entries. 1018 * Loads entries.
975 */ 1019 */
976 window.loadEntries = function(entries, selectedEntries) { 1020 window.loadEntries = function(entries, selectedEntries) {
977 gallery.load(entries, selectedEntries); 1021 gallery.load(entries, selectedEntries);
978 }; 1022 };
OLDNEW
« no previous file with comments | « no previous file | ui/file_manager/gallery/js/gallery_item.js » ('j') | ui/file_manager/gallery/js/gallery_item.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698