From 2a297be1752788b0da1c841187fde62f3b9862a8 Mon Sep 17 00:00:00 2001 From: Alexander Tropnikov Date: Tue, 8 Dec 2015 10:07:13 +0300 Subject: [PATCH] https://github.com/AdguardTeam/AdguardBrowserExtension/issues/68 Move logic to backgroung-page. --- Extension/lib/content-message-handler.js | 4 --- Extension/lib/filter/antibanner.js | 38 ++++++++++++++++-------- Extension/lib/pages/options.js | 5 +--- 3 files changed, 26 insertions(+), 21 deletions(-) diff --git a/Extension/lib/content-message-handler.js b/Extension/lib/content-message-handler.js index 646f60167c..40a7b41722 100644 --- a/Extension/lib/content-message-handler.js +++ b/Extension/lib/content-message-handler.js @@ -111,10 +111,6 @@ ContentMessageHandler.prototype = { this.UI.checkAntiBannerFiltersUpdate(); callback({}); break; - case 'reloadAntiBannerFilters': - this.antiBannerService.reloadAntiBannerFilters(); - callback({}); - break; case 'getAntiBannerFiltersForOptionsPage': var renderedFilters = this.antiBannerService.getAntiBannerFiltersForOptionsPage(); callback({filters: renderedFilters}); diff --git a/Extension/lib/filter/antibanner.js b/Extension/lib/filter/antibanner.js index ce5387f351..eafbc1e4dc 100644 --- a/Extension/lib/filter/antibanner.js +++ b/Extension/lib/filter/antibanner.js @@ -96,6 +96,9 @@ AntiBannerService.prototype = { */ UPDATE_FILTERS_DELAY: 5 * 60 * 1000, + FILTERS_CHANGE_DEBOUCE_PERIOD: 500, + RELOAD_FILTERS_DEBOUNCE_PERIOD: 500, + /** * AntiBannerService constructor * @param options Constructor options @@ -164,6 +167,9 @@ AntiBannerService.prototype = { // These mappings are then used by LocaleDetectorService to auto-enable language-specific filter. this.localeDetectorService.setFiltersLanguages(this.subscriptionService.getFiltersLanguages()); + // Subscribe to events which lead to update filters (e.g. switсh to optimized and back to default) + this._subscribeToFiltersChangeEvents(); + if (runInfo.isFirstRun) { // Add event listener for filters change context._addFiltersChangeEventListener(); @@ -729,20 +735,9 @@ AntiBannerService.prototype = { * @param errorCallback * @private */ - _reloadAntiBannerFilters: Utils.debounce(function(successCallback, errorCallback) { + _reloadAntiBannerFilters: function (successCallback, errorCallback) { this._resetFiltersVersion(); this.checkAntiBannerFiltersUpdate(true, successCallback, errorCallback); - }, 250), - - /** - * Reloads filters from backend - */ - reloadAntiBannerFilters: function () { - this._reloadAntiBannerFilters(function (updatedFilters) { - EventNotifier.notifyListeners(EventNotifierTypes.UPDATE_FILTERS_SHOW_POPUP, true, updatedFilters); - }, function () { - EventNotifier.notifyListeners(EventNotifierTypes.UPDATE_FILTERS_SHOW_POPUP, false); - }) }, /** @@ -1112,7 +1107,7 @@ AntiBannerService.prototype = { onEventsProcessDone(); } - }.bind(this), 500); + }.bind(this), this.FILTERS_CHANGE_DEBOUCE_PERIOD); }.bind(this); @@ -1179,6 +1174,22 @@ AntiBannerService.prototype = { return dfd; }, + /** + * Subscribe to events which lead to filters update. + * @private + */ + _subscribeToFiltersChangeEvents: function () { + + // on USE_OPTIMIZED_FILTERS setting change we need to reload filters + var onUsedOptimizedFiltersChange = Utils.debounce(this._reloadAntiBannerFilters.bind(this), this.RELOAD_FILTERS_DEBOUNCE_PERIOD); + + EventNotifier.addListener(function (event, setting) { + if (event === EventNotifierTypes.CHANGE_USER_SETTINGS && setting === userSettings.settings.USE_OPTIMIZED_FILTERS) { + onUsedOptimizedFiltersChange(); + } + }); + }, + /** * Schedules filters update job * @isFirstRun @@ -1516,6 +1527,7 @@ var UPDATE_REQUEST_FILTER_EVENTS = [EventNotifierTypes.UPDATE_FILTER_RULES, Even var SAVE_FILTER_RULES_TO_FS_EVENTS = [EventNotifierTypes.UPDATE_FILTER_RULES, EventNotifierTypes.ADD_RULE, EventNotifierTypes.ADD_RULES, EventNotifierTypes.REMOVE_RULE]; // Events +// TODO: move to UI.js. (function () { //on filter auto-enabled event diff --git a/Extension/lib/pages/options.js b/Extension/lib/pages/options.js index bf951941da..4b5bff29b5 100644 --- a/Extension/lib/pages/options.js +++ b/Extension/lib/pages/options.js @@ -368,13 +368,10 @@ PageController.prototype = { changeUseOptimizedFilters: function (e) { e.preventDefault(); - var self = this; contentPage.sendMessage({ type: 'changeUserSetting', key: userSettings.names.USE_OPTIMIZED_FILTERS, - value: self.checked - }, function() { - contentPage.sendMessage({type: 'reloadAntiBannerFilters'}); + value: this.checked }); },