Bug 789263 - Update Thunderbird's copy of about:support. r=bwinton
authorSiddharth Agarwal <sid.bugzilla@gmail.com>
Mon, 17 Sep 2012 17:31:04 +0530
changeset 13658 db2aeb46ad61b2726d236967023c58f2e162038e
parent 13657 db9cb608c3fafcfb1ad31cf9d506ec8f126634d5
child 13659 4d4a3558f2935c0d54e90fbd3224fb1f084ec585
push id762
push userbugzilla@standard8.plus.com
push dateMon, 19 Nov 2012 21:16:42 +0000
treeherdercomm-beta@4a2f61509b17 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbwinton
bugs789263, 294260, 641025, 673381, 728981, 752268, 759158, 769304, 707223
Bug 789263 - Update Thunderbird's copy of about:support. r=bwinton Bugs ported: Bug 294260 Bug 641025 Bug 673381 Bug 728981 Bug 752268 Bug 759158 Bug 769304 Bug 707223
mail/components/about-support/content/a11y.js
mail/components/about-support/content/aboutSupport.xhtml
mail/components/about-support/content/gfx.js
mail/components/about-support/content/init.js
mail/components/about-support/content/js.js
mail/components/about-support/content/libversions.js
mail/components/about-support/content/prefs.js
mail/components/about-support/jar.mn
mail/test/mozmill/content-tabs/test-about-support.js
new file mode 100644
--- /dev/null
+++ b/mail/components/about-support/content/a11y.js
@@ -0,0 +1,24 @@
+/* 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/. */
+
+function populateAccessibilitySection() {
+  var active;
+  try {
+    active = Components.manager.QueryInterface(Ci.nsIServiceManager)
+      .isServiceInstantiatedByContractID(
+        "@mozilla.org/accessibilityService;1",
+        Ci.nsISupports);
+  } catch (ex) {
+    active = false;
+  }
+
+  document.getElementById("a11y-activated").textContent = active ? "1" : "0";
+
+  var forceDisabled = 0;
+  forceDisabled = Application.prefs.get("accessibility.force_disabled").value;
+
+  document.getElementById("a11y-force-disabled").textContent
+    = (forceDisabled == -1) ? "never" :
+  ((forceDisabled == 1) ? "1" : "0");
+}
--- a/mail/components/about-support/content/aboutSupport.xhtml
+++ b/mail/components/about-support/content/aboutSupport.xhtml
@@ -31,16 +31,22 @@
             src="chrome://messenger/content/about-support/accounts.js"/>
     <script type="application/javascript;version=1.7"
             src="chrome://messenger/content/about-support/extensions.js"/>
     <script type="application/javascript;version=1.7"
             src="chrome://messenger/content/about-support/prefs.js"/>
     <script type="application/javascript;version=1.7"
             src="chrome://messenger/content/about-support/gfx.js"/>
     <script type="application/javascript;version=1.7"
+            src="chrome://messenger/content/about-support/js.js"/>
+    <script type="application/javascript;version=1.7"
+            src="chrome://messenger/content/about-support/a11y.js"/>
+    <script type="application/javascript;version=1.7"
+            src="chrome://messenger/content/about-support/libversions.js"/>
+    <script type="application/javascript;version=1.7"
             src="chrome://messenger/content/about-support/export.js"/>
   </head>
 
   <body dir="&locale.dir;">
 
     <h1>
       &aboutSupport.pageTitle;
     </h1>
@@ -290,28 +296,82 @@
           </tr>
         </thead>
 
         <tbody id="prefs-tbody">
         </tbody>
       </table>
 
       <!-- - - - - - - - - - - - - - - - - - - - - -->
-
       <h2 class="major-section">
         &aboutSupport.graphicsTitle;
       </h2>
 
       <table>
         <tbody id="graphics-tbody">
         </tbody>
+
+        <tbody id="graphics-info-properties">
+        </tbody>
+
+        <tbody id="graphics-failures-tbody">
+        </tbody>
+      </table>
+
+      <!-- - - - - - - - - - - - - - - - - - - - - -->
+      <h2 class="major-section">
+        &aboutSupport.jsTitle;
+      </h2>
+
+      <table>
+        <tbody>
+          <tr>
+            <th class="column">
+              &aboutSupport.jsIncrementalGC;
+            </th>
+
+            <td id="javascript-incremental-gc">
+            </td>
+          </tr>
+        </tbody>
       </table>
 
