aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Blott2015-06-20 07:47:09 +0100
committerStephen Blott2015-06-20 07:47:09 +0100
commitaa08e16e6613d5a3760761ab89557df41a50f784 (patch)
tree07407b7837fa70197b5b2dd139a7bb684d38e37c
parentde770c026a2e023f7be31f2ef1fa5c874578fe29 (diff)
downloadvimium-aa08e16e6613d5a3760761ab89557df41a50f784.tar.bz2
Adding debugging infrastructure for settings.
-rw-r--r--lib/settings.coffee17
1 files changed, 15 insertions, 2 deletions
diff --git a/lib/settings.coffee b/lib/settings.coffee
index 5955e8ae..437e4d45 100644
--- a/lib/settings.coffee
+++ b/lib/settings.coffee
@@ -11,6 +11,7 @@
# In all cases except Settings.defaults, values are stored as jsonified strings.
Settings =
+ debug: false
storage: chrome.storage.sync
cache: {}
isLoaded: false
@@ -36,6 +37,7 @@ Settings =
# Called after @cache has been initialized. On extension pages, this will be called twice, but that does
# not matter because it's idempotent.
onLoaded: ->
+ @log "onLoaded: #{@onLoadedCallbacks.length} callback(s)"
@isLoaded = true
callback() while callback = @onLoadedCallbacks.pop()
@@ -46,6 +48,7 @@ Settings =
@handleUpdateFromChromeStorage key, change?.newValue for own key, change of changes
handleUpdateFromChromeStorage: (key, value) ->
+ @log "handleUpdateFromChromeStorage: #{key}"
# Note: value here is either null or a JSONified string. Therefore, even falsy settings values (like
# false, 0 or "") are truthy here. Only null is falsy.
if @shouldSyncKey key
@@ -59,20 +62,26 @@ Settings =
set: (key, value, shouldSetInSyncedStorage = true) ->
@cache[key] = JSON.stringify value
+ @log "set: #{key} (length=#{@cache[key].length}, shouldSetInSyncedStorage=#{shouldSetInSyncedStorage})"
if @shouldSyncKey key
if shouldSetInSyncedStorage
setting = {}; setting[key] = @cache[key]
+ @log " chrome.storage.sync.set(#{key})"
@storage.set setting
- # Remove settings installed by the "copyNonDefaultsToChromeStorage-20150717" migration; see below.
- chrome.storage.local.remove key if Utils.isBackgroundPage()
+ if Utils.isBackgroundPage()
+ # Remove options installed by the "copyNonDefaultsToChromeStorage-20150717" migration; see below.
+ @log " chrome.storage.local.remove(#{key})"
+ chrome.storage.local.remove key
@performPostUpdateHook key, value
clear: (key) ->
+ @log "clear: #{key}"
@set key, @defaults[key]
has: (key) -> key of @cache
use: (key, callback) ->
+ @log "use: #{key} (isLoaded=#{@isLoaded})"
invokeCallback = => callback @get key
if @isLoaded then invokeCallback() else @onLoadedCallbacks.push invokeCallback
@@ -80,6 +89,10 @@ Settings =
postUpdateHooks: {}
performPostUpdateHook: (key, value) -> @postUpdateHooks[key]? value
+ # For development only.
+ log: (args...) ->
+ console.log "settings:", args... if @debug
+
# Default values for all settings.
defaults:
scrollStepSize: 60