From 0edb67224d66873c1747e6d96868e94b689577b5 Mon Sep 17 00:00:00 2001 From: tunefish Date: Fri, 16 Mar 2018 19:02:56 +0100 Subject: [PATCH] Fix concurrency bug for completed request in inactive tab --- src/js/background/messageHandler.js | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/js/background/messageHandler.js b/src/js/background/messageHandler.js index f7e0669..b283c42 100644 --- a/src/js/background/messageHandler.js +++ b/src/js/background/messageHandler.js @@ -4,6 +4,7 @@ const messageHandler = { // If this were in platform we would change how the tab opens based on "new tab" link navigations such as ctrl+click LAST_CREATED_TAB_TIMER: 2000, unhideQueue: [], + activeTab: -1, init() { // Handles messages from webextension code @@ -89,6 +90,7 @@ const messageHandler = { browser.tabs.onActivated.addListener((info) => { assignManager.removeContextMenu(); + this.activeTab = info.tabId; browser.tabs.get(info.tabId).then((tab) => { assignManager.calculateContextMenu(tab); }).catch((e) => { @@ -106,11 +108,15 @@ const messageHandler = { } assignManager.removeContextMenu(); - browser.tabs.get(details.tabId).then((tab) => { - assignManager.calculateContextMenu(tab); - }).catch((e) => { - throw e; - }); + // make sure to update the context menu only if the request was completed + // for the currently active tab + if (details.tabId === this.activeTab) { + browser.tabs.get(details.tabId).then((tab) => { + assignManager.calculateContextMenu(tab); + }).catch((e) => { + throw e; + }); + } }, {urls: [""], types: ["main_frame"]}); browser.tabs.onCreated.addListener((tab) => {