Fixes for context menus in firefox

This commit is contained in:
Kyle Spearrin 2017-01-20 23:20:09 -05:00
parent 94bc17bd54
commit e4007659da
2 changed files with 24 additions and 9 deletions

View File

@ -31,7 +31,8 @@ chrome.commands.onCommand.addListener(function (command) {
var loadMenuRan = false,
loginToAutoFill = null,
pageDetailsToAutoFill = [],
autofillTimeout = null;
autofillTimeout = null,
menuOptionsLoaded = [];
chrome.runtime.onMessage.addListener(function (msg, sender, sendResponse) {
if (msg.command === 'loggedIn' || msg.command === 'unlocked' || msg.command === 'locked') {
@ -156,6 +157,15 @@ function buildContextMenu(callback) {
contexts: ['all'],
title: i18nService.autoFill
}, function () {
if (utilsService.isFirefox()) {
// Firefox does not support writing to the clipboard from background
buildingContextMenu = false;
if (callback) {
callback();
}
return;
}
chrome.contextMenus.create({
type: 'normal',
id: 'copy-username',
@ -220,7 +230,7 @@ chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
});
chrome.windows.onFocusChanged.addListener(function (windowId) {
if (!windowId || windowId < 0) {
if (windowId === null || windowId < 0) {
return;
}
@ -257,10 +267,12 @@ function loadMenuAndUpdateBadge(url, tabId, loadContextMenuOptions) {
chrome.browserAction.setBadgeBackgroundColor({ color: '#294e5f' });
menuOptionsLoaded = [];
loginService.getAllDecryptedForDomain(tabDomain).then(function (logins) {
sortLogins(logins);
for (var i = 0; i < logins.length; i++) {
if (loadContextMenuOptions) {
for (var i = 0; i < logins.length; i++) {
loadLoginContextMenuOptions(logins[i]);
}
}
@ -578,12 +590,11 @@ function loadNoLoginsContextMenuOptions(noLoginsMessage) {
loadContextMenuOptions(noLoginsMessage, 'noop', null);
}
var loadingContextMenuOptions = false;
function loadContextMenuOptions(title, idSuffix, login) {
if (loadingContextMenuOptions) {
if (menuOptionsLoaded.indexOf(idSuffix) > -1) {
return;
}
loadingContextMenuOptions = true;
menuOptionsLoaded.push(idSuffix);
if (!login || (login.password && login.password !== '')) {
chrome.contextMenus.create({
@ -595,6 +606,11 @@ function loadContextMenuOptions(title, idSuffix, login) {
});
}
if (utilsService.isFirefox()) {
// Firefox does not support writing to the clipboard from background
return;
}
if (!login || (login.username && login.username !== '')) {
chrome.contextMenus.create({
type: 'normal',
@ -614,8 +630,6 @@ function loadContextMenuOptions(title, idSuffix, login) {
title: title
});
}
loadingContextMenuOptions = false;
}
// TODO: Fix callback hell by moving to promises

View File

@ -70,6 +70,7 @@
"contextMenus",
"storage",
"unlimitedStorage",
"clipboardWrite",
"http://*/*",
"https://*/*"
],