aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--background_page.html35
-rw-r--r--vimiumFrontend.js5
2 files changed, 33 insertions, 7 deletions
diff --git a/background_page.html b/background_page.html
index 94389436..8467672e 100644
--- a/background_page.html
+++ b/background_page.html
@@ -342,15 +342,36 @@
delete framesForTab[tab.id];
}
+ /* Updates the browserAction icon to indicated whether Vimium is enabled or disabled on the current page.
+ * Also disables Vimium if it is currently enabled but should be disabled according to the url blacklist.
+ * This lets you disable Vimium on a page without needing to reload.
+ *
+ * Three situations are considered:
+ * 1. Active tab is disabled -> disable icon
+ * 2. Active tab is enabled and should be enabled -> enable icon
+ * 3. Active tab is enabled but should be disabled -> disable icon and disable vimium
+ */
function updateActiveState(tabId) {
if (openTabs[tabId]) {
- var isEnabled = isEnabledForUrl({url: openTabs[tabId].url}).isEnabledForUrl;
- var iconPath = isEnabled ? "icons/icon48.png" : "icons/icon48disabled.png";
- chrome.browserAction.setIcon({path: iconPath});
-
- if (!isEnabled) {
- chrome.tabs.connect(tabId, { name: "disableVimium" }).postMessage();
- }
+ var returnPort = chrome.tabs.connect(tabId, { name: "getActiveState" });
+ returnPort.onMessage.addListener(function(response) {
+ var isCurrentlyEnabled = response.enabled;
+ var shouldBeEnabled = isEnabledForUrl({url: openTabs[tabId].url}).isEnabledForUrl;
+ var enabledIcon = "icons/icon48.png";
+ var disabledIcon = "icons/icon48disabled.png";
+
+ if (isCurrentlyEnabled) {
+ if (shouldBeEnabled) {
+ chrome.browserAction.setIcon({ path: enabledIcon });
+ } else {
+ chrome.browserAction.setIcon({ path: disabledIcon });
+ chrome.tabs.connect(tabId, { name: "disableVimium" }).postMessage();
+ }
+ } else {
+ chrome.browserAction.setIcon({ path: disabledIcon });
+ }
+ });
+ returnPort.postMessage();
}
}
diff --git a/vimiumFrontend.js b/vimiumFrontend.js
index 80a9dd3b..f0808541 100644
--- a/vimiumFrontend.js
+++ b/vimiumFrontend.js
@@ -177,6 +177,10 @@ function initializePreDomReady() {
port.onMessage.addListener(function (args) {
refreshCompletionKeys(args.completionKeys);
});
+ } else if (port.name == "getActiveState") {
+ port.onMessage.addListener(function(args) {
+ port.postMessage({ enabled: isEnabledForUrl });
+ });
} else if (port.name == "disableVimium") {
port.onMessage.addListener(function(args) {
disableVimium();
@@ -205,6 +209,7 @@ function disableVimium() {
document.removeEventListener("focus", onFocusCapturePhase, true);
document.removeEventListener("blur", onBlurCapturePhase, true);
document.removeEventListener("DOMActivate", onDOMActivate, true);
+ isEnabledForUrl = false;
}
/*