| Index: options.js | 
| =================================================================== | 
| --- a/options.js | 
| +++ b/options.js | 
| @@ -29,6 +29,11 @@ | 
| this.SpecialSubscription = SpecialSubscription; | 
| this.DownloadableSubscription = DownloadableSubscription; | 
| } | 
| +with(require("filterValidation")) | 
| +{ | 
| + this.parseFilter = parseFilter; | 
| + this.parseFilters = parseFilters; | 
| +} | 
| var FilterStorage = require("filterStorage").FilterStorage; | 
| var FilterNotifier = require("filterNotifier").FilterNotifier; | 
| var Prefs = require("prefs").Prefs; | 
| @@ -472,12 +477,23 @@ | 
| { | 
| event.preventDefault(); | 
| - var filterText = Filter.normalize(document.getElementById("newFilter").value); | 
| - document.getElementById("newFilter").value = ""; | 
| - if (!filterText) | 
| + var element = document.getElementById("newFilter"); | 
| + var filter; | 
| + | 
| + try | 
| + { | 
| + filter = parseFilter(element.value); | 
| + } | 
| + catch (error) | 
| + { | 
| + alert(error); | 
| return; | 
| + } | 
| - FilterStorage.addFilter(Filter.fromText(filterText)); | 
| + if (filter) | 
| + FilterStorage.addFilter(filter); | 
| + | 
| + element.value = ""; | 
| } | 
| // Removes currently selected whitelisted domains | 
| @@ -529,21 +545,25 @@ | 
| // Imports filters in the raw text box | 
| function importRawFiltersText() | 
| { | 
| - $("#rawFilters").hide(); | 
| - var filters = document.getElementById("rawFiltersText").value.split("\n"); | 
| + var text = document.getElementById("rawFiltersText").value; | 
| + | 
| + var add; | 
| + try | 
| + { | 
| + add = parseFilters(text, true); | 
| + } | 
| + catch (error) | 
| + { | 
| + alert(error); | 
| + return; | 
| + } | 
| + | 
| var seenFilter = {__proto__: null}; | 
| - for (var i = 0; i < filters.length; i++) | 
| + for (var i = 0; i < add.length; i++) | 
| { | 
| - var text = Filter.normalize(filters[i]); | 
| - if (!text) | 
| - continue; | 
| - | 
| - // Don't import filter list header | 
| - if (/^\[/.test(text)) | 
| - continue; | 
| - | 
| - FilterStorage.addFilter(Filter.fromText(text)); | 
| - seenFilter[text] = true; | 
| + var filter = add[i]; | 
| + FilterStorage.addFilter(filter); | 
| + seenFilter[filter.text] = null; | 
| } | 
| var remove = []; | 
| @@ -563,8 +583,11 @@ | 
| remove.push(filter); | 
| } | 
| } | 
| + | 
| for (var i = 0; i < remove.length; i++) | 
| FilterStorage.removeFilter(remove[i]); | 
| + | 
| + $("#rawFilters").hide(); | 
| } | 
| // Called when user explicitly requests filter list updates |