summaryrefslogtreecommitdiffstats
path: root/dom/network/NetworkStatsServiceProxy.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/network/NetworkStatsServiceProxy.js')
-rw-r--r--dom/network/NetworkStatsServiceProxy.js90
1 files changed, 90 insertions, 0 deletions
diff --git a/dom/network/NetworkStatsServiceProxy.js b/dom/network/NetworkStatsServiceProxy.js
new file mode 100644
index 000000000..f3df4344d
--- /dev/null
+++ b/dom/network/NetworkStatsServiceProxy.js
@@ -0,0 +1,90 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+const DEBUG = false;
+function debug(s) { dump("-*- NetworkStatsServiceProxy: " + s + "\n"); }
+
+const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
+
+this.EXPORTED_SYMBOLS = ["NetworkStatsServiceProxy"];
+
+Cu.import("resource://gre/modules/XPCOMUtils.jsm");
+Cu.import("resource://gre/modules/NetworkStatsService.jsm");
+
+const NETWORKSTATSSERVICEPROXY_CONTRACTID = "@mozilla.org/networkstatsServiceProxy;1";
+const NETWORKSTATSSERVICEPROXY_CID = Components.ID("98fd8f69-784e-4626-aa59-56d6436a3c24");
+const nsINetworkStatsServiceProxy = Ci.nsINetworkStatsServiceProxy;
+
+function NetworkStatsServiceProxy() {
+ if (DEBUG) {
+ debug("Proxy started");
+ }
+}
+
+NetworkStatsServiceProxy.prototype = {
+ /*
+ * Function called in the protocol layer (HTTP, FTP, WebSocket ...etc)
+ * to pass the per-app stats to NetworkStatsService.
+ */
+ saveAppStats: function saveAppStats(aAppId, aIsInIsolatedMozBrowser, aNetworkInfo, aTimeStamp,
+ aRxBytes, aTxBytes, aIsAccumulative,
+ aCallback) {
+ if (!aNetworkInfo) {
+ if (DEBUG) {
+ debug("|aNetworkInfo| is not specified. Failed to save stats. Returning.");
+ }
+ return;
+ }
+
+ if (DEBUG) {
+ debug("saveAppStats: " + aAppId + " " + aIsInIsolatedMozBrowser + " " +
+ aNetworkInfo.type + " " + aTimeStamp + " " +
+ aRxBytes + " " + aTxBytes + " " + aIsAccumulative);
+ }
+
+ if (aCallback) {
+ aCallback = aCallback.notify;
+ }
+
+ NetworkStatsService.saveStats(aAppId, aIsInIsolatedMozBrowser, "", aNetworkInfo,
+ aTimeStamp, aRxBytes, aTxBytes,
+ aIsAccumulative, aCallback);
+ },
+
+ /*
+ * Function called in the points of different system services
+ * to pass the per-service stats to NetworkStatsService.
+ */
+ saveServiceStats: function saveServiceStats(aServiceType, aNetworkInfo,
+ aTimeStamp, aRxBytes, aTxBytes,
+ aIsAccumulative, aCallback) {
+ if (!aNetworkInfo) {
+ if (DEBUG) {
+ debug("|aNetworkInfo| is not specified. Failed to save stats. Returning.");
+ }
+ return;
+ }
+
+ if (DEBUG) {
+ debug("saveServiceStats: " + aServiceType + " " + aNetworkInfo.type + " " +
+ aTimeStamp + " " + aRxBytes + " " + aTxBytes + " " +
+ aIsAccumulative);
+ }
+
+ if (aCallback) {
+ aCallback = aCallback.notify;
+ }
+
+ NetworkStatsService.saveStats(0, false, aServiceType , aNetworkInfo, aTimeStamp,
+ aRxBytes, aTxBytes, aIsAccumulative,
+ aCallback);
+ },
+
+ classID : NETWORKSTATSSERVICEPROXY_CID,
+ QueryInterface : XPCOMUtils.generateQI([nsINetworkStatsServiceProxy]),
+}
+
+this.NSGetFactory = XPCOMUtils.generateNSGetFactory([NetworkStatsServiceProxy]);