| Index: lib/devtools.js | 
| =================================================================== | 
| --- a/lib/devtools.js | 
| +++ b/lib/devtools.js | 
| @@ -257,35 +257,8 @@ | 
| } | 
| } | 
| -function onFilterChange(action, arg) | 
| +function updateFilters(filters, added) | 
| { | 
| - let added, filters; | 
| - switch (action) | 
| - { | 
| - case "filter.added": | 
| - added = true; | 
| - filters = [arg]; | 
| - break; | 
| - | 
| - case "filter.removed": | 
| - added = false; | 
| - filters = [arg]; | 
| - break; | 
| - | 
| - // When there haven't ever been any user filters before, the subscription is | 
| - // added, triggering a "subscription.added" instead of a "filter.added" event. | 
| - case "subscription.added": | 
| - if (arg instanceof SpecialSubscription) | 
| - { | 
| - added = true; | 
| - filters = arg.filters; | 
| - break; | 
| - } | 
| - | 
| - default: | 
| - return; | 
| - } | 
| - | 
| for (let tabId in panels) | 
| { | 
| let panel = panels[tabId]; | 
| @@ -344,6 +317,22 @@ | 
| } | 
| } | 
| +function onFilterAdded(filter) | 
| +{ | 
| + updateFilters([filter], true); | 
| +} | 
| + | 
| +function onFilterRemoved(filter) | 
| +{ | 
| + updateFilters([filter], false); | 
| +} | 
| + | 
| +function onSubscriptionAdded(subscription) | 
| +{ | 
| + if (subscription instanceof SpecialSubscription) | 
| + updateFilters(subscription.filters, true); | 
| +} | 
| + | 
| chrome.runtime.onConnect.addListener(port => | 
| { | 
| let match = port.name.match(/^devtools-(\d+)$/); | 
| @@ -365,7 +354,9 @@ | 
| if (!hasPanels()) | 
| { | 
| ext.pages.onLoading.addListener(onLoading); | 
| - FilterNotifier.addListener(onFilterChange); | 
| + FilterNotifier.on("filter.added", onFilterAdded); | 
| + FilterNotifier.on("filter.removed", onFilterRemoved); | 
| + FilterNotifier.on("subscription.added", onSubscriptionAdded); | 
| } | 
| port.onDisconnect.addListener(() => | 
| @@ -375,8 +366,10 @@ | 
| if (!hasPanels()) | 
| { | 
| - FilterNotifier.removeListener(onFilterChange); | 
| ext.pages.onLoading.removeListener(onLoading); | 
| + FilterNotifier.off("filter.added", onFilterAdded); | 
| + FilterNotifier.off("filter.removed", onFilterRemoved); | 
| + FilterNotifier.off("subscription.added", onSubscriptionAdded); | 
| } | 
| }); |