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

Unified Diff: lib/stats.js

Issue 5464830253203456: Refactored the abstraction layer to address prerendered pages on Safari caused by leaky abstraction (Closed)
Patch Set: Created Feb. 22, 2014, 10:45 a.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
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);
});
});

Powered by Google App Engine
This is Rietveld