From a456de97daaf1361bc3ad7df775f1b6cbe1f720e Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Mon, 1 Jun 2015 14:18:54 +0100 Subject: Use JSON.stringify to compare setting values everywhere --- lib/settings.coffee | 4 +--- pages/options.coffee | 11 +---------- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/lib/settings.coffee b/lib/settings.coffee index 4fafa7d3..ca4e77b0 100644 --- a/lib/settings.coffee +++ b/lib/settings.coffee @@ -55,9 +55,7 @@ Settings = set: (key, value) -> # Don't store the value if it is equal to the default, so we can change the defaults in the future. - # FIXME(smblott). This test is broken for exclusionRules (for which it is never true). In this case, we - # need some kind of structural equality (or perhaps comparison of JSONified strings). - if value == @defaults[key] + if JSON.stringify(value) == JSON.stringify @defaults[key] @clear key else jsonValue = JSON.stringify value diff --git a/pages/options.coffee b/pages/options.coffee index 93b0be11..323215d0 100644 --- a/pages/options.coffee +++ b/pages/options.coffee @@ -32,12 +32,9 @@ class Option # Write this option's new value back to localStorage, if necessary. save: -> value = @readValueFromElement() - if not @areEqual value, @previous + if JSON.stringify value != JSON.stringify @previous bgSettings.set @field, @previous = value - # Compare values; this is overridden by sub-classes. - areEqual: (a,b) -> a == b - restoreToDefault: -> bgSettings.clear @field @fetch() @@ -125,12 +122,6 @@ class ExclusionRulesOption extends Option passKeys: @getPassKeys(element).value.trim() rules.filter (rule) -> rule.pattern - areEqual: (a,b) -> - # Flatten each list of rules to a newline-separated string representation, and then use string equality. - # This is correct because patterns and passKeys cannot themselves contain newlines. - flatten = (rule) -> if rule and rule.pattern then rule.pattern + "\n" + rule.passKeys else "" - a.map(flatten).join("\n") == b.map(flatten).join("\n") - # Accessors for the three main sub-elements of an "exclusionRuleTemplateInstance". getPattern: (element) -> element.querySelector(".pattern") getPassKeys: (element) -> element.querySelector(".passKeys") -- cgit v1.2.3