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

Unified Diff: ui/file_manager/file_manager/common/js/importer_common.js

Issue 954583004: Shrink space required by history log file (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: 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/common/js/importer_common.js
diff --git a/ui/file_manager/file_manager/common/js/importer_common.js b/ui/file_manager/file_manager/common/js/importer_common.js
index c38bdbad8aa476b820ba927bc8836cd43dd8cc48..cbcf88600534cb5118676a64be7e5945f458d207 100644
--- a/ui/file_manager/file_manager/common/js/importer_common.js
+++ b/ui/file_manager/file_manager/common/js/importer_common.js
@@ -367,6 +367,43 @@ importer.PromisingFileEntry.prototype.getMetadata = function() {
};
/**
+ * This prefix is stripped from URL used in import history. It is stripped
+ * to same on disk space, parsing time, and runtime memory.
+ * @private @const {string}
+ */
+importer.APP_URL_PREFIX_ =
+ 'filesystem:chrome-extension://hhaomjibdihmijegdhdafkllkbggdgoj/external';
+
+/**
+ * Strips non-unique information from the URL. The resulting
+ * value can be reconstituted using {@code importer.inflateAppUrl}.
+ *
+ * @param {string} url
+ * @return {string}
+ */
+importer.deflateAppUrl = function(url) {
+ if (url.substring(0, importer.APP_URL_PREFIX_.length) ===
+ importer.APP_URL_PREFIX_) {
+ return '$' + url.substring(importer.APP_URL_PREFIX_.length);
+ }
+
+ return url;
+};
+
+/**
+ * Reconstitutes a url previous deflated by {@code deflateAppUrl}.
mtomasz 2015/02/25 00:40:17 nit: Can you add a comment what it returns if it w
Steve McKay 2015/02/25 01:51:56 Done.
+ *
+ * @param {string} deflated
+ * @return {string}
+ */
+importer.inflateAppUrl = function(deflated) {
+ if (deflated.substring(0, 1) === '$') {
+ return importer.APP_URL_PREFIX_ + deflated.substring(1);
+ }
+ return deflated;
+};
+
+/**
* @param {!FileEntry} fileEntry
* @return {!Promise.<string>} Resolves with a "hashcode" consisting of
* just the last modified time and the file size.
@@ -393,10 +430,26 @@ importer.createMetadataHashcode = function(fileEntry) {
} else if (!('size' in metadata)) {
reject('File entry missing "size" field.');
} else {
- resolve(metadata.modificationTime + '_' + metadata.size);
+ var secondsSinceEpoch =
+ importer.toSecondsFromEpoch(metadata.modificationTime);
+ resolve(secondsSinceEpoch + '_' + metadata.size);
}
}.bind(this));
- }.bind(this));
+ }.bind(this))
+ .catch(importer.getLogger().catcher('importer-common-create-hashcode'));
+};
+
+/**
+ * @param {string} date A date string in the form
+ * expected by Date.parse.
+ * @return {string} The number of seconds from epoch to the date...as a string.
+ */
+importer.toSecondsFromEpoch = function(date) {
+ // Since we're parsing a value that only has
+ // precision to the second, our last three digits
+ // will always be 000. We strip them and end up
+ // with seconds.
+ return String(Date.parse(date)).substring(0, 10);
mtomasz 2015/02/25 00:40:17 nit: This will not work as intended for pictures c
Steve McKay 2015/02/25 01:51:56 Oh, really good catch. Fixed.
};
/**
@@ -589,8 +642,8 @@ importer.ChromeSyncFileEntryProvider.prototype.handleSyncEvent_ =
}
if (event.action && event.action !== 'updated') {
- console.error(
- 'Unexpected sync event action for sync file: ' + event.action);
+ console.warn(
+ 'Unusual sync event action for sync file: ' + event.action);
return;
}

Powered by Google App Engine
This is Rietveld 408576698