add site form and autofill detection improvements

This commit is contained in:
Kyle Spearrin 2017-10-05 22:30:46 -04:00
parent 2a929c8de8
commit 311a18a307
4 changed files with 35 additions and 29 deletions

View File

@ -118,7 +118,7 @@ var bg_isBackground = true,
else if (msg.command === 'collectPageDetailsResponse') {
if (msg.sender === 'notificationBar') {
var forms = bg_autofillService.getFormsWithPasswordFields(msg.details);
messageTab(msg.tab.id, 'pageDetails', { details: msg.details, forms: forms });
messageTab(msg.tab.id, 'notificationBarPageDetails', { details: msg.details, forms: forms });
}
else if (msg.sender === 'autofiller' || msg.sender === 'autofill_cmd') {
bg_autofillService.doAutoFillForLastUsedLogin([{

View File

@ -1,11 +1,19 @@
document.addEventListener('DOMContentLoaded', function (event) {
var pageHref = null;
chrome.storage.local.get('enableAutoFillOnPageLoad', function (obj) {
if (obj && obj.enableAutoFillOnPageLoad === true) {
setTimeout(fill, 500);
window.addEventListener('popstate', fill);
setInterval(doFillIfNeeded, 500);
}
});
function doFillIfNeeded() {
if (pageHref !== window.location.href) {
pageHref = window.location.href;
fill();
}
}
function fill() {
chrome.runtime.sendMessage({
command: 'bgCollectPageDetails',

View File

@ -1,10 +1,23 @@
document.addEventListener('DOMContentLoaded', function (event) {
var pageDetails = [],
formData = [],
barType = null;
barType = null,
pageHref = null;
setTimeout(collect, 1000);
window.addEventListener('popstate', collect);
if (window.location.hostname.indexOf('bitwarden.com') === -1) {
chrome.storage.local.get('neverDomains', function (obj) {
var domains = obj.neverDomains;
if (domains && domains.hasOwnProperty(window.location.hostname)) {
return;
}
chrome.storage.local.get('disableAddLoginNotification', function (obj) {
if (!obj || !obj.disableAddLoginNotification) {
setInterval(collectIfNeeded, 1000);
}
});
});
}
chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) {
if (msg.command === 'openNotificationBar') {
@ -22,7 +35,7 @@
sendResponse();
return true;
}
else if (msg.command === 'pageDetails') {
else if (msg.command === 'notificationBarPageDetails') {
pageDetails.push(msg.data.details);
watchForms(msg.data.forms);
sendResponse();
@ -30,22 +43,12 @@
}
});
function collect() {
if (window.location.hostname.indexOf('bitwarden.com') === -1) {
chrome.storage.local.get('neverDomains', function (obj) {
var domains = obj.neverDomains;
if (domains && domains.hasOwnProperty(window.location.hostname)) {
return;
}
chrome.storage.local.get('disableAddLoginNotification', function (obj) {
if (!obj || !obj.disableAddLoginNotification) {
chrome.runtime.sendMessage({
command: 'bgCollectPageDetails',
sender: 'notificationBar'
});
}
});
function collectIfNeeded() {
if (pageHref !== window.location.href) {
pageHref = window.location.href;
chrome.runtime.sendMessage({
command: 'bgCollectPageDetails',
sender: 'notificationBar'
});
}
}

View File

@ -160,12 +160,7 @@ function initAutofill() {
var passwordFields = [],
formData = [];
passwordFields = loadPasswordFields(pageDetails, false);
if (!passwordFields.length) {
// not able to find any viewable password fields. maybe there are some "hidden" ones?
passwordFields = loadPasswordFields(pageDetails, true);
}
passwordFields = loadPasswordFields(pageDetails, true);
if (passwordFields.length) {
for (var formKey in pageDetails.forms) {
for (var i = 0; i < passwordFields.length; i++) {