mirror of
https://github.com/bitwarden/browser.git
synced 2024-12-18 15:47:57 +01:00
add site form and autofill detection improvements
This commit is contained in:
parent
2a929c8de8
commit
311a18a307
@ -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([{
|
||||
|
@ -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',
|
||||
|
@ -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,24 +43,14 @@
|
||||
}
|
||||
});
|
||||
|
||||
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) {
|
||||
function collectIfNeeded() {
|
||||
if (pageHref !== window.location.href) {
|
||||
pageHref = window.location.href;
|
||||
chrome.runtime.sendMessage({
|
||||
command: 'bgCollectPageDetails',
|
||||
sender: 'notificationBar'
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function watchForms(forms) {
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
if (passwordFields.length) {
|
||||
for (var formKey in pageDetails.forms) {
|
||||
for (var i = 0; i < passwordFields.length; i++) {
|
||||
|
Loading…
Reference in New Issue
Block a user