//!javascript Signal.connect("documentLoaded", function(wv, frame) { autofillForm(frame.document); }); function fillUsername(doc, name, username) { var box = doc.querySelector('input[name="' + name + '"]'); if (!box) { box = doc.querySelector("input[name*=user]"); } if (!box) { box = doc.querySelector("input[name*=email]"); } if (!box) { box = doc.querySelector("input[name*=account]"); } if (!box) { box = doc.querySelector("input[type=email]"); } if (box) { box.value = username; } } function fillPassword(doc, name, password) { var box = doc.querySelector('input[name="' + name + '"]'); if (!box) { box = doc.querySelector("input[type=password]"); } if (box) { box.value = password; } } function lastPassFind(url, callbacks) { var cmd = "lpass find " + url; system.spawn(cmd, { onStdout: function(line) { if (line.indexOf("Username: ") == 0) { callbacks.onGetUsername(line.substr(10)); } else if (line.indexOf("Password: ") == 0) { callbacks.onGetPassword(line.substr(10)); } else if (line.indexOf(': ') > -1) { var name = line.substring(0, line.indexOf(': ')); callbacks.onGetFieldName(line, name); } }, }); } function autofillForm(doc) { var username, password; lastPassFind(tabs.current.uri, { onGetUsername: function (val) { username = val; fillUsername(doc, "", val); }, onGetPassword: function (val) { password = val; fillPassword(doc, "", val); }, onGetFieldName: function (line, name) { if (username && line.indexOf(username) > -1) { fillUsername(doc, name, username); } if (password && line.indexOf(password) > -1) { fillPassword(doc, name, password); } } }); }