From 39e8ed7ceb295999edc18053d2c1540ffb934393 Mon Sep 17 00:00:00 2001 From: Andy Brandt Date: Wed, 4 Oct 2017 21:59:38 -0500 Subject: [PATCH] fix context menu not showing in firefox. fixes #16 also remove shortcut keys from context menu items, since it wasn't working in firefox anyways. --- src/background/event.js | 5 +++++ src/background/init.js | 23 ++++++++++++++--------- src/background/utils.js | 8 ++++++++ src/manifest.json | 1 + src/options/options.js | 9 +++++---- 5 files changed, 33 insertions(+), 13 deletions(-) create mode 100644 src/background/utils.js diff --git a/src/background/event.js b/src/background/event.js index 88faaf8..5a2c44f 100644 --- a/src/background/event.js +++ b/src/background/event.js @@ -220,6 +220,10 @@ cipevent.pageClearLogins = function(callback, tab) { callback(); } +cipevent.isFirefox = function(callback) { + callback(utils.isFirefox); +} + // all methods named in this object have to be declared BEFORE this! cipevent.messageHandlers = { 'add_credentials': keepass.addCredentials, @@ -245,4 +249,5 @@ cipevent.messageHandlers = { 'stack_add': browserAction.stackAdd, 'update_available_keepasshttp': cipevent.onUpdateAvailableKeePassHttp, 'generate_password': keepass.generatePassword, + 'is_firefox': cipevent.isFirefox }; diff --git a/src/background/init.js b/src/background/init.js index ce34cce..febd5f4 100644 --- a/src/background/init.js +++ b/src/background/init.js @@ -83,7 +83,7 @@ if (browser.webRequest.onAuthRequired) { var reqType = 'blocking'; var opts = { urls: [''] }; - if (/Chrome/.test(navigator.userAgent) && /Google/.test(navigator.vendor)) { + if (utils.isFirefox) { handleReq = httpAuth.handleRequestCallback; reqType = 'asyncBlocking'; } @@ -98,13 +98,18 @@ if (browser.webRequest.onAuthRequired) { */ browser.runtime.onMessage.addListener(cipevent.onMessage); +var menuContexts = ['editable']; + +if (utils.isFirefox) { + menuContexts.push('password'); +} /** * Add context menu entry for filling in username + password */ browser.contextMenus.create({ - "title": "Fill &User + Pass", - "contexts": [ "editable" ], + "title": "Fill User + Pass", + "contexts": menuContexts, "onclick": function(info, tab) { browser.tabs.sendMessage(tab.id, { action: "fill_user_pass" @@ -116,8 +121,8 @@ browser.contextMenus.create({ * Add context menu entry for filling in only password which matches for given username */ browser.contextMenus.create({ - "title": "Fill &Pass Only", - "contexts": [ "editable" ], + "title": "Fill Pass Only", + "contexts": menuContexts, "onclick": function(info, tab) { browser.tabs.sendMessage(tab.id, { action: "fill_pass_only" @@ -129,8 +134,8 @@ browser.contextMenus.create({ * Add context menu entry for creating icon for generate-password dialog */ browser.contextMenus.create({ - "title": "Show Password &Generator Icons", - "contexts": [ "editable" ], + "title": "Show Password Generator Icons", + "contexts": menuContexts, "onclick": function(info, tab) { browser.tabs.sendMessage(tab.id, { action: "activate_password_generator" @@ -142,8 +147,8 @@ browser.contextMenus.create({ * Add context menu entry for creating icon for generate-password dialog */ browser.contextMenus.create({ - "title": "&Save credentials", - "contexts": [ "editable" ], + "title": "Save credentials", + "contexts": menuContexts, "onclick": function(info, tab) { browser.tabs.sendMessage(tab.id, { action: "remember_credentials" diff --git a/src/background/utils.js b/src/background/utils.js new file mode 100644 index 0000000..74b680b --- /dev/null +++ b/src/background/utils.js @@ -0,0 +1,8 @@ + +var utils = {}; + +utils.isFirefox = false; + +if (!(/Chrome/.test(navigator.userAgent) && /Google/.test(navigator.vendor))) { + utils.isFirefox = true; +} diff --git a/src/manifest.json b/src/manifest.json index f7c4df7..554ad94 100644 --- a/src/manifest.json +++ b/src/manifest.json @@ -31,6 +31,7 @@ "background/aes.js", "background/cryptoHelpers.js", "background/utf8.js", + "background/utils.js", "background/keepass.js", "background/httpauth.js", "background/browserAction.js", diff --git a/src/options/options.js b/src/options/options.js index 41ce09d..a71a734 100644 --- a/src/options/options.js +++ b/src/options/options.js @@ -296,8 +296,9 @@ options.initSpecifiedCredentialFields = function() { options.initAbout = function() { var manifest = browser.runtime.getManifest(); $("#tab-about em.versionCIP").text(manifest.version); - if (!(/Chrome/.test(navigator.userAgent) && /Google/.test(navigator.vendor))) { - /* Not Chrome or Chromium */ - $("#chrome-web-store-link").remove(); - } + browser.runtime.sendMessage({ action: 'is_firefox' }).then((isFirefox) => { + if (isFirefox) { + $("#chrome-web-store-link").remove(); + } + }); }