Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: lib/requestBlocker.js

Issue 29339020: Issue 3868 - Use the new FilterNotifier API (Closed)
Patch Set: Created March 23, 2016, 8:15 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/icon.js ('k') | lib/stats.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/requestBlocker.js
===================================================================
--- a/lib/requestBlocker.js
+++ b/lib/requestBlocker.js
@@ -19,7 +19,8 @@
"use strict";
-let {RegExpFilter, BlockingFilter} = require("filterClasses");
+let {Filter, RegExpFilter, BlockingFilter} = require("filterClasses");
+let {Subscription} = require("subscriptionClasses");
let {defaultMatcher} = require("matcher");
let {FilterNotifier} = require("filterNotifier");
let {Prefs} = require("prefs");
@@ -39,7 +40,7 @@
specificOnly, filter)
{
if (filter)
- FilterNotifier.triggerListeners("filter.hitCount", filter, 0, 0, page);
+ FilterNotifier.emit("filter.hitCount", filter, 0, 0, page);
if (devtools)
devtools.logRequest(
@@ -113,56 +114,43 @@
});
let ignoreFilterNotifications = false;
-FilterNotifier.addListener((action, arg) =>
+
+function onFilterChange(arg, isDisabledAction)
{
// Avoid triggering filters.behaviorChanged multiple times
// when multiple filter hanges happen at the same time.
if (ignoreFilterNotifications)
return;
- if (action != "load")
- {
- let parts = action.split(".");
- let [category, event] = parts;
- if (category == "subscription")
- {
- if (event != "added" &&
- event != "removed" &&
- event != "updated" &&
- event != "disabled")
- return;
+ // Ignore disabled subscriptions and filters, unless they just got
+ // disabled, otherwise they have no effect on the handler behavior.
+ if (arg && arg.disabled && !isDisabledAction)
+ return;
- // Ignore empty subscriptions. This includes subscriptions
- // that have just been added, but not downloaded yet.
- if (arg.filters.length == 0)
- return;
- }
- else if (category == "filter")
- {
- if (event != "added" &&
- event != "removed" &&
- event != "disabled")
- return;
+ // Ignore empty subscriptions. This includes subscriptions
+ // that have just been added, but not downloaded yet.
+ if (arg instanceof Subscription && arg.filters.length == 0)
+ return;
- // Ignore all types of filters but request filters,
- // only these have an effect on the handler behavior.
- if (!(arg instanceof RegExpFilter))
- return;
- }
- else
- return;
-
- // Ignore disabled subscriptions and filters, unless they just got
- // disabled, otherwise they have no effect on the handler behavior.
- if (arg.disabled && event != "disabled")
- return;
- }
+ // Ignore all types of filters but request filters,
+ // only these have an effect on the handler behavior.
+ if (arg instanceof Filter && !(arg instanceof RegExpFilter))
+ return;
ignoreFilterNotifications = true;
setTimeout(() =>
{
ignoreFilterNotifications = false;
ext.webRequest.handlerBehaviorChanged();
- FilterNotifier.triggerListeners("filter.behaviorChanged");
+ FilterNotifier.emit("filter.behaviorChanged");
});
-});
+}
+
+FilterNotifier.on("subscription.added", onFilterChange)
+FilterNotifier.on("subscription.removed", onFilterChange);
+FilterNotifier.on("subscription.updated", onFilterChange);
+FilterNotifier.on("subscription.disabled", arg => onFilterChange(arg, true));
+FilterNotifier.on("filter.added", onFilterChange);
+FilterNotifier.on("filter.removed", onFilterChange);
+FilterNotifier.on("filter.disabled", arg => onFilterChange(arg, true));
+FilterNotifier.on("load", onFilterChange);
« no previous file with comments | « lib/icon.js ('k') | lib/stats.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld