delayed autofill attempt

This commit is contained in:
Kyle Spearrin 2018-05-18 17:05:46 -04:00
parent 7eceedf2fc
commit 047547169a
2 changed files with 29 additions and 4 deletions

View File

@ -1,5 +1,8 @@
document.addEventListener('DOMContentLoaded', (event) => {
let pageHref: string = null;
let filledThisHref = false;
let delayFillTimeout: number;
const isSafari = (typeof safari !== 'undefined') && navigator.userAgent.indexOf(' Safari/') !== -1 &&
navigator.userAgent.indexOf('Chrome') === -1;
@ -12,7 +15,9 @@ document.addEventListener('DOMContentLoaded', (event) => {
safari.self.addEventListener('message', (msgEvent: any) => {
const msg = msgEvent.message;
if (msg.command === responseCommand && msg.data.autofillEnabled === true) {
setInterval(doFillIfNeeded, 500);
setInterval(() => doFillIfNeeded(), 500);
} else if (msg.command === 'fillForm' && pageHref === msg.url) {
filledThisHref = true;
}
}, false);
return;
@ -20,13 +25,32 @@ document.addEventListener('DOMContentLoaded', (event) => {
const enabledKey = 'enableAutoFillOnPageLoad';
chrome.storage.local.get(enabledKey, (obj: any) => {
if (obj != null && obj[enabledKey] === true) {
setInterval(doFillIfNeeded, 500);
setInterval(() => doFillIfNeeded(), 500);
}
});
chrome.runtime.onMessage.addListener((msg: any, sender: any, sendResponse: Function) => {
if (msg.command === 'fillForm' && pageHref === msg.url) {
filledThisHref = true;
}
});
}
function doFillIfNeeded() {
if (pageHref !== window.location.href) {
function doFillIfNeeded(force: boolean = false) {
if (force || pageHref !== window.location.href) {
if (!force) {
// Some websites are slow and rendering all page content. Try to fill again later
// if we haven't already.
filledThisHref = false;
if (delayFillTimeout != null) {
window.clearTimeout(delayFillTimeout);
}
delayFillTimeout = window.setTimeout(() => {
if (!filledThisHref) {
doFillIfNeeded(true);
}
}, 1500);
}
pageHref = window.location.href;
const msg = {
command: 'bgCollectPageDetails',

View File

@ -174,6 +174,7 @@ export default class AutofillService implements AutofillServiceInterface {
BrowserApi.tabSendMessage(tab, {
command: 'fillForm',
fillScript: fillScript,
url: tab.url,
}, { frameId: pd.frameId });
if (options.cipher.type !== CipherType.Login || totpPromise || options.skipTotp ||