Bug 1452745 - Annotate crash pings with actual display and platform versions r?gsvelto
Before we were falling back to using the raw version, which isn't
correct on at least beta (i.e. we would get `60.0` instead of `60.0b1`).
MozReview-Commit-ID: 7NfV6iRoj4y
--- a/toolkit/components/telemetry/TelemetryEnvironment.jsm
+++ b/toolkit/components/telemetry/TelemetryEnvironment.jsm
@@ -1339,16 +1339,17 @@ EnvironmentCache.prototype = {
_getBuild() {
let buildData = {
applicationId: Services.appinfo.ID || null,
applicationName: Services.appinfo.name || null,
architecture: Services.sysinfo.get("arch"),
buildId: Services.appinfo.appBuildID || null,
version: Services.appinfo.version || null,
vendor: Services.appinfo.vendor || null,
+ displayVersion: AppConstants.MOZ_APP_VERSION_DISPLAY || null,
platformVersion: Services.appinfo.platformVersion || null,
xpcomAbi: Services.appinfo.XPCOMABI,
updaterAvailable: AppConstants.MOZ_UPDATER,
};
// Add |architecturesInBinary| only for Mac Universal builds.
if ("@mozilla.org/xpcom/mac-utils;1" in Cc) {
let macUtils = Cc["@mozilla.org/xpcom/mac-utils;1"].getService(Ci.nsIMacUtils);
--- a/toolkit/crashreporter/client/ping.cpp
+++ b/toolkit/crashreporter/client/ping.cpp
@@ -193,27 +193,28 @@ CreatePayloadNode(StringTable& strings,
payload["metadata"] = CreateMetadataNode(strings);
return payload;
}
// Create the application node of the crash ping
static Json::Value
CreateApplicationNode(const string& aVendor, const string& aName,
- const string& aVersion, const string& aChannel,
+ const string& aVersion, const string& aDisplayVersion,
+ const string& aPlatformVersion, const string& aChannel,
const string& aBuildId, const string& aArchitecture,
const string& aXpcomAbi)
{
Json::Value application;
application["vendor"] = aVendor;
application["name"] = aName;
application["buildId"] = aBuildId;
- application["displayVersion"] = aVersion;
- application["platformVersion"] = aVersion;
+ application["displayVersion"] = aDisplayVersion;
+ application["platformVersion"] = aPlatformVersion;
application["version"] = aVersion;
application["channel"] = aChannel;
if (!aArchitecture.empty()) {
application["architecture"] = aArchitecture;
}
if (!aXpcomAbi.empty()) {
application["xpcomAbi"] = aXpcomAbi;
}
@@ -235,35 +236,45 @@ CreateRootNode(StringTable& strings, con
root["creationDate"] = CurrentDate(kISO8601DateHours);
root["clientId"] = aClientId;
// Parse the telemetry environment
Json::Value environment;
Json::Reader reader;
string architecture;
string xpcomAbi;
+ string displayVersion;
+ string platformVersion;
if (reader.parse(strings["TelemetryEnvironment"], environment,
/* collectComments */ false)) {
if (environment.isMember("build") && environment["build"].isObject()) {
Json::Value build = environment["build"];
if (build.isMember("architecture") && build["architecture"].isString()) {
architecture = build["architecture"].asString();
}
if (build.isMember("xpcomAbi") && build["xpcomAbi"].isString()) {
xpcomAbi = build["xpcomAbi"].asString();
}
+ if (build.isMember("displayVersion") && build["displayVersion"].isString()) {
+ displayVersion = build["displayVersion"].asString();
+ }
+ if (build.isMember("platformVersion") && build["platformVersion"].isString()) {
+ platformVersion = build["platformVersion"].asString();
+ }
}
root["environment"] = environment;
}
root["payload"] = CreatePayloadNode(strings, aHash, aSessionId);
root["application"] = CreateApplicationNode(strings["Vendor"], aName,
- aVersion, aChannel, aBuildId,
+ aVersion, displayVersion,
+ platformVersion,
+ aChannel, aBuildId,
architecture, xpcomAbi);
return root;
}
// Generates the URL used to submit the crash ping, see TelemetrySend.jsm
string
GenerateSubmissionUrl(const string& aUrl, const string& aId,