diff --git a/keepassxc-browser/common/sites.js b/keepassxc-browser/common/sites.js index c871822..e2e0119 100644 --- a/keepassxc-browser/common/sites.js +++ b/keepassxc-browser/common/sites.js @@ -71,7 +71,7 @@ kpxcSites.detectUsernameFromPage = function() { * @returns {boolean} True if an Element has a match with the identifier and document location */ kpxcSites.exceptionFound = function(identifier, field) { - if (!identifier || identifier.length === 0) { + if ((!identifier || identifier.length === 0) && !field) { return; } @@ -80,7 +80,7 @@ kpxcSites.exceptionFound = function(identifier, field) { || (typeof identifier === 'object' && [ 'password', 'form-row', 'show-password' ].every(c => identifier.contains(c))))) { return true; } else if (document.location.origin.startsWith('https://signin.ebay.') - && (identifier === 'null' || identifier.value === 'null' || identifier === 'pass')) { + && (identifier === 'null' || identifier?.value === 'null' || identifier === 'pass')) { return true; } else if (document.location.origin.startsWith('https://www.fidelity.com')) { if (typeof identifier === 'string') { @@ -108,6 +108,9 @@ kpxcSites.exceptionFound = function(identifier, field) { return true; } else if (document.location.origin === 'https://accounts.google.com' && field?.id === 'password') { return true; + } else if (document.location.origin === 'https://www.epicgames.com' + && ((field?.style?.opacity === '1' && field?.style?.willChange === 'auto') || identifier === 'password')) { + return true; } return false; diff --git a/keepassxc-browser/content/form.js b/keepassxc-browser/content/form.js index d916be0..210bc76 100644 --- a/keepassxc-browser/content/form.js +++ b/keepassxc-browser/content/form.js @@ -27,7 +27,7 @@ kpxcForm.activateCredentialBanner = async function(usernameValue, passwordInputs return; } - if (passwordField) { + if (passwordField && kpxcFields.isVisible(passwordField)) { await kpxc.setPasswordFilled(true); } diff --git a/keepassxc-browser/content/icon-handler.js b/keepassxc-browser/content/icon-handler.js index 7d5a1c0..9406d9c 100644 --- a/keepassxc-browser/content/icon-handler.js +++ b/keepassxc-browser/content/icon-handler.js @@ -45,7 +45,13 @@ kpxcIcons.addIconsFromForm = async function(form) { // Special case where everything else has been hidden, but a single password field is now displayed. // For example PayPal and Amazon is handled like this. if (c.username && !c.password && c.passwordInputs.length === 1) { - kpxcIcons.addIcon(c.passwordInputs[0], kpxcIcons.iconTypes.DEFAULT); + // Use password input directly from form if found (Epicgames) + const passwordField = c.form?.querySelector('input[type=password]'); + if (c.form && passwordField) { + kpxcIcons.addIcon(passwordField, kpxcIcons.iconTypes.DEFAULT); + } else { + kpxcIcons.addIcon(c.passwordInputs[0], kpxcIcons.iconTypes.DEFAULT); + } } if (c.username && !c.username.readOnly) {