| Index: lib/stats.js | 
| =================================================================== | 
| --- a/lib/stats.js | 
| +++ b/lib/stats.js | 
| @@ -24,26 +24,26 @@ | 
| let {FilterNotifier} = require("filterNotifier"); | 
|  | 
| let badgeColor = "#646464"; | 
| -let statsPerTab = new TabMap(true); | 
| +let statsPerPage = new ext.PageMap(); | 
|  | 
| /** | 
| - * Get statistics for specified tab | 
| + * Get statistics for specified page | 
| * @param  {String} key   field key | 
| - * @param  {Number} tabId tab ID (leave undefined for total stats) | 
| + * @param  {Page}   page  field page | 
| * @return {Number}       field value | 
| */ | 
| -let getStats = exports.getStats = function getStats(key, tab) | 
| +let getStats = exports.getStats = function getStats(key, page) | 
| { | 
| -  if (!tab) | 
| +  if (!page) | 
| return (key in Prefs.stats_total ? Prefs.stats_total[key] : 0); | 
|  | 
| -  let tabStats = statsPerTab.get(tab); | 
| -  return tabStats ? tabStats.blocked : 0; | 
| +  let pageStats = statsPerPage.get(page); | 
| +  return pageStats ? pageStats.blocked : 0; | 
| }; | 
|  | 
| -FilterNotifier.addListener(function(action, item, newValue, oldValue, tab) | 
| +FilterNotifier.addListener(function(action, item, newValue, oldValue, page) | 
| { | 
| -  if (action != "filter.hitCount" || !tab) | 
| +  if (action != "filter.hitCount" || !page) | 
| return; | 
|  | 
| let blocked = item instanceof BlockingFilter; | 
| @@ -57,66 +57,47 @@ | 
| Prefs.stats_total.blocked = 1; | 
| Prefs.stats_total = Prefs.stats_total; | 
|  | 
| -    let tabStats = statsPerTab.get(tab); | 
| -    if (!tabStats) | 
| +    let pageStats = statsPerPage.get(page); | 
| +    if (!pageStats) | 
| { | 
| -      tabStats = {}; | 
| -      statsPerTab.set(tab, tabStats); | 
| +      pageStats = {}; | 
| +      statsPerPage.set(page, pageStats); | 
| } | 
| -    if ("blocked" in tabStats) | 
| -      tabStats.blocked++; | 
| +    if ("blocked" in pageStats) | 
| +      pageStats.blocked++; | 
| else | 
| -      tabStats.blocked = 1; | 
| +      pageStats.blocked = 1; | 
|  | 
| // Update number in icon | 
| if (Prefs.show_statsinicon) | 
| { | 
| -      tab.browserAction.setBadge({ | 
| +      page.browserAction.setBadge({ | 
| color: badgeColor, | 
| -        number: tabStats.blocked | 
| +        number: pageStats.blocked | 
| }); | 
| } | 
| } | 
| }); | 
|  | 
| -/** | 
| - * Execute function for each tab in any window | 
| - * @param {Function} func function to be executed | 
| - */ | 
| -function forEachTab(func) | 
| -{ | 
| -  ext.windows.getAll(function(windows) | 
| -  { | 
| -    for each (let window in windows) | 
| -    { | 
| -      window.getAllTabs(function(tabs) | 
| -      { | 
| -        for (let i = 0; i < tabs.length; i++) | 
| -          func(tabs[i]); | 
| -      }); | 
| -    } | 
| -  }); | 
| -} | 
| - | 
| Prefs.addListener(function(name) | 
| { | 
| if (name != "show_statsinicon") | 
| return; | 
|  | 
| -  forEachTab(function(tab) | 
| +  ext.pages.query({}, function(page) | 
| { | 
| let badge = null; | 
| if (Prefs.show_statsinicon) | 
| { | 
| -      let tabStats = statsPerTab.get(tab); | 
| -      if (tabStats && "blocked" in tabStats) | 
| +      let pageStats = statsPerPage.get(page); | 
| +      if (pageStats && "blocked" in pageStats) | 
| { | 
| badge = { | 
| color: badgeColor, | 
| -          number: tabStats.blocked | 
| +          number: pageStats.blocked | 
| }; | 
| } | 
| } | 
| -    tab.browserAction.setBadge(badge); | 
| +    page.browserAction.setBadge(badge); | 
| }); | 
| }); | 
|  |