Index: chrome/browser/resources/file_manager/js/image_editor/gallery.js |
diff --git a/chrome/browser/resources/file_manager/js/image_editor/gallery.js b/chrome/browser/resources/file_manager/js/image_editor/gallery.js |
index 7a7e21945a89aa98212a1e21cbae9e8532b9c9cd..01c03ec364a59fcf9c739717e5d984012e4cab6d 100644 |
--- a/chrome/browser/resources/file_manager/js/image_editor/gallery.js |
+++ b/chrome/browser/resources/file_manager/js/image_editor/gallery.js |
@@ -225,18 +225,16 @@ Gallery.prototype.load = function(parentDirEntry, items, selectedItem) { |
var selectedURL = urls[selectedIndex]; |
// Initialize the ribbon only after the selected image is fully loaded. |
this.metadataProvider_.fetch(selectedURL, function (metadata) { |
- // The first change is load, we should not count it. |
- self.imageChanges_ = -1; |
- self.filenameEdit_.value = ImageUtil.getFileNameFromUrl(selectedURL); |
- self.editor_.openSession( |
- selectedIndex, selectedURL, metadata, 0, initRibbon); |
+ self.openImage(selectedIndex, selectedURL, metadata, 0, initRibbon); |
}); |
}; |
Gallery.prototype.onImageContentChanged_ = function() { |
this.imageChanges_++; |
- if (this.imageChanges_ == 1) |
+ if (this.imageChanges_ == 1) { // First edit |
this.ribbon_.getSelectedItem().setCopyName(); |
+ ImageUtil.metrics.recordUserAction(ImageUtil.getMetricName('Edit')); |
+ } |
this.updateFilename_(); |
}; |
@@ -347,8 +345,38 @@ Gallery.prototype.prefetchImage = function(id, content, metadata) { |
Gallery.prototype.openImage = function(id, content, metadata, slide, callback) { |
// The first change is load, we should not count it. |
this.imageChanges_ = -1; |
- this.updateFilename_(); |
- this.editor_.openSession(id, content, metadata, slide, callback); |
+ |
+ var item = this.ribbon_.getSelectedItem(); |
+ if (item) { |
+ this.updateFilename_(); |
+ } else { |
+ this.filenameEdit_.value = ImageUtil.getFileNameFromUrl(content); |
+ } |
+ |
+ var self = this; |
+ function loadDone() { |
+ ImageUtil.metrics.recordUserAction(ImageUtil.getMetricName('View')); |
+ |
+ function toMillions(number) { return Math.round(number / (1000 * 1000)) } |
+ |
+ ImageUtil.metrics.recordSmallCount(ImageUtil.getMetricName('Size.MB'), |
+ toMillions(metadata.fileSize)); |
+ |
+ var canvas = self.imageView_.getCanvas(); |
+ ImageUtil.metrics.recordSmallCount(ImageUtil.getMetricName('Size.MPix'), |
+ toMillions(canvas.width * canvas.height)); |
+ |
+ var url = item ? item.getUrl() : content; |
+ var extIndex = url.lastIndexOf('.'); |
+ var ext = extIndex < 0 ? '' : url.substr(extIndex + 1).toLowerCase(); |
+ if (ext == 'jpeg') ext = 'jpg'; |
+ ImageUtil.metrics.recordEnum( |
+ ImageUtil.getMetricName('FileType'), ext, ImageUtil.FILE_TYPES); |
+ |
+ callback(arguments); |
+ } |
+ |
+ this.editor_.openSession(id, content, metadata, slide, loadDone); |
}; |
Gallery.prototype.closeImage = function(item) { |
@@ -592,10 +620,11 @@ Ribbon.prototype.select = function(index, opt_forceStep, opt_callback) { |
if (!selectedItem.isSelected()) return; |
self.client_.openImage( |
selectedItem.getIndex(), selectedItem.getContent(), metadata, step, |
- function(loadedInstantly) { |
+ function(loadType) { |
if (!selectedItem.isSelected()) return; |
if (Math.abs(step) != 1) return; |
- if (loadedInstantly || (self.sequenceLength_ >= 3)) { |
+ if ((loadType == ImageView.LOAD_TYPE_CACHED_FULL) || |
+ (self.sequenceLength_ >= 3)) { |
// We can always afford to prefetch if the previous load was |
// instant. Even if it was not we should start prefetching |
// if we have been going in the same direction for long enough. |
@@ -798,6 +827,9 @@ Ribbon.Item.prototype.updateThumbnail = function(canvas) { |
Ribbon.Item.prototype.save = function( |
dirEntry, metadataProvider, canvas, opt_callback) { |
+ |
+ ImageUtil.metrics.startInterval(ImageUtil.getMetricName('SaveTime')); |
+ |
var metadataEncoder = |
ImageEncoder.encodeMetadata(this.getMetadata(), canvas, 1); |
@@ -924,7 +956,7 @@ Ribbon.Item.prototype.getMetadata = function () { |
Ribbon.Item.prototype.fetchMetadata = function (metadataProvider, callback) { |
if (this.metadata_) { |
- setTimeout(callback.bind(null, this.metadata_), 0); |
+ callback(this.metadata_); // Every millisecond counts, call directly |
} else { |
metadataProvider.fetch(this.getUrl(), callback); |
} |
@@ -934,6 +966,8 @@ Ribbon.Item.prototype.onSaveSuccess = function(url) { |
this.url_ = url; |
delete this.backupMetadata_; |
delete this.canvas_; |
+ ImageUtil.metrics.recordEnum(ImageUtil.getMetricName('SaveResult'), 1, 2); |
+ ImageUtil.metrics.recordInterval(ImageUtil.getMetricName('SaveTime')); |
}; |
Ribbon.Item.prototype.onSaveError = function(error) { |
@@ -943,6 +977,7 @@ Ribbon.Item.prototype.onSaveError = function(error) { |
this.setMetadata(this.backupMetadata_); |
delete this.backupMetadata_; |
delete this.canvas_; |
+ ImageUtil.metrics.recordEnum(ImageUtil.getMetricName('SaveResult'), 0, 2); |
}; |
Ribbon.MAX_THUMBNAIL_PIXEL_COUNT = 1 << 21; // 2 MPix |