Bug 741281 - Add a Java interface for sending telemetry data. r=blassey

This commit is contained in:
Gian-Carlo Pascutto 2012-04-12 23:19:57 +02:00
Родитель 18d17113f5
Коммит c81eabf714
3 изменённых файлов: 48 добавлений и 0 удалений

Просмотреть файл

@ -115,6 +115,7 @@ FENNEC_JAVA_FILES = \
Tabs.java \
TabsTray.java \
TabsAccessor.java \
Telemetry.java \
gfx/BitmapUtils.java \
gfx/BufferedCairoImage.java \
gfx/CairoGLInfo.java \

Просмотреть файл

@ -0,0 +1,36 @@
/* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
* 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/. */
package org.mozilla.gecko;
import android.util.Log;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
public class Telemetry {
private static final String LOGTAG = "Telemetry";
// Define new histograms in:
// toolkit/components/telemetry/TelemetryHistograms.h
public static void HistogramAdd(String name,
int value) {
try {
JSONObject jsonData = new JSONObject();
jsonData.put("name", name);
jsonData.put("value", value);
GeckoEvent event =
GeckoEvent.createBroadcastEvent("Telemetry:Add", jsonData.toString());
GeckoAppShell.sendEventToGecko(event);
Log.v(LOGTAG, "Sending telemetry: " + jsonData.toString());
} catch (JSONException e) {
Log.e(LOGTAG, "JSON exception: ", e);
}
}
}

Просмотреть файл

@ -193,6 +193,7 @@ var BrowserApp = {
Services.obs.addObserver(this, "Preferences:Set", false);
Services.obs.addObserver(this, "ScrollTo:FocusedInput", false);
Services.obs.addObserver(this, "Sanitize:ClearAll", false);
Services.obs.addObserver(this, "Telemetry:Add", false);
Services.obs.addObserver(this, "PanZoom:PanZoom", false);
Services.obs.addObserver(this, "FullScreen:Exit", false);
Services.obs.addObserver(this, "Viewport:Change", false);
@ -788,6 +789,14 @@ var BrowserApp = {
} catch (e) {}
},
addTelemetry: function addTelemetry(aData) {
let json = JSON.parse(aData);
var telemetry = Cc["@mozilla.org/base/telemetry;1"]
.getService(Ci.nsITelemetry);
let histogram = telemetry.getHistogramById(json.name);
histogram.add(json.value);
},
setPreferences: function setPreferences(aPref) {
let json = JSON.parse(aPref);
@ -973,6 +982,8 @@ var BrowserApp = {
} else {
profiler.StartProfiler(100000, 25, ["stackwalk"], 1);
}
} else if (aTopic == "Telemetry:Add") {
this.addTelemetry(aData);
}
},