aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authormrmr19932015-04-27 20:44:23 +0100
committermrmr19932015-05-29 12:06:00 +0100
commit7ff17b8a6f63b0f46fac2be27c2a2f7d82c8d458 (patch)
tree470b620f6ae5b3ae58ddb7f6c767a5a604cc814d /tests
parent0c12810c4c49ade77a1c8a8b3172857e19eb01f0 (diff)
downloadvimium-7ff17b8a6f63b0f46fac2be27c2a2f7d82c8d458.tar.bz2
Make Settings explicitly use a cache
The Settings object used by the background page now uses 1 of 3 caches, depending on the context it is available in: * localStorage - in the background page * a copy of localStorage - in non-background extension pages (options.html, popup.html, etc.) * an empty object - in all other pages (where localStorage doesn't point to the extension's localStorage object). For any extension page which is *not* the background page, a copy of localStorage is used instead of true localStorage: * Once localStorage is updated by one background page, the others can only see the updated copy. - Pages with an updated cache can't tell which changes are new, and so don't know which postUpdateHooks to run. * By copying localStorage's contents into a new object, extension pages can still access settings synchronously. - This is especially important to options.html and popup.html; they will not work without it.
Diffstat (limited to 'tests')
-rw-r--r--tests/unit_tests/settings_test.coffee3
1 files changed, 3 insertions, 0 deletions
diff --git a/tests/unit_tests/settings_test.coffee b/tests/unit_tests/settings_test.coffee
index 946a1688..ded7b5f8 100644
--- a/tests/unit_tests/settings_test.coffee
+++ b/tests/unit_tests/settings_test.coffee
@@ -3,6 +3,8 @@ extend global, require "./test_chrome_stubs.js"
extend(global, require "../../lib/utils.js")
Utils.getCurrentVersion = -> '1.44'
+Utils.isBackgroundPage = -> true
+Utils.isExtensionPage = -> true
global.localStorage = {}
extend(global,require "../../lib/settings.js")
@@ -10,6 +12,7 @@ context "settings",
setup ->
stub global, 'localStorage', {}
+ Settings.cache = global.localStorage # Point the settings cache to the new localStorage object.
Settings.postUpdateHooks = {} # Avoid running update hooks which include calls to outside of settings.
Settings.init()