Commit b35d45fc authored by Luciano Pacheco's avatar Luciano Pacheco Committed by Commit Bot

Files app: ES6 class metadata_box_controller.js and quick_view_uma.js

Bug: 778674
Change-Id: I4f60e40748696de54ed1925aa397cfdcb218edce
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1760584
Commit-Queue: Noel Gordon <noel@chromium.org>
Auto-Submit: Luciano Pacheco <lucmult@chromium.org>
Reviewed-by: default avatarNoel Gordon <noel@chromium.org>
Cr-Commit-Position: refs/heads/master@{#688472}
parent 9eda4e5a
......@@ -5,15 +5,14 @@
/**
* Controller of metadata box.
* This should be initialized with |init| method.
*
*/
class MetadataBoxController {
/**
* @param{!MetadataModel} metadataModel
* @param{!QuickViewModel} quickViewModel
* @param{!FileMetadataFormatter} fileMetadataFormatter
*
* @constructor
*/
function MetadataBoxController(
metadataModel, quickViewModel, fileMetadataFormatter) {
constructor(metadataModel, quickViewModel, fileMetadataFormatter) {
/**
* @type {!MetadataModel}
* @private
......@@ -61,9 +60,9 @@ function MetadataBoxController(
* @private
*/
this.onDirectorySizeLoaded_ = null;
}
}
/**
/**
* Initialize the controller with quick view which will be lazily loaded.
*
* TODO(oka): store quickViewModel_.metadataBoxActive state to persistent
......@@ -71,7 +70,7 @@ function MetadataBoxController(
*
* @param{!FilesQuickView} quickView
*/
MetadataBoxController.prototype.init = function(quickView) {
init(quickView) {
this.metadataBox_ = quickView.getFilesMetadataBox();
this.quickView_ = quickView;
......@@ -85,39 +84,15 @@ MetadataBoxController.prototype.init = function(quickView) {
'selected-entry-changed', this.updateView_.bind(this));
this.metadataBox_.clear(false);
};
/**
* @const {!Array<string>}
*/
MetadataBoxController.GENERAL_METADATA_NAMES = [
'size',
'modificationTime',
];
/**
* @const {!Array<string>}
*/
MetadataBoxController.EXTRA_METADATA_NAMES = [
'ifd',
'imageHeight',
'imageWidth',
'mediaAlbum',
'mediaArtist',
'mediaDuration',
'mediaGenre',
'mediaTitle',
'mediaTrack',
'mediaYearRecorded',
];
}
/**
/**
* Update the view of metadata box.
* @param {!Event} event
*
* @private
*/
MetadataBoxController.prototype.updateView_ = function(event) {
updateView_(event) {
if (!this.quickView_.metadataBoxActive) {
return;
}
......@@ -145,19 +120,19 @@ MetadataBoxController.prototype.updateView_ = function(event) {
['alternateUrl', 'externalFileUrl', 'hosted']);
this.metadataModel_.get([entry], metadata)
.then(this.onGeneralMetadataLoaded_.bind(this, entry, isSameEntry));
};
}
/**
/**
* Updates the metadata box with general and file-specific metadata.
*
* @param {!Entry} entry
* @param {boolean} isSameEntry if the entry is not changed from the last time.
* @param {boolean} isSameEntry if the entry is not changed from the last
* time.
* @param {!Array<!MetadataItem>} items
*
* @private
*/
MetadataBoxController.prototype.onGeneralMetadataLoaded_ = function(
entry, isSameEntry, items) {
onGeneralMetadataLoaded_(entry, isSameEntry, items) {
const type = FileType.getType(entry).type;
const item = items[0];
......@@ -174,7 +149,8 @@ MetadataBoxController.prototype.onGeneralMetadataLoaded_ = function(
if (!entry.isDirectory) {
const sniffMimeType = (item.externalFileUrl || item.alternateUrl) ?
'contentMimeType' : 'mediaMimeType';
'contentMimeType' :
'mediaMimeType';
this.metadataModel_.get([entry], [sniffMimeType]).then(items => {
this.metadataBox_.mediaMimeType = items[0][sniffMimeType] || '';
this.metadataBox_.metadataRendered('mime');
......@@ -219,9 +195,9 @@ MetadataBoxController.prototype.onGeneralMetadataLoaded_ = function(
this.metadataBox_.metadataRendered('meta');
});
}
};
}
/**
/**
* Updates the metadata box modificationTime.
*
* @param {!Entry} entry
......@@ -229,8 +205,7 @@ MetadataBoxController.prototype.onGeneralMetadataLoaded_ = function(
*
* @private
*/
MetadataBoxController.prototype.updateModificationTime_ = function(
entry, items) {
updateModificationTime_(entry, items) {
const item = items[0];
if (item.modificationTime) {
......@@ -239,9 +214,9 @@ MetadataBoxController.prototype.updateModificationTime_ = function(
} else {
this.metadataBox_.modificationTime = '';
}
};
}
/**
/**
* Set a current directory's size in metadata box.
*
* A loading animation is shown while fetching the directory size. However, it
......@@ -258,8 +233,7 @@ MetadataBoxController.prototype.updateModificationTime_ = function(
*
* @private
*/
MetadataBoxController.prototype.setDirectorySize_ = function(
entry, isSameEntry) {
setDirectorySize_(entry, isSameEntry) {
assert(entry.isDirectory);
if (this.metadataBox_.size === '') {
......@@ -299,8 +273,34 @@ MetadataBoxController.prototype.setDirectorySize_ = function(
size = undefined;
}
this.metadataBox_.size = this.fileMetadataFormatter_.formatSize(size, true);
this.metadataBox_.size =
this.fileMetadataFormatter_.formatSize(size, true);
this.metadataBox_.isSizeLoading = false;
this.metadataBox_.metadataRendered('size');
});
};
}
}
/**
* @const {!Array<string>}
*/
MetadataBoxController.GENERAL_METADATA_NAMES = [
'size',
'modificationTime',
];
/**
* @const {!Array<string>}
*/
MetadataBoxController.EXTRA_METADATA_NAMES = [
'ifd',
'imageHeight',
'imageWidth',
'mediaAlbum',
'mediaArtist',
'mediaDuration',
'mediaGenre',
'mediaTitle',
'mediaTrack',
'mediaYearRecorded',
];
......@@ -4,13 +4,13 @@
/**
* UMA exporter for Quick View.
*
*/
class QuickViewUma {
/**
* @param {!VolumeManager} volumeManager
* @param {!DialogType} dialogType
*
* @constructor
*/
function QuickViewUma(volumeManager, dialogType) {
constructor(volumeManager, dialogType) {
/**
* @type {!VolumeManager}
* @private
......@@ -21,52 +21,9 @@ function QuickViewUma(volumeManager, dialogType) {
* @private
*/
this.dialogType_ = dialogType;
}
/**
* In which way quick view was opened.
* @enum {string}
* @const
*/
QuickViewUma.WayToOpen = {
CONTEXT_MENU: 'contextMenu',
SPACE_KEY: 'spaceKey',
SELECTION_MENU: 'selectionMenu',
};
/**
* The order should be consistnet with the definition in histograms.xml.
*
* @const {!Array<QuickViewUma.WayToOpen>}
* @private
*/
QuickViewUma.WayToOpenValues_ = [
QuickViewUma.WayToOpen.CONTEXT_MENU,
QuickViewUma.WayToOpen.SPACE_KEY,
QuickViewUma.WayToOpen.SELECTION_MENU,
];
/**
* Keep the order of this in sync with FileManagerVolumeType in
* tools/metrics/histograms/histograms.xml.
*
* @type {!Array<VolumeManagerCommon.VolumeType>}
* @const
*/
QuickViewUma.VolumeType = [
VolumeManagerCommon.VolumeType.DRIVE,
VolumeManagerCommon.VolumeType.DOWNLOADS,
VolumeManagerCommon.VolumeType.REMOVABLE,
VolumeManagerCommon.VolumeType.ARCHIVE,
VolumeManagerCommon.VolumeType.PROVIDED,
VolumeManagerCommon.VolumeType.MTP,
VolumeManagerCommon.VolumeType.MEDIA_VIEW,
VolumeManagerCommon.VolumeType.CROSTINI,
VolumeManagerCommon.VolumeType.ANDROID_FILES,
VolumeManagerCommon.VolumeType.DOCUMENTS_PROVIDER,
];
}
/**
/**
* Exports file type metric with the given |name|.
*
* @param {!FileEntry} entry
......@@ -74,7 +31,7 @@ QuickViewUma.VolumeType = [
*
* @private
*/
QuickViewUma.prototype.exportFileType_ = (entry, name) => {
exportFileType_(entry, name) {
let extension = FileType.getExtension(entry).toLowerCase();
if (entry.isDirectory) {
extension = 'directory';
......@@ -84,24 +41,24 @@ QuickViewUma.prototype.exportFileType_ = (entry, name) => {
extension = 'unknown extension';
}
metrics.recordEnum(name, extension, FileTasks.UMA_INDEX_KNOWN_EXTENSIONS);
};
}
/**
/**
* Exports UMA based on the entry shown in Quick View.
*
* @param {!FileEntry} entry
*/
QuickViewUma.prototype.onEntryChanged = function(entry) {
onEntryChanged(entry) {
this.exportFileType_(entry, 'QuickView.FileType');
};
}
/**
/**
* Exports UMA based on the entry selected when Quick View is opened.
*
* @param {!FileEntry} entry
* @param {QuickViewUma.WayToOpen} wayToOpen
*/
QuickViewUma.prototype.onOpened = function(entry, wayToOpen) {
onOpened(entry, wayToOpen) {
this.exportFileType_(entry, 'QuickView.FileTypeOnLaunch');
metrics.recordEnum(
'QuickView.WayToOpen', wayToOpen, QuickViewUma.WayToOpenValues_);
......@@ -123,4 +80,48 @@ QuickViewUma.prototype.onOpened = function(entry, wayToOpen) {
DialogType.SELECT_OPEN_MULTI_FILE,
DialogType.FULL_PAGE,
]);
}
}
/**
* In which way quick view was opened.
* @enum {string}
* @const
*/
QuickViewUma.WayToOpen = {
CONTEXT_MENU: 'contextMenu',
SPACE_KEY: 'spaceKey',
SELECTION_MENU: 'selectionMenu',
};
/**
* The order should be consistnet with the definition in histograms.xml.
*
* @const {!Array<QuickViewUma.WayToOpen>}
* @private
*/
QuickViewUma.WayToOpenValues_ = [
QuickViewUma.WayToOpen.CONTEXT_MENU,
QuickViewUma.WayToOpen.SPACE_KEY,
QuickViewUma.WayToOpen.SELECTION_MENU,
];
/**
* Keep the order of this in sync with FileManagerVolumeType in
* tools/metrics/histograms/histograms.xml.
*
* @type {!Array<VolumeManagerCommon.VolumeType>}
* @const
*/
QuickViewUma.VolumeType = [
VolumeManagerCommon.VolumeType.DRIVE,
VolumeManagerCommon.VolumeType.DOWNLOADS,
VolumeManagerCommon.VolumeType.REMOVABLE,
VolumeManagerCommon.VolumeType.ARCHIVE,
VolumeManagerCommon.VolumeType.PROVIDED,
VolumeManagerCommon.VolumeType.MTP,
VolumeManagerCommon.VolumeType.MEDIA_VIEW,
VolumeManagerCommon.VolumeType.CROSTINI,
VolumeManagerCommon.VolumeType.ANDROID_FILES,
VolumeManagerCommon.VolumeType.DOCUMENTS_PROVIDER,
];
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment