2016-04-08 17:40:00 +02:00
|
|
|
'use strict';
|
|
|
|
|
2016-04-09 20:58:22 +02:00
|
|
|
var AutoTypeParser = require('./auto-type-parser'),
|
|
|
|
AutoTypeHelperFactory = require('./auto-type-helper-factory'),
|
|
|
|
Launcher = require('../launcher'),
|
|
|
|
Logger = require('../../util/logger'),
|
|
|
|
Timeouts = require('../../const/timeouts');
|
2016-04-08 17:40:00 +02:00
|
|
|
|
|
|
|
var logger = new Logger('auto-type');
|
2016-04-09 14:55:27 +02:00
|
|
|
var clearTextAutoTypeLog = localStorage.autoTypeDebug;
|
2016-04-09 11:28:14 +02:00
|
|
|
|
2016-04-08 17:40:00 +02:00
|
|
|
var AutoType = {
|
2016-04-09 20:58:22 +02:00
|
|
|
helper: AutoTypeHelperFactory.create(),
|
|
|
|
|
2016-04-09 10:41:52 +02:00
|
|
|
run: function(entry, sequence, obfuscate, callback) {
|
2016-04-08 17:40:00 +02:00
|
|
|
logger.debug('Start', sequence);
|
2016-04-09 11:17:01 +02:00
|
|
|
var that = this;
|
2016-04-08 17:40:00 +02:00
|
|
|
try {
|
|
|
|
var parser = new AutoTypeParser(sequence);
|
|
|
|
var runner = parser.parse();
|
2016-04-09 11:17:01 +02:00
|
|
|
logger.debug('Parsed', that.printOps(runner.ops));
|
2016-04-08 17:40:00 +02:00
|
|
|
runner.resolve(entry, function(err) {
|
|
|
|
if (err) {
|
2016-04-08 23:14:09 +02:00
|
|
|
logger.error('Resolve error', err);
|
2016-04-08 17:40:00 +02:00
|
|
|
return callback(err);
|
|
|
|
}
|
2016-04-09 11:17:01 +02:00
|
|
|
logger.debug('Resolved', that.printOps(runner.ops));
|
2016-04-09 10:41:52 +02:00
|
|
|
if (obfuscate) {
|
2016-04-09 14:55:27 +02:00
|
|
|
try {
|
|
|
|
runner.obfuscate();
|
|
|
|
} catch (e) {
|
|
|
|
logger.error('Obfuscate error', e);
|
|
|
|
return callback(e);
|
|
|
|
}
|
2016-04-10 09:31:08 +02:00
|
|
|
logger.debug('Obfuscated');
|
2016-04-09 10:41:52 +02:00
|
|
|
}
|
2016-04-08 17:40:00 +02:00
|
|
|
runner.run(function(err) {
|
|
|
|
if (err) {
|
|
|
|
logger.error('Run error', err);
|
|
|
|
return callback(err);
|
|
|
|
}
|
|
|
|
logger.debug('Complete');
|
|
|
|
return callback();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
} catch (ex) {
|
|
|
|
logger.error('Parse error', ex);
|
|
|
|
return callback(ex);
|
|
|
|
}
|
2016-04-09 11:17:01 +02:00
|
|
|
},
|
|
|
|
|
|
|
|
printOps: function(ops) {
|
|
|
|
return '[' + ops.map(this.printOp, this).join(',') + ']';
|
|
|
|
},
|
|
|
|
|
|
|
|
printOp: function(op) {
|
|
|
|
var mod = op.mod ? Object.keys(op.mod).join('') : '';
|
|
|
|
if (op.type === 'group') {
|
|
|
|
return mod + this.printOps(op.value);
|
|
|
|
}
|
|
|
|
if (op.type === 'text') {
|
2016-04-09 11:28:14 +02:00
|
|
|
var value = op.value;
|
|
|
|
if (!clearTextAutoTypeLog) {
|
|
|
|
value = value.replace(/./g, '*');
|
|
|
|
}
|
|
|
|
return mod + value;
|
2016-04-09 11:17:01 +02:00
|
|
|
}
|
|
|
|
return mod + op.type + ':' + op.value;
|
2016-04-09 20:58:22 +02:00
|
|
|
},
|
|
|
|
|
|
|
|
hideWindow: function(callback) {
|
|
|
|
logger.debug('Hide window');
|
|
|
|
if (Launcher.hideWindowIfActive()) {
|
|
|
|
setTimeout(callback, Timeouts.AutoTypeAfterHide);
|
|
|
|
} else {
|
|
|
|
callback();
|
|
|
|
}
|
|
|
|
},
|
|
|
|
|
|
|
|
getActiveWindowTitle: function(callback) {
|
|
|
|
logger.debug('Get window title');
|
2016-04-09 22:19:56 +02:00
|
|
|
return this.helper.getActiveWindowTitle(function(err, title, url) {
|
2016-04-09 20:58:22 +02:00
|
|
|
if (err) {
|
|
|
|
logger.error('Error get window title', err);
|
|
|
|
} else {
|
2016-04-09 22:19:56 +02:00
|
|
|
logger.debug('Window title', title, url);
|
2016-04-09 20:58:22 +02:00
|
|
|
}
|
|
|
|
return callback(err, title);
|
|
|
|
});
|
2016-04-08 17:40:00 +02:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
module.exports = AutoType;
|