summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhirono <hirono@chromium.org>2015-02-25 01:41:54 -0800
committerCommit bot <commit-bot@chromium.org>2015-02-25 09:43:11 +0000
commitd08dbefe19c25b332e3525fe59278e9ec4ab80de (patch)
treeaa9e05171e462818e80076013f1b8a32ddb33c54
parent07b6d8b077f5a5e09b1106c7aa6d916e5d4f9e63 (diff)
downloadchromium_src-d08dbefe19c25b332e3525fe59278e9ec4ab80de.zip
chromium_src-d08dbefe19c25b332e3525fe59278e9ec4ab80de.tar.gz
chromium_src-d08dbefe19c25b332e3525fe59278e9ec4ab80de.tar.bz2
Files.app: Add new metadata model to Gallery.app.
The CL just adds new metadata model as a member varaiables of gallery models. The following CL replaces existing metadata model with the new model. BUG=410766 TEST=None Review URL: https://codereview.chromium.org/944163004 Cr-Commit-Position: refs/heads/master@{#318005}
-rw-r--r--ui/file_manager/file_manager/foreground/js/metadata/content_metadata_provider.js2
-rw-r--r--ui/file_manager/file_manager/foreground/js/metadata/file_system_metadata.js6
-rw-r--r--ui/file_manager/gallery/gallery.html11
-rw-r--r--ui/file_manager/gallery/js/compiled_resources.gyp10
-rw-r--r--ui/file_manager/gallery/js/gallery.js11
-rw-r--r--ui/file_manager/gallery/js/gallery_data_model.js17
-rw-r--r--ui/file_manager/gallery/js/gallery_data_model_unittest.js5
-rw-r--r--ui/file_manager/gallery/js/gallery_item.js12
-rw-r--r--ui/file_manager/gallery/js/gallery_scripts.js14
9 files changed, 74 insertions, 14 deletions
diff --git a/ui/file_manager/file_manager/foreground/js/metadata/content_metadata_provider.js b/ui/file_manager/file_manager/foreground/js/metadata/content_metadata_provider.js
index da5661d..54ba571 100644
--- a/ui/file_manager/file_manager/foreground/js/metadata/content_metadata_provider.js
+++ b/ui/file_manager/file_manager/foreground/js/metadata/content_metadata_provider.js
@@ -65,7 +65,7 @@ ContentMetadataProvider.PROPERTY_NAMES = [
/**
* Path of a worker script.
- * @const {string}
+ * @public {string}
*/
ContentMetadataProvider.WORKER_SCRIPT =
'chrome-extension://hhaomjibdihmijegdhdafkllkbggdgoj/' +
diff --git a/ui/file_manager/file_manager/foreground/js/metadata/file_system_metadata.js b/ui/file_manager/file_manager/foreground/js/metadata/file_system_metadata.js
index ec3e05a..d5deafc 100644
--- a/ui/file_manager/file_manager/foreground/js/metadata/file_system_metadata.js
+++ b/ui/file_manager/file_manager/foreground/js/metadata/file_system_metadata.js
@@ -7,7 +7,7 @@
* @param {!FileSystemMetadataProvider} fileSystemMetadataProvider
* @param {!ExternalMetadataProvider} externalMetadataProvider
* @param {!ContentMetadataProvider} contentMetadataProvider
- * @param {!VolumeManagerWrapper} volumeManager
+ * @param {!VolumeManagerCommon.VolumeInfoProvider} volumeManager
* @constructor
* @struct
*/
@@ -42,7 +42,7 @@ function FileSystemMetadata(
this.contentMetadataProvider_ = contentMetadataProvider;
/**
- * @private {!VolumeManagerWrapper}
+ * @private {!VolumeManagerCommon.VolumeInfoProvider}
* @const
*/
this.volumeManager_ = volumeManager;
@@ -50,7 +50,7 @@ function FileSystemMetadata(
/**
* @param {!MetadataProviderCache} cache
- * @param {!VolumeManagerWrapper} volumeManager
+ * @param {!VolumeManagerCommon.VolumeInfoProvider} volumeManager
* @return {!FileSystemMetadata}
*/
FileSystemMetadata.create = function(cache, volumeManager) {
diff --git a/ui/file_manager/gallery/gallery.html b/ui/file_manager/gallery/gallery.html
index a63759c..00f049b 100644
--- a/ui/file_manager/gallery/gallery.html
+++ b/ui/file_manager/gallery/gallery.html
@@ -45,11 +45,22 @@
<script src="chrome://resources/js/cr/ui/list.js"></script>
<script src="chrome://resources/js/cr/ui/grid.js"></script>
+ <!-- Base classes. ->
+ <script src="../file_manager/foreground/js/metadata/metadata_cache_set.js"></script>
+ <script src="../file_manager/foreground/js/metadata/new_metadata_provider.js"></script>
+
<script src="../file_manager/common/js/async_util.js"></script>
<script src="../file_manager/common/js/file_type.js"></script>
<script src="../file_manager/common/js/volume_manager_common.js"></script>
+ <script src="../file_manager/foreground/js/metadata/content_metadata_provider.js"></script>
+ <script src="../file_manager/foreground/js/metadata/external_metadata_provider.js"></script>
+ <script src="../file_manager/foreground/js/metadata/file_system_metadata.js"></script>
+ <script src="../file_manager/foreground/js/metadata/file_system_metadata_provider.js"></script>
<script src="../file_manager/foreground/js/metadata/metadata_cache.js"></script>
+ <script src="../file_manager/foreground/js/metadata/metadata_cache_item.js"></script>
+ <script src="../file_manager/foreground/js/metadata/metadata_item.js"></script>
+ <script src="../file_manager/foreground/js/metadata/thumbnail_model.js"></script>
<script src="../file_manager/foreground/js/metadata/exif_constants.js"></script>
<script src="../file_manager/foreground/js/mouse_inactivity_watcher.js"></script>
<script src="../file_manager/foreground/js/share_client.js"></script>
diff --git a/ui/file_manager/gallery/js/compiled_resources.gyp b/ui/file_manager/gallery/js/compiled_resources.gyp
index 59cce40..ad5166f 100644
--- a/ui/file_manager/gallery/js/compiled_resources.gyp
+++ b/ui/file_manager/gallery/js/compiled_resources.gyp
@@ -66,8 +66,16 @@
'../../file_manager/common/js/metrics_base.js',
'../../file_manager/common/js/metrics.js',
'../../file_manager/foreground/js/metrics_start.js',
- '../../file_manager/foreground/js/metadata/metadata_cache.js',
+ '../../file_manager/foreground/js/metadata/content_metadata_provider.js',
'../../file_manager/foreground/js/metadata/exif_constants.js',
+ '../../file_manager/foreground/js/metadata/external_metadata_provider.js',
+ '../../file_manager/foreground/js/metadata/file_system_metadata.js',
+ '../../file_manager/foreground/js/metadata/file_system_metadata_provider.js',
+ '../../file_manager/foreground/js/metadata/metadata_cache.js',
+ '../../file_manager/foreground/js/metadata/metadata_cache_item.js',
+ '../../file_manager/foreground/js/metadata/metadata_cache_set.js',
+ '../../file_manager/foreground/js/metadata/metadata_item.js',
+ '../../file_manager/foreground/js/metadata/new_metadata_provider.js',
'../../file_manager/foreground/js/mouse_inactivity_watcher.js',
'../../file_manager/foreground/js/share_client.js',
'../../file_manager/foreground/js/thumbnail_loader.js',
diff --git a/ui/file_manager/gallery/js/gallery.js b/ui/file_manager/gallery/js/gallery.js
index 07891d4..0581168 100644
--- a/ui/file_manager/gallery/js/gallery.js
+++ b/ui/file_manager/gallery/js/gallery.js
@@ -7,6 +7,7 @@
* @type {string}
*/
ContentProvider.WORKER_SCRIPT = '/js/metadata_worker.js';
+ContentMetadataProvider.WORKER_SCRIPT = '/js/metadata_worker.js';
/**
* Gallery for viewing and editing image files.
@@ -51,12 +52,19 @@ function Gallery(volumeManager) {
this.document_ = document;
this.metadataCache_ = this.context_.metadataCache;
this.volumeManager_ = volumeManager;
+ /**
+ * @private {!FileSystemMetadata}
+ * @const
+ */
+ this.fileSystemMetadata_ = FileSystemMetadata.create(
+ new MetadataProviderCache(), volumeManager);
this.selectedEntry_ = null;
this.metadataCacheObserverId_ = null;
this.onExternallyUnmountedBound_ = this.onExternallyUnmounted_.bind(this);
this.dataModel_ = new GalleryDataModel(
- this.context_.metadataCache);
+ this.context_.metadataCache,
+ this.fileSystemMetadata_);
var downloadVolumeInfo = this.volumeManager_.getCurrentProfileVolumeInfo(
VolumeManagerCommon.VolumeType.DOWNLOADS);
downloadVolumeInfo.resolveDisplayRoot().then(function(entry) {
@@ -371,6 +379,7 @@ Gallery.prototype.loadInternal_ = function(entries, selectedEntries) {
locationInfo,
clonedMetadata,
self.metadataCache_,
+ self.fileSystemMetadata_,
/* original */ true));
});
self.dataModel_.push.apply(self.dataModel_, items);
diff --git a/ui/file_manager/gallery/js/gallery_data_model.js b/ui/file_manager/gallery/js/gallery_data_model.js
index 45afe8d..5b80f77 100644
--- a/ui/file_manager/gallery/js/gallery_data_model.js
+++ b/ui/file_manager/gallery/js/gallery_data_model.js
@@ -6,24 +6,32 @@
* Data model for gallery.
*
* @param {!MetadataCache} metadataCache Metadata cache.
+ * @param {!FileSystemMetadata} fileSystemMetadata
* @param {!EntryListWatcher=} opt_watcher Entry list watcher.
* @constructor
* @extends {cr.ui.ArrayDataModel}
*/
-function GalleryDataModel(metadataCache, opt_watcher) {
+function GalleryDataModel(metadataCache, fileSystemMetadata, opt_watcher) {
cr.ui.ArrayDataModel.call(this, []);
/**
* Metadata cache.
- * @type {!MetadataCache}
- * @private
+ * @private {!MetadataCache}
+ * @const
*/
this.metadataCache_ = metadataCache;
/**
+ * File system metadata.
+ * @private {!FileSystemMetadata}
+ * @const
+ */
+ this.fileSystemMetadata_ = fileSystemMetadata;
+
+ /**
* Directory where the image is saved if the image is located in a read-only
* volume.
- * @type {DirectoryEntry}
+ * @public {DirectoryEntry}
*/
this.fallbackSaveDirectory = null;
@@ -94,6 +102,7 @@ GalleryDataModel.prototype.saveItem = function(
oldLocationInfo,
oldMetadata,
this.metadataCache_,
+ this.fileSystemMetadata_,
item.isOriginal());
// The item must be added behind the existing item so that it does
// not change the index of the existing item.
diff --git a/ui/file_manager/gallery/js/gallery_data_model_unittest.js b/ui/file_manager/gallery/js/gallery_data_model_unittest.js
index 8a280e4..bad2079 100644
--- a/ui/file_manager/gallery/js/gallery_data_model_unittest.js
+++ b/ui/file_manager/gallery/js/gallery_data_model_unittest.js
@@ -9,7 +9,10 @@ var item;
function setUp() {
var metadataCache = new MockMetadataCache();
- model = new GalleryDataModel(metadataCache, /* Mock EntryListWatcher */{});
+ model = new GalleryDataModel(
+ metadataCache,
+ /* Mock FileSystemMetadata */{},
+ /* Mock EntryListWatcher */{});
fileSystem = new MockFileSystem('volumeId');
item = new Gallery.Item(
new MockEntry(fileSystem, '/test.jpg'),
diff --git a/ui/file_manager/gallery/js/gallery_item.js b/ui/file_manager/gallery/js/gallery_item.js
index 227940a..088da41 100644
--- a/ui/file_manager/gallery/js/gallery_item.js
+++ b/ui/file_manager/gallery/js/gallery_item.js
@@ -9,12 +9,14 @@
* @param {!EntryLocation} locationInfo Entry location information.
* @param {!Object} metadata Metadata for the entry.
* @param {!MetadataCache} metadataCache Metadata cache instance.
+ * @param {!FileSystemMetadata} fileSystemMetadata File system metadata.
* @param {boolean} original Whether the entry is original or edited.
* @constructor
* @struct
*/
Gallery.Item = function(
- entry, locationInfo, metadata, metadataCache, original) {
+ entry, locationInfo, metadata, metadataCache, fileSystemMetadata,
+ original) {
/**
* @type {!FileEntry}
* @private
@@ -40,6 +42,13 @@ Gallery.Item = function(
*/
this.metadataCache_ = metadataCache;
+ /**
+ * @type {!FileSystemMetadata}
+ * @private
+ * @const
+ */
+ this.fileSystemMetadata_ = fileSystemMetadata;
+
// TODO(yawano): Change this.contentImage and this.screenImage to private
// fields and provide utility methods for them (e.g. revokeFullImageCache).
/**
@@ -262,6 +271,7 @@ Gallery.Item.prototype.saveToFile = function(
opt_callback(false);
}
}.bind(this));
+ this.fileSystemMetadata_.notifyEntriesChanged([this.entry_]);
}.bind(this);
var onError = function(error) {
diff --git a/ui/file_manager/gallery/js/gallery_scripts.js b/ui/file_manager/gallery/js/gallery_scripts.js
index 2c0c885..34d2b87 100644
--- a/ui/file_manager/gallery/js/gallery_scripts.js
+++ b/ui/file_manager/gallery/js/gallery_scripts.js
@@ -37,17 +37,27 @@
(function() {
// 'strict mode' is invoked for this scope.
+// Base classes.
+//<include src="../../file_manager/foreground/js/metadata/metadata_cache_set.js">
+//<include src="../../file_manager/foreground/js/metadata/new_metadata_provider.js">
+
//<include src="../../file_manager/common/js/async_util.js">
//<include src="../../file_manager/common/js/file_type.js">
//<include src="../../file_manager/common/js/util.js">
//<include src="../../file_manager/common/js/volume_manager_common.js">
+//<include src="../../file_manager/foreground/js/metadata/content_metadata_provider.js">
+//<include src="../../file_manager/foreground/js/metadata/external_metadata_provider.js">
+//<include src="../../file_manager/foreground/js/metadata/file_system_metadata.js">
+//<include src="../../file_manager/foreground/js/metadata/file_system_metadata_provider.js">
//<include src="../../file_manager/foreground/js/metadata/metadata_cache.js">
+//<include src="../../file_manager/foreground/js/metadata/metadata_cache_item.js">
+//<include src="../../file_manager/foreground/js/metadata/metadata_item.js">
+//<include src="../../file_manager/foreground/js/metadata/thumbnail_model.js">
//<include src="../../file_manager/foreground/js/metadata/exif_constants.js">
//<include src="../../file_manager/foreground/js/mouse_inactivity_watcher.js">
//<include src="../../file_manager/foreground/js/share_client.js">
//<include src="../../file_manager/foreground/js/thumbnail_loader.js">
-//<include
-// src="../../file_manager/foreground/js/ui/file_manager_dialog_base.js">
+//<include src="../../file_manager/foreground/js/ui/file_manager_dialog_base.js">
//<include src="../../file_manager/foreground/js/ui/share_dialog.js">
//<include src="../../file_manager/foreground/js/volume_manager_wrapper.js">