diff --git a/CHANGELOG b/CHANGELOG index 3e638bd..287058e 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,9 @@ +0.2.5 (2107-07-21) +========================= +- Fixed incorrect return value in keepass.getCryptoKey +- Added a better error message handling +- Added an error message when Native Messaging is disabled in KeePassXC + 0.2.4 (2017-07-11) ========================= - Changed comparison operators to strict ones (and some code cleaning) diff --git a/keepassxc-browser/background/browserAction.js b/keepassxc-browser/background/browserAction.js index 75bef16..310f14f 100644 --- a/keepassxc-browser/background/browserAction.js +++ b/keepassxc-browser/background/browserAction.js @@ -1,8 +1,4 @@ -window.browser = (function () { - return window.msBrowser || - window.browser || - window.chrome; -})(); +window.browser = (function () { return window.msBrowser || window.browser || window.chrome; })(); var browserAction = {}; diff --git a/keepassxc-browser/background/event.js b/keepassxc-browser/background/event.js index df48312..4e4d208 100644 --- a/keepassxc-browser/background/event.js +++ b/keepassxc-browser/background/event.js @@ -1,14 +1,10 @@ -window.browser = (function () { - return window.msBrowser || - window.browser || - window.chrome; -})(); +window.browser = (function () { return window.msBrowser || window.browser || window.chrome; })(); var event = {}; event.onMessage = function(request, sender, callback) { if (request.action in event.messageHandlers) { - //console.log("onMessage(" + request.action + ") for #" + sender.tab.id); + //console.log('onMessage(' + request.action + ') for #' + sender.tab.id); if (!sender.hasOwnProperty('tab') || sender.tab.id < 1) { sender.tab = {}; sender.tab.id = page.currentTabId; @@ -48,7 +44,7 @@ event.invoke = function(handler, callback, senderTabId, args, secondTime) { page.removePageInformationFromNotExistingTabs(); browser.tabs.get(senderTabId, (tab) => { - //browser.tabs.query({"active": true, "windowId": browser.windows.WINDOW_ID_CURRENT}, function(tabs) { + //browser.tabs.query({'active': true, 'windowId': browser.windows.WINDOW_ID_CURRENT}, function(tabs) { //if (tabs.length === 0) // return; // For example: only the background devtools or a popup are opened //var tab = tabs[0]; @@ -92,6 +88,24 @@ event.onShowAlert = function(callback, tab, message) { else { alert(message); } } +event.showStatus = function(configured, tab, callback) { + let keyId = null; + if (configured) { + keyId = keepass.keyRing[keepass.databaseHash].id; + } + + browserAction.showDefault(null, tab); + callback({ + identifier: keyId, + configured: configured, + databaseClosed: keepass.isDatabaseClosed, + keePassXCAvailable: keepass.isKeePassXCAvailable, + encryptionKeyUnrecognized: keepass.isEncryptionKeyUnrecognized, + associated: keepass.isAssociated(), + error: page.tabs[tab.id].errorMessage + }); +} + event.onLoadSettings = function(callback, tab) { page.settings = (typeof(localStorage.settings) === 'undefined') ? {} : JSON.parse(localStorage.settings); } @@ -119,22 +133,7 @@ event.onSaveSettings = function(callback, tab, settings) { event.onGetStatus = function(callback, tab) { keepass.testAssociation((response) => { keepass.isConfigured((configured) => { - let keyId = null; - if (configured) { - keyId = keepass.keyRing[keepass.databaseHash].id; - } - - browserAction.showDefault(null, tab); - console.log(page.tabs[tab.id].errorMessage); - callback({ - identifier: keyId, - configured: configured, - databaseClosed: keepass.isDatabaseClosed, - keePassXCAvailable: keepass.isKeePassXCAvailable, - encryptionKeyUnrecognized: keepass.isEncryptionKeyUnrecognized, - associated: keepass.isAssociated(), - error: page.tabs[tab.id].errorMessage - }); + event.showStatus(configured, tab, callback); }); }, tab); } @@ -150,22 +149,7 @@ event.onReconnect = function(callback, tab) { if (gdRes) { keepass.testAssociation((response) => { keepass.isConfigured((configured) => { - let keyId = null; - if (configured) { - keyId = keepass.keyRing[keepass.databaseHash].id; - } - - browserAction.showDefault(null, tab); - console.log(page.tabs[tab.id].errorMessage); - callback({ - identifier: keyId, - configured: configured, - databaseClosed: keepass.isDatabaseClosed, - keePassXCAvailable: keepass.isKeePassXCAvailable, - encryptionKeyUnrecognized: keepass.isEncryptionKeyUnrecognized, - associated: keepass.isAssociated(), - error: page.tabs[tab.id].errorMessage - }); + event.showStatus(configured, tab, callback); }); }, tab); } @@ -277,5 +261,5 @@ event.messageHandlers = { 'update_available_keepassxc': event.onUpdateAvailableKeePassXC, 'generate_password': keepass.generatePassword, 'copy_password': keepass.copyPassword, - "reconnect": event.onReconnect + 'reconnect': event.onReconnect }; \ No newline at end of file diff --git a/keepassxc-browser/background/init.js b/keepassxc-browser/background/init.js index c2f1150..934777b 100644 --- a/keepassxc-browser/background/init.js +++ b/keepassxc-browser/background/init.js @@ -7,11 +7,7 @@ keepass.changePublicKeys(null, (pkRes) => { keepass.getDatabaseHash((gdRes) => {}, null); }); -window.browser = (function () { - return window.msBrowser || - window.browser || - window.chrome; -})(); +window.browser = (function () { return window.msBrowser || window.browser || window.chrome; })(); // Set initial tab-ID browser.tabs.query({'active': true, 'windowId': browser.windows.WINDOW_ID_CURRENT}, (tabs) => { @@ -30,7 +26,7 @@ let _interval = 250; */ browser.tabs.onCreated.addListener((tab) => { if (tab.id > 0) { - //console.log("browser.tabs.onCreated(" + tab.id+ ")"); + //console.log('browser.tabs.onCreated(' + tab.id+ ')'); if (tab.selected) { page.currentTabId = tab.id; event.invoke(page.switchTab, null, tab.id, []); @@ -61,11 +57,11 @@ browser.tabs.onActivated.addListener((activeInfo) => { browserAction.removeRememberPopup(null, {'id': page.currentTabId}, true); browser.tabs.get(activeInfo.tabId, (info) => { - //console.log(info.id + ": " + info.url); + //console.log(info.id + ': ' + info.url); if (info && info.id) { page.currentTabId = info.id; if (info.status === 'complete') { - //console.log("event.invoke(page.switchTab, null, "+info.id + ", []);"); + //console.log('event.invoke(page.switchTab, null, '+info.id + ', []);'); event.invoke(page.switchTab, null, info.id, []); } } diff --git a/keepassxc-browser/background/keepass.js b/keepassxc-browser/background/keepass.js index 4ce6be0..3af03f0 100644 --- a/keepassxc-browser/background/keepass.js +++ b/keepassxc-browser/background/keepass.js @@ -15,16 +15,12 @@ keepass.nativePort = null; keepass.keySize = 24; keepass.latestVersionUrl = 'https://api.github.com/repos/keepassxreboot/keepassxc/releases/latest'; keepass.cacheTimeout = 30 * 1000; // milliseconds -keepass.databaseHash = "no-hash"; //no-hash = KeePassXC is too old and does not return a hash value +keepass.databaseHash = 'no-hash'; //no-hash = KeePassXC is too old and does not return a hash value keepass.keyRing = (typeof(localStorage.keyRing) === 'undefined') ? {} : JSON.parse(localStorage.keyRing); keepass.keyId = 'keepassxc-browser-cryptokey-name'; keepass.keyBody = 'keepassxc-browser-key'; -window.browser = (function () { - return window.msBrowser || - window.browser || - window.chrome; -})(); +window.browser = (function () { return window.msBrowser || window.browser || window.chrome; })(); const kpActions = { SET_LOGIN: 'set-login', @@ -34,7 +30,36 @@ const kpActions = { TEST_ASSOCIATE: 'test-associate', GET_DATABASE_HASH: 'get-databasehash', CHANGE_PUBLIC_KEYS: 'change-public-keys' -} +}; + +const kpErrors = { + UNKNOWN_ERROR: 0, + DATABASE_NOT_OPENED: 1, + DATABASE_HASH_NOT_RECEIVED: 2, + CLIENT_PUBLIC_KEY_NOT_RECEIVED: 3, + CANNOT_DECRYPT_MESSAGE: 4, + TIMEOUT_OR_NOT_CONNECTED: 5, + ACTION_CANCELLED_OR_DENIED: 6, + PUBLIC_KEY_NOT_FOUND: 7, + ASSOCIATION_FAILED: 8, + KEY_CHANGE_FAILED: 9, + ENCRYPTION_KEY_UNRECOGNIZED: 10, + NO_SAVED_DATABASES_FOUND: 11, + errorMessages : { + 0: { msg: 'Unknown error' }, + 1: { msg: 'Database not opened' }, + 2: { msg: 'Database hash not received' }, + 3: { msg: 'Client public key not reveiced' }, + 4: { msg: 'Cannot decrypt message' }, + 5: { msg: 'Timeout or not connected to KeePassXC' }, + 6: { msg: 'Action cancelled or denied' }, + 7: { msg: 'Cannot encrypt message or public key not found. Is Native Messaging enabled in KeePassXC?' }, + 8: { msg: 'KeePassXC association failed, try again.' }, + 9: { msg: 'Key change was not successful.' }, + 10: { msg: 'Encryption key is not recognized' }, + 11: { msg: 'No saved databases found.' } + } +}; keepass.addCredentials = function(callback, tab, username, password, url) { keepass.updateCredentials(callback, tab, null, username, password, url); @@ -150,7 +175,7 @@ keepass.retrieveCredentials = function (callback, tab, url, submiturl, forceCall entries = parsed.entries; keepass.updateLastUsed(keepass.databaseHash); if (entries.length === 0) { - //questionmark-icon is not triggered, so we have to trigger for the normal symbol + // questionmark-icon is not triggered, so we have to trigger for the normal symbol browserAction.showDefault(null, tab); } callback(entries); @@ -309,7 +334,7 @@ keepass.associate = function(callback, tab) { const id = parsed.id; if (!keepass.verifyResponse(parsed, response.nonce)) { - page.tabs[tab.id].errorMessage = 'KeePassXC association failed, try again.'; + keepass.handleError(tab, kpErrors.ERROR_KEEPASS_ASSOCIATION_FAILED); } else { keepass.setCryptoKey(id, key); // Save the current public key as id key for the database @@ -347,9 +372,7 @@ keepass.testAssociation = function (callback, tab, triggerUnlock) { if (!keepass.serverPublicKey) { if (tab && page.tabs[tab.id]) { - const errorMessage = 'No KeePassXC public key available.'; - page.tabs[tab.id].errorMessage = errorMessage; - console.log(errorMessage); + handleError(tab, kpErrors.ERROR_KEEPASS_PUBLIC_KEY_NOT_FOUND); } callback(false); return false; @@ -359,11 +382,9 @@ keepass.testAssociation = function (callback, tab, triggerUnlock) { const nonce = nacl.randomBytes(keepass.keySize); const {dbid, dbkey} = keepass.getCryptoKey(); - if (dbkey === null) { + if (dbkey === null || dbid === null) { if (tab && page.tabs[tab.id]) { - const errorMessage = 'No saved databases found.'; - page.tabs[tab.id].errorMessage = errorMessage; - console.log(errorMessage); + keepass.handleError(tab, kpErrors.ERROR_KEEPASS_NO_SAVED_DATABASES_FOUND); } callback(false); return false; @@ -395,16 +416,12 @@ keepass.testAssociation = function (callback, tab, triggerUnlock) { const hash = response.hash || 0; keepass.deleteKey(hash); keepass.isEncryptionKeyUnrecognized = true; - const errMsg = 'Encryption key is not recognized!'; - console.log(errMsg); - page.tabs[tab.id].errorMessage = errMsg; + keepass.handleError(tab, kpErrors.ERROR_KEEPASS_ENCRYPTION_KEY_UNRECOGNIZED); keepass.associated.value = false; keepass.associated.hash = null; } else if (!keepass.isAssociated()) { - const errMsg = 'Association was not successful!'; - console.log(errMsg); - page.tabs[tab.id].errorMessage = errMsg; + keepass.handleError(tab, kpErrors.ERROR_KEEPASS_ASSOCIATION_FAILED); } else { if (tab && page.tabs[tab.id]) { @@ -424,7 +441,7 @@ keepass.testAssociation = function (callback, tab, triggerUnlock) { keepass.getDatabaseHash = function (callback, tab, triggerUnlock) { if (!keepass.isConnected) { - page.tabs[tab.id].errorMessage = 'Not connected with KeePassXC.'; + keepass.handleError(tab, kpErrors.ERROR_KEEPASS_TIMEOUT_OR_NOT_CONNECTED); callback([]); return; } @@ -440,9 +457,16 @@ keepass.getDatabaseHash = function (callback, tab, triggerUnlock) { action: kpAction }; + const encrypted = keepass.encrypt(messageData, nonce); + if (encrypted.length <= 0) { + keepass.handleError(tab, kpErrors.ERROR_KEEPASS_PUBLIC_KEY_NOT_FOUND); + callback(keepass.databaseHash); + return; + } + const request = { action: kpAction, - message: keepass.encrypt(messageData, nonce), + message: encrypted, nonce: keepass.b64e(nonce) }; @@ -453,9 +477,7 @@ keepass.getDatabaseHash = function (callback, tab, triggerUnlock) { const message = nacl.util.encodeUTF8(res); const parsed = JSON.parse(message); - if (parsed.hash) - { - console.log('hash reply received: ' + parsed.hash); + if (parsed.hash) { const oldDatabaseHash = keepass.databaseHash; keepass.setcurrentKeePassXCVersion(parsed.version); keepass.databaseHash = parsed.hash || 'no-hash'; @@ -469,24 +491,17 @@ keepass.getDatabaseHash = function (callback, tab, triggerUnlock) { keepass.isKeePassXCAvailable = true; callback(parsed.hash); } - else if (parsed.errorCode) - { + else if (parsed.errorCode) { keepass.databaseHash = 'no-hash'; keepass.isDatabaseClosed = true; - console.log('Error: KeePass database is not opened.'); - if (tab && page.tabs[tab.id]) { - page.tabs[tab.id].errorMessage = 'KeePass database is not opened.'; - } + keepass.handleError(tab, ERROR_KEEPASS_DATABASE_NOT_OPENED); callback(keepass.databaseHash); } } } - else - { + else { keepass.databaseHash = 'no-hash'; - if (tab && page.tabs[tab.id]) { - page.tabs[tab.id].errorMessage = response.error.length > 0 ? response.error : 'Database hash not received.'; - } + keepass.handleError(tab, response.errorCode, response.error); callback(keepass.databaseHash); } }); @@ -510,14 +525,12 @@ keepass.changePublicKeys = function(tab, callback) { nonce: nonce } - keepass.callbackOnId(keepass.nativePort.onMessage, kpAction, function(response) { + keepass.callbackOnId(keepass.nativePort.onMessage, kpAction, (response) => { keepass.setcurrentKeePassXCVersion(response.version); if (!keepass.verifyKeyResponse(response, key, nonce)) { if (tab && page.tabs[tab.id]) { - const errMsg = 'Key change was not successful.'; - page.tabs[tab.id].errorMessage = errMsg; - console.log(errMsg); + keepass.handleError(tab, kpErrors.ERROR_KEEPASS_KEY_CHANGE_FAILED); callback(false); } } @@ -525,7 +538,6 @@ keepass.changePublicKeys = function(tab, callback) { console.log('Server public key: ' + keepass.b64e(keepass.serverPublicKey)); } callback(true); - }); keepass.nativePort.postMessage(message); } @@ -541,8 +553,7 @@ keepass.isConfigured = function(callback) { callback(keepass.databaseHash in keepass.keyRing); }, null); } - else - { + else { callback(keepass.databaseHash in keepass.keyRing); } } @@ -656,7 +667,7 @@ keepass.connectToNative = function() { } keepass.onNativeMessage = function (response) { - //console.log("Received message: " + JSON.stringify(response)); + //console.log('Received message: ' + JSON.stringify(response)); } function onDisconnected() { @@ -720,9 +731,14 @@ keepass.verifyResponse = function(response, nonce, id) { } -keepass.handleError = function(tabId, errorMessage, errorCode) { - console.log('Received error ${errorCode}: ${errorMessage}'); - page.tabs[tabId].errorMessage = errorMessage; +keepass.handleError = function(tab, errorCode, errorMessage = '') { + if (errorMessage.length === 0) { + errorMessage = kpErrors.errorMessages[errorCode].msg; + } + console.log('Error ' + errorCode + ': ' + errorMessage); + if (tab && page.tabs[tab.id]) { + page.tabs[tab.id].errorMessage = errorMessage; + } } keepass.b64e = function(d) { @@ -734,12 +750,13 @@ keepass.b64d = function(d) { } keepass.getCryptoKey = function() { + let dbkey = null; + let dbid = null; if (!(keepass.databaseHash in keepass.keyRing)) { - return null; + return {dbid, dbkey}; } - const dbid = keepass.keyRing[keepass.databaseHash].id; - let dbkey = null; + dbid = keepass.keyRing[keepass.databaseHash].id; if (dbid) { dbkey = keepass.keyRing[keepass.databaseHash].key; @@ -761,7 +778,6 @@ keepass.encrypt = function(input, nonce) { return keepass.b64e(message); } } - console.log('Cannot encrypt message! Server public key needed.'); return ''; } @@ -769,9 +785,5 @@ keepass.decrypt = function(input, nonce, toStr) { const m = keepass.b64d(input); const n = keepass.b64d(nonce); const res = nacl.box.open(m, n, keepass.serverPublicKey, keepass.keyPair.secretKey); - - if (!res) { - console.log('Failed to decrypt message'); - } return res; } diff --git a/keepassxc-browser/background/page.js b/keepassxc-browser/background/page.js index f8421c3..b761219 100644 --- a/keepassxc-browser/background/page.js +++ b/keepassxc-browser/background/page.js @@ -1,8 +1,14 @@ -window.browser = (function () { - return window.msBrowser || - window.browser || - window.chrome; -})(); +window.browser = (function () { return window.msBrowser || window.browser || window.chrome; })(); + +const defaultSettings = { + checkUpdateKeePassXC: 3, + autoCompleteUsernames: true, + autoFillAndSend: true, + usePasswordGenerator: true, + autoFillSingleEntry: false, + autoRetrieveCredentials: true, + proxyPort: '19700' +} var page = {}; page.tabs = {}; @@ -14,25 +20,25 @@ page.blockedTabs = {}; page.initSettings = function() { event.onLoadSettings(); if (!('checkUpdateKeePassXC' in page.settings)) { - page.settings.checkUpdateKeePassXC = 3; + page.settings.checkUpdateKeePassXC = defaultSettings.checkUpdateKeePassXC; } if (!('autoCompleteUsernames' in page.settings)) { - page.settings.autoCompleteUsernames = true; + page.settings.autoCompleteUsernames = defaultSettings.autoCompleteUsernames; } if (!('autoFillAndSend' in page.settings)) { - page.settings.autoFillAndSend = true; + page.settings.autoFillAndSend = defaultSettings.autoFillAndSend; } if (!('usePasswordGenerator' in page.settings)) { - page.settings.usePasswordGenerator = true; + page.settings.usePasswordGenerator = defaultSettings.usePasswordGenerator; } if (!('autoFillSingleEntry' in page.settings)) { - page.settings.autoFillSingleEntry = false; + page.settings.autoFillSingleEntry = defaultSettings.autoFillSingleEntry; } if (!('autoRetrieveCredentials' in page.settings)) { - page.settings.autoRetrieveCredentials = true; + page.settings.autoRetrieveCredentials = defaultSettings.autoRetrieveCredentials; } if (!('port' in page.settings)) { - page.settings.port = '19700'; + page.settings.port = defaultSettings.proxyPort; } localStorage.settings = JSON.stringify(page.settings); } @@ -74,7 +80,7 @@ page.clearCredentials = function(tabId, complete) { } page.createTabEntry = function(tabId) { - //console.log("page.createTabEntry("+tabId+")"); + //console.log('page.createTabEntry('+tabId+')'); page.tabs[tabId] = { 'stack': [], 'errorMessage': null, diff --git a/keepassxc-browser/keepassxc-browser.js b/keepassxc-browser/keepassxc-browser.js index 2449087..eb00503 100644 --- a/keepassxc-browser/keepassxc-browser.js +++ b/keepassxc-browser/keepassxc-browser.js @@ -3,11 +3,7 @@ if (typeof browser !== 'undefined') { isFirefox = true; } -window.browser = (function () { - return window.msBrowser || - window.browser || - window.chrome; -})(); +window.browser = (function () { return window.msBrowser || window.browser || window.chrome; })(); // Initialize autocomplete feature $(this.target).find('input').autocomplete(); @@ -91,7 +87,7 @@ cipAutocomplete.elements = []; cipAutocomplete.init = function(field) { if (field.hasClass('ui-autocomplete-input')) { - //_f(credentialInputs[i].username).autocomplete("source", autocompleteSource); + //_f(credentialInputs[i].username).autocomplete('source', autocompleteSource); field.autocomplete('destroy'); } @@ -144,7 +140,7 @@ cipAutocomplete.onBlur = function() { else { const fieldId = cipFields.prepareId(jQuery(this).attr('data-cip-id')); const fields = cipFields.getCombination('username', fieldId); - if (_f(fields.password) && _f(fields.password).data('unchanged') !== true && jQuery(this).val() !== "") { + if (_f(fields.password) && _f(fields.password).data('unchanged') !== true && jQuery(this).val() !== '') { cip.fillInCredentials(fields, true, true); } } @@ -437,7 +433,7 @@ cipPassword.checkObservedElements = function() { } else if (!field.is(':visible')) { iconField.hide(); - //field.removeData("cip-password-generator"); + //field.removeData('cip-password-generator'); } else if (field.is(':visible')) { iconField.show(); @@ -558,7 +554,7 @@ cipDefine.initDescription = function() { cipDefine.prepareStep2(); cipDefine.markAllPasswordFields(jQuery('#b2c-cipDefine-fields')); } - else if (jQuery(this).data("step") === 2) { + else if (jQuery(this).data('step') === 2) { cipDefine.selection.password = null; cipDefine.prepareStep3(); cipDefine.markAllStringFields(jQuery('#b2c-cipDefine-fields')); @@ -716,8 +712,8 @@ cipDefine.markFields = function ($chooser, $pattern) { /* skip step if no entry was found if(!$found) { - alert("No username field found.\nContinue with choosing a password field."); - jQuery("button#b2c-btn-skip").click(); + alert('No username field found.\nContinue with choosing a password field.''); + jQuery('button#b2c-btn-skip').click(); } */ } @@ -743,9 +739,9 @@ cipDefine.prepareStep2 = function() { cipDefine.prepareStep3 = function() { /* skip step if no entry was found - if(!jQuery("div#b2c-cipDefine-fields").data("username") && !jQuery("div#b2c-cipDefine-fields").data("password")) { - alert("Neither an username field nor a password field were selected.\nNothing will be changed and chooser will be closed now."); - jQuery("button#b2c-btn-dismiss").click(); + if(!jQuery('div#b2c-cipDefine-fields').data('username') && !jQuery('div#b2c-cipDefine-fields').data('password')) { + alert('Neither an username field nor a password field were selected.\nNothing will be changed and chooser will be closed now.''); + jQuery('button#b2c-btn-dismiss').click(); return; } */ @@ -791,7 +787,7 @@ cipFields.setUniqueId = function(field) { } cipFields.prepareId = function(id) { - return id.replace(/[:#.,\[\]\(\)' "]/g, function(m) { return "\\"+m }); + return id.replace(/[:#.,\[\]\(\)' "]/g, function(m) { return '\\'+m }); } cipFields.getAllFields = function() { @@ -1275,7 +1271,7 @@ cip.fillInCredentials = function(combination, onlyPassword, suppressWarnings) { const fieldId = combination.password || combination.username; const field = _f(fieldId); if (field) { - const form2 = field.closest("form"); + const form2 = field.closest('form'); if (form2 && form2.length > 0) { cipForm.init(form2, combination); } diff --git a/keepassxc-browser/manifest.json b/keepassxc-browser/manifest.json index fc2ea8c..97b38a4 100644 --- a/keepassxc-browser/manifest.json +++ b/keepassxc-browser/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "keepassxc-browser", - "version": "0.2.4", + "version": "0.2.5", "description": "KeePassXC integration for modern web browsers", "author": "Sami Vänttinen", "icons": { diff --git a/keepassxc-browser/options/options.js b/keepassxc-browser/options/options.js index d8a1355..7b44586 100644 --- a/keepassxc-browser/options/options.js +++ b/keepassxc-browser/options/options.js @@ -1,8 +1,4 @@ -window.browser = (function () { - return window.msBrowser || - window.browser || - window.chrome; -})(); +window.browser = (function () { return window.msBrowser || window.browser || window.chrome; })(); if (jQuery) { var $ = jQuery.noConflict(true); diff --git a/keepassxc-browser/popups/popup.js b/keepassxc-browser/popups/popup.js index b7aa20e..0f9d83c 100644 --- a/keepassxc-browser/popups/popup.js +++ b/keepassxc-browser/popups/popup.js @@ -1,11 +1,6 @@ -window.browser = (function () { - return window.msBrowser || - window.browser || - window.chrome; -})(); +window.browser = (function () { return window.msBrowser || window.browser || window.chrome; })(); function status_response(r) { - console.log(r); $('#initial-state').hide(); $('#error-encountered').hide(); $('#need-reconfigure').hide(); @@ -28,7 +23,7 @@ function status_response(r) { $('#need-reconfigure').show(); $('#need-reconfigure-message').html(r.error); } - else if (r.error != null) { + else if (r.error !== null) { $('#error-encountered').show(); $('#error-message').html(r.error); } @@ -63,7 +58,7 @@ $(function() { browser.tabs.query({'active': true, 'windowId': browser.windows.WINDOW_ID_CURRENT}, (tabs) => { if (tabs.length === 0) return; // For example: only the background devtools or a popup are opened - var tab = tabs[0]; + let tab = tabs[0]; browser.tabs.sendMessage(tab.id, { action: 'redetect_fields' diff --git a/keepassxc-browser/popups/popup_functions.js b/keepassxc-browser/popups/popup_functions.js index a541e96..1b0b93e 100644 --- a/keepassxc-browser/popups/popup_functions.js +++ b/keepassxc-browser/popups/popup_functions.js @@ -1,8 +1,4 @@ -window.browser = (function () { - return window.msBrowser || - window.browser || - window.chrome; -})(); +window.browser = (function () { return window.msBrowser || window.browser || window.chrome; })(); var $ = jQuery.noConflict(true); var _settings = typeof(localStorage.settings) ==='undefined' ? {} : JSON.parse(localStorage.settings); diff --git a/keepassxc-browser/popups/popup_httpauth.js b/keepassxc-browser/popups/popup_httpauth.js index 057c5d6..445c4bd 100644 --- a/keepassxc-browser/popups/popup_httpauth.js +++ b/keepassxc-browser/popups/popup_httpauth.js @@ -1,13 +1,9 @@ -window.browser = (function () { - return window.msBrowser || - window.browser || - window.chrome; -})(); +window.browser = (function () { return window.msBrowser || window.browser || window.chrome; })(); $(function() { browser.runtime.getBackgroundPage(function(global) { browser.tabs.query(null, (tab) => { - //var data = global.tab_httpauth_list["tab" + tab.id]; + //const data = global.tab_httpauth_list['tab' + tab.id]; const data = global.page.tabs[tab.id].loginList; let ul = document.getElementById('login-list'); for (let i = 0; i < data.logins.length; i++) { diff --git a/keepassxc-browser/popups/popup_login.js b/keepassxc-browser/popups/popup_login.js index 616e22a..11b152a 100644 --- a/keepassxc-browser/popups/popup_login.js +++ b/keepassxc-browser/popups/popup_login.js @@ -1,8 +1,4 @@ -window.browser = (function () { - return window.msBrowser || - window.browser || - window.chrome; -})(); +window.browser = (function () { return window.msBrowser || window.browser || window.chrome; })(); $(function() { browser.runtime.getBackgroundPage(function(global) { diff --git a/keepassxc-browser/popups/popup_remember.js b/keepassxc-browser/popups/popup_remember.js index aac8413..413af3e 100644 --- a/keepassxc-browser/popups/popup_remember.js +++ b/keepassxc-browser/popups/popup_remember.js @@ -1,8 +1,4 @@ -window.browser = (function () { - return window.msBrowser || - window.browser || - window.chrome; -})(); +window.browser = (function () { return window.msBrowser || window.browser || window.chrome; })(); var _tab;