aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--background_scripts/exclusions.coffee26
-rw-r--r--lib/settings.coffee24
2 files changed, 15 insertions, 35 deletions
diff --git a/background_scripts/exclusions.coffee b/background_scripts/exclusions.coffee
index 21342d61..95100935 100644
--- a/background_scripts/exclusions.coffee
+++ b/background_scripts/exclusions.coffee
@@ -48,32 +48,6 @@ root.Exclusions = Exclusions =
postUpdateHook: (@rules) ->
RegexpCache.clear()
-# Development and debug only.
-# Enable this (temporarily) to restore legacy exclusion rules from backup.
-if false and Settings.has("excludedUrlsBackup")
- Settings.clear("exclusionRules")
- Settings.set("excludedUrls", Settings.get("excludedUrlsBackup"))
-
-if not Settings.has("exclusionRules") and Settings.has("excludedUrls")
- # Migration from the legacy representation of exclusion rules.
- #
- # In Vimium 1.45 and in github/master on 27 August, 2014, exclusion rules are represented by the setting:
- # excludedUrls: "http*://www.google.com/reader/*\nhttp*://mail.google.com/* jk"
- #
- # The new (equivalent) settings is:
- # exclusionRules: [ { pattern: "http*://www.google.com/reader/*", passKeys: "" }, { pattern: "http*://mail.google.com/*", passKeys: "jk" } ]
-
- parseLegacyRules = (lines) ->
- for line in lines.trim().split("\n").map((line) -> line.trim())
- if line.length and line.indexOf("#") != 0 and line.indexOf('"') != 0
- parse = line.split(/\s+/)
- { pattern: parse[0], passKeys: parse[1..].join("") }
-
- Exclusions.setRules(parseLegacyRules(Settings.get("excludedUrls")))
- # We'll keep a backup of the "excludedUrls" setting, just in case.
- Settings.set("excludedUrlsBackup", Settings.get("excludedUrls")) if not Settings.has("excludedUrlsBackup")
- Settings.clear("excludedUrls")
-
# Register postUpdateHook for exclusionRules setting.
Settings.postUpdateHooks["exclusionRules"] = (value) ->
Exclusions.postUpdateHook value
diff --git a/lib/settings.coffee b/lib/settings.coffee
index 8b7f6062..31aad7ad 100644
--- a/lib/settings.coffee
+++ b/lib/settings.coffee
@@ -91,6 +91,13 @@ Settings =
postUpdateHooks: {}
performPostUpdateHook: (key, value) -> @postUpdateHooks[key]? value
+ # Completely remove a settings value, e.g. after migration to a new setting. This should probably only be
+ # called from the background page.
+ nuke: (key) ->
+ delete localStorage[key]
+ chrome.storage.local.remove key
+ chrome.storage.sync.remove key
+
# For development only.
log: (args...) ->
console.log "settings:", args... if @debug
@@ -174,17 +181,16 @@ Settings.init()
if Utils.isBackgroundPage()
# We use settingsVersion to coordinate any necessary schema changes.
- if Utils.compareVersions("1.42", Settings.get("settingsVersion")) != -1
- Settings.set("scrollStepSize", parseFloat Settings.get("scrollStepSize"))
Settings.set("settingsVersion", Utils.getCurrentVersion())
- # Migration (after 1.49, 2015/2/1).
- # Legacy setting: findModeRawQuery (a string).
- # New setting: findModeRawQueryList (a list of strings), now stored in chrome.storage.local (not localStorage).
- chrome.storage.local.get "findModeRawQueryList", (items) ->
- unless chrome.runtime.lastError or items.findModeRawQueryList
- rawQuery = Settings.get "findModeRawQuery"
- chrome.storage.local.set findModeRawQueryList: (if rawQuery then [ rawQuery ] else [])
+ # In 1.46 we migrated the old "excludedUrls" setting to the new "exclusionRules" setting. And we kept a
+ # backup in "excludedUrlsBackup". Now (post 1.54, post 2016-02-12) we can clear up that backup (and any
+ # extraordinalrily old "excludedUrls" setting).
+ Settings.nuke "excludedUrlsBackup"
+ Settings.nuke "excludedUrls"
+
+ # Migration (post 1.54, post 2016-2-12). Nuke legacy "findModeRawQuery" setting.
+ Settings.nuke "findModeRawQuery"
# Migration (after 1.51, 2015/6/17).
# Copy options with non-default values (and which are not in synced storage) to chrome.storage.local;