| Index: background.js |
| =================================================================== |
| --- a/background.js |
| +++ b/background.js |
| @@ -44,17 +44,17 @@ var seenDataCorruption = false; |
| require("filterNotifier").FilterNotifier.addListener(function(action) |
| { |
| if (action == "load") |
| { |
| importOldData(); |
| var addonVersion = require("info").addonVersion; |
| var prevVersion = localStorage["currentVersion"]; |
| - if (prevVersion != addonVersion) |
| + if (seenDataCorruption || prevVersion != addonVersion) |
| { |
| isFirstRun = !prevVersion; |
| localStorage["currentVersion"] = addonVersion; |
| addSubscription(prevVersion); |
| } |
| } |
| }); |
| @@ -142,195 +142,48 @@ function refreshIconAndContextMenu(tab) |
| // Set context menu status according to whether current tab has whitelisted domain |
| if (excluded) |
| chrome.contextMenus.removeAll(); |
| else |
| showContextMenu(); |
| } |
| /** |
| - * Old versions stored filter data in the localStorage object, this will import |
| - * it into FilterStorage properly. |
| + * Old versions for Opera stored patterns.ini in the localStorage object, this |
| + * will import it into FilterStorage properly. |
| */ |
| function importOldData() |
| { |
| - function addSubscription(url, title) |
| + if ("patterns.ini" in localStorage) |
| { |
| - try |
| - { |
| - var subscription = Subscription.fromURL(url); |
| - if (subscription && !(subscription.url in FilterStorage.knownSubscriptions)) |
| - { |
| - if (title) |
| - subscription.title = title; |
| - FilterStorage.addSubscription(subscription); |
| - Synchronizer.execute(subscription); |
| - } |
| - } |
| - catch (e) |
| - { |
| - reportError(e); |
| - } |
| - } |
| + FilterStorage.loadFromDisk(localStorage["patterns.ini"]); |
| + seenDataCorruption = false; |
| - // Import user-defined subscriptions |
| - if (typeof localStorage["userFilterURLs"] == "string") |
| - { |
| - try |
| - { |
| - var urls = JSON.parse(localStorage["userFilterURLs"]); |
| - for (var key in urls) |
| - addSubscription(urls[key]); |
| - delete localStorage["userFilterURLs"]; |
| - } |
| - catch (e) |
| - { |
| - reportError(e); |
| - } |
| - } |
| - |
| - // Now import predefined subscriptions if enabled |
| - if (typeof localStorage["filterFilesEnabled"] == "string") |
| - { |
| - try |
| - { |
| - var subscriptions = JSON.parse(localStorage["filterFilesEnabled"]); |
| - if (subscriptions.korea) |
| - subscriptions.easylist = true; |
| - if (subscriptions.france) |
| - { |
| - addSubscription("https://easylist-downloads.adblockplus.org/liste_fr+easylist.txt", "Liste FR+EasyList"); |
| - subscriptions.easylist = false; |
| - } |
| - if (subscriptions.germany) |
| - { |
| - if (subscriptions.easylist) |
| - addSubscription("https://easylist-downloads.adblockplus.org/easylistgermany+easylist.txt", "EasyList Germany+EasyList"); |
| - else |
| - addSubscription("https://easylist-downloads.adblockplus.org/easylistgermany.txt", "EasyList Germany"); |
| - subscriptions.easylist = false; |
| - } |
| - if (subscriptions.china) |
| - { |
| - if (subscriptions.easylist) |
| - addSubscription("https://easylist-downloads.adblockplus.org/chinalist+easylist.txt", "ChinaList+EasyList"); |
| - else |
| - addSubscription("http://adblock-chinalist.googlecode.com/svn/trunk/adblock.txt", "ChinaList"); |
| - subscriptions.easylist = false; |
| - } |
| - if (subscriptions.russia) |
| - { |
| - if (subscriptions.easylist) |
| - addSubscription("https://easylist-downloads.adblockplus.org/ruadlist+easylist.txt", "RU AdList+EasyList"); |
| - else |
| - addSubscription("https://ruadlist.googlecode.com/svn/trunk/advblock.txt", "RU AdList"); |
| - subscriptions.easylist = false; |
| - } |
| - if (subscriptions.romania) |
| - { |
| - if (subscriptions.easylist) |
| - addSubscription("https://easylist-downloads.adblockplus.org/rolist+easylist.txt", "ROList+EasyList"); |
| - else |
| - addSubscription("http://www.zoso.ro/pages/rolist.txt", "ROList"); |
| - subscriptions.easylist = false; |
| - } |
| - if (subscriptions.easylist) |
| - addSubscription("https://easylist-downloads.adblockplus.org/easylist.txt", "EasyList"); |
| - if (subscriptions.fanboy) |
| - addSubscription("https://secure.fanboy.co.nz/fanboy-adblock.txt", "Fanboy's List"); |
| - if (subscriptions.fanboy_es) |
| - addSubscription("https://secure.fanboy.co.nz/fanboy-espanol.txt", "Fanboy's Espa\xF1ol/Portugu\xEAs"); |
| - if (subscriptions.italy) |
| - addSubscription("http://mozilla.gfsolone.com/filtri.txt", "Xfiles"); |
| - if (subscriptions.poland) |
| - addSubscription("http://www.niecko.pl/adblock/adblock.txt", "PLgeneral"); |
| - if (subscriptions.hungary) |
| - addSubscription("http://pete.teamlupus.hu/hufilter.txt", "hufilter"); |
| - if (subscriptions.extras) |
| - addSubscription("https://easylist-downloads.adblockplus.org/chrome_supplement.txt", "Recommended filters for Google Chrome"); |
| - |
| - delete localStorage["filterFilesEnabled"]; |
| - } |
| - catch (e) |
| - { |
| - reportError(e); |
| - } |
| - } |
| - |
| - // Import user filters |
| - if(typeof localStorage["userFilters"] == "string") |
| - { |
| - try |
| - { |
| - var userFilters = JSON.parse(localStorage["userFilters"]); |
| - for (var i = 0; i < userFilters.length; i++) |
| - { |
| - var filterText = userFilters[i]; |
| - |
| - // Skip useless default filters |
| - if (filterText == "qux.us###annoying_AdDiv" || filterText == "qux.us##.ad_class") |
| - continue; |
| - |
| - var filter = Filter.fromText(filterText); |
| - FilterStorage.addFilter(filter); |
| - } |
| - delete localStorage["userFilters"]; |
| - } |
| - catch (e) |
| - { |
| - reportError(e); |
| - } |
| - } |
| - |
| - // Import "excluded domains" |
| - if(typeof localStorage["excludedDomains"] == "string") |
| - { |
| - try |
| - { |
| - var excludedDomains = JSON.parse(localStorage["excludedDomains"]); |
| - for (var domain in excludedDomains) |
| - { |
| - var filterText = "@@||" + domain + "^$document"; |
| - var filter = Filter.fromText(filterText); |
| - FilterStorage.addFilter(filter); |
| - } |
| - delete localStorage["excludedDomains"]; |
| - } |
| - catch (e) |
| - { |
| - reportError(e); |
| - } |
| - } |
| - |
| - // Delete downloaded subscription data |
| - try |
| - { |
| + var remove = []; |
| for (var key in localStorage) |
| - if (/^https?:/.test(key)) |
| - delete localStorage[key]; |
| - } |
| - catch (e) |
| - { |
| - reportError(e); |
| + if (key.indexOf("patterns.ini") == 0 || key.indexOf("patterns-backup") == 0) |
| + remove.push(key); |
| + for (var i = 0; i < remove.length; i++) |
| + delete localStorage[remove[i]]; |
| } |
| } |
| /** |
| * This function is called on an extension update. It will add the default |
| * filter subscription if necessary. |
| */ |
| function addSubscription(prevVersion) |
| { |
| // Make sure to remove "Recommended filters", no longer necessary |
| var toRemove = "https://easylist-downloads.adblockplus.org/chrome_supplement.txt"; |
| if (toRemove in FilterStorage.knownSubscriptions) |
| FilterStorage.removeSubscription(FilterStorage.knownSubscriptions[toRemove]); |
| // Add "acceptable ads" subscription for new users |
| - var addAcceptable = !prevVersion; |
| + var addAcceptable = !prevVersion || seenDataCorruption; |
| if (addAcceptable) |
| { |
| addAcceptable = !FilterStorage.subscriptions.some(function(subscription) |
| { |
| return subscription.url == Prefs.subscriptions_exceptionsurl; |
| }); |
| } |