Bug 1422985. Send JSON encoded preferences via the details param. r=gijs draft
authorMike Taylor <miket@mozilla.com>
Fri, 26 Jan 2018 16:40:58 -0600
changeset 748571 4f433ff8aa0a1e2e224463e0c2e5f6f04d61ab79
parent 748403 117e0c0d1ebe2cf5bdffc3474744add2416fc511
child 748572 dd76f147c2995aeda82a04c1658dfcd4bc098319
push id97212
push userbmo:miket@mozilla.com
push dateTue, 30 Jan 2018 01:59:12 +0000
reviewersgijs
bugs1422985
milestone60.0a1
Bug 1422985. Send JSON encoded preferences via the details param. r=gijs MozReview-Commit-ID: J2GGaehiYlH
browser/extensions/webcompat-reporter/content/WebCompatReporter.jsm
--- a/browser/extensions/webcompat-reporter/content/WebCompatReporter.jsm
+++ b/browser/extensions/webcompat-reporter/content/WebCompatReporter.jsm
@@ -4,26 +4,28 @@
 
 this.EXPORTED_SYMBOLS = ["WebCompatReporter"];
 
 let { classes: Cc, interfaces: Ci, utils: Cu } = Components;
 
 Cu.import("resource://gre/modules/Services.jsm");
 Cu.import("resource://gre/modules/XPCOMUtils.jsm");
 
-const PREF_STYLO_ENABLED = "layout.css.servo.enabled";
-
 XPCOMUtils.defineLazyModuleGetter(this, "PageActions",
   "resource:///modules/PageActions.jsm");
 
 XPCOMUtils.defineLazyGetter(this, "wcStrings", function() {
   return Services.strings.createBundle(
     "chrome://webcompat-reporter/locale/webcompat.properties");
 });
 
+// Gather values for prefs we want to appear in reports.
+let prefs = {};
+XPCOMUtils.defineLazyPreferenceGetter(prefs, "layout.css.servo.enabled", "layout.css.servo.enabled", false);
+
 let WebCompatReporter = {
   get endpoint() {
     return Services.urlFormatter.formatURLPref(
       "extensions.webcompat-reporter.newIssueEndpoint");
   },
 
   init() {
     PageActions.addAction(new PageActions.Action({
@@ -74,24 +76,24 @@ let WebCompatReporter = {
   //    so it can show a preview to the user and include it in FormData
   // Note: openWebCompatTab arguments are passed in as an array because they
   // are the result of a promise resolution.
   openWebCompatTab([gBrowser, tabData]) {
     const SCREENSHOT_MESSAGE = "WebCompat:SendScreenshot";
     const FRAMESCRIPT = "chrome://webcompat-reporter/content/wc-frame.js";
     let win = Services.wm.getMostRecentWindow("navigator:browser");
     const WEBCOMPAT_ORIGIN = new win.URL(WebCompatReporter.endpoint).origin;
-    let styloEnabled = Services.prefs.getBoolPref(PREF_STYLO_ENABLED, false);
 
     let params = new URLSearchParams();
     params.append("url", `${tabData.url}`);
     params.append("src", "desktop-reporter");
-    if (styloEnabled) {
-        params.append("details", "layout.css.servo.enabled: true");
-        params.append("label", "type-stylo");
+    params.append("details", JSON.stringify(prefs));
+
+    if (prefs["layout.css.servo.enabled"]) {
+      params.append("label", "type-stylo");
     }
 
     let tab = gBrowser.loadOneTab(
       `${WebCompatReporter.endpoint}?${params}`,
       {inBackground: false, triggeringPrincipal: Services.scriptSecurityManager.getSystemPrincipal()});
 
     // If we successfully got a screenshot blob, add a listener to know when
     // the new tab is loaded before sending it over.