+      <!-- - - - - - - - - - - - - - - - - - - - - -->
+      <h2 class="major-section">
+        &aboutSupport.a11yTitle;
+      </h2>
+
       <table>
-        <tbody id="graphics-failures-tbody">
+        <tbody>
+          <tr>
+            <th class="column">
+              &aboutSupport.a11yActivated;
+            </th>
+
+            <td id="a11y-activated">
+            </td>
+          </tr>
+          <tr>
+            <th class="column">
+              &aboutSupport.a11yForceDisabled;
+            </th>
+
+            <td id="a11y-force-disabled">
+            </td>
+          </tr>
+        </tbody>
+      </table>
+
+      <!-- - - - - - - - - - - - - - - - - - - - - -->
+      <h2 class="major-section">
+        &aboutSupport.libraryVersionsTitle;
+      </h2>
+
+      <table>
+        <tbody id="libversions-tbody">
         </tbody>
       </table>
 
     </div>
 
   </body>
 
 </html>
--- a/mail/components/about-support/content/gfx.js
+++ b/mail/components/about-support/content/gfx.js
@@ -14,16 +14,24 @@ function populateGraphicsSection() {
   {
     if(value) {
       table.push(createParentElement("tr", [
         createHeader(bundle.GetStringFromName(name)),
         createElement("td", value),
       ]));
     }
   }
+  
+  function pushLiteralInfoRow(table, name, value)
+  {
+    table.push(createParentElement("tr", [
+      createHeader(name),
+      createElement("td", value),
+    ]));
+  }
 
   function errorMessageForFeature(feature) {
     var errorMessage;
     var status;
     try {
       status = gfxInfo.getFeatureStatus(feature);
     } catch(e) {}
     switch (status) {
@@ -75,27 +83,27 @@ function populateGraphicsSection() {
   try {
     // nsIGfxInfo is currently only implemented on Windows
     gfxInfo = Cc["@mozilla.org/gfx/info;1"].getService(Ci.nsIGfxInfo);
   } catch(e) {}
 
   if (gfxInfo) {
     let trGraphics = [];
     pushInfoRow(trGraphics, "adapterDescription", gfxInfo.adapterDescription);
-    pushInfoRow(trGraphics, "adapterVendorID", hexValueToString(gfxInfo.adapterVendorID));
-    pushInfoRow(trGraphics, "adapterDeviceID", hexValueToString(gfxInfo.adapterDeviceID));
+    pushInfoRow(trGraphics, "adapterVendorID", gfxInfo.adapterVendorID);
+    pushInfoRow(trGraphics, "adapterDeviceID", gfxInfo.adapterDeviceID);
     pushInfoRow(trGraphics, "adapterRAM", gfxInfo.adapterRAM);
     pushInfoRow(trGraphics, "adapterDrivers", gfxInfo.adapterDriver);
     pushInfoRow(trGraphics, "driverVersion", gfxInfo.adapterDriverVersion);
     pushInfoRow(trGraphics, "driverDate", gfxInfo.adapterDriverDate);
 
 #ifdef XP_WIN
     pushInfoRow(trGraphics, "adapterDescription2", gfxInfo.adapterDescription2);
-    pushInfoRow(trGraphics, "adapterVendorID2", hexValueToString(gfxInfo.adapterVendorID2));
-    pushInfoRow(trGraphics, "adapterDeviceID2", hexValueToString(gfxInfo.adapterDeviceID2));
+    pushInfoRow(trGraphics, "adapterVendorID2", gfxInfo.adapterVendorID2);
+    pushInfoRow(trGraphics, "adapterDeviceID2", gfxInfo.adapterDeviceID2);
     pushInfoRow(trGraphics, "adapterRAM2", gfxInfo.adapterRAM2);
     pushInfoRow(trGraphics, "adapterDrivers2", gfxInfo.adapterDriver2);
     pushInfoRow(trGraphics, "driverVersion2", gfxInfo.adapterDriverVersion2);
     pushInfoRow(trGraphics, "driverDate2", gfxInfo.adapterDriverDate2);
     pushInfoRow(trGraphics, "isGPU2Active", gfxInfo.isGPU2Active);
 
     var version = Cc["@mozilla.org/system-info;1"]
                   .getService(Ci.nsIPropertyBag2)
@@ -142,26 +150,37 @@ function populateGraphicsSection() {
         gfxInfo.getFeatureStatus(gfxInfo.FEATURE_WEBGL_OPENGL) == gfxInfo.FEATURE_NO_INFO)
       webglfeature = gfxInfo.FEATURE_WEBGL_OPENGL;
 #else
     var webglfeature = gfxInfo.FEATURE_WEBGL_OPENGL;
 #endif
     pushFeatureInfoRow(trGraphics, "webglRenderer", webglfeature, webglenabled, webglrenderer);
 
     appendChildren(graphics_tbody, trGraphics);
+    
+    // display registered graphics properties
+    let graphics_info_properties = document.getElementById("graphics-info-properties");
+    var info = gfxInfo.getInfo();
+    let trGraphicsProperties = [];
+    for (var property in info) {
+      pushLiteralInfoRow(trGraphicsProperties, property, info[property]);
+    }
+    appendChildren(graphics_info_properties, trGraphicsProperties);
    
     // display any failures that have occurred
     let graphics_failures_tbody = document.getElementById("graphics-failures-tbody");
     let trGraphicsFailures = gfxInfo.getFailures().map(function (value)
         createParentElement("tr", [
             createElement("td", value)
         ])
     );
     appendChildren(graphics_failures_tbody, trGraphicsFailures);
 
+
+
   } // end if (gfxInfo)
 
   let windows = Services.ww.getWindowEnumerator();
   let acceleratedWindows = 0;
   let totalWindows = 0;
   let mgrType;
   while (windows.hasMoreElements()) {
     totalWindows++;
@@ -169,19 +188,19 @@ function populateGraphicsSection() {
     let awindow = windows.getNext().QueryInterface(Ci.nsIInterfaceRequestor);
     let windowutils = awindow.getInterface(Ci.nsIDOMWindowUtils);
     if (windowutils.layerManagerType != "Basic") {
       acceleratedWindows++;
       mgrType = windowutils.layerManagerType;
     }
   }
 
-  let msg = acceleratedWindows + "/" + totalWindows;
+  let msg = acceleratedWindows;
   if (acceleratedWindows) {
-    msg += " " + mgrType;
+    msg += "/" + totalWindows + " " + mgrType;
   } else {
 #ifdef XP_WIN
     var feature = gfxInfo.FEATURE_DIRECT3D_9_LAYERS;
 #else
     var feature = gfxInfo.FEATURE_OPENGL_LAYERS;
 #endif
     var errMsg = errorMessageForFeature(feature);
     if (errMsg)
--- a/mail/components/about-support/content/init.js
+++ b/mail/components/about-support/content/init.js
@@ -60,16 +60,19 @@ window.onload = function () {
 
   document.getElementById("buildid-box").textContent = Services.appinfo.appBuildID;
 
   // Update the other sections.
   populateAccountsSection();
   populatePreferencesSection();
   populateExtensionsSection();
   populateGraphicsSection();
+  populateJavaScriptSection();
+  populateAccessibilitySection();
+  populateLibVersionsSection();  
 }
 
 function userDataHandler(aOp, aKey, aData, aSrc, aDest) {
   if (aOp == UserDataHandler.NODE_CLONED || aOp == UserDataHandler.NODE_IMPORTED)
     aDest.setUserData(aKey, aData, userDataHandler);
 }
 
 function onShowPrivateDataChange(aCheckbox) {
new file mode 100644
--- /dev/null
+++ b/mail/components/about-support/content/js.js
@@ -0,0 +1,10 @@
+/* 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/. */
+
+ function populateJavaScriptSection() {
+  let enabled = window.QueryInterface(Ci.nsIInterfaceRequestor)
+        .getInterface(Ci.nsIDOMWindowUtils)
+        .isIncrementalGCEnabled();
+  document.getElementById("javascript-incremental-gc").textContent = enabled ? "1" : "0";
+}
new file mode 100644
--- /dev/null
+++ b/mail/components/about-support/content/libversions.js
@@ -0,0 +1,38 @@
+/* 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/. */
+
+function populateLibVersionsSection() {
+  function pushInfoRow(table, name, value, value2)
+  {
+    table.push(createParentElement("tr", [
+      createElement("td", name),
+      createElement("td", value),
+      createElement("td", value2),
+    ]));
+  }
+    
+  var v = null;
+  try { // just to be safe
+    v = Cc["@mozilla.org/security/nssversion;1"].getService(Ci.nsINSSVersion);
+  } catch(e) {}
+  if (!v)
+    return;
+    
+  let bundle = Services.strings.createBundle("chrome://global/locale/aboutSupport.properties");
+  let libversions_tbody = document.getElementById("libversions-tbody");
+
+  let trLibs = [];
+  trLibs.push(createParentElement("tr", [
+    createElement("th", ""),
+    createElement("th", bundle.GetStringFromName("minLibVersions")),
+    createElement("th", bundle.GetStringFromName("loadedLibVersions")),
+  ]));
+  pushInfoRow(trLibs, "NSPR", v.NSPR_MinVersion, v.NSPR_Version);
+  pushInfoRow(trLibs, "NSS", v.NSS_MinVersion, v.NSS_Version);
+  pushInfoRow(trLibs, "NSS Util", v.NSSUTIL_MinVersion, v.NSSUTIL_Version);
+  pushInfoRow(trLibs, "NSS SSL", v.NSSSSL_MinVersion, v.NSSSSL_Version);
+  pushInfoRow(trLibs, "NSS S/MIME", v.NSSSMIME_MinVersion, v.NSSSMIME_Version);
+
+  appendChildren(libversions_tbody, trLibs);
+}
--- a/mail/components/about-support/content/prefs.js
+++ b/mail/components/about-support/content/prefs.js
@@ -15,16 +15,26 @@ const PREFS_WHITELIST = [
   "accessibility.",
   "browser.cache.",
   "browser.display.",
   "browser.fixup.",
   "browser.history_expire_",
   "browser.link.open_newwindow",
   "browser.mousewheel.",
   "browser.places.",
+  "browser.privatebrowsing.",
+  "browser.search.context.loadInBackground",
+  "browser.search.log",
+  "browser.search.openintab",
+  "browser.search.param",
+  "browser.search.searchEnginesURL",
+  "browser.search.suggest.enabled",
+  "browser.search.update",
+  "browser.search.useDBForOrder",
+  "browser.sessionstore.",
   "browser.startup.homepage",
   "browser.tabs.",
   "browser.zoom.",
   "dom.",
   "extensions.checkCompatibility",
   "extensions.lastAppVersion",
   "font.",
   "general.autoScroll",
@@ -42,16 +52,17 @@ const PREFS_WHITELIST = [
   "permissions.default.image",
   "places.",
   "plugin.",
   "plugins.",
   "print.",
   "privacy.",
   "security.",
   "svg.",
+  "toolkit.startup.recent_crashes",
   "webgl.",
   // mail-specific prefs
   "mail.openMessageBehavior.",
   "mail.spotlight.",
   "mail.winsearch.",
   "mailnews.database.",
 ];
 
--- a/mail/components/about-support/jar.mn
+++ b/mail/components/about-support/jar.mn
@@ -6,12 +6,15 @@ messenger.jar:
 %   overlay chrome://messenger/content/messenger.xul           chrome://messenger/content/about-support/overlay.xul
     content/messenger/about-support/hide-private.css           (content/hide-private.css)
     content/messenger/about-support/show-private.css           (content/show-private.css)
     content/messenger/about-support/init.js                    (content/init.js)
     content/messenger/about-support/accounts.js                (content/accounts.js)
     content/messenger/about-support/extensions.js              (content/extensions.js)
     content/messenger/about-support/prefs.js                   (content/prefs.js)
 *   content/messenger/about-support/gfx.js                     (content/gfx.js)
+    content/messenger/about-support/js.js                      (content/js.js)
+    content/messenger/about-support/a11y.js                    (content/a11y.js)
+    content/messenger/about-support/libversions.js             (content/libversions.js)
     content/messenger/about-support/export.js                  (content/export.js)
 *   content/messenger/about-support/aboutSupport.xhtml         (content/aboutSupport.xhtml)
     content/messenger/about-support/overlay.js                 (content/overlay.js)
     content/messenger/about-support/overlay.xul                (content/overlay.xul)
--- a/mail/test/mozmill/content-tabs/test-about-support.js
+++ b/mail/test/mozmill/content-tabs/test-about-support.js
@@ -27,17 +27,18 @@ function teardownTest(module) {
   mc.tabmail.closeOtherTabs(mc.tabmail.tabInfo[0]);
 }
 
 /**
  * Strings found in the about:support HTML or text that should clearly mark the
  * data as being from about:support.
  */
 const ABOUT_SUPPORT_STRINGS = ["Application Basics", "Mail and News Accounts",
-                               "Extensions", "Modified Preferences", "Graphics"];
+                               "Extensions", "Modified Preferences", "Graphics",
+                               "JavaScript", "Accessibility", "Library Versions"];
 
 /**
  * Strings that if found in the about:support text or HTML usually indicate an
  * error.
  */
 const ABOUT_SUPPORT_ERROR_STRINGS = ["undefined", "null"];