aboutsummaryrefslogtreecommitdiffstats
path: root/vimiumFrontend.js
diff options
context:
space:
mode:
authorPhil Crosby2009-11-27 00:02:45 -0800
committerPhil Crosby2009-11-27 00:02:45 -0800
commit6042b7faaede2771d9589037f6fb6cff9fbcb99b (patch)
tree8be013bea3907fa5dedcbcae8e00600cb5db246e /vimiumFrontend.js
parentb44455fc6aba49b05bb684552ff63f14e7095328 (diff)
downloadvimium-6042b7faaede2771d9589037f6fb6cff9fbcb99b.tar.bz2
Persist the current zoom level to local storage, and restore the page zoom level the next time that page is loaded.
Diffstat (limited to 'vimiumFrontend.js')
-rw-r--r--vimiumFrontend.js33
1 files changed, 29 insertions, 4 deletions
diff --git a/vimiumFrontend.js b/vimiumFrontend.js
index 7aeb7118..41de1949 100644
--- a/vimiumFrontend.js
+++ b/vimiumFrontend.js
@@ -7,15 +7,14 @@ var keyCodes = { ESC: 27 };
var insertMode = false;
var keyPort;
var settingPort;
+var saveZoomLevelPort;
// TODO(philc): This should be pulled from the extension's storage when the page loads.
var currentZoomLevel = 100;
function getSetting(key) {
if (!settingPort)
- {
settingPort = chrome.extension.connect({ name: "getSetting" });
- }
settingPort.postMessage({ key: key });
}
@@ -28,6 +27,9 @@ function initializeFrontend() {
document.addEventListener("focus", onFocusCapturePhase, true);
document.addEventListener("blur", onBlurCapturePhase, true);
+ var getZoomLevelPort = chrome.extension.connect({ name: "getZoomLevel" });
+ getZoomLevelPort.postMessage({ domain: window.location.host });
+
// Send the key to the key handler in the background page.
keyPort = chrome.extension.connect({name: "keyDown"});
@@ -57,6 +59,11 @@ function initializeFrontend() {
port.onMessage.addListener(function (args) {
if (getCurrentUrlHandlers.length > 0) { getCurrentUrlHandlers.pop()(args.url); }
});
+ } else if (port.name == "returnZoomLevel") {
+ port.onMessage.addListener(function (args) {
+ currentZoomLevel = args.zoomLevel;
+ setPageZoomLevel(currentZoomLevel);
+ });
} else if (port.name == "returnSetting") {
port.onMessage.addListener(setSetting);
}
@@ -70,10 +77,28 @@ function initializeFrontend() {
};
/*
+ * Asks the background page to persist the zoom level for the given domain to localStorage.
+ */
+function saveZoomLevel(domain, zoomLevel) {
+ if (!saveZoomLevelPort)
+ saveZoomLevelPort = chrome.extension.connect({ name: "saveZoomLevel" });
+ saveZoomLevelPort.postMessage({ domain: domain, zoomLevel: zoomLevel });
+}
+
+/*
* Zoom in increments of 20%; this matches chrome's CMD+ and CMD- keystrokes.
*/
-function zoomIn() { document.body.style.zoom = (currentZoomLevel += 20) + "%"; }
-function zoomOut() { document.body.style.zoom = (currentZoomLevel -= 20) + "%"; }
+function setPageZoomLevel(zoomLevel) { document.body.style.zoom = zoomLevel + "%"; }
+
+function zoomIn() {
+ setPageZoomLevel(currentZoomLevel += 20);
+ saveZoomLevel(window.location.host, currentZoomLevel);
+}
+
+function zoomOut() {
+ setPageZoomLevel(currentZoomLevel -= 20);
+ saveZoomLevel(window.location.host, currentZoomLevel);
+}
function scrollToBottom() { window.scrollTo(0, document.body.scrollHeight); }
function scrollToTop() { window.scrollTo(0, 0); }