| Index: lib/stats.js | 
| =================================================================== | 
| new file mode 100644 | 
| --- /dev/null | 
| +++ b/lib/stats.js | 
| @@ -0,0 +1,74 @@ | 
| +/* | 
| + * This file is part of Adblock Plus <http://adblockplus.org/>, | 
| + * Copyright (C) 2006-2013 Eyeo GmbH | 
| + * | 
| + * Adblock Plus is free software: you can redistribute it and/or modify | 
| + * it under the terms of the GNU General Public License version 3 as | 
| + * published by the Free Software Foundation. | 
| + * | 
| + * Adblock Plus is distributed in the hope that it will be useful, | 
| + * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
| + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 
| + * GNU General Public License for more details. | 
| + * | 
| + * You should have received a copy of the GNU General Public License | 
| + * along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. | 
| + */ | 
| + | 
| +/** | 
| + * @fileOverview Provides usage stats | 
| + */ | 
| + | 
| +let {Prefs} = require("prefs"); | 
| +let {BlockingFilter} = require("filterClasses"); | 
| +let {FilterNotifier} = require("filterNotifier"); | 
| + | 
| +/** | 
| + * Base class for individual stats | 
| + * @param {Object} stats simple object representation of stats | 
| + */ | 
| +let StatsObject = exports.StatsObject = function(stats) | 
| +{ | 
| + if (typeof stats == "undefined") | 
| + return; | 
| + | 
| + this.blocked = stats.blocked || this.blocked; | 
| +} | 
| +StatsObject.prototype = { | 
| + /** | 
| + * Number of blocked resources | 
| + * @type Number | 
| + */ | 
| + blocked: 0 | 
| +}; | 
| + | 
| +let total = new StatsObject(Prefs["stats_total"]); | 
| + | 
| +let Stats = exports.Stats = { | 
| + /** | 
| + * Total counts | 
| + */ | 
| + get total() | 
| + { | 
| + return total; | 
| + } | 
| +} | 
| 
 
Wladimir Palant
2013/09/18 09:44:41
The exported API here seems overly complicated for
 
 | 
| + | 
| +FilterNotifier.addListener(function(action, item, tabId) | 
| +{ | 
| + if (action != "document.stats") | 
| + return; | 
| + | 
| + var blocked = item instanceof BlockingFilter; | 
| + | 
| + // increment counts | 
| + if (blocked) | 
| + total.blocked++; | 
| 
 
Wladimir Palant
2013/09/18 09:44:41
Prefs.stats_total++; will do here, no point cachin
 
 | 
| + | 
| + ChromeCompat.tabs.sendMessage(tabId, { | 
| + reqtype: "update-stats", | 
| + blocked: blocked | 
| + }, null); | 
| 
 
Wladimir Palant
2013/09/18 09:44:41
Simpler:
let frameData = getFrameData(tabId, 0);
 
 | 
| + | 
| + Prefs["stats_total"] = total; | 
| +}); |