aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--background_page.html17
-rw-r--r--vimiumFrontend.js38
2 files changed, 28 insertions, 27 deletions
diff --git a/background_page.html b/background_page.html
index 0e47bbf7..4763c0d6 100644
--- a/background_page.html
+++ b/background_page.html
@@ -69,7 +69,7 @@
};
var sendRequestHandlers = {
- getCompletionKeys: getCompletionKeys,
+ getCompletionKeys: getCompletionKeysRequest,
getLinkHintCss: getLinkHintCss,
openUrlInNewTab: openUrlInNewTab,
openUrlInCurrentTab: openUrlInCurrentTab,
@@ -234,8 +234,11 @@
/**
* Returns the keys that can complete a valid command given the current key queue.
*/
- function getCompletionKeys(request) {
- return {completionKeys: generateCompletionKeys()};
+ function getCompletionKeysRequest(request) {
+ return { name: "refreshCompletionKeys",
+ completionKeys: generateCompletionKeys(),
+ validFirstKeys: validFirstKeys
+ };
}
/**
@@ -500,7 +503,7 @@
populateValidFirstKeys();
populateSingleKeyCommands();
- sendRequestToAllTabs({ name: "refreshCompletionKeys", completionKeys: generateCompletionKeys() });
+ sendRequestToAllTabs(getCompletionKeysRequest());
}
/*
@@ -590,10 +593,8 @@
// If we haven't sent the completion keys piggybacked on executePageCommand,
// send them by themselves.
- if (!refreshedCompletionKeys)
- {
- var port = chrome.tabs.connect(tabId, { name: "refreshCompletionKeys" });
- port.postMessage({ completionKeys: generateCompletionKeys(newKeyQueue) });
+ if (!refreshedCompletionKeys) {
+ chrome.tabs.sendRequest(tabId, getCompletionKeysRequest(), null);
}
return newKeyQueue;
diff --git a/vimiumFrontend.js b/vimiumFrontend.js
index b14e02cc..763d6ed8 100644
--- a/vimiumFrontend.js
+++ b/vimiumFrontend.js
@@ -21,6 +21,7 @@ var saveZoomLevelPort;
var isEnabledForUrl = true;
// The user's operating system.
var currentCompletionKeys;
+var validFirstKeys;
var linkHintCss;
// TODO(philc): This should be pulled from the extension's storage when the page loads.
@@ -74,20 +75,21 @@ function initializePreDomReady() {
keyPort = chrome.extension.connect({ name: "keyDown" });
chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
- if (request.name == "hideUpgradeNotification")
+ if (request.name == "hideUpgradeNotification") {
HUD.hideUpgradeNotification();
- else if (request.name == "showUpgradeNotification" && isEnabledForUrl)
+ } else if (request.name == "showUpgradeNotification" && isEnabledForUrl) {
HUD.showUpgradeNotification(request.version);
- else if (request.name == "showHelpDialog")
+ } else if (request.name == "showHelpDialog") {
if (isShowingHelpDialog)
hideHelpDialog();
else
showHelpDialog(request.dialogHtml, request.frameId);
- else if (request.name == "focusFrame")
- if(frameId == request.frameId)
+ } else if (request.name == "focusFrame") {
+ if (frameId == request.frameId)
focusThisFrame(request.highlight);
- else if (request.name == "refreshCompletionKeys")
- refreshCompletionKeys(request.completionKeys);
+ } else if (request.name == "refreshCompletionKeys") {
+ refreshCompletionKeys(request);
+ }
sendResponse({}); // Free up the resources used by this open connection.
});
@@ -102,7 +104,7 @@ function initializePreDomReady() {
}
}
- refreshCompletionKeys(args.completionKeys);
+ refreshCompletionKeys(args);
});
}
else if (port.name == "getScrollPosition") {
@@ -130,10 +132,6 @@ function initializePreDomReady() {
});
} else if (port.name == "returnSetting") {
port.onMessage.addListener(setSetting);
- } else if (port.name == "refreshCompletionKeys") {
- port.onMessage.addListener(function (args) {
- refreshCompletionKeys(args.completionKeys);
- });
}
});
}
@@ -460,13 +458,15 @@ function checkIfEnabledForUrl() {
});
}
-function refreshCompletionKeys(completionKeys) {
- if (completionKeys)
- currentCompletionKeys = completionKeys;
- else
- chrome.extension.sendRequest({handler: "getCompletionKeys"}, function (response) {
- currentCompletionKeys = response.completionKeys;
- });
+function refreshCompletionKeys(response) {
+ if (response) {
+ currentCompletionKeys = response.completionKeys;
+
+ if (response.validFirstKeys)
+ validFirstKeys = response.validFirstKeys;
+ } else {
+ chrome.extension.sendRequest({ handler: "getCompletionKeys" }, refreshCompletionKeys);
+ }
}
function onFocusCapturePhase(event) {