Bug 1140132 - Annotate the current telemetry environment in crash reports. r=ted/gfritzsche
☠☠ backed out by dd45b61c143b ☠ ☠
authorBenjamin Smedberg <benjamin@smedbergs.us>
Mon, 13 Apr 2015 12:51:31 -0400
changeset 272983 40520b2ca6b812bb9b351caa74ce345222c0121d
parent 272982 d0f4e0591fa24459a736624d2f27e56fdd110537
child 272984 b4ab42a5ac4770cd636e4f085660baaba037cfb0
push id863
push userraliiev@mozilla.com
push dateMon, 03 Aug 2015 13:22:43 +0000
treeherdermozilla-release@f6321b14228d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersted, gfritzsche
bugs1140132
milestone40.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1140132 - Annotate the current telemetry environment in crash reports. r=ted/gfritzsche
toolkit/components/telemetry/TelemetryStartup.js
--- a/toolkit/components/telemetry/TelemetryStartup.js
+++ b/toolkit/components/telemetry/TelemetryStartup.js
@@ -1,30 +1,47 @@
 /* -*- js-indent-level: 2; 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/. */
 
 "use strict";
 
-const Cu = Components.utils;
+const {classes: Cc, interfaces: Ci, utils: Cu} = Components;
 
 Cu.import("resource://gre/modules/TelemetryController.jsm", this);
 Cu.import("resource://gre/modules/TelemetrySession.jsm", this);
+Cu.import("resource://gre/modules/TelemetryEnvironment.jsm", this);
 Cu.import("resource://gre/modules/XPCOMUtils.jsm", this);
 
 /**
  * TelemetryStartup is needed to forward the "profile-after-change" notification
  * to TelemetryController.jsm.
  */
 function TelemetryStartup() {
 }
 
 TelemetryStartup.prototype.classID = Components.ID("{117b219f-92fe-4bd2-a21b-95a342a9d474}");
-TelemetryStartup.prototype.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.nsIObserver])
+TelemetryStartup.prototype.QueryInterface = XPCOMUtils.generateQI([Components.interfaces.nsIObserver]);
 TelemetryStartup.prototype.observe = function(aSubject, aTopic, aData) {
   if (aTopic == "profile-after-change" || aTopic == "app-startup") {
     TelemetryController.observe(null, aTopic, null);
     TelemetrySession.observe(null, aTopic, null);
   }
+  if (aTopic == "profile-after-change") {
+    annotateEnvironment();
+    TelemetryEnvironment.registerChangeListener("CrashAnnotator", annotateEnvironment);
+    TelemetryEnvironment.onInitialized().then(() => annotateEnvironment());
+  }
+}
+
+function annotateEnvironment() {
+  try {
+    let cr = Cc["@mozilla.org/toolkit/crash-reporter;1"]
+      .getService(Ci.nsICrashReporter);
+    let env = JSON.stringify(TelemetryEnvironment.currentEnvironment);
+    cr.annotateCrashReport("TelemetryEnvironment", env);
+  } catch (e) {
+    // crash reporting not built or disabled? Ignore errors
+  }
 }
 
 this.NSGetFactory = XPCOMUtils.generateNSGetFactory([TelemetryStartup]);