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"];