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

Unified Diff: ui/file_manager/file_manager/background/js/media_scanner.js

Issue 918713003: Files.app: Add analytics code to instrument cloud import flows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Reorg/rename metrics events. Fix a metrics loading bug. Created 5 years, 10 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
Index: ui/file_manager/file_manager/background/js/media_scanner.js
diff --git a/ui/file_manager/file_manager/background/js/media_scanner.js b/ui/file_manager/file_manager/background/js/media_scanner.js
index b311fc6a51750ee11f09e5d433a0faa588a11240..86dd1bcf31765e46db276e483b716dfa88385787 100644
--- a/ui/file_manager/file_manager/background/js/media_scanner.js
+++ b/ui/file_manager/file_manager/background/js/media_scanner.js
@@ -59,26 +59,26 @@ importer.ScanResult.prototype.isInvalidated;
importer.ScanResult.prototype.getFileEntries;
/**
- * Returns the aggregate size, in bytes, of all FileEntries discovered
- * during scanning.
+ * Returns a promise that fires when scanning is complete.
*
- * @return {number}
+ * @return {!Promise.<!importer.ScanResult>}
*/
-importer.ScanResult.prototype.getTotalBytes;
+importer.ScanResult.prototype.whenFinal;
/**
- * Returns the scan duration in milliseconds.
- *
- * @return {number}
+ * @return {!importer.ScanResult.Statistics}
*/
-importer.ScanResult.prototype.getScanDurationMs;
+importer.ScanResult.prototype.getStatistics;
/**
- * Returns a promise that fires when scanning is complete.
- *
- * @return {!Promise.<!importer.ScanResult>}
+ * @typedef {{
+ * scanDuration: number,
+ * newFileCount: number,
+ * duplicateFileCount: number,
+ * sizeBytes: number
+ * }}
*/
-importer.ScanResult.prototype.whenFinal;
+importer.ScanResult.Statistics;
/**
* Recursively scans through a list of given files and directories, and creates
@@ -266,14 +266,14 @@ importer.DefaultMediaScanner.prototype.onFileEntryFound_ =
* @this {importer.DefaultMediaScanner}
*/
function(duplicate) {
- if (!duplicate) {
- return this.onUniqueFileFound_(scan, entry);
- }
+ return duplicate ?
+ this.onDuplicateFileFound_(scan, entry) :
+ this.onUniqueFileFound_(scan, entry);
}.bind(this));
};
/**
- * Finds all files beneath directory.
+ * Adds a newly discovered file to the given scan result.
*
* @param {!importer.DefaultScanResult} scan
* @param {!FileEntry} entry
@@ -301,6 +301,21 @@ importer.DefaultMediaScanner.prototype.onUniqueFileFound_ =
};
/**
+ * Adds a duplicate file to the given scan result. This is to track the number
+ * of duplicates that are being encountered.
+ *
+ * @param {!importer.DefaultScanResult} scan
+ * @param {!FileEntry} entry
+ * @return {!Promise}
+ * @private
+ */
+importer.DefaultMediaScanner.prototype.onDuplicateFileFound_ =
+ function(scan, entry) {
+ scan.addDuplicateEntry(entry);
+ return Promise.resolve();
+};
+
+/**
* @param {!FileEntry} entry
* @return {!Promise.<boolean>} True if there is a history-entry-duplicate
* for the file.
@@ -366,6 +381,9 @@ importer.DefaultScanResult = function(hashGenerator) {
/** @private {number} */
this.totalBytes_ = 0;
+ /** @private {number} */
+ this.duplicateFileCount_ = 0;
+
/**
* The point in time when the scan was started.
* @type {Date}
@@ -412,16 +430,6 @@ importer.DefaultScanResult.prototype.getFileEntries = function() {
};
/** @override */
-importer.DefaultScanResult.prototype.getTotalBytes = function() {
- return this.totalBytes_;
-};
-
-/** @override */
-importer.DefaultScanResult.prototype.getScanDurationMs = function() {
- return this.lastScanActivity_.getTime() - this.scanStarted_.getTime();
-};
-
-/** @override */
importer.DefaultScanResult.prototype.whenFinal = function() {
return this.resolver_.promise;
};
@@ -461,11 +469,12 @@ importer.DefaultScanResult.prototype.addFileEntry = function(entry) {
this.lastScanActivity_ = new Date();
if (hashcode in this.fileHashcodes_) {
+ this.addDuplicateEntry(entry);
return false;
}
entry.size = metadata.size;
- this.totalBytes_ += metadata['size'];
+ this.totalBytes_ += metadata.size;
this.fileHashcodes_[hashcode] = entry;
this.fileEntries_.push(entry);
return true;
@@ -475,6 +484,25 @@ importer.DefaultScanResult.prototype.addFileEntry = function(entry) {
};
/**
+ * Logs the fact that a duplicate file entry was discovered during the scan.
+ * @param {!FileEntry} entry
+ */
+importer.DefaultScanResult.prototype.addDuplicateEntry = function(entry) {
+ this.duplicateFileCount_++;
+};
+
+/** @override */
+importer.DefaultScanResult.prototype.getStatistics = function() {
+ return {
+ scanDuration:
+ this.lastScanActivity_.getTime() - this.scanStarted_.getTime(),
+ newFileCount: this.fileEntries_.length,
+ duplicateFileCount: this.duplicateFileCount_,
+ sizeBytes: this.totalBytes_
+ };
+};
+
+/**
* Watcher for directories.
* @interface
*/

Powered by Google App Engine
This is Rietveld 408576698