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 241401 40520b2ca6b812bb9b351caa74ce345222c0121d
parent 241400 d0f4e0591fa24459a736624d2f27e56fdd110537
child 241402 b4ab42a5ac4770cd636e4f085660baaba037cfb0
push id12622
push userbsmedberg@mozilla.com
push dateTue, 28 Apr 2015 15:39:07 +0000
treeherderfx-team@ba26b2b79764 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersted, gfritzsche
bugs1140132
milestone40.0a1
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]);