diff options
Diffstat (limited to 'keepassxc-browser')
-rwxr-xr-x | keepassxc-browser/background/event.js | 24 | ||||
-rwxr-xr-x | keepassxc-browser/background/keepass.js | 6 | ||||
-rw-r--r-- | keepassxc-browser/content/autocomplete.js | 2 | ||||
-rwxr-xr-x | keepassxc-browser/content/keepassxc-browser.js | 69 | ||||
-rwxr-xr-x | keepassxc-browser/manifest.json | 8 | ||||
-rw-r--r-- | keepassxc-browser/options/options.js | 2 |
6 files changed, 58 insertions, 53 deletions
diff --git a/keepassxc-browser/background/event.js b/keepassxc-browser/background/event.js index 708cb31..42b2727 100755 --- a/keepassxc-browser/background/event.js +++ b/keepassxc-browser/background/event.js @@ -113,9 +113,9 @@ kpxcEvent.onPopStack = function(tab) { return Promise.resolve(); }; -kpxcEvent.onGetTabInformation = function(tab) { +kpxcEvent.onGetTabInformation = async function(tab) { const id = tab.id || page.currentTabId; - return Promise.resolve(page.tabs[id]); + return page.tabs[id]; }; kpxcEvent.onGetConnectedDatabase = function() { @@ -131,7 +131,7 @@ kpxcEvent.onGetKeePassXCVersions = async function(tab) { return { 'current': keepass.currentKeePassXC, 'latest': keepass.latestKeePassXC.version }; } - return Promise.resolve({ 'current': keepass.currentKeePassXC, 'latest': keepass.latestKeePassXC.version }); + return { 'current': keepass.currentKeePassXC, 'latest': keepass.latestKeePassXC.version }; }; kpxcEvent.onCheckUpdateKeePassXC = async function() { @@ -158,11 +158,7 @@ kpxcEvent.onLoginPopup = function(tab, logins) { }; browserAction.stackUnshift(stackData, tab.id); - - if (logins.length > 0) { - page.tabs[tab.id].loginList = logins[0]; - } - + page.tabs[tab.id].loginList = logins; browserAction.show(tab); return Promise.resolve(); }; @@ -204,8 +200,8 @@ kpxcEvent.pageClearLogins = function(tab, alreadyCalled) { return Promise.resolve(); }; -kpxcEvent.pageGetLoginId = function() { - return Promise.resolve(page.loginId); +kpxcEvent.pageGetLoginId = async function() { + return page.loginId; }; kpxcEvent.pageSetLoginId = function(tab, loginId) { @@ -218,8 +214,8 @@ kpxcEvent.pageClearSubmitted = function() { return Promise.resolve(); } -kpxcEvent.pageGetSubmitted = function() { - return Promise.resolve(page.submittedCredentials); +kpxcEvent.pageGetSubmitted = async function() { + return page.submittedCredentials; }; kpxcEvent.pageSetSubmitted = function(tab, args = []) { @@ -228,8 +224,8 @@ kpxcEvent.pageSetSubmitted = function(tab, args = []) { return Promise.resolve(); }; -kpxcEvent.onUsernameFieldDetected = function(tab, args = []) { - page.usernameFieldDetected = args[0]; +kpxcEvent.onUsernameFieldDetected = function(tab, detected) { + page.usernameFieldDetected = detected; }; // All methods named in this object have to be declared BEFORE this! diff --git a/keepassxc-browser/background/keepass.js b/keepassxc-browser/background/keepass.js index 9e15da1..2d63558 100755 --- a/keepassxc-browser/background/keepass.js +++ b/keepassxc-browser/background/keepass.js @@ -851,7 +851,7 @@ keepass.updateLastUsed = function(hash) { }; // Update the databaseHash from legacy hash keepass.updateDatabaseHash = function(oldHash, newHash) { - if (!oldHash || !newHash) { + if (!oldHash || !newHash || oldHash === newHash) { return; } @@ -881,9 +881,11 @@ keepass.keePassXCUpdateAvailable = function() { if (daysSinceLastCheck >= page.settings.checkUpdateKeePassXC) { keepass.checkForNewKeePassXCVersion(); } + + return keepass.compareVersion(keepass.currentKeePassXC, keepass.latestKeePassXC.version, false); } - return keepass.compareVersion(keepass.currentKeePassXC, keepass.latestKeePassXC.version, false); + return false; }; keepass.checkForNewKeePassXCVersion = function() { diff --git a/keepassxc-browser/content/autocomplete.js b/keepassxc-browser/content/autocomplete.js index 86020ec..f7906fd 100644 --- a/keepassxc-browser/content/autocomplete.js +++ b/keepassxc-browser/content/autocomplete.js @@ -53,7 +53,7 @@ kpxcAutocomplete.showList = function(inputField) { // Save index for combination.loginId const index = Array.prototype.indexOf.call(e.currentTarget.parentElement.childNodes, e.currentTarget); browser.runtime.sendMessage({ - action: 'page_set_login_id', args: [ index ] + action: 'page_set_login_id', args: index }); inputField.value = this.getElementsByTagName('input')[0].value; diff --git a/keepassxc-browser/content/keepassxc-browser.js b/keepassxc-browser/content/keepassxc-browser.js index e45ec14..f2f71cd 100755 --- a/keepassxc-browser/content/keepassxc-browser.js +++ b/keepassxc-browser/content/keepassxc-browser.js @@ -306,7 +306,7 @@ kpxcFields.getAllFields = function() { fields.length === 1 && fields[0].getLowerCaseAttribute('type') !== 'password') { browser.runtime.sendMessage({ action: 'username_field_detected', - args: [ true ] + args: true }); } @@ -877,6 +877,33 @@ kpxc.detectDatabaseChange = async function(response) { } }; +// Checks if the site has been ignored using Site Preferences +kpxc.siteIgnored = function() { + kpxc.initializeSitePreferences(); + if (kpxc.settings.sitePreferences) { + let currentLocation; + try { + currentLocation = window.top.location.href; + } catch (err) { + // Cross-domain security error inspecting window.top.location.href. + // This catches an error when an iframe is being accessed from another (sub)domain -> use the iframe URL instead. + currentLocation = window.self.location.href; + } + + for (const site of kpxc.settings.sitePreferences) { + if (siteMatch(site.url, currentLocation) || site.url === currentLocation) { + if (site.ignore === IGNORE_FULL) { + return true; + } + + _singleInputEnabledForPage = site.usernameOnly; + } + } + } + + return false; +}; + kpxc.initCredentialFields = async function(forceCall) { if (_called.initCredentialFields && !forceCall) { return; @@ -885,27 +912,13 @@ kpxc.initCredentialFields = async function(forceCall) { await browser.runtime.sendMessage({ action: 'page_clear_logins', - args: [ _called.clearLogins ] + args: _called.clearLogins }); _called.clearLogins = true; - // Check site preferences - kpxc.initializeSitePreferences(); - if (kpxc.settings.sitePreferences) { - for (const site of kpxc.settings.sitePreferences) { - try { - if (siteMatch(site.url, window.top.location.href) || site.url === window.top.location.href) { - if (site.ignore === IGNORE_FULL) { - return; - } - - _singleInputEnabledForPage = site.usernameOnly; - } - } catch (err) { - return; - } - } + if (kpxc.siteIgnored()) { + return; } const inputs = kpxcFields.getAllFields(); @@ -1025,7 +1038,7 @@ kpxc.prepareFieldsForCredentials = function(autoFillInForSingle) { // Generate popup-list of usernames + descriptions browser.runtime.sendMessage({ action: 'popup_login', - args: [ [ `${kpxc.credentials[0].login} (${kpxc.credentials[0].name})` ] ] + args: [ `${kpxc.credentials[0].login} (${kpxc.credentials[0].name})` ] }); } else if (kpxc.credentials.length > 1 || (kpxc.credentials.length > 0 && (!kpxc.settings.autoFillSingleEntry || !autoFillInForSingle))) { kpxc.preparePageForMultipleCredentials(kpxc.credentials); @@ -1063,7 +1076,7 @@ kpxc.preparePageForMultipleCredentials = function(credentials) { // Generate popup-list of usernames + descriptions browser.runtime.sendMessage({ action: 'popup_login', - args: [ usernames ] + args: usernames }); // Initialize autocomplete for username fields @@ -1311,16 +1324,14 @@ kpxc.fillWithSpecificLogin = function(id) { kpxc.setValueWithChange(kpxc.u, kpxc.credentials[id].login); combination = kpxcFields.getCombination('username', kpxc.u); browser.runtime.sendMessage({ - action: 'page_set_login_id', - args: [ id ] + action: 'page_set_login_id', args: id }); kpxc.u.focus(); } if (kpxc.p) { kpxc.setValueWithChange(kpxc.p, kpxc.credentials[id].password); browser.runtime.sendMessage({ - action: 'page_set_login_id', - args: [ id ] + action: 'page_set_login_id', args: id }); combination = kpxcFields.getCombination('password', kpxc.p); } @@ -1356,7 +1367,7 @@ kpxc.fillIn = function(combination, onlyPassword, suppressWarnings) { if (uField && (!onlyPassword || _singleInputEnabledForPage)) { kpxc.setValueWithChange(uField, kpxc.credentials[0].login); browser.runtime.sendMessage({ - action: 'page_set_login_id', args: [ 0 ] + action: 'page_set_login_id', args: 0 }); filledIn = true; } @@ -1365,7 +1376,7 @@ kpxc.fillIn = function(combination, onlyPassword, suppressWarnings) { kpxc.setValueWithChange(pField, kpxc.credentials[0].password); pField.setAttribute('unchanged', true); browser.runtime.sendMessage({ - action: 'page_set_login_id', args: [ 0 ] + action: 'page_set_login_id', args: 0 }); filledIn = true; } @@ -1393,7 +1404,7 @@ kpxc.fillIn = function(combination, onlyPassword, suppressWarnings) { if (uField && (!onlyPassword || _singleInputEnabledForPage)) { kpxc.setValueWithChange(uField, kpxc.credentials[combination.loginId].login); browser.runtime.sendMessage({ - action: 'page_set_login_id', args: [ combination.loginId ] + action: 'page_set_login_id', args: combination.loginId }); filledIn = true; } @@ -1402,7 +1413,7 @@ kpxc.fillIn = function(combination, onlyPassword, suppressWarnings) { kpxc.setValueWithChange(pField, kpxc.credentials[combination.loginId].password); pField.setAttribute('unchanged', true); browser.runtime.sendMessage({ - action: 'page_set_login_id', args: [ combination.loginId ] + action: 'page_set_login_id', args: combination.loginId }); filledIn = true; } @@ -1724,7 +1735,7 @@ kpxc.addToSitePreferences = async function(sites) { browser.runtime.sendMessage({ action: 'username_field_detected', - args: [ false ] + args: false }); }; diff --git a/keepassxc-browser/manifest.json b/keepassxc-browser/manifest.json index cedf988..0225a14 100755 --- a/keepassxc-browser/manifest.json +++ b/keepassxc-browser/manifest.json @@ -1,8 +1,8 @@ { "manifest_version": 2, "name": "KeePassXC-Browser", - "version": "1.5.2", - "version_name": "1.5.2", + "version": "1.5.3", + "version_name": "1.5.3", "description": "__MSG_extensionDescription__", "author": "KeePassXC Team", "icons": { @@ -48,10 +48,6 @@ "matches": [ "<all_urls>" ], - "exclude_matches": [ - "*://*/*.xml", - "*://*/*.xsd" - ], "js": [ "browser-polyfill.min.js", "global.js", diff --git a/keepassxc-browser/options/options.js b/keepassxc-browser/options/options.js index cd7f9f0..20aaf59 100644 --- a/keepassxc-browser/options/options.js +++ b/keepassxc-browser/options/options.js @@ -111,7 +111,7 @@ options.initGeneralSettings = function() { $('#tab-general-settings input#defaultGroup').val(options.settings['defaultGroup']); $('#tab-general-settings input[type=radio]').each(function() { - if ($(this).val() === options.settings[$(this).attr('name')]) { + if ($(this).val() === String(options.settings[$(this).attr('name')])) { $(this).attr('checked', options.settings[$(this).attr('name')]); } }); |