| 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 8bb0451b67cf9c83ec2228dd1953110ee462c276..07d0a26053258bbb97f3c5697d3346da00f5c9db 100644
|
| --- a/ui/file_manager/file_manager/common/js/importer_common.js
|
| +++ b/ui/file_manager/file_manager/common/js/importer_common.js
|
| @@ -134,6 +134,80 @@ importer.importEnabled = function() {
|
| };
|
|
|
| /**
|
| + * Local storage key for machine id.
|
| + * @const {string}
|
| + */
|
| +importer.MACHINE_ID_STORAGE_KEY_ = 'importer-machine-id';
|
| +
|
| +/**
|
| + * @return {!Promise.<number>} Resolves with an integer that is probably
|
| + * relatively unique to this machine (among a users machines).
|
| + */
|
| +importer.getMachineId = function() {
|
| + return new Promise(
|
| + function(resolve, reject) {
|
| + chrome.storage.local.get(
|
| + importer.MACHINE_ID_STORAGE_KEY_,
|
| + /** @param {Object.<string, ?>} values */
|
| + function(values) {
|
| + if (chrome.runtime.lastError) {
|
| + reject(chrome.runtime.lastError);
|
| + return;
|
| + }
|
| +
|
| + var machineId = values[importer.MACHINE_ID_STORAGE_KEY_];
|
| + if (!!machineId) {
|
| + resolve(machineId);
|
| + } else {
|
| + var machineId = importer.generateMachineId_();
|
| + var newValues = {};
|
| + newValues[importer.MACHINE_ID_STORAGE_KEY_] = machineId;
|
| + chrome.storage.local.set(
|
| + newValues,
|
| + function() {
|
| + if (chrome.runtime.lastError) {
|
| + reject(chrome.runtime.lastError);
|
| + } else {
|
| + resolve(machineId);
|
| + }
|
| + });
|
| + }
|
| + });
|
| + });
|
| +};
|
| +
|
| +/**
|
| + * @return {!Promise.<string>} Resolves with the filename of this
|
| + * machines history file.
|
| + */
|
| +importer.getHistoryFilename = function() {
|
| + return importer.getMachineId().then(
|
| + function(machineId) {
|
| + return 'import-history.' + machineId + '.log';
|
| + });
|
| +};
|
| +
|
| +/**
|
| + * @return {!Promise.<string>} Resolves with the filename of this
|
| + * machines debug log file.
|
| + */
|
| +importer.getDebugLogFilename = function() {
|
| + return importer.getMachineId().then(
|
| + function(machineId) {
|
| + return 'import-debug.' + machineId + '.log';
|
| + });
|
| +};
|
| +
|
| +/**
|
| + * @return {number} A relatively unique six digit integer that is most likely
|
| + * unique to this machine among a user's machines. Used only to segregate
|
| + * log files on sync storage.
|
| + */
|
| +importer.generateMachineId_ = function() {
|
| + return Math.floor(Math.random() * 899999) + 100000;
|
| +};
|
| +
|
| +/**
|
| * A Promise wrapper that provides public access to resolve and reject methods.
|
| *
|
| * @constructor
|
| @@ -310,12 +384,16 @@ importer.ChromeSyncFileEntryProvider = function(fileName) {
|
| /**
|
| * Returns a sync FileEntry. Convenience method for class that just want
|
| * a file, but don't need to monitor changes.
|
| - * @param {string} fileName
|
| + * @param {!Promise.<string>} fileNamePromise
|
| * @return {!Promise.<!FileEntry>}
|
| */
|
| -importer.ChromeSyncFileEntryProvider.getFileEntry = function(fileName) {
|
| - return new importer.ChromeSyncFileEntryProvider(fileName)
|
| - .getSyncFileEntry();
|
| +importer.ChromeSyncFileEntryProvider.getFileEntry =
|
| + function(fileNamePromise) {
|
| + return fileNamePromise.then(
|
| + function(fileName) {
|
| + return new importer.ChromeSyncFileEntryProvider(fileName)
|
| + .getSyncFileEntry();
|
| + });
|
| };
|
|
|
| /**
|
| @@ -590,7 +668,7 @@ importer.getLogger = function() {
|
| if (!importer.logger_) {
|
| importer.logger_ = new importer.RuntimeLogger(
|
| importer.ChromeSyncFileEntryProvider.getFileEntry(
|
| - 'importer_debug.log'));
|
| + importer.getDebugLogFilename()));
|
| }
|
| return importer.logger_;
|
| };
|
|
|