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

Unified Diff: ui/file_manager/gallery/js/gallery.js

Issue 838993002: Gallery: Split GalleryDataModel from gallery.js. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix the year. Created 5 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/file_manager/gallery/js/compiled_resources.gyp ('k') | ui/file_manager/gallery/js/gallery_data_model.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/file_manager/gallery/js/gallery.js
diff --git a/ui/file_manager/gallery/js/gallery.js b/ui/file_manager/gallery/js/gallery.js
index b0a12ceb538121c208091ee9739700aaaaf1e488..899b7fffc553302fe1b5994297a379cc0d4280a1 100644
--- a/ui/file_manager/gallery/js/gallery.js
+++ b/ui/file_manager/gallery/js/gallery.js
@@ -9,150 +9,6 @@
ContentProvider.WORKER_SCRIPT = '/js/metadata_worker.js';
/**
- * Data model for gallery.
- *
- * @param {!MetadataCache} metadataCache Metadata cache.
- * @constructor
- * @extends {cr.ui.ArrayDataModel}
- */
-function GalleryDataModel(metadataCache) {
- cr.ui.ArrayDataModel.call(this, []);
-
- /**
- * Metadata cache.
- * @type {!MetadataCache}
- * @private
- */
- this.metadataCache_ = metadataCache;
-
- /**
- * Directory where the image is saved if the image is located in a read-only
- * volume.
- * @type {DirectoryEntry}
- */
- this.fallbackSaveDirectory = null;
-
- // Start to watch file system entries.
- var watcher = new EntryListWatcher(this);
- watcher.getEntry = function(item) { return item.getEntry(); };
-}
-
-/**
- * Maximum number of full size image cache.
- * @type {number}
- * @const
- * @private
- */
-GalleryDataModel.MAX_FULL_IMAGE_CACHE_ = 3;
-
-/**
- * Maximum number of screen size image cache.
- * @type {number}
- * @const
- * @private
- */
-GalleryDataModel.MAX_SCREEN_IMAGE_CACHE_ = 5;
-
-GalleryDataModel.prototype = {
- __proto__: cr.ui.ArrayDataModel.prototype
-};
-
-/**
- * Saves new image.
- *
- * @param {!VolumeManager} volumeManager Volume manager instance.
- * @param {!Gallery.Item} item Original gallery item.
- * @param {!HTMLCanvasElement} canvas Canvas containing new image.
- * @param {boolean} overwrite Whether to overwrite the image to the item or not.
- * @return {!Promise} Promise to be fulfilled with when the operation completes.
- */
-GalleryDataModel.prototype.saveItem = function(
- volumeManager, item, canvas, overwrite) {
- var oldEntry = item.getEntry();
- var oldMetadata = item.getMetadata();
- var oldLocationInfo = item.getLocationInfo();
- return new Promise(function(fulfill, reject) {
- item.saveToFile(
- volumeManager,
- this.fallbackSaveDirectory,
- overwrite,
- canvas,
- function(success) {
- if (!success) {
- reject('Failed to save the image.');
- return;
- }
-
- // Current entry is updated.
- // Dispatch an event.
- var event = new Event('content');
- event.item = item;
- event.oldEntry = oldEntry;
- event.metadata = item.getMetadata();
- this.dispatchEvent(event);
-
- if (!util.isSameEntry(oldEntry, item.getEntry())) {
- // New entry is added and the item now tracks it.
- // Add another item for the old entry.
- var anotherItem = new Gallery.Item(
- oldEntry,
- oldLocationInfo,
- oldMetadata,
- this.metadataCache_,
- item.isOriginal());
- // The item must be added behind the existing item so that it does
- // not change the index of the existing item.
- // TODO(hirono): Update the item index of the selection model
- // correctly.
- this.splice(this.indexOf(item) + 1, 0, anotherItem);
- }
-
- fulfill();
- }.bind(this));
- }.bind(this));
-};
-
-/**
- * Evicts image caches in the items.
- */
-GalleryDataModel.prototype.evictCache = function() {
- // Sort the item by the last accessed date.
- var sorted = this.slice().sort(function(a, b) {
- return b.getLastAccessedDate() - a.getLastAccessedDate();
- });
-
- // Evict caches.
- var contentCacheCount = 0;
- var screenCacheCount = 0;
- for (var i = 0; i < sorted.length; i++) {
- if (sorted[i].contentImage) {
- if (++contentCacheCount > GalleryDataModel.MAX_FULL_IMAGE_CACHE_) {
- if (sorted[i].contentImage.parentNode) {
- console.error('The content image has a parent node.');
- } else {
- // Force to free the buffer of the canvas by assigning zero size.
- sorted[i].contentImage.width = 0;
- sorted[i].contentImage.height = 0;
- sorted[i].contentImage = null;
- }
- }
- }
- if (sorted[i].screenImage) {
- if (++screenCacheCount > GalleryDataModel.MAX_SCREEN_IMAGE_CACHE_) {
- if (sorted[i].screenImage.parentNode) {
- console.error('The screen image has a parent node.');
- } else {
- // Force to free the buffer of the canvas by assigning zero size.
- sorted[i].screenImage.width = 0;
- sorted[i].screenImage.height = 0;
- sorted[i].screenImage = null;
- }
- }
- }
- }
-};
-
-/**
* Gallery for viewing and editing image files.
*
* @param {!VolumeManager} volumeManager The VolumeManager instance of the
« no previous file with comments | « ui/file_manager/gallery/js/compiled_resources.gyp ('k') | ui/file_manager/gallery/js/gallery_data_model.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